:root{--bg:#f4ba34;--bg-deep:#cfa23c;--panel:#f6c447;--panel-deep:#efad2f;--ink:#3a3a3a;--ink-muted:#5a5a5a;--stroke:#3c3c3c33;--shadow-hi:#ffffff73;--shadow-lo:#7b3c0059;--focus:#1a1200}.skip-link{z-index:9999;background:var(--ink);color:var(--bg);border-radius:0;padding:8px 16px;font-size:.875rem;font-weight:600;text-decoration:none;transition:top .2s;position:absolute;top:-100%;left:16px}html,body{max-width:100vw;overflow-x:hidden}h1,h2,h3,h4,p{text-wrap:balance}body{color:var(--ink);background:var(--bg);font-family:var(--font-space-grotesk),"Trebuchet MS",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative}body:before{content:"";opacity:0;pointer-events:none;mix-blend-mode:multiply;background-image:radial-gradient(#00000014 1px,#0000 1px);background-size:6px 6px;position:fixed;inset:0}*{box-sizing:border-box;margin:0;padding:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}.shell{z-index:1;max-width:920px;margin:44px auto 64px;padding:0 18px 32px;position:relative}.global-logo{z-index:3;pointer-events:auto;mix-blend-mode:darken;transform-origin:0 0;width:200px;height:200px;position:absolute;top:2px;left:-1px;transform:scale(1.12)}:is(body:has(.mobile-nav-open) .global-logo,body:has(.mobile-nav-open) .hero-shell){visibility:hidden}.hero-shell{max-width:920px;min-height:380px;margin-bottom:0;margin-left:auto;margin-right:auto;padding:0 16px;position:relative;overflow:visible}.hero{z-index:1;mix-blend-mode:darken;-webkit-mix-blend-mode:darken;position:absolute;top:126px;right:-25px;overflow:visible}.hero-video{opacity:0;object-fit:contain;transform-origin:100% 0;width:320px;height:320px;transition:opacity .3s ease-in-out;display:block;transform:scale(.88);mix-blend-mode:darken!important;-webkit-mix-blend-mode:darken!important}.hero-video-ready{opacity:1}.shell.shell-tight{max-width:620px}.shell-header{background:var(--panel);border:1px solid var(--stroke);border-radius:0;margin-top:16px;margin-bottom:18px;padding:18px}.shell-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.shell-nav{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.kicker{font-family:var(--font-dm-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);font-size:11px}.title{text-wrap:balance;margin:8px 0 6px;font-size:clamp(24px,4vw,34px)}.sub{color:var(--ink-muted);text-wrap:balance;max-width:56ch}.card{background:var(--panel);border:1px solid var(--stroke);border-radius:0;margin-bottom:16px;padding:18px;animation:.42s both rise}.card-title{text-wrap:balance;margin-bottom:8px;font-size:18px}.credits{border:1px solid var(--stroke);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;background:var(--panel-deep);cursor:pointer;border-radius:0;padding:8px 10px}.credits-wrap{position:relative}.credits-panel{border:1px solid var(--stroke);background:var(--panel);white-space:nowrap;border-radius:0;padding:8px 10px;font-size:12px;position:absolute;top:calc(100% + 6px);right:0}.credits-email{opacity:.8;margin-top:6px;font-size:11px}.build-tag{letter-spacing:.08em;text-transform:uppercase;color:#6a3e00;font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-top:16px}.meta{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-bottom:8px}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.form-grid{gap:12px;display:grid}.timer{border:1px solid var(--stroke);text-align:left;cursor:pointer;background:radial-gradient(120px 90px at 12% 20%,#ffd376 0%,#0000 70%),radial-gradient(140px 110px at 90% 0,#f0a11d 0%,#0000 60%),linear-gradient(160deg,#f3b12a 0%,#f2a620 100%);border-radius:0;gap:6px;width:100%;margin:10px 0 12px;padding:14px 16px;transition:transform .12s,box-shadow .12s;display:grid;position:relative;overflow:hidden}.timer:hover{transform:translateY(-1px)}.timer-active{box-shadow:none}.timer-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.timer-readout{font-size:clamp(22px,4vw,32px);font-family:var(--font-dm-mono),ui-monospace,monospace}.timer-state{color:var(--ink-muted);font-size:12px}.metronome{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.metronome-title{font-size:clamp(20px,4vw,30px);font-family:var(--font-dm-mono),ui-monospace,monospace;margin-top:6px}.metronome-sub{color:var(--ink-muted);margin-top:4px;font-size:13px}.metronome-led{width:100%;height:14px;box-shadow:inset -3px -3px 8px var(--shadow-hi),inset 3px 3px 8px #783c0073;opacity:.5;background:linear-gradient(90deg,#f1a41f 0%,#f7c96b 50%,#f1a41f 100%);border-radius:0;margin-top:14px}.metronome-led-on{opacity:1;animation:.6s ease-in-out infinite ledPulse}.setup-guide{background:var(--panel);border:1px solid var(--stroke);border-radius:0;margin-bottom:16px;padding:12px 16px}.setup-guide summary{cursor:pointer;justify-content:space-between;align-items:baseline;gap:12px;list-style:none;display:flex}.setup-guide summary::-webkit-details-marker{display:none}.setup-title{letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace}.setup-sub{color:var(--ink-muted);font-size:12px}.setup-body{margin-top:10px}.timer-wrapper{margin:10px 0 12px;position:relative}.timer-progress{pointer-events:none;background:#3c3c3c1a;transition:width 1s linear;position:absolute;top:0;bottom:0;left:0}.timer-done{border-color:var(--ink);background:var(--panel-deep)}.timer-done .timer-state{color:var(--ink);font-weight:600}.session-progress{margin-bottom:16px}.session-progress-bar{background:var(--stroke);width:100%;height:6px;overflow:hidden}.session-progress-fill{background:var(--ink);height:100%;transition:width .5s}.session-progress-label{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),monospace;letter-spacing:.05em;margin-top:4px}.today-streak-bar{font-size:13px;font-family:var(--font-dm-mono),monospace;color:var(--ink-muted);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;padding:8px 0;display:flex}.today-streak-count{color:var(--ink);align-items:center;gap:4px;font-weight:600;display:inline-flex}.today-streak-risk{background:var(--ink);color:var(--bg);padding:2px 8px;font-size:12px;font-weight:600}.today-streak-active{background:var(--panel-deep);color:var(--ink);padding:2px 8px;font-size:12px;font-weight:600}.today-streak-total{margin-left:auto}.today-coach{border-left:4px solid var(--ink)}.today-coach-text{font-size:15px;font-weight:600}.practice-block-header{align-items:flex-start;gap:12px;margin-bottom:6px;display:flex}.practice-block-index{font-family:var(--font-dm-mono),monospace;background:var(--ink);width:32px;height:32px;color:var(--bg);flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.practice-block-done{opacity:.6}.practice-block-done .practice-block-index{background:var(--panel-deep);color:var(--ink)}.bpm-inline-controls{border-top:1px solid var(--stroke);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding-top:12px;display:flex}.bpm-adj-btn{min-width:40px;font-family:var(--font-dm-mono),monospace;padding:6px 10px;font-size:13px}.bpm-inline-display{font-family:var(--font-dm-mono),monospace;text-align:center;min-width:50px;font-size:18px;font-weight:700}.timer-flash,.timer-flash-inner,.timer-flash-title,.timer-flash-sub{display:none}.btn{background:var(--panel-deep);border:1px solid var(--stroke);border-radius:0;justify-content:center;align-items:center;gap:8px;padding:10px 14px;font-weight:600;transition:transform .14s,box-shadow .14s;display:inline-flex}.btn:hover{box-shadow:none;transform:translateY(-1px)}.btn-ghost{box-shadow:none;background:0 0}.row{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.field{gap:6px;display:grid}.field label,.field span{color:var(--ink-muted);font-size:13px}.input,select,input{border:1px solid var(--stroke);box-shadow:none;background:#f7c04a;border-radius:0;padding:10px 12px}.input:focus,select:focus,input:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}ul{margin:10px 0 0 18px}li{margin:6px 0}.stop{color:var(--ink-muted);border:1px dashed #4e2d0059;border-radius:0;margin-top:12px;padding:10px 12px}.tiny{color:var(--ink-muted);margin-top:10px;font-size:12px}.mono{font-family:var(--font-dm-mono),ui-monospace,monospace}.error{color:#6b1000;margin-top:4px;font-size:13px}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes flashPulse{0%,to{filter:saturate()}50%{filter:saturate(1.2)brightness(1.06)}}@keyframes ledPulse{0%,to{filter:brightness(.9)}50%{filter:brightness(1.2)}}.recorder{border:1px solid var(--stroke);background:linear-gradient(135deg,#f5c04a 0%,#f0a920 100%);border-radius:0;margin-top:16px;padding:16px}.recorder-compact{padding:12px}.recorder-header{align-items:center;gap:8px;margin-bottom:12px;display:flex}.recorder-icon{font-size:18px}.recorder-title{letter-spacing:.04em;font-size:14px;font-weight:600}.recorder-error{color:#6b1000;background:#6b10001f;border-radius:0;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;font-size:13px;display:flex}.recorder-error-dismiss{cursor:pointer;opacity:.7;background:0 0;border:none;font-size:18px;line-height:1}.recorder-error-dismiss:hover{opacity:1}.recorder-unsupported{background:#6b100014;flex-direction:column;align-items:flex-start}.recorder-controls{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.recorder-btn{background:var(--panel);border:1px solid var(--stroke);cursor:pointer;border-radius:0;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:600;transition:transform .12s,box-shadow .12s;display:inline-flex}.recorder-btn:hover:not(:disabled){transform:translateY(-1px)}.recorder-btn:disabled{opacity:.5;cursor:not-allowed}.recorder-btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.recorder-btn-record{background:var(--panel)}.recorder-btn-icon-record{color:#c02020;font-size:12px}.recorder-btn-stop{background:#f5d070;border-color:#4f2c0059}.recorder-btn-small{border-radius:0;padding:6px 10px;font-size:12px}.recorder-btn-tiny{border-radius:0;min-width:28px;padding:4px 8px;font-size:11px}.recorder-btn-ghost{background:0 0;border-color:#0000}.recorder-btn-ghost:hover:not(:disabled){background:#0000000d}.recorder-timer{font-family:var(--font-dm-mono),ui-monospace,monospace;align-items:center;gap:8px;display:flex}.recorder-timer-dot{background:#8b6914;border-radius:0;width:10px;height:10px;animation:1s ease-in-out infinite recorderPulse}.recorder-timer-value{font-size:18px;font-weight:600}.recorder-timer-max{color:var(--ink-muted);font-size:12px}.recorder-playback{border-top:1px dashed var(--stroke);margin-top:12px;padding-top:12px}.recorder-playback-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-bottom:8px}.recorder-playback-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.recorder-duration{font-family:var(--font-dm-mono),ui-monospace,monospace;color:var(--ink-muted);font-size:12px}.recorder-history{border-top:1px dashed var(--stroke);margin-top:14px;padding-top:14px}.recorder-history-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-bottom:8px}.recorder-history-list{margin:0;padding:0;list-style:none}.recorder-history-item{align-items:center;gap:10px;padding:6px 0;font-size:13px;display:flex}.recorder-history-item:not(:last-child){border-bottom:1px solid #4f2c001a}.recorder-history-date{color:var(--ink-muted);flex:1;font-size:12px}.recorder-history-actions{gap:4px;display:flex}.recorder-hint{color:var(--ink-muted);margin-top:12px;font-size:12px;font-style:italic}@keyframes recorderPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.9)}}.recorder-waveform-container{border:1px solid var(--stroke);background:#1a1a1a;margin:8px 0 12px;overflow:hidden}.recorder-waveform-canvas{width:100%;height:80px;display:block}.recorder-accuracy{border:1px solid var(--stroke);background:var(--bg,#fff);margin:12px 0;padding:12px}.recorder-accuracy-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.recorder-accuracy-label{text-transform:uppercase;letter-spacing:.5px;font-size:.85rem;font-weight:700}.recorder-accuracy-score{font-family:monospace;font-size:1.5rem;font-weight:700}.recorder-accuracy-bar{background:#00000026;height:8px;margin-bottom:8px;overflow:hidden}.recorder-accuracy-fill{background:#c0392b;height:100%;transition:width .5s}.recorder-accuracy-breakdown{flex-wrap:wrap;gap:12px;font-family:monospace;font-size:.75rem;display:flex}.accuracy-stat{font-weight:600}.accuracy-perfect{color:#27ae60}.accuracy-good{color:#2980b9}.accuracy-ok{color:#f39c12}.accuracy-miss{color:#c0392b}.recorder-comparison-hint{color:var(--ink-muted);border-left:3px solid var(--ink);margin-top:8px;padding:6px 8px;font-size:.8rem;font-style:italic}.recorder-history-bpm{color:var(--ink-muted);font-family:monospace;font-size:.75rem}.recorder-history-score{color:#c0392b;font-family:monospace;font-size:.75rem;font-weight:700}.module-progress{margin-bottom:16px}.module-progress-header{margin-bottom:12px}.module-progress-compact{background:var(--panel);border:1px solid var(--stroke);border-radius:0;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;display:flex}.module-dots{gap:6px;display:flex}.module-dot{background:var(--stroke);border-radius:0;width:12px;height:12px;transition:all .2s}.module-dot-complete{background:var(--ink)}.module-dot-current{background:var(--ink);box-shadow:0 0 0 3px var(--panel),0 0 0 5px var(--ink-muted)}.module-label{color:var(--ink-muted);font-size:13px;font-family:var(--font-dm-mono),ui-monospace,monospace}.module-advance-hint{background:var(--panel-deep);border:1px solid var(--stroke);cursor:pointer;border-radius:0;margin-left:auto;padding:4px 10px;font-size:12px;transition:transform .12s}.module-advance-hint:hover{transform:translateY(-1px)}.module-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.module-card{background:var(--panel);border:1px solid var(--stroke);opacity:.6;border-radius:0;padding:16px;transition:all .2s}.module-card-complete{opacity:.8;background:linear-gradient(135deg,var(--panel)0%,var(--panel-deep)100%)}.module-card-current{opacity:1;border-color:var(--ink-muted);box-shadow:0 2px 8px #0000001a}.module-card-future{opacity:.5}.module-card-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.module-number{background:var(--panel-deep);border-radius:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;font-weight:600;display:flex}.module-card-complete .module-number,.module-card-current .module-number{background:var(--ink);color:var(--bg)}.module-duration{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace}.module-title{margin-bottom:6px;font-size:16px}.module-focus{color:var(--ink-muted);font-size:13px;line-height:1.4}.module-current-badge{border-top:1px dashed var(--stroke);margin-top:12px;padding-top:12px}.module-sessions{color:var(--ink-muted);margin-bottom:8px;font-size:12px;display:block}.module-advance-btn{padding:8px 12px;font-size:13px}.module-advance-modal{z-index:100;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.module-advance-content{background:var(--panel);border:1px solid var(--stroke);border-radius:0;max-width:400px;padding:24px}.module-advance-content h3{margin-bottom:12px}.progress-stats{flex-wrap:wrap;gap:24px;margin-top:12px;display:flex}.progress-stat{flex-direction:column;gap:4px;display:flex}.progress-stat-value{font-size:28px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace}.progress-stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:12px}.progress-keywords{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.progress-keyword{background:var(--panel-deep);color:var(--ink-muted);border-radius:0;padding:4px 10px;font-size:12px}.gap-controls{border-top:1px dashed var(--stroke);margin-top:16px;padding-top:16px}.gap-controls-compact{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;padding-top:12px;display:flex}.gap-controls-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.gap-controls-title{flex:1;min-width:200px}.gap-controls-desc{color:var(--ink-muted);margin-top:4px;font-size:13px}.gap-controls-body{margin-top:16px}.gap-presets{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.gap-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.gap-preset-select{border-radius:0;padding:6px 10px;font-size:13px}.gap-settings{flex-wrap:wrap;gap:16px;margin-bottom:12px;display:flex}.gap-setting{flex-direction:column;gap:4px;display:flex}.gap-setting-label{color:var(--ink-muted);font-size:12px}.gap-setting-hint{color:var(--ink-muted);opacity:.8;font-size:11px}.gap-input{text-align:center;border-radius:0;width:70px;padding:8px 10px}.gap-checkbox-label{cursor:pointer;align-items:center;gap:8px;display:flex}.gap-checkbox{width:18px;height:18px;accent-color:var(--ink)}.gap-info{background:var(--panel-deep);border-radius:0;gap:20px;padding:10px 12px;display:flex}.gap-info-item{flex-direction:column;gap:2px;display:flex}.gap-info-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-family:var(--font-dm-mono),ui-monospace,monospace}.gap-info-value{font-size:14px;font-weight:600}.gap-projection-tip{background:var(--panel-deep);border-radius:0;margin-top:12px;padding:0;overflow:hidden}.projection-tip-toggle{cursor:pointer;width:100%;color:var(--ink);background:0 0;border:none;justify-content:space-between;align-items:center;padding:10px 12px;font-size:13px;font-weight:500;display:flex}.projection-tip-toggle:hover{background:#0000000d}.projection-tip-content{padding:0 14px 14px;font-size:13px;line-height:1.5}.projection-tip-content p{margin:0 0 10px}.projection-tip-content p:last-child{margin-bottom:0}.projection-tip-content strong{color:var(--ink)}.gap-visual{background:var(--panel-deep);border:1px solid var(--stroke);border-radius:0;margin-top:14px;padding:12px}.gap-visual-bar{background:#0000001a;border-radius:0;height:24px;position:relative;overflow:hidden}.gap-visual-fill{border-radius:0;height:100%;transition:width 60ms linear;position:absolute;top:0;left:0}.gap-visual-fill-click{background:linear-gradient(90deg,#4a9f4a 0%,#5cb85c 100%)}.gap-visual-fill-gap{background:linear-gradient(90deg,#a04a4a 0%,#c75050 100%)}.gap-visual-markers{justify-content:space-around;align-items:center;padding:0 4px;display:flex;position:absolute;inset:0}.gap-visual-marker{opacity:.4;border-radius:0;width:8px;height:8px;transition:all .1s}.gap-visual-marker-click{background:#a67c00}.gap-visual-marker-gap{background:#8b6914}.gap-visual-marker-active{opacity:1;transform:scale(1.5);box-shadow:0 0 8px}.gap-visual-info{font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;justify-content:space-between;align-items:center;margin-top:10px;display:flex}.gap-visual-status{letter-spacing:.08em;border-radius:0;padding:4px 10px;font-weight:600}.gap-visual-status-click{color:#3a3a3a;background:#a67c004d}.gap-visual-status-gap{color:#3a3a3a;background:#8b69144d}.gap-visual-beat{color:var(--ink-muted)}.gap-visual-countdown{color:var(--ink-muted);opacity:.8}.metronome-led-gap{opacity:.3;background:linear-gradient(90deg,#c75050 0%,#e08080 50%,#c75050 100%);animation:none}.drill-controls{gap:20px;display:grid}.drill-section{flex-direction:column;gap:8px;display:flex}.drill-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.drill-bpm{align-items:center;gap:8px;display:flex}.drill-bpm-input{text-align:center;width:80px;font-size:20px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace}.drill-hint{color:var(--ink-muted);font-size:12px}.drill-presets{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;display:grid}.drill-preset-btn{text-align:center;flex-direction:column;align-items:center;padding:12px;display:flex}.drill-preset-name{font-size:14px;font-weight:600}.drill-preset-detail{color:var(--ink-muted);margin-top:2px;font-size:11px}.drill-custom-details{border:1px solid var(--stroke);background:var(--panel-deep);border-radius:0}.drill-custom-summary{cursor:pointer;justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;list-style:none;display:flex}.drill-custom-summary::-webkit-details-marker{display:none}.drill-custom-active{background:var(--ink);color:var(--bg);border-radius:0;padding:2px 8px;font-size:11px}.drill-custom-body{padding:0 14px 14px}.drill-custom-row{gap:16px;display:flex}.drill-custom-field{flex-direction:column;gap:4px;display:flex}.drill-custom-field span{color:var(--ink-muted);font-size:12px}.drill-custom-field input{text-align:center;width:80px}.drill-checkbox-label{cursor:pointer;align-items:center;gap:10px;font-size:14px;display:flex}.drill-checkbox-label input{width:18px;height:18px;accent-color:var(--ink)}.drill-timer-options{flex-wrap:wrap;gap:8px;display:flex}.drill-action{justify-content:center;margin-top:20px;display:flex}.drill-start-btn{background:var(--surface-warm,#deb760);color:#3a3a3a;border-color:#3a3a3a;padding:14px 32px;font-size:16px}.drill-stop-btn{background:var(--surface-warm,#c49a30);color:#3a3a3a;border-color:#3a3a3a;padding:14px 32px;font-size:16px}.drill-active-card{border:2px solid var(--ink-muted);animation:2s ease-in-out infinite drillPulse}.drill-active-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.drill-active-label{text-transform:uppercase;letter-spacing:.15em;font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;color:var(--ink-muted)}.drill-active-bpm{font-size:24px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace}.drill-active-pattern{margin-bottom:16px}.drill-pattern-visual{justify-content:center;gap:8px;margin-bottom:8px;display:flex}.drill-pattern-dot{border-radius:0;width:20px;height:20px;transition:all .2s}.drill-pattern-dot-on{background:var(--surface-warm,#deb760);box-shadow:0 2px 8px #5cb85c66}.drill-pattern-dot-off{opacity:.4;background:linear-gradient(135deg,#888 0%,#666 100%)}.drill-pattern-labels{color:var(--ink-muted);justify-content:center;gap:24px;font-size:12px;display:flex}.drill-pattern-label-on{color:#3a3a3a}.drill-pattern-label-off{opacity:.6}.drill-offbeat-badge{text-align:center;background:var(--panel-deep);color:var(--ink-muted);border-radius:0;margin-bottom:16px;padding:6px 12px;font-size:12px}.drill-stats{justify-content:center;gap:32px;display:flex}.drill-stat{flex-direction:column;align-items:center;gap:4px;display:flex}.drill-stat-value{font-size:28px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace}.drill-stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:11px}@keyframes drillPulse{0%,to{border-color:var(--ink-muted)}50%{border-color:var(--ink)}}@media (prefers-reduced-motion:reduce){.card{animation:none}.btn{transition:none}.recorder-timer-dot{animation:none}.recorder-btn,.module-card,.module-dot{transition:none}.drill-active-card{animation:none}.gap-visual-fill,.gap-visual-marker{transition:none}}.calendar-container{margin-bottom:16px}.calendar-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.calendar-title{letter-spacing:.04em;font-size:14px;font-weight:600}.calendar-legend{align-items:center;gap:4px;display:flex}.calendar-legend-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-family:var(--font-dm-mono),ui-monospace,monospace}.calendar-legend-cell{border-radius:0;width:12px;height:12px}.calendar-grid-wrapper{gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.calendar-weekdays{flex-direction:column;gap:3px;padding-top:20px;display:flex}.calendar-weekday{height:12px;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;font-size:9px;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:12px}.calendar-main{flex:1;min-width:0}.calendar-months{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;height:16px;margin-bottom:4px;display:grid}.calendar-month{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;font-size:10px;font-family:var(--font-dm-mono),ui-monospace,monospace}.calendar-grid{gap:3px;display:flex}.calendar-week{flex-direction:column;gap:3px;display:flex}.calendar-cell{border:none;border-radius:0;width:12px;height:12px;padding:0;transition:transform .1s,box-shadow .1s}.calendar-cell:hover{box-shadow:0 0 0 2px var(--ink-muted);transform:scale(1.2)}.calendar-cell:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.calendar-level-0{background:#2f1a0014}.calendar-level-1{background:#f5d999}.calendar-level-2{background:#f0c055}.calendar-level-3{background:#d9a020}.calendar-level-4{background:#a67c00}.calendar-tooltip{z-index:50;background:var(--ink);color:var(--bg);pointer-events:none;white-space:nowrap;border-radius:0;padding:8px 12px;font-size:12px;position:fixed;box-shadow:0 4px 12px #0000004d}.calendar-tooltip-date{margin-bottom:2px;font-weight:600}.calendar-tooltip-stats{opacity:.85;font-family:var(--font-dm-mono),ui-monospace,monospace}.calendar-tooltip-sep{opacity:.5;margin:0 6px}.streak-card{background:linear-gradient(135deg,var(--panel)0%,var(--panel-deep)100%);border:1px solid var(--stroke);border-radius:0;padding:16px}.streak-main{align-items:center;gap:16px;display:flex}.streak-fire-container{justify-content:center;align-items:center;width:48px;height:48px;display:flex;position:relative}.streak-fire{font-size:36px;transition:transform .2s}.streak-fire-active{animation:2s ease-in-out infinite fireGlow}.streak-fire-glow{pointer-events:none;background:radial-gradient(circle,#ff8c004d 0%,#0000 70%);border-radius:0;animation:2s ease-in-out infinite glowPulse;position:absolute;inset:-4px}.streak-info{flex:1}.streak-current{align-items:baseline;gap:8px;display:flex}.streak-current-number{font-size:32px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1}.streak-current-label{color:var(--ink-muted);font-size:14px}.streak-status{font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace;letter-spacing:.04em;border-radius:0;margin-top:6px;padding:4px 10px;display:inline-block}.streak-status-active{color:#3a3a3a;background:#a67c0033}.streak-status-warning{color:#5a3f00;background:#ffb40033}.streak-status-gentle{color:var(--ink-muted);background:#0000000f}.streak-secondary{border-top:1px dashed var(--stroke);gap:24px;margin-top:14px;padding-top:14px;display:flex}.streak-stat{flex-direction:column;gap:2px;display:flex}.streak-stat-value{font-size:16px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace}.streak-stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.streak-compact{background:var(--panel);border:1px solid var(--stroke);border-radius:0;align-items:center;gap:6px;padding:8px 14px;display:flex}.streak-compact-fire{font-size:18px}.streak-compact-count{font-size:18px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace}.streak-compact-label{color:var(--ink-muted);font-size:12px}.streak-compact-active{color:#3a3a3a;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-family:var(--font-dm-mono),ui-monospace,monospace;background:#a67c0033;border-radius:0;margin-left:6px;padding:2px 8px}.streak-badge{font-family:var(--font-dm-mono),ui-monospace,monospace;background:#ff8c0026;border-radius:0;align-items:center;gap:3px;padding:3px 8px;display:inline-flex}.streak-badge-fire{font-size:12px}.streak-badge-count{font-size:12px;font-weight:600}@keyframes fireGlow{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes glowPulse{0%,to{opacity:.6}50%{opacity:1}}.stats-card{background:var(--panel);border:1px solid var(--stroke);border-radius:0;padding:16px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:16px;display:grid}.stat-item{flex-direction:column;gap:2px;display:flex}.stat-item-value{font-size:24px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1.1}.stat-item-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.stat-item-trend{font-size:10px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-top:2px}.stat-item-trend-up,.stat-item-trend-down{color:#3a3a3a}.compact-stats{background:var(--panel);border:1px solid var(--stroke);border-radius:0;align-items:center;gap:12px;margin-bottom:16px;padding:10px 14px;display:flex}.compact-stat{align-items:center;gap:4px;display:flex}.compact-stat-value{font-size:16px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace}.compact-stat-label{color:var(--ink-muted);font-size:12px}.compact-stat-fire{font-size:14px}.compact-stat-check{color:#3a3a3a;margin-left:2px;font-size:12px}.compact-stat-sep{color:var(--ink-muted);opacity:.5}.achievements-card{background:var(--panel);border:1px solid var(--stroke);border-radius:0;padding:16px}.achievements-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.achievements-title{letter-spacing:.04em;font-size:14px;font-weight:600}.achievements-count{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.achievements-grid{gap:10px;display:grid}.achievements-grid-locked{opacity:.6}.achievement{background:var(--panel-deep);border-radius:0;align-items:center;gap:12px;padding:10px 12px;transition:transform .1s;display:flex}.achievement:hover{transform:translate(2px)}.achievement-unlocked{background:linear-gradient(135deg,var(--panel-deep)0%,#f5d999 100%)}.achievement-locked{background:#0000000a}.achievement-icon{flex-shrink:0;font-size:24px}.achievement-icon-locked{filter:grayscale();opacity:.5}.achievement-info{flex-direction:column;gap:2px;display:flex}.achievement-title{font-size:13px;font-weight:600}.achievement-desc{color:var(--ink-muted);font-size:11px}.achievements-locked{border-top:1px dashed var(--stroke);margin-top:14px;padding-top:14px}.achievements-locked-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-bottom:10px;display:block}@media (prefers-reduced-motion:reduce){.streak-fire-active,.streak-fire-glow{animation:none}.calendar-cell,.achievement{transition:none}}.touch-target{min-width:44px;min-height:44px}.mobile-nav-toggle{background:var(--panel-deep);border:1px solid var(--stroke);cursor:pointer;border-radius:0;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:10px;display:none}.mobile-nav-toggle-icon{flex-direction:column;gap:4px;width:20px;display:flex}.mobile-nav-toggle-icon span{background:var(--ink);border-radius:0;height:2px;transition:transform .2s,opacity .2s}.mobile-nav-toggle[aria-expanded=true] .mobile-nav-toggle-icon span:first-child{transform:rotate(45deg)translate(4px,4px)}.mobile-nav-toggle[aria-expanded=true] .mobile-nav-toggle-icon span:nth-child(2){opacity:0}.mobile-nav-toggle[aria-expanded=true] .mobile-nav-toggle-icon span:nth-child(3){transform:rotate(-45deg)translate(4px,-4px)}.mobile-nav-menu{display:none}.desktop-nav{display:contents}@media (max-width:768px){main.shell{margin-top:24px;padding:0 12px 24px}.shell-header{margin-top:12px;padding:14px}.title{font-size:clamp(20px,5vw,28px)}.card{padding:14px}.grid{grid-template-columns:1fr}.gap-settings{flex-direction:column;gap:12px}.gap-info{flex-wrap:wrap;gap:12px}}@media (max-width:640px){html{font-size:16px}main.shell{margin-top:16px;padding:0 10px 20px}.shell-header{border-radius:0;margin-top:8px;padding:12px}.shell-head{flex-direction:column;gap:12px}.shell-nav{justify-content:flex-start;width:100%}.desktop-nav{display:none}.mobile-nav-toggle{display:flex}.mobile-nav-menu{background:var(--bg);z-index:9999;flex-direction:column;gap:8px;padding:70px 20px 20px;display:none;position:fixed;inset:0;overflow-y:auto}.mobile-nav-menu.mobile-nav-open{display:flex}.mobile-nav-menu .btn{justify-content:flex-start;width:100%;min-height:48px;font-size:16px}.nav-section-primary{border-bottom:1px solid var(--stroke);flex-direction:column;gap:8px;margin-bottom:16px;padding-bottom:16px;display:flex}.nav-section-secondary{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.nav-section-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);margin-top:8px;margin-bottom:4px;padding-left:16px;font-size:12px;font-weight:600}.nav-section-secondary .btn-sm{min-height:40px;padding-left:24px;font-size:14px}.mobile-nav-close{background:var(--panel-deep);border:1px solid var(--stroke);cursor:pointer;border-radius:0;justify-content:center;align-items:center;min-width:44px;min-height:44px;font-size:24px;display:flex;position:absolute;top:12px;right:12px}.title{font-size:20px}.sub{font-size:14px}.kicker{font-size:10px}.card{border-radius:0;margin-bottom:12px;padding:12px}.card-title{font-size:16px}.timer{border-radius:0;min-height:88px;padding:16px}.timer-readout{font-size:28px}.timer-label,.timer-state{font-size:11px}.timer-flash-inner{width:calc(100% - 32px);max-width:320px;margin:16px;padding:20px}.metronome{flex-direction:column;align-items:flex-start;gap:12px}.metronome-title{font-size:24px}.metronome .btn{width:100%;min-height:48px;font-size:16px}.metronome-led{height:12px}.gap-visual{padding:10px}.gap-visual-bar{border-radius:0;height:32px}.gap-visual-marker{width:10px;height:10px}.gap-visual-info{flex-direction:column;align-items:flex-start;gap:6px;font-size:11px}.gap-controls{margin-top:12px;padding-top:12px}.gap-controls-compact{flex-direction:column;align-items:stretch;gap:8px}.gap-controls-compact .btn{width:100%;min-height:44px}.gap-controls-compact select{width:100%;min-height:44px;font-size:16px}.gap-presets{flex-direction:column;align-items:stretch}.gap-presets .btn{min-height:44px}.gap-settings{flex-direction:column}.gap-setting{width:100%}.gap-input{width:100%;min-height:44px;font-size:16px}.gap-checkbox{width:24px;height:24px}.btn{min-height:44px;padding:12px 16px;font-size:15px}.btn-small{min-height:40px;padding:10px 14px}.row{flex-direction:column;gap:8px}.row .btn{width:100%}.input,select,input{min-height:44px;padding:12px 14px;font-size:16px}.field{gap:8px}.field label,.field span{font-size:14px}.recorder{border-radius:0;padding:12px}.recorder-controls{flex-direction:column;align-items:stretch}.recorder-btn{justify-content:center;width:100%;min-height:52px;font-size:16px}.recorder-btn-record{background:linear-gradient(135deg,var(--panel)0%,#f5c04a 100%)}.recorder-btn-icon-record{font-size:16px}.recorder-timer{background:var(--panel-deep);border-radius:0;justify-content:center;padding:12px}.recorder-playback-row{flex-direction:column;gap:8px}.recorder-playback-row .recorder-btn{width:100%}.recorder-history-item{flex-direction:column;align-items:flex-start;gap:8px;padding:10px 0}.recorder-history-actions{gap:8px;width:100%;display:flex}.recorder-history-actions .recorder-btn{flex:1;min-height:40px}.module-progress-compact{flex-direction:column;align-items:flex-start;gap:10px;padding:10px 12px}.module-dots{gap:8px}.module-dot{width:14px;height:14px}.module-advance-hint{text-align:center;justify-content:center;align-items:center;width:100%;min-height:40px;margin-left:0;display:flex}.module-grid{grid-template-columns:1fr}.compact-stats{flex-direction:column;align-items:flex-start;gap:8px;padding:12px}.compact-stat-sep{display:none}.streak-main{flex-direction:column;align-items:flex-start}.streak-fire-container{width:40px;height:40px}.streak-fire{font-size:28px}.streak-secondary{flex-direction:column;gap:12px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px}.calendar-header{flex-direction:column;align-items:flex-start}.calendar-cell{width:10px;height:10px}.calendar-weekday{font-size:8px}.setup-guide{padding:10px 12px}.setup-guide summary{align-items:center;min-height:44px}.credits{justify-content:center;align-items:center;min-height:40px;display:flex}.credits-panel{z-index:50;border-radius:0;padding:16px;position:fixed;inset:auto 10px 20px}.drill-bpm{flex-direction:column;align-items:stretch}.drill-bpm-input{width:100%;min-height:52px;font-size:24px}.drill-bpm .btn{min-width:48px;min-height:48px}.drill-presets{grid-template-columns:1fr}.drill-preset-btn{min-height:60px}.drill-custom-row{flex-direction:column;gap:12px}.drill-custom-field input{width:100%;min-height:44px}.drill-start-btn,.drill-stop-btn{width:100%;min-height:56px;font-size:18px}.drill-stats{flex-direction:column;gap:16px}ul{margin-left:12px}li{margin:8px 0}li .btn{text-align:left;white-space:normal;line-height:1.4}}@media (max-width:375px){main.shell{padding:0 8px 16px}.shell-header{margin-top:24px;padding:10px}.title{font-size:18px}.card{border-radius:0;padding:10px}.timer{padding:14px}.timer-readout{font-size:24px}.metronome-title{font-size:20px}.btn{padding:10px 12px;font-size:14px}.recorder-btn{min-height:48px}.gap-visual-marker{width:8px;height:8px}.stats-grid{grid-template-columns:1fr 1fr}.stat-item-value{font-size:20px}.streak-current-number{font-size:26px}}@media (max-height:500px) and (orientation:landscape){.timer-flash{padding:10px}.timer-flash-inner{padding:14px 20px}.timer-flash-title{font-size:20px}.mobile-nav-menu{flex-flow:wrap;padding-top:60px}.mobile-nav-menu .btn{flex:none;width:auto}}@supports (padding:max(0px)){main.shell{padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right));padding-bottom:max(20px,env(safe-area-inset-bottom))}.mobile-nav-menu{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));padding-bottom:max(20px,env(safe-area-inset-bottom))}.timer-flash{padding:max(16px,env(safe-area-inset-top))max(16px,env(safe-area-inset-right))max(16px,env(safe-area-inset-bottom))max(16px,env(safe-area-inset-left))}}@media (hover:none){.btn:active,.timer:active,.recorder-btn:active{opacity:.9;transform:scale(.98)}.btn:hover,.timer:hover,.recorder-btn:hover:not(:disabled){transform:none}}.error-boundary{text-align:center;max-width:480px;margin:40px auto;padding:32px 20px}.error-boundary-icon{opacity:.8;margin-bottom:16px;font-size:64px}.error-boundary-title{margin-bottom:8px;font-size:24px}.error-boundary-message{color:var(--ink-muted);margin-bottom:24px}.error-boundary-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.error-boundary-details{background:var(--panel-deep);text-align:left;border-radius:0;margin-top:24px;padding:12px;font-size:12px}.error-boundary-details summary{cursor:pointer;color:var(--ink-muted);margin-bottom:8px;list-style:none}.error-boundary-details summary::-webkit-details-marker{display:none}.error-boundary-details pre{font-family:var(--font-dm-mono),ui-monospace,monospace;white-space:pre-wrap;word-break:break-word;font-size:11px;overflow-x:auto}.error-page-card{text-align:center;padding:24px}.error-page-icon{opacity:.8;margin-bottom:12px;font-size:48px}.error-page-details{background:var(--panel-deep);text-align:left;border-radius:0;margin-top:20px;padding:12px}.error-page-details summary{cursor:pointer;color:var(--ink-muted);margin-bottom:8px;font-size:13px;list-style:none}.error-page-details summary::-webkit-details-marker{display:none}.error-page-stack{font-family:var(--font-dm-mono),ui-monospace,monospace;white-space:pre-wrap;word-break:break-word;color:var(--ink-muted);font-size:11px;overflow-x:auto}.loading-spinner-container{flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex}.loading-spinner{gap:6px;display:flex}.loading-spinner-dot{background:var(--ink);border-radius:0;width:10px;height:10px;animation:1.4s ease-in-out infinite both spinnerBounce}.loading-spinner-dot:first-child{animation-delay:-.32s}.loading-spinner-dot:nth-child(2){animation-delay:-.16s}.loading-spinner-small .loading-spinner-dot{width:6px;height:6px}.loading-spinner-large .loading-spinner-dot{width:14px;height:14px}.loading-spinner-message{color:var(--ink-muted);font-size:14px}.inline-spinner{vertical-align:middle;gap:3px;margin-left:6px;display:inline-flex}.inline-spinner-dot{background:currentColor;border-radius:0;width:4px;height:4px;animation:1.4s ease-in-out infinite both spinnerBounce}.inline-spinner-dot:first-child{animation-delay:-.32s}.inline-spinner-dot:nth-child(2){animation-delay:-.16s}.loading-overlay{z-index:200;background:#f4ba34f2;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-overlay-content{flex-direction:column;align-items:center;gap:16px;display:flex}.loading-overlay-message{color:var(--ink);font-size:16px}@keyframes spinnerBounce{0%,80%,to{opacity:.5;transform:scale(0)}40%{opacity:1;transform:scale(1)}}.ai-loading{background:var(--panel);border:1px solid var(--stroke);border-radius:0;align-items:flex-start;gap:16px;margin-bottom:16px;padding:20px;display:flex}.ai-loading-icon{flex-shrink:0;font-size:32px}.ai-loading-content{flex:1}.ai-loading-message{margin-bottom:12px;font-size:16px;font-weight:600}.ai-loading-bar{background:#0000001a;border-radius:0;height:4px;margin-bottom:8px;overflow:hidden}.ai-loading-bar-fill{background:var(--ink);border-radius:0;width:30%;height:100%;animation:2s ease-in-out infinite aiLoadingBar}.ai-loading-hint{color:var(--ink-muted);font-size:13px}@keyframes aiLoadingBar{0%{width:0%;margin-left:0%}50%{width:60%;margin-left:20%}to{width:0%;margin-left:100%}}.skeleton{background:linear-gradient(90deg,#00000014 25%,#0000001f 50%,#00000014 75%) 0 0/200% 100%;border-radius:0;animation:1.5s ease-in-out infinite skeletonShimmer}.skeleton-card{min-height:80px}.skeleton-title{width:50%;height:20px;margin-bottom:12px}.skeleton-meta{width:30%;height:12px;margin-bottom:8px}.skeleton-line{height:14px;margin-bottom:8px}.skeleton-line:last-child{margin-bottom:0}.skeleton-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.skeleton-timer{border-radius:0;height:80px;margin:10px 0 12px}.skeleton-list{flex-direction:column;gap:10px;display:flex}.skeleton-session-item{flex-direction:column;gap:6px;padding:8px 0;display:flex}.skeleton-stat{flex-direction:column;gap:4px;display:flex}.skeleton-stat-value{width:60px;height:28px}.skeleton-stat-label{width:80px;height:10px}.skeleton-calendar{height:120px;margin-top:12px}.skeleton-setup{background:var(--panel);border:1px solid var(--stroke);border-radius:0;margin-bottom:16px;padding:12px 16px}@keyframes skeletonShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.offline-indicator{background:var(--ink);color:var(--bg);z-index:150;border-radius:0;align-items:center;gap:8px;padding:10px 16px;font-size:13px;animation:.3s slideUp;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}.offline-indicator-restored{background:#a67c00;animation:.3s slideUp,.3s 2.5s forwards fadeOut}.offline-indicator-icon{font-size:14px}.offline-indicator-text{white-space:nowrap}.offline-badge{background:#ffb40033;border-radius:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:10px;display:inline-flex}@keyframes slideUp{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0;visibility:hidden}}.field-error{background:#8b691414!important;border-color:#a04a4a!important}.field-error-message{color:#3a3a3a;align-items:center;gap:4px;margin-top:4px;font-size:12px;display:flex}.field-error-icon{font-size:12px}.form-error{color:#6b1000;background:#8b69141a;border:1px solid #a04a4a33;border-radius:0;align-items:flex-start;gap:10px;margin-bottom:16px;padding:12px 14px;font-size:14px;display:flex}.form-error-icon{flex-shrink:0;font-size:18px}.form-success{color:#3a3a3a;background:#a67c001a;border:1px solid #5ab85c33;border-radius:0;align-items:flex-start;gap:10px;margin-bottom:16px;padding:12px 14px;font-size:14px;display:flex}.form-success-icon{flex-shrink:0;font-size:18px}@media (prefers-reduced-motion:reduce){.loading-spinner-dot,.inline-spinner-dot{opacity:1;animation:none}.loading-spinner-dot:first-child{opacity:.4}.loading-spinner-dot:nth-child(2){opacity:.7}.loading-spinner-dot:nth-child(3){opacity:1}.ai-loading-bar-fill{width:50%;margin-left:25%;animation:none}.skeleton{background:#0000001a;animation:none}.offline-indicator,.offline-indicator-restored{animation:none}}.diagnostic-progress{margin-bottom:16px}.diagnostic-progress-text{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-bottom:8px;display:block}.diagnostic-progress-bar{background:#0000001a;border-radius:0;height:6px;overflow:hidden}.diagnostic-progress-fill{background:linear-gradient(90deg,var(--ink)0%,var(--ink-muted)100%);border-radius:0;height:100%;transition:width .3s}.diagnostic-exercise{border:2px solid var(--ink-muted)}.diagnostic-counter{text-align:center;margin:24px 0}.diagnostic-hit-btn{background:linear-gradient(145deg,var(--panel)0%,var(--panel-deep)100%);border:3px solid var(--stroke);cursor:pointer;border-radius:0;flex-direction:column;justify-content:center;align-items:center;width:120px;height:120px;transition:transform .1s,box-shadow .1s;display:inline-flex;box-shadow:0 4px 12px #00000026}.diagnostic-hit-btn:hover:not(:disabled){transform:scale(1.02)}.diagnostic-hit-btn:active:not(:disabled){transform:scale(.95);box-shadow:0 2px 6px #0003}.diagnostic-hit-btn:disabled{cursor:default;background:var(--surface-warm,#deb760);color:#3a3a3a;border-color:#3a3a3a}.diagnostic-hit-btn-active{animation:.15s hitPulse}.diagnostic-hit-count{font-size:42px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1}.diagnostic-hit-label{color:var(--ink-muted);font-size:14px}.diagnostic-listen{background:var(--panel-deep);border-radius:0;margin:24px 0;padding:16px}.diagnostic-outcomes{gap:10px;margin-top:12px;display:grid}.diagnostic-outcome{border-radius:0;align-items:center;gap:10px;padding:10px 14px;font-size:14px;display:flex}.diagnostic-outcome-good{color:#3a3a3a;background:#a67c0026}.diagnostic-outcome-bad{color:#3a3a3a;background:#8b691426}.diagnostic-outcome-icon{font-size:16px;font-weight:700}.diagnostic-verdict{text-align:center;margin-top:24px}.diagnostic-verdict-prompt{margin-bottom:12px;font-weight:600}.diagnostic-verdict-btn{min-width:140px}.diagnostic-verdict-clean{background:var(--surface-warm,#deb760);color:#3a3a3a;border-color:#3a3a3a}.diagnostic-verdict-flam{background:var(--surface-warm,#c49a30);color:#3a3a3a;border-color:#a04a4a}.diagnostic-result-header{text-align:center}.diagnostic-result-emoji{margin-bottom:12px;font-size:48px;display:block}.diagnostic-results-list{margin:0;padding:0;list-style:none}.diagnostic-result-item{border-bottom:1px solid var(--stroke);align-items:center;gap:12px;padding:12px 0;display:flex}.diagnostic-result-item:last-child{border-bottom:none}.diagnostic-result-icon{text-align:center;width:28px;font-size:20px}.diagnostic-result-title{flex:1;font-weight:600}.diagnostic-result-status{color:var(--ink-muted);font-size:13px}.diagnostic-prescription{background:linear-gradient(135deg,var(--panel)0%,#f5d999 100%);border:2px solid var(--ink-muted)}.diagnostic-prescription ol{margin:12px 0 0 18px}.diagnostic-prescription li{margin:8px 0}@keyframes hitPulse{0%,to{transform:scale(1)}50%{background:var(--ink);color:var(--bg);transform:scale(.92)}}.visual-metronome{justify-content:center;align-items:center;margin:16px 0;display:flex}.visual-metronome-circle{background:var(--panel-deep);border:3px solid var(--stroke);border-radius:0;width:80px;height:80px;transition:transform 60ms,background-color 60ms}.visual-metronome-circle-pulse{background:var(--ink);border-color:var(--ink);transform:scale(1.15)}.visual-metronome-circle-gap{opacity:.4;background:#8b69144d;border-color:#c7505080}.visual-metronome-beat-indicator{font-size:24px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;color:var(--ink-muted);text-align:center;min-width:60px}.visual-metronome-toggle{align-items:center;gap:8px;margin-top:12px;font-size:13px;display:flex}.visual-metronome-toggle input{width:18px;height:18px;accent-color:var(--ink)}@media (max-width:640px){.diagnostic-hit-btn{border-radius:0;width:100px;height:100px}.diagnostic-hit-count{font-size:36px}.diagnostic-verdict .row{flex-direction:column}.diagnostic-verdict-btn{width:100%}.diagnostic-outcomes{gap:8px}.diagnostic-outcome{padding:10px 12px;font-size:13px}}.audiation{background:linear-gradient(135deg,var(--panel)0%,#e8d4a8 100%);border:1px solid var(--stroke);border-radius:0;margin-top:16px;padding:16px}.audiation-compact{padding:12px}.audiation-header{align-items:center;gap:8px;margin-bottom:12px;display:flex}.audiation-icon{font-size:20px}.audiation-title{letter-spacing:.04em;font-size:15px;font-weight:600}.audiation-intro{color:var(--ink-muted);margin-bottom:16px;font-size:14px}.audiation-patterns{gap:10px;margin-bottom:16px;display:grid}.audiation-pattern-btn{background:var(--panel);border:1px solid var(--stroke);cursor:pointer;text-align:left;border-radius:0;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 16px;transition:transform .1s,box-shadow .1s;display:flex}.audiation-pattern-btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.audiation-pattern-name{font-size:14px;font-weight:600}.audiation-pattern-syllables{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.audiation-legend{background:#0000000d;border-radius:0;padding:12px}.audiation-legend-item{color:var(--ink-muted);margin:4px 0 0;font-size:12px}.audiation-countdown{text-align:center;margin:24px 0}.audiation-countdown-number{font-size:72px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1;animation:.6s infinite countdownPulse}.audiation-countdown-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;margin-top:8px;font-size:14px}.audiation-phase-indicator{text-align:center;border-radius:0;margin-bottom:16px;padding:12px 20px;font-size:18px;font-weight:700}.audiation-phase-sing{color:#3a3a3a;background:linear-gradient(135deg,#a8d4e8 0%,#7bb8d4 100%)}.audiation-phase-play{color:#3a3a3a;background:linear-gradient(135deg,#e8d4a8 0%,#d4b87b 100%)}.audiation-phase-complete{color:#3a3a3a;background:linear-gradient(135deg,#a8e8b4 0%,#7bd488 100%)}.audiation-current-pattern{text-align:center;margin:16px 0}.audiation-syllables-display{font-size:20px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace;background:var(--panel);border:2px solid var(--stroke);border-radius:0;margin:12px 0;padding:16px}.audiation-syllables-active{border-color:var(--ink);animation:1.5s infinite syllablePulse}.audiation-notation{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.audiation-instruction{color:var(--ink-muted);text-align:center;margin:16px 0;font-size:14px}.audiation-action-btn{background:var(--surface-warm,#deb760);color:#3a3a3a;border-color:#3a3a3a;width:100%;margin-bottom:10px;padding:16px;font-size:16px}.audiation-progress{text-align:center;color:var(--ink-muted);font-size:14px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin:12px 0}.audiation-review{background:var(--panel);border-radius:0;margin:16px 0;padding:12px}.audiation-review ul{margin:8px 0 0 16px;font-size:14px}@keyframes countdownPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes syllablePulse{0%,to{box-shadow:0 0 #2f1a0033}50%{box-shadow:0 0 0 8px #2f1a0000}}@media (max-width:640px){.audiation-countdown-number{font-size:56px}.audiation-syllables-display{padding:12px;font-size:16px}.audiation-pattern-btn{padding:14px}}.skill-progress-summary{background:linear-gradient(135deg,var(--panel)0%,var(--panel-deep)100%);border:1px solid var(--stroke);border-radius:0;margin-bottom:16px;padding:16px}.skill-progress-stats{justify-content:space-around;gap:12px;margin-bottom:14px;display:flex}.skill-progress-stat{flex-direction:column;align-items:center;gap:2px;display:flex}.skill-progress-stat-value{font-size:24px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1}.skill-progress-stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:10px}.skill-progress-bar-container{align-items:center;gap:12px;display:flex}.skill-progress-bar{background:#0000001a;border-radius:0;flex:1;height:8px;overflow:hidden}.skill-progress-bar-fill{background:linear-gradient(90deg,var(--ink)0%,var(--ink-muted)100%);border-radius:0;height:100%;transition:width .4s}.skill-progress-percent{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;min-width:72px}.skill-progress-next{border-top:1px dashed var(--stroke);flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;padding-top:14px;display:flex}.skill-progress-next-label{color:var(--ink-muted);font-size:12px}.skill-progress-next-skill{background:var(--panel);border:1px solid var(--stroke);border-radius:0;padding:4px 10px;font-size:13px;font-weight:600}.skill-category-filter{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.skill-category-btn{background:var(--panel);border:1px solid var(--stroke);cursor:pointer;border-radius:0;padding:8px 12px;font-size:12px;transition:all .15s}.skill-category-btn:hover{background:var(--panel-deep)}.skill-category-btn-active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.skill-tree-grid-wrapper{padding-bottom:8px;overflow-x:auto}.skill-tree-grid{gap:16px;min-width:max-content;padding:8px 0;display:flex;position:relative}.skill-connections{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;top:0;left:0}.skill-connection{stroke-width:2px;stroke-linecap:round}.skill-connection-active{stroke:var(--ink-muted);opacity:.6}.skill-connection-inactive{stroke:var(--stroke);opacity:.3}.skill-tree-category{z-index:1;flex-direction:column;gap:8px;min-width:120px;display:flex;position:relative}.skill-tree-category-header{background:var(--panel-deep);border-radius:0;align-items:center;gap:6px;margin-bottom:4px;padding:6px 10px;display:flex}.skill-tree-category-icon{opacity:.7;font-size:14px}.skill-tree-category-label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);font-size:11px;font-weight:600}.skill-tree-category-skills{flex-direction:column;gap:8px;display:flex}.skill-node{background:var(--panel);border:2px solid var(--stroke);cursor:pointer;border-radius:0;flex-direction:column;align-items:center;gap:4px;min-width:100px;padding:12px 10px;transition:all .15s;display:flex;position:relative}.skill-node:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.skill-node:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.skill-node-icon{opacity:.7;font-size:18px}.skill-node-name{text-align:center;font-size:12px;font-weight:600;line-height:1.2}.skill-node-locked{opacity:.5;background:#0000000a;border-style:dashed}.skill-node-locked:hover{box-shadow:none;transform:none}.skill-node-unlocked{background:var(--panel);border-color:var(--ink-muted)}.skill-node-mastered{background:linear-gradient(135deg,var(--panel)0%,#f5d999 100%);border-color:var(--ink)}.skill-node-recommended{border-color:var(--ink);animation:2s ease-in-out infinite recommendedPulse}.skill-node-progress{background:#0000001a;border-radius:0;height:3px;position:absolute;bottom:4px;left:8px;right:8px;overflow:hidden}.skill-node-progress-fill{background:var(--ink);border-radius:0;height:100%;transition:width .3s}.skill-node-mastered-badge{background:var(--ink);width:20px;height:20px;color:var(--bg);border-radius:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex;position:absolute;top:-6px;right:-6px}.skill-node-lock{opacity:.6;font-size:12px;position:absolute;top:-4px;right:-4px}.skill-node-recommended-badge{background:var(--ink);color:var(--bg);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-radius:0;padding:2px 8px;font-size:9px;font-weight:600;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)}.skill-tree-compact{flex-wrap:wrap;gap:8px;display:flex}.skill-tree-compact .skill-node{min-width:80px;padding:10px 8px}.skill-tree-compact .skill-node-name{font-size:11px}.skill-detail-overlay{z-index:100;background:#00000080;justify-content:center;align-items:center;padding:20px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.skill-detail{background:var(--panel);border:1px solid var(--stroke);border-radius:0;width:100%;max-width:420px;max-height:80vh;padding:24px;animation:.2s slideUp;position:relative;overflow-y:auto}.skill-detail-close{background:var(--panel-deep);border:1px solid var(--stroke);cursor:pointer;border-radius:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;display:flex;position:absolute;top:12px;right:12px}.skill-detail-close:hover{background:var(--stroke)}.skill-detail-header{margin-bottom:16px}.skill-detail-category{background:var(--panel-deep);color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;border-radius:0;align-items:center;gap:6px;margin-bottom:8px;padding:4px 10px;font-size:11px;display:inline-flex}.skill-detail-category-icon{font-size:12px}.skill-detail-title{margin-bottom:8px;font-size:22px}.skill-detail-status{text-transform:uppercase;letter-spacing:.06em;border-radius:0;padding:4px 10px;font-size:11px;font-weight:600;display:inline-block}.skill-detail-status-locked{color:var(--ink-muted);background:#00000014}.skill-detail-status-unlocked{color:#3a3a3a;background:#a67c0033}.skill-detail-status-mastered{background:var(--ink);color:var(--bg)}.skill-detail-description{color:var(--ink-muted);margin-bottom:16px;font-size:14px;line-height:1.5}.skill-detail-section{margin-bottom:16px}.skill-detail-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);font-size:10px;font-family:var(--font-dm-mono),ui-monospace,monospace;margin-bottom:6px}.skill-detail-benefit{color:#3a3a3a;background:#a67c001a;border-radius:0;margin:0;padding:10px 12px;font-size:14px}.skill-detail-requirements{flex-wrap:wrap;gap:6px;display:flex}.skill-detail-requirement{background:var(--panel-deep);border-radius:0;padding:6px 10px;font-size:12px}.skill-detail-unlock{color:var(--ink-muted);margin:0;font-size:13px;font-style:italic}.skill-detail-progress-bar{background:#0000001a;border-radius:0;height:8px;margin-bottom:6px;overflow:hidden}.skill-detail-progress-fill{background:linear-gradient(90deg,var(--ink)0%,var(--ink-muted)100%);border-radius:0;height:100%;transition:width .4s}.skill-detail-progress-text{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.skill-detail-date{font-size:14px;font-family:var(--font-dm-mono),ui-monospace,monospace}.skill-page-progress{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.skill-page-progress-main{flex-direction:column;align-items:center;display:flex}.skill-page-progress-percent{font-size:42px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1}.skill-page-progress-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:12px}.skill-page-progress-stats{flex:1;justify-content:space-around;gap:20px;display:flex}.skill-page-stat{flex-direction:column;align-items:center;gap:2px;display:flex}.skill-page-stat-value{font-size:20px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace}.skill-page-stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;font-size:10px}.skill-page-recommended{background:linear-gradient(135deg,var(--panel)0%,#e8d4a8 100%);border:2px solid var(--ink-muted)}.skill-page-recommended-content{gap:16px;margin-top:12px;display:flex}.skill-page-recommended-icon{opacity:.7;font-size:32px}.skill-page-recommended-info{flex:1}.skill-page-recommended-name{margin-bottom:6px;font-size:18px}.skill-page-recommended-desc{color:var(--ink-muted);margin:0 0 8px;font-size:14px;line-height:1.4}.skill-page-recommended-meta{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.skill-page-list{flex-direction:column;gap:10px;display:flex}.skill-page-item{background:var(--panel-deep);border-radius:0;align-items:center;gap:12px;padding:10px 12px;display:flex}.skill-page-item-icon{opacity:.6;font-size:18px}.skill-page-item-info{flex:1}.skill-page-item-name{margin-bottom:4px;font-size:14px;font-weight:600}.skill-page-item-progress{align-items:center;gap:8px;display:flex}.skill-page-item-progress-bar{background:#0000001a;border-radius:0;flex:1;height:4px;overflow:hidden}.skill-page-item-progress-fill{background:var(--ink);border-radius:0;height:100%}.skill-page-item-progress-text{color:var(--ink-muted);font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace;min-width:40px}.skill-page-mastered-list{flex-direction:column;gap:8px;display:flex}.skill-page-mastered-item{background:var(--panel-deep);border-radius:0;align-items:center;gap:10px;padding:8px 10px;display:flex}.skill-page-mastered-check{background:var(--ink);width:20px;height:20px;color:var(--bg);border-radius:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.skill-page-mastered-name{flex:1;font-size:14px;font-weight:500}.skill-page-mastered-date{color:var(--ink-muted);font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace}@keyframes recommendedPulse{0%,to{box-shadow:0 0 #2f1a0033}50%{box-shadow:0 0 0 6px #2f1a0000}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.skill-node{transition:none}.skill-node-recommended{box-shadow:0 0 0 3px var(--ink-muted);animation:none}.skill-detail-overlay,.skill-detail{animation:none}.skill-progress-bar-fill,.skill-detail-progress-fill,.skill-page-item-progress-fill{transition:none}}@media (max-width:640px){.skill-progress-summary{padding:14px}.skill-progress-stats{gap:8px}.skill-progress-stat-value{font-size:20px}.skill-progress-bar-container{flex-direction:column;align-items:stretch;gap:6px}.skill-progress-percent{text-align:center}.skill-progress-next{flex-direction:column;align-items:flex-start}.skill-category-filter{flex-wrap:nowrap;padding-bottom:4px;overflow-x:auto}.skill-category-btn{white-space:nowrap}.skill-tree-category{min-width:100px}.skill-node{min-width:90px;padding:10px 8px}.skill-node-name{font-size:11px}.skill-detail{max-height:85vh;padding:20px}.skill-detail-title{padding-right:32px;font-size:20px}.skill-page-progress{flex-direction:column;gap:16px}.skill-page-progress-stats{width:100%}.skill-page-recommended-content{flex-direction:column;gap:12px}.skill-page-recommended-icon{font-size:24px}}.community-tabs{gap:8px;margin-bottom:16px;display:flex}.community-tab{background:var(--panel);border:1px solid var(--stroke);cursor:pointer;border-radius:0;flex:1;justify-content:center;align-items:center;gap:8px;padding:14px 16px;font-size:14px;font-weight:600;transition:all .15s;display:flex}.community-tab:hover{background:var(--panel-deep)}.community-tab-active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.community-tab-badge{background:#f4ba3426;border-radius:0;padding:2px 8px;font-size:12px}.community-tab-active .community-tab-badge{background:#f4ba344d}.community-empty{text-align:center;padding:24px 0}.community-empty-icon{margin-bottom:12px;font-size:48px;display:block}.community-empty h3{margin-bottom:8px}.community-review-card{border:2px solid var(--ink-muted)}.community-review-header{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.community-review-count{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.community-review-pattern{background:var(--panel-deep);border-radius:0;padding:4px 10px;font-size:12px;font-weight:600}.community-review-bpm{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.community-player{background:var(--panel-deep);border-radius:0;align-items:center;gap:12px;margin-bottom:16px;padding:16px;display:flex}.community-play-btn{background:var(--ink);color:var(--bg);cursor:pointer;border:none;border-radius:0;padding:12px 24px;font-weight:600;transition:transform .1s}.community-play-btn:hover{transform:scale(1.02)}.community-duration{font-family:var(--font-dm-mono),ui-monospace,monospace;color:var(--ink-muted);font-size:14px}.community-description{color:var(--ink-muted);margin-bottom:16px;font-style:italic}.community-already-reviewed{text-align:center;color:var(--ink-muted);flex-direction:column;align-items:center;gap:12px;padding:20px;display:flex}.feedback-form{border-top:1px dashed var(--stroke);margin-top:20px;padding-top:20px}.feedback-section{margin-bottom:20px}.feedback-label{margin-bottom:8px;font-size:13px;font-weight:600;display:block}.feedback-rating{gap:8px;display:flex}.feedback-rating-btn{background:var(--panel-deep);border:1px solid var(--stroke);cursor:pointer;border-radius:0;width:44px;height:44px;font-size:16px;font-weight:600;transition:all .1s}.feedback-rating-btn:hover{background:var(--panel)}.feedback-rating-active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.feedback-rating-labels{color:var(--ink-muted);justify-content:space-between;margin-top:4px;font-size:11px;display:flex}.feedback-issues{flex-wrap:wrap;gap:8px;display:flex}.feedback-issue-btn{background:var(--panel-deep);border:1px solid var(--stroke);cursor:pointer;border-radius:0;align-items:center;gap:6px;padding:8px 12px;font-size:12px;transition:all .1s;display:flex}.feedback-issue-btn:hover{background:var(--panel)}.feedback-issue-active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.feedback-issue-emoji{font-size:14px}.feedback-comment{border:1px solid var(--stroke);background:var(--panel-deep);resize:vertical;border-radius:0;width:100%;min-height:60px;padding:12px;font-size:14px}.feedback-actions{gap:10px;margin-top:16px;display:flex}.feedback-submit-btn{background:var(--surface-warm,#deb760);color:#3a3a3a;border-color:#3a3a3a;flex:1}.my-recordings-list{flex-direction:column;gap:12px;display:flex}.my-recording-card{margin-bottom:0}.my-recording-header{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.my-recording-date{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.my-recording-pattern{background:var(--panel-deep);border-radius:0;padding:4px 10px;font-size:12px;font-weight:600}.my-recording-feedback-count{color:var(--ink-muted);margin-left:auto;font-size:12px}.my-recording-description{color:var(--ink-muted);margin-bottom:12px;font-size:14px;font-style:italic}.my-recording-feedback{background:var(--panel-deep);border-radius:0;padding:12px}.my-recording-scores{gap:24px;margin-bottom:12px;display:flex}.my-recording-score{flex-direction:column;align-items:center;display:flex}.my-recording-score-value{font-size:24px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace}.my-recording-score-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.my-recording-issues{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;display:flex}.my-recording-issues-label{color:var(--ink-muted);margin-right:4px;font-size:12px}.my-recording-issue{background:#00000014;border-radius:0;padding:3px 8px;font-size:11px}.my-recording-comments{border-top:1px dashed var(--stroke);padding-top:12px}.my-recording-comments-label{color:var(--ink-muted);margin-bottom:8px;font-size:12px;display:block}.my-recording-comment{color:var(--ink-muted);margin:6px 0;font-size:13px;font-style:italic}.recorder-share-btn{color:#3a3a3a;background:linear-gradient(135deg,#a8d4e8 0%,#7bb8d4 100%);border-color:#5a9ab8;width:100%;margin-top:10px}.recorder-share-success{color:#3a3a3a;text-align:center;background:#a67c0026;border-radius:0;margin-top:10px;padding:10px 14px;font-size:13px}.recorder-share-success a{font-weight:600;text-decoration:underline}@media (max-width:640px){.community-tabs,.feedback-issues{flex-direction:column}.feedback-issue-btn{justify-content:flex-start;width:100%}.feedback-actions{flex-direction:column}.my-recording-scores{gap:16px}}.maintenance-card{position:relative}.maintenance-loading{flex-direction:column;align-items:center;gap:12px;padding:32px 0;display:flex}.maintenance-due-list{flex-direction:column;gap:8px;margin:16px 0;display:flex}.maintenance-due-item{background:var(--panel-deep);border:1px solid var(--stroke);border-radius:0;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.maintenance-due-name{font-size:14px;font-weight:600}.maintenance-due-module{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace}.maintenance-due-more{text-align:center;color:var(--ink-muted);padding:8px;font-size:13px}.maintenance-preview-stats{color:var(--ink-muted);justify-content:center;gap:8px;margin-top:12px;font-size:13px;display:flex}.maintenance-practice{padding:0;overflow:hidden}.maintenance-progress{background:var(--stroke);width:100%;height:4px}.maintenance-progress-fill{background:var(--ink);height:100%;transition:width .3s}.maintenance-progress-text{text-align:center;color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;padding:8px}.maintenance-pattern{text-align:center;background:linear-gradient(180deg,var(--panel)0%,var(--panel-deep)100%);padding:24px 18px}.maintenance-pattern-module{font-family:var(--font-dm-mono),ui-monospace,monospace;text-transform:uppercase;letter-spacing:.15em;color:var(--ink-muted);margin-bottom:8px;font-size:11px}.maintenance-pattern-name{margin:0 0 12px;font-size:clamp(22px,5vw,28px);font-weight:700}.maintenance-reveal-btn{color:var(--ink-muted);border:1px solid var(--stroke);cursor:pointer;background:0 0;border-radius:0;padding:6px 14px;font-size:13px;transition:all .15s}.maintenance-reveal-btn:hover{background:var(--panel);color:var(--ink)}.maintenance-pattern-desc{color:var(--ink-muted);max-width:40ch;margin-top:12px;margin-left:auto;margin-right:auto;font-size:14px}.maintenance-pattern-memory{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),ui-monospace,monospace;justify-content:center;gap:8px;margin-top:16px;display:flex}.maintenance-prompt{text-align:center;border-top:1px solid var(--stroke);border-bottom:1px solid var(--stroke);padding:20px 18px}.maintenance-prompt-text{margin-bottom:6px;font-size:16px;font-weight:600}.maintenance-prompt-sub{color:var(--ink-muted);font-size:13px}.maintenance-ratings{border-bottom:1px solid var(--stroke);grid-template-columns:repeat(3,1fr);gap:0;display:grid}.maintenance-rating-btn{background:var(--panel);border:none;border-right:1px solid var(--stroke);cursor:pointer;flex-direction:column;align-items:center;gap:4px;padding:18px 12px;transition:background .15s;display:flex}.maintenance-rating-btn:last-child{border-right:none}.maintenance-rating-btn:hover{background:var(--panel-deep)}.maintenance-rating-btn:active{transform:scale(.98)}.maintenance-rating-emoji{font-size:28px;line-height:1}.maintenance-rating-label{margin-top:4px;font-size:14px;font-weight:700}.maintenance-rating-desc{color:var(--ink-muted);text-align:center;max-width:12ch;font-size:11px}.maintenance-skip{width:100%;color:var(--ink-muted);cursor:pointer;background:0 0;border:none;padding:14px;font-size:13px;transition:color .15s;display:block}.maintenance-skip:hover{color:var(--ink)}.maintenance-complete{text-align:center;padding:32px 18px}.maintenance-complete-icon{color:#3a3a3a;background:linear-gradient(135deg,#a8e8b4 0%,#7bd488 100%);border-radius:0;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 16px;font-size:32px;font-weight:700;display:flex}.maintenance-complete-count{color:var(--ink-muted);margin-top:8px;font-size:16px}.maintenance-stats{flex-wrap:wrap;justify-content:center;gap:24px;margin:24px 0;display:flex}.maintenance-stat{flex-direction:column;align-items:center;gap:2px;display:flex}.maintenance-stat-value{font-size:28px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1}.maintenance-stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;font-size:11px}@media (max-width:640px){.maintenance-ratings{grid-template-columns:1fr}.maintenance-rating-btn{border-right:none;border-bottom:1px solid var(--stroke);flex-direction:row;justify-content:flex-start;gap:12px;padding:16px 18px}.maintenance-rating-btn:last-child{border-bottom:none}.maintenance-rating-emoji{font-size:24px}.maintenance-rating-desc{text-align:left;max-width:none}.maintenance-stats{gap:16px}.maintenance-stat-value{font-size:24px}}.shuffle-mode{background:linear-gradient(135deg,var(--panel)0%,#e5d4a0 100%);border:1px solid var(--stroke);border-radius:0;padding:18px}.shuffle-mode-compact{padding:14px}.shuffle-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.shuffle-title{align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.shuffle-icon{font-size:20px}.shuffle-explain-btn{color:var(--ink-muted);cursor:pointer;background:0 0;border:none;border-radius:0;padding:4px 8px;font-size:12px;transition:background .15s}.shuffle-explain-btn:hover{background:#0000000d}.shuffle-explanation{background:#0000000a;border-radius:0;margin-bottom:16px;padding:14px;font-size:13px;line-height:1.5}.shuffle-explanation p{margin:0 0 10px}.shuffle-explanation p:last-child{margin-bottom:0}.shuffle-explanation-key{background:#ffdc644d;border-radius:0;padding:10px 12px;font-weight:500}.shuffle-setup{gap:16px;margin-bottom:18px;display:grid}.shuffle-section{flex-direction:column;gap:8px;display:flex}.shuffle-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);font-size:12px;font-weight:600}.shuffle-categories,.shuffle-modes,.shuffle-lengths{flex-wrap:wrap;gap:8px;display:flex}.shuffle-cat-btn,.shuffle-mode-btn{flex-direction:column;gap:2px;min-width:80px;display:flex}.shuffle-mode-name{font-size:13px;font-weight:600}.shuffle-mode-desc{opacity:.7;font-size:10px}.shuffle-checkbox-label{cursor:pointer;align-items:center;gap:8px;font-size:14px;display:flex}.shuffle-checkbox-label input{width:18px;height:18px;accent-color:var(--ink)}.shuffle-hint{color:var(--ink-muted);margin-left:26px;font-size:12px}.shuffle-weakness{background:#8b69141a;border-radius:0;padding:12px}.shuffle-weakness-list{gap:6px;margin-top:8px;display:grid}.shuffle-weakness-item{justify-content:space-between;align-items:center;font-size:13px;display:flex}.shuffle-weakness-name{font-weight:500}.shuffle-weakness-ratio{color:#9a4040;font-size:11px;font-family:var(--font-dm-mono),ui-monospace,monospace}.shuffle-start-btn{width:100%;padding:14px 20px;font-size:15px;font-weight:600}.shuffle-mode-active{background:linear-gradient(135deg,#e8e0c8 0%,#d8c890 100%)}.shuffle-active-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.shuffle-progress{color:var(--ink-muted);font-size:13px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace}.shuffle-active-tempo{font-size:14px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace}.shuffle-tempo-offset{color:var(--ink-muted);margin-left:4px;font-size:11px;font-weight:400}.shuffle-current{text-align:center;background:var(--panel);border:1px solid var(--stroke);border-radius:0;margin-bottom:14px;padding:20px 16px}.shuffle-pattern-name{margin:8px 0;font-size:22px;font-weight:700}.shuffle-pattern-syllables{font-size:16px;font-family:var(--font-dm-mono),ui-monospace,monospace;color:var(--ink);margin-bottom:6px}.shuffle-pattern-notation{font-size:13px;font-family:var(--font-dm-mono),ui-monospace,monospace;color:var(--ink-muted)}.shuffle-next-preview{background:#0000000a;border-radius:0;align-items:center;gap:8px;margin-bottom:16px;padding:10px 14px;display:flex}.shuffle-next-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);font-size:11px}.shuffle-next-name{font-size:14px;font-weight:600}.shuffle-rating{margin-top:16px}.shuffle-rating-prompt{text-align:center;margin-bottom:10px;font-size:14px;font-weight:500}.shuffle-rating-buttons{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.shuffle-rating-btn{border-radius:0;padding:12px 8px;font-size:13px;font-weight:500;transition:transform .1s,background .1s}.shuffle-rating-smooth{color:#3a3a3a;background:linear-gradient(135deg,#b8e8b8 0%,#8ed88e 100%);border-color:#6abf6a}.shuffle-rating-smooth:hover{transform:translateY(-2px)}.shuffle-rating-okay{background:linear-gradient(135deg,#e8e0b8 0%,#d8c890 100%);border-color:#c0a860}.shuffle-rating-okay:hover{transform:translateY(-2px)}.shuffle-rating-struggled{color:#3a3a3a;background:linear-gradient(135deg,#e8c8c8 0%,#d8a0a0 100%);border-color:#c08080}.shuffle-rating-struggled:hover{transform:translateY(-2px)}.shuffle-cancel-btn{width:100%;margin-top:12px}.shuffle-mode-complete{background:linear-gradient(135deg,#d8f0d8 0%,#b8e0b8 100%)}.shuffle-complete-header{justify-content:center;align-items:center;gap:10px;margin-bottom:16px;display:flex}.shuffle-complete-icon{font-size:28px}.shuffle-complete-title{font-size:18px;font-weight:700}.shuffle-summary{justify-content:center;gap:24px;margin:20px 0;display:flex}.shuffle-summary-item{flex-direction:column;align-items:center;gap:4px;display:flex}.shuffle-summary-value{font-size:28px;font-weight:700;font-family:var(--font-dm-mono),ui-monospace,monospace;line-height:1}.shuffle-summary-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);font-size:11px}.shuffle-summary-smooth .shuffle-summary-value{color:#3a3a3a}.shuffle-summary-struggled .shuffle-summary-value{color:#9a4040}.shuffle-complete-tip{background:#0000000f;border-radius:0;margin-bottom:16px;padding:12px 14px;font-size:13px;line-height:1.5}.shuffle-complete-actions{gap:10px;display:flex}.shuffle-complete-actions .btn{flex:1}.drill-mode-selector{flex-direction:column;gap:12px;display:flex}.drill-mode-header{margin-bottom:4px}.drill-mode-desc{color:var(--ink-muted);margin-top:6px;font-size:14px}.drill-mode-buttons{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.drill-mode-btn{flex-direction:column;align-items:center;gap:4px;padding:16px 12px;display:flex}.drill-mode-btn-title{font-size:15px;font-weight:600}.drill-mode-btn-desc{opacity:.7;font-size:11px}@media (max-width:640px){.shuffle-header{flex-direction:column;gap:8px}.shuffle-explain-btn{align-self:flex-start}.shuffle-rating-buttons{grid-template-columns:1fr;gap:6px}.shuffle-rating-btn{padding:14px 12px}.shuffle-summary{gap:16px}.shuffle-summary-value{font-size:24px}.shuffle-complete-actions{flex-direction:column}.drill-mode-buttons{grid-template-columns:1fr}}.competency-gates{margin-bottom:var(--space-6)}.gates-header{margin-bottom:var(--space-4)}.gates-header h3{margin-bottom:var(--space-1);color:var(--primary)}.next-diagnostic-card{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#3a3a3a;padding:var(--space-5);margin-bottom:var(--space-4);border-radius:0}.next-diagnostic-card .kicker{color:#3a3a3a;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-1)}.next-diagnostic-card h4{margin-bottom:var(--space-2);font-size:var(--font-size-lg)}.gates-list{gap:var(--space-3);flex-direction:column;display:flex}.gate-item{border:1px solid var(--border);border-radius:0;transition:all .2s;overflow:hidden}.gate-item:hover{box-shadow:var(--shadow-sm)}.gate-status-passed{border-color:var(--success);background:#34d3990d}.gate-status-failed{border-color:var(--danger);background:#f871710d}.gate-status-available{border-color:var(--primary);background:rgba(var(--primary-rgb),.05)}.gate-status-locked{border-color:var(--muted);background:#6b727e0d}.gate-header{padding:var(--space-4);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.gate-info{align-items:center;gap:var(--space-3);flex:1;display:flex}.gate-status-icon{font-size:var(--font-size-lg);text-align:center;width:24px}.gate-name{margin-bottom:var(--space-1);font-weight:600}.gate-unlock-info{font-size:var(--font-size-sm);color:var(--muted);margin:0}.gate-status-text{font-size:var(--font-size-sm);color:var(--muted);font-weight:500}.gate-expand-icon{font-family:monospace;font-size:var(--font-size-lg);color:var(--muted);margin-left:var(--space-2)}.gate-details{padding:0 var(--space-4)var(--space-4);border-top:1px solid var(--border);background:var(--bg-subtle)}.gate-description{margin-bottom:var(--space-4);color:var(--text-secondary)}.gate-requirements{margin-bottom:var(--space-4)}.gate-requirements h5{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--primary);margin-bottom:var(--space-2);font-weight:600}.gate-requirements ul{padding-left:var(--space-4);margin:0}.gate-requirements li{margin-bottom:var(--space-1);color:var(--text-secondary)}.gate-rationale{margin-bottom:var(--space-4);padding:var(--space-3);background:rgba(var(--primary-rgb),.08);border-radius:0}.gate-rationale h5{font-size:var(--font-size-sm);color:var(--primary);margin-bottom:var(--space-2);font-weight:600}.gate-rationale p{color:var(--text-secondary);margin:0;line-height:1.5}.gate-prescription{margin-bottom:var(--space-4);padding:var(--space-4);background:#f8717114;border:1px solid #f8717133;border-radius:0}.gate-prescription h5{color:var(--danger);margin-bottom:var(--space-3)}.prescription-list{gap:var(--space-2);flex-direction:column;display:flex}.prescription-header{color:var(--danger);margin:0;font-weight:600}.prescription-detail{color:var(--text-secondary);padding-left:var(--space-3);font-size:var(--font-size-sm);margin:0}.gate-actions{margin-bottom:var(--space-4)}.gate-debug{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}.gate-debug details{font-size:var(--font-size-sm)}.gate-debug summary{color:var(--muted);cursor:pointer;margin-bottom:var(--space-2);list-style:none}.gate-debug summary::-webkit-details-marker{display:none}.gate-debug pre{background:var(--bg);padding:var(--space-2);border-radius:0;font-size:11px;overflow:auto}.competency-gate-compact{margin-bottom:var(--space-3)}.gate-status{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.gate-icon{font-size:var(--font-size-lg)}.gate-name{flex:1;font-weight:500}.gate-action-link{color:var(--primary);font-size:var(--font-size-sm);font-weight:500;text-decoration:none}.gate-action-link:hover{text-decoration:underline}.gate-failure-hint{font-size:var(--font-size-sm);color:var(--danger);padding:var(--space-2);background:#f8717114;border-radius:0;margin:0;line-height:1.4}.module-gate-hint{color:var(--warning);padding:var(--space-1)var(--space-2);font-size:var(--font-size-sm);cursor:pointer;background:#fb923c1a;border:1px solid #fb923c4d;border-radius:0;font-weight:500;transition:all .2s}.module-gate-hint:hover{background:#fb923c33}.gate-title{color:var(--primary);margin-bottom:var(--space-2);font-weight:600}.no-gates{padding:var(--space-6);text-align:center;color:var(--muted)}@media (max-width:768px){.gate-header{align-items:flex-start;gap:var(--space-2);flex-direction:column}.gate-status-text{align-self:flex-start}.gate-details{padding:var(--space-3)}.next-diagnostic-card{padding:var(--space-4)}}.diagnostic-gate-result{padding:var(--space-4);background:var(--bg-subtle);border:1px solid var(--border);border-radius:0}.gate-result-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.gate-result-emoji{font-size:2rem}.gate-result-header h4{color:var(--primary);margin:0;font-weight:600}.diagnostic-gate-result p{margin-bottom:var(--space-2);line-height:1.5}.diagnostic-gate-result p:last-child{margin-bottom:0}@media (max-width:640px){.pattern-browser .filters .grid{grid-template-columns:1fr;gap:16px}.pattern-grid{gap:12px;grid-template-columns:1fr!important}.pattern-card{border-radius:0;min-height:120px;padding:12px}.pattern-card h3{font-size:16px;line-height:1.3}.pattern-card .line-clamp-2{font-size:14px;line-height:1.4}.pattern-detail-modal{border-radius:0;max-height:calc(100vh - 32px);margin:8px}.pattern-detail-modal .grid{grid-template-columns:1fr;gap:16px}.pattern-browser-compact .grid{max-height:250px}.pattern-card-compact{min-height:60px}.practice-session{border-radius:0;padding:12px}.practice-session .grid{grid-template-columns:1fr;gap:16px}.row.gap-2{gap:12px}.row .btn+.btn{margin-top:8px}input[type=checkbox],input[type=radio]{min-width:20px;min-height:20px;margin-right:8px}select,input[type=text],input[type=number]{border:2px solid var(--stroke);background:var(--panel);border-radius:0}select{background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232f1a00' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:40px}input[type=range]{appearance:none;cursor:pointer;background:0 0;height:40px}input[type=range]::-webkit-slider-track{background:var(--stroke);border-radius:0;height:6px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--ink);border:2px solid var(--panel);border-radius:0;width:24px;height:24px;margin-top:-9px;box-shadow:0 2px 4px #0000001a}input[type=range]::-moz-range-track{background:var(--stroke);border:none;border-radius:0;height:6px}input[type=range]::-moz-range-thumb{background:var(--ink);border:2px solid var(--panel);cursor:pointer;border-radius:0;width:20px;height:20px;box-shadow:0 2px 4px #0000001a}.skill-tree-container{padding:16px 8px;overflow-x:auto}.skill-node{min-width:80px;min-height:80px;padding:8px;font-size:12px}.skill-node-name{font-size:11px;line-height:1.2}.skill-progress-overlay{border-radius:0;margin:4px;padding:8px}.metronome-bpm-controls{flex-direction:column;align-items:stretch;gap:12px}.metronome-bpm-buttons{justify-content:space-between;gap:8px;display:flex}.metronome-bpm-buttons .btn{flex:1;min-height:48px;font-size:18px;font-weight:700}.metronome-tap-tempo{border-radius:0;min-height:60px;margin-top:8px;font-size:18px}.progress-chart{height:200px}.stats-grid{grid-template-columns:1fr 1fr;gap:8px}.stat-card{border-radius:0;min-height:80px;padding:12px}.stat-card-value{font-size:24px}.stat-card-label{font-size:12px}.scroll-area{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.scroll-area::-webkit-scrollbar{display:none}.scroll-area{-ms-overflow-style:none;scrollbar-width:none}}@media (prefers-contrast:high){.btn{border-width:2px}.btn:focus{outline:3px solid var(--ink);outline-offset:2px}.card{border-width:2px}}.mobile-tap-pad{background:var(--panel);border:1px solid var(--stroke);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:0;padding:16px}.tap-pad-header{text-align:center;margin-bottom:16px}.tap-pad-title{margin-bottom:4px;font-size:18px;font-weight:600}.tap-pad-pattern{color:var(--ink-muted);font-size:14px}.tap-feedback-area{flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:60px;margin-bottom:20px;display:flex}.tap-feedback{color:var(--ink);background:var(--bg);border:1px solid var(--stroke);border-radius:0;padding:8px 16px;font-size:24px;font-weight:700}.tap-history{font-family:var(--font-dm-mono),monospace;color:var(--ink-muted);background:var(--bg);border:1px solid var(--stroke);border-radius:0;align-items:center;min-height:32px;padding:8px 12px;font-size:16px;display:flex}.tap-pads-grid{aspect-ratio:1;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;gap:12px;max-width:300px;margin-bottom:16px;margin-left:auto;margin-right:auto;display:grid}.tap-pad-hihat{grid-area:1/1/auto/-1}.tap-pad-snare{grid-area:2/1}.tap-pad-kick{grid-area:2/2}.tap-pad{background:var(--panel-deep);border:2px solid var(--stroke);text-align:center;cursor:pointer;border-radius:0;flex-direction:column;justify-content:center;align-items:center;min-height:80px;font-size:14px;font-weight:600;transition:all .15s;display:flex;position:relative;overflow:hidden}.tap-pad:active,.tap-pad.tap-active{background:var(--bg-deep);border-color:var(--ink);transform:scale(.95)}.tap-pad:disabled{opacity:.5;cursor:not-allowed}.tap-pad-icon{margin-bottom:4px;font-size:24px}.tap-pad-label{margin-bottom:2px;font-size:12px;font-weight:600}.tap-pad-key{opacity:.6;font-size:10px;font-family:var(--font-dm-mono),monospace}.tap-pad-controls{justify-content:space-between;align-items:center;display:flex}.tap-count{color:var(--ink-muted);font-size:14px}.tap-pad:before{content:"";background:var(--ink);opacity:.3;border-radius:0;width:0;height:0;transition:width .3s,height .3s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tap-pad.tap-active:before{width:120px;height:120px}@media (max-width:640px){.tap-pads-grid{gap:16px;max-width:280px}.tap-pad{min-height:70px}.tap-pad-hihat{min-height:60px}}.goals-label{margin-bottom:8px;font-size:.9rem;font-weight:600;display:block}.goals-type-buttons{gap:8px;display:flex}.goals-slider{width:100%;accent-color:var(--accent,var(--ink));height:6px}.goals-slider-labels{color:var(--muted,#888);justify-content:space-between;margin-top:4px;font-size:.75rem;display:flex}.goals-presets{flex-wrap:wrap;gap:8px;display:flex}.goals-active-card{background:linear-gradient(135deg,var(--ink)0%,var(--ink-muted)100%);color:#3a3a3a}.goals-active-header{justify-content:space-between;align-items:flex-start;margin-bottom:20px;display:flex}.goals-active-type{font-size:1.1rem;font-weight:700;display:block}.goals-active-dates{opacity:.8;margin-top:4px;font-size:.85rem;display:block}.goals-active-overall{text-align:center}.goals-active-overall-value{font-size:2rem;font-weight:800}.goals-progress-bars{flex-direction:column;gap:14px;display:flex}.goals-progress-label{justify-content:space-between;margin-bottom:6px;font-size:.85rem;display:flex}.goals-complete{color:#a67c00;font-weight:700}.goals-bar-track{background:#0000001a;border-radius:0;height:8px;overflow:hidden}.goals-bar-fill{background:var(--bg);border-radius:0;height:100%;transition:width .5s}.goals-bar-complete{background:#a67c00}.goals-past-item{background:var(--panel,#ffffff0d);border-radius:0;padding:12px}.goals-past-header{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.goals-past-type{font-weight:600}.goals-past-dates{color:var(--muted,#888);font-size:.85rem}.goals-past-badge{font-size:.8rem;font-weight:600}.goals-past-targets{color:var(--muted,#888);margin-top:4px;font-size:.8rem}.insights-metrics{background:linear-gradient(135deg,var(--panel-deep)0%,var(--panel)100%);color:var(--ink);border:1px solid var(--stroke)}.insights-metric-grid{text-align:center;grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.insights-metric-value{font-size:1.8rem;font-weight:800;display:block}.insights-metric-label{opacity:.7;text-transform:uppercase;letter-spacing:.5px;font-size:.75rem;display:block}@media (max-width:480px){.insights-metric-grid{grid-template-columns:repeat(2,1fr);gap:12px}.insights-metric-value{font-size:1.4rem}.insights-dist-label{width:100px;font-size:.78rem}.insights-felt-emoji{font-size:1.4rem}.insights-felt-percent{font-size:1.1rem}.insights-hour-grid{grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}}@media (max-width:380px){.goals-type-buttons,.goals-presets{flex-direction:column}.goals-active-header{flex-direction:column;gap:8px}}.insights-ai{background:linear-gradient(135deg,var(--panel-deep)0%,var(--panel)100%);color:var(--ink);border:1px solid var(--stroke)}.insights-list{margin:12px 0 0;padding:0;list-style:none}.insights-item{border-bottom:1px solid var(--stroke);padding:10px 0;font-size:.95rem;line-height:1.5}.insights-item:last-child{border-bottom:none}.insights-chart{align-items:flex-end;gap:8px;height:120px;padding-top:12px;display:flex}.insights-bar-container{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.insights-bar-value{margin-bottom:4px;font-size:.7rem;font-weight:700}.insights-bar{background:linear-gradient(180deg,var(--ink),var(--ink-muted));border-radius:0;width:100%;max-width:40px;min-height:4px;transition:height .5s}.insights-bar-label{color:var(--muted,#888);white-space:nowrap;margin-top:6px;font-size:.6rem}.insights-day-grid{justify-content:space-around;align-items:flex-end;gap:8px;height:100px;padding-top:12px;display:flex}.insights-day-item{flex-direction:column;align-items:center;gap:4px;display:flex}.insights-day-bar{background:var(--ink);border-radius:0;width:28px;transition:all .3s}.insights-day-label{font-size:.7rem;font-weight:600}.insights-day-count{color:var(--muted,#888);font-size:.65rem}.insights-hour-grid{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:4px;margin-top:12px;display:grid}.insights-hour-cell{border-radius:0;flex-direction:column;justify-content:center;align-items:center;min-height:48px;padding:8px 4px;display:flex}.insights-hour-label{font-size:.65rem;font-weight:600}.insights-hour-count{font-size:.8rem;font-weight:700}.insights-distribution{flex-direction:column;gap:10px;margin-top:12px;display:flex}.insights-dist-row{align-items:center;gap:12px;display:flex}.insights-dist-label{flex-shrink:0;width:140px;font-size:.85rem;font-weight:500}.insights-dist-bar-track{background:var(--panel,#00000014);border-radius:0;flex:1;height:8px;overflow:hidden}.insights-dist-bar-fill{background:linear-gradient(90deg,var(--ink),var(--ink-muted));border-radius:0;height:100%;transition:width .5s}.insights-dist-percent{text-align:right;width:40px;font-size:.8rem;font-weight:700}.insights-felt-grid{text-align:center;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px;display:grid}.insights-felt-item{background:var(--panel,#00000008);border-radius:0;flex-direction:column;align-items:center;gap:4px;padding:16px 8px;display:flex}.insights-felt-emoji{font-size:1.8rem}.insights-felt-percent{font-size:1.4rem;font-weight:800}.insights-felt-label{font-size:.8rem;font-weight:600}.insights-felt-count{color:var(--muted,#888);font-size:.7rem}.insights-focus-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.insights-focus-item{background:var(--panel,#00000008);border-radius:0;justify-content:space-between;padding:8px 12px;display:flex}.insights-focus-name{font-size:.85rem}.insights-focus-count{color:var(--ink);font-size:.85rem;font-weight:700}.bottom-nav{background:var(--panel);border-top:2px solid var(--stroke);padding:6px 0;padding-bottom:max(6px,env(safe-area-inset-bottom));z-index:1000;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}@media (min-width:769px){.bottom-nav{display:none}}.bottom-nav-item{color:var(--ink-muted);font-size:10px;font-weight:600;font-family:var(--font-dm-mono),ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase;border-radius:0;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;text-decoration:none;transition:color .15s;display:flex}.bottom-nav-item.active{color:var(--ink)}.bottom-nav-icon{font-size:1.2rem}@media (max-width:768px){.shell{padding-bottom:80px}}.warmup-routine{flex-direction:column;gap:16px;display:flex}.warmup-step{background:var(--panel,#00000008);border-radius:0;gap:14px;padding:14px;transition:all .2s;display:flex}.warmup-step.warmup-step-active{background:linear-gradient(135deg,#3c3c3c1a,#5046321a);border:1px solid #3c3c3c4d}.warmup-step.warmup-step-done{opacity:.6}.warmup-step-number{background:var(--accent,var(--ink));color:#3a3a3a;border-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.85rem;font-weight:700;display:flex}.warmup-step-done .warmup-step-number{background:#a67c00}.warmup-step-content{flex:1}.warmup-step-title{margin-bottom:4px;font-weight:600}.warmup-step-desc{color:var(--muted,#888);font-size:.85rem;line-height:1.4}.warmup-step-time{color:var(--accent,var(--ink));margin-top:4px;font-size:.75rem;font-weight:600}@media (max-width:480px){.warmup-step{gap:10px;padding:10px}.warmup-step-number{width:28px;height:28px;font-size:.75rem}.warmup-step-desc{font-size:.8rem}}html.high-contrast{--bg:#000;--ink:#fff;--ink-muted:#ccc;--accent:#ff0;--panel:#111;--panel-deep:#1a1a1a;--border:#555;--stroke:#666}html.high-contrast body{color:#fff;background:#000}html.high-contrast .card{background:#111;border-color:#555}html.high-contrast .btn{color:#000;background:#ff0;border-color:#ff0}html.high-contrast .btn-ghost{color:#ff0;background:0 0;border-color:#ff0}html.high-contrast .btn:hover,html.high-contrast .btn:focus-visible{color:#000;background:#fff}html.high-contrast .btn-ghost:hover,html.high-contrast .btn-ghost:focus-visible{color:#000;background:#ff0}html.high-contrast a,html.high-contrast .kicker{color:#ff0}html.high-contrast .shell-header{border-color:#555}html.high-contrast select,html.high-contrast input,html.high-contrast textarea{color:#fff;background:#1a1a1a;border-color:#555}.skip-link{background:var(--accent,#000);color:var(--bg,#fff);z-index:10000;padding:8px 16px;font-weight:700;text-decoration:none;position:absolute;top:-100px;left:0}.skip-link:focus{top:0}:focus-visible,button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent,#3c3c3c);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-contrast:high){:root{--border:#555;--ink-muted:#666}.card,.btn{border-width:2px}}.landing-stats{grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px;display:grid}.landing-stat{background:var(--panel);border:1px solid var(--stroke);text-align:center;padding:16px 12px}.landing-stat-number{font-family:var(--font-dm-mono),monospace;margin-bottom:4px;font-size:1.8rem;font-weight:700;line-height:1}.landing-stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.78rem}@media (max-width:560px){.landing-stats{grid-template-columns:repeat(2,1fr)}}.compare-table{gap:0;font-size:.85rem;display:grid;overflow-x:auto}.compare-header,.compare-row{border-bottom:1px solid var(--stroke);grid-template-columns:1.4fr repeat(4,1fr);display:grid}.compare-header{text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:700}.compare-cell{text-align:center;padding:10px 8px}.compare-feature{text-align:left;font-weight:600}.compare-yes{color:#1a5c1a;font-weight:600}.compare-no{color:var(--ink-muted)}.compare-neutral{color:var(--ink-muted);font-style:italic}@media (max-width:560px){.compare-header,.compare-row{grid-template-columns:1.2fr repeat(4,.8fr)}.compare-cell{padding:8px 4px;font-size:.75rem}}.testimonial-card{flex-direction:column;justify-content:space-between;display:flex}.testimonial-quote{margin-bottom:14px;font-size:.95rem;font-style:italic;line-height:1.6}.testimonial-author{border-top:1px solid var(--stroke);padding-top:10px}.testimonial-name{font-size:.9rem;font-weight:700}.testimonial-role{color:var(--ink-muted);font-size:.78rem}.landing-footer{border-top:2px solid var(--stroke);margin-top:0;padding-top:28px}.landing-footer-inner{grid-template-columns:1.2fr 2fr;gap:32px;margin-bottom:24px;display:grid}.landing-footer-brand{font-family:var(--font-dm-mono),monospace;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px;font-size:1.1rem;font-weight:700}.landing-footer-desc{color:var(--ink-muted);max-width:300px;font-size:.85rem;line-height:1.6}.landing-footer-links{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.landing-footer-col{flex-direction:column;gap:6px;display:flex}.landing-footer-heading{text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;font-size:.8rem;font-weight:700}.landing-footer-col a{color:var(--ink-muted);font-size:.85rem;transition:color .15s}.landing-footer-col a:hover{color:var(--ink)}.landing-footer-bottom{border-top:1px solid var(--stroke);color:var(--ink-muted);text-align:center;padding-top:16px;padding-bottom:8px;font-size:.78rem}@media (max-width:640px){.landing-footer-inner{grid-template-columns:1fr;gap:24px}.landing-footer-links{grid-template-columns:repeat(3,1fr)}}.today-hero{margin-bottom:16px}.today-hero-greeting{color:var(--ink);text-wrap:balance;font-size:clamp(1.4rem,4vw,1.8rem);font-weight:700;line-height:1.2}.today-hero-goal{color:var(--ink-muted);text-wrap:balance;max-width:520px;margin-top:6px;font-size:15px;line-height:1.5}.today-rudiment-focus{border:3px solid var(--ink)}.today-rudiment-sticking{font-family:var(--font-dm-mono),monospace;letter-spacing:.15em;color:var(--ink);margin:8px 0;font-size:1.6rem;font-weight:700}.today-rudiment-desc{color:var(--ink-muted);text-wrap:balance;font-size:14px;line-height:1.5}.today-rudiment-tempo{font-family:var(--font-dm-mono),monospace;color:var(--ink-muted);margin-top:8px;font-size:13px}.today-rudiment-others{border-top:1px solid var(--stroke);flex-direction:column;gap:4px;margin-top:14px;padding-top:14px;display:flex}.today-rudiment-others-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;font-size:12px}.today-warmup-header{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.today-warmup-toggle{color:var(--ink-muted);font-size:12px;font-family:var(--font-dm-mono),monospace;white-space:nowrap;padding-top:4px}.today-warmup-steps{counter-reset:warmup;flex-direction:column;gap:10px;margin:14px 0 0;padding:0;list-style:none;display:flex}.today-warmup-step{counter-increment:warmup;padding-left:28px;position:relative}.today-warmup-step:before{content:counter(warmup);font-family:var(--font-dm-mono),monospace;color:var(--ink);background:var(--stroke);justify-content:center;align-items:center;width:20px;height:20px;font-size:13px;font-weight:700;display:flex;position:absolute;top:0;left:0}.today-warmup-step-name{color:var(--ink);font-size:14px;font-weight:600}.today-warmup-step-meta{color:var(--ink-muted);gap:10px;margin-top:2px;font-size:13px;display:flex}.today-warmup-step-note{font-style:italic}
