:root{--sea-950:#032b37;--sea-900:#073b48;--sea-700:#0f6170;--glass:#052832d1;--line:#ceeeea4d;--text:#f2fbf9;--muted:#a7c5c4;--green:#78d890;--coral:#ff836a;--energy:#f5ca52;--water:#56bdf0;--waste:#ef9b4a;--radius-sm:10px;--radius-md:14px;--ease-camera:cubic-bezier(.2,.8,.2,1)}*{box-sizing:border-box}body{background:var(--sea-950);min-width:320px;color:var(--text);margin:0;font-family:Inter,Microsoft YaHei,system-ui,sans-serif}button{font:inherit}.app-shell{background:radial-gradient(circle at 50% 40%, var(--sea-700), var(--sea-950) 65%);grid-template-rows:auto 1fr auto;min-height:100vh;display:grid}.topbar,.control-bar{background:var(--glass);border-color:var(--line);align-items:center;gap:1rem;padding:1rem 1.5rem;display:flex}.topbar{border-bottom:1px solid var(--line);justify-content:space-between}.header-left,.header-center,.header-right{flex:1}.header-center{text-align:center}.header-right{text-align:right}.brand{letter-spacing:.08em;margin:0;font-weight:700}.eyebrow,.model-version{margin:0}.eyebrow{font-size:1rem;font-weight:600}.model-version{color:var(--muted);font-size:.875rem}.simulation-stage{min-height:22rem;display:grid;position:relative;overflow:hidden}.island-scene{isolation:isolate;background:var(--sea-950);grid-area:1/1;min-width:0;min-height:22rem;position:relative;overflow:hidden}.real-photo-backdrop{z-index:0;background-color:var(--sea-950);filter:saturate(.94)contrast(1.04)blur(.6px);background-position:50% 42%;background-size:cover;position:absolute;inset:0;transform:scale(1.01)}.island-scene>div:not(.real-photo-backdrop){z-index:1;position:relative}.layer-controls{z-index:5;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-wrap:wrap;gap:.45rem;max-width:min(34rem,100% - 2rem);padding:.55rem;display:flex;position:absolute;top:1rem;left:1rem}.layer-control{color:var(--muted);cursor:pointer;background:#032b3785;border:1px solid #0000;border-radius:999px;align-items:center;gap:.38rem;padding:.4rem .65rem;display:inline-flex}.layer-control[aria-pressed=true]{color:var(--text);background:#073b48eb;border-color:currentColor}.layer-control:focus-visible,.facility-marker:focus-visible,.facility-drawer__close:focus-visible,.drawer-close:focus-visible,.primary-action:focus-visible,.secondary-action:focus-visible,.measure-switch input:focus-visible+span,.scenario-field input:focus-visible{outline:3px solid var(--text);outline-offset:2px}.layer-control__swatch{background:currentColor;border-radius:50%;width:.55rem;height:.55rem;box-shadow:0 0 .65rem}.layer-control--carbon{color:var(--coral)}.layer-control--energy{color:var(--energy)}.layer-control--mobility{color:var(--green)}.layer-control--water{color:var(--water)}.layer-control--waste{color:var(--waste)}.facility-marker{white-space:nowrap;color:var(--text);cursor:pointer;background:#032b37e0;border:1px solid #f2fbf999;border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .52rem;display:inline-flex;transform:translateZ(0);box-shadow:0 .35rem 1rem #00000047}.facility-marker:hover{border-color:var(--green);background:var(--sea-900)}.facility-marker__dot{background:var(--green);width:.45rem;height:.45rem;box-shadow:0 0 .55rem var(--green);border-radius:50%}.facility-drawer{z-index:6;border:1px solid var(--line);border-radius:var(--radius-md);width:min(22rem,100% - 2rem);max-height:calc(100% - 2rem);color:var(--text);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#032b37f0;padding:1.1rem;position:absolute;top:1rem;right:1rem;overflow:auto;box-shadow:0 1rem 2.4rem #0000005c}.carbon-ledger{z-index:5;border:1px solid var(--line);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#032b37e6;width:min(18rem,100% - 2rem);padding:.85rem 1rem;position:absolute;top:1rem;right:1rem;box-shadow:0 .8rem 2rem #0000003d}.carbon-ledger p{margin:0}.carbon-ledger__label,.carbon-ledger__source{color:var(--muted);font-size:.75rem}.carbon-ledger__value{color:var(--coral);padding:.18rem 0;font-size:1.65rem;font-weight:750}.facility-drawer__close{border:1px solid var(--line);width:2rem;height:2rem;color:var(--text);cursor:pointer;background:0 0;border-radius:50%;position:absolute;top:.65rem;right:.65rem}.facility-drawer__eyebrow{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin:0 2.5rem .25rem 0;font-size:.75rem}.facility-drawer h2{margin:0;font-size:1.25rem}.facility-drawer__total{color:var(--coral);margin:.55rem 0;font-size:1.75rem;font-weight:700}.confidence-badge{color:var(--energy);background:#f5ca5224;border-radius:999px;padding:.22rem .48rem;font-size:.78rem;display:inline-block}.facility-evidence{gap:.8rem;margin:1rem 0 0;display:grid}.facility-evidence div{border-top:1px solid var(--line);padding-top:.75rem}.facility-evidence dt{color:var(--muted);font-size:.75rem}.facility-evidence dd{margin:.2rem 0 0;line-height:1.45}.control-bar{z-index:8;border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:stretch;position:relative}.control-bar button{border-radius:var(--radius-sm);color:var(--sea-950);background:var(--green);cursor:pointer;transition:transform .16s var(--ease-camera);border:0;padding:.55rem .85rem}.control-bar button:hover{transform:translateY(-1px)}.retrofit-dock{flex:1;grid-template-columns:minmax(10rem,.8fr) minmax(25rem,2.2fr) minmax(19rem,1.2fr) auto;align-items:center;gap:.8rem 1rem;min-width:0;display:grid}.retrofit-dock__heading{align-items:center;gap:.6rem;display:flex}.retrofit-dock__heading p,.retrofit-dock__heading h2{margin:0}.retrofit-dock__heading p{color:var(--text);font-weight:700}.retrofit-dock__heading h2{color:var(--muted);margin-top:.12rem;font-size:.72rem;font-weight:500}.measure-switches{gap:.4rem;min-width:0;padding:.2rem;display:flex;overflow-x:auto}.measure-switch{cursor:pointer;flex:none;position:relative}.measure-switch input{opacity:0;pointer-events:none;position:absolute}.measure-switch span{border:1px solid var(--line);color:var(--muted);background:#032b3794;border-radius:999px;padding:.42rem .62rem;display:block}.measure-switch input:checked+span{border-color:var(--green);color:var(--text);background:#32c8a726}.measure-switch input:disabled+span{cursor:wait;opacity:.62}.measure-switch small{display:none}.retrofit-results{grid-template-columns:repeat(3,minmax(5.4rem,1fr));gap:.45rem;display:grid}.retrofit-metric{border-left:1px solid var(--line);min-width:0;padding-left:.55rem}.retrofit-metric span,.retrofit-metric strong{display:block}.retrofit-metric span{font-size:.7rem}.retrofit-metric strong{overflow-wrap:anywhere;color:var(--text);margin-top:.1rem;font-size:.92rem}.retrofit-progress{background:#ffffff17;border-radius:999px;grid-column:1/-1;height:.16rem;overflow:hidden}.retrofit-progress span{border-radius:inherit;background:var(--green);height:100%;transition:width 40ms linear;display:block}.primary-action,.secondary-action,.drawer-actions button{white-space:nowrap;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;background:#032b37b8;padding:.52rem .72rem}.primary-action{color:var(--sea-950);background:var(--green);border-color:#0000;font-weight:700}.primary-action:disabled{cursor:not-allowed;opacity:.45}.control-bar__secondary{border-left:1px solid var(--line);align-items:center;gap:.45rem;padding-left:.8rem;display:flex}.secondary-drawer{z-index:12;border:1px solid var(--line);border-radius:var(--radius-md);width:min(25rem,100% - 2rem);max-height:calc(100vh - 2rem);color:var(--text);background:#032b37f7;padding:1.15rem;position:fixed;bottom:1rem;right:1rem;overflow:auto;box-shadow:0 1rem 3rem #0000007a}.drawer-close{border:1px solid var(--line);width:2rem;height:2rem;color:var(--text);cursor:pointer;background:0 0;border-radius:50%;position:absolute;top:.65rem;right:.65rem}.drawer-eyebrow,.drawer-note{color:var(--muted)}.drawer-eyebrow{letter-spacing:.12em;text-transform:uppercase;margin:0 2.5rem .2rem 0;font-size:.72rem}.secondary-drawer h2{margin:0;font-size:1.25rem}.drawer-note{margin:.45rem 0 1rem;font-size:.82rem;line-height:1.45}.scenario-field{gap:.3rem;margin-top:.72rem;display:grid}.scenario-field>span{justify-content:space-between;gap:.5rem;font-size:.82rem;display:flex}.scenario-field span small{color:var(--muted)}.scenario-field input{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;color:var(--text);background:#073b48cc;padding:.52rem .6rem}.scenario-field input[aria-invalid=true]{border-color:var(--coral)}.scenario-field small[role=alert]{color:var(--coral);font-size:.72rem}.drawer-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.equation-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:#073b4894;margin:1rem 0;padding:.65rem .8rem;font-family:ui-monospace,monospace}.equation-card p{margin:.3rem 0}.confidence-list{gap:.55rem;margin:1rem 0 0;display:grid}.confidence-list div{border-top:1px solid var(--line);grid-template-columns:5rem 1fr;gap:.5rem;padding-top:.55rem;display:grid}.confidence-list dt{color:var(--energy)}.confidence-list dd{color:var(--muted);margin:0}@media (width<=600px){.real-photo-backdrop{background-position:52%}.topbar{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem .75rem;padding:.75rem 1rem;display:grid}.header-left,.header-center,.header-right{width:auto;min-width:0}.header-center{text-align:right}.header-right{text-align:left;grid-column:1/-1}.brand,.eyebrow,.model-version{overflow-wrap:anywhere}.layer-controls{max-width:calc(100% - 1.3rem);top:.65rem;left:.65rem}.facility-drawer{width:calc(100% - 1.3rem);max-height:62%;top:auto;bottom:.65rem;right:.65rem}.carbon-ledger{width:auto;top:4.8rem;right:.65rem}.carbon-ledger__value{font-size:1.2rem}.control-bar{padding:.75rem;display:grid}.retrofit-dock{grid-template-columns:1fr auto}.retrofit-dock__heading,.measure-switches,.retrofit-results,.retrofit-progress{grid-column:1/-1}.control-bar__secondary{border-top:1px solid var(--line);border-left:0;justify-content:flex-end;padding:.55rem 0 0}}@media (width>=601px) and (width<=1100px){.retrofit-dock{grid-template-columns:minmax(10rem,1fr) minmax(24rem,2fr) auto}.retrofit-results{grid-column:1/3}}@media (prefers-reduced-motion:reduce){.retrofit-progress span{transition:none}}
