/* W2-2A (#5): one bottom bar on every route (routes.mjs). Fixed to the bottom; inside a route's dialog while it is
   open (a modal makes everything outside it inert), so it is styled by id + all:unset to shrug off dialog button rules
   (and !important where a dialog forces one, e.g. the Settings terminal's square corners). */
:root{--myr5-bar:calc(88px + env(safe-area-inset-bottom))} /* R20: one dock console height for every page (portal.css draws it); 64px on landscape phones, below */
@media(orientation:landscape) and (max-height:500px){:root{--myr5-bar:calc(64px + env(safe-area-inset-bottom))}} /* R20: a lower console on landscape phones, every page alike */
#coachDock.coach-dock{position:fixed;inset:auto 0 0;z-index:40;box-sizing:border-box;width:auto;height:var(--myr5-bar);margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) 58px repeat(3,minmax(0,1fr));align-items:center;gap:3px;padding:0 6px env(safe-area-inset-bottom);border:0;border-top:1px solid #685077;border-radius:0;background:#171123f2;box-shadow:0 -6px 18px #08050f99;font:600 12px/1.1 system-ui,sans-serif}@media(max-width:400px){#coachDock.coach-dock{font-size:11px}}
#coachDock.coach-dock button{all:unset;box-sizing:border-box;display:flex;align-items:center;justify-content:center;min-width:0;height:46px;padding:0 1px;border:1px solid #70547c;border-radius:9px!important;background:#30223e;color:#f2deab;font:inherit;text-align:center;hyphens:auto;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:box-shadow .15s,background-color .15s}
#coachDock.coach-dock button:focus-visible{outline:3px solid #ffb24d;outline-offset:2px}
#coachDock.coach-dock button[aria-current=page]{color:#fff7e0;border-color:#ffb24d;background:#4d305f;box-shadow:0 0 0 1px #ffb24d,0 0 14px #ffb24d80}
#coachDock.coach-dock .dock-portal{justify-self:center;width:56px;height:56px;padding:0;border:0;border-radius:50%!important;color:#fff;letter-spacing:.3px;background:radial-gradient(circle,#1c1428 0 60%,transparent 62%),conic-gradient(#ff5f1f,#ffff33,#39ff14,#1f51ff,#b026ff,#ff10f0,#ff5f1f);box-shadow:0 0 12px #b026ff80}
#coachDock.coach-dock .dock-portal[aria-current=page]{background:radial-gradient(circle,#2c1d3d 0 60%,transparent 62%),conic-gradient(#ff5f1f,#ffff33,#39ff14,#1f51ff,#b026ff,#ff10f0,#ff5f1f);box-shadow:0 0 0 2px #fff,0 0 18px #ff10f0,0 0 30px #1f51ffaa}
#coachDock .dock-live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#coachDock.coach-dock[data-hint]:before{content:attr(data-hint);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);padding:8px 14px;border-radius:999px;background:#1c1428f2;border:1px solid #ffffff44;color:#f5eaff;white-space:nowrap;font-size:13px;box-shadow:0 4px 16px #0008}
/* #19: a Continue chip above the bar, same pill look as the [data-hint] hint above. It sits higher than that
   hint (+40px, not +10px): on the quilt the metal frame leaves only ~16px clear above the bar including its
   rail, not enough for a real button, so the chip floats over the framed glass clear of the frame and rail. */
