/* Mandoria environmental art layer. All assets self-hosted under the strict CSP. */
:root{--cinema-gold:#dfbb78;--cinema-ink:#080d0c;--cinema-line:#b496633b}
#estate{max-width:880px;margin-inline:auto}
#estate .estate-heading{margin-bottom:15px}#estate .estate-heading h2{font-weight:500;letter-spacing:-.025em}
.estate-hero{padding:20px 0 13px;background:none;border:0;border-radius:0;margin:0;box-shadow:none}
.estate-hero:before{display:none}.estate-hero h3{font-size:clamp(1.55rem,6vw,2.3rem);font-weight:500;max-width:22ch;line-height:1.14}
.estate-hero-meta{gap:15px;margin-top:12px}.estate-hero-meta span{background:none;border:0;border-radius:0;padding:0;color:#c5bca6;font-size:.62rem}
.estate-scene{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:2/3;border:1px solid #cbb17a69;border-radius:20px;background:#111b16;box-shadow:0 18px 50px #0009;margin:12px 0;touch-action:pan-y}
.scene-camera{position:absolute;inset:0;transform:translate(var(--camera-x,0),var(--camera-y,0)) scale(var(--camera-scale,1));transform-origin:center;will-change:transform}
.estate-scene.is-zoomed,#capitalMapStage.is-zoomed{touch-action:none;cursor:grab}
.estate-scene .estate-map{display:block;padding:0;margin:0;border:0;border-radius:0;background:url('/mobile/estate-landscape-v1.webp') center/100% 100% no-repeat;overflow:visible}
.estate-map:before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#030b0c22,transparent 28%,transparent 80%,#03080777);z-index:1}
.estate-atmosphere{position:absolute;inset:0;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at 90% 8%,#ffd89730,transparent 55%);z-index:2}
.estate-atmosphere:after{content:'';position:absolute;inset:-15%;background:radial-gradient(ellipse at 20% 30%,#f4e5b40c,transparent 40%),radial-gradient(ellipse at 80% 65%,#d6e6d91c,transparent 35%);animation:estate-mist 22s ease-in-out infinite alternate}
.estate-scene .estate-lot{position:absolute;display:block;left:var(--lot-x);top:var(--lot-y);width:30%;height:20%;min-height:0;padding:0;margin:0;transform:translate(-50%,-65%);background:none;border:0;border-radius:8px;box-shadow:none;z-index:3;color:#fff0cd}
.estate-scene .estate-lot[data-key=manor]{--lot-x:50%;--lot-y:29%;z-index:3}
.estate-scene .estate-lot[data-key=woodcutter]{--lot-x:25%;--lot-y:38%;z-index:4}
.estate-scene .estate-lot[data-key=quarry]{--lot-x:78%;--lot-y:39%;z-index:4}
.estate-scene .estate-lot[data-key=farm]{--lot-x:22%;--lot-y:54%;z-index:6}
.estate-scene .estate-lot[data-key=warehouse]{--lot-x:52%;--lot-y:44%;z-index:5}
.estate-scene .estate-lot[data-key=sawmill]{--lot-x:79%;--lot-y:55%;z-index:6}
.estate-scene .estate-lot[data-key=forge]{--lot-x:25%;--lot-y:68%;z-index:8}
.estate-scene .estate-lot[data-key=market]{--lot-x:53%;--lot-y:60%;z-index:7}
.estate-scene .estate-lot[data-key=academy]{--lot-x:47%;--lot-y:77%;z-index:9}
.estate-scene .estate-lot[data-key=tavern]{--lot-x:77%;--lot-y:70%;z-index:8}
.estate-miniature{display:block;width:180px;height:180px;margin:0 auto;filter:drop-shadow(1px 6px 5px #0009);background-image:url('/mobile/estate-buildings-v1.webp');background-size:400% 300%;background-repeat:no-repeat;transform:none!important}
.estate-miniature:before,.estate-miniature:after,.estate-miniature svg{display:none}
.estate-miniature[data-art=manor]{background-position:0 0}.estate-miniature[data-art=woodcutter]{background-position:33.333333% 0}.estate-miniature[data-art=quarry]{background-position:66.666667% 0}.estate-miniature[data-art=farm]{background-position:100% 0}
.estate-miniature[data-art=warehouse]{background-position:0 50%}.estate-miniature[data-art=sawmill]{background-position:33.333333% 50%}.estate-miniature[data-art=forge]{background-position:66.666667% 50%}.estate-miniature[data-art=market]{background-position:100% 50%}.estate-miniature[data-art=academy]{background-position:0 100%}.estate-miniature[data-art=tavern]{background-position:33.333333% 100%}
.estate-scene .estate-miniature{position:absolute;inset:0;width:100%;height:100%;margin:0;transition:filter .2s}
.estate-scene .estate-lot[data-tier='2'] .estate-miniature{filter:drop-shadow(1px 6px 5px #0009) brightness(1.07)}
.estate-scene .estate-lot[data-tier='3'] .estate-miniature{filter:drop-shadow(1px 6px 5px #0009) brightness(1.12)}
.estate-scene .estate-lot__level{z-index:3;left:50%;top:auto;right:auto;bottom:4%;transform:translateX(-50%);font-size:clamp(8px,2.2vw,11px);letter-spacing:.08em;border:1px solid #d5b87988;padding:4px 7px;white-space:nowrap;color:#f5dfae;background:#07110fee;box-shadow:0 2px 8px #0009}
.estate-scene .estate-lot b{position:absolute;bottom:-10%;left:50%;transform:translateX(-50%);font:500 clamp(10px,2.5vw,14px)/1.2 var(--serif);padding:4px 6px;margin:0;white-space:nowrap;background:#08110fe8;border-radius:4px;text-shadow:0 1px 2px #000;opacity:0;transition:opacity .15s;pointer-events:none}
.estate-scene.show-labels .estate-lot b,.estate-scene .estate-lot:hover b,.estate-scene .estate-lot:focus-visible b{opacity:1}
.estate-scene .estate-lot small{display:none}
.estate-scene .estate-lot.is-empty .estate-miniature{opacity:0}
.estate-scene .estate-lot.is-empty:before{content:'+';display:grid;place-items:center;position:absolute;left:29%;right:29%;top:37%;bottom:25%;border:1px dashed #ead093bb;border-radius:50%;background:#0a140f88;color:#f4d294;font:300 1.5rem var(--sans);box-shadow:0 0 18px #ead09315}
.estate-scene .estate-lot.is-empty .estate-lot__level{bottom:15%;font-size:7px;letter-spacing:0;color:#c7bc9d}
.estate-scene .estate-lot.is-building:after{content:'';position:absolute;inset:26% 17% 18%;border:1px solid #ffc96699;background:repeating-linear-gradient(90deg,transparent 0 24%,#d09d4877 25% 27%,transparent 28% 50%);pointer-events:none;animation:estate-build 2.5s ease-in-out infinite}
.estate-scene .estate-lot.is-available .estate-lot__level{border-color:#e6c578;box-shadow:0 0 8px #c6a85d33}
.scene-controls{position:absolute;z-index:30;bottom:13px;left:50%;transform:translateX(-50%);display:flex;gap:3px;padding:4px;border:1px solid #ceb27c66;border-radius:13px;background:#070e0ee8;box-shadow:0 5px 24px #0008;backdrop-filter:blur(8px)}
.scene-controls button{display:grid;place-items:center;min-width:44px;height:44px;padding:7px;border:0;border-radius:8px;background:transparent;color:#ecd49e;font-size:18px}
.scene-controls button[data-camera=reset]{min-width:64px;font-size:11px;letter-spacing:.06em}.scene-controls button[data-camera=labels]{font:500 15px var(--serif)}
.scene-controls button:hover,.scene-controls button[aria-pressed=true]{background:#ceac6830}.scene-controls button:focus-visible{outline:2px solid #ecd49e;outline-offset:1px}
.estate-scene-title{position:absolute;left:18px;right:18px;top:17px;z-index:15;pointer-events:none;text-shadow:0 2px 9px #000;display:flex;justify-content:space-between;gap:10px;align-items:start;color:#f0d6a3}
.estate-scene-title span{font-size:9px;letter-spacing:.16em}.estate-scene-title b{font:500 19px var(--serif);display:block;margin-top:4px}.estate-scene-title small{font-size:10px;padding:5px 8px;background:#09100bbb;border:1px solid #d5bb763d;border-radius:20px}
.estate-guide{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;align-items:center;padding:14px;border:1px solid #beaa644a;border-radius:12px;background:linear-gradient(110deg,#213629,#101a12);margin:15px 0}.estate-guide small{font-size:9px;letter-spacing:.09em;color:#bdba91}.estate-guide h3{font:500 1.15rem var(--serif);margin:5px 0;color:#f2dfb3}.estate-guide p{font-size:11px;line-height:1.5;color:#bac5ad;margin:0}.estate-guide button{min-height:44px;font-size:11px;max-width:130px;white-space:normal}.estate-guide progress{grid-column:1/-1;height:3px;margin:2px 0 0}.estate-missing{padding:12px;border:1px solid #b7966755;background:#1c2015;border-radius:11px;margin:12px 0}.estate-missing>div{padding:9px 0}.estate-missing b,.estate-missing span{display:block;font-size:12px;line-height:1.5}.estate-missing b{color:#edc89c}.estate-missing span{color:#b5b89e;margin:5px 0}.estate-benefit{color:#b8d9ac!important}.estate-community-meta{display:flex;justify-content:space-between;gap:9px;font-size:12px;color:#dabf87}.estate-community-meta span{color:#a7b19b;font-size:11px}
.estate-next{border-color:#beaa6438;background:linear-gradient(105deg,#1b2821,#0c100d);border-radius:13px}.estate-next small{font-size:9px;letter-spacing:.14em;color:#aa956b}
.estate-stock{gap:5px}.estate-resource{border-color:#bba26b25;background:#0d1511;border-radius:9px}.estate-resource b{font-weight:500;font-variant-numeric:tabular-nums}.estate-tabs{border-bottom:1px solid var(--cinema-line);gap:0}.estate-tabs button{border:0;border-radius:0;background:none;letter-spacing:.03em;color:#92998a}.estate-tabs button[aria-pressed=true]{background:none;box-shadow:inset 0 -2px #dbb66f;color:#f1dcad}
.estate-section{background:linear-gradient(135deg,#17201888,#0b100ddd);border-color:#bba26b2f}.estate-card{background:#080f0bcc;border-color:#bba26b29}
.estate-directory{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:14px 0}.estate-directory button{display:flex;align-items:center;gap:9px;min-width:0;min-height:48px;padding:9px;border:1px solid #bba26b30;border-radius:10px;background:#0b140fee;text-align:left;color:#daccb0;font-size:11px}.estate-directory button span:last-child{margin-left:auto;color:#a89c7d;font-size:10px;white-space:nowrap}
.estate-directory svg{width:18px!important;height:18px!important;flex-shrink:0}.estate-directory b{font-weight:500;overflow-wrap:anywhere}
.capital-theme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.capital-theme-options button{min-width:0;overflow:hidden;border:1px solid #bca16a55;border-radius:10px;background:#0b100d;color:#d9c9a7;padding:0 0 10px}.capital-theme-options img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;margin-bottom:9px}.capital-theme-options span{font-size:11px}.capital-theme-options button[aria-pressed=true]{border-color:#f3d38a;box-shadow:0 0 0 1px #f3d38a}.capital-theme-options button:disabled{opacity:.5}
#building[data-theme=FROST]{--cinema-line:#96bfd657}#building[data-theme=FROST] .capital-hub-hero__shade{background:linear-gradient(180deg,#162f4310 25%,#0b1a2a77 66%,#081119f5)}#building[data-theme=EMBER] .capital-hub-hero__shade{background:linear-gradient(180deg,#77301710 25%,#41190a66 66%,#190c08f5)}
.capital-camera{z-index:0}.capital-camera .capital-building-layer{inset:0}
#capitalMapStage{touch-action:pan-y;aspect-ratio:4/5!important;border-top:1px solid #c6a16644}
#capitalMapStage .capital-hotspot__plate{opacity:0;transform:translate(-50%,-50%) scale(.9);transition:opacity .15s,transform .15s}
#capitalMapStage.show-labels .capital-hotspot__plate,#capitalMapStage .capital-hotspot:hover .capital-hotspot__plate,#capitalMapStage .capital-hotspot:focus-visible .capital-hotspot__plate{opacity:1;transform:translate(-50%,-50%) scale(1)}
#capitalMapStage .capital-city-backdrop{filter:saturate(.96) contrast(1.015) brightness(1.04)}
#capitalMapStage .capital-scene-canvas{mix-blend-mode:normal}
.capital-game-header h2{font-weight:500!important;letter-spacing:-.02em;font-size:clamp(1.75rem,6vw,2.6rem)!important;max-width:100%!important}
.capital-game-header #capitalLead{max-width:100%;overflow-wrap:anywhere}.capital-game-header{padding-right:18px!important}.capital-game-header__actions{position:static!important;justify-content:flex-start!important;margin-top:10px}
#building .capital-hub-heading h2{font-size:clamp(1.6rem,6.3vw,2.7rem);font-weight:500;letter-spacing:-.015em;overflow-wrap:anywhere}
#building .capital-hub-hero{min-height:clamp(410px,69svh,650px);border-radius:17px;box-shadow:0 22px 65px #0009}
#building .capital-hub-hero__icon{width:56px;height:56px;border-radius:14px;background:#080d0bd9;box-shadow:0 6px 30px #0005}
#building .capital-hub-hero__icon svg{width:27px;height:27px}#building .capital-hub-hero h3{font-size:clamp(1.65rem,6.8vw,3rem);font-weight:500;overflow-wrap:anywhere;hyphens:auto;text-wrap:balance;line-height:1.12}
#building .capital-hub-hero__copy{max-width:100%;width:100%}#building .capital-hub-hero__copy .badge{max-width:100%;white-space:normal;overflow-wrap:anywhere;font-size:9px;letter-spacing:.1em}
#building .capital-hub-hero__copy em{font-size:.7rem;opacity:.75}#building .capital-hub-hero__shade{background:linear-gradient(180deg,#0001 28%,#050a07aa 70%,#050806f2)}
.scene-arrival .scene-camera{animation:cinema-arrival 1s cubic-bezier(.2,.7,.2,1) both}.scene-departure{animation:cinema-departure .42s ease-in both}
@keyframes estate-mist{to{transform:translate(4%,3%)}}@keyframes estate-build{50%{opacity:.35}}@keyframes cinema-arrival{from{transform:scale(1.12);filter:brightness(.5)}to{transform:scale(1);filter:none}}@keyframes cinema-departure{to{transform:scale(.93);filter:brightness(.25);opacity:.5}}
@media(min-width:700px){.estate-scene{max-width:650px;margin-inline:auto}.estate-directory{grid-template-columns:repeat(5,minmax(0,1fr))}.estate-directory button{flex-wrap:wrap}.estate-directory button span:last-child{margin-left:0}}
@media(prefers-reduced-motion:reduce){.estate-atmosphere:after,.estate-scene .estate-lot.is-building:after,.scene-arrival .scene-camera,.scene-departure{animation:none!important}.scene-camera{will-change:auto}}

.estate-is-building .estate-hero{padding:0 0 2px}.estate-is-building .estate-hero h3,.estate-is-building .estate-hero p:not(.eyebrow){display:none}.estate-is-building .estate-hero .eyebrow{margin:0 0 7px}.estate-is-building .estate-hero-meta{margin:0;gap:12px}.estate-is-building .estate-tabs{margin-top:14px;margin-bottom:8px}.estate-is-building .estate-guide{margin:8px 0;padding:10px 12px;gap:2px 10px}.estate-is-building .estate-guide p{display:none}.estate-is-building .estate-guide h3{font-size:1rem;margin:4px 0}.estate-is-building .estate-guide button{min-height:40px}.estate-is-building .estate-scene{margin-top:8px}
