/* ROTOR Final 01.4 — one button language, taken from the loading music chip Joey likes:
   clear glass pill, 1 px silver rim, inset top highlight, Inter 700 tracked caps in silver.
   Primary = lime pill with dark text (pressable = lime). PLAY = rotor-yellow pill. Loads last on every page. */
:root{--c-rim:#e9eef2a6;--c-rim-hi:#e9eef2;--c-face:linear-gradient(145deg,#ffffff1f,#ffffff05 45%,#00000040);--c-shadow:inset 0 1px 0 #ffffffd0,inset 0 -1px 0 #e9eef22e,0 12px 30px #0006;--c-ease:cubic-bezier(.22,.61,.36,1)}
html body :is(.rotor-access-route,.cm-view-rail button,.cm-view-rail summary,.cm-primary a,.cm-learning a,#cmAnglesToggle,#rotorSceneTraining,.topActions button,.topActions a,.rotor-club-button,details.stadium-match-tools>summary,#viewControls button,.rotor-view-pip header button,.rotor-view-pip header select,#resumePanel button,.f1-coach button,.rotor-badge-inspect,.rotor36-session-tools button,.match-frame-destinations a,.match-frame-destinations button,.match-frame-ready,.match-frame-opponent,.rotor-emblem-panel button,#menu .entry button,.d22-level button,#d22Result .actions :is(a,button),.f1-bubble-toggle,.cm-full-room,.stadium-room-nav :is(a,button),#cmRacketControl,#f02Back,.f3-chip){
  border:1px solid var(--c-rim)!important;border-radius:999px!important;background:var(--c-face)!important;box-shadow:var(--c-shadow)!important;
  color:#e9eef2!important;font:700 11px/1 Inter,system-ui,sans-serif!important;letter-spacing:.14em!important;text-transform:uppercase;text-decoration:none!important;text-shadow:0 1px 2px #000c!important;
  min-height:40px;padding:0 16px!important;display:inline-flex!important;align-items:center;justify-content:center;gap:8px;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  transition:border-color 300ms var(--c-ease),transform 160ms var(--c-ease),box-shadow 300ms var(--c-ease),color 300ms var(--c-ease)!important;cursor:pointer}
html body :is(.rotor-access-route,.cm-view-rail button,.cm-view-rail summary,.cm-primary a,.cm-learning a,#cmAnglesToggle,#rotorSceneTraining,.topActions button,.topActions a,.rotor-club-button,details.stadium-match-tools>summary,#viewControls button,.rotor-view-pip header button,#resumePanel button,.f1-coach button,.rotor-badge-inspect,.rotor36-session-tools button,.match-frame-destinations a,.match-frame-destinations button,.match-frame-ready,.rotor-emblem-panel button,#menu .entry button,.d22-level button,#d22Result .actions :is(a,button),.f1-bubble-toggle,.cm-full-room,#cmRacketControl,#f02Back):is(:hover,:focus-visible){border-color:var(--c-rim-hi)!important;transform:translateY(-1px);box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #e9eef244,0 14px 34px #0007,0 0 0 1px #c7fc6833!important}
html body :is(.rotor-access-route,.cm-view-rail button,.cm-primary a,.topActions button,#resumePanel button,.rotor-emblem-panel button,#menu .entry button,.d22-level button):active{transform:translateY(1px)}
html body :is(a,button,summary,select):focus-visible{outline:2px solid #c7fc68!important;outline-offset:3px!important}
/* Primary actions: lime pill, dark text (the chip's PLAY WITH SOUND). */
html body :is(#resumePanel #resume,.cm-primary .cm-player-create,.rotor-emblem-panel .rotor-emblem-save,.match-frame-ready,#d22Result .again,.d22-level button[aria-pressed=true],.rotor-access-route[aria-current],.cm-view-rail button[aria-pressed=true]){
  background:linear-gradient(180deg,#e2ff9e,#c7fc68 55%,#a6dc45)!important;border-color:#e8ffb8!important;color:#101706!important;text-shadow:none!important;box-shadow:inset 0 1px 0 #ffffffb3,inset 0 -2px 0 #6a9a1c66,0 0 18px #c7fc6838,0 10px 26px #0006!important}
/* PLAY: rotor-yellow pill, Barlow Condensed. */
html body :is(:is(#rotorSceneEnterArena,#f11HomeBig),#menu .entry #play,.rotor-access-play){
  border:1px solid #ffe36b!important;border-radius:999px!important;background:linear-gradient(180deg,#ffe066,#ffcf00 58%,#e6b900)!important;color:#101706!important;text-shadow:none!important;
  box-shadow:inset 0 1px 0 #fff6c4,inset 0 -2px 0 #9a7a0066,0 0 22px #ffcf0040,0 12px 30px #0007!important;font:800 18px/1 'Barlow Condensed',Inter,sans-serif!important;letter-spacing:.06em!important}
html body :is(#rotorSceneEnterArena,#f11HomeBig) *{color:#101706!important}
html body :is(:is(#rotorSceneEnterArena,#f11HomeBig),#menu .entry #play,.rotor-access-play):is(:hover,:focus-visible){transform:translateY(-1px);box-shadow:inset 0 1px 0 #fff,0 0 30px #ffcf0066,0 14px 34px #0008!important}
/* Icon-only buttons (PiP header, dock on small screens): round chips. */
html body :is(.rotor-view-pip header button,.topActions #pause){width:40px;padding:0!important}
/* Disabled */
html body :is(button,a)[disabled],html body :is(button,a)[aria-disabled=true]{opacity:.45!important;cursor:not-allowed;transform:none!important}
/* The painter's leftover icon slot is unused now. */
html body .rotor-ui3d-icon{display:none!important}
/* Win over final02-opening's lane pill (two ids) — PLAY DUEL is the yellow pill. */
html body #final02Lane :is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig){border:1px solid #ffe36b!important;border-radius:999px!important;background:linear-gradient(180deg,#ffe066,#ffcf00 58%,#e6b900)!important;box-shadow:inset 0 1px 0 #fff6c4,inset 0 -2px 0 #9a7a0066,0 0 22px #ffcf0040,0 12px 30px #0007!important;min-width:220px;min-height:60px;padding:0 28px!important}
html body #final02Lane :is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig) :is(.f2-pill-label,.f2-pill-sub,span,strong){color:#101706!important;text-shadow:none!important;opacity:1!important}
html body #final02Lane :is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig) .f2-pill-label{font:800 22px/1 'Barlow Condensed',Inter,sans-serif!important;letter-spacing:.06em}
html body #final02Lane #rotorSceneTraining#rotorSceneTraining{border:1px solid var(--c-rim)!important;border-radius:999px!important;background:var(--c-face)!important;box-shadow:var(--c-shadow)!important;color:#e9eef2!important}

html body .topActions .f3-home{display:inline-flex!important}
html body.stadium-arena.playing:not(.paused-f1) .topActions .f3-home{opacity:.55}
@media (max-width:480px){html body .topActions .f3-home{padding:0 10px!important;font-size:9.5px!important}}


/* ── Refined chip pass (matches the loading music chip exactly; nothing louder) ── */
/* Icons sit in a small chrome disc, like the chip's album disc. */
html body :is(.rotor-access-route,.cm-view-rail button,.f3-home-court) :is(svg,.rotor-access-glyph,img){width:22px!important;height:22px!important;padding:3px;border-radius:50%;box-sizing:border-box;background:radial-gradient(circle at 35% 30%,#ffffff40,#ffffff08 60%);box-shadow:inset 0 0 0 1px #e9eef2b3,inset 0 2px 3px #ffffff40,inset 0 -2px 3px #0006}
/* Hover: silver rim brightens + thin lime ring (pressable = lime). No tilt, no fills. */
html body :is(.rotor-access-route,.cm-view-rail button,.cm-view-rail summary,.cm-primary a,.cm-learning a,#cmAnglesToggle,.topActions button,.topActions a,.rotor-club-button,details.stadium-match-tools>summary,#resumePanel button,.f1-coach button,.rotor36-session-tools button,.match-frame-destinations :is(a,button),.rotor-emblem-panel button,#menu .entry button,.d22-level button,#cmRacketControl,#final02Lane #rotorSceneTraining#rotorSceneTraining,.f3-home-court):is(:hover,:focus-visible){border-color:#ffffff!important;box-shadow:inset 0 1px 0 #ffffffd0,inset 0 -1px 0 #e9eef22e,0 0 0 1px #c7fc6866,0 12px 30px #0006!important;transform:translateY(-1px)}
/* PLAY: polished gold, clean (no stripes), one slow specular sweep. */
@property --spec{syntax:'<percentage>';inherits:false;initial-value:-30%}
@keyframes c-spec{0%{--spec:-30%}60%,100%{--spec:130%}}
html body #final02Lane :is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig):is(#rotorSceneEnterArena,#f11HomeBig){border:1px solid #fff0a0!important;background:linear-gradient(112deg,transparent calc(var(--spec) - 10%),#fffbe2cc var(--spec),transparent calc(var(--spec) + 10%)),linear-gradient(180deg,#ffe57a 0%,#ffcf00 48%,#d9ab00 100%)!important;box-shadow:inset 0 1px 0 #fff8d0,inset 0 -2px 4px #8a6a0088,0 0 26px #ffcf0040,0 14px 34px #000a!important;animation:c-spec 4s cubic-bezier(.22,.61,.36,1) 1.5s infinite}
/* HOME COURT */
html body .f3-home-court{position:fixed;z-index:1700;left:94px;top:30px;min-height:40px;padding:0 14px 0 8px!important;gap:8px}
html body .f3-home-court svg{stroke:#e9eef2;fill:none;stroke-width:1.8}
html body:is(.three-hero-opening,.final02-landing) .f3-home-court{display:none!important}
@media (max-width:480px){html body .f3-home-court{left:84px;top:22px;padding:0 8px!important}html body .f3-home-court span{display:none}}
@media (prefers-reduced-motion:reduce){html body *{animation:none!important}}
/* UX rule: no icon without its word. Dock routes always show icon + label (Joey). */
html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock .rotor-access-route{width:auto!important;min-width:0!important;padding:0 12px 0 6px!important;gap:6px!important}
html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock .rotor-access-route :is(.f2-route-label,span:not(.rotor-access-glyph)){position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip:auto!important;clip-path:none!important;display:inline!important;opacity:1!important;font:700 10px/1 Inter,system-ui,sans-serif!important;letter-spacing:.12em!important;white-space:nowrap}
@media (max-width:900px){html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock{flex-wrap:wrap!important;justify-content:flex-end;max-width:min(440px,calc(100vw - 110px))!important}html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock .rotor-access-route{min-height:34px!important;padding:0 9px 0 4px!important}html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock .rotor-access-route :is(.f2-route-label,span:not(.rotor-access-glyph)){font-size:9px!important;letter-spacing:.08em!important}}
@media (max-width:480px){html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock{display:grid!important;grid-template-columns:repeat(4,auto)!important;gap:4px!important}html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock .rotor-access-route{flex-direction:column;min-height:42px!important;padding:3px 6px!important;gap:2px!important}html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock .rotor-access-route :is(svg,.rotor-access-glyph){width:16px!important;height:16px!important}html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock .rotor-access-route :is(.f2-route-label,span:not(.rotor-access-glyph)){font-size:7.5px!important}}
html body .f3-home-court.f3-in-dock{position:static!important;left:auto;top:auto;min-height:40px}
html body .rotor-access-dock .f3-home-court.f3-in-dock span{position:static!important;width:auto!important;height:auto!important;clip:auto!important;display:inline!important}
/* The dock never runs under the music bubble lane (18..82 px + gap). */
@media (min-width:481px){html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock{max-width:calc(100vw - 130px)!important;flex-wrap:wrap!important;justify-content:flex-end!important;row-gap:6px!important}}
/* Rail: every item sizes to its content; nothing overlaps. Order: PREV · view · NEXT · PAUSE · SETTINGS · RACKET. */
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail{display:flex!important;align-items:center!important;gap:6px!important;width:auto!important;max-width:calc(100vw - 32px)!important;padding:4px!important;flex-wrap:nowrap!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail>*{flex:0 0 auto!important;position:static!important;margin:0!important;transform:none!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmViewRail{display:flex!important;gap:6px!important;width:auto!important;order:1!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmViewRail>*{flex:0 0 auto!important;position:static!important;margin:0!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmViewPicker{max-width:150px!important;overflow:hidden!important;text-overflow:ellipsis;white-space:nowrap;display:block!important;line-height:40px!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmTour{order:2!important;width:40px!important;padding:0!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmViewSettings{order:3!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmRacketControl{order:4!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail :is(#cmPrevious,#cmNext){width:40px!important;padding:0!important}
@media (max-width:480px){html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail{flex-wrap:wrap!important;justify-content:center!important}html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmViewPicker{max-width:110px!important}}
/* Player Studio: the editor starts below the (possibly two-row) dock. */
@media (min-width:761px){html body.f2-identity-studio #rotor25EmblemPanel#rotor25EmblemPanel{top:max(var(--f2-panel-top,0px),118px)!important;max-height:calc(100vh - 190px)!important}}
/* The dock grows with its wrapped row (it was a fixed 44 px box), so anything measuring it sees the real height. */
html body.rotor-access-ready .rotor-access-dock.rotor-access-dock.rotor-access-dock.rotor-access-dock{height:auto!important;min-height:44px}
@media (min-width:761px){html body.f2-identity-studio.f2-identity-studio #rotor25EmblemPanel#rotor25EmblemPanel#rotor25EmblemPanel{top:120px!important;max-height:calc(100vh - 196px)!important}}
/* Final 07.1: PREV/NEXT show chevrons (their labels are font-size 0); VIEW SETTINGS text clears its icon. */
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail :is(#cmPrevious,#cmNext){position:relative!important}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail :is(#cmPrevious,#cmNext)::before{content:""!important;position:absolute!important;left:50%;top:50%;width:8px;height:8px;border:solid #e9eef2;border-width:2px 2px 0 0;background:none!important;translate:-35% -50%;rotate:45deg}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmPrevious::before{translate:-65% -50%;rotate:-135deg}
html body nav.cm-view-rail.cm-view-rail.cm-view-rail.cm-view-rail #cmViewSettings>summary{padding-left:34px!important;background-position:12px 50%!important}
