:root{color-scheme:dark;--ink:#f5f1dd;--muted:#b6c7b3;--line:#ffffff24;--gold:#f4c56b;--panel:#142923ed;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;overflow:hidden;color:var(--ink);background:#18382e}button,input,select{font:inherit}button{cursor:pointer;min-height:42px;border:1px solid var(--line);color:var(--ink);background:#294539;border-radius:9px;padding:10px 14px;font-weight:650;touch-action:manipulation}button:hover{background:#365b49}button:disabled{cursor:wait;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:2px}[hidden]{display:none!important}input,select{width:100%;background:#0b1d18;color:var(--ink);border:1px solid #6c876a66;border-radius:8px;padding:11px;margin:5px 0 12px}label{display:block;font-size:13px;font-weight:650}h1,h2,h3,p{margin-top:0}p{line-height:1.6}h2{font-size:27px;letter-spacing:-1px;margin:10px 0}h3{margin:20px 0 6px;font-size:15px}.muted,.fine,.prototype{color:var(--muted)}.fine{font-size:11px;line-height:1.5;margin-bottom:0}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;color:var(--gold)}#world{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}#shade{position:fixed;inset:0;background:linear-gradient(90deg,#071c1cbb,transparent 85%);pointer-events:none}#top{position:fixed;top:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:20px max(24px,env(safe-area-inset-right)) 12px max(24px,env(safe-area-inset-left));pointer-events:none}.brand{font-weight:900;letter-spacing:3px;font-size:23px;color:var(--ink);text-decoration:none;pointer-events:auto}.brand small{display:block;letter-spacing:4px;font-size:8px;margin-top:3px;color:var(--gold)}.topactions{display:flex;align-items:center;gap:10px;pointer-events:auto}.topactions span{font-size:11px;color:#d1e2cb;background:#132b23cc;border-radius:20px;padding:8px 12px}.topactions button{font-size:12px;background:#173128ed}#lobby{position:fixed;inset:80px 0 0;overflow-y:auto;display:grid;grid-template-columns:1fr 410px;align-items:center;gap:70px;padding:25px clamp(24px,7vw,120px) 45px}.intro{max-width:600px;padding-top:10px}.intro h1{font-size:clamp(48px,5.7vw,84px);font-weight:800;letter-spacing:-4px;line-height:1.02;margin:20px 0 26px}.intro h1 em{font-family:Georgia,serif;font-weight:400;color:var(--gold)}.intro p{max-width:400px;font-size:16px;color:#dae4cf}.pills{display:flex;gap:8px;flex-wrap:wrap;margin:25px 0}.pills span{border:1px solid #d9e3ba66;border-radius:25px;padding:8px 13px;font-size:11px;background:#19382b77}.intro .prototype{font-size:11px}.joincard{padding:27px 28px;background:var(--panel);border:1px solid #97b08455;border-radius:20px;box-shadow:0 24px 70px #0004}.joincard .muted{font-size:12px;margin-bottom:18px}.tabs{display:flex;background:#0b1d18;border-radius:9px;padding:4px;gap:4px;margin-bottom:18px}.tabs button{font-size:12px;flex:1;border:0;min-height:35px;padding:8px}.tabs button:not(.selected){background:transparent;color:#a5b49b}.tabs .selected{background:#42654b}.check{display:flex;gap:8px;align-items:center;font-size:11px;font-weight:400;margin:7px 0 13px}.check input{width:16px;margin:0;accent-color:var(--gold)}.primary{background:var(--gold);color:#243128;border:0;width:100%;font-weight:800}.primary:hover{background:#ffdc8f}.secondary{width:100%;margin-top:9px}.status{font-size:12px;color:#f6d69e;margin:12px 0;min-height:16px;line-height:1.5}.speciesinfo{font-size:11px;color:#bdcaae;margin:-4px 0 10px}#hud{position:fixed;left:max(22px,env(safe-area-inset-left));top:105px;width:210px;background:#122e26e8;border:1px solid #a2bf7960;border-radius:14px;padding:16px;pointer-events:none}.identity strong{display:block;font-size:21px;margin:5px 0}.identity>span:last-child{font-size:11px;color:#b5c9b4}.meters{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;margin:14px 0}.meters label{font-size:10px;color:#b6c7b3}progress{appearance:none;border:none;width:100%;height:5px;display:block;margin-top:4px;border-radius:5px;background:#344b3d}progress::-webkit-progress-bar{background:#344b3d;border-radius:5px}progress::-webkit-progress-value{background:#f4c56b;border-radius:5px}progress::-moz-progress-bar{background:#f4c56b;border-radius:5px}#water::-webkit-progress-value{background:#78b7c3}#hp::-webkit-progress-value{background:#b2d38c}#state{font-size:12px;color:#e2eccf}#hud small{display:block;font-size:10px;color:#a4b69e;margin-top:7px}#players{position:fixed;right:24px;top:110px;background:#142923cf;padding:12px;border-radius:12px;font-size:11px;max-width:190px;white-space:pre-line;line-height:1.8;pointer-events:none}#desktopHelp{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);width:max-content;max-width:94%;background:#112a22d9;border:1px solid var(--line);border-radius:12px;padding:13px 19px;font-size:11px;text-align:center;line-height:1.9;pointer-events:none}#desktopHelp span{color:#bad0af;font-size:10px}#crosshair{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:40px;color:#fff9;pointer-events:none}dialog{background:#142923;color:var(--ink);border:1px solid #7a976077;border-radius:20px;padding:28px;width:min(460px,94vw);max-height:88dvh;overflow:auto}dialog::backdrop{background:#001511a8}.close{position:absolute;top:12px;right:12px;font-size:24px;border:0;background:transparent;padding:0 10px}.menuGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.menuGrid button{font-size:12px}#controlGuide,#roomInfo,details p{font-size:12px;color:var(--muted);line-height:1.7}details{border-top:1px solid var(--line);padding-top:14px;margin:12px 0}summary{cursor:pointer;font-size:13px}#notice{position:fixed;top:82px;left:50%;transform:translateX(-50%);max-width:90%;background:#f4c56b;color:#183429;padding:10px 20px;border-radius:12px;font-size:13px;z-index:20;text-align:center}#fatal{position:fixed;z-index:100;inset:15vh 10vw auto;background:#431e20;padding:30px;border:1px solid #ffbab0;border-radius:15px;max-height:80vh;overflow:auto}#fatal button{margin:4px}#fatalText{white-space:pre-wrap;overflow-wrap:anywhere}#touchControls{position:fixed;inset:0;pointer-events:none;touch-action:none}#lookZone{pointer-events:auto;position:absolute;left:38%;right:0;top:90px;bottom:0;touch-action:none}#lookZone span{position:absolute;top:32%;right:24%;font-size:9px;letter-spacing:2px;opacity:.38;pointer-events:none}#moveStick{position:absolute;left:max(28px,env(safe-area-inset-left));bottom:max(34px,env(safe-area-inset-bottom));width:126px;height:126px;background:#122e2688;border:1px solid #d5e7c377;border-radius:50%;pointer-events:auto;touch-action:none;display:grid;place-items:center}#moveStick span{position:absolute;bottom:12px;font-size:9px;letter-spacing:2px;pointer-events:none}#stickKnob{width:52px;height:52px;background:#d6dcaf88;border:1px solid #e9f0d7;border-radius:50%;pointer-events:none}.touchActions{position:absolute;right:max(18px,env(safe-area-inset-right));bottom:max(25px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(2,74px);gap:8px;pointer-events:auto}.touchActions button{font-size:11px;padding:9px 5px;min-height:46px;background:#19372dda;touch-action:none;user-select:none;-webkit-user-select:none}.touchActions button[aria-pressed=true],.touchActions button.held{background:#f4c56b;color:#162c23}.touch #desktopHelp{display:none!important}.touch #players{display:none!important}.touch #hud{width:170px;padding:10px;top:86px}.touch .identity strong{font-size:16px}.touch .meters{margin:9px 0;gap:7px}.touch #growth{display:none}.touch #crosshair{display:block}.playing #shade{display:none}.playing #top{background:linear-gradient(#06170da6,transparent)}.playing .brand{font-size:17px}.playing .brand small{font-size:7px}body.xr #top,body.xr #hud,body.xr #players,body.xr #desktopHelp,body.xr #touchControls{display:none!important}
@media(max-width:850px){#lobby{grid-template-columns:1fr 360px;gap:26px;padding:15px 24px 30px}.intro h1{font-size:52px;letter-spacing:-2px}.intro p{font-size:13px}.intro .pills{gap:5px}.pills span{font-size:10px;padding:6px}.joincard{padding:23px}.brand{font-size:20px}.topactions span{display:none}}
@media(max-width:620px){#top{padding:14px 18px}.brand{font-size:19px}.topactions button{padding:8px 10px;min-height:38px;font-size:11px}#lobby{display:block;inset:67px 0 0;padding:12px 16px 30px}.intro{padding:8px 7px 18px}.intro .eyebrow{font-size:8px}.intro h1{font-size:38px;letter-spacing:-1.8px;line-height:1.04;margin:10px 0}.intro h1 br{display:none}.intro h1 br:after{content:' '}.intro h1{max-width:310px}.intro p,.intro .pills,.prototype{display:none}.joincard{padding:22px 20px;border-radius:17px}.joincard h2{font-size:25px}.playing .brandword,.playing .brand small{display:none}.playing .brand{font-size:25px}.playing #hud{left:12px;top:78px;width:158px;padding:10px}.playing #players{display:none}#touchControls #moveStick{width:112px;height:112px;left:20px;bottom:max(35px,env(safe-area-inset-bottom))}.touchActions{grid-template-columns:repeat(2,70px);right:14px;gap:7px}.touchActions button{font-size:10px;min-height:46px}.meters label{font-size:9px}#notice{font-size:11px;top:70px}#lookZone{left:44%;top:78px}#fatal{inset:10vh 4vw auto;padding:20px}}
@media(max-height:550px){#lobby{align-items:start}.intro h1{font-size:42px}.touch #hud{width:150px;top:68px}.touch .identity strong{font-size:14px}.touch #saveState,.touch #state{font-size:9px}.touchActions{grid-template-columns:repeat(4,65px);bottom:16px}#moveStick{bottom:20px;width:106px;height:106px}#players{top:80px}.playing #top{padding-top:10px}#desktopHelp{bottom:10px}}

#diagnosticsText{font:11px/1.5 monospace;white-space:pre-wrap;overflow-wrap:anywhere;background:#0b1d18;padding:12px;border-radius:8px}
/* v0.3 injury and communication UI */
#injuryVeil{position:fixed;inset:0;pointer-events:none;z-index:2;opacity:0;background:radial-gradient(ellipse at center,transparent var(--clear,50%),#7c070acc 80%,#300002 100%);transition:opacity .16s,background .2s}
#hud,#players,#chatFeed{z-index:3}#touchControls{z-index:4}#bleedStatus{color:#ff9c91;font-size:12px;font-weight:800;margin-top:7px}#attackInfo{color:#edcf95!important}#teamStatus{color:#e6de93!important}#voiceStatus{color:#a8ded1!important}
#chatFeed{position:fixed;left:22px;bottom:118px;max-width:min(390px,75vw);font-size:12px;pointer-events:none;display:grid;gap:5px}#chatFeed div{background:#10251fe8;padding:7px 10px;border-radius:8px;overflow-wrap:anywhere}#chatButton{position:fixed;right:24px;bottom:25px;z-index:5;font-size:11px}#chatForm input{font-size:16px}.quickChat{margin-top:7px;font-size:12px}#teamPanel .peer{display:flex;align-items:center;gap:7px;margin:8px 0;font-size:12px}#teamPanel .peer span{flex:1;overflow-wrap:anywhere}#teamPanel .peer button{font-size:11px;min-height:35px;padding:7px}input[type=range]{padding:3px;accent-color:var(--gold)}
.touchActions{grid-template-columns:repeat(3,68px);gap:7px}.touchActions button{font-size:10px;min-height:44px}#touchExtras{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px;background:#132a23f2;border:1px solid #8caa7866;border-radius:12px}.touch #chatButton{display:none}.touch #chatFeed{left:16px;bottom:174px;max-width:160px;font-size:10px}.touch #hud{width:179px}.touch #saveState{display:none}.touch #attackInfo{font-size:9px}.touch #teamStatus{font-size:9px}.xr #injuryVeil,.xr #chatButton,.xr #chatFeed,.xr #crosshair{display:none!important}
@media(max-width:620px){.touchActions{grid-template-columns:repeat(3,61px);right:10px;gap:5px}.touchActions button{min-height:42px;padding:7px 3px;font-size:9px}.playing #hud{width:176px}.touch #chatFeed{bottom:163px;max-width:155px}}
@media(max-height:550px){.touchActions{grid-template-columns:repeat(4,65px)}.touch #hud{top:66px;width:177px;padding:8px}.touch .identity strong{font-size:13px}.touch #growth,.touch #teamStatus,.touch #playerSpecies{display:none}.touch #hud small{margin-top:4px}.touch #chatFeed{left:210px;bottom:12px;max-width:220px}#touchExtras{grid-template-columns:repeat(3,1fr)}.touch #bleedStatus{font-size:10px}}
/* 0.4: full-screen game controls stay in the same document and consume gestures. */
html,body{height:100%;overscroll-behavior:none}body.playing{touch-action:none}input,select,textarea{font-size:16px}#touchControls{pointer-events:none}#moveStick,#lookZone,.touchActions,.touchActions button{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.touchActions{z-index:8}#lookZone{z-index:1}#moveStick{z-index:6}#touchExtras{max-height:44dvh;overflow-y:auto;touch-action:pan-y}#touchExtras button{min-height:42px}#hud{max-height:calc(100dvh - 200px);overflow:hidden}#players{max-height:38dvh;overflow:hidden}#dietStatus{color:#d9d995!important}#boneStatus{color:#ffad8b!important}#oxygenStatus{color:#9bdbf1!important}#refugeStatus{color:#eec27a!important}#parentStatus{color:#e7c88c!important}dialog{max-height:85dvh;overflow-y:auto;touch-action:pan-y}body:fullscreen,html:fullscreen{width:100%;height:100%;background:#18382e}
@media(max-height:550px){.touch #hud{max-height:170px;overflow-y:auto;pointer-events:auto;touch-action:pan-y}.touch #dietStatus{font-size:9px}.touch #voiceStatus{display:none}.touchActions{bottom:max(10px,env(safe-area-inset-bottom));grid-template-columns:repeat(4,61px)}#touchExtras{max-height:120px;grid-template-columns:repeat(5,1fr)}.playing #top{padding-top:max(7px,env(safe-area-inset-top))}}

#touchNest,#touchRest,#touchCall,#touchRoar,#touchGrowl,#touchMic,#touchChat{touch-action:pan-y}

#miniMap{position:fixed;right:18px;top:78px;width:148px;height:148px;z-index:12;border:1px solid #caba83;border-radius:50%;background:#13241e;box-shadow:0 5px 25px #0007;touch-action:manipulation;cursor:pointer}#miniMap.large{width:min(70vw,480px);height:min(70vw,480px);border-radius:16px;top:90px}.xr #miniMap{display:none}body:not(.playing) #miniMap{display:none}@media(max-width:700px){#miniMap{width:90px;height:90px;right:10px;top:70px}}

#roomBrowser{margin:12px 0;padding:12px;border:1px solid #abc19f44;border-radius:12px;font-size:13px}.roomRow{display:flex;justify-content:space-between;gap:16px;padding:10px 0}.roomRow a{color:#f6d787}.roomRow small{color:#aad8ab}

/* 0.5.1: compact phone HUD, six primary touch buttons, details in the menu. */
#menuMap{width:100%;height:auto;display:block;border-radius:12px;margin-top:12px}
#mapAreas{columns:2;padding-left:16px;font-size:11px;line-height:1.8;color:var(--muted)}
.logoutActions{margin:10px 0}button:disabled{cursor:default}#logoutStatus{color:#f4d796}
#miniMap{z-index:4}#miniMap.large{width:min(72vw,64dvh,480px);height:min(72vw,64dvh,480px)}
#touchExtras{position:absolute;right:0;bottom:calc(100% + 8px);width:min(310px,72vw);max-height:42dvh;overflow-y:auto;grid-template-columns:repeat(3,1fr);touch-action:pan-y}
.touchActions{grid-template-columns:repeat(3,68px)}
@media (max-width:620px),(max-height:500px) and (pointer:coarse){
 .playing.touch #hud{top:max(56px,env(safe-area-inset-top));left:max(10px,env(safe-area-inset-left));width:152px;padding:7px 9px;border-radius:10px;background:#102a2299;max-height:190px;overflow:hidden;pointer-events:none}
 .playing.touch #hud .identity strong,.playing.touch #playerSpecies,.playing.touch #growth,.playing.touch #dietStatus,.playing.touch #attackInfo,.playing.touch #saveState,.playing.touch #teamStatus,.playing.touch #refugeStatus,.playing.touch #parentStatus,.playing.touch #voiceStatus{display:none}
 .playing.touch #hud .eyebrow{font-size:8px;letter-spacing:.8px}.playing.touch #hud .meters{margin:7px 0;gap:5px 8px}.playing.touch #hud progress{height:4px;margin-top:3px}
 .playing.touch #state{font-size:9px}.playing.touch #hud small:empty,.playing.touch #bleedStatus:empty{display:none}.playing.touch #hud small{font-size:9px;margin-top:4px}.playing.touch #bleedStatus{font-size:10px;margin-top:3px}
 .playing.touch #top{padding:8px max(10px,env(safe-area-inset-right)) 6px max(10px,env(safe-area-inset-left))}.playing.touch .brandword,.playing.touch .brand small{display:none}.playing.touch #vr:disabled{display:none}
 .playing.touch #moveStick{width:96px;height:96px;left:max(16px,env(safe-area-inset-left));bottom:max(18px,env(safe-area-inset-bottom))}.playing.touch #stickKnob{width:42px;height:42px}
 .playing.touch .touchActions{right:max(10px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));grid-template-columns:repeat(3,60px);gap:5px}.playing.touch .touchActions button{min-height:44px;font-size:10px;padding:5px 3px;background:#132d23c4}
 .playing.touch #lookZone{top:54px;left:35%}.playing.touch #lookZone span{display:none}.playing.touch #miniMap{width:72px;height:72px;top:58px;right:max(12px,env(safe-area-inset-right))}.playing.touch #miniMap.large{width:min(72vw,64dvh);height:min(72vw,64dvh);top:60px}
 .playing.touch #chatFeed{left:max(12px,env(safe-area-inset-left));bottom:125px;font-size:10px;max-width:180px}.playing.touch #chatFeed div:nth-last-child(n+3){display:none}
 .playing.touch #notice{top:55px;left:50%;max-width:calc(100vw - 28px);font-size:11px;padding:6px 10px}
 dialog{padding:20px 16px;width:min(440px,94vw);max-height:90dvh;border-radius:14px}dialog h2{font-size:22px}#roomInfo{font-size:11px}#mapAreas{columns:1}
}
@media(max-height:500px){.playing.touch #hud{width:160px}.playing.touch #miniMap{top:56px}.playing.touch #chatFeed{left:calc(180px + env(safe-area-inset-left));bottom:10px;max-width:170px}.playing.touch #notice{max-width:42vw}.playing.touch #touchExtras{max-height:58dvh}}

/* Community screens use a separate scrollable sheet, leaving the play HUD compact. */
.communityDialog{width:min(760px,96vw);max-height:88dvh;padding:22px;overflow:auto}.communityTabs{display:flex;gap:6px;position:sticky;top:-22px;padding:8px 0;background:#182e29;z-index:2;flex-wrap:wrap}.communityTabs button{flex:1;min-width:95px}.communityCard{padding:14px;margin:12px 0;border:1px solid #526557;border-radius:12px;background:#ffffff06}.communityCard p{white-space:pre-wrap;overflow-wrap:anywhere}.communityCard progress{width:100%;margin:8px 0}.communityCard button{margin:4px}.communityDialog form{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.communityDialog input,.communityDialog textarea{flex:1;min-width:150px}.communityDialog textarea{width:100%;flex-basis:100%}textarea{font:inherit;color:inherit;background:#142c25;border:1px solid #657361;border-radius:8px;padding:10px;resize:vertical}.rankTable{overflow:auto}.rankTable table{width:100%;border-collapse:collapse;font-size:13px}.rankTable th,.rankTable td{padding:10px;text-align:left;border-bottom:1px solid #526557;white-space:nowrap}.friendLog{max-height:180px;overflow:auto}.communityDialog a,#friendPresence a{color:#e7cd8d}.communityDialog details{margin-top:12px}#communityLobby{width:100%;margin:10px 0}#announcement{position:fixed;z-index:90;top:max(70px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(640px,90vw);padding:14px 48px 14px 18px;background:#f1d690;color:#16271e;border-radius:12px;box-shadow:0 6px 30px #0005;pointer-events:auto}#announcement strong{display:block;font-size:11px;letter-spacing:.12em}#announcement span{display:block;margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere}#announcement button{position:absolute;right:8px;top:8px;padding:4px 9px;color:#16271e;background:transparent}#sendAnnouncement{margin-top:8px}@media(max-width:600px){.communityDialog{padding:14px}.communityTabs{top:-14px}.communityTabs button{font-size:12px;padding:8px}.communityCard{padding:10px}.communityDialog h2{font-size:24px}}

html,body{touch-action:none;overscroll-behavior:none}input,select,textarea{font-size:16px!important}
#viewportUI{position:fixed;inset:auto;transform-origin:top left;pointer-events:none;z-index:2;overflow:hidden}
#viewportUI>*{pointer-events:auto}#viewportUI>#hud,#viewportUI>#players,#viewportUI>#crosshair,#viewportUI>#desktopHelp,#viewportUI>#top,#viewportUI>#touchControls{pointer-events:none}
#viewportUI .topactions,#viewportUI .brand,#viewportUI #touchControls button,#viewportUI #touchControls #moveStick{pointer-events:auto}
#viewportUI #lobby,dialog{touch-action:pan-y;overscroll-behavior:contain}dialog{overflow-y:auto}
#dinosaurRoster button{display:block;width:100%;margin:8px 0;text-align:left}#menuStats{background:#1c332d;border:1px solid #50664f;border-radius:12px;padding:12px;margin:12px 0}#menuStats h3,#menuStats p{margin:5px 0}#menuStats ul{padding-left:20px;font-size:14px}

.behindScenes{position:fixed;bottom:10px;left:10px;z-index:4;color:#cbe9ce;background:#15291f;padding:8px;border-radius:8px}.playing .behindScenes{display:none}#controlRemapping label{display:block;margin:8px 0}#controlRemapping select{font-size:16px;max-width:100%}

.evolutionPanel{background:#1c332d;border:1px solid #50664f;border-radius:12px;padding:12px;margin:12px 0;overflow-wrap:anywhere}
.evolutionPanel h3,.evolutionPanel p{margin:8px 0}.evolutionPanel label{display:block;margin:12px 0}.evolutionPanel select{display:block;width:100%;min-height:44px;margin-top:6px}.evolutionPanel button{min-height:44px;width:100%;white-space:normal}.evolutionPanel summary{min-height:44px;cursor:pointer;padding:10px 0}.evolutionPanel :focus-visible{outline:3px solid #f1d690;outline-offset:3px}.evolutionPanel ul{padding-left:22px}

#playerAdminPanel{width:min(90vw,480px);max-height:85vh;overflow:auto}#playerAdminPanel select{display:block;width:100%;margin:8px 0}#playerAdminPanel>div{display:flex;flex-wrap:wrap;gap:8px}#playerAdminPanel button{min-height:44px}

#assetProgress{width:100%;height:12px}#assetRetry{min-height:44px;width:100%}

/* Evolve landing: live scenery, restrained blood-red cuts and a fossil/DNA wordmark. */
body:not(.playing) #shade{background:linear-gradient(90deg,#090d0fe8 0%,#0c1117a8 34%,#080c1230 64%,#080c1299 100%),linear-gradient(0deg,#080c12ce,transparent 50%)}
body:not(.playing) #top{background:linear-gradient(#090d10e8,transparent)}
#lobby{grid-template-columns:minmax(0,1fr) 390px;gap:clamp(28px,6vw,100px);align-items:start;padding-top:34px}
.evolveIntro{position:relative;max-width:650px;padding-top:28px;isolation:isolate}
.evolveIntro .eyebrow{color:#b6bcaa;letter-spacing:3px;font-size:10px}
.evolveIntro h1{margin:24px 0 32px;line-height:1;letter-spacing:0;position:relative}
.wildhavenTitle{display:block;font-size:clamp(22px,3vw,40px);letter-spacing:.24em;font-weight:700;color:#dad6c5}
.evolveTitle{display:block;position:relative;width:max-content;max-width:100%;font-family:Impact,'Arial Black',sans-serif;font-size:clamp(68px,8.7vw,128px);font-weight:900;letter-spacing:.045em;line-height:1.14;color:#e5dcc2;text-shadow:0 3px 0 #554c3c,0 10px 36px #000b}
.dnaMark{position:absolute;left:0;bottom:-12px;width:100%;height:28px;fill:none;stroke:#c3ba91;stroke-width:1.4;opacity:.75}.dnaRungs{stroke:#776b53;stroke-width:1}
.clawMarks{position:absolute;top:26px;left:52%;width:100px;height:220px;z-index:-1;transform:rotate(24deg);opacity:.7;pointer-events:none}.clawMarks i{display:block;position:absolute;top:0;left:0;height:100%;width:12px;background:linear-gradient(#431316,#a63127 40%,#6c211c 75%,transparent);clip-path:polygon(62% 0,100% 22%,68% 65%,45% 100%,15% 76%,0 30%)}.clawMarks i:nth-child(2){left:27px;top:7px;height:87%}.clawMarks i:nth-child(3){left:54px;top:20px;height:78%}
.evolveIntro .introLead{font-family:Georgia,serif;font-size:clamp(24px,2.6vw,36px);color:#f2e9d2;line-height:1.15;margin-bottom:18px}
.evolveIntro p{font-size:14px;color:#c2c5bb}.evolveIntro .pills{margin:22px 0}.evolveIntro .pills span{border-radius:3px;border-color:#a79e733d;background:#141a1dbb;color:#d5cba9;letter-spacing:.04em}
.evolveIntro .refugePreviewStatus{display:block;font:600 11px/1.5 system-ui;color:#b7d4a3;letter-spacing:.07em;margin:28px 0 8px;min-height:17px}.refugePreviewStatus::before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:currentColor;margin:0 8px 2px 0}
.evolveIntro .prototype{display:block;font-size:10px;color:#afb5aa}
.foundryLink{display:flex;gap:14px;align-items:center;color:#d1c9b6;text-decoration:none;max-width:370px;margin-top:28px;font-size:9px;letter-spacing:.09em}.foundryLink img{width:82px;height:82px;border:1px solid #87795355;border-radius:4px}.foundryLink small{display:block;color:#c7a16c;font-size:12px;letter-spacing:0;margin-top:7px}.foundryLink:hover small{color:#ffe2ab}.foundryLink:focus-visible{outline:3px solid var(--gold);outline-offset:5px}
#lobby .joincard{background:linear-gradient(145deg,#1c2224f5,#101619f5);border-color:#a7977044;border-radius:8px;box-shadow:0 22px 65px #0008;position:relative;border-top:2px solid #a88b5b}
#lobby .joincard h2{font-family:Georgia,serif;font-weight:400;font-size:30px;letter-spacing:-.7px}#lobby .joincard .primary{background:#c5ad7d;color:#151b1c;border-radius:4px}#lobby .joincard .primary:hover{background:#e8cc91}#lobby .joincard input,#lobby .joincard select{background:#0c1317;border-color:#a49b7544;border-radius:4px}#lobby .joincard .tabs{background:#0d1417}#lobby .joincard .tabs .selected{background:#4b5142}
@media(max-width:1000px){#lobby{grid-template-columns:minmax(0,1fr) 360px;gap:24px;padding-left:28px;padding-right:28px}.evolveTitle{font-size:clamp(64px,8vw,92px)}.wildhavenTitle{font-size:24px}.foundryLink{gap:9px;letter-spacing:0}}
@media(max-width:720px){#lobby{display:block;inset:70px 0 0;padding:18px 18px 36px}.evolveIntro{padding:8px 4px 26px;max-width:520px;margin:auto}.evolveIntro h1{max-width:none;margin:14px 0 25px}.wildhavenTitle{font-size:20px;letter-spacing:.2em}.evolveTitle{font-size:clamp(68px,16vw,100px)}.clawMarks{height:145px;left:64%;top:0}.evolveIntro .introLead{display:block;font-size:24px;margin-bottom:8px}.evolveIntro .introLead br{display:block}.evolveIntro>p:not(.introLead):not(.refugePreviewStatus):not(.prototype){display:none}.evolveIntro .pills{display:none}.evolveIntro .refugePreviewStatus{margin:16px 0 6px;font-size:10px}.evolveIntro .prototype{font-size:9px}.foundryLink{margin-top:14px}.foundryLink img{width:62px;height:62px}.foundryLink small{font-size:11px}#lobby .joincard{max-width:520px;margin:auto;padding:22px}body:not(.playing) #shade{background:linear-gradient(90deg,#090d10dc,#090d1080),linear-gradient(0deg,#090d10bb,transparent)}}
@media(prefers-reduced-motion:reduce){.dnaMark,.clawMarks{animation:none}}

/* Keep the map below touch actions, including Safari landscape. */
.playing.touch .touchActions{grid-template-columns:repeat(4,62px);gap:6px}
.playing.touch #touchExtras{width:min(290px,72vw);max-height:min(38dvh,260px);grid-template-columns:repeat(3,1fr)}
.playing.touch:has(#touchExtras:not([hidden])) #miniMap{visibility:hidden}
#playtestFeedback{border-color:#e4b45d;color:#ffe1a0}
@media(max-width:500px){.playing.touch .touchActions{grid-template-columns:repeat(2,64px)}.playing.touch #touchExtras{max-height:30dvh}.playing .topactions{gap:4px}.playing #connection{display:none}#playtestFeedback{max-width:100px;line-height:1.15}}

/* V0.8 sensory HUD: shared canvas also becomes the in-headset compass. */
#scentCompass{position:fixed;top:max(52px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(720px,94vw);height:auto;pointer-events:none;z-index:12;border-radius:12px;border:1px solid #bdc99d55}
#scentCompass[hidden]{display:none}body:not(.playing) #scentCompass{display:none}
#touchSniff{touch-action:none;border-color:#d9c891}

body.scent-active.touch #hud,body.scent-active.touch #miniMap{top:calc(60px + min(118.8px,15.51vw))}
body.scent-active #notice{top:180px}body.scent-active.touch #notice{top:265px}
.touchActions #touchSniff.held{background:#f4c56b;color:#162c23}

/* Public playtester invitation: visible on desktop and small screens. */
#lobby .intro > p.playtesterDiscord{display:block;margin:16px 0;font-size:14px}
.playtesterDiscord a{display:inline-block;color:var(--gold);font-weight:750;padding:8px 0;text-underline-offset:4px}
.playtesterDiscord a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.playtesterDiscord small{color:var(--muted);font-size:12px}
@media(max-width:600px){#lobby .intro > p.playtesterDiscord{margin:8px 0}.playtesterDiscord small{display:none}}
