.player{--bg:#0b1014;--panel:#0c1218b8;--panel-2:#121a22;--line:#e8f4f81f;--text:#e8f4f8;--muted:#e8f4f89e;--mint:#3dffe0;--coral:#ff6b5a;--gold:#f0c65a;--glow-mint:0 0 14px #3dffe066;--glow-coral:0 0 14px #ff6b5a66;--radius:14px;min-height:100%;color:var(--text);background:radial-gradient(1000px 500px at 50% -20%, #3dffe00d, transparent 60%), var(--bg);flex-direction:column;gap:14px;padding:18px;font-family:Outfit,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45;display:flex;position:relative}.player *{box-sizing:border-box}.player button{font:inherit}.player-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:6px 2px 12px;display:flex}.title{letter-spacing:.02em;color:var(--text);margin:0;font-family:Syne,system-ui,sans-serif;font-size:22px;font-weight:700}.meta{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:4px 0 0;font-size:12px}.phase{border:1px solid var(--line);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);background:var(--panel);border-radius:999px;flex:none;padding:4px 10px;font-size:11px}.phase[data-phase=countin]{color:var(--gold);border-color:#f0c65a66;box-shadow:0 0 10px #f0c65a26}.phase[data-phase=playing]{color:var(--mint);border-color:#3dffe066;box-shadow:0 0 10px #3dffe026}.phase[data-phase=done]{color:var(--coral);border-color:#ff6b5a66}.camera{z-index:0;pointer-events:none;background:var(--bg);position:fixed;inset:0;overflow:hidden}.camera-video{object-fit:contain;filter:saturate(1.2)brightness(.92);width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.camera-scrim{background:radial-gradient(120% 90% at 50% 115%,#3dffe012,#0000 55%),linear-gradient(#0b1014b8 0%,#0b101447 24%,#0b101433 55%,#0b1014cc 100%);position:absolute;inset:0}.camera-canvas{width:100%;height:100%;position:absolute;inset:0}.player.has-camera{background:var(--bg)}.player.has-camera .player-header,.player.has-camera .stage,.player.has-camera .screen{z-index:1;position:relative}.player.has-camera .player-header{border-bottom-color:var(--line)}.player.has-camera .screen,.player.has-camera .feedback,.player.has-camera .chart,.player.has-camera .playbar{border:1px solid var(--border-strong,#e8f4f829);background:var(--panel);-webkit-backdrop-filter:blur(14px)saturate(1.3)}.player.has-camera .chart{border-radius:var(--radius);padding:12px}.player.has-camera .playbar{border-radius:var(--radius);padding:10px 14px}.stage{grid-template-columns:minmax(0,1fr) minmax(300px,380px);grid-template-areas:"feedback rail";align-items:start;gap:14px;display:grid;position:relative}.stage .feedback{grid-area:feedback}.rail{flex-direction:column;grid-area:rail;gap:14px;min-height:0;max-height:calc(100vh - 220px);display:flex}.rail .chart{flex:1;min-height:0;max-height:none}.guided-stage .chart{grid-area:chart;max-height:calc(100vh - 240px)}.guided-stage .playbar{grid-area:playbar}@media (width<=860px){.stage{grid-template-columns:1fr;grid-template-areas:"feedback""rail"}.guided-stage{grid-template-areas:"guide""chart""playbar"}.guided-stage .chart{max-height:44vh}.rail{max-height:none}.rail .chart{max-height:44vh}}.player{--deg-1:#3dffe0;--deg-2:#ff6b5a;--deg-3:#f0c65a;--deg-4:#78d2ff;--deg-5:#ff9646;--deg-6:#ff5a8c;--deg-7:#a0c8ff}.guided-stage{grid-template-areas:"guide chart""playbar chart"}.stage .guide{grid-area:guide}.player.has-camera .guide{border:1px solid var(--border-strong,#e8f4f829);background:var(--panel);-webkit-backdrop-filter:blur(14px)saturate(1.3)}.guide{border-radius:var(--radius);flex-direction:column;gap:14px;padding:18px;transition:border-color .2s,box-shadow .2s;display:flex}.guide.complete{border-color:#f0c65abf;box-shadow:0 0 22px #f0c65a40}.guide-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.guide-chord{color:var(--text);font-family:Syne,system-ui,sans-serif;font-size:30px;font-weight:700}.guide-pos{letter-spacing:.08em;color:var(--muted);white-space:nowrap;font-size:11px}.guide-hands{grid-template-columns:1fr 1fr;gap:12px;display:grid}.guide-hand{text-align:center}.guide-hand .hand-shape{width:100%;max-width:132px;height:auto;color:var(--muted)}.hand-caption{color:var(--muted);margin:8px 0 0;font-size:11.5px}.hand-caption strong{color:var(--text)}.guide .feedback{background:#00000040;padding:10px}.guide-hint{color:var(--gold);text-align:center;margin:0;font-size:12px}.tilt-gauge{align-items:center;gap:7px;margin:7px 0 2px;display:flex}.tilt-word{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);text-align:center;min-width:34px;font-size:.62rem}.tilt-track{background:#e8f4f814;border-radius:999px;flex:1;height:8px;position:relative;overflow:hidden}.tilt-track .half{width:50%;position:absolute;top:0;bottom:0}.tilt-track .half.l{left:0}.tilt-track .half.r{right:0}.tilt-track .half.want{background:#f0c65a38}.tilt-deadzone{background:#e8f4f81a;width:12%;position:absolute;top:0;bottom:0;left:44%}.tilt-needle{background:var(--coral,#ff6b5a);border-radius:2px;width:3px;height:10px;transition:left 50ms linear;position:absolute;top:-1px;transform:translate(-50%)}.tilt-needle.good{background:var(--mint);box-shadow:0 0 8px #3dffe0b3}.thumb-hint{color:var(--muted);align-items:center;gap:8px;font-size:.78rem;display:inline-flex}p.thumb-hint{justify-content:center;margin:12px 0 0}.thumb-hint.active{color:var(--gold)}.thumb-meter{background:#e8f4f81f;border-radius:999px;width:56px;height:4px;display:inline-block;overflow:hidden}.thumb-meter i{background:var(--gold);height:100%;transition:width 60ms linear;display:block}.thumb-debug{text-align:center;letter-spacing:.02em;color:var(--muted);opacity:.85;white-space:nowrap;margin:10px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem}.start-btn.timed-offer{background:var(--gold);border-color:var(--gold);color:#241a05}.guide-actions{justify-content:flex-end;display:flex}.guide-skip{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:6px 0;font-size:11px;transition:color .15s}.guide-skip:hover{color:var(--mint)}.section-pills{flex-wrap:wrap;gap:6px;margin-bottom:4px;display:flex}.section-pill{border:1px solid var(--line);color:var(--muted);letter-spacing:.05em;cursor:pointer;background:0 0;border-radius:999px;padding:4px 10px;font-size:11px;transition:color .15s,border-color .15s,background .15s}.section-pill:hover{color:var(--text)}.section-pill.active{color:var(--mint);background:#3dffe01a;border-color:#3dffe0b3}.section-pill.done{color:var(--mint);border-color:#3dffe059}.row.skipped{opacity:.4}.row.done{opacity:.75}.flow-toggle{margin-bottom:10px}.screen{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg, var(--panel-2), var(--panel));width:100%;max-width:560px;margin:26px auto;padding:28px;box-shadow:0 18px 50px #00000073}.screen h2{letter-spacing:.01em;margin:0 0 6px;font-size:20px}.lede{color:var(--muted);margin:0 0 20px;font-size:13px}.mode-toggle{border:1px solid var(--line);background:#00000040;border-radius:10px;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:16px;padding:5px;display:grid}.mode-toggle button{color:var(--muted);cursor:pointer;letter-spacing:.08em;text-transform:uppercase;background:0 0;border:0;border-radius:7px;padding:8px 10px;font-size:12px;transition:background .15s,color .15s,box-shadow .15s}.mode-toggle button.on{color:#0b1014;background:var(--mint);box-shadow:var(--glow-mint)}.status{color:var(--muted);margin:0 0 16px;font-size:12px}.status.no-camera,.status.error{color:var(--coral)}.status.listen{color:var(--gold)}.start-btn{letter-spacing:.1em;text-transform:uppercase;color:#0b1014;background:var(--mint);cursor:pointer;border:0;border-radius:10px;width:100%;padding:13px 18px;font-size:14px;font-weight:700;transition:transform .12s,box-shadow .15s,opacity .15s;box-shadow:0 0 22px #3dffe04d}.start-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 0 30px #3dffe073}.start-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.hint{text-align:center;color:var(--muted);margin:14px 0 0;font-size:11px}kbd{border:1px solid var(--line);background:var(--panel-2);color:var(--text);border-bottom-width:2px;border-radius:5px;padding:1px 6px;font-size:10px}.empty{color:var(--muted);text-align:center;padding:40px 0}.feedback{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg, var(--panel-2), var(--panel));align-items:stretch;gap:14px;padding:12px 14px;display:flex}.chips{flex:1;grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.chip{border:1px solid var(--line);background:#00000040;border-radius:9px;flex-direction:column;align-items:center;gap:3px;padding:8px 6px;transition:border-color .15s,box-shadow .15s,opacity .15s;display:flex}.chip-label{letter-spacing:.16em;color:var(--muted);font-size:9px}.chip-target{font-size:13px;font-weight:700}.chip.gray{opacity:.45}.chip.ok{border-color:#3dffe0b3;box-shadow:0 0 12px #3dffe040}.chip.ok .chip-target{color:var(--mint)}.chip.no{border-color:#ff6b5ab3;box-shadow:0 0 12px #ff6b5a33}.chip.no .chip-target{color:var(--coral)}.volume{border:1px solid var(--line);background:#0000004d;border-radius:7px;flex:none;width:20px;position:relative;overflow:hidden}.volume-fill{background:var(--mint);transition:height .18s;position:absolute;bottom:0;left:0;right:0;box-shadow:0 0 10px #3dffe066}.chart{scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex-direction:column;gap:16px;max-height:52vh;padding:4px 4px 10px;display:flex;overflow-y:auto}.chart::-webkit-scrollbar{width:8px}.chart::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.bar-label{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:10px}.bar-events{flex-direction:column;gap:6px;display:flex}.row{border:1px solid var(--line);background:linear-gradient(#ffffff05,#0000002e);border-radius:10px;grid-template-columns:3.4em 1fr 1.4em 1fr 3.2em 2em 1em;align-items:center;gap:8px;padding:9px 12px;font-size:13px;transition:opacity .2s,border-color .2s,box-shadow .2s,transform .2s;display:grid}.row.past,.row.future{opacity:.42}.row.active{opacity:1;background:#3dffe012;border-color:#3dffe0b3;transform:scale(1.012);box-shadow:0 0 18px #3dffe038,inset 0 0 18px #3dffe00d}.row .beat{color:var(--muted);font-size:11px}.row.active .beat{color:var(--mint)}.row .chord{letter-spacing:.02em;font-weight:700}.row .deg{text-align:center;color:var(--mint);font-size:16px;font-weight:700}.row .deg-1{color:#3dffe0}.row .deg-2{color:#ff6b5a}.row .deg-3{color:#f0c65a}.row .deg-4{color:#78d2ff}.row .deg-5{color:#ff9646}.row .deg-6{color:#ff5a8c}.row .deg-7{color:#a0c8ff}.row .world{text-align:center;text-transform:uppercase;letter-spacing:.1em;border-radius:999px;padding:2px 6px;font-size:10px}.row .world.major{color:var(--mint);background:#3dffe01a;border:1px solid #3dffe052}.glass{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);background:#0c1218b8}.free-hud{z-index:30;border-radius:14px;flex-direction:column;gap:4px;min-width:200px;padding:14px 20px;display:flex;position:fixed;top:88px;left:24px}.free-chord{font-family:var(--display);font-size:2.4rem;font-weight:700;line-height:1.1}.free-quality{color:var(--muted);font-size:.85rem}.free-meters{flex-direction:column;gap:6px;margin-top:8px;display:flex}.free-meters label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);align-items:center;gap:8px;font-size:.72rem;display:flex}.free-meter{background:#e8f4f81f;border-radius:999px;flex:1;height:4px;position:relative;overflow:hidden}.free-meter i{background:var(--mint);height:100%;transition:width 60ms linear;display:block}.free-meter.tone i{background:var(--coral,#ff6b5a);border-radius:2px;width:3px;height:8px;transition:left 60ms linear;position:absolute;top:-2px;transform:translate(-50%)}.free-scale{z-index:30;border-radius:14px;gap:6px;padding:10px 12px;display:flex;position:fixed;bottom:24px;left:24px}.free-deg{min-width:44px;color:var(--muted);border:1px solid #0000;border-radius:9px;flex-direction:column;align-items:center;gap:1px;padding:6px 8px;font-size:.78rem;display:flex}.free-deg b{letter-spacing:.06em;font-size:.72rem}.free-deg.active{color:inherit;background:#e8f4f81a;border-color:currentColor}.playbar.free-playbar{z-index:30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:0;border:1px solid var(--line);background:#0c1218b8;border-radius:14px;padding:10px 14px;position:fixed;bottom:24px;right:24px}.player.freeform{min-height:100vh}.row .world.minor{color:var(--coral);background:#ff6b5a1a;border:1px solid #ff6b5a52}.row .qual{color:var(--muted);text-align:right;font-size:11px}.row.active .qual{color:var(--text)}.row .oct{text-align:center;color:var(--gold);font-size:12px;font-weight:700}.dot{border:1px solid var(--line);border-radius:50%;width:8px;height:8px}.dot.hit{background:var(--mint);border-color:var(--mint);box-shadow:0 0 8px #3dffe099}.dot.miss{background:var(--coral);border-color:var(--coral);box-shadow:0 0 8px #ff6b5a80}.playbar{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 4px 0;font-size:.82rem;display:flex;position:relative}.playbar .stats{white-space:nowrap;color:var(--muted)}.timed-hands{z-index:30;pointer-events:none;align-items:flex-end;gap:14px;display:flex;position:fixed;bottom:24px;left:24px}.timed-group{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);text-align:center;background:#0c1218b8;border-radius:14px;padding:8px 12px 10px}.timed-group.next{transform-origin:0 100%;opacity:.75;transform:scale(.78)}.timed-label{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:.66rem;display:block}.timed-pair{gap:8px;display:flex}.timed-pair .hand-shape{width:72px;height:auto;color:var(--ice)}.voice-toggle{border:1px solid var(--line);border-radius:999px;display:flex;overflow:hidden}.voice-toggle button{color:var(--muted);font:inherit;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:6px 12px;font-size:.72rem;transition:color .15s,background .15s}.voice-toggle button.on{background:var(--mint);color:#0b1014}.sound-settings{margin-left:auto;position:relative}.sound-btn{border:1px solid var(--line);color:var(--muted);font:inherit;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:#0c121899;border-radius:999px;padding:6px 14px;font-size:.78rem;transition:color .15s,border-color .15s}.sound-btn:hover,.sound-btn.open{color:var(--mint);border-color:var(--mint)}.sound-pop{z-index:20;border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);background:#0c1218eb;border-radius:12px;flex-direction:column;gap:10px;min-width:240px;padding:12px 14px;display:flex;position:absolute;bottom:calc(100% + 10px);right:0}.sound-row{color:var(--muted);align-items:center;gap:10px;font-size:.8rem;display:flex}.sound-row>span:first-child{letter-spacing:.08em;text-transform:uppercase;flex:0 0 82px;font-size:.68rem}.sound-row select{background:var(--panel);color:var(--ice);border:1px solid var(--line);font:inherit;border-radius:8px;flex:1;padding:4px 8px}.sound-row input[type=range]{accent-color:var(--mint);flex:1}.sound-val{text-align:right;min-width:38px;color:var(--ice)}.stop-btn{color:var(--coral);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:#ff6b5a1a;border:1px solid #ff6b5a80;border-radius:9px;padding:8px 16px;font-size:12px;transition:background .15s,box-shadow .15s}.stop-btn:hover{background:#ff6b5a33;box-shadow:0 0 12px #ff6b5a40}.position{color:var(--mint);letter-spacing:.08em;font-size:12px}.stats{color:var(--muted);margin-left:auto;font-size:12px}.stats-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0 20px;display:grid}.stat{border:1px solid var(--line);background:#0003;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:16px 8px;display:flex}.stat-value{color:var(--mint);font-family:Syne,system-ui,sans-serif;font-size:26px;font-weight:700}.stat-label{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10px}.dim-stats{flex-direction:column;gap:10px;margin-bottom:22px;display:flex}.dim{grid-template-columns:5em 1fr 3.2em;align-items:center;gap:10px;display:grid}.dim-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11px}.dim-track{background:#ffffff0d;border-radius:999px;height:8px;overflow:hidden}.dim-fill{background:var(--mint);border-radius:999px;height:100%;transition:width .4s}.dim-count{text-align:right;color:var(--muted);font-size:11px}.done-actions{flex-direction:column;gap:12px;display:flex}.done-actions .start-btn{width:auto}.back{text-align:center;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:12px;text-decoration:none;transition:color .15s,border-color .15s}button.back{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:10px;padding:11px 16px}button.back:hover{border-color:#3dffe066}.back:hover{color:var(--mint)}@media (width<=560px){.player{padding:12px}.title{font-size:18px}.row{grid-template-columns:2.8em 1fr 1.3em 1fr 2.6em 1.6em .8em;font-size:12px}.chips{grid-template-columns:1fr 1fr}}.lab-panel{z-index:10;-webkit-backdrop-filter:blur(14px);background:#0c1218b8;border:1px solid #e8f4f81f;border-radius:16px;width:min(400px,100vw - 48px);padding:20px 22px;position:fixed;top:84px;left:24px}.lab-panel h1{margin:0 0 4px;font-size:1.25rem}.lab-status{color:#e8f4f89e;margin:0 0 12px;font-size:.82rem}.lab-steps{color:#e8f4f8cc;margin:0 0 16px;padding-left:18px;font-size:.84rem;line-height:1.55}.lab-arm{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.lab-btn{color:#e8f4f8;font:inherit;cursor:pointer;background:#e8f4f80f;border:1px solid #e8f4f829;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;font-size:.88rem;transition:border-color .15s,background .15s;display:inline-flex}.lab-btn:hover:not(:disabled){border-color:#3dffe080}.lab-btn:disabled{opacity:.4;cursor:default}.lab-btn kbd{color:#e8f4f899;border:1px solid #e8f4f833;border-radius:6px;padding:2px 7px;font-family:inherit;font-size:.72rem}.lab-btn-up.armed,.lab-btn-down.armed{border-color:#f0c65a;animation:1.2s ease-in-out infinite lab-pulse}.lab-btn-up.armed{color:#3dffe0;background:#3dffe01a}.lab-btn-down.armed{color:#ff6b5a;background:#ff6b5a1a}@keyframes lab-pulse{0%,to{box-shadow:0 0 #f0c65a59}50%{box-shadow:0 0 0 6px #f0c65a00}}.lab-counts{font-variant-numeric:tabular-nums;color:#e8f4f8cc;margin:0 0 12px;font-size:.84rem}.lab-actions{gap:8px;display:flex}.lab-btn-save{color:#3dffe0;border-color:#3dffe073}.lab-live{z-index:10;-webkit-backdrop-filter:blur(14px);color:#e8f4f8bf;white-space:pre;background:#0c1218b8;border:1px solid #e8f4f81f;border-radius:10px;padding:10px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;line-height:1.6;position:fixed;bottom:24px;left:24px}:root{--bg:#0b1014;--bg-soft:#0e151b;--card:#121a22;--border:#e8f4f81f;--border-strong:#e8f4f847;--text:#e8f4f8;--muted:#e8f4f89e;--mint:#3dffe0;--coral:#ff6b5a;--gold:#f0c65a;--radius:14px;--shadow:0 18px 50px #00000073;--glow-mint:0 0 22px #3dffe04d;--glow-coral:0 0 22px #ff6b5a4d;--font-sans:"Outfit", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display:"Syne", system-ui, sans-serif;--font-mono:"SFMono-Regular", ui-monospace, "JetBrains Mono", Menlo, Monaco, "Cascadia Mono", monospace;--ease-out:cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:radial-gradient(900px 500px at 50% -20%, #3dffe00d, transparent 60%), var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;line-height:1.55;display:flex}::selection{background:#3dffe040}a{color:var(--mint);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .5em;line-height:1.2}main{flex:1}.container{width:min(1100px,100%);margin-inline:auto;padding-inline:clamp(1rem,4vw,2rem)}.site-header{z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#0b1014b8;position:sticky;top:0}.site-header .container{align-items:center;gap:1rem;padding-block:.85rem;display:flex}.brand{font-family:var(--font-display);letter-spacing:.02em;color:var(--mint);align-items:center;gap:.6rem;font-weight:800;display:inline-flex}.brand img{border-radius:8px;width:2rem;height:2rem}.brand:hover{opacity:.9;text-decoration:none}.site-footer{border-top:1px solid var(--border);background:var(--bg-soft);margin-top:4rem}.site-footer .container{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding-block:1.4rem;display:flex}.muted{color:var(--muted)}.feedback-btn{padding:.4rem .9rem;font-size:.85rem}.card{background:linear-gradient(180deg, #ffffff05, transparent), var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.4rem;transition:border-color .2s,transform .2s,box-shadow .2s}a.card:hover{border-color:var(--border-strong);box-shadow:var(--shadow);text-decoration:none;transform:translateY(-2px)}.grid{gap:1rem;display:grid}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}@media (width<=760px){.grid-3,.grid-2,.grid-auto{grid-template-columns:1fr}}.tools{margin-top:4rem}.action-tile{border-radius:var(--radius);color:var(--text);background:linear-gradient(#3dffe017,#3dffe005);border:1px solid #3dffe059;align-items:center;gap:1rem;padding:1.25rem 1.4rem;transition:border-color .2s,transform .2s,box-shadow .2s;display:flex}.action-tile:hover{border-color:var(--mint);box-shadow:var(--glow-mint);text-decoration:none;transform:translateY(-2px)}.action-glyph{width:2.5rem;height:2.5rem;color:var(--mint);background:#3dffe01a;border:1px solid #3dffe059;border-radius:10px;flex:none;place-items:center;font-size:1.3rem;line-height:1;display:grid}.action-body{flex-direction:column;gap:.15rem;min-width:0;display:flex}.action-title{font-family:var(--font-display);letter-spacing:-.01em;font-size:1.05rem;font-weight:700}.action-sub{color:var(--muted);font-size:.88rem}.action-arrow{color:var(--mint);transition:transform .2s var(--ease-out);margin-left:auto;font-size:1.25rem}.action-tile:hover .action-arrow{transform:translate(4px)}.custom-card{padding:0;position:relative}.custom-card .custom-link{height:100%;color:inherit;flex-direction:column;gap:.4rem;padding:1.4rem;text-decoration:none;display:flex}.custom-del{border:1px solid var(--line);width:1.7rem;height:1.7rem;color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;font-size:1rem;line-height:1;position:absolute;top:.6rem;right:.6rem}.custom-del:hover{color:var(--coral,#ff6b5a);border-color:var(--coral,#ff6b5a)}.page-title{margin:0 0 .3rem}.page-lede{margin:0 0 1.5rem}.import-text{box-sizing:border-box;width:100%;color:var(--text);border:1px solid var(--line);font-family:var(--font-mono);resize:vertical;background:#0c1218;border-radius:12px;padding:1rem;font-size:.9rem;line-height:1.5}.import-text:focus{border-color:var(--mint);outline:none}.import-help{color:var(--muted);margin:.8rem 0;font-size:.88rem}.import-help summary{cursor:pointer;color:var(--mint)}.import-help code{background:#e8f4f814;border-radius:5px;padding:.1rem .35rem}.import-errors{color:var(--coral,#ff6b5a);border:1px solid #ff6b5a80;border-radius:10px;margin:.8rem 0;padding:.8rem 1rem;font-size:.88rem;list-style:none}.import-errors li+li{margin-top:.3rem}.import-preview{border:1px solid #3dffe059;border-radius:12px;margin-top:1rem;padding:1rem 1.2rem}.import-preview-title{margin:0 0 .2rem;font-size:1.15rem;font-weight:600}.import-chords{font-family:var(--font-mono);font-size:.82rem}.import-preview .start-btn{margin-top:.6rem}.key-picker{flex-wrap:wrap;justify-content:center;gap:.45rem;margin:.4rem 0 1.2rem;display:flex}.key-picker button{border:1px solid var(--line);min-width:2.6rem;color:var(--text);cursor:pointer;background:0 0;border-radius:999px;padding:.45rem .6rem;font-size:.9rem}.key-picker button.on{background:var(--mint);border-color:var(--mint);color:#08231d;font-weight:600}.tag{font-family:var(--font-mono);letter-spacing:.04em;border:1px solid var(--border-strong);color:var(--text);white-space:nowrap;background:#ffffff0a;border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .55rem;font-size:.78rem;display:inline-flex}.tag .dot{color:var(--mint)}.btn{color:var(--text);cursor:pointer;transition:box-shadow .2s var(--ease-out), transform .2s var(--ease-out);background:#3dffe01a;border:1px solid #3dffe059;border-radius:999px;align-items:center;gap:.5rem;padding:.55rem 1.1rem;font-weight:600;display:inline-flex}.btn:hover{box-shadow:var(--glow-mint);text-decoration:none;transform:translateY(-1px)}.hero{text-align:center;padding-block:clamp(2.5rem,8vh,4.5rem) 1rem}.hero .eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;color:var(--mint);margin-bottom:.75rem;font-size:.78rem}.hero h1{color:var(--text);margin-bottom:.4rem;font-size:clamp(2.2rem,6vw,3.6rem);font-weight:800}.hero p{color:var(--muted);margin-inline:auto;max-width:34rem;margin-bottom:0;font-size:1.12rem}.hero-links{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:1.4rem;display:flex}.steps{margin-top:4rem}.steps h2{text-transform:uppercase;letter-spacing:.12em;margin-bottom:1rem;font-size:1.1rem}.step-num{font-family:var(--font-mono);color:var(--mint);letter-spacing:.1em;font-size:.78rem}.step:nth-child(2) .step-num{color:var(--coral)}.step:nth-child(3) .step-num{color:var(--gold)}.step h3{margin-top:.4rem;font-size:1.05rem}.step p{margin-bottom:0}.songbook{margin-top:4.5rem}.songbook-head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.2rem;display:flex}.songbook-head h2{margin:0}.song-count{font-family:var(--font-mono);color:var(--muted);font-size:.85rem}.song-card{flex-direction:column;gap:.4rem;display:flex}a.song-card:hover,.custom-card:hover{box-shadow:var(--glow-mint);border-color:#3dffe073;transform:translateY(-2px)}.song-card-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.key-chip{font-family:var(--font-mono);color:var(--mint);white-space:nowrap;background:#3dffe014;border:1px solid #3dffe059;border-radius:999px;flex:none;padding:.12rem .6rem;font-size:.8rem}.song-card .song-title{margin:0;font-size:1.15rem;font-weight:700}.song-card .song-artist{color:var(--muted);margin:0}.song-meta-line{font-family:var(--font-mono);color:var(--muted);margin:auto 0 0;padding-top:.75rem;font-size:.8rem}.song-header{padding-block:.75rem 0}.song-header .back{font-family:var(--font-mono);font-size:.85rem}.song-header h1{margin-bottom:.2rem;font-size:clamp(1.8rem,4vw,2.6rem)}.song-artist-lg{color:var(--muted);margin-bottom:.9rem;font-size:1.1rem}.song-chips{flex-wrap:wrap;gap:.5rem;display:flex}.song-stage{margin-top:.75rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.empty{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted);padding:3rem 1.5rem}.empty .glyph{color:var(--mint);margin-bottom:.5rem;font-size:2rem;display:block}.content{max-width:46rem;padding-block:clamp(1.5rem,5vh,3rem) 1rem}.content h1{margin-bottom:.3rem;font-size:clamp(1.9rem,4.5vw,2.8rem)}.content .lede{color:var(--muted);margin:0 0 2rem;font-size:1.1rem}.content h2{border-bottom:1px solid var(--border);margin-top:2.4rem;padding-bottom:.4rem;font-size:1.35rem}.content h3{margin-top:1.4rem;font-size:1.05rem}.content p,.content li{color:var(--text)}.content ul,.content ol{padding-left:1.2rem}.content li+li{margin-top:.35rem}.content code{font-family:var(--font-mono);background:#e8f4f814;border-radius:5px;padding:.1rem .35rem;font-size:.85em}.content .card{margin-top:1.4rem}.content .cta{margin-top:2.5rem}.gesture-table{border-collapse:collapse;width:100%;margin-top:1rem;font-size:.95rem}.gesture-table th,.gesture-table td{text-align:left;border-bottom:1px solid var(--border);padding:.55rem .75rem}.gesture-table th{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--mint);font-size:.78rem}.faq details{border:1px solid var(--border);background:var(--card);border-radius:10px;margin-top:.8rem;padding:.9rem 1.1rem}.faq summary{cursor:pointer;font-weight:600}.faq details p{margin-bottom:0}.chord-list{gap:.5rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.chord-list li{border:1px solid var(--border);background:var(--card);border-radius:10px;align-items:baseline;gap:.75rem;padding:.6rem .9rem;display:flex}.chord-list strong{font-family:var(--font-mono);min-width:3.5rem}.song-chords{z-index:2;margin-top:2.5rem;position:relative}.footer-links{gap:1rem;display:flex}.song-header,.song-stage{position:relative}.song-header{z-index:2}.song-stage{z-index:1}.site-footer{z-index:1;position:relative}
