:root{--cream:#f7f6ed;--paper:#fffef8;--ink:#203e32;--muted:#657267;--line:#d9ded1;--green:#264e3e;--lime:#d8e9bf;--water:#3b7e8a;--shadow:0 10px 36px #102f2422;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--cream);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button{font:inherit;color:inherit;cursor:pointer;border:0}button:focus-visible,a:focus-visible{outline:3px solid #76b4bd;outline-offset:4px}button:disabled{cursor:default;opacity:.52}button svg{flex-shrink:0}h1,h2,p{margin:0}h1,h2,.serif{font-family:Georgia,'Times New Roman',serif;font-weight:400}h1{font-size:36px;letter-spacing:-1.2px}h2{font-size:25px;letter-spacing:-.5px}p{line-height:1.5}button{touch-action:manipulation}.shell{height:100dvh;min-height:610px;display:flex;flex-direction:column;overflow:hidden}.topbar{height:78px;flex:none;display:flex;align-items:center;padding:0 30px;border-bottom:1px solid var(--line);gap:28px;z-index:20;background:var(--cream)}.brand{display:flex;align-items:center;gap:9px;background:none;padding:0;font-size:25px;font-weight:750;letter-spacing:-1px}.brand img{width:34px;height:34px}.breadcrumb{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted)}.breadcrumb b{font-weight:500;color:var(--ink)}.prototype{margin-left:auto;font-size:11px;letter-spacing:.2px;white-space:nowrap;padding:8px 11px;border:1px solid var(--line);border-radius:20px}.prototype:before{content:'';display:inline-block;width:5px;height:5px;background:#90a181;border-radius:100%;margin-right:6px}.stage{flex:1;min-height:0;position:relative;overflow:hidden;background:#849764}.stage.space,.stage.planet{background:#081821;color:#f5f3e8}.village-scene{position:absolute;inset:0;overflow:hidden}.scene-svg{width:100%;height:100%;display:block}.scene-svg .village-boundary{fill:none;stroke:#f7f3cf;stroke-width:1.8;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 1px #30452c)}.scene-svg .outside{fill:#193a2c;opacity:.18}.scene-svg .water-network{stroke:#8ed1dc;stroke-width:3;fill:none;stroke-dasharray:8 6;opacity:.9}.scene-svg .site-ground{fill:#d9f2cd66;stroke:#eefbd6;stroke-width:2;stroke-dasharray:6 5}.scene-svg .reservoir-body{fill:#c9cfb7;stroke:#637f73;stroke-width:2}.scene-svg .reservoir-water{fill:#68b5bf;stroke:#d8e2cc;stroke-width:6}.scene-heading{position:absolute;left:30px;top:27px;z-index:2;max-width:400px}.scene-heading h1{margin-top:6px}.scene-heading .eyebrow{font-size:10px;letter-spacing:1.8px;text-transform:uppercase}.village .scene-heading{background:linear-gradient(90deg,#f7f6edf0,#f7f6eddc);padding:16px 22px;border-radius:3px;box-shadow:0 2px 15px #263b2110}.scene-heading p{font-size:13px;margin-top:10px;max-width:330px;color:inherit;opacity:.7}.toolbar{position:absolute;top:28px;right:30px;display:flex;gap:8px;z-index:10}.button{color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:12px 17px;border-radius:6px;font-size:13px;font-weight:600;background:var(--paper);border:1px solid #dee1d5;box-shadow:0 2px 8px #112a1810;line-height:1.2;white-space:nowrap}.button.primary{background:var(--green);color:#fffef3;border-color:var(--green)}.button.primary:hover{background:#193f30}.button:hover{filter:brightness(.97)}.button.ghost{background:transparent;box-shadow:none;border:1px solid var(--line)}.button.dark-ghost{color:#f7f6ed;border-color:#ffffff30;background:#ffffff08}.button.small{min-height:38px;font-size:12px;padding:9px 12px}.button.icon-only{min-width:44px;padding:10px}.button.full{width:100%}.button[aria-expanded=true]{background:var(--lime);color:var(--ink)}.water-status{position:absolute;left:30px;top:142px;z-index:4;display:flex;align-items:center;gap:10px;padding:10px 15px;border:1px solid #d6e0cc;background:var(--paper);border-radius:8px;box-shadow:var(--shadow);text-align:left}.water-status .drop{color:var(--water)}.water-status strong{font-size:13px;display:block}.water-status small{font-size:11px;color:var(--muted);display:block;margin-top:3px}.ok-dot{height:6px;width:6px;border-radius:50%;background:#6d955a;display:inline-block;margin-right:5px}.canvas-note{position:absolute;left:30px;bottom:18px;font-size:10px;color:#fffef1;text-shadow:0 1px 3px #183325;display:flex;align-items:center;gap:6px;max-width:300px;pointer-events:none}.space .canvas-note,.planet .canvas-note{color:#acbec1}.boundary-legend{position:absolute;right:30px;bottom:18px;color:#fffde9;font-size:10px;display:flex;gap:8px;align-items:center}.boundary-legend:before{content:'';width:18px;height:1px;background:#fff7c7}.dock{position:absolute;bottom:56px;left:50%;transform:translateX(-50%);width:570px;max-width:calc(100% - 60px);background:var(--paper);border:1px solid #dce0d0;box-shadow:var(--shadow);padding:20px 22px;border-radius:10px;z-index:5;color:var(--ink)}.dock .eyebrow,.panel .eyebrow{font-size:9px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:var(--muted);margin-bottom:7px}.dock h2{margin-bottom:6px}.dock p{font-size:13px;color:var(--muted);max-width:430px}.dock-row{display:flex;align-items:center;justify-content:space-between;gap:20px}.dock-row .button{flex-shrink:0}.dock .divider{height:1px;background:var(--line);margin:15px 0}.dock-footer{display:flex;gap:8px;margin-top:16px;align-items:center}.dock-footer .button.primary{margin-left:auto}.dock .fine{font-size:10px;line-height:1.4;margin-top:10px;opacity:.8}.panel{position:absolute;right:30px;top:80px;z-index:12;width:300px;max-height:calc(100% - 100px);overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:10px;box-shadow:var(--shadow);padding:17px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.panel h2{font-family:Arial,sans-serif;font-size:14px;font-weight:700;letter-spacing:0}.panel .close{background:none;font-size:20px;min-width:32px;min-height:32px;border-radius:4px}.panel .menu-option{width:100%;display:flex;gap:12px;align-items:center;text-align:left;padding:12px 10px;border-radius:6px;background:none;margin-bottom:3px;min-height:58px}.panel .menu-option.active{background:#eaf0e1}.panel .menu-option:hover{background:#eef0e6}.menu-option strong{font-size:13px;display:block;font-weight:600}.menu-option small{font-size:11px;display:block;margin-top:4px;color:var(--muted)}.panel p{font-size:12px;color:var(--muted)}.panel .section-label{display:block;font-size:9px;text-transform:uppercase;letter-spacing:1.5px;margin:15px 0 6px;color:var(--muted)}.tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.tool-preview{background:#f2f3eb;border:1px solid #e2e6d9;border-radius:6px;padding:14px 7px;display:flex;align-items:center;flex-direction:column;gap:8px;font-size:12px}.tool-preview.selected{border-color:var(--green);background:#e1ead6}.tool-detail{margin-top:12px;padding:12px;background:#edf0e5;border-radius:5px;line-height:1.5}.water-panel{top:207px;left:30px;right:auto}.water-chain{margin:17px 0;display:grid;gap:12px}.water-chain div{font-size:12px;display:flex;justify-content:space-between;gap:8px}.water-chain span{color:var(--muted)}.water-chain b{font-weight:500;color:var(--green)}.reserve-bar{height:5px;background:#e3e6dc;border-radius:5px;margin:10px 0;overflow:hidden}.reserve-bar i{display:block;height:100%;background:#5d9ca2}.scene-pin{position:absolute;z-index:3;background:var(--paper);border:1px solid #c8d7c1;box-shadow:0 3px 15px #14371c30;border-radius:20px;padding:8px 12px;font-size:11px;display:flex;align-items:center;gap:7px;transform:translate(-50%,-50%);white-space:nowrap}.scene-pin:before{content:'';width:6px;height:6px;background:#45818a;border:2px solid #bdd9dc;border-radius:100%;box-sizing:content-box}.site-options{display:flex;gap:8px;margin-top:13px}.site-option{flex:1;padding:10px;border-radius:6px;border:1px solid var(--line);background:#f5f5ec;text-align:left;font-size:11px;min-height:48px}.site-option strong{display:block;font-size:12px;margin-bottom:3px}.site-option.selected{border:1px solid var(--green);background:#eaf0df}.benefit{display:flex;align-items:baseline;gap:8px;margin-top:12px;color:var(--water);font-size:12px}.benefit strong{font-size:22px;font-weight:500}.planner{width:420px;left:auto;right:30px;transform:none;bottom:55px}.reservoir-label{font-family:Arial,sans-serif;font-size:15px;fill:#f9ffe8;paint-order:stroke;stroke:#294e3a;stroke-width:3px}.orbit-system{position:absolute;inset:8% 0 12%;max-width:1120px;width:100%;left:50%;transform:translateX(-50%)}.orbit{position:absolute;border:1px solid #8db3ab22;border-radius:50%;left:50%;top:51%;transform:translate(-50%,-50%) rotate(-13deg);width:72%;height:50%}.orbit.two{width:48%;height:34%}.orbit.three{width:93%;height:66%}.sun{position:absolute;width:66px;height:66px;left:45%;top:44%;border-radius:100%;background:#e1eee1;box-shadow:0 0 55px #b2dbce66,0 0 100px #afdcce22}.sun:after{content:'VEGA';position:absolute;top:90px;left:12px;color:#a2b6ae;font-size:9px;letter-spacing:4px}.planet-thumb{width:104px;height:104px;object-fit:cover;clip-path:circle(41% at 50% 50%);transform:scale(1.23)}.planet-select{position:absolute;left:66%;top:40%;border:0;background:none;color:#fff7df;display:flex;align-items:center;flex-direction:column;gap:10px;min-width:140px}.planet-select .planet-ring{border:1px solid #bdcea075;border-radius:100%;width:118px;height:118px;display:grid;place-items:center;box-shadow:0 0 35px #99ad5a15}.planet-select strong{font:24px Georgia,serif;font-weight:400}.planet-select span{font-size:10px;color:#baccc3}.context-planet{position:absolute;display:flex;flex-direction:column;align-items:center;color:#a3b6af;font-size:10px;gap:7px}.context-planet .planet-thumb{width:66px;height:66px;opacity:.68}.context-planet.one{left:19%;top:35%}.context-planet.two{left:39%;top:14%}.context-planet small{font-size:9px;opacity:.7}.space:before{content:'';position:absolute;inset:0;background-image:radial-gradient(#cadad466 .7px,transparent 1px);background-size:121px 91px;opacity:.35}.planet-image{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:min(96%,940px);height:100%;object-fit:contain}.planet-location{left:58%;top:49%;background:var(--paper);color:var(--ink);font-size:12px;padding:11px 16px}.planet .dock{width:510px}.planet .scene-heading p{color:#bbc9c4;opacity:1}.nav-steps{display:flex;gap:20px;align-items:center;font-size:10px;margin-bottom:15px;text-transform:uppercase;letter-spacing:1px;color:#9eb4ac}.nav-steps b{color:#e9eddb;font-weight:600}.map-view{background:#d4e1de}.flat-map{height:100%;width:100%;display:block}.map-view .scene-heading{background:#f7f6ede6;padding:15px 20px;border-radius:3px}.map-view .canvas-note,.map-view .boundary-legend{color:var(--ink);text-shadow:none}.map-view .boundary-legend:before{background:var(--green)}.map-location{left:62%;top:46%;background:var(--green);color:var(--paper)}.toast{position:absolute;top:90px;left:50%;transform:translateX(-50%);max-width:80%;padding:12px 18px;background:#234c3f;color:#fffbed;border-radius:8px;font-size:12px;box-shadow:var(--shadow);z-index:25;text-align:center}.back-village{position:absolute;left:30px;bottom:65px;z-index:6}.supply-summary{display:flex;gap:15px;align-items:center;margin-top:14px;font-size:11px;color:var(--muted)}.supply-summary svg{color:var(--water)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:1600px){.scene-heading{top:35px}.toolbar{top:36px}.water-status{top:150px}.dock{bottom:65px}}@media(max-width:700px){.shell{min-height:640px}.topbar{height:65px;padding:0 16px;gap:8px}.brand{font-size:22px}.brand img{width:29px;height:29px}.breadcrumb{display:none}.prototype{font-size:9px;padding:7px 8px;letter-spacing:0}.scene-heading{left:17px;top:78px;max-width:calc(100% - 34px)}.scene-heading h1{font-size:29px}.scene-heading p{max-width:265px;font-size:12px}.village .scene-heading{top:78px;padding:12px 15px;max-width:220px}.village .scene-heading .eyebrow{font-size:8px;letter-spacing:1.1px}.toolbar{left:17px;right:17px;top:17px;justify-content:flex-end;gap:7px}.toolbar .button{min-height:42px;font-size:12px;padding:11px 13px}.water-status{left:17px;top:171px;padding:9px 12px;gap:8px}.water-status strong{font-size:12px}.water-status small{font-size:10px}.dock,.planner{left:16px;right:16px;bottom:50px;max-width:none;width:auto;transform:none;padding:16px;border-radius:9px}.dock h2{font-size:23px}.dock p{font-size:12px}.dock-row{display:block}.dock-row>.button{width:100%;margin-top:14px}.canvas-note{left:17px;bottom:15px;font-size:9px;max-width:230px;line-height:1.4}.boundary-legend{right:17px;bottom:34px;font-size:9px}.panel{right:16px;left:16px;top:68px;width:auto;max-height:calc(100% - 86px)}.water-panel{top:235px;max-height:calc(100% - 251px)}.dock .fine{font-size:9px}.dock-footer{gap:6px}.dock-footer .button{font-size:12px;padding:11px 12px}.planner h2{font-size:22px}.planner .benefit{margin-top:9px}.planner .site-options{margin-top:10px}.planner .dock-footer{margin-top:12px}.village.planning .water-status{display:none}.village.planning .scene-heading{padding:10px 13px}.village.planning .scene-heading h1{font-size:24px}.planet .scene-heading,.space .scene-heading{top:80px}.space .scene-heading h1{font-size:30px;max-width:260px}.nav-steps{font-size:8px;gap:12px}.orbit-system{inset:21% 0 18%;left:50%;width:650px;max-width:none;transform:translateX(-50%)}.orbit{width:72%;height:40%}.orbit.two{width:43%;height:26%}.orbit.three{width:91%;height:57%}.sun{width:45px;height:45px;left:43%;top:48%;box-shadow:0 0 40px #b2dbce66}.sun:after{top:59px;font-size:8px;left:4px}.planet-select{left:56%;top:36%;min-width:100px;gap:6px}.planet-select .planet-ring{width:90px;height:90px}.planet-select .planet-thumb{width:81px;height:81px}.planet-select strong{font-size:20px}.planet-select span{font-size:9px}.context-planet.one{left:27%;top:28%}.context-planet.two{left:49%;top:10%}.context-planet .planet-thumb{width:40px;height:40px}.context-planet{font-size:9px;gap:2px}.context-planet small{font-size:8px}.planet-image{width:700px;max-width:none;height:75%;top:44%;object-fit:contain}.planet-location{left:62%;top:45%;font-size:11px}.planet .dock{width:auto}.map-view .scene-heading{top:80px}.map-location{left:58%;top:44%}.back-village{left:17px;bottom:234px}.back-village .button{font-size:11px}.toast{top:235px;font-size:11px;max-width:calc(100% - 32px);width:max-content}.supply-summary{font-size:10px;gap:9px}.planner .eyebrow{margin-bottom:4px}.panel-header{margin-bottom:8px}}@media(prefers-reduced-motion:no-preference){.dock,.panel{animation:appear .18s ease-out}@keyframes appear{from{opacity:0;margin-bottom:-5px}to{opacity:1;margin-bottom:0}}}

@media(min-width:701px){.village .dock:not(.planner){left:auto;right:30px;transform:none;width:530px}}

/* UI 0.2: compact place header, unobstructed landscape, vertical tool rail. */
.topbar{height:54px;padding:0 20px;gap:22px}
.brand{font-size:20px;gap:7px}.brand img{width:26px;height:26px}
.breadcrumb{font-size:11px}.prototype{font-size:10px;padding:6px 9px}
.village .scene-heading,.village.planning .scene-heading{left:20px;top:18px;padding:9px 12px;display:flex;align-items:center;gap:12px;border-radius:5px;background:var(--paper);box-shadow:0 2px 10px #17361b12;max-width:none}
.village .scene-heading h1,.village.planning .scene-heading h1{font:600 15px Arial,Helvetica,sans-serif;letter-spacing:0;margin:0}
.place-context{font-size:10px;color:var(--muted);border-left:1px solid var(--line);padding-left:12px}
.toolbar{top:18px;right:20px;gap:6px}.toolbar .button{min-height:34px;padding:8px 11px;font-size:11px;gap:7px}
.toolbar .button svg{width:15px;height:15px}
.water-status{left:20px;top:62px;padding:8px 11px;gap:8px;box-shadow:0 3px 16px #183b2318;border-radius:5px}
.water-status strong{font-size:11px}.water-status small{font-size:10px;margin-top:2px}.water-status .drop svg{width:18px;height:18px}
.village .dock:not(.planner){width:460px;right:20px;padding:15px 17px;border-radius:7px;bottom:43px}
.village .dock h2{font-size:20px}.village .dock p{font-size:12px}.village .dock .button{min-height:36px;padding:10px 13px;font-size:12px}
.village .initial-dock:not(.planner){width:440px;padding:12px 14px}
.village .initial-dock h2{font:600 13px Arial,Helvetica,sans-serif;letter-spacing:0;margin-bottom:5px}
.village .initial-dock p{font-size:11px}.initial-dock .dock-row{gap:12px}
.village .planner{padding:16px 18px;bottom:43px;right:20px;width:380px}
.panel{top:60px;right:20px}.water-panel{top:120px;left:20px;right:auto}
.canvas-note{left:20px;bottom:14px}.reservoir-label{font-size:22px}
.tool-rail{position:absolute;right:20px;top:62px;width:48px;padding:3px;z-index:13;background:var(--paper);border:1px solid var(--line);border-radius:7px;box-shadow:0 5px 20px #18342225;max-height:calc(100% - 130px);overflow:auto;overscroll-behavior:contain}
.rail-items{display:flex;flex-direction:column;gap:2px}
.rail-tool{display:grid;place-items:center;background:transparent;width:40px;height:40px;border-radius:4px;flex-shrink:0;color:var(--green)}
.rail-tool:hover{background:#edf1e5}.rail-tool.selected{background:#dae7ca;box-shadow:inset 2px 0 var(--green)}
.rail-close{border-top:1px solid var(--line);border-radius:0;margin-top:4px;height:32px}
.tool-context{position:absolute;right:78px;top:64px;z-index:12;background:var(--paper);border:1px solid var(--line);border-radius:5px;padding:8px 11px;box-shadow:0 3px 16px #18342218;display:flex;gap:9px;align-items:center;pointer-events:none}
.tool-context strong{font-size:11px;font-weight:600}.tool-context span{font-size:9px;color:var(--muted)}
@media(max-width:700px){
 .topbar{height:49px;padding:0 13px;gap:8px}.brand{font-size:19px}.brand img{width:24px;height:24px}.prototype{font-size:9px;padding:6px 7px}
 .toolbar{top:12px;right:12px;left:auto;gap:5px}.toolbar .button{min-height:44px;padding:10px;font-size:11px}.toolbar .button svg{width:15px;height:15px}
 .village .scene-heading,.village.planning .scene-heading{left:13px;top:12px;padding:14px 10px;max-width:calc(100% - 210px)}
 .village .scene-heading h1,.village.planning .scene-heading h1{font-size:13px}.village .place-context{display:none}
 .water-status{left:13px;top:66px;padding:8px 10px;min-height:44px}.water-status strong{font-size:10px}.water-status small{font-size:9px}
 .village .dock:not(.planner),.village .initial-dock:not(.planner),.village .planner{left:12px;right:12px;bottom:42px;width:auto;padding:13px;border-radius:7px}
 .village .dock .button{min-height:44px}.village .initial-dock .dock-row{display:flex;gap:8px}.village .initial-dock .dock-row>.button{width:auto;margin-top:0;font-size:11px;padding:10px;gap:6px}.village .initial-dock h2{font-size:12px}.village .initial-dock p{font-size:10px;max-width:145px;line-height:1.5}
 .village .dock h2{font-size:19px}.village .initial-dock h2{font:600 12px Arial,Helvetica,sans-serif}.village .dock p{font-size:11px}.village .initial-dock p{font-size:10px}
 .panel{top:64px;left:12px;right:12px}.water-panel{top:119px}.tool-rail{right:12px;top:64px;width:50px;padding:2px}.rail-tool{width:44px;height:44px}.rail-close{height:40px}.tool-context{right:70px;top:122px;padding:8px 10px;gap:7px}.canvas-note{left:13px;bottom:13px}
}

/* UI 0.3: fit the complete nonrectangular area, without a drawn border. */
.stage.area-overview{background:#eceee3;background-image:radial-gradient(ellipse at 50% 45%,#f8f8f0 0%,#edf0e5 65%,#e6eadc 100%)}
.area-overview .village-scene{inset:114px 24px 124px;overflow:visible}
.area-overview .scene-svg{overflow:visible}
.area-overview .canvas-note{color:#687760;text-shadow:none}
.area-caption{position:absolute;bottom:100px;left:24px;right:24px;display:flex;align-items:center;justify-content:center;gap:7px;color:#687760;font-size:10px;pointer-events:none;letter-spacing:.15px}
.area-overview.planning .village-scene{right:420px;bottom:96px}
.area-overview.planning .area-caption{right:420px;bottom:72px}
.area-overview.has-project:not(.planning) .village-scene{bottom:248px}
.area-overview.has-project:not(.planning) .area-caption{bottom:224px}
.reservoir-design{display:grid;grid-template-columns:142px 1fr;align-items:center;gap:8px;margin:5px -4px 13px;padding:6px 0;background:#eef1e5;border-radius:7px}
.reservoir-design img{width:100%;height:115px;object-fit:contain}
.village .reservoir-design h2{font:600 13px/1.4 Arial,Helvetica,sans-serif;letter-spacing:0;margin:0 0 6px}
.village .reservoir-design p{font-size:10px;line-height:1.6;color:#63765e}
.design-tag{display:inline-block;font-size:8px;letter-spacing:1px;text-transform:uppercase;margin-top:8px;color:#71846b}
.village .placement-hint{font-size:11px}.area-overview .site-ground{stroke-width:1.3;fill:#d7ebc440;stroke:#f2f7d7}
@media(max-width:700px){
 .area-overview .village-scene{inset:131px 8px 139px}
 .area-overview .area-caption{left:12px;right:12px;bottom:117px;font-size:9px}
 .area-overview.planning .village-scene{inset:76px 8px 365px}
 .area-overview.planning .area-caption{left:12px;right:12px;bottom:416px;font-size:8px}
 .area-overview.has-project:not(.planning) .village-scene{inset:125px 8px 290px}
 .area-overview.has-project:not(.planning) .area-caption{left:12px;right:12px;bottom:267px}
 .reservoir-design{grid-template-columns:126px 1fr;margin:4px 0 10px}.reservoir-design img{height:95px}
 .village .reservoir-design h2{font-size:12px}.village .reservoir-design p{font-size:10px}
 .village .planner .site-options{margin-top:9px}.village .planner .benefit{font-size:11px;margin-top:8px}
}

/* UI 0.4: a continuous coastal region, not a detached map tile. */
.stage.coastal-view{background:#164c57}
.coastal-view .village-scene,.coastal-view.planning .village-scene,.coastal-view.has-project .village-scene{inset:0;overflow:hidden}
.coastal-view .scene-svg{overflow:hidden}
.coastal-view .canvas-note{color:#e7eee5;text-shadow:0 1px 3px #153c43;font-size:9px}
.neighbor-label{fill:#f5f5df;font-family:Arial,Helvetica,sans-serif;font-size:12px;paint-order:stroke;stroke:#465f47;stroke-width:2px;stroke-linejoin:round}
.neighbor-label path{fill:none;stroke:#eff0d9;stroke-width:1.5px}
.neighbor-label .context-label{font-size:8px;fill:#e3e7d6;stroke-width:1.3px}
.sea-label{fill:#b5d4d266;font:11px Arial,Helvetica,sans-serif;letter-spacing:6px}
.coastal-view .site-ground{stroke:#eef6d2;stroke-width:1.2;fill:#e8f6cb28}
.coastal-view .planner{width:355px;padding:13px 15px}
.coastal-view .reservoir-design{grid-template-columns:125px 1fr;margin-bottom:10px}
.coastal-view .reservoir-design img{height:102px}
.coastal-view .village-scene .water-network{stroke-width:2}
.coastal-view .placement-hint{font-size:10px;line-height:1.5}
@media(max-width:700px){
 .village.coastal-view .planner{width:auto;left:12px;right:12px;padding:12px}
 .coastal-view .reservoir-design{grid-template-columns:112px 1fr}.coastal-view .reservoir-design img{height:82px}
 .coastal-view .reservoir-design h2{font-size:11px}.coastal-view .reservoir-design p{font-size:9px}
 .coastal-view .placement-hint{font-size:9px}.coastal-view .site-option{padding:8px;font-size:10px}.coastal-view .site-option strong{font-size:11px}
 .coastal-view .canvas-note{font-size:8px;max-width:none}
}

@media(min-width:701px){.coastal-view.planning .planner{left:20px;right:auto}}

/* UI 0.5: direct map placement and compact view navigation. */
.view-menu{position:absolute;right:20px;top:60px;width:184px;padding:5px;background:var(--paper);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);z-index:14}
.view-option{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;min-height:36px;background:transparent;text-align:left;border-radius:4px;font-size:12px}
.view-option:hover{background:#edf1e6}.view-option.active{background:#dfe9d2}.view-option svg:last-child:not(:first-child){margin-left:auto}
.coastal-view .free-planner{width:322px;padding:12px 14px;bottom:43px}
.placement-heading{display:flex;align-items:center;gap:7px;font-size:12px}
.mask-toggle{margin-left:auto;background:transparent;display:flex;align-items:center;gap:5px;min-height:30px;padding:5px 6px;font-size:10px;color:var(--muted);border-radius:4px}
.mask-toggle[aria-pressed=true]{background:#e1ebd6;color:var(--green)}
.fit-status{margin-top:9px;padding:9px 10px;border-radius:5px;border-left:3px solid #b5bdad;background:#eff1e8;min-height:59px}
.fit-status strong{font-size:12px;font-weight:600}.village .fit-status p{font-size:10px;line-height:1.45;margin-top:4px}
.fit-status.valid{background:#e8f0df;border-color:#64875b}.fit-status.invalid{background:#f5e6df;border-color:#b85e48}.fit-status.invalid strong{color:#813e32}
.free-planner .dock-footer{margin-top:10px}.free-planner .fine{margin-top:8px;font-size:9px}
.placement-map{touch-action:none;cursor:crosshair;outline:none}
.placement-map:focus-visible{outline:2px solid #91bba7;outline-offset:-3px}
.placement-footprint{stroke-width:2;vector-effect:non-scaling-stroke;fill-opacity:.17}
.placement-footprint.valid{stroke:#e0ffd0;fill:#a0e37b}.placement-footprint.invalid{stroke:#ff9f88;fill:#f77862}
.placement-label{font:600 12px Arial,sans-serif;fill:#fffbed;stroke:#284c39;stroke-width:3px;paint-order:stroke;stroke-linejoin:round}
.access-edge{fill:none;stroke:#758958;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}
.access-path{fill:none;stroke:#c3b18b;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.access-path.preview{stroke:#eddbad;stroke-dasharray:5 3}
@media(max-width:700px){
 .view-menu{top:61px;right:12px;width:180px}.view-option{min-height:44px}
 .village.coastal-view .free-planner{width:auto;left:12px;right:12px;padding:10px 12px;bottom:38px}
 .free-planner .dock-footer{margin-top:8px}.free-planner .mask-toggle{min-height:36px}
 .free-planner .fit-status{margin-top:5px;min-height:55px}.free-planner .fine{font-size:8px;margin-top:6px}
}

/* Keep validation feedback immediately readable in the static preview. */
.dock,.panel{animation:none}

/* UI 0.6: compact object catalogue, multiple free placements, energy and food. */
.build-panel{position:absolute;z-index:12;top:61px;right:20px;width:276px;max-height:calc(100% - 100px);display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);color:var(--ink);overflow:hidden}
.build-panel .panel-header{padding:10px 12px 4px;margin:0}.build-panel h2{font:600 13px Arial,sans-serif;letter-spacing:0}.build-panel .close,.detail-close{background:none;display:grid;place-items:center;min-width:34px;min-height:34px;border-radius:4px}
.build-filters{display:flex;gap:4px;padding:5px 12px 10px}.build-filters button{font-size:11px;padding:7px 10px;background:transparent;border-radius:4px;min-height:32px}.build-filters button[aria-pressed=true]{background:#e0e9d4;color:#264e3e;font-weight:600}
.build-list{overflow:auto;overscroll-behavior:contain;touch-action:pan-y;min-height:0;padding:0 7px;display:grid;gap:3px}.build-item{display:flex;align-items:center;gap:9px;width:100%;padding:5px 6px;background:transparent;text-align:left;border-radius:5px;min-height:66px}.build-item:hover,.build-item:focus-visible{background:#eaf0e0}.asset-thumb{width:60px;height:52px;display:grid;place-items:center;background:#edf0e4;border-radius:5px;flex-shrink:0}.asset-thumb img{width:57px;height:48px;object-fit:contain}.build-item strong{font-size:12px;display:block}.build-item small{display:block;font-size:9px;color:var(--muted);margin-top:5px;line-height:1.4}.build-item>svg{margin-left:auto;flex-shrink:0}
.build-panel-footer{padding:10px 12px 12px;border-top:1px solid var(--line);margin-top:7px}.build-panel-footer .button{width:100%;font-size:11px;padding:8px;min-height:34px}.build-panel-footer>small{display:block;text-align:center;font-size:8px;color:var(--muted);margin-top:8px}
.village .build-dock:not(.planner){width:auto;max-width:calc(100% - 40px);display:flex;align-items:center;gap:12px;padding:10px 12px}.build-dock strong{display:block;font-size:12px}.build-dock small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.build-dock .button{padding:8px 10px!important}
.object-preview{display:flex;align-items:center;gap:10px;padding:7px 0 4px}.object-preview img{height:58px;width:74px;flex-shrink:0;object-fit:contain;background:#eef1e6;border-radius:5px}.object-preview span{display:block;font-size:10px;line-height:1.5}.object-preview small{display:block;font-size:9px;color:var(--muted);margin-top:5px}.village .object-preview p{font-size:11px;line-height:1.5}
.village .object-detail:not(.planner){left:20px;right:auto;width:322px;padding:12px 14px}.object-detail .detail-close{margin-left:auto}.object-detail .dock-footer{margin-top:8px}.object-detail .dock-footer .button.primary{margin-left:0}.object-detail .fine{font-size:9px;margin-top:9px}.object-detail .object-preview img{height:78px;width:96px}
.map-object{cursor:pointer;outline:none}.object-selection{fill:#e9f6cc20;stroke:#f2ffdc;stroke-width:1.4;opacity:0}.map-object:hover .object-selection,.map-object:focus-visible .object-selection,.map-object.selected .object-selection{opacity:1}.map-object:focus-visible .object-selection{stroke-width:3}.object-hit{pointer-events:all}.planning .map-object{pointer-events:none}.planning .map-object .object-hit{pointer-events:none}.planning .map-object .object-selection{opacity:0}
.water-panel .fine{font-size:10px;margin-top:12px}
@media(max-width:700px){
 .shell{min-height:0}.toolbar .tools-button{width:42px;padding:9px}.tools-button span{display:none}.toolbar .button{gap:5px}.toolbar .button:first-child{padding:9px 8px}.village .scene-heading,.village.planning .scene-heading{max-width:calc(100% - 220px)}
 .build-panel{left:12px;right:12px;top:auto;bottom:36px;width:auto;max-height:48%;border-radius:8px}.build-panel .panel-header{padding:6px 10px 0}.build-filters{padding:0 8px 5px}.build-filters button{min-height:38px;padding:8px 12px}.build-list{grid-template-columns:1fr 1fr;padding:0 6px;gap:2px}.build-item{gap:6px;padding:4px;min-height:64px}.asset-thumb{width:47px;height:48px}.asset-thumb img{width:45px;height:46px}.build-item strong{font-size:10px}.build-item small{font-size:8px}.build-item>svg{display:none}.build-panel-footer{padding:6px 10px 8px;margin-top:5px}.build-panel-footer .button{min-height:40px}.build-panel-footer>small{margin-top:5px}
 .village .build-dock:not(.planner){left:12px;right:12px;max-width:none;width:auto;gap:8px;padding:10px;bottom:36px}.build-dock small{font-size:9px}.build-dock strong{font-size:11px}.build-dock .button{font-size:11px}.build-dock>div{margin-right:auto}
 .village .object-detail:not(.planner){left:12px;right:12px;width:auto;padding:10px 12px;bottom:36px}.object-detail .object-preview img{height:60px;width:80px}.object-detail .fine{font-size:8px}.object-detail .detail-close{min-height:40px;min-width:40px}.object-preview{padding:4px 0 2px}.object-preview img{height:46px;width:62px}.object-preview small{font-size:8px}.free-planner .placement-heading>strong{font-size:12px}.village.coastal-view .free-planner{max-height:46%;overflow:auto;overscroll-behavior:contain;touch-action:pan-y}.free-planner .mask-toggle{min-width:40px;min-height:40px;justify-content:center}.toast{top:132px}
}
@media(max-height:580px){.build-panel{max-height:calc(100% - 85px)}.village.coastal-view .free-planner{max-height:65%}.village .water-status{display:none}}
.toolbar .button.primary[aria-expanded=true]{background:#d8e9bf;color:#203e32;border-color:#c9dbb5}

/* UI 0.7: essentials at a glance; existing supply and additions stay distinct. */
.supply-overview{position:absolute;z-index:4;top:62px;left:20px;width:338px;background:var(--paper);border:1px solid var(--line);border-radius:7px;box-shadow:0 3px 16px #183b2318;overflow:hidden}
.supply-overview-heading{display:flex;align-items:center;gap:7px;padding:9px 11px;font-size:10px;border-bottom:1px solid #e4e7dc;background:#f4f6ed}.supply-overview-heading.low{color:#805d24}.supply-overview-heading.shortage{color:#a14334}.supply-overview-heading.good{color:#386849}
.supply-cards{display:grid;grid-template-columns:repeat(3,1fr)}.supply-card{padding:10px 11px 9px;text-align:left;background:none;min-width:0;border-right:1px solid #e4e7dc}.supply-card:last-child{border-right:0}.supply-card:hover,.supply-card[aria-expanded=true]{background:#edf2e5}.supply-name{display:flex;gap:5px;align-items:center;font-size:11px;font-weight:600;margin-bottom:7px}.supply-card>strong{display:block;font-size:10px;color:#3c7150}.supply-card.shortage>strong{color:#a14334}.supply-card>small{display:block;font-size:9px;color:#647368;margin-top:5px}.supply-card .reserve-caption{display:flex;gap:4px;align-items:center;font-size:9px;margin-top:8px;color:#3e6d50;white-space:nowrap}.supply-card.low .reserve-caption{color:#8a6125}
.supply-meter,.coverage-bar{display:block;position:relative;height:5px;background:#e0e5d7;border-radius:3px;margin-top:8px}.supply-meter i,.coverage-bar i{display:block;height:100%;border-radius:3px;background:#709969}.supply-card.shortage .supply-meter i,.coverage-bar.shortage i{background:#b96e53}.supply-meter b,.coverage-bar b{position:absolute;left:66.666%;top:-2px;width:1px;height:9px;background:#385441}
.supply-panel{position:absolute;z-index:12;left:20px;top:222px;width:338px;max-height:calc(100% - 260px);display:flex;flex-direction:column;overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);color:var(--ink)}.supply-panel .panel-header{padding:8px 12px;margin:0;border-bottom:1px solid var(--line)}.supply-panel h2{display:flex;align-items:center;gap:7px;font:600 13px Arial,sans-serif;letter-spacing:0}.supply-panel .close{display:grid;place-items:center;background:none;width:34px;height:34px;border-radius:4px}
.supply-detail-scroll{padding:12px;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;min-height:0}.supply-verdict{font-size:11px;line-height:1.5;display:flex;align-items:flex-start;gap:6px;padding:9px;background:#eaf0e2;border-radius:5px}.supply-verdict svg{flex-shrink:0}.supply-verdict.low{background:#f5ecd9;color:#805d24}.supply-verdict.shortage{background:#f5e4df;color:#973c30}.supply-metric{display:flex;align-items:baseline;justify-content:space-between;font-size:11px;margin-top:14px}.supply-metric strong{font-size:20px;font-weight:500}.supply-metric small{font-size:10px;color:var(--muted)}.bar-caption{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin-top:6px}.coverage-bar{height:7px;margin-top:6px}.coverage-bar b{height:11px}.storage-bar{height:7px;background:#e4e7dc;border-radius:4px;margin-top:6px}.storage-bar i{display:block;height:100%;border-radius:4px;background:#6b9596}.storage-caption{font-size:10px;color:var(--muted);margin-top:6px}
.supply-inventory{margin-top:15px;border-top:1px solid var(--line);padding-top:12px}.supply-inventory h3{font-size:10px;letter-spacing:.4px;margin:0 0 8px;text-transform:uppercase;color:#687466}.inventory-item,.core-facility{display:flex;justify-content:space-between;align-items:center;gap:9px;font-size:11px;width:100%;padding:8px 0;text-align:left;background:none}.inventory-item{border-top:1px solid #edf0e5;min-height:44px}.inventory-item:hover{background:#eef2e7}.inventory-item small,.core-facility small{display:block;font-size:9px;color:var(--muted);margin-top:4px;line-height:1.4}.core-facility b{font-size:11px}.reserve-examples{display:flex;gap:5px;flex-wrap:wrap;margin-top:12px}.reserve-examples .button{font-size:10px;padding:7px 9px;min-height:34px}.supply-detail-scroll>.fine{font-size:9px;line-height:1.5;margin-top:10px;color:var(--muted)}.supply-panel-footer{padding:10px 12px;border-top:1px solid var(--line)}.supply-panel-footer .button{font-size:12px;min-height:38px;padding:9px}
.origin-tag{display:inline-block;font-size:9px;font-weight:400;color:var(--muted);margin-left:6px}.planning .supply-overview{display:none}.build-panel-footer>small:first-child{margin-top:0}
@media(max-width:700px){
 .supply-overview{left:12px;right:12px;top:66px;width:auto}.supply-overview-heading{font-size:9px;padding:6px 9px}.supply-card{padding:7px 10px}.supply-name{font-size:10px;margin-bottom:5px}.supply-card>strong{font-size:10px}.supply-card .reserve-caption{font-size:9px;margin-top:5px}.supply-card>small{font-size:8px}.supply-meter{margin-top:6px}
 .supply-panel{left:12px;right:12px;width:auto;top:auto;bottom:36px;max-height:49%}.supply-panel .close{height:40px;width:40px}.supply-panel .panel-header{padding:4px 10px}.supply-detail-scroll{padding:10px 12px}.supply-panel-footer{padding:8px 10px}.supply-panel-footer .button,.reserve-examples .button{min-height:44px}.supply-verdict{font-size:10px}.supply-metric strong{font-size:19px}.supply-inventory{margin-top:12px}.inventory-item{min-height:48px}
}
@media(max-height:580px){.supply-overview{width:280px}.supply-card{padding:6px}.supply-panel{top:62px;left:320px;max-height:calc(100% - 100px)}}

@media(min-width:701px){.supply-panel{max-height:min(490px,calc(100% - 260px))}}
/* Transient confirmations never intercept taps on supply cards. */
.toast{pointer-events:none}

/* UI 0.8: population and absolute daily needs, tied to placed homes. */
.population-strip{display:flex;align-items:center;gap:7px;width:100%;padding:10px 11px;text-align:left;background:#eef2e7;border-bottom:1px solid var(--line)}.population-strip strong{font-size:13px}.population-strip span{margin-left:auto;font-size:10px;color:var(--muted)}.population-strip[aria-expanded=true]{background:#dce8ce}.daily-need{display:block;font-size:8px;line-height:1.5;margin-top:6px;color:var(--muted)}.daily-need b{display:block;font-size:10px;color:var(--ink);font-weight:600;white-space:nowrap}.daily-need small{font-size:8px}
.supply-panel{top:286px;max-height:min(490px,calc(100% - 326px))}.daily-balance{padding:11px 0 0;display:grid;gap:8px;font-size:10px}.daily-balance>div{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.daily-balance b{font-size:13px}.daily-balance p{font-size:10px;text-align:right}.daily-balance .good{color:#3d7450}.daily-balance .shortage,.house-impact p.shortage{color:#a14334}.core-facility>b{font-size:10px;white-space:nowrap}.population-total{display:flex;align-items:baseline;gap:10px}.population-total strong{font-size:30px;font-weight:500}.population-total span{font-size:12px;color:var(--muted)}.population-split{display:flex;gap:6px;flex-direction:column;margin-top:10px;font-size:10px;color:var(--muted)}.demand-title{font:600 12px Arial,sans-serif;margin:20px 0 8px}.demand-table{width:100%;border-collapse:collapse;font-size:10px}.demand-table th,.demand-table td{padding:10px 3px;border-bottom:1px solid var(--line);text-align:right}.demand-table th:first-child{text-align:left}.demand-table tbody th svg{vertical-align:middle;margin-right:4px}.demand-table thead{font-size:9px;color:var(--muted)}.demand-table tbody th{font-weight:500}.population-assumption{font-size:10px;color:var(--muted);line-height:1.6;margin-top:13px}.house-impact{background:#eef2e5;border-radius:5px;padding:8px 10px;margin:6px 0}.house-impact>strong{font-size:12px;display:block}.house-impact>span{font-size:9px;color:var(--muted);display:block;margin-top:4px}.house-demand{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:8px}.house-demand>span{display:flex;align-items:center;gap:3px;font-size:9px}.village .house-impact p{font-size:9px;margin-top:7px;color:#3d7450}.village .house-impact p.shortage{color:#a14334}.house-move-note{font-size:10px;padding:7px;background:#edf1e5;border-radius:4px}.build-filters{overflow-x:auto;flex-shrink:0;overscroll-behavior:contain}.build-filters button{padding:7px 8px;flex-shrink:0}
@media(max-width:700px){
 .population-strip{padding:7px 10px;min-height:36px}.population-strip strong{font-size:12px}.population-strip span{font-size:10px}.daily-need{margin-top:4px}.daily-need b{font-size:10px}.daily-need small{display:none}.supply-card .reserve-caption{margin-top:5px}.supply-panel{top:auto;max-height:49%}.build-filters button{min-height:38px;padding:7px 10px}.daily-balance b{font-size:12px}.population-total strong{font-size:27px}.population-assumption{font-size:9px}.house-impact{padding:7px 9px;margin:4px 0}.house-impact>strong{font-size:11px}.village.coastal-view .free-planner:has(.house-impact){max-height:49%}.house-demand{gap:5px 8px}
}
@media(min-width:701px) and (max-height:700px){.supply-panel{left:375px;top:62px;max-height:calc(100% - 100px)}}

/* UI 0.9: build, supply 90 days, then explicitly advance one season. */
.season-strip{display:flex;justify-content:space-between;align-items:center;padding:7px 11px;font-size:10px;border-bottom:1px solid var(--line);background:#f5f4ea}.season-strip span{font-size:9px;color:var(--muted)}
.supply-overview-heading{flex-wrap:wrap;gap:4px 6px}.supply-overview-heading>span{width:100%;padding-left:19px;font-size:8px;font-weight:400;color:var(--muted)}
.season-meter b{display:none}.season-meter{margin-top:8px}.supply-card .reserve-caption{font-size:8px;white-space:normal;align-items:flex-start}.supply-card .reserve-caption svg{flex-shrink:0}.supply-card.shortage .reserve-caption{color:#a14334}.daily-need b{font-size:10px}
.supply-panel{top:316px;max-height:min(490px,calc(100% - 356px))}.season-ledger{display:grid;gap:11px;margin-top:15px;font-size:10px}.season-ledger>div{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.season-ledger b{font-size:12px;white-space:nowrap}.season-ledger .ledger-total{padding-top:11px;border-top:1px solid var(--line);color:#3d7450}.season-ledger .shortage{color:#a14334}.season-assumption{font-size:10px;line-height:1.6;margin-top:12px;color:var(--muted)}
.village .season-dock:not(.planner){width:330px;padding:12px 14px;right:20px;left:auto;bottom:43px}.season-dock-title{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px}.season-dock-title>span{font-size:9px;color:var(--muted)}.village .season-dock>p{display:flex;align-items:center;gap:5px;margin:10px 0;font-size:10px}.season-dock .ready{color:#3d7450}.season-dock .shortage{color:#a14334}.season-actions{display:flex;gap:6px}.season-actions .next-season{margin-left:auto;flex:1}.season-actions .button{font-size:11px!important;padding:9px!important;white-space:nowrap}.season-dock>small{display:block;font-size:8px;color:var(--muted);margin-top:8px;text-align:right}
.season-completed{font-size:12px;line-height:1.7}.season-report-next{background:#edf2e4;border-radius:5px;padding:11px;font-size:15px;margin-top:12px}.season-report-next small{display:block;font-size:10px;color:var(--muted);margin-top:5px}.season-result-table{width:100%;border-collapse:collapse;margin-top:13px;font-size:10px}.season-result-table th,.season-result-table td{padding:11px 2px;border-bottom:1px solid var(--line);text-align:right}.season-result-table th:first-child{text-align:left}.season-result-table tbody th{font-weight:500}.season-result-table th svg{vertical-align:middle;margin-right:3px}.season-result-table thead{font-size:8px;color:var(--muted)}.report-actions{display:flex;gap:6px}.report-actions .primary{margin-left:auto}.village .house-impact .house-season-cost{font-size:8px;color:var(--muted);line-height:1.4}
@media(max-width:700px){
 .season-strip{padding:6px 10px}.supply-overview-heading{padding:6px 9px}.supply-overview-heading>span{font-size:8px}.supply-panel{top:auto;max-height:49%}.village .season-dock:not(.planner){left:12px;right:12px;bottom:36px;width:auto;padding:11px 12px}.season-actions .button{min-height:44px}.season-ledger b{font-size:11px}.season-result-table{font-size:9px}.season-assumption{font-size:9px}.season-dock-title>span{font-size:9px}.house-impact .house-season-cost{margin-top:5px}
}
@media(min-width:701px) and (max-height:760px){.supply-panel{left:375px;top:62px;max-height:calc(100% - 100px)}}

/* UI 0.10: season-aware map styling and a direct, familiar house-building action. */
.seasonal-landscape{pointer-events:none}.season-actions{flex-wrap:wrap}.season-actions .quick-house{min-width:112px}.season-actions .next-season{min-width:132px}.season-actions:has(.quick-house):has([data-action="review-season"]) .next-season{flex-basis:100%}
@media(max-width:700px){.season-actions .quick-house{min-width:110px}.season-actions .next-season{min-width:135px}}

/* Realistic cutouts share camera, lighting, scale and material direction. */
.object-preview .model-thumb{height:58px;width:74px;flex-shrink:0;background:#eef1e6;border-radius:5px;padding:4px}.object-detail .object-preview .model-thumb{height:78px;width:96px}.asset-thumb .model-thumb{width:57px;height:48px;padding:2px}.placed-model{overflow:visible;pointer-events:none}.model-thumb{display:block;overflow:visible}
@media(max-width:700px){.object-preview .model-thumb{height:46px;width:62px}.object-detail .object-preview .model-thumb{height:60px;width:80px}.asset-thumb .model-thumb{width:45px;height:46px}}

.season-actions .quick-house{min-width:100px;font-size:10px!important;gap:5px;padding:8px!important}.season-actions .quick-house svg{width:14px;height:14px}.season-actions .compact-undo{flex:0 0 40px;width:40px;min-width:40px;font-size:0!important}.season-actions .next-season{min-width:128px}
@media(max-width:700px){.season-actions .compact-undo{flex-basis:44px;min-width:44px}}

/* UI 0.11: resident life is the primary loop; details are deliberate and compact. */
.resident-summary{position:absolute;z-index:5;top:64px;left:20px;width:300px;background:var(--paper);border:1px solid #d4dccd;border-radius:8px;box-shadow:0 5px 24px #183e2215;overflow:hidden}
.resident-top{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#eef2e5;width:100%;padding:11px 12px;font-size:11px;text-align:left}.resident-top strong,.resident-top span{display:flex;align-items:center;gap:5px}.resident-top span{font-size:9px;font-weight:400;color:var(--muted)}
.life-glance{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;padding:13px 14px 9px;background:transparent}.life-glance strong{font-size:15px}.life-glance small{display:block;font-size:10px;margin-top:5px;color:var(--muted)}.need-count{font-size:25px;font-family:Georgia,serif;color:#97633e}.need-count small{display:inline;font:11px Arial;color:var(--muted)}.need-count.complete{color:#3b704e}
.outlook-line{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:4px 14px 12px;background:transparent;font-size:9px}.outlook-line>span{color:var(--muted)}.outlook-line b{display:flex;align-items:center;gap:4px;font-size:9px;font-weight:500}
.resident-tabs{display:flex;border-top:1px solid var(--line)}.resident-tabs button{background:transparent;display:flex;align-items:center;justify-content:center;gap:6px;flex:1;font-size:11px;padding:11px 6px}.resident-tabs button+button{border-left:1px solid var(--line)}.resident-tabs button[aria-pressed=true]{background:#e7eddc;color:#244f3a;font-weight:700}
.life-panel.supply-panel{top:250px;left:20px;bottom:auto;width:340px;max-height:calc(100% - 285px);display:flex;flex-direction:column;overflow:hidden;background:var(--paper);border-radius:8px}.life-panel .panel-header{flex:none;padding:13px 15px}.life-panel .panel-header h2{font:600 15px Arial;letter-spacing:0}.life-panel .supply-detail-scroll{padding:14px 16px;min-height:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-y}.life-panel .supply-panel-footer{display:flex;gap:8px;flex:none;padding:11px 14px}.life-panel .supply-panel-footer .primary:not(.full){margin-left:auto}.life-panel .button{font-size:11px;min-height:40px}.full{width:100%}
.outlook-card{padding:14px;border:1px solid #dce2d2;background:#edf2e5;border-radius:6px}.outlook-card .eyebrow{display:block;font-size:9px;letter-spacing:1px}.outlook-card>strong{display:block;font:22px Georgia;margin:7px 0;color:#36533c}.outlook-card p{font-size:11px;line-height:1.55}.outlook-card small{display:block;font-size:9px;color:var(--muted);margin-top:9px;line-height:1.5}
.needs-list-heading{display:flex;justify-content:space-between;gap:8px;margin:19px 0 9px;font-size:9px}.needs-list-heading span{color:var(--muted)}.need-row{display:flex;align-items:center;text-align:left;width:100%;gap:9px;background:transparent;padding:12px 0;border-bottom:1px solid #e2e6db}.need-row-icon{display:flex;width:23px;justify-content:center;color:#59705b}.need-row-copy{flex:1;min-width:0}.need-row-copy strong{font-size:11px;font-weight:500}.need-row>b{font-size:11px;width:39px;text-align:right}.need-meter{display:block;height:4px;background:#e6eadd;border-radius:6px;overflow:hidden;margin-top:7px}.need-meter i{display:block;height:100%;background:#809d71;border-radius:6px}.need-meter.attention i{background:#b88b57}.attention-text{color:#9b5d2c!important}
.detail-intro{font-size:12px!important;line-height:1.65!important;margin-top:12px!important}.detail-note{font-size:10px!important;line-height:1.6!important;color:var(--muted);margin-top:13px!important}.detail-subtitle{font-size:12px;margin:18px 0 8px}.plain-card{border:1px solid #e0e5d7;border-radius:6px;padding:12px;margin-top:14px}.plain-card>strong{font-size:12px}.plain-card p{font-size:11px!important;line-height:1.65!important;margin-top:6px}.plain-card .button{margin-top:10px}.metric-pair{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:11px;padding:8px 0}.metric-pair>b{white-space:nowrap}.metric-pair>span{line-height:1.5}
.resource-links{margin-top:12px}.resource-links>button{display:flex;align-items:center;gap:12px;width:100%;background:transparent;border-bottom:1px solid var(--line);padding:16px 0;text-align:left}.resource-links>button>span{flex:1;font-size:12px}.resource-links>button svg{vertical-align:middle;margin-right:6px}.resource-links small{display:block;font-size:9px;color:var(--muted);margin-top:5px;font-weight:400}.resource-links b{text-align:right;font-size:18px}.nutrition-callout{display:flex;align-items:center;gap:12px;text-align:left;background:#f3eddc;border-radius:6px;padding:13px;width:100%;margin-top:16px}.nutrition-callout>span{flex:1}.nutrition-callout strong{font-size:11px}.nutrition-callout small{display:block;margin-top:6px;font-size:11px;color:#93683a}
.back-link{padding:0;background:transparent;font-size:10px;color:var(--muted);margin-bottom:13px}.need-detail-score{display:flex;align-items:center;gap:16px}.need-detail-score>strong{font:34px Georgia}.need-detail-score>span{font-size:11px}.need-detail-score small{display:block;margin-top:6px;font-size:9px;color:var(--muted)}.capacity-display{margin:20px 0 12px}.capacity-display>strong{display:block;font:32px Georgia}.capacity-display small{font-size:20px;color:var(--muted)}.capacity-display>span{display:block;font-size:11px;margin-top:5px}
.quantity-tile{display:flex;align-items:center;gap:15px;text-align:left;width:100%;margin-top:16px;background:#edf2e5;border-radius:6px;padding:13px}.quantity-tile>span{flex:1;font-size:12px;font-weight:600}.quantity-tile small{display:block;font-size:9px;font-weight:400;line-height:1.6;margin-top:6px;color:var(--muted)}.quantity-tile>strong{font-size:20px}.food-group{padding:13px 0;border-bottom:1px solid #e1e6d8}.food-group>div{display:flex;justify-content:space-between;gap:8px;font-size:11px}.food-group small{display:block;margin-top:7px;font-size:9px;line-height:1.5;color:var(--muted)}.missing-explanation{font-size:12px!important;line-height:1.65!important;color:#8d6137;margin-top:15px!important}.impact-card{margin:15px 0;background:#edf2e5;border:1px solid #dbe4ce;border-radius:6px;padding:15px}.impact-card>span{font-size:10px;color:var(--muted)}.impact-card>strong{display:block;font:23px Georgia;margin-top:8px}.impact-card p{font-size:11px!important;line-height:1.55!important;margin-top:7px!important}.impact-card small{display:block;font-size:9px;margin-top:9px;color:var(--muted)}.impact-card.compact{margin:10px 0;padding:10px}.impact-card.compact>strong{font:600 12px Arial;margin-top:5px}.impact-card.compact>span{font-size:9px}.impact-card.compact p{font-size:10px!important;margin-top:5px!important}.impact-card.compact small{font-size:8px}
.nature-state{display:flex;gap:12px;align-items:center;padding:12px 0}.nature-state span{font-size:10px;color:var(--muted);display:block}.nature-state strong{display:block;font-size:14px;line-height:1.5;margin-top:5px}.season-outcomes{margin:15px 0;padding:14px;background:#f1f2e7;border-radius:6px}.season-outcomes>.eyebrow{font-size:9px;display:block}.season-outcomes>strong{display:block;font:22px Georgia;margin:9px 0}.season-outcomes p{font-size:11px!important;margin-top:9px;line-height:1.6}.example-scenario,.resource-report{font-size:11px;border-top:1px solid var(--line);margin-top:17px;padding-top:12px}.example-scenario summary,.resource-report summary{cursor:pointer;padding:5px 0}.example-scenario p{font-size:10px;margin:8px 0}.example-scenario .button{margin-top:7px}
.village .season-dock:not(.planner){width:330px}.season-actions .next-season{min-width:132px}.season-actions .compact-undo{min-width:38px;flex-basis:38px}.season-dock .season-actions{flex-wrap:nowrap}.season-dock .season-actions>.ghost:not(.compact-undo){font-size:10px!important}.village .planner.free-planner{max-height:calc(100% - 265px);overflow:auto;overscroll-behavior:contain;touch-action:pan-y}.optional-build{font-weight:400!important;background:#fffef8e8!important}.build-panel{max-width:330px}.build-item .asset-thumb{background:#f0f2e8}
@media(min-width:1050px){.life-panel.supply-panel{top:64px;left:auto;right:20px;max-height:calc(100% - 110px);width:360px}}
@media(min-width:701px) and (max-height:760px){.life-panel.supply-panel{left:auto;right:20px;top:64px;max-height:calc(100% - 110px)}}
@media(max-width:700px){
 .resident-summary{top:63px;left:12px;right:12px;width:auto;max-width:366px}.resident-top{padding:8px 11px}.life-glance{padding:9px 12px 5px}.life-glance strong{font-size:13px}.life-glance small{font-size:9px;margin-top:4px}.need-count{font-size:22px}.outlook-line{padding:4px 12px 8px;font-size:9px}.outlook-line b{font-size:9px}.resident-tabs button{min-height:40px;padding:8px 5px}.resident-top strong{font-size:11px}.resident-top span{font-size:9px}
 .life-panel.supply-panel{top:auto;bottom:33px;left:12px;right:12px;width:auto;max-height:49%;border-radius:8px}.life-panel .panel-header{padding:12px 14px}.life-panel .supply-detail-scroll{padding:12px 14px}.life-panel .button{min-height:44px}.life-panel .supply-panel-footer{padding:9px 12px}.need-row{min-height:49px}.resident-summary:has(+ .planner){opacity:1}.village .planner.free-planner{max-height:49%;overflow:auto}.village .season-dock:not(.planner){width:auto}.need-row-copy strong{font-size:12px}.need-row>b{font-size:12px}.detail-intro{font-size:12px!important}.detail-note{font-size:10px!important}.outlook-card>strong{font-size:21px}.season-actions .compact-undo{min-width:44px;flex-basis:44px}
}
@media(max-width:700px) and (max-height:650px){.resident-summary .outlook-line{display:none}.life-panel.supply-panel,.village .planner.free-planner{max-height:43%}.life-glance{padding-top:6px;padding-bottom:6px}.resident-tabs button{min-height:36px}}

/* UI0.12: two places, clear costs and two complete interface languages. */
.language-switch{display:flex;gap:2px;margin-left:auto;border:1px solid var(--line);border-radius:5px;padding:2px}.language-switch button{background:none;font-size:10px;padding:6px 8px;border-radius:3px;min-height:30px}.language-switch button[aria-pressed=true]{background:var(--green);color:var(--paper)}.prototype{margin-left:0}
.village .scene-heading{padding-right:36px}.settlement-switcher{position:absolute;left:276px;top:20px;z-index:4;height:31px;width:29px;display:grid;place-items:center;background:none}.workshop-strip{position:absolute;top:245px;left:20px;width:300px;z-index:5;display:flex;align-items:center;gap:12px;text-align:left;padding:12px;background:var(--paper);border:1px solid var(--line);border-radius:6px;box-shadow:0 3px 15px #17361b12}.workshop-strip>span{display:flex;align-items:center;gap:5px;flex:1;font-size:11px}.workshop-strip b{font-size:14px}.workshop-strip small{display:block;font-size:8px;font-weight:400;color:var(--muted);margin-top:3px}.workshop-strip>span small{font-size:9px;margin:0}.planning .workshop-strip{display:none}.lifespan-card>strong{font-size:36px}.lifespan-card>strong>small{display:inline;font:14px Arial;color:var(--muted)}.lifespan-track{height:6px;background:#dce3d0;border-radius:9px;margin:14px 0 7px;overflow:hidden}.lifespan-track i{display:block;height:100%;background:#64865b}.lifespan-range{display:flex;justify-content:space-between;font-size:9px;color:var(--muted)}.lifespan-card details{font-size:10px;line-height:1.6;margin-top:15px}.lifespan-card summary{cursor:pointer}.lifespan-card details p{margin-top:8px}.outlook-line{padding:7px 14px 12px}.outlook-line>span{font-size:11px}.outlook-line b{font-size:13px;font-weight:600}.cost-card{padding:10px;border:1px solid #dce1d3;border-radius:5px;background:#f3f2e6;margin:10px 0}.cost-card span,.cost-card small{display:block;font-size:9px;color:var(--muted)}.cost-card strong{display:block;font-size:12px;margin:5px 0}.cost-card.unaffordable{background:#f4e5d7;color:#8b472f}.cost-card .button{margin-top:8px}.build-cost{color:#8b6a36!important}.settlement-card{display:flex;align-items:center;text-align:left;gap:12px;padding:10px;width:100%;margin-top:12px;background:transparent;border:1px solid var(--line);border-radius:6px}.settlement-card.active{background:#e9efdc;border-color:#9db286}.settlement-card img{width:72px;height:62px;object-fit:cover;border-radius:3px}.settlement-card span{flex:1}.settlement-card strong{display:block;font-size:14px}.settlement-card small{display:block;font-size:10px;line-height:1.6;margin-top:6px;color:var(--muted)}.workshop-overview>span{font-size:11px;color:var(--muted)}.workshop-overview>strong{display:block;font:28px Georgia;margin:9px 0}.workshop-resources>div{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line);font-size:12px}.workshop-resources b{font:28px Georgia;text-align:right}.workshop-resources small{font:10px Arial;margin-top:6px}.life-panel .supply-panel-footer{flex-wrap:wrap}.life-panel .supply-panel-footer .full{flex-basis:100%}.village .life-panel{top:64px;left:auto;right:20px;width:360px;max-height:calc(100% - 110px)}.village .planner.free-planner{max-height:calc(100% - 115px)}.village .scene-heading{gap:8px}.desert-scene{background:#c9af81}.build-filters button{font-size:10px}.build-item{min-height:74px}
@media(max-width:700px){.prototype{display:none}.language-switch{margin-left:auto}.language-switch button{min-height:36px;padding:6px 10px}.village .scene-heading{max-width:155px;padding-right:29px}.village .scene-heading h1{font-size:12px}.settlement-switcher{left:111px;top:18px;height:35px;width:26px}.toolbar{gap:4px}.toolbar .button{padding:10px 8px;font-size:10px;gap:4px}.workshop-strip{left:12px;right:12px;top:235px;width:auto;max-width:366px;padding:8px 11px}.workshop-strip>span{font-size:10px}.workshop-strip b{font-size:12px}.village .life-panel{top:auto;bottom:33px;left:12px;right:12px;width:auto;max-height:49%}.village .planner.free-planner{max-height:49%}.planning .resident-summary{display:none}.cost-card{padding:8px;margin:8px 0}.cost-card strong{font-size:11px}.lifespan-card>strong{font-size:30px}.outlook-line{padding-bottom:9px}.outlook-line b{font-size:12px}.build-panel{max-width:none}.settlement-card img{width:64px;height:55px}.toast{top:290px}.village .life-panel .panel-header h2{font-size:14px}.village .life-panel .button{white-space:normal}.village .season-dock:not(.planner){bottom:33px}}
.place-buttons{display:flex;gap:8px;margin:14px 0 10px}.place-buttons .button{flex:1}.choose-place p{font-size:11px}@media(max-width:700px){.place-buttons{flex-direction:column}.place-buttons .button{min-height:44px}.settlement-switcher{z-index:11}.village .scene-heading{max-width:147px}}
.village .scene-heading{padding-right:12px}.place-title{display:flex;align-items:center;gap:9px;background:none;padding:0;font:inherit;text-align:left;min-height:20px}.place-title svg{color:var(--muted)}@media(max-width:700px){.village .scene-heading{padding:9px 10px;max-width:155px}.place-title{min-height:26px}.life-panel~.workshop-strip{display:none}}
/* UI0.13: one entry, two connected settlements. */
.neighbor-strip{position:absolute;left:20px;top:310px;width:300px;display:flex;align-items:center;gap:10px;background:#f8f8ef;border:1px solid var(--line);padding:10px 11px;border-radius:5px;z-index:5;font-size:10px;text-align:left}.neighbor-strip>span{display:flex;align-items:center;gap:6px;flex:1}.neighbor-strip strong{font-size:9px;font-weight:500;color:var(--muted)}.planning .neighbor-strip{display:none}.neighbor-heading>span{font-size:10px;color:var(--muted)}.neighbor-heading>strong{font:22px Georgia;display:block;margin-top:7px}.start-places{width:640px;bottom:42px}.start-places h2{font-size:24px}.start-place-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.start-place-grid .settlement-card{margin:0;padding:9px;background:#f2f3e8}.start-place-grid .settlement-card img{width:72px;height:85px}.start-place-grid .settlement-card>svg{display:none}.start-place-grid .settlement-card small{font-size:9px}.start-planet-link{display:flex;align-items:center;gap:7px;font-size:11px;padding:7px 0;background:none;color:var(--muted)}.space .orbit-system{inset:-6% 0 25%}.space .scene-heading h1{font-size:30px}.space .scene-heading{top:25px}.build-filters button{padding-left:7px;padding-right:7px}
@media(max-width:700px){.neighbor-strip{top:292px;left:12px;right:12px;width:auto;max-width:366px;min-height:36px;padding:7px 11px;font-size:10px}.neighbor-strip strong{font-size:9px}.start-places{bottom:35px;padding:14px}.start-place-grid{grid-template-columns:1fr;gap:8px;margin:10px 0}.start-place-grid .settlement-card{min-height:86px}.start-place-grid .settlement-card img{width:76px;height:64px}.start-place-grid .settlement-card small{font-size:10px}.start-places h2{font-size:23px}.space .scene-heading{top:75px}.space .scene-heading h1{font-size:25px}.space .scene-heading p{font-size:11px;max-width:210px}.space .nav-steps{display:none}.space .orbit-system{inset:7% 0 30%;opacity:.8}.space .context-planet{display:none}.space .planet-select{top:22%;left:57%}.space .planet-select strong,.space .planet-select>span:last-child{display:none}.space .sun{left:38%;top:36%;width:33px;height:33px}.neighbor-heading>strong{font-size:21px}}
.space .orbit-system{left:50%;right:auto}@media(max-width:700px){.space .orbit-system{left:50%;right:auto}}
@media(max-width:700px){.dock.start-places{left:12px;right:12px;width:auto;max-width:none;transform:none}.start-place-grid .settlement-card>span{min-width:0}.start-place-grid .settlement-card{min-width:0}.start-places>p{max-width:100%;white-space:normal}}

/* Native Terrumi canvas stays mounted while the small management panels update. */
#native-editor-frame{position:fixed;border:0;z-index:1;background:#d6e3d7;display:block}
#native-editor-frame[hidden]{display:none}
body.native-editor #app{position:relative;z-index:2;pointer-events:none}
body.native-editor .shell,body.native-editor .stage.village{background:transparent;pointer-events:none}
body.native-editor .topbar,body.native-editor button,body.native-editor input,body.native-editor select,body.native-editor .dock,body.native-editor aside,body.native-editor .panel,body.native-editor .life-sheet,body.native-editor .life-panel,body.native-editor .view-menu{pointer-events:auto}
body.native-editor .native-scene-placeholder{position:absolute;inset:0;pointer-events:none;display:grid;place-items:center}
.native-loading{padding:15px 20px;background:var(--paper);border-radius:8px;font-size:13px}
body.native-ready .native-loading{display:none}
.native-tools-entry{padding-bottom:10px}.native-tools-entry .button{font-size:11px;min-height:40px}
body.native-tools-open .canvas-note{display:none}
@media(max-width:700px){body.native-tools-open .resident-summary,body.native-tools-open .life-summary,body.native-tools-open .workshop-strip,body.native-tools-open .neighbor-strip{display:none}}

body.native-modal-open #native-editor-frame{z-index:5}

body.native-tools-open .resident-summary{max-width:240px}body.native-tools-open .resident-tabs,body.native-tools-open .life-glance,body.native-tools-open .workshop-strip,body.native-tools-open .neighbor-strip{display:none}
.save-warning{position:fixed;z-index:50;left:50%;bottom:8px;transform:translateX(-50%);background:#8d402d;color:#fff;padding:10px 16px;border-radius:6px;font-size:12px;max-width:90%}

.play-editor-link{color:var(--green);font-size:12px;white-space:nowrap}.topbar .prototype{margin-left:0}@media(max-width:700px){.topbar{gap:8px}.play-editor-link{font-size:11px}.topbar .prototype{white-space:normal;max-width:102px;font-size:9px}}
