/* Last Light — colony field instruments. Artwork remains in the existing atlases. */
@font-face{font-family:Chakra;src:url('/assets/chakra-petch-latin-600-normal.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Plex;src:url('/assets/ibm-plex-sans-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Plex;src:url('/assets/ibm-plex-sans-latin-600-normal.woff2') format('woff2');font-weight:600 800;font-display:swap}
:root{--display:Chakra,'Arial Narrow',sans-serif;--data:Plex,system-ui,sans-serif;--space:#101916;--panel:#19251f;--raised:#24362c;--line:#35483d;--text:#eeeadd;--muted:#aeb9ae;--mint:#b7d7a0;--paper:#eee9da;--ink:#24352b;--paper-line:#cbcdbd}
body{font-family:Plex,system-ui,sans-serif;font-variant-numeric:tabular-nums}
h1,h2,h3{text-wrap:balance}button{transition:background .18s,color .18s,box-shadow .18s,transform .18s}.button{font-family:var(--display);border-radius:2px}.button.primary{background:var(--mint);border-color:var(--mint)}.button.primary:hover{background:#c9e6b6}.eyebrow{font-size:11px;letter-spacing:.11em}.text-button,.help-button{font-size:13px}.topbar{background:#101916;height:64px;padding-inline:28px;border-bottom-color:#4d5c464d}.brand img{width:158px}.round-label{font-size:12px;letter-spacing:0}.round-label b{font:600 30px var(--display)}.topline{font-size:11px}.top-actions .sound-toggle{font-size:12px}
/* The landscape is the main surface; secondary information follows the map. */
.match-shell{max-width:1920px;margin:auto}.life-strip{min-height:76px;padding:10px 28px;background:#18251e;border-bottom:1px solid var(--line);gap:30px}.life-main>div>span,.life-stat>div>span,.decision>span{font:600 10px var(--data);letter-spacing:.08em}.life-main strong,.life-stat strong{font:600 29px var(--display)}.life-main strong small,.life-stat strong small{font:10px var(--data);letter-spacing:0}.decision strong{font:600 23px var(--display)}.oxygen-pips{gap:5px}.oxygen-pips i{width:17px;height:6px;border-radius:0}.oxygen-pips i.filled{background:var(--mint)}
.match-layout,.critical .match-layout{grid-template-columns:minmax(0,1fr) 388px;height:auto;min-height:0;align-items:start;gap:18px;padding:18px 24px 0}.world-column{gap:0;min-width:0}.surface-world.colony-board{flex:none;min-height:420px;height:clamp(420px,53dvh,660px);border:1px solid #536348;border-radius:3px;background-color:#26382b}.surface-world .district{width:clamp(140px,13vw,195px);height:auto;aspect-ratio:1}.surface-world .node-label{padding:6px 9px;font-size:18px;background:#17241eee;border:1px solid #81927680;border-radius:2px}.surface-world .node-label small{font-size:10px}.surface-world .map-node.selected .node-label{background:#c7d9ac;color:#203227;border-color:#d8e6c6;box-shadow:0 3px 0 #10191680}.surface-world .map-node.selected .node-label small{color:#344c3a}.surface-world .board-caption{top:18px;left:20px}.surface-world .board-caption>.clinic-caption{font-size:11px}.surface-world .resident-dispatch{font-size:11px;line-height:1.5;bottom:33px;max-width:70%;text-shadow:0 1px 3px #101916}.surface-world .board-bottom{bottom:12px;font-size:9px}.annex-label{font-size:10px}.annex-label small{font-size:9px}.rover-name{font-size:9px;padding:3px 5px}.rover-body{width:72px;height:72px;left:-36px;top:-36px}
.merchant-strip{min-height:0;margin-top:12px;border:1px solid var(--line);background:#18241e}.merchant{padding:12px 14px}.merchant-head{gap:8px}.merchant-head>strong{font-size:12px;max-width:145px}.merchant-head>span{font-size:17px}.merchant-head>.merchant-portrait{width:36px;height:36px;border-radius:1px}.merchant>p{font-size:11px;margin:5px 0}.merchant .public-order{font-size:10px}.merchant .cargo-withheld{font-size:11px;min-height:19px}.merchant-cargo{gap:14px}.merchant-cargo span{font-size:12px}.merchant.is-you{background:#26362a;box-shadow:inset 0 3px var(--mint)}
.event-rail{order:2;padding:8px 2px;border-top:0;min-height:56px}.event-rail .eyebrow{font-size:10px}.event-rail b{font-size:12px;margin-top:2px}.event-rail .text-button{font-size:12px}.guide-note{order:3;padding:13px 16px;border:1px solid #4e6548;background:#213226;border-left:3px solid var(--mint);gap:5px 18px}.guide-note .eyebrow{font-size:10px}.guide-note p{font-size:13px;line-height:1.5}.guide-note button{font-size:12px}.merchant-market{order:4;margin-top:18px;padding:18px 0;background:transparent;border-top:1px solid var(--line)}.market-heading h2{font-size:25px}.market-heading .eyebrow{font-size:10px}.market-empty{font-size:13px}.market-lot{background:#19271f;border-color:var(--line);padding:12px}.market-lot small,.market-lot strong{font-size:12px}.npc-market-reason{font-size:12px}.match-footer{font-size:10px;letter-spacing:.02em;padding:16px 24px}
/* Warm paper is reserved for the player's current decision. */
.trade-panel{--text:var(--ink);--muted:#596451;--line:var(--paper-line);--space:#e4e0d1;--panel:var(--paper);--raised:#dedfcb;--mint:#355d40;--coral:#a84131;--amber:#765921;color-scheme:light;color:var(--ink);background:var(--paper);border:1px solid #d8d8c6;border-top:4px solid #a9c88e;border-radius:3px;display:flex;flex-direction:column;min-height:0;box-shadow:0 8px 30px #07100b30}
.panel-heading{padding:15px 18px 13px}.panel-heading .eyebrow{font-size:10px;margin-bottom:10px;color:#596451;letter-spacing:.06em}.panel-heading h2{font-size:30px}.terminal-location .merchant-portrait{width:40px;height:40px;border-color:#7c9070;border-radius:1px}.cash{font:600 26px var(--display);gap:6px}.cash small{font:11px var(--data)}.cash .icon{color:#80612b}.hold-meta{margin-top:12px;font-size:12px;justify-content:space-between;gap:10px}.hold-meta b{font:600 12px var(--data);margin-left:4px}
.action-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;padding:6px;background:#dcdcca;border-block:1px solid #c4c9b6}.action-tabs button{font:600 13px var(--display);min-height:41px;padding:7px 2px;border-radius:2px;color:#58634e}.action-tabs button:hover{background:#cbd2bc}.action-tabs button.active{color:#f4f0e3;background:#304f38;box-shadow:0 2px 0 #203726}
.trade-form{padding:12px 18px;overflow:visible;flex:none}.first-move-hint{font-size:12px;line-height:1.45;background:#e0e4ce;color:#3e563a;border:0;border-left:2px solid #75945e;padding:9px 11px;margin-bottom:10px}.goods-list{gap:4px;margin-bottom:12px}.good{min-height:56px;padding:5px 10px;border:1px solid #d0d2bf;border-radius:2px;background:#f5f0e3;color:#293e2d;gap:13px}.good .resource{width:45px;height:45px}.good:hover{background:#e5e9d7}.good.selected{background:#d9e3c9;border:1px solid #66884f;box-shadow:inset 3px 0 #456437}.good strong{font-size:15px}.good small{font-size:12px;color:#5b6654}.good-tick{color:#3d6537}.good-tick .icon{width:19px;height:19px}.form-row{min-height:42px;margin-top:6px}.form-row>label{font-size:12px;max-width:180px;color:#3f503c}.form-row label>small{font-size:11px}.form-row select{font-size:12px;max-width:163px}.trade-panel input,.trade-panel select,.stepper button{background:#f7f3e8;color:#293e2d;border-color:#aab69b}.stepper{height:40px;border-color:#aab69b}.stepper button{width:35px}.stepper input{width:39px}.form-row>input{font-size:14px}.form-note{font-size:12px;line-height:1.5;margin-top:10px}.destination{background:#f5f0e3;border-color:#bdc5ac;min-height:79px;padding:14px}.destination.selected{background:#d9e3c9;border-color:#66884f;box-shadow:inset 3px 0 #456437}.destination strong{font-size:25px}.destination small{font-size:12px;margin-top:4px}.wait-state h3{font-size:26px}
.action-preview{padding:12px 18px 0;background:#e5e3d3}.action-preview>div{font-size:12px;padding:4px 0;gap:18px;align-items:baseline}.action-preview>div>span{max-width:58%;line-height:1.4}.action-preview strong{font:600 12px/1.4 var(--data);text-align:right}.preview-warning{font-size:11px;line-height:1.4;min-height:0;padding:9px 0}.preview-warning.invalid{color:#a13729}.confirm-area{padding:12px 18px;background:#e5e3d3}.confirm-area>.button{min-height:49px;font:600 16px var(--display);background:#304f38;color:#faf6e8;border-color:#304f38;box-shadow:0 3px 0 #1d3424}.confirm-area>.button:hover{background:#426344}.confirm-area>.button:disabled{background:#778270;color:#fff;box-shadow:none;opacity:.65}.settlement-note{font-size:10px;margin-top:9px}.receipt{padding:12px 18px;border-top:1px solid #cbcdbd;background:#f6f1e5}.receipt-state{font-size:10px;letter-spacing:.05em;font-weight:600}.receipt-state.settled{color:#366039}.receipt-state.rejected{color:#a13729}.receipt p{font-size:12px;line-height:1.5;margin-top:6px}.trade-panel :focus-visible{outline-color:#365e35}
/* The same typography and instrument details continue outside the match. */
.game-front .landing-hero{min-height:calc(100svh - 64px);padding:60px 7vw 85px}.game-front .landing-hero:has(.identity-picker) h1{font-size:clamp(76px,8.4vw,130px);line-height:.88;letter-spacing:-.065em;margin:28px 0}.game-front .landing-hero:has(.identity-picker) .hero-promise{font-size:clamp(27px,3vw,40px);line-height:1.15;letter-spacing:-.025em}.game-front .landing-hero:has(.identity-picker) .hero-summary{font-size:15px;line-height:1.6;max-width:340px;margin-top:18px}.game-front .landing-hero-art{background-color:#19291d}.game-front .hero-play{gap:12px}.game-front .hero-play .button{min-height:52px;font-size:16px}.game-front .hero-caption{font-size:10px;letter-spacing:.08em}.match-settings>summary{font-size:12px}.identity-name>label,.identity-picker legend{font-size:11px}.identity-picker>p{font-size:11px}.front-intro h2{font-size:clamp(34px,4vw,58px);line-height:1.12}.front-multiplayer h2{font-size:46px;line-height:1.15}.front-intro>div>p:not(.eyebrow),.front-multiplayer p{line-height:1.7}.near-lobby h1,.room-screen h1{font-size:clamp(38px,5vw,70px);line-height:1.1;letter-spacing:-.03em}.result-screen h1{font-size:clamp(54px,7vw,100px);line-height:1.02;letter-spacing:-.04em}.score-table{font-size:14px}.how-to-dialog{border-radius:3px;border-color:#5b7051;border-top-color:var(--mint);background:#19251f}.how-to-dialog h2{font-size:38px;line-height:1.15}.how-to-steps h3{font-size:23px;line-height:1.2}.how-to-steps li>span{background:#30432b;color:#d7e4bb}.how-to-footer{background:#19251f}.ledger h2{font-size:32px}.ledger-round p{font-size:13px}
@media(min-width:761px) and (max-height:820px){.match-layout{padding-top:12px}.life-strip{min-height:65px;padding-block:6px}.trade-panel .panel-heading{padding-block:10px}.trade-panel .panel-heading .eyebrow{margin-bottom:5px}.trade-panel .hold-meta{margin-top:7px}.trade-panel .trade-form{padding-block:9px}.trade-panel .good{min-height:48px}.trade-panel .good .resource{width:37px;height:37px}.trade-panel .goods-list{gap:3px;margin-bottom:8px}.trade-panel .first-move-hint{padding:6px 9px;font-size:11px;margin-bottom:7px}.trade-panel .action-preview{padding-top:7px}.trade-panel .action-preview>div{font-size:11px;padding:3px 0}.trade-panel .action-preview strong{font-size:11px}.trade-panel .confirm-area{padding-block:8px}.trade-panel .receipt{padding-block:9px}.trade-panel .preview-warning{padding:6px 0}.trade-panel .settlement-note{margin-top:5px}.trade-panel .form-row{min-height:38px;margin-top:3px}.surface-world.colony-board{height:420px}}
@media(min-width:761px) and (max-width:1100px){.match-layout{grid-template-columns:minmax(0,1fr) 350px;gap:12px;padding-inline:16px}.merchant{padding:10px 8px}.merchant-head{flex-wrap:wrap;gap:4px}.merchant-head>strong{max-width:100px}.merchant-head>span{font-size:14px}.merchant-cargo{gap:7px}.life-strip{gap:18px}.surface-world .district{width:140px}.surface-world .node-label{font-size:15px}.surface-world .resident-dispatch{max-width:90%}.guide-note{display:block}.guide-note p{margin-top:5px}}
/* Portrait phones get a map, then the decision panel, then supporting details. */
@media(max-width:760px){.topbar{height:58px;padding:0 14px;gap:10px}.brand img{width:117px}.round-label{gap:5px;font-size:9px}.round-label b{font-size:25px}.top-actions{gap:2px}.top-actions .sound-toggle{width:32px;min-width:32px}.top-actions .sound-toggle span{display:none}.help-button{font-size:11px;padding:5px}.topline{display:none}.life-strip{min-height:84px;padding:10px 14px;gap:12px;flex-wrap:wrap;justify-content:space-between}.life-main{gap:8px}.life-main>.icon{width:20px}.life-main>div>span,.life-stat>div>span,.decision>span{font-size:8px}.life-main strong,.life-stat strong{font-size:24px}.life-main strong small,.life-stat strong small{font-size:8px}.oxygen-pips{display:none}.life-stat{gap:6px}.life-stat>.icon{width:17px}.life-stat.deadline{display:none}.decision{margin-left:0;min-width:0;text-align:right;padding:0;border:0}.decision strong{font-size:18px}.decision>span{display:block;max-width:80px}.match-layout,.critical .match-layout{display:flex;flex-direction:column;padding:10px 12px 0;gap:12px;height:auto}.world-column{display:contents}.surface-world.colony-board{order:0;min-height:310px;height:310px;width:100%;border-radius:2px}.surface-world .district{width:125px;height:125px}.surface-world .map-node{width:30%}.surface-world .node-label{font-size:15px;padding:4px 6px;gap:2px 5px}.surface-world .node-label small{font-size:8px}.surface-world .board-caption{top:12px;left:12px}.surface-world .board-caption .eyebrow{font-size:10px}.surface-world .board-caption>.clinic-caption{font-size:9px}.surface-world .resident-dispatch{left:12px;bottom:30px;max-width:94%;font-size:9px}.surface-world .board-bottom{left:12px;right:12px;font-size:7px;bottom:10px}.plant-annex>.ground-building{width:65px;height:65px}.annex-label{font-size:8px}.annex-label small{font-size:7px}.rover-body{width:58px;height:58px;left:-29px;top:-29px}.rover-name{font-size:7px}.trade-panel{order:1;width:100%;border-top-width:3px;box-shadow:none;display:flex}.panel-heading{padding:14px 16px}.panel-heading h2{font-size:28px}.panel-heading .eyebrow{font-size:10px}.cash{font-size:26px}.hold-meta{font-size:12px}.action-tabs{gap:3px;padding:5px}.action-tabs button{font-size:13px;min-height:44px}.trade-form{padding:14px 16px;overflow:visible;max-height:none}.good{min-height:60px}.good .resource{width:46px;height:46px}.good small{font-size:12px}.goods-list{gap:6px}.form-row{min-height:46px}.form-row>label{font-size:13px}.stepper{height:44px}.stepper input{min-height:42px}.stepper button{width:38px}.action-preview{padding:13px 16px 0}.action-preview>div{font-size:12px;padding:5px 0}.action-preview strong{font-size:12px}.confirm-area{position:static;padding:13px 16px 15px;z-index:auto;border:0}.confirm-area>.button{font-size:17px;min-height:52px}.settlement-note{font-size:11px}.receipt{padding:13px 16px}.receipt p{font-size:12px}.merchant-strip{order:3;width:100%;margin:0;grid-template-columns:1fr}.merchant{padding:12px 14px;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:0 12px}.merchant:last-child{border-bottom:0}.merchant-head{grid-column:1/-1}.merchant-head>strong{font-size:14px;max-width:190px}.merchant>p{font-size:12px}.merchant .public-order{grid-column:1/-1}.merchant-cargo{align-items:center;gap:12px}.merchant .cargo-withheld{padding:0;min-height:0;text-align:right}.merchant-market{order:5;margin:0;width:100%;padding:17px 3px}.event-rail{order:4;width:100%;flex-wrap:wrap;padding:4px 2px}.event-rail .eyebrow{font-size:9px}.event-rail b{font-size:11px}.event-rail .text-button{font-size:12px}.guide-note{order:2;display:block;width:100%;padding:13px 15px}.guide-note p{margin-top:5px;font-size:13px}.guide-note button{font-size:13px;margin-top:4px}.match-footer{padding:14px 16px;display:block;font-size:9px}.match-footer span{display:block;margin:5px 0}.game-front .landing-hero{padding:36px 24px 72px;min-height:calc(100svh - 58px)}.game-front .landing-hero:has(.identity-picker) h1{font-size:81px;line-height:.88;margin:22px 0;letter-spacing:-.065em}.game-front .landing-hero:has(.identity-picker) .hero-promise{font-size:28px;line-height:1.2}.game-front .landing-hero:has(.identity-picker) .hero-summary{font-size:13px;margin-top:14px;max-width:275px}.game-front .landing-hero:has(.identity-picker) .hero-play{margin-top:22px;gap:10px}.game-front .hero-play .button{font-size:14px;min-height:49px;padding-inline:14px}.game-front .hero-caption{font-size:8px;gap:7px;left:24px;right:20px;bottom:22px}.front-intro h2{font-size:34px}.front-multiplayer h2{font-size:35px}.how-to-dialog h2{font-size:30px}.how-to-steps h3{font-size:21px}.near-lobby h1,.room-screen h1{font-size:38px}.result-screen h1{font-size:55px}.landing-nav{gap:14px}.landing-nav a,.landing-nav button{font-size:12px}}
.trade-panel{height:auto;overflow:visible;position:static}.trade-panel>*{flex-shrink:0}.surface-world .node-depot .node-label{transform:translate(-35px,-20px)}
.near-screen{max-width:1000px;padding-top:54px}.near-screen>h1{font-size:clamp(40px,5vw,68px);line-height:1.1;letter-spacing:-.035em}.near-screen>p:not(.eyebrow){max-width:550px;font-size:16px;line-height:1.7}.near-controls{max-width:560px;background:#1b2b21;border:1px solid #45583e;border-top:3px solid #a9c88e;padding:28px;margin-top:30px}.near-controls .button{min-height:48px}.near-controls .small{font-size:13px;line-height:1.7}.near-controls form{border-top:1px solid #45583e;padding-top:22px;margin-top:16px}.near-controls label{font-size:14px}.near-controls #near-code{letter-spacing:.14em;font-size:18px}.room-code{border-left:3px solid var(--mint)}
@media(max-width:760px){.life-stat.health{display:flex}.life-strip{gap:10px}.life-stat.health strong{font-size:23px}.life-stat.health .icon{display:none}.life-main strong small{display:block}.life-main strong{line-height:1.25}.life-main>div>span{font-size:8px}.decision strong{font-size:16px}.decision>span{font-size:7px;max-width:62px}.surface-world .node-depot .node-label{transform:translate(-7px,-25px)}.near-screen{padding:30px 20px}.near-controls{padding:20px 18px;max-width:none}.near-screen>p:not(.eyebrow){font-size:15px}.merchant-head{justify-content:flex-start}.merchant-head>.merchant-portrait{margin:0}.merchant-head>span{margin-left:auto}}
@media(min-width:761px){.near-screen:has(.near-controls){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:0 64px;align-items:start;align-content:start;text-align:left;max-width:1160px;padding:70px 32px;margin:auto}.near-screen:has(.near-controls)>.eyebrow{grid-column:1;margin:12px 0 22px}.near-screen:has(.near-controls)>h1{grid-column:1;margin:0 0 26px;font-size:clamp(38px,4.6vw,63px)}.near-screen:has(.near-controls)>p:not(.eyebrow){grid-column:1;margin:0;font-size:17px}.near-screen:has(.near-controls)>.near-controls{grid-column:2;grid-row:1/span 5;margin:0;width:100%}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
