:root{--bg:#0e1417;--panel:#172126;--panel2:#202c2f;--line:#354244;--text:#f5e9d4;--muted:#91a29d;--gold:#e2ac60;--gold2:#f7c879;--green:#92cf9b;--red:#e98372;--blue:#8cb9c3}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);font-family:Inter,Arial,sans-serif;color:var(--text)}button{font:inherit;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.36;cursor:not-allowed}.shell{min-height:100dvh;display:flex;flex-direction:column;max-width:1600px;margin:auto;background:radial-gradient(ellipse at 50% 10%,#283330 0%,#10191b 55%,#0e1417 100%)}.topbar{height:70px;display:flex;align-items:center;justify-content:space-between;padding:10px 24px;background:#101a1de8;border-bottom:1px solid #3a4947}.brand{display:flex;align-items:center;gap:10px}.brand-icon{font-size:31px;color:var(--gold)}.brand strong{display:block;font-weight:950;letter-spacing:.16em;font-size:20px}.brand small{display:block;font-size:8px;color:var(--gold);letter-spacing:.29em;margin-top:3px}.timedata{text-align:right;margin-left:auto}.timedata span{color:var(--gold);font-weight:800;font-size:11px;letter-spacing:.12em;margin-right:10px}.timedata strong{font-size:16px}.timedata small{display:block;color:var(--muted);font-size:9px;letter-spacing:.12em;margin-top:3px}.iconbutton{background:transparent;color:var(--muted);border:none;margin-left:24px;font-size:22px}.resbar{display:grid;grid-template-columns:repeat(5,1fr);background:#182225;gap:1px;border-bottom:1px solid var(--line)}.resitem{display:flex;align-items:center;gap:10px;padding:14px 17px;border-right:1px solid #354244}.resicon{font-size:23px;width:29px;text-align:center}.resitem strong{display:block;font-size:17px}.resitem small{font-size:10px;color:var(--muted);letter-spacing:.11em}.low{color:var(--red)!important}.statusstrip{display:flex;justify-content:space-around;gap:14px;padding:10px 20px;background:#101b1ce0;border-bottom:1px solid var(--line);font-size:12px}.statusstrip strong{color:var(--gold2)}.main{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;max-width:1440px;width:100%;margin:auto;padding:16px;flex:1;min-height:590px}.game-region{display:flex;flex-direction:column;min-width:0}.worldhead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:3px 5px 13px}.eyebrow{color:var(--gold);font-weight:850;font-size:10px;letter-spacing:.15em}.worldhead h1{font-size:23px;margin:3px 0;font-weight:900}.leveltag{border:1px solid #79623f;color:var(--gold2);background:#302c23;border-radius:6px;padding:9px 11px;font-size:10px;font-weight:800;white-space:nowrap}.world{position:relative;flex:1;min-height:440px;overflow:hidden;background:radial-gradient(ellipse,#62442b 0%,#372f28 47%,#202a2a 100%);border:1px solid #62513c;border-radius:13px;box-shadow:inset 0 0 90px #000a}canvas{display:block;width:100%;height:100%;touch-action:none}.forecast{position:absolute;top:15px;left:16px;background:#131c1edb;border:1px solid #776442;border-radius:7px;padding:9px 12px;font-size:12px;color:#e8d9ba;pointer-events:none}.dust{position:absolute;inset:0;pointer-events:none;opacity:0;background:repeating-linear-gradient(166deg,transparent 0 18px,#e8a76713 19px 21px,transparent 22px 35px);transition:opacity 1.3s}.dust.storm{opacity:1;animation:storm .75s linear infinite}@keyframes storm{from{transform:translateX(-18px)}to{transform:translateX(18px)}}.worldbuttons{position:absolute;right:12px;top:12px;display:flex;flex-direction:column;gap:6px}.worldbuttons button{background:#101c1fe8;border:1px solid #69706a;color:#e5d9bd;width:34px;height:34px;border-radius:7px;font-size:19px}.viewnote{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);font-size:10px;white-space:nowrap;color:#f7e8c7;background:#15201fbb;letter-spacing:.08em;padding:8px;border-radius:5px;pointer-events:none}.ticker{padding:12px 7px;color:#c1b7a1;font-size:12px}.tickdot{display:inline-block;width:7px;height:7px;border-radius:100%;background:var(--gold);margin-right:8px;box-shadow:0 0 10px var(--gold)}.panel{border:1px solid #45514c;background:linear-gradient(150deg,#253034,#151e20);border-radius:12px;overflow:auto;max-height:720px}.panel-inner{padding:20px}.overline{font-size:10px;font-weight:850;letter-spacing:.18em;color:var(--gold)}.panel h2{font-size:23px;font-weight:900;margin:10px 0 6px}.descr{font-size:13px;color:#b9c0b6;line-height:1.6;margin:7px 0 15px}.building-icon{font-size:35px;background:#403b2c;border:1px solid #736248;width:65px;height:65px;border-radius:14px;display:grid;place-items:center;margin-bottom:12px}.section-title{font-size:10px;color:var(--gold);font-weight:850;letter-spacing:.15em;margin:20px 0 12px}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.stat{padding:10px 11px;background:#172225;border:1px solid #435150;border-radius:7px}.stat span{font-size:10px;color:#9cab9f;display:block}.stat strong{font-size:19px;display:block;margin-top:6px}.costs{display:flex;flex-wrap:wrap;gap:6px;margin:11px 0 17px}.cost{background:#101b1d;border:1px solid #3b4947;padding:8px;border-radius:6px;font-size:12px}.cost.notenough{color:var(--red);border-color:#86594d}.button{border:1px solid #b58044;background:linear-gradient(#ecc17a,#c48c48);color:#241b10;padding:12px 14px;border-radius:8px;font-size:12px;letter-spacing:.03em;font-weight:900;width:100%;min-height:46px}.button.secondary{background:#1e2c30;color:#e8e1d0;border:1px solid #65736e}.button.alert{border-color:#d16b58;background:#643e38;color:white}.button+.button{margin-top:8px}.hint{font-size:12px;line-height:1.5;color:var(--muted);margin:10px 0}.progress{height:8px;border-radius:20px;background:#37413e;overflow:hidden;margin:12px 0}.progress span{height:100%;display:block;background:linear-gradient(90deg,#b17e45,#f7c67c)}.row{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:12px 0}.row .muted{color:var(--muted);font-size:12px}.pill{font-size:10px;font-weight:800;padding:5px 7px;background:#353b34;color:#d9d4ba;border-radius:5px}.listentry{border:1px solid #47534e;background:#202c2e;padding:13px;border-radius:9px;margin:8px 0}.listentry h3{font-size:14px;margin:0 0 5px}.listentry p{margin:5px 0;font-size:12px;line-height:1.4;color:#adbcb3}.listentry .button{min-height:35px;margin-top:8px;padding:9px}.mission{display:flex;align-items:center;justify-content:space-between;padding:12px;border:1px solid #55644f;border-radius:8px;background:#34382c;margin:12px 0;font-size:12px}.mission strong{color:var(--gold2)}.choice{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.choice button{border:1px solid #52605a;background:#172426;color:#e4dfd3;border-radius:7px;padding:12px;font-weight:700;font-size:12px}.choice button.active{background:#493b2c;color:#ffce83;border-color:#e7ac5d}.nav{display:flex;justify-content:center;gap:3px;background:#111b1c;border-top:1px solid #45504c;padding:8px max(16px,env(safe-area-inset-right)) max(9px,env(safe-area-inset-bottom));position:sticky;bottom:0;z-index:5}.navitem{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:transparent;color:#85968b;min-width:100px;padding:7px;font-size:10px;font-weight:800;letter-spacing:.08em}.navitem b{font-size:22px;font-weight:400}.navitem.active{color:var(--gold2)}.modal{position:fixed;inset:0;background:#020608cf;z-index:10;display:flex;align-items:center;justify-content:center;padding:20px}.modal.hidden,.toast.hidden{display:none}.dialog{width:min(440px,100%);background:#1e2b2d;border:1px solid #b08752;border-radius:12px;padding:25px;box-shadow:0 30px 80px #000}.dialog h2{margin:4px 0 15px}.toast{position:fixed;bottom:105px;left:50%;transform:translateX(-50%);width:min(430px,90%);background:#c99250;color:#15150f;border-radius:9px;padding:13px 20px;font-size:12px;font-weight:800;z-index:20;text-align:center;box-shadow:0 6px 35px #0009}@media(max-width:860px){.main{grid-template-columns:1fr;gap:0;margin:0;padding:0;min-height:0}.game-region{min-height:0}.worldhead{padding:11px 14px}.worldhead h1{font-size:19px}.world{min-height:420px;height:55vh;max-height:650px;flex:none;border-radius:0;border-left:0;border-right:0}.panel{border-radius:0;border-left:0;border-right:0;max-height:none}.panel-inner{padding:19px 22px}.navitem{min-width:0;flex:1}.topbar{padding:10px 14px;height:62px}.resitem{padding:9px 3px;display:block;text-align:center}.resicon{display:block;margin:auto;font-size:18px;height:23px}.resitem strong{font-size:12px}.resitem small{font-size:8px}.statusstrip{font-size:10px;gap:5px;padding:8px 5px}.brand strong{font-size:17px}.brand small{font-size:7px}.iconbutton{margin-left:12px}.forecast{font-size:10px}.ticker{min-height:36px;padding:9px 15px;font-size:11px}.worldbuttons{right:8px}}@media(max-width:370px){.statusstrip{font-size:9px}.navitem span{font-size:8px}.world{height:49vh;min-height:360px}}

/* Compact in-game mobile drawer: city remains immersive until the player requests controls. */
.sheet-dismiss{display:none}
@media(max-width:860px){
 .main{display:block;min-height:0;padding:0}
 .world{height:calc(100dvh - 295px);min-height:370px;max-height:760px}
 .panel{position:fixed;left:0;right:0;bottom:67px;z-index:4;max-height:min(63dvh,560px);border-radius:19px 19px 0 0;border:1px solid #896b45;border-bottom:0;box-shadow:0 -18px 85px #000c;visibility:hidden;transform:translateY(105%);transition:transform .23s ease,visibility .23s ease;background:linear-gradient(150deg,#283338,#162021)}
 .panel.sheet-open{visibility:visible;transform:translateY(0)}
 .sheet-dismiss{display:flex;justify-content:space-between;align-items:center;width:100%;padding:11px 22px;background:#27312d;color:var(--gold2);border:0;border-bottom:1px solid #5b5647;font-size:13px;font-weight:850}
 .sheet-dismiss span{font-size:10px;letter-spacing:.14em}
 .ticker{padding-bottom:12px}
}

/* v0.2 | Diegetic survival overlays and expedition cartography */
.world{background:radial-gradient(ellipse at 47% 38%,#986941 0%,#55412d 42%,#1f2b2b 100%)}
.world::before{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(180deg,#e7a96d0b,transparent 33%,#060e1040 100%)}
.scenario-head{position:absolute;z-index:2;bottom:48px;left:17px;max-width:min(360px,calc(100% - 36px));padding:12px 15px;border:1px solid #bda06b88;border-left:3px solid #e9b875;background:linear-gradient(115deg,#152026ed,#172524d0);box-shadow:0 8px 25px #0008;pointer-events:none}
.scenario-head span,.scenario-head strong,.scenario-head small{display:block}.scenario-head span{font-size:9px;letter-spacing:.18em;color:#f1b979;font-weight:850;margin-bottom:5px}.scenario-head strong{font-size:12px;line-height:1.4;letter-spacing:.05em;color:#fff0d3}.scenario-head small{font-size:11px;line-height:1.4;color:#b4c2b8;margin-top:4px}
.storm-eta{position:absolute;z-index:2;top:60px;left:16px;pointer-events:none;border-radius:5px;background:#172326d9;color:#f2ce95;padding:6px 10px;font-size:10px;letter-spacing:.03em;border:1px solid #88734d77}.storm-eta.danger{background:#722c20dd;border-color:#e5a36d;color:#ffe1b5;font-weight:900;animation:storm-warning 1s ease-in-out infinite alternate}@keyframes storm-warning{from{opacity:.83}to{opacity:1}}
.quick-controls{display:flex;gap:8px;padding:9px 2px 0}.survival-action{flex:1;background:linear-gradient(125deg,#574532,#332e26);border:1px solid #ba9459;border-radius:7px;color:#f4dbac;font-size:11px;line-height:1.25;font-weight:800;padding:12px 10px;min-height:40px}.survival-action.secondary{background:#1a292b;color:#cbdad3;border-color:#526764}.survival-action.engaged{background:#2d5849;border-color:#a5d6ac;color:#d8f6d9}
.viewnote{bottom:8px;left:auto;right:12px;transform:none;font-size:9px;opacity:.76}.integrity-chip{white-space:nowrap}.integrity-chip strong{color:#efd69b}.integrity .row{margin-bottom:2px}.good{color:#a4dba5}.reportline{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #45514a;padding:10px 2px;font-size:13px}.microcopy{font-size:11px;color:#9fb5a6;line-height:1.5}.decision-list{display:grid;gap:10px;margin:18px 0}.decision{display:block;width:100%;text-align:left;background:#25322f;color:#f5ebd8;border:1px solid #9e855d;border-radius:9px;padding:14px 15px}.decision strong,.decision span{display:block}.decision strong{font-size:13px;margin-bottom:5px}.decision span{font-size:12px;line-height:1.4;color:#aabcb1}.decision:disabled{opacity:.4}.crisis-dialog{max-height:88dvh;overflow:auto}.crisis-dialog h2{font-size:28px}.briefing-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.briefing-grid>div{padding:10px 12px;border-radius:8px;border:1px solid #475a54;background:#142426}.briefing-grid small{font-size:9px;color:#aabcb1;display:block;letter-spacing:.09em}.briefing-grid strong{display:block;font-size:24px;margin-top:6px}
.sector-map{height:220px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 65% 40%,#9c7954,#614a37 52%,#2b3530 100%);border:1px solid #9f8055;border-radius:10px;margin:15px 0;box-shadow:inset 0 0 45px #0006}.sector-map::after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(155deg,#fff1b50b 0 1px,transparent 1px 12px);opacity:.8}.map-grid{position:absolute;inset:0;background-image:linear-gradient(#d9bd8633 1px,transparent 1px),linear-gradient(90deg,#d9bd8633 1px,transparent 1px);background-size:32px 32px;transform:rotate(-12deg) scale(1.3)}.sector-road{position:absolute;border-top:3px dashed #dbb782ad;transform-origin:left center}.road-a{width:53%;left:25%;top:67%;transform:rotate(-30deg)}.road-b{width:43%;left:25%;top:67%;transform:rotate(14deg)}.sector-pin{position:absolute;z-index:2;font-size:24px;color:#ffe3aa;text-shadow:0 2px 12px #000;display:flex;flex-direction:column;align-items:center;gap:1px}.sector-pin small{font-size:8px;letter-spacing:.1em;font-weight:900;display:block;background:#182629dd;padding:3px 5px;border:1px solid #c6a36c}.sector-pin.safe{left:18%;top:57%;color:#b5efd1}.sector-pin.p1{left:69%;top:20%}.sector-pin.p2{left:66%;top:73%}.sector-pin.p3{left:46%;top:12%}.sector-coordinates{position:absolute;z-index:2;top:9px;left:11px;font-size:8px;color:#ffe1b4;letter-spacing:.09em;background:#20302cb3;padding:5px 6px}.exploration-score{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.06em;color:#b9cbbf;border-bottom:1px solid #48534c;padding:10px 0 15px}.exploration-score strong{color:#ebc488;font-size:16px}.expedition-option{border:1px solid #536057;border-radius:9px;padding:14px;margin:12px 0;background:linear-gradient(150deg,#293534,#1e2a2a)}.expedition-option h3{font-size:13px;margin:0}.expedition-option p{font-size:12px;color:#adbbad;line-height:1.5}.expedition-option .row{margin:2px 0 10px}.expedition-option .route-meta{display:flex;gap:12px;font-size:11px;color:#e1c79e;margin:10px 0}.expedition-option .button{min-height:36px;padding:9px}.destination-index{color:#e4b16b;font-size:12px}
@media(max-width:860px){.scenario-head{bottom:46px;left:12px;padding:9px 11px;max-width:min(300px,calc(100% - 24px))}.scenario-head strong{font-size:11px}.scenario-head small{font-size:10px}.quick-controls{padding:7px 10px 0;gap:7px}.survival-action{font-size:10px;min-height:43px;padding:10px 7px}.statusstrip{flex-wrap:wrap;row-gap:6px}.integrity-chip{font-size:9px}.viewnote{bottom:8px;right:9px;font-size:7px}.storm-eta{top:54px;left:11px;font-size:9px}.world{height:calc(100dvh - 337px);min-height:340px}.ticker{padding-top:6px}.crisis-dialog h2{font-size:22px}}
@media(max-width:390px){.topbar{height:55px}.statusstrip{padding:6px 4px}.world{height:calc(100dvh - 318px);min-height:320px}.forecast{font-size:9px;top:9px;left:9px;padding:7px 9px}.storm-eta{top:48px}.scenario-head{max-width:260px}.viewnote{display:none}}
@media(prefers-reduced-motion:reduce){.dust.storm,.storm-eta.danger{animation:none}.panel{transition:none}}
/* Keep survival decisions reachable rather than hidden beneath the navigation. */
@media(min-width:861px){.nav{position:relative;bottom:auto}.main{min-height:610px}.quick-controls{padding-top:10px}.world{min-height:420px}}
@media(max-width:860px){.nav{position:fixed;bottom:0;left:0;right:0;z-index:6;box-shadow:0 -8px 30px #0009}.quick-controls{position:fixed;left:0;right:0;bottom:65px;z-index:5;padding:9px 10px 8px;background:linear-gradient(180deg,#101a1cd9,#101a1cf7)}.ticker{display:none}.world{height:calc(100dvh - 355px);min-height:320px;max-height:none}.panel{bottom:126px;z-index:7;max-height:min(60dvh,560px)}.scenario-head{bottom:50px}}
@media(max-width:390px){.world{height:calc(100dvh - 342px);min-height:305px}.panel{bottom:126px}}

/* DUSTFALL v0.3 — interactive staffing and visible security state. */
.crew-section{margin:12px 0 20px;padding:12px;border:1px solid #52645a;background:linear-gradient(160deg,#293835,#1c2b2c);border-radius:11px}.crew-section>.descr{font-size:12px;line-height:1.55}.crew-summary{display:flex;justify-content:space-between;gap:6px;align-items:center;background:#101e20;padding:9px 10px;border-radius:7px;color:#b9cabb;font-size:10px;margin:12px 0;letter-spacing:.04em}.crew-summary strong{color:#ffe3b7;font-size:13px}.crew-line{display:flex;align-items:center;gap:8px;border-bottom:1px solid #5361595a;padding:11px 0;min-width:0}.crew-line:last-of-type{border:0}.crew-icon{font-size:20px;flex:0 0 25px;text-align:center}.crew-meta{min-width:0;flex:1}.crew-meta strong{display:block;font-size:12px;color:#ecdfca;line-height:1.2}.crew-meta small{display:block;font-size:10px;color:#a8bcb1;margin-top:4px}.crew-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}.crew-actions button{background:#374e4a;border:1px solid #66847a;color:#fff3dd;border-radius:6px;width:31px;height:31px;font-size:20px;line-height:1}.crew-actions button:disabled{opacity:.28}.crew-actions output{min-width:22px;text-align:center;font-size:16px;color:#f5c57d;font-weight:800}.crew-locked{opacity:.58}.crew-help{color:#a8bdb2;font-size:10px;margin-top:12px;line-height:1.5}.crew-mini{margin-top:13px;border:1px solid #617063;border-radius:8px;padding:10px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:7px;font-size:10px}.crew-mini strong{font-size:12px;color:#eac891}.crew-mini button{background:transparent;border:0;color:#eac891;font-size:10px;font-weight:800}.colony-threat{position:absolute;z-index:3;left:12px;top:80px;pointer-events:none;background:#16272ce6;border:1px solid #a48d63aa;border-radius:7px;padding:8px 10px;font-weight:800;font-size:10px;color:#ebd1a0;letter-spacing:.05em;box-shadow:0 4px 12px #0007}.colony-threat.raid-alert{border-color:#f8815d;background:#3e1d1df0;color:#fff1dc;animation:dangerpulse 1.5s infinite}.good{color:#9fd9a7!important}@media(max-width:860px){.colony-threat{top:80px;left:11px;font-size:9px;padding:7px}.crew-section{margin:10px 0;padding:10px}.crew-summary{flex-wrap:wrap}.crew-line{gap:6px}}@media(prefers-reduced-motion:reduce){.colony-threat.raid-alert{animation:none}}

/* DUSTFALL 0.4 — persistent survival command center */
.life-chip{font-size:10px;font-weight:850;letter-spacing:.025em;color:#b5e3bb}
.life-dialog{width:min(100%,640px);max-height:min(90dvh,850px);overflow-y:auto;overscroll-behavior:contain}
.life-dialog .life-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:14px 0}
.life-overview span{background:#172528;border:1px solid #3c5854;border-radius:8px;padding:10px 8px;font-size:9px;color:#9fb5ad;line-height:1.5}
.life-overview strong{display:block;margin-top:4px;font-size:16px;color:#fff0d7}
.life-rates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:12px 0 19px}
.life-meter{padding:10px 7px;background:#1b2b2e;border-radius:8px;border:1px solid #344e49;min-width:0}
.life-meter span,.life-meter small{display:block;font-size:9px;color:#b8c7be}
.life-meter strong{display:block;font-size:17px;margin:5px 0}
.life-group{margin:16px 0 8px}.life-group h3{font-size:12px;color:#f4c47e;letter-spacing:.07em;text-transform:uppercase;margin:0 0 9px}
.life-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.life-group:last-of-type .life-options{grid-template-columns:repeat(2,minmax(0,1fr))}
.life-option{min-height:84px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:11px 9px;border:1px solid #42605c;border-radius:8px;background:#1d3032;color:#f2e5cf}
.life-option.chosen{border-color:#ebb878;background:#394439;box-shadow:inset 0 0 0 1px #d5ab6f}
.life-option strong{font-size:11px;line-height:1.35}.life-option small{display:block;color:#adc4b7;font-size:10px;line-height:1.4;margin-top:5px}
@media(max-width:860px){.quick-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.quick-controls .survival-action{min-width:0;white-space:normal;font-size:9px;padding:7px 4px;line-height:1.2}.life-dialog{max-height:min(85dvh,760px)}.life-options{gap:5px}.life-option{padding:8px 6px}.life-overview strong{font-size:12px}}
@media(max-width:390px){.life-dialog .life-overview{gap:4px}.life-dialog .life-rates{gap:4px}.life-option small{font-size:9px}.life-meter strong{font-size:13px}}
