:root{--bg-dark: #161512;--card-bg: #262421;--accent: #3692e7;--text-main: #bababa;--text-bright: #ffffff;--danger: #ef5350;--success: #66bb6a}body{background-color:var(--bg-dark);color:var(--text-main);font-family:system-ui,-apple-system,sans-serif;margin:0;padding:20px}.container{max-width:1100px;margin:0 auto}.dashboard-header{margin-bottom:30px}.header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:15px}.header-top h1{margin:0;font-size:1.8rem;color:var(--text-bright)}.github-link{display:flex;align-items:center;gap:8px;color:var(--text-main);text-decoration:none;padding:8px 16px;border-radius:4px;border:1px solid #403d39;background:var(--card-bg);transition:all .2s;font-size:.9rem}.github-link:hover{color:var(--text-bright);border-color:var(--accent);background:#2e2b27}.search-area{margin-bottom:20px}.stats-grid{display:flex;gap:15px}.stat-card{background:var(--card-bg);padding:15px 20px;border-radius:8px;border-bottom:3px solid var(--accent);min-width:110px;text-align:center}.stat-card .value{display:block;font-size:1.4rem;font-weight:700;color:var(--text-bright)}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.heatmap-section{grid-column:span 2}.heatmap-section .placeholder{text-align:center;color:var(--text-main);padding:40px;font-style:italic}.card{background:var(--card-bg);padding:20px;border-radius:8px}.heatmap-container{margin:20px 0;position:relative}.calendar-scroll-wrapper{max-height:500px;overflow-y:auto;overflow-x:hidden;border:1px solid #403d39;border-radius:4px;padding:10px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;width:100%}.calendar-header-row{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:10px;padding:0 10px;border-bottom:2px solid #403d39}.day-header{text-align:center;font-size:.75rem;font-weight:600;color:var(--text-bright);padding:8px 0;text-transform:uppercase}.month-label{grid-column:1 / 8;font-size:.9rem;font-weight:700;color:var(--text-bright);padding:15px 0 10px;margin-top:10px;border-top:1px solid #403d39}.month-label:first-of-type{margin-top:0;border-top:none;padding-top:5px}.day-cell{background:#2e2b27;border-radius:4px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 2px;min-height:40px;cursor:pointer;transition:transform .2s,box-shadow .2s}.day-cell:hover{transform:scale(1.05);box-shadow:0 2px 8px #0000004d;z-index:1}.date-number{font-size:.9rem;font-weight:600;color:var(--text-main);line-height:1.2}.stats-value{font-size:.75rem;color:var(--text-main);opacity:.8;line-height:1.2}.level-1{background:#1e3a5f}.level-2{background:#2b5a91}.level-3{background:#3692e7}.level-4{background:#92cbff}.level-1 .date-number,.level-2 .date-number,.level-3 .date-number,.level-4 .date-number,.level-1 .stats-value,.level-2 .stats-value,.level-3 .stats-value,.level-4 .stats-value{color:var(--text-bright)}.goal-achieved{background:var(--success)!important;border:2px solid #4caf50}.goal-achieved .date-number,.goal-achieved .stats-value{color:var(--text-bright);font-weight:700}.out-of-range{opacity:.3}.heatmap-legend{display:flex;align-items:center;gap:20px;justify-content:flex-end;font-size:12px;margin-top:15px}.heatmap-legend .day-cell{width:20px;height:20px;min-height:20px;aspect-ratio:1/1}.heatmap-legend .day-cell.goal-achieved{border-width:1px}.legend-group{display:flex;align-items:center;gap:8px}.legend-separator{width:1px;height:20px;background:#403d39}.calendar-scroll-wrapper::-webkit-scrollbar{width:8px}.calendar-scroll-wrapper::-webkit-scrollbar-track{background:#1a1917;border-radius:4px}.calendar-scroll-wrapper::-webkit-scrollbar-thumb{background:#403d39;border-radius:4px}.calendar-scroll-wrapper::-webkit-scrollbar-thumb:hover{background:#555}.search-area{display:flex;gap:10px;align-items:center}.search-area input{background:#1a1917;border:1px solid #403d39;color:#fff;padding:10px;border-radius:4px}.search-area input[type=text]{flex:1;min-width:150px}.search-area input[type=number]{width:120px;-moz-appearance:textfield}.search-area input[type=number]::-webkit-outer-spin-button,.search-area input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.search-area button{background:var(--accent);color:#fff;border:none;padding:10px 20px;border-radius:4px;cursor:pointer}.search-area button.secondary-btn{background:#2e2b27;border:1px solid #403d39;padding:9px 16px}.search-area button.secondary-btn:hover{background:#3a3733;border-color:#4a4743}.search-area button:disabled{cursor:not-allowed;opacity:.5}.insight-item{padding:12px 0;border-bottom:1px solid #403d39;font-size:.95rem}.heatmap-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex-wrap:wrap;gap:15px}.heatmap-controls{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.goal-setting{display:flex;align-items:center;gap:8px;font-size:.9rem}.goal-setting label{color:var(--text-main);font-weight:500}.goal-setting input[type=number]{background:#1a1917;border:1px solid #403d39;color:#fff;padding:6px 10px;border-radius:4px;width:70px;-moz-appearance:textfield}.goal-setting input[type=number]::-webkit-outer-spin-button,.goal-setting input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.goal-setting .goal-label{color:var(--text-main);font-size:.85rem}.goal-setting select{background:#1a1917;border:1px solid #403d39;color:#fff;padding:6px 10px;border-radius:4px;cursor:pointer;font-size:.85rem}.goal-setting select:hover{border-color:#555}.filter-group{display:flex;align-items:center;gap:12px;font-size:.85rem}.filter-label{color:var(--text-main);font-weight:500;margin-right:-4px}.filter-checkbox{display:flex;align-items:center;gap:4px;color:var(--text-main);cursor:pointer;-webkit-user-select:none;user-select:none}.filter-checkbox input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--accent)}.filter-checkbox:hover{color:var(--text-bright)}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:var(--card-bg);width:90%;max-width:600px;max-height:80vh;border-radius:8px;padding:24px;display:flex;flex-direction:column;box-shadow:0 10px 30px #00000080;border:1px solid #403d39}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid #403d39}.modal-header h2{margin:0;font-size:1.4rem;color:var(--text-bright)}.close-btn{background:transparent;border:none;color:var(--text-main);font-size:24px;cursor:pointer;line-height:1}.close-btn:hover{color:var(--text-bright)}.games-list{overflow-y:auto;flex-grow:1;display:flex;flex-direction:column;gap:12px;padding-right:8px}.game-item{background:#1a1917;border:1px solid #403d39;padding:10px 14px;border-radius:6px;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:4px;transition:all .2s}.game-item:hover{border-color:var(--accent);background:#2e2b27}.game-time{font-size:.75rem;color:var(--text-main);margin-bottom:2px}.game-info-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:2px 20px;align-items:center}.player-name{font-weight:600;font-size:.9rem;color:var(--text-bright);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-rating{font-size:.75rem;color:var(--text-main)}.game-result{font-size:.95rem;font-weight:700;text-align:right;min-width:60px}.game-time-control{font-size:.75rem;color:var(--text-main);font-weight:500;text-align:right}.winner-win{color:var(--success)}.winner-loss{color:var(--danger)}.winner-draw{color:var(--text-main)}
