:root{--bg:#0e1512;--panel:#17231e;--panel2:#20342c;--ink:#eef8df;--muted:#9eb4a8;--lime:#d9ff65;--mint:#6ff0bd;--amber:#ffbf5f;--red:#ff7474;--line:rgba(238,248,223,.14);--shadow:0 24px 80px rgba(0,0,0,.36)}*{box-sizing:border-box}body{margin:0;font-family:Georgia,"Noto Serif SC",serif;background:radial-gradient(circle at 20% 0%,#284336 0,#0e1512 36%),linear-gradient(135deg,#0e1512,#16241e);color:var(--ink)}button,input,select{font:inherit}.shell{max-width:1440px;margin:0 auto;padding:28px}.hero{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding:34px;border:1px solid var(--line);border-radius:32px;background:linear-gradient(135deg,rgba(217,255,101,.10),rgba(111,240,189,.06)),var(--panel);box-shadow:var(--shadow);position:relative;overflow:hidden}.hero:after{content:"";position:absolute;right:-80px;top:-80px;width:280px;height:280px;border-radius:50%;background:rgba(217,255,101,.13)}.eyebrow{margin:0 0 8px;color:var(--lime);letter-spacing:.12em;text-transform:uppercase;font-size:13px}.hero h1{margin:0;font-size:clamp(36px,6vw,76px);line-height:.95}.subtitle{max-width:760px;color:var(--muted);font-size:18px}.hero-card{z-index:1;white-space:nowrap;background:rgba(14,21,18,.72);border:1px solid var(--line);border-radius:99px;padding:12px 16px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--amber);margin-right:8px}.dot.ok{background:var(--mint)}.tabs{display:flex;gap:12px;margin:22px 0}.tab,.primary,.secondary{border:1px solid var(--line);border-radius:999px;padding:12px 18px;color:var(--ink);background:rgba(255,255,255,.04);cursor:pointer}.tab.active,.primary{background:var(--lime);color:#16200d;border-color:transparent;font-weight:700}.secondary{background:var(--panel2)}.page{display:none}.page.active{display:block;animation:rise .42s ease both}@keyframes rise{from{opacity:0}to{opacity:1}}.section-head{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:18px 0}.section-head h2{font-size:34px;margin:0}.section-head p{color:var(--muted);margin:8px 0 0}.actions{display:flex;gap:10px;flex-wrap:wrap}.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}.kpi{background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));border:1px solid var(--line);border-radius:22px;padding:18px}.kpi small{color:var(--muted);display:block}.kpi strong{font-size:28px;display:block;margin-top:8px}.compact{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.grid{display:grid;gap:16px;margin-top:16px}.two{grid-template-columns:1.1fr .9fr}.diag-layout,.sim-layout{grid-template-columns:1.1fr .9fr}.panel{background:rgba(23,35,30,.9);border:1px solid var(--line);border-radius:28px;padding:22px;box-shadow:0 18px 60px rgba(0,0,0,.22)}.panel h3{margin:0 0 16px}.bars{display:flex;align-items:end;gap:5px;height:220px}.bar{flex:1;min-width:5px;border-radius:8px 8px 2px 2px;background:linear-gradient(180deg,var(--lime),var(--mint));position:relative}.bar span{display:none}.rank-item,.cat-item,.issue,.plan-item,.quality-item{border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:18px;padding:12px 14px;margin:9px 0}.rank-item{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center}.rank-num{color:var(--lime);font-weight:800}.muted{color:var(--muted)}.cat-meter{height:8px;background:rgba(255,255,255,.08);border-radius:999px;margin-top:8px;overflow:hidden}.cat-meter i{display:block;height:100%;background:var(--mint)}.warning{border-color:rgba(255,191,95,.28)}.progress-rail{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:12px 0}.step{padding:12px;border:1px solid var(--line);border-radius:16px;color:var(--muted);background:rgba(255,255,255,.03)}.step.done{color:#16200d;background:var(--lime)}.issue.high{border-color:rgba(255,116,116,.5)}.severity{float:right;border-radius:99px;padding:3px 8px;background:rgba(255,255,255,.08);font-size:12px}.markdown-body{background:#0b110f;border-radius:18px;border:1px solid var(--line);padding:16px;min-height:120px;color:#e8f7db;line-height:1.72}.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin:0 0 10px;color:var(--lime);line-height:1.25}.markdown-body p{margin:0 0 12px}.markdown-body p:last-child{margin-bottom:0}.markdown-body ul{margin:0 0 12px;padding-left:22px}.markdown-body li{margin:5px 0}.markdown-body strong{color:#fff8c8}.markdown-body blockquote{margin:0 0 12px;padding:10px 14px;border-left:3px solid var(--mint);background:rgba(111,240,189,.08);border-radius:10px}.markdown-body code{font-family:"SFMono-Regular",Consolas,monospace;background:rgba(255,255,255,.08);border:1px solid var(--line);border-radius:6px;padding:1px 5px}.markdown-body pre{overflow:auto;margin:0 0 12px;padding:12px;background:rgba(0,0,0,.28);border-radius:12px}.markdown-body pre code{background:transparent;border:0;padding:0}.markdown-body .table-wrap{overflow:auto;margin:0 0 12px;border:1px solid var(--line);border-radius:12px}.markdown-body table{width:100%;border-collapse:collapse;min-width:420px}.markdown-body th,.markdown-body td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.markdown-body th{background:rgba(217,255,101,.12);color:var(--lime);font-weight:800}.markdown-body tr:last-child td{border-bottom:0}.markdown-body tbody tr:nth-child(even){background:rgba(255,255,255,.025)}.chat-markdown{min-height:0;margin-top:6px;padding:10px 12px}.panel-note{margin:-8px 0 14px;color:var(--muted);font-size:14px}.diagnosis-placeholder{border:1px dashed rgba(217,255,101,.35);border-radius:18px;padding:16px;color:var(--muted);background:rgba(217,255,101,.05)}.chat{display:flex;gap:8px;padding:12px 0 0;border-top:1px solid var(--line);margin-top:auto;flex-shrink:0}.chat input,.form-panel input,.form-panel select{width:100%;border:1px solid var(--line);border-radius:14px;padding:12px;background:#0f1714;color:var(--ink)}.chat button{border:0;border-radius:14px;padding:0 18px;background:var(--mint);color:#092017;font-weight:700;flex-shrink:0}.chat-log{margin-top:12px;color:var(--muted);overflow-y:auto;min-height:0}.panel.agent{position:sticky;top:90px;max-height:calc(100vh - 110px);display:flex;flex-direction:column;overflow:hidden}.panel.agent h3{flex-shrink:0}.panel.agent .markdown-body{flex:1;min-height:80px;overflow-y:auto}.chat-msg{margin:10px 0}.chat-msg b{color:var(--ink)}.form-panel label{display:block;margin:13px 0;color:var(--muted)}.form-panel label input,.form-panel label select{margin-top:6px;color:var(--ink)}.full{width:100%;border-radius:16px}.plan-item{display:grid;grid-template-columns:1fr auto;gap:8px}.pill{display:inline-block;padding:3px 8px;border-radius:999px;background:rgba(217,255,101,.12);color:var(--lime);margin:3px 5px 0 0;font-size:12px}.map-panel{margin-top:16px;background:linear-gradient(140deg,rgba(111,240,189,.09),rgba(217,255,101,.04) 42%,rgba(255,191,95,.05)),rgba(23,35,30,.95);overflow:hidden}.map-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.map-head h3{margin-bottom:6px}.map-head p{margin:0;color:var(--muted)}.map-legend{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.map-legend span{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:7px 10px;background:rgba(14,21,18,.52);color:var(--muted);font-size:13px}.map-legend i{width:10px;height:10px;border-radius:50%;box-shadow:0 0 16px currentColor}.map-legend .core,.tier-pill.core,.map-point.core{color:var(--mint);background:var(--mint)}.map-legend .growth,.tier-pill.growth,.map-point.growth{color:var(--lime);background:var(--lime)}.map-legend .watch,.tier-pill.watch,.map-point.watch{color:#93a79a;background:#93a79a}.campus-map-wrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:stretch}.campus-map{position:relative;min-height:430px;border:1px solid rgba(238,248,223,.18);border-radius:26px;overflow:hidden;background:radial-gradient(circle at 20% 18%,rgba(217,255,101,.15),transparent 27%),linear-gradient(145deg,#11251f,#162f26 62%,#0e1916);box-shadow:inset 0 0 80px rgba(0,0,0,.28)}.campus-map svg{position:absolute;inset:0;width:100%;height:100%}.campus-zone{opacity:.78;stroke:rgba(238,248,223,.2);stroke-width:.35}.zone-label{fill:rgba(238,248,223,.72);font-size:2.6px;font-weight:800;letter-spacing:.08em;text-anchor:middle;paint-order:stroke;stroke:#0f1714;stroke-width:.65;stroke-linejoin:round}.campus-road{fill:none;stroke:rgba(236,226,185,.62);stroke-width:1.2;stroke-linecap:round;stroke-dasharray:2.2 1.5}.campus-road.main{stroke:rgba(255,240,168,.72);stroke-width:2.2;stroke-dasharray:none}.campus-lake{fill:url(#lakeGrad);opacity:.76;stroke:rgba(203,255,237,.28);stroke-width:.55;filter:url(#softGlow)}.campus-path{fill:none;stroke:rgba(111,240,189,.42);stroke-width:.75;stroke-linecap:round;stroke-dasharray:1.3 1.4}.campus-tree{fill:rgba(122,188,105,.45);stroke:rgba(217,255,101,.22);stroke-width:.25}.map-points{position:absolute;inset:0}.map-point-hit{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;padding:12px;cursor:pointer;z-index:2}.map-point{display:block;width:calc(var(--r) * 11px);height:calc(var(--r) * 11px);border-radius:50%;border:2px solid rgba(14,21,18,.9);box-shadow:0 0 0 4px rgba(255,255,255,.08),0 0 18px currentColor;transition:transform .18s ease,box-shadow .18s ease}.map-point-hit:hover .map-point,.map-point.active{transform:scale(1.32);box-shadow:0 0 0 6px rgba(255,255,255,.12),0 0 24px currentColor}.map-point.active{outline:2px solid var(--ink);outline-offset:3px}.map-tooltip{position:absolute;left:50%;bottom:36px;transform:translateX(-50%) translateY(6px);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--line);border-radius:999px;padding:7px 10px;background:rgba(8,13,11,.92);color:var(--ink);font-size:12px;box-shadow:0 12px 30px rgba(0,0,0,.32);transition:.18s ease}.map-point-hit:hover .map-tooltip{opacity:1;transform:translateX(-50%) translateY(0)}.map-detail{border:1px solid var(--line);border-radius:24px;padding:16px;background:rgba(8,13,11,.42);display:flex;align-items:stretch}.map-detail-card{width:100%;display:flex;flex-direction:column;justify-content:space-between;gap:12px}.detail-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.detail-top b{font-size:24px;color:var(--lime)}.tier-pill{display:inline-block;border-radius:999px;padding:5px 10px;color:#102018;font-size:12px;font-weight:800}.map-detail h4{margin:0;font-size:24px}.map-detail p{margin:0;color:var(--muted);line-height:1.55}.detail-metrics{display:grid;gap:10px}.detail-metrics span{border:1px solid var(--line);border-radius:16px;padding:12px;background:rgba(255,255,255,.04)}.detail-metrics small{display:block;color:var(--muted)}.detail-metrics strong{display:block;margin-top:5px;font-size:22px}.map-empty{width:100%;border:1px dashed rgba(217,255,101,.32);border-radius:20px;padding:18px;color:var(--muted);background:rgba(217,255,101,.05)}@media(max-width:980px){.hero,.section-head,.map-head{flex-direction:column}.kpi-grid,.compact{grid-template-columns:repeat(2,1fr)}.two,.diag-layout,.sim-layout,.campus-map-wrap{grid-template-columns:1fr}.campus-map{min-height:360px}.map-legend{justify-content:flex-start}.progress-rail{grid-template-columns:1fr}.tabs{overflow:auto}.shell{padding:14px}}@media(max-width:560px){.kpi-grid,.compact{grid-template-columns:1fr}.hero h1{font-size:38px}.campus-map{min-height:300px}.map-point-hit{padding:9px}.map-tooltip{display:none}}

/* Refined campus map visuals */
body{font-family:"Avenir Next","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif}.hero h1,.section-head h2{letter-spacing:-.04em}.map-panel{border-color:rgba(196,231,188,.2);background:linear-gradient(135deg,rgba(206,239,178,.08),rgba(64,138,109,.08) 48%,rgba(255,191,95,.04)),rgba(18,30,25,.96)}.map-head h3{font-size:26px;letter-spacing:-.02em}.map-head p,.map-legend span{font-family:"PingFang SC","Microsoft YaHei",sans-serif}.campus-map-wrap{grid-template-columns:minmax(0,1fr) 340px}.campus-map{min-height:470px;border-radius:30px;background:#10211b;box-shadow:inset 0 0 100px rgba(0,0,0,.34),0 22px 70px rgba(0,0,0,.22)}.campus-map:before{content:"";position:absolute;inset:18px;border:1px solid rgba(238,248,223,.12);border-radius:24px;z-index:1;pointer-events:none}.campus-map:after{content:"ZJU Campus Mock Map";position:absolute;left:28px;bottom:22px;z-index:1;color:rgba(238,248,223,.26);font-size:11px;letter-spacing:.18em;text-transform:uppercase}.campus-map svg{z-index:0}.campus-zone{opacity:.9;stroke:rgba(239,255,220,.26);stroke-width:.42;filter:drop-shadow(0 10px 14px rgba(0,0,0,.18))}.zone-dorm{fill:#31573f}.zone-teaching{fill:#38674c}.zone-canteen{fill:#667139}.zone-library{fill:#2a6058}.zone-sports{fill:#385940}.zone-label{font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-size:2.75px;font-weight:700;letter-spacing:.05em;fill:rgba(248,255,230,.86);stroke:rgba(8,16,13,.72);stroke-width:.72}.campus-road{stroke:rgba(239,221,174,.68);stroke-width:1.05;stroke-dasharray:1.4 1.7}.campus-road.main{stroke:#eadc9f;stroke-width:2.35;filter:drop-shadow(0 0 3px rgba(234,220,159,.18))}.campus-lake{opacity:.88;stroke:rgba(213,255,241,.38);stroke-width:.7}.campus-path{stroke:rgba(133,232,184,.55);stroke-width:.9}.campus-buildings rect{fill:rgba(250,241,191,.32);stroke:rgba(255,250,214,.34);stroke-width:.35;filter:drop-shadow(0 2px 3px rgba(0,0,0,.2))}.campus-tree{fill:rgba(139,198,114,.5);stroke:rgba(220,255,153,.28)}.map-point-hit{z-index:3}.map-point{border:2.5px solid rgba(9,17,14,.96);box-shadow:0 0 0 5px rgba(238,248,223,.08),0 6px 16px rgba(0,0,0,.35),0 0 20px currentColor}.map-point.active{outline:2px solid rgba(255,255,255,.92);outline-offset:4px}.map-tooltip{font-family:"Avenir Next","PingFang SC",sans-serif;font-weight:700;background:rgba(8,13,11,.96)}.map-detail{padding:18px;border-radius:28px;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02)),rgba(9,16,13,.58);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.map-detail-card{gap:16px}.detail-top{align-items:flex-start}.machine-id{display:grid;gap:3px;text-align:right}.machine-id small{color:var(--muted);font-size:12px;letter-spacing:.12em;text-transform:uppercase}.machine-id b{font-family:"Avenir Next","DIN Alternate","PingFang SC",sans-serif;font-size:25px;color:var(--lime);letter-spacing:.01em}.map-detail h4{font-size:25px;letter-spacing:-.02em}.detail-metrics{grid-template-columns:1fr}.detail-metrics span{background:linear-gradient(135deg,rgba(217,255,101,.08),rgba(111,240,189,.04));border-color:rgba(238,248,223,.16)}.detail-metrics strong{font-family:"Avenir Next","DIN Alternate","PingFang SC",sans-serif;letter-spacing:-.02em}.tier-pill{font-family:"PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:.04em}@media(max-width:980px){.campus-map-wrap{grid-template-columns:1fr}.campus-map{min-height:390px}.machine-id{text-align:left}}@media(max-width:560px){.campus-map{min-height:320px}.campus-map:after{display:none}.detail-top{display:grid;justify-content:start}}

/* Axis ticks for daily sales and margin trend */
.bars.trend-chart{display:grid;grid-template-columns:62px minmax(0,1fr);grid-template-rows:220px 24px;height:auto;gap:8px 12px;align-items:stretch}.trend-y-axis{display:grid;grid-template-rows:repeat(5,1fr);height:220px;color:var(--muted);font-size:12px;text-align:right}.trend-y-axis span{transform:translateY(-7px)}.trend-plot{position:relative;height:220px;border-left:1px solid rgba(238,248,223,.24);border-bottom:1px solid rgba(238,248,223,.24);padding:0 4px}.trend-grid{position:absolute;inset:0;display:grid;grid-template-rows:repeat(5,1fr);pointer-events:none}.trend-grid i{border-top:1px dashed rgba(111,245,255,.18)}.trend-col .bar{background:linear-gradient(180deg,var(--lime),var(--cyan));box-shadow:0 0 8px rgba(111,245,255,.2)}.margin-dot{box-shadow:0 0 0 3px rgba(255,191,95,.12),0 0 12px rgba(255,191,95,.35);width:9px;height:9px}
.rank-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:1px solid var(--cyan);background:transparent;color:var(--lime);font-weight:800;font-size:13px}.rank-item:hover{border-color:rgba(111,245,255,.3);background:rgba(111,245,255,.04)}.rank-item:hover .rank-num{border-color:var(--lime)}.cat-meter i{background:linear-gradient(90deg,var(--mint),var(--cyan))}.trend-bars{position:relative;z-index:1;display:flex;align-items:end;gap:5px;height:100%;padding-top:4px}.trend-col{position:relative;flex:1;min-width:7px;height:100%;display:flex;align-items:end;justify-content:center}.trend-col .bar{width:100%;max-width:18px;min-width:6px;flex:0 0 auto;border-radius:8px 8px 2px 2px;background:linear-gradient(180deg,var(--lime),var(--mint));box-shadow:0 8px 18px rgba(111,240,189,.12)}.trend-col em{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);font-style:normal;color:var(--muted);font-size:11px;white-space:nowrap}.margin-dot{position:absolute;left:50%;width:7px;height:7px;border-radius:50%;transform:translate(-50%,50%);background:var(--amber);border:1px solid rgba(14,21,18,.9);box-shadow:0 0 0 3px rgba(255,191,95,.12),0 0 12px rgba(255,191,95,.35)}.trend-axis-title,.trend-x-axis{color:var(--muted);font-size:12px}.trend-axis-title{text-align:right}.trend-x-axis{text-align:center}.trend-chart:after{content:"柱：销售额  ·  点：毛利";grid-column:2;color:rgba(238,248,223,.62);font-size:12px;text-align:right;margin-top:-2px}@media(max-width:560px){.bars.trend-chart{grid-template-columns:50px minmax(0,1fr)}.trend-y-axis,.trend-axis-title,.trend-x-axis{font-size:10px}.trend-bars{gap:3px}.trend-col .bar{max-width:12px}.trend-col em{font-size:10px}}