#coachDock.coach-dock .dock-continue{position:absolute;left:50%;bottom:calc(100% + 40px);transform:translateX(-50%);padding:8px 14px;border-radius:999px;background:#1c1428f2;border:1px solid #ffffff44;color:#f5eaff;white-space:nowrap;font-size:13px;font-weight:600;box-shadow:0 4px 16px #0008;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
#coachDock.coach-dock .dock-continue:focus-visible{outline:3px solid #ffb24d;outline-offset:2px}
#coachDock.coach-dock .dock-continue[hidden]{display:none}
body[data-tracking=true] #coachDock.coach-dock,body[data-screen=rest] #coachDock.coach-dock{display:none}
body:has(#coachDock){padding-bottom:calc(var(--myr5-bar) + 12px)}
body:has(#coachDock) .armie-inbox-launcher,body:has(#coachDock) .app-update-banner{bottom:calc(var(--myr5-bar) + 10px)}
/* A route's dialog is sized to leave the bar showing (full-screen scenes stop at its top edge). */
dialog[data-route][open]{bottom:var(--myr5-bar);max-height:calc(100dvh - var(--myr5-bar) - 16px)}
dialog[data-route][open]:is(.ach-board,.meditation-panel,.ship-view,#library){height:calc(100dvh - var(--myr5-bar));max-height:none}
.launch-panel button:focus-visible{outline:3px solid #ffb24d;outline-offset:3px}
.launch-panel{color:#f7eefc;background:#21172f;border:1px solid #8b679c;border-radius:16px;width:min(620px,calc(100% - 24px));max-height:85dvh;padding:22px;box-sizing:border-box;font:16px/1.5 system-ui}.launch-panel::backdrop{background:#08050fc9}.launch-panel header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}.launch-panel h2{font-size:24px;margin:0;color:#f4d49b}.launch-panel h3{font-size:18px;margin:24px 0 10px}.launch-panel p{color:#d8c9e0;margin:10px 0}.launch-panel button,.launch-panel .action-link{font:inherit;min-height:44px;border:1px solid #886797;border-radius:8px;background:#382548;color:#fcecd0;padding:9px 14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.launch-panel button:disabled{opacity:.5;cursor:wait}.launch-panel .main-action{background:#eea954;color:#231429;border-color:#ffc779;font-weight:650}.launch-panel form{display:grid;gap:14px}.launch-panel label{display:grid;gap:6px;color:#e7d7ed;font-size:14px}.launch-panel input,.launch-panel select{font:inherit;font-size:16px;box-sizing:border-box;max-width:100%;width:100%;border:1px solid #77568a;border-radius:7px;background:#140d20;color:#fff3e1;padding:11px}.launch-panel .fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.launch-panel .actions{display:flex;gap:8px;flex-wrap:wrap}.launch-panel .hint{font-size:14px;color:#beaccb}.launch-panel .status{padding:10px 12px;border-left:3px solid #efa952;background:#31223e;min-height:22px}.launch-panel .entry{padding:14px 0;border-bottom:1px solid #594166;display:flex;justify-content:space-between;gap:16px;align-items:center}.launch-panel .entry small{display:block;color:#c9b5d3;font-size:14px}.launch-panel img.meal-preview{display:block;width:100%;height:180px;object-fit:contain;background:#120b1b;border-radius:8px;margin:12px 0}.launch-panel [hidden]{display:none!important}.launch-panel .nutrition{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.launch-panel a{color:#ffd59d}.launch-panel output{font-size:22px;font-weight:700;color:#ffcd87}.sync-badge{font:12px system-ui;color:#d6b6e3;display:block;text-align:center;padding:4px}.launch-panel progress{width:100%;accent-color:#eea954}.launch-panel .reward{padding:14px;border:1px solid #72527c;border-radius:10px;margin:10px 0;background:#2c1e3c}.launch-panel .reward[data-unlocked=true]{border-color:#dfa858}.launch-panel .danger{border-color:#c88489;color:#ffd5d8}
@media(max-width:420px){.launch-panel{padding:16px}.launch-panel .nutrition{grid-template-columns:1fr 1fr}.launch-panel .fields{grid-template-columns:1fr}}
.progress-eyebrow{display:block;font:11px ui-monospace,monospace;letter-spacing:2px;color:#bba3c6;margin-bottom:5px}
.accomplishments-panel header{margin-bottom:18px;gap:10px}.accomplishments-panel h2{font-size:clamp(21px,6vw,27px);letter-spacing:-.6px}
.progress-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:16px;border-bottom:1px solid #644774}
.progress-summary output,.progress-summary #accountSets{display:block}.progress-summary #accountSets{font-size:13px;color:#c7b0d2;margin-top:3px}.progress-summary button{font-size:13px}
.accomplishments-panel .record-intro{margin:16px 0 5px}.accomplishments-panel #recordsStatus{font-size:13px}.accomplishments-panel #recordsStatus:empty{display:none}
.record-board{margin-top:22px}.record-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-bottom:2px solid #80618c;padding-bottom:8px}
.record-heading h3{margin:0;font-size:17px;color:#f5d49e}.record-heading>span{font-size:12px;color:#c1aaca;text-align:right;font-variant-numeric:tabular-nums}
.record-board table{width:100%;border-collapse:collapse;table-layout:fixed;font-variant-numeric:tabular-nums;font-size:14px}
.record-board thead th{font-size:10px;text-transform:uppercase;letter-spacing:.7px;font-weight:500;color:#b59bc2;padding:9px 4px 5px;text-align:right}
.record-board thead th:first-child{font-size:0;width:27px}.record-board thead th:nth-child(2){text-align:left;width:41%}.record-board thead th:last-child{width:35px}
.record-board td,.record-board tbody th{padding:12px 4px;border-bottom:1px solid #52395e;text-align:right}.record-board tbody th{text-align:left;font-weight:500;overflow-wrap:anywhere}
.record-board .record-rank{text-align:left;font:12px ui-monospace,monospace;color:#b39bbb}.record-board .record-best{font-size:19px;font-weight:700;letter-spacing:-.6px;color:#ffdb9a}
.record-board tbody td:last-child{font-size:13px;color:#c9b3d4}.record-board tr[data-record=false]{color:#b39bbb}.record-board tr[data-record=false] .record-best{color:#967e9f}
.unlock-board{margin-top:26px}.unlock-board h3{font-size:17px;margin:0 0 6px;color:#f5d49e}.unlock-board ul{padding:0;list-style:none;margin:0}
.unlock-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #52395e;font-size:14px}.unlock-row>span:last-child{font-size:12px;color:#bda6c9}.unlock-row[data-unlocked=true]>span:last-child{color:#f5cf87}
.account-settings{margin-top:25px;padding-top:8px;border-top:1px solid #6c4b7b}.account-settings summary{cursor:pointer;min-height:44px;align-content:center;font-size:14px;color:#cebad9}.account-settings p{overflow-wrap:anywhere}.account-settings .actions{margin:12px 0}.account-settings .hint{font-size:13px}
/* D34 post-download package: the Downloads menu (its own full-screen page), progress strip, Install section and body note; see post-download.mjs. */
.downloads-menu{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-width:none;max-height:none;box-sizing:border-box;padding:0;border:0;background:#163e34;color:#eefff5;font:16px/1.45 Arial,sans-serif;flex-direction:column}
.downloads-menu[open]{display:flex}.downloads-menu::backdrop{background:#163e34}
.downloads-page{flex:1;min-height:0;overflow-y:auto;width:min(620px,100%);margin:0 auto;padding:max(20px,env(safe-area-inset-top)) 16px 12px;box-sizing:border-box}
.downloads-menu h2{margin:0 0 8px;font-size:26px;line-height:1.2}.downloads-menu p{margin:0 0 12px}.downloads-menu .hint{color:#cfe9dc}
.downloads-menu fieldset{border:0;margin:0;padding:0;min-width:0}.downloads-menu legend{padding:0;margin-bottom:4px;font:700 13px Arial,sans-serif;letter-spacing:1px;text-transform:uppercase;color:#cfe9dc}
.download-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:56px;padding:10px 0;border-bottom:1px solid #2f6b5a;cursor:pointer}
.download-row strong{font-size:17px}.download-row small{display:block;font-size:14px;line-height:1.35;color:#cfe9dc}.download-row b{font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}.download-row[data-saved=true] b{color:#b8f0cf}
.download-row em{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:99px;background:#b8f0cf;color:#10281f;font:700 12px/1.5 Arial,sans-serif;font-style:normal;vertical-align:2px}.download-row em[data-lock]{background:transparent;color:#f2deab;border:1px solid #f2deab}.download-row em[hidden]{display:none}
.download-row input{appearance:none;flex:none;position:relative;width:48px;height:28px;margin:0;border:2px solid #a6d4bb;border-radius:99px;background:#0f2a23;cursor:pointer}
.download-row input::before{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#a6d4bb;transition:transform .15s}
.download-row input:checked{background:#b8f0cf;border-color:#b8f0cf}.download-row input:checked::before{transform:translateX(20px);background:#10281f}.download-row input:indeterminate{border-color:#b8f0cf}.download-row input:indeterminate::before{transform:translateX(10px);background:#b8f0cf}
.download-row input:disabled{opacity:.6;cursor:default}.download-row input:focus-visible,.downloads-menu button:focus-visible,.downloads-menu summary:focus-visible{outline:3px solid #fff;outline-offset:3px}
.download-bodies details{margin-left:20px}.download-bodies summary{min-height:44px;align-content:center;cursor:pointer;color:#cfe9dc}.download-bodies details .download-row{min-height:48px}.download-bodies details strong{font-size:16px}
.downloads-footer{padding:12px 16px max(16px,env(safe-area-inset-bottom));border-top:2px solid #a6d4bb;background:#10302a}.downloads-footer>*{max-width:588px;margin-left:auto;margin-right:auto}
.downloads-footer [data-total]{margin-bottom:10px;font-weight:700}.downloads-footer .actions{display:flex;gap:10px}
.downloads-footer .actions button{min-height:48px;padding:10px 18px;border-radius:10px;font:700 16px Arial,sans-serif}
.downloads-footer [data-download]{flex:1 1 60%;background:#b8f0cf;color:#10281f;border:0}.downloads-footer [data-download]:disabled{opacity:.55}.downloads-footer [data-download][hidden]{display:none}.downloads-footer [data-later]{flex:1 1 30%;background:transparent;color:#eefff5;border:2px solid #a6d4bb}
.downloads-status{margin-bottom:10px}.downloads-status[hidden]{display:none}.downloads-status p{margin:0 0 6px}.downloads-status span{display:block;font-size:14px}
.downloads-status button{min-height:44px;margin-top:6px;padding:8px 14px;border:2px solid #a6d4bb;border-radius:9px;background:transparent;color:#eefff5;font:700 14px Arial,sans-serif}.downloads-status button[hidden]{display:none}
@media (prefers-reduced-motion:reduce){.download-row input::before{transition:none}}
.full-download-bar button:focus-visible{outline:3px solid #fff;outline-offset:3px}
.full-download-bar{position:fixed;top:max(8px,env(safe-area-inset-top));left:12px;right:12px;z-index:9998;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 12px;background:#163e34;color:#eefff5;border:2px solid #a6d4bb;border-radius:12px;box-shadow:0 8px 30px #0009;font:14px/1.3 Arial,sans-serif}
/* Not over the quilt either: the portal makes the page behind it inert, so its Pause would look tappable and not be. Settings > Downloads shows the same progress. */
.full-download-bar[hidden],body[data-tracking=true] .full-download-bar,body[data-screen=rest] .full-download-bar,body:has(#portalHome:not([hidden])) .full-download-bar{display:none}
.full-download-bar p{margin:0;flex:1 1 100%}.full-download-bar span{flex:1}.full-download-bar button{min-height:44px;padding:8px 12px;font:14px Arial,sans-serif}
.full-download-bar progress,.full-download-settings progress,.downloads-status progress{display:block;width:100%;height:10px;accent-color:#b8f0cf}.full-download-bar progress[hidden],.full-download-settings progress[hidden],.downloads-status progress[hidden]{display:none}
.full-download-settings{margin-top:20px;border-top:1px solid #917885;padding-top:8px;font:16px/1.5 Arial,sans-serif}.full-download-settings span{display:block;font-size:14px}
.post-download-sections{margin-top:18px;padding-top:14px;border-top:1px solid #917885}.post-download-sections[hidden]{display:none}.post-download-sections h3{margin:0 0 6px}.post-download-sections p{margin:0 0 8px}.post-download-sections [data-actions]{display:flex;flex-wrap:wrap;gap:8px}.post-download-sections button{min-height:44px;padding:8px 12px;border:1px solid #a6d4bb;border-radius:9px;background:#244f43;color:#eefff5;font:700 14px Arial,sans-serif}.post-download-sections button:focus-visible{outline:3px solid #fff;outline-offset:3px}.post-download-sections progress{display:block;width:100%;height:10px;accent-color:#b8f0cf}.post-download-sections progress[hidden]{display:none}
.full-download-settings [data-open]{display:block;min-height:44px;margin:4px 0 8px}.full-download-settings [data-toggle][hidden]{display:none}
.body-download-note{position:fixed;left:50%;top:max(12px,env(safe-area-inset-top));transform:translateX(-50%);z-index:9999;pointer-events:none;width:max-content;max-width:calc(100vw - 32px);box-sizing:border-box;margin:0;padding:10px 16px;border:2px solid #a6d4bb;border-radius:18px;background:#163e34;color:#eefff5;font:14px/1.3 Arial,sans-serif;text-align:center}.body-download-note[hidden]{display:none}

/* Fixed glass panels: depth belongs to the surface; rotation belongs to models. */
.voice-row{display:flex;align-items:center;gap:10px;margin:6px 0}.voice-row button{background:#24443d;color:#d8fff0;padding:7px 12px;min-height:40px}.voice-row span{font-size:10px;color:#c1d6d2}#coachCaption{font-size:12px;color:#afffe6;margin:4px 0;line-height:1.35}#confirmProgress{width:100%;height:6px;accent-color:#9affdf;margin-top:10px}.intro-cue{padding:12px;border:1px solid #aaffdd44;border-radius:12px;background:#193c35b0;color:#e1fff5;font-size:13px;line-height:1.5}#holoStage{max-height:420px}#handHelp summary{font-size:12px;color:#c8efe6;padding:6px 0}
.library-launch{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;background:#31253e;color:#f3e8ff;text-align:left}
.library-launch span{font-size:10px;font-weight:400;color:#d8c6e9}
#library{padding:0;border:0;width:min(900px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;margin:auto;background:radial-gradient(ellipse at 15% 0%,#34404d99,transparent 55%),radial-gradient(ellipse at 90% 90%,#52316199,transparent 50%),#10141cf2;color:#f5faff;overflow:auto}
#library::backdrop{background:#080b14bd;backdrop-filter:blur(8px)}
#handVideo{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;opacity:.32;pointer-events:none}
.glass-shell{position:relative;z-index:1;padding:20px;max-width:900px;margin:auto;min-height:100%;display:flex;flex-direction:column;gap:16px}
.library-header{display:flex;align-items:center;justify-content:space-between;gap:14px;flex:none}.library-header small{color:#8cebe2;font-size:10px;letter-spacing:2px}.library-header h1{font-size:24px;letter-spacing:-.8px;margin:5px 0 0;font-weight:650}
#library button{min-height:52px;border:1px solid #bae9f14d;background:linear-gradient(135deg,#d2eaf91e,#b6bdd909),#172131b5;color:#f5faff;border-radius:14px;font-size:14px;box-shadow:inset 0 1px #f2ffff14,0 8px 24px #0002;backdrop-filter:blur(14px);cursor:pointer;touch-action:manipulation}
#library button:focus-visible{outline:3px solid #aaffef;outline-offset:3px}#library button:hover{border-color:#b4f8ecb3}#library button.hand-hover{border-color:#b4f8ec;box-shadow:0 0 0 3px #aaffef33,inset 0 1px #fff3}#library button.hand-down{background:#3c736ac9;color:#fff}
#closeLibrary{min-width:66px}.movement-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;flex:1;align-content:center}
.movement-card{padding:15px 14px;border:1px solid #bde7f638;border-radius:19px;background:linear-gradient(145deg,#d7e9ff13,#a3c2e804),#142031a1;box-shadow:inset 0 1px #fff1,0 12px 24px #0002;backdrop-filter:blur(16px);min-width:0}
.movement-card .card-select{width:100%;text-align:left;min-height:65px!important;background:transparent!important;border:none!important;box-shadow:none!important;padding:0 5px!important;backdrop-filter:none!important}.card-number{display:block;font-size:10px;color:#88c6c6;font-weight:400;letter-spacing:1px;margin-bottom:9px}.card-title{display:block;font-size:18px;line-height:1.15}.card-kind{font-size:11px;font-weight:400;color:#c4d4e7;display:block;margin-top:7px}
.movement-card .holo-link{width:100%;font-size:12px!important;margin-top:10px;min-height:48px!important;color:#aaf7ed!important}
.library-footer{flex:none;border-top:1px solid #c1e2ff22;padding-top:13px}.hand-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.hand-row button{padding:10px 15px}#handState{font-size:12px;color:#a2e9dd;max-width:40ch}.library-footer p,.library-caption{font-size:12px;line-height:1.5;color:#bccddd;margin:9px 0 0}
.library-pages{display:flex;align-items:center;gap:18px;justify-content:space-between}.library-pages button{min-width:100px}.library-pages span{color:#b9d6dc;font-size:12px}
#startFromLibrary{margin-bottom:12px}.card-select[aria-pressed=true] .card-title{color:#9fffe8}.card-select[aria-pressed=true] .card-kind::before{content:'Selected · ';color:#9fffe8}
#handCursor{position:fixed;width:28px;height:28px;z-index:100;pointer-events:none;border:2px solid #b3fff1;border-radius:50%;transform:translate(-50%,-50%);background:#aaffef30;box-shadow:0 0 20px #aaffef55}#handCursor.pinched{width:18px;height:18px;background:#b3fff1}
#hologramPanel{flex:1;display:flex;flex-direction:column;gap:10px}.holo-heading{display:flex;align-items:center;gap:16px}.holo-heading button{min-width:70px}.holo-heading h2{font-size:18px;font-weight:600}
#holoStage{position:relative;flex:1;min-height:230px;overflow:hidden;border:1px solid #b9ecfa33;border-radius:24px;touch-action:none;background:radial-gradient(ellipse at 50% 85%,#69f9dd1a,transparent 55%),linear-gradient(#b4e9ff0c 1px,transparent 1px),linear-gradient(90deg,#b4e9ff0c 1px,transparent 1px),#0c17207d;background-size:auto,32px 32px,32px 32px,auto;cursor:grab}
#holoStage canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:auto}#holoStatus{position:absolute;inset:16px;z-index:2;font-size:13px;color:#c5ebe9;pointer-events:none}.holo-tools{display:flex;gap:8px;flex-wrap:wrap}.holo-tools button{flex:1;padding:8px;min-width:52px}#holoPlay,#holoReset{flex:2}.use-movement{width:100%;background:#426f6588!important;border-color:#aaffef88!important}
@media(max-width:480px){.glass-shell{padding:16px;gap:13px}.library-header h1{font-size:22px}.movement-cards{gap:9px}.movement-card{padding:10px}.card-title{font-size:16px}.card-kind{font-size:11px}#handState{font-size:11px}.library-launch span{max-width:135px;text-align:right}}
@media(orientation:landscape) and (min-width:700px){.movement-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.glass-shell{padding:18px 24px}#holoStage{min-height:280px}}
@media(prefers-reduced-transparency:reduce){#library button,.movement-card{background:#182636;backdrop-filter:none}#handVideo{opacity:.1}}

/* MOM's purple hardware. Gold readouts. Orange only on interaction. */
.workout-route{margin:14px 0;padding:14px;border:1px solid #90769b55;border-radius:12px;background:#23182de0;font:14px/1.5 system-ui,sans-serif}.workout-route>small{color:#ffd36e;letter-spacing:.1em}.workout-route p{margin:6px 0}.workout-route [data-rounds]{font-size:12px;color:#cbbbd5}.workout-route button{width:100%;margin-top:8px}.workout-route details{margin-top:10px}.workout-route summary{cursor:pointer;min-height:32px}.workout-route ol{list-style:none;padding:0;margin:8px 0}.workout-route li{padding:5px 8px;border-left:2px solid #705082}.workout-route li[aria-current]{border-color:#ffd36e;background:#ffd36e12;color:#ffd36e}.rest-challenge{margin:10px 0}.rest-challenge strong{display:block;color:#ffd36e}
:root{--wall:#171020;--purple:#7a2fc4;--gold:#ffd36e;--cream:#f6eddf;--muted:#bcb0cd;--power:#eacb8b;--font:system-ui,-apple-system,Segoe UI,sans-serif;color-scheme:dark}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#120e19;color:var(--cream);font-family:var(--font)}
body{background:radial-gradient(ellipse at 50% 25%,#38224d 0%,#171020 60%),#171020;max-width:640px;margin:auto;min-height:100dvh;box-shadow:0 0 120px #0009}
[hidden]{display:none!important}button,select,input{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button,select,.file-label{min-height:44px;border:1px solid #6a537b;border-radius:10px;color:var(--cream);background:linear-gradient(160deg,#3b2b49,#271c32);padding:10px 14px;cursor:pointer}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}a{color:var(--gold);text-decoration:none}select{min-width:0}button:active:not(:disabled){border-color:#ff9f4a;box-shadow:0 0 14px #ff8b3833}
.ship-header{height:72px;display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid #90769b44;background:linear-gradient(#44324e,#21172c);box-shadow:inset 0 1px #ae95ba44,inset 0 -5px #0b07123d;position:relative}
.mom-brand{display:flex;align-items:center;gap:8px;color:#e9d3b1;font-weight:950;font-size:17px;line-height:.9;letter-spacing:-.6px}.mom-brand img{width:35px;height:36px;object-fit:contain}.mom-brand>span>span{display:block;font-size:10px;letter-spacing:5px;margin-top:5px}.ship-location{margin-left:auto;font:9px ui-monospace,monospace;letter-spacing:1px;color:#d6bddf}.ship-location small{display:block;font-size:8px;color:#9d8aaf;margin-top:6px;letter-spacing:1.2px}.icon-button{min-width:44px;font-size:22px;padding:6px;background:#24192e;box-shadow:inset 0 1px #ffffff13}
.pod-page{padding:0 18px 8px}.deck-strip{display:flex;justify-content:space-between;align-items:center;height:36px;font:9px ui-monospace,monospace;letter-spacing:1.4px;color:#b8a6c8}.status-light,.voice-led{display:inline-block;width:5px;height:5px;background:#d7aaf5;box-shadow:0 0 9px #d7aaf5;border-radius:50%;margin-right:8px}
.containment-pod{height:clamp(275px,43dvh,460px);position:relative;border:7px solid #49345c;border-radius:70px 70px 38px 38px;background:radial-gradient(ellipse at 50% 65%,#62308a50,transparent 60%),repeating-linear-gradient(0deg,#c4a2f104 0 1px,transparent 1px 4px),linear-gradient(120deg,#3e2b5066,#120e1ddd 28%,#171021 75%,#57376166);box-shadow:inset 0 0 0 2px #9a79ac77,inset 0 0 30px #0009,0 0 0 2px #100919,0 0 0 4px #574465,0 6px 18px #0006;isolation:isolate;overflow:hidden}
.containment-pod:before{content:'';position:absolute;inset:8px;border:1px solid #b88de755;border-radius:56px 56px 28px 28px;pointer-events:none;z-index:4;background:linear-gradient(110deg,transparent 12%,#dfcdff0b 16%,transparent 25%)}
.pod-rim{position:absolute;top:46px;bottom:24px;width:13px;border:1px solid #8d6ba266;border-radius:8px;background:linear-gradient(90deg,#191022,#6e4b84,#271931);z-index:5;box-shadow:0 0 12px #bb61ff33}.rim-left{left:7px}.rim-right{right:7px}.pod-rim:before{content:'';position:absolute;inset:12px 4px;background:repeating-linear-gradient(0deg,#debcff 0 4px,transparent 4px 23px);border-radius:5px;filter:drop-shadow(0 0 3px #d087ff)}
.pod-inscription{position:absolute;top:17px;left:0;right:0;text-align:center;color:#b28fc1;font:9px ui-monospace,monospace;letter-spacing:5px;z-index:3}.coach-mount{position:absolute;inset:26px 18px 39px;z-index:2}#coachLoading{position:absolute;top:40%;left:0;right:0;text-align:center;font-size:12px;color:#aa92be}
.pod-floor{position:absolute;bottom:2%;left:5%;right:5%;height:25%;border-radius:50%;transform:perspective(130px) rotateX(28deg);background:radial-gradient(ellipse,#9365bd30 20%,transparent 60%);border:1px solid #d7b8ff22;z-index:0}
.pod-nameplate{position:absolute;bottom:0;left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 14px;background:linear-gradient(#493253,#25172f);border:1px solid #a1849166;border-radius:8px 8px 0 0;font:8px ui-monospace,monospace;letter-spacing:1.2px;z-index:6}.pod-nameplate a{font:10px var(--font);letter-spacing:0}
.myr5-companion-card{position:relative!important;inset:auto!important;width:100%!important;height:100%!important;border:0!important;border-radius:0!important;background:none!important;backdrop-filter:none!important;overflow:visible!important;box-shadow:none!important;pointer-events:none}
.myr5-companion-stage{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;background:none!important}.myr5-companion-status,.myr5-customize,.myr5-hide{display:none!important}.myr5-companion-stage canvas{position:static!important;width:100%!important;height:100%!important;pointer-events:none!important}
.camera-preview{position:absolute;bottom:48px;right:23px;width:84px;height:108px;border-radius:13px;overflow:hidden;background:#191222;box-shadow:0 3px 14px #0006;border:1px solid #b08bc577;z-index:6;display:none}body[data-tracking=true] .camera-preview{display:block}.camera-preview video,.camera-preview canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.camera-preview canvas{pointer-events:none}.camera-preview span{position:absolute;bottom:0;left:0;right:0;background:#17101bd9;text-align:center;padding:4px;color:#e6d4f3;font:7px ui-monospace,monospace}
.coach-line{display:flex;align-items:center;justify-content:center;min-height:52px;padding:10px 8px;gap:2px}.coach-line p{margin:0;font-size:12px;line-height:1.45;color:#d6c3e4;text-align:center;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.voice-led{flex:none;width:4px;height:4px}
.workout-console{padding:14px 16px 11px;background:linear-gradient(160deg,#493150,#30213a 55%,#23192d);border:1px solid #93789566;border-radius:20px;box-shadow:inset 0 1px #e1c7e12b,inset 0 -5px #09071144,0 7px 16px #0004}
.set-heading{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 10px}.set-heading label{grid-column:1/-1;font:8px ui-monospace,monospace;letter-spacing:1.3px;color:#bba4c7}.set-heading select{border:0;background:transparent;font-weight:650;font-size:20px;letter-spacing:-.6px;padding:4px 0;min-height:36px}.set-heading button{background:transparent;border:0;color:#e0c49c;font-size:11px;padding:5px;min-height:36px}
.simple-counter{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:8px;position:static!important;max-width:none!important;background:none!important}.simple-counter small{display:block;font:8px ui-monospace,monospace;letter-spacing:1.4px;color:#b19abf}.counter-number{display:flex;gap:9px;align-items:baseline;font-variant-numeric:tabular-nums;line-height:1.13}#primary{font-size:58px;font-weight:700;letter-spacing:-3px;color:var(--gold)}.goal-divider{font-size:24px;color:#8b739b;font-weight:200}#goalValue{font-size:29px;color:#ad94bd;letter-spacing:-1px}#primaryLabel{font-size:10px;color:#d4bfdb}.set-actions{display:flex;flex-direction:column;gap:4px;min-width:120px}.primary-action{display:flex;align-items:center;justify-content:center;gap:15px;border:1px solid #fff0bb88;background:linear-gradient(155deg,#ffe1a0,#d4ae64);color:#281b25;font-weight:750;font-size:13px;box-shadow:inset 0 1px #fff8,0 3px 0 #755237;min-height:48px;border-radius:10px;padding:10px 16px}.set-actions #stop{min-height:30px;padding:5px;background:none;border:0;color:#c7b0d4;font-size:11px}.set-track{height:3px;background:#190e22;border-radius:3px;margin-top:13px;overflow:hidden}#activity{height:100%;width:0;background:var(--gold);transition:width .2s}#status{font-size:10px;color:#bca6c9;line-height:1.4;margin:8px 0 0;min-height:14px}
.crew-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:9px}.crew-footer button{display:flex;gap:5px;align-items:center;text-align:left;min-height:44px;background:none;border:0;padding:0;font-size:10px;color:#cbb6da}.crew-footer button span:first-of-type{max-width:155px}.crew-footer>span{font:7px ui-monospace,monospace;letter-spacing:.7px;color:#90789e}.crew-footer canvas{position:static!important;width:24px;height:36px;image-rendering:pixelated}
.pod-dialog{width:min(440px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:22px;border:1px solid #a387b5;border-radius:23px;color:var(--cream);background:linear-gradient(140deg,#392640,#1c1426 65%);box-shadow:0 25px 80px #0009}.pod-dialog::backdrop{background:#100b19d9;backdrop-filter:blur(8px)}.pod-dialog header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.pod-dialog h2{font-size:21px;letter-spacing:-.6px;margin:0}.pod-dialog p{font-size:12px;line-height:1.5;color:#c8b4d4}.settings-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px 10px}.settings-fields label{display:flex;flex-direction:column;gap:6px;font-size:11px;color:#c7b0d3}.settings-fields select{width:100%;font-size:12px;padding:9px}.voice-row{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 14px}.voice-row span{width:100%;font-size:10px;color:#b9a2c6}.voice-row button{flex:1;font-size:12px}.settings-actions{display:flex;gap:8px}.settings-actions button{flex:1;font-size:11px}.pod-dialog details{border-top:1px solid #70578188;margin-top:18px;padding-top:15px;color:#bfa5d1;font-size:12px}.pod-dialog summary{cursor:pointer;min-height:35px}.pod-dialog pre{font-size:9px;white-space:pre-wrap;overflow-wrap:anywhere}#roundControl{display:none!important}#identity{text-align:center}#identityAvatar{position:static;width:96px;height:144px;image-rendering:pixelated}#identityName{font-size:17px;color:var(--gold)}.file-label{position:relative;cursor:pointer}.file-label input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.pod-dialog>a{display:block;padding:16px;font-size:13px}#identityStatus{font-size:10px}
.rest-page{padding:20px 22px 14px;min-height:calc(100dvh - 72px);display:flex;flex-direction:column;background:radial-gradient(ellipse at 50% 45%,#52247855,transparent 60%)}.rest-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.eyebrow{font:8px ui-monospace,monospace;letter-spacing:2px;color:#c59cda;margin:0 0 8px}.rest-heading h1{font-size:27px;letter-spacing:-1px;line-height:1.1;margin:0;font-weight:600;outline:none}.rest-receipt{display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:10px;color:#ad93bf;padding:15px 0 0}#earnedXp{color:var(--gold);font:10px ui-monospace,monospace;white-space:nowrap}
.encounter{position:relative;flex:1;min-height:360px;height:48dvh;max-height:600px;isolation:isolate;overflow:hidden;margin:8px -12px 0}.encounter-orbit{position:absolute;width:75%;height:55%;border:1px solid #9870b633;left:12.5%;top:16%;border-radius:50%;box-shadow:0 0 80px #853eda15}.encounter-orbit:after{content:'';position:absolute;inset:12px;border:1px dashed #a184b422;border-radius:50%}.encounter-grid{position:absolute;left:-30%;right:-30%;bottom:-5%;height:45%;transform:perspective(150px) rotateX(55deg);background:linear-gradient(#b184d022 1px,transparent 1px),linear-gradient(90deg,#b184d022 1px,transparent 1px);background-size:36px 36px;mask-image:linear-gradient(transparent,black)}
.boss-status{position:absolute;top:11px;left:24px;right:24px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font:8px ui-monospace,monospace;letter-spacing:1px;color:#c8b0d8;z-index:5}.boss-health{width:100%;height:3px;background:#1b1224}.boss-health i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#7c3ca5,var(--power));box-shadow:0 0 5px #bb80e566;transition:width .25s}.rest-coach-mount{position:absolute;top:3%;left:-8%;width:116%;height:81%;z-index:2}.rest-coach-mount .myr5-companion-stage{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--power) 14%,transparent))}
.attack-target{position:absolute;inset:11% 8% 28%;background:none!important;border:0!important;box-shadow:none!important;z-index:6;border-radius:45%;touch-action:manipulation}.attack-target span{position:absolute;bottom:3px;left:0;right:0;text-align:center;font:8px ui-monospace,monospace;letter-spacing:2px;color:#d0afd7;opacity:.8}.attack-target:focus-visible{outline:2px solid var(--gold)}
.player-platform{position:absolute;bottom:7%;left:50%;width:166px;height:45px;transform:translateX(-50%);z-index:7;pointer-events:none}.platform-top{position:absolute;inset:0;border-radius:50%;background:repeating-radial-gradient(ellipse,#5b466a 0 10px,#6e547e 11px 12px);border:2px solid #d0aec6;box-shadow:0 -4px 22px #d6a3ff11,inset 0 2px #f4d9ff66;z-index:2}.platform-edge{position:absolute;inset:4px 0 -10px;border-radius:50%;background:linear-gradient(#6b4b7e,#20132c);border:2px solid #8b638f;box-shadow:0 4px 0 #b083d7,0 8px 26px #a661e544}.platform-thruster{position:absolute;top:40px;left:45px;right:45px;height:35px;border-radius:0 0 50% 50%;background:linear-gradient(#d8a3ff88,transparent);filter:blur(5px)}#restAvatar{position:absolute;width:90px;height:135px;bottom:12px;left:38px;z-index:3;image-rendering:pixelated;transform-origin:50% 100%;pointer-events:none}.player-name{position:absolute;bottom:0;left:0;right:0;display:flex;gap:10px;justify-content:center;align-items:center;color:#ceb6db;font-size:10px;z-index:9}#restLevel{color:var(--gold);font:9px ui-monospace,monospace}
.attack-flash{position:absolute;left:34%;top:36%;width:32%;height:25%;border:2px solid var(--power);border-radius:50%;opacity:0;z-index:5;pointer-events:none;box-shadow:0 0 16px color-mix(in srgb,var(--power) 30%,transparent)}.projectile{position:absolute;left:calc(50% - 3px);bottom:23%;width:5px;height:20px;border-radius:50%;background:#ffc478;box-shadow:0 0 9px #ffaa57;opacity:0;z-index:8;pointer-events:none}.damage-float{position:absolute;top:38%;left:0;right:0;text-align:center;color:var(--power);font:700 17px ui-monospace,monospace;z-index:9;opacity:0;pointer-events:none}.encounter.hit .attack-flash{animation:shield-hit .45s ease-out}.encounter.hit .projectile{animation:attack .28s ease-in}.encounter.hit .damage-float{animation:damage .65s ease-out}.encounter.hit #restAvatar{animation:player-hit .28s ease-out}
.rest-feedback{text-align:center;min-height:28px;color:#c4accf;font-size:11px;line-height:1.5;margin:18px 0 5px}.rest-bottom{display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #87659255;padding-top:14px}.rest-clock small{display:block;font:8px ui-monospace,monospace;letter-spacing:1.5px;color:#b596c6}.rest-clock strong{display:block;color:var(--gold);font:500 37px var(--font);font-variant-numeric:tabular-nums;letter-spacing:-1.5px}.rest-bottom>div:last-child{min-width:155px}.rest-bottom .primary-action{width:100%}.text-button{display:block;background:none;border:0;box-shadow:none!important;font-size:10px;color:#c2a5d0;min-height:35px;padding:8px}.shield-note{text-align:center;color:#91789f;font:9px var(--font);line-height:1.4;margin:10px 0 0}
body[data-power=ember]{--power:#ff9d66}body[data-power=arc]{--power:#a4caff}body[data-power=frost]{--power:#b9eadf}
@keyframes shield-hit{0%{opacity:.8;transform:scale(.65)}100%{opacity:0;transform:scale(1.3)}}@keyframes attack{0%{opacity:1;transform:translateY(0)}100%{opacity:.3;transform:translateY(-155px)}}@keyframes damage{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-28px)}}@keyframes player-hit{40%{transform:translateY(-9px) rotate(-6deg)}}
#library{background:radial-gradient(ellipse at 20% 0%,#67437988,transparent 55%),#171020f7}#library .library-header small{color:#dbc095}#library .movement-card{background:linear-gradient(135deg,#60407244,#24152f99);border-color:#a783bd55}#library .holo-link{color:#e7c79a!important}#library .use-movement{background:#654978bb!important;border-color:#c0a0d388!important}#library #holoStage{background-color:#1a1026}#library button{border-color:#b493c455}
@media(min-width:700px){body{border-left:1px solid #a57aad33;border-right:1px solid #a57aad33}.pod-page{padding:0 34px 10px}.ship-header{padding:12px 32px}.containment-pod{height:45dvh;min-height:310px}.rest-page{padding:24px 38px 18px}.encounter{min-height:390px}.crew-footer>span{font-size:8px}}
@media(max-width:370px){.ship-header{padding:10px 14px;gap:8px}.ship-location{font-size:8px;letter-spacing:.3px}.pod-page{padding:0 13px 7px}.workout-console{padding:12px}.set-actions{min-width:108px}.set-heading select{font-size:18px}.rest-page{padding:17px}.rest-heading h1{font-size:24px}.counter-number{gap:6px}#primary{font-size:52px}}
@media(max-height:720px) and (orientation:portrait){.ship-header{height:60px}.containment-pod{height:36dvh;min-height:235px}.coach-line{min-height:44px}.rest-page{min-height:calc(100dvh - 60px)}.encounter{min-height:290px}.rest-heading h1{font-size:23px}.rest-feedback{margin-top:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.encounter.hit .damage-float{opacity:1}.encounter.hit .attack-flash{opacity:.3}}
#restCoachLoading{position:absolute;top:40%;left:10%;right:10%;text-align:center;font-size:12px;color:#c9add8;z-index:3}
.set-actions .primary-action{gap:8px;padding:10px 11px;white-space:nowrap}
.coach-line #coachCaption{color:#e8d5b3}
body:has(#library[open]) .myr5-companion-card{display:none!important}
/* W2-2M #117: the pod is only the viewing port (your character over the pixel world), the control board and BEGIN,
   sized so BEGIN sits above the bar without scrolling (the square's #workout start page scrolls to the top).
   The viewing port takes whatever height is left; ids beat the optional hardware skins' .containment-pod heights. */
#homeScreen{display:flex;flex-direction:column;min-height:calc(100dvh - 72px - var(--myr5-bar) - 12px)}
#homeScreen>.training-view{flex:1 1 0;display:flex;flex-direction:column}
#homeScreen .containment-bay{flex:1;display:flex;min-height:0}
#homeScreen #view{flex:1;height:auto;min-height:150px;background:radial-gradient(ellipse at 50% 45%,transparent 58%,#120c1ccc),var(--pod-world,var(--room-world)) center 86%/cover no-repeat;background-position:center 45%,center bottom;background-size:auto,auto 125%;image-rendering:pixelated;container-type:size}
#homeScreen #view #homeCharacter{inset:0}
#view .pod-floor{display:none}
/* The coach is parked here between scenes (its reveal is the oval's ship intro); the pre-set film still shows it. */
body:not([data-cinematic=pre]) #view .coach-mount,body[data-cinematic=pre] #view :is(.home-character,.coach-line){display:none}
/* Pod header actions: the player's name (opens the avatar) and Customize coach, as plain text links. */
.pod-header-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 2px 2px}
.pod-header-actions #openIdentity,.pod-header-actions a{min-height:44px;display:flex;align-items:center;padding:0 4px;border:0;border-radius:6px;background:none;box-shadow:none;color:var(--gold);font:600 13px var(--font);text-decoration:underline;text-underline-offset:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}
.pod-header-actions #miniAvatar{display:none}
/* Continue popup for today's unfinished set: on the pod, above the bottom bar. */
.continue-workout{position:fixed;z-index:30;left:16px;right:16px;bottom:calc(var(--myr5-bar,0px) + 16px + env(safe-area-inset-bottom,0px));max-width:420px;margin:0 auto;padding:14px 16px;border:2px solid var(--gold);border-radius:14px;background:#21172ff2;box-shadow:0 10px 30px #000a}
.continue-workout .continue-eyebrow{margin:0;color:var(--gold);font:800 11px ui-monospace,monospace;letter-spacing:.16em}.continue-workout h2{margin:4px 0 10px;font:800 19px/1.2 var(--font)}
.continue-workout .continue-actions{display:flex;gap:10px}.continue-workout .continue-actions button{flex:1}
/* Settings open folded: each group is a one-line summary until tapped. */
#settings .settings-group>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:700}
#settings .settings-group>summary::before{content:'▸';margin-right:8px}#settings .settings-group[open]>summary::before{content:'▾'}
/* The coach's voice line is a radio band across the top of the viewing port. */
#view .coach-line{position:absolute;z-index:5;top:32px;left:30px;right:30px;min-height:0;margin:0;padding:5px 10px;border:1px solid #b88de755;border-radius:8px;background:#140e1fd9;box-shadow:none}
@container (max-height:220px){#view .coach-line{top:8px}#view .coach-line p{-webkit-line-clamp:1}#view .home-character{top:44px}#view .camera-preview{bottom:40px;width:60px;height:62px}}
#controls>p:not([id]){margin:0 2px 8px;font-size:11px;line-height:1.35;color:#bca6c9}
#controls .set-actions{flex-direction:row;align-items:stretch;gap:8px}#controls #start{flex:1;min-height:66px}#controls #stop{flex:none;min-width:64px}
/* Goals: the daily circuit and the next-challenge card as a compact drop-down in the deck strip, over the viewing port. */
.deck-strip{position:relative;z-index:12;height:44px;gap:8px}
.pod-goals>summary{display:flex;align-items:center;gap:7px;min-height:36px;padding:0 12px;border:1px solid #6a537b;border-radius:8px;background:linear-gradient(#3b2b49,#271c32);box-shadow:inset 0 1px #ffffff14,0 2px 0 #0b0712;list-style:none;cursor:pointer;color:var(--gold);font:700 10px/1 ui-monospace,monospace;letter-spacing:.16em}
.pod-goals>summary::-webkit-details-marker{display:none}
.pod-goals>summary:after{content:'▾';font-size:11px;letter-spacing:0}.pod-goals[open]>summary:after{content:'▴'}
.pod-goals>summary:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.pod-goals [data-goals-status]{color:var(--cream);letter-spacing:.05em}
.pod-goals-menu{position:absolute;left:0;right:0;top:calc(100% + 2px);max-height:calc(100dvh - 140px - var(--myr5-bar));overflow:auto;overscroll-behavior:contain;padding:12px 14px;border:1px solid #a387b5;border-radius:14px;background:linear-gradient(160deg,#3a2742,#1d1426);box-shadow:0 14px 34px #000c;font:14px/1.45 var(--font);letter-spacing:0;color:var(--cream)}
.pod-goals-menu .daily-circuit>small{color:var(--gold);letter-spacing:.1em}.pod-goals-menu .daily-circuit meter{width:100%}.pod-goals-menu .daily-circuit p{margin:6px 0}.pod-goals-menu .daily-circuit ol{margin:6px 0;padding-left:22px}.pod-goals-menu .daily-circuit button{width:100%}
.pod-goals-menu .workout-route{margin:12px 0 0}
/* The pod's extras ride along to Records (coach-hub.mjs); Meditation there is the #meditate route's opener only. */
.pod-extras .crew-footer{display:none}.pod-extras .meditation-entry{display:none}
@media(max-height:720px) and (orientation:portrait){#homeScreen{min-height:calc(100dvh - 60px - var(--myr5-bar) - 12px)}}
/* The one-time "Updated" notice sits above the bar, which on the pod is exactly where BEGIN is: off the quilt it sits
   over the viewing port instead, clear of BEGIN below and of the downloads bar (.full-download-bar) at the top. */
body:not(:has(#portalHome:not([hidden]))):not([data-screen=rest]) .app-update-banner{top:calc(128px + env(safe-area-inset-top));bottom:auto}
/* FULL WORKOUT circuit dropdown + runner overlay */
#podFullWorkout{position:static}.fw-menu .fw-bar,.fw-menu .fw-style-bar{display:flex;gap:8px;margin:0 0 8px}.fw-menu button{min-height:34px;padding:0 12px;border:1px solid #6a537b;border-radius:8px;background:#3b2b49;color:var(--cream);font:700 12px/1 var(--font)}
.fw-menu .fw-bar button{flex:1}.fw-menu .fw-count{margin:0 0 8px;font-size:12px;color:var(--gold)}
.fw-style{margin:4px 0;border:1px solid #4a3858;border-radius:10px;padding:0 10px}.fw-style>summary{min-height:38px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;font-weight:700;list-style:none}.fw-style>summary::-webkit-details-marker{display:none}.fw-style>summary span{font-size:11px;color:var(--gold)}
.fw-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:36px}.fw-row input{width:20px;height:20px;accent-color:var(--gold)}.fw-row small{flex-basis:100%;margin:-4px 0 6px 28px;font-size:11px;color:#bca6c9}.fw-locked{opacity:.5}
.fw-menu .fw-start{width:100%;min-height:48px;margin-top:10px;background:linear-gradient(#e0b04a,#a87a1f);color:#1b1022;border-color:#f5d27a;font-size:14px;letter-spacing:.08em}.fw-menu .fw-start:disabled{opacity:.4}
#fullWorkoutHud{position:fixed;z-index:2147483000;left:0;right:0;top:0;font:14px/1.4 var(--font);color:var(--cream)}
#fullWorkoutHud[data-mode=exercise]{pointer-events:none}#fullWorkoutHud .fw-top{pointer-events:auto;display:flex;align-items:center;gap:10px;margin:6px;padding:6px 10px;border:1px solid #a387b5;border-radius:10px;background:#1d1426e6}.fw-top span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fw-top button{min-height:32px;padding:0 12px;border-radius:8px;border:1px solid #6a537b;background:#3b2b49;color:var(--cream)}
#fullWorkoutHud[data-mode=break],#fullWorkoutHud[data-mode=summary]{bottom:0;display:grid;place-items:center;background:#0b0712f2}
.fw-panel{width:min(92vw,420px);max-height:92dvh;overflow:auto;text-align:center}.fw-panel h2{margin:0 0 6px}.fw-panel button{min-height:44px;margin:6px 4px;padding:0 18px;border:1px solid #a387b5;border-radius:10px;background:#3b2b49;color:var(--cream);font-weight:700}
.fw-eyebrow{margin:0;color:var(--gold);letter-spacing:.2em;font:700 12px ui-monospace,monospace}.fw-clock{font:700 72px/1.1 ui-monospace,monospace;color:var(--gold)}.fw-big{font-size:22px;font-weight:700;margin:2px 0}.fw-sub{margin:0 0 10px;color:#bca6c9}
.fw-panel ol{text-align:left;padding-left:24px}.fw-panel li span{float:right;color:var(--gold)}
/* FULL WORKOUT switchboard: one brushed-metal plate, bat-handle toggles (same metal as .cb-switch), engraved plates, amber lamps */
.fw-menu{background:repeating-linear-gradient(90deg,#ffffff0a 0 1px,#0000 1px 3px),linear-gradient(#5a4b5a,#34293b 40%,#2a2131);border:2px solid #14101a;box-shadow:inset 0 1px #d4bdca77,inset 0 -3px #0007,0 14px 34px #000c;color:#eadde6;padding-top:14px}
.fw-menu .fw-bar{position:relative;padding:0 16px}.fw-screw{position:absolute;top:50%;width:9px;height:9px;margin-top:-4px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#dccbd4,#6e5f6c 60%,#382d3a);box-shadow:0 1px 2px #000a;pointer-events:none}.fw-screw:before{content:'';position:absolute;left:1px;right:1px;top:4px;height:1px;background:#2a2030;transform:rotate(35deg)}.fw-screw.l{left:0}.fw-screw.r{right:0}
.fw-menu button:not(.fw-start):not(.fw-plug):not(.fw-hub){min-height:44px;border:1px solid #0d0a10;border-radius:7px;background:linear-gradient(#524352,#30273a);box-shadow:inset 0 1px #d4bdca66,inset 0 -2px #0006,0 3px 0 #140f19;color:#d9c9d3;letter-spacing:.12em;text-transform:uppercase;font-size:11px;transition:transform .07s}.fw-menu button:not(.fw-start):not(.fw-plug):not(.fw-hub):active{transform:translateY(2px);box-shadow:inset 0 1px #d4bdca44,0 1px 0 #140f19}
.fw-menu .fw-count{text-align:center;font:700 11px ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.fw-style{border:1px solid #14101a;background:linear-gradient(#3b2f41,#2b2232);box-shadow:inset 0 1px #d4bdca33,0 2px 0 #140f19}.fw-style>summary{min-height:48px}
.fw-plate{padding:4px 10px;border:1px solid #0d0a10;border-radius:4px;background:linear-gradient(#b9a9b3,#7d6e7a);color:#2a2030;text-shadow:0 1px #ffffff55;font:800 12px/1 ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;box-shadow:inset 0 1px #fff8}
.fw-row{position:relative;min-height:48px;padding:0 4px;border-top:1px solid #ffffff10;gap:10px;cursor:pointer}.fw-row input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.fw-row input:disabled{cursor:not-allowed}
.fw-name{flex:1;min-width:0}
.fw-lamp{flex:none;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#6d5a50,#2a1d17);border:1px solid #0d0a10;box-shadow:inset 0 1px #fff3}.fw-row:has(input:checked) .fw-lamp{background:radial-gradient(circle at 35% 30%,#fff2b8,#ffb42e 55%,#a85a00);box-shadow:0 0 8px #ffb42ecc,inset 0 1px #fff8}
.fw-tog{position:relative;flex:none;order:3;width:44px;height:48px;border:1px solid #0d0a10;border-radius:7px;background:linear-gradient(#524352,#30273a);box-shadow:inset 0 1px #d4bdca66,inset 0 -2px #0006,0 3px 0 #140f19}
.fw-tog:before{content:'';position:absolute;left:calc(50% - 4px);top:calc(50% - 21px);width:8px;height:21px;border-radius:4px 4px 2px 2px;background:linear-gradient(90deg,#6b5d69,#f4ebf0 45%,#857583);box-shadow:2px 2px 3px #0009;transform-origin:50% 100%;transform:translateY(0) scaleY(-1);transition:transform .14s cubic-bezier(.3,1.5,.5,1)}
.fw-tog:after{content:'';position:absolute;left:calc(50% - 7px);top:calc(50% - 7px);width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#dccbd4,#6e5f6c 60%,#382d3a);box-shadow:0 2px 3px #000a}
.fw-row input:checked~.fw-tog:before{transform:scaleY(1)}.fw-row input:focus-visible~.fw-tog{outline:3px solid var(--gold);outline-offset:2px}
.fw-locked .fw-tog{filter:brightness(.55) saturate(.5)}.fw-guard{position:absolute;inset:-1px;z-index:2;display:grid;place-items:center;border:1px solid #0d0a10;border-radius:7px;background:repeating-linear-gradient(45deg,#8a7a28 0 5px,#2a2412 5px 10px);color:#ffe9a0;font:800 8px/1 ui-monospace,monospace;letter-spacing:.1em;text-shadow:0 1px #000}
.fw-locked small{color:#c9b0bd}.fw-menu .fw-style-bar{gap:6px}.fw-menu .fw-style-bar button{flex:1}
@media (prefers-reduced-motion:reduce){.fw-tog:before,.fw-menu button{transition:none}}
/* FULL WORKOUT power bus + cables + level ladder */
.fw-body{position:relative}.fw-wires{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:3}
.fw-power{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 22px;border:2px solid #14101a;border-radius:10px;background:repeating-linear-gradient(90deg,#ffffff0d 0 1px,#0000 1px 4px),linear-gradient(#6a5a6a,#3a2e42);box-shadow:inset 0 1px #e6d3de88,inset 0 -3px #0008,0 4px 0 #140f19}
.fw-power .fw-screw.l{left:7px}.fw-power .fw-screw.r{right:7px}.fw-power .fw-screw{top:50%}
.fw-hub{flex:none;width:64px;height:64px;margin:0 auto;border-radius:50%!important;border:3px solid #14101a!important;background:radial-gradient(circle at 38% 30%,#e8dbe3,#8c7b88 45%,#3a2e3c)!important;box-shadow:inset 0 2px #fffa,inset 0 -4px #0008,0 4px 0 #140f19!important;color:#2a2030!important;font:700 30px/1 system-ui!important;letter-spacing:0!important;display:grid;place-items:center}
.fw-hub[data-lit=true]{color:#ffb42e!important;text-shadow:0 0 10px #ffb42e;background:radial-gradient(circle at 38% 30%,#4a3a2a,#2a1d17 60%,#150f0b)!important;box-shadow:inset 0 2px #ffd36e55,0 0 18px #ffb42e99,0 4px 0 #140f19!important}
.fw-bay{height:210px}
.fw-pick{flex:1;min-width:0;margin:0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;font:700 11px ui-monospace,monospace;letter-spacing:.06em;color:var(--gold);text-transform:uppercase}
.fw-socket{flex:none;position:relative;width:30px;height:30px;margin-right:2px;border-radius:50%;border:2px solid #0d0a10;background:radial-gradient(circle,#050308 35%,#4a3d4c 40%,#2c2330);box-shadow:inset 0 2px 4px #000,0 1px #ffffff22}
.fw-style[data-power=on] .fw-socket{box-shadow:inset 0 2px 4px #000,0 0 10px #ffb42e}.fw-spark:after{content:'';position:absolute;inset:-14px;border-radius:50%;background:radial-gradient(circle,#fff8c8,#ffb42e66 40%,#0000 70%);animation:fwspark .5s ease-out both}
@keyframes fwspark{from{transform:scale(.2);opacity:1}to{transform:scale(1.5);opacity:0}}
.fw-style>summary{padding-right:8px}.fw-hint{margin:2px 0 8px;padding:6px 8px;border-radius:6px;background:#0005;color:#e8cf86;font-size:12px}
.fw-plug{position:absolute;left:0;top:0;z-index:5;width:44px;height:44px;padding:0;border:0;background:none;touch-action:none;cursor:grab;will-change:transform}
.fw-plug i{position:absolute;left:12px;top:2px;width:20px;height:40px;border-radius:5px 5px 9px 9px;border:1px solid #0d0a10;background:linear-gradient(90deg,#6b5d69,#f4ebf0 45%,#857583);box-shadow:0 3px 5px #000a}
.fw-plug i:before{content:'';position:absolute;left:3px;right:3px;bottom:-9px;height:10px;background:linear-gradient(90deg,#9a8a96,#fff 50%,#9a8a96);border-radius:0 0 3px 3px;box-shadow:inset 0 -3px #0005}
.fw-plug:focus-visible{outline:3px solid var(--gold);outline-offset:-2px;border-radius:10px}.fw-plug[aria-pressed=true] i{background:linear-gradient(90deg,#8a6a2a,#ffe9a0 45%,#a8802f)}
.fw-capped i{background:repeating-linear-gradient(45deg,#8a7a28 0 5px,#2a2412 5px 10px)!important;filter:grayscale(.4)}.fw-capped i:after{content:'LOCK';position:absolute;inset:12px -6px auto;text-align:center;font:800 8px/1 ui-monospace,monospace;color:#ffe9a0;background:#000a;border-radius:3px;padding:2px 0}
.fw-row.fw-dead{opacity:.55}.fw-row.fw-dead .fw-tog{filter:brightness(.6)}
.fw-lv{display:inline-grid;place-items:center;width:20px;height:20px;margin-right:4px;border-radius:50%;background:#0006;color:var(--gold);font:700 11px ui-monospace,monospace}
.fw-tog:before,.fw-lamp{transition-delay:calc(var(--d,0)*55ms)}.fw-lamp{transition:background .15s,box-shadow .15s}
.fw-style:not([data-power=on]) .fw-row:has(input:checked) .fw-lamp{background:radial-gradient(circle at 35% 30%,#6d5a50,#2a1d17);box-shadow:inset 0 1px #fff3}
.fw-style.fw-pulse[data-power=on] .fw-row:has(input:checked) .fw-lamp{animation:fwlamp .45s both;animation-delay:calc(var(--r)*80ms)}
@keyframes fwlamp{from{background:#2a1d17;box-shadow:none;transform:scale(.6)}to{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.fw-style.fw-pulse .fw-lamp{animation:none!important}.fw-spark:after{animation:none;opacity:.6}.fw-tog:before,.fw-lamp{transition:none;transition-delay:0s}}

/* cord channel: a 64px gutter on the right carries every cable; sockets and the hub sit in it, labels never get crossed */
.fw-body{padding-right:64px}
.fw-power{position:sticky;top:-2px;z-index:6;margin-right:-64px;padding:8px 4px 8px 14px;min-height:72px}
.fw-pw-l{display:flex;flex-direction:column;gap:4px;align-items:flex-start;min-width:0}.fw-pw-l .fw-count{margin:0;text-align:left;font-size:10px}
.fw-hub{width:56px;height:56px;margin:0!important;font-size:26px!important}
.fw-power .fw-screw.r{display:none}
.fw-bay{height:200px;margin-right:-64px}
.fw-style>summary{position:relative}.fw-socket{position:absolute;right:-48px;top:50%;margin:-15px 0 0}
.fw-cord path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.fw-c-sh{stroke:#000;stroke-opacity:.45;stroke-width:11;transform:translate(2px,3px)}
.fw-c-jk{stroke:#221a28;stroke-width:7}
.fw-c-hl{stroke:#8d7f8c;stroke-opacity:.8;stroke-width:1.8;transform:translate(-1.6px,-1.6px)}
.fw-c-pl{stroke:#ffc24a;stroke-width:2.4;stroke-dasharray:5 26;opacity:0;filter:drop-shadow(0 0 3px #ffb42e)}
.fw-cord.on .fw-c-jk{stroke:#2e2018}.fw-cord.on .fw-c-hl{stroke:#ffb42e;stroke-opacity:.55}.fw-cord.on .fw-c-pl{opacity:1;animation:fwpulse 1.1s linear infinite}
@keyframes fwpulse{to{stroke-dashoffset:-31}}
@media (prefers-reduced-motion:reduce){.fw-cord.on .fw-c-pl{animation:none;stroke-dasharray:none;opacity:.5}}
.fw-menu,.fw-menu *{-webkit-user-select:none;user-select:none}

.flip-display{--tile-width:48px;--tile-height:68px;--digit-size:51px;display:inline-flex;align-items:center;gap:5px;font:750 var(--digit-size)/1 ui-monospace,monospace;font-variant-numeric:tabular-nums;letter-spacing:-2px;color:#ffe4a6;vertical-align:middle}
.flip-tile{position:relative;display:block;width:var(--tile-width);height:var(--tile-height);perspective:340px;border:1px solid #7d6584;border-radius:7px;background:#201529;box-shadow:0 4px 0 #130c1a,0 6px 9px #0b061970,inset 0 1px #fff2}
.flip-tile:after{content:"";position:absolute;z-index:5;left:-2px;right:-2px;top:calc(50% - 1px);height:2px;background:#130c1a;box-shadow:-1px 0 #b4979c,1px 0 #b4979c;pointer-events:none}
.flip-half{position:absolute;left:0;width:100%;height:50%;overflow:hidden;backface-visibility:hidden;transform-style:preserve-3d}
.flip-half>span{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:100%;height:var(--tile-height)}
.flip-top,.flip-falling{top:0;border-radius:6px 6px 0 0;background:linear-gradient(#45334c,#2c2034);transform-origin:50% 100%}
.flip-bottom,.flip-landing{bottom:0;border-radius:0 0 6px 6px;background:linear-gradient(#39283f,#4a354c);transform-origin:50% 0}
.flip-bottom>span,.flip-landing>span{bottom:0}
.flip-falling,.flip-landing{display:none;z-index:3}
.is-flipping .flip-falling{display:block;animation:flap-fall 180ms ease-in forwards}
.is-flipping .flip-landing{display:block;animation:flap-land 200ms 180ms cubic-bezier(.15,.65,.25,1.15) both}
.flip-colon{width:13px;text-align:center;color:#ae8faf;letter-spacing:0;font-size:32px;padding-bottom:6px}
@keyframes flap-fall{to{transform:rotateX(-90deg);filter:brightness(.45)}}
@keyframes flap-land{from{transform:rotateX(90deg);filter:brightness(.5)}to{transform:rotateX(0);filter:brightness(1)}}
.simple-counter{gap:18px;flex-wrap:wrap;padding-top:12px}
.simple-counter .counter-readout{min-width:0}
.simple-counter #setNumber{font-size:11px;letter-spacing:1.8px;margin-bottom:9px}
.simple-counter #primary{font-size:var(--digit-size);letter-spacing:-2px;color:#ffe4a6}
.counter-target{display:flex;align-items:baseline;gap:7px;margin-top:11px;color:#bca5c8;font-size:13px}
.counter-target #primaryLabel{font-size:14px;color:#e9d7eb}
.counter-target #goalValue{font-size:14px;font-weight:600;letter-spacing:0;color:#e9d7eb}
.counter-target .target-divider{width:1px;height:11px;background:#816389;margin:0 3px}
.set-actions{flex:1;min-width:115px}.set-actions #stop{font-size:13px;min-height:40px}
.rest-clock #restTime{--tile-width:32px;--tile-height:47px;--digit-size:32px;display:inline-flex;font:750 var(--digit-size)/1 ui-monospace,monospace;letter-spacing:-1px;margin-top:8px;gap:3px}
.rest-clock .flip-colon{font-size:25px;width:8px}.rest-clock small{font-size:11px}
.rest-bottom{flex-wrap:wrap}.rest-bottom>div:last-child{flex:1}
@media(max-width:480px){.simple-counter .set-actions{flex-basis:100%;flex-direction:row;gap:10px}.set-actions .primary-action{flex:1}.set-actions #stop{min-width:70px}.flip-display{--tile-width:43px;--tile-height:61px;--digit-size:46px}.rest-bottom>div:last-child{min-width:125px}}
@media(max-width:350px){.flip-display{--tile-width:39px;--tile-height:57px;--digit-size:42px}.rest-clock #restTime{--tile-width:29px;--tile-height:43px;--digit-size:29px}.rest-bottom{gap:12px}}
@media(prefers-reduced-motion:reduce){.is-flipping .flip-falling{display:none}.is-flipping .flip-landing{display:block;transform:none}}

.food-panel .food-camera{display:flex;width:100%;gap:12px;min-height:72px;font-size:18px}
.food-panel h3{margin:10px 0;font-size:18px}.food-panel form{gap:18px}.food-panel .macro-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.food-panel .nutrient{min-width:0}.food-panel .macro-grid .nutrient{padding:14px 10px;border:1px solid #987d8b;border-radius:6px;background:#231d2b}.food-panel .nutrient span{display:block;font-size:14px;color:#e4d1df}.food-panel .nutrient output{display:block;font:700 20px/1.6 var(--pixel-font);color:#ffdaad;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.food-panel .micro-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.food-panel .micro-grid .nutrient{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #96788666}.food-panel .micro-grid output{font-size:16px;text-align:right}.food-panel .nutrient-note,.food-panel .food-source{font-size:14px}.food-panel #mealConfirmation{display:grid;gap:12px}.food-panel summary{min-height:44px;align-content:center;cursor:pointer;font-size:14px}.food-panel #mealSaveControls>.main-action{width:100%;margin:14px 0 6px}.food-panel .manual-nutrition{grid-template-columns:1fr 1fr}.food-panel .scan-actions:has(>[hidden]):not(:has(>:not([hidden]))){display:none}.food-panel #mealStatus:empty{display:none}.food-panel #foodSuggestions button{font-size:14px}.food-panel .food-source{overflow-wrap:anywhere}.food-panel .saved-nutrients{display:grid;gap:8px;margin-top:10px}.food-panel .saved-nutrients p{font-size:14px;margin:0}.launch-panel .reminder-live{color:#d5edce;font-size:16px;font-variant-numeric:tabular-nums}.launch-panel .reminder-live[data-state=waiting]{color:#f1d1a6}.launch-panel .reminder-next{font-size:14px;color:#e7d49f}.launch-panel .reminder-tuning label{font-size:14px}.launch-panel .message-preview small{font-size:12px}
@media(max-width:520px){.food-panel .macro-grid{grid-template-columns:1fr 1fr}.food-panel .micro-grid{gap:0 16px}.food-panel .micro-grid .nutrient{display:block}.food-panel .micro-grid output{text-align:left}.food-panel .macro-grid .nutrient{padding:10px}.food-panel .fields{grid-template-columns:minmax(0,1fr) 100px}}
@media(max-width:340px){.food-panel .fields,.food-panel .manual-nutrition{grid-template-columns:1fr}.food-panel .micro-grid{column-gap:8px}}
.food-panel .food-sheet{display:contents}.food-panel #cancelMeal{width:100%;margin:0 0 6px}.food-panel #foodDial{display:grid;gap:6px}.food-panel #foodDial:focus{outline:none}.food-panel .food-dial-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.food-panel .food-dial-head h3{margin:0}.food-panel #foodDial p{margin:0}.food-panel .food-dial-big{font:700 26px/1.3 var(--pixel-font);color:#ffcd87;font-variant-numeric:tabular-nums}.food-panel .food-dial-list{margin:4px 0 0;padding:0;list-style:none;display:grid;gap:6px;font-size:15px}.food-panel .food-dial-list li{padding:8px 0;border-bottom:1px solid #59416680}
/* #3 (W3-3A): the floating pyramid IS the Food menu. launch.mjs adds .pyramid-mode while the 3D scanner is up; the room
   and pyramid fill the screen, and the photo flow, meal form and dial cards ride in a bottom sheet over the room. */
#mealsPanel.pyramid-mode{position:fixed;inset:0;width:100%;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:hidden;background:#bba16e}
#mealsPanel.pyramid-mode>header{position:absolute;top:0;left:0;right:0;z-index:4;margin:0;padding:max(12px,env(safe-area-inset-top)) 16px 14px;background:linear-gradient(#21172ff0 62%,#21172f00)}
#mealsPanel.pyramid-mode #pyramidScanner{position:absolute;inset:0;width:auto;height:auto;margin:0;border-radius:0}
#mealsPanel.pyramid-mode #foodCamera,#mealsPanel.pyramid-mode #coachNutritionTargets,#mealsPanel.pyramid-mode:not([data-dial=today]) .recent-meals,#mealsPanel.pyramid-mode .food-sheet>:is(#foodStatus,#mealStatus):empty{display:none}
#mealsPanel.pyramid-mode .food-sheet{position:absolute;left:0;right:0;bottom:0;z-index:3;display:flex;flex-direction:column;gap:8px;max-height:58%;overflow:auto;overscroll-behavior:contain;padding:0 12px max(12px,env(safe-area-inset-bottom));box-sizing:border-box;pointer-events:none}
#mealsPanel.pyramid-mode .food-sheet>*{position:relative;z-index:1;margin:0;pointer-events:auto}
#mealsPanel.pyramid-mode .food-sheet>:is(#foodDial,#foodStatus,#mealStatus,.recent-meals),#mealsPanel.pyramid-mode #mealForm:has(#mealConfirmation:not([hidden])){padding:12px 14px;border:1px solid #8b679c;border-radius:14px;background:#21172ff2;box-shadow:0 6px 24px #0007}
#mealsPanel.pyramid-mode .food-sheet>:is(#foodStatus,#mealStatus){padding:8px 14px;color:#f4e7fb}
#mealsPanel.pyramid-mode #mealForm{gap:10px}
/* The Macros/Micros lists stay as the screen-reader copy of the numbers on the pyramid's screens. */
#mealsPanel.pyramid-mode #mealForm>section{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* #31: the lens opens the existing photo flow full screen, under the header and the sheet's controls. */
#mealsPanel.pyramid-mode #mealScanStage{position:fixed;inset:0;z-index:0;margin:0;border:0;border-radius:0}
#mealsPanel.pyramid-mode #mealScanStage .meal-preview{height:100%;max-height:none;min-height:0;margin:0;object-fit:cover}
/* The scan read-out must show without the optional pocket-hardware.css skin (it only loads for unlocked accounts). */
#mealsPanel.pyramid-mode .meal-scan-overlay{position:absolute;inset:0;pointer-events:none;color:#c3ffec;font:12px/1.5 var(--pixel-font,ui-monospace),monospace;text-shadow:0 1px 3px #000}
#mealsPanel.pyramid-mode .scan-heading{position:absolute;left:12px;right:12px;top:calc(max(12px,env(safe-area-inset-top)) + 62px);display:flex;justify-content:space-between;gap:8px;letter-spacing:1px}
#mealsPanel.pyramid-mode .scan-readout{position:absolute;left:12px;right:12px;top:calc(max(12px,env(safe-area-inset-top)) + 90px);bottom:auto;padding:8px 10px;border-left:2px solid #9dffe1;background:#001b21d9}
#mealsPanel.pyramid-mode .scan-readout>span{display:block}
#mealsPanel.pyramid-mode .scan-actions{justify-content:center}
#mealsPanel.pyramid-mode #mealConfirmation{gap:8px}#mealsPanel.pyramid-mode #mealConfirmation .fields{gap:10px}#mealsPanel.pyramid-mode #mealForm input,#mealsPanel.pyramid-mode #mealForm select{padding:9px 11px}#mealsPanel.pyramid-mode #nutritionBasis{margin:0}
#mealsPanel.pyramid-mode #mealSaveControls:not([hidden]){display:grid;grid-template-columns:1fr 1fr;gap:8px}#mealsPanel.pyramid-mode #mealSaveControls>:not(button){grid-column:1/-1}#mealsPanel.pyramid-mode #mealSaveControls>button{width:100%;margin:0}#mealsPanel.pyramid-mode .food-source{margin:0;font-size:12px}
/* Release 5: as a route Food stops at the bottom bar's top edge (routes.mjs keeps the bar inside the open route); opened
   from the portal it fits the metal frame's window (portal.css .portal-framed sets the box and --face-*), and so does the
   full-screen photo flow. */
#mealsPanel.pyramid-mode[data-route]{height:calc(100vh - var(--myr5-bar));height:calc(100dvh - var(--myr5-bar))}
#mealsPanel.pyramid-mode[data-route] #mealScanStage{bottom:var(--myr5-bar)}
#mealsPanel.pyramid-mode.portal-framed #mealScanStage{inset:auto;left:var(--face-left);top:var(--face-top);width:var(--face-width);height:var(--face-height)}

.pass-crt-rack{display:grid;grid-template-columns:38px minmax(0,300px) 38px;justify-content:center;align-items:stretch;gap:5px;width:min(390px,100%);margin:8px auto 0}
.pass-crt-rack>.workout-performance-controls{grid-column:1/-1}
.pass-crt-switch{align-self:stretch;border:2px solid #596d6b;border-radius:5px;background:linear-gradient(120deg,#35464b,#152629 60%,#34474b);box-shadow:inset 0 1px #afc8c885,inset 0 -3px #081415,0 4px 0 #101a1c;color:#b5eacb;font:700 15px ui-monospace,Consolas,monospace;text-shadow:0 0 8px #89ffd8;cursor:pointer}
.pass-crt-switch:active{transform:translateY(3px);box-shadow:inset 0 2px 5px #0009,0 1px 0 #101a1c}
.pass-crt-switch:disabled{opacity:.4;cursor:default}
.pass-crt-switch:focus-visible,.pass-crt-entry:focus-visible{outline:3px solid #ffe2a0;outline-offset:2px}
.battle-pass-entry.pass-crt-entry{position:relative;display:grid;gap:2px;min-width:0;width:100%;margin:0;padding:6px 9px 8px;border:3px solid #546c70;border-radius:7px;background:radial-gradient(ellipse at 50% 35%,#173d3a,#071416 80%);box-shadow:inset 0 0 0 2px #091518,inset 0 0 17px #6dfdb32b,0 3px 0 #41575a;color:#bce5cb;text-align:left;font:600 9px/1.2 ui-monospace,Consolas,monospace;letter-spacing:.06em;cursor:pointer;text-shadow:0 0 5px #72f6aa6e}
.pass-crt-entry strong{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pass-crt-entry small{font-size:8px;color:#a4c8b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pass-entry-meter{height:3px;margin-top:2px;background:linear-gradient(90deg,#9ff5bf var(--pass-fill),#28483b var(--pass-fill));box-shadow:0 0 5px #74d99c77}
#battlePassPanel.battle-pass-page{box-sizing:border-box;display:none;flex-direction:column;width:min(1120px,calc(100% - 12px));height:calc(100dvh - 12px);max-height:calc(100dvh - 12px);padding:0;overflow:hidden;border:2px solid #7194a7;border-radius:9px;background:#06101c;color:#e6f4f6;box-shadow:0 0 0 5px #122938,0 16px 60px #000d;font-family:ui-monospace,Consolas,monospace}
#battlePassPanel.battle-pass-page[open]{display:flex}
.battle-pass-page::backdrop{background:#020710dc;backdrop-filter:blur(6px)}
.battle-pass-page button{font:inherit;cursor:pointer}.battle-pass-page button:focus-visible,.pass-map-viewport:focus-visible{outline:3px solid #f8db83;outline-offset:2px}
.pass-header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:42px;padding:3px 12px;border-bottom:1px solid #477785;background:linear-gradient(90deg,#143346,#091e2a 65%,#292541)}
.pass-header h2{margin:0;font-size:clamp(.92rem,2.3vw,1.3rem);letter-spacing:.15em;text-shadow:0 0 18px #73d6ee99}
.pass-flight-score{flex:none;display:flex;justify-content:space-between;gap:8px;padding:7px 12px;border-bottom:1px solid #477785;background:#091d2b;color:#b9faff;font-size:clamp(.68rem,2vw,.9rem);font-variant-numeric:tabular-nums}
.pass-flight-score strong:last-child{color:#ffe4a0;text-shadow:0 0 9px #f2b85980}
.pass-close,.pass-fire{border:2px solid #789dab;border-radius:5px;background:linear-gradient(#294553,#152c39);box-shadow:inset 0 1px #d9f8ff55,0 3px 0 #0a1925;color:#e9faff;text-shadow:0 0 7px #9cefff}
.pass-close{padding:5px 9px;white-space:nowrap;font-size:.72rem!important}
.pass-daily{flex:none;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:3px 8px;margin:5px 8px 0;padding:5px 8px;border:1px solid #548b85;border-left:3px solid #86debb;background:linear-gradient(110deg,#112c35e8,#0a1c2be8)}
.pass-daily h3{margin:0;color:#adf0c7;font-size:.65rem;letter-spacing:.09em;white-space:nowrap}.pass-quests{display:flex;flex-wrap:wrap;gap:3px;justify-content:center}.pass-quests span{padding:2px 5px;border:1px solid #45636e;border-radius:3px;color:#afc4c7;font-size:.62rem;white-space:nowrap}.pass-quests span[data-complete=true]{border-color:#8ad4af;background:#1c453c;color:#c8ffe0}.pass-daily strong{font-size:.64rem;color:#f7d987;white-space:nowrap}.pass-daily small{grid-column:1/-1;color:#a8bbc6;font-size:.61rem;line-height:1.15}
.pass-summary{flex:none;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:3px 10px;margin:5px 8px 0;padding:5px 8px;border:1px solid #4d7790;background:#102534}.pass-summary strong{font-size:1rem;color:#ffe4a0}.pass-summary span{justify-self:end;font-size:.69rem;color:#b6d9e8}.pass-summary progress{grid-column:1/-1;width:100%;height:7px;accent-color:#e9c479}.pass-summary b{font-size:.68rem;color:#eac782;white-space:nowrap}
.pass-map-shell{position:relative;flex:1;min-height:0;isolation:isolate;margin:5px 8px 8px;border:2px solid #587d98;border-radius:8px;background:#071326;box-shadow:inset 0 0 35px #000c,0 0 22px #4181a230;overflow:hidden}
.pass-map-viewport{position:relative;width:100%;height:100%;overflow:auto;scrollbar-color:#7aa0af #071a2d;overscroll-behavior:contain;touch-action:pan-y}
.pass-route{position:relative;isolation:isolate;background:linear-gradient(#030916ef,#070c1cf0),url('/pod/worlds/achievements.jpg') center/auto 1100px repeat-y}
.pass-area{position:relative;min-height:1030px;isolation:isolate;overflow:hidden;border-bottom:2px solid #6ca9c077;background:radial-gradient(circle at 82% 17%,#bd66652a,transparent 35%),radial-gradient(circle at 21% 52%,#414ebd36,transparent 38%),linear-gradient(180deg,#080b24,#0b1732 45%,#071728)}
.pass-area:before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 65% 16%,#8157b93b,transparent 38%),radial-gradient(ellipse at 25% 70%,#23a7d123,transparent 35%);filter:hue-rotate(var(--world-hue));opacity:calc(.4 + var(--world-intensity)*.6)}
.pass-area[data-chapter="0"]{background:radial-gradient(circle at 79% 22%,#38466924,transparent 21%),linear-gradient(#020612,#091522 65%,#030b17)}
.pass-area[data-chapter="9"],.pass-area[data-chapter="10"]{background:radial-gradient(circle at 76% 18%,#efb94e39,transparent 30%),linear-gradient(#1b1320,#1b2138 50%,#081c30)}
.pass-area[data-chapter="14"],.pass-area[data-chapter="18"]{background:radial-gradient(circle at 75% 17%,#d8315348,transparent 40%),linear-gradient(#1e0c22,#200d27 55%,#080d22)}
.pass-area[data-chapter="22"],.pass-area[data-chapter="23"],.pass-area[data-chapter="24"]{background:radial-gradient(circle at 78% 15%,#9e6be547,transparent 44%),linear-gradient(#09051e,#101039 55%,#060b1f)}
.pass-sky{position:absolute;inset:0;pointer-events:none;opacity:calc(.28 + var(--world-intensity)*.65);background-image:radial-gradient(2px 2px at 15% 12%,#fff 90%,transparent),radial-gradient(2px 2px at 75% 20%,#bde7ff 90%,transparent),radial-gradient(1px 1px at 45% 36%,#fff 90%,transparent),radial-gradient(2px 2px at 85% 63%,#fff 90%,transparent),radial-gradient(1px 1px at 28% 78%,#fff 90%,transparent);background-size:157px 190px,281px 260px,231px 251px,307px 280px,201px 330px}
.pass-planet{position:absolute;top:7%;right:6%;width:clamp(75px,11vw + 60px,230px);aspect-ratio:1;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 28% 25%,#fff8d6a8 1%,#e9bc8ac9 16%,#5767a1e0 45%,#141b4b 70%,#060a23 82%);box-shadow:inset -18px -20px 27px #020715bc,0 0 35px #96a6e266,0 0 90px #674eb443;filter:hue-rotate(var(--world-hue));opacity:calc(.32 + var(--world-intensity)*.6)}
.pass-area[data-chapter="0"] .pass-planet{width:65px;opacity:.42;box-shadow:0 0 12px #afd9ff44}
.pass-area[data-chapter="14"] .pass-planet,.pass-area[data-chapter="18"] .pass-planet{background:radial-gradient(circle at 30% 30%,#fff7b0,#fa853e 30%,#9a1f34 66%,#1d0818 84%);box-shadow:0 0 65px #f26055aa,0 0 140px #c5356270}
.pass-area[data-chapter="22"] .pass-planet,.pass-area[data-chapter="23"] .pass-planet{background:radial-gradient(circle,#050412 27%,#aa75d0 30%,#221143 42%,#050412 64%);box-shadow:0 0 80px #9562c1aa}
.pass-area[data-future="true"]:after,.pass-current-fog{content:'';position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(#030916b0,#071327b9 55%,#040a18c7)}
.pass-current-fog{bottom:auto;min-height:0}
.pass-world-title{position:relative;z-index:3;display:grid;gap:3px;width:max-content;max-width:70%;padding:24px 5% 0;text-transform:uppercase;letter-spacing:.12em;text-shadow:0 0 12px #000}
.pass-world-title small{font-size:.65rem;color:#efc98c}.pass-world-title b{font-size:clamp(1.05rem,3vw,2rem);color:#d7eaff}.pass-world-title span{font-size:.72rem;color:#a9ccd7}
.pass-constellation{position:absolute;top:25%;right:4%;z-index:1;display:grid;justify-items:center;gap:7px;width:min(35%,245px);text-align:center;filter:drop-shadow(0 0 14px #b991ff70)}
.pass-coach-art{position:relative;width:min(85%,160px);max-height:230px;overflow:hidden;mask-image:radial-gradient(ellipse,#000 55%,transparent 79%);opacity:.85}
.pass-coach-art img{position:absolute;max-width:none;object-fit:fill;filter:contrast(1.15) saturate(1.25) drop-shadow(0 0 10px #cbadff)}
.pass-coach-caption{display:grid;gap:5px;padding:10px;border:1px solid #d9bafb9e;background:radial-gradient(circle at 50% 0,#7e62bf55,transparent 70%),#0e163edb}
.pass-coach-caption span{font-size:.58rem;letter-spacing:.08em;color:#d5baf5}.pass-coach-caption strong{font-size:clamp(.85rem,2vw,1.2rem);color:#fff1ff}.pass-coach-caption small{font-size:.58rem;color:#d1b8f1}.pass-coach-caption p{margin:0;font-size:.62rem;line-height:1.3;color:#dde1f4}
.pass-levels{position:relative;z-index:3;display:grid;gap:19px;list-style:none;margin:0;padding:40px 3% 80px;width:61%;box-sizing:border-box}
.pass-level{display:grid;grid-template-columns:43px minmax(0,1fr) 14px;align-items:center;gap:8px;min-height:62px;padding:6px 9px;border:1px solid #6b879a;border-radius:5px;background:linear-gradient(110deg,#11293de5,#071624ed);box-shadow:0 5px 13px #0008;color:#cbdce8}
.pass-level:nth-child(even){margin-left:7%}.pass-level[data-state=earned]{border-color:#7bb9a0;background:linear-gradient(110deg,#153b3aef,#0b252bf0)}.pass-level[data-state=current]{border:2px solid #f9d888;background:linear-gradient(110deg,#765221f2,#223a49f2);box-shadow:0 0 0 4px #f4d8863b,0 0 30px #eeb96795;color:#fff6dc}.pass-level[data-state=locked]{border-color:#496477;color:#aac0cb;background:#091827e9}
.pass-level-number{display:grid;place-items:center;width:40px;height:40px;border:1px solid currentColor;border-radius:50%;font-size:.92rem}.pass-level-body{display:grid;gap:3px;min-width:0}.pass-level-body strong{font-size:.78rem}.pass-level-body span,.pass-level-body small{font-size:.63rem;color:#b8c9d3}.pass-level[data-state=current] .pass-level-body small{color:#ffe1a2}.pass-level i{font-size:1rem;color:#e6c782;font-style:normal}
.pass-scene{position:absolute;z-index:4;inset:0;width:100%;height:100%;pointer-events:none;image-rendering:pixelated}.pass-fire{position:absolute;z-index:5;right:12px;bottom:12px;min-width:74px;padding:7px 9px;color:#bcfaff}
.workout-performance-controls{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.workout-performance-controls button,.workout-performance-controls select{font:inherit;padding:8px;border:1px solid #65758a;background:#121923;color:#eef3fa}.workout-performance-controls[hidden]{display:none}
#cameraWorkout .workout-performance-controls{position:absolute;left:18px;right:18px;bottom:90px;z-index:20;padding:10px;background:#101620e8;justify-content:center}#cameraWorkout .workout-performance-controls p{flex-basis:100%;margin:0;color:#fff;text-align:center}
@media(max-width:650px){
 #battlePassPanel.battle-pass-page{width:calc(100% - 6px);height:calc(100dvh - 6px);max-height:calc(100dvh - 6px);border-radius:4px}
 .pass-header{min-height:39px;padding:2px 8px}.pass-header h2{font-size:.89rem}
 .pass-daily{grid-template-columns:1fr auto;margin:4px 5px 0;padding:4px 6px;gap:3px}.pass-daily h3{font-size:.61rem}.pass-quests{grid-column:1/-1;grid-row:2;justify-content:flex-start}.pass-quests span{font-size:.6rem;padding:2px 4px}.pass-daily strong{grid-column:2;grid-row:1;font-size:.58rem}.pass-daily small{grid-row:3;font-size:.58rem}
 .pass-summary{margin:4px 5px 0;padding:4px 6px}.pass-summary strong{font-size:.85rem}.pass-summary span,.pass-summary b{font-size:.59rem}.pass-summary progress{height:6px}
 .pass-map-shell{margin:4px 5px 5px}.pass-area{min-height:870px}.pass-world-title{padding-top:18px;max-width:90%}.pass-world-title b{font-size:1.15rem}.pass-world-title small,.pass-world-title span{font-size:.59rem}
 .pass-levels{width:67%;gap:15px;padding:36px 1.5% 60px}.pass-level{grid-template-columns:31px minmax(0,1fr) 8px;gap:4px;min-height:57px;padding:5px}.pass-level-number{width:29px;height:29px;font-size:.75rem}.pass-level-body strong{font-size:.62rem}.pass-level-body span,.pass-level-body small{font-size:.54rem}.pass-level i{font-size:.7rem}
 .pass-constellation{right:2%;top:26%;width:30%;gap:2px}.pass-coach-art{width:93%;max-height:155px}.pass-coach-caption{padding:5px;gap:3px}.pass-coach-caption span{font-size:.45rem}.pass-coach-caption strong{font-size:.7rem}.pass-coach-caption small,.pass-coach-caption p{font-size:.49rem}
 .pass-planet{width:88px}.pass-fire{right:7px;bottom:7px;min-width:58px;padding:6px;font-size:.7rem!important}
}
@media(prefers-reduced-motion:reduce){.pass-planet,.pass-sky,.pass-level{animation:none!important;transition:none!important}}

/* The CRT is a small star chart for its ten-level sector. */
.pass-map-shell{touch-action:none}
.pass-crt-chart{display:block;width:100%;height:22px;margin:2px 0;overflow:visible}
.pass-crt-line,.pass-crt-branch{fill:none;stroke:#66a9a5;stroke-width:.65;opacity:.75;vector-effect:non-scaling-stroke}
.pass-crt-branch{stroke:#70979a;opacity:.5}
.pass-crt-dot{fill:#536f71;stroke:#9cb7ad;stroke-width:.45;vector-effect:non-scaling-stroke}
.pass-crt-dot.is-earned{fill:#adf8cb;stroke:#e7ffe9;filter:drop-shadow(0 0 2px #90ffb9)}
.pass-crt-dot.is-current{fill:#ffe8a1;stroke:#fff7d9;filter:drop-shadow(0 0 3px #ffe29b)}

/* Open space, with one unbroken constellation through all 25 sectors. */
.pass-route{background:#030916}
.pass-area,.pass-area[data-chapter="0"],.pass-area[data-chapter="9"],.pass-area[data-chapter="10"],.pass-area[data-chapter="14"],.pass-area[data-chapter="18"],.pass-area[data-chapter="22"],.pass-area[data-chapter="23"],.pass-area[data-chapter="24"]{min-height:1500px;border:0;background:radial-gradient(ellipse at var(--object-x) var(--object-y),hsl(calc(205 + var(--world-intensity)*280) 80% 42% / .14),transparent 28%),radial-gradient(ellipse at 22% 69%,hsl(calc(245 + var(--world-intensity)*190) 65% 35% / .12),transparent 36%),linear-gradient(180deg,#030916,#070e22 52%,#030916)}
.pass-area:before{background:radial-gradient(ellipse at 53% 44%,#40659a22,transparent 48%);opacity:calc(.2 + var(--world-intensity)*.8)}
.pass-sky{opacity:calc(.52 + var(--world-intensity)*.48);background-image:radial-gradient(1px 1px at 15% 12%,#fff 90%,transparent),radial-gradient(2px 2px at 75% 20%,#bde7ff 90%,transparent),radial-gradient(1px 1px at 45% 36%,#fff 90%,transparent),radial-gradient(2px 2px at 85% 63%,#fff 90%,transparent),radial-gradient(1px 1px at 28% 78%,#fff 90%,transparent);background-size:157px 190px,281px 260px,231px 251px,307px 280px,201px 330px}
.pass-planet,.pass-area[data-chapter="0"] .pass-planet,.pass-area[data-chapter="14"] .pass-planet,.pass-area[data-chapter="18"] .pass-planet,.pass-area[data-chapter="22"] .pass-planet,.pass-area[data-chapter="23"] .pass-planet{top:var(--object-y);left:var(--object-x);right:auto;width:clamp(28px,4vw,55px);aspect-ratio:1;transform:translate(-50%,-50%);opacity:calc(.5 + var(--world-intensity)*.5);background:radial-gradient(circle at 30% 27%,#fff6df 1%,#c3d8eb 12%,#638fbd 37%,#1e406b 66%,#08172d 84%);box-shadow:inset -5px -5px 7px #020715,0 0 14px #9ebdff7a;filter:hue-rotate(var(--world-hue))}
.pass-area:nth-child(5n+2) .pass-planet:after,.pass-area:nth-child(5n+3) .pass-planet:after{content:'';position:absolute;inset:36% -30%;border:2px solid #d2d5e899;border-radius:50%;transform:rotate(-24deg)}
.pass-area:nth-child(5n) .pass-planet{border-radius:33% 56% 45% 61%;clip-path:polygon(20% 0,78% 8%,100% 41%,83% 95%,31% 100%,0 65%)}
.pass-area:nth-child(7n) .pass-planet{background:radial-gradient(circle at 34% 29%,#fff6b0,#f7b773 28%,#bd526f 59%,#34153d 82%);box-shadow:0 0 20px #e6859c99}
.pass-route-lines{position:absolute;inset:0;z-index:1;width:100%;height:100%;overflow:visible;pointer-events:none}
.pass-route-main,.pass-route-branch{fill:none;stroke:#77d9ed;stroke-width:1.5;stroke-opacity:.55;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 4px #52d5f9)}
.pass-route-branch{stroke:#b8a4f3;stroke-width:1;stroke-opacity:.5;stroke-dasharray:3 5}
.pass-area[data-future="true"]:after,.pass-current-fog{z-index:2;background:linear-gradient(#02061170,#03091a82 60%,#02071375)}
.pass-world-title{position:absolute;top:18px;left:5%;z-index:5;gap:2px;padding:0;max-width:90%;text-shadow:0 1px 7px #010511,0 0 14px #79c3ea88}
.pass-world-title small{font-size:.61rem}.pass-world-title b{font-size:clamp(1rem,2.3vw,1.45rem)}.pass-world-title span{font-size:.65rem}
.pass-constellation{top:auto;right:auto;z-index:3;width:min(32vw,180px);transform:translate(-50%,-3px);gap:4px;filter:drop-shadow(0 0 7px #b991ff70)}
.pass-coach-star{display:block;width:10px;height:10px;background:#f7e4ff;transform:rotate(45deg);box-shadow:0 0 0 4px #bc91e14d,0 0 16px 7px #c59bff9c}
.pass-coach-caption{display:grid;gap:2px;padding:0;border:0;background:none;text-shadow:0 1px 5px #010410,0 0 7px #a479d5}
.pass-coach-caption span{font-size:.53rem}.pass-coach-caption strong{font-size:clamp(.72rem,1.5vw,1rem)}.pass-coach-caption small,.pass-coach-caption p{font-size:.55rem}.pass-coach-caption p{line-height:1.15}
.pass-levels{position:absolute;inset:0;z-index:3;display:block;width:auto;margin:0;padding:0}
.pass-level,.pass-level:nth-child(even),.pass-level[data-state=earned],.pass-level[data-state=current],.pass-level[data-state=locked]{position:absolute;top:var(--node-y);left:var(--node-x);display:flex;align-items:center;gap:8px;width:clamp(155px,21vw,205px);min-height:0;margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;transform:translateY(-50%);color:#c5dbe2;text-shadow:0 1px 6px #000,0 0 8px #5ebde375}
.pass-level.is-right,.pass-level.is-right:nth-child(even){flex-direction:row-reverse;transform:translate(-100%,-50%);text-align:right}
.pass-level[data-state=locked]{opacity:.84}.pass-level[data-state=earned]{color:#d6ffe9}.pass-level[data-state=current]{color:#fff3cc;text-shadow:0 0 11px #f8d77c}
.pass-level-number{flex:none;width:30px;height:30px;border:2px solid currentColor;border-radius:50%;background:#0a2030;box-shadow:0 0 10px #78d7ea9a,0 0 0 4px #6fcbdd30;font-size:.72rem;line-height:1}
.pass-level[data-state=earned] .pass-level-number{background:#174a45;box-shadow:0 0 13px #8affc3,0 0 0 4px #87efbd4d}
.pass-level[data-state=current] .pass-level-number{background:#6f552a;box-shadow:0 0 17px #ffe09d,0 0 0 5px #ffdc8a66}
.pass-level-body{gap:2px;min-width:0}.pass-level-body strong{font-size:.72rem;line-height:1.15}.pass-level-body span,.pass-level-body small{font-size:.57rem;line-height:1.1;color:inherit}
.pass-fire,.pass-coach-art{display:none}
@media(max-width:650px){.pass-area,.pass-area[data-chapter="0"],.pass-area[data-chapter="9"],.pass-area[data-chapter="10"],.pass-area[data-chapter="14"],.pass-area[data-chapter="18"],.pass-area[data-chapter="22"],.pass-area[data-chapter="23"],.pass-area[data-chapter="24"]{min-height:1300px}.pass-level,.pass-level:nth-child(even),.pass-level[data-state=earned],.pass-level[data-state=current],.pass-level[data-state=locked]{width:145px;gap:5px}.pass-level-number{width:27px;height:27px;font-size:.65rem}.pass-level-body strong{font-size:.59rem}.pass-level-body span,.pass-level-body small{font-size:.5rem}.pass-constellation{width:30vw}.pass-coach-caption span{font-size:.42rem}.pass-coach-caption strong{font-size:.62rem}.pass-coach-caption small,.pass-coach-caption p{font-size:.44rem}.pass-planet,.pass-area[data-chapter="0"] .pass-planet{width:34px}}

.spotify-terminal{width:min(760px,calc(100vw - 20px));max-width:760px;max-height:calc(100dvh - 20px);padding:0;border:2px solid #e96920;border-radius:18px;background:#120c09;color:#ffcf92;box-shadow:0 0 0 5px #2c160c,0 22px 80px #000d, inset 0 0 35px #f672221c;font:14px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace}
.spotify-terminal::backdrop{background:#030201df;backdrop-filter:blur(6px)}
.sp-deck-hardware{position:relative;display:flex;align-items:center;justify-content:space-between;height:154px;margin:12px 0 18px;padding:12px 28px;border:2px solid #87817c;border-bottom:6px solid #281e1b;border-radius:14px;background:linear-gradient(130deg,#c8b4a921,transparent 38%,#ffc47e12 72%,transparent),repeating-linear-gradient(0deg,#ffffff05 0 1px,transparent 1px 3px),linear-gradient(150deg,#40352f,#16130f 65%,#33231c);box-shadow:inset 0 2px #fff7,inset 0 -4px #0009,0 9px 15px #0009}.sp-platter{position:relative;width:124px;height:124px;border:7px solid #262020;border-radius:50%;background:repeating-radial-gradient(circle,#121012 0 2px,#34303a 2px 3px);box-shadow:0 0 0 3px #8e8581,0 6px 9px #000b,inset 0 0 18px #000}.sp-platter:after{content:'';position:absolute;inset:34%;border:2px solid #c48943;border-radius:50%;background:#f2a24f;box-shadow:0 0 8px #f18931}.sp-platter i{position:absolute;inset:49%;border-radius:50%;background:#f4e0c3;z-index:1}.sp-tonearm{position:absolute;left:137px;top:20px;width:min(26%,150px);height:10px;border:2px solid #9a9699;border-radius:8px;background:linear-gradient(#e6d9ca,#6d6264);transform:rotate(22deg);transform-origin:right center;box-shadow:1px 3px 5px #000}.sp-tonearm:after{content:'';position:absolute;left:-8px;top:-5px;width:18px;height:18px;border-radius:4px;background:#d18c45;box-shadow:0 1px 4px #000}.sp-deck-leds{display:flex;flex-direction:column;gap:10px;margin-left:auto;padding:10px 12px;border:1px solid #6b513b;border-radius:6px;background:#0b0909}.sp-deck-leds b{display:flex;align-items:center;gap:8px;color:#bd9f83;font-size:9px;letter-spacing:.1em}.sp-deck-leds b:before{content:'';width:9px;height:9px;border-radius:50%;background:#e98933;box-shadow:0 0 7px #e98933}
.spotify-terminal *{box-sizing:border-box}.spotify-terminal button,.spotify-terminal a{font:inherit}.spotify-terminal button{min-height:42px;border:1px solid #f68539;border-radius:6px;background:#31170e;color:#ffbd79;cursor:pointer;box-shadow:inset 0 1px #ffd29833,0 3px #100906}.spotify-terminal button:hover,.spotify-terminal a:hover{background:#50210e;color:#fff2d8}.spotify-terminal button:active{transform:translateY(2px);box-shadow:inset 0 2px #100906}.spotify-terminal :focus-visible{outline:2px solid #fff0b8;outline-offset:3px}.spotify-terminal [hidden]{display:none!important}
.sp-shell{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-height:min(780px,calc(100dvh - 20px))}.sp-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px 14px;border-bottom:2px solid #80330f;background:linear-gradient(115deg,#3f1709,#160e0b 75%)}.sp-label{display:block;font-size:11px;font-weight:700;letter-spacing:.15em;color:#f1853e}.sp-top h2{margin:0;font-size:clamp(23px,5vw,36px);line-height:1;letter-spacing:.09em;color:#ffb45c;text-shadow:0 0 14px #f77d2a88}.sp-top .sp-close{min-width:44px;font-size:24px}.sp-screen{overflow-y:auto;padding:18px 22px 42px;background:repeating-linear-gradient(0deg,#0000 0 3px,#0003 3px 4px),radial-gradient(ellipse at 50% 0,#5b250e66,transparent 65%)}.sp-screen>section{margin:0 0 20px;padding:16px;border:1px solid #77401e;border-radius:10px;background:#170d09d9;box-shadow:inset 0 0 20px #0005,0 0 15px #c65a1b13}.sp-status{min-height:20px;margin:0 0 16px;color:#ffd096;letter-spacing:.08em}.sp-account{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sp-account-name{margin-right:auto;color:#ffe3ba}.sp-account-actions{display:flex;gap:8px}.sp-account-actions button{padding:6px 12px}.sp-track{display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;align-items:center;margin:14px 0}.sp-art,.sp-playlist-art{display:grid;place-items:center;overflow:hidden;border:1px solid #a75827;border-radius:6px;background:#29130c;color:#e9883e;font-size:30px}.sp-art{width:76px;height:76px}.sp-art img,.sp-playlist-art img{width:100%;height:100%;object-fit:cover}.sp-track strong,.sp-track span{display:block;overflow-wrap:anywhere}.sp-title{font-size:19px;color:#ffe1ad}.sp-artist{color:#eeb17f}.sp-progress{display:flex;align-items:center;gap:10px}.sp-progress-bar{flex:1;min-width:0;height:9px;accent-color:#ff982f}.sp-time{white-space:nowrap;font-size:11px}.sp-controls{display:flex;justify-content:center;gap:8px;margin:16px 0}.sp-controls button{min-width:64px;padding:6px 12px}.sp-device{margin:8px 0 0;color:#ba8b69;font-size:11px}.sp-hand{display:grid;grid-template-columns:1fr minmax(120px,200px);align-items:center;gap:4px 16px}.sp-hand .sp-label,.sp-hand-status{grid-column:1}.sp-hand-mount{grid-column:2;grid-row:1/3;width:100%;height:150px;display:grid;place-items:center}.sp-hand-mount img{max-width:100%;max-height:100%;object-fit:contain;filter:drop-shadow(0 0 15px #ff8a3180)}.sp-hand-mount canvas{max-width:100%;max-height:100%}.sp-hand-mount.sp-beating{animation:sp-hand-beat var(--sp-beat-ms) ease-in-out var(--sp-phase-ms) infinite}.sp-hand-status{margin:0;color:#d9a174;font-size:11px}.sp-jam p{margin:8px 0 12px}.sp-open-spotify{display:inline-block;padding:9px 12px;border:1px solid #e57b2a;border-radius:6px;color:#ffd5a4;text-decoration:none}.sp-jam-form{margin-top:15px}.sp-jam-form label{display:block;margin:0 0 5px;font-size:11px}.sp-jam-form>div{display:flex;gap:8px}.sp-jam-form input{min-width:0;flex:1;min-height:42px;padding:8px;border:1px solid #a75827;border-radius:6px;background:#0b0706;color:#ffe2bd;font:inherit}.sp-jam-form button{padding:7px 12px}.sp-jam-status{min-height:16px;color:#ffae73;font-size:11px}.sp-playlist-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.sp-count{color:#c58c63;font-size:11px}.sp-playlist-list{list-style:none;padding:0;margin:0}.sp-playlist{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid #5a2b15}.sp-playlist-art{width:52px;height:52px;font-size:20px}.sp-playlist-info{min-width:0}.sp-playlist-info strong,.sp-playlist-info small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-playlist-info strong{color:#ffe1ad}.sp-playlist-info small{color:#b98b68}.sp-playlist-play{padding:5px 10px}.sp-more{display:block;width:100%;margin-top:12px}.sp-shell footer{padding:9px 20px;border-top:1px solid #743211;color:#a87553;text-align:center;font-size:10px;letter-spacing:.07em}
@keyframes sp-hand-beat{0%,100%{transform:translateY(0) rotate(-2deg)}20%{transform:translateY(-9px) rotate(2deg)}50%{transform:translateY(0) rotate(-2deg)}}
@media(max-width:540px){.sp-shell{min-height:calc(100dvh - 20px)}.sp-top{padding:12px}.sp-screen{padding:12px 12px 36px}.sp-screen>section{padding:12px}.sp-deck-hardware{height:120px;padding:8px}.sp-platter{width:95px;height:95px}.sp-tonearm{left:91px;top:12px;width:75px}.sp-deck-leds{gap:5px;padding:6px}.sp-hand{grid-template-columns:1fr 115px}.sp-hand-mount{height:120px}.sp-controls button{min-width:50px;padding:5px}.sp-jam-form>div{flex-wrap:wrap}.sp-jam-form button{width:100%}.sp-account-actions{width:100%}.sp-account-actions button{flex:1}}
@media(prefers-reduced-motion:reduce){.sp-hand-mount.sp-beating{animation:none}.spotify-terminal button{transition:none}}
/* The transparent hand hovers over the small physical controller at the end of the records. */
.sp-screen>section.sp-hand{position:relative;display:block;min-height:255px;padding:0;border:0;background:none;box-shadow:none}
.sp-hand>.sp-label,.sp-hand>.sp-hand-status{position:relative;z-index:2;max-width:45%;font-size:10px}
.sp-hand .sp-hand-mount{position:absolute;z-index:2;right:5%;top:-12px;width:65%;height:190px;pointer-events:none;background:none}
.sp-hand .sp-deck-hardware{position:absolute;left:4%;right:4%;bottom:0;height:105px;margin:0;padding:12px 18px;transform:perspective(500px) rotateX(14deg);background:linear-gradient(145deg,#5b5551,#19181b);border-radius:18px}
.sp-hand .sp-platter{box-sizing:border-box;width:90px;height:90px;margin:0;padding:0;min-width:0;min-height:0;cursor:pointer}
.sp-hand .sp-tonearm{left:98px;top:16px;width:55px}
.sp-mixer{display:flex;align-items:center;gap:14px;margin-left:auto}
.sp-hand .sp-knob{position:relative;width:26px;height:26px;min-width:0;min-height:0;padding:0;border:3px ridge #918e86;border-radius:50%;background:radial-gradient(circle at 35% 30%,#737778,#27272b);box-shadow:0 3px 5px #0009}
.sp-hand .sp-knob:after{content:'';position:absolute;top:1px;left:9px;width:2px;height:8px;background:#ffb568;transform:rotate(-20deg)}
.sp-hand .sp-fader{position:relative;width:18px;height:64px;min-width:0;min-height:0;padding:0;border:2px inset #696562;border-radius:4px;background:#09090a}
.sp-hand .sp-fader:after{content:'';position:absolute;left:-5px;right:-5px;top:25px;height:11px;border:1px solid #efcf9f;background:linear-gradient(#d7b482,#786650);border-radius:2px}
.sp-hand .sp-deck-leds{margin-left:10px;padding:5px;font-size:7px}
@media(max-width:400px){.sp-mixer{gap:8px}.sp-hand .sp-deck-leds{display:none}}

/* The DJ hand stays above the lower-right corner while the records scroll. */
.sp-shell{position:relative;height:min(780px,calc(100dvh - 20px));min-height:0;overflow:hidden}
.sp-shell>.sp-hand-mount{position:absolute;right:10px;bottom:calc(30px + env(safe-area-inset-bottom));top:auto;z-index:4;width:clamp(130px,25vw,190px);height:190px;overflow:hidden;pointer-events:none;background:none}
.sp-shell>.sp-hand-mount canvas{width:100%;height:100%;display:block}
.sp-shell>.sp-hand-mount img{width:100%;height:125%;max-height:none;object-fit:cover;object-position:center top;align-self:start}
.sp-screen>section.sp-hand{min-height:150px}
@media(max-width:540px){.sp-shell{height:calc(100dvh - 20px);min-height:0}.sp-shell>.sp-hand-mount{width:135px;height:170px;right:6px;bottom:calc(32px + env(safe-area-inset-bottom))}}

.actual-dj{width:min(1100px,calc(100vw - 16px));max-width:1100px;background:#100b18;color:#efdbff;border-color:#b376ec;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;box-shadow:0 0 0 4px #231432,0 24px 80px #000d}
.actual-dj .sp-shell{height:min(900px,calc(100dvh - 16px));grid-template-rows:auto auto minmax(0,1fr) auto}
.actual-dj.portal-framed .sp-shell{height:100%;max-height:100%}
.actual-dj .sp-top{padding:18px 24px;background:linear-gradient(110deg,#32173f,#100b18);border-color:#71437f}
.actual-dj .sp-top h2{font-size:34px;letter-spacing:-.05em;text-transform:none;color:#ffb56f;text-shadow:none}
.actual-dj .sp-top h2:after{content:' / MYR5';font-size:11px;letter-spacing:.12em;color:#c299d3}
.actual-dj .sp-screen{background:radial-gradient(ellipse at top,#44235444,transparent 60%);padding:20px 24px 32px}
.actual-dj .sp-shell footer{border-color:#4b3057;color:#b894c6}
.actual-dj .dj-tabs{display:flex;gap:4px;padding:10px 20px;border-bottom:1px solid #4c315b;background:#150e21}
.actual-dj button,.actual-dj select,.actual-dj input{font:inherit}
.actual-dj button{min-height:44px;border:1px solid #76548d;border-radius:8px;padding:8px 12px;color:#efd8ff;background:#241731;box-shadow:none;touch-action:manipulation}
.actual-dj button[aria-pressed=true]{color:#1c1025;background:#ffc07a;border-color:#ffc07a}
.actual-dj button:hover{background:#49315d;color:#fff2e4}
.actual-dj button:disabled{opacity:.55;cursor:wait}
.actual-dj a{color:#ffb677}
.actual-dj input:not([type=range]):not([type=file]),.actual-dj select{min-height:44px;min-width:0;border:1px solid #644777;border-radius:7px;background:#140c1e;color:#efdeff;padding:8px}
.actual-dj input[type=range]{width:100%;accent-color:#ffb36d;min-height:32px;cursor:pointer}
.actual-dj .dj-tabs button{flex:1;font-size:12px;letter-spacing:.08em}
.actual-dj .sp-label{color:#c999ee;font-size:10px;letter-spacing:.12em}
.actual-dj .dj-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}
.dj-live{max-width:60%;font-size:10px;color:#ffbe78;text-align:right;overflow-wrap:anywhere}
.dj-decks{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.dj-deck{padding:18px;border:1px solid #745382;border-radius:14px;background:linear-gradient(140deg,#302034,#16101f);min-width:0}
.dj-deck[data-deck=b]{background:linear-gradient(140deg,#221d39,#15101f)}
.dj-deck-source{font-size:9px;color:#aa8eb8;letter-spacing:.08em}
.dj-record{display:grid;place-items:center;margin:8px auto 20px;width:clamp(110px,22vw,180px);aspect-ratio:1;border-radius:50%!important;border:8px solid #3d3145!important;background:repeating-radial-gradient(circle,#100b16 0 2px,#2f2236 2px 3px)!important;box-shadow:0 0 0 1px #91789d,0 12px 20px #0006!important;position:relative;overflow:hidden}
.dj-record:after{content:'';width:3px;height:36%;background:#dac1de;position:absolute;top:1px;left:50%;transform-origin:bottom;opacity:.3}
.dj-record span{display:grid;place-items:center;position:relative;z-index:1;width:45%;height:45%;border-radius:50%;background:#ffbd78;color:#22122c;font-size:26px;font-weight:900}
.dj-deck[data-deck=b] .dj-record span{background:#b388ef}
.dj-playing .dj-record{animation:dj-spin 6s linear infinite}
.dj-title{display:block;font-size:18px;overflow-wrap:anywhere;color:#ffe1ba;min-height:26px}
.dj-artist{display:block;font-size:11px;color:#bfa2cc;overflow-wrap:anywhere;min-height:22px}
.dj-seek-wrap{display:block;margin-top:8px}.dj-time{display:block;font-size:10px;color:#bf9fd1;text-align:right}
.dj-deck-controls{display:flex;gap:6px;margin:12px 0}.dj-deck-controls button{flex:1;padding:8px;font-size:11px}.dj-deck-controls .dj-play{background:#ffbb72;color:#281333;border-color:#ffbb72}
.dj-tempo{display:flex;align-items:end;gap:8px}.dj-tempo label{display:flex;align-items:center;gap:8px;flex:1;font-size:10px}.dj-tempo input{width:100%;max-width:120px}.dj-tempo button{font-size:11px}
.dj-rate-label{display:grid;grid-template-columns:auto 1fr 40px;gap:8px;align-items:center;font-size:10px;margin-top:8px}
.dj-eq{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px}.dj-eq label{font-size:9px;text-align:center;color:#b99dc9;min-width:0}
.dj-loop-label{display:flex;align-items:center;justify-content:space-between;font-size:10px;margin-top:10px;gap:8px}.dj-loop-label select{flex:1}
.dj-mixer{padding:18px;background:#1a1025;border:1px solid #614473;border-radius:14px;margin:18px 0 24px}
.dj-mixer>label{display:flex;align-items:center;gap:18px;font-weight:700}.dj-crossfader{height:42px}
.dj-master-row{display:flex;align-items:center;gap:20px;margin-top:10px}.dj-master-row label{display:flex;align-items:center;gap:12px;flex:1;font-size:10px}.dj-master-row button{min-width:150px;background:#48305d}
.dj-auto-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}.dj-auto-row label{display:flex;align-items:center;gap:8px;font-size:10px}
.dj-library,.dj-queue-section{padding:18px;border-radius:14px;border:1px solid #51375e;background:#160e20;margin:20px 0}.dj-import{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;border:1px solid #9a6aae;border-radius:8px;font-size:11px;color:#ffc88b;cursor:pointer;overflow:hidden}.dj-import input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.dj-filter{width:100%}.dj-library-status,.dj-provider-note,.dj-visual-reference{color:#ae90be;font-size:11px;line-height:1.6}
.dj-track-list,.dj-queue,.dj-spotify-results,.dj-spotify-queue{list-style:none;margin:10px 0 0;padding:0}
.dj-crate-row{display:flex;align-items:center;gap:6px;padding:10px 0;border-bottom:1px solid #3e294b}.dj-crate-info,.dj-crate-row>strong{flex:1;min-width:0;overflow-wrap:anywhere}.dj-crate-info strong,.dj-crate-info small{display:block}.dj-crate-info strong{font-size:12px;color:#ffe0bd}.dj-crate-info small{font-size:10px;color:#b799c8;margin-top:3px}.dj-crate-row button{min-width:42px;flex-shrink:0;padding:7px;font-size:11px}.dj-crate-row>a{padding:8px}
.dj-queue-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0}.dj-queue-row span{font-size:12px;overflow-wrap:anywhere}.dj-empty{font-size:12px;color:#ac8abf;padding:16px 0}
.dj-provider-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:20px 0}.dj-provider-grid button{font-size:12px;min-height:58px}
.dj-source-form>label,.dj-spotify-search>label{display:block;margin-bottom:8px;font-size:11px;color:#c8a6dd}.dj-source-form>div,.dj-spotify-search>div{display:flex;gap:8px}.dj-source-form input,.dj-spotify-search input{flex:1;min-width:0}
.dj-source-status,.dj-visual-status,.dj-spotify-status{font-size:12px;color:#ffd1a4;line-height:1.6;min-height:24px}.dj-provider-frame{width:100%;height:370px;border:0;border-radius:12px;background:#140b1d;display:block;margin:16px 0}.dj-source-open{display:inline-block;border:1px solid #8755a0;padding:12px;border-radius:8px;text-decoration:none;font-size:12px;margin-top:12px}
.dj-visual-stage{position:relative;border-radius:14px;overflow:hidden;background:#090415;border:1px solid #634678;width:100%;height:clamp(260px,46vh,540px)}.dj-visual-stage:fullscreen{height:100vh;border:0;border-radius:0}.dj-visual-canvas{display:block;width:100%;height:100%}
.dj-visual-controls,.dj-visual-source{display:flex;gap:10px;justify-content:space-between;margin-top:14px}.dj-visual-controls label{display:flex;align-items:center;gap:10px;font-size:10px}.dj-visual-source button{flex:1;font-size:11px}.dj-visual-reference a{font-size:11px}
.dj-react,.dj-spotify-seek,.dj-spotify-volume{display:flex;gap:12px;align-items:center;font-size:10px;color:#c5a5d5;margin-top:12px}
.dj-spotify-extra{padding:16px;border:1px solid #674276;border-radius:12px;background:#1d1128;margin:20px 0}.dj-spotify-device,.dj-spotify-controls{display:flex;gap:8px;align-items:center;margin:14px 0}.dj-devices{flex:1;max-width:100%}.dj-spotify-controls label{display:flex;align-items:center;gap:8px;font-size:10px}
.actual-dj .dj-view>section.sp-hand{position:relative;display:block;min-height:150px;border:0;background:none;padding:0}
.actual-dj:not([data-dj-view=spotify]) .sp-shell>.sp-hand-mount,.actual-dj:not([data-dj-view=spotify]) .sp-status{display:none}
.actual-dj [data-view=spotify]>.sp-account,.actual-dj [data-view=spotify]>.sp-now,.actual-dj [data-view=spotify]>.sp-jam,.actual-dj [data-view=spotify]>.sp-playlists{padding:16px;margin-bottom:18px;border:1px solid #654473;border-radius:12px;background:#1b1023}
@keyframes dj-spin{to{transform:rotate(360deg)}}
.actual-dj .sp-shell{position:relative}.dj-hand-overlay{position:absolute;left:0;top:0;z-index:5;width:64px;max-width:96px;height:84px;pointer-events:none;filter:drop-shadow(0 4px 6px #0009)}.dj-hand-overlay[hidden]{display:none}.dj-hand-overlay canvas,.dj-hand-overlay img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.dj-source-choice{display:grid;gap:5px;font-size:9px;margin:12px 0;color:#dcbce5}.dj-source-choice select{width:100%;min-width:0;padding:8px 4px;font-size:10px}.dj-deck-source-open{width:100%;font-size:9px;margin-bottom:12px}.dj-deck-source-open[hidden]{display:none}.dj-link-form{display:grid;gap:10px;margin:14px 0}.dj-link-form label{display:grid;gap:5px;font-size:10px}.dj-link-form input,.dj-link-form select{min-width:0;width:100%;box-sizing:border-box}.dj-link-list{list-style:none;margin:0;padding:0}.dj-source-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:7px;align-items:center;border-top:1px solid #593766;padding:10px 0}.dj-source-row button{padding:7px;font-size:10px}.dj-original-source{display:block;font-size:10px;color:#f9b772;overflow-wrap:anywhere}.dj-link-status{font-size:11px;color:#d8b5e5}
@media(max-width:600px){.actual-dj .sp-top{padding:14px}.actual-dj .sp-screen{padding:14px 10px 24px}.actual-dj .dj-tabs{padding:8px;gap:4px}.actual-dj .dj-tabs button{padding:8px 4px;font-size:10px}.dj-decks{gap:8px}.dj-deck{padding:12px 8px}.dj-deck-source{font-size:7px}.dj-record{margin-bottom:16px;width:110px}.dj-title{font-size:14px;min-height:38px}.dj-tempo{gap:4px}.dj-tempo label{gap:4px}.dj-tempo input{max-width:70px;padding:5px!important}.dj-tempo button{padding:6px}.dj-rate-label{gap:4px;grid-template-columns:auto 1fr 28px;font-size:8px}.dj-eq{gap:6px}.dj-deck-controls{gap:4px}.dj-deck-controls button{font-size:9px;padding:6px 2px}.dj-mixer,.dj-library,.dj-queue-section{padding:12px}.dj-master-row{gap:12px}.dj-master-row button{min-width:110px;font-size:10px}.dj-auto-row{gap:8px}.dj-auto-row label{font-size:9px}.dj-auto-row select{max-width:110px}.dj-import{font-size:9px;padding:6px}.dj-crate-row{gap:4px}.dj-crate-row button{min-width:36px;padding:5px}.dj-crate-info strong{font-size:11px}.dj-provider-grid{grid-template-columns:repeat(2,1fr)}.dj-source-form>div{flex-wrap:wrap}.dj-source-form button{width:100%}.dj-visual-controls{gap:6px}.dj-visual-controls select{max-width:145px}.dj-visual-controls button{font-size:10px}.dj-spotify-device{flex-wrap:wrap}.dj-spotify-device select{width:100%}}
@media(prefers-reduced-motion:reduce){.dj-playing .dj-record{animation:none}}
.actual-dj .dj-tabs{flex-wrap:wrap}.actual-dj .dj-tabs [hidden],.actual-dj .dj-add-music [hidden],.actual-dj .dj-source-links[hidden]{display:none!important}.actual-dj .dj-tabs [data-view=playlist],.actual-dj .dj-tabs .dj-more{flex:1 0 40%;font-size:14px}.dj-playlist h3{margin:0;font-size:22px;color:#ffe0bd}.dj-playlist-count,.dj-current-source,.dj-next-title{font-size:11px;color:#bca0ca}.dj-playlist-status{font-size:11px;color:#bca0ca;margin:0 0 12px}.dj-simple-player{padding:14px;background:#25172f;border:1px solid #76548d;border-radius:12px}.dj-current-title,.dj-current-source,.dj-next-title{display:block;overflow-wrap:anywhere}.dj-simple-player>div{display:flex;gap:8px;margin:12px 0}.dj-simple-player button{flex:1}.dj-playlist-list{list-style:none;padding:0;margin:14px 0}.dj-playlist-row{padding:12px;border:1px solid #4d315c;border-radius:10px;margin:8px 0}.dj-playlist-row[aria-current=true]{border-color:#ffc07a}.dj-playlist-actions{display:flex;gap:6px;margin-top:8px}.dj-playlist-actions button{min-width:44px;padding:8px;font-size:11px}.dj-playlist-actions button:first-child{flex:1}.dj-add-music{border:1px solid #76548d;border-radius:10px;padding:12px;margin-top:16px}.dj-add-music summary{min-height:44px;display:flex;align-items:center;cursor:pointer;color:#ffd5a3}.dj-add-music label{display:grid;gap:6px;margin:8px 0;font-size:11px}.dj-add-music select{width:100%}.dj-add-local>button{margin:4px 4px 4px 0}

.actual-dj .sp-shell.dj-corner-tapping>footer{box-sizing:border-box;min-height:100px;padding-right:80px;display:flex;align-items:center}

@font-face{font-family:BoardHand0;font-style:normal;font-weight:400;font-display:swap;src:url('/pod/fonts/hand-0.woff2') format('woff2')}
@font-face{font-family:BoardHand2;font-style:normal;font-weight:400;font-display:swap;src:url('/pod/fonts/hand-2.woff2') format('woff2')}
@font-face{font-family:BoardHand6;font-style:normal;font-weight:400;font-display:swap;src:url('/pod/fonts/hand-6.woff2') format('woff2')}
#accountPanel{color-scheme:light;--marker:#204f99;width:min(880px,calc(100vw - 22px));max-width:calc(100vw - 22px);max-height:calc(100dvh - 28px);padding:26px clamp(13px,4vw,38px) 35px;border:11px solid #bac0bf;border-top-color:#e3e6e4;border-left-color:#d5d9d7;border-right-color:#8c9698;border-bottom-width:17px;border-radius:8px;background:radial-gradient(ellipse at 8% 25%,#778e9809,transparent 33%),radial-gradient(ellipse at 83% 74%,#8b659c07,transparent 25%),linear-gradient(110deg,#fffefa,#f5f7ef 50%,#fffffb);box-shadow:inset 0 0 0 2px #818d9155,inset 3px 4px 14px #a4adac33,0 0 0 2px #475057,5px 12px 0 #333b42,0 25px 80px #000b;color:#204f99;font:22px/1.3 BoardHand0,'Comic Sans MS',cursive;overflow-x:hidden}
#accountPanel::backdrop{background:#0c0b15cf;backdrop-filter:blur(7px)}#accountPanel header{align-items:flex-start;margin-bottom:16px;border-bottom:3px solid #243b6977;padding-bottom:13px;box-shadow:none;transform:rotate(-.25deg)}#accountPanel .progress-eyebrow{font:16px BoardHand2,cursive;color:#695979;letter-spacing:.8px}#accountPanel h2{font:clamp(29px,5vw,42px)/1.15 BoardHand6,cursive;color:#173c78;letter-spacing:-1px;margin-top:4px}
#accountPanel button,#accountPanel .action-link{color:#263747;min-height:44px;padding:8px 14px;border:2px solid #66757b;border-radius:5px;background:linear-gradient(#f6f7eb,#d8dfd6);box-shadow:inset 0 2px #fff,0 4px #718088,0 6px #33434b55;font:19px/1.15 BoardHand0,cursive}#accountPanel button:active:not(:disabled){transform:translateY(3px);box-shadow:inset 1px 2px 4px #71808877,0 1px #718088}#accountPanel button:focus-visible,#accountPanel input:focus-visible,#accountPanel a:focus-visible,#accountPanel summary:focus-visible{outline:3px solid #174b92;outline-offset:3px}
#accountPanel header>[data-close]{background:repeating-linear-gradient(0deg,#455d73 0 2px,#354d63 2px 4px);border:4px solid #bec8c7;color:#faf9f0;box-shadow:inset 0 2px #9daeb7,0 5px #33434b;min-width:65px;transform:rotate(3deg);font:18px BoardHand0,cursive}
#accountPanel .progress-summary{border-bottom:1px solid #8fa8bb77;padding-bottom:16px;gap:10px}#accountPanel #accountLevel{font:30px BoardHand2,cursive;color:#883645}#accountPanel #accountSets{font:21px BoardHand0,cursive;color:#4b5461}#accountPanel p,#accountPanel .hint{font:19px/1.4 BoardHand0,cursive;color:#56606c}#accountPanel #recordsStatus{font-size:18px}#accountPanel .record-intro{margin-top:18px}
#accountPanel .record-board{--ink:#204f99;margin-top:23px;color:var(--ink)}#accountPanel .record-board[data-kind=hold]{--ink:#773c86}#accountPanel .record-board[data-kind=steps]{--ink:#2e6d4c}#accountPanel .record-board[data-kind=jumps]{--ink:#a44144}#accountPanel .record-board[data-kind=pace]{--ink:#875b23}
#accountPanel .record-heading{border-bottom:2px solid var(--ink);padding-bottom:6px;transform:rotate(-.25deg)}#accountPanel .record-heading h3{margin:0;font:29px BoardHand2,cursive;color:var(--ink)}#accountPanel .record-heading>span{font:18px BoardHand0,cursive;color:var(--ink)}#accountPanel table{font:23px BoardHand0,cursive;font-variant-numeric:tabular-nums}#accountPanel thead th{font:16px BoardHand0,cursive;color:#526575;letter-spacing:0;text-transform:none;padding-top:9px}#accountPanel thead th:first-child{font-size:0;width:28px}#accountPanel thead th:nth-child(2){width:41%}#accountPanel thead th:last-child{width:37px}
#accountPanel tbody th,#accountPanel td{border-bottom:1px solid #8fa8bb55;padding:10px 4px;font-weight:400;color:var(--ink)}#accountPanel .record-rank{font:18px BoardHand0,cursive;color:var(--ink)}#accountPanel .record-best{font:30px BoardHand2,cursive;color:var(--ink);letter-spacing:-1px}#accountPanel tbody td:last-child{font:21px BoardHand0,cursive;color:var(--ink)}#accountPanel tr[data-record=false]{opacity:.6}#accountPanel tr[data-record=false] .record-best{color:var(--ink)}
#accountPanel .unlock-board h3{font:28px BoardHand2,cursive;color:#6b3b80;border-bottom:2px solid #6b3b8077;padding-bottom:6px}#accountPanel .unlock-row{font:23px BoardHand0,cursive;border-color:#8fa8bb55;color:#6b3b80}#accountPanel .unlock-row>span:last-child{font:20px BoardHand0,cursive;color:#56606c}#accountPanel .unlock-row[data-unlocked=true]{background:linear-gradient(transparent 70%,#e9dc8140 71%,transparent 95%)}#accountPanel .unlock-row[data-unlocked=true]>span:last-child{color:#2e6d4c}
#accountPanel .account-settings{border-color:#8fa8bb88}#accountPanel summary{font:22px BoardHand0,cursive;color:#485e78;cursor:pointer}#accountPanel .account-settings h3{font:25px BoardHand2,cursive;color:#6b3b80}#accountPanel input{background:#e7edf344;border:0;border-bottom:2px solid #667c99;color:#244873;font:22px BoardHand0,cursive;box-shadow:none}#accountPanel label{color:#485461;font:20px BoardHand0,cursive}#accountPanel a{color:#174b92}
.marker-tray{position:sticky;bottom:-35px;height:25px;margin:23px -6px -35px;display:flex;gap:13px;align-items:flex-end;justify-content:flex-end;padding:0 16px 1px;background:linear-gradient(#97a7ad,#e2e7e4 45%,#929fa4 48%,#576771);border-radius:2px;border-top:1px solid #8b999f;box-shadow:0 -3px 8px #27343a22;pointer-events:none}.marker-tray i{height:11px;width:65px;background:linear-gradient(#fff,#d7dddd);border:1px solid #637076;border-right:18px solid var(--ink);border-left:7px solid var(--ink);border-radius:3px;box-shadow:0 2px 2px #1c293866;transform:rotate(-2deg)}.marker-tray i:nth-child(2){transform:rotate(2deg)}
@media(min-width:650px){#workoutList{display:grid;grid-template-columns:1fr 1fr;column-gap:30px;align-items:start}.record-board:last-child{grid-column:1/-1}}
@media(max-width:420px){#accountPanel{border-width:7px;border-bottom-width:13px;padding-top:20px}#accountPanel header{position:relative;display:block;min-height:99px;transform:none}#accountPanel header>[data-close]{position:absolute;top:0;right:0;min-width:55px;padding:7px}#accountPanel .progress-eyebrow{font-size:14px}#accountPanel h2{padding-top:24px;font-size:29px}#accountPanel .record-heading>span{font-size:16px}#accountPanel table{font-size:21px}#accountPanel thead th{font-size:14px}#accountPanel .record-best{font-size:26px}#accountPanel .progress-summary button{padding:8px;font-size:17px}}

/* Movement library and hologram. The workout selector board lives in pod/control-board.css. */
.workout-console .set-actions .primary-action{min-height:66px;justify-content:center}.set-actions .primary-action strong{font-size:18px}
.library-filter{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px}
.library-filter select{font:16px Arial,sans-serif;max-width:65%;padding:12px;color:#eefcf9;background:#21332f;border:1px solid #9ac7b9;border-radius:8px}
#library [hidden]{display:none!important}
#library[data-preview=true] .library-header,#library[data-preview=true] .library-filter,#library[data-preview=true] #libraryCount,#library[data-preview=true] .library-footer,#library[data-preview=true] .holo-tools,#library[data-preview=true] #hologramPanel>.library-caption{display:none}
#library[data-preview=true] .glass-shell{min-height:100dvh;padding:16px;gap:0}
#library[data-preview=true] #hologramPanel{min-height:calc(100dvh - 32px);gap:12px;position:relative}
#library[data-preview=true] .holo-heading{position:relative;z-index:3;gap:14px}
#library[data-preview=true] .holo-heading h2{margin:0;font:700 22px/1.3 Arial,sans-serif;color:#f2fff8}
#library[data-preview=true] #backLibrary{min-width:44px;min-height:44px;padding:6px 12px;background:#112922d9}
#library[data-preview=true] #holoStage{min-height:240px;max-height:340px;flex:1 0 240px;border-radius:18px}
#library[data-preview=true] #useHologram{min-height:62px;font-size:20px;flex:none}
.holo-setup{background:#fff0c9;color:#2c2533;border:2px solid #e0b778;border-radius:12px;padding:18px;font:16px/1.45 Arial,sans-serif;box-shadow:0 4px 0 #55384e}
.holo-setup-block+.holo-setup-block{margin-top:18px;padding-top:16px;border-top:1px solid #a9916d}
#library .holo-setup h3{font:700 13px/1.4 Arial,sans-serif;text-transform:uppercase;letter-spacing:1px;color:#61475c;margin:0 0 8px}
#library .holo-setup p{margin:6px 0;color:#352a36}
#library .holo-setup .holo-position{font-size:22px;line-height:1.25;font-weight:700}
.holo-joints{display:flex;gap:7px;flex-wrap:wrap;padding:0;margin:10px 0;list-style:none}
.holo-joints li{background:#412f4d;color:#fff2d8;border-radius:5px;padding:7px 10px;font-size:17px;font-weight:700}
#library .holo-setup .holo-no-feet{border-top:1px solid #a9916d;padding-top:12px;margin-top:16px;font-weight:700;color:#31644d}
@media(min-width:720px){#library[data-preview=true] #hologramPanel{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);grid-template-rows:auto 1fr auto;gap:18px;align-content:center}.holo-heading{grid-column:1/-1}#library[data-preview=true] #holoStage{grid-column:1;grid-row:2/4;min-height:420px;max-height:none}#library[data-preview=true] .holo-setup{grid-column:2;grid-row:2;align-self:center}#library[data-preview=true] #useHologram{grid-column:2;grid-row:3}}
#library .card-kind,#library .card-number,#library .holo-link,#libraryCount{font-size:13px!important}
#library .movement-cards{align-content:start}
#library .movement-cards{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#library .movement-card{padding:0;overflow:visible;border:0;background:none;box-shadow:none;backdrop-filter:none}
#library .card-select{display:block;position:relative;padding:0!important;aspect-ratio:1;border:1px solid #aaf8e94d!important;border-radius:16px;overflow:hidden;background:radial-gradient(ellipse at 50% 85%,#69f9dd20,transparent 65%),#0c1720!important}
#library .card-select img{display:block;width:100%;height:100%;object-fit:contain}
#library .card-select[aria-pressed=true]{border-color:#9fffe8!important;box-shadow:inset 0 0 0 2px #9fffe8!important}
#library .card-select:focus-visible{outline:3px solid #aaffef;outline-offset:3px}
#library .library-header h1{margin:0}
#library #gestureArea>summary{min-height:44px;display:flex;align-items:center;gap:8px;cursor:pointer;font:14px/1.4 Arial,sans-serif}
#library #gestureArea>summary::before{content:'+';font-size:20px}
#library #gestureArea[open]>summary::before{content:'−'}
#library .holo-setup{padding:14px;font-size:14px}
#library .holo-setup-block+.holo-setup-block{margin-top:12px;padding-top:12px}
#library .holo-setup .holo-position{font-size:20px}
#library .holo-joints li{font-size:14px;padding:6px 8px}
#library .holo-no-feet{font-size:14px}
.workout-console #status:empty,.launch-panel p:empty,.setup-shell p:empty,.install-card p:empty,.rest-feedback:empty{display:none}

.app-update-banner,.reminders-moved{position:fixed;bottom:max(12px,env(safe-area-inset-bottom));left:12px;right:12px;z-index:9999;display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:16px;background:#163e34;color:#eefff5;border:2px solid #a6d4bb;border-radius:12px;box-shadow:0 8px 30px #0009;font:16px/1.4 Arial,sans-serif}.app-update-banner[hidden],.reminders-moved[hidden]{display:none}.app-update-banner button,.reminders-moved button{font:14px Arial,sans-serif;min-height:44px;padding:10px}.release-settings{margin-top:20px;border-top:1px solid #917885;padding-top:8px;font:16px/1.5 Arial,sans-serif}.release-settings li{margin:8px 0}.release-settings input{width:100%;padding:12px;font-size:16px}.release-settings button{min-height:44px;margin:8px 8px 8px 0}
/* The reminders-moved notice (launch.mjs): one compact row at the top, above the pod's update banner (pod.css, top:128px). */
.reminders-moved{top:max(12px,env(safe-area-inset-top));bottom:auto;flex-wrap:nowrap;padding:10px}.reminders-moved [data-on]{flex:1;text-align:left}
.training-rewards{padding:10px 12px;margin:8px 0 12px;border:1px solid #729b9a;background:#14282dcc;color:#e5fff6}.training-rewards p{margin:0;font-size:1rem}.training-reward-weapons{display:flex;gap:20px;flex-wrap:wrap}.training-reward-weapons>div{display:flex;align-items:center;gap:8px;min-width:130px;font-size:.875rem}.training-reward-weapons canvas{width:30px;height:54px;image-rendering:pixelated}.training-rewards small{font-size:.875rem;color:#bcd7d3}
.library-kind{display:flex;gap:12px;align-items:center;margin:12px 0}.library-kind select{min-height:44px;max-width:100%;font:inherit}.movement-card .card-select{height:auto;display:flex;flex-direction:column}.movement-level{display:block;padding:8px 10px;color:#fff;font-size:14px}#libraryEmpty{padding:18px;line-height:1.5}
#library .movement-card .card-select{display:flex;flex-direction:column;aspect-ratio:auto;height:auto}#library .card-select img{height:auto;aspect-ratio:1}#library[data-preview=true] .library-kind{display:none}.library-kind select{padding:12px;color:#eefcf9;background:#21332f;border:1px solid #9ac7b9;border-radius:8px}

/* Full-height hologram terminal: guidance is etched on the glass, below the figure. */
#library[data-preview=true]{overflow:hidden}
#library[data-preview=true] .glass-shell{height:100dvh;min-height:0;overflow:hidden;box-sizing:border-box;padding:10px 12px}
#library[data-preview=true] #hologramPanel{display:flex;flex-direction:column;min-height:0;height:100%;gap:6px}
#library[data-preview=true] .holo-heading{flex:none;min-height:44px;gap:8px}
#library[data-preview=true] .holo-heading h2{font-size:clamp(15px,4vw,19px);line-height:1.2}
#library[data-preview=true] #holoStage{position:relative;flex:1 1 auto;min-height:0;max-height:none;width:100%;border-radius:14px}
#library[data-preview=true] #holoStage canvas{z-index:1}
#library[data-preview=true] #holoStage .holo-setup{position:absolute;z-index:3;left:8px;right:8px;bottom:8px;display:grid;grid-template-columns:1fr 1fr;gap:5px 10px;padding:8px 10px;background:linear-gradient(90deg,#081e29ef,#0b2931e8);border:1px solid #7beed57d;border-radius:5px;box-shadow:0 0 16px #2bdac229;color:#bfffe9;font:11px/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;pointer-events:none}
#library[data-preview=true] #holoStage .holo-setup-block+.holo-setup-block{margin:0;padding:0;border:0}
#library[data-preview=true] #holoStage .holo-setup h3{margin:0 0 3px;color:#58eac9;font:700 10px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em}
#library[data-preview=true] #holoStage .holo-setup p{margin:2px 0;color:#c9f8ef}
#library[data-preview=true] #holoStage .holo-setup .holo-position{font-size:11px;line-height:1.25;color:#f0fff7}
#library[data-preview=true] #holoStage .holo-joints{gap:3px;margin:2px 0 3px;padding:0}
#library[data-preview=true] #holoStage .holo-joints li{padding:2px 4px;border:1px solid #73eac288;border-radius:2px;background:#07372e;color:#e0fff2;font:10px/1.15 ui-monospace,SFMono-Regular,Consolas,monospace}
#library[data-preview=true] #holoStage .holo-no-feet{grid-column:1/-1;margin:0;padding:2px 0 0;border-top:1px solid #5ab8a966;font-size:10px;color:#91ebd1}
#library[data-preview=true] #useHologram{flex:none;min-height:52px;font-size:18px}
@media(min-width:720px){#library[data-preview=true] #hologramPanel{display:flex}#library[data-preview=true] #holoStage{grid-column:auto;grid-row:auto;min-height:0;max-height:none}#library[data-preview=true] #useHologram{grid-column:auto;grid-row:auto}}
@media(max-height:700px){#library[data-preview=true] .glass-shell{padding:6px 10px}#library[data-preview=true] #hologramPanel{gap:4px}#library[data-preview=true] #useHologram{min-height:48px}#library[data-preview=true] #holoStage .holo-setup{padding:5px 7px;bottom:6px}#library[data-preview=true] #holoStage .holo-no-feet{display:none}}
/* The shared portal housing stops above its hardware dock. Keep the terminal inside
   that face and let only the movement card grid scroll on short phones. */
#library[data-route]{overflow:hidden}
#library[data-route] .glass-shell{box-sizing:border-box;height:100%;min-height:0}
#library[data-route][data-preview=false] .movement-cards{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain}
#library[data-route][data-preview=true] .glass-shell{height:100%;min-height:0}
#library[data-route][data-preview=true] #hologramPanel{height:100%;min-height:0}

/* Shared metal terminals leave room for Back and Begin on phone holograms. */
#library.portal-framed.has-pod-chrome .glass-shell{padding-top:54px!important;padding-bottom:38px!important}

/* #106 workout selector: one compact control board (readout, focus dial, level knob, lever, sound switch).
   CSS only, no images. Self-contained under .control-board so it can move to the oval route (#60) as one block. */
.control-board{--cb-ink:#f1dcb4;--cb-dim:#b9a1b0;--cb-gold:#ffd36e;--cb-mono:ui-monospace,'Cascadia Mono',Consolas,Menlo,monospace;
 --screw:#cbbab0 0 1.4px,#57474f 1.9px 3px,#0000 3.5px;
 position:relative;margin:0 0 10px;padding:10px 12px 2px;border:1px solid #0e0a12;border-radius:12px;
 background:radial-gradient(circle at 7px 7px,var(--screw)),radial-gradient(circle at calc(100% - 7px) 7px,var(--screw)),radial-gradient(circle at 7px calc(100% - 7px),var(--screw)),radial-gradient(circle at calc(100% - 7px) calc(100% - 7px),var(--screw)),
  repeating-linear-gradient(90deg,#0000 0 3px,#ffffff05 3px 4px),linear-gradient(165deg,#5d4a5b,#3c3043 50%,#2e2436);
 box-shadow:inset 0 1px #dcc6d066,inset 0 -2px #0007,0 0 0 1px #8c768966,0 4px 0 #140f19,0 7px 12px #0006;
 font:700 8px/1 var(--cb-mono);letter-spacing:.14em;color:var(--cb-ink);-webkit-user-select:none;user-select:none}
.control-board button{font:inherit;letter-spacing:inherit}

/* Readout window + MOVEMENTS key */
.control-board .cb-top{display:flex;gap:8px;align-items:stretch}
.control-board .cb-readout{position:relative;flex:1;min-width:0;padding:7px 9px 5px;border:1px solid #09070b;border-radius:6px;background:repeating-linear-gradient(0deg,#ffd36e07 0 1px,#0000 1px 3px),radial-gradient(ellipse at 30% 0,#3a2a1a55,#0000 70%),#150f19;box-shadow:inset 0 2px 6px #000d,0 1px #cbb3bf44}
.control-board .cb-line{display:flex;justify-content:space-between;gap:8px;color:#d2ae62}
.control-board #exerciseName,.control-board #difficultySetting{font:inherit;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase}
.control-board #difficultySetting{flex:none}
.control-board #variationName{position:static;display:block;width:100%;min-height:0;margin:4px 0 0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:var(--cb-gold);font:700 15px/1.25 system-ui,-apple-system,'Segoe UI',sans-serif;letter-spacing:0;text-align:left;text-decoration:underline dotted #ffd36e66;text-underline-offset:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 0 8px #ffd36e40;cursor:pointer}
.control-board #variationName:after{content:'';position:absolute;inset:0;border-radius:6px}
.control-board #variationName:focus-visible{outline:0}.control-board #variationName:focus-visible:after{outline:3px solid var(--cb-gold);outline-offset:2px}
.control-board .cb-key{flex:none;width:66px;min-height:44px;padding:4px 3px;border:1px solid #120d16;border-radius:6px;background:linear-gradient(#716070,#4a3b4b);box-shadow:inset 0 1px #dcc4cf99,inset 0 -2px #291f2d,0 3px 0 #140f19;color:var(--cb-ink);line-height:1.4;white-space:normal;transition:transform .07s,box-shadow .07s}
.control-board .cb-key:active:not(:disabled){transform:translateY(2px);border-color:#120d16;box-shadow:inset 0 1px #dcc4cf55,0 1px 0 #140f19}

/* The deck: stencilled plates over each part, a panel seam above */
.control-board .cb-deck{display:flex;justify-content:space-between;align-items:flex-end;gap:4px;margin-top:8px;padding-top:7px;border-top:1px solid #150f19;box-shadow:inset 0 1px #c8b0bd30}
.control-board .cb-part{display:flex;flex-direction:column;align-items:center;gap:5px}
.control-board .cb-label{padding:3px 5px 2px;border-radius:2px;background:#1a141f;box-shadow:inset 0 1px 2px #000a,0 1px #c8b0bd33;font-size:10px}

/* Rotaries: recessed well, detent ticks, a cap that turns to --angle and snaps with a little overshoot */
.control-board .cb-rotary{--size:76px;--angle:-135deg;position:relative;flex:none;width:var(--size);height:var(--size);border-radius:50%;touch-action:none;cursor:grab;background:radial-gradient(closest-side,#0d0a10 76%,#2f2536 79% 87%,#0000 89%)}
.control-board .cb-rotary:focus-visible{outline:3px solid var(--cb-gold);outline-offset:2px}
.control-board .cb-rotary.is-turning{cursor:grabbing}
.control-board .cb-rotary[aria-disabled=true]{opacity:.45;cursor:default}
.control-board .cb-ticks{position:absolute;inset:0;pointer-events:none}
.control-board .cb-ticks b{position:absolute;left:calc(50% - 1px);top:0;width:2px;height:5px;border-radius:1px;background:#8a7686;transform-origin:1px calc(var(--size) / 2);transform:rotate(var(--a))}
.control-board .cb-ticks b[data-on]{background:var(--cb-gold);box-shadow:0 0 5px var(--cb-gold)}
.control-board .cb-rotary i{position:absolute;inset:10px;border-radius:50%;transform:rotate(var(--angle));transition:transform .18s cubic-bezier(.3,1.6,.5,1),scale .08s;pointer-events:none}
.control-board .cb-rotary.is-turning i{transition:scale .08s}
.control-board .cb-rotary:active:not([aria-disabled=true]) i{scale:.95}
.control-board .cb-rotary:after{content:'';position:absolute;inset:10px;border-radius:50%;background:radial-gradient(circle at 34% 28%,#ffffff40,#0000 48%);pointer-events:none}
/* Focus dial: knurled edge, gold pointer */
.control-board .cb-dial i{background:radial-gradient(closest-side,#7a6677 0 68%,#584656 74%,#0000 76%),repeating-conic-gradient(#ad99a5 0 5deg,#3a2e3f 5deg 10deg);box-shadow:0 3px 5px #000b,0 0 0 1px #0d0a10}
.control-board .cb-dial i:after{content:'';position:absolute;left:calc(50% - 2px);top:3px;width:4px;height:16px;border-radius:2px;background:var(--cb-gold);box-shadow:0 0 6px #ffd36eaa}
/* Level knob: bakelite pointer knob with min/max figures */
.control-board .cb-knob{--size:58px}
.control-board .cb-knob i{inset:9px;background:radial-gradient(closest-side,#302533 0 82%,#17111b 86%,#0000 90%);box-shadow:0 3px 4px #000b}
.control-board .cb-knob i:before{content:'';position:absolute;left:calc(50% - 6px);top:-5px;bottom:-5px;width:12px;border-radius:6px;background:linear-gradient(90deg,#1e1822,#65536a 45%,#2b2231);box-shadow:0 2px 3px #000a}
.control-board .cb-knob i:after{content:'';position:absolute;left:calc(50% - 1px);top:-3px;width:2px;height:15px;border-radius:1px;background:#fbefd9}
.control-board .cb-knob:after{inset:9px}
.control-board .cb-scale{display:flex;justify-content:space-between;width:58px;margin-top:-9px;padding:0 1px;color:var(--cb-dim);font-size:10px;letter-spacing:0}

/* Lever: spring-loaded T-handle in a slot; HARDER above, EASIER below */
.control-board .cb-lever{--pull:0px;position:relative;gap:0;width:46px;height:94px;border-radius:8px;background:linear-gradient(90deg,#19131e,#2c2332 50%,#19131e);box-shadow:inset 0 2px 5px #000c,0 1px #c8b0bd44;touch-action:none}
.control-board .cb-lever:before{content:'';position:absolute;left:calc(50% - 3px);top:21px;bottom:21px;width:6px;border-radius:3px;background:#060408;box-shadow:inset 0 1px 2px #000,0 1px #c8b0bd33}
.control-board .cb-lever button{position:relative;z-index:1;display:flex;justify-content:center;width:100%;height:47px;min-height:0;padding:5px 0;border:0;border-radius:8px;background:none;box-shadow:none;color:var(--cb-ink);font-size:10px;letter-spacing:.02em}
.control-board .cb-lever #harder{align-items:flex-start}.control-board .cb-lever #easier{align-items:flex-end}
.control-board .cb-lever button:focus-visible{outline-offset:-3px}
.control-board .cb-lever button:active:not(:disabled){border-color:transparent;box-shadow:none;background:#ffd36e14}
.control-board .cb-lever i{position:absolute;z-index:2;left:7px;right:7px;top:calc(50% - 7px);height:14px;border-radius:7px;background:linear-gradient(#ffd691,#c98640 55%,#8a5430);box-shadow:inset 0 1px #fff5,0 3px 4px #000b;transform:translateY(var(--pull));transition:transform .2s cubic-bezier(.3,1.6,.5,1);pointer-events:none}
.control-board .cb-lever.is-pulling i{transition:none}
.control-board .cb-lever:has(button:disabled){opacity:.45}

/* Sound: bat-handle toggle on a plate; up is ON. app.mjs writes ON/OFF as the lamp text. */
.control-board .cb-switch{position:relative;display:flex;align-items:flex-end;justify-content:center;width:44px;height:76px;min-height:0;padding:0 0 6px;border:1px solid #0d0a10;border-radius:7px;background:linear-gradient(#524352,#30273a);box-shadow:inset 0 1px #d4bdca66,inset 0 -2px #0006,0 3px 0 #140f19;color:#7d6c79;transition:transform .07s}
.control-board .cb-switch:before{content:'';position:absolute;left:calc(50% - 4px);top:calc(40% - 26px);width:8px;height:26px;border-radius:4px 4px 2px 2px;background:linear-gradient(90deg,#6b5d69,#f4ebf0 45%,#857583);box-shadow:2px 2px 3px #0009;transform-origin:50% 100%;transition:transform .14s cubic-bezier(.3,1.5,.5,1)}
.control-board .cb-switch:after{content:'';position:absolute;left:calc(50% - 8px);top:calc(40% - 8px);width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#dccbd4,#6e5f6c 60%,#382d3a);box-shadow:0 2px 3px #000a}
.control-board .cb-switch[data-on=false]:before{transform:scaleY(-1)}
.control-board .cb-switch[data-on=true]{color:var(--cb-gold);text-shadow:0 0 6px #ffd36e}
.control-board .cb-switch:active:not(:disabled){transform:translateY(1px);border-color:#0d0a10;box-shadow:inset 0 1px #d4bdca44,0 2px 0 #140f19}

/* Tracking notes: a slim hatch along the bottom edge */
.control-board .movement-scope{margin:3px 8px 0;color:#e3cfde;font:12px/1.45 system-ui,-apple-system,'Segoe UI',sans-serif;letter-spacing:0;-webkit-user-select:text;user-select:text}
.control-board .movement-scope summary{display:flex;align-items:center;gap:6px;min-height:24px;color:var(--cb-dim);font:700 8px/1 var(--cb-mono);letter-spacing:.14em;text-transform:uppercase;list-style:none;cursor:pointer}
.control-board .movement-scope summary::-webkit-details-marker{display:none}
.control-board .movement-scope summary:before{content:'▸'}.control-board .movement-scope[open] summary:before{content:'▾'}
.control-board .movement-scope p{margin:4px 0}

@media(max-width:370px){.control-board{padding:10px 9px 2px}.control-board .cb-dial{--size:68px}.control-board .cb-knob{--size:52px}.control-board .cb-scale{width:52px}.control-board .cb-key{width:58px}.control-board #variationName{font-size:13px}}
@media(prefers-reduced-motion:reduce){.control-board *,.control-board *:before,.control-board *:after{transition:none!important}}

/* Cool Cardio key: its own pressable metal bar under the dials, reachable on every coach path */
.control-board .cb-cardio{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px;margin-top:9px;padding:6px 10px;border:1px solid #120d16;border-radius:7px;background:linear-gradient(#716070,#4a3b4b);box-shadow:inset 0 1px #dcc4cf99,inset 0 -2px #291f2d,0 4px 0 #140f19;color:var(--cb-ink);font:700 12px/1 var(--cb-mono);letter-spacing:.16em;transition:transform .07s,box-shadow .07s}
.control-board .cb-cardio small{font:inherit;font-size:9px;color:var(--cb-gold);letter-spacing:.2em}
.control-board .cb-cardio-led{width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#ffe9a8,#ffb42e 60%,#6b3d00);box-shadow:0 0 6px #ffd36e}
.control-board .cb-cardio:active:not(:disabled){transform:translateY(3px);box-shadow:inset 0 1px #dcc4cf55,0 1px 0 #140f19}
.control-board .cb-cardio:disabled{opacity:.55}
.control-board .cb-cardio:focus-visible{outline:3px solid var(--cb-gold);outline-offset:2px}
@media(max-width:370px){.control-board .cb-cardio{letter-spacing:.1em;font-size:11px}}

.tub-flight{width:min(100%,380px);margin:auto;padding:7px;background:#c0c0c0;border:3px outset #e8e8e8;box-sizing:border-box;color:#142023;font:12px/1.4 Tahoma,Arial,sans-serif;box-shadow:6px 6px 0 #08031280}.tub-title{display:flex;justify-content:space-between;gap:12px;align-items:center;background:linear-gradient(90deg,#070b66,#386d7c);color:#fff;padding:7px}.tub-title strong{font-size:16px}.tub-title span{font-size:8px;max-width:85px}.tub-caption{margin:8px 2px}.tub-screen{position:relative;border:3px inset #eee;background:#130e2c}.tub-screen canvas{width:100%;display:block;max-height:56dvh;object-fit:contain;touch-action:manipulation;image-rendering:pixelated;outline-offset:-3px}.tub-screen canvas:focus-visible{outline:3px solid #baff53}.tub-message{position:absolute;left:20px;right:20px;top:41%;text-align:center;font:bold 16px/1.5 monospace;background:#0b092bde;color:#c7ff43;padding:14px;border:2px solid #79a999;pointer-events:none}.tub-controls{display:flex;gap:7px;margin-top:8px}.tub-controls button{flex:1;min-height:48px;border:3px outset #eee;background:#c9ff59;color:#1b2432;font-weight:900;font-size:14px;cursor:pointer}.tub-controls [data-pause]{flex:0 0 auto;background:#c0c0c0;font-size:12px}.tub-controls button:disabled{opacity:.5}.tub-note{margin:7px 2px 0;font-size:10px}.tub-flight [hidden]{display:none!important}
.tub-message{white-space:pre-line}.tub-toast{position:absolute;left:20px;right:20px;top:58px;text-align:center;font:bold 12px/1.4 monospace;background:#c7ff43;color:#1b2432;padding:6px;border:2px solid #1b2432;pointer-events:none;z-index:2}.tub-toast a{color:#1b2432;pointer-events:auto}

.meditation-entry{display:grid;grid-template-columns:40px 1fr;text-align:left;gap:3px 12px;width:100%;min-height:78px;padding:16px;margin:14px 0;border:2px outset #b7cdc4;border-radius:12px;background:linear-gradient(120deg,#4e7772,#2e444d);color:#f2ebd3;cursor:pointer}.meditation-entry>span{grid-row:span 2;font-size:35px;align-self:center}.meditation-entry strong{font:20px Georgia,serif}.meditation-entry small{font-size:12px}.meditation-panel{overflow:auto;background:linear-gradient(#173338,#101b29)!important;color:#def4e8!important;max-width:560px}.meditation-panel header{color:#e1eed7}.meditation-eyebrow{font:10px monospace;letter-spacing:.12em;color:#92b9ad;text-align:center}.meditation-stage{height:min(40dvh,300px);position:relative;display:grid;place-items:center;isolation:isolate}.meditation-character{border:0!important;background:none!important;box-shadow:none!important;position:relative;z-index:2;width:150px;height:210px;cursor:pointer}.meditation-character canvas{height:100%;max-width:100%;image-rendering:pixelated}.breathing-ring{position:absolute;width:220px;height:220px;border:1px solid #9edece;border-radius:50%;box-shadow:0 0 50px #7ff7cc20,inset 0 0 25px #8cefd411;animation:meditation-breathe 8s ease-in-out infinite}.meditation-speech{text-align:center;min-height:50px;font:20px/1.4 Georgia,serif}.meditation-hint{text-align:center;font-size:12px;color:#8eafa8}.breathing-paused .breathing-ring{animation-play-state:paused}.meditation-stage[data-annoyed="2"] .meditation-character{rotate:-3deg}.meditation-stage[data-annoyed="3"] .meditation-character{rotate:4deg;filter:sepia(.2)}.meditation-stage[data-annoyed="4"] .meditation-character{rotate:-5deg;filter:sepia(.5) saturate(1.7)}.meditation-can{position:absolute;z-index:3;width:42px;height:58px;top:67%;left:64%;background:linear-gradient(90deg,#a2aaad,#f3f4e6,#a7b3b3);border-radius:4px 4px 10px 10px;border-top:7px solid #c5ff4b;display:grid;place-content:center;opacity:0;color:#47235f;font:12px monospace}.meditation-can i{position:absolute;left:3px;right:3px;top:-5px;height:4px;background:#dfffbc}.meditation-powder{position:absolute;z-index:4;color:#d9ffc1;font:30px monospace;top:30%;left:55%;opacity:0}.snorting .meditation-can{animation:meditation-can 1.8s ease-in-out forwards}.snorting .meditation-character{animation:meditation-snort 1.8s ease-in-out forwards}.snorting .meditation-powder{animation:meditation-powder 1.8s ease-in-out forwards}.meditation-blackout{position:fixed;inset:0;pointer-events:none;z-index:100;display:none;background:transparent}.blacking-out .meditation-blackout{display:block;animation:meditation-blackout 1.2s linear forwards}.meditation-blackout i{position:absolute;left:0;right:0;top:calc(var(--strip)*12.5%);height:13%;background:#000;transform:translateX(-100%);animation:meditation-shutter .8s calc(var(--strip)*.045s) forwards}.meditation-blackout i:nth-child(even){transform:translateX(100%)}
@keyframes meditation-breathe{0%,100%{transform:scale(.75);opacity:.45}50%{transform:scale(1.08);opacity:1}}@keyframes meditation-can{0%{opacity:0;transform:translateY(60px)}25%{opacity:1;transform:translateY(0)}65%,100%{opacity:1;transform:translate(-44px,-90px) rotate(-65deg)}}@keyframes meditation-snort{0%,45%{transform:none}70%{transform:translate(12px,-4px) rotate(13deg)}100%{transform:translate(0,5px) rotate(-7deg)}}@keyframes meditation-powder{0%,45%,100%{opacity:0}65%{opacity:1;transform:translate(0,5px)}85%{opacity:.2;transform:translate(-30px,-15px) scale(.3)}}@keyframes meditation-shutter{to{transform:translateX(0)}}@keyframes meditation-blackout{0%{background:#ecfff060}35%{background:transparent}80%,100%{background:black}}@media(prefers-reduced-motion:reduce){.breathing-ring,.snorting .meditation-character,.snorting .meditation-can,.snorting .meditation-powder{animation:none}.snorting .meditation-can{opacity:1}.blacking-out .meditation-blackout{animation:none;background:black}.meditation-blackout i{animation:none;transform:none}}
.breathing-session{display:grid;gap:8px;padding:12px}.breathing-session button{min-height:44px;font-size:1rem}.breathing-session progress{width:100%;accent-color:#9cffcb}.breathing-session p{margin:0;font-size:.875rem;color:#cdf1df}
.breath-modes,.breath-run{display:grid;gap:10px}.breath-mode-card{display:grid!important;gap:4px;justify-content:start!important;justify-items:start;text-align:left;padding:12px!important;border:1px solid #4e7772!important;border-radius:10px;background:#132b2ee6!important;color:#def4e8!important}.breath-mode-card strong{font-size:1rem}.breath-mode-card small{color:#a9d2c6;font-size:.8rem}.breath-seated-notice{color:#ffd699!important;font-weight:650}.breath-phase{min-height:1.3em;font-weight:650;font-size:1rem!important;color:#eafff2!important}.breath-actions{display:flex;gap:8px}.breath-actions button{flex:1}.breath-exit{background:#5a2530!important;border-color:#d27a86!important;font-weight:650}.breath-stance-link{justify-self:start;background:none!important;font-size:.875rem!important}.breath-note{color:#9cbdb4!important;font-size:.75rem!important}
.meditation-panel:has([data-breath-run][data-phase="hold"]) .breathing-ring{animation-play-state:paused}
/* D28 default layout: a full-height room. The day's wonder (~0.86:1 tile) sits uncropped across
   the top and fades into a colour sampled from its own bottom edge, where the breathing UI lives.
   No downloaded art: the original neutral gradient is the placeholder. The header stays pinned so
   Close is always reachable (Esc also closes). */
.meditation-panel{width:min(560px,100%);max-width:none;height:100dvh;max-height:none;margin:0 auto;padding:0 0 24px;border:0;border-radius:0}
.meditation-panel header{position:sticky;top:0;z-index:5;height:0;margin:0;padding:0 12px;align-items:flex-start}.meditation-panel header>*{margin-top:12px!important}.meditation-panel header h2{text-shadow:0 1px 3px #000}.meditation-panel header button{background:#101b29d9}
.meditation-panel [data-meditation-scene]>:not(.meditation-stage){margin-inline:16px}.meditation-panel .breathing-session{padding-inline:0}.meditation-panel:not(.has-wonder-art) .meditation-stage{margin-top:64px}
.meditation-panel.has-wonder-art{background:var(--wonder-grey,var(--wonder-base,#101b29))!important;transition:background-color 2.5s ease}.meditation-panel.has-wonder-art.meditation-colour{background:var(--wonder-base,#101b29)!important}
.meditation-panel.has-wonder-art .meditation-stage{height:clamp(300px,52dvh,520px);background:none}.meditation-panel.has-wonder-art .meditation-near{place-items:end center;padding-bottom:8px}
.meditation-panel.has-wonder-art .meditation-far{background:linear-gradient(transparent 72%,var(--wonder-base,#101b29)),var(--wonder-url) center bottom/cover no-repeat;image-rendering:pixelated}
.meditation-panel.has-wonder-art .meditation-character{height:170px}.meditation-panel.has-wonder-art .breathing-ring{width:180px;height:180px}.meditation-panel.has-wonder-art .meditation-speech{text-shadow:0 1px 3px #000}
/* #149 (D46): the black-and-white room. Three peering layers slide by depth while dragged (meditation.mjs sets --peer-x/y):
   far = the day's wonder, mid = the big sleeping coach, near = your seated character, the ring and the caption.
   A full session fades the colour back in; stopping early lets the coach leap out through the water. */
.meditation-stage{overflow:hidden;touch-action:pan-y}.meditation-layer{position:absolute;inset:0;--depth:1;translate:calc(var(--peer-x,0px)*var(--depth)) calc(var(--peer-y,0px)*var(--depth));transition:translate .5s ease-out}
.meditation-far{--depth:.3;scale:1.05}.meditation-mid{--depth:.6;z-index:1}.meditation-near{z-index:2;display:grid;place-items:center}
.meditation-panel:not(.has-wonder-art) .meditation-far{background:inherit;image-rendering:pixelated}
.meditation-coach{position:absolute;left:-12%;right:-12%;bottom:14%;height:72%;transform-origin:50% 100%;transition:scale .3s ease-in,translate 3s linear}.coach-wander .meditation-coach{translate:135% 0}
.meditation-coach .myr5-companion-card{position:absolute!important;inset:0!important;width:auto!important;height:auto!important;border:0!important;background:none!important;backdrop-filter:none!important;box-shadow:none!important;overflow:visible!important;pointer-events:none}.meditation-coach .myr5-companion-card>:not(.myr5-companion-stage){display:none!important}.meditation-coach .myr5-companion-stage{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;background:none!important}.meditation-coach canvas{width:100%!important;height:100%!important}
.meditation-character canvas{transform-origin:50% 100%;animation:meditation-sit 8s ease-in-out infinite}.breathing-paused .meditation-character canvas{animation-play-state:paused}
.meditation-panel .meditation-near .meditation-speech{position:absolute;left:12px;right:12px;bottom:1%;z-index:4;min-height:0;margin:0;text-shadow:0 1px 3px #000}
@keyframes meditation-sit{50%{scale:1.03}}@keyframes meditation-smack{0%,100%{transform:none}20%{transform:translate(-10px,5px) rotate(-1.2deg)}40%{transform:translate(9px,-6px) rotate(1deg)}60%{transform:translate(-6px,3px)}80%{transform:translate(4px,-2px)}}@keyframes meditation-flash{from{opacity:.85}to{opacity:0}}
@media(prefers-reduced-motion:reduce){.meditation-layer{translate:none}.meditation-character canvas{animation:none}}
/* W2-2O: offered when today's starter wonder isn't on this phone (the Starter pack). */
.meditation-starter{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:0 16px 14px;font-size:14px;text-align:center}
.meditation-starter[hidden]{display:none}
.meditation-starter button{min-height:44px}
/* The still room occupies the entire viewport. Wonder art returns only after a completed session. */
.meditation-panel,.meditation-panel.has-wonder-art{position:fixed;inset:0;box-sizing:border-box;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;overflow:hidden;background:#000!important;color:#fff!important}
.meditation-panel::backdrop{background:#000}
.meditation-panel.meditation-colour.has-wonder-art{background:var(--wonder-base,#000)!important}
.meditation-panel header{position:absolute;top:0;left:0;right:0;height:auto;z-index:8;padding:max(10px,env(safe-area-inset-top)) 14px 0;box-sizing:border-box}
.meditation-panel header>*{margin-top:0!important}
.meditation-panel header h2{font:700 15px/1.2 ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;color:#fff}
.meditation-panel header button{border:2px solid #fff;border-radius:0;background:#000;color:#fff}
.meditation-panel [data-meditation-scene]{position:relative;width:100%;height:100%;min-height:0;background:#000}
.meditation-panel .meditation-stage,.meditation-panel.has-wonder-art .meditation-stage,.meditation-panel:not(.has-wonder-art) .meditation-stage{width:100%;height:100%;margin:0;background:#000}
.meditation-panel .meditation-far,.meditation-panel.has-wonder-art .meditation-far{background:#000!important}
.meditation-panel.meditation-colour.has-wonder-art .meditation-far{background:linear-gradient(transparent 72%,var(--wonder-base,#000)),var(--wonder-url) center bottom/cover no-repeat!important}
.meditation-panel .meditation-near,.meditation-panel.has-wonder-art .meditation-near{place-items:center;padding:0}
.meditation-panel .meditation-character,.meditation-panel.has-wonder-art .meditation-character{width:clamp(115px,34vw,170px);height:210px}
.meditation-panel .breathing-ring,.meditation-panel.has-wonder-art .breathing-ring{width:180px;height:180px;border-color:#fff;box-shadow:0 0 0 2px #000,0 0 0 3px #fff}
.meditation-panel .meditation-coach{bottom:26%;height:52%}
.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{bottom:22%;padding:0 12px;color:#fff;font:700 17px/1.35 ui-monospace,monospace;text-shadow:2px 2px #000}
.meditation-panel .breathing-session{position:absolute;z-index:6;left:0;right:0;bottom:max(10px,env(safe-area-inset-bottom));box-sizing:border-box;width:min(560px,100%);margin:auto;padding:0 16px;color:#fff}
.meditation-panel .breathing-session p,.meditation-panel .breath-note,.meditation-panel .breath-phase,.meditation-panel .breath-seated-notice{color:#fff!important}
.meditation-panel .breath-run{padding:10px;border:2px solid #fff;background:#000e}
.meditation-panel .breath-actions button,.meditation-panel .breath-stance-link,.meditation-panel [data-breath-pause]{border:2px solid #fff;border-radius:0;background:#000;color:#fff}
.meditation-panel .breathing-session progress{accent-color:#fff}
.meditation-panel [data-breath-pause]{position:absolute;z-index:7;right:16px;bottom:160px}
.meditation-panel .meditation-starter{position:absolute;z-index:6;left:12px;right:12px;bottom:110px;margin:0;padding:6px;border:1px solid #fff;background:#000;color:#fff;font:12px ui-monospace,monospace}
.meditation-panel .meditation-starter button{border:1px solid #fff;border-radius:0;background:#000;color:#fff}
/* Two square pixel thought bubbles flank the character. They remain real focusable buttons. */
.meditation-panel .breath-modes{position:absolute;z-index:5;inset:0;display:block;pointer-events:none}
.meditation-panel .breath-modes[hidden]{display:none}
.meditation-panel .breath-mode-card{position:absolute;top:37%;width:clamp(110px,30vw,166px);min-height:130px;box-sizing:border-box;padding:9px!important;border:3px solid #fff!important;border-radius:0!important;background:#000!important;color:#fff!important;box-shadow:5px 5px 0 #777!important;image-rendering:pixelated;pointer-events:auto;font:11px/1.25 ui-monospace,monospace!important;overflow-wrap:anywhere}
.meditation-panel .breath-mode-card:first-child{left:2%}
.meditation-panel .breath-mode-card:last-child{right:2%}
.meditation-panel .breath-mode-card::after{content:'';position:absolute;top:67%;width:10px;height:10px;background:#000;border:3px solid #fff;box-shadow:5px 5px 0 #777}
.meditation-panel .breath-mode-card:first-child::after{left:calc(100% + 6px)}
.meditation-panel .breath-mode-card:last-child::after{right:calc(100% + 6px)}
.meditation-panel .breath-mode-card strong{font:700 13px/1.2 ui-monospace,monospace}
.meditation-panel .breath-mode-card small{color:#fff;font:10px/1.25 ui-monospace,monospace}
.meditation-panel .breath-mode-card:focus-visible{outline:3px solid #fff;outline-offset:5px}
.meditation-panel.meditation-colour .breath-mode-card{border-color:#fff!important}
@media(max-height:650px){.meditation-panel .breath-mode-card{top:28%;min-height:110px}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{bottom:28%}}

/* Keep the active track time readable near the top third of the still room. */
.meditation-panel .breath-run:not([hidden]) [data-status]{position:fixed;top:33dvh;left:12px;right:12px;z-index:7;margin:0;text-align:center;pointer-events:none}

/* Pixel room: landmarks, a low platform, the sleeping four-legged coach and the selected 2D pose. */
.meditation-panel .meditation-far{background:#000!important}
.meditation-panel .room-art{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated}
.meditation-panel .meditation-mid{z-index:1}
.meditation-panel .meditation-platform{position:absolute;left:8%;right:8%;bottom:10%;height:22%;z-index:0}
.meditation-panel .meditation-platform svg{width:100%;height:100%;overflow:visible;image-rendering:pixelated}
.meditation-panel .meditation-coach{z-index:1;left:3%;right:3%;bottom:23%;height:48%;opacity:.6;filter:grayscale(1)}
.meditation-panel .coach-pixel{position:absolute;z-index:1;left:-10%;right:-10%;bottom:18%;width:120%;height:58%;opacity:.82;filter:grayscale(1);image-rendering:pixelated}
.meditation-panel .meditation-coach .myr5-companion-card{opacity:.14;mix-blend-mode:screen}
.meditation-panel .meditation-near{z-index:2}
.meditation-panel .breathing-orbit{position:absolute;left:50%;top:43%;width:min(68vw,380px);aspect-ratio:1;transform:translate(-50%,-50%);display:grid;place-items:center;z-index:1;pointer-events:none}
.meditation-panel .breathing-ring{position:absolute;inset:0;width:auto;height:auto;box-sizing:border-box;border:4px solid #fff;border-radius:50%;box-shadow:0 0 0 5px #000,0 0 0 8px #fff;animation:none;transform:scale(calc(.72 + var(--breath-progress,.5)*.38));transition:transform .22s linear,opacity .22s linear;opacity:.92}
.meditation-panel .breath-count{position:relative;z-index:2;font:900 clamp(72px,20vw,148px)/.9 ui-monospace,monospace;letter-spacing:-.08em;color:#fff;text-shadow:5px 5px #000,-2px -2px #000;transform:translateY(-8%)}
.meditation-panel [data-session-clock]{position:absolute;z-index:3;bottom:17%;padding:5px 13px;border:3px solid #fff;background:#000;color:#fff;font:700 clamp(18px,5vw,28px)/1 ui-monospace,monospace;letter-spacing:.05em;box-shadow:4px 4px #777}
.meditation-panel .meditation-character{position:absolute;z-index:3;left:50%;bottom:8%;transform:translateX(-50%);width:clamp(145px,42vw,220px);height:clamp(200px,34vh,270px);padding:0!important;image-rendering:pixelated}
.meditation-panel .meditation-character canvas{display:none}
.meditation-panel .meditation-character .pose{display:none;position:absolute;inset:0}
.meditation-panel .meditation-character .pose svg{width:100%;height:100%;image-rendering:pixelated;filter:drop-shadow(5px 5px 0 #000)}
.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{bottom:21%;z-index:5;max-width:700px;margin:0 auto;padding:7px 16px;border:2px solid #fff;background:#000;color:#fff;font:700 clamp(14px,4vw,21px)/1.35 ui-monospace,monospace;text-align:center;text-shadow:none;box-shadow:4px 4px #777}
.meditation-panel .breathing-session{bottom:max(12px,env(safe-area-inset-bottom));padding-inline:12px}
.meditation-panel .breath-run:not([hidden]) [data-status]{top:calc(50% - min(34vw,190px) - 42px);font:700 16px ui-monospace,monospace;text-shadow:2px 2px #000}
.meditation-panel .breath-mode-card[data-mode="gentle-guided"]{left:50%;right:auto;top:55%;width:min(72vw,290px);min-height:126px;transform:translateX(-50%)}
.meditation-panel .breath-mode-card[data-mode="gentle-guided"]::after{display:none}
.meditation-panel.breathing-paused .breathing-ring{transition:none}
@media(max-height:650px){.meditation-panel .breathing-orbit{top:40%;width:min(54vh,280px)}.meditation-panel .meditation-character{bottom:5%;height:clamp(150px,29vh,200px)}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{bottom:19%}.meditation-panel .breath-mode-card{top:29%}.meditation-panel .breath-mode-card[data-mode="gentle-guided"]{top:52%}}
@media(prefers-reduced-motion:reduce){.meditation-panel .breathing-ring{transform:scale(.9);transition:none}}

/* Final room composition: scenery at the back, the coach above a platform, and all choices below. */
.meditation-panel .room-art{z-index:0;filter:grayscale(1);opacity:.9}
.meditation-panel .room-pixels{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;filter:grayscale(1) contrast(1.65);opacity:.34;mix-blend-mode:screen}.meditation-panel:not(.meditation-colour) .room-pixels{display:none}
.meditation-panel .coach-pixel{left:-7%;bottom:18%;width:114%;height:59%;opacity:.9;z-index:1;filter:grayscale(1) contrast(1.1)}
.meditation-panel .meditation-coach{z-index:2;left:-17%;right:-17%;bottom:8%;height:82%;opacity:.34}
.meditation-panel .meditation-coach .myr5-companion-card{opacity:1;mix-blend-mode:normal}
.meditation-panel .breathing-orbit{top:37%;width:min(76vw,410px);z-index:3}
.meditation-panel .breathing-ring{position:absolute;inset:0;width:auto!important;height:auto!important;display:block;transform:scale(calc(.72 + var(--breath-progress,.5)*.38));transform-origin:center;}
.meditation-panel .breath-count{position:absolute;left:0;right:0;top:calc(50% - 82px);display:grid;place-items:center;transform:none;font-size:clamp(72px,20vw,142px);line-height:.8;z-index:3}
.meditation-panel [data-session-clock]{left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);font-size:clamp(18px,5vw,26px);z-index:4;white-space:nowrap}
.meditation-panel .breath-direction{position:absolute;left:calc(50% + 58px);top:50%;transform:translateY(-50%);z-index:4;color:#fff;font:900 11px/1 ui-monospace,monospace;font-style:normal;letter-spacing:.08em;white-space:nowrap;text-shadow:2px 2px #000}
.meditation-panel .meditation-character{left:50%;bottom:36%;height:clamp(174px,25vh,215px);width:clamp(138px,36vw,195px);z-index:4;transform:translateX(-50%)}
.meditation-panel .meditation-character[data-expression="focused"]{filter:brightness(.8)}
.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:64%;bottom:auto;z-index:5;max-width:min(700px,90vw);font-size:clamp(12px,3.7vw,19px)}
.meditation-panel .breathing-session{position:absolute;left:0;right:0;bottom:max(8px,env(safe-area-inset-bottom));z-index:7;width:100%;max-width:760px;padding:0 12px;margin:auto;display:grid;gap:5px;box-sizing:border-box;pointer-events:none}
.meditation-panel .breath-run:not([hidden]){display:grid;grid-template-columns:1fr;gap:5px;padding:7px 9px;border:2px solid #fff;background:#000e;pointer-events:auto}
.meditation-panel .breath-run:not([hidden]) .breath-phase{min-height:1em;max-height:1.3em;overflow:hidden;font:700 12px/1.25 ui-monospace,monospace!important;text-align:center}
.meditation-panel .breathing-session progress{height:8px}
.meditation-panel .breath-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.meditation-panel .breath-actions button{min-height:42px!important;padding:4px 8px!important;font:700 13px ui-monospace,monospace!important}
.meditation-panel .breath-actions [data-breath-pause]{position:static;right:auto;bottom:auto;z-index:auto;min-height:42px!important}
.meditation-panel .breath-exit{background:#000!important;border:2px solid #fff!important;border-radius:0!important;color:#fff!important}
.meditation-panel .breath-actions [data-skip-hold]:not([hidden]){grid-column:1/-1}
.meditation-panel .breath-actions [data-retry]:not([hidden]){grid-column:1/-1}
.meditation-panel .breath-modes{position:static;inset:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;margin:auto;pointer-events:auto;z-index:6}
.meditation-panel .breath-modes[hidden]{display:none}
.meditation-panel .breath-mode-card{position:relative;inset:auto;transform:none;width:auto;min-height:85px;padding:8px!important;border:3px solid #fff!important;background:#000e!important;box-shadow:4px 4px #777!important;pointer-events:auto}
.meditation-panel [data-meditation-scene]>.breathing-session{margin-inline:0!important;width:100%;max-width:760px}
.meditation-panel .breath-mode-card,.meditation-panel .breath-actions button{box-sizing:border-box;min-width:0!important;width:100%!important}
.meditation-panel .breath-mode-card:first-child,.meditation-panel .breath-mode-card:last-child{left:auto;right:auto}
.meditation-panel .breath-mode-card::after{display:none}
.meditation-panel .breath-mode-card strong{font-size:clamp(12px,3.2vw,16px)}
.meditation-panel .breath-mode-card small{font-size:clamp(9px,2.5vw,12px)}
.meditation-panel .breath-seated-notice{font-size:9px!important;line-height:1.15}
.meditation-panel .breathing-session [data-status]{position:static;top:auto;left:auto;right:auto;z-index:auto;margin:0;text-align:center;font:10px ui-monospace,monospace;pointer-events:none}
.meditation-panel .breath-note{display:block;max-width:760px;margin:0 auto!important;padding:2px 5px;font:10px/1.2 ui-monospace,monospace!important;text-align:center;pointer-events:none;text-shadow:1px 1px #000}
@media(max-height:700px){.meditation-panel .breathing-orbit{top:29%;width:min(48vh,240px)}.meditation-panel .breath-count{top:calc(50% - 65px);font-size:clamp(58px,18vw,100px)}.meditation-panel [data-session-clock]{font-size:17px;padding:4px 8px}.meditation-panel .breath-direction{left:calc(50% + 48px);top:50%;font-size:9px}.meditation-panel .meditation-character{bottom:31%;height:min(20vh,140px)}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:64%}.meditation-panel .breath-mode-card{min-height:65px;padding:5px!important}.meditation-panel .breath-note{font-size:8px!important}}
@media (orientation:portrait) and (min-height:701px) and (max-height:780px){.meditation-panel .meditation-character{bottom:39%}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:61%}}
@media(max-width:340px){.meditation-panel .breath-modes{width:100%;gap:5px}.meditation-panel .breath-mode-card{padding:5px!important}.meditation-panel .breath-mode-card small{font-size:8px}}
@media(orientation:landscape) and (max-height:600px){
 .meditation-panel [data-meditation-scene]>.breathing-session{left:52%;right:2%;bottom:3%;width:46%;max-width:none;margin-inline:0!important;padding:0;gap:4px}
 .meditation-panel .breathing-orbit{left:27%;top:33%;width:min(42vh,220px)}
 .meditation-panel .breath-count{top:calc(50% - 56px);font-size:clamp(54px,13vh,78px)}
 .meditation-panel [data-session-clock]{font-size:16px;padding:4px 8px}
 .meditation-panel .breath-direction{left:calc(50% + 43px);top:50%;font-size:8px}
 .meditation-panel .meditation-character{left:27%;bottom:3%;height:min(40vh,145px);width:min(26vw,165px)}
 .meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:20%;left:52%;right:3%;width:45%;max-width:none;padding:5px 8px;font-size:12px;line-height:1.2}
 .meditation-panel .breathing-session{left:52%;right:2%;bottom:3%;width:46%;max-width:none;padding:0;gap:4px}
 .meditation-panel .breath-run:not([hidden]){gap:4px;padding:5px 7px}
 .meditation-panel .breath-run:not([hidden]) .breath-phase{font-size:10px!important}
 .meditation-panel .breathing-session progress{height:6px}
 .meditation-panel .breath-actions{gap:4px}
 .meditation-panel .breath-actions button{min-height:38px!important;padding:3px 5px!important;font-size:11px!important}
 .meditation-panel .breath-modes{gap:5px}
 .meditation-panel .breath-mode-card{min-height:66px;padding:5px!important}
 .meditation-panel .breath-mode-card small{font-size:9px}
 .meditation-panel .breath-seated-notice{font-size:7px!important}
 .meditation-panel .breathing-session [data-status]{font-size:8px}
 .meditation-panel .breath-note{font-size:8px!important;line-height:1.05}
}
@media(prefers-reduced-motion:reduce){.meditation-panel .breathing-ring{transform:scale(.9)!important;transition:none!important}}

/* User-directed scene update: own Gala sprite, forest silhouette and a genuinely phase-driven stop ring. */
.meditation-panel [data-meditation-scene]{container-type:size;container-name:meditation-scene}
.meditation-panel .meditation-character{left:25%;bottom:44%;height:clamp(118px,20vh,150px);width:auto;min-width:90px;transform:translateX(-50%);z-index:6}
.meditation-panel .meditation-character canvas{display:block;width:auto;height:100%;max-width:none;image-rendering:pixelated;filter:drop-shadow(4px 4px #000)}
.meditation-panel .meditation-character .pose{display:none!important}
.meditation-panel .forest-canopy{position:absolute;left:-3%;right:-3%;bottom:19%;height:24%;z-index:1;pointer-events:none;filter:grayscale(1);image-rendering:pixelated}
.meditation-panel .forest-canopy svg{display:block;width:100%;height:100%;image-rendering:pixelated;filter:drop-shadow(0 -3px #fff)}
.meditation-panel .meditation-coach{left:-21%;right:-21%;bottom:4%;height:94%;opacity:.42;filter:grayscale(1) contrast(1.22)}
.meditation-panel .meditation-coach .myr5-companion-card{opacity:1;mix-blend-mode:screen}
.meditation-panel .coach-pixel{left:-12%;right:-12%;bottom:7%;width:124%;height:76%;opacity:.82;z-index:1;filter:grayscale(1) contrast(1.3)}
.meditation-panel .breathing-orbit{top:36%;width:min(70vw,370px);z-index:5}
.meditation-panel .breathing-ring{transform:scale(var(--breath-scale,.91))!important;transition:transform .06s linear,opacity .06s linear!important;will-change:transform}
.meditation-panel .breathing-ring-stop{position:absolute;inset:0;z-index:2;border:0!important;border-radius:50%!important;background:transparent!important;box-shadow:none!important;padding:0!important;transform:scale(var(--breath-scale,.91));transform-origin:center;cursor:pointer;pointer-events:auto}
.meditation-panel .breathing-ring-stop[hidden]{display:none}
.meditation-panel .breathing-ring-stop:focus-visible{outline:4px solid #fff!important;outline-offset:8px!important}
.meditation-panel .breath-count,.meditation-panel [data-session-clock],.meditation-panel .breath-direction{pointer-events:none}
.meditation-panel .breath-count{z-index:4}
.meditation-panel [data-session-clock]{z-index:5}
.meditation-panel .breath-direction{z-index:5}
.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{font-size:clamp(28px,7vw,38px)!important;line-height:1.13!important;max-width:min(94vw,900px);padding:10px 13px;z-index:6}
.meditation-panel .breath-run:not([hidden]) .breath-phase{font-size:clamp(20px,5vw,26px)!important;line-height:1.14;max-height:none;overflow:visible}
.meditation-panel .breath-modes{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.meditation-panel .breath-mode-card{min-height:76px}
.meditation-panel .breath-mode-card strong{font-size:clamp(14px,3.8vw,19px)}
.meditation-panel .breath-mode-card small{font-size:clamp(11px,3vw,15px)}
.meditation-panel .breath-note{font-size:12px!important;line-height:1.2}
.meditation-panel .breath-run:not([hidden]) .breath-seated-notice{font-size:13px!important;line-height:1.15}
.meditation-panel .breath-actions button{font-size:14px!important}
.meditation-panel .meditation-coach{transform-origin:50% 95%}
@media(prefers-reduced-motion:reduce){.meditation-panel .breathing-ring{transition:transform .06s linear,opacity .06s linear!important;animation:none!important}}
@container meditation-scene (orientation: portrait) and (max-height: 780px){
 .meditation-panel .breathing-orbit{top:29%;width:min(62vw,230px)}
 .meditation-panel .breath-count{top:calc(50% - 60px);font-size:clamp(52px,16vw,82px)}
 .meditation-panel [data-session-clock]{font-size:17px;padding:4px 8px}
 .meditation-panel .meditation-character{left:22%;bottom:44%;height:min(18cqh,134px);min-width:84px}
 .meditation-panel .forest-canopy{bottom:20%;height:42%}
 .meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:52%;bottom:auto;left:36%;right:3%;width:auto;box-sizing:border-box;font-size:clamp(27.75px,7.4vw,34px)!important;line-height:1.07!important}
 .meditation-panel .breathing-session{bottom:max(5px,env(safe-area-inset-bottom));gap:3px;padding-inline:8px}
 .meditation-panel .breath-modes{gap:5px}
 .meditation-panel .breath-mode-card{min-height:62px;padding:5px!important}
 .meditation-panel .breath-mode-card strong{font-size:14px}
 .meditation-panel .breath-mode-card small{font-size:11px}
 .meditation-panel .breath-run:not([hidden]){gap:3px;padding:5px 7px}
 .meditation-panel .breath-run:not([hidden]) .breath-phase{font-size:24px!important}
 .meditation-panel .breath-actions button{min-height:36px!important;font-size:12px!important}
 .meditation-panel .breath-note{font-size:10px!important}
}
@container meditation-scene (orientation: portrait) and (max-height: 660px){
 .meditation-panel .breathing-orbit{top:25%;width:min(56vw,175px)}
 .meditation-panel .breath-count{top:calc(50% - 48px);font-size:clamp(42px,14vw,68px)}
 .meditation-panel .breath-direction{left:calc(50% + 40px);font-size:8px}
 .meditation-panel .meditation-character{left:22%;bottom:44%;height:min(16cqh,102px);min-width:70px}
 .meditation-panel .forest-canopy{bottom:20%;height:30%}
 .meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:43%;left:36%;right:3%;width:auto;box-sizing:border-box;font-size:clamp(27.75px,7.4vw,30px)!important;max-height:none;overflow:visible}
 .meditation-panel .breath-mode-card{min-height:50px;padding:3px!important}
 .meditation-panel .breath-mode-card small,.meditation-panel .breath-note{font-size:9px!important}
 .meditation-panel .breath-run:not([hidden]) .breath-phase{font-size:24px!important}
 .meditation-panel .breath-actions button{min-height:32px!important;font-size:11px!important}
}
@container meditation-scene (orientation: landscape) and (max-height: 600px){
 .meditation-panel .breathing-orbit{top:34%;width:min(40cqh,205px)}
 .meditation-panel .meditation-character{left:27%;bottom:3%;height:min(38cqh,130px);width:auto}
 .meditation-panel .forest-canopy{left:0;right:48%;bottom:4%;height:25%}
 .meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:18%;left:52%;right:3%;width:auto;box-sizing:border-box;font-size:clamp(24px,5vh,31px)!important;line-height:1.05!important}
 .meditation-panel [data-meditation-scene]>.breathing-session{left:52%;right:2%;bottom:2%;width:46%;max-width:none;padding:0;gap:3px}
 .meditation-panel .breath-modes{gap:4px}
 .meditation-panel .breath-mode-card{min-height:46px;padding:3px!important}
 .meditation-panel .breath-mode-card small{font-size:10px}
 .meditation-panel .breath-phase{font-size:20px!important}
 .meditation-panel .breath-note{font-size:9px!important}
}

/* Pause holds the exact painted breath phase; tapping the ring remains a small, smooth target. */
.meditation-panel.breathing-paused .breathing-ring,.meditation-panel.breathing-paused .breathing-ring-stop{transition:none!important}
@container meditation-scene (orientation: portrait) and (min-height: 781px){.meditation-panel .breath-run:not([hidden]) .breath-phase{font-size:24px!important}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{font-size:clamp(28px,7.4vw,38px)!important;box-sizing:border-box}}
@container meditation-scene (orientation: landscape) and (max-height: 600px){.meditation-panel .meditation-character{left:12%}.meditation-panel .breath-run:not([hidden]) .breath-phase{font-size:20px!important}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{width:auto;box-sizing:border-box}}

@container meditation-scene (orientation: portrait){.meditation-panel .meditation-character{left:21%}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{left:39%;font-family:system-ui,sans-serif!important}}
@container meditation-scene (orientation: landscape) and (max-height: 600px){.meditation-panel .breathing-orbit{width:min(52cqh,245px)}.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{font-family:system-ui,sans-serif!important}}

@container meditation-scene (orientation: portrait) and (min-height: 781px){.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:49%}}
@container meditation-scene (orientation: portrait) and (min-height: 661px) and (max-height: 780px){.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:47%}}
@container meditation-scene (orientation: landscape) and (max-height: 600px){.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:22%}}

@container meditation-scene (orientation: landscape) and (max-height: 600px){.meditation-panel .meditation-speech,.meditation-panel .meditation-near .meditation-speech{top:58px;padding-block:0;line-height:1.2!important}}

.meditation-panel .room-pixels{display:none!important}.meditation-panel.meditation-colour.has-wonder-art .meditation-far{background:#000!important}
.meditation-panel .room-art{display:none!important}
.meditation-panel .forest-canopy{display:none!important}
.meditation-panel .meditation-far{background:url('/pod/worlds/meditation-waterfall.png') center bottom / cover no-repeat!important;image-rendering:pixelated!important}
.meditation-panel.meditation-colour.has-wonder-art .meditation-far{background:url('/pod/worlds/meditation-waterfall.png') center bottom / cover no-repeat!important;image-rendering:pixelated!important}
.meditation-panel.has-wonder-art .meditation-far{background:url('/pod/worlds/meditation-waterfall.png') center bottom / cover no-repeat!important;image-rendering:pixelated!important}
.meditation-panel .meditation-mid{opacity:.75!important}
.meditation-panel .breath-hud{position:absolute;left:0;right:0;bottom:12%;display:grid;place-items:center;z-index:5;pointer-events:none}
.meditation-panel .breath-hud .breath-count{font-size:clamp(48px,14vw,84px);top:auto!important;bottom:auto!important;position:static!important}
.meditation-panel .breath-hud .breathing-ring-stop{position:static;width:44px;height:44px;pointer-events:auto;background:none;border:0;padding:0;margin:0}
.meditation-panel .meditation-character{left:25%;bottom:6% !important;height:20vh!important}
.meditation-panel .meditation-coach{z-index:1!important}
/* R18 A3: grey veil over the whole stage (a sibling, so nothing inherits a filter); a hole centred on the character grows with each completed breath. */
@property --reveal-r{syntax:'<length>';inherits:false;initial-value:0px}
.meditation-grey{position:absolute;inset:0;z-index:3;pointer-events:none;--cx:50%;--cy:60%;--reveal-r:0px;-webkit-backdrop-filter:grayscale(1);backdrop-filter:grayscale(1);-webkit-mask-image:radial-gradient(circle at var(--cx) var(--cy),transparent calc(var(--reveal-r) - 28px),#000 var(--reveal-r));mask-image:radial-gradient(circle at var(--cx) var(--cy),transparent calc(var(--reveal-r) - 28px),#000 var(--reveal-r));transition:--reveal-r 1.2s ease-out,opacity 2.5s ease}
.meditation-colour .meditation-grey{opacity:0}
/* R18 A4: seated warning, full-scene, fades out on Accept */
.breath-seated-overlay{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:24px;background:#050a12f2;transition:opacity .6s ease}.breath-seated-overlay[hidden]{display:none}.breath-seated-overlay.fading{opacity:0;pointer-events:none}
.breath-seated-overlay>div{display:grid;gap:20px;max-width:360px;justify-items:center;text-align:center}.meditation-panel .breath-seated-overlay .breath-seated-notice{font-size:17px!important;line-height:1.45}.breath-seated-overlay button{min-height:48px;padding:0 36px;border:2px solid #fff;border-radius:10px;background:#0b1c26;color:#fff;font:700 17px Georgia,serif;cursor:pointer}
/* R18 A5: speech bubbles fade in (.5 s), stay 4 s, fade out (.5 s) */
.meditation-panel .meditation-speech{opacity:0}.meditation-panel .meditation-speech.bubble{animation:bubble 5s ease forwards}@keyframes bubble{0%{opacity:0}10%,90%{opacity:1}100%{opacity:0}}
/* R18 A6: the four-legged coach behind the waterfall leaps out through the water at the viewer (700 ms), then the dialog closes */
.meditation-panel.coach-leap .meditation-mid{z-index:4;opacity:1!important}.meditation-panel.coach-leap .meditation-coach{animation:coach-leap .7s cubic-bezier(.4,0,.8,.6) forwards}.meditation-panel.coach-leap .meditation-far{animation:coach-splash .7s ease-out}
@keyframes coach-leap{0%{transform:translateY(0) scale(1);opacity:.45}35%{transform:translateY(-8%) scale(1.9);opacity:.85}70%{transform:translateY(4%) scale(3.6);opacity:.95}100%{transform:translateY(14%) scale(6);opacity:0}}@keyframes coach-splash{40%{filter:brightness(1.7) saturate(1.3)}}
/* R18 A3: while a session runs the controls sit at the top, so the seated character (the centre of the colour circle) and the counter stay visible. */
@media(orientation:portrait){.meditation-panel:has([data-breath-run]:not([hidden])) .breathing-session{top:56px;bottom:auto}}
/* R18 polish: a clear scene. No platform diamond; the coach is a solid dark shadow; the counter is a small chip; the top panel fades after Accept. */
.meditation-panel .meditation-platform{display:none}
.meditation-panel .meditation-coach{left:14%;right:14%;bottom:34%;height:36%;filter:brightness(0);opacity:.45}
.meditation-panel .meditation-coach .coach-pixel{filter:brightness(0)}
.meditation-panel .breath-hud{left:auto;right:5%;width:auto;bottom:3%;display:flex;gap:8px;align-items:center;justify-content:flex-end;pointer-events:none}
.meditation-panel .breath-hud .breath-count{position:static!important;transform:none!important;font:700 14px/1 ui-monospace,monospace!important;letter-spacing:0;text-shadow:1px 1px #000;order:2}
.meditation-panel .breath-hud [data-session-clock]{position:static!important;transform:none!important;font-size:14px!important;padding:3px 8px;box-shadow:none;order:1}
.meditation-panel .breath-hud .breath-direction{position:static!important;transform:none!important;font-size:11px!important;order:3}
.meditation-panel .breath-hud .breathing-ring-stop{order:4;width:auto;height:auto;padding:3px 8px;border:2px solid #fff;background:#000;color:#fff;font:700 12px ui-monospace,monospace;transform:none!important}.meditation-panel .breath-hud .breathing-ring-stop::before{content:"Exit"}
.meditation-panel .breathing-session{transition:opacity .6s ease}.meditation-panel.hud-calm .breathing-session{opacity:.07;pointer-events:none}
/* leap splash: a burst of water drops from the middle of the falls */
.meditation-panel.coach-leap .meditation-stage::before{content:'';position:absolute;left:50%;top:48%;width:10px;height:10px;margin:-5px;border-radius:50%;z-index:6;pointer-events:none;background:#e9fbff;box-shadow:-60px -30px #bff3ff,60px -30px #e9fbff,-90px 10px #7fe3f5,90px 10px #bff3ff,-40px 50px #e9fbff,40px 50px #7fe3f5,0 -70px #bff3ff,-20px 80px #bff3ff,25px -55px #e9fbff,-75px -65px #7fe3f5,80px -60px #bff3ff;animation:coach-drops .7s ease-out forwards}
@keyframes coach-drops{from{transform:scale(.2);opacity:1}to{transform:scale(3.2);opacity:0}}
.meditation-panel.coach-leap .breathing-session{opacity:0;pointer-events:none}
/* in the routed room the dock sits inside the panel: lift the chip and the character above it */
/* R20: the room now ends at the 88px console's top edge (R19's 64px bar overlapped its last 24px): lift by 40px to
   keep the chip and character where they stood on screen. */
.meditation-panel:has(>#coachDock) .breath-hud{bottom:calc(40px + env(safe-area-inset-bottom) + 6px)}.meditation-panel:has(>#coachDock) .meditation-character{bottom:calc(6% + 40px + env(safe-area-inset-bottom))!important}
@media(orientation:landscape){.meditation-panel .breath-hud{left:30%;right:auto}}.meditation-panel .breath-hud .breathing-ring-stop{min-width:44px;min-height:32px}

/* R20 meditation: one Begin button, a settle countdown, the steady in/out cue, and a per-tick colour pulse. */
.meditation-grey{transition:--reveal-r 60ms linear,opacity 2.5s ease}
/* Begin sits bottom-right, above the chip, clear of the seated character at bottom-left */
.meditation-panel .breathing-session .breath-modes{display:grid;grid-template-columns:1fr;justify-items:end}
.meditation-panel .breathing-session .breath-modes[hidden]{display:none}
.meditation-panel .breath-begin{min-height:56px;width:min(46vw,190px)!important;padding:0 20px;border:3px solid #fff;border-radius:0;background:#000;color:#fff;box-shadow:4px 4px #777;font:700 22px ui-monospace,monospace;letter-spacing:.12em;pointer-events:auto;cursor:pointer}
.meditation-panel .breath-begin:focus-visible{outline:3px solid #fff;outline-offset:5px}
.meditation-panel .breath-settle,.meditation-panel .breath-cue{position:absolute;left:50%;right:auto;width:max-content;transform:translateX(-50%);top:30%;z-index:5;margin:0;pointer-events:none;color:#fff;text-align:center;text-shadow:3px 3px #000}
.meditation-panel .breath-settle{display:flex;justify-content:center;align-items:baseline;gap:12px}
.meditation-panel .breath-settle[hidden],.meditation-panel .breath-cue[hidden]{display:none}
.meditation-panel .breath-settle small{font:700 16px ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase}
.meditation-panel .breath-settle b{font:900 min(72px,18vw,11vh)/1 ui-monospace,monospace}
.meditation-panel .breath-cue{font:700 min(42px,8.5vw,8vh)/1 ui-monospace,monospace;opacity:1;animation:none}
@media(max-height:700px){.meditation-panel .breath-settle,.meditation-panel .breath-cue{top:22%}}
@media(orientation:landscape){.meditation-panel .breath-settle,.meditation-panel .breath-cue{left:27%;top:30%}}
.meditation-panel:has([data-breath-modes]:not([hidden])) .breath-hud{visibility:hidden} /* start screen: the idle 3:30 chip sat under the safety note */
/* R20: the portal's "Tilt to look around" tab sits on the dock's top edge, left; lift the counter chip and Begin clear of it */
/* R20 frame: portrait only; in landscape the HUD and Begin sit right of the tab (left:30%+) and the shorter room has no 36px to spare. */
@media(orientation:portrait){.meditation-panel:has(>.portal-peer-ui>.portal-tilt-chip) .breath-hud{translate:0 -36px}.meditation-panel:has(>.portal-peer-ui>.portal-tilt-chip) .breathing-session .breath-modes{translate:0 -44px}}

.encounter{min-height:390px;border:1px solid #b797c655;border-radius:26px;overflow:hidden;background:radial-gradient(ellipse at 68% 29%,#673d7838,transparent 45%),linear-gradient(#171026,#261c38);box-shadow:inset 0 0 45px #05020f99}.encounter-grid{opacity:.45}.rest-coach-mount{inset:6% 6% 29% 26%}.attack-target{inset:10% 5% 31% 28%}.coach-battle-platform{position:absolute;left:32%;right:7%;bottom:32%;height:45px;border-radius:50%;border:2px solid #edbd8555;background:repeating-radial-gradient(ellipse,#574155 0 8px,#8b686a 9px 10px);box-shadow:0 7px 0 #2a2037,0 9px 0 #977ca9,0 18px 24px #03000888;z-index:1}.player-platform{left:30%;bottom:12%;width:185px;height:50px}.platform-top{background:repeating-radial-gradient(ellipse,#324353 0 11px,#568b9a 12px 13px);border-color:#8de8d5;box-shadow:0 0 19px #64f5d344}.platform-edge{background:linear-gradient(#537287,#192031);border-color:#8bddd7;box-shadow:0 4px 0 #57b8ba,0 10px 24px #47cecf22}.platform-thruster{background:linear-gradient(#89ffde99,transparent)}#restAvatar{width:150px;height:158px;left:18px;bottom:15px}.rest-hand{left:auto;right:3%;bottom:10%;width:clamp(115px,32vw,175px);height:clamp(135px,38vw,200px)}.player-name{bottom:12px;gap:5px;flex-wrap:wrap;padding:0 8px;text-align:center;line-height:1.3}.player-name #restGuest{max-width:75%;overflow-wrap:anywhere}.rest-weapon-name{position:absolute;left:14px;bottom:30%;color:#9debd9;font:9px monospace;max-width:145px;z-index:9}.boss-status{z-index:9;padding:9px 12px}.attack-target span{font-size:9px;letter-spacing:1px;bottom:12px}.attack-flash{left:44%;top:27%}.projectile{left:31%;bottom:42%;background:#afffe7;box-shadow:0 0 12px #63ffc6;transform:rotate(38deg)}.encounter.hit .projectile{animation:arena-bolt .3s ease-in}.encounter[data-weapon=melee].hit .projectile{height:65px;width:65px;border-top:4px solid #b8ffeb;border-radius:50%;background:none;box-shadow:none;animation:arena-slash .35s ease-out}.encounter.team-strike.hit .attack-flash{border-width:5px;box-shadow:0 0 30px #e6b4ff99}.encounter.team-strike.hit .projectile{filter:drop-shadow(8px 5px 2px #cf95ff)}.encounter.hit #restAvatar{animation:none}.weapon-subsection{padding:15px;margin-top:15px;border:1px solid #7c8eaa;border-radius:12px;background:#13253166;text-align:left}.weapon-subsection h3{margin:0 0 10px;color:#b7fce4}.weapon-subsection label{display:block;font-size:13px;margin:10px 0}.level-bar{display:block;width:100%;height:10px;accent-color:#7cf0cf}.weapon-subsection select{display:block;width:100%;margin-top:5px}.weapon-subsection p{margin-bottom:0!important}@keyframes arena-bolt{0%{opacity:1;transform:translate(0,0) rotate(38deg)}100%{opacity:.3;transform:translate(105px,-130px) rotate(38deg)}}@keyframes arena-slash{0%{opacity:0;transform:translate(40px,-50px) rotate(-70deg)}50%{opacity:1}100%{opacity:0;transform:translate(100px,-100px) rotate(65deg)}}@media(max-width:370px){.encounter{min-height:350px}.player-platform{width:160px}.rest-hand{right:0;width:112px;height:138px}#restAvatar{left:5px}.rest-weapon-name{max-width:110px;font-size:8px}}@media(prefers-reduced-motion:reduce){.encounter.hit .projectile{animation:none;opacity:.7}.encounter.hit .attack-flash{animation:none;opacity:.4}}

.mom-tracker{margin:18px 0 10px;border:2px solid #a18796;border-radius:10px;padding:16px;background:linear-gradient(135deg,#534053,#302437);color:#f8ebd7;box-shadow:inset 0 1px #d7b9c6,0 5px 0 #191320;font:16px/1.4 Arial,sans-serif;overflow:hidden}
.mom-tracker .tracker-brand{display:flex;align-items:center;gap:12px;margin:-16px -16px 18px;padding:12px 16px;background:#ead6ac;color:#362b3c;border-bottom:3px solid #9b815f}
.tracker-brand img{width:48px;height:48px;object-fit:contain;flex:none}.tracker-brand>div{flex:1;min-width:0}.tracker-brand>div>span{font:700 17px/1.2 Arial,sans-serif;letter-spacing:3px}
.mom-tracker h2{margin:3px 0 0;color:#574359;font:14px/1.3 Arial,sans-serif}.tracker-unit{font:700 12px/1.4 monospace;letter-spacing:1px;border:1px solid #897153;padding:5px}
.tracker-identity{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px}.mom-tracker .tracker-label{display:block;font:700 12px/1.4 Arial,sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:#d0b7c7}
.tracker-member p{margin:4px 0;color:#fff3d5;font:700 clamp(24px,6vw,36px)/1.15 Arial,sans-serif;overflow-wrap:anywhere}
.tracker-day{display:flex;align-items:center;gap:10px;padding:10px 14px;border:2px solid #b19465;border-radius:5px;background:#211c29;box-shadow:inset 0 2px 6px #0007}.tracker-day span{text-transform:uppercase;font-size:12px;letter-spacing:1px}.tracker-day strong{color:#ffe2a0;font:700 40px/1 monospace;font-variant-numeric:tabular-nums}
.tracker-record{margin:16px 0;padding:12px 14px;border-left:4px solid #a7ccad;background:#211b2a}.tracker-record p{margin:2px 0;color:#edf6e7}.tracker-record strong{font-size:25px;font-variant-numeric:tabular-nums}
.mom-tracker .tracker-target-title{font:700 12px/1.4 Arial,sans-serif;letter-spacing:1px;text-transform:uppercase;color:#eed8ba;margin:20px 0 9px}.tracker-targets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.tracker-targets>div{border:1px solid #8d7588;border-radius:4px;padding:12px;background:#3a2e41}.tracker-targets [hidden]{display:none}.tracker-targets dt{font-size:13px;color:#dfc9d7}.tracker-targets dd{margin:3px 0 0;display:flex;gap:7px;align-items:baseline;flex-wrap:wrap;color:#efdcb7}.tracker-targets strong{font:700 27px/1.2 monospace;font-variant-numeric:tabular-nums}.tracker-targets dd span{font-size:12px}
.tracker-focus{padding:16px 0}.tracker-focus p{margin:4px 0 0;font-size:15px;color:#f4e6d1}.tracker-footer{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;border-top:1px solid #8b6f84;padding-top:8px}.tracker-footer>span{font:12px/1.5 monospace;letter-spacing:1px;color:#d3bfcf}.tracker-footer a{display:inline-flex;min-height:44px;align-items:center;color:#ffe2a0;font-size:14px;font-weight:700}.tracker-footer a:focus-visible{outline:3px solid #ffe2a0;outline-offset:4px}
@media(max-width:360px){.tracker-brand img{width:38px;height:38px}.tracker-unit{display:none}.tracker-day{padding:8px;gap:6px}.tracker-day strong{font-size:32px}}
.mom-tracker{padding:0}
.mom-tracker .tracker-brand{margin:0;border-bottom:0;min-height:72px;cursor:pointer;list-style:none;gap:10px}
.tracker-brand::-webkit-details-marker{display:none}
.tracker-brand:focus-visible{outline:3px solid #ffe2a0;outline-offset:-4px}
.tracker-brand img{width:38px;height:38px}
.tracker-summary-day{white-space:nowrap;font:14px/1.3 Arial,sans-serif}
.tracker-summary-day strong{font-variant-numeric:tabular-nums}
.tracker-chevron{font-size:24px;transition:transform .2s}
.tracker-collapse[open] .tracker-chevron{transform:rotate(180deg)}
.tracker-collapse[open] .tracker-brand{border-bottom:3px solid #9b815f}
.tracker-content{padding:16px}

/* Extend the existing dry-erase board and its marker controls. */
#accountPanel{width:min(1060px,calc(100vw - 22px));--marker:#a32b49;padding-bottom:22px;scroll-padding-bottom:120px}
#accountPanel [hidden]{display:none!important}#accountPanel h2{font-size:clamp(30px,5vw,43px)}
#accountPanel .crew-invites{padding:0 0 18px;margin:0 0 18px;border-bottom:2px solid #82919f70}#accountPanel .crew-invites h3{font:28px/1.2 BoardHand2,cursive;color:#304663;margin:0 0 12px}
.scoreboard-crew{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:8px 0 12px}.crew-place{display:flex;align-items:center;flex-direction:column;min-width:0;gap:5px;padding:10px 5px;background:#e5e9eb66;border:1px dashed #7e8f9e;border-radius:5px}
.crew-head{height:72px;width:72px;display:grid;place-items:center;border:2px solid #778d9c;border-radius:5px;background:#e7deed;color:#61768a;font:32px/1 Arial,sans-serif;flex:none}.crew-head canvas{width:64px;height:64px;image-rendering:pixelated}.crew-place strong{font:700 16px/1.3 Arial,sans-serif;color:#2e3e56;overflow-wrap:anywhere;text-align:center}.crew-place-label{font:13px/1.3 Arial,sans-serif;color:#536373}
#accountPanel .crew-remove{font:14px/1.2 Arial,sans-serif;min-height:44px;border:0;box-shadow:none;background:transparent;text-decoration:underline;padding:5px;color:#80503d}
#accountPanel #crewInviteControls summary{font:21px/1.4 BoardHand0,cursive;min-height:44px;padding:5px 0}#accountPanel #crewInviteControls p{font:16px/1.5 Arial,sans-serif}#accountPanel #crewInviteControls button{font:16px/1.3 Arial,sans-serif;margin:6px 7px 8px 0}#accountPanel #crewInviteControls label{font:16px/1.4 Arial,sans-serif}#accountPanel #crewInviteControls input{font:16px/1.5 monospace;width:100%;padding:12px 8px;min-height:44px}#crewJoinForm{margin:15px 0 8px;border-top:1px solid #9ba7b6;padding-top:14px}#accountPanel #crewStatus{font:15px/1.5 Arial,sans-serif;margin:8px 0 0}#crewStatus:empty{display:none}
#accountPanel .progress-summary{padding-bottom:12px}#accountPanel #accountLevel{font-size:25px}#accountPanel #accountSets{font-size:18px}
.scoreboard-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;border-bottom:3px solid var(--marker);margin-top:22px;padding-bottom:12px;color:var(--marker)}#accountPanel .scoreboard-heading h3{margin:0;font:36px/1.1 BoardHand2,cursive;color:var(--marker)}#accountPanel #scoreboardSubtitle{margin:4px 0 0;font:16px/1.4 Arial,sans-serif;color:var(--marker)}.medal-key{display:flex;gap:7px;flex-wrap:wrap}.medal-key span{font:700 12px/1.3 Arial,sans-serif;padding:5px 7px;border:1px solid #87919b;border-radius:3px;color:#253240}.medal-key [data-medal=gold]{background:#e7c666}.medal-key [data-medal=silver]{background:#d2dde3}.medal-key [data-medal=bronze]{background:#cd9b78}
#boardCanvas{position:relative}#accountPanel #workoutList{display:block;position:relative;color:var(--marker);min-height:220px}#accountPanel #recordsStatus{font:14px/1.5 Arial,sans-serif;margin:10px 0}
.score-axis{font:700 14px/1.5 Arial,sans-serif;color:var(--marker);text-transform:uppercase;letter-spacing:.6px}#accountPanel .score-caption{font:13px/1.5 Arial,sans-serif;color:#596878;margin:4px 0 12px}
.score-row{display:grid;grid-template-columns:minmax(100px,1.1fr) minmax(0,2fr);gap:15px;align-items:center;padding:15px 0 14px;border-bottom:2px solid color-mix(in srgb,var(--marker) 25%,transparent)}.score-exercise{border-left:3px solid var(--marker);padding-left:10px}.score-level{font:700 12px/1.4 Arial,sans-serif;letter-spacing:.8px}.score-exercise h4{font:24px/1.1 BoardHand2,cursive;color:var(--marker);margin:6px 0}.score-unit{font:13px/1.4 Arial,sans-serif;color:#536373}
.score-pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-self:stretch}.score-pillar{display:flex;flex-direction:column;text-align:center;min-width:0;color:#344352}.score-value{font:700 24px/1.2 BoardHand2,cursive;font-variant-numeric:tabular-nums;color:var(--marker)}.pillar-track{height:72px;display:flex;align-items:flex-end;justify-content:center;background:repeating-linear-gradient(to top,transparent 0 23px,#9eabb92a 23px 24px);border-bottom:2px solid var(--marker);margin-top:5px}.pillar-bar{display:block;width:min(45px,90%);height:var(--bar-height);border:2px solid #795923;border-bottom:0;border-radius:5px 3px 0 0;background:repeating-linear-gradient(-15deg,#e0b74f 0 4px,#efd282 4px 7px);box-shadow:inset 3px 0 #fff4bd7a,3px 0 #674c3126}
[data-medal=silver] .pillar-bar{background:repeating-linear-gradient(-15deg,#a9bbc8 0 4px,#d5e0e5 4px 7px);border-color:#536b7d;box-shadow:inset 3px 0 #f8ffff7a,3px 0 #41586b26}[data-medal=bronze] .pillar-bar{background:repeating-linear-gradient(-15deg,#b67848 0 4px,#d6a780 4px 7px);border-color:#704328;box-shadow:inset 3px 0 #ffe0b87a,3px 0 #63392126}[data-medal=empty] .pillar-bar{height:6px;width:70%;background:transparent;border:1px dashed #8a9daa;border-bottom:0;box-shadow:none}
.pillar-rank{font:700 11px/1.4 Arial,sans-serif;text-transform:capitalize;margin-top:6px;color:#52606d}.pillar-name{font:13px/1.35 Arial,sans-serif;overflow-wrap:anywhere;margin-top:3px}#accountPanel .score-tie-note{font:13px/1.5 Arial,sans-serif;margin:12px 0;color:#596878}
#accountPanel .marker-tray{height:auto;min-height:98px;position:sticky;bottom:-22px;margin:25px -10px -22px;padding:12px 10px 8px;display:flex;align-items:stretch;justify-content:flex-start;gap:9px;overflow-x:auto;overscroll-behavior-x:contain;pointer-events:auto;z-index:4;scrollbar-width:thin;background:linear-gradient(#c4cece,#f0f2ea 32%,#c4cece 35%,#929fa4);border-top:3px solid #74868e;box-shadow:0 -5px 14px #27343a25;scroll-padding:10px}
#accountPanel .board-marker{flex:0 0 82px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:10px;background:transparent;border:2px solid transparent;box-shadow:none;border-radius:5px;padding:7px 4px;min-height:78px;color:#243a49;touch-action:manipulation}#accountPanel .board-marker[aria-pressed=true]{border-color:var(--pen-ink);background:#ffffffb5}.marker-label{font:700 13px/1.25 Arial,sans-serif;max-width:84px;text-align:center}.marker-body{height:15px;width:68px;border:1px solid #66737c;border-left:12px solid var(--pen-ink);border-right:10px solid var(--pen-ink);border-radius:4px;background:linear-gradient(#fff,#d1d8d8);box-shadow:0 3px 3px #243b4866;position:relative;transform:rotate(-5deg);display:block}.marker-eraser{position:absolute;left:-12px;top:-2px;height:17px;width:9px;border:1px solid #415164;border-radius:3px;background:repeating-linear-gradient(#49555d 0 2px,#7e8b8c 2px 3px)}.marker-tip{position:absolute;right:-16px;top:4px;width:7px;height:5px;background:var(--pen-ink);border-radius:0 3px 3px 0}
#accountPanel .marker-tray .marker-body i{transform:none;box-shadow:none}.marker-tray .marker-eraser{display:block}.marker-tray .marker-tip{display:block}
#scoreboardMarkers i.marker-eraser{position:absolute;left:-12px;right:auto;top:-2px;height:17px;width:9px;border:1px solid #415164;border-radius:3px;background:repeating-linear-gradient(#49555d 0 2px,#7e8b8c 2px 3px)}#scoreboardMarkers i.marker-tip{position:absolute;right:-16px;left:auto;top:4px;width:7px;height:5px;border:0;background:var(--pen-ink);border-radius:0 3px 3px 0}
#boardMovingPen{position:absolute;z-index:3;top:0;left:0;width:85px;height:19px;background:linear-gradient(#fff,#d1d8d8);border:1px solid #536674;border-left:12px solid var(--pen-ink);border-right:10px solid var(--pen-ink);border-radius:4px;pointer-events:none;filter:drop-shadow(2px 4px 2px #21374944);transform-origin:50% 50%}#boardMovingPen .marker-eraser{height:21px;left:-13px;top:-2px}
.board-erasing #workoutList{animation:board-wipe .38s ease-in both}.board-erasing #boardMovingPen{animation:pen-erase .38s ease-in both}.board-drawing #workoutList{animation:board-reveal .44s steps(8,end) both}.board-drawing #boardMovingPen{animation:pen-scribble .44s linear both}
@keyframes board-wipe{from{clip-path:inset(0)}to{clip-path:inset(0 0 0 100%)}}
@keyframes board-reveal{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@keyframes pen-erase{0%{transform:translate(var(--pen-from-x),var(--pen-from-y)) rotate(175deg)}25%{left:0;top:8%;transform:rotate(175deg)}60%{left:45%;top:40%;transform:rotate(190deg)}100%{left:85%;top:75%;transform:rotate(175deg)}}
@keyframes pen-scribble{0%{left:0;top:5%;transform:rotate(-25deg)}20%{left:18%;top:78%;transform:rotate(20deg)}40%{left:35%;top:12%;transform:rotate(-25deg)}60%{left:50%;top:80%;transform:rotate(20deg)}80%{left:66%;top:15%;transform:rotate(-25deg)}100%{left:85%;top:75%;transform:rotate(20deg)}}
@media(min-width:800px){.score-row{grid-template-columns:240px minmax(0,1fr)}.pillar-track{height:90px}.score-pillars{gap:28px}.pillar-bar{width:62px}.score-exercise h4{font-size:27px}#accountPanel .board-marker{flex:1 0 73px}.scoreboard-crew{gap:22px}.crew-place{flex-flow:row wrap;justify-content:center;column-gap:12px}.crew-place-label{flex-basis:100%;text-align:center}}
@media(max-width:420px){#accountPanel header{min-height:100px}#accountPanel .progress-eyebrow{font-size:12px}#accountPanel h2{font-size:30px}.score-row{grid-template-columns:94px minmax(0,1fr);gap:8px}.score-exercise{padding-left:6px}.score-exercise h4{font-size:21px}.score-pillars{gap:5px}.pillar-name{font-size:12px}.scoreboard-crew{gap:6px}.crew-head{width:62px;height:62px}.crew-head canvas{width:58px;height:58px}.crew-place strong{font-size:14px}.crew-place-label{font-size:12px}.medal-key span{font-size:12px}.scoreboard-heading{gap:10px}}
@media(prefers-reduced-motion:reduce){#accountPanel .board-erasing,#accountPanel .board-drawing,#accountPanel #workoutList,#boardMovingPen{animation:none!important}#boardMovingPen{display:none!important}}

/* The original pixel world, with the current coach, Gala equipment and Helping Hand. */
:root{--room-world:url('/pod/worlds/great-wall.webp');--room-pixel:ui-monospace,SFMono-Regular,Consolas,monospace}
body[data-screen=rest]{overflow:hidden;max-width:none}
body[data-screen=rest]>.ship-header,body[data-screen=rest] #coachDock.coach-dock,body[data-screen=rest]>.sync-badge{display:none}
#restScreen{position:fixed;inset:0;z-index:30;min-height:0;padding:0;overflow:hidden;display:block;background:#211b32;font-family:var(--room-pixel)}
#restScreen .encounter{position:absolute;inset:0;margin:0;width:100%;height:100%;min-height:0;max-height:none;border:0;border-radius:0;isolation:isolate;background:#413251}
.rest-world-backdrop,.rest-world-floor{position:absolute;inset:0;background:var(--room-world) center/100% 100% no-repeat;image-rendering:pixelated;pointer-events:none}
.rest-world-backdrop{z-index:0}
.rest-world-floor{z-index:4;clip-path:inset(79% 0 0)}
#restScreen .encounter-grid,#restScreen .encounter-orbit{display:none}
#restScreen .rest-coach-mount{position:absolute;inset:4% -6% auto;width:112%;height:76%;z-index:3;pointer-events:none}
#restScreen .rest-coach-mount canvas{image-rendering:pixelated}
#restScreen .coach-battle-platform{left:12%;right:12%;bottom:21%;height:34px;z-index:2;border-radius:0;border:0;clip-path:polygon(0 0,100% 0,96% 75%,72% 100%,28% 100%,4% 75%);background:var(--room-world) center bottom/100% auto;box-shadow:0 5px #171327}
#restScreen .attack-target{inset:18% 0 23%;width:100%;z-index:8;border-radius:0;background:none!important;box-shadow:none!important}
#restScreen .attack-target span{bottom:18%;font:700 14px/1.4 var(--room-pixel);color:#fff4c9;text-shadow:2px 2px #201329,-2px -2px #201329}
#restScreen .player-platform{left:50%;bottom:15%;width:clamp(220px,60vw,580px);height:28px;z-index:6;transform:translateX(-50%)}
#restScreen .platform-top{border-radius:0;clip-path:polygon(3% 0,97% 0,100% 100%,0 100%);border:3px solid #cad1ab;background:var(--room-world) center bottom/100% auto;box-shadow:0 -4px #e2d7a6}
#restScreen .platform-edge{inset:12px 0 -18px;border-radius:0;clip-path:polygon(0 0,100% 0,88% 85%,65% 100%,35% 100%,12% 85%);border-color:#b0a69c;background:linear-gradient(#5a5263,#211c30);box-shadow:none}
#restScreen .platform-thruster{display:none}
#restScreen #restAvatar{left:calc(50% - 58px);bottom:8px;width:116px;height:122px;image-rendering:pixelated;filter:drop-shadow(3px 3px #211b31aa)}
#restScreen .rest-hand{left:auto;right:4%;bottom:17%;width:clamp(110px,24vw,210px);height:clamp(125px,29vw,230px);z-index:7;pointer-events:none}
#restScreen .player-name{bottom:10.5%;z-index:9;left:0;right:0;font:14px/1.3 var(--room-pixel);color:#fff5dc;text-shadow:2px 2px #211329;background:#1a152a88;padding:5px}
#restScreen .rest-weapon-name{left:12px;bottom:24%;z-index:9;font:14px/1.3 var(--room-pixel);text-shadow:2px 2px #211329}
#restScreen .rest-heading{position:absolute;z-index:12;top:0;left:0;right:0;padding:calc(10px + env(safe-area-inset-top)) 16px 12px;background:linear-gradient(#171023ee,#17102390,transparent)}
#restScreen .rest-heading h1{font:700 22px/1.2 var(--room-pixel);letter-spacing:0;color:#fff1cf}
#restScreen .eyebrow{font:12px/1.4 var(--room-pixel)}
#restScreen button{font-family:var(--room-pixel);border-radius:2px;box-shadow:3px 3px #110d1c;min-height:44px}
#restScreen .boss-status{top:calc(88px + env(safe-area-inset-top));left:16px;right:16px;z-index:10;background:#201832b3;border:2px solid #cab7ce;border-radius:0;font:14px/1.3 var(--room-pixel)}
#restScreen .boss-health{border-radius:0;height:10px}
#restScreen .rest-receipt{position:absolute;z-index:12;top:calc(146px + env(safe-area-inset-top));left:16px;right:16px;padding:6px 10px;background:#211830aa;font:14px/1.3 var(--room-pixel);color:#fff0dc}
#restScreen .rest-bottom{position:absolute;bottom:0;left:0;right:0;z-index:12;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-top:2px solid #b19bb8;background:#1a152af2}
#restScreen .rest-bottom>div:last-child{display:flex;align-items:center;gap:10px}
#restScreen .rest-bottom button{font-size:14px;white-space:nowrap}
#restScreen .rest-clock small{font-size:12px}
#restScreen .rest-clock strong{font:700 26px/1.1 var(--room-pixel)}
#restScreen .hand-team{position:absolute;z-index:11;left:16px;bottom:calc(96px + env(safe-area-inset-bottom));margin:0;max-width:60%;background:#211830dd;padding:8px;border:1px solid #b2d2b3;border-radius:0;font:12px/1.3 var(--room-pixel)}
body[data-screen=rest] .reward-pack-launch{bottom:calc(156px + env(safe-area-inset-bottom,0px))}
#restScreen .hand-team #handTeamStatus{display:none}
#restScreen .hand-team small{font-size:12px}
#restScreen .rest-feedback{position:absolute;left:16px;right:16px;top:calc(185px + env(safe-area-inset-top));z-index:11;margin:0;min-height:0;text-align:center;font:14px/1.4 var(--room-pixel);text-shadow:2px 2px #211329;color:#fff5da;pointer-events:none}
#restScreen .shield-note{position:absolute;right:16px;bottom:calc(97px + env(safe-area-inset-bottom));z-index:11;max-width:35%;margin:0;text-align:right;font:12px/1.3 var(--room-pixel);text-shadow:2px 2px #211329;color:#fff5da}
#restScreen .damage-float{z-index:11;top:40%;font:900 clamp(26px,7vw,48px)/1 var(--room-pixel);text-shadow:3px 3px #341630}
#restScreen .attack-flash{z-index:7;top:36%;left:47%}

.meditation-panel{width:min(900px,100vw)!important;max-width:100vw;max-height:100dvh;padding:16px!important;border:3px solid #b2a0bb!important;border-radius:0!important;background:#201b32!important;font-family:var(--room-pixel)}
.meditation-panel header h2,.meditation-entry strong{font:700 20px/1.3 var(--room-pixel)}
.meditation-panel header button,.meditation-panel [data-breath-pause],.meditation-entry{border-radius:2px!important;font-family:var(--room-pixel);box-shadow:3px 3px #110d1c}
.meditation-stage{height:clamp(320px,58dvh,620px);margin-top:14px;overflow:hidden;border:3px solid #99889f;background:var(--room-world) center/100% 100% no-repeat;image-rendering:pixelated}
.meditation-stage::after{content:'';position:absolute;inset:0;background:#1b164122;z-index:0;pointer-events:none}
.meditation-character{position:absolute!important;bottom:15%;left:calc(50% - 64px);width:128px;height:192px;z-index:3;padding:0!important;image-rendering:pixelated}
.meditation-character canvas{width:128px;height:192px;max-width:none;image-rendering:pixelated}
.meditation-platform{position:absolute;left:20%;right:20%;bottom:14%;height:24px;z-index:2;border-top:5px solid #e1d3ab;border-bottom:8px solid #352b43;background:var(--room-world) center bottom/100% auto;clip-path:polygon(3% 0,97% 0,100% 55%,85% 100%,15% 100%,0 55%)}
.meditation-panel .breathing-ring{bottom:12%;left:calc(50% - 120px);width:240px;height:240px;z-index:1;border:3px solid #c2f0c5;box-shadow:0 0 0 4px #26344e,0 0 0 7px #b8e8c455;animation-timing-function:steps(24)}
.meditation-speech{min-height:28px;margin:14px 0;font:16px/1.5 var(--room-pixel);color:#fff0cf}
.meditation-panel [data-breath-pause]{display:block;margin:auto;min-width:110px;min-height:44px;font-size:14px}
.meditation-panel .meditation-can{top:auto;bottom:25%;border-radius:0;box-shadow:3px 3px #221a36}
@media(min-width:760px){#restScreen .rest-coach-mount{left:12%;width:76%;height:82%;top:-2%}#restScreen .rest-heading,#restScreen .rest-bottom{padding-left:max(24px,calc((100vw - 1000px)/2));padding-right:max(24px,calc((100vw - 1000px)/2))}.meditation-stage{background-size:100% 130%;background-position:center bottom}}
@media(max-height:600px){#restScreen .rest-heading{padding-top:8px}#restScreen .eyebrow,#restScreen .rest-receipt,#restScreen .rest-feedback{display:none}#restScreen .boss-status{top:64px}#restScreen .rest-coach-mount{height:83%;top:-5%}#restScreen .player-platform{bottom:24%}#restScreen #restAvatar{width:90px;height:95px;left:calc(50% - 45px)}#restScreen .player-name{bottom:18%}#restScreen .hand-team{bottom:84px}#restScreen .shield-note{bottom:86px}#restScreen .rest-hand{bottom:23%;height:140px;width:130px}}
@media(max-width:370px){#restScreen .rest-bottom{padding-left:10px;padding-right:10px;gap:7px}#restScreen .rest-bottom>div:last-child{gap:6px}#restScreen .rest-bottom button{font-size:13px;padding:8px}#restScreen .hand-team{max-width:56%}}
#restScreen .slice-layer{position:absolute;inset:0;width:100%;height:100%;z-index:7;pointer-events:none;image-rendering:pixelated}

#restWeaponFx{position:absolute;inset:0;width:100%;height:100%;z-index:7;pointer-events:none;image-rendering:pixelated}
#restScreen .weapon-evolution .projectile,#restScreen .weapon-evolution .attack-flash{display:none}
#restScreen .weapon-ability{position:absolute;z-index:13;left:12px;top:46%;bottom:auto;transform:translateY(-50%);width:clamp(80px,18vw,104px);aspect-ratio:1;padding:0;background:#181425ed;border:2px solid #87c9c1;box-shadow:4px 4px 0 #090c17}
#restScreen .weapon-ability button{display:block;width:100%;height:100%;min-height:44px;margin:0;border:0;border-radius:0;color:#c2fff1;background:#233e44;box-shadow:none;font:700 .875rem/1.25 var(--room-pixel);padding:8px 6px 14px;overflow-wrap:anywhere}
#restScreen .weapon-ability button:disabled{opacity:1;background:#232c3c;color:#98aebf;cursor:default}
#restScreen .weapon-ability button:focus-visible{outline:3px solid #fff1c8;outline-offset:3px}
#restScreen .weapon-ability progress{position:absolute;left:0;bottom:0;width:100%;height:6px;display:block;border:0;background:#203044;accent-color:#9af5df;pointer-events:none}
#restScreen .weapon-ability progress::-webkit-progress-bar{background:#203044}
#restScreen .weapon-ability progress::-webkit-progress-value{background:#9af5df}
@media(max-height:600px){#restScreen .weapon-ability{left:8px;top:48%;width:80px}}

.coach-mission{position:relative;margin:4px 0 16px;padding:18px;border:2px solid #ba9bff;background:linear-gradient(135deg,#362050,#160f25 70%);box-shadow:5px 5px 0 #07090e,inset 0 0 25px #a464ff20;overflow:hidden}.mission-tag{color:#c9fda5;font:700 .75rem ui-monospace,monospace;letter-spacing:.1em}.mission-head{display:flex;align-items:center;gap:16px;justify-content:space-between;margin:14px 0}.mission-head h3{margin:0;color:#f0d2ff;font:950 clamp(1.8rem,8vw,3rem)/.95 system-ui;letter-spacing:-.05em}.mission-head p{font-size:.875rem;margin:10px 0 0;color:#d7c5e5}.mission-streak{text-align:center;color:#baff92;min-width:88px}.mission-streak strong{display:block;font:900 3.8rem/1 ui-monospace,monospace;text-shadow:3px 3px #204421}.mission-streak span{font:700 .75rem ui-monospace,monospace}.mission-arm{display:flex;justify-content:space-between;width:100%;background:#baff92;color:#101e12;border:2px solid #162516;border-radius:2px;font-weight:900;box-shadow:0 4px #477944;min-height:50px}.mission-readouts{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:14px 0 4px;font:.875rem ui-monospace,monospace;color:#d5ffe1}.mission-guide{padding:8px 0;background:none;border:0;border-radius:0;font:700 .875rem ui-monospace,monospace;color:#c8acec}.coach-mission[data-boost=true]{border-color:#f9d96b;box-shadow:5px 5px 0 #07090e,inset 0 0 30px #e7bf3920}.terminal-menu{background:#081611!important;color:#ccffd9!important;border:2px solid #8bb39b!important;border-radius:3px!important;box-shadow:7px 7px 0 #030806!important;font:1rem/1.5 ui-monospace,SFMono-Regular,Consolas,monospace!important;max-height:90dvh;overflow:auto}.terminal-menu header{background:#183429!important;border-bottom:1px solid #6e9b7b;padding:12px!important;display:flex;justify-content:space-between;align-items:center;gap:12px}.terminal-menu h2{font:700 1rem ui-monospace,monospace;letter-spacing:.03em;color:#beff99}.terminal-menu button,.terminal-menu input,.terminal-menu select{border-radius:2px!important;font:inherit;background:#10271e;color:#d8ffe6;border:1px solid #5f9371;min-height:44px}.terminal-menu input[type=checkbox]{min-height:22px;width:22px;accent-color:#aff58c}.terminal-menu label,.terminal-menu summary{font-size:1rem}.terminal-menu p{color:#c3dbcb!important;font-size:.875rem}.terminal-links{display:grid;gap:8px;margin-top:20px;border-top:1px solid #526c59;padding-top:12px}.terminal-links button{text-align:left}.how-to-play{width:min(700px,94vw);padding:0}.how-to-play [role=tablist]{display:flex;overflow-x:auto;gap:4px;padding:10px;border-bottom:1px solid #405b48}.how-to-play [role=tab]{white-space:nowrap;flex-shrink:0;font-size:.875rem}.how-to-play [aria-selected=true]{background:#b3ef95;color:#0a2012;font-weight:bold}.how-to-play [role=tabpanel]{padding:18px}.how-to-play h3{font-size:1.25rem;color:#c4ffa5}.how-to-play h4{font-size:1rem;margin:20px 0 4px}.how-to-play article p{margin:0}.guide-track{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 0;border-bottom:1px solid #314b3b}.guide-track>strong{grid-column:1/-1;font-size:1rem}.guide-track>span{display:flex;align-items:center;font-size:.875rem;gap:6px}.guide-track canvas{width:30px;height:54px;image-rendering:pixelated}.coach-reminder-plan{padding:14px;margin:12px 0;background:#0d2117;border:1px solid #638566}.coach-reminder-plan h3{font-size:1.2rem;color:#c3ff99;margin:0 0 14px}.coach-reminder-plan label{display:grid;gap:5px;margin-bottom:12px}.coach-reminder-plan [data-times],.plan-quiet{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:10px}.coach-reminder-plan input,.coach-reminder-plan select{width:100%;min-width:0}.coach-reminder-plan .plan-enabled{display:flex;align-items:center;gap:10px}.coach-reminder-plan [type=submit]{width:100%;background:#bbf293;color:#0f2314;font-weight:900}
.coach-reminder-plan blockquote{margin:0 0 12px;padding:10px;border-left:3px solid #bbf293;background:#0a1a11;font-size:.9rem}
.coach-reminder-plan .coach-tone{margin:0 0 12px;font-size:.85rem;opacity:.85}.account-settings{background:#081611;border:1px solid #5f9371;padding:12px;color:#ccffd9;font-family:ui-monospace,monospace}@media(max-width:380px){.coach-mission{padding:12px}.mission-streak strong{font-size:3rem}.mission-readouts{font-size:.8rem}.guide-track{grid-template-columns:1fr}.guide-track>strong{grid-column:auto}}@media(prefers-reduced-motion:reduce){.coach-mission *{animation:none!important;transition:none!important}}

/* R-1016: the portal's tilt chip sits on the dock edge and covered panel text (Reminders); hide it while a panel dialog is open. */
body:has(dialog.launch-panel[open]) .portal-tilt-chip{display:none!important}
.mission-guest{margin:8px 0 0;padding:8px 10px;background:#160f25;border-left:3px solid #ba9bff;font-size:.9rem}
.how-to-play .guide-start{position:sticky;bottom:0;padding:10px 14px;background:#07140d;border-top:1px solid #405b48}.how-to-play .guide-start button{width:100%;min-height:52px;font-weight:700;font-size:1.05rem}

/* #107/#120: a military-satcom frame usable on any dialog (mountSatcomFrame in coach-hub.mjs) --
   Settings (#settings), the Install panel (#installPanel) and the full-screen Downloads menu
   (#downloadsMenu). Decoration only — corner bezel, a SATCOM status strip on top and a BUILD/clock
   strip on the bottom. The dialog's own items, their order and their behaviour are untouched. */
.satcom-frame{
 border:3px solid #47523f!important;
 box-shadow:7px 7px 0 #030806,inset 0 0 0 3px #10160e,inset 0 0 0 4px #6b9e6c66!important;
}
.satcom-frame h2{text-shadow:0 0 6px #6fae6f99}
/* Faint CRT scanlines. A ::before is never matched by the locked theme's `html[...] *` kill switch,
   so this keeps animating there without any JS — see satcom-radar below for the same trick. */
.satcom-frame::before{
 content:'';position:absolute;inset:0;z-index:5;pointer-events:none;border-radius:inherit;
 background-image:repeating-linear-gradient(#000 0 1px,transparent 1px 3px);
 opacity:.08;animation:satcom-scan 7s linear infinite;
}
@media(prefers-reduced-motion:reduce){.satcom-frame::before{animation:none}}

.satcom-strip{display:flex;align-items:center;gap:8px;padding:7px 0;font:700 .7rem/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase;color:#9be8a3;text-shadow:0 0 4px #4f9b57}
.satcom-top{border-bottom:1px solid #3e5b41;margin-bottom:10px}
/* #settings has the UA dialog:modal default overflow:auto, so it's the scrolling container the long
   settings list scrolls inside; stick the BUILD/clock strip to its bottom so it's never below the
   fold (risk 5) — sticky needs its own background or the scrolled content shows through underneath. */
/* pointer-events:none: sticky, so it sits over whatever scrolls underneath it (risk: a longer
   dialog's own controls, e.g. Install's Copy link, land under it) -- nothing inside is interactive. */
.satcom-bottom{border-top:1px solid #3e5b41;margin-top:14px;justify-content:space-between;position:sticky;bottom:0;background:linear-gradient(140deg,#392640,#1c1426 65%);pointer-events:none}
.satcom-sat{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}
.satcom-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.satcom-label em{font-style:normal;color:#ffbe5c}
.satcom-top.locked .satcom-label em{color:#9dffb0}
.satcom-bars{display:flex;align-items:flex-end;gap:2px;flex:none}
.satcom-bars i{display:block;width:3px;background:#3e5b41;opacity:.35}
.satcom-bars i:nth-child(1){height:5px}.satcom-bars i:nth-child(2){height:8px}.satcom-bars i:nth-child(3){height:11px}.satcom-bars i:nth-child(4){height:14px}
.satcom-top.locked .satcom-bars i{background:#9dffb0;opacity:1}
@keyframes satcom-blink{0%,100%{opacity:.2}50%{opacity:1}}
@keyframes satcom-flash{0%{box-shadow:inset 0 0 0 999px #9dffb033}100%{box-shadow:inset 0 0 0 999px transparent}}
@keyframes satcom-scan{0%{background-position-y:0}100%{background-position-y:12px}}
@keyframes satcom-spin{to{transform:rotate(1turn)}}

.satcom-clock{font-variant-numeric:tabular-nums;flex:none}
.satcom-build{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.satcom-radar{position:relative;flex:none;width:15px;height:15px;border-radius:50%;border:1px solid #3e5b41;overflow:hidden}
.satcom-radar::before{content:'';position:absolute;inset:2px;border:1px solid #2b4230;border-radius:50%}
.satcom-radar::after{content:'';position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#9dffb0cc,transparent 30%);animation:satcom-spin 4s linear infinite}
@media(prefers-reduced-motion:reduce){.satcom-radar::after{animation:none}}

.satcom-bolt{position:absolute;width:14px;height:14px;border-color:#6b9e6c;pointer-events:none}
.satcom-bolt::after{content:'';position:absolute;width:5px;height:5px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#cfead0,#5b7a5c 70%);box-shadow:0 0 0 1px #253524}
.satcom-bolt-tl{top:6px;left:6px;border-top:2px solid;border-left:2px solid}
.satcom-bolt-tl::after{top:-1px;left:-1px}
.satcom-bolt-tr{top:6px;right:6px;border-top:2px solid;border-right:2px solid}
.satcom-bolt-tr::after{top:-1px;right:-1px}
.satcom-bolt-bl{bottom:6px;left:6px;border-bottom:2px solid;border-left:2px solid}
.satcom-bolt-bl::after{bottom:-1px;left:-1px}
.satcom-bolt-br{bottom:6px;right:6px;border-bottom:2px solid;border-right:2px solid}
.satcom-bolt-br::after{bottom:-1px;right:-1px}

@media(max-width:380px){.satcom-strip{font-size:.62rem}}
/* The Downloads menu is full screen with no padding of its own, so the frame would sit on the glass's
   edges and rounded corners (the clock's first digit ran under the bottom-left bolt): pull the bolts in
   from the corners and pad both strips clear of them. */
.downloads-menu .satcom-strip{padding-left:max(32px,env(safe-area-inset-left));padding-right:max(32px,env(safe-area-inset-right))}
.downloads-menu .satcom-top{margin-bottom:0;padding-top:max(9px,env(safe-area-inset-top))}
.downloads-menu .satcom-top+.downloads-page{padding-top:16px} /* the strip already clears the notch */
.downloads-menu .satcom-bottom{margin-top:0;padding-bottom:max(9px,env(safe-area-inset-bottom))}
.downloads-menu .satcom-bolt-tl,.downloads-menu .satcom-bolt-tr{top:max(10px,env(safe-area-inset-top))}
.downloads-menu .satcom-bolt-bl,.downloads-menu .satcom-bolt-br{bottom:max(10px,env(safe-area-inset-bottom))}
.downloads-menu .satcom-bolt-tl,.downloads-menu .satcom-bolt-bl{left:max(10px,env(safe-area-inset-left))}
.downloads-menu .satcom-bolt-tr,.downloads-menu .satcom-bolt-br{right:max(10px,env(safe-area-inset-right))}

/* W2-2P (#137): TV site's CRT tube glass, ported to the Settings terminal screen only — never the
   bezel (border/box-shadow/corner bolts) or the SATCOM top / BUILD bottom strips that
   settings-frame.css (#107, lane 2L) owns. Geometry (position/size) is written inline by
   settings-crt.mjs from the live screen rect; this file only styles what's drawn inside it.
   Curve = a bigger tube corner radius + a stronger four-edge vignette + a soft convex highlight
   band near the top + a thin inner shadow so the glass reads as recessed into the bezel, ported
   from site-hint tv/tv.css .glass + .phosphor + .glare (border-radius, inset shadow,
   scanline+vignette gradient, glare gradient). Conductor pass (2026-09-23) on 0a450a2: the first
   cut was too faint and left a seam where the overlay stopped short of the real screen edge —
   settings-crt.mjs now insets only by the border width so this sits flush; the corner bolts read
   fine under the vignette's own corner darkening. Both layers are pointer-events:none overlays;
   see settings-crt.mjs for why. */
.crt-screen{position:fixed;pointer-events:none;z-index:6;overflow:hidden;border-radius:26px/20px;
 box-shadow:inset 0 0 0 1px #00000080,inset 0 0 10px 2px #00000070}
.crt-screen>div{position:absolute;inset:0}
.crt-vignette{
 background:
  /* soft convex highlight band near the top — the tube's bulge catching light */
  linear-gradient(180deg,#ffffff2e 0%,#ffffff12 12%,transparent 30%),
  radial-gradient(ellipse 60% 40% at 24% 10%,#ffffff26,transparent 55%),
  /* four-edge falloff: corners and edges read darker than the centre */
  radial-gradient(ellipse 75% 70% at 50% 50%,transparent 42%,#000000b3 100%);
}
.crt-scanlines{
 /* ~3px period, ~1.5px dark line: visible at 1x per the conductor's crop check */
 background-image:repeating-linear-gradient(#000 0 1.5px,transparent 1.5px 3px);
 opacity:.22;animation:crt-roll 9s linear infinite;
}
@keyframes crt-roll{to{background-position-y:12px}}
@media(prefers-reduced-motion:reduce){.crt-scanlines{animation:none}}
/* optional: one soft band rolling slowly down the tube, on top of the fine scanlines */
.crt-scan-band{
 background-image:linear-gradient(180deg,transparent,#9dffb01a 45%,transparent 90%);
 background-size:100% 45%;background-repeat:no-repeat;
 animation:crt-band-roll 7s linear infinite;
}
@keyframes crt-band-roll{0%{background-position-y:-45%}100%{background-position-y:145%}}
@media(prefers-reduced-motion:reduce){.crt-scan-band{animation:none;opacity:0}}

.crt-touch-layer{position:fixed;pointer-events:none;z-index:7;overflow:hidden;border-radius:26px/20px}
/* the touch spot: ported from site-hint tv/tv.css .press (a growing radial spot at the touch
   point, springy release) — recoloured for green phosphor instead of the site's purple/gold glass:
   a darker soft centre (low opacity, not black) inside a brighter green bulge ring, alpha-blended
   (no mix-blend-mode:screen — that can only lighten, so it read as a black hole instead of a lens). */
.settings-touch-mark{
 position:absolute;width:88px;height:88px;margin:-44px 0 0 -44px;border-radius:50%;
 background:radial-gradient(circle,#03150d66 0 16%,#9dffb01f 26%,#9dffb080 38%,#9dffb01f 52%,transparent 68%);
 animation:settings-touch-pulse .5s ease-out forwards;
}
@keyframes settings-touch-pulse{0%{transform:scale(.25);opacity:0}30%{opacity:.9}100%{transform:scale(1);opacity:0}}
@media(prefers-reduced-motion:reduce){.settings-touch-mark{animation:none;opacity:0}}

﻿/* Achievements / battle-pass board, styled after Skyrim's skill constellations: dim stars until earned,
   a slow camera glide into the chosen boss, thin all-caps text with a hairline rule. */
@font-face{font-family:'Barlow Condensed';src:url('/handborne/fonts/barlow-400.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
.ach-board{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#05030c;color:#fff;overflow:hidden;font:16px/1.4 'Barlow Condensed',var(--font,system-ui);letter-spacing:.04em}
.ach-board[open]{display:grid;place-items:center}
.ach-board::backdrop{background:#000}
.ach-stage{position:relative;aspect-ratio:1141/2000;height:min(100dvh,calc(100vw * 2000 / 1141))}
/* Art, bosses and the three star layers each carry their own zoom transform (parallax factor per layer). */
.ach-parallax{transition:transform .9s cubic-bezier(.22,.61,.36,1);will-change:transform}
.ach-art{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none;-webkit-user-drag:none}
.ach-stars{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;transition:opacity .5s}
.ach-stars i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;box-shadow:0 0 6px 1px #fff;opacity:0;animation:ach-star 3s ease-in-out infinite alternate;animation-delay:var(--d)}
.ach-bosses{position:absolute;inset:0}
.ach-boss{position:absolute;margin:0;padding:0;border:0;background:none;border-radius:14px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ach-boss:focus-visible{outline:2px solid var(--glow);outline-offset:4px}
/* Beaten bosses: the same slice of the art screened over itself, once blurred (bloom) and once sharp, feathered so no rectangle shows. */
.ach-boss[data-state=done]::before,.ach-boss[data-state=done]::after{content:'';position:absolute;inset:0;pointer-events:none;background:url(/pod/worlds/achievements.jpg) no-repeat;background-size:calc(10000% / var(--bw)) auto;background-position:calc(var(--bx) / (100 - var(--bw)) * 100%) calc(var(--by) / (100 - var(--bh)) * 100%);mix-blend-mode:screen;-webkit-mask:radial-gradient(ellipse at center,#000 45%,transparent 74%);mask:radial-gradient(ellipse at center,#000 45%,transparent 74%);animation:ach-twinkle 2.6s ease-in-out infinite alternate;animation-delay:var(--d)}
.ach-boss[data-state=done]::before{filter:blur(10px) brightness(1.7) saturate(1.4)}
.ach-boss[data-state=done]::after{filter:brightness(1.35) saturate(1.2)}
.ach-boss[data-state=locked]{background:radial-gradient(ellipse at center,#03020ce8 40%,#03020c99 60%,transparent 78%)}
.ach-boss.selected{background:radial-gradient(ellipse at center,#ffffff38 12%,transparent 68%);animation:ach-pulse 1.4s ease-in-out infinite alternate}
.ach-head{position:absolute;top:max(14px,env(safe-area-inset-top));left:18px;right:72px;text-transform:uppercase;text-shadow:0 0 10px #000,0 1px 2px #000;transition:opacity .4s}
.ach-head h1{margin:0;font-size:22px;font-weight:400;letter-spacing:.2em}
.ach-head p{margin:2px 0 0;font-size:14px;letter-spacing:.14em;color:#cfc8e6}
.ach-head::after{content:'';display:block;height:1px;margin-top:8px;background:linear-gradient(90deg,#fffc,transparent)}
.ach-board.zoomed .ach-head{opacity:0}
/* Zoomed: dim the far/mid star layers so the detail card stays legible; near debris keeps flying over it. */
.ach-board.zoomed [data-depth=far],.ach-board.zoomed [data-depth=mid]{opacity:.5}
.ach-detail{position:absolute;left:0;right:0;bottom:0;box-sizing:border-box;max-height:62%;padding:34px 24px calc(24px + env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain;text-align:center;background:linear-gradient(#0000,#05030cd9 24%,#05030cf5);animation:ach-rise .5s ease}
.ach-detail[hidden]{display:none}
.ach-detail h2{margin:0;font-size:36px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;text-shadow:0 0 18px var(--glow),0 0 2px #fff}
.ach-detail hr{width:min(320px,80%);height:1px;border:0;margin:10px auto 12px;background:linear-gradient(90deg,transparent,#fff,transparent)}
.ach-detail .ach-status{margin:0 0 16px;font-size:16px;letter-spacing:.12em;text-transform:uppercase;color:#d9d2ee}
.ach-detail ol{list-style:none;margin:0 auto;padding:0;display:grid;gap:8px;width:min(360px,100%);text-align:left}
.ach-detail li{display:grid;grid-template-columns:18px 70px 1fr;gap:10px;align-items:baseline;font-size:17px}
/* \2726 (a CSS numeric escape, not the raw UTF-8 bytes) so the glyph can't mojibake if this file
   is ever served/read without an explicit UTF-8 charset — the escape is pure ASCII in the source. */
.ach-detail li::before{content:'\2726';color:#5e5878;font-size:12px}
.ach-detail li[data-step=done]::before{color:#fff;text-shadow:0 0 8px var(--glow),0 0 14px var(--glow)}
.ach-detail li[data-step=next]::before{color:var(--glow);animation:ach-twinkle 1.2s ease-in-out infinite alternate}
.ach-detail li[data-step=todo]{color:#8f89a8}
.ach-detail li i{font-style:normal}
.ach-detail li b{font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:#e9e3ff}
.ach-back{margin-top:18px;min-height:44px;padding:0 6px;border:0;border-bottom:1px solid #fff9;background:none;color:#fff;font:400 17px/1 'Barlow Condensed',var(--font,system-ui);letter-spacing:.2em;text-transform:uppercase}
.ach-close{position:absolute;top:max(12px,env(safe-area-inset-top));right:12px;width:44px;height:44px;border-radius:50%;border:1px solid #ffffff55;background:#05030ccc;color:#fff;font-size:18px}
@keyframes ach-twinkle{from{opacity:.5}to{opacity:1}}
@keyframes ach-pulse{from{opacity:.45}to{opacity:1}}
@keyframes ach-star{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1.3)}}
@keyframes ach-rise{from{transform:translateY(24px);opacity:0}}
@media (prefers-reduced-motion:no-preference){
/* The locked intake theme turns off every animation; the board twinkles for everyone. */
html[data-public-state] .ach-board .ach-stars i{animation:ach-star 3s ease-in-out infinite alternate!important}
html[data-public-state] .ach-board .ach-boss.selected{animation:ach-pulse 1.4s ease-in-out infinite alternate!important}
html[data-public-state] .ach-board .ach-detail{animation:ach-rise .5s ease!important}
html[data-public-state] .ach-board .ach-parallax{transition:transform .9s cubic-bezier(.22,.61,.36,1)!important}
}
/* Reduced motion: no drift/debris flight, no rAF loop (gated in JS); dots sit at .8 opacity, same as before. */
@media (prefers-reduced-motion:reduce){.ach-board .ach-parallax{transition:none!important}.ach-board *,.ach-board ::before,.ach-board ::after{animation:none!important}.ach-stars i,.ach-stars[data-depth]{opacity:.8}}
/* W2-2O: without the Starter pack's art (offline, not downloaded): the bosses outlined on the starfield, and the pack offered. */
.ach-starter{display:none}
.ach-board.no-art .ach-art{visibility:hidden}
.ach-board.no-art .ach-boss:not([data-state=locked]){box-shadow:0 0 14px var(--glow),inset 0 0 0 1px var(--glow)}
.ach-board.no-art:not(.zoomed) .ach-starter{position:absolute;left:16px;right:16px;bottom:max(16px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 14px;border-radius:12px;background:#05030ccc;text-align:center}
/* Framed fullscreen (portal): the dock rides inside the dialog, so the offer sits above it, not under it. */
.portal-framed.ach-board.no-art:not(.zoomed) .ach-starter,.portal-framed .ach-board.no-art:not(.zoomed) .ach-starter{bottom:calc(max(16px,env(safe-area-inset-bottom)) + var(--myr5-bar))}
.ach-starter p{margin:0;font-size:15px;letter-spacing:.08em;color:#d9d2ee}
.ach-starter button{min-height:44px;padding:0 18px;border:1px solid #fff9;border-radius:22px;background:#ffffff1f;color:#fff;font:inherit;font-size:15px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
/* Coach captions, page buttons and the zoomed detail (requirements, exercises, weapon tier milestones). */
.ach-name{position:absolute;left:-10%;width:120%;top:100%;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;pointer-events:none;text-align:center;font-size:clamp(5px,1.6vw,8px);line-height:1.05;letter-spacing:.03em;text-transform:uppercase;color:#fff;text-shadow:0 0 3px #000,0 0 6px #000}
.ach-board.zoomed .ach-name{opacity:0}
.ach-boss[data-golden=true] .ach-name{color:#ffe29e}
.ach-page{position:absolute;top:50%;z-index:2;width:44px;height:88px;margin-top:-44px;border:1px solid #ffffff55;background:#05030ccc;color:#fff;font:400 34px/1 'Barlow Condensed',var(--font,system-ui);transition:opacity .4s}
.ach-page[hidden]{display:none}.ach-page-prev{left:0;border-radius:0 22px 22px 0}.ach-page-next{right:0;border-radius:22px 0 0 22px}
.ach-board.zoomed .ach-page{opacity:0;pointer-events:none}
.ach-detail{text-align:left}.ach-detail h2,.ach-detail .ach-status{text-align:center}
.ach-detail p{margin:6px auto;max-width:520px;font-size:16px;letter-spacing:.04em}.ach-detail strong{font-weight:400;color:#e9e3ff;letter-spacing:.12em;text-transform:uppercase}
.ach-detail h3{margin:16px auto 6px;max-width:520px;font-size:18px;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:#e9e3ff}
.ach-detail h4{margin:10px auto 4px;max-width:520px;font-size:16px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:#cfc8e6}
.ach-detail ul{margin:0 auto;padding-left:20px;max-width:520px;font-size:15px}
.ach-detail ol{width:min(520px,100%);gap:4px}.ach-detail li{grid-template-columns:18px 64px 1fr;font-size:15px}
.ach-detail ul li{display:list-item}.ach-detail ul li::before{content:none}
.ach-weapons{max-width:520px;margin:0 auto}
.ach-tier-block{padding:2px 9px 9px;border-left:1px solid #ffffff30}
.ach-tier-block[data-current=true]{border-color:var(--glow);background:linear-gradient(90deg,#ffffff12,transparent)}
.ach-tier-block h5{margin:8px 0 6px;font-size:15px;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:#cfc8e6}
.ach-detail .ach-tier-block li{grid-template-columns:14px 58px 1fr;gap:6px;font-size:14px;line-height:1.25}
.ach-back{display:block;margin:18px auto 0}
/* Framed fullscreen (portal): ~50px persistent top chrome above, the dock below; the detail scrolls between them. */
.portal-framed.ach-board .ach-head,.portal-framed .ach-board .ach-head{top:calc(54px + env(safe-area-inset-top))}
.portal-framed.ach-board .ach-close,.portal-framed .ach-board .ach-close{top:calc(54px + env(safe-area-inset-top))}
.portal-framed.ach-board .ach-detail,.portal-framed .ach-board .ach-detail{bottom:var(--myr5-bar,64px);max-height:calc(100% - var(--myr5-bar,64px) - 104px - env(safe-area-inset-top));padding-bottom:24px}
.portal-framed.ach-board.has-pod-chrome .ach-detail{padding-bottom:24px}
.portal-framed.ach-board .ach-page,.portal-framed .ach-board .ach-page{margin-top:-44px}
@media (max-width:420px){.ach-detail{padding-left:14px;padding-right:14px}.ach-detail h2{font-size:29px}.ach-detail p{font-size:15px}}
/* R-1017 one achievements page: the constellation sits at the top of the XP flight scroller (#battlePassPanel); the
   flight path hangs under the golden coach. The board is a plain section there, sized by the art's aspect ratio. */
.ach-board.ach-embed{position:relative;inset:auto;display:block;width:100%;height:auto;max-width:none;max-height:none;overflow:visible;background:#05030c;z-index:1}
.ach-board.ach-embed .ach-stage{width:100%;height:auto;overflow:hidden}
.ach-board.ach-embed .ach-head,.portal-framed .ach-board.ach-embed .ach-head{top:12px;right:18px}
.ach-board.ach-embed .ach-head h1{font-size:20px}
.ach-embed-detail{z-index:7;color:#fff;font:16px/1.4 'Barlow Condensed',var(--font,system-ui);letter-spacing:.04em}
/* The requirements card rises inside the game screen, over the flight HUD. */
.ach-embed-detail{max-height:66%;padding-bottom:20px}
.launch-panel .ach-board .ach-head{display:block;min-height:0;margin:0;padding:0;border:0;background:none;font:16px/1.4 'Barlow Condensed',var(--font,system-ui)}
.launch-panel .ach-board .ach-head h1{font-size:20px;line-height:1.2}
.launch-panel .ach-board .ach-head p{font-size:13px;line-height:1.3}
/* The section menu is part of the game screen: a compact CRT strip along the bottom of the flight. */
.pass-crt-rack.pass-hud{position:relative;z-index:6;flex:none;box-sizing:border-box;height:var(--pass-hud-h);width:min(380px,calc(100% - 16px));grid-template-columns:40px minmax(0,1fr) 40px;margin:0 auto;padding:6px 0}
/* R-1017: the game fills the panel. Three bands in the game frame: a slim top HUD (score, level bar, daily chip), the
   scrolling flight, the CRT strip. The ship canvas covers only the middle band, so no scene label or node draws under a HUD. */
#battlePassPanel .pass-map-shell{display:flex;flex-direction:column;--pass-top-h:58px;--pass-hud-h:100px;margin:4px 5px 5px}
#battlePassPanel .pass-map-viewport{flex:1;min-height:0;height:auto}
#battlePassPanel .pass-scene{top:var(--pass-top-h);bottom:auto;height:calc(100% - var(--pass-top-h) - var(--pass-hud-h))}
#battlePassPanel .pass-top-hud{position:relative;z-index:7;flex:none;box-sizing:border-box;height:var(--pass-top-h);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 8px;padding:4px 8px;border-bottom:1px solid #477785;background:#06101c}
#battlePassPanel .pass-flight-score{grid-row:1;grid-column:1;justify-content:flex-start;gap:12px;padding:0;border:0;background:none;font-size:.66rem}
#battlePassPanel .pass-summary{grid-row:2;grid-column:1/-1;display:flex;align-items:center;gap:8px;min-width:0;margin:0;padding:0;border:0;background:none}
#battlePassPanel .pass-summary>*{grid-column:auto;grid-row:auto;flex:none}
#battlePassPanel .pass-summary strong{font-size:.72rem}#battlePassPanel .pass-summary span,#battlePassPanel .pass-summary b{justify-self:start;font-size:.58rem;white-space:nowrap}#battlePassPanel .pass-summary progress{flex:1 1 auto;min-width:30px;width:auto;height:5px}
#battlePassPanel .pass-daily{grid-row:1;grid-column:2;display:block;margin:0;padding:0;border:0;background:none}
#battlePassPanel .pass-daily-chip{display:flex;gap:6px;align-items:center;min-height:24px;padding:2px 8px;border:1px solid #548b85;border-left:3px solid #86debb;border-radius:3px;background:#0d2230;color:#adf0c7;font-size:.6rem;letter-spacing:.06em;white-space:nowrap;cursor:pointer;list-style:none}
#battlePassPanel .pass-daily-chip::-webkit-details-marker{display:none}
#battlePassPanel .pass-daily-chip::after{content:'\25BE';color:#86debb}
#battlePassPanel .pass-daily-chip strong{color:#ffe4a0;font-size:.6rem}
#battlePassPanel .pass-daily[open]{grid-area:auto;position:absolute;top:4px;right:8px;z-index:8;width:min(330px,calc(100% - 16px));box-sizing:border-box;padding:0 0 8px;border:1px solid #548b85;background:#0b1c2af7;box-shadow:0 8px 24px #000c}
#battlePassPanel .pass-daily[open] .pass-daily-chip{border:0;border-bottom:1px solid #548b85;border-radius:0}
#battlePassPanel .pass-daily[open] .pass-daily-chip::after{content:'\25B4'}
#battlePassPanel .pass-daily .pass-quests{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:4px;padding:8px 8px 4px}
#battlePassPanel .pass-daily small{display:block;padding:0 8px;font-size:.6rem;color:#b6d9e8}
#battlePassPanel .pass-daily-chip:focus-visible{outline:3px solid #f8db83;outline-offset:2px}
.pass-hud .pass-crt-entry{min-height:58px}
#battlePassPanel:has(.ach-board.zoomed) .pass-hud,#battlePassPanel[data-hyper] .pass-hud .pass-crt-switch{visibility:hidden}
#battlePassPanel[data-hyper] .pass-crt-entry{box-shadow:0 0 0 2px #b9faff,0 0 22px #60e6ff}
/* The flight dialog is a .launch-panel, whose generic button skin must not box the constellation's tap targets. */
.launch-panel .ach-board .ach-boss{min-height:0;padding:0;border:0;border-radius:14px;background:none;color:inherit}
.launch-panel .ach-board .ach-boss[data-state=locked]{background:radial-gradient(ellipse at center,#03020ce8 40%,#03020c99 60%,transparent 78%)}
.launch-panel .ach-board .ach-boss.selected{background:radial-gradient(ellipse at center,#ffffff38 12%,transparent 68%)}
.launch-panel .ach-embed-detail .ach-back{border:0;border-bottom:1px solid #fff9;border-radius:0;background:none;color:#fff;font:400 17px/1 'Barlow Condensed',var(--font,system-ui);letter-spacing:.2em}

/* W2-2M #117: your Gala character stands in the pod's viewing port (#view), over the pixel world. Tap it for the weapon attack. */
.home-character{position:absolute;inset:0;z-index:3;min-width:0;overflow:visible;pointer-events:none}
.home-character[hidden],#hud[hidden]{display:none!important}
.home-character button{position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:#f1e8ff;cursor:pointer;pointer-events:auto;overflow:visible}
.home-character button:focus-visible{outline:3px solid #b4efcf;outline-offset:-4px}
.home-character canvas{position:absolute;left:50%;top:auto;bottom:calc(14% + 9.6px);display:block;min-height:0;width:auto;height:calc(125% - 120px);max-width:none;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(3px 3px #211b31aa);transform:translateX(-50%);transform-origin:50% 50%;z-index:2}
.home-character-platform{position:absolute;z-index:3;left:0;right:0;bottom:0;height:24%;border:2px solid #7b6689;border-bottom:0;background:repeating-linear-gradient(90deg,#bca7bd 0 18px,#86728f 18px 24px,#54465f 24px 30px);box-shadow:inset 0 4px #ead8bb55,inset 0 -5px #211b31,0 -3px 0 #211b31;image-rendering:pixelated;pointer-events:none}
.home-character-platform:before{content:"";position:absolute;left:0;right:0;top:-4px;height:3px;background:repeating-linear-gradient(90deg,#ead8bb 0 16px,#ad98aa 16px 22px);border-top:1px solid #fff2d0}
.home-character[data-phase="gone"] .home-character-platform{opacity:.8}
/* The weapon's name stays in the canvas's label and the Avatar dialog (the plate's "Your avatar"). */
.home-character [data-weapon]{display:none}

/* An active camera workout has exactly two visible elements: video and count. */
body[data-camera-workout=true]{overflow:hidden!important;background:#000!important;padding:0!important}
body[data-camera-workout=true]>:not(#cameraWorkout){display:none!important}
#cameraWorkout:not([hidden]){position:fixed;inset:0;width:100vw;height:100dvh;z-index:2147483000;display:block;background:#000;overflow:hidden}
#cameraWorkout>video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
#cameraWorkout .camera-workout-counter{position:absolute;top:max(24px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:block;width:auto;min-width:88px;min-height:64px;padding:12px 18px;border:0;border-radius:16px;background:#0008;color:#fff;box-shadow:none;touch-action:manipulation}
#cameraWorkout #primary{display:inline-flex;font:750 clamp(56px,14vw,100px)/1 ui-monospace,monospace;letter-spacing:-2px;color:#fff}
#cameraWorkout #primary .flip-tile{background:none;border:0;box-shadow:none}
#cameraWorkout #primary .flip-tile:after{display:none}
#cameraWorkout #primary .flip-half{background:none;color:#fff}
#cameraWorkout .camera-workout-counter:focus-visible{outline:3px solid white;outline-offset:4px}
#cameraWorkout #coachOverlay{position:absolute;inset:0;pointer-events:none}
/* Housing frame: edge only, never intercepts input. The counter sits above it; the AR coach overlay above both. */
#cameraWorkout .camera-workout-housing{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
#cameraWorkout .camera-workout-counter{z-index:2}
#cameraWorkout #coachOverlay{z-index:3}
/* Pause reason and manual rep correction under the counter; small, legible at 375×812, above the housing. */
#cameraWorkout .camera-workout-status{position:absolute;top:calc(max(24px,env(safe-area-inset-top)) + 96px);left:50%;transform:translateX(-50%);z-index:2;width:max-content;max-width:calc(100vw - 48px);margin:0;padding:6px 12px;border-radius:12px;background:#000a;color:#fff;font:600 15px/1.3 system-ui,sans-serif;text-align:center}
#cameraWorkout .camera-workout-status[hidden],#cameraWorkout .camera-workout-adjust[hidden]{display:none}
#cameraWorkout .camera-workout-adjust{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:2;display:flex;gap:16px}
#cameraWorkout .camera-workout-adjust button{min-width:56px;min-height:44px;border:0;border-radius:12px;background:#0008;color:#fff;font:700 18px/1 ui-monospace,monospace;touch-action:manipulation}
#cameraWorkout .camera-workout-adjust button:focus-visible{outline:3px solid white;outline-offset:2px}

/* R16: decorative ship interior behind the existing pod controls and character. */
body[data-screen="pod"]{background:transparent!important}
body[data-screen="pod"]>.ship-header,
body[data-screen="pod"]>#homeScreen,
#portalWorkoutHome>.ship-header,
#portalWorkoutHome>#homeScreen{position:relative;z-index:1}
body[data-screen="pod"]>.ship-header,#portalWorkoutHome>.ship-header,
body[data-screen="pod"]>#homeScreen,#portalWorkoutHome>#homeScreen{translate:var(--pod-controls-x,0px) var(--pod-controls-y,0px);rotate:var(--pod-controls-tilt,0deg)}

.pod-ship-backdrop{
 position:fixed;z-index:0;inset:0 auto auto 50%;transform:translateX(-50%);
 width:min(100vw,640px);height:100dvh;overflow:hidden;isolation:isolate;
 background:#100b18;pointer-events:none;user-select:none;-webkit-user-select:none;
 visibility:hidden;
}
body[data-screen="pod"] .pod-ship-backdrop[data-visible="true"]{visibility:visible}
body .pod-ship-backdrop[data-visible="false"]{visibility:hidden}
#portalWorkoutHome.portal-framed.portal-fullscreen{
 display:flex!important;flex-direction:column;overflow:hidden;background:transparent!important;
 padding:0!important; /* R20: the dock sits below the housing now, so the room reserves no band for it */
}
#portalWorkoutHome>.pod-ship-backdrop{position:absolute;inset:0;width:auto;height:auto;left:0;transform:none;z-index:0;border-radius:inherit}
#portalWorkoutHome>#homeScreen{flex:1 1 auto;min-height:0;height:auto;overflow:hidden}
#portalWorkoutHome>.ship-header{flex:none}
.pod-ship-backdrop img,.pod-ship-lights{position:absolute;display:block;inset:0;width:100%;height:100%;pointer-events:none}
.pod-ship-nebula{
 inset:auto!important;left:50%!important;top:50%!important;
 width:max(160%,160dvh)!important;height:max(160%,160dvh)!important;max-width:none;
 object-fit:cover;translate:calc(-50% + var(--pod-bg-x,0px)) calc(-50% + var(--pod-bg-y,0px));rotate:var(--pod-bg-tilt,0deg);transform-origin:center;
 animation:pod-nebula-drift 300s linear infinite;will-change:transform;z-index:0;
}
.pod-ship-cutout{z-index:2;object-fit:fill}
.pod-ship-lights{
 z-index:3;opacity:.46;mix-blend-mode:screen;
 background:
  radial-gradient(ellipse 8% 2.1% at 50% 7%,#ffe2a033 0,transparent 75%),
  radial-gradient(ellipse 7% 3% at 5% 18%,#ffdfa01a 0,transparent 78%),
  radial-gradient(ellipse 7% 3% at 95% 18%,#ffdfa01a 0,transparent 78%),
  radial-gradient(ellipse 8% 2.5% at 50% 91%,#e5c9ff20 0,transparent 78%);
}
.pod-ship-lights:before,.pod-ship-lights:after{content:"";position:absolute;inset:0;pointer-events:none}
.pod-ship-lights:before{
 background:
  radial-gradient(ellipse 5.4% 2.2% at 36% 7.7%,#171022 0 35%,transparent 76%),
  radial-gradient(ellipse 5.4% 2.2% at 64% 7.7%,#171022 0 35%,transparent 76%),
  radial-gradient(ellipse 4.5% 3.2% at 5% 16%,#171022 0 32%,transparent 78%),
  radial-gradient(ellipse 4.5% 3.2% at 95% 16%,#171022 0 32%,transparent 78%),
  radial-gradient(ellipse 4.3% 2.6% at 5% 80%,#171022 0 32%,transparent 78%),
  radial-gradient(ellipse 4.3% 2.6% at 95% 80%,#171022 0 32%,transparent 78%);
 mix-blend-mode:multiply;opacity:.05;animation:pod-lamp-dim 11.8s ease-in-out infinite;
}
.pod-ship-lights:after{
 background:
  radial-gradient(ellipse 5.4% 2.2% at 36% 7.7%,#ffe6a3d9 0,transparent 75%),
  radial-gradient(ellipse 5.4% 2.2% at 64% 7.7%,#ffe6a3d9 0,transparent 75%),
  radial-gradient(ellipse 4.5% 3.2% at 5% 16%,#ffe5aad0 0,transparent 76%),
  radial-gradient(ellipse 4.5% 3.2% at 95% 16%,#ffe5aad0 0,transparent 76%),
  radial-gradient(ellipse 4.3% 2.6% at 5% 80%,#ffe6b9bd 0,transparent 76%),
  radial-gradient(ellipse 4.3% 2.6% at 95% 80%,#ffe6b9bd 0,transparent 76%);
 mix-blend-mode:screen;opacity:.02;animation:pod-lamp-glow 13.4s ease-in-out infinite;
}

/* The hardware artwork is a transparent hologram plate, so the live interface remains the foreground. */
body[data-screen="pod"]>.ship-header,
#portalWorkoutHome>.ship-header{
 --pod-header-gap:clamp(12px,2dvh,20px);
 height:calc(72px - var(--pod-header-gap));margin:var(--pod-header-gap) 10px 0;padding:4px 16px;
 border:1px solid #c5a4db88;border-radius:13px;
 background:repeating-linear-gradient(0deg,#f5e4ff05 0 1px,transparent 1px 4px),linear-gradient(115deg,#39234a66,#291b3f59 55%,#4a2d5c5c);
 box-shadow:inset 0 1px #f5e3ff30,inset 0 -1px #a777ce48,0 0 0 1px #24152d99,0 0 22px #b36cdb32;
 backdrop-filter:blur(4px) saturate(1.14);-webkit-backdrop-filter:blur(4px) saturate(1.14);
}
body[data-screen="pod"]>.ship-header:before,
#portalWorkoutHome>.ship-header:before{
 content:"";position:absolute;inset:3px;pointer-events:none;opacity:.8;filter:drop-shadow(0 0 2px #b877ed);
 background:
  linear-gradient(#edd4ff,#edd4ff) left top/14px 1px no-repeat,
  linear-gradient(#edd4ff,#edd4ff) left top/1px 10px no-repeat,
  linear-gradient(#edd4ff,#edd4ff) right top/14px 1px no-repeat,
  linear-gradient(#edd4ff,#edd4ff) right top/1px 10px no-repeat,
  linear-gradient(#edd4ff,#edd4ff) left bottom/14px 1px no-repeat,
  linear-gradient(#edd4ff,#edd4ff) left bottom/1px 10px no-repeat,
  linear-gradient(#edd4ff,#edd4ff) right bottom/14px 1px no-repeat,
  linear-gradient(#edd4ff,#edd4ff) right bottom/1px 10px no-repeat;
}
body[data-screen="pod"]>.ship-header>*,
#portalWorkoutHome>.ship-header>*{position:relative;z-index:1}
body[data-screen="pod"]>.ship-header .icon-button,
#portalWorkoutHome>.ship-header .icon-button{
 border-color:#bd96d377;background:linear-gradient(145deg,#513561aa,#251a34cc);
 box-shadow:inset 0 1px #f6e7ff35,0 0 12px #ba7cdb30;color:#f5e6ff;
}
.pod-tilt-request{min-height:40px;padding:0 9px;border:1px solid #bd96d377;border-radius:9px;background:#251a34cc;color:#f5e6ff;font:600 11px system-ui,sans-serif;touch-action:manipulation}
.pod-tilt-request:focus-visible{outline:3px solid #ffb24d;outline-offset:2px}

@keyframes pod-nebula-drift{
 from{transform:rotate(0deg)}
 to{transform:rotate(360deg)}
}
@keyframes pod-lamp-dim{
 0%,62%,100%{opacity:.04}
 64%{opacity:.44}
 66%{opacity:.38}
 68%{opacity:.06}
 70%{opacity:.3}
 72%{opacity:.04}
}
@keyframes pod-lamp-glow{
 0%,66%,100%{opacity:.02}
 68%{opacity:.24}
 70%{opacity:.5}
 72%{opacity:.14}
 74%{opacity:.02}
}
@media(prefers-reduced-motion:reduce){
 .pod-ship-nebula,.pod-ship-lights{animation:none!important;will-change:auto}
 .pod-ship-lights:before,.pod-ship-lights:after{animation:none!important;opacity:0!important}
}
@media(max-height:700px) and (max-width:600px) and (orientation:portrait){
 #homeScreen .pod-header-actions{padding-top:2px;padding-bottom:0}
 #homeScreen .deck-strip{height:32px}
 #homeScreen #view{min-height:100px}
 #homeScreen #view .coach-line{top:2px;padding:1px 5px}
 #homeScreen #view .coach-line p{font-size:11px;line-height:1.1;-webkit-line-clamp:1;white-space:nowrap}
 #homeScreen #view .home-character{inset:24px 8px 4px}
 #homeScreen .workout-console{padding-top:8px;padding-bottom:6px}
}
#podShipBackdrop[data-motion-running="false"] .pod-ship-nebula,
#podShipBackdrop[data-motion-running="false"] .pod-ship-lights,
#podShipBackdrop[data-motion-running="false"] .pod-ship-lights:before,
#podShipBackdrop[data-motion-running="false"] .pod-ship-lights:after{animation-play-state:paused}

.pod-persistent-chrome{position:fixed;inset:max(7px,env(safe-area-inset-top)) 18px auto;z-index:2147483000;display:flex;justify-content:space-between;align-items:start;gap:12px;pointer-events:none;height:46px}
.pod-persistent-chrome>button{pointer-events:auto!important;margin:0!important;position:relative!important;inset:auto!important;min-height:42px;max-width:45%;border-radius:4px;font:700 10px/1.2 monospace;letter-spacing:.1em;cursor:pointer}
.pod-persistent-chrome .metal-grimoire-key{padding:10px 16px;color:#28231f!important;border:1px solid #514b41!important;background:linear-gradient(145deg,#bbb7a8,#80796b 48%,#b5ad99)!important;text-shadow:0 1px #e9e3ce;box-shadow:inset 0 1px #e8e3d0,inset 0 -3px #4c463d,0 3px 4px #0008!important}
.pod-persistent-chrome .metal-grimoire-key:before,.pod-persistent-chrome .metal-grimoire-key:after{content:'+';position:absolute;top:4px;color:#514b41;font:9px monospace}.metal-grimoire-key:before{left:4px}.metal-grimoire-key:after{right:4px}
.pod-now-playing{display:grid;gap:3px;padding:6px 9px;color:#ffb568;border:3px ridge #857563;background:repeating-linear-gradient(0deg,#24170f 0 2px,#170e09 2px 4px);text-align:left;box-shadow:inset 0 0 12px #000,0 2px 4px #0009;text-shadow:0 0 6px #ff8b37}
.pod-now-playing small{font-size:8px;color:#cb8c56}.pod-now-playing span{display:block;max-width:135px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.has-pod-chrome>.ach-head{top:65px}.has-pod-chrome>.ach-close{top:65px}.has-pod-chrome>.ach-detail{padding-bottom:calc(24px + var(--myr5-bar,64px) + env(safe-area-inset-bottom))}
.has-pod-chrome>header,.has-pod-chrome>.pass-header{margin-top:50px}
.pod-header-actions{display:none!important}.deck-strip>span{display:none!important}.deck-strip{justify-content:flex-end!important}.containment-pod .coach-line{visibility:hidden}
@media(max-width:480px){.pod-persistent-chrome{left:13px;right:13px}.pod-persistent-chrome .metal-grimoire-key{padding:10px}.pod-now-playing span{max-width:112px}}

/* The stamped image is the brand. The small route caption and a second wordmark crowded the cockpit. */
.ship-header .mom-brand>span,.ship-header .ship-location{display:none!important}
.ship-header .mom-brand{gap:0;flex:none}.ship-header .mom-brand img{width:43px;height:43px;object-fit:contain;filter:drop-shadow(0 0 8px #e3a9f866)}
.ship-header #openSettings.ship-settings-toggle{box-sizing:border-box;display:grid;grid-template-columns:27px minmax(0,1fr);align-items:center;gap:7px;width:132px;min-width:132px;min-height:48px;margin-left:auto;padding:5px 7px;border:2px solid #b5a0a3;border-top-color:#e4d4c8;border-bottom-color:#62545c;border-radius:5px;background:linear-gradient(135deg,#756d70,#38343d);box-shadow:inset 0 1px #fff8,inset 0 -3px #161a23,0 3px 0 #1b1720,0 5px 8px #0008;color:#c8fbd7;text-align:left;cursor:pointer}
.ship-settings-handle{position:relative;display:block;width:25px;height:33px;border:2px solid #1b2226;border-radius:4px;background:linear-gradient(90deg,#191f25,#3b464d);box-shadow:inset 1px 2px 5px #000a,0 1px #c6b8af}
.ship-settings-handle:before{content:'';position:absolute;left:3px;top:4px;width:15px;height:12px;border:1px solid #eee1cb;border-radius:2px;background:repeating-linear-gradient(90deg,#d4c8b7 0 3px,#918880 3px 4px);box-shadow:0 2px 2px #0009;transition:translate .12s}
.ship-settings-screen{position:relative;display:grid;align-content:center;gap:2px;min-width:0;height:32px;padding:0 5px;border:2px inset #777569;border-radius:3px;background:repeating-linear-gradient(0deg,#1b382a 0 2px,#102719 2px 4px);box-shadow:inset 1px 2px 6px #000b,0 0 7px #89e8a837;color:#b7ffce;text-shadow:0 0 5px #65eb95;font:700 9px/1.1 ui-monospace,Consolas,monospace;letter-spacing:.09em;overflow:hidden}
.ship-settings-screen small{font-size:6px;color:#82b995}.ship-settings-screen strong{font-size:9px}
.ship-header #openSettings.ship-settings-toggle[aria-expanded=true] .ship-settings-handle:before{translate:0 10px;background:repeating-linear-gradient(90deg,#f6d19a 0 3px,#b98e5b 3px 4px)}
.ship-header #openSettings.ship-settings-toggle[aria-expanded=true] .ship-settings-screen{color:#ffe7b6;text-shadow:0 0 6px #ffc66a;background:repeating-linear-gradient(0deg,#453322 0 2px,#2a211a 2px 4px)}
.ship-header #openSettings.ship-settings-toggle:focus-visible{outline:3px solid #ffe49b;outline-offset:3px}
.ship-header .pod-tilt-request{box-sizing:border-box;min-height:40px;padding:5px 9px;border:2px solid #aaa3a1;border-top-color:#e2d9c6;border-bottom-color:#615d62;border-radius:4px;background:linear-gradient(#6f7775,#414b4b);box-shadow:inset 0 1px #fff7,0 3px #222b30;color:#eaf4da;font:700 9px ui-monospace,Consolas,monospace;letter-spacing:.04em;text-shadow:0 1px #1d2b2a}
/* The floating grimoire and DJ terminals sit below the header plate while the pod is in view. */
body>.pod-persistent-chrome,#portalWorkoutHome>.pod-persistent-chrome{top:calc(78px + env(safe-area-inset-top));left:18px;right:18px}
@media(max-height:720px) and (orientation:portrait){body>.pod-persistent-chrome,#portalWorkoutHome>.pod-persistent-chrome{top:calc(66px + env(safe-area-inset-top))}}
@media(max-width:480px){.ship-header #openSettings.ship-settings-toggle{width:119px;min-width:119px}.ship-settings-screen{padding:0 3px}body>.pod-persistent-chrome,#portalWorkoutHome>.pod-persistent-chrome{left:13px;right:13px}}

/* Physical dock controls are available before the portal scene loads. */
#coachDock.coach-dock.ship-control-deck{border-top:3px solid #b8a890;background:radial-gradient(circle at 12px 9px,#d4c3a9 0 2px,#292832 3px 5px,transparent 6px),radial-gradient(circle at calc(100% - 12px) 9px,#d4c3a9 0 2px,#292832 3px 5px,transparent 6px),repeating-linear-gradient(90deg,#ffffff08 0 1px,transparent 1px 5px),linear-gradient(180deg,#48545a,#252f38 38%,#171e27);box-shadow:inset 0 2px #e5d8bd72,inset 0 7px 8px #1117229c,0 -4px 18px #070b11a8}
#coachDock.coach-dock.ship-control-deck:after{content:'';position:absolute;left:8px;right:8px;top:9px;height:1px;background:linear-gradient(90deg,transparent,#d5c9ad80 15%,#d5c9ad80 85%,transparent);pointer-events:none}
#coachDock.coach-dock.ship-control-deck button.dock-control{filter:none;overflow:visible}
#coachDock.coach-dock.ship-control-deck .dock-control>span{position:relative;box-sizing:border-box;width:35px;height:35px;border:2px solid #c6b9a0;border-top-color:#f1e3c7;border-bottom-color:#665e56;border-radius:4px;clip-path:none;background:linear-gradient(145deg,#bcc8c2,#81918f 43%,#4b5c60);box-shadow:inset 0 1px #fff9,inset -2px -3px #22343b88,0 3px 0 #182127,0 5px 5px #000a;color:#243640}
#coachDock.coach-dock.ship-control-deck .dock-control>span:after{content:'';position:absolute;right:2px;top:2px;width:4px;height:4px;border-radius:50%;background:#263d40;box-shadow:0 0 0 1px #e5e1cb77}
#coachDock.coach-dock.ship-control-deck .dock-control[aria-current=page]>span:after{background:#ffd07c;box-shadow:0 0 6px #ffce78,0 0 0 1px #ffeed3}
#coachDock.coach-dock.ship-control-deck .dock-control>span svg{width:21px;height:21px;filter:drop-shadow(0 1px #f2ffed77)}
#coachDock.coach-dock.ship-control-deck .dock-control:active>span,#coachDock.coach-dock.ship-control-deck .dock-control[aria-current=page]>span{transform:translateY(3px);box-shadow:inset 1px 3px 4px #1e2d34ad,0 1px 0 #182127;color:#17282a}
#coachDock.coach-dock.ship-control-deck .dock-control:focus-visible{outline:3px solid #ffe19a;outline-offset:2px}
#coachDock.coach-dock.ship-control-deck .dock-settings>span{border-radius:50%;background:radial-gradient(circle,#d6ddcf 0 24%,#8fa69e 25% 49%,#526d70 50% 67%,#b4bfb6 69%);box-shadow:inset 0 1px #fff9,0 3px #29363a,0 0 0 2px #132128}
#coachDock.coach-dock.ship-control-deck .dock-scoreboard>span{border-radius:5px 5px 10px 10px;background:linear-gradient(90deg,#596b72 0 20%,#becac3 22% 72%,#596b72 75%);}
#coachDock.coach-dock.ship-control-deck .dock-food>span{height:31px;border-radius:3px 3px 9px 9px;background:linear-gradient(#ffe0a9,#c69458 48%,#845837);color:#493322}
#coachDock.coach-dock.ship-control-deck .dock-achievements>span{border-radius:3px;clip-path:polygon(0 0,100% 0,100% 71%,50% 100%,0 71%);background:linear-gradient(140deg,#ffe8ac,#b98b44 67%,#765223);color:#533e25}
#coachDock.coach-dock.ship-control-deck .dock-pod>span{width:29px;border-radius:12px;background:linear-gradient(90deg,#496c70,#b8d1bd 35%,#6d9d92 65%,#35585d);color:#183b3c}
#coachDock.coach-dock.ship-control-deck .dock-settings:after,#coachDock.coach-dock.ship-control-deck .dock-scoreboard:after,#coachDock.coach-dock.ship-control-deck .dock-food:after,#coachDock.coach-dock.ship-control-deck .dock-achievements:after,#coachDock.coach-dock.ship-control-deck .dock-pod:after{position:absolute;top:calc(100% + 4px);left:50%;translate:-50% 0;color:#c5d5cb;font:700 7px/1 ui-monospace,Consolas,monospace;letter-spacing:.05em;white-space:nowrap;text-shadow:0 1px #071118;pointer-events:none}
#coachDock.coach-dock.ship-control-deck .dock-settings:after{content:'COACH'}#coachDock.coach-dock.ship-control-deck .dock-scoreboard:after{content:'SCORES'}#coachDock.coach-dock.ship-control-deck .dock-food:after{content:'FOOD'}#coachDock.coach-dock.ship-control-deck .dock-achievements:after{content:'BADGES'}#coachDock.coach-dock.ship-control-deck .dock-pod:after{content:'COMMS'}
#coachDock.coach-dock.ship-control-deck button.dock-portal{border:3px solid #9eb7b1;border-top-color:#e1eed6;border-bottom-color:#445b5b;border-radius:50%!important;background:radial-gradient(circle at 50% 40%,#1a4545 0 46%,#0b212a 47% 58%,transparent 59%),repeating-conic-gradient(#b6c6b3 0deg 8deg,#51666a 8deg 15deg);box-shadow:0 0 0 3px #17262b,0 4px 0 3px #0a141b,inset 0 0 11px #85f9ce7e,0 0 12px #85f9ce50;color:#d7ffe6;text-shadow:0 0 5px #71ebb0}
#coachDock.coach-dock.ship-control-deck button.dock-portal:before{display:none}
#coachDock.coach-dock.ship-control-deck button.dock-portal:active,#coachDock.coach-dock.ship-control-deck button.dock-portal[aria-current=page]{transform:translateY(3px);box-shadow:0 0 0 3px #17262b,0 1px 0 3px #0a141b,inset 0 0 15px #a4ffe7,0 0 18px #88ffd2}
#coachDock.coach-dock.ship-control-deck .dock-portal svg{width:20px;height:20px}
#coachDock.coach-dock.ship-control-deck .dock-sound button.dock-control{box-sizing:border-box;width:42px;height:43px;padding:15px 2px 2px;border:2px solid #afbbad;border-top-color:#e8e9d4;border-bottom-color:#566963;border-radius:4px!important;background:linear-gradient(145deg,#adbcb4,#526c6b 65%,#365154);box-shadow:inset 0 1px #fff9,inset 0 -2px #2a4747,0 3px #142324;color:#173f3a;font:700 8px ui-monospace,Consolas,monospace}
#coachDock.coach-dock.ship-control-deck .dock-sound button.dock-control:before{content:'';display:block;position:absolute;left:8px;top:5px;width:23px;height:8px;border:1px solid #172b2d;border-radius:2px;background:linear-gradient(90deg,#23383a 0 45%,#e4cfaa 48% 85%,#788c88 88%);box-shadow:inset 0 1px 2px #0008}
#coachDock.coach-dock.ship-control-deck .dock-sound button.dock-control[data-on=false]:before{background:linear-gradient(90deg,#e4cfaa 0 40%,#758c89 43%,#23383a 48%)}
#coachDock.coach-dock.ship-control-deck .dock-sound button.dock-control[data-on=true]{color:#f8e3ab;text-shadow:0 0 5px #ffe19a}
#coachDock.coach-dock.ship-control-deck .dock-sound .cb-label{color:#c5d5cb}

/* Keep seven physical controls on one rail before and after scene loading. */
#coachDock.coach-dock.ship-control-deck{display:flex;justify-content:space-between;align-items:center;gap:3px}
#coachDock.coach-dock.ship-control-deck .dock-control,#coachDock.coach-dock.ship-control-deck .dock-sound{flex:0 0 40px;min-width:0;width:40px}
#coachDock.coach-dock.ship-control-deck .dock-portal{position:relative!important;left:auto!important;top:auto!important;translate:none!important;flex:0 0 56px;width:56px;min-width:56px}
#coachDock.ship-control-deck .dock-settings{order:1}#coachDock.ship-control-deck .dock-food{order:2}#coachDock.ship-control-deck .dock-scoreboard{order:3}#coachDock.ship-control-deck .dock-portal{order:4}#coachDock.ship-control-deck .dock-achievements{order:5}#coachDock.ship-control-deck .dock-pod{order:6}#coachDock.ship-control-deck .dock-sound{order:7}
#coachDock.ship-control-deck .dock-live{position:absolute}

#homeScreen .deck-strip{justify-content:center!important}
body>#podPersistentChrome .pod-now-playing{width:112px;min-width:112px;max-width:112px}
/* Terminals are attached to their housing, so they inherit its movement. */
.pod-persistent-chrome[hidden]{display:none!important}
.ship-header{position:relative}
.ship-header>#podPersistentChrome{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:5;justify-content:flex-end}
/* Returning from a modal mounts the terminal below this plate, over the deck strip. */
.ship-header:has(>#podPersistentChrome:not([hidden])){z-index:13}
.portal-frame>.pod-persistent-chrome{position:absolute;top:-22px;left:10px;right:10px;z-index:5;height:44px}
.portal-frame>.pod-persistent-chrome>button{min-height:44px;font-size:9px}
#portalHome>#podPersistentChrome{position:absolute;top:calc(var(--portal-top-band,52px) - 22px);left:calc(var(--portal-rail,15px) + 10px);right:calc(var(--portal-rail,15px) + 10px);z-index:10;height:44px}
#portalHome>#podPersistentChrome>button{flex:0 0 auto;min-width:100px;min-height:44px}
#coachDock.coach-dock.ship-control-deck button.dock-portal{border-color:color-mix(in srgb,var(--portal-metal,#4d3d4f),#fff 40%);background:radial-gradient(circle at 50% 40%,var(--portal-metal,#4d3d4f) 0 46%,color-mix(in srgb,var(--portal-metal,#4d3d4f),#000 65%) 47% 58%,transparent 59%),repeating-conic-gradient(color-mix(in srgb,var(--portal-metal,#4d3d4f),#fff 40%) 0deg 8deg,color-mix(in srgb,var(--portal-metal,#4d3d4f),#000 30%) 8deg 15deg)}

/* The shader is decorative; native artwork, text and touch targets stay in front. */
canvas.shaders-layer{position:absolute!important;pointer-events:none!important;image-rendering:auto!important;object-fit:fill!important;max-width:none!important;filter:none;display:block}
canvas.shaders-layer[data-shader-effect="hologram"]{mix-blend-mode:screen}
.meditation-far>.shaders-layer{filter:grayscale(1)!important;mix-blend-mode:screen;transition:filter 2.5s ease}
.meditation-colour .meditation-far>.shaders-layer{filter:none!important}
.ship-header>.shaders-layer{border-radius:inherit}
.ship-header>a,.ship-header>button{position:relative;z-index:1}
#holoStage{isolation:isolate}
#holoStage>canvas:not(.shaders-layer){z-index:1}
.portrait>.shaders-layer{z-index:0!important;filter:none!important}
.dj .logobar,.reward-pack-card{position:relative}
.dj .logobar>.shaders-layer{mix-blend-mode:screen}
.drop-pod-card>.shaders-layer,.reward-pack-card>.shaders-layer,.creature-skin-reward>.shaders-layer{mix-blend-mode:screen}
.cage-bays{position:relative;isolation:isolate}
.cage-bays>button{position:relative;z-index:1}
.gala-bay-stage{isolation:isolate}
.gala-bay-stage>canvas:not(.shaders-layer){z-index:1}
.design-studio .hand-canvas>.shaders-layer{mix-blend-mode:screen}
.design-studio .hand-canvas>canvas:not(.shaders-layer){position:relative;z-index:1}
@media(prefers-reduced-motion:reduce){canvas.shaders-layer{display:none!important}}
