@font-face{font-family:OPPO Sans;src:url(/assets/OPPOSans-R.subset-DVbKsI_c.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+20-7E,U+B0,U+B7,U+2013-2014,U+2265,U+3001-3002,U+4E00,U+4E09-4E0A,U+4E0D-4E0E,U+4E16,U+4E1C,U+4E2A,U+4E2D,U+4E32,U+4E34,U+4E3A-4E3B,U+4E8B,U+4E8E,U+4E91,U+4E9B,U+4EA4,U+4EA7,U+4EAC,U+4EC5,U+4EE3,U+4EE5,U+4EF6,U+4F18,U+4F3C,U+4F4D,U+4F59,U+4F5C,U+4F7F,U+4F9D,U+4FA7,U+4FDD,U+4FE1,U+503C,U+505C,U+5148,U+514D,U+5165,U+5168,U+516C,U+5173,U+5176,U+5185,U+51B5,U+51C6-51C7,U+51FA,U+5206-5207,U+521A,U+5230,U+5237,U+524D,U+529B,U+52A0-52A1,U+5316-5317,U+533A,U+5341,U+534E,U+5355,U+5357,U+5360,U+536B,U+5373,U+5386,U+539F,U+53CA,U+53CC,U+53D1,U+53D8,U+53E3,U+53EA,U+53EF-53F0,U+53F2,U+540C-540E,U+5411,U+5468,U+548C,U+5668,U+56DB,U+56ED,U+56FE,U+5728,U+5730,U+573A,U+5747,U+5750,U+578B,U+57DF,U+5907,U+591A,U+5927,U+5929-592A,U+592E,U+5931,U+5934,U+5B58,U+5B66,U+5B9E,U+5BA2,U+5BC6,U+5BD3,U+5BF9,U+5BFC,U+5C06,U+5C0F,U+5C16,U+5C4F,U+5CF0,U+5DEE,U+5DF2,U+5E02-5E03,U+5E08,U+5E38,U+5E73,U+5E76,U+5E94,U+5EA6,U+5EF6,U+5EFA,U+5F3A,U+5F53,U+5F55,U+5F85,U+5F97,U+5FAE,U+5FC5,U+606F,U+60C5,U+610F,U+611F,U+6237,U+628A,U+62A5,U+62DF,U+62E9,U+62FF,U+6307,U+6309,U+6362,U+636E,U+63A5,U+63D0,U+64CD,U+653E,U+654F,U+6559,U+6570,U+65B0,U+65CB,U+65F6,U+661F,U+662F,U+663E,U+666F,U+6674,U+6682,U+66F4,U+66FF-6700,U+6709,U+670D,U+671F,U+672A,U+672C,U+6761,U+6765,U+6781,U+6790,U+67D3,U+67E5,U+6807,U+6821,U+6837-6838,U+6A21,U+6B21,U+6B63,U+6B65,U+6BCF,U+6BD4,U+6C14,U+6C42,U+6CE8,U+6D41,U+6D4B,U+6D4F,U+6D77,U+6DC0,U+6E32,U+6E38,U+6E90,U+6F14,U+70B9,U+7387,U+73AB,U+73B0,U+7403,U+7406,U+7470,U+751F,U+7528,U+754C,U+7559,U+767B,U+7684,U+76D1,U+76EE,U+770B,U+77ED,U+7801,U+793A,U+79BB,U+79D2,U+7A7A,U+7ACB,U+7AD9,U+7AEF,U+7B49,U+7B51,U+7B97,U+7BAD,U+7C73,U+7CFB,U+7EA2,U+7EA7,U+7EAC,U+7EBF,U+7ECF,U+7ED8-7ED9,U+7EDF,U+7EF4,U+7F29,U+7F6E,U+80FD,U+8272,U+82B1,U+884C,U+897F,U+89C6,U+89C8,U+89D2,U+89E6,U+8B66,U+8BA1,U+8BBE-8BBF,U+8BE2,U+8BE6,U+8BF7,U+8C03,U+8C61,U+8D25,U+8DEF,U+8F66,U+8F6C,U+8F7B,U+8F7D,U+8F83,U+8FB9,U+8FD1,U+8FD9,U+8FDE-8FDF,U+9002,U+9009,U+901F,U+9053,U+907F,U+90E8,U+914D,U+91CD,U+949F,U+951A,U+95E8,U+95ED-95EE,U+95F4,U+9634-9635,U+9650,U+96E8,U+96EA,U+96F7,U+96FE,U+9700,U+9759,U+975E,U+9762,U+987B,U+9884,U+9891,U+98CE,U+9A8C,U+FF08-FF09,U+FF0C,U+FF1A-FF1B}@font-face{font-family:OPPO Sans;src:url(/assets/OPPOSans-B.subset-BtMJGpuF.woff2) format("woff2");font-weight:600;font-display:swap;unicode-range:U+20-7E,U+B0,U+B7,U+2013-2014,U+2265,U+3001-3002,U+4E00,U+4E09-4E0A,U+4E0D-4E0E,U+4E16,U+4E1C,U+4E2A,U+4E2D,U+4E32,U+4E34,U+4E3A-4E3B,U+4E8B,U+4E8E,U+4E91,U+4E9B,U+4EA4,U+4EA7,U+4EAC,U+4EC5,U+4EE3,U+4EE5,U+4EF6,U+4F18,U+4F3C,U+4F4D,U+4F59,U+4F5C,U+4F7F,U+4F9D,U+4FA7,U+4FDD,U+4FE1,U+503C,U+505C,U+5148,U+514D,U+5165,U+5168,U+516C,U+5173,U+5176,U+5185,U+51B5,U+51C6-51C7,U+51FA,U+5206-5207,U+521A,U+5230,U+5237,U+524D,U+529B,U+52A0-52A1,U+5316-5317,U+533A,U+5341,U+534E,U+5355,U+5357,U+5360,U+536B,U+5373,U+5386,U+539F,U+53CA,U+53CC,U+53D1,U+53D8,U+53E3,U+53EA,U+53EF-53F0,U+53F2,U+540C-540E,U+5411,U+5468,U+548C,U+5668,U+56DB,U+56ED,U+56FE,U+5728,U+5730,U+573A,U+5747,U+5750,U+578B,U+57DF,U+5907,U+591A,U+5927,U+5929-592A,U+592E,U+5931,U+5934,U+5B58,U+5B66,U+5B9E,U+5BA2,U+5BC6,U+5BD3,U+5BF9,U+5BFC,U+5C06,U+5C0F,U+5C16,U+5C4F,U+5CF0,U+5DEE,U+5DF2,U+5E02-5E03,U+5E08,U+5E38,U+5E73,U+5E76,U+5E94,U+5EA6,U+5EF6,U+5EFA,U+5F3A,U+5F53,U+5F55,U+5F85,U+5F97,U+5FAE,U+5FC5,U+606F,U+60C5,U+610F,U+611F,U+6237,U+628A,U+62A5,U+62DF,U+62E9,U+62FF,U+6307,U+6309,U+6362,U+636E,U+63A5,U+63D0,U+64CD,U+653E,U+654F,U+6559,U+6570,U+65B0,U+65CB,U+65F6,U+661F,U+662F,U+663E,U+666F,U+6674,U+6682,U+66F4,U+66FF-6700,U+6709,U+670D,U+671F,U+672A,U+672C,U+6761,U+6765,U+6781,U+6790,U+67D3,U+67E5,U+6807,U+6821,U+6837-6838,U+6A21,U+6B21,U+6B63,U+6B65,U+6BCF,U+6BD4,U+6C14,U+6C42,U+6CE8,U+6D41,U+6D4B,U+6D4F,U+6D77,U+6DC0,U+6E32,U+6E38,U+6E90,U+6F14,U+70B9,U+7387,U+73AB,U+73B0,U+7403,U+7406,U+7470,U+751F,U+7528,U+754C,U+7559,U+767B,U+7684,U+76D1,U+76EE,U+770B,U+77ED,U+7801,U+793A,U+79BB,U+79D2,U+7A7A,U+7ACB,U+7AD9,U+7AEF,U+7B49,U+7B51,U+7B97,U+7BAD,U+7C73,U+7CFB,U+7EA2,U+7EA7,U+7EAC,U+7EBF,U+7ECF,U+7ED8-7ED9,U+7EDF,U+7EF4,U+7F29,U+7F6E,U+80FD,U+8272,U+82B1,U+884C,U+897F,U+89C6,U+89C8,U+89D2,U+89E6,U+8B66,U+8BA1,U+8BBE-8BBF,U+8BE2,U+8BE6,U+8BF7,U+8C03,U+8C61,U+8D25,U+8DEF,U+8F66,U+8F6C,U+8F7B,U+8F7D,U+8F83,U+8FB9,U+8FD1,U+8FD9,U+8FDE-8FDF,U+9002,U+9009,U+901F,U+9053,U+907F,U+90E8,U+914D,U+91CD,U+949F,U+951A,U+95E8,U+95ED-95EE,U+95F4,U+9634-9635,U+9650,U+96E8,U+96EA,U+96F7,U+96FE,U+9700,U+9759,U+975E,U+9762,U+987B,U+9884,U+9891,U+98CE,U+9A8C,U+FF08-FF09,U+FF0C,U+FF1A-FF1B}@font-face{font-family:PangMenZhengDao Title;src:url(/assets/PangMenZhengDao-Title.subset-BioJkQTW.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+20-7E,U+B0,U+B7,U+2013-2014,U+2265,U+3001-3002,U+4E00,U+4E09-4E0A,U+4E0D-4E0E,U+4E16,U+4E1C,U+4E2A,U+4E2D,U+4E32,U+4E34,U+4E3A-4E3B,U+4E8B,U+4E8E,U+4E91,U+4E9B,U+4EA4,U+4EA7,U+4EAC,U+4EC5,U+4EE3,U+4EE5,U+4EF6,U+4F18,U+4F3C,U+4F4D,U+4F59,U+4F5C,U+4F7F,U+4F9D,U+4FA7,U+4FDD,U+4FE1,U+503C,U+505C,U+5148,U+514D,U+5165,U+5168,U+516C,U+5173,U+5176,U+5185,U+51B5,U+51C6-51C7,U+51FA,U+5206-5207,U+521A,U+5230,U+5237,U+524D,U+529B,U+52A0-52A1,U+5316-5317,U+533A,U+5341,U+534E,U+5355,U+5357,U+5360,U+536B,U+5373,U+5386,U+539F,U+53CA,U+53CC,U+53D1,U+53D8,U+53E3,U+53EA,U+53EF-53F0,U+53F2,U+540C-540E,U+5411,U+5468,U+548C,U+5668,U+56DB,U+56ED,U+56FE,U+5728,U+5730,U+573A,U+5747,U+5750,U+578B,U+57DF,U+5907,U+591A,U+5927,U+5929-592A,U+592E,U+5931,U+5934,U+5B58,U+5B66,U+5B9E,U+5BA2,U+5BC6,U+5BD3,U+5BF9,U+5BFC,U+5C06,U+5C0F,U+5C16,U+5C4F,U+5CF0,U+5DEE,U+5DF2,U+5E02-5E03,U+5E08,U+5E38,U+5E73,U+5E76,U+5E94,U+5EA6,U+5EF6,U+5EFA,U+5F3A,U+5F53,U+5F55,U+5F85,U+5F97,U+5FAE,U+5FC5,U+606F,U+60C5,U+610F,U+611F,U+6237,U+628A,U+62A5,U+62DF,U+62E9,U+62FF,U+6307,U+6309,U+6362,U+636E,U+63A5,U+63D0,U+64CD,U+653E,U+654F,U+6559,U+6570,U+65B0,U+65CB,U+65F6,U+661F,U+662F,U+663E,U+666F,U+6674,U+6682,U+66F4,U+66FF-6700,U+6709,U+670D,U+671F,U+672A,U+672C,U+6761,U+6765,U+6781,U+6790,U+67D3,U+67E5,U+6807,U+6821,U+6837-6838,U+6A21,U+6B21,U+6B63,U+6B65,U+6BCF,U+6BD4,U+6C14,U+6C42,U+6CE8,U+6D41,U+6D4B,U+6D4F,U+6D77,U+6DC0,U+6E32,U+6E38,U+6E90,U+6F14,U+70B9,U+7387,U+73AB,U+73B0,U+7403,U+7406,U+7470,U+751F,U+7528,U+754C,U+7559,U+767B,U+7684,U+76D1,U+76EE,U+770B,U+77ED,U+7801,U+793A,U+79BB,U+79D2,U+7A7A,U+7ACB,U+7AD9,U+7AEF,U+7B49,U+7B51,U+7B97,U+7BAD,U+7C73,U+7CFB,U+7EA2,U+7EA7,U+7EAC,U+7EBF,U+7ECF,U+7ED8-7ED9,U+7EDF,U+7EF4,U+7F29,U+7F6E,U+80FD,U+8272,U+82B1,U+884C,U+897F,U+89C6,U+89C8,U+89D2,U+89E6,U+8B66,U+8BA1,U+8BBE-8BBF,U+8BE2,U+8BE6,U+8BF7,U+8C03,U+8C61,U+8D25,U+8DEF,U+8F66,U+8F6C,U+8F7B,U+8F7D,U+8F83,U+8FB9,U+8FD1,U+8FD9,U+8FDE-8FDF,U+9002,U+9009,U+901F,U+9053,U+907F,U+90E8,U+914D,U+91CD,U+949F,U+951A,U+95E8,U+95ED-95EE,U+95F4,U+9634-9635,U+9650,U+96E8,U+96EA,U+96F7,U+96FE,U+9700,U+9759,U+975E,U+9762,U+987B,U+9884,U+9891,U+98CE,U+9A8C,U+FF08-FF09,U+FF0C,U+FF1A-FF1B}@font-face{font-family:D-DIN;src:url(/assets/D-DIN-DHIKp7DE.otf) format("opentype");font-weight:400;font-display:swap}:root{font-family:OPPO Sans,HarmonyOS Sans SC,MiSans,PingFang SC,sans-serif;color:#dcebf0;background:#040a16;font-synthesis:none;text-rendering:geometricPrecision;--bg: #040a16;--panel: rgba(6, 20, 38, .82);--panel-deep: rgba(4, 10, 22, .96);--line: rgba(48, 220, 255, .2);--line-strong: rgba(48, 220, 255, .42);--text: #e6f7ff;--muted: rgba(185, 218, 231, .62);--dim: rgba(167, 203, 218, .38);--accent: #30dcff;--accent-deep: #0091ff;--normal: #5fd3a2;--delayed: #d3bd68;--warn: #e3aa68;--alarm: #ee736e;--offline: #73858d}*{box-sizing:border-box}html{width:100%;height:100%;margin:0;overflow:clip;overscroll-behavior:none}body{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;overflow:clip;min-width:1280px;background:var(--bg);font-size:12px}#root{width:100%;height:100%;overflow:clip}button{font:inherit}.dashboard-shell{position:relative;width:100vw;height:100vh;min-height:720px;overflow:clip;background:radial-gradient(circle at 50% 35%,rgba(0,145,255,.18),transparent 37%),linear-gradient(135deg,rgba(16,76,132,.13),transparent 34%),#040a16}.dashboard-shell:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.34;background-image:linear-gradient(rgba(48,220,255,.022) 1px,transparent 1px),linear-gradient(90deg,rgba(48,220,255,.022) 1px,transparent 1px);background-size:40px 40px}.ambient{position:absolute;width:440px;height:440px;border-radius:50%;filter:blur(110px);opacity:.11;pointer-events:none}.ambient--one{left:-180px;top:90px;background:#008cd7}.ambient--two{right:-180px;bottom:-170px;background:#30dcff;opacity:.05}.topbar{position:relative;z-index:2;height:94px;display:grid;grid-template-columns:330px 1fr 330px;align-items:center;padding:0 24px;border-bottom:0;background:linear-gradient(180deg,rgba(4,10,22,.98),rgba(4,10,22,.64) 72%,transparent)}.topbar:after{content:"";position:absolute;left:18%;right:18%;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(48,220,255,.5),transparent);opacity:.7}.fui-header-skin{position:absolute;z-index:0;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.fui-header-skin img{position:absolute;display:block;object-fit:fill}.fui-header-skin__center{z-index:2;top:0;left:50%;width:min(870px,58vw);height:94px;transform:translate(-50%);animation:fuiHeaderIn .55s cubic-bezier(.16,1,.3,1) both}.fui-header-skin__bar{z-index:0;top:0;width:372px;height:32px;opacity:.86}.fui-header-skin__bar--left{left:100px}.fui-header-skin__bar--right{right:100px;transform:scaleX(-1)}.fui-header-skin__wing{z-index:1;top:0;width:240px;height:38px;opacity:.78;animation:fuiWingIn .6s ease-out .18s both}.fui-header-skin__wing--left{right:calc(50% + 430px)}.fui-header-skin__wing--right{left:calc(50% + 430px)}.fui-header-skin__arrow{z-index:3;top:22px;width:16px;height:23px;opacity:.72;animation:fuiArrowBreath 2.4s ease-in-out infinite}.fui-header-skin__arrow--left{left:calc(50% - 286px)}.fui-header-skin__arrow--right{right:calc(50% - 286px);transform:scaleX(-1)}.topbar__brand{position:relative;z-index:4;display:flex;align-items:center;gap:12px}.school-mark{width:44px;height:44px;color:var(--accent);filter:drop-shadow(0 0 12px rgba(104,217,232,.18))}.topbar__brand>div{display:flex;flex-direction:column;gap:6px}.topbar__location{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:12px}.topbar__title{position:relative;z-index:4;justify-self:center;display:flex;align-items:center;gap:24px;text-align:center}.topbar__title h1{margin:0;font-weight:600;letter-spacing:6px;font-size:clamp(24px,1.8vw,34px);background:linear-gradient(180deg,#fff 4%,#e3f1ff 48%,#8bb8ff);background-clip:text;-webkit-background-clip:text;color:transparent;filter:drop-shadow(0 2px 6px rgba(0,0,0,.55)) drop-shadow(0 0 12px rgba(80,160,255,.34))}.title-rule{display:none}.topbar__clock{position:relative;z-index:4;justify-self:end;display:flex;align-items:center;gap:10px;color:var(--accent)}.topbar__clock>div{display:flex;flex-direction:column;align-items:flex-end}.topbar__clock strong{font-family:D-DIN,DIN Alternate,sans-serif;font-size:23px;line-height:1;letter-spacing:1.6px;font-variant-numeric:tabular-nums;color:#e8f5f7}.topbar__clock span{margin-top:5px;font-size:12px;color:var(--muted)}.dashboard-grid{position:relative;z-index:1;height:calc(100vh - 124px);display:grid;grid-template-columns:326px minmax(600px,1fr) 400px;gap:14px;padding:10px 20px 8px}.left-column,.right-column{min-height:0;display:flex;flex-direction:column;gap:12px}.panel,.map-section{position:relative;isolation:isolate;min-height:0;border:0;background:#040a166b;box-shadow:0 18px 40px #00000029;animation:frameReveal .55s cubic-bezier(.16,1,.3,1) both}.panel:before,.map-section:before{content:none}.overview-panel{animation-delay:.08s}.station-list-panel{animation-delay:.15s}.map-section{animation-delay:.11s}.detail-panel{animation-delay:.19s}.chart-panel{animation-delay:.26s}.panel__header{position:relative;z-index:3;height:48px;overflow:hidden;padding:0 14px;display:flex;align-items:center;justify-content:space-between}.fui-panel-title-skin{position:absolute;z-index:0;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.fui-panel-title-skin img{position:absolute;display:block;pointer-events:none}.fui-panel-title-skin__base,.fui-panel-title-skin__glow{top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:fill}.fui-panel-title-skin__glow{mix-blend-mode:screen;opacity:.62;animation:fuiTitleGlow 3.2s ease-in-out infinite}.fui-panel-title-skin__dot{left:2px;top:50%;width:auto;height:140%;transform:translateY(calc(-50% - 6px));object-fit:contain;mix-blend-mode:screen;opacity:.88}.panel__header h2{position:relative;z-index:1;margin:0;font-size:15px;font-weight:600;letter-spacing:1.4px;color:#fff;text-shadow:0 0 9px rgba(48,220,255,.28)}.panel__action{position:relative;z-index:1}.panel__body{position:relative;z-index:1;min-height:0}.overview-panel{height:208px;flex:none}.station-list-panel{flex:1}.station-list-panel .panel__body{height:calc(100% - 48px)}.overview-score{height:148px;padding:11px 18px 13px;display:flex;align-items:center;gap:19px}.overview-score__ring{--score: 1;width:112px;height:112px;border-radius:50%;flex:none;display:grid;place-content:center;text-align:center;background:radial-gradient(circle,#0b2029 55%,transparent 57%),conic-gradient(var(--accent) calc(var(--score) * 1turn),rgba(101,157,169,.14) 0);box-shadow:0 0 26px #68d9e812,inset 0 0 24px #68d9e80a}.overview-score__ring div{line-height:1}.overview-score__ring strong{font-family:D-DIN,DIN Alternate,sans-serif;font-size:35px;font-weight:500;color:#f1fafb}.overview-score__ring span{font-size:12px;color:var(--muted)}.overview-score__ring small{margin-top:6px;font-size:12px;color:var(--muted);letter-spacing:1px}.overview-score__stats{flex:1;display:grid;gap:12px}.overview-score__stats>div{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:9px;border-bottom:1px solid rgba(116,170,182,.1)}.overview-score__stats span{font-size:12px;color:var(--muted)}.overview-score__stats strong{font-family:D-DIN,DIN Alternate,sans-serif;font-size:23px;font-weight:500;color:#dcebf0}.overview-score__stats i{font-family:inherit;font-size:12px;font-style:normal;color:var(--muted)}.text-warn{color:var(--warn)!important}.station-list{height:100%;display:grid;grid-template-rows:repeat(4,minmax(0,1fr));padding:4px 11px}.station-card{position:relative;min-height:0;overflow:hidden;display:flex;flex-direction:column;justify-content:center;padding:14px 10px 13px;border:0;border-bottom:1px solid rgba(122,174,186,.13);background:transparent;color:var(--text);text-align:left;cursor:pointer;transition:background .2s ease,box-shadow .2s ease}.station-card:last-child{border-bottom:0}.station-card:hover{background:#68d9e809}.station-card--active{background:linear-gradient(90deg,#0091ff26,#30dcff06);box-shadow:inset 0 1px #30dcff29,inset 0 -1px #30dcff29}.station-card__topline{min-height:23px;display:flex;justify-content:space-between;align-items:center;gap:10px}.station-card__name{min-width:0;display:flex;align-items:center;gap:8px;overflow:hidden;font-size:15px;font-weight:540;text-overflow:ellipsis;white-space:nowrap}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--normal);box-shadow:0 0 7px var(--normal)}.status-preAlarming .status-dot,.status-dot--preAlarming{background:var(--warn);box-shadow:0 0 7px var(--warn)}.status-delayed .status-dot,.status-dot--delayed{background:var(--delayed);box-shadow:0 0 7px var(--delayed)}.status-alarming .status-dot,.status-dot--alarming{background:var(--alarm);box-shadow:0 0 7px var(--alarm)}.status-offline .status-dot,.status-dot--offline{background:var(--offline);box-shadow:none}.station-card__status{flex:none;padding:0;border:0;font-size:12px;color:var(--normal);background:transparent}.status-preAlarming .station-card__status{color:var(--warn)}.status-delayed .station-card__status{color:var(--delayed)}.status-alarming .station-card__status{color:var(--alarm)}.status-offline .station-card__status{color:var(--offline)}.station-card__id{margin-top:6px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:D-DIN,DIN Alternate,sans-serif;font-size:12px;letter-spacing:.8px;color:#607d87}.station-card__id>span,.station-card__id em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.station-card__id em{max-width:54%;font-family:var(--font, inherit);font-style:normal;letter-spacing:0;text-align:right}.station-card__reading{display:grid;grid-template-columns:minmax(82px,.85fr) minmax(0,1.65fr);align-items:stretch;margin-top:14px}.station-card__speed{min-width:0;display:flex;flex-direction:column;justify-content:space-between;padding-right:8px;border-right:1px solid rgba(114,164,176,.14)}.station-card__reading small{min-width:0;display:flex;align-items:center;gap:4px;overflow:hidden;font-size:12px;color:#67838c;text-overflow:ellipsis;white-space:nowrap}.station-card__reading small svg{flex:none;color:#57bdca}.station-card__reading strong{overflow:hidden;font-family:D-DIN,DIN Alternate,sans-serif;line-height:1;font-weight:520;color:#e5f1f3;text-overflow:ellipsis;white-space:nowrap}.station-card__speed strong{margin-top:9px;font-size:27px}.station-card__reading i{margin-left:4px;font-family:inherit;font-size:12px;font-style:normal;color:#79959e}.station-card__secondary{min-width:0;display:grid;grid-template-columns:1fr 1fr}.station-card__secondary>span{min-width:0;display:flex;flex-direction:column;justify-content:space-between;padding-left:8px}.station-card__secondary>span+span{border-left:1px solid rgba(114,164,176,.1)}.station-card__secondary strong{margin-top:9px;font-size:21px}.sync-strip{height:54px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 12px 0 15px;border:1px solid var(--line);background:#091c24d6}.sync-strip__status{display:flex;align-items:center;gap:9px;color:var(--accent)}.sync-strip__status>span{display:flex;flex-direction:column;gap:2px}.sync-strip__status strong{font-size:12px;font-weight:500;color:#c4d9df}.sync-strip__status small{font-size:12px;color:var(--muted)}.sync-strip button{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(104,217,232,.18);background:#68d9e80d;color:var(--accent);cursor:pointer;transition:transform .2s ease,border-color .2s ease}.sync-strip button:hover{transform:rotate(25deg);border-color:#68d9e86b}.map-section{display:flex;flex-direction:column;min-width:0;overflow:hidden}.map-section__header{position:relative;z-index:3;height:48px;flex:none;overflow:hidden;display:flex;align-items:center;justify-content:space-between;padding:0 19px 0 54px}.map-section__header span{font-family:D-DIN,DIN Alternate,sans-serif;font-size:12px;letter-spacing:1.7px;color:#52717c}.map-section__header h2{position:relative;z-index:1;margin:0;font-size:16px;font-weight:600;letter-spacing:1.4px;color:#fff;text-shadow:0 0 9px rgba(48,220,255,.28)}.map-section__meta{position:relative;z-index:1;display:flex;align-items:center;gap:16px}.map-coordinates{display:flex;align-items:center;gap:7px;font-size:12px!important;color:#5f7b84!important;letter-spacing:.1px!important}.meta-pulse{width:6px;height:6px;border-radius:50%;background:var(--normal);box-shadow:0 0 10px var(--normal);animation:metaPulse 2s infinite}@keyframes metaPulse{50%{opacity:.45}}@keyframes frameReveal{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes fuiHeaderIn{0%{opacity:0;transform:translate(-50%) scaleX(.78)}to{opacity:1;transform:translate(-50%) scaleX(1)}}@keyframes fuiWingIn{0%{opacity:0;transform:translateY(-12px)}to{opacity:.78;transform:translateY(0)}}@keyframes fuiArrowBreath{0%,to{opacity:.38}50%{opacity:.86}}@keyframes fuiTitleGlow{0%,to{opacity:.42}50%{opacity:.76}}.map-section__body{position:relative;flex:1;min-height:0}.campus-map{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.campus-map:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 38% 46%,rgba(38,114,130,.14),transparent 38%);pointer-events:none}.campus-map>svg{width:100%;height:100%;display:block}.campus-boundary{stroke:#68d9e86b;stroke-width:1.5;stroke-dasharray:7 5;vector-effect:non-scaling-stroke;filter:url(#terrainShadow)}.terrain-contours{fill:none;stroke:#4f859114;stroke-width:1;stroke-dasharray:4 9}.map-area{fill:#12303857;stroke:#679aa42e;stroke-width:1;vector-effect:non-scaling-stroke}.map-area--residential{fill:#1e333b7a;stroke:#799ea633}.map-area--school,.map-area--kindergarten{fill:#194d5261;stroke:#63bcc142}.map-area--parking{fill:#39424675;stroke:#99aaae33;stroke-dasharray:3 3}.map-area--grass,.map-area--meadow,.map-area--forest{fill:#1c4e3b75;stroke:#579e7738}.map-area--commercial,.map-area--retail{fill:#3e3f3a5c;stroke:#a19a7e2e}.map-ground{fill:#1b594280;stroke:#66be9447;stroke-width:1.2}.map-ground--track{fill:#6652396e;stroke:#bc8e5c47;stroke-width:2}.map-ground--pitch{fill:#2364469e;stroke:#6cc49742}.map-ground--garden{fill:#1f5b46a3}.map-road__base,.map-road{fill:none;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.map-road__base{stroke:#030c11b3;stroke-width:5}.map-road{stroke:#6f969e47;stroke-width:2}.map-road-group--primary .map-road__base,.map-road-group--secondary .map-road__base{stroke-width:10}.map-road-group--primary .map-road,.map-road-group--secondary .map-road{stroke:#91aeb457;stroke-width:6}.map-road-group--tertiary .map-road__base,.map-road-group--residential .map-road__base{stroke-width:8}.map-road-group--tertiary .map-road,.map-road-group--residential .map-road{stroke-width:4}.map-road-group--living_street .map-road,.map-road-group--service .map-road{stroke:#6799a34d;stroke-width:2.4}.map-road-group--pedestrian .map-road,.map-road-group--footway .map-road,.map-road-group--path .map-road,.map-road-group--cycleway .map-road{stroke:#62a8ae42;stroke-width:1.2;stroke-dasharray:3 3}.map-road-group--pedestrian .map-road__base,.map-road-group--footway .map-road__base,.map-road-group--path .map-road__base,.map-road-group--cycleway .map-road__base{stroke-width:3;opacity:.55}.map-building__shadow{fill:#0000004d;stroke:none}.map-building__wall{fill:#1c3c45eb;stroke:#6796a129;stroke-width:.5}.map-building__top{fill:#1c3b45;stroke:#89b8c145;stroke-width:.9;vector-effect:non-scaling-stroke}.map-building__roof-detail{fill:#102a33;stroke:#6ec2cc42;stroke-width:.7;vector-effect:non-scaling-stroke}.map-building--campus .map-building__wall{fill:#185863f0}.map-building--campus .map-building__top{fill:#226371;stroke:#72e2ed85}.campus-tree__shadow{fill:#00000047}.campus-tree__crown{fill:url(#treeFill);stroke:#6dc79d47;stroke-width:.5}.campus-tree__highlight{fill:#ace6c447}.map-label rect{fill:#071920eb;stroke:#68d9e861}.map-label text{fill:#d8edf1;font-size:15px;font-weight:500;letter-spacing:1px}.map-neighbor-label{fill:#526d77;font-size:15px;letter-spacing:.5px}.map-road-label{fill:#3f5962;font-size:15px;letter-spacing:3px}.map-building-name{paint-order:stroke;stroke:#061218eb;stroke-width:3px;fill:#80a8b1;font-size:15px;letter-spacing:.5px;pointer-events:none}.station-marker{cursor:pointer;outline:none}.station-marker__pulse{fill:#5fd3a214;stroke:#5fd3a242;stroke-width:1;transform-origin:center;animation:markerPulse 2.6s ease-out infinite}.station-marker__pin{fill:#173f3c;stroke:var(--normal);stroke-width:2;filter:url(#mapGlow)}.station-marker__core{fill:var(--normal)}.station-marker.status-preAlarming .station-marker__pulse{fill:#e3aa6814;stroke:#e3aa6847}.station-marker.status-preAlarming .station-marker__pin{fill:#493926;stroke:var(--warn)}.station-marker.status-preAlarming .station-marker__core{fill:var(--warn)}.station-marker.status-delayed .station-marker__pulse{fill:#d3bd6814;stroke:#d3bd6847}.station-marker.status-delayed .station-marker__pin{fill:#49432b;stroke:var(--delayed)}.station-marker.status-delayed .station-marker__core{fill:var(--delayed)}.station-marker.status-alarming .station-marker__pulse{fill:#ee736e14;stroke:#ee736e4d}.station-marker.status-alarming .station-marker__pin{fill:#4a292a;stroke:var(--alarm)}.station-marker.status-alarming .station-marker__core{fill:var(--alarm)}.station-marker.status-offline .station-marker__pulse{fill:#73858d0d;stroke:#73858d33}.station-marker.status-offline .station-marker__pin{fill:#283238;stroke:var(--offline);filter:none}.station-marker.status-offline .station-marker__core{fill:var(--offline)}.station-marker--selected .station-marker__pin{stroke-width:2.8}.station-marker__label rect{fill:#071920e8;stroke:#67b3c033}.station-marker--selected .station-marker__label rect{stroke:#68d9e88f;fill:#081f27f5}.station-marker__id{fill:#d8e9ed;font-family:D-DIN,DIN Alternate,sans-serif;font-size:15px;letter-spacing:.7px}.station-marker__value{fill:#708e98;font-size:15px}@keyframes markerPulse{0%{transform:scale(.72);opacity:.9}72%,to{transform:scale(1.18);opacity:0}}.north-arrow circle{fill:#07181fd1;stroke:#6eaab738}.north-arrow path{fill:var(--accent)}.north-arrow text{fill:#8aa6af;font-family:D-DIN,DIN Alternate,sans-serif;font-size:15px}.map-legend{position:absolute;left:17px;bottom:17px;display:flex;gap:13px;padding:7px 9px;border:1px solid rgba(105,161,173,.14);background:#06151cd1}.map-legend span{display:flex;align-items:center;gap:5px;font-size:12px;color:#6d8993}.legend-dot{width:5px;height:5px;border-radius:50%;background:var(--normal);box-shadow:0 0 5px var(--normal)}.legend-dot--delayed{background:var(--delayed);box-shadow:0 0 5px var(--delayed)}.legend-dot--warn{background:var(--warn);box-shadow:0 0 5px var(--warn)}.legend-dot--alarm{background:var(--alarm);box-shadow:0 0 5px var(--alarm)}.legend-dot--offline{background:var(--offline);box-shadow:none}.map-attribution{position:absolute;right:14px;bottom:12px;font-size:12px;color:#405b64;letter-spacing:.3px}.station-popover{--state-color: var(--normal);position:absolute;z-index:8;width:356px;padding:18px 19px 16px;transform:translate(22px,-50%);border:1px solid color-mix(in srgb,var(--state-color) 38%,transparent);background:linear-gradient(145deg,#081f27fa,#06141bf5);box-shadow:0 16px 38px #00000057,0 0 24px color-mix(in srgb,var(--state-color) 8%,transparent);animation:popoverIn .18s ease-out both}.station-popover:after{content:"";position:absolute;left:-22px;top:50%;width:22px;border-top:1px solid color-mix(in srgb,var(--state-color) 62%,transparent)}.station-popover--left{transform:translate(calc(-100% - 22px),-50%)}.station-popover--left:after{left:auto;right:-22px}.station-popover.status-delayed{--state-color: var(--delayed)}.station-popover.status-preAlarming{--state-color: var(--warn)}.station-popover.status-alarming{--state-color: var(--alarm)}.station-popover.status-offline{--state-color: var(--offline)}.station-popover__header{display:flex;align-items:center;justify-content:space-between}.station-popover__header button{width:28px;height:28px;display:grid;place-items:center;padding:0;border:0;background:transparent;color:#627e88;cursor:pointer}.station-popover__header button:hover{color:#c8dce1}.station-popover__header svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4}.station-popover__compact-title{min-width:0;display:flex;align-items:flex-start;gap:10px}.station-popover__compact-title>i{width:7px;height:7px;margin-top:7px;flex:none;border-radius:50%;background:var(--state-color);box-shadow:0 0 8px var(--state-color)}.station-popover__compact-title>span{min-width:0;display:flex;flex-direction:column}.station-popover__compact-title strong{overflow:hidden;color:#e5f1f4;font-size:18px;font-weight:560;text-overflow:ellipsis;white-space:nowrap}.station-popover__compact-title small{margin-top:5px;color:#607b84;font-family:D-DIN,DIN Alternate,sans-serif;font-size:13px}.station-popover__compact-title em{display:flex;align-items:center;gap:5px;margin-top:7px;color:#78939c;font-size:13px;font-style:normal}.station-popover__compact-title em svg{flex:none;color:var(--state-color)}.station-popover__compact-metrics{display:grid;grid-template-columns:1.05fr 1.35fr .8fr;margin-top:15px;padding:14px 0;border-top:1px solid rgba(112,166,178,.11);border-bottom:1px solid rgba(112,166,178,.11)}.station-popover__compact-metrics>span{min-width:0;display:flex;flex-direction:column;gap:4px}.station-popover__compact-metrics>span+span{padding-left:14px;border-left:1px solid rgba(112,166,178,.1)}.station-popover__compact-metrics small{display:flex;align-items:center;gap:5px;color:#68838c;font-size:12px}.station-popover__compact-metrics small svg{flex:none;color:#55c7d9}.station-popover__compact-metrics strong{overflow:hidden;color:#dcecef;font-family:D-DIN,DIN Alternate,sans-serif;font-size:21px;font-weight:520;text-overflow:ellipsis;white-space:nowrap}.station-popover__compact-metrics i{margin-left:4px;color:var(--muted);font-family:inherit;font-size:13px;font-style:normal}.station-popover__metadata{display:grid;grid-template-columns:1.15fr 1fr .85fr;padding:13px 0 12px;border-bottom:1px solid rgba(112,166,178,.11)}.station-popover__metadata>span{min-width:0;display:flex;flex-direction:column;gap:5px}.station-popover__metadata>span+span{padding-left:12px;border-left:1px solid rgba(112,166,178,.08)}.station-popover__metadata small{color:#58737c;font-size:12px}.station-popover__metadata strong{overflow:hidden;color:#a9c0c6;font-family:D-DIN,DIN Alternate,sans-serif;font-size:13px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.station-popover__footer{display:flex;align-items:center;justify-content:space-between;margin-top:13px}.station-popover__footer>span{display:flex;align-items:center;gap:6px;font-family:D-DIN,DIN Alternate,sans-serif;font-size:12px;color:#5d7881}.station-popover__footer>span svg{flex:none}.station-popover__footer button{height:32px;padding:0 13px;border:1px solid rgba(104,217,232,.22);background:#68d9e812;color:#8fcbd4;font-size:13px;cursor:pointer}.station-popover__footer button:hover{border-color:#68d9e873;color:#cceaf0}@keyframes popoverIn{0%{opacity:0}to{opacity:1}}.detail-panel{height:488px;flex:none}.detail-panel--pulse{animation:detailPulse .9s ease-out}@keyframes detailPulse{0%,to{border-color:var(--line)}28%{border-color:#68d9e8bf;box-shadow:inset 0 1px #ffffff06,0 0 28px #68d9e821}}.chart-panel{flex:1}.status-chip{display:flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid rgba(95,211,162,.24);color:var(--normal);font-size:12px}.status-chip i{width:5px;height:5px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}.status-chip.status-preAlarming{color:var(--warn);border-color:#e3aa6847}.status-chip.status-delayed{color:var(--delayed);border-color:#d3bd6847}.status-chip.status-alarming{color:var(--alarm);border-color:#ee736e47}.status-chip.status-offline{color:var(--offline);border-color:#73858d47}.selected-station{height:150px;display:grid;grid-template-columns:1fr 148px;align-items:center;padding:12px 17px 8px}.selected-station__identity span{display:block;font-size:12px;color:var(--muted)}.selected-station__identity strong{display:block;margin:6px 0 4px;font-family:D-DIN,DIN Alternate,sans-serif;font-size:28px;font-weight:500;letter-spacing:1px;color:#edf8fa}.selected-station__identity small{display:block;max-width:170px;line-height:1.6;font-size:12px;color:#64808a}.wind-dial{position:relative;width:132px;height:132px;border-radius:50%;border:1px solid rgba(103,168,180,.2);background:radial-gradient(circle,rgba(18,54,64,.42) 0 42%,transparent 43%),repeating-conic-gradient(from -1deg,rgba(112,169,181,.18) 0 1deg,transparent 1deg 15deg)}.wind-dial:before{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:1px solid rgba(103,168,180,.1);border-radius:50%}.wind-dial__north,.wind-dial__east,.wind-dial__south,.wind-dial__west{position:absolute;font-family:D-DIN,DIN Alternate,sans-serif;font-size:12px;color:#5d7983}.wind-dial__north{top:5px;left:50%;transform:translate(-50%);color:var(--accent)}.wind-dial__south{bottom:5px;left:50%;transform:translate(-50%)}.wind-dial__east{right:7px;top:50%;transform:translateY(-50%)}.wind-dial__west{left:7px;top:50%;transform:translateY(-50%)}.wind-dial__needle{position:absolute;top:19px;right:19px;bottom:19px;left:19px;transition:transform .7s ease}.wind-dial__needle:before{content:"";position:absolute;left:50%;top:1px;width:1px;height:37px;background:linear-gradient(var(--accent),transparent);box-shadow:0 0 8px var(--accent)}.wind-dial__needle i{position:absolute;left:calc(50% - 4px);top:-1px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:8px solid var(--accent)}.wind-dial__needle--calm{opacity:0}.wind-dial__value{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center}.wind-dial__value strong{font-family:D-DIN,DIN Alternate,sans-serif;font-size:17px;font-weight:500;color:#dcebf0}.wind-dial__value span{margin-top:1px;font-size:12px;color:var(--muted)}.primary-wind-metrics{height:91px;margin:0 14px;display:grid;grid-template-columns:1.55fr 1fr 1fr;border:1px solid rgba(111,168,180,.12);background:#091c249e}.primary-wind-metrics>div{display:flex;flex-direction:column;justify-content:center;padding-left:12px;border-right:1px solid rgba(111,168,180,.1)}.primary-wind-metrics>div:last-child{border-right:0}.primary-wind-metrics>div span{font-size:12px;color:var(--muted)}.primary-wind-metrics>div strong{margin-top:7px;font-family:D-DIN,DIN Alternate,sans-serif;font-size:19px;font-weight:500;color:#d9eaee}.primary-wind-metrics i{font-size:12px;font-style:normal;color:var(--muted)}.primary-wind-metrics__hero{flex-direction:row!important;align-items:center;gap:11px;padding-left:13px!important;color:var(--accent)}.primary-wind-metrics__hero>span{display:grid;grid-template-columns:auto auto;align-items:baseline;column-gap:5px}.primary-wind-metrics__hero small{grid-column:1 / -1;font-size:12px;color:var(--muted)}.primary-wind-metrics__hero strong{margin-top:3px!important;font-size:30px!important;color:#edf8fa!important}.environment-metrics{height:60px;margin:9px 14px 0;display:grid;grid-template-columns:repeat(3,1fr);background:#0819208f}.environment-metrics>div{display:flex;align-items:baseline;justify-content:space-between;padding:0 11px;border-right:1px solid rgba(111,168,180,.1)}.environment-metrics>div:last-child{border-right:0}.environment-metrics span{font-size:12px;color:var(--dim)}.environment-metrics strong{font-family:D-DIN,DIN Alternate,sans-serif;font-size:15px;font-weight:500;color:#bcd1d7}.environment-metrics small{margin-left:2px;font-size:12px;color:var(--dim)}.station-message{height:52px;margin:9px 14px 0;display:flex;align-items:center;gap:9px;padding:0 12px;background:#5fd3a20f}.station-message>i{width:7px;height:7px;border-radius:50%;background:var(--normal);box-shadow:0 0 7px var(--normal)}.station-message>span{display:flex;flex-direction:column;gap:2px}.station-message strong{font-size:12px;font-weight:500;color:#bcd8cd}.station-message small{font-size:12px;color:var(--muted)}.station-message--preAlarming{border-color:var(--warn);background:#e3aa680d}.station-message--preAlarming>i{background:var(--warn);box-shadow:0 0 7px var(--warn)}.station-message--preAlarming strong{color:#d7c0a3}.station-message--delayed{border-color:var(--delayed);background:#d3bd680d}.station-message--delayed>i{background:var(--delayed);box-shadow:0 0 7px var(--delayed)}.station-message--delayed strong{color:#d8cda0}.station-message--alarming{border-color:var(--alarm);background:#ee736e0d}.station-message--alarming>i{background:var(--alarm);box-shadow:0 0 7px var(--alarm)}.station-message--alarming strong{color:#e2b0ae}.station-message--offline{border-color:var(--offline);background:#73858d0d}.station-message--offline>i{background:var(--offline);box-shadow:none}.station-message--offline strong{color:#aab8bd}.chart-panel .panel__header{height:48px;align-items:center}.chart-panel .panel__body{height:calc(100% - 48px);display:flex;flex-direction:column}.weather-chart{flex:1;min-height:190px;width:100%}.chart-summary{height:54px;flex:none;display:grid;grid-template-columns:repeat(3,1fr);margin:0 12px 10px;border-top:1px solid rgba(107,164,177,.1);background:#08192061}.chart-summary>span{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid rgba(107,164,177,.09)}.chart-summary>span:last-child{border-right:0}.chart-summary small{font-size:12px;color:var(--dim)}.chart-summary strong{margin-top:5px;font-family:D-DIN,DIN Alternate,sans-serif;font-size:15px;font-weight:520;color:#cfe1e5}.dashboard-footer{position:absolute;z-index:2;left:20px;right:20px;bottom:0;height:30px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(118,174,187,.1);font-size:12px;color:#435f69;letter-spacing:.4px}.footer-live{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:7px;color:#68848d;white-space:nowrap}.footer-live>svg{color:var(--accent)}.footer-live strong{color:#95afb7;font-size:12px;font-weight:500}.footer-live>i{width:3px;height:3px;border-radius:50%;background:var(--normal);box-shadow:0 0 6px var(--normal)}.footer-live--connecting>i{background:var(--warn);box-shadow:0 0 6px var(--warn)}.footer-live--fallback>i{background:var(--offline);box-shadow:none}.footer-live button{width:22px;height:22px;display:grid;place-items:center;padding:0;border:0;background:transparent;color:#638e98;cursor:pointer;transition:color .2s ease,transform .2s ease}.footer-live button:hover{color:var(--accent);transform:rotate(24deg)}.topbar{position:absolute;inset:0 0 auto;z-index:100;pointer-events:none}.topbar>*{pointer-events:auto}.fui-header-skin__center{width:870px}.fui-header-skin__wing--left{left:400px;right:auto}.fui-header-skin__wing--right{right:400px;left:auto}.fui-header-skin__arrow--left{left:calc(50% - 280px)}.fui-header-skin__arrow--right{right:calc(50% - 280px)}.topbar__brand{position:absolute;left:24px;top:25px}.topbar__title{position:absolute;left:50%;top:6px;height:47px;transform:translate(-50%)}.topbar__title h1{font-size:36px;line-height:47px;font-weight:400;white-space:nowrap}.topbar__clock{position:absolute;top:30px;right:60px}.scene-map{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;overflow:hidden}.scene-map .campus-map{top:48px;right:250px;bottom:30px;left:250px}.scene-map .campus-map:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 50% 48%,transparent 30%,rgba(4,10,22,.24) 74%,rgba(4,10,22,.58) 100%)}.scene-mask{position:absolute;z-index:2;top:0;bottom:0;width:500px;pointer-events:none}.scene-mask--left{left:0;background:linear-gradient(to right,rgba(4,10,22,.98) 0%,rgba(4,10,22,.92) 50%,rgba(4,10,22,.6) 80%,transparent 100%)}.scene-mask--right{right:0;background:linear-gradient(to left,rgba(4,10,22,.98) 0%,rgba(4,10,22,.92) 50%,rgba(4,10,22,.6) 80%,transparent 100%)}.fui-side-frames{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;overflow:hidden;pointer-events:none}.fui-side-frames__frame{position:absolute;top:0;width:353px;height:100%;object-fit:fill;opacity:.82;animation:frameReveal .6s ease-out .3s both}.fui-side-frames__frame--left{left:0}.fui-side-frames__frame--right{right:0;transform:scaleX(-1)}.top-count-card{position:absolute;left:50%;top:100px;z-index:5;display:flex;align-items:center;justify-content:center;gap:72px;transform:translate(-50%);white-space:nowrap}.top-count-item{display:flex;align-items:center;padding:0 12px}.top-count-item__icon{width:48px;height:48px;margin-right:10px;flex:none;color:var(--accent)}.top-count-item__icon img{display:block;width:56px;height:56px;transform:translate(-4px,-4px);object-fit:contain}.top-count-item__label{display:flex;flex-direction:column}.top-count-item__label strong{color:#fff;font-size:16px;font-weight:600}.top-count-item__label small{padding-top:4px;color:#ffffff80;font-size:12px}.top-count-item__value{display:flex;align-items:baseline;padding-left:20px;font-family:D-DIN,sans-serif;color:#fff;font-size:28px;font-weight:600;letter-spacing:1px;text-shadow:0 0 18px rgba(255,255,255,.7)}.top-count-item__value i{padding-top:14px;margin-left:8px;font-family:OPPO Sans,sans-serif;color:#ffffff80;font-size:12px;font-style:normal;font-weight:500;text-shadow:none}.side-panel{position:absolute;z-index:4;top:80px;bottom:100px;width:398px;display:flex;flex-direction:column;pointer-events:auto}.side-panel--left{left:40px}.side-panel--right{right:40px}.side-panel__card,.side-panel__card.detail-panel{flex:1 1 0;width:100%;height:auto;min-height:0;margin:0 0 8px;overflow:hidden;border:1px solid rgba(95,157,183,.2);background:linear-gradient(180deg,#07182ae0,#040f1dd1);box-shadow:0 12px 28px #00000029}.side-panel__card:last-child{margin-bottom:0}.side-panel__card .panel__body{height:calc(100% - 48px);min-height:0;padding:8px;display:flex;flex-direction:column;overflow:hidden}.side-panel__card:before{content:none}.side-panel__card .panel__header{border-bottom:1px solid rgba(80,145,174,.18);background:#0b2339b8}.side-panel__card .panel__header:after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:1px;background:linear-gradient(90deg,rgba(48,220,255,.42),rgba(48,220,255,.08) 55%,transparent)}.side-panel__card .panel__header h2{font-size:14px;letter-spacing:2px}.overview-score--compact{flex:1;width:100%;height:auto;min-height:0;padding:4px 14px;gap:24px}.overview-score--compact .overview-score__ring{width:104px;height:104px}.overview-score--compact .overview-score__ring strong{font-size:32px}.overview-score--compact .overview-score__stats{gap:8px}.overview-score--compact .overview-score__stats>div{padding-bottom:8px}.station-mini-list{flex:1;min-height:0;display:grid;grid-template-rows:repeat(4,minmax(0,1fr))}.station-mini-list button{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 64px 70px;align-items:center;gap:10px;padding:5px 9px;border:0;border-bottom:1px solid rgba(48,220,255,.1);background:transparent;color:var(--text);text-align:left;cursor:pointer}.station-mini-list button:last-child{border-bottom:0}.station-mini-list button:hover,.station-mini-list button.active{background:linear-gradient(90deg,#0091ff1f,#30dcff05)}.station-mini-list__name{min-width:0;display:grid;grid-template-columns:7px 1fr;align-items:center;column-gap:8px}.station-mini-list__name .status-dot{grid-row:1 / 3}.station-mini-list__name strong{overflow:hidden;font-size:14px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.station-mini-list__name small{grid-column:2;margin-top:3px;font-family:D-DIN,sans-serif;color:var(--dim);font-size:12px}.station-mini-list__value{display:flex;align-items:baseline;justify-content:flex-end}.station-mini-list__value strong{font-family:D-DIN,sans-serif;font-size:20px;font-weight:500}.station-mini-list__value small{margin-left:3px;color:var(--muted);font-size:12px}.station-mini-list__direction{overflow:hidden;color:#cfe8ef;font-size:14px;text-align:right;text-overflow:ellipsis;white-space:nowrap}.station-rank-list{flex:1;min-height:0;display:grid;grid-template-rows:repeat(4,minmax(0,1fr));padding:1px 7px}.station-rank-list button{min-height:0;display:grid;grid-template-columns:90px 1fr 30px 28px;align-items:center;gap:8px;padding:5px 3px;border:0;background:transparent;color:var(--text);cursor:pointer}.station-rank-list button>span{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.station-rank-list button>i{height:8px;overflow:hidden;background:#30dcff14}.station-rank-list button>i b{display:block;height:100%;background:linear-gradient(90deg,#0872bb,#30dcff);box-shadow:0 0 8px #30dcff57}.station-rank-list button>strong{font-family:D-DIN,sans-serif;font-size:17px;font-weight:500;text-align:right}.station-rank-list button>small{color:var(--muted);font-size:12px}.data-access-panel{flex:1;min-height:0;display:grid;grid-template-columns:48px 1fr 30px;align-items:center;gap:10px;padding:5px 12px}.data-access-panel__signal{position:relative;width:42px;height:42px;display:grid;place-items:center;color:var(--normal);background:radial-gradient(circle,rgba(95,211,162,.14),transparent 67%)}.data-access-panel__signal>i{position:absolute;right:3px;top:4px;width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.data-access-panel--connecting .data-access-panel__signal{color:var(--warn)}.data-access-panel--fallback .data-access-panel__signal{color:var(--offline)}.data-access-panel>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:5px}.data-access-panel strong{overflow:hidden;color:#dcedf2;font-size:14px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.data-access-panel small{overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.data-access-panel button{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(48,220,255,.22);background:#30dcff0f;color:var(--accent);cursor:pointer}.selected-station--compact{flex:1;width:100%;height:auto;min-height:0;grid-template-columns:1fr 120px;padding:3px 11px}.selected-station--compact .selected-station__identity strong{margin:4px 0 2px;font-size:24px}.selected-station--compact .wind-dial{width:106px;height:106px}.selected-station--compact .wind-dial__needle{top:16px;right:16px;bottom:16px;left:16px}.selected-station--compact .wind-dial__needle:before{height:29px}.primary-wind-metrics--compact{flex:1.08;width:100%;height:auto;min-height:0;margin:0}.primary-wind-metrics--compact .primary-wind-metrics__hero strong{font-size:25px!important}.environment-metrics--compact{flex:.78;width:100%;height:auto;min-height:0;margin:7px 0 0}.environment-metrics--compact>div{padding:0 7px;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px}.environment-metrics--compact strong{font-size:14px}.side-chart-card .panel__body{padding:2px 8px 8px}.side-chart-card .weather-chart{flex:1;min-height:0}.chart-summary--compact{height:42px;margin:0}.chart-summary--compact strong{margin-top:3px;font-size:14px}.station-message--compact{flex:none;width:100%;height:48px;margin:0;padding:0 10px}.station-message--compact span{min-width:0}.station-message--compact strong,.station-message--compact small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.station-feed{flex:1;min-height:0;display:grid;grid-template-rows:repeat(3,minmax(0,1fr));margin-top:4px}.station-feed button{min-height:0;display:grid;grid-template-columns:7px 1fr auto;align-items:center;gap:8px;padding:3px 9px;border:0;border-bottom:1px solid rgba(48,220,255,.08);background:transparent;color:var(--text);text-align:left;cursor:pointer}.station-feed button:last-child{border-bottom:0}.station-feed button:hover{background:#30dcff09}.station-feed button>span{min-width:0;display:flex;flex-direction:column;gap:2px}.station-feed button strong{overflow:hidden;font-size:13px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.station-feed button small{overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.station-feed button b{font-family:D-DIN,sans-serif;font-size:14px;font-weight:500}.dashboard-footer{z-index:6}@media(max-width:1550px){.topbar{grid-template-columns:270px 1fr 270px}.topbar__location{display:none}.dashboard-grid{grid-template-columns:290px minmax(520px,1fr) 360px;gap:10px;padding-left:12px;padding-right:12px}.selected-station{grid-template-columns:1fr 132px}.wind-dial{width:120px;height:120px}.map-coordinates{display:none}.station-card{padding-left:8px;padding-right:8px}.station-card__reading{grid-template-columns:minmax(78px,.82fr) minmax(0,1.68fr)}.station-card__speed{padding-right:7px}.station-card__secondary>span{padding-left:7px}.fui-header-skin__bar--left{left:40px}.fui-header-skin__bar--right{right:40px}.fui-header-skin__wing--left{left:305px}.fui-header-skin__wing--right{right:305px}.topbar__title h1{font-size:30px}.topbar__clock{right:24px}.side-panel{width:320px;top:80px;bottom:76px}.side-panel--left{left:24px}.side-panel--right{right:24px}.fui-side-frames__frame{width:290px}.scene-mask{width:405px}.scene-map .campus-map{top:48px;right:205px;bottom:30px;left:205px}.top-count-card{top:92px;gap:18px;transform:translate(-50%) scale(.82);transform-origin:top center}.panel__header{padding-left:14px}.station-mini-list button{grid-template-columns:minmax(0,1fr) 54px 54px;gap:6px;padding-inline:5px}.station-rank-list button{grid-template-columns:78px 1fr 26px 28px;gap:5px}.selected-station--compact{grid-template-columns:1fr 92px}.selected-station--compact .wind-dial{width:88px;height:88px}.selected-station--compact .wind-dial__needle{top:13px;right:13px;bottom:13px;left:13px}.primary-wind-metrics>div{padding-left:7px}.primary-wind-metrics__hero{gap:6px;padding-left:7px!important}}@media(prefers-reduced-motion:reduce){.panel,.map-section,.fui-header-skin img,.fui-panel-title-skin__glow,.meta-pulse,.station-marker__pulse{animation:none!important}}.legacy-dashboard{--font-family: "DIN Alternate", "Helvetica Neue", "PingFang SC", sans-serif;--font-mono: "DIN Alternate", "JetBrains Mono", monospace;--accent: #00d4ff;font-family:var(--font-family);font-size:14px}.legacy-topbar{position:absolute;top:0;left:0;width:100%;height:120px;z-index:100;pointer-events:none;animation:legacy-slide-down .8s cubic-bezier(.16,1,.3,1) both}.legacy-topbar__image{position:absolute;top:0;left:0;width:100%;height:120px;object-fit:cover;object-position:center top;pointer-events:none}.legacy-topbar__title{position:absolute;z-index:1;top:37px;left:50%;transform:translate(-50%);width:640px;height:46px;margin:0;isolation:isolate;color:#dcf4ff;font-family:PingFang SC,sans-serif;font-size:32px;font-weight:600;line-height:46px;text-align:center;white-space:nowrap;text-shadow:0 0 6px rgba(164,230,255,.3)}.legacy-topbar__title:before{content:"";position:absolute;z-index:-1;top:-3px;right:-8px;bottom:-3px;left:-8px;background:linear-gradient(180deg,#2b80af,#246d9b);-webkit-mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent);mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}.legacy-scan{position:absolute;top:0;left:0;width:100%;height:120px;z-index:2;pointer-events:none}.legacy-scan__path{stroke-dasharray:260 2100;stroke-dashoffset:2360;animation:legacy-scan-trace 4s ease-in-out 1.5s infinite}.legacy-scan__path--glow{opacity:.7}.legacy-time{position:absolute;top:16px;right:60px;display:flex;flex-direction:column;align-items:flex-end;gap:2px;animation:legacy-fade-in .6s ease .8s both}.legacy-time__date{font-family:var(--font-mono);font-size:20px;font-weight:700;color:#a1c4e0}.legacy-time__clock{font-family:var(--font-mono);font-size:14px;color:#a1c4e099}.legacy-top-stat{position:absolute;top:50px;display:flex;align-items:center;gap:8px;animation:legacy-fade-in .6s ease 1s both}.legacy-top-stat--left{left:60px}.legacy-top-stat--right{right:220px}.legacy-top-stat>span{font-size:13px;color:#91b0d4b3;letter-spacing:1px}.legacy-top-stat strong{font-family:var(--font-mono);font-size:24px;font-weight:700;color:#00d4ff;text-shadow:0 0 10px rgba(0,212,255,.3)}.legacy-top-stat small{font-size:12px;color:#91b0d480;margin-left:2px}.legacy-side-deco{position:absolute;top:120px;width:34px;height:calc(100vh - 120px);z-index:50;pointer-events:none}.legacy-side-deco img{width:100%;height:100%;object-fit:fill}.legacy-side-deco--left{left:0;animation:legacy-slide-left .8s cubic-bezier(.16,1,.3,1) .3s both}.legacy-side-deco--right{right:0;animation:legacy-slide-right .8s cubic-bezier(.16,1,.3,1) .3s both}.legacy-dashboard .side-panel{position:absolute;top:100px;bottom:90px;width:380px;z-index:10;display:flex;flex-direction:column;gap:10px}.legacy-dashboard .side-panel--left{left:40px}.legacy-dashboard .side-panel--right{right:40px}.legacy-dashboard .side-panel__card{flex:1;min-height:0;height:auto;margin:0;background:transparent;border:none;border-radius:0;box-shadow:none;overflow:hidden;display:flex;flex-direction:column;animation:legacy-panel-in .6s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.8s + var(--panel-index, 0) * .12s)}.legacy-dashboard .side-panel__card:nth-child(2){--panel-index: 1}.legacy-dashboard .side-panel__card:nth-child(3){--panel-index: 2}.legacy-dashboard .side-panel__card:nth-child(4){--panel-index: 3}.legacy-dashboard .side-panel__card:before,.legacy-dashboard .side-panel__card .panel__header:after{content:none}.legacy-dashboard .side-panel__card .panel__header{position:relative;height:40px;min-height:40px;flex-shrink:0;display:flex;align-items:center;padding:0 12px 0 52px;overflow:hidden;border:none;background:transparent}.legacy-panel-title{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.legacy-dashboard .side-panel__card .panel__header h2{position:relative;z-index:1;font-size:14px;font-weight:600;color:#fff;letter-spacing:1px;text-shadow:0 0 8px rgba(0,180,255,.3)}.legacy-dashboard .side-panel__card .panel__body{padding:12px;flex:1;height:auto;min-height:0;display:flex;flex-direction:column;background:transparent}.legacy-dashboard .detail-panel--pulse{animation:legacy-detail-focus .9s ease-out}.legacy-dashboard .station-message--compact{height:42px}.legacy-dashboard .station-feed button{padding-block:2px}.legacy-dashboard .station-feed button>span{gap:1px}.legacy-dashboard .station-feed button strong{line-height:16px}.legacy-dashboard .station-feed button small{line-height:14px}@keyframes legacy-scan-trace{0%{stroke-dashoffset:2360}to{stroke-dashoffset:-260}}@keyframes legacy-slide-down{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes legacy-fade-in{0%{opacity:0}to{opacity:1}}@keyframes legacy-slide-left{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes legacy-slide-right{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes legacy-panel-in{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes legacy-detail-focus{0%,to{opacity:1}40%{opacity:.6}}@media(prefers-reduced-motion:reduce){.legacy-topbar,.legacy-scan__path,.legacy-time,.legacy-top-stat,.legacy-side-deco,.legacy-dashboard .side-panel__card{animation:none}}.sandbox-dashboard{--city-rail: clamp(400px, 24.07vw, 462px);--city-scene-gutter: calc(var(--city-rail) + 28px);--city-blue: #5af1ff;--city-line: rgba(106, 205, 255, .54);--city-muted: #8fbdcc;background:radial-gradient(circle at 46% 40%,rgba(19,75,104,.16),transparent 42%),linear-gradient(180deg,#061019,#030b11);color:#dcebf0}.sandbox-dashboard:before{opacity:.2;background-size:48px 48px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.city-shell-header{position:absolute;inset:0 0 auto;z-index:100;height:112px;overflow:hidden;background:transparent;animation:cityHeaderIn .65s cubic-bezier(.16,1,.3,1) both}.city-shell-header__cut{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;width:100%;height:112px;object-fit:fill;pointer-events:none}.city-shell-header:before,.city-shell-header:after{display:none}.city-shell-header__halo{display:none}.city-shell-header__brand{position:absolute;left:105px;top:0;width:417px;height:86px;z-index:3}.city-shell-header__title{position:absolute;left:25px;top:22px;margin:0;color:#edfaff;font-family:PangMenZhengDao Title,OPPO Sans,sans-serif;font-size:32px;font-weight:400;font-style:normal;line-height:40px;letter-spacing:3.5px;white-space:nowrap;transform:skew(-12deg);transform-origin:left bottom;text-shadow:0 2px 0 #13768e,0 0 10px rgba(0,190,255,.6)}.city-shell-header__brand small{position:absolute;left:25px;top:63px;color:#c2e5f29e;font-family:D-DIN,sans-serif;font-size:11px;letter-spacing:2.8px;white-space:nowrap;text-shadow:0 0 8px rgba(0,174,255,.38)}.figma-corner-radar{position:absolute;width:181.007px;height:181.007px;pointer-events:none;isolation:isolate}.city-shell-header__corner{left:-77px;top:-77px;z-index:2}.figma-corner-radar__layer,.figma-corner-radar__layer img{position:absolute;display:block}.figma-corner-radar__outer-glow{left:11.5px;top:11.5px;width:158px;height:158px}.figma-corner-radar__outer-glow img{top:-13.92%;right:-21.52%;bottom:-21.52%;left:-13.92%;width:135.44%;height:135.44%}.figma-corner-radar__outer-ring{left:11.5px;top:11.5px;width:158px;height:158px}.figma-corner-radar__outer-ring img{top:0;right:0;bottom:0;left:0;width:100%;height:100%}.figma-corner-radar__inner-shadow{left:33.78px;top:33.78px;width:113.449px;height:113.449px;animation:figmaRadarShadow 18s linear infinite}.figma-corner-radar__inner-shadow img{left:50%;top:50%;width:80.823px;height:80.823px;opacity:.2;transform:translate(-50%,-50%)}.figma-corner-radar__inner-ring{left:43.69px;top:43.69px;width:93.63px;height:93.63px;animation:figmaRadarInner 12s linear infinite}.figma-corner-radar__inner-ring img{top:0;right:0;bottom:0;left:0;width:100%;height:100%}.figma-corner-radar__core-glow{left:86.6px;top:86.6px;width:7.802px;height:7.802px;animation:figmaRadarCore 2.8s ease-in-out infinite}.figma-corner-radar__core-glow img{top:-384.49%;right:-384.49%;bottom:-384.49%;left:-384.49%;width:868.98%;height:868.98%}.figma-corner-radar__sweep{top:0;right:0;bottom:0;left:0;width:181.007px;height:181.007px;mix-blend-mode:overlay;animation:figmaRadarSweep 9s linear infinite}.figma-corner-radar__sweep img{left:50%;top:50%;width:137.097px;height:137.097px;transform:translate(-50%,-50%)}.figma-corner-radar__sweep--highlight{opacity:.5}@keyframes figmaRadarShadow{0%{transform:rotate(-52deg)}to{transform:rotate(308deg)}}@keyframes figmaRadarInner{0%{transform:rotate(-90deg)}to{transform:rotate(-450deg)}}@keyframes figmaRadarSweep{0%{transform:rotate(-66deg)}to{transform:rotate(294deg)}}@keyframes figmaRadarCore{0%,to{opacity:.78;transform:scale(.92) rotate(-90deg)}50%{opacity:1;transform:scale(1.08) rotate(-90deg)}}.city-shell-header__clock{position:absolute;right:26px;top:20px;display:flex;align-items:center;gap:18px;color:#e3f3fa;font-family:D-DIN,sans-serif;z-index:3}.city-shell-header__clock strong{font-size:26px;font-weight:400;letter-spacing:1px}.city-shell-header__clock span{font-size:13px;letter-spacing:1px}.city-shell-header__weather{height:30px;display:flex;align-items:center;gap:6px;padding:0 12px;border-left:1px solid rgba(116,203,244,.35);border-right:1px solid rgba(116,203,244,.16);background:linear-gradient(90deg,#1e669647,#10375b0f);color:#8fddff}.city-shell-header__weather b{color:#d7edf7;font-size:13px;font-weight:500}.city-shell-header__weather em{color:#fff;font-family:D-DIN,sans-serif;font-size:17px;font-style:normal}.city-shell-header__date{color:#b7cfda}.city-shell-header__weekday{color:#dbeaf0}.sandbox-dashboard .scene-map{top:0;right:0;bottom:0;left:0}.sandbox-dashboard .scene-map .campus-map{top:74px;right:0;bottom:0;left:0;animation:cityMapIn .8s ease-out .15s both}.sandbox-dashboard .scene-map .campus-map:after{background:linear-gradient(180deg,rgba(3,11,17,.04),transparent 15%,transparent 86%,rgba(3,11,17,.18))}.sandbox-dashboard .three-map{isolation:isolate;background:#06141b;cursor:grab}.sandbox-dashboard .three-map:active{cursor:grabbing}.sandbox-dashboard .three-map:before{z-index:4;background:none}.sandbox-dashboard .three-map:after{z-index:4}.three-map__poster,.three-map__stage,.three-map__wash,.three-map__markers{position:absolute;top:0;right:0;bottom:0;left:0}.three-map__poster{z-index:0;background-position:center;background-size:cover;filter:brightness(.95) saturate(1.05);opacity:1;transition:opacity .5s ease}.three-map--ready .three-map__poster{opacity:0}.three-map__stage{z-index:1}.three-map__canvas{width:100%;height:100%;display:block;touch-action:none}.three-map__wash{z-index:2;pointer-events:none;background:none;box-shadow:none}.three-map__loader{position:absolute;z-index:7;left:26px;top:26px;width:214px;display:grid;grid-template-columns:1fr 34px;gap:7px 10px;padding:11px 12px;background:#05151dd1;box-shadow:0 10px 30px #00000042;color:#a8cbd4;font-size:12px;letter-spacing:.3px;pointer-events:none}.three-map__loader>span{grid-column:1 / -1}.three-map__loader>i{height:2px;align-self:center;overflow:hidden;background:#59b7cd2e}.three-map__loader>i b{height:100%;display:block;background:linear-gradient(90deg,#1685b8,#63e4ff);box-shadow:0 0 8px #4fd9ff8c;transition:width .18s ease}.three-map__loader small{color:#6edcf4;font-family:D-DIN,sans-serif;font-size:12px;text-align:right}.three-map__loader--error{color:#f0c487}.three-map__markers{right:var(--city-scene-gutter);z-index:6;opacity:0;pointer-events:none;transition:opacity .35s ease}.three-map__markers.is-visible{opacity:1}.three-station-marker{--marker-color: var(--normal);position:absolute;width:46px;height:52px;padding:0;transform:translate(-50%,-90%);border:0;background:transparent;color:var(--marker-color);cursor:pointer;pointer-events:auto;filter:drop-shadow(0 7px 10px rgba(0,0,0,.58))}.three-station-marker.status-delayed{--marker-color: var(--delayed)}.three-station-marker.status-preAlarming{--marker-color: var(--warn)}.three-station-marker.status-alarming{--marker-color: var(--alarm)}.three-station-marker.status-offline{--marker-color: var(--offline)}.three-station-marker__pulse{position:absolute;left:50%;top:42%;width:48px;height:48px;transform:translate(-50%,-50%);border:1px solid currentColor;border-radius:50%;opacity:.24;box-shadow:0 0 12px color-mix(in srgb,currentColor 34%,transparent);animation:threeMarkerPulse 2.8s ease-out infinite}.three-station-marker__pulse:before,.three-station-marker__pulse:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.three-station-marker__pulse:before{top:5px;right:5px;bottom:5px;left:5px;border:1px dashed color-mix(in srgb,currentColor 56%,transparent);animation:stationOrbit 7s linear infinite}.three-station-marker__pulse:after{top:12px;right:12px;bottom:12px;left:12px;border:1px solid color-mix(in srgb,#e8fbff 32%,transparent)}.three-station-marker__pin{position:absolute;left:50%;top:42%;width:36px;height:36px;display:grid;place-items:center;transform:translate(-50%,-50%);border:2px solid rgba(231,249,253,.94);border-radius:50%;background:radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--marker-color) 64%,#143a45) 0 31%,transparent 33%),radial-gradient(circle,color-mix(in srgb,var(--marker-color) 42%,#09202a) 0,color-mix(in srgb,var(--marker-color) 42%,#09202a) 55%,#071820 76%);box-shadow:0 0 0 2px color-mix(in srgb,currentColor 72%,transparent),0 0 17px color-mix(in srgb,currentColor 74%,transparent),inset 0 0 11px color-mix(in srgb,currentColor 38%,transparent);transition:transform .2s ease,box-shadow .2s ease}.three-station-marker__pin:before{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border:1px solid color-mix(in srgb,currentColor 68%,transparent);border-radius:50%}.three-station-marker__pin:after{content:"";position:absolute;left:50%;bottom:-8px;width:0;height:0;transform:translate(-50%);border-right:5px solid transparent;border-left:5px solid transparent;border-top:9px solid color-mix(in srgb,currentColor 78%,#dffaff);filter:drop-shadow(0 2px 4px color-mix(in srgb,currentColor 65%,transparent))}.three-station-marker__pin svg{position:relative;z-index:1;color:#d7fff7;filter:drop-shadow(0 0 5px currentColor)}.three-station-marker:hover .three-station-marker__pin,.three-station-marker--selected .three-station-marker__pin{transform:translate(-50%,-50%) scale(1.12);box-shadow:0 0 0 2px color-mix(in srgb,currentColor 86%,transparent),0 0 25px color-mix(in srgb,currentColor 88%,transparent),inset 0 0 13px color-mix(in srgb,currentColor 52%,transparent)}.three-station-marker--selected .three-station-marker__pulse{opacity:.5}.three-station-marker__label{position:absolute;left:50px;top:3px;width:112px;min-height:34px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:1px;padding:5px 8px;border:1px solid color-mix(in srgb,var(--marker-color) 26%,transparent);border-radius:3px;background:linear-gradient(90deg,#041219f5,#05171ed6);box-shadow:0 6px 18px #0000004d,inset 2px 0 color-mix(in srgb,var(--marker-color) 72%,transparent);color:#dcecf0;text-align:left;white-space:nowrap}.three-station-marker__label:before{content:"";position:absolute;right:100%;top:16px;width:15px;border-top:1px solid color-mix(in srgb,var(--marker-color) 48%,transparent)}.three-station-marker--label-left .three-station-marker__label{right:50px;left:auto}.three-station-marker--label-left .three-station-marker__label:before{right:auto;left:100%}.three-station-marker__label strong{font-family:D-DIN,sans-serif;font-size:12px;font-weight:600;letter-spacing:.6px}.three-station-marker__label small{color:#7d9ca5;font-size:12px}.three-station-marker--selected .three-station-marker__label{background:#071c24f0;color:#fff}@keyframes stationOrbit{to{transform:rotate(360deg)}}.three-map__popover,.three-map__popover.station-popover--left{z-index:9;max-width:calc(100% - var(--city-scene-gutter) - 24px);transform:translateY(-50%)}.three-map__popover--clamped:after{display:none}.three-map__north{position:absolute;z-index:6;left:24px;top:24px;width:38px;height:38px;display:grid;place-items:center;border:1px solid rgba(97,201,224,.24);border-radius:50%;background:#05141bb3;color:#75dbef;pointer-events:none}.three-map__north i{position:absolute;top:7px;width:0;height:0;border-right:4px solid transparent;border-bottom:8px solid #78e6fb;border-left:4px solid transparent}.three-map__north strong{padding-top:13px;font-family:D-DIN,sans-serif;font-size:11px;font-weight:500}.three-map__hint,.three-map__model-meta{position:absolute;z-index:6;bottom:84px;display:flex;gap:13px;color:#94bec79e;font-size:12px;pointer-events:none}.three-map__hint{left:26px}.three-map__hint span+span:before{content:"·";margin-right:13px;color:#5fdaf173}.three-map__model-meta{right:calc(var(--city-scene-gutter) + 26px);font-family:D-DIN,sans-serif;letter-spacing:.45px}@keyframes threeMarkerPulse{0%{opacity:.6;transform:translate(-50%,-50%) scale(.72)}74%,to{opacity:0;transform:translate(-50%,-50%) scale(1.45)}}.sandbox-dashboard .scene-mask--left{display:none}.sandbox-dashboard .scene-mask--right{z-index:3;width:calc(var(--city-rail) + 210px);background:linear-gradient(90deg,#030b1100,#030b1138 20%,#030b11a3 38%,#030b11d1 65%,#030b11eb)}.sandbox-dashboard .map-legend,.sandbox-dashboard .map-attribution{display:none}.sandbox-dashboard .city-data-rail{position:absolute;z-index:10;top:77px;right:24px;bottom:20px;left:auto;width:var(--city-rail);display:grid;grid-template-rows:1.07fr 1.04fr 1fr;gap:14px;pointer-events:auto}.sandbox-dashboard .city-data-rail .side-panel__card,.sandbox-dashboard .city-data-rail .side-panel__card.detail-panel{position:relative;width:100%;height:auto;min-height:0;margin:0;overflow:hidden;border:0;border-radius:0;background:transparent;box-shadow:none;animation:cityPanelIn .6s cubic-bezier(.16,1,.3,1) both}.sandbox-dashboard .city-data-rail .side-panel__card:nth-child(2){animation-delay:.1s}.sandbox-dashboard .city-data-rail .side-panel__card:nth-child(3){animation-delay:.2s}.sandbox-dashboard .city-data-rail .side-panel__card:before{display:none}.sandbox-dashboard .city-data-rail .panel__header{position:relative;height:52px;min-height:52px;display:flex;align-items:center;padding:0;overflow:hidden;border:0;background:transparent}.sandbox-dashboard .city-data-rail .figma-panel-title{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;width:100%;height:100%;pointer-events:none}.sandbox-dashboard .city-data-rail .figma-panel-title__background{position:absolute;left:9.56%;right:0;top:37.55%;bottom:.91%;width:90.47%;height:61.54%;object-fit:fill}.sandbox-dashboard .city-data-rail .figma-panel-title__line{position:absolute;left:9.56%;right:0;bottom:0;width:90.47%;height:1px;object-fit:fill}.sandbox-dashboard .city-data-rail .figma-panel-title__badge{position:absolute;left:0;top:0;width:16.4%;height:140.44%;object-fit:fill}.sandbox-dashboard .city-data-rail .panel__header:before,.sandbox-dashboard .city-data-rail .panel__header:after{content:none}.sandbox-dashboard .city-data-rail .panel__title-copy{position:absolute;z-index:2;left:18.78%;top:24px;display:flex;align-items:baseline;gap:12px;min-width:0}.sandbox-dashboard .city-data-rail .panel__header h2{margin:0;color:#fff;font-size:14px;font-weight:600;line-height:22px;letter-spacing:.5px;text-shadow:0 0 8px rgba(61,181,246,.42);white-space:nowrap;flex:none}.sandbox-dashboard .city-data-rail .panel__title-en{color:#8fbdcc;font-family:D-DIN,sans-serif;font-size:12px;line-height:20px;letter-spacing:.7px;white-space:nowrap}.sandbox-dashboard .city-data-rail .panel__action{position:absolute;z-index:2;right:10px;top:20px}.sandbox-dashboard .city-data-rail .panel__body{height:calc(100% - 52px);min-height:0;padding:10px 16px 0 20px;overflow:hidden;background:transparent}.sandbox-dashboard .selected-station--compact{height:100%;display:block;padding:0 14px 4px 10px}.sandbox-dashboard .station-wind-distribution{position:relative;width:100%;height:100%;padding:8px 6px 7px;overflow:hidden;background:linear-gradient(180deg,#0f3d4e2b,#04121c05)}.sandbox-dashboard .station-wind-distribution:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-top:1px solid rgba(88,211,248,.22);border-bottom:1px solid rgba(88,211,248,.12);pointer-events:none}.sandbox-dashboard .station-wind-distribution__heading{position:absolute;z-index:2;top:8px;right:9px;left:10px;display:flex;align-items:center;justify-content:space-between}.sandbox-dashboard .station-wind-distribution__heading span{color:#8cc9d8;font-size:12px;letter-spacing:.4px}.sandbox-dashboard .station-wind-distribution__heading small{color:#4f737e;font-family:D-DIN,sans-serif;font-size:12px}.sandbox-dashboard .station-wind-distribution__chart{width:100%;height:calc(100% - 50px);min-height:84px;margin-top:50px}.sandbox-dashboard .station-wind-distribution__summary{position:absolute;z-index:2;top:28px;right:6px;left:6px;display:grid;grid-template-columns:repeat(3,1fr)}.sandbox-dashboard .station-wind-distribution__summary span{min-width:0;display:flex;flex-direction:row;align-items:baseline;justify-content:center;gap:4px;border-left:1px solid rgba(100,184,205,.12)}.sandbox-dashboard .station-wind-distribution__summary span:first-child{border-left:0}.sandbox-dashboard .station-wind-distribution__summary small{color:#587781;font-size:12px}.sandbox-dashboard .station-wind-distribution__summary strong{color:#bce7ed;font-family:D-DIN,sans-serif;font-size:14px;font-weight:500}.sandbox-dashboard .station-wind-distribution__summary i{margin-left:2px;color:#587781;font-size:10px;font-style:normal}.sandbox-dashboard .realtime-panel .panel__body{padding-top:3px}.sandbox-dashboard .primary-wind-metrics--compact{flex:0 0 66px;border:0;border-bottom:1px solid rgba(104,188,214,.12);background:transparent}.sandbox-dashboard .primary-wind-metrics--compact .primary-wind-metrics__hero strong{font-size:27px!important}.sandbox-dashboard .primary-wind-metrics--compact .primary-wind-metrics__item{flex-direction:row;align-items:center;gap:9px;padding-left:11px;color:#55d8ec}.sandbox-dashboard .primary-wind-metrics__item>span{display:flex;flex-direction:column}.sandbox-dashboard .primary-wind-metrics__item small{color:var(--muted);font-size:12px}.sandbox-dashboard .primary-wind-metrics__item strong{margin-top:4px;color:#edf8fa}.sandbox-dashboard .environment-metrics--compact{flex:0 0 46px;margin-top:5px;background:#0819206b}.sandbox-dashboard .environment-metrics--compact>div{gap:2px}.rail-station-list{flex:1;min-height:0;display:grid;grid-template-rows:repeat(4,1fr);padding:4px 0 0}.rail-station-list button{min-height:0;display:grid;grid-template-columns:112px 1fr 58px;align-items:center;gap:10px;padding:0 8px;border:0;background:transparent;color:#dcebf0;cursor:pointer}.rail-station-list button:hover,.rail-station-list button.active{background:linear-gradient(90deg,rgba(42,135,186,.12),transparent)}.rail-station-list button>span{display:flex;align-items:center;gap:8px;font-size:12px;white-space:nowrap}.rail-station-list button>b{height:3px;background:#5975846b}.rail-station-list button>b i{display:block;height:100%;background:linear-gradient(90deg,#1e8bc3,#70d7ff);box-shadow:0 0 7px #52c3f961}.rail-station-list button>strong{font-family:D-DIN,sans-serif;font-size:16px;font-weight:400;text-align:right}.rail-station-list button>strong small{padding-left:3px;color:#6f8a95;font-size:12px}.sandbox-dashboard .side-chart-card .panel__body{padding:0 10px 0 16px}.sandbox-dashboard .side-chart-card .weather-chart{min-height:0}.sandbox-dashboard .side-chart-card .chart-summary--compact{height:46px;margin:0}.city-map-footer{position:absolute;z-index:12;left:27px;right:calc(var(--city-rail) + 36px);bottom:19px;height:140px;pointer-events:none}.city-map-footer:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,#40a8e5 0 32px,transparent 32px 70px,rgba(90,143,172,.45) 70px calc(100% - 20px),#40a8e5 calc(100% - 20px))}.city-map-footer__coords{position:absolute;left:0;bottom:20px;display:flex;align-items:center;gap:0;pointer-events:auto}.city-map-footer__coords strong{margin-right:12px;display:flex;align-items:center;gap:7px;color:#fff;font-size:14px;letter-spacing:1px}.city-map-footer__coords strong svg{color:#62d9f4}.city-map-footer__coords span{height:26px;display:flex;align-items:center;padding:0 12px;border:1px solid rgba(87,169,218,.38);background:#133143ad;color:#9ab8c5;font-family:D-DIN,sans-serif;font-size:12px}.city-map-footer__metrics{position:absolute;left:240px;right:170px;bottom:20px;display:flex;justify-content:center;gap:28px}.city-map-footer__metrics>div{width:214px;min-width:0;height:34px;display:grid;grid-template-columns:28px 34px 1fr;gap:4px}.city-map-footer__metric-icon{width:28px;height:34px;display:grid;place-items:center;color:#61d9f4;background:#1441587a;box-shadow:inset 0 0 10px #3ab0de1a}.city-map-footer__metric-icon svg{display:block}.city-map-footer__metrics b{width:34px;height:34px;display:grid;place-items:center;border:1px solid #cfdae5;background:#16324099;color:#fff;font-family:D-DIN,sans-serif;font-size:20px;font-weight:400}.city-map-footer__metrics span{position:relative;height:34px;padding:5px 7px;background:linear-gradient(90deg,rgba(91,120,140,.82),transparent);color:#fff;font-size:13px}.city-map-footer__metrics span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.city-map-footer__metrics small{margin-left:5px;color:#99bfcc;font-size:12px;font-weight:400}.city-map-footer__metrics>div>span>i{position:absolute;left:0;bottom:0;height:5px;max-width:100%;background:linear-gradient(90deg,#178bc7,#dcecf1);box-shadow:0 0 6px #44b8f057}.city-map-footer__refresh{position:absolute;right:0;bottom:20px;width:122px;height:34px;padding:0 12px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid rgba(84,199,241,.46);border-radius:0;background:linear-gradient(90deg,#0c374eb8,#071b28db);color:#bdefff;cursor:pointer;pointer-events:auto;box-shadow:inset 0 0 12px #3ebef014,0 0 10px #168bc014}.city-map-footer__refresh:hover{border-color:#69e1ffd1;color:#effcff;background:linear-gradient(90deg,#0f4864d1,#082333e6)}.city-map-footer__refresh:active{transform:translateY(1px)}.city-map-footer__refresh>svg{flex:none}.city-map-footer__refresh>span{font-size:12px;letter-spacing:.5px;white-space:nowrap}.city-map-footer__refresh>i{width:5px;height:5px;flex:none;border-radius:50%;color:var(--normal);background:currentColor;box-shadow:0 0 7px currentColor}.city-map-footer__refresh--connecting>i{color:var(--warn)}.city-map-footer__refresh--fallback>i{color:var(--offline)}.city-map-footer__refresh>small{display:none}@keyframes cityHeaderIn{0%{opacity:0;transform:translateY(-35px)}to{opacity:1;transform:translateY(0)}}@keyframes cityPanelIn{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:translate(0)}}@keyframes cityMapIn{0%{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}@keyframes citySpin{to{transform:rotate(360deg)}}@media(max-width:1680px){.city-shell-header__brand{left:86px}.city-shell-header__clock{right:18px;gap:12px}.city-map-footer__metrics{gap:12px}.city-map-footer__metrics>div{width:190px}}@media(max-width:1500px){.city-shell-header__brand{left:66px}.city-shell-header__title{left:23px;top:20px;font-size:28px;letter-spacing:3px}.city-shell-header__brand small{left:23px;top:61px;max-width:360px;overflow:hidden;font-size:10px;letter-spacing:2px}.city-shell-header__clock{top:15px;right:12px;gap:8px}.city-shell-header__clock strong{font-size:22px}.city-shell-header__clock span{font-size:12px}.city-shell-header__weather{padding:0 8px}.city-map-footer__coords{display:none}.sandbox-dashboard .city-data-rail .panel__title-copy{gap:7px}.sandbox-dashboard .city-data-rail .panel__title-en{font-size:10px;letter-spacing:.2px}.city-map-footer__metrics{left:0;right:128px;gap:7px}.city-map-footer__metrics>div{width:auto;flex:1;grid-template-columns:24px 30px minmax(0,1fr);gap:3px}.city-map-footer__metric-icon{width:24px}.city-map-footer__metrics b{width:30px;font-size:18px}.city-map-footer__metrics span{padding-inline:4px;font-size:12px}.city-map-footer__metrics small{display:none}.city-map-footer__refresh{width:112px;padding-inline:9px}.sandbox-dashboard .station-wind-distribution__heading small{display:block}}@media(prefers-reduced-motion:reduce){.city-shell-header,.figma-corner-radar__inner-shadow,.figma-corner-radar__inner-ring,.figma-corner-radar__core-glow,.figma-corner-radar__sweep,.sandbox-dashboard .scene-map .campus-map,.sandbox-dashboard .city-data-rail .side-panel__card,.city-map-footer__refresh{transition:none}}