/* HUD sci-fi upgrade */
:root{--cyan:#6ff5ff;--cyan-dim:rgba(111,245,255,.18);--frame:rgba(111,245,255,.42);--scan:rgba(111,245,255,.06);--map-cream:#efe3b6;--map-label:#f3ffe6;--map-shadow:rgba(3,10,8,.45)}

/* HUD frame */
.hero,.panel,.map-panel{clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,16px 100%,0 calc(100% - 16px));position:relative;border-color:var(--frame) !important}
@media(max-width:980px){.hero,.panel,.map-panel{clip-path:none}.kpi{clip-path:none}}
.hud-corners{position:absolute;inset:0;pointer-events:none;z-index:10;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M1 7 L1 1 L7 1' fill='none' stroke='%236ff5ff' stroke-width='1.4' stroke-opacity='.8'/></svg>") no-repeat left top / 14px 14px,url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M13 7 L13 1 L7 1' fill='none' stroke='%236ff5ff' stroke-width='1.4' stroke-opacity='.8'/></svg>") no-repeat right top / 14px 14px,url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M1 7 L1 13 L7 13' fill='none' stroke='%236ff5ff' stroke-width='1.4' stroke-opacity='.8'/></svg>") no-repeat left bottom / 14px 14px,url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M13 7 L13 13 L7 13' fill='none' stroke='%236ff5ff' stroke-width='1.4' stroke-opacity='.8'/></svg>") no-repeat right bottom / 14px 14px}
.panel h3::before{content:"";display:inline-block;width:4px;height:16px;background:var(--lime);border-radius:2px;margin-right:10px;vertical-align:middle}

