.poly-box{background:white;border:1px solid #dbe4f0;border-radius:24px;padding:28px;margin-top:24px}.poly-controls{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:22px}.poly-box label{display:flex;flex-direction:column;gap:9px;font-size:13px;font-weight:600;color:#334d7c}.poly-box select{font:inherit;padding:10px;border:1px solid #c8d8f5;border-radius:12px;background:#f4f7ff;color:#1e3a8a}.poly-box input[type=range]{width:100%;accent-color:#2563eb}.poly-actions{display:flex;align-items:center;gap:16px;margin:24px 0}.poly-actions span{font-size:12px;color:#64748b}.pads{display:grid;grid-template-columns:1fr 1fr;gap:24px}.pad-lane{min-width:0;text-align:center}.pad-lane h2{font-size:18px;color:#1e3a8a}.pad-lane h2 span{display:block;font:500 12px Poppins,sans-serif;color:#64748b;margin-top:4px}.drum-pad{width:100%;border:1px solid #cbdcff;border-radius:24px;background:linear-gradient(145deg,#edf4ff,#dce9ff);padding:24px 12px;color:#1e3a8a;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;font:inherit;margin:16px 0 24px}.drum-pad strong,.drum-pad small{display:block;margin-top:12px}.drum-pad small{font-size:12px;color:#64748b;margin-top:4px}.drum-head{display:grid;place-items:center;aspect-ratio:1;width:min(180px,100%);margin:auto;border-radius:50%;background:radial-gradient(circle at 38% 30%,#fff,#d8e8ff);border:10px solid #3b72df;box-shadow:0 10px 0 #204990,0 18px 26px #1e3a8a20,inset 0 0 0 3px #ffffff90}.drum-head span{font-size:42px;font-weight:700;color:#285ac0}.purple{background:linear-gradient(145deg,#f5f0ff,#eadeff);border-color:#e0d1f7}.purple .drum-head{border-color:#9560d7;background:radial-gradient(circle at 38% 30%,#fff,#edddff);box-shadow:0 10px 0 #603599,0 18px 26px #60359920,inset 0 0 0 3px #ffffff90}.purple .drum-head span{color:#7744b5}.drum-pad:focus-visible{outline:3px solid #1e3a8a;outline-offset:4px}.drum-pad.hit .drum-head{animation:drum-hit .16s ease-out}.poly-dots{display:flex;justify-content:center;gap:12px;min-height:20px}.poly-dots span{width:16px;height:16px;background:#dbe6fa;border-radius:50%;transition:background .07s}.poly-dots span.active{background:#2563eb;box-shadow:0 0 0 5px #2563eb20}#dots1 span.active{background:#9560d7;box-shadow:0 0 0 5px #9560d720}.cycle-track{height:5px;background:#e9eff9;border-radius:4px;position:relative;margin:0 0 28px;overflow:hidden}#playhead{position:absolute;width:14px;height:5px;background:#2563eb;left:0;opacity:0}.poly-box .listen{display:flex;flex-direction:row;justify-content:center;align-items:center;margin-top:16px;font-size:12px}.listen input{accent-color:#2563eb;width:18px;height:18px}.poly-help{border-top:1px solid #e4ebf7;margin:26px 0 0;padding-top:20px;font-size:13px;line-height:1.8;color:#64748b}@keyframes drum-hit{0%{transform:translateY(7px) scale(.96)}100%{transform:translateY(0) scale(1)}}@media(max-width:650px){.poly-box{padding:18px}.poly-controls{grid-template-columns:1fr;gap:16px}.pads{gap:14px}.drum-pad{padding:18px 8px}.drum-head{border-width:7px}.poly-actions{align-items:flex-start;flex-direction:column}.pad-lane h2{font-size:16px}}@media(prefers-reduced-motion:reduce){.drum-pad.hit .drum-head{animation:none;filter:brightness(.85)}}
.poly-modes{display:flex;gap:8px;flex-wrap:wrap}.poly-modes button{font:600 14px Poppins,sans-serif;border:1px solid #c8d8f5;background:#f4f7ff;color:#1e3a8a;border-radius:12px;padding:12px 18px;cursor:pointer}.poly-modes button[aria-pressed=true]{background:#2563eb;color:white;border-color:#2563eb}#modeHelp,.pattern-help{font-size:13px;line-height:1.8;color:#64748b;margin:16px 0 24px}.tap-feedback{min-height:24px;font-size:13px;color:#285ac0;font-weight:600;margin:14px 0}.poly-dots span{display:grid;place-items:center;width:24px;height:24px;font-size:11px;color:#334d7c}.poly-dots span.active{color:white}.drum-pad.cue{animation:pad-cue .22s ease-out}.free-play #patternControl,.free-play #tempoControl,.free-play #patternHelp,.free-play #guideActions,.free-play .cycle-track,.free-play .poly-dots,.free-play .listen,.free-play .pad-lane h2 span{display:none}.free-play .poly-controls{grid-template-columns:1fr}.free-play .poly-controls>label{max-width:260px}.free-play .pads{margin-top:24px}@keyframes pad-cue{0%{outline:5px solid #2563eb;outline-offset:3px}100%{outline:5px solid transparent;outline-offset:12px}}@media(prefers-reduced-motion:reduce){.drum-pad.cue{animation:none;outline:3px solid #2563eb}}
.tap-result{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:88px;color:#64748b;text-align:center;margin:0 auto 12px}.tap-result>span:first-child{display:grid;place-items:center;font:bold 36px Poppins,sans-serif;border-radius:50%;background:#eef4ff;width:56px;height:56px}.tap-result>span:last-child{font-size:12px;font-weight:600}.tap-result.correct{color:#15803d}.tap-result.correct>span:first-child{background:#dcfce7}.tap-result.incorrect{color:#b91c1c}.tap-result.incorrect>span:first-child{background:#fee2e2}.poly-box:has(.pads){position:relative}.free-play .tap-result{display:none}@media(min-width:850px){.tap-result{position:relative;margin-bottom:-88px;z-index:1;pointer-events:none;width:150px;top:140px}.pads{column-gap:90px}}
/* Compact controls and a dedicated feedback column. */
.poly-box{max-width:1120px;margin:24px auto 0}.poly-controls{grid-template-columns:minmax(180px,1fr) minmax(220px,1.1fr) minmax(130px,.6fr);align-items:end;gap:24px;background:#f6f8fd;border:1px solid #e4ebf7;border-radius:16px;padding:18px}.poly-controls label{min-width:0}.poly-controls label input[type=range]{height:28px;margin:0}.poly-controls select{height:42px}.poly-controls #tempoControl{display:grid;grid-template-columns:1fr auto;gap:8px}.poly-controls #tempoControl input{grid-column:1/-1}#modeHelp{margin:12px 0 20px}.pattern-help{margin:14px 0;font-size:12px}.poly-actions{margin:16px 0 20px}.pads{grid-template-columns:minmax(0,1fr) 76px minmax(0,1fr);gap:12px;align-items:start}.tap-result{position:static;top:auto;width:auto;min-height:88px;margin:145px 0 0;pointer-events:none}.tap-result>span:last-child{font-size:11px;line-height:1.5}.pad-lane h2{margin:8px 0}.drum-pad{padding:22px 12px;margin:12px 0 20px}.poly-help{font-size:12px}.free-play .pads{grid-template-columns:1fr 1fr;gap:24px}.free-play .poly-controls{padding:12px 18px}.free-play .poly-controls>label{width:100%;max-width:240px}@media(max-width:700px){.poly-controls{grid-template-columns:1fr 1fr;gap:16px;padding:14px}#patternControl{grid-column:1/-1}.pads{grid-template-columns:minmax(0,1fr) 48px minmax(0,1fr);gap:6px}.tap-result{margin-top:145px}.tap-result>span:first-child{width:40px;height:40px;font-size:28px}.tap-result>span:last-child{font-size:10px}.drum-head{width:100%;border-width:6px}.drum-head span{font-size:32px}.drum-pad{padding:16px 8px}.poly-dots{gap:5px;flex-wrap:wrap}.poly-dots span{width:20px;height:20px}.pad-lane h2{font-size:14px}.poly-modes button{padding:10px 14px;font-size:12px}.poly-actions span{line-height:1.6}.free-play .poly-controls{grid-template-columns:1fr}}@media(max-width:420px){.pads{column-gap:4px}.poly-box{padding:14px}.tap-result{margin-top:130px}.pad-lane h2 span{font-size:10px}.drum-pad strong{font-size:12px}.drum-pad small{font-size:10px}.poly-controls{grid-template-columns:1fr}#patternControl{grid-column:auto}}
.drum-pad.tap-good{outline:4px solid #22a35b;outline-offset:3px}.drum-pad.tap-bad{outline:4px solid #dc4545;outline-offset:3px}.drum-pad.tap-good.cue,.drum-pad.tap-bad.cue{animation:none}
.poly-box .poly-metronome{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:13px;margin:16px 0}.poly-metronome input{width:18px;height:18px;accent-color:#2563eb}.poly-metronome span{font-size:11px;color:#64748b;font-weight:400}.free-play #metronomeControl{display:none}@media(max-width:420px){.poly-metronome span{display:none}}

.drum-pad.tap-good{border-color:#22a35b;background:linear-gradient(145deg,#effbf2,#ddf5e5)}.drum-pad.tap-bad{border-color:#dc4545;background:linear-gradient(145deg,#fff2f2,#ffe2e2)}.drum-pad.tap-waiting{outline:4px solid #e3b326;outline-offset:3px;border-color:#e3b326;background:linear-gradient(145deg,#fffced,#fff2c7)}.drum-pad.tap-waiting.cue{animation:none}
.poly-dots span.played{background:#dcfce7;color:#15803d;box-shadow:0 0 0 3px #22a35b30}.poly-dots span.missed,#dots1 span.missed{background:#fff0b8;color:#84610a;box-shadow:0 0 0 3px #e3b32630}
.poly-dots span.mistimed,#dots1 span.mistimed{background:#fee2e2;color:#b91c1c;box-shadow:0 0 0 3px #dc454530}
#polyBoard.free-play #tempoControl,#polyBoard.free-play #patternControl,#polyBoard.free-play #metronomeControl,#polyBoard.free-play #guideActions,#polyBoard.free-play #patternHelp,#polyBoard.free-play .poly-help{display:none}#polyBoard.free-play .poly-controls{display:block}#polyBoard.free-play .poly-controls>label{max-width:none;display:grid;grid-template-columns:80px minmax(0,1fr);align-items:center}#polyBoard.free-play .poly-controls input{width:100%}
#polyBoard.free-play #metronomeControl{display:flex}#polyBoard.free-play:has(#metronome:checked) #tempoControl{display:grid;max-width:none;grid-template-columns:1fr auto}#polyBoard.free-play:has(#metronome:checked) .poly-controls{display:grid;grid-template-columns:1fr 1fr;gap:24px}#polyBoard.free-play:has(#metronome:checked) .poly-controls>label{display:grid;grid-template-columns:1fr auto}#polyBoard.free-play:has(#metronome:checked) .poly-controls>label input{grid-column:1/-1}@media(max-width:550px){#polyBoard.free-play:has(#metronome:checked) .poly-controls{grid-template-columns:1fr}}
.beat-selectors{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:end}.beat-selectors>span{padding-bottom:10px;color:#64748b;font-weight:700}.beat-selectors label{min-width:0}.beat-selectors select{width:100%}
#dots0 span.played,#dots1 span.played{background:#dcfce7;color:#15803d;box-shadow:0 0 0 3px #22a35b30}.poly-box button:focus-visible,.poly-box select:focus-visible,.poly-box input:focus-visible{outline:3px solid #1e3a8a;outline-offset:4px}.poly-controls select{min-width:44px}.poly-dots{min-height:24px}.tap-feedback{line-height:1.5;min-height:40px;display:flex;align-items:center;justify-content:center}.poly-box .button{min-height:44px}.poly-box .listen{min-height:44px}.poly-metronome{min-height:44px}
