.poly-stage{--voice-a: var(--color-accent);--voice-b: var(--color-warn);gap:16px;padding-top:var(--space-3);padding-bottom:var(--space-3)}.poly-voice--a{--voice: var(--color-accent)}.poly-voice--b{--voice: var(--color-warn)}.poly-ratio{display:flex;align-items:center;justify-content:center;gap:14px}.poly-num{display:flex;align-items:center;gap:8px}.poly-num__val{min-width:1.3em;text-align:center;font-family:var(--font-heading);font-weight:700;font-size:clamp(2.6rem,9vw,3.4rem);line-height:1;font-variant-numeric:tabular-nums}.poly-num--a .poly-num__val{color:var(--voice-a)}.poly-num--b .poly-num__val{color:var(--voice-b)}:root[data-theme=light] .poly-num--a .poly-num__val{color:var(--color-accent-ink)}.poly-num__val.is-bump{animation:poly-bump .3s var(--ease)}@keyframes poly-bump{40%{transform:scale(1.18)}}.poly-num .icon-btn[disabled]{opacity:.3;pointer-events:none}.poly-ratio__sep{font-size:var(--fs-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--color-gray)}.poly-presets{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;width:100%;max-width:480px}.poly-presets .chip{min-width:52px;font-variant-numeric:tabular-nums}.poly-wheel{width:100%;max-width:290px;aspect-ratio:1;padding:0;border:0;background:none;border-radius:50%;cursor:pointer;touch-action:manipulation;transition:transform .15s ease}.poly-wheel:active{transform:scale(.98)}.poly-wheel svg{width:100%;height:100%;overflow:visible}.poly-ring{fill:none;stroke:var(--color-hairline);stroke-width:2}.poly-ring--a{stroke:color-mix(in srgb,var(--voice-a) 32%,transparent)}.poly-ring--b{stroke:color-mix(in srgb,var(--voice-b) 32%,transparent);stroke-dasharray:5 5}.poly-dot{transition:fill .25s ease,opacity .25s ease}.poly-dot--a{fill:color-mix(in srgb,var(--voice-a) 18%,var(--color-surface));stroke:var(--voice-a);stroke-width:2}.poly-dot--b{fill:color-mix(in srgb,var(--voice-b) 18%,var(--color-surface));stroke:var(--voice-b);stroke-width:2}.poly-dot.is-first{stroke-width:3.5}.poly-dot.is-hit{transition:none}.poly-dot--a.is-hit{fill:var(--voice-a);filter:drop-shadow(0 0 8px var(--color-accent-glow))}.poly-dot--b.is-hit{fill:var(--voice-b);filter:drop-shadow(0 0 8px color-mix(in srgb,var(--voice-b) 45%,transparent))}.poly-needle{stroke:var(--color-ink);stroke-width:2.5;stroke-linecap:round;opacity:.5;transform-origin:160px 160px;transition:opacity .2s ease}.is-playing .poly-needle{opacity:.9}.poly-hub{fill:var(--color-ink);transform-origin:160px 160px}.poly-hub.is-pulse{animation:poly-hub .4s ease-out}@keyframes poly-hub{0%{transform:scale(2.2);fill:var(--color-accent)}to{transform:scale(1)}}.is-muted-a .poly-dot--a,.is-muted-a .poly-ring--a,.is-muted-b .poly-dot--b,.is-muted-b .poly-ring--b{opacity:.3}.poly-timeline{width:100%;max-width:520px;display:grid;gap:5px;min-height:calc(46px + 1.3em);align-content:start}.poly-tl-row{display:grid;gap:3px;grid-template-columns:repeat(var(--cols),minmax(0,1fr))}.poly-tl-cell{height:18px;border-radius:4px;background:var(--color-surface-2);border:1px solid var(--color-hairline);transition:background .2s ease,box-shadow .2s ease}.poly-tl-row--a .is-on{background:color-mix(in srgb,var(--voice-a) 38%,transparent);border-color:var(--voice-a);border-radius:999px}.poly-tl-row--b .is-on{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--voice-b) 60%,transparent) 0 3px,color-mix(in srgb,var(--voice-b) 22%,transparent) 3px 6px);border-color:var(--voice-b);border-radius:2px}.poly-tl-cell.is-now{box-shadow:0 0 0 2px var(--color-ink);transition:none}.poly-tl-row--a .is-on.is-now{background:var(--voice-a)}.poly-tl-row--b .is-on.is-now{background:var(--voice-b)}.poly-tl-nums{display:grid;gap:3px;grid-template-columns:repeat(var(--cols),minmax(0,1fr));font-size:var(--fs-xs);font-weight:700;color:var(--color-gray);text-align:center;font-variant-numeric:tabular-nums}.poly-tl-nums .is-both{color:var(--color-ink)}.poly-timeline--dense .poly-tl-cell{height:14px;border-radius:2px}.poly-timeline--dense .poly-tl-nums span:not(.is-both){visibility:hidden}.poly-count{margin:-4px 0 0;font-size:var(--fs-sm);color:var(--color-ink-soft);text-align:center;max-width:520px;min-height:1.4em}.poly-count strong{color:var(--color-ink)}.poly-actions{display:flex;align-items:center;justify-content:center;gap:var(--space-4);flex-wrap:wrap}.poly-bpm{display:grid;grid-template-columns:auto auto auto;align-items:center;gap:10px}.poly-bpm__read{text-align:center;min-width:84px}.poly-bpm__input{width:3.2ch;min-width:100%;background:transparent;border:0;padding:0;text-align:center;font-family:var(--font-heading);font-weight:700;font-size:2.4rem;line-height:1;font-variant-numeric:tabular-nums;border-radius:var(--radius)}.poly-bpm__input:focus{outline:none;background:var(--color-surface-2)}.poly-bpm .readout__unit{margin-top:4px}.poly-voice{display:grid;gap:10px;padding:12px 0}.poly-voice+.poly-voice{border-top:1px solid var(--color-hairline)}.poly-voice:first-of-type{padding-top:0}.poly-voice__head{display:flex;align-items:center;justify-content:space-between}.poly-voice__name{font-weight:700;display:flex;align-items:center;gap:8px}.poly-voice__name small{font-weight:400;color:var(--color-gray);font-size:var(--fs-sm)}.poly-swatch{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--voice);box-shadow:0 0 8px color-mix(in srgb,var(--voice) 60%,transparent)}.poly-swatch--b{border-radius:2px;transform:rotate(45deg) scale(.9)}.poly-vol{display:grid;grid-template-columns:20px minmax(0,1fr) 42px;align-items:center;gap:10px;color:var(--color-gray)}.poly-vol svg{width:18px;height:18px}.poly-vol .field__value{text-align:right;font-size:var(--fs-sm)}.poly-voice .seg button[aria-pressed=true]{background:var(--voice);border-color:var(--voice);color:#161614}.poly-voice input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg,var(--voice) var(--fill),var(--color-surface-3) var(--fill))}.poly-voice input[type=range]::-webkit-slider-thumb{border-color:var(--voice)}.poly-voice input[type=range]::-moz-range-progress{background:var(--voice)}.poly-voice .switch input:checked+.switch__track{background:var(--voice);border-color:var(--voice)}.poly-voice.is-muted>:not(.poly-voice__head){opacity:.45}.poly-voice.is-muted .poly-swatch{box-shadow:none;opacity:.5}:root[data-theme=light] .poly-voice--a{--voice-ink: #00563F}:root[data-theme=light] .poly-voice--b{--voice-ink: #6B4300}:root[data-theme=light] .poly-voice .seg button[aria-pressed=true]{background:color-mix(in srgb,var(--voice) 16%,var(--color-surface));border-color:var(--voice);color:var(--voice-ink);box-shadow:none}:root[data-theme=light] .poly-presets .chip[aria-pressed=true]{color:#00563f}.poly-stage:fullscreen,.poly-stage.is-stage-mode{gap:2.4vh}.poly-stage:fullscreen .poly-wheel,.poly-stage.is-stage-mode .poly-wheel{max-width:min(58vh,86vw)}.poly-stage:fullscreen .poly-num__val,.poly-stage.is-stage-mode .poly-num__val{font-size:clamp(2.8rem,min(9vh,13vw),6rem)}.poly-stage:fullscreen .poly-ratio,.poly-stage.is-stage-mode .poly-ratio{gap:24px}.poly-stage:fullscreen .poly-bpm__input,.poly-stage.is-stage-mode .poly-bpm__input{font-size:3.2rem}.poly-stage:fullscreen .poly-timeline,.poly-stage:fullscreen .poly-count,.poly-stage.is-stage-mode .poly-timeline,.poly-stage.is-stage-mode .poly-count{max-width:min(760px,90vw)}.poly-stage:fullscreen .kbd-hints,.poly-stage.is-stage-mode .kbd-hints{display:none}@media (min-width: 960px){.poly-wheel{max-width:228px}.poly-stage{gap:14px}}@media (max-width: 600px){.poly-stage{gap:12px;padding-top:14px;padding-bottom:16px}.poly-wheel{max-width:min(232px,60vw)}.poly-ratio{gap:6px;width:100%}.poly-num{gap:4px}.poly-num__val{min-width:1em}.poly-ratio__sep{letter-spacing:.06em}.poly-stage:fullscreen .poly-ratio,.poly-stage.is-stage-mode .poly-ratio{gap:6px}.poly-presets{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;scrollbar-width:none;padding:2px}.poly-presets::-webkit-scrollbar{display:none}.poly-presets .chip{flex:0 0 auto;min-width:48px}.poly-actions{gap:var(--space-3)}.poly-bpm__input{font-size:2.1rem}.poly-tl-cell{height:14px}.poly-timeline{min-height:calc(38px + 1.3em)}}@media (max-height: 700px) and (max-width: 600px){.poly-wheel{max-width:180px}}.ptl-ico{display:inline-block;width:16px;height:16px;margin:0 6px 0 0;vertical-align:-3px;color:var(--g-ink, var(--color-accent-ink));flex:0 0 auto}[role=tab] .ptl-ico{margin-right:6px}[role=tab][aria-selected=true] .ptl-ico{color:inherit}@media (max-width: 600px){[role=tab] .ptl-ico{display:none}}