/* KPI HUD chip */
.kpi{clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);border-color:var(--frame) !important;position:relative}.kpi strong{text-shadow:0 0 14px var(--cyan-dim)}
.kpi::after{content:"";position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 10px 10px 0;border-color:transparent var(--cyan) transparent transparent;opacity:.6}

/* Polished illustrated campus map */.map-panel{background:linear-gradient(135deg,rgba(216,246,190,.075),rgba(73,143,111,.105) 45%,rgba(236,205,131,.045)),rgba(17,29,24,.97)}.map-head h3{font-weight:760;line-height:1.05}.campus-map-wrap{grid-template-columns:minmax(0,1fr) 352px}.campus-map{min-height:500px;border-radius:32px;background:#0f211b;box-shadow:inset 0 0 110px rgba(0,0,0,.38),0 24px 80px rgba(0,0,0,.25)}.campus-map:before{inset:16px;border-color:rgba(243,255,230,.1);box-shadow:inset 0 0 32px rgba(255,255,255,.025)}.campus-map:after{content:"ZJU MOCK OPERATING MAP";font-family:"Avenir Next","PingFang SC",sans-serif;letter-spacing:.14em;color:rgba(243,255,230,.2)}.campus-contours path{fill:none;stroke:rgba(243,255,230,.07);stroke-width:.45;stroke-linecap:round}.campus-zone{opacity:.94;stroke:var(--cyan);stroke-width:.5;filter:url(#landShadow)}.zone-dorm{fill:#345c42}.zone-teaching{fill:#3e704f}.zone-canteen{fill:#68743b}.zone-library{fill:#28665d}.zone-sports{fill:#3c6144}.map-labels{position:absolute;inset:0;z-index:2;pointer-events:none}.zone-label{position:absolute;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;border-radius:999px;background:rgba(8,18,14,.72);border:1px solid rgba(111,245,255,.32);backdrop-filter:blur(2px);font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;font-size:13px;font-weight:650;line-height:1.15;letter-spacing:.01em;color:#fff;text-shadow:0 0 8px rgba(111,245,255,.4);white-space:nowrap;paint-order:normal;stroke:transparent}.zone-label-canteen{top:62%!important}.zone-label-library{top:68%!important}.campus-roads{filter:drop-shadow(0 1px 2px rgba(0,0,0,.28))}.campus-road{stroke:url(#roadGrad);stroke-width:1.05;stroke-dasharray:1.2 1.65;stroke-linecap:round;opacity:.92}.campus-road.under{stroke:rgba(54,37,17,.36);stroke-width:2.35;stroke-dasharray:none;opacity:.72}.campus-road.main{stroke:url(#roadGrad);stroke-width:1.85;stroke-dasharray:none}.campus-road.main.under{stroke:rgba(54,37,17,.42);stroke-width:3.45}.campus-road.neon{stroke:rgba(111,245,255,.12);stroke-width:.6;stroke-dasharray:none;opacity:1;filter:drop-shadow(0 0 2px rgba(111,245,255,.3))}.campus-lake{opacity:.9;stroke:rgba(220,255,244,.42);stroke-width:.72;filter:drop-shadow(0 6px 10px rgba(0,0,0,.24)) url(#softGlow)}.campus-lake-shine{fill:none;stroke:rgba(232,255,249,.5);stroke-width:.65;stroke-linecap:round}
.flow-path{fill:none;stroke-width:1;stroke-linecap:round;stroke-dasharray:6 8;animation:flow 14s linear infinite}.flow-path.cream{stroke:rgba(242,223,170,.65)}.flow-path.cyan{stroke:rgba(111,245,255,.75)}@keyframes flow{to{stroke-dashoffset:-140}}
.map-pulse-ring{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(var(--r,1.85) * 22px);height:calc(var(--r,1.85) * 22px);border-radius:50%;border:1.5px solid var(--cyan);opacity:0;animation:pulse-expand 1.6s ease-out var(--delay,0s) infinite;pointer-events:none}@keyframes pulse-expand{0%{transform:translate(-50%,-50%) scale(.5);opacity:.8}100%{transform:translate(-50%,-50%) scale(1.8);opacity:0}}.campus-path{stroke:rgba(168,238,194,.56);stroke-width:.72;stroke-dasharray:1 1.25;stroke-linecap:round}.campus-buildings rect{fill:rgba(241,226,168,.34);stroke:rgba(255,246,202,.4);stroke-width:.34;filter:drop-shadow(0 2.5px 3px rgba(0,0,0,.24))}.campus-buildings path{fill:none;stroke:rgba(246,232,181,.22);stroke-width:.42;stroke-linecap:round}.campus-tree{fill:rgba(144,204,116,.5);stroke:rgba(223,255,157,.34);stroke-width:.26;filter:drop-shadow(0 2px 2px rgba(0,0,0,.18))}.campus-tree.small{opacity:.72}.map-point{width:calc(var(--r) * 9.2px);height:calc(var(--r) * 9.2px);border-width:2px;box-shadow:0 0 0 3px rgba(243,255,230,.08),0 5px 14px rgba(0,0,0,.34),0 0 15px currentColor}.map-point-hit:hover .map-point,.map-point.active{transform:scale(1.38)}.map-tooltip{font-size:12px;letter-spacing:0}.machine-id b{font-stretch:normal;font-weight:760;letter-spacing:.015em}.map-detail h4{font-weight:750;line-height:1.16}.map-detail p{font-size:14px}.tier-pill{font-weight:750;line-height:1.1}@media(max-width:980px){.campus-map{min-height:410px}.campus-map-wrap{grid-template-columns:1fr}.zone-label{font-size:12px}}@media(max-width:560px){.campus-map{min-height:330px}.zone-label{font-size:11px;padding:3px 7px}.map-point{width:calc(var(--r) * 8px);height:calc(var(--r) * 8px)}}

/* Clickable top machine rows */
.rank-item[onclick]{cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.rank-item[onclick]:hover{transform:translateY(-1px);border-color:rgba(217,255,101,.34);background:rgba(217,255,101,.06)}.rank-item[onclick]:focus-within{outline:2px solid rgba(217,255,101,.5);outline-offset:2px}

.diag-overview{display:grid;grid-template-columns:150px 150px minmax(0,1fr);gap:12px;margin-bottom:16px}.diag-horizon-banner{display:flex;gap:10px;align-items:flex-start;border:1px solid rgba(255,191,95,.35);border-radius:16px;padding:10px 14px;margin-bottom:12px;background:rgba(255,191,95,.07);color:var(--ink);font-size:13px;line-height:1.55}.diag-horizon-banner b{color:var(--amber);white-space:nowrap;flex-shrink:0}.diag-headline{border:1px solid var(--line);border-radius:22px;padding:16px;background:linear-gradient(135deg,rgba(217,255,101,.08),rgba(111,240,189,.04))}.diag-headline small{display:block;color:var(--muted)}.diag-headline p{margin:8px 0 0;line-height:1.55}.workflow-list{display:grid;gap:14px}.workflow-stage{border:1px solid rgba(238,248,223,.16);border-radius:24px;padding:16px;background:linear-gradient(135deg,rgba(255,255,255,.055),rgba(255,255,255,.018));box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}.workflow-stage-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.workflow-stage-head h4{margin:0 0 5px;font-size:20px}.workflow-stage-head p{margin:0;color:var(--muted);line-height:1.55}.workflow-step{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:14px;background:var(--lime);color:#13200d;font-weight:800}.diag-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:14px 0}.diag-metrics.mini{grid-template-columns:repeat(4,minmax(0,1fr));margin:10px 0 0}.diag-metric{border:1px solid var(--line);border-radius:15px;padding:10px;background:rgba(8,13,11,.28);min-width:0}.diag-metric small{display:block;color:var(--muted);font-size:12px}.diag-metric strong{display:block;margin-top:4px;color:var(--ink);font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workflow-items{display:grid;gap:9px}.workflow-item{border:1px solid rgba(238,248,223,.12);border-radius:18px;padding:12px;background:rgba(8,13,11,.24)}.workflow-item-head{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start}.workflow-item-head b{display:block;line-height:1.35}.workflow-item-head p{margin:4px 0 0;color:var(--muted);font-size:13px;line-height:1.4}.workflow-rank{color:var(--lime);font-weight:800}.workflow-tags{margin-top:8px}.workflow-action{display:flex;gap:10px;align-items:flex-start;margin-top:12px;border:1px solid rgba(217,255,101,.22);border-radius:16px;padding:11px 12px;background:rgba(217,255,101,.07);line-height:1.5}.workflow-action b{color:var(--lime);white-space:nowrap}.machine-pill{border:0;cursor:pointer}.machine-pill:hover{background:var(--lime);color:#15200d}@media(max-width:980px){.diag-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.diag-headline{grid-column:1/-1}.diag-metrics,.diag-metrics.mini{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.diag-overview,.diag-metrics,.diag-metrics.mini{grid-template-columns:1fr}.workflow-stage{padding:13px}.workflow-stage-head{grid-template-columns:1fr}.workflow-step{width:34px;height:34px}.workflow-action{display:block}.workflow-action b{display:block;margin-bottom:5px}.pill{max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}}

/* Themed week selector to match hero/tab palette */
.actions select{appearance:none;-webkit-appearance:none;-moz-appearance:none;border:1px solid var(--line);border-radius:999px;padding:12px 38px 12px 18px;background:rgba(255,255,255,.04) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none'><path d='M1 1.5l5 5 5-5' stroke='%23d9ff65' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat right 16px center / 12px 8px;color:var(--ink);font:inherit;cursor:pointer;line-height:1.2;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}.actions select:hover{border-color:rgba(217,255,101,.45);background-color:rgba(217,255,101,.06)}.actions select:focus{outline:none;border-color:var(--lime);box-shadow:0 0 0 3px rgba(217,255,101,.18)}.actions select option{background:var(--panel);color:var(--ink)}

/* Simulation charts */
.sim-charts{margin:16px 0}.sim-chart-tabs{display:flex;gap:6px;margin-bottom:12px;overflow-x:auto}.sim-chart-tab{border:1px solid var(--line);border-radius:999px;padding:8px 16px;background:rgba(255,255,255,.04);color:var(--muted);cursor:pointer;font:inherit;white-space:nowrap;transition:background .16s,color .16s,border-color .16s}.sim-chart-tab.active{background:var(--cyan);color:#092017;border-color:transparent;font-weight:700}.sim-chart-tab:hover:not(.active){border-color:rgba(111,245,255,.35);color:var(--ink)}.sim-chart-body{min-height:200px;max-height:480px;overflow-y:auto}.sim-chart-pane{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px}.chart-title{margin:0 0 14px;font-size:15px;font-weight:700;color:var(--ink)}
.hbar-row{display:flex;align-items:center;gap:10px;margin:6px 0}.hbar-label{flex:0 0 72px;text-align:right;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar-track{flex:1;height:20px;background:rgba(255,255,255,.06);border-radius:4px;overflow:hidden}.hbar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--cyan),var(--mint));box-shadow:0 0 10px rgba(111,245,255,.2);transition:width .4s ease}.hbar-val{flex:0 0 40px;font-size:13px;font-weight:700;color:var(--lime)}
.compare-wrap{display:flex;gap:16px;align-items:flex-end;justify-content:center}.compare-group{display:flex;flex-direction:column;align-items:center;gap:6px;flex:1}.compare-bars{display:flex;gap:6px;align-items:flex-end;height:140px}.compare-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;width:28px;height:100%}.compare-bar{width:100%;border-radius:4px 4px 1px 1px;min-height:2px;transition:height .4s ease}.compare-bar.before{background:var(--red);opacity:.7}.compare-bar.after{background:var(--cyan);opacity:.85}.compare-num{font-size:10px;color:var(--muted);margin-top:4px;white-space:nowrap}.compare-label{font-size:12px;color:var(--muted);text-align:center}.compare-legend{display:flex;gap:12px;align-items:center;margin-top:12px;font-size:12px;color:var(--muted);justify-content:center}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}.legend-dot.before{background:var(--red);opacity:.7}.legend-dot.after{background:var(--cyan);opacity:.85}
.bubble-chart{width:100%;height:auto;display:block;margin-top:4px}.bubble-chart circle{cursor:default;transition:fill-opacity .2s}.bubble-chart circle:hover{fill-opacity:.85;stroke-width:1.6}.bubble-legend{display:flex;gap:14px;align-items:center;margin-top:10px;font-size:12px;color:var(--muted);justify-content:center}.bubble-legend .legend-dot{margin-right:4px}
.forecast-chart{width:100%;height:auto;display:block}.forecast-chart circle{cursor:default;transition:fill-opacity .2s}.forecast-chart circle:hover{fill-opacity:1;stroke-width:1.6}.forecast-chart .stock-line{stroke-dasharray:4 3;stroke-width:1;opacity:.5}.forecast-chart .stockout-dot{stroke:#ff7474;stroke-width:1.5;fill:#ff7474;fill-opacity:.7}.forecast-legend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:10px;font-size:12px;color:var(--muted);justify-content:center}.forecast-legend-item{display:inline-flex;align-items:center;gap:5px}.forecast-legend-line{width:18px;height:2px;border-radius:1px}.forecast-legend-dash{width:18px;height:0;border-top:2px dashed;opacity:.5}
@media(max-width:980px){.sim-chart-tabs{gap:4px}.sim-chart-tab{padding:7px 12px;font-size:13px}}
