:root{--bg-color:#0f172a;--bg-color-alt:#1e293b;--text-primary:#f8fafc;--text-secondary:#94a3b8;--accent-color:#3b82f6;--accent-hover:#60a5fa;--fretboard-bg:#451a03;--fretboard-border:#78350f;--fret-color:#cbd5e1;--string-color:#94a3b8;--string-hover:#e2e8f0;--marker-color:#fbbf24;--inlay-color:#fff6;--success-color:#22c55e;--error-color:#ef4444;--app-max-width:1200px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-primary);flex-direction:column;min-height:100vh;font-family:Inter,sans-serif;line-height:1.6;display:flex}.app-container{max-width:var(--app-max-width);flex-direction:column;flex:1;width:100%;margin:0 auto;padding:1rem;display:flex}.header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0 2rem;display:flex}.header h1{background:linear-gradient(to right, var(--accent-hover), var(--accent-color));-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin:0;font-size:1.5rem;font-weight:800}.stats{color:var(--text-secondary);font-size:1.1rem;font-weight:600}.main-content{flex-direction:column;flex:1;justify-content:center;gap:3rem;display:flex}.fretboard-wrapper{-webkit-overflow-scrolling:touch;width:100%;padding:2.5rem 0 1rem;overflow-x:auto}.fretboard{background-color:var(--fretboard-bg);border:4px solid var(--fretboard-border);border-radius:4px;grid-template-rows:repeat(6,40px);grid-template-columns:40px repeat(12,minmax(60px,1fr));min-width:800px;display:grid;position:relative;box-shadow:0 10px 25px #00000080}.string-line{background-color:var(--string-color);pointer-events:none;z-index:10;position:absolute;left:0;right:0;transform:translateY(-50%);box-shadow:0 1px 2px #00000080}.string-line-1{height:2px;top:8.33333%}.string-line-2{height:3px;top:25%}.string-line-3{height:4px;top:41.6667%}.string-line-4{height:5px;top:58.3333%}.string-line-5{height:6px;top:75%}.string-line-6{height:7px;top:91.6667%}.inlay{background-color:var(--inlay-color);pointer-events:none;z-index:5;border-radius:50%;width:16px;height:16px;position:absolute}.inlay.single-inlay{top:100%;transform:translateY(-50%)}.nut{z-index:15;background-color:#f1f5f9;width:6px;position:absolute;top:0;bottom:0;left:37px}.fret-cell{border-right:3px solid #94a3b8;justify-content:center;align-items:center;display:flex;position:relative}.fret-cell:not(.fret-0){border-right-color:#94a3b8;box-shadow:inset -1px 0 2px #0000004d}.fret-cell.fret-0{background-color:var(--bg-color-alt);border-right:none}.fret-cell.fret-12{border-right:none}.target-marker{background-color:var(--marker-color);width:22px;height:22px;box-shadow:0 0 10px var(--marker-color), inset 0 0 5px #00000080;z-index:20;border:2px solid #fff;border-radius:50%;animation:1.5s infinite pulse}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #fbbf24b3}70%{transform:scale(1.05);box-shadow:0 0 0 10px #fbbf2400}to{transform:scale(.95);box-shadow:0 0 #fbbf2400}}.controls-wrapper{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.status-message{height:2rem;font-size:1.25rem;font-weight:600;transition:color .3s}.status-message.success{color:var(--success-color)}.status-message.error{color:var(--error-color);animation:.5s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(5px)}75%{transform:translate(-5px)}}.note-buttons{grid-template-columns:repeat(7,1fr);gap:10px;width:100%;max-width:800px;display:grid}.note-button{background-color:var(--bg-color-alt);color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;border:2px solid #0000;border-radius:8px;padding:1rem .25rem;font-size:1.1rem;font-weight:600;transition:all .2s}@media (hover:hover) and (pointer:fine){.note-button:hover:not(.empty){color:#0f172a;background-color:#2dd4bf;transform:translateY(-2px);box-shadow:0 4px 12px #2dd4bf4d}}.note-button:active:not(.empty){transform:translateY(0)}.note-button.correct{background-color:var(--success-color)!important;color:#fff!important;border-color:var(--success-color)!important}.note-button.incorrect{background-color:var(--error-color)!important;color:#fff!important;border-color:var(--error-color)!important}.note-button.empty{cursor:default;pointer-events:none;box-shadow:none;background-color:#0000;border:none}.fretboard-controls{justify-content:flex-end;width:100%;max-width:800px;margin-bottom:.5rem;margin-left:auto;margin-right:auto;display:flex}.heatmap-toggle{cursor:pointer;color:var(--text-secondary);align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;transition:color .2s;display:flex}.heatmap-toggle:hover{color:var(--text-primary)}.heatmap-toggle input{display:none}.heatmap-toggle-slider{background-color:var(--bg-color-alt);border:1px solid #ffffff1a;border-radius:10px;width:40px;height:20px;transition:background-color .3s;position:relative}.heatmap-toggle-slider:after{content:"";background-color:var(--text-secondary);border-radius:50%;width:16px;height:16px;transition:transform .3s,background-color .3s;position:absolute;top:1px;left:2px}.heatmap-toggle input:checked+.heatmap-toggle-slider{background-color:var(--error-color)}.heatmap-toggle input:checked+.heatmap-toggle-slider:after{background-color:#fff;transform:translate(20px)}.heatmap-overlay{z-index:1;pointer-events:none;transition:background-color .5s;position:absolute;inset:0}.heatmap-overlay.red{background-color:rgba(239, 68, 68, var(--heat-opacity,0))}.heatmap-overlay.green{background-color:rgba(34, 197, 94, var(--heat-opacity,0))}.fret-tooltip{color:#f8fafc;white-space:nowrap;opacity:0;visibility:hidden;z-index:30;pointer-events:none;background-color:#1e293b;border:1px solid #ffffff1a;border-radius:4px;padding:.25rem .5rem;font-size:.8rem;font-weight:700;transition:opacity .2s,transform .2s,visibility .2s;position:absolute;bottom:110%;left:50%;transform:translate(-50%)translateY(10px);box-shadow:0 4px 6px #0000004d}.fret-tooltip:after{content:"";border:4px solid #0000;border-top-color:#1e293b;position:absolute;top:100%;left:50%;transform:translate(-50%)}.fret-cell.show-tooltip:hover .fret-tooltip{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.hidden{display:none!important}.mode-selector{background-color:var(--bg-color-alt);border-radius:12px;justify-content:center;gap:1rem;width:fit-content;padding:.5rem;display:flex;box-shadow:0 4px 6px #0000004d}.mode-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .3s}.mode-btn:hover{color:var(--text-primary);background-color:#ffffff0d}.mode-btn.active{background-color:var(--accent-color);color:#fff;box-shadow:0 2px 10px #3b82f666}.timeattack-dashboard{background:linear-gradient(145deg, var(--bg-color-alt), #162032);border:1px solid #ffffff0d;border-radius:12px;flex-direction:row;justify-content:space-around;align-items:center;gap:2rem;margin-bottom:1rem;padding:1.25rem 2rem;animation:.4s ease-out forwards slideDown;display:flex;box-shadow:0 4px 15px #0000004d}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ta-stats{gap:2.5rem;display:flex}.ta-stat{flex-direction:column;align-items:center;display:flex}.ta-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;margin-bottom:.15rem;font-size:.75rem}.ta-value{color:#f8fafc;font-variant-numeric:tabular-nums;text-shadow:0 0 10px #ffffff1a;white-space:nowrap;font-size:1.75rem;font-weight:700}.start-btn{color:#fff;cursor:pointer;text-transform:uppercase;letter-spacing:1px;white-space:nowrap;background:linear-gradient(90deg,#ec4899,#f43f5e);border:none;border-radius:50px;padding:.75rem 2rem;font-size:1rem;font-weight:700;transition:all .3s;box-shadow:0 4px 10px #ec48994d}.start-btn:hover{transform:translateY(-2px)scale(1.02);box-shadow:0 6px 15px #ec489980}.start-btn:active{transform:translateY(1px)}.start-btn:disabled{background:var(--bg-color-alt);color:var(--text-secondary);box-shadow:none;cursor:not-allowed;transform:none}.leaderboard-section{background-color:var(--bg-color-alt);border:1px solid #ffffff0d;border-radius:16px;margin-top:2rem;padding:2rem;animation:.5s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.leaderboard-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.leaderboard-section h2{color:#38bdf8;margin:0;font-size:1.5rem}.action-btn{color:#38bdf8;cursor:pointer;background:0 0;border:1px solid #38bdf8;border-radius:6px;padding:.5rem 1rem;font-weight:600;transition:all .2s}.action-btn:hover{background-color:#38bdf81a}.toggle-btn{color:#38bdf8;cursor:pointer;background:0 0;border:1px solid #38bdf8;border-radius:6px;padding:.5rem 1rem;font-size:.9rem;transition:all .3s}.toggle-btn:hover{background:#38bdf81a}.leaderboard-container{overflow-x:auto}.leaderboard-table{border-collapse:collapse;text-align:left;width:100%}.leaderboard-table th,.leaderboard-table td{border-bottom:1px solid #ffffff0d;padding:1rem}.leaderboard-table th{color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;font-size:.85rem;font-weight:600}.leaderboard-table tr{transition:background-color .2s}.leaderboard-table tbody tr:hover{background-color:#ffffff08}.leaderboard-table td{font-weight:500}.rank-1{color:#fbbf24;font-size:1.1rem;font-weight:800}.rank-2{color:#94a3b8;font-weight:700}.rank-3{color:#b45309;font-weight:700}.score-highlight{color:#34d399;font-weight:700}@media (width<=768px){.note-buttons{gap:6px}.note-button{padding:.75rem .1rem;font-size:.9rem}.fretboard{grid-template-rows:repeat(6,30px);grid-template-columns:30px repeat(12,minmax(40px,1fr));min-width:600px}.nut{left:27px}}@media (width<=480px){.note-buttons{gap:4px}.note-button{border-radius:6px;padding:.5rem .1rem;font-size:.8rem}.fretboard{min-width:unset;grid-template-rows:repeat(6,24px);grid-template-columns:20px repeat(12,minmax(22px,1fr))}.nut{left:17px}.inlay{width:10px;height:10px}.target-marker{width:14px;height:14px}.mode-selector{gap:.5rem;width:100%}.mode-btn{flex:1;padding:.6rem .2rem;font-size:.85rem}.timeattack-dashboard{flex-direction:column;gap:1rem;padding:1rem}.ta-stats{justify-content:space-evenly;gap:1.5rem;width:100%}.ta-value{font-size:1.5rem}.start-btn{width:100%;padding:.75rem 2rem;font-size:1rem}.header{flex-direction:column}.header h1{font-size:1.25rem}.app-container{padding:.5rem}.string-line-1{height:1px}.string-line-2{height:1.25px}.string-line-3{height:1.5px}.string-line-4{height:2px}.string-line-5{height:2.5px}.string-line-6{height:3px}.leaderboard-section{padding:1rem}.leaderboard-header{flex-direction:column;gap:1rem}.leaderboard-section h2{text-align:center;font-size:1.25rem}.leaderboard-table th,.leaderboard-table td{padding:.75rem .25rem;font-size:.8rem}.leaderboard-table th{letter-spacing:0;font-size:.7rem}.rank-1{font-size:.9rem}}.icon-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;margin-left:.5rem;padding:.25rem;font-size:1.25rem;transition:transform .2s,background-color .2s;display:inline-flex}.icon-btn:hover{background-color:#ffffff1a;transform:rotate(30deg)}.modal{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#000000b3;justify-content:center;align-items:center;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal.hidden{display:none!important}.modal-content{background-color:var(--bg-color-alt);border:1px solid #ffffff1a;border-radius:12px;flex-direction:column;width:90%;max-width:500px;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d}.modal-header{background-color:#0003;border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-header h2{margin:0;font-size:1.25rem}.close-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:1.5rem;line-height:1;transition:color .2s}.close-btn:hover{color:var(--text-primary)}.modal-body{flex-direction:column;gap:1.5rem;padding:1.5rem;display:flex;overflow-y:auto}.option-item{background-color:#0003;border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;display:flex}.option-info h3{color:var(--text-primary);margin:0 0 .25rem;font-size:1rem}.option-info p{color:var(--text-secondary);margin:0;font-size:.85rem}.danger-btn{color:#ef4444;cursor:pointer;white-space:nowrap;background-color:#ef44441a;border:1px solid #ef44444d;border-radius:6px;padding:.5rem 1rem;font-weight:600;transition:all .2s}.danger-btn:hover{color:#fff;background-color:#ef4444}@media (width<=480px){.option-item{flex-direction:column;align-items:flex-start}.danger-btn,.action-btn{width:100%;margin-top:.5rem}}.about-body{gap:1rem}.about-body p{color:var(--text-primary);line-height:1.5}.about-section h3{color:var(--accent-hover);margin-bottom:.5rem;font-size:1.1rem}.about-section ul{flex-direction:column;gap:.75rem;padding-left:0;list-style:none;display:flex}.about-section li{color:var(--text-secondary);padding-left:1.5rem;font-size:.95rem;line-height:1.4;position:relative}.about-section li strong{color:var(--text-primary)}.about-section li:before{content:"▹";color:var(--accent-color);font-weight:700;position:absolute;left:0}
