:root{color-scheme:dark;font-family:Arial,Helvetica,sans-serif;color:#faf5fc;background:#151515;--muted:#b9acbf;--line:#48334c;--pink:#ec0863}*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 48% 35%,#302037 0,#1c1820 47%,#151515 82%)}button,input,select,textarea{font:inherit}button{cursor:pointer;min-height:30px}button,input,textarea,select{border:1px solid var(--line);border-radius:7px;color:inherit;background:#211b25}button:hover{filter:brightness(1.16)}button:disabled{cursor:default;opacity:.5;filter:none}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid #ff83b5;outline-offset:3px}main{max-width:1920px;margin:auto;padding:8px 16px 12px}.heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;min-height:28px}h1{font-size:19px;letter-spacing:-.5px;margin:0;font-weight:800}.heading-actions{display:flex;gap:8px}.quiet{background:transparent;padding:4px 10px;font-size:11px;min-height:26px}.game-layout{display:grid;grid-template-columns:205px minmax(0,1fr) 300px;gap:18px;align-items:start}.panel{border:1px solid var(--line);border-radius:12px;background:linear-gradient(140deg,#2b202e,#201a24);padding:13px;box-shadow:0 12px 32px #0002}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}h2{font-size:16px;margin:0}.count{color:#ff98c0;background:#64304e;border-radius:30px;font-size:11px;padding:2px 7px}.empty{font-size:12px;color:var(--muted);line-height:1.6;padding:18px 0;text-align:center}#players{padding:0;margin:0 0 10px;list-style:none;max-height:calc(100svh - 221px);overflow:auto;scrollbar-width:thin;scrollbar-color:#815185 transparent}#players li{display:flex;align-items:center;gap:6px;padding:3px 5px;margin:2px 0;border:1px solid transparent;border-radius:6px;height:28px;background:#19151c}#players li.current{border-color:#d74782;background:#59243e}#players li.up-next{border-color:transparent}.player-num{color:#ae99b7;font-size:10px;width:16px;flex:none}.player-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.player-badge{flex:none;color:#ffafcf;font-size:9px;text-transform:uppercase;letter-spacing:.3px}.remove-player{flex:none;border:0;background:none;color:#c9baca;font-size:18px;min-height:22px;width:20px;padding:0}#add-player{display:flex;gap:5px}#player-name{width:100%;min-width:0;font-size:12px;padding:8px}.add-player{width:30px;flex:none;background:#49314e;font-size:21px}.field-message{font-size:11px;line-height:1.4;color:#ffaccb;margin:7px 0 0}.field-message:empty{display:none}.turn-note{margin-top:10px;padding-top:8px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);overflow-wrap:anywhere;line-height:1.4}.play-area{min-width:0;position:relative;text-align:center;height:calc(100svh - 90px);display:flex;flex-direction:column;align-items:center;justify-content:center}.wheel-viewport{width:100%;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:12px 0 2px}.wheel-stage{position:relative;flex:none;width:600px;height:600px;filter:drop-shadow(0 9px 22px #0005)}.rotor{position:absolute;inset:0;border-radius:50%;overflow:hidden}#wheel{display:block;width:100%;height:100%;transform-origin:center}#wheel [role=button]{cursor:pointer}.pointer{position:absolute;left:50%;top:-9px;z-index:2;transform:translateX(-50%);width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;border-top:27px solid #fff2fa;filter:drop-shadow(0 2px 3px #0009)}.hub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:58px;height:58px;display:flex;justify-content:center;align-items:center;flex-direction:column;border:3px solid #c088b8;border-radius:50%;background:#26172f;font-size:14px;font-weight:900;letter-spacing:1px;box-shadow:0 2px 8px #0007;pointer-events:none}.hub span{font-size:13px;color:#f8a2cd}.spin{position:absolute;right:0;bottom:0;z-index:5;min-width:116px;max-width:165px;min-height:59px;padding:9px 19px;border:1px solid #ff5b9b;background:var(--pink);font-size:21px;font-weight:700;box-shadow:0 7px 26px #0006;border-radius:12px}.spin small{display:block;font-size:11px;line-height:1.25;font-weight:normal;margin-top:4px;max-width:122px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spin:disabled{opacity:.78}.last-result{position:absolute;bottom:3px;left:0;z-index:4;padding:6px 11px;background:#35213d;font-size:11px;box-shadow:0 3px 15px #0005}.result-overlay{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;pointer-events:none}.result-overlay:before{content:'';position:absolute;inset:0;border-radius:50%;background:#140b1e80;backdrop-filter:blur(3px)}.result{pointer-events:auto;position:relative;z-index:1;border:1px solid #a56796;border-radius:17px;background:linear-gradient(140deg,#3f2944,#251b2e);padding:38px 26px 23px;width:min(87%,510px);max-height:87%;overflow:auto;box-shadow:0 20px 65px #0009}.result p:first-of-type{font-size:12px;letter-spacing:1.2px;font-weight:bold;color:#ff98c0;margin:0 0 18px;text-transform:uppercase}.result h2{font-size:clamp(23px,2.25vw,36px);line-height:1.25;letter-spacing:-.5px;overflow-wrap:anywhere;margin-bottom:25px}.close-result{position:absolute;right:9px;top:7px;border:0;background:transparent;font-size:27px;line-height:1;width:33px;height:33px;color:#e8cde7}.hold-remove{position:relative;overflow:hidden;isolation:isolate;min-height:44px;padding:9px 15px;touch-action:none;user-select:none;-webkit-user-select:none;background:#271d2c;border-color:#77516f;font-size:12px}.hold-remove .hold-fill{position:absolute;inset:0;z-index:-1;background:#a32960;transform:scaleX(var(--hold,0));transform-origin:left;pointer-events:none}.hold-remove small{font-size:10px;color:#c5aac9;margin-left:9px}.hold-remove.holding{border-color:#ff94c2}.remove-status{font-size:11px;line-height:1.4;color:#e7b9d5;margin:10px 0 0;min-height:0}.remove-status:empty{display:none}.result.landed{animation:arrive .25s ease-out}.size-note{font-size:11px;color:#d9b6d3;line-height:1.35;margin:4px 0 0}.small-spark{color:#fba5cf;font-size:20px}.control-label{display:block;margin:3px 0 7px;font-size:11px;color:#d7c4de}select{width:100%;padding:9px;font-size:13px}.preset-hint{font-size:11px;line-height:1.45;color:var(--muted);min-height:32px;margin:9px 0 12px}.transfer{display:flex;gap:7px;margin:0 0 16px}.transfer button{flex:1;font-size:12px;padding:7px;background:#3b2841}.editor-heading{display:flex;justify-content:space-between;align-items:center}h3{font-size:12px;margin:0}.editor-heading span{font-size:11px;color:#bca8c5}.edit-note{font-size:10px;color:#bca8c5;line-height:1.45;margin:6px 0 10px;min-height:15px}.edit-note.pending{color:#ffafce}.segments{max-height:calc(100svh - 395px);min-height:125px;overflow:auto;padding-right:3px;scrollbar-width:thin;scrollbar-color:#78517e transparent}.segment-row{display:grid;grid-template-columns:26px minmax(0,1fr) 20px;gap:6px;align-items:start;margin-bottom:7px}.segment-row input[type=color]{width:26px;height:32px;padding:3px;border-radius:6px;cursor:pointer;background:none}.segment-row textarea{width:100%;resize:vertical;min-height:43px;max-height:180px;padding:7px;font-size:12px;line-height:1.4;field-sizing:content}.segment-row button{border:0;background:none;font-size:19px;color:#bea9c6;min-height:30px;padding:0}.outline{width:100%;margin-top:10px;background:#38263e;font-size:12px}.instructions{background:#2d2031;border:1px solid var(--line);border-radius:10px;padding:13px;margin-bottom:10px;font-size:13px;line-height:1.65;color:#e0d3e7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mobile-roster-toggle{display:none}[hidden]{display:none!important}@keyframes arrive{from{transform:scale(.97);opacity:.6}to{transform:scale(1);opacity:1}}

@media(min-width:1550px){.game-layout{grid-template-columns:235px minmax(0,1fr) 340px;gap:24px}.panel{padding:16px}#players li{height:32px;margin:3px 0}.player-label{font-size:14px}.segments{max-height:calc(100svh - 416px)}.result{width:min(84%,600px)}}

@media(max-width:1050px){main{padding:8px 10px}.game-layout{grid-template-columns:165px minmax(0,1fr) 245px;gap:12px}.panel{padding:10px}.player-badge{font-size:8px}.player-num{width:12px}.spin{min-width:95px;padding:8px 12px;font-size:18px}.result{padding:33px 17px 18px}.result h2{font-size:25px}}

@media(max-width:850px){.game-layout{grid-template-columns:155px minmax(0,1fr)}.editor{grid-column:1/-1}.play-area{height:auto;aspect-ratio:1}.wheel-viewport{min-height:300px;padding-top:12px}.segments{max-height:360px}#players{max-height:calc(100svh - 230px)}}

@media(max-width:540px){main{padding:8px}.heading{margin-bottom:7px}h1{font-size:17px}.quiet{font-size:10px;padding:4px 7px}.heading-actions{gap:5px}.game-layout{grid-template-columns:minmax(0,1fr);gap:12px}.mobile-roster-toggle{display:block;min-height:26px;padding:4px 7px;background:#3c2542;font-size:10px}.roster{display:none}.roster.drawer-open{display:block;position:fixed;top:77px;left:8px;z-index:20;width:220px;max-height:calc(100svh - 90px);overflow:auto;box-shadow:0 10px 70px #000d;padding:14px}.roster #players{max-height:calc(100svh - 215px)}.roster .player-label{font-size:13px}.roster .player-num{display:inline}.roster .remove-player{width:22px}.play-area{aspect-ratio:auto;height:calc(100vw - 6px);min-height:300px}.wheel-viewport{padding:12px 0 1px;min-height:0}.size-note{font-size:10px}.result{width:89%;padding:30px 16px 16px;max-height:87%}.result p:first-of-type{font-size:10px;margin-bottom:12px}.result h2{font-size:23px;margin-bottom:17px}.hold-remove{font-size:11px;padding:8px 10px}.hold-remove small{font-size:9px;margin-left:6px}.spin{min-height:49px;min-width:91px;padding:6px 12px;font-size:18px;border-radius:9px}.spin small{font-size:10px;max-width:105px}.last-result{font-size:10px;padding:5px 7px}.hub{width:47px;height:47px;font-size:12px}.hub span{font-size:11px}.editor{grid-column:auto}.segments{max-height:340px}}

@media(prefers-reduced-motion:reduce){.result.landed{animation:none}}

.winner .slice-face{animation:winner-glow 950ms ease-out}.wheel-stage.celebrate:after{content:'';position:absolute;inset:-2px;border:3px solid #ffcce7;border-radius:50%;box-shadow:0 0 20px #ff79b1,0 0 60px #b13bff88;pointer-events:none;z-index:3;animation:rim-flash 1000ms ease-out both}@keyframes winner-glow{0%{filter:brightness(1)}22%{filter:brightness(1.8)}60%{filter:brightness(1.2)}100%{filter:brightness(1)}}@keyframes rim-flash{0%{opacity:0;transform:scale(.995)}22%{opacity:.9}100%{opacity:0;transform:scale(1.015)}}@media(prefers-reduced-motion:reduce){.winner .slice-face,.wheel-stage.celebrate:after{animation:none}.wheel-stage.celebrate:after{display:none}}

.transfer-dialog{width:min(92vw,540px);padding:30px 24px 24px;border:1px solid #956186;border-radius:15px;color:#faf5fc;background:#2c1e32;box-shadow:0 24px 80px #000a}.transfer-dialog::backdrop{background:#100b17b0}.transfer-dialog h2{font-size:24px}.transfer-dialog>p{font-size:13px;line-height:1.5;color:#cbb9d3;margin-bottom:20px}.transfer-dialog summary{cursor:pointer;font-size:12px;color:#cbb9d3}.transfer-dialog textarea{display:block;margin-top:12px;width:100%;height:230px;resize:vertical;font:12px/1.4 monospace;padding:10px}.transfer-dialog .field-message{margin:12px 0 0;color:#ffb9d6}

.spin{min-height:49px;min-width:108px;padding:10px 18px}.wheel-hint{position:absolute;left:0;bottom:6px;margin:0;font-size:12px;color:#cbb0d0;pointer-events:none}.last-result{bottom:29px}.result-actions{display:flex;gap:10px;justify-content:center;align-items:stretch}.close-result-action{padding:9px 20px;background:#704060;border-color:#a97798;font-size:13px}.result-overlay:before{backdrop-filter:none}.result-open .rotor,.result-open .hub{filter:blur(3px)}.result-open .pointer{filter:blur(3px)}#wheel[role=button]{cursor:pointer}#wheel[aria-disabled=true]{cursor:default}.result-open #wheel{cursor:default}@media(max-width:540px){.spin{min-width:90px;min-height:43px;padding:8px 12px}.wheel-hint{font-size:10px}.close-result-action{font-size:12px;padding:8px 14px}.result-actions{gap:7px}}

.last-result{bottom:0;min-height:49px;min-width:132px;padding:11px 18px;border:1px solid #c88bed;border-radius:12px;background:#71429e;color:#fff;font-size:16px;font-weight:700;box-shadow:0 6px 22px #0007}.wheel-hint{bottom:59px}.last-result[hidden]+.spin{}.last-result:hover{background:#8851b8}@media(max-width:540px){.last-result{min-height:43px;min-width:112px;padding:9px 12px;font-size:14px;border-radius:9px}.wheel-hint{bottom:51px}}

.hub{width:34px;height:34px;border-width:2px;background:#291c32}.wheel-hint{font-size:11px;max-width:175px;line-height:1.3;text-align:left}@media(max-width:540px){.hub{width:27px;height:27px}.wheel-hint{font-size:10px;max-width:125px}}

.transfer{margin-top:12px}.transfer button{display:flex;align-items:center;justify-content:center;gap:8px}.transfer svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.segments{max-height:calc(100svh - 317px)}.editor-heading{margin-bottom:10px}.edit-note.pending{margin:0 0 10px}@media(max-width:850px){.segments{max-height:360px}}

/* Persistent result beneath the wheel, with the wheel itself as the control. */

main{padding-top:8px}.play-area{height:auto;justify-content:flex-start}.wheel-viewport{height:calc(100svh - 192px);min-height:260px;flex:none;padding:4px 10px 0;overflow:visible}.wheel-stage{cursor:pointer}.wheel-stage.spinning{cursor:default}.pointer{left:auto;right:-10px;top:50%;transform:translateY(-50%);border:0;border-top:12px solid transparent;border-bottom:12px solid transparent;border-right:28px solid #fff2fa;filter:drop-shadow(-2px 1px 3px #0009)}.result-panel{width:100%;padding-top:12px}.result{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;max-height:none;min-height:112px;padding:15px 20px;border-radius:13px;overflow:visible;text-align:left;box-shadow:0 8px 25px #0003;background:linear-gradient(140deg,#352339,#251c2b)}.result-copy{flex:1;min-width:0}.result p:first-of-type{font-size:11px;letter-spacing:.8px;margin:0 0 7px}.result h2{font-size:clamp(22px,1.8vw,31px);line-height:1.23;margin:0}.result-actions{flex:none;display:flex;flex-direction:column;width:145px;gap:0}.hold-remove{width:100%;min-height:42px;font-size:11px;padding:8px}.result .remove-status{font-size:10px;letter-spacing:0;font-weight:normal;line-height:1.3;margin:6px 0 0;text-align:center;text-transform:none}.result.landed{animation:none}.size-note{margin-top:6px}.wheel-onboarding{position:absolute;inset:0;z-index:3;display:grid;place-items:center;pointer-events:none}.onboarding-card{display:flex;align-items:center;flex-direction:column;gap:13px;padding:23px 30px;background:#23132ee8;border:1px solid #d880b280;border-radius:18px;box-shadow:0 12px 40px #0007;backdrop-filter:blur(4px)}.onboarding-card strong{font-size:clamp(25px,2.5vw,40px);letter-spacing:-.8px;color:#fff4fb}.onboarding-card>span{font-size:12px;color:#e1c5e4}.onboarding-card kbd{font:11px Arial;border:1px solid #98739d;background:#493050;border-radius:4px;padding:3px 5px}.mobile-roster-toggle{margin-bottom:8px}#wheel[aria-disabled=false]{cursor:pointer}#wheel[aria-disabled=true]{cursor:default}

@media(max-width:850px){.play-area{height:auto;aspect-ratio:auto}.wheel-viewport{height:calc(100vw - 190px);min-height:280px}.result{padding:14px;flex-direction:column;align-items:stretch;gap:12px}.result-actions{width:auto;align-self:flex-end}.hold-remove{padding:8px 14px}.result h2{font-size:23px}}

@media(max-width:540px){.wheel-viewport{height:calc(100vw - 26px);min-height:270px;padding:3px 10px 0}.result-panel{padding-top:9px}.result{min-height:110px;padding:15px}.result h2{font-size:23px}.pointer{right:-8px;border-top-width:10px;border-bottom-width:10px;border-right-width:23px}.onboarding-card{padding:17px 22px;gap:11px}.onboarding-card strong{font-size:27px}.onboarding-card>span{font-size:11px}.roster.drawer-open{top:72px}}

@media(min-width:851px){.wheel-viewport{height:calc(100svh - 172px)}.result{min-height:92px}}

.result .result-actions .remove-status{font-size:10px;letter-spacing:0;line-height:1.3;font-weight:normal;text-transform:none}

/* Match the board to its available width instead of reserving empty height. */

.wheel-viewport{height:auto;aspect-ratio:1;max-height:calc(100svh - 172px);min-height:0}



/* Keep results centered over the wheel and reclaim the space below it. */

.wheel-viewport{max-height:calc(100svh - 64px)}

.result-overlay{pointer-events:auto;cursor:default}

.result-overlay .result{width:min(90%,620px);min-height:0;max-height:88%;padding:28px 24px;display:flex;flex-direction:column;gap:22px;overflow:auto;text-align:center;box-shadow:0 20px 65px #0009}

.result-overlay .result-copy{flex:none;width:100%}

.result-overlay .result p:first-of-type{margin:0 0 14px}

.result-overlay .result h2{font-size:clamp(23px,2.25vw,36px);margin:0}

.result-overlay .result-actions{width:100%;align-self:center;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}

.result-overlay .hold-remove{width:auto;min-height:44px;padding:9px 15px;font-size:12px}

.result-overlay .close-result-action{min-height:44px}

.result-overlay .remove-status{flex-basis:100%}

.result-overlay .result.landed{animation:arrive .25s ease-out}

@media(max-width:540px){.wheel-viewport{max-height:calc(100svh - 104px)}.result-overlay .result{padding:23px 16px;gap:18px}.result-overlay .result h2{font-size:23px}}

@media(prefers-reduced-motion:reduce){.result-overlay .result.landed{animation:none}}



/* Compact setup, weighted slices and a stationary illuminated rim. */

.game-layout{grid-template-columns:225px minmax(0,1fr) 345px}

.setup-count{display:inline-block;margin-left:6px;font-size:11px;font-weight:normal;color:var(--muted);white-space:nowrap}

.segment-columns{display:grid;grid-template-columns:26px minmax(0,1fr) 49px 20px;gap:6px;margin:0 3px 7px 0;font-size:10px;color:var(--muted)}

.segment-columns span:first-child{grid-column:2}.segment-columns span:last-child{text-align:center}

.segment-row{grid-template-columns:26px minmax(0,1fr) 49px 20px}

.segment-row textarea{height:32px;min-height:32px;max-height:240px;field-sizing:fixed;resize:vertical;padding:7px;line-height:16px;scrollbar-width:thin}

.segment-weight{width:49px;height:32px;min-width:0;padding:4px;font-size:12px;text-align:center}

.segment-weight[aria-invalid=true]{border-color:#ff8dae}

.segments{max-height:calc(100svh - 285px)}

.hub{width:51px;height:51px}

.wheel-lights{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}

.rim-light{fill:#626772;opacity:1;filter:none}

.wheel-turning .rim-glow{animation:led-chase 1.2s linear infinite;animation-delay:var(--phase)}

.result-open .wheel-lights{filter:blur(3px)}

@keyframes led-chase{0%,18%,65%,100%{opacity:0}24%,34%{opacity:1}48%{opacity:.5}}
.rim-glow{opacity:0}

@media(min-width:1550px){.game-layout{grid-template-columns:255px minmax(0,1fr) 380px}}

@media(max-width:1050px){.game-layout{grid-template-columns:180px minmax(0,1fr) 295px;gap:12px}}

@media(max-width:950px){.game-layout{grid-template-columns:180px minmax(0,1fr)}.editor{grid-column:1/-1}.segments{max-height:360px}}

@media(max-width:540px){.game-layout{grid-template-columns:minmax(0,1fr)}.editor{grid-column:auto}.hub{width:41px;height:41px}}

@media(prefers-reduced-motion:reduce){.wheel-turning .rim-glow{animation:none}}



.result-overlay .result .player-result-name{font-size:clamp(24px,2.5vw,36px);line-height:1.15;letter-spacing:-.4px;text-transform:none;color:#ffb5d4;margin:0 0 6px;overflow-wrap:anywhere}

.result-overlay .result .result-context{font-size:12px;line-height:1.4;letter-spacing:.15px;text-transform:none;font-weight:400;font-style:italic;color:#cbb3d1;margin:0 0 20px}


/* Leave room for the focus outline inside the scroll container. */
.segments{padding:5px;scroll-padding:5px}
.segment-columns{margin-left:5px;margin-right:5px}
.wheel-library{border:1px solid var(--line);border-radius:8px;margin:0 0 15px;background:#211b25}
.wheel-library>summary{cursor:pointer;padding:10px;font-size:12px;color:#eaddea}
.wheel-library>summary::marker{color:#c997d5}
#preset-summary{font-weight:600;overflow-wrap:anywhere}

.library-controls{padding:0 10px 10px}
.wheel-library .transfer{margin-bottom:0}
.wheel-library .field-message{margin-top:8px}
.wheel-library>summary:focus-visible{outline:2px solid #ff83b5;outline-offset:2px;border-radius:6px}

.landing-confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:30}

/* Blur and dim the complete wheel artwork, including the protruding pointer. */
.wheel-surface{position:absolute;inset:0;overflow:visible}
.result-open .wheel-surface{filter:blur(3px) brightness(.55)}
.result-open .rotor,.result-open .hub,.result-open .pointer,.result-open .wheel-lights{filter:none}
.result-overlay:before{background:transparent;backdrop-filter:none}

/* Keep panel scrollbars clear of row controls and their focus outlines. */
.segments{scrollbar-gutter:stable;padding-right:14px}
#players{scrollbar-gutter:auto;padding:5px;margin:0 -5px 10px;scroll-padding:5px}
.segment-columns{margin-right:23px}

/* Host controls and compact, collapsible side panels. */
main{max-width:none;padding:4px 8px 10px}
.host-toolbar{display:flex;align-items:center;gap:7px;min-height:32px;margin-bottom:5px}
.host-toolbar button{font-size:11px;padding:4px 10px;min-height:27px;background:#332039}
#save-status{margin-left:auto;font-size:10px;color:#aa98b2;max-width:50%;text-align:right}
.game-layout{--players-width:225px;--setup-width:400px;grid-template-columns:var(--players-width) minmax(0,1fr) var(--setup-width);gap:12px}
.game-layout.players-collapsed{--players-width:38px}.game-layout.setup-collapsed{--setup-width:38px}
.panel-heading{gap:7px}.panel-heading h2{flex:1}.collapse-panel{border:0;background:transparent;width:23px;min-height:24px;flex:none;padding:0;color:#bca4c5;font-size:22px}
.panel-collapsed{padding:8px 5px}.panel-collapsed .panel-heading{writing-mode:vertical-rl;margin:0;gap:12px;align-items:center}
.panel-collapsed .panel-heading h2{font-size:12px;flex:none}.panel-collapsed .count,.panel-collapsed .collapse-panel{writing-mode:horizontal-tb}
.wheel-viewport{max-height:calc(100svh - 104px)}
.wheel-library>summary{display:flex;align-items:center;gap:6px;padding:9px 8px;font-size:11px}
.wheel-library>summary:before{content:'›';color:#be94cc;flex:none}.wheel-library[open]>summary:before{transform:rotate(90deg)}
.wheel-library>summary::marker{content:''}
#preset-summary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wheel-library{margin-bottom:10px}
.editor-modes{display:flex;gap:3px;background:#19141e;padding:3px;border-radius:8px;margin-bottom:10px}
.editor-modes button{flex:1;border:0;background:transparent;font-size:12px;min-height:29px}.editor-modes button[aria-pressed=true]{background:#5c365c;color:#fff}
#simple-segments{display:block;width:100%;height:clamp(230px,53svh,640px);min-height:130px;max-height:70svh;resize:vertical;padding:10px;font:13px/1.85 Arial;tab-size:2;scrollbar-width:thin;scrollbar-color:#815185 transparent;white-space:pre;overflow:auto}
#simple-segments:focus-visible{outline-offset:-2px;border-color:#ff83b5}
#setup-body{min-width:0}#advanced-view{max-height:calc(100svh - 240px);overflow:auto;padding:4px;scrollbar-width:thin;scrollbar-color:#815185 transparent}
.segments{max-height:38svh;min-height:80px}.segment-columns{font-size:10px;align-items:center}.weight-heading{display:flex;align-items:center;gap:3px;white-space:nowrap}
.help-button{font-size:9px;width:16px;height:16px;min-height:16px;padding:0;border-radius:50%;background:#49304f;color:#dbc4df}
.inline-help{font-size:11px;color:#bcaac6;line-height:1.55;margin:9px 0}
#weight-help{background:#38243e;border:1px solid #6e4776;padding:9px;border-radius:7px}
.script-tools{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.script-tools>summary,.script-guide>summary{cursor:pointer;font-size:12px;color:#d8bddf}
.variable-row{display:grid;grid-template-columns:minmax(65px,1fr) minmax(0,1fr) minmax(0,1fr);align-items:center;gap:7px;margin:9px 0}.variable-row strong{font-size:11px;overflow-wrap:anywhere}.variable-row label{font-size:9px;color:#bba7c6}.variable-row input{display:block;width:100%;padding:6px;margin-top:4px;font-size:12px}
#script-preview{display:block;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:10px;font-size:12px;line-height:1.6;color:#eddced}
.script-guide{margin:14px 0}.script-guide p{font-size:11px;line-height:1.6;color:#c7b9ce}.script-guide code{font-family:monospace;color:#d4ecff;font-size:11px;overflow-wrap:anywhere}
.dynamic-number{color:#b6edff}.dynamic-player{color:#ffe0a1}.dynamic-text{color:#ebc9ff}
.result .dynamic-number,.result .dynamic-player,.result .dynamic-text{text-decoration:underline;text-decoration-color:currentColor;text-decoration-thickness:1px;text-underline-offset:5px}
#players{max-height:calc(100svh - 230px)}
/* Sticky notes: only the handle drags, so editing and selecting text stay natural. */
#notes-layer{position:fixed;inset:0;pointer-events:none;z-index:10}
.sticky-note{position:absolute;pointer-events:auto;display:flex;flex-direction:column;border:1px solid #987759;border-radius:10px;background:#3b3023;box-shadow:0 12px 40px #0006;overflow:hidden;color:#ffeacd}
.note-header{display:flex;align-items:center;gap:3px;min-height:39px;padding:4px 6px;background:#58442d}
.note-header input{flex:1;min-width:0;background:transparent;border:0;padding:4px;color:#fff0d6;font-size:12px;font-weight:600}
.note-header button{background:transparent;border:0;color:#e6cb9e;min-height:26px;padding:0;width:22px;flex:none}.note-drag{cursor:grab;touch-action:none;font-size:18px}
.note-body{flex:1;min-height:0;position:relative;display:flex;flex-direction:column;padding:9px 10px 7px}.note-preview{flex:1;min-height:0;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.55;padding-right:5px}
.note-body textarea{flex:1;min-height:0;width:100%;resize:none;background:#31291f;border-color:#816647;color:#ffeacd;font-size:13px;line-height:1.55;padding:6px}
.note-body>button:not(.note-resize){align-self:flex-start;min-height:24px;margin-top:5px;padding:3px 8px;font-size:10px;background:#59422b;border-color:#816647}
.note-resize{position:absolute;right:2px;bottom:2px;background:none;border:0;min-height:24px;width:25px;cursor:nwse-resize;touch-action:none;color:#d7b990}
@media(max-width:1200px){.game-layout{--players-width:195px;--setup-width:350px}}
@media(max-width:950px){.game-layout{--players-width:180px;grid-template-columns:var(--players-width) minmax(0,1fr)}#setup-panel{grid-column:1/-1}.editor.panel-collapsed .panel-heading{writing-mode:horizontal-tb}.editor.panel-collapsed .panel-heading h2{flex:1}.editor.panel-collapsed{padding:9px 12px}#advanced-view{max-height:65svh}#simple-segments{height:290px}.wheel-viewport{max-height:calc(100svh - 100px)}}
@media(max-width:540px){.game-layout{grid-template-columns:minmax(0,1fr);gap:9px}.roster{display:block}.roster.panel-collapsed .panel-heading{writing-mode:horizontal-tb}.roster.panel-collapsed .panel-heading h2{flex:1}.roster.panel-collapsed{padding:7px 10px}.roster #players{max-height:230px}#setup-panel{grid-column:auto}.host-toolbar{flex-wrap:wrap}#save-status{font-size:9px}.wheel-viewport{max-height:calc(100svh - 120px)}.panel{padding:10px}#simple-segments{font-size:12px}.sticky-note{max-width:calc(100vw - 16px)}}

#dynamic-view{max-height:calc(100svh - 240px);overflow:auto;padding:4px 12px 8px 2px;scrollbar-gutter:stable}
.note-preview{cursor:text;padding-bottom:12px}.note-preview:focus-visible{outline:2px solid #e6cb9e;outline-offset:2px}

/* Dynamic text: compose first, inspect a safe example, then manage values. */
#dynamic-view{margin-top:0;border-top:0;padding-top:0;scrollbar-width:thin;scrollbar-color:#815185 transparent}
.dynamic-intro{font-size:12px;line-height:1.5;color:#cbbbd0;margin:0 0 10px}
#preview-segment{width:100%;font-size:12px;margin-bottom:7px;min-width:0}
#dynamic-source{display:block;width:100%;min-height:84px;max-height:220px;resize:vertical;font:13px/1.55 Arial;padding:9px}
#dynamic-source[aria-invalid=true]{border-color:#ff91b4}
.dynamic-actions{display:flex;gap:6px;margin-top:7px}.dynamic-actions select{flex:1;min-width:0;font-size:11px;padding:7px}.dynamic-actions button{font-size:11px;padding:7px 10px;white-space:nowrap;background:#624164}
.preview-card{background:#1b1520;border:1px solid #55405e;border-radius:8px;padding:11px;margin-top:10px}
#preview-title{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:#b5a0c0}
#script-preview{margin-top:6px;font-size:16px;line-height:1.4;color:#f6eff9;font-weight:600}
#preview-changes{font-size:11px;color:#c4b2d2;margin:8px 0 0;line-height:1.5;overflow-wrap:anywhere}#preview-changes:empty{display:none}
.preview-help{font-size:10px;margin-bottom:15px}
.values-tools,.script-guide{border-top:1px solid #514056;padding-top:12px;margin:12px 0}
.values-tools>summary,.script-guide>summary{cursor:pointer;color:#eee0f2;font-size:12px;font-weight:600}
.values-tools .count{font-size:9px;margin-left:5px;padding:2px 6px}
#reset-variables{font-size:10px;min-height:28px;padding:5px 8px;margin-top:7px;width:auto}
.script-guide dl{font-size:11px;line-height:1.55}.script-guide dt{margin-top:13px}.script-guide dd{margin:4px 0 0;color:#c7b9ce}
@media(max-width:950px){#dynamic-view{max-height:70svh}}

.variable-row select{display:block;width:100%;min-width:0;padding:6px;margin-top:4px;font-size:12px}

#dynamic-view{padding-left:5px;padding-top:5px;padding-bottom:6px}

/* Keep keyboard focus fully visible at the edges of the dynamic editor scroller. */
#dynamic-view{padding-left:6px;padding-right:14px;scroll-padding:8px}
#dynamic-view :is(input,textarea,select,button):focus-visible{outline-offset:-2px;border-color:#ff83b5}

/* Controls occupy the open corner beside the roster, freeing the panel top edge. */
main{padding-top:10px}
.play-area{height:calc(100svh - 58px)}
.host-toolbar{position:absolute;top:0;left:0;z-index:5;margin:0;min-height:28px}
.wheel-viewport{max-height:calc(100svh - 64px);padding-top:4px}
#dynamic-view,#advanced-view{max-height:calc(100svh - 208px)}
@media(max-width:950px){#dynamic-view,#advanced-view{max-height:70svh}}
@media(max-width:540px){.play-area{height:auto;min-height:0;padding-top:34px}.host-toolbar{top:0}.wheel-viewport{max-height:none}}

.script-guide h3{margin:20px 0 6px;font-size:12px;color:#f0dff4}
.script-guide strong{color:#e8d8ee}.reference-example{padding:10px;border:1px solid #51405a;border-radius:7px;background:#1e1723;margin:10px 0}.reference-example>code{display:block;white-space:pre-wrap;line-height:1.6}.reference-example p{margin:7px 0 0}

.reference-topic{margin:10px 0;border-top:1px solid #48354f;padding-top:10px}.reference-topic>summary{cursor:pointer;font-size:12px;color:#ecd7f1;line-height:1.5}.reference-topic[open]>summary{color:#ffb3d1}.reference-topic>summary:focus-visible{outline:2px solid #ff83b5;outline-offset:-2px;border-radius:4px}

.transfer-hint{font-size:10px;line-height:1.4;color:#bcaac6;margin:8px 0 0}

/* Compact protection controls and result prompts share the editor's visual language. */
.segment-row,.segment-columns{grid-template-columns:26px minmax(0,1fr) 49px 24px 20px;gap:5px}
.segment-row .slice-lock{display:grid;place-items:center;min-height:32px;color:#937e9b}
.slice-lock svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}
.segment-row .slice-lock[aria-pressed=true]{color:#c4eeff;background:#244352}
.result-commands{width:100%;display:flex;flex-direction:column;gap:12px}
.result-command{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;text-align:left;padding:12px;background:#1c1523;border:1px solid #654c6b;border-radius:10px}
.result-command>label{grid-column:1/-1;font-size:12px;font-weight:600;color:#ecdaef}
.result-command :is(textarea,select){width:100%;min-width:0;padding:8px;font:13px/1.45 Arial;align-self:start}
.result-command textarea{grid-column:1/-1;min-height:60px;max-height:140px;resize:vertical}
.result-command button{grid-column:2;min-height:36px;padding:7px 12px;background:#634569;border-color:#98709f;font-size:12px;align-self:start}
.command-buttons{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}
.result-command .command-skip{background:transparent;color:#decde2;border-color:#654c6b}
.result-overlay .result .command-status{grid-column:1/-1;line-height:1.5;color:#ccb5d4;font-size:11px;font-weight:normal;letter-spacing:0;text-transform:none;margin:0;overflow-wrap:anywhere;white-space:pre-wrap}
.command-status:empty{display:none}.result-overlay .result .command-complete .command-status{color:#b5e9cf}
.result-command :is(textarea,select,button):focus-visible{outline-offset:-2px}
.reaction-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:32}
.reaction-layer>span{position:absolute;display:inline-block;line-height:1;will-change:transform,opacity;filter:drop-shadow(0 3px 5px #0004)}
@media(max-width:540px){.result-command{padding:10px;gap:7px}.result-command select{grid-column:1/-1}}

@media(max-width:540px){
  .result-overlay .result:has(.result-commands:not([hidden])){max-height:100%;padding:16px 13px;gap:12px}
  .result:has(.result-commands:not([hidden])) h2{font-size:20px}
  .result-overlay .result:has(.result-commands:not([hidden])) p:first-of-type{margin-bottom:8px}
  .result:has(.result-commands:not([hidden])) .result-actions{position:sticky;bottom:-16px;padding:7px 0;background:#2b1e30;flex-shrink:0}
  .result:has(.result-commands:not([hidden])) .result-actions button{min-height:36px;padding:7px 10px;font-size:11px}
  .result-command textarea{min-height:54px;height:54px}
}

.wheel-name-label{margin-top:10px}#wheel-name{display:block;width:100%;padding:8px 9px;font-size:12px;margin-bottom:10px}
.center-image-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:9px 0 12px}.center-image-controls>.control-label{flex-basis:100%;margin:0}
.center-image-controls button{font-size:11px;padding:5px 9px;min-height:29px;background:#3b2841}.center-image-controls p{flex-basis:100%;font-size:10px;color:#bcaac6;margin:0}
.hub{width:61.2px;height:61.2px;overflow:hidden;isolation:isolate}.hub img{width:100%;height:100%;display:block;object-fit:cover;object-position:center;border-radius:50%}
@media(max-width:540px){.hub{width:49.2px;height:49.2px}}
@media(prefers-reduced-motion:reduce){.hub img{animation:none!important}}

.background-image-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:9px 0 12px}.background-image-controls>.control-label{flex-basis:100%;margin:0}.background-image-controls button{font-size:11px;padding:5px 9px;min-height:29px;background:#3b2841}.background-image-controls p{flex-basis:100%;font-size:10px;color:#bcaac6;margin:0}
body{isolation:isolate}.page-background{position:fixed;inset:-14px;z-index:-1;pointer-events:none;overflow:hidden}.page-background img{width:100%;height:100%;object-fit:cover;object-position:center;transition:filter .2s ease}.result-visible #background-art{filter:blur(8px)}
@media(prefers-reduced-motion:reduce){.page-background img{transition:none}}

.center-image-controls input,.background-image-controls input{flex:1;min-width:0;padding:7px 8px;font-size:11px}.center-image-controls input[aria-invalid=true],.background-image-controls input[aria-invalid=true]{border-color:#ff91b4}
.note-body textarea:focus,.note-body textarea:focus-visible{outline:none;box-shadow:none;border-color:#816647;background:#2b241b}

.sticky-note{background:var(--note-body);border-color:var(--note-border);color:var(--note-text)}.note-header{background:var(--note-header)}.note-header input,.note-header button{color:var(--note-headerText)}
.note-header input[type=color]{flex:none;width:23px;height:25px;min-width:23px;padding:2px;border:1px solid var(--note-border);border-radius:5px;background:transparent;cursor:pointer}
.note-body textarea,.note-body textarea:focus,.note-body textarea:focus-visible{background:var(--note-edit);color:var(--note-text);border-color:var(--note-border);outline:none;box-shadow:none}.note-body textarea::placeholder{color:var(--note-muted)}
.note-resize{color:var(--note-muted)}.note-preview .dynamic-number{color:var(--note-number)}.note-preview .dynamic-player{color:var(--note-player)}.note-preview .dynamic-text{color:var(--note-dynamicText)}
.note-header input:not([type=color]):focus-visible{outline:none;background:#0001}

/* The center and slices share one rotor; GIF frames may animate independently. */
.hub img,.wheel-turning .hub img:not(.custom-center){animation:none;transform:none}.rotor{transform-origin:center}

.appearance-controls{margin:8px 0 12px;border:1px solid var(--line);border-radius:7px;padding:0 8px}.appearance-controls>summary{font-size:11px;cursor:pointer;padding:8px 0;color:#dbc8e3}.wheel-library .appearance-controls>summary{display:list-item}
@media(min-width:951px){#setup-panel{display:flex;flex-direction:column;max-height:calc(100svh - 56px)}#setup-panel>.panel-heading{flex:none}#setup-body{overflow:auto;min-height:0;padding:2px 5px 3px 2px;scrollbar-width:thin;scrollbar-color:#815185 transparent;scrollbar-gutter:stable}}

.hub img[hidden]{display:none}#background-art{width:100%;height:100%;background-position:center;background-repeat:repeat;transition:filter .2s ease}#background-art img{display:block}
.background-layout-controls{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px;font-size:11px;margin:10px 0}.background-layout-controls[hidden]{display:none}.background-layout-controls select{font-size:11px;padding:5px}.background-layout-controls input{width:100%;accent-color:#ec73ae}.background-layout-controls output{color:#cdb7d7}
@media(prefers-reduced-motion:reduce){#background-art{transition:none}}

#center-zoom-controls{grid-template-columns:auto 1fr}#hub-image{border-radius:0;transform-origin:center}

.note-header .note-toggle{font-size:23px;line-height:1;font-weight:400}

/* Once setup stacks beneath the wheel, reserve only the wheel's actual height. */
@media(min-width:541px) and (max-width:950px){.play-area{height:auto;min-height:0}.wheel-viewport{height:auto;aspect-ratio:1;max-height:calc(100svh - 96px)}}

#notes-layer{position:absolute;inset:0 0 auto;height:0}

/* Clip in an unrotated coordinate space so the rotor's square cannot enlarge the page. */
.rotor-frame{position:absolute;inset:0;overflow:clip;border-radius:50%}

.choice-command{width:100%;border:1px solid var(--line);border-radius:9px;padding:12px;display:flex;flex-wrap:wrap;gap:8px;text-align:left}.choice-command legend{font-size:12px;color:#dbc2e4;padding:0 5px}.choice-command button{flex:1;min-width:120px;padding:12px;background:#604066;border-color:#a171a6;font-size:13px}.choice-command .command-status{flex-basis:100%;font-size:14px;line-height:1.5;margin:0}.choice-command .command-status:empty{display:none}#preview-choices{display:grid;gap:8px;margin-top:8px}

.appearance-icon{pointer-events:none;width:17px;height:17px;vertical-align:-4px;margin-right:6px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round}

.center-rotation-control{display:flex;align-items:center;gap:7px;font-size:11px;margin:7px 0 14px}.center-rotation-control input{accent-color:#ec73ae}

/* Shared icon and disclosure language. Labels remain visible for host actions. */
.ui-icon{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.with-icon{display:inline-flex;align-items:center;justify-content:center;gap:7px}
.icon-button{display:inline-flex;align-items:center;justify-content:center}
.remove-player .ui-icon,.segment-row .icon-button .ui-icon,.note-header .ui-icon{width:15px;height:15px}
.host-toolbar{max-width:100%;flex-wrap:wrap}.host-toolbar button{white-space:nowrap}
.host-toolbar .ui-icon{width:15px;height:15px}
#add-segment.with-icon{display:flex}
#remove-center-image .ui-icon,#remove-background-image .ui-icon{width:14px;height:14px}
:is(.wheel-library,.appearance-controls,.values-tools,.script-guide,.reference-topic,.transfer-dialog details)>summary,.wheel-library .appearance-controls>summary{display:flex;align-items:center;gap:8px;list-style:none}
:is(.wheel-library,.appearance-controls,.values-tools,.script-guide,.reference-topic,.transfer-dialog details)>summary::marker{content:''}
:is(.wheel-library,.appearance-controls,.values-tools,.script-guide,.reference-topic,.transfer-dialog details)>summary::-webkit-details-marker{display:none}
:is(.wheel-library,.appearance-controls,.values-tools,.script-guide,.reference-topic,.transfer-dialog details)>summary::before{content:'';display:block;flex:0 0 6px;width:6px;height:6px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(-45deg);margin-right:3px;color:#c7aecf}
:is(.wheel-library,.appearance-controls,.values-tools,.script-guide,.reference-topic,.transfer-dialog details)[open]>summary::before{transform:rotate(45deg)}
.appearance-icon{margin-right:0}

/* Longer rules are reading copy, while short outcomes remain celebratory. */
.result-overlay .result h2{font-size:clamp(23px,2vw,32px);line-height:1.3;text-wrap:pretty}
.result-overlay .result[data-copy-length=medium] h2{font-size:clamp(21px,1.8vw,28px);font-weight:600;line-height:1.4;letter-spacing:0}
.result-overlay .result[data-copy-length=long] h2{font-size:clamp(18px,1.5vw,22px);font-weight:400;line-height:1.5;letter-spacing:0;text-align:left}
.foil-sheen{opacity:.45;animation:foil-sweep 6s ease-in-out infinite;animation-delay:var(--foil-delay)}
.foil-sparkle{opacity:.25;animation:foil-twinkle 3.8s ease-in-out infinite}
.fire-haze{transform-origin:0 0;animation:fire-drift var(--fire-duration) ease-in-out infinite;animation-delay:var(--fire-delay)}
.wheel-turning :is(.fire-haze,.fire-ember,.fire-glow,.foil-sheen,.foil-sparkle),.result-open :is(.fire-haze,.fire-ember,.fire-glow,.foil-sheen,.foil-sparkle),.effects-offscreen :is(.fire-haze,.fire-ember,.fire-glow,.foil-sheen,.foil-sparkle),.page-hidden :is(.fire-haze,.fire-ember,.fire-glow,.foil-sheen,.foil-sparkle){animation-play-state:paused}
.fire-ember{opacity:0;animation:fire-ember-rise var(--ember-duration) ease-out infinite;animation-delay:var(--fire-delay)}
@keyframes fire-drift{0%{transform:translate(0,0) scale(.85,.7);opacity:.15}35%{opacity:.75}65%{transform:translate(var(--fire-sway),calc(-.6 * var(--fire-drift))) scale(1.1,1.08);opacity:.65}100%{transform:translate(0,calc(-1 * var(--fire-drift))) scale(1.2,1.2);opacity:.05}}
.fire-glow{animation:fire-glow 3.4s ease-in-out infinite alternate}
@keyframes fire-glow{from{opacity:.55}to{opacity:1}}
@keyframes fire-ember-rise{0%{opacity:0;transform:translateY(0)}25%{opacity:.9}100%{opacity:0;transform:translate(var(--ember-sway),calc(-1 * var(--ember-rise)))}}
@media(prefers-reduced-motion:reduce){.fire-haze{animation:none;opacity:.65}.fire-ember{animation:none;opacity:.5}.fire-glow{animation:none;opacity:.75}}
.wheel-label-outgoing{animation:wheel-label-retire 380ms ease-in forwards}
.wheel-label-updated{animation:wheel-label-reveal 800ms ease-out both}
@keyframes wheel-label-retire{0%,40%{opacity:1}100%{opacity:0}}
@keyframes wheel-label-reveal{0%,48%{opacity:0}100%{opacity:1}}
@media(prefers-reduced-motion:reduce){.wheel-label-updated{animation:wheel-label-reveal-reduced 120ms linear}.wheel-label-outgoing{display:none}}
@keyframes wheel-label-reveal-reduced{from{opacity:.55}to{opacity:1}}
@keyframes foil-sweep{0%,100%{transform:translateX(calc(-1 * var(--foil-travel)));opacity:.3}50%{transform:translateX(var(--foil-travel));opacity:.65}}
@keyframes foil-twinkle{0%,25%,100%{opacity:.15}50%{opacity:1}75%{opacity:.35}}
@media(prefers-reduced-motion:reduce){.foil-sheen,.foil-sparkle{animation:none}.foil-sheen{opacity:.35}.foil-sparkle{opacity:.5}}

/* Keep the large wheel shadow static while the rotor is composited independently. */
.wheel-stage{filter:none;border-radius:50%;box-shadow:0 9px 22px #0005}
.wheel-turning .rotor{will-change:transform}

.page-hidden .rim-glow,.effects-offscreen .rim-glow{animation-play-state:paused}

/* Dense custom wheels retain every surface effect, with bounded simultaneous motion. */
.effect-static :is(.fire-haze,.fire-ember,.fire-glow,.foil-sheen,.foil-sparkle){animation:none}
.effect-static .fire-haze{opacity:.5}.effect-static .fire-ember{opacity:.55}.effect-static .fire-glow{opacity:.7}

#center-image-status:empty,#background-image-status:empty{display:none}
