:root{--ink:#e5e6d3;--muted:#a8b6aa;--glass:rgba(18,40,40,.94);--line:rgba(195,220,193,.18);--accent:#e1c58a;--mint:#90d6bb;--dark:#142c2e;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);color-scheme:dark;--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:linear-gradient(#709baf 0%,#c6d7bd 70%,#dae2c6 100%)}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--line);border-radius:7px;color:var(--ink);background:rgba(46,70,61,.64);padding:10px 16px;transition:background .16s,border-color .16s,transform .16s}button:hover{background:#476359;border-color:var(--accent)}button:active{transform:translateY(1px)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.42}button.primary{background:var(--accent);border-color:var(--accent);color:#203734;font-weight:650}.primary:hover{background:#eddbad}button.plain{background:none;border:0}input,select{border:1px solid var(--line);border-radius:6px;padding:12px;background:#213c3c;color:var(--ink);max-width:100%}input[type=range]{padding:0;accent-color:var(--mint)}input[type=checkbox]{accent-color:var(--mint);width:20px;height:20px}a{color:var(--mint)}[hidden]{display:none!important}#world{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none;touch-action:none}.screen-grain{position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 190px rgba(17,38,40,.16)}#boot{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at 50% 35%,#2d504b,#122c31 70%);gap:15px}#boot h1{font-size:36px;font-weight:350;letter-spacing:.24em;margin:24px 0 0 12px}#boot p{color:var(--muted);font-size:14px}#boot small{position:absolute;bottom:40px;letter-spacing:.28em;font-size:10px}.core-mark{position:relative;width:75px;height:75px;border:1px solid #87aa9e;transform:rotate(45deg);animation:core-breathe 3s infinite}.core-mark i{position:absolute;inset:12px;border:2px solid var(--accent)}.core-mark b{position:absolute;inset:24px;background:var(--mint);box-shadow:0 0 35px #8ad8ba66}.loading-line{height:2px;width:130px;background:#36574e;overflow:hidden}.loading-line:after{content:'';display:block;width:45%;height:100%;background:var(--accent);animation:load 1.3s infinite}@keyframes load{from{transform:translateX(-100%)}to{transform:translateX(320%)}}@keyframes core-breathe{50%{box-shadow:0 0 45px #8ac1ac26}}
#front{position:fixed;inset:0;background:linear-gradient(90deg,rgba(14,34,37,.97) 0%,rgba(15,38,39,.9) 26%,rgba(19,39,39,.20) 68%,rgba(14,34,37,.06));display:flex;flex-direction:column}.front-top{display:flex;align-items:center;gap:24px;padding:30px 4.3vw}.studio{font-size:12px;letter-spacing:.14em;font-weight:350}.studio b{font-weight:600}.release{font-size:10px;color:#ccdbc6;letter-spacing:.2em;margin-left:auto}.front-top button{font-size:11px;letter-spacing:.12em}.hero{margin:clamp(16px,5vh,66px) 0 0 6.4vw;max-width:610px}.eyebrow{font-size:10px;letter-spacing:.26em;color:var(--accent);font-weight:550}.hero h1{font-size:clamp(55px,6.4vw,102px);font-weight:280;line-height:1;letter-spacing:-.06em;margin:24px 0 27px;position:relative}.hero h1 span{font-weight:650}.hero h1 i{display:inline-block;width:10px;height:10px;background:var(--accent);transform:rotate(45deg);margin:0 0 8px 18px}.tagline{font-size:clamp(25px,2.65vw,39px);font-weight:360;line-height:1.17;letter-spacing:-.03em;margin:0 0 22px}.intro{font-size:14px;line-height:1.9;color:#c0cdbd;margin:0 0 30px}.front-actions{display:flex;flex-direction:column;align-items:stretch;max-width:330px;gap:10px}.front-actions>.primary{display:flex;align-items:center;justify-content:space-between;padding:17px 21px;text-align:left;font-size:14px;border-radius:3px}.front-actions>.primary.secondary{background:transparent;color:var(--ink);border-color:var(--line)}.front-actions>.primary b{font-size:23px;font-weight:350}.secondary-row{display:flex;gap:5px;justify-content:space-between}.secondary-row button{border:0;padding:10px 0;font-size:12px;background:none;color:var(--muted)}.secondary-row button:hover{color:var(--accent)}.scene-caption{position:absolute;right:4.3vw;bottom:110px;font-size:11px;text-align:right;color:#f3f0d8;line-height:1.8;text-shadow:0 1px 5px #0008}.scene-caption i{width:5px;height:5px;display:inline-block;background:var(--mint);border-radius:50%;margin-right:7px}.scene-caption small{display:block;font-size:10px;opacity:.8}.front-bottom{display:flex;justify-content:space-between;gap:18px;padding:24px 4.3vw;margin-top:auto;font-size:9px;letter-spacing:.17em;color:#bdcabb;border-top:1px solid #c7d7bd17}
#hud{position:fixed;inset:0;pointer-events:none}#hud button,#hud canvas,#hud input,#hud select{pointer-events:auto}.hud-top{position:absolute;top:0;left:0;right:0;padding:16px 22px;display:flex;align-items:center;gap:20px;background:linear-gradient(#132e35b0,transparent)}.world-title{border:0;background:none;padding:0;text-align:left;display:flex;flex-direction:column;gap:2px}.world-title:hover{background:none}.world-title span{font-size:10px;letter-spacing:.20em;color:var(--accent)}.world-title strong{font-size:14px;font-weight:550;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.world-status{display:flex;gap:18px;align-items:center;font-size:11px;margin-left:auto;text-shadow:0 1px 3px #0009}.world-status b{font-size:16px;font-weight:450}.icon-button{width:39px;height:39px;padding:6px;background:var(--glass);font-size:20px}.resource-strip{position:absolute;top:70px;left:22px;display:flex;align-items:center;gap:6px}.resource{display:flex;gap:8px;align-items:center;padding:7px 10px;background:#173637d9;border:1px solid var(--line);border-radius:4px;min-width:85px;font-size:10px}.resource b{font-size:13px;font-weight:550;color:var(--accent)}.resource small{color:var(--muted)}.objective{position:absolute;top:125px;left:22px;width:245px;background:linear-gradient(90deg,#173637dd,#173637ad);border-left:2px solid var(--accent);padding:13px 18px}.objective small{font-size:8px;letter-spacing:.16em;color:var(--accent)}.objective strong{display:block;font-size:13px;margin:8px 0 7px;font-weight:550}.objective span{font-size:11px;line-height:1.55;color:#becbbb;display:block}.objective button{position:absolute;top:3px;right:3px;padding:2px 6px;border:0;background:none;color:var(--muted);font-size:18px}.vitals{position:absolute;left:24px;bottom:calc(36px + var(--safe-bottom));width:172px;text-shadow:0 1px 4px #001c}.vitals>div:not(.bar){display:flex;justify-content:space-between;align-items:center}.vitals small{font-size:8px;letter-spacing:.16em}.vitals span{font-size:11px}.bar{height:4px;background:#1235339e;margin:5px 0 10px;border-radius:3px;overflow:hidden}.bar i{height:100%;display:block;background:var(--mint);width:100%}.bar.energy i{background:var(--accent)}#altitude{color:#e3e5d2}.context-prompt{position:absolute;bottom:calc(117px + var(--safe-bottom));left:50%;transform:translateX(-50%);background:#173b3ced;color:var(--ink);padding:10px 19px;border:1px solid var(--line);border-radius:7px;font-size:12px;max-width:390px;text-align:center}.context-prompt kbd{border:1px solid #b3c6ac55;color:var(--accent);border-radius:3px;padding:2px 5px;margin-right:10px}.minimap-wrap{position:absolute;right:22px;bottom:calc(26px + var(--safe-bottom));width:145px;height:160px;background:#183936d6;border:1px solid #d8e2c946;padding:5px;border-radius:7px}.minimap-wrap canvas{width:133px;height:133px;border-radius:4px;cursor:crosshair}.minimap-wrap b{position:absolute;top:8px;right:12px;font-size:9px}.minimap-wrap span{font-size:8px;letter-spacing:.08em;display:block;text-align:center;overflow:hidden;white-space:nowrap}.action-dock{position:absolute;bottom:calc(25px + var(--safe-bottom));left:50%;transform:translateX(-50%);padding:5px;display:flex;gap:4px;border:1px solid #cedbc140;border-radius:11px;background:#183839ef;box-shadow:0 8px 30px #051b2940;backdrop-filter:blur(12px)}.action-dock button{position:relative;border:1px solid transparent;background:transparent;width:74px;height:65px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;padding:7px 4px}.action-dock button:hover{background:#3d5a4b}.action-dock button.active{border-color:#dfc78a77;background:#b4c49415;color:var(--accent)}.action-dock button svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.action-dock button span{font-size:9px;font-weight:500}.action-dock kbd{font-size:7px;position:absolute;top:3px;right:4px;opacity:.5}.save-status{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);font-size:8px;color:#dae4cdab}.selection{position:absolute;right:22px;top:113px;width:245px;padding:15px;background:var(--glass);border:1px solid var(--line);border-radius:7px;pointer-events:auto}.selection h3{font-size:14px;margin:0 0 8px}.selection p{font-size:11px;line-height:1.6;color:var(--muted);margin:5px 0}.selection .button-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}.selection button{font-size:10px;padding:8px}.build-hint{position:absolute;top:110px;left:50%;transform:translateX(-50%);max-width:380px;text-align:center;padding:12px;background:var(--glass);border:1px solid var(--accent);font-size:12px;border-radius:6px}.build-hint.bad{border-color:#e89079}.joystick,.touch-actions{display:none}
#panel{position:fixed;right:18px;top:82px;bottom:110px;width:365px;max-width:calc(100vw - 36px);background:var(--glass);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:12px;z-index:15;box-shadow:0 18px 65px #00192355;display:flex;flex-direction:column}#panel>header{display:flex;justify-content:space-between;align-items:center;padding:22px;border-bottom:1px solid var(--line)}#panelEyebrow{font-size:8px;letter-spacing:.18em;color:var(--accent)}#panel h2{font-size:23px;font-weight:400;margin:5px 0 0}#panel header button,#dialog header button{font-size:25px;padding:0 6px;border:0;background:none}#panelBody{padding:18px;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#739486 #183939;scrollbar-width:thin}#panelBody p{font-size:12px;line-height:1.7;color:var(--muted)}.build-card{display:block;width:100%;text-align:left;padding:15px;margin-bottom:9px;background:#2a484538;border-color:#cfdec32c}.build-card h3{margin:0 0 5px;font-size:13px;font-weight:550}.build-card p{font-size:10px!important;margin:0 0 8px!important;line-height:1.5!important}.cost{font-size:10px;color:var(--accent)}.section-label{font-size:9px;letter-spacing:.18em;color:var(--accent);margin:24px 0 12px}.person-row{border-top:1px solid var(--line);padding:12px 0;display:grid;grid-template-columns:1fr 128px;align-items:center;gap:10px}.person-row strong{font-size:12px}.person-row small{display:block;font-size:9px;color:var(--muted);margin-top:4px}.person-row select{font-size:10px;padding:7px}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.metric-grid div{padding:13px;background:#294b453e;border:1px solid var(--line);border-radius:6px}.metric-grid strong{display:block;font-size:23px;font-weight:400;color:var(--accent)}.metric-grid span{font-size:10px;color:var(--muted)}.journal-item{display:grid;grid-template-columns:45px 1fr;gap:10px;border-bottom:1px solid var(--line);padding:12px 0;font-size:11px;line-height:1.5}.journal-item small{color:var(--accent);font-size:9px}.full-width{width:100%;margin-top:10px}.warning{color:#eab692!important;background:#6a4a2626;border-left:2px solid #c09867;padding:12px;font-size:12px;line-height:1.7}.muted{color:var(--muted)}
#dialogBackdrop{position:fixed;inset:0;background:#062b35a9;backdrop-filter:blur(7px);z-index:40;display:flex;align-items:center;justify-content:center;padding:25px}#dialog{width:600px;max-width:100%;max-height:90dvh;overflow:auto;background:#163535;border:1px solid var(--line);border-radius:13px;box-shadow:0 20px 100px #04191b90}#dialog header{display:flex;align-items:center;justify-content:space-between;padding:25px;border-bottom:1px solid var(--line)}#dialog h2{font-size:24px;font-weight:400;margin:0}#dialogBody{padding:26px}#dialogBody p{font-size:13px;line-height:1.8;color:#bbccba}.form-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px 0;border-bottom:1px solid var(--line);font-size:12px}.form-row>div small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.form-row input[type=range]{width:170px}.new-form label{display:block;font-size:12px;margin-bottom:8px}.new-form input{display:block;width:100%;margin-bottom:20px}.dialog-actions{display:flex;gap:10px;margin-top:25px;flex-wrap:wrap}.dialog-actions button{flex:1}.save-row{padding:15px;border:1px solid var(--line);border-radius:7px;margin:10px 0}.save-row strong{font-size:15px}.save-row small{display:block;font-size:10px;color:var(--muted);margin:6px 0 13px}.save-row button{font-size:11px;margin-right:5px}.controls-table{border-collapse:collapse;width:100%;font-size:12px}.controls-table td{padding:10px 0;border-bottom:1px solid var(--line)}.controls-table td:first-child{color:var(--accent);width:135px}#toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);padding:14px 22px;border:1px solid var(--accent);background:#193e3bef;border-radius:7px;box-shadow:0 8px 30px #0003;font-size:12px;max-width:85vw;text-align:center;z-index:90}#fatal{position:fixed;z-index:200;inset:0;background:#122f33f8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:30px;text-align:center}#fatal p{max-width:600px;font-size:14px;line-height:1.8;color:#d8bb9a}#fatal h2{font-weight:400;font-size:24px}body.reduced-motion *{animation:none!important;transition:none!important}@media(max-width:1050px){.hero{margin-top:3vh}.hero h1{font-size:67px}.tagline{font-size:30px}.intro{font-size:12px;margin-bottom:24px}.action-dock button{width:61px}.vitals{width:130px}.minimap-wrap{width:120px;height:134px}.minimap-wrap canvas{width:108px;height:108px}.resource{min-width:74px}.scene-caption{max-width:250px}}
@media(pointer:coarse){.action-dock kbd{display:none}.joystick{position:absolute;display:block;left:22px;bottom:calc(117px + var(--safe-bottom));width:100px;height:100px;border-radius:50%;background:#25494355;border:1px solid #d1e4c550;pointer-events:auto;touch-action:none}.joystick>div{position:absolute;left:30px;top:30px;width:40px;height:40px;border-radius:50%;background:#c5d8b973;border:1px solid #dee5c576;pointer-events:none}.touch-actions{position:absolute;right:22px;bottom:calc(117px + var(--safe-bottom));display:grid;grid-template-columns:46px 46px;gap:8px;pointer-events:auto}.touch-actions button{height:44px;padding:6px;background:#1c403bcc;touch-action:none;font-size:21px}.vitals{bottom:calc(228px + var(--safe-bottom));width:100px}.minimap-wrap{top:110px;bottom:auto;right:18px;width:99px;height:113px}.minimap-wrap canvas{width:87px;height:87px}.selection{right:18px;top:237px;width:215px}.context-prompt{bottom:calc(102px + var(--safe-bottom));font-size:10px;max-width:65vw}.objective{width:225px}.action-dock button{width:64px}.save-status{bottom:9px}}
@media(max-width:650px){.front-top{padding:22px;gap:10px}.studio{font-size:9px;letter-spacing:.12em}.release{display:none}.front-top .plain{margin-left:auto}.hero{margin:7vh 25px 0;max-width:95%}.hero h1{font-size:61px;margin:22px 0 25px}.hero h1 i{width:7px;height:7px;margin-left:12px}.eyebrow{font-size:8px}.tagline{font-size:32px}.intro{font-size:12px;line-height:1.9}.front-actions{max-width:300px}.front-actions>.primary{padding:15px 18px;font-size:13px}.scene-caption{bottom:88px;right:23px;font-size:9px;max-width:250px}.front-bottom{padding:20px 23px;flex-direction:column;gap:6px;font-size:7px}.scene-caption small{font-size:8px}#front{background:linear-gradient(90deg,#122e32f2,#173a3d86 85%)}.hud-top{padding:13px 16px;gap:10px}.world-title strong{max-width:155px;font-size:12px}.world-title span{font-size:8px}.world-status{gap:9px;font-size:9px}.world-status b{font-size:13px}#power{display:none}.resource-strip{left:15px;top:61px;right:15px;gap:4px;justify-content:space-between}.resource{padding:6px;min-width:0;flex:1;gap:5px;justify-content:center}.resource small{font-size:8px}.resource b{font-size:11px}.objective{top:107px;left:15px;width:calc(100vw - 138px);padding:10px 12px}.objective strong{font-size:11px;margin:5px 0}.objective span{font-size:9px}.objective small{font-size:7px}.action-dock{bottom:calc(23px + var(--safe-bottom));width:calc(100vw - 22px);padding:4px;gap:1px;border-radius:9px}.action-dock button{flex:1;width:auto;min-width:0;height:59px;gap:5px}.action-dock button span{font-size:8px}.action-dock button svg{width:21px;height:21px}.vitals{left:20px}.context-prompt{max-width:calc(100vw - 120px);padding:7px 12px;bottom:calc(99px + var(--safe-bottom))}.context-prompt kbd{display:none}#panel{top:98px;right:10px;bottom:95px;max-width:calc(100vw - 20px);width:370px}#panel>header{padding:16px 19px}#panel h2{font-size:22px}#dialogBackdrop{padding:13px}#dialog{max-height:94dvh}#dialog header{padding:20px}#dialogBody{padding:20px}.form-row{gap:10px}.form-row input[type=range]{width:115px}.selection{right:13px;top:238px;width:205px;padding:12px}.build-hint{top:90px;left:12px;transform:none;max-width:calc(100vw - 24px);width:100%}}
@media(max-height:560px){.front-top{padding:15px 28px}.hero{margin:10px 0 0 6vw}.hero h1{font-size:53px;margin:14px 0}.tagline{font-size:22px;margin-bottom:12px}.intro{display:none}.eyebrow{font-size:8px}.front-actions{max-width:275px}.front-actions>.primary{padding:10px 15px;font-size:12px}.secondary-row button{padding:7px 0}.scene-caption{bottom:70px}.front-bottom{padding:14px 25px;font-size:8px}.objective{display:none}.action-dock{bottom:15px}.action-dock button{height:51px;width:53px}.action-dock button svg{width:19px;height:19px}.vitals{bottom:175px;width:100px}.resource-strip{top:60px}.joystick{bottom:40px;width:90px;height:90px}.joystick>div{left:25px;top:25px}.touch-actions{bottom:30px}.minimap-wrap{top:86px;width:84px;height:97px}.minimap-wrap canvas{width:72px;height:72px}.context-prompt{bottom:77px}#panel{top:65px;bottom:80px}.selection{top:96px;right:121px;width:190px}.save-status{bottom:1px}.hud-top{padding:9px 20px}.build-hint{top:90px}}
/* Component contracts shared by the front door, world HUD and management panels. */
#dialogBody>label{display:block;margin:16px 0;font-size:12px;color:var(--muted)}#dialogBody>label input:not([type=checkbox]),#dialogBody>label select{display:block;margin-top:8px;width:100%}#dialogBody>label.check{display:flex;align-items:center;gap:12px;color:var(--ink)}#dialogBody>label input[type=range]{margin:15px 0 25px}#dialogBody>button{margin:12px 8px 0 0}.file-pick input{font-size:11px}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.help-grid b{color:var(--accent)}.build-card strong,.build-card small,.build-card em{display:block;margin-left:35px}.build-card strong{font-size:13px;font-weight:600}.build-card small{font-size:10px;line-height:1.6;color:var(--muted);margin-top:5px}.build-card em{font-style:normal;font-size:10px;color:var(--accent);margin-top:8px}.build-glyph{float:left;color:var(--accent);font-size:24px}.metric-grid b{display:block;font-size:23px;color:var(--accent);font-weight:400}.metric-grid small{display:block;font-size:10px;line-height:1.5;color:var(--muted);margin-top:5px}.person-row>button{border:0;background:transparent;padding:0;text-align:left}.person-row small{line-height:1.6}.person-row select{max-width:135px}#panelBody>button{display:block;margin-top:12px;width:100%;text-align:left;font-size:12px}#panelBody h3{font-size:13px;font-weight:600;margin:25px 0 12px}.research-card{border-bottom:1px solid var(--line);padding-bottom:22px}.research-card small{font-size:10px;color:var(--accent)}.research-card button{display:block;margin-top:12px;font-size:12px}.event{display:grid;grid-template-columns:42px 1fr;gap:6px;border-bottom:1px solid var(--line);padding:8px 0}.event time{font-size:10px;color:var(--accent);padding-top:3px}.event p{margin:0;line-height:1.5!important}.event strong{display:block;color:var(--ink);font-size:11px}.event small{font-size:10px}.places{display:flex;flex-wrap:wrap;gap:6px}.places button{font-size:10px;padding:8px}.selection>strong,.selection>span,.selection>small{display:block}.selection>strong{font-size:15px;margin:7px 0}.selection>small{font-size:8px;color:var(--muted);max-width:90%;overflow:hidden}.selection>span{font-size:10px;line-height:1.7;color:var(--muted)}.selection>div{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}.selection .selection-close{position:absolute;right:6px;top:4px;background:none;border:0;font-size:19px;padding:0 5px}.build-hint>strong,.build-hint>span{display:block}.build-hint>span{font-size:11px;line-height:1.6;margin:8px 0}.build-hint>div{display:flex;justify-content:center;gap:6px}.resource i{width:5px;height:5px;transform:rotate(45deg);background:var(--accent)}.res-crystal{background:var(--mint)!important}#toast.error{border-color:#e99377}.dialog-actions button{min-width:45%}.pack-stat{border-color:#e1c58a70}#buildHint{z-index:18}.world-title{max-width:44vw}
@media(max-width:650px){.resource-strip{gap:3px}.resource{padding:6px 4px;gap:3px}.resource i{display:none}.resource small{font-size:7px}.resource b{font-size:10px}.help-grid{grid-template-columns:1fr}.pack-stat small{display:none}.dialog-actions button{font-size:12px}.selection{width:200px}}
/* Buttons are immediate touch targets, not double-tap zoom gestures. */
button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.action-dock button>*{pointer-events:none}

/* Natural Light: compact view controls, shared by mobile and desktop. */
.screen-grain{box-shadow:inset 0 0 160px rgba(9,20,18,.055)}
.view-controls{position:absolute;left:22px;bottom:calc(151px + var(--safe-bottom));display:flex;gap:6px;pointer-events:auto}.view-controls button{font-size:11px;background:rgba(25,37,31,.82);padding:9px 12px;border-color:rgba(218,212,182,.28)}.view-controls button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.aim{position:absolute;left:50%;top:50%;width:14px;height:14px;transform:translate(-50%,-50%);border:1px solid #dddcca80;border-radius:50%;box-shadow:0 0 2px #0009;pointer-events:none}.aim i{position:absolute;left:5px;top:5px;width:2px;height:2px;background:#efedda;border-radius:50%}
@media (pointer:coarse){.view-controls{left:18px;bottom:calc(294px + var(--safe-bottom))}.view-controls button{min-height:38px;padding:7px 9px;font-size:10px}.vitals{bottom:calc(347px + var(--safe-bottom))}.objective{max-width:calc(100vw - 150px)}}
@media (max-width:760px) and (orientation:landscape){.view-controls{left:18px;bottom:calc(145px + var(--safe-bottom))}.vitals{bottom:calc(192px + var(--safe-bottom));width:115px}.objective{max-width:215px}}

/* Embodied World r4: field work remains a compact layer over the live world. */
.field-tray{position:absolute;z-index:12;left:50%;transform:translateX(-50%);bottom:118px;width:min(630px,calc(100vw - 32px));padding:12px 14px;background:rgba(18,40,34,.96);border:1px solid #94a787;border-radius:14px;pointer-events:auto;box-shadow:0 8px 35px #0006;display:flex;flex-direction:column;gap:7px;color:#e3e6ca}
.field-tray[hidden]{display:none}.field-tray header{display:flex;justify-content:space-between;align-items:center;font-size:13px;letter-spacing:.025em}.field-tray header button{padding:0 8px;font-size:22px;background:none;border:0;color:inherit}#fieldTypes{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.field-tray button{border:1px solid #71856e;border-radius:7px;color:inherit;background:#355146;padding:8px 5px;font-size:12px;min-height:36px;cursor:pointer}.field-tray button.active,#fieldPlace{background:#c7bc87;color:#1d342a;border-color:#c7bc87}.field-tray button:disabled{opacity:.45;cursor:not-allowed}#fieldStatus{font-size:12px;line-height:1.25}#fieldStatus.invalid{color:#e9bda1}#fieldInventory{font-size:11px;color:#bdd0b2}.field-tools{display:flex;gap:6px;justify-content:space-between}#fieldPlace{flex:1}#fieldInspect{font-size:10px}.field-open .objective,.field-open .vitals{visibility:hidden}.touch-actions .touch-sprint{grid-column:1/3;height:34px;font-size:12px;min-height:34px}.touch-actions .touch-sprint.active{background:#aaa77d;color:#142c22}.view-controls{flex-wrap:wrap}.selection [data-fieldedit]{font-size:11px}.field-open .selection{display:none}
@media(pointer:coarse){.field-open .view-controls{top:238px;bottom:auto}.field-tray{bottom:110px;left:18px;transform:none;width:calc(100vw - 36px);padding:9px 10px;gap:5px}.field-tray button{min-height:34px;font-size:11px}.field-open .joystick{bottom:302px}.field-open .touch-actions{bottom:304px}.field-tray header{font-size:11px}.field-tools{gap:4px}.field-open #touch{z-index:11}}
@media(max-height:550px){.field-tray{left:auto;right:15px;bottom:90px;transform:none;width:340px}.field-open .touch-actions{bottom:102px;right:370px}.field-open .joystick{bottom:100px}.field-tray header{display:flex;font-size:10px;height:22px}.field-open .minimap-wrap{display:none}.field-tools button{font-size:10px;padding:5px 4px}.field-tray{gap:4px;padding:8px}}

@media(pointer:coarse) and (max-height:550px){.field-open .view-controls{top:103px;left:18px;right:auto;max-width:180px;gap:4px}.field-open .touch-actions button{height:36px}.field-open .touch-actions .touch-sprint{height:29px;min-height:29px}.field-open .joystick{bottom:88px}.field-tray{bottom:78px}.field-open .resource-strip{max-width:calc(100% - 36px)}}

/* Living Settlement: touch targets remain >=44 CSS px. */
.view-controls{display:flex;flex-wrap:wrap;gap:6px;max-width:350px}
.view-controls button{min-height:44px;font-size:12px;padding:7px 10px}
.dialogue-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.panel-label{display:block;margin:12px 0}.panel-label select{width:100%}
#objectLive{white-space:pre-wrap;font:14px/1.65 ui-monospace,monospace}
#panelBody button{min-height:44px}.speech{padding:12px;border-left:2px solid #cfbf8a}
#fieldTypes{display:flex;overflow-x:auto;max-width:100%;gap:5px;padding-bottom:5px}
#fieldTypes button{flex:0 0 auto;min-height:44px}
@media(max-width:700px){.view-controls{max-width:290px}#panel{max-height:calc(100dvh - 150px);overflow-y:auto}#lampToggle{font-size:11px}.field-tray{max-width:calc(100vw - 20px)}}
@media(max-height:540px){.view-controls{max-width:245px;gap:4px}.view-controls button{min-height:36px;padding:4px 7px}#panel{max-height:calc(100dvh - 85px)}}

/* Touch-critical construction actions retain usable targets in both orientations. */
@media (pointer:coarse) {
 #fieldClose {min-width:44px;min-height:44px;}
 #fieldActions button, #fieldPlace, #fieldRotate, #fieldInspect, #fieldUp, #fieldDown {min-height:44px;}
}

/* Keep the entire lower action row clear of the expanded eight-piece tray. */
@media (pointer:coarse) and (min-height:551px) {
 .field-open .touch-actions {bottom:332px;}
 .field-open .joystick {bottom:330px;}
}

/* Fieldcraft & Flow r7: successful actions reveal the world; previews retain only essential controls. */
.perimeter-preview-bar{position:fixed;z-index:35;left:50%;transform:translateX(-50%);bottom:max(16px,env(safe-area-inset-bottom));width:min(620px,calc(100% - 24px));padding:12px;background:rgba(18,40,42,.94);border:1px solid #b9bd99;border-radius:14px;box-sizing:border-box;box-shadow:0 8px 24px #0005;pointer-events:auto}
.perimeter-preview-bar strong{display:block;font-size:13px;line-height:1.45;padding:0 3px 8px;font-weight:500;max-height:4.5em;overflow:auto}
.perimeter-preview-bar>div{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.perimeter-preview-bar button{min-height:46px;padding:8px 5px;white-space:nowrap;font-size:14px}.perimeter-preview-bar .primary{margin:0;min-width:0;display:block}
body.perimeter-preview .vitals,body.perimeter-preview .view-controls,body.perimeter-preview #objective,body.perimeter-preview .minimap-wrap,body.perimeter-preview #dock,body.perimeter-preview #touch,body.perimeter-preview #prompt,body.perimeter-preview #selected,body.perimeter-preview #aim,body.perimeter-preview #fieldTray,body.perimeter-preview #buildHint,body.perimeter-preview #panel,body.perimeter-preview #harvestStatus{display:none!important}
.harvest-status{position:fixed;left:50%;bottom:140px;transform:translateX(-50%);width:min(360px,calc(100% - 32px));border:1px solid #819e88;border-radius:12px;background:rgba(18,40,42,.94);padding:10px 12px;display:grid;grid-template-columns:1fr auto;gap:7px 10px;pointer-events:auto;z-index:12;box-sizing:border-box}.harvest-status span{font-size:13px;align-self:center}.harvest-status progress{width:100%;height:5px;grid-column:1;accent-color:#98d9be}.harvest-status button{grid-column:2;grid-row:1/3;min-height:44px;font-size:12px;padding:7px 10px}
.fps-readout{position:fixed;top:126px;left:22px;background:rgba(18,40,42,.75);border-radius:5px;padding:4px 8px;font:11px ui-monospace,monospace;pointer-events:none;z-index:12;color:#ddeddf}
@media(pointer:coarse){.harvest-status{bottom:calc(138px + env(safe-area-inset-bottom));width:min(320px,calc(100% - 26px))}.fps-readout{top:94px;left:14px;font-size:10px}}
@media(max-height:500px) and (pointer:coarse){.perimeter-preview-bar{width:min(580px,calc(100% - 180px));bottom:7px;padding:8px}.perimeter-preview-bar strong{max-height:2.8em;padding-bottom:5px;font-size:11px}.perimeter-preview-bar button{min-height:44px}.harvest-status{bottom:76px;width:280px}.fps-readout{top:78px}}
[hidden]{display:none!important}

/* Keep status labels clear of the two-row camera/light controls on portrait phones. */
@media(pointer:coarse) and (orientation:portrait){.vitals{bottom:calc(396px + var(--safe-bottom));width:172px}#altitude{display:block;max-height:2.8em;overflow:hidden;line-height:1.35}.view-controls{max-width:290px}}
@media(pointer:coarse) and (orientation:landscape){.view-controls{left:18px;bottom:136px;max-width:245px}.vitals{left:18px;bottom:218px;width:145px}.vitals #altitude{display:none}}
body.harvesting .objective,body.harvesting .selection,body.harvesting .context-prompt{display:none!important}

/* A work action must remain visible, with the movement/cancel targets unobstructed. */
body.harvesting .vitals,body.harvesting .view-controls,body.harvesting .minimap-wrap,body.animal-action .vitals,body.animal-action .view-controls,body.animal-action .objective,body.animal-action .selection{visibility:hidden}
.harvest-status{top:112px;bottom:auto}.harvesting .fps-readout{top:182px}
@media(pointer:coarse){.harvest-status{top:104px;bottom:auto}.harvesting .fps-readout{top:174px}}
@media(pointer:coarse) and (max-height:500px){.harvest-status{top:96px;bottom:auto}.harvesting .fps-readout{top:168px}}

/* Mobile r8: do not blur a continually changing WebGL surface on low tiers. */
.economy-graphics .screen-grain{display:none}
.economy-graphics #hud *, .economy-graphics #front *, .economy-graphics #dialog *, .economy-graphics #panel *, .economy-graphics #fieldTray *, .economy-graphics #perimeterPreview *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:none!important}
.economy-graphics button{transition:none}

.minimum-launch{width:100%;margin-top:.45rem;min-height:44px;background:rgba(14,34,32,.76);border:1px solid rgba(208,211,177,.4);font-size:.85rem;color:var(--text,#f2edda);}
/* r9 town services: no new blur or permanent overlay; usable in narrow portrait. */
.civic-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:0 0 16px}.civic-tabs button{padding:10px 5px;min-width:0;min-height:44px}.civic-tabs .active{border-color:var(--gold,#d6bf87);color:var(--gold,#d6bf87)}.civic-card{border:1px solid #8da99b55;border-radius:10px;padding:14px;margin:12px 0;display:flex;flex-direction:column;gap:8px}.civic-card p{margin:2px 0}.civic-card small{opacity:.8;overflow-wrap:anywhere}.civic-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.civic-form-grid input,.civic-form-grid select,.civic-card select,.build-filter input,.build-filter select{width:100%;max-width:100%;min-width:0;font-size:16px;padding:10px;box-sizing:border-box}.civic-skills{display:grid;grid-template-columns:1fr 1fr;gap:6px}.civic-skills label{font-size:12px;margin:0}.civic-skills output{display:block;font-size:15px}.civic-goods{display:grid;grid-template-columns:1fr 1fr;gap:6px}.civic-goods span{padding:8px;background:#89a79915;border-radius:6px}.civic-goods b{float:right}.town-gates{padding-left:22px}.town-gates li{margin:12px 0}.build-filter{display:grid;gap:8px;margin:12px 0}.build-card[hidden]{display:none!important}

/* r9.1: a joystick-adjacent disclosure; no render/simulation loop changes. */
.joystick > .player-details-toggle{position:absolute;left:calc(100% + 10px);top:calc(50% - 22px);width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(21,49,46,.94);border:1px solid rgba(224,217,179,.7);color:var(--ink);pointer-events:auto;touch-action:manipulation;z-index:13}
.player-details-toggle span{font-size:25px;line-height:1;font-weight:650;letter-spacing:1px;pointer-events:none}
.player-details-toggle[aria-expanded=true]{color:var(--accent);border-color:var(--accent)}
@media(pointer:coarse){
 #hud .player-details{transition:opacity .18s ease,visibility 0s;opacity:1;pointer-events:auto}
 #hud.player-details-collapsed .player-details{opacity:0;visibility:hidden;transition:opacity .18s ease,visibility 0s .18s;pointer-events:none}
 #hud.player-details-collapsed .player-details *{pointer-events:none!important}
}
body.harvesting #playerDetailsToggle,body.animal-action #playerDetailsToggle{visibility:hidden;pointer-events:none}
@media(prefers-reduced-motion:reduce){#hud .player-details{transition:none!important}}

/* Remembered Lives: no blur or additional GPU surface. */
.life-summary{border-left:2px solid #d6bd80;padding:0 0 0 12px;margin:16px 0;background:transparent}
.life-summary p{margin:7px 0}.life-summary small,.life-kicker{color:var(--muted,#c0cfc6)}
.life-kicker{text-transform:uppercase;letter-spacing:.12em;font-size:11px}
.life-people,.life-links{display:grid;gap:8px;margin:12px 0}.life-people button,.life-links button{text-align:left;min-height:48px;white-space:normal}
.life-people small,.life-links small{display:block;margin-top:5px;font-size:12px;line-height:1.5}
.life-events{list-style:none;margin:12px 0;padding:0}.life-events li{padding:12px 0;border-bottom:1px solid #47605b}
.life-events time,.life-events small{font-size:11px;color:#b3c7bd}.life-events p{margin:5px 0;line-height:1.6}
.life-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.life-actions button{min-height:44px}
.life-method{margin:20px 0;font-size:12px;line-height:1.7}.life-method summary{cursor:pointer;min-height:44px;display:flex;align-items:center}

/* Daily-life status is read-only; bounded styling, no expensive blur. */
.routine-summary{border-left:3px solid #8fae90;padding:.7rem .8rem;margin:.7rem 0;background:rgba(60,85,67,.22);border-radius:0 .5rem .5rem 0}.routine-summary p{margin:.45rem 0;line-height:1.5}.routine-summary small{opacity:.8}

/* Accessible, non-blocking clock entry to world daylight settings. */
.world-status #clock{font-size:16px;font-weight:450;background:none;border:0;padding:3px 5px;color:inherit;min-width:52px;pointer-events:auto}

/* The optional ration button must not grow under the health bars. ResizeObserver
   updates this only when the control group's layout changes, not every frame. */
@media (pointer:coarse),(max-width:760px){
 #playerVitals{bottom:calc(294px + var(--safe-bottom) + var(--details-controls-height,96px) + 12px)}
}
@media (pointer:coarse) and (orientation:landscape){
 #playerControls{max-width:380px}
 #playerVitals{bottom:calc(136px + var(--details-controls-height,76px) + 9px)}
}

/* r15: actions reveal the world immediately. Small, pointer-isolated tool HUD. */
#equipmentActionHUD{position:fixed;z-index:32;left:50%;transform:translateX(-50%);bottom:calc(96px + env(safe-area-inset-bottom));max-width:82vw;display:flex;align-items:center;gap:10px;padding:7px 10px;background:#182a24ec;border:1px solid #80967b;border-radius:12px;color:#eee9d3;font-size:13px;pointer-events:auto}
#equipmentActionHUD[hidden],#equipmentOptics[hidden]{display:none!important}#equipmentActionHUD button{min-height:40px;padding:6px 12px}
#equipmentOptics{position:fixed;inset:0;z-index:31;pointer-events:none;box-shadow:inset 0 0 90px #05140be0}
.optic-crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:35px;color:#d0dfb5;font-weight:200}
.optic-controls{position:absolute;bottom:calc(92px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:5px;max-width:95vw;width:max-content;background:#15241eee;padding:7px;border-radius:12px;pointer-events:auto}
.optic-controls button{min-width:40px;min-height:40px}.optic-controls span{font-size:12px;padding:4px}.equipment-optics #guide{display:none}
@media(max-height:500px){#equipmentActionHUD,.optic-controls{bottom:74px;max-width:62vw;}}

/* A timed equipment job already has its own compact cancel bar. */
body.equipment-working #prompt,body.equipment-optics #prompt{display:none!important}

/* r16: altitude controls explain themselves on touch without a help dialog. */
@media(pointer:coarse){
 .touch-actions{grid-template-columns:54px 54px;gap:8px}
 .touch-actions button{height:50px;min-height:50px}
 .touch-actions .touch-sprint{height:34px;min-height:34px}
 .touch-actions .touch-vertical{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:2px 3px;line-height:1}
 .touch-actions .touch-vertical span{font-size:18px;line-height:18px}
 .touch-actions .touch-vertical small{display:block;font-size:9px;line-height:11px;white-space:nowrap;pointer-events:none}
}
/* r16: commercial about copy remains readable without development-style framing. */
.commercial-about h3{margin:1.05rem 0 .3rem;color:#ead59a;font-size:1rem;letter-spacing:.02em}.commercial-about p{line-height:1.55}.commercial-about .muted{opacity:.78;font-size:.9rem}.commercial-about hr{border:0;border-top:1px solid rgba(234,213,154,.22);margin:1rem 0}
