:root{
  --bg:#02070d;--bg-soft:#050f18;--panel:#071724;--panel-2:#0a2030;
  --line:rgba(127,217,235,.16);--line-strong:rgba(97,226,241,.42);
  --cyan:#61e2f1;--cyan-soft:#a8f4f5;--blue:#3e7cff;--violet:#8e78ff;--green:#63d6a0;
  --text:#edf9fb;--muted:#8aa7b2;--muted-2:#5f7b87;--focus:#9ffcff;
  --ease:cubic-bezier(.2,.74,.2,1);--header:76px;--footer:34px
}
*{box-sizing:border-box}
html{color-scheme:dark;background:var(--bg)}
body{margin:0;min-width:320px;color:var(--text);background:var(--bg);font-family:"Avenir Next","PingFang SC","Microsoft YaHei",Arial,sans-serif}
button{font:inherit}
[hidden]{display:none!important}
.skip-link{position:fixed;z-index:100;left:16px;top:-80px;padding:12px 18px;color:#001014;background:var(--cyan);transition:top .2s}
.skip-link:focus{top:16px}
button:focus-visible,.webgl-stage:focus-visible{outline:2px solid var(--focus);outline-offset:3px}

.topbar{height:var(--header);display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 clamp(18px,3vw,48px);border-bottom:1px solid var(--line);background:rgba(2,9,15,.96)}
.brand{display:flex;align-items:center;gap:18px;min-width:0}.brand>img{width:166px;max-height:49px;object-fit:contain}.brand>span{width:1px;height:31px;background:var(--line)}.brand>div{display:grid;gap:3px;min-width:0}.brand small{color:var(--cyan);font:500 8px/1.2 "SFMono-Regular",Consolas,monospace;letter-spacing:.18em}.brand b{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.preview-state{display:flex;align-items:center;gap:10px;padding:0;border:0;color:#9cc4cd;background:transparent;font:500 9px/1 "SFMono-Regular",Consolas,monospace;letter-spacing:.12em;white-space:nowrap}.preview-state i{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 16px rgba(97,226,241,.7)}

.workspace{height:calc(100dvh - var(--header) - var(--footer));min-height:700px;display:grid;grid-template-columns:minmax(0,1fr) minmax(350px,410px)}
.viewer{min-width:0;display:grid;grid-template-rows:minmax(0,1fr) 76px;background:radial-gradient(circle at 50% 34%,#102c42 0,#04111c 52%,#02070d 100%)}
.webgl-stage{position:relative;min-height:0;overflow:hidden;cursor:grab;touch-action:none}.webgl-stage:active{cursor:grabbing}.webgl-stage canvas{position:relative;z-index:1;display:block;width:100%;height:100%;opacity:0;transition:opacity .5s}.webgl-stage.is-ready canvas{opacity:1}
.static-underlay{position:absolute;z-index:0;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.38) saturate(.72)}
.loading{position:absolute;z-index:8;inset:0;display:grid;place-content:center;justify-items:center;gap:12px;background:radial-gradient(circle,#0b2639 0,#030b12 68%);transition:opacity .5s}.loading.is-hidden{opacity:0;pointer-events:none}.loading strong{font-size:14px;font-weight:500;letter-spacing:.08em}.loading span{color:var(--muted);font:500 9px/1.4 "SFMono-Regular",Consolas,monospace;letter-spacing:.13em}.loader-mark{position:relative;width:70px;height:54px;margin-bottom:8px}.loader-mark i{position:absolute;left:50%;top:50%;width:48px;height:26px;border:1px solid rgba(97,226,241,.55);transform:translate(-50%,-50%) rotateX(62deg) rotateZ(30deg);animation:scan 1.8s var(--ease) infinite}.loader-mark i:nth-child(2){width:34px;height:18px;animation-delay:.18s}.loader-mark i:nth-child(3){width:18px;height:10px;animation-delay:.36s}@keyframes scan{0%,100%{opacity:.2;filter:drop-shadow(0 0 0 transparent)}50%{opacity:1;filter:drop-shadow(0 0 8px var(--cyan))}}
.webgl-fallback{position:absolute;z-index:9;inset:0;background:#02070d}.webgl-fallback img{width:100%;height:100%;object-fit:cover;filter:brightness(.58) saturate(.9)}.webgl-fallback p{position:absolute;left:24px;bottom:22px;margin:0;padding:12px 16px;border:1px solid var(--line);background:rgba(2,9,15,.9);font-size:12px}
.scene-status{position:absolute;z-index:3;left:20px;top:20px;display:flex;align-items:center;gap:8px;pointer-events:none}.scene-status span,.scene-status b{padding:7px 9px;border:1px solid var(--line);background:rgba(2,10,17,.72);font:500 8px/1 "SFMono-Regular",Consolas,monospace;letter-spacing:.12em}.scene-status span{color:var(--cyan);border-color:rgba(97,226,241,.32)}.scene-status b{color:#7797a3;font-weight:500}
.flow-legend{position:absolute;z-index:3;left:20px;bottom:18px;display:flex;gap:12px;align-items:center;padding:9px 11px;border:1px solid var(--line);background:rgba(2,10,17,.72);pointer-events:none}.flow-legend span{display:flex;align-items:center;gap:6px;color:#89a6b0;font-size:8px}.flow-legend i{display:block;width:12px;height:2px;background:var(--cyan);box-shadow:0 0 7px currentColor}.flow-legend .molecule{background:var(--blue)}.flow-legend .biomass{background:var(--green)}.flow-legend .data{background:var(--violet)}
.compass{position:absolute;z-index:3;right:20px;top:20px;width:48px;height:48px;display:grid;place-content:center;border:1px solid var(--line);border-radius:50%;background:rgba(2,10,17,.72);pointer-events:none}.compass b{position:absolute;top:4px;left:20px;color:var(--cyan);font:600 8px/1 "SFMono-Regular",Consolas,monospace}.compass i{width:1px;height:24px;background:linear-gradient(var(--cyan) 50%,rgba(255,255,255,.23) 50%);transform:translateY(4px)}
.model-tooltip{position:absolute;z-index:20;max-width:210px;padding:9px 12px;border:1px solid var(--line-strong);color:#eaffff;background:rgba(2,10,17,.94);font-size:11px;white-space:nowrap;pointer-events:none;box-shadow:0 10px 30px rgba(0,0,0,.35)}

.viewer-controls{display:flex;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid var(--line);background:rgba(4,15,24,.96)}
.control-cluster{display:flex;gap:6px}.viewer-controls button{min-width:44px;height:44px;border:1px solid rgba(127,217,235,.2);color:#cbe5e9;background:#0a2130;cursor:pointer;transition:color .18s,background .18s,border-color .18s,transform .18s}.viewer-controls button:hover{color:#001015;border-color:var(--cyan);background:var(--cyan)}.viewer-controls button:active{transform:translateY(1px)}.viewer-controls .text-button{padding:0 13px}.tour-button{display:flex;align-items:center;gap:9px;padding:0 14px}.tour-button i{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid currentColor}.tour-button[aria-pressed=true]{color:var(--cyan);border-color:var(--cyan);background:rgba(97,226,241,.08)}.tour-button[aria-pressed=true] i{width:8px;height:10px;border:0;border-left:3px solid currentColor;border-right:3px solid currentColor}.quality-button{width:auto;padding:0 12px;display:grid;place-content:center;gap:2px}.quality-button span{color:var(--muted);font-size:8px}.quality-button b{font:600 9px/1 "SFMono-Regular",Consolas,monospace}.viewer-controls p{margin:0 0 0 auto;color:#66838e;font-size:9px;line-height:1.5;text-align:right}

.zone-panel{height:100%;overflow:auto;border-left:1px solid var(--line);background:linear-gradient(180deg,#081d2b,#05131f 55%,#030c14);scrollbar-width:thin;scrollbar-color:#245264 transparent}.panel-topline{display:flex;justify-content:space-between;align-items:center;padding:20px 22px;border-bottom:1px solid var(--line)}.panel-topline span{color:var(--cyan);font:600 10px/1 "SFMono-Regular",Consolas,monospace}.panel-topline small{color:#708e99;font:500 8px/1 "SFMono-Regular",Consolas,monospace;letter-spacing:.13em}
.blueprint-reference{position:relative;height:142px;margin:0;overflow:hidden;border-bottom:1px solid var(--line);background:#02070d}.blueprint-reference img{width:100%;height:100%;object-fit:cover;filter:brightness(.72) saturate(.9);transition:opacity .22s,transform .6s var(--ease)}.blueprint-reference.is-changing img{opacity:.2;transform:scale(1.025)}.blueprint-reference::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,13,21,.1),rgba(3,13,21,.76))}.blueprint-reference figcaption{position:absolute;z-index:1;right:18px;bottom:16px;display:grid;gap:5px;text-align:right}.blueprint-reference span{color:var(--cyan);font:500 8px/1 "SFMono-Regular",Consolas,monospace;letter-spacing:.14em}.blueprint-reference b{font-size:10px;font-weight:500}
.zone-copy{padding:24px 22px 20px}.zone-copy h1{margin:0 0 12px;font-size:25px;line-height:1.2;font-weight:500;letter-spacing:-.035em}.zone-copy>p{margin:0;color:#9ab0b8;font-size:12px;line-height:1.75}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:20px;background:var(--line)}.metric-grid>div{min-width:0;padding:14px;background:rgba(97,226,241,.045)}.metric-grid span,.system-flow span{display:block;margin-bottom:7px;color:#6e8b96;font-size:8px;letter-spacing:.1em}.metric-grid strong{color:var(--cyan-soft);font-size:15px;font-weight:500}.system-flow{margin-top:14px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.system-flow b{color:#cbe2e7;font-size:10px;line-height:1.55;font-weight:500}.component-list{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0;padding:0;list-style:none}.component-list li{padding:6px 8px;border:1px solid rgba(127,217,235,.16);color:#88a8b2;background:rgba(127,217,235,.035);font-size:8px}
.zone-nav{display:grid;grid-template-columns:1fr 1fr;gap:1px;padding:1px;background:var(--line)}.zone-nav button{min-height:63px;display:grid;grid-template-columns:25px 1fr;grid-template-rows:auto auto;gap:2px 8px;align-items:center;padding:10px 11px;border:0;color:#cfe3e7;background:#061622;text-align:left;cursor:pointer;transition:background .18s,box-shadow .18s}.zone-nav button:hover,.zone-nav button.is-active{background:#0a2a3a}.zone-nav button.is-active{box-shadow:inset 3px 0 var(--cyan)}.zone-nav span{grid-row:1/3;color:var(--cyan);font:500 8px/1 "SFMono-Regular",Consolas,monospace}.zone-nav b{font-size:11px;font-weight:500}.zone-nav small{color:#66838e;font-size:8px}
.layer-panel{padding:19px 22px;border-top:1px solid var(--line)}.layer-panel>div:first-child{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.layer-panel>div>span{font-size:10px}.layer-panel>div>small{color:#607c87;font-size:8px}.layer-buttons{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.layer-buttons button{min-height:40px;border:1px solid rgba(127,217,235,.16);color:#708d98;background:#061622;cursor:pointer;font-size:9px;transition:.18s}.layer-buttons button[aria-pressed=true]{color:#dffcff;border-color:rgba(97,226,241,.46);background:rgba(97,226,241,.1)}
.boundary-note{margin:0 22px 22px;padding:14px 0 0;border-top:1px solid var(--line)}.boundary-note b{color:#78949e;font-size:9px;letter-spacing:.1em}.boundary-note p{margin:7px 0 0;color:#56727d;font-size:9px;line-height:1.65}
footer{height:var(--footer);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,3vw,48px);border-top:1px solid var(--line);color:#48646f;background:#010509;font:500 8px/1 "SFMono-Regular",Consolas,monospace;letter-spacing:.1em}

@media(max-width:1120px){
  .workspace{height:auto;min-height:0;grid-template-columns:1fr}.viewer{height:720px}.zone-panel{height:auto;border-left:0;border-top:1px solid var(--line)}.zone-panel{display:grid;grid-template-columns:.9fr 1.1fr}.panel-topline,.blueprint-reference,.zone-copy,.zone-nav,.layer-panel,.boundary-note{min-width:0}.panel-topline,.blueprint-reference,.zone-copy{grid-column:1}.zone-nav,.layer-panel,.boundary-note{grid-column:2}.zone-nav{grid-row:1/4}.layer-panel{grid-row:4}.boundary-note{grid-row:5}.viewer-controls p{display:none}
}
@media(max-width:720px){
  :root{--header:66px}.topbar{padding:0 14px}.brand>img{width:138px}.brand>span,.brand>div,.preview-state span{display:none}.preview-state{padding:9px}.workspace{display:block}.viewer{height:650px;grid-template-rows:minmax(0,1fr) 126px}.viewer-controls{align-content:center;flex-wrap:wrap;padding:10px}.control-cluster{display:grid;grid-template-columns:repeat(7,44px);width:100%;overflow-x:auto;padding-bottom:2px}.tour-button,.quality-button{height:44px!important}.viewer-controls p{display:block;margin-left:auto}.zone-panel{display:block}.panel-topline{padding:18px}.blueprint-reference{height:164px}.zone-copy{padding:22px 18px}.zone-nav{grid-template-columns:1fr}.zone-nav button{min-height:60px}.layer-panel{padding:18px}.boundary-note{margin:0 18px 22px}.scene-status{left:10px;top:10px}.scene-status b:last-child{display:none}.flow-legend{left:10px;bottom:10px;gap:8px}.flow-legend span{font-size:7px}.compass{right:10px;top:10px}footer{height:auto;min-height:44px;display:grid;gap:5px;padding:10px 14px}
}
@media(max-width:430px){.viewer{height:620px}.viewer-controls p{display:none}.scene-status b:nth-child(2){display:none}.flow-legend{right:10px;justify-content:space-between}.zone-copy h1{font-size:23px}}
@media(max-width:720px){.viewer{width:100%;max-width:100%;overflow:hidden}.webgl-stage,.viewer-controls,.control-cluster{min-width:0;max-width:100%}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

.embed body{overflow:hidden}
.embed .topbar,.embed .zone-panel,.embed footer,.embed .skip-link{display:none}
.embed .workspace{display:block;height:720px;min-height:0}
.embed .viewer{height:720px}
@media(max-width:720px){.embed .workspace,.embed .viewer{height:610px}}
