@font-face{font-family:CityJP;src:url('./assets/NotoSansJP.ttf') format('truetype');font-weight:100 900;font-display:swap}
@font-face{font-family:CitySC;src:url('./assets/NotoSansSC-ui.woff2') format('woff2');font-weight:100 900;font-display:swap}
html[lang="zh-CN"]{font-family:CitySC,CityJP,'Microsoft YaHei',sans-serif;--sans:CitySC,CityJP,'Microsoft YaHei',sans-serif}
@media(max-width:880px){.mast #language{font-size:10px;max-width:78px;padding:4px 2px}}
:root{color-scheme:dark;font-family:CityJP,'Yu Gothic UI',sans-serif;--ink:#dfe9e4;--dim:#9eb1ad;--line:#384950;--dark:#142127;--pale:#c2d8cc;--mono:Consolas,'Cascadia Mono',monospace}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;height:100dvh;display:flex;flex-direction:column;background:#101c23;color:var(--ink);overflow:hidden}
h1,h2,h3,p{margin:0}button,input,select,summary{font:inherit}button,select,.file-open{cursor:pointer}button,select,input,.file-open{border:1px solid var(--line);background:#203037;color:var(--ink);padding:7px 10px;border-radius:3px;font-size:12px;font-weight:520}
button:hover,summary:hover,.file-open:hover{background:#30423e}button:disabled{opacity:.45;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid #f6d89e;outline-offset:2px}
.mast{min-height:54px;display:flex;gap:12px;align-items:center;padding:0 clamp(12px,1.8vw,37px);background:#0d171e;border-bottom:1px solid #384951;z-index:4}
.brand{display:flex;align-items:center;gap:7px;font:650 20px Arial,sans-serif;letter-spacing:-.055em}.brand img{object-fit:contain}.mast h1{font-size:14px;letter-spacing:.14em;font-weight:580;padding-left:15px;border-left:1px solid #4f5d62;white-space:nowrap}
.clock-group{display:flex;align-items:center;gap:8px;margin-left:auto}.clock-group i,.signal{width:6px;height:6px;border-radius:50%;background:#a6d6af;display:inline-block}.clock-group time{font:600 21px var(--mono);font-variant-numeric:tabular-nums}.clock-group small,#log-mode{color:var(--dim);font-size:11px}
.time-controls{display:flex;gap:4px}.mast .accent{color:#172920;background:var(--pale);border-color:#c9dfcf}.mast .accent:hover{background:#dceadf}
#city-layout{display:grid;grid-template-columns:minmax(0,1fr) clamp(242px,17vw,315px);min-height:0;flex:1}#city-layout.full{grid-template-columns:1fr}
.map-area{position:relative;isolation:isolate;min-width:0;overflow:hidden;background:#334b5a}#city-map{position:absolute;inset:0}
.map-nav,.map-status{position:absolute;z-index:2;display:flex;gap:5px;align-items:center}.map-nav{left:14px;top:14px}.map-status{left:14px;bottom:12px}.map-nav button,.map-status button,.map-status>span{background:#13232ae8;color:#e1ece6;border:1px solid #687b7a;font-size:11px;padding:6px 10px}.map-status>span{font-variant-numeric:tabular-nums}.map-nav [aria-pressed="true"]{background:#2f5145}
#lane-names{position:absolute;inset:12px 0 auto;display:flex;justify-content:space-around;pointer-events:none;z-index:2}#lane-names span{padding:5px 13px;background:#102027dd;border-bottom:2px solid #baac8a;font-size:12px}#lane-names span+span{border-color:#9bc3b2}
#experiments{padding:12px 15px 16px;overflow:auto;background:#17242a;border-left:1px solid #526165;scrollbar-width:thin;scrollbar-color:#526168 transparent}
.panel-title{border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:4px}.panel-title small,.overlay header small{letter-spacing:.12em;font-size:10px;color:#acc7ba}.panel-title h2{font-size:18px;font-weight:570}.field{display:block;padding:7px 0 5px;border-bottom:1px solid #314149}.field .pair,.kv{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.field b,.local-config h3{font-size:12px;font-weight:550}.field output{font:650 15px var(--mono);color:#d5ead9}
.field input[type=range]{width:100%;height:15px;margin:4px 0 0;padding:0;accent-color:#abcaba;display:block;cursor:pointer}.field small,.hint{font-size:10px;line-height:1.4;color:#a3b4b6}.local-config{margin-top:9px}.local-config select{margin:5px 0;width:100%}.dual{display:flex;gap:5px;flex-wrap:wrap}.dual button{flex:1;padding:6px;font-size:11px;white-space:nowrap}button.down{color:#f1cca0;border-color:#af8960}
#run-tools{margin-top:10px;border-top:1px solid var(--line);padding:7px 0 0;font-size:11px}summary{cursor:pointer}#seed-form,#order-form{display:flex;align-items:center;gap:5px;margin:8px 0}#seed,#query{min-width:0;width:100%;flex:1}.file-open{position:relative;display:block;margin:6px 0;text-align:center}.file-open input{width:100%;position:absolute;inset:0;opacity:0;cursor:pointer}a{color:#c6dbcd}
.overlay{position:absolute;z-index:5;right:12px;top:12px;width:min(410px,calc(100% - 24px));max-height:calc(100% - 64px);display:flex;flex-direction:column;background:#15242bf7;border:1px solid #758986;box-shadow:0 5px 18px #07131762}.overlay header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 15px;border-bottom:1px solid var(--line)}.overlay h2{font-size:17px;font-weight:590}.cross{border:0;background:transparent;font-size:22px;padding:0 4px}.overlay-body{overflow:auto;padding:10px 15px 15px;font-size:12px;scrollbar-width:thin}.overlay-body h3{color:#bdcebf;font-size:12px;margin:10px 0 3px}.overlay-body p{margin-bottom:7px}.kv,.measure-row,.order-row,.evidence,.timeline-line{border-bottom:1px solid var(--line);padding:5px 0}.kv b,.measure-row b{font:600 12px var(--mono);text-align:right}.measure-row{display:grid;grid-template-columns:minmax(120px,1fr) 85px 85px;gap:4px;align-items:center}.measure-row b:only-of-type{grid-column:3}.measure-row.header{color:var(--dim);font-size:10px}.decision{color:#c3d9c9}.order-row,.timeline-line{display:block;width:100%;text-align:left;font-size:11px;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0}.order-row code,.timeline-line time{color:#becbb5;margin-right:7px;font:11px var(--mono)}
#score{margin-top:9px}.evidence small{display:block;color:var(--dim)}.wait{color:#f3c799}#detail-body details{border-bottom:1px solid var(--line);padding:5px 0}.log-strip{min-height:67px;max-height:85px;display:flex;gap:14px;align-items:center;background:#0f1b21;border-top:1px solid var(--line);padding:7px 17px}.log-strip>div:first-child{flex:none;display:flex;gap:7px;align-items:center}.log-strip b{font-size:12px;font-weight:560}#stream{flex:1;min-width:0;display:grid;gap:2px}#stream button{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:transparent;border:0;font-size:11px;padding:1px 4px;color:#cdd8d4}#stream button:hover{text-decoration:underline}#stream time,#stream code,#edit-log code{font:11px var(--mono);margin-right:8px;color:#99bdad}#edit-log{margin:7px 0;color:#b6c7c3;font-size:10px}
#notice{position:absolute;bottom:85px;left:14px;z-index:6;background:#263b38;border:1px solid #8ba89a;padding:8px 14px;font-size:12px;max-width:85%}
@media(min-height:900px){.field{padding:12px 0 8px}.log-strip{min-height:82px}.overlay{width:min(455px,45%)}.overlay-body{font-size:13px}}
@media(max-width:850px){.mast{gap:6px;padding:0 8px}.mast h1{font-size:12px;padding-left:7px}.brand{font-size:17px}.mast button,.mast select{padding:5px}.map-nav{top:8px;left:7px}#city-layout{grid-template-columns:minmax(0,1fr) 220px}#experiments{padding:8px 10px}.map-status{left:7px;gap:2px}.map-status>span{display:none}.clock-group small{display:none}}
@media(max-width:640px){.mast{min-height:44px;flex-wrap:wrap}.brand img{width:18px}.clock-group time{font-size:15px}#city-layout{grid-template-columns:1fr}#experiments{position:absolute;right:0;top:70px;bottom:70px;width:218px;z-index:3;box-shadow:-3px 0 10px #0005}.log-strip{gap:4px;padding:4px}.map-nav button{padding:4px}.measure-row{grid-template-columns:minmax(96px,1fr) 70px 70px}}
#metrics{width:min(490px,calc(100% - 24px))}
#economic-account{border-block:1px solid #60746f;padding:9px 0;margin:8px 0 13px}
.econ-heading,.economic-diff{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.econ-heading h3,#order-costs h3{margin:0;font-weight:640;color:#deebe1}
.econ-heading small,.economic-diff small,.econ-note{font-size:10px;color:#b8c8c5;line-height:1.55}
.economic-diff{background:#253a37;padding:8px 10px;margin:7px 0 4px;border-left:2px solid #a9c5b5}
.economic-diff strong{font:600 clamp(16px,1.45vw,26px) var(--mono);color:#eef5ed}
.money-table{width:100%;border-collapse:collapse;font-size:12px}
.money-table td,.money-table th{padding:5px 2px;vertical-align:baseline;border-bottom:1px solid var(--line)}
.money-table th{text-align:left;font-weight:480}.money-table td,.money-table th:not(:first-child){text-align:right;white-space:nowrap}
.money-table td{font:600 12px var(--mono)}
.money-table thead th{font-size:10px;color:var(--dim)}
#economic-account .econ-note{margin:5px 0}
.delta-number{text-align:right}.delta-number small{display:block}
#economic-account .econ-scope{font-size:11px;color:var(--dim);margin:3px 0}
.delta-bridge{margin:8px 0}.delta-bridge h3{margin:0 0 2px}.delta-bridge>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:11px;padding:2px 0}.delta-bridge b{font:600 12px var(--mono);white-space:nowrap}
.delta-bridge .bridge-sum{border-top:1px solid var(--line);margin-top:3px;padding-top:4px}
.overlay .delta-bridge header{display:flex;align-items:baseline;justify-content:space-between;border:0;padding:0}.overlay .delta-bridge header small{font-size:10px;letter-spacing:0;color:var(--dim)}
#economic-assumptions>summary{display:list-item;padding:5px 0;color:#cfddd5}
#operations-detail>summary{padding:7px 0;color:#cfddd5;cursor:pointer}
#economic-rates{font-size:11px}
#adaptive-activity,.policy-record{border-block:1px solid var(--line);padding:6px 0;margin:8px 0}
#adaptive-activity button{padding:4px 7px;margin:5px 0}.policy-record strong{font-size:13px;color:#d0e4d6}.policy-record p{margin:4px 0}
#policy-benchmark{padding:7px 0}.policy-table th:not(:first-child),.policy-table td{font-size:11px;white-space:normal}.legacy-tag{color:#e5c294}
#order-costs{margin:8px 0;padding:8px 10px;border-left:2px solid #c7a374;background:#303330}
#order-costs p{font-size:11px;margin:3px 0}#order-costs button{margin-top:6px}
.lane-loss{display:block;font-size:10px;line-height:1.45;color:#bed0c4;font-variant-numeric:tabular-nums}
#port-reference{padding:3px 7px;font-size:11px;color:#b5cbbf;background:transparent;border-color:#36494b;white-space:normal;text-align:left}
#port-sources{color:var(--ink);background:#17262c;border:1px solid #688079;border-radius:5px;width:min(530px,94vw);max-height:85dvh;padding:20px;font-size:13px;line-height:1.65}
#port-sources::backdrop{background:#051119a8}#port-sources h2{margin:0 24px 12px 0;font-size:19px}#port-sources form{float:right}#port-sources p{margin:8px 0}
.port-amount{text-align:right;font-variant-numeric:tabular-nums}.port-amount strong,.port-amount small{display:block}.port-amount small{color:var(--dim);font:11px var(--mono)}
#port-months{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;border-block:1px solid var(--line);padding:7px 0}#port-months small,#port-months b{display:block;font:11px var(--mono)}#port-months small{color:var(--dim)}
@media(max-width:850px){#port-reference{max-width:120px;font-size:10px}}
