@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#173f36;--cream:#fcf9ed;--lime:#e2f29b;--line:#254f3b20;font-family:'DM Sans',sans-serif;color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#b9d8c4}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible{outline:3px solid #af570f;outline-offset:5px}.hidden{display:none!important}#world,#world canvas,.vignette{position:fixed;inset:0;width:100%;height:100%}#world canvas{display:block;touch-action:none}.vignette{pointer-events:none;background:linear-gradient(90deg,#f5f3deba 0%,#f5f3de48 37%,transparent 64%),linear-gradient(0deg,#163f3220,transparent 25%);transition:opacity .6s}body.playing .vignette{opacity:0}header{position:absolute;top:30px;left:38px;right:38px;display:flex;align-items:center;justify-content:space-between;z-index:3;gap:16px}.brand{text-decoration:none;color:var(--ink);display:flex;gap:10px;align-items:center}.brand svg{width:44px;height:44px}.brand>span{font-family:Manrope,sans-serif;font-size:34px;font-weight:800;line-height:1;letter-spacing:-1.8px}.brand small{display:block;font-family:'DM Sans',sans-serif;font-size:8px;letter-spacing:2.2px;font-weight:700;margin-top:9px}.top-actions{display:flex;gap:9px;align-items:center}.pill,.round{border:1px solid #ffffff90;background:#fcfaefa6;backdrop-filter:blur(14px);height:43px;box-shadow:0 4px 22px #254f3b09}.pill{border-radius:30px;padding:0 17px;display:flex;gap:9px;align-items:center;font-size:13px;font-weight:600}.round{border-radius:50%;width:43px;font-size:19px}.pill:hover,.round:hover{background:var(--cream)}kbd{font-family:inherit;font-size:10px;border:1px solid #173f3630;border-bottom-width:2px;padding:3px 6px;border-radius:5px;white-space:nowrap}.intro{position:absolute;left:7.5%;top:50%;transform:translateY(-43%);z-index:2;max-width:610px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;line-height:1.6}.intro .eyebrow{display:flex;align-items:center;gap:9px;font-size:9px;letter-spacing:1.6px}.live-dot{width:7px;height:7px;display:inline-block;background:#467d51;border-radius:50%;flex-shrink:0}.intro h1{font-family:Manrope,sans-serif;font-size:clamp(42px,4.9vw,76px);line-height:1.08;letter-spacing:-4px;font-weight:800;margin:22px 0}.intro h1 em{font-style:normal;color:#51855b}.intro-copy{font-size:16px;line-height:1.7;color:#325346;margin:0 0 28px}.primary{background:var(--ink);color:var(--cream);border:0;border-radius:12px;font-weight:600;font-size:15px;padding:19px 23px;display:flex;align-items:center;justify-content:space-between;gap:46px;box-shadow:0 10px 25px #173f361e;transition:transform .15s,background .15s}.primary:hover{background:#285344;transform:translateY(-2px)}.primary>span:last-child{font-size:23px;line-height:1}.intro-detail{margin-top:20px;display:flex;align-items:center;gap:11px;font-size:10px;color:#436052}.intro-detail i{width:3px;height:3px;background:currentColor;border-radius:50%}footer{position:absolute;left:38px;right:38px;bottom:25px;display:flex;justify-content:space-between;font-size:10px;gap:20px;color:#35584b}footer>span:first-child{letter-spacing:1.6px;font-weight:600}footer>span:first-child span{margin-left:16px}.glass{background:#fcf9edf0;border:1px solid #fff9;box-shadow:0 10px 45px #153f3812;backdrop-filter:blur(14px);border-radius:16px}.quest{position:absolute;left:30px;top:119px;width:282px;padding:21px;z-index:2}.quest .eyebrow{font-size:8px;letter-spacing:1.7px;color:#557365}.quest-head{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:10px}.quest-head strong{font-family:Manrope;font-size:17px;letter-spacing:-.4px}.quest-head>span{background:#e7edd9;padding:5px 7px;border-radius:7px;font-size:11px;white-space:nowrap}.progress{height:4px;background:#e2e7d9;border-radius:5px;overflow:hidden;margin:15px 0}.progress>div{height:100%;width:0;background:#68975a;transition:width .5s}.quest p{font-size:11px;line-height:1.6;color:#607366;min-height:32px}.text-button{display:flex;justify-content:space-between;width:100%;padding:13px 0 0;margin-top:14px;background:none;border:0;border-top:1px solid var(--line);font-size:11px;font-weight:600}.location{position:absolute;bottom:112px;left:30px;display:flex;align-items:center;gap:12px;padding:13px 17px;z-index:2}.location small{display:block;font-size:7px;letter-spacing:1.6px;color:#668074;margin-bottom:5px}.location strong{font-size:13px;font-weight:600}.controls{position:absolute;bottom:25px;left:30px;display:flex;align-items:center;gap:18px;padding:14px 17px;z-index:2;font-size:10px;color:#4b6659}.controls span{display:flex;gap:6px;align-items:center}.controls button{border:0;border-left:1px solid var(--line);padding:0 0 0 15px;background:none;font-size:11px}.minimap{position:absolute;right:30px;bottom:25px;padding:8px;width:204px;z-index:2;overflow:hidden}.minimap canvas{width:100%;display:block;border-radius:10px}.minimap>span{display:flex;justify-content:space-between;padding:6px 7px 1px;font-size:8px;letter-spacing:1.7px}.minimap b{font-size:15px}.toast{position:absolute;top:115px;left:50%;transform:translateX(-50%);display:flex;gap:16px;width:375px;padding:20px;background:var(--cream);border:1px solid #fff;border-radius:17px;box-shadow:0 14px 60px #173f362b;z-index:5;animation:arrive .35s ease}.stamp{width:44px;height:44px;border:1px dashed #758149;color:#608049;display:grid;place-items:center;border-radius:50%;font-size:26px;flex-shrink:0}.toast small{font-size:8px;letter-spacing:1.4px;color:#64804a}.toast strong{display:block;font-family:Manrope;font-size:18px;margin:6px 0}.toast p{font-size:12px;line-height:1.5;margin:0;color:#587160}dialog{width:min(960px,94vw);max-height:89dvh;border:1px solid #fff;background:var(--cream);border-radius:23px;padding:30px;color:var(--ink);box-shadow:0 30px 120px #072e3450}dialog::backdrop{background:#092f3b55;backdrop-filter:blur(9px)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:15px}.modal-header .eyebrow{margin:0 0 7px;color:#67805d}.modal-header h2{font-family:Manrope;margin:0;font-size:28px;letter-spacing:-1.2px}.close{flex-shrink:0;border-color:#173f3620;background:transparent}.map-layout{display:grid;grid-template-columns:1.3fr 1fr;gap:25px;margin-top:25px}.map-illustration{background:#e2eadb;border:1px solid #fff;border-radius:16px;align-self:start;overflow:hidden}.map-illustration canvas{width:100%;display:block}.map-illustration p{font-size:9px;text-align:center;color:#65826c;margin:0 10px 15px}.places{display:flex;flex-direction:column;gap:8px}.place{display:flex;align-items:center;gap:12px;text-align:left;padding:12px;border:1px solid var(--line);background:transparent;border-radius:11px}.place:hover{background:#ebefd9;border-color:#7f9b6b}.place-number{font-family:Manrope;font-size:13px;border:1px dashed #a6b796;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;flex-shrink:0}.place.visited .place-number{background:var(--ink);border:0;color:var(--lime)}.place strong{display:block;font-size:13px}.place small{display:block;margin-top:4px;font-size:10px;color:#64806a}.place .go{margin-left:auto;font-size:20px}.modal-note{font-size:11px;color:#6a7d6c;line-height:1.6;margin-bottom:0}#helpDialog{width:min(640px,94vw)}#helpDialog>p{line-height:1.7;font-size:14px;color:#587160}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:22px 0}.help-grid>div{display:flex;flex-direction:column;gap:8px;font-size:12px}.help-grid kbd{width:fit-content}.about{border-top:1px solid var(--line);padding-top:20px;font-size:12px;line-height:1.7}.about p{color:#647965}.about a{color:var(--ink)}.about>span{display:block;color:#7e8f78;margin-top:10px;font-size:10px}.error{position:fixed;z-index:10;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--cream);padding:30px;border-radius:16px;max-width:440px;width:90%;box-shadow:0 10px 70px #1235}.error button{padding:12px;border-radius:8px;border:0;background:var(--ink);color:white}#touchControls{display:none}@keyframes arrive{from{opacity:0;translate:0 -12px}to{opacity:1;translate:0 0}}
@media(max-width:1050px){.controls{gap:10px}.controls span:last-of-type{display:none}.intro{left:6%}.intro h1{font-size:62px}.quest{width:252px}}
@media(max-width:700px){header{top:20px;left:20px;right:20px}.brand>span{font-size:28px}.brand svg{width:34px}.brand small{font-size:6px;letter-spacing:1.5px}.pill{padding:0 12px;height:38px;font-size:12px}.pill kbd{display:none}#day span{display:none}.round{width:36px;height:36px}.top-actions{gap:5px}.intro{top:auto;bottom:100px;left:25px;right:25px;transform:none}.intro .eyebrow{font-size:7px;max-width:230px;letter-spacing:1.1px}.intro h1{font-size:48px;letter-spacing:-2.7px;margin:15px 0}.intro-copy{font-size:14px;max-width:300px}.desktop{display:none}.primary{font-size:14px;padding:16px 19px}.intro-detail{font-size:9px;gap:7px}.vignette{background:linear-gradient(0deg,#f3f1dce6,transparent 95%)}footer{left:25px;right:25px;bottom:23px;font-size:8px;flex-direction:column;gap:12px}.quest{top:90px;left:15px;width:205px;padding:15px}.quest-head strong{font-size:14px}.quest .eyebrow{font-size:6px}.quest p{font-size:10px;min-height:0;margin-bottom:0}.quest .text-button{font-size:10px;margin-top:10px;padding-top:10px}.progress{margin:10px 0}.location{left:15px;bottom:168px;padding:10px 12px}.location small{font-size:6px}.location strong{font-size:11px}.controls{display:none}.minimap{width:132px;right:15px;bottom:172px;border-radius:13px}.toast{top:96px;width:calc(100% - 30px);padding:16px;z-index:6}.map-layout{grid-template-columns:1fr;gap:15px}.map-illustration canvas{max-height:230px;object-fit:contain}.modal-header h2{font-size:22px}.modal-header .eyebrow{font-size:8px}dialog{padding:22px}.places{display:grid;grid-template-columns:1fr 1fr;gap:7px}.place{padding:9px;gap:7px}.place strong{font-size:10px}.place small{font-size:8px}.place-number{width:24px;height:24px;font-size:10px}.place .go{display:none}.help-grid{gap:14px}.minimap span{font-size:7px}.about{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Online rooms */
.start-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.secondary{background:#fcf9edbb;border:1px solid #173f362d;padding:18px 20px;border-radius:12px;font-size:13px;font-weight:600}.secondary:hover{background:#fcf9ed}.secondary span{margin-left:12px}.online-dot{width:7px;height:7px;background:#879a7e;border-radius:50%}.online-dot[data-state=online]{background:#49884d;box-shadow:0 0 0 4px #6d9f551c}.online-dot[data-state=connecting],.online-dot[data-state=reconnecting]{background:#c58d35}#onlineDialog{width:min(530px,94vw)}.online-copy{font-size:13px;line-height:1.7;color:#557160;margin:22px 0}.field{display:block;font-size:12px;font-weight:600;margin:20px 0 10px}.field input{display:block;width:100%;margin-top:8px;border:1px solid #b7c4ae;border-radius:9px;background:#fffdf6;padding:13px 14px;color:var(--ink);font:inherit;font-size:14px;outline-offset:3px}.field input:focus{outline:2px solid #739a64}.color-picker{border:0;padding:0;margin:19px 0;display:flex;gap:12px}.color-picker legend{font-size:12px;font-weight:600;margin-bottom:12px}.color-picker label{position:relative;display:block;cursor:pointer}.color-picker input{position:absolute;opacity:0;width:28px;height:28px;margin:0}.color-picker span{display:block;width:27px;height:27px;border-radius:50%;background:var(--swatch)}.color-picker input:checked+span{outline:2px solid #173f36;outline-offset:4px}.color-picker input:focus-visible+span{outline:3px solid #ac691b;outline-offset:4px}.room-field{display:flex;align-items:center;gap:8px}.room-field input{letter-spacing:2px;font-weight:700}.room-field button{white-space:nowrap;background:transparent;border:0;border-bottom:1px solid #95a985;font-size:11px;padding:5px}.field-note{font-size:10px;line-height:1.6;color:#668066}.online-error{color:#a64735;font-size:12px;line-height:1.5;margin-bottom:0}#joinButton{width:100%;margin-top:20px}.room-summary{margin:24px 0 14px;display:flex;align-items:center;justify-content:space-between;padding:18px;background:#e7eddc;border-radius:12px}.room-summary small{display:block;letter-spacing:2px;font-size:8px}.room-summary strong{display:block;font-size:25px;letter-spacing:3px;margin-top:6px}.room-summary>span{font-size:12px}#connectionMessage{font-size:12px;color:#638064}#onlineRoster{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.roster-player{display:flex;gap:7px;align-items:center;border:1px solid var(--line);padding:7px 10px;border-radius:20px;font-size:11px}.roster-player i{width:9px;height:9px;border-radius:50%}.invite-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.invite-actions .primary{font-size:13px;padding:14px 17px}.invite-actions .secondary{padding:14px 16px}#inviteLink{font-size:10px;font-weight:400}#playerLabels{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:1}.player-name{position:absolute;top:0;left:0;white-space:nowrap;font-size:11px;font-weight:600;color:#fffdf2;background:#234a3ae6;border:1px solid #ffffff70;border-radius:20px;padding:6px 11px;box-shadow:0 3px 12px #173f361a;will-change:transform}.player-name i{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px}
@media(max-width:700px){header{flex-wrap:wrap;gap:10px}.top-actions{margin-left:auto}.brand small{display:none}.brand>span{font-size:23px}.brand svg{width:27px}.pill{padding:0 10px;font-size:10px}.top-actions .round{width:29px;height:33px}.top-actions #onlineButton{max-width:125px}.start-actions{gap:9px}.start-actions .secondary{padding:16px}.intro-detail{font-size:8px}.field{font-size:11px}.online-copy{font-size:12px}.quest{top:100px}}
/* Mobile play: keep the view open and every control within thumb reach. */
html,body{overscroll-behavior:none}button{touch-action:manipulation}
dialog{overflow:auto;overscroll-behavior:contain;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}
.close{min-width:44px;min-height:44px}.mobile-help{display:none}
.game-options{padding:16px 0 22px}.graphics-option{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:44px;font-size:14px}.graphics-option input{width:22px;height:22px;accent-color:var(--ink)}.graphics-option small{font-size:11px;color:#587160}.option-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.touch-ui{--edge-left:max(16px,env(safe-area-inset-left));--edge-right:max(16px,env(safe-area-inset-right));--edge-bottom:max(20px,env(safe-area-inset-bottom));user-select:none;-webkit-user-select:none}
.touch-ui input{user-select:text;-webkit-user-select:text}
.touch-ui header{top:max(12px,env(safe-area-inset-top));left:var(--edge-left);right:var(--edge-right);gap:8px;flex-wrap:nowrap}
.touch-ui .brand{gap:4px}.touch-ui .brand svg{width:28px;height:32px}.touch-ui .brand>span{font-size:23px}.touch-ui .brand small{display:none}
.touch-ui .top-actions{gap:5px;margin-left:auto}.touch-ui .pill{height:44px;font-size:11px;padding:0 11px;gap:6px}.touch-ui .pill kbd,.touch-ui #day{display:none}.touch-ui #help{display:block;width:44px;height:44px}.touch-ui #onlineButton{max-width:132px;white-space:nowrap}
.touch-ui .controls,.touch-ui .desktop-help{display:none}.touch-ui .mobile-help{display:block;font-size:13px;line-height:1.5}.touch-ui .mobile-help .help-grid{padding:12px 0;gap:18px 12px}
.touch-ui #touchControls{display:block;position:fixed;inset:0;pointer-events:none;z-index:4}
.touch-ui .move-pad{position:absolute;left:var(--edge-left);bottom:var(--edge-bottom);width:116px;text-align:center}
.touch-ui .move-pad>span{display:block;margin-top:9px;font-size:9px;letter-spacing:1.5px;font-weight:700;color:#234c3f;text-shadow:0 1px 5px #fff}
#joystick{width:116px;height:116px;position:relative;border:2px solid #fff9;border-radius:50%;background:#fcf9ed45;touch-action:none;pointer-events:auto;box-shadow:inset 0 0 0 13px #fcf9ed20}
#stick{width:44px;height:44px;position:absolute;top:34px;left:34px;border-radius:50%;background:#fcf9edf0;border:1px solid #fff;pointer-events:none;box-shadow:0 4px 18px #173f3630}
.touch-button{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:1px solid #fff9;border-radius:50%;background:#fcf9edd9;box-shadow:0 5px 20px #173f3615;touch-action:none;pointer-events:auto;width:62px;height:62px;padding:0}
.touch-button b{font-size:24px;line-height:1;font-weight:500}.touch-button span{font-size:10px;font-weight:600}.touch-button:active{background:#e2f29b}.touch-button[aria-pressed=true]{background:var(--ink);color:var(--lime);border-color:#e2f29b}
#jump{right:var(--edge-right);bottom:calc(var(--edge-bottom) + 14px);width:76px;height:76px}#jump b{font-size:30px}
#run{right:calc(var(--edge-right) + 86px);bottom:calc(var(--edge-bottom) + 29px)}
#cameraReset{right:calc(var(--edge-right) + 7px);bottom:calc(var(--edge-bottom) + 104px);width:58px;height:58px}
.touch-hint{position:absolute;bottom:calc(var(--edge-bottom) + 173px);right:var(--edge-right);margin:0;font-size:10px;font-weight:600;color:#315b49;text-shadow:0 1px 4px #fcf9ed,0 0 8px #fcf9ed}
.touch-ui .quest{top:calc(max(12px,env(safe-area-inset-top)) + 58px);left:var(--edge-left);width:185px;padding:10px 13px;border-radius:13px}
.touch-ui .quest .eyebrow,.touch-ui .quest p,.touch-ui .quest-head strong{display:none}.touch-ui .quest-head{position:absolute;right:12px;top:10px;margin:0}.touch-ui .quest-head>span{padding:4px 6px;font-size:11px}
.touch-ui .quest .text-button{height:44px;align-items:center;padding:0 40px 0 0;margin:0;border:0;font-size:11px;white-space:nowrap}.touch-ui .quest .text-button span{display:none}.touch-ui .progress{margin:5px 0 2px;height:3px}
.touch-ui .minimap{top:calc(max(12px,env(safe-area-inset-top)) + 58px);bottom:auto;right:var(--edge-right);width:100px;padding:5px;border-radius:12px}.touch-ui .minimap>span{padding:3px 4px 0;font-size:6px}.touch-ui .minimap b{font-size:10px}
.touch-ui .location{bottom:calc(var(--edge-bottom) + 163px);left:var(--edge-left);padding:8px 11px;gap:7px;max-width:180px;border-radius:10px}.touch-ui .location small{display:none}.touch-ui .location strong{font-size:11px}
.touch-ui .toast{top:calc(max(12px,env(safe-area-inset-top)) + 158px);width:min(340px,calc(100% - 32px));padding:12px;gap:10px;pointer-events:none}.touch-ui .toast .stamp{width:32px;height:32px;font-size:20px}.touch-ui .toast strong{font-size:15px;margin:3px 0}.touch-ui .toast p{font-size:11px}
.touch-ui .glass,.touch-ui .pill,.touch-ui .round{backdrop-filter:none}.touch-ui dialog::backdrop{backdrop-filter:none}
.touch-ui .field input,.touch-ui #inviteLink{font-size:16px;min-width:0}.touch-ui .color-picker{gap:4px;justify-content:space-between}.touch-ui .color-picker label{width:44px;height:44px;display:grid;place-items:center}.touch-ui .color-picker input{width:44px;height:44px}.touch-ui .color-picker span{width:27px;height:27px}.touch-ui .room-field button{min-height:44px}.touch-ui .field-note{font-size:11px}.touch-ui .place{min-height:54px}.touch-ui .place strong{font-size:12px}.touch-ui .place small{font-size:10px}
@media(max-width:700px){
 .touch-ui .intro{top:auto;bottom:max(100px,calc(env(safe-area-inset-bottom) + 75px));left:24px;right:24px;max-height:calc(100dvh - 180px);overflow:auto;transform:none}.touch-ui .intro h1{font-size:clamp(36px,11vw,48px);letter-spacing:-2px}.touch-ui .intro-copy{margin-bottom:20px}.touch-ui .start-actions{display:grid;grid-template-columns:1fr;max-width:340px;gap:10px}.touch-ui .start-actions button{min-height:52px;text-align:left}.touch-ui .intro-detail{font-size:9px;flex-wrap:wrap}.touch-ui footer{bottom:max(20px,env(safe-area-inset-bottom));left:24px;right:24px}.touch-ui dialog{padding:20px 16px}.touch-ui .modal-header h2{font-size:23px}.touch-ui .room-summary{padding:14px}
}
@media(max-width:360px){.touch-ui{--edge-left:max(10px,env(safe-area-inset-left));--edge-right:max(10px,env(safe-area-inset-right))}.touch-ui .pill{padding:0 9px}.touch-ui .brand>span{font-size:20px}.touch-ui .brand svg{width:24px}.touch-ui .quest{width:178px}}
@media(max-height:500px) and (orientation:landscape){
 .touch-ui .intro{left:5%;top:72px;bottom:38px;max-width:570px;max-height:none;overflow:auto;transform:none}.touch-ui .intro h1{font-size:34px;letter-spacing:-1px;line-height:1.08;margin:10px 0}.touch-ui .intro h1 br{display:none}.touch-ui .intro .eyebrow{max-width:none;font-size:7px}.touch-ui .intro-copy{font-size:12px;line-height:1.4;margin-bottom:13px}.touch-ui .intro-copy br{display:none}.touch-ui .start-actions{display:flex;max-width:none;gap:10px}.touch-ui .start-actions button{min-height:44px;padding:12px 16px;font-size:12px;gap:25px}.touch-ui .intro-detail{margin-top:12px}.touch-ui footer{left:5%;bottom:12px;flex-direction:row;font-size:7px}
 .touch-ui .quest{width:185px}.touch-ui .minimap{width:90px}.touch-ui .location{bottom:calc(var(--edge-bottom) + 145px);padding:6px 10px}.touch-ui .move-pad{width:104px}.touch-ui #joystick{width:104px;height:104px}.touch-ui #stick{top:28px;left:28px}.touch-ui .touch-hint{bottom:var(--edge-bottom);right:50%;transform:translateX(50%)}.touch-ui .toast{top:76px;width:300px;padding:10px}.touch-ui .toast p{display:none}.touch-ui .toast .stamp{display:none}.touch-ui .map-layout{grid-template-columns:1fr 1fr}.touch-ui .map-illustration canvas{max-height:230px;object-fit:contain}.touch-ui .places{display:flex}
}
/* City wardrobe, saved character and room chat. */
[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
#cityToolbar{position:absolute;left:30px;top:365px;display:flex;gap:8px;z-index:3}#cityToolbar .pill{background:#fcf9edf0;min-height:44px}#coinCount{font-size:15px}#shopButton>span:first-child{color:#9b702d;font-size:23px}#shopInteract{position:absolute;bottom:105px;left:50%;transform:translateX(-50%);z-index:3;padding:13px 20px;white-space:nowrap}
#shopDialog{width:min(1030px,94vw)}.shop-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:24px 0 14px;padding:18px 20px;border-radius:14px;background:#e7edd9}.shop-summary strong{font-family:Manrope,sans-serif;font-size:24px}.shop-summary p{margin:7px 0 0;font-size:12px;color:#5a745d}.shop-summary .secondary{padding:13px 16px;white-space:nowrap}.shop-intro{font-size:13px;line-height:1.6;color:#5b725f;max-width:680px;margin:15px 0 22px}.skin-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.skin-card{display:flex;flex-direction:column;padding:12px;border:1px solid #cdd6bf;border-radius:15px;min-width:0;background:#fffdf580}.skin-card.equipped{border:2px solid #64885d;padding:11px}.skin-preview{height:150px;background:radial-gradient(ellipse at 50% 90%,#79906330,transparent 50%),linear-gradient(145deg,#e9eedc,#f5e9d2);border-radius:9px;display:grid;place-items:center;position:relative;overflow:hidden}.skin-card>small{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#698164;margin:15px 0 6px}.skin-card h3{font-family:Manrope,sans-serif;font-size:15px;margin:0;letter-spacing:-.5px}.skin-card p{font-size:11px;color:#667b66;line-height:1.5;margin:9px 0 14px;flex:1}.skin-action{border:0;background:#244b3a;color:#fff8e6;padding:12px 8px;min-height:44px;border-radius:8px;font-size:11px;font-weight:600}.skin-action:disabled{opacity:1;cursor:default;background:#e3e9d6;color:#57734f}.account-panel{margin-top:26px;border-top:1px solid var(--line);padding-top:20px}.account-panel p{font-size:12px;color:#60775f;line-height:1.6}.account-actions{display:flex;align-items:center;gap:15px}.account-actions a{color:var(--ink);font-size:12px}.account-actions .secondary{text-decoration:none;display:inline-block}.public-rooms{border-top:1px solid var(--line);margin-top:22px;padding-top:16px}.public-rooms h3{font-family:Manrope,sans-serif;font-size:17px;margin:0}.public-rooms p{font-size:12px;line-height:1.5;color:#60775f}#roomChoices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.room-choice{padding:14px 9px;border:1px solid #cbd7be;border-radius:9px;background:#eaf0df;font-size:12px;min-height:44px}.room-choice:disabled{opacity:.55}.switch-form{display:flex;align-items:end;gap:10px;margin-top:18px}.switch-form .field{flex:1;min-width:0;margin:0}.switch-form .secondary{padding:14px 13px;white-space:nowrap}.switch-form input{text-transform:uppercase}
#chatDialog{width:min(550px,94vw)}.chat-note{font-size:11px;color:#627761;line-height:1.5}#chatMessages{height:300px;max-height:45dvh;overflow:auto;background:#edf0e2;border-radius:12px;padding:12px;margin:18px 0;overscroll-behavior:contain}.chat-message{position:relative;border-bottom:1px solid #b8c7ad66;padding:11px 40px 11px 2px}.chat-message>strong{font-size:11px;color:#476c52}.chat-message>p{font-size:13px;line-height:1.5;margin:5px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.chat-message details{position:absolute;right:0;top:4px}.chat-message summary{min-width:40px;min-height:40px;display:grid;place-items:center;cursor:pointer;list-style:none}.chat-message details[open]{z-index:2;background:var(--cream);border:1px solid #b8c7ad;border-radius:9px}.chat-message details button{display:block;background:transparent;border:0;padding:12px;min-height:44px;text-align:left;font-size:11px;white-space:nowrap}.empty-chat{font-size:13px;line-height:1.6;color:#698367;padding:12px}#chatForm{display:flex;gap:8px}#chatInput{min-width:0;flex:1;border:1px solid #afc19f;border-radius:10px;padding:13px;color:var(--ink);background:#fffdf7;font:inherit;font-size:16px}#chatSend{padding:13px 17px;font-size:13px}#unmuteAll{min-height:44px}#onlineRoster{max-height:180px;overflow:auto}
.touch-ui #cityToolbar{left:var(--edge-left);top:calc(max(12px,env(safe-area-inset-top)) + 143px);gap:6px}.touch-ui #cityToolbar .pill{padding:0 12px;height:44px}.touch-ui #shopInteract{bottom:calc(var(--edge-bottom) + 213px);font-size:12px;padding:11px 15px;min-height:44px}.touch-ui .skin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.touch-ui .toast{top:calc(max(12px,env(safe-area-inset-top)) + 202px)}
@media(max-width:700px){.skin-grid,.touch-ui .skin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.skin-card{padding:9px}.skin-card.equipped{padding:8px}.skin-preview{height:130px}.skin-card h3{font-size:13px}.skin-card p{font-size:10px}.skin-card>small{font-size:8px;letter-spacing:.5px}.skin-action{font-size:10px}.shop-summary{padding:13px;margin-top:18px;align-items:start;flex-direction:column}.shop-summary strong{font-size:22px}.shop-summary p{font-size:11px}.shop-summary .secondary{min-height:44px}.switch-form{align-items:stretch;flex-direction:column}.account-actions{align-items:start;flex-direction:column}.touch-ui .toast{padding:10px}.touch-ui .toast p{font-size:10px}}
@media(max-height:500px) and (orientation:landscape){.touch-ui .location{left:50%;bottom:49px;transform:translateX(-50%);max-width:230px}.touch-ui #cityToolbar{top:calc(max(12px,env(safe-area-inset-top)) + 140px)}.touch-ui .toast{top:77px}.touch-ui #shopInteract{bottom:90px}#chatMessages{max-height:30dvh}#shopDialog{padding:20px}.touch-ui .skin-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.shop-summary{margin-top:16px}.skin-preview{height:125px}}

/* Portraits share the exact 3D model used in the city. */
.skin-preview{height:auto!important;aspect-ratio:1;overflow:hidden;background:#e6e7d7;border-radius:14px;position:relative}.skin-preview img{display:block;width:100%;height:100%;object-fit:contain;transition:transform .25s}.skin-card:hover .skin-preview img{transform:scale(1.035)}.skin-card.equipped .skin-preview{box-shadow:inset 0 0 0 2px #547b48}.skin-card h3{line-height:1.22}.skin-card p{line-height:1.45}
@media(prefers-reduced-motion:reduce){.skin-preview img{transition:none}}

@media(max-width:390px){.touch-ui .touch-hint{max-width:180px;text-align:right;font-size:9px;bottom:calc(var(--edge-bottom) + 179px)}}

/* Speech follows each avatar; writing opens directly over the city. */
#speechBubbles{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:2}
.speech-bubble{position:absolute;top:0;left:0;width:max-content;max-width:min(240px,calc(100vw - 32px));padding:10px 14px 12px;background:#fffdf4;color:#1d4538;border:1px solid #ced9bd;border-radius:17px;box-shadow:0 5px 18px #193e3828;font-size:14px;line-height:1.4;will-change:transform}
.speech-bubble:after{content:'';position:absolute;left:calc(50% - 7px);bottom:-7px;width:13px;height:13px;background:inherit;border-right:1px solid #ced9bd;border-bottom:1px solid #ced9bd;transform:rotate(45deg)}
.speech-bubble strong{display:block;font-size:10px;color:#60805e;margin-bottom:3px;font-weight:700}.speech-bubble span{display:block;overflow-wrap:anywhere;white-space:pre-wrap}.speech-bubble.mine{background:#edfacb;border-color:#b7d189}.speech-bubble.mine:after{border-color:#b7d189}
#quickChat{position:fixed;z-index:8;left:50%;bottom:calc(90px + var(--keyboard-offset,0px));transform:translateX(-50%);width:min(540px,calc(100vw - 32px));max-height:calc(var(--chat-visible-height,100dvh) - 100px);overflow:auto;padding:15px 18px;border:1px solid #fff;border-radius:20px;background:#fcf9edf5;color:var(--ink);box-shadow:0 14px 60px #173f3633}
.quick-chat-head{display:flex;align-items:center;gap:12px;margin-bottom:11px}.quick-chat-head>div{flex:1;min-width:0}.quick-chat-head small{display:block;font-size:8px;letter-spacing:1.5px;color:#65805e;margin-bottom:3px}.quick-chat-head strong{font-size:14px}.quick-chat-head .round{width:36px;height:36px;flex-shrink:0;border-color:#c3d0b7;background:transparent}.quick-chat-head .text-button{width:auto;margin:0;padding:10px 0;border:0;font-size:12px;min-height:44px}
#quickChatForm{display:flex;gap:8px}#quickChatInput{font:inherit;font-size:16px;min-height:48px;flex:1;min-width:0;padding:12px 14px;color:var(--ink);background:#fffdf8;border:1px solid #9db58d;border-radius:11px;outline-offset:2px;user-select:text;-webkit-user-select:text}#quickChatInput:focus{outline:2px solid #669359}#quickChatSend{min-height:48px;font-size:13px;white-space:nowrap;padding:12px 18px}
.quick-phrases{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 6px}.quick-phrases button{min-height:36px;border:1px solid #bdcdaa;border-radius:20px;padding:8px 12px;background:#eaf0dc;font-size:11px}.quick-phrases button:hover{background:#dfecc5}
.quick-chat-foot{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:#6a7f61}.quick-chat-foot>span:last-child{white-space:nowrap}
#quickChatError:empty{display:none}#quickChatError{margin:9px 0 0;font-size:12px}#quickJoinPanel>p{font-size:13px;line-height:1.5;margin:8px 0 14px;color:#5a715c}#quickJoin{font-size:13px;min-height:46px;width:100%;padding:12px 16px}
.chat-writing .controls,.chat-writing #touchControls,.chat-writing #shopInteract,.chat-writing .touch-hint{visibility:hidden}
.touch-ui #quickChat{bottom:calc(max(12px,env(safe-area-inset-bottom)) + var(--keyboard-offset,0px));max-height:calc(var(--chat-visible-height,100dvh) - 24px);padding:12px;border-radius:17px}
.touch-ui .quick-chat-head{margin-bottom:8px;gap:9px}.touch-ui .quick-chat-head strong{font-size:12px}.touch-ui .quick-chat-head .round{min-width:44px;min-height:44px}.touch-ui #quickChatSend{padding:12px;font-size:12px}.touch-ui .speech-bubble{max-width:210px;font-size:13px;padding:9px 12px 11px}.touch-ui.chat-writing .location{visibility:hidden}
@media(max-height:500px) and (orientation:landscape){.touch-ui #quickChat{width:min(540px,calc(100vw - 32px));padding:8px 12px}.touch-ui .quick-chat-head{margin-bottom:4px}.touch-ui .quick-phrases{margin:6px 0 4px}.touch-ui .speech-bubble{font-size:12px;max-width:200px}}

.touch-ui .quick-phrases button{min-height:44px}
.quick-touch-hint{display:none}.touch-ui .quick-desktop-hint{display:none}.touch-ui .quick-touch-hint{display:inline}

/* City life: a compact, touch-friendly extension of the original interface. */
#lifeDialog{width:min(900px,calc(100vw - 28px));max-height:90dvh}
.life-summary{display:flex;justify-content:space-between;gap:16px;align-items:center;color:#6a7b6b;margin-bottom:18px}
.life-summary strong{color:#315848;background:#e8dba6;padding:9px 14px;border-radius:99px;white-space:nowrap}
#lifeTabs{display:flex;gap:6px;padding:5px;background:#e7eadc;border-radius:16px;margin-bottom:24px}
#lifeTabs button{flex:1;border:0;background:transparent;color:#5a7160;border-radius:12px;padding:13px 8px;font-family:inherit;font-size:14px;font-weight:600;min-height:44px;cursor:pointer}
#lifeTabs button.selected{background:#315d4b;color:#fff8e9;box-shadow:0 3px 8px #173e3020}
[data-life-panel][hidden]{display:none}
.appearance-layout{display:grid;grid-template-columns:260px 1fr;gap:30px;align-items:start}
.appearance-portrait{background:#e6e7d7;border-radius:22px;padding:12px;text-align:center}
.appearance-portrait img{width:100%;height:auto;border-radius:14px;display:block}
.appearance-portrait>span{letter-spacing:.2em;font-size:10px;color:#61795b;font-weight:800}
.appearance-portrait p{font-size:13px;line-height:1.6;color:#63715b;margin:8px 0}
.appearance-fields{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px}
.appearance-fields select{width:100%;border:1px solid #ccd5bc;background:#fffdf5;border-radius:10px;padding:12px;color:#254b3c;font:inherit;min-height:46px}
.appearance-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:20px}
.life-intro{color:#637564;line-height:1.65;margin:0 0 20px;font-size:14px}
.life-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.life-card{display:flex;gap:12px;background:#f6f3e7;border:1px solid #dce1cc;border-radius:18px;padding:18px}
.life-icon{flex:none;width:40px;height:40px;display:grid;place-items:center;background:#e8d8a7;border-radius:12px;color:#6b5030;font-size:25px}
.life-card h3{font-size:16px;margin:0 0 7px;color:#284b3b}.life-card p{font-size:13px;line-height:1.6;color:#6d7765;margin:0 0 12px}
.life-card small{display:block;color:#7b633c;font-size:12px;font-weight:650;margin-bottom:14px}
.life-card .secondary{padding:12px 13px;font-size:12px;min-height:44px}.life-card-actions{display:flex;flex-wrap:wrap;gap:8px}
.life-card button:disabled{opacity:.48;cursor:default}
.life-card .task-progress{color:#456b55;font-weight:600}
.online-reward{border-radius:18px;padding:20px;background:#e2ebd3;display:grid;grid-template-columns:1fr 175px;align-items:center;gap:22px;margin-bottom:20px}
.online-reward small{font-size:10px;letter-spacing:.12em;color:#62815c;font-weight:750}
.online-reward h3{font-size:17px;margin:8px 0}.online-reward p{font-size:12px;color:#66775e;line-height:1.6;margin:0}
.online-reward strong{font-size:13px}.online-reward progress{width:100%;height:9px;accent-color:#548465;display:block;margin-top:12px}
.player-name.self-name{border:1px solid #f9e2a5;background:#fff7e7e8;color:#315344;z-index:3}
#cafeInteract{position:absolute;bottom:92px;left:50%;transform:translateX(-50%);z-index:5;white-space:nowrap}
.quick-gesture{padding:10px!important;min-width:42px}
.ambient-settings{margin:20px 0;padding:16px;border-radius:15px;background:#e8ecdd;display:grid;gap:12px}
.ambient-settings>label{display:flex;align-items:center;gap:10px;font-size:14px}.ambient-settings input[type=range]{flex:1;accent-color:#315d4b}
#ambientButton{font-size:20px}#ambientButton[data-sound-zone="dj"][aria-pressed="true"]{color:#ffdc76;border-color:#ffd363;box-shadow:0 0 12px #ffd36338}.skin-action:disabled{cursor:default}
@media(max-width:700px){
 #lifeDialog{padding:20px 16px;max-height:92dvh;border-radius:23px}
 #lifeDialog h2{font-size:27px}.life-summary{font-size:12px;gap:8px}.life-summary strong{padding:8px 10px}
 #lifeTabs{gap:2px;margin-bottom:18px}#lifeTabs button{font-size:12px;padding:11px 5px}
 .appearance-layout{grid-template-columns:1fr;gap:18px}.appearance-portrait{display:grid;grid-template-columns:118px 1fr;align-items:center;padding:8px}
 .appearance-portrait img{width:118px;grid-row:1/4}.appearance-portrait>span{align-self:end}.appearance-portrait p{font-size:11px;margin:4px}.appearance-portrait .text-button{font-size:11px;padding:6px}
 .appearance-fields{gap:4px 12px}.appearance-fields select{font-size:16px}.appearance-actions{gap:8px}.appearance-actions .primary{width:100%;justify-content:center}
 .life-grid{grid-template-columns:1fr}.life-card{padding:15px}.life-icon{width:36px;height:36px;font-size:22px}
 .online-reward{grid-template-columns:1fr;gap:12px;padding:16px}
 #cafeInteract{bottom:190px;font-size:12px;padding:13px 18px}
 #cityToolbar{gap:6px;max-width:calc(100vw - 28px)}#cityToolbar .pill{padding:9px 10px;font-size:12px;min-height:42px}
 #ambientButton{width:34px;height:34px;font-size:17px}
}

.sunset-label{cursor:default}
.emote-preview{width:100%;margin-top:8px;border:1px solid #a5b6a0;background:#eef0e1;border-radius:10px;padding:11px;color:#315c48;font:inherit;font-size:12px;cursor:pointer;min-height:44px}
.life-card.premium-emote{background:linear-gradient(125deg,#e8ecd7,#f0e1df);border-color:#bead73}
.premium-emote .life-icon{color:#8b5d7d;background:#f2d7b0}
.emote-price{font-size:12px}.skin-card.premium-skin{border-color:#9eaaa6;background:linear-gradient(145deg,#edf3e8,#f2e4d5)}
#showroomDialog{width:min(600px,94vw)}#showroomCanvas{display:block;width:100%;height:min(46dvh,400px);border-radius:20px;background:#d9e3d2}
.showroom-controls{display:flex;justify-content:center;gap:10px;margin-top:16px}.showroom-controls .secondary{font-size:12px;padding:12px 16px;min-height:44px}
.food-court-intro{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:20px;background:#ede4ce;border-radius:16px;padding:16px}
.food-court-intro p{margin:0;line-height:1.6;font-size:13px;color:#6e705b}.food-court-intro button{flex:none;font-size:12px;padding:12px 14px}
#foodActivity{font-size:13px;color:#7a5f39;margin:12px 0}
#eatingStatus{position:absolute;left:50%;bottom:150px;transform:translateX(-50%);background:#fff8e8ed;border:1px solid #d0ba86;color:#63543e;border-radius:99px;padding:10px 16px;z-index:4;font-size:12px;box-shadow:0 4px 15px #355d3720;pointer-events:none;white-space:nowrap}
#eatingStatus[hidden]{display:none}
@media(max-width:700px){.sunset-label{display:none}.food-court-intro{display:block}.food-court-intro button{margin-top:12px;width:100%;justify-content:center}#eatingStatus{bottom:245px;padding:9px 12px;font-size:11px}#cityToolbar{gap:5px}#cityToolbar .pill{padding:9px 9px;font-size:11px}#showroomDialog{padding:20px 16px}#showroomDialog h2{font-size:26px}}

@media(min-width:701px){#cityToolbar{display:grid;grid-template-columns:repeat(2,max-content);gap:8px}}
.life-card-body>.secondary{margin:5px 5px 0 0}

/* Quick emote wheel: direct selection with touch, B or number keys. */
#emoteWheelDialog{width:min(420px,calc(100vw - 20px));padding:20px;background:#1e3035ed;color:#fff7e4;border:1px solid #a6c6bc66;overflow:auto}
#emoteWheelDialog::backdrop{background:#11252d55;backdrop-filter:blur(2px)}
.wheel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.wheel-heading small{font-size:8px;letter-spacing:.16em;color:#b2c6be}.wheel-heading h2{font-size:25px;margin:5px 0}.wheel-heading .round{color:#f9f4e5;border-color:#e9efdf55}
.emote-wheel{position:relative;height:330px;width:100%;margin:4px 0;background:radial-gradient(circle,transparent 65px,#18292ed9 66px,#18292eaa 146px,transparent 147px);border-radius:50%}
.wheel-center{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;pointer-events:none}.wheel-center strong{font-size:12px;letter-spacing:.15em}.wheel-center span{font-size:9px;color:#c6d3c4}.wheel-center kbd{border-color:#fff5}
.wheel-emote{position:absolute;left:50%;top:50%;width:100px;min-height:86px;border:1px solid #c5e2d332;border-radius:16px;background:#29434a;transform:translate(-50%,-50%) rotate(calc(var(--slot)*60deg)) translateY(-117px) rotate(calc(var(--slot)*-60deg));display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px;gap:2px;transition:background .15s}
.wheel-emote:hover,.wheel-emote:focus-visible{background:#477b73;border-color:#d4ef9b}.wheel-emote svg{width:42px;height:42px}.wheel-emote span{font-size:10px;font-weight:700;line-height:1.2}.wheel-emote small{font-size:9px;color:#efcd82}.wheel-emote.locked{color:#a2b9b8;background:#24373d}.wheel-emote.locked small{color:#d5bb85}
.wheel-pages{display:flex;align-items:center;justify-content:center;gap:18px;margin:2px 0 12px}.wheel-pages button{border:1px solid #fff4;color:#fff;background:#2d454a;width:44px;height:36px;border-radius:10px;font-size:24px}.wheel-pages span{font-size:11px}
#emoteCollection{width:100%;min-height:44px;justify-content:center;background:#e8edda;color:#254b3d;font-size:12px}#emoteWheelError{font-size:12px;color:#ffd09a;margin:10px 0 0}
#emoteWheelError:empty{display:none}
#arenaHud{position:fixed;right:25px;top:115px;width:310px;padding:14px;background:#182e3aef;color:#fff7e6;border:1px solid #aac3c066;border-radius:17px;z-index:4;box-shadow:0 8px 25px #10283633}
.arena-hud-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px}.arena-hud-head button{border:1px solid #fff4;border-radius:8px;min-width:36px;min-height:36px;background:transparent;color:#fff}.arena-scores{display:grid;grid-template-columns:1fr 22px 1fr;align-items:center;gap:8px;margin-top:8px}.arena-scores>div{display:flex;flex-direction:column;gap:5px;padding:9px;border-radius:11px;min-width:0}.arena-scores .blue{background:#376e85}.arena-scores .coral{background:#9b5b53}.arena-scores span{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arena-scores b{font-size:25px}.arena-scores small{text-align:center;font-size:9px}
#arenaVoteHint{font-size:10px;line-height:1.5;margin:9px 0 0;color:#d1e1dc}#arenaInvite{display:flex;gap:6px;margin-top:10px}#arenaInvite button{min-height:44px;border:0;border-radius:9px;padding:10px;font-size:12px;background:#e2eec0;color:#203c38}#arenaInvite button:last-child{background:#334d53;color:white}
#arenaInteract{position:fixed;left:50%;bottom:95px;transform:translateX(-50%);z-index:4;font-size:13px;padding:14px 22px}#arenaInteract:hover{transform:translateX(-50%)}
#arenaDialog{width:min(650px,94vw)}#arenaDialog>p{font-size:14px;line-height:1.6;color:#536a5e}.arena-rules{padding:15px;border:1px solid #c3d0bd;border-radius:12px;background:#e9ecdc}.arena-rules b:first-child{color:#327d9c}.arena-rules b:last-child{color:#ad5648}#arenaActions{display:flex;gap:10px;flex-wrap:wrap}#arenaActions .secondary{min-height:44px;font-size:12px}#arenaSummary{font-size:17px}.arena-player{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #d3dacb;padding:12px 0}.arena-player .secondary{min-height:44px;font-size:12px}#arenaPlayers>p,#arenaActions>p{font-size:13px;line-height:1.6}#arenaError{color:#984936;font-size:13px}
#routeHud{position:fixed;left:30px;bottom:185px;display:flex;gap:12px;align-items:center;max-width:280px;background:#fff7e8ee;color:#385a49;padding:12px;border:1px solid white;border-radius:14px;z-index:3}#routeArrow{font-size:30px;display:block}#routeHud small{display:block;font-size:7px;letter-spacing:.14em;margin-bottom:4px}#routeHud strong{display:block;font-size:12px}#routeDistance{font-size:11px}#routeHud button{background:none;border:0;min-height:36px;min-width:30px;font-size:20px}
#arenaHud[hidden],#arenaInvite[hidden],#arenaInteract[hidden],#routeHud[hidden]{display:none}
.touch-ui #arenaHud{top:213px;right:var(--edge-right);width:calc(100vw - var(--edge-right) - var(--edge-left));padding:10px 12px}.touch-ui .arena-scores>div{flex-direction:row;justify-content:space-between;align-items:center;padding:7px 9px}.touch-ui .arena-scores b{font-size:20px}.touch-ui #arenaVoteHint{font-size:10px}.touch-ui #arenaInteract{bottom:205px;font-size:12px;padding:12px 18px}.touch-ui #routeHud{left:var(--edge-left);bottom:218px;padding:9px;max-width:230px}.touch-ui #arenaHud~#routeHud{z-index:3}
@media(max-width:420px){#emoteWheelDialog{padding:17px 12px}.wheel-emote{width:91px}.emote-wheel{height:326px}}
@media(max-height:540px) and (orientation:landscape){#emoteWheelDialog{width:490px;padding:12px 18px}.wheel-heading h2{font-size:20px}.emote-wheel{height:245px;margin:0}.wheel-emote{min-height:68px;width:98px;transform:translate(-50%,-50%) rotate(calc(var(--slot)*60deg)) translateY(-88px) rotate(calc(var(--slot)*-60deg))}.wheel-emote svg{width:29px;height:29px}.wheel-center span,.wheel-center kbd{display:none}.wheel-pages{position:absolute;right:15px;top:45px;gap:6px}.wheel-pages button{width:32px;height:32px}#emoteCollection{padding:9px;min-height:40px}.touch-ui #arenaHud{top:75px;right:14px;width:270px}.touch-ui #arenaInteract{bottom:60px;left:50%}.touch-ui #routeHud{bottom:100px;left:45%;max-width:220px}.touch-ui #arenaVoteHint{display:none}}

.in-duel .quest,.in-duel .controls,.in-duel .location,.in-duel .minimap{display:none}
.in-duel #cityToolbar{left:50%;top:auto;bottom:24px;transform:translateX(-50%);display:flex;gap:8px;white-space:nowrap}
.touch-ui.in-duel #cityToolbar{left:var(--edge-left);right:var(--edge-right);top:70px;bottom:auto;transform:none;justify-content:space-between;gap:4px}
.touch-ui.in-duel #arenaHud{top:124px}
@media(max-height:540px) and (orientation:landscape){.touch-ui.in-duel #cityToolbar{left:16px;right:auto;top:72px;display:grid;grid-template-columns:1fr 1fr}.touch-ui.in-duel #arenaHud{top:72px;right:16px;width:250px}.touch-ui.in-duel #arenaInteract{bottom:65px}}

/* Friends and vehicles: the same compact controls on desktop and touch. */
#friendsDialog,#vehiclesDialog{width:min(640px,94vw)}
.social-note{font-size:13px;line-height:1.65;color:#5b7263;margin:18px 0}
.friends-title,.garage-status{display:flex;justify-content:space-between;align-items:center;gap:12px}
.friends-title .secondary,.friend-actions .secondary,#friendSuggestions .secondary{font-size:11px;padding:10px 12px;min-height:44px}
.friend-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid #d7ddcc;padding:13px 0}
.friend-row strong{font-size:13px;display:block}.friend-row small{display:block;font-size:11px;margin-top:5px;color:#617766}
.friend-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}#friendsList>p,#friendSuggestions>p{font-size:13px;line-height:1.6;color:#637766}
.roster-add{margin-left:auto;border:1px solid #bdcdb4;background:#ecf0df;border-radius:8px;padding:7px 9px;min-height:38px;font-size:10px}
.vehicle-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}.vehicle-cards>button{border:1px solid #c4d1bb;border-radius:20px;padding:25px 14px;background:linear-gradient(145deg,#e2e9d9,#f1ecd9);text-align:center;display:flex;flex-direction:column;align-items:center;gap:9px;min-height:225px}
.vehicle-cards>button:nth-child(2){background:linear-gradient(145deg,#f0dfd4,#eee8d7)}.vehicle-cards>button:hover{border-color:#627e62}.vehicle-symbol{font-size:58px;line-height:1.3}.vehicle-cards strong{font-family:Manrope,sans-serif;font-size:20px}.vehicle-cards small{font-size:11px;color:#5e7264}.vehicle-cards b{font-size:12px;border-radius:99px;background:#284e40;color:#f5f1dd;padding:10px 16px;margin-top:8px}
.garage-status{margin-top:18px;font-size:13px}.garage-status .secondary{min-height:44px;font-size:12px}
#vehicleSpeed{position:fixed;left:50%;bottom:80px;transform:translateX(-50%);background:#1e3934ee;color:#faf5e4;padding:10px 17px;border-radius:99px;font-size:12px;z-index:3;white-space:nowrap}
#exitVehicle{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:3;min-height:44px;padding:12px 22px;font-size:12px;background:#fff6e4}
#exitVehicle[hidden],#vehicleSpeed[hidden]{display:none}.driving #run,.driving #jump{visibility:hidden}
.touch-ui #cityToolbar{display:grid;grid-template-columns:repeat(3,max-content);gap:5px}.touch-ui #cityToolbar .pill{justify-content:center;font-size:11px;min-width:72px}
.touch-ui #vehicleSpeed{bottom:195px}.touch-ui #exitVehicle{left:auto;right:var(--edge-right);bottom:50px;transform:none}
.in-duel #vehiclesButton{display:none}.touch-ui.in-duel #cityToolbar{display:flex;flex-wrap:wrap}.touch-ui.in-duel #cityToolbar .pill{min-width:0;padding:8px;font-size:10px}.touch-ui #arenaHud{top:260px}
.touch-ui.in-duel #arenaHud{top:124px}
@media(max-width:420px){.vehicle-cards{gap:9px}.vehicle-cards>button{padding:18px 10px}.vehicle-cards strong{font-size:17px}.friend-row{align-items:flex-start}.friend-actions{max-width:150px}}
@media(max-height:540px) and (orientation:landscape){.touch-ui #cityToolbar{top:142px;grid-template-columns:repeat(2,max-content)}.touch-ui #vehicleSpeed{bottom:60px;left:50%}.touch-ui #exitVehicle{bottom:20px}.touch-ui #arenaHud{top:75px;width:270px}.touch-ui.in-duel #cityToolbar{top:72px;display:grid;grid-template-columns:repeat(2,max-content)}.touch-ui.in-duel #arenaHud{top:72px}.vehicle-cards>button{min-height:160px;padding:10px}.vehicle-symbol{font-size:40px}}


.driving .controls,.driving .touch-hint{display:none}.touch-ui #vehicleSpeed{bottom:220px}.chat-writing #vehicleSpeed,.chat-writing #exitVehicle{visibility:hidden}
@media(max-height:540px) and (orientation:landscape){.touch-ui #vehicleSpeed{bottom:60px}}

/* Vehicle collection: actual 3D miniatures, persistent ownership, clear currency. */
#vehiclesDialog{width:min(820px,95vw)}
.garage-wallet{display:flex;align-items:center;justify-content:space-between;background:#254a41;color:#f7f2df;padding:17px 20px;border-radius:17px;margin:18px 0;gap:12px}
.garage-wallet small{display:block;font-size:8px;letter-spacing:.15em;color:#c7d9b9}.garage-wallet strong{display:block;margin-top:6px;font-family:Manrope,sans-serif;font-size:24px}.garage-wallet p{font-size:11px;line-height:1.6;margin:0;color:#d9e1ce;text-align:right}
.garage-tabs{display:flex;border-bottom:1px solid #c9d3bf;gap:6px;margin:0 0 18px;overflow-x:auto}.garage-tabs button{min-height:48px;white-space:nowrap;border:0;border-bottom:3px solid transparent;background:transparent;padding:12px 14px;color:#607463;font-size:12px;font-weight:600}.garage-tabs button[aria-selected=true]{border-bottom-color:#b26d40;color:#264b40}
.vehicle-collection{display:grid;grid-template-columns:1fr 1fr;gap:18px}.vehicle-card{border:1px solid #cbd3bf;border-radius:20px;background:#fffbed;overflow:hidden;min-width:0}.vehicle-art{position:relative;background:#e8e8dd}.vehicle-art img{display:block;width:100%;height:auto;aspect-ratio:1.5;object-fit:cover}.vehicle-badge{position:absolute;top:12px;left:12px;border:1px solid #fff9;background:#fffff1dd;border-radius:99px;padding:6px 9px;color:#486253;font-size:7px;letter-spacing:.1em;font-weight:800}.vehicle-card.exclusive{border-color:#9c9fb8;background:#f0f0e9}.vehicle-card.exclusive .vehicle-badge{background:#2d324dee;color:#dce7ff;border-color:#6b749c}
.vehicle-card-body{padding:19px}.vehicle-card-body>small{font-size:8px;letter-spacing:.16em;color:#74816c}.vehicle-card h3{font-family:Manrope,sans-serif;font-size:25px;letter-spacing:-1px;margin:5px 0 9px}.vehicle-card p{font-size:12px;line-height:1.6;color:#677461;min-height:58px;margin:0 0 12px}
.vehicle-preview,.vehicle-buy{width:100%;min-height:44px;border-radius:10px;padding:11px;font-size:12px;font-weight:600}.vehicle-preview{background:transparent;border:1px solid #b9c8af;color:#365e4c;margin-bottom:8px}.vehicle-buy{border:0;background:#254c40;color:#fff7df}.vehicle-buy:disabled{cursor:default}.exclusive .vehicle-buy{background:#37405b;color:#e6e5ed}.online-error[data-state=success]{color:#315d48}
@media(max-width:520px){#vehiclesDialog{padding:20px 15px}.vehicle-collection{grid-template-columns:1fr;gap:16px}.vehicle-art img{max-height:210px}.vehicle-card-body{padding:16px}.vehicle-card p{min-height:0}.garage-tabs button{font-size:10px;padding:10px 8px}.garage-wallet{padding:15px}.garage-wallet strong{font-size:22px}}

/* Original, static advertising panels: readable on touch and keyboard. */
#adsDialog{width:min(840px,95vw)}.ads-intro{font-size:13px;line-height:1.7;color:#627366;max-width:620px;margin:16px 0 22px}
.ad-spaces{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:18px}.ad-space{min-width:0;text-align:left;border:1px solid #c8d2bf;border-radius:13px;background:#eeeee0;padding:14px 13px;min-height:90px}.ad-space[aria-pressed=true]{background:#254a40;color:#fff6df;border-color:#254a40}.ad-space small{display:block;font-size:7px;letter-spacing:.12em;opacity:.7;margin-bottom:8px}.ad-space strong{display:block;font-size:13px;line-height:1.3}.ad-space>span{display:block;font-size:11px;margin-top:6px;opacity:.8}
#adDetail{border:1px solid #c8d2bf;border-radius:18px;overflow:hidden;background:#fffdf3}.ad-poster{width:100%;height:auto;display:block;aspect-ratio:2;object-fit:contain}.ad-body{padding:22px 24px}.ad-body .eyebrow{font-size:8px;letter-spacing:.14em;color:#637761}.ad-body h3{font-family:Manrope,sans-serif;font-size:29px;letter-spacing:-1px;margin:8px 0 10px}.ad-copy{font-size:13px;line-height:1.7;color:#627366;max-width:540px}.ad-handle{font-size:18px;font-weight:600;margin:8px 0 20px;overflow-wrap:anywhere;user-select:all}.ad-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:15px}.ad-actions .primary,.ad-actions .secondary{font-size:12px;min-height:44px;padding:13px 18px;text-decoration:none;justify-content:center;gap:10px}.ad-destination{font-size:11px;color:#66745f;overflow-wrap:anywhere}.ad-copy-field{font:inherit;font-size:16px;padding:10px;max-width:100%;margin-top:14px}#adStatus{font-size:12px;line-height:1.6;color:#315d48}#adStatus:empty{display:none}
.map-ads-button{margin-top:15px;min-height:44px;font-size:12px;width:100%;justify-content:center}.ad-map-legend{font-size:10px;color:#61705d}
#adInteract{position:fixed;left:50%;bottom:172px;transform:translateX(-50%);z-index:4;padding:13px 20px;font-size:12px;max-width:90vw;min-height:44px;white-space:nowrap}#adInteract:hover{transform:translateX(-50%)}#adInteract[hidden]{display:none}
.touch-ui #cityToolbar{grid-template-columns:repeat(4,minmax(0,1fr));width:min(360px,calc(100vw - var(--edge-left) - var(--edge-right)))}.touch-ui #cityToolbar .pill{min-width:0;padding:0 7px;font-size:10px;gap:4px}.touch-ui #adInteract{bottom:270px;max-width:calc(100vw - 28px)}.in-duel #adsButton{display:none}
@media(max-width:520px){.ad-spaces{gap:6px}.ad-space{padding:12px 9px;min-height:96px}.ad-space strong{font-size:11px}.ad-space small{font-size:6px}.ad-space>span{font-size:10px}.ad-body{padding:16px}.ad-body h3{font-size:25px}.ad-handle{font-size:16px}.ads-intro{margin:10px 0 16px;font-size:12px}.ad-actions{gap:8px}.ad-actions .primary,.ad-actions .secondary{flex:1;white-space:nowrap;padding:12px 10px;font-size:11px}}
@media(max-height:540px) and (orientation:landscape){.touch-ui #cityToolbar{grid-template-columns:repeat(2,max-content);width:auto}.touch-ui #adsButton{display:none}.touch-ui #adInteract{bottom:105px;max-width:350px}.touch-ui.in-duel #cityToolbar{display:grid}}
@media(min-width:701px){body:not(.touch-ui):not(.in-duel) #cityToolbar{grid-template-columns:repeat(3,max-content)}}

.game-loading{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:8;background:#0d2537;color:#ffcf35;border-top:3px solid #ffcf35;padding:22px 30px;font:bold 13px Arial,sans-serif;letter-spacing:.08em;white-space:nowrap}.game-loading[hidden]{display:none}