
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css');
:root{font-family:Pretendard,system-ui,sans-serif;color:#ebf1e9;background:#273c32;--panel:#203b30e8;--ink:#eef3e8;--line:#c8d6c02e;--gold:#e6b963;--safe:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}body{margin:0;height:100dvh;overflow:hidden}button,input,textarea,select{font:inherit}button{border:0;cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:3px}[hidden]{display:none!important}#world{position:fixed;inset:0;touch-action:none}#world canvas{display:block;width:100%;height:100%}.intro,.stats,#buildBadge{display:none!important}.srOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
/* Top: identity, connection, utilities. */
header{position:fixed;z-index:40;top:max(12px,env(safe-area-inset-top));left:14px;right:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none}.brand{display:flex;align-items:center;gap:10px;background:var(--panel);padding:7px 13px 7px 7px;border:1px solid var(--line);border-radius:14px;box-shadow:0 4px 18px #12251d20}.mark{display:grid;place-items:center;background:#e8d7b2;color:#284b38;border-radius:9px;width:36px;height:36px;font-size:24px;font-weight:800}.brand b{font-size:12px;letter-spacing:1.5px}.brand small{display:block;font-size:8px;letter-spacing:1px;opacity:.6;margin-top:4px}.headerControls{display:flex;gap:6px;pointer-events:auto}.headerControls button,#openBoard{height:40px;min-width:40px;padding:0 14px;border-radius:11px;background:var(--panel);border:1px solid var(--line);color:var(--ink);font-size:12px;box-shadow:0 4px 18px #12251d20}header #online{background:#e8d7b2;color:#284b38;font-weight:700}.status,.third-person .status{position:fixed;z-index:25;left:15px;top:78px;bottom:auto;display:flex;align-items:center;gap:7px;max-width:46vw;font-size:10px;color:#fff8e9;text-shadow:0 1px 4px #14241c;pointer-events:none}.status i{width:6px;height:6px;border-radius:50%;background:#b1d496;flex:none}.status b{font-weight:600}.status span{opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px;border-left:1px solid #eee6c65c;padding-left:7px}
#workoutRecords{position:fixed;z-index:35;top:105px;left:14px;max-width:215px;background:var(--panel);border:1px solid var(--line);border-radius:12px;font-size:12px;color:var(--ink);overflow:hidden}#workoutRecords summary{cursor:pointer;padding:11px 13px;display:flex;align-items:center;gap:22px;list-style:none}#workoutRecords summary::after{content:'⌄';font-size:12px;opacity:.6}#workoutRecords[open] summary::after{content:'⌃'}#workoutRecords summary b{color:var(--gold);margin-left:auto}#counterRows{max-height:38dvh;overflow:auto;padding:4px 13px}#counterRows>div{display:flex;justify-content:space-between;gap:24px;padding:6px 0;border-bottom:1px solid var(--line);font-size:11px}#resetAll{width:calc(100% - 16px);margin:8px;padding:9px;background:#ffffff12;border-radius:7px;color:#d8e2d4;font-size:10px}
.view{position:fixed;z-index:35;top:78px;right:14px;display:flex;align-items:center;gap:4px}.view button{background:var(--panel);border:1px solid var(--line);border-radius:9px;min-height:34px;min-width:34px;padding:7px 10px;color:var(--ink);font-size:15px}.view #viewMode,.view #mouseLook{font-size:10px}
/* Bottom: movement, quick actions and one context action. */
footer{position:fixed;z-index:40;bottom:calc(var(--safe) + 16px);left:50%;transform:translateX(-50%);text-align:center;max-width:calc(100vw - 380px)}.actions{display:flex;gap:3px;padding:5px;background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 30px #10261d2b}.actions button{display:flex;align-items:center;justify-content:center;gap:6px;min-height:43px;padding:9px 13px;border-radius:10px;background:transparent;white-space:nowrap;font-size:12px}.actions button.active{background:#e4d4b3;color:#254a35}.actions button>span:first-child{font-size:17px}.actions #runLabel{font-size:11px}.actions #runToggle.active{background:#b88743;color:#fff7df}kbd{font-size:9px;opacity:.55;border:1px solid currentColor;border-radius:3px;padding:1px 3px}#hint{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);font-size:9px;color:#f2ead8;text-shadow:0 1px 4px #153426;white-space:nowrap;margin:0 0 8px;opacity:.85}
#joystick{display:none;position:fixed;z-index:40;left:18px;bottom:calc(var(--safe) + 88px);width:100px;height:100px;border-radius:50%;background:#244a355c;border:1px solid #e0e9cd80;touch-action:none}#stick{position:absolute;left:28px;top:28px;width:42px;height:42px;border-radius:50%;background:#efe7c2a8;border:1px solid #f5edcf}#joystick span{display:none}.contextAction{position:fixed;z-index:40;right:14px;bottom:calc(var(--safe) + 16px);display:flex;flex-direction:column;align-items:flex-end;gap:7px;max-width:220px}#actionHint{font-size:10px;color:var(--ink);background:var(--panel);padding:7px 10px;border-radius:8px;max-width:220px}#action{min-height:54px;min-width:140px;padding:12px 18px;border-radius:14px;background:#e1b565;color:#2c432e;display:flex;align-items:center;justify-content:center;gap:9px;font-size:14px;font-weight:700;border:1px solid #ffe5b2;box-shadow:0 6px 24px #15251d30}.jumpIcon{font-size:20px}#liftChoice{display:flex;gap:5px;padding:5px;border:1px solid var(--line);border-radius:11px;background:var(--panel)}#liftChoice button{padding:10px;border-radius:7px;font-size:11px;background:transparent}#liftChoice button[aria-pressed=true]{background:#e0c99d;color:#254a35}#cancelAction{padding:10px;border-radius:9px;background:var(--panel)}
/* Exercise panel replaces the roaming controls. */
#sledPanel{position:fixed;z-index:70;right:16px;bottom:calc(var(--safe) + 18px);width:290px;padding:16px;border:1px solid #d4b6789c;border-radius:18px;background:#19392ff2;color:var(--ink);display:flex;flex-direction:column;gap:10px;box-shadow:0 8px 32px #10281c45}#sledRoute{font-size:13px}#sledPanel progress{width:100%;height:7px;accent-color:#dac27d}#sledTap{min-height:62px;padding:14px;border-radius:11px;background:#e4b963;color:#29442e;font-size:17px;font-weight:800;touch-action:none;user-select:none;-webkit-tap-highlight-color:transparent}#sledTap:active{background:#f8d998;transform:scale(.98)}#sledPanel small{font-size:10px;line-height:1.6;color:#c6d5c6}#resetCurrent,#sledStop{min-height:35px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:#ffffff0b;color:#d8e3d3;font-size:10px}#sledStop{background:#ffffff19;color:#f9eed5;font-size:12px}.sled-active footer,.sled-active .contextAction,.sled-active #joystick{display:none!important}#comboCount{font-size:17px;letter-spacing:1px;color:#f5c471}#timingGame{position:relative;height:38px;border:1px solid #d1dab252;background:#132b25;border-radius:8px;overflow:hidden;cursor:pointer;touch-action:manipulation}#timingZone{position:absolute;top:0;bottom:0;background:#e1bb46;border-left:2px solid #ffdf8a;border-right:2px solid #ffdf8a}#timingRed{position:absolute;top:0;bottom:0;background:#e45d48;border-left:2px solid #ffa68d;border-right:2px solid #ffa68d;z-index:1}#timingNeedle{position:absolute;top:0;bottom:0;width:4px;background:#fff8d3;transform:translateX(-50%);z-index:3;box-shadow:0 0 6px #fff9b0}#timingGame span{position:absolute;z-index:4;left:7px;top:4px;font-size:9px;text-shadow:0 1px 3px #233c2b;pointer-events:none}#timingResult{position:fixed;z-index:110;top:27%;left:50%;transform:translateX(-50%);padding:12px 19px;border:1px solid #d0dbb6;border-radius:14px;font-size:clamp(22px,5vw,34px);font-weight:800;pointer-events:none;white-space:nowrap;box-shadow:0 6px 30px #10271f40}#timingResult[data-result=fail]{background:#8d392ded;color:#ffead4}#timingResult[data-result=success]{background:#285740ed;color:#f1f8d9}.comboCelebration{animation:comboPop .35s ease-out;background:#62451df0!important;color:#ffe48b!important;border-color:#e7b96d!important;text-shadow:0 2px 8px #e6a342}@keyframes comboPop{from{transform:translateX(-50%) scale(.6)}70%{transform:translateX(-50%) scale(1.12)}to{transform:translateX(-50%) scale(1)}}
/* Chat drawer has its own space and pauses local input while open. */
#chatToggle{position:fixed;z-index:85;left:14px;bottom:calc(var(--safe) + 18px);min-height:40px;padding:10px 16px;border:1px solid var(--line);border-radius:11px;background:#19392db0;color:var(--ink);font-size:12px}#chatPanel{position:fixed;z-index:90;left:14px;bottom:calc(var(--safe) + 68px);width:min(300px,calc(100vw - 28px));max-height:min(45dvh,300px);padding:12px;background:#19392bb8;border:1px solid var(--line);color:var(--ink);border-radius:14px;display:flex;flex-direction:column;gap:10px;backdrop-filter:blur(7px)}.chatHead{display:flex;justify-content:space-between;align-items:center;font-size:12px}.chatHead button{padding:7px 9px;border-radius:7px;background:#ffffff14;font-size:10px}#chatMessages{list-style:none;margin:0;padding:0;height:140px;min-height:50px;overflow:auto;font-size:12px;line-height:1.55;overflow-wrap:anywhere;overscroll-behavior:contain}#chatMessages li{padding:5px 0;border-bottom:1px solid #ffffff13}#chatMessages b{color:#c5dfb1}#chatForm{display:flex;gap:6px}#chatInput{width:0;flex:1;min-height:38px;padding:8px;border-radius:8px;border:1px solid #fff3;background:#f0f3dcdd;color:#294432;font-size:16px}#chatSend{padding:9px 12px;background:#b4c69d;color:#294432;border-radius:8px;font-size:12px}#chatError{font-size:10px;line-height:1.4;color:#c9d7c5}.chat-open #joystick,.chat-open footer,.chat-open .contextAction,.chat-open #sledPanel{visibility:hidden!important}
/* Dialogs: clear sections, consistent fields and one task at a time. */
dialog{border:1px solid #cad1bd;border-radius:20px;padding:25px;background:#f7f2e5;color:#294735;max-width:calc(100vw - 28px);max-height:90dvh;overflow:auto;box-shadow:0 20px 100px #10251c60}dialog::backdrop{background:#11291fc4;backdrop-filter:blur(5px)}dialog h2{font-size:22px;margin:10px 0 16px}dialog p{font-size:13px;line-height:1.7}dialog small{font-size:11px;line-height:1.6;color:#637563}dialog button{min-height:40px;padding:10px 14px;background:#e3e8d9;border-radius:9px;color:#2a4b36}dialog input,dialog select,dialog textarea{width:100%;padding:11px;border-radius:9px;border:1px solid #b5c3ad;background:#fffdf6;color:#294735;font-size:14px}dialog label{font-size:12px;display:block;margin:10px 0 5px}#close,#closeConnect{float:right;min-height:32px;padding:6px 10px;background:transparent;font-size:12px}.eyebrow{font-size:9px;letter-spacing:1.5px;color:#73836b}#welcome,#connect{width:410px}#welcome>p{margin:10px 0 15px}.genderChoices{display:flex;gap:8px}.genderChoices button{flex:1;min-height:52px;border:2px solid transparent;font-size:12px}.genderChoices button[aria-pressed=true]{border-color:#50734f;background:#dce5cf}#characterNote{font-size:11px!important;color:#68785c}#startOnline,#startOffline{display:block;width:100%;margin-top:9px;min-height:48px}#startOnline,#join{background:#315b41;color:#fff7e4}#welcome>small{display:block;margin-top:14px}#joinForm{display:flex;flex-direction:column;gap:5px}#joinForm label{margin:8px 0 0}#join{margin-top:10px;font-weight:700}.roomButtons{display:flex;gap:8px;justify-content:space-between;margin-top:15px}.roomButtons button{font-size:11px;background:transparent;text-decoration:underline;padding:6px}#connectError{font-size:12px;color:#a04432}#notice{position:fixed;z-index:200;top:50%;left:50%;transform:translate(-50%,-50%);max-width:85%;padding:20px;background:#fff6de;color:#284635;border-radius:14px;font-size:13px}
#boardDialog{width:680px}.boardToolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.boardToolbar h2{font-size:18px;margin:0}.boardTabs{display:flex;gap:5px;background:#e4e8d8;border-radius:11px;padding:4px;margin:16px 0}.boardTabs button{flex:1;background:transparent;font-size:13px}.boardTabs button[aria-pressed=true]{background:#31583e;color:#fff7e5}.boardColumns{display:block}.boardColumns h3{font-size:14px;margin:15px 0 10px}#boardStatus{font-size:11px;color:#6d7d61;margin:10px 0}#wodInput{resize:vertical;line-height:1.6}#saveWod,#saveDoodle,#publishShot{background:#315b41;color:#fff6e1;margin-top:8px}#doodleCanvas{display:block;width:100%;height:auto;aspect-ratio:2/1;margin:15px 0 8px;border:4px solid #aa9670;border-radius:10px;background:#243d30;touch-action:none}.boardToolbar #penColor{width:44px;height:38px;padding:3px}.uploadLabel{cursor:pointer;background:#e3e8d9;border-radius:9px;padding:11px;font-size:12px;margin:0}#shotPreview{width:100%;max-height:220px;object-fit:contain;margin-top:14px;border-radius:10px;background:#243d30}#boardPhotos{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:15px 0}#boardPhotos img{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:#243d30;border-radius:7px}#selfieShutter{position:fixed;z-index:95;left:50%;bottom:calc(var(--safe) + 100px);transform:translateX(-50%);padding:14px 26px;border-radius:30px;background:#f7e7bb;color:#264a35;font-size:17px;border:2px solid #fff5d6}
@media(pointer:coarse){#joystick{display:block}kbd{display:none}.view #mouseLook{display:none}}
@media(max-width:800px){footer{max-width:calc(100vw - 24px)}.actions button{padding:9px 10px;font-size:11px}.actions #runLabel{font-size:10px}.contextAction{bottom:calc(var(--safe) + 100px)}#chatToggle{bottom:calc(var(--safe) + 70px)}#chatPanel{bottom:calc(var(--safe) + 118px)}#joystick{bottom:calc(var(--safe) + 120px)}#hint{display:none}.sled-active #chatToggle{bottom:calc(var(--safe) + 14px)}.sled-active #chatPanel{bottom:calc(var(--safe) + 64px)}#sledPanel{bottom:calc(var(--safe) + 66px);width:min(300px,calc(100vw - 28px))}}
@media(max-width:550px){header{left:10px;right:10px;gap:5px;top:max(10px,env(safe-area-inset-top))}.brand{padding:5px 8px 5px 5px;gap:6px;border-radius:11px}.mark{width:29px;height:29px;font-size:20px}.brand b{font-size:10px;letter-spacing:.8px}.brand small{display:none}.headerControls{gap:4px}.headerControls button,#openBoard{padding:0 9px;height:38px;min-width:32px;font-size:10px;border-radius:9px}#help{width:32px}.status,.third-person .status{top:66px;left:12px;max-width:60vw;font-size:9px;gap:5px}.status span{max-width:110px}#workoutRecords{top:91px;left:10px;max-width:180px}#workoutRecords summary{padding:9px 11px;font-size:11px;gap:14px}.view{right:10px;top:66px}.view #plus,.view #minus,.view #reset{display:none}.view button{min-height:30px;padding:6px 8px}.view #mouseLook{display:none}footer{bottom:calc(var(--safe) + 10px);width:calc(100vw - 20px)}.actions{justify-content:space-between;border-radius:13px;gap:1px;padding:4px}.actions button{flex:1;padding:8px 5px;min-height:40px;font-size:11px;gap:3px}.actions button>span:first-child{display:none}.actions #runLabel{font-size:10px}.actions #greet{min-width:0}#joystick{left:12px;bottom:calc(var(--safe) + 112px);width:90px;height:90px}#stick{left:23px;top:23px}#chatToggle{left:10px;bottom:calc(var(--safe) + 65px);min-height:34px;padding:7px 14px;font-size:11px}#chatPanel{left:10px;bottom:calc(var(--safe) + 109px);width:min(310px,calc(100vw - 20px));max-height:45dvh}.contextAction{right:10px;bottom:calc(var(--safe) + 104px);max-width:170px}#action{min-width:105px;min-height:54px;padding:10px 13px;font-size:13px}#actionHint{font-size:9px;max-width:170px;padding:6px 8px}#liftChoice button{padding:9px 7px;font-size:10px}#sledPanel{right:10px;bottom:calc(var(--safe) + 60px);width:calc(100vw - 20px);padding:13px;gap:8px;border-radius:15px}#sledTap{min-height:55px;font-size:16px}#boardPhotos{grid-template-columns:repeat(2,1fr)}dialog{padding:20px;max-height:88dvh}#boardDialog{padding:17px}.boardToolbar h2{font-size:16px}.boardToolbar button,.uploadLabel{font-size:11px}#timingResult{top:24%;max-width:94vw;font-size:27px}.sled-active .view{display:none}}
@media(max-height:500px){header{top:8px}.brand{padding:4px 8px 4px 4px}.brand small{display:none}.mark{height:28px;width:28px}.status,.third-person .status{top:60px}#workoutRecords{top:80px}#counterRows{max-height:35dvh}.view{top:60px}#sledPanel{width:260px;right:10px;bottom:12px;padding:10px;gap:6px}#sledTap{min-height:46px}#sledPanel small{font-size:9px}#resetCurrent,#sledStop{min-height:30px;padding:6px}#timingGame{height:30px}#chatPanel{max-height:58dvh;bottom:60px}#chatMessages{height:100px}#joystick{bottom:75px;width:85px;height:85px}#stick{left:21px;top:21px}.contextAction{bottom:72px}#hint{display:none}#selfieShutter{bottom:75px}.sled-active #chatToggle{bottom:12px}}
@media(prefers-reduced-motion:reduce){.comboCelebration{animation:none}}

#facilityWarning{position:fixed;z-index:150;top:25%;left:50%;transform:translateX(-50%);width:min(430px,calc(100vw - 36px));padding:18px 24px;background:#fff0cfee;color:#633b2b;border:2px solid #c99265;border-radius:17px;font-size:17px;font-weight:700;line-height:1.6;box-shadow:0 10px 40px #152b2155;text-align:center;pointer-events:none}#lockerOptions{display:grid;gap:9px}#lockerOptions label{font-size:11px;color:#d2dfc5}#lockerColor{width:100%;padding:10px;background:#f6eedb;color:#294b35;border:0;border-radius:9px;font:inherit}#applyLockerColor{padding:12px;border-radius:9px;background:#dfbb73;color:#29432e;font-weight:700}#lockerStatus{min-height:16px}@media(max-width:380px){.headerControls button,#openBoard{padding:0 7px}.brand b{font-size:9px}.brand{gap:4px;padding-right:6px}}

#clockDialog{width:min(460px,calc(100vw - 28px))}#clockNow{font:600 24px monospace;text-align:center;margin:16px 0;color:#526b5b}#timerReadout{display:block;font:700 64px monospace;text-align:center;margin:12px 0 24px}.clockButtons{display:flex;gap:8px;margin-bottom:20px}.clockButtons button{flex:1;padding:12px 6px}#clockDialog small{display:block;text-align:center}

/* Device-aware HUD: preserve every control within the usable viewport. */
:root{--edge-left:max(10px,env(safe-area-inset-left,0px));--edge-right:max(10px,env(safe-area-inset-right,0px));--edge-top:max(10px,env(safe-area-inset-top,0px));--safe:env(safe-area-inset-bottom,0px)}
html,body{width:100%;height:100%;height:100dvh;overscroll-behavior:none}#world{height:100dvh;bottom:auto}
header{left:var(--edge-left);right:var(--edge-right);top:var(--edge-top)}.brand{flex:none}.brand b{white-space:nowrap}.headerControls{min-width:0}.headerControls button{white-space:nowrap;flex-shrink:0}
footer{max-width:none;width:max-content}.actions{max-width:100%;min-width:0}.actions button{min-width:0}
dialog{width:min(680px,calc(100vw - 28px));max-height:calc(100dvh - env(safe-area-inset-top,0px) - var(--safe) - 24px);overscroll-behavior:contain}dialog input,dialog select,dialog textarea{font-size:16px}
#timingResult{white-space:normal;text-align:center;max-width:calc(100vw - 24px);overflow-wrap:anywhere}#sledPanel{max-height:calc(100dvh - var(--edge-top) - var(--safe) - 80px);overflow:auto;overscroll-behavior:contain}
@media(max-width:1000px), (pointer:coarse){
 header{gap:6px}.brand{padding:5px 8px;gap:6px}.brand small{display:none}.brand b{font-size:10px;letter-spacing:.6px}.mark{width:28px;height:28px;font-size:20px}.headerControls{gap:4px}.headerControls button,#openBoard{padding:0 9px;height:36px;min-width:32px;font-size:11px}
 .view{right:var(--edge-right);top:calc(var(--edge-top) + 48px)}.view #mouseLook{display:none}.status,.third-person .status{top:calc(var(--edge-top) + 48px);left:var(--edge-left);max-width:55vw}#workoutRecords{left:var(--edge-left);top:calc(var(--edge-top) + 73px)}
 footer{left:var(--edge-left);right:var(--edge-right);width:auto;max-width:none;transform:none;bottom:calc(var(--safe) + 10px)}.actions{width:100%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px}.actions button{padding:8px 3px;min-height:40px;white-space:nowrap;font-size:11px}.actions button>span:first-child{display:none}.actions #runLabel{font-size:11px}kbd,#hint{display:none}
 #joystick{display:block;left:var(--edge-left);bottom:calc(var(--safe) + 100px);width:90px;height:90px}#stick{left:23px;top:23px}
 .contextAction{right:var(--edge-right);bottom:calc(var(--safe) + 100px);max-width:min(180px,48vw)}#actionHint{max-width:100%}#action{min-width:110px;min-height:52px}#chatToggle{left:var(--edge-left);bottom:calc(var(--safe) + 64px);min-height:30px;padding:6px 12px}#chatPanel{left:var(--edge-left);bottom:calc(var(--safe) + 104px)}
 #sledPanel{right:var(--edge-right);bottom:calc(var(--safe) + 12px);width:min(300px,calc(100vw - 24px));max-height:calc(100dvh - var(--edge-top) - var(--safe) - 65px)}.sled-active #chatToggle{bottom:calc(var(--safe) + 14px)}.sled-active #chatPanel{bottom:calc(var(--safe) + 56px)}
}
@media(max-width:600px){
 header{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;align-items:start}.brand{justify-self:start}.headerControls{display:grid;grid-template-columns:1.25fr 1fr 1.1fr .8fr 32px;width:100%;gap:4px}.headerControls button,#openBoard{padding:0 4px;font-size:11px;min-width:0;width:auto}#help{width:auto}
 .status,.third-person .status{top:calc(var(--edge-top) + 88px);max-width:70vw}.status span{max-width:125px}.view{top:calc(var(--edge-top) + 88px)}.view #plus,.view #minus,.view #reset{display:none}#workoutRecords{top:calc(var(--edge-top) + 112px)}
 #sledPanel{width:calc(100vw - var(--edge-left) - var(--edge-right));max-height:calc(100dvh - var(--edge-top) - var(--safe) - 155px)}#timingResult{top:30%;font-size:25px}#chatPanel{max-height:calc(100dvh - 240px - var(--safe))}
}
@media(max-height:500px) and (min-width:601px){
 .status span{max-width:170px}#workoutRecords summary{padding:7px 10px}.view #plus,.view #minus,.view #reset{display:none}
 footer{left:calc(var(--edge-left) + 125px);right:calc(var(--edge-right) + 160px);bottom:calc(var(--safe) + 8px)}.actions button{min-height:36px;padding:7px 2px;font-size:10px}.actions #runLabel{font-size:10px}
 #joystick{bottom:calc(var(--safe) + 12px);width:86px;height:86px}#stick{left:21px;top:21px}.contextAction{bottom:calc(var(--safe) + 12px);max-width:150px}#actionHint{font-size:9px;padding:5px}#action{min-height:44px;padding:8px 12px}#chatToggle{bottom:calc(var(--safe) + 108px)}#chatPanel{bottom:calc(var(--safe) + 145px);max-height:calc(100dvh - 165px)}#chatMessages{height:75px;flex:1}#sledPanel small{font-size:9px}#trainingHint{display:none}#sledPanel{gap:5px;padding:10px}#sledTap{min-height:42px}#resetCurrent,#sledStop{min-height:30px;padding:6px}
}

/* v28: reserve real scene space above the workout dock. */
:root{--workout-dock:0px}.creatorLink{color:inherit;text-decoration:none;pointer-events:auto}.brand small{display:block!important}.creatorLink:hover{text-decoration:underline}
#speechLayer{position:fixed;inset:0;pointer-events:none;z-index:24;overflow:hidden}.speechBubble{position:absolute;left:0;top:0;width:max-content;max-width:min(210px,55vw);padding:9px 12px;border:1px solid #345d48;border-radius:12px;background:#fff9edf5;color:#244136;font-size:13px;line-height:1.4;overflow-wrap:anywhere;box-shadow:0 3px 10px #122c2330}
#timingGame{touch-action:none}#timingGame[data-ready=false]{filter:saturate(.45)}
@media(max-width:900px),(pointer:coarse){
 body.sled-active #world{height:calc(100dvh - var(--workout-dock))}
 body.sled-active #sledPanel{left:0;right:0;bottom:0;width:100%;max-height:45dvh;border-radius:14px 14px 0 0;padding:8px max(12px,env(safe-area-inset-right)) calc(8px + var(--safe)) max(12px,env(safe-area-inset-left));gap:6px;display:grid;grid-template-columns:minmax(0,1fr) auto 58px;background:#19392f;box-shadow:none}
 #sledRoute{grid-column:1;font-size:12px;align-self:center}#comboCount{grid-column:2/4;font-size:12px;justify-self:end}
 #sledPanel #sledProgress{grid-column:1/-1;height:4px;margin:0}#sledPanel:has(#timingGame:not([hidden])) #sledProgress{display:none}
 #sledPanel #timingGame{grid-column:1/-1;height:32px}#sledPanel #sledTap{grid-column:1/3;grid-row:auto;min-height:46px;padding:8px;font-size:15px}
 #sledPanel #sledStop{grid-column:3;grid-row:auto;min-height:46px;padding:6px;font-size:11px}
 #sledPanel #trainingHint{display:none}#sledPanel #resetCurrent{grid-column:1/-1;min-height:24px;padding:3px;font-size:10px;background:transparent;border:0;opacity:.7;order:10}
 #lockerOptions{grid-column:1/-1}.sled-active header .brand,.sled-active header #openBoard,.sled-active header #openClock,.sled-active header #dayNight,.sled-active header #help,.sled-active .status,.sled-active #workoutRecords,.sled-active .view{display:none!important}
 .sled-active header{right:auto;max-width:50vw}.sled-active header #online{height:30px;font-size:10px;padding:0 9px}
 .sled-active #chatToggle{left:auto;right:var(--edge-right);top:var(--edge-top);bottom:auto;min-height:30px;padding:6px 12px}
 .sled-active #chatPanel{bottom:calc(var(--workout-dock) + 8px);max-height:calc(100dvh - var(--workout-dock) - 65px)}
 .sled-active #timingResult{top:50px;font-size:20px!important;padding:6px 12px;max-width:80vw;box-shadow:none}
}
@media(max-height:500px) and (min-width:551px){body.sled-active #sledPanel{grid-template-columns:minmax(120px,1fr) minmax(160px,2fr) minmax(120px,1fr) 58px;gap:5px 10px;max-height:38dvh}#sledPanel #sledRoute{grid-column:1;grid-row:1}#sledPanel #comboCount{grid-column:1;grid-row:2;justify-self:start}#sledPanel #timingGame,#sledPanel #sledProgress{grid-column:2;grid-row:1/3;align-self:center}#sledPanel #sledTap{grid-column:3;grid-row:1/3}#sledPanel #sledStop{grid-column:4;grid-row:1/3}#sledPanel #resetCurrent{grid-column:1/-1;grid-row:3}#sledPanel #lockerOptions{grid-column:2/4;grid-row:1/3}}

/* v29: creator signature, athlete-anchored impact and coach AMRAP. */
#creatorBadge{position:fixed;z-index:42;left:14px;top:155px;padding:9px 12px;background:#f1dbac;color:#254632;border:1px solid #fff2cd;border-radius:11px;text-decoration:none;box-shadow:0 3px 12px #122a2330;font-size:12px;line-height:1.4}#creatorBadge span{display:block;font-size:10px}#creatorBadge b{font-size:12px}.sled-active #creatorBadge{left:auto;right:12px;top:52px;padding:5px 9px}.sled-active #creatorBadge span{display:none}.duel-active #creatorBadge{display:none}
#comboImpact{position:fixed;z-index:120;pointer-events:none;color:#ffda4f;text-align:center;line-height:1;filter:drop-shadow(3px 4px 0 #203b30);transform:rotate(-9deg);-webkit-text-stroke:1px #5d3218}#comboImpact small{display:block;color:#fff6dc;font-size:14px;font-weight:900;-webkit-text-stroke:0}#comboImpact strong{display:block;font-size:clamp(52px,10vw,90px);font-weight:950;letter-spacing:-4px}#comboImpact b{font-size:clamp(20px,5vw,30px);font-weight:950}#comboImpact.hit{animation:impactBang .85s ease-out both}@keyframes impactBang{0%{transform:rotate(-14deg) scale(1.85);opacity:0}12%{transform:rotate(-8deg) scale(.9);opacity:1}25%{transform:rotate(-10deg) scale(1.15)}40%,75%{transform:rotate(-9deg) scale(1)}100%{transform:translateY(-15px) rotate(-9deg) scale(1.05);opacity:0}}
#duelDialog,#duelResult{width:370px}.dialogClose{float:right}#duelDialog h2{clear:both;font-size:23px}#duelStart,#duelAgain{display:block;width:100%;margin:12px 0;background:#315b41;color:#fff6de}#duelDialog>small{display:block}#duelAvailability{font-size:12px}#duelCountdown{position:fixed;inset:0;z-index:160;display:grid;place-items:center;pointer-events:none;font-weight:950;font-size:clamp(100px,24vw,190px);color:#ffe46f;text-shadow:5px 6px 0 #18372a,0 0 40px #14291b88;background:#16332622}#duelCountdown.pulse{animation:countBang .3s ease-out}@keyframes countBang{from{font-size:clamp(140px,34vw,240px);opacity:.4}to{opacity:1}}
#duelHud{position:fixed;z-index:100;left:50%;top:max(8px,env(safe-area-inset-top));transform:translateX(-50%);width:min(330px,calc(100vw - 24px));padding:7px 12px;background:#163b30f5;border:1px solid #e4c37b;border-radius:12px;text-align:center}#duelTitle{font-size:10px}#duelTime{color:#ffda68;font-size:24px;margin-left:14px;font-variant-numeric:tabular-nums}#duelHud>div{display:flex;justify-content:space-between;margin:3px 0;font-size:17px}#duelHud>div>span{font-size:10px;align-self:center;opacity:.6}#duelQuit{position:absolute;right:0;top:calc(100% + 4px);background:#203b30dd;font-size:10px;border-radius:7px;padding:6px 9px}.duel-active header,.duel-active .status,.duel-active #chatToggle,.duel-active #workoutRecords,.duel-active .view,.duel-active #resetCurrent{display:none!important}.duelFinal{display:flex;justify-content:space-around;align-items:center;margin:25px 0;text-align:center}.duelFinal strong{display:block;font-size:42px;color:#315b41}.duelFinal span{opacity:.5}#duelResultClose{width:100%}
@media(max-width:550px){#creatorBadge{top:155px;left:10px;padding:6px 9px}#creatorBadge b{font-size:11px}#comboImpact strong{font-size:58px}}
@media(max-height:500px){#creatorBadge{top:80px;left:auto;right:10px;padding:4px 8px}#creatorBadge span{display:none}#duelHud{width:280px;padding:3px 10px}#duelHud>div{font-size:14px}#duelTime{font-size:21px}}
@media(prefers-reduced-motion:reduce){#comboImpact.hit,#duelCountdown.pulse{animation:none}}

#coachBonusImpact{position:fixed;z-index:120;pointer-events:none;color:#ffda4f;text-align:center;line-height:1;filter:drop-shadow(3px 4px 0 #203b30);transform:rotate(-9deg);-webkit-text-stroke:1px #5d3218}
#coachBonusImpact small{display:block;font-size:14px;color:#fff6dc}#coachBonusImpact strong{display:block;font-size:58px;font-weight:950}#coachBonusImpact b{font-size:20px}#coachBonusImpact.hit{animation:impactBang 1.2s ease-out both}

#soundToggle{font-size:11px;padding:7px 9px;white-space:nowrap}#soundToggle[aria-pressed="false"]{opacity:.6}

/* Creator credit stays beside the title, inside normal header flow. */
.brandGroup{display:flex;align-items:center;gap:7px;min-width:0;justify-self:start;flex-shrink:0}
#creatorBadge{position:static;inset:auto;display:flex;align-items:center;gap:5px;padding:6px 8px;border-radius:8px;font-size:10px;line-height:1.2;box-shadow:none;white-space:nowrap;pointer-events:auto;flex-shrink:0;background:#f1dbacd9}
#creatorBadge span{display:inline;font-size:9px}#creatorBadge b{font-size:11px;letter-spacing:0}
.sled-active #creatorBadge,.duel-active #creatorBadge{display:none!important}
@media(max-width:550px){.brandGroup{gap:5px}#creatorBadge{padding:5px 7px;gap:4px}#creatorBadge b{font-size:10px}#creatorBadge span{font-size:8px}}
@media(max-height:500px){#creatorBadge span{display:inline}}

#raceDock{position:fixed;z-index:70;bottom:var(--safe);left:50%;transform:translateX(-50%);width:min(520px,calc(100vw - 20px));padding:12px;border-radius:14px;background:#244b3e;color:#fff1ce;display:grid;gap:8px}#raceDock[hidden]{display:none}#raceDock>div:last-child{display:flex;gap:8px}#raceDock button{padding:13px;border:0;border-radius:9px;background:#e8c06d;color:#213e31;font-weight:700}#raceTap{flex:1;touch-action:none}#racePace{font-size:12px}#raceProgress{font-size:12px}.raceMeter{position:relative;height:24px;border-radius:7px;background:#667970;overflow:hidden}.raceYellow{position:absolute;left:30%;width:40%;height:100%;background:#d5af4e}.raceRed{position:absolute;left:46%;width:8%;height:100%;background:#d95f47}#raceNeedle{position:absolute;top:0;height:100%;width:4px;background:white;transform:translateX(-50%)}.race-active footer,.race-active #joystick,.race-active .contextAction,.race-active .view,.race-active #chatToggle,.race-active #workoutRecords,.race-active header{display:none!important}#raceDialog select{width:100%;padding:10px;margin:7px 0 14px}#raceDialog label{display:block}#raceStart,#coachRace{padding:12px;margin-top:12px}body.race-active #world{bottom:var(--workout-dock)}

.raceRed{left:48%;width:4%}.raceBoostTrack{height:5px;border-radius:3px;background:#15362c;overflow:hidden}#raceBoostFill{display:block;height:100%;width:0;background:#79dfe7}#raceDock #raceBoost{padding:8px;background:#86d9df}#raceDock #raceBoost:disabled{opacity:.5}

/* Community panels and character-centered emotes */
[hidden]{display:none!important}#emoteWheel{position:fixed;width:0;height:0;z-index:48;--radius:106px}#emoteWheel>button{position:absolute;left:calc(var(--ex,0)*var(--radius));top:calc(var(--ey,0)*var(--radius));transform:translate(-50%,-50%);width:78px;height:52px;border-radius:24px;background:#203e36f5;color:#fff4d6;border:1px solid #dcc48b;box-shadow:0 3px 16px #0004;font-size:13px}#emoteWheel>#emoteClose{width:38px;height:38px;font-size:23px;background:#f1e5c7;color:#263e35}#nearbyActions{position:fixed;bottom:190px;right:18px;z-index:32;display:flex;gap:8px;flex-direction:column}#nearbyActions button{background:#294f41;color:#fff4d4;border:1px solid #dabf77;max-width:230px;padding:12px}#invitePanel{position:fixed;z-index:65;top:90px;left:50%;transform:translateX(-50%);width:min(390px,92vw);background:#f9f1df;border:2px solid #b28d47;border-radius:18px;padding:15px;box-shadow:0 8px 35px #0004}#invitePanel div{display:flex;gap:8px;margin-top:10px}#invitePanel small{display:block;color:#9b412c}#communityDialog{width:min(600px,94vw);max-height:82dvh}#communityDialog ol{list-style:none;padding:0;max-height:38dvh;overflow:auto}#rankList li{display:flex;justify-content:space-between;padding:12px 8px;border-bottom:1px solid #d3c6ab}#guestList li{padding:14px 4px;border-bottom:1px solid #d3c6ab}#guestList p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}#guestList a{display:block;color:#386e58;margin-top:6px}#communityDialog input,#communityDialog textarea{box-sizing:border-box;width:100%}.communityTabs{display:flex;gap:8px}#adminPanel{padding:10px;border:1px solid #b49042;border-radius:12px;margin-top:12px}#adminPanel h3{color:#8d6914}#pvpError{color:#a33d29}.headerControls{flex-wrap:wrap}#communityOpen{font-size:12px}#connect input,#connect select{box-sizing:border-box;max-width:100%}#connect{max-height:88dvh;overflow:auto}@media(max-width:680px){#nearbyActions{bottom:175px;right:12px}#emoteWheel{--radius:100px}#emoteWheel>button{width:72px;height:48px;font-size:12px}.headerControls{max-width:215px;gap:4px}.headerControls button{font-size:10px;padding:6px 8px}#communityOpen{font-size:10px}#invitePanel{top:105px}#communityDialog{padding:18px}#guestList,#rankList{max-height:33dvh}}

@media(max-width:680px){.headerControls{display:grid;max-width:none;width:100%;grid-template-columns:1.15fr 1.3fr .85fr .8fr 1fr 30px;gap:4px}.headerControls button,#openBoard{padding:0 4px;min-width:0;font-size:10px;height:34px}.status,.third-person .status{top:99px;max-width:85vw}#workoutRecords{top:121px}.sled-active header #communityOpen{display:none!important}.sled-active .headerControls{display:flex;width:auto}.sled-active header{max-width:50vw}}

#serverCards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0 10px}#serverCards button{min-height:68px;padding:12px 6px;border:1px solid #b39b67;border-radius:13px;background:#e9d7a9;color:#25483a;font-weight:750;white-space:pre-line}#serverCards button:disabled{opacity:.5}#createServerOpen,#startOffline{width:100%;margin:5px 0;min-height:45px}#createServerForm{padding:12px;border:1px solid #b9ac8c;border-radius:12px}#createServerForm input{box-sizing:border-box;width:100%}#boardDialog #rankPage,#boardDialog #guestPage{grid-column:1/-1}#boardDialog ol{padding:0;list-style:none;max-height:45dvh;overflow:auto}#boardDialog #adminPanel{margin-top:12px}#boardDialog input,#boardDialog textarea{box-sizing:border-box;max-width:100%}#adControls{display:grid;gap:8px;padding:12px;border:1px solid #c1a764;border-radius:10px;margin-bottom:12px}#shareToast{position:fixed;z-index:300;bottom:100px;left:50%;transform:translateX(-50%);width:min(420px,90vw);padding:18px;border-radius:14px;background:#244b3f;color:#fff1ce;box-shadow:0 8px 25px #0005;text-align:center;white-space:pre-line;pointer-events:none}@media(max-width:680px){.headerControls{grid-template-columns:1.05fr 1.8fr .7fr 1fr 30px}#serverCards{gap:6px}#serverCards button{font-size:12px}#boardDialog{width:94vw}#boardDialog .boardColumns{display:block}.sled-active header #openBoard{display:none!important}}

#bikeControls{display:flex;gap:10px;flex:1}#bikeControls[hidden]{display:none}#bikeControls button{flex:1;min-height:60px;touch-action:none}#raceTap[hidden]{display:none}

#bikeControls button.active{background:#ffdc81;box-shadow:inset 0 0 0 3px #fff0bf}#raceBoost[hidden],.raceBoostTrack[hidden]{display:none!important}

.guestPhotoTools{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.guestPhotoTools label{font-size:12px}.guestImage,#guestPreview{display:block;max-width:100%;max-height:220px;object-fit:contain;border-radius:10px;margin:10px 0}.guestImage{cursor:zoom-in}#guestPhotoFull{max-width:100%;max-height:72dvh}dialog{max-height:88dvh;overflow:auto;overscroll-behavior:contain}#guestPreview[hidden]{display:none}.guestPhotoTools input{max-width:220px}#guestPage{min-width:0}#guestList a{display:inline-block;padding:9px 0;overflow-wrap:anywhere}#guestForm textarea{width:100%;box-sizing:border-box}@media(max-width:600px){header .headerControls{gap:4px}header button{font-size:11px;padding:8px}dialog{width:calc(100vw - 24px);padding:14px;box-sizing:border-box}.boardTabs{display:flex;gap:4px}.boardTabs button{flex:1;font-size:12px;padding:10px 4px}#raceDock{box-sizing:border-box;width:calc(100vw - 16px)}#guestPhotoFile{max-width:100%}}

#guestList a{position:relative;z-index:1;display:block;min-height:32px;font-weight:700;text-decoration:underline;touch-action:manipulation}.copyInstagram{display:block;margin:3px 0 8px;font-size:11px;padding:7px 10px}

#chatToggle{background:#efad60;color:#422a1d;border:2px solid #ffe5af;box-shadow:0 3px 12px #48271155;font-weight:800}#chatToggle:hover,#chatToggle[aria-expanded=true]{background:#f8c47c;color:#352117}#chatSend{background:#eaa65c;color:#3e281d;font-weight:800;border:1px solid #f8d5a1}#chatClose{background:#f7d9aa;color:#533521}.speechBubble{padding:7px 10px;border-radius:11px}.speechBubble::before{content:attr(data-author);display:block;font-size:10px;font-weight:700;color:#977345;margin-bottom:2px}.speechBubble::after{content:'';position:absolute;bottom:-5px;left:calc(50% - 5px);width:8px;height:8px;background:#fff9ed;transform:rotate(45deg);border-bottom:1px solid #345d48;border-right:1px solid #345d48}.adHelp{padding:10px;background:#f0dfbb;border-radius:9px;font-size:12px;line-height:1.7}#advertisementLinks{display:grid;gap:10px}#advertisementLinks a{display:grid;gap:7px;padding:16px;border:1px solid #c6ac7b;border-radius:12px;background:#f0dfbb;color:#334e38;text-decoration:none}#advertisementLinks a:hover{background:#e8cf9b}#advertisementLinks small{overflow-wrap:anywhere}#djNotice p{line-height:1.8}

#advertisementLinks strong{overflow-wrap:anywhere}

#startOfflineAdmin,#openOfflineAdmin{margin:6px 0;padding:12px;background:#e8c47c;color:#3e3927;border:1px solid #b79654;font-weight:700}#startOfflineAdmin{width:100%}#offlineAdminForm{display:grid;gap:10px}#offlineAdminCode{width:100%;box-sizing:border-box}#offlineAdminSubmit{background:#315b41;color:#fff6e1}#offlineAdminError{color:#a04430;margin:0}#offlineAdminExit{background:#ead3ac;color:#67412b}

#world{isolation:isolate}.youtubeWorldLayer{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}.youtubeWorldFrame{position:absolute;left:0;top:0;border:0;transform-origin:0 0;backface-visibility:hidden;pointer-events:none;background:#000}.youtubeWorldFrame[hidden]{display:none}#youtubePlay{position:fixed;z-index:95;right:12px;bottom:calc(var(--safe) + 180px);padding:12px;background:#e8ba69;color:#3d2f1d;border:1px solid #fff0c6;border-radius:10px}

#adminPanel{display:none!important}#boardDialog{width:min(640px,calc(100vw - 28px));background:#fcf8ee;color:#2c4939;padding:24px;border:1px solid #d6c8aa;border-radius:18px}#boardDialog .boardTabs{background:#eeecdf;gap:6px;padding:5px;border-radius:11px}#boardDialog .boardTabs button{padding:11px 8px;color:#73816b;font-weight:650}#boardDialog .boardTabs button[aria-pressed=true]{background:#375b43;color:#fff7e5}#boardDialog #communityStatus{font-size:11px;color:#8c8c78;border-top:1px solid #e6dfcb;padding-top:12px}#boardDialog #boardStatus{font-size:11px;line-height:1.6}#boardDialog ol{max-height:none}#boardDialog #rankList li{display:flex;justify-content:space-between;gap:16px;align-items:center;background:#f1efdf;border:0;border-radius:10px;padding:15px;margin:7px 0}#boardDialog #rankList b{color:#a07b31;white-space:nowrap}#boardDialog #guestList li{border:1px solid #e0dcc8;background:#fffdf6;border-radius:12px;padding:17px;margin:12px 0}#boardDialog #guestList p{line-height:1.7;white-space:pre-wrap;font-size:13px;color:#536a51}#boardDialog #guestList small{color:#a5a28c;font-size:10px}#guestCompose{background:#f1ebd7;border:1px solid #ded1ad;border-radius:12px;padding:14px;margin-bottom:18px}#guestCompose summary,#wodEditor details summary{cursor:pointer;font-weight:700;font-size:13px;color:#65734f}#guestCompose form{margin-top:15px}#guestForm label{font-size:12px}#guestForm input,#guestForm textarea,#wodInput{border-radius:9px;background:#fffdf5;border:1px solid #d7d7c1;padding:11px;color:#38523d}#guestForm button:not(.guestPhotoTools button){background:#355a42;color:#fff5dc;border-radius:9px}#wodEditor details{margin-top:18px;padding-top:14px;border-top:1px solid #e4dec9}.guestPhotoTools{gap:6px}.guestPhotoTools button{background:#e5ddc2;color:#665f45;padding:9px;font-size:11px}#guestPage>form{margin-top:0}.advertisementCard{padding:18px;border:1px solid #d6ccae;background:#fcf5e3;border-radius:12px}.advertisementCard h3{font-size:16px;margin:7px 0}.advertisementCard p{font-size:13px;color:#687658;line-height:1.7;white-space:pre-wrap}.advertisementCard small{color:#a17d39}.advertisementCard a{display:inline-block!important;padding:10px 14px!important;background:#365b43!important;color:#fff5dc!important;border:0!important;border-radius:8px!important;font-size:12px}#startManager{width:100%;margin:6px 0;background:#e6e5d5;color:#536849}#manageBox{background:#ead6a5;color:#5a5133}@media(max-width:550px){#boardDialog{padding:18px}#boardDialog .boardToolbar h2{font-size:16px}#boardDialog .boardTabs button{font-size:12px}#boardDialog #guestList li{padding:14px}.guestPhotoTools{display:grid;grid-template-columns:1fr 1fr}.guestPhotoTools label{grid-column:1/-1}#manageBox{font-size:10px;padding:0 8px}}

/* v59: one quiet management entry, no extra welcome actions */
#welcome{box-sizing:border-box;max-height:calc(100dvh - 24px);overflow-y:auto;width:min(440px,calc(100vw - 28px))}#welcome .welcomeManager{display:flex;justify-content:flex-end;margin-top:12px;padding-top:10px;border-top:1px solid #e0dacb}#welcome #startManager{width:auto;margin:0;padding:6px 8px;font-size:11px;background:transparent;color:#727968;border:0;min-height:30px}body>#manageBox{position:fixed;z-index:85;right:var(--edge-right,14px);top:max(12px,env(safe-area-inset-top,0px));bottom:auto;padding:5px 9px;min-height:30px;font-size:10px;border:1px solid #d5cbb7;border-radius:7px;background:#f4eedfcf;color:#656951}body:has(#welcome[open])>#manageBox{visibility:hidden}@media(max-height:720px){#welcome{padding:18px}#welcome h2{margin:10px 0}#welcome p{margin:9px 0}#welcome #serverCards button{padding:10px}#welcome #characterNote{margin:8px 0}}

#managerHost{box-sizing:border-box;width:min(1180px,calc(100vw - 16px));height:calc(100dvh - 20px);max-width:none;max-height:none;padding:0;border:1px solid #d6c8aa;border-radius:14px;background:#f5f2e9;overflow:hidden}#managerHost::backdrop{background:#172c24b8}#managerHost .managerBar{height:44px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#f8f5ec;border-bottom:1px solid #ded8c7;color:#3d5949;font-size:12px}#managerHost .managerBar button{padding:6px 10px;font-size:11px;color:#3d5949;background:#e8e7d9}#managerFrame{display:block;border:0;width:100%;height:calc(100% - 44px);background:#f5f2e9}@media(max-width:550px){#managerHost{width:calc(100vw - 8px);height:calc(100dvh - 8px);border-radius:10px}}

/* Keep management in the top utility area, clear of workout cancellation. */
@media(min-width:681px){header{right:calc(var(--edge-right,14px) + 82px)}}

@media(max-width:680px){header .brandGroup{max-width:calc(100% - 82px);overflow:hidden}header .brand{min-width:0;flex-shrink:1}header .brand>div{min-width:0}header .brand b{display:block;overflow:hidden;text-overflow:ellipsis;font-size:9px;letter-spacing:.4px}header .mark{flex-shrink:0}header #creatorBadge{flex-shrink:0}header #creatorBadge span{display:none}}

/* v11: readable challenge invitation and uncluttered mobile controls */
body>#manageBox{z-index:120}
#invitePanel{box-sizing:border-box;color:#263e31;background:#fff7e7}
#inviteText{display:block;color:#253b2f;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
#invitePanel button{min-height:40px;flex:1;min-width:0;padding:7px 10px;color:#fff8e9;background:#315943;border:1px solid #244633;border-radius:9px;font-size:12px;font-weight:750}
#invitePanel #inviteDecline,#invitePanel #inviteCancel{color:#463b2d;background:#eadbc0;border-color:#cab990}
#inviteStatus{color:#a2422b!important;font-weight:650;line-height:1.45}
@media(max-width:680px){#nearbyActions{display:none!important}#invitePanel{top:118px;width:min(320px,calc(100vw - 20px));padding:12px;z-index:115}#invitePanel div{display:flex;flex-wrap:wrap}body:has(#invitePanel:not([hidden])) #workoutRecords{visibility:hidden}}
@media(max-height:500px){#invitePanel{top:62px;max-height:calc(100dvh - 74px);overflow:auto}}

/* v12: accessible dual-input meter and prominent sharing. */
#shareGame,#copyRoom{background:#e8b956;color:#183d31;border:2px solid #ffe4a0;font-weight:800}#shareGame{white-space:nowrap}.doubleTrack{height:42px;background:#193d33;border-radius:10px;position:relative;overflow:hidden}.doubleTrack i{position:absolute;top:0;height:100%}.doubleYellow{background:#e4bc54}.doubleRed{background:#d85a46}.doubleYellow.first{left:28%;width:15%}.doubleRed.first{left:33.5%;width:5%}.doubleYellow.second{left:57%;width:15%}.doubleRed.second{left:62.5%;width:5%}#doubleNeedle{left:0;width:4px;background:#fff8dc;box-shadow:0 0 5px #111}#doubleGame{cursor:pointer;touch-action:manipulation}#doubleHits{display:block;text-align:center;font-size:13px;margin:5px}#duelNpcLevel{color:#87622a;font-weight:bold}#serverCards{grid-template-columns:1fr}#serverCards button{min-height:70px}#doubleGame[hidden]{display:none!important}@media(max-width:680px){footer .actions{overflow-x:auto;max-width:calc(100vw - 24px);scrollbar-width:thin}#shareGame{font-size:12px;min-width:132px;padding:8px 10px}#doubleGame .doubleTrack{height:34px}#trainingHint{line-height:1.4}}

@media(max-width:680px){footer .actions{flex-wrap:wrap;overflow:visible}#shareGame{flex:0 0 100%;box-sizing:border-box;min-height:32px;padding:5px 10px;border-radius:8px}.actions button{flex:1 1 20%;min-width:0}.contextAction{bottom:calc(var(--safe) + 140px)}#joystick{bottom:calc(var(--safe) + 148px)}#chatToggle{bottom:calc(var(--safe) + 101px)}#chatPanel{bottom:calc(var(--safe) + 145px)}.sled-active #chatToggle{bottom:calc(var(--safe) + 14px)}}

@media(max-width:680px){footer .actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}footer .actions #shareGame{grid-column:1/-1;width:100%;min-width:0;min-height:32px;font-size:12px}.actions button{white-space:nowrap}}

.duel-active>#manageBox,.race-active>#manageBox{display:none}#sledPanel #doubleGame{grid-column:1/-1;min-width:0}#sledPanel:has(#doubleGame:not([hidden])) #sledProgress{display:none}@media(max-width:680px){.sled-active #chatToggle{top:52px;bottom:auto;left:auto;right:12px;height:32px;min-height:32px;width:auto;box-sizing:border-box}#sledPanel #doubleGame .doubleTrack{height:32px}}

/* v13: conversations and reception guides. */
#npcTalkDialog,#informationDialog{box-sizing:border-box;width:min(560px,calc(100vw - 24px));background:#fff9ed;color:#2d493a;border:1px solid #d4c5a7;border-radius:18px;padding:24px}#npcTalkDialog small,#informationDialog small{color:#997b45;letter-spacing:1px}#npcTalkLine{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;min-height:70px;font-size:17px}.npcTalkButtons{display:flex;flex-wrap:wrap;gap:8px}.npcTalkButtons button{flex:1;min-height:44px;border-radius:10px;background:#e8ddc3;color:#36533e}#npcChallenge{background:#365b43;color:#fff4d4}#informationTopics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0}#informationTopics button{min-height:45px;border:1px solid #d7c9aa;background:#eee6d2;color:#465f46;border-radius:9px;padding:10px;font-size:13px}#informationTopics button[aria-pressed=true]{background:#365b43;color:#fff4d4;border-color:#365b43}#informationArticle{background:#f3eddc;border-radius:12px;padding:16px}#informationArticle h3{margin:0 0 10px;font-size:17px}#informationText{margin:0;white-space:pre-wrap;line-height:1.85;font-size:14px;overflow-wrap:anywhere}@media(max-width:550px){#informationDialog,#npcTalkDialog{padding:18px;max-height:calc(100dvh - 28px)}#informationDialog h2{font-size:21px}#informationTopics{gap:6px;margin:14px 0}#informationTopics button{font-size:12px;padding:9px 4px}#informationArticle{padding:13px}#informationText{font-size:13px}#npcTalkLine{font-size:16px}.contextAction #actionText{overflow-wrap:anywhere}}

#rangeDialog, #rangeResult { width:min(440px,calc(100vw - 24px)); box-sizing:border-box; }
#rangeDialog label { display:block; margin:16px 0 6px; font-weight:700; }
#rangeAmmo { width:100%; padding:10px; font-size:16px; }
#rangeStatus { color:#893d33; }
#rangeStart { min-height:44px; width:100%; }
#rangeHud { position:fixed; z-index:120; inset:0; pointer-events:none; color:#fff6df; }
#rangeHud[hidden] { display:none; }
#rangeReadout, #rangeFeedback { position:absolute; left:50%; transform:translateX(-50%); white-space:nowrap; border-radius:10px; padding:8px 12px; background:#172f29e8; }
#rangeReadout { top:max(12px,env(safe-area-inset-top)); }
#rangeFeedback { top:calc(50% + 59px); }
#rangeReticle { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); font:700 25px/1 monospace; text-shadow:0 0 4px #111,0 0 2px #111; }
#rangeHud button { position:absolute; bottom:max(16px,env(safe-area-inset-bottom)); pointer-events:auto; min-height:48px; padding:10px 18px; border-radius:12px; }
#rangeFire { right:16px; background:#e8c377; color:#172f29; font-weight:800; }
#rangeQuit { left:16px; background:#243f37; color:#fff6df; }
.shooting-active #world { touch-action:none; }
.shooting-active :is(header,footer,.contextAction,.view,#joystick,#manageBox,#chatToggle,#workoutRecords,#invitePanel,#emoteWheel,.status,#chatPanel,#duelCountdown,#timingResult) { display:none!important; }

/* Dedicated slots for chat, utilities and the pet action. */
#petActions{max-width:100%}
#petActions button{max-width:100%;padding:8px 12px;border-radius:9px;background:#315643;color:#fff2d3;border:1px solid #e8c884;font-size:12px;font-weight:750;white-space:normal}
body.sled-active>#manageBox{display:none!important}
@media(max-width:680px){
  body>#manageBox{top:calc(var(--edge-top,12px) + 120px);right:var(--edge-right,12px)}
  body.chat-open>#manageBox,body:has(#invitePanel:not([hidden]))>#manageBox{visibility:hidden}
}
@media(max-width:900px),(pointer:coarse){
  body.sled-active #chatToggle{top:auto;right:auto;left:var(--edge-left,12px);bottom:calc(var(--workout-dock) + 10px)}
  body.sled-active #chatPanel{left:var(--edge-left,12px);bottom:calc(var(--workout-dock) + 51px);max-height:calc(100dvh - var(--workout-dock) - 105px)}
}
@media(max-height:500px) and (max-width:900px){
  body.sled-active #chatPanel{max-height:calc(100dvh - var(--workout-dock) - 65px)}
}

#hyroxGift{position:fixed;z-index:120;left:50%;bottom:max(110px,18vh);transform:translateX(-50%);background:#22392e;color:#fff1ce;padding:12px 18px;border-radius:12px;font-weight:750;white-space:nowrap;pointer-events:none}

#bunkerKeypad,#bunkerNote{width:min(340px,90vw)}
#bunkerKeys{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
#bunkerKeys button{min-height:44px;width:100%}
#bunkerDigits{display:block;text-align:center;padding:10px;border-radius:8px;background:#23352c;color:#f7eed4;font-size:1.4rem;font-variant-numeric:tabular-nums}
#bunkerError{min-height:1.3em;color:#a4372b;margin-bottom:0}
.in-bunker :is(#speechLayer,#burpee,#challengeNearby,#boardNearby,#invitePanel){display:none!important}

#itemDialog{max-width:min(92vw,420px)}
#itemSlots section{margin:14px 0 4px}
#itemSlots h3{margin:0 0 6px;font-size:14px;letter-spacing:.02em}
#itemSlots .itemRow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-radius:12px;background:rgba(41,71,60,.08);margin-bottom:6px}
#itemSlots .itemRow.worn{outline:2px solid #29473c}
#itemSlots .itemRow.locked{opacity:.55}
#itemSlots .itemRow small{display:block;margin-top:2px;opacity:.75;font-size:12px}
#itemSlots .itemRow button{white-space:nowrap;min-width:64px}
#itemSlots .itemNote{display:block;opacity:.65;font-size:12px;margin-top:2px}

.accountBox{margin:10px 0 14px;padding:12px;border-radius:14px;background:rgba(41,71,60,.08)}
.accountBox p{margin:0 0 10px;font-size:13px;line-height:1.45}
.kakaoButton{display:block;width:100%;padding:12px;border:0;border-radius:12px;background:#FEE500;color:#191919;font-weight:800;cursor:pointer}
.accountLogout{display:block;width:100%;padding:9px;border-radius:12px;cursor:pointer}

/* v32: 간단한 입장 화면 */
#welcome{position:fixed}
#closeWelcome{position:absolute;top:16px;right:16px;font-size:12px}
.welcomeServer{margin:0 0 14px!important;font-weight:700;color:#315b41}
.welcomeCharacter{display:flex;gap:8px;align-items:stretch}
.welcomeCharacter .genderChoices{flex:2}
.welcomeCharacter .genderChoices button{min-height:44px}
.welcomeColor{flex:1;min-width:0}
.welcomeMain{display:block;width:100%;min-height:54px;margin-top:14px;font-size:16px;font-weight:800;border-radius:14px;cursor:pointer}
#offlineRejoin{background:#315b41;color:#fff7e4;border:0}
.welcomeAccount{margin:8px 0 0!important;font-size:12px!important;text-align:center}
.welcomeError{min-height:1em;margin:8px 0 0!important;font-size:12px!important;text-align:center;color:#a5452f}
.welcomeShare{display:block;width:100%;min-height:48px;margin-top:10px;border-radius:14px;background:#e8b956;color:#183d31;border:2px solid #d9a63c;font-weight:800;font-size:14px;cursor:pointer}
.welcomeLinks{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 6px;margin-top:14px;font-size:12px;color:#7a8a72}
.linkButton{background:transparent!important;border:0!important;padding:4px 2px!important;min-height:0!important;width:auto!important;margin:0!important;font-size:12px;color:#5d6f58;text-decoration:underline;cursor:pointer;box-shadow:none!important}
#offlineStay{display:block;margin:10px auto 0!important}
#createServerForm{margin-top:10px}
#offlineNotice{width:min(380px,calc(100vw - 28px));text-align:center}

/* v33: 퀘스트 · 연승 */
#questList{position:fixed;z-index:34;display:flex;flex-direction:column;gap:3px;pointer-events:none;max-width:260px}
#questList div{font-size:13px;font-weight:900;color:#ffd84a;letter-spacing:-.2px;text-shadow:-1.5px -1.5px 0 #000,1.5px -1.5px 0 #000,-1.5px 1.5px 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,0 -1.5px 0 #000,1.5px 0 0 #000,-1.5px 0 0 #000}
#streakBanner{position:fixed;z-index:140;left:50%;top:34%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;font-weight:900;color:#ffd84a;font-size:clamp(28px,6vw,54px);line-height:1.15;white-space:pre-line;width:min(92vw,820px);text-shadow:-3px -3px 0 #000,3px -3px 0 #000,-3px 3px 0 #000,3px 3px 0 #000,0 3px 0 #000,0 -3px 0 #000,3px 0 0 #000,-3px 0 0 #000,0 8px 22px #0008;animation:streakPop .45s cubic-bezier(.2,1.6,.4,1)}
#streakBanner small{display:block;margin-top:10px;font-size:.5em;color:#fff}
@keyframes streakPop{from{transform:translate(-50%,-50%) scale(.75);opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:1}}

#playersDialog{width:min(400px,calc(100vw - 28px))}
#playersList{list-style:none;margin:6px 0 4px;padding:0;max-height:52dvh;overflow:auto}
#playersList li{display:flex;align-items:center;gap:10px;padding:9px 6px;border-bottom:1px solid #e0dacb;font-size:14px}
#playersList li b{flex:1;color:#294735}
#playersList li .tierTag{font-size:11px;font-weight:900;padding:3px 9px;border-radius:999px;background:#101a15;white-space:nowrap}
#playersList li small{font-size:11px;color:#7a8a72;white-space:nowrap}
#playersList li.me b::after{content:' (나)';font-weight:600;color:#7a8a72}
#playersChallenge{background:#315b41;color:#fff7e4;border:0}

/* v35: 채팅 최근 3줄 */
#chatPreview{position:fixed;z-index:84;left:var(--edge-left,12px);bottom:calc(var(--safe) + 142px);width:min(300px,calc(100vw - 120px));display:flex;flex-direction:column;gap:2px;pointer-events:auto;cursor:pointer;font-size:12px;line-height:1.4;color:#fff;text-shadow:0 1px 2px #000,0 0 6px #000b;overflow-wrap:anywhere}
#chatPreview div{padding:2px 8px;border-radius:8px;background:#0c1a1342;max-width:max-content}
#chatPreview b{color:#c5f0a6;font-weight:800}
#chatPreview div:first-child{opacity:.72}
body.chat-open #chatPreview,.duel-active #chatPreview,.race-active #chatPreview,.shooting-active #chatPreview,body.sled-active #chatPreview,#chatToggle[hidden]~#chatPreview{display:none!important}
/* 아이폰 사파리 드래그·선택 방지 */
html,body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
input,textarea,select,[contenteditable]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
canvas,img{-webkit-user-drag:none;touch-action:none}

/* v35: 아이템 획득 · 새 퀘스트 알림 */
#itemNotice,#questNotice{position:fixed;z-index:150;left:50%;top:52%;transform:translate(-50%,-50%);width:min(88vw,520px);padding:20px 22px 16px;border-radius:20px;text-align:center;background:linear-gradient(160deg,#21382ef2,#122019f2);border:3px solid #ffd84a;box-shadow:0 18px 50px #000a,0 0 0 6px #ffd84a33;color:#fff6dc;cursor:pointer;animation:noticePop .35s cubic-bezier(.2,1.5,.4,1)}
#questNotice{top:30%;border-color:#7fd3ff;box-shadow:0 18px 50px #000a,0 0 0 6px #7fd3ff33}
#itemNotice b,#questNotice b{display:block;font-size:15px;letter-spacing:.5px;color:#ffd84a;margin-bottom:6px}
#questNotice b{color:#9fe0ff}
#itemNotice p,#questNotice p{margin:0;font-size:clamp(17px,4.4vw,23px);font-weight:900;line-height:1.35;word-break:keep-all}
#itemNotice small{display:block;margin-top:10px;font-size:12px;opacity:.75}
@keyframes noticePop{from{transform:translate(-50%,-50%) scale(.8)}to{transform:translate(-50%,-50%) scale(1)}}

/* v35: 타이밍 손맛 */
.hitYellow{animation:gaugeShakeS .28s ease-out}
.hitRed{animation:gaugeShakeL .42s ease-out;box-shadow:0 0 0 3px #ff4d4d,0 0 24px #ff3b3baa!important}
@keyframes gaugeShakeS{0%,100%{translate:0 0}30%{translate:-2px 0}60%{translate:2px 0}}
@keyframes gaugeShakeL{0%,100%{translate:0 0;scale:1}15%{translate:-6px 1px;scale:1.06}30%{translate:6px -1px}45%{translate:-4px 0}60%{translate:4px 0}80%{translate:-1px 0}}
.hitBurst{position:fixed;z-index:160;width:0;height:0;pointer-events:none}
.hitBurst b{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:#ffe36b;box-shadow:0 0 8px #ffd84a;animation:burstFly .55s cubic-bezier(.15,.8,.3,1) forwards}
.hitBurst.red b{width:11px;height:11px;left:-5px;top:-5px;background:#ff5a3c;box-shadow:0 0 12px #ff3b2f,0 0 4px #fff}
.hitBurst.red b:nth-child(odd){background:#ffe36b;box-shadow:0 0 10px #ffd84a}
.hitBurst .ring{position:absolute;left:-14px;top:-14px;width:28px;height:28px;border-radius:50%;border:4px solid #ff6b4a;animation:burstRing .5s ease-out forwards}
@keyframes burstFly{to{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
@keyframes burstRing{from{transform:scale(.4);opacity:1}to{transform:scale(3.2);opacity:0}}

/* v35: 라커룸 옷 선택 */
.lockerGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;margin-bottom:6px}
.lockerGrid label{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:700}
.lockerGrid .wideField{grid-column:1/-1}
.lockerGrid select{width:100%;min-height:32px}

/* v35: 상점 · 공지 */
#shopDialog{width:min(760px,calc(100vw - 20px));max-height:calc(100dvh - 24px);overflow:auto}
#shopWallet{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;border-radius:12px;background:#203a2e;color:#fff4d6;font-weight:800;margin:6px 0 12px}
#shopWallet small{font-weight:600;opacity:.75}
#shopGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.shopCard{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:14px;background:#fff9ea;border:1px solid #e3d9c1;text-align:center}
.shopCard .thumb{aspect-ratio:1;border-radius:10px;background:radial-gradient(circle at 50% 40%,#ffffff,#e9e1cc);display:grid;place-items:center;overflow:hidden}
.shopCard .thumb img{width:100%;height:100%;object-fit:contain}
.shopCard b{font-size:14px;color:#294735}
.shopCard small{font-size:11px;color:#7a8a72;min-height:2.6em;line-height:1.3}
.shopCard .price{font-weight:900;color:#b0412f}
.shopCard button{min-height:36px;border-radius:10px;font-weight:800;cursor:pointer;background:#315b41;color:#fff7e4;border:0}
.shopCard.owned button{background:#d8d2c2;color:#5d6658}
.shopCard.owned{opacity:.85}
#noticeDialog{width:min(440px,calc(100vw - 28px));text-align:center}
#noticeText{font-size:16px;font-weight:700;white-space:pre-line;color:#294735}
#noticeClose{background:#315b41;color:#fff7e4;border:0}

/* v38: 아이템 창 카드 · 닫기 버튼 고정 · 공지 띠 · 상점 */
dialog :is([data-close],.dialogClose,#raceClose,#closeConnect,#closeWelcome,#closePlayers,#closeBoard,#guestPhotoClose,#closeAdvertisement){position:sticky!important;top:0;float:right;z-index:8;margin:0 0 6px 10px;box-shadow:0 3px 10px #0002}
#itemDialog{width:min(760px,calc(100vw - 20px));max-height:calc(100dvh - 24px);overflow:auto}
.itemTopBar{display:flex;justify-content:flex-end;margin:6px 0 4px}
.itemTopBar button{min-height:34px;padding:6px 14px;border-radius:10px;border:1px solid #d8cfb9;background:#fff8e8;font-weight:800;cursor:pointer}
.itemGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:7px}
.itemCard{display:flex;flex-direction:column;gap:3px;padding:6px;border-radius:13px;background:#fff9ea;border:1px solid #e3d9c1;text-align:center}
.itemCard.worn{border:2px solid #315b41;background:#eef6ea}
.itemCard.locked{opacity:.6}
.itemCard.locked .itemThumb img{filter:grayscale(1) brightness(.85)}
.itemThumb{aspect-ratio:1.15;border-radius:10px;background:radial-gradient(circle at 50% 40%,#fff,#e9e1cc);display:grid;place-items:center;font-size:42px;overflow:hidden}
.itemThumb img{width:100%;height:100%;object-fit:contain}
.itemCard b{font-size:13px;color:#294735}
.itemCard small{font-size:11px;color:#7a8a72;min-height:2.4em;line-height:1.25}
.itemCard button{min-height:32px;border-radius:9px;font-weight:800;cursor:pointer;border:0;background:#315b41;color:#fff7e4}
.itemCard.worn button{background:#d6cfbd;color:#3b4a3f}
.itemCard button:disabled{background:#e4ded0;color:#9a9a8e}
#shopError.ok{color:#2f6b3f;font-weight:800}
.noticeBar{position:fixed;left:0;right:0;z-index:95;overflow:hidden;white-space:nowrap;background:linear-gradient(90deg,#16261fee,#22392dee);color:#ffe8a3;font-weight:800;font-size:13px;padding:7px 0;pointer-events:none;border-block:1px solid #ffd84a55}
.noticeBar.top{top:calc(env(safe-area-inset-top) + 0px)}
.noticeBar.bottom{bottom:calc(env(safe-area-inset-bottom) + 0px)}
.noticeBar span{display:inline-block;padding-left:100%;animation:noticeMarquee 22s linear infinite}
@keyframes noticeMarquee{from{transform:translateX(0)}to{transform:translateX(-100%)}}
body.noticeTop :is(header,.status,.view,#manageBox,#workoutRecords){translate:0 26px}
body.noticeTop .noticeBar.top{padding:5px 0;font-size:12px}

#managerHost,#managerHost iframe{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}

/* v40 */
#adminWearToggle{position:fixed;z-index:41;top:calc(max(12px,env(safe-area-inset-top)) + 34px);right:10px;padding:5px 9px;border-radius:9px;border:1px solid #e0d6bd80;background:#183025d9;color:#ffe8a3;font-size:11px;font-weight:800;cursor:pointer}
body.noticeTop #adminWearToggle{translate:0 26px}
.speechBubble{background:#fff9edd0;backdrop-filter:blur(2px)}
.speechBubble::after{background:#fff9edd0}
.speechBubble.mine{background:#fff3c8d6;border-color:#c49a3c}
.speechBubble.mine::after{background:#fff3c8d6;border-color:#c49a3c}
.speechBubble.npc{background:#1d3b30cc;color:#f6efdc;border-color:#9fc4a6aa}
.speechBubble.npc::before{color:#ffd877}
.speechBubble.npc::after{background:#1d3b30cc;border-color:#9fc4a6aa}
.noticeBar span{animation-iteration-count:1!important}
#noticeText{white-space:pre-line}

/* v46: DJ 신청곡 · 아이템 미리보기 */
#djNotice{width:min(420px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto}
#djTracks{display:grid;gap:7px;margin:10px 0}
.djTrack{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;text-align:left;padding:10px 12px;border-radius:12px;border:1px solid #d8cfb9;background:#fff9ea;cursor:pointer;font:inherit}
.djTrack span{font-size:16px}.djTrack b{color:#294735}.djTrack small{font-size:11px;color:#2f6b3f;font-weight:800}
.djTrack.playing{background:#1d3b30;border-color:#1d3b30}.djTrack.playing b{color:#ffe8a3}.djTrack.playing small{color:#9fe0b0}
#djError{color:#c0392b;font-size:12px;min-height:1em}
#itemDialog{width:min(980px,calc(100vw - 20px))}
.itemLayout{display:grid;grid-template-columns:240px 1fr;gap:14px;align-items:start}
#itemPreview{position:sticky;top:44px;display:grid;gap:4px;justify-items:center;padding:8px;border-radius:14px;background:radial-gradient(circle at 50% 35%,#fffdf6,#e8dfc8)}
#itemPreviewCanvas{width:100%;height:340px;touch-action:none;cursor:grab}
#itemPreviewCanvas:active{cursor:grabbing}
#itemPreview small{font-size:11px;color:#7a8a72}
@media (max-width:640px){.itemLayout{grid-template-columns:1fr}#itemPreview{position:relative;top:0}#itemPreviewCanvas{height:220px}}
#itemDialog{max-width:calc(100vw - 20px)!important;width:min(980px,calc(100vw - 20px))!important}

/* v47: 사진 촬영 */
body.photoMode>:not(#world):not(#photoUI):not(script){visibility:hidden!important}
body.photoMode #world>:not(canvas){visibility:hidden!important}
#photoUI{position:fixed;inset:0;z-index:200;color:#fff;font-family:inherit;-webkit-user-select:none;user-select:none}
#photoTouch{position:absolute;inset:0;touch-action:none;cursor:grab}
#photoGridLines{position:absolute;inset:0;pointer-events:none}
#photoGridLines i{position:absolute;background:#ffffff55}
#photoGridLines i:nth-child(1){left:33.33%;top:0;bottom:0;width:1px}#photoGridLines i:nth-child(2){left:66.66%;top:0;bottom:0;width:1px}
#photoGridLines i:nth-child(3){top:33.33%;left:0;right:0;height:1px}#photoGridLines i:nth-child(4){top:66.66%;left:0;right:0;height:1px}
.photoFrame b{position:absolute;width:26px;height:26px;border:3px solid #ffffffcc;pointer-events:none}
.photoFrame b:nth-child(1){top:calc(env(safe-area-inset-top) + 74px);left:18px;border-right:0;border-bottom:0}
.photoFrame b:nth-child(2){top:calc(env(safe-area-inset-top) + 74px);right:18px;border-left:0;border-bottom:0}
.photoFrame b:nth-child(3){bottom:calc(env(safe-area-inset-bottom) + 128px);left:18px;border-right:0;border-top:0}
.photoFrame b:nth-child(4){bottom:calc(env(safe-area-inset-bottom) + 128px);right:18px;border-left:0;border-top:0}
.photoTop{position:absolute;left:0;right:0;top:0;padding:calc(env(safe-area-inset-top) + 12px) 14px 12px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#000a,#0000);pointer-events:none}
.photoTop>*{pointer-events:auto}
#photoClose,#photoGrid{width:42px;height:42px;border-radius:50%;border:0;background:#0006;color:#fff;font-size:18px;font-weight:800;cursor:pointer}
.photoModes{display:flex;gap:4px;padding:4px;border-radius:99px;background:#0007}
.photoModes button{border:0;border-radius:99px;padding:8px 16px;background:transparent;color:#fffc;font-weight:800;font-size:14px;cursor:pointer}
.photoModes button.on{background:#ffd84a;color:#1b1b1b}
#photoHint{position:absolute;left:50%;top:calc(env(safe-area-inset-top) + 70px);transform:translateX(-50%);margin:0;padding:5px 12px;border-radius:99px;background:#0005;font-size:12px;pointer-events:none;white-space:nowrap}
.photoBottom{position:absolute;left:0;right:0;bottom:0;padding:18px 28px calc(env(safe-area-inset-bottom) + 22px);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#0000,#000a);pointer-events:none}
.photoBottom>*{pointer-events:auto}
#photoShutter{width:78px;height:78px;border-radius:50%;border:5px solid #fff;background:transparent;padding:5px;cursor:pointer}
#photoShutter span{display:block;width:100%;height:100%;border-radius:50%;background:#fff;transition:transform .1s}
#photoShutter:active span{transform:scale(.88)}
#photoThumbWrap{width:52px;height:52px;border-radius:12px;border:2px solid #fff;background:#0005;overflow:hidden;padding:0;cursor:pointer}
#photoThumb{width:100%;height:100%;object-fit:cover}
#photoFlip{width:52px;height:52px;border-radius:50%;border:0;background:#0006;color:#fff;font-size:26px;cursor:pointer}
#photoFlash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
#photoFlash.go{animation:photoFlash .35s ease-out}
@keyframes photoFlash{0%{opacity:.9}100%{opacity:0}}
#photoResult{position:absolute;inset:0;background:#000d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:calc(env(safe-area-inset-top) + 20px) 18px calc(env(safe-area-inset-bottom) + 20px)}
#photoImg{max-width:100%;max-height:calc(100% - 110px);border-radius:14px;box-shadow:0 10px 40px #000a;object-fit:contain;-webkit-touch-callout:default;-webkit-user-select:auto;user-select:auto}
.photoActions{display:flex;gap:10px}
.photoActions button{min-width:120px;padding:12px 18px;border-radius:14px;border:0;font-weight:900;font-size:15px;cursor:pointer}
#photoRetake{background:#ffffff26;color:#fff}#photoSave{background:#ffd84a;color:#1b1b1b}
#photoSaveHint{color:#fffc;font-size:12px;text-align:center;min-height:1em}
@media (orientation:landscape) and (max-height:600px){
 .photoBottom{left:auto;top:0;bottom:0;right:0;width:auto;flex-direction:column;justify-content:center;gap:26px;padding:20px calc(env(safe-area-inset-right) + 18px) 20px 18px;background:linear-gradient(90deg,#0000,#000a)}
 .photoFrame b:nth-child(3),.photoFrame b:nth-child(4){bottom:24px}.photoFrame b:nth-child(2),.photoFrame b:nth-child(4){right:118px}
 .photoFrame b:nth-child(1),.photoFrame b:nth-child(2){top:70px}
}

#photoZoomWrap{position:absolute;right:14px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 6px;border-radius:99px;background:#0006;font-size:10px;font-weight:800}
#photoZoomWrap input{writing-mode:vertical-lr;direction:rtl;width:28px;height:180px;accent-color:#ffd84a}
#photoResult{justify-content:flex-start;overflow:auto}
#photoImg{max-height:calc(100% - 230px);flex-shrink:1;min-height:0}
.photoEdit{display:grid;gap:8px;width:min(560px,100%)}
.photoEdit>div{display:grid;gap:5px}.photoEdit b{font-size:12px;color:#ffd84a}
.photoChips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.photoChips button{flex:none;padding:7px 13px;border-radius:99px;border:1px solid #fff5;background:#ffffff1a;color:#fff;font-weight:800;font-size:13px;cursor:pointer}
.photoChips button.on{background:#fff;color:#111;border-color:#fff}
@media (orientation:landscape) and (max-height:600px){#photoResult{flex-direction:row;flex-wrap:wrap;align-content:center;justify-content:center}#photoImg{max-height:calc(100% - 20px);max-width:58%}.photoEdit{width:34%}#photoZoomWrap{right:120px}}
#photoResult{background:#0b0b0c;z-index:5}

/* v50: 시작 로고 화면 */
#splash{position:fixed;inset:0;z-index:9999;background:#000;display:grid;place-items:center;transition:opacity .45s ease}
#splash.out{opacity:0;pointer-events:none}
.splashInner{display:grid;justify-items:center;gap:clamp(14px,3vh,26px)}
.splashLogo{width:min(62vw,46vh,420px);height:auto;transform:scale(0);animation:splashPop 2s cubic-bezier(.2,.9,.3,1) both}
@keyframes splashPop{0%{transform:scale(0) rotate(-8deg);opacity:0}18%{transform:scale(1.22) rotate(3deg);opacity:1}32%{transform:scale(.86) rotate(-2deg)}46%{transform:scale(1.08) rotate(1deg)}60%{transform:scale(.96)}74%{transform:scale(1.02)}88%,100%{transform:scale(1) rotate(0)}}
.splashInsta{display:flex;align-items:center;gap:8px;color:#fff;font:800 clamp(15px,2.2vh,20px)/1 system-ui,-apple-system,"Apple SD Gothic Neo",sans-serif;letter-spacing:.02em;opacity:0;animation:splashFade .5s ease .55s both}
.splashInsta svg{width:1.35em;height:1.35em}
@keyframes splashFade{from{opacity:0;transform:translateY(8px)}to{opacity:.92;transform:none}}
#photoButton{width:auto!important;padding:0 12px!important;font-size:13px;font-weight:800;white-space:nowrap}
#photoButton{background:#ffd84a!important;color:#1b1b1b!important;border-color:#ffd84a!important;margin-left:6px}

#splashPoster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s ease}
#splash.poster #splashPoster{opacity:1}
#splash.poster .splashInner{opacity:0;transition:opacity .35s ease}
.splashLoading{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 28px);transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:9px 16px;border-radius:99px;background:#000a;color:#fff;font:800 13px/1 system-ui,-apple-system,"Apple SD Gothic Neo",sans-serif;opacity:0;transition:opacity .4s ease .2s;z-index:2}
#splash.poster .splashLoading{opacity:1}
.splashLoading i{width:14px;height:14px;border-radius:50%;border:2.5px solid #ffffff55;border-top-color:#ffd84a;animation:splashSpin .8s linear infinite}
@keyframes splashSpin{to{transform:rotate(360deg)}}

/* v53 */
#chatPreview{transition:opacity .8s ease}
#chatPreview.faded{opacity:0;pointer-events:none}
#fullscreenButton{margin-left:6px;padding:0 12px;font-size:12px;font-weight:800;white-space:nowrap;min-height:34px;border-radius:10px;border:1px solid var(--line);background:#19392db0;color:var(--ink);cursor:pointer}
.tipSteps{display:grid;gap:8px;padding-left:20px;margin:10px 0 4px}.tipSteps li{line-height:1.5}
#homeScreenTip{width:min(380px,calc(100vw - 24px))}

.speechBubble:not(.npc)::before{display:table;color:#1c2b24;background:var(--author,#e8d7b2);padding:0 6px;border-radius:6px;margin-bottom:3px}.speechBubble:not(.npc)[data-author='']::before{display:none}
.brand.textOnly{background:none;border:0;box-shadow:none;padding:2px 4px}.brand.textOnly b{font-size:13px;letter-spacing:2.5px;color:#fff;opacity:.55;text-shadow:0 1px 3px #0006;font-weight:800}
.hitBurst.strong b{width:9px;height:9px}.hitBurst.strong .ring{scale:1.7}.hitStrong{animation:gaugeShakeL .42s!important;filter:brightness(1.35)}body.ergFlash::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:60;background:radial-gradient(circle,#ffd84a00 40%,#ffd84a66);animation:ergFlash .6s forwards}@keyframes ergFlash{from{opacity:1}to{opacity:0}}

#dailyButton{position:relative}#dailyDot{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:50%;background:#ff5a4a;box-shadow:0 0 0 2px #fff}
#dailyDialog,#updateDialog{width:min(420px,92vw);max-height:86vh;overflow:auto;border:0;border-radius:18px;padding:20px 18px 16px;background:#fffaf0;color:#213a30;box-shadow:0 18px 50px #0006}
#dailyDialog::backdrop,#updateDialog::backdrop{background:#0b18128c;backdrop-filter:blur(2px)}
#dailyDialog h2,#updateDialog h2{margin:2px 0 10px;font-size:20px}
.dailyX{position:absolute;right:12px;top:10px;width:32px;height:32px;border-radius:50%;border:0;background:#efe4cc;font-size:20px;line-height:1;cursor:pointer}
.dailySec{background:#fff;border:1px solid #e8dcc2;border-radius:14px;padding:12px;margin:10px 0}
.dailySec h3{margin:0 0 4px;font-size:15px}.dailySub{margin:0 0 8px;font-size:12px;color:#5d6d63}.dailySub b{color:#c5502f}
.attWeek{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin:6px 0}
.attDay{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 0;border-radius:10px;background:#f2ecdf;border:2px solid transparent}
.attDay b{font-size:12px}.attDay span{height:20px;width:20px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:900;color:#fff}
.attDay.on span{background:#3f8f5a}.attDay.today{border-color:#e3a33a}.attDay.on.today span{background:#e07a3f}
.questRow{padding:9px 0;border-top:1px dashed #e4d8be}.questRow:first-child{border-top:0}
.questTop{display:flex;align-items:center;gap:6px}.questTop b{font-size:13px}
.questTag{flex-shrink:0;font-size:10px;font-weight:800;padding:2px 6px;border-radius:6px;background:#e5efe8;color:#2f6a4a}.questTag.streak{background:#fde5dc;color:#b6452a}.questTag.online{background:#e2e9fb;color:#3654a8}
.questBar{height:9px;margin:7px 0 3px;border-radius:6px;background:#efe7d6;overflow:hidden}.questBar i{display:block;height:100%;background:linear-gradient(90deg,#e3a33a,#e07a3f);border-radius:6px;transition:width .4s}
.questRow.done .questBar i{background:#3f8f5a}.questAmt{font-size:11px;color:#6b7a70;font-weight:700}.questRow.done .questAmt{color:#3f8f5a}
.questAll{margin:8px 0 0;padding:8px;border-radius:10px;background:#fff1c9;font-weight:800;font-size:13px;text-align:center}
.dailyFoot{font-size:11px;color:#7d8a80;text-align:center;margin:4px 0 0}
#updateList{margin:6px 0 12px;padding-left:20px;font-size:14px;line-height:1.6}#updateList li{margin:3px 0}
.updateHide{display:flex;align-items:center;gap:6px;font-size:13px;color:#5d6d63;margin-bottom:10px;cursor:pointer}
#dailyToasts{position:fixed;top:calc(env(safe-area-inset-top) + 64px);left:50%;translate:-50% 0;z-index:150;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;width:min(340px,86vw)}
.dailyToast{display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 16px;border-radius:14px;background:#14261ee8;color:#fff;box-shadow:0 6px 20px #0005;animation:dToastIn .35s cubic-bezier(.2,1.4,.4,1);text-align:center;transition:opacity .5s,translate .5s}
.dailyToast b{font-size:14px}.dailyToast span{font-size:12px;opacity:.85}
.dailyToast.att{background:linear-gradient(135deg,#2f7a52f0,#1f5a3ef0)}.dailyToast.done{background:linear-gradient(135deg,#e07a3ff0,#c5502ff0)}.dailyToast.all{background:linear-gradient(135deg,#e3a33af5,#c97a1ff5);font-size:16px}.dailyToast.prog{padding:6px 12px;background:#14261ec0}.dailyToast.prog b{font-size:12px}.dailyToast.reset{background:#4a3b3be8}
.dailyToast.out{opacity:0;translate:0 -10px}
@keyframes dToastIn{from{scale:.6;opacity:0}to{scale:1;opacity:1}}
.updateHide input[type=checkbox]{width:18px!important;height:18px!important;min-height:0!important;flex:0 0 18px;margin:0!important;padding:0!important;appearance:auto;accent-color:#3f8f5a}

#questList div.qDone{color:#9df0b8}
#questList div.qFlash{animation:qFlash .5s ease-in-out 5;color:#fff}
@keyframes qFlash{0%,100%{scale:1;filter:none}50%{scale:1.12;filter:drop-shadow(0 0 6px #ffd84a)}}
.hudToggle{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;margin:6px 2px;cursor:pointer}
.hudToggle input{width:18px!important;height:18px!important;min-height:0!important;margin:0!important;padding:0!important;flex:0 0 18px;appearance:auto;accent-color:#3f8f5a}
#questBanner{position:fixed;z-index:155;left:50%;top:34%;translate:-50% -50%;display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;text-align:center;width:min(92vw,620px);animation:qbIn .55s cubic-bezier(.2,1.6,.4,1);transition:opacity .5s,translate .5s}
#questBanner i{font-style:normal;font-size:clamp(46px,9vw,76px);filter:drop-shadow(0 6px 10px #0007);animation:qbIcon 1s ease-in-out infinite}
#questBanner b{font-weight:900;color:#ffd84a;font-size:clamp(28px,6vw,50px);line-height:1.15;text-shadow:-3px -3px 0 #000,3px -3px 0 #000,-3px 3px 0 #000,3px 3px 0 #000,0 3px 0 #000,0 -3px 0 #000,3px 0 0 #000,-3px 0 0 #000,0 8px 22px #0008}
#questBanner small{font-weight:800;color:#fff;font-size:clamp(14px,2.6vw,20px);padding:6px 14px;border-radius:12px;background:#000a;max-width:100%}
#questBanner.att b{color:#9df0b8}#questBanner.all b{color:#ffcf3a;font-size:clamp(32px,7vw,58px)}#questBanner.fresh b{color:#8fd3ff}
#questBanner em{position:absolute;left:50%;top:30%;width:10px;height:10px;border-radius:2px;animation:qbConf 1.1s cubic-bezier(.15,.8,.3,1) forwards}
#questBanner.out{opacity:0;translate:-50% -62%}
@keyframes qbIn{from{scale:.5;opacity:0}to{scale:1;opacity:1}}
@keyframes qbIcon{0%,100%{rotate:-8deg}50%{rotate:8deg;scale:1.1}}
@keyframes qbConf{from{transform:rotate(var(--a)) translateY(0);opacity:1}to{transform:rotate(var(--a)) translateY(calc(var(--d) * -1)) rotate(540deg);opacity:0}}
.dailyToast.prog{padding:9px 18px;background:linear-gradient(135deg,#1f5a3ef2,#14261ef2);border:2px solid #ffd84a}.dailyToast.prog b{font-size:14px;color:#ffd84a}.dailyToast.prog span{font-size:15px;font-weight:900;opacity:1}
#verdict{position:fixed;inset:0;z-index:170;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:radial-gradient(circle at 50% 40%,#0d1f17cc,#000000e0);color:#fff;text-align:center;padding:20px;animation:vIn .4s ease-out;cursor:pointer;transition:opacity .35s}
#verdict.out{opacity:0}
#verdict>i{font-style:normal;font-size:clamp(64px,13vw,110px);animation:vIcon .7s cubic-bezier(.2,1.8,.4,1)}
#verdict>b{font-weight:900;font-size:clamp(56px,14vw,120px);line-height:1;letter-spacing:2px;color:#ffd84a;text-shadow:0 0 30px #ffd84a88,-4px -4px 0 #000,4px -4px 0 #000,-4px 4px 0 #000,4px 4px 0 #000;animation:vPop .6s cubic-bezier(.2,1.7,.4,1)}
#verdict.lose>b{color:#ff8a7a;text-shadow:0 0 30px #ff5a4a66,-4px -4px 0 #000,4px -4px 0 #000,-4px 4px 0 #000,4px 4px 0 #000}#verdict.draw>b{color:#8fd3ff}
#verdict .vsBoard{display:flex;align-items:center;gap:clamp(14px,4vw,34px);margin-top:6px}
#verdict .vsBoard span{display:flex;flex-direction:column;align-items:center;min-width:110px;padding:10px 16px;border-radius:16px;background:#ffffff14;border:2px solid #ffffff30}
#verdict .vsBoard span.me{border-color:#ffd84a}#verdict.lose .vsBoard span.me{border-color:#ff8a7a}
#verdict .vsBoard small{font-size:14px;font-weight:700;opacity:.85;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#verdict .vsBoard strong{font-size:clamp(30px,7vw,52px);font-weight:900}
#verdict .vsBoard em{font-style:normal;font-weight:900;font-size:22px;opacity:.7}
#verdict>p{margin:6px 0 0;font-size:clamp(18px,4.2vw,28px);font-weight:900;color:#ffe9a8}#verdict.lose>p{color:#ffd0c8}
#verdict>small{font-size:14px;opacity:.75}#verdict>small.tap{position:absolute;bottom:max(20px,env(safe-area-inset-bottom));font-size:12px;opacity:.5}
#verdict em.conf{position:absolute;left:50%;top:38%;width:12px;height:12px;border-radius:2px;animation:qbConf 1.4s cubic-bezier(.15,.8,.3,1) forwards}
@keyframes vIn{from{opacity:0}to{opacity:1}}@keyframes vPop{from{scale:.3;opacity:0}to{scale:1;opacity:1}}@keyframes vIcon{from{scale:0;rotate:-30deg}to{scale:1;rotate:0}}
#duelResult[data-result=win] #duelWinner{color:#d18b12}#duelResult[data-result=lose] #duelWinner{color:#c5502f}

#shopDialog{width:min(900px,calc(100vw - 20px))}
.shopLayout{display:grid;grid-template-columns:230px 1fr;gap:14px;align-items:start}
#shopPreview{position:sticky;top:0;display:grid;gap:4px;justify-items:center;padding:10px 8px;border-radius:14px;background:radial-gradient(circle at 50% 35%,#fffdf6,#e8dfc8);z-index:1}
#shopPreview b{font-size:13px;text-align:center}#shopPreview small{font-size:11px;color:#7a8a72}
#shopPreviewCanvas{width:100%;height:320px;touch-action:none;cursor:grab}
#shopTryReset{font-size:12px;padding:5px 12px;border-radius:9px}
.shopCard .tryOn{background:#eef4ff;color:#3654a8;border:1px solid #c9d6f5;margin-bottom:5px}.shopCard .tryOn.on{background:#3654a8;color:#fff}
.shopCard.trying{outline:3px solid #3654a8;outline-offset:-2px}
@media(max-width:640px){.shopLayout{grid-template-columns:1fr}#shopPreview{position:sticky;top:-2px;grid-template-columns:110px 1fr;grid-template-rows:auto auto auto;justify-items:start;align-items:center;column-gap:10px;background:#f4ecd9;box-shadow:0 4px 10px #0002}#shopPreviewCanvas{grid-row:1/4;width:110px;height:150px}#shopPreview b{text-align:left}}
#pullChoice{display:flex;gap:5px;padding:5px;border:1px solid var(--line);border-radius:11px;background:var(--panel)}
#pullChoice button{padding:9px 8px;border-radius:7px;font-size:11px;background:transparent}
#pullChoice button[aria-pressed=true]{background:#e0c99d;color:#254a35}
#mupLayer{position:fixed;left:0;right:0;top:0;bottom:0;z-index:58;pointer-events:none}
.mupCircle{position:absolute;width:clamp(78px,15vmin,120px);height:clamp(78px,15vmin,120px);translate:-50% -50%;border:0;padding:0;background:none;pointer-events:auto;cursor:pointer;touch-action:none;animation:mupIn .18s ease-out}
.mupCircle .zone{position:absolute;inset:0;border-radius:50%;border:5px solid #ffffffee;background:radial-gradient(circle,#ffd84a33,#ffd84a10 70%);box-shadow:0 0 0 3px #0006,0 0 18px #ffd84a66}
.mupCircle .ring{position:absolute;inset:0;border-radius:50%;border:5px solid #ffd84a;scale:var(--s,2.6);box-shadow:0 0 12px #ffd84a,inset 0 0 10px #ffd84a88;opacity:.95}
.mupCircle b{position:absolute;inset:0;display:grid;place-items:center;font-weight:900;font-size:clamp(14px,2.8vmin,20px);color:#fff;letter-spacing:.5px;text-shadow:-2px -2px 0 #000,2px -2px 0 #000,-2px 2px 0 #000,2px 2px 0 #000}
.mupCircle.inZone .zone{border-color:#7fffb0;background:radial-gradient(circle,#7fffb055,#7fffb018 70%);box-shadow:0 0 0 3px #0006,0 0 26px #7fffb0}
.mupCircle.inZone .ring{border-color:#7fffb0;box-shadow:0 0 16px #7fffb0}
.mupCircle.trap .zone{border-color:#111;background:radial-gradient(circle,#000c,#000a 70%);box-shadow:0 0 0 3px #ff4a4a99,0 0 18px #000}
.mupCircle.trap .ring{border-color:#222;box-shadow:0 0 10px #000}
.mupCircle.trap b{color:#ff6b6b;font-size:clamp(26px,5vmin,40px)}
.mupCircle.hit{animation:mupHit .38s ease-out forwards;pointer-events:none}.mupCircle.hit .zone{border-color:#7fffb0;background:#7fffb066}
.mupCircle.fail{animation:mupFail .3s ease-out forwards;pointer-events:none}.mupCircle.fail .zone{border-color:#ff4a4a}
.mupCircle.gone{animation:mupGone .25s ease-out forwards;pointer-events:none}
@keyframes mupIn{from{scale:.4;opacity:0}to{scale:1;opacity:1}}
@keyframes mupHit{to{scale:1.6;opacity:0}}@keyframes mupFail{0%,100%{translate:-50% -50%}25%{translate:-58% -50%}75%{translate:-42% -50%}100%{opacity:0}}@keyframes mupGone{to{scale:.5;opacity:0}}

#inappBar{position:fixed;z-index:120;left:50%;translate:-50% 0;top:calc(env(safe-area-inset-top) + 8px);width:min(94vw,520px);display:flex;align-items:center;gap:8px;padding:9px 10px 9px 14px;border-radius:14px;background:#14261ef2;color:#fff;font-size:12px;line-height:1.4;box-shadow:0 8px 24px #0006}
#inappBar span{flex:1}#inappBar button{flex-shrink:0;border:0;border-radius:9px;padding:7px 10px;font-weight:800;font-size:12px;background:#ffd84a;color:#1c2b24}#inappBar #inappClose{background:transparent;color:#fff;font-size:18px;padding:2px 6px}
#installButton{background:#ffd84a;color:#1c2b24;font-weight:800}
.tipSteps small{font-size:11px;opacity:.75}
#action{touch-action:none;-webkit-user-select:none;user-select:none}

/* v57: mobile controls occupy separate rows; keyboard chat uses visual viewport. */
#soundToggle{font-size:19px;min-width:40px}
#soloMupCountdown{position:fixed;inset:35% 0 auto;text-align:center;z-index:110;font-size:72px;font-weight:900;color:#ffdb64;pointer-events:none;text-shadow:0 3px 10px #000}
.mupCircle b{font-size:24px}.mupCircle.inZone{box-shadow:0 0 24px #ffe28c}
.mobile-ui :is(#fullscreenButton,#installButton){display:none!important}
.mobile-ui header{left:8px;right:8px;top:max(8px,env(safe-area-inset-top));display:flex;flex-wrap:wrap;gap:5px}
.mobile-ui .brandGroup{width:100%;display:flex;justify-content:space-between}
.mobile-ui .headerControls{display:flex;flex-wrap:wrap;gap:4px;width:100%}
.mobile-ui header button{min-height:36px;padding:6px 8px;font-size:11px}
.mobile-ui #soundToggle{font-size:19px;margin-left:auto}
.mobile-ui footer{left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));width:auto}
.mobile-ui footer .actions{display:flex;gap:5px;justify-content:center}
.mobile-ui footer .actions button{flex:1;min-width:0;min-height:38px;font-size:11px;padding:5px 3px}
.mobile-ui footer .actions #shareGame{width:auto;min-height:38px;flex:1.3}
.mobile-ui footer #hint,.mobile-ui footer kbd{display:none}
.mobile-ui #joystick{left:12px;bottom:calc(max(8px,env(safe-area-inset-bottom)) + 60px);width:100px;height:100px}
.mobile-ui #stick{left:28px;top:28px}
.mobile-ui .contextAction{right:10px;bottom:calc(max(8px,env(safe-area-inset-bottom)) + 60px);max-width:150px}
.mobile-ui #chatToggle{left:12px;right:auto;top:auto;bottom:calc(max(8px,env(safe-area-inset-bottom)) + 171px);min-height:36px}
.mobile-ui body.chat-open #chatPanel{position:fixed!important;left:8px!important;right:8px!important;top:auto!important;bottom:calc(var(--chat-bottom,0px) + 6px)!important;width:auto!important;height:auto!important;max-height:calc(var(--chat-view-height,100dvh) - 12px)!important;transform:none!important;box-sizing:border-box;z-index:160;overflow:hidden}
.mobile-ui #chatMessages{height:66px!important;min-height:0!important;max-height:66px!important;flex:none!important;overflow-y:auto;line-height:22px;padding-block:0}
.mobile-ui #chatMessages li{min-height:22px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-ui #chatInput{font-size:16px;min-width:0}.mobile-ui #chatForm{min-width:0}.mobile-ui #chatForm input{flex:1;width:0}
.mobile-ui body.chat-open :is(footer,#joystick,.contextAction,#chatToggle,#chatPreview,#manageBox){visibility:hidden!important}
.mobile-ui body.sled-active footer{display:none}
.mobile-ui body.sled-active #chatToggle{bottom:calc(var(--workout-dock) + 10px)}
.mobile-ui dialog{max-height:calc(100dvh - 24px);overflow:auto}
@media(max-height:500px){.mobile-ui .brandGroup{display:none}.mobile-ui #joystick{width:86px;height:86px}.mobile-ui #stick{left:21px;top:21px}.mobile-ui #chatToggle{bottom:calc(max(8px,env(safe-area-inset-bottom)) + 150px)}}

.mobile-ui .status,.mobile-ui .third-person .status{top:calc(max(8px,env(safe-area-inset-top)) + var(--mobile-header-height,75px) + 6px);left:10px;max-width:95vw}
.mobile-ui #workoutRecords{top:calc(max(8px,env(safe-area-inset-top)) + var(--mobile-header-height,75px) + 28px);left:10px;max-width:170px}
.mobile-ui body>#manageBox{top:calc(max(8px,env(safe-area-inset-top)) + var(--mobile-header-height,75px) + 28px);right:10px}
.mobile-ui #adminWearToggle{top:calc(max(8px,env(safe-area-inset-top)) + var(--mobile-header-height,75px) + 65px)}
.mobile-ui .view{top:calc(max(8px,env(safe-area-inset-top)) + var(--mobile-header-height,75px) + 102px);right:10px}
.mobile-ui #workoutRecords[open]{max-height:calc(100dvh - 260px);overflow:auto}
@media(max-height:500px){.mobile-ui .view{display:none}.mobile-ui #workoutRecords{max-width:150px}.mobile-ui #workoutRecords[open]{max-height:130px}}

#presenceNotices{position:fixed;top:max(100px,calc(env(safe-area-inset-top) + 88px));left:50%;transform:translateX(-50%);z-index:180;pointer-events:none;display:grid;gap:5px;width:max-content;max-width:85vw}#presenceNotices>div{padding:8px 14px;border-radius:12px;background:rgba(20,35,29,.9);color:#fff;font-size:13px;box-shadow:0 2px 8px #0003;overflow-wrap:anywhere}

/* v63: keep every mobile dialog below the system status area. */
.creatorCredit{display:block;width:max-content;max-width:100%;margin:20px 0 0 auto;text-align:right;color:#627661;font-size:12px;text-decoration:none;padding:10px 0}
.mupCircle>*{pointer-events:none!important}
.mobile-ui{--hud-top:max(8px,env(safe-area-inset-top,0px));--notice-height:0px;background:#273c32}
.mobile-ui:has(body.noticeTop){--notice-height:26px}
.mobile-ui header{top:calc(var(--hud-top) + var(--notice-height));translate:none!important;padding-top:38px}
.mobile-ui header .brandGroup{position:absolute;top:8px;left:0;width:calc(100% - 202px);max-width:none;overflow:hidden;white-space:nowrap}
.mobile-ui header .brand b{font-size:10px;letter-spacing:.5px}
.mobile-ui .view{top:calc(var(--hud-top) + var(--notice-height));right:90px;translate:none!important;z-index:121;height:34px}
.mobile-ui .view button{display:none!important}
.mobile-ui .view #photoButton{display:block!important;min-height:34px;height:34px;font-size:11px;padding:0 8px!important;margin:0}
.mobile-ui body>#manageBox{top:calc(var(--hud-top) + var(--notice-height));right:8px;translate:none!important;height:34px;min-height:34px;font-size:10px;padding:4px 7px}
.mobile-ui #adminWearToggle{top:calc(var(--hud-top) + var(--notice-height) + var(--mobile-header-height,80px) + 28px);right:8px}
.mobile-ui .status{translate:none!important;top:calc(var(--hud-top) + var(--notice-height) + var(--mobile-header-height,80px) + 6px)}
.mobile-ui #workoutRecords{translate:none!important;top:calc(var(--hud-top) + var(--notice-height) + var(--mobile-header-height,80px) + 28px)}
.mobile-ui dialog{position:fixed!important;inset:auto!important;top:calc(env(safe-area-inset-top,0px) + 12px)!important;left:max(8px,env(safe-area-inset-left,0px))!important;right:max(8px,env(safe-area-inset-right,0px))!important;bottom:auto!important;margin:0 auto!important;max-width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 16px)!important;max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 24px)!important;overflow:auto;transform:none!important;translate:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.mobile-ui dialog::backdrop{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:#11291fc4}
.mobile-ui dialog :is([data-close],.dialogClose,#raceClose,#closeConnect,#closeWelcome,#closePlayers,#closeBoard,#guestPhotoClose,#closeAdvertisement,.dailyX){top:0!important;z-index:20;min-width:48px;min-height:44px;background:#eee7d6!important;touch-action:manipulation}
.mobile-ui #managerHost{height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 24px)!important;overflow:hidden!important}
@media(max-height:500px){.mobile-ui header{padding-top:36px}.mobile-ui header .brandGroup{display:none}}

.mobile-ui dialog .dialogCloseBar{position:sticky;top:0;z-index:40;display:flex;justify-content:flex-end;align-items:center;min-height:48px;margin:-1px -1px 10px;padding:2px 0 5px;background:#f7f2e5;border-bottom:1px solid #d6ceb8;isolation:isolate}
.mobile-ui dialog .dialogCloseBar>button{position:static!important;float:none!important;inset:auto!important;margin:0!important;min-height:44px!important;min-width:58px;pointer-events:auto;transform:none!important}
.mobile-ui #managerHost .managerBar{position:relative;z-index:40;flex-shrink:0;min-height:48px;height:48px}
.mobile-ui #managerHost #managerFrame{height:calc(100% - 48px)}
