@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/archivo-vietnamese-400-normal-BF4g3tCF.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-vietnamese-400-normal-FGOLYM1a.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/archivo-latin-ext-400-normal-B5tPZzqW.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-ext-400-normal-DrmqtLj6.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/archivo-latin-400-normal-C81ewxNO.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-400-normal-Bl602Mgc.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/archivo-vietnamese-500-normal-k0drYPZA.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-vietnamese-500-normal-7W3lD2kQ.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/archivo-latin-ext-500-normal-RFhg4CpD.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-ext-500-normal-D7mXw3Kz.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/archivo-latin-500-normal-CGugC8dq.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-500-normal-pkzA7jw9.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/archivo-vietnamese-600-normal-anCjMumA.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-vietnamese-600-normal-C8xBVdfP.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/archivo-latin-ext-600-normal-Dm61iqcg.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-ext-600-normal-D7uErJuz.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/archivo-latin-600-normal-3BBy0ZsW.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-600-normal-DwYieO8P.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/projects/future-airport/assets/archivo-vietnamese-700-normal-nuAQAQa7.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-vietnamese-700-normal-Bz2vkKqq.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/projects/future-airport/assets/archivo-latin-ext-700-normal-DD_nkw6b.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-ext-700-normal-CgyfnKjw.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/projects/future-airport/assets/archivo-latin-700-normal-D9cHMWGj.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-700-normal-lT5TFe7H.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:800;src:url(/projects/future-airport/assets/archivo-vietnamese-800-normal-DHDgv4cm.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-vietnamese-800-normal-BKe5Z8rz.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:800;src:url(/projects/future-airport/assets/archivo-latin-ext-800-normal-BC6piDwP.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-ext-800-normal-B9NTbsU1.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:800;src:url(/projects/future-airport/assets/archivo-latin-800-normal-cB6v3kRN.woff2) format("woff2"),url(/projects/future-airport/assets/archivo-latin-800-normal-DZa_k145.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/projects/future-airport/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/projects/future-airport/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/projects/future-airport/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/projects/future-airport/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #ecebe5;--paper: #ffffff;--paper-2: #f7f6f2;--ink: #15181d;--ink-2: #4b525c;--ink-3: #8c929a;--line: #e0ded6;--line-2: #efeee9;--sign: #ffc629;--sign-soft: #fff4d1;--blue: #1b57e0;--blue-soft: #e8eefc;--ok: #138a5b;--ok-soft: #e2f2ea;--warn: #d17a06;--warn-soft: #fcefd9;--crit: #d63a2c;--crit-soft: #fbe5e2;--asphalt: #2f343c;--f-sans: "Archivo", "PingFang SC", "HarmonyOS Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--f-mono: "IBM Plex Mono", "PingFang SC", ui-monospace, monospace;--r: 10px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:var(--f-sans);color:var(--ink);background-color:var(--bg);background-image:linear-gradient(rgba(21,24,29,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(21,24,29,.035) 1px,transparent 1px);background-size:32px 32px;-webkit-font-smoothing:antialiased;font-size:13px}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}.muted{color:var(--ink-3)}.app{height:100vh;min-width:1440px;min-height:820px;display:grid;grid-template-rows:68px 1fr;gap:12px;padding:12px;overflow:hidden}.main{display:grid;grid-template-columns:372px minmax(0,1fr) 396px;gap:12px;min-height:0}.col{display:grid;gap:12px;min-height:0}.col-left{grid-template-rows:minmax(0,1.35fr) minmax(0,1fr)}.col-center{grid-template-rows:minmax(0,1fr) 208px}.col-right{grid-template-rows:minmax(0,1fr)}.topbar,.panel{animation:rise .7s cubic-bezier(.2,.8,.2,1) both}.col-left .panel:nth-child(1){animation-delay:.08s}.col-left .panel:nth-child(2){animation-delay:.16s}.col-center .panel:nth-child(1){animation-delay:.12s}.col-center .panel:nth-child(2){animation-delay:.22s}.col-right .panel{animation-delay:.2s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;min-height:0;overflow:hidden;box-shadow:0 1px #15181d08}.panel-head{display:flex;align-items:center;gap:10px;padding:11px 14px 10px;border-bottom:1px solid var(--line-2);flex-shrink:0}.panel-index{font-family:var(--f-mono);font-weight:600;font-size:11px;background:var(--ink);color:var(--sign);padding:3px 6px 2px;border-radius:3px;letter-spacing:.04em}.panel-title{margin:0;font-size:14px;font-weight:700;display:flex;align-items:baseline;gap:8px;white-space:nowrap}.panel-en{font-family:var(--f-mono);font-size:10px;font-weight:500;color:var(--ink-3);letter-spacing:.12em}.panel-extra{margin-left:auto}.panel-body{flex:1;min-height:0;display:flex;flex-direction:column}.tabs,.layer-toggles,.speed{display:inline-flex;background:var(--paper-2);border:1px solid var(--line);border-radius:7px;padding:2px;gap:2px}.tabs button,.layer-toggles button,.speed button{padding:4px 10px;border-radius:5px;font-size:12px;color:var(--ink-2);white-space:nowrap;transition:background .15s,color .15s}.tabs button b{font-family:var(--f-mono);font-weight:600;margin-left:2px}.tabs button.on,.speed button.on{background:var(--ink);color:#fff}.tabs.small button{padding:3px 8px;font-size:11.5px}.layer-toggles button{display:inline-flex;align-items:center;gap:6px}.layer-toggles button i{width:8px;height:8px;border-radius:2px;border:1.5px solid var(--ink-3)}.layer-toggles button.on{background:var(--paper);color:var(--ink);box-shadow:0 0 0 1px var(--line)}.layer-toggles button.on i{background:var(--sign);border-color:var(--ink)}.pill{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;background:var(--paper-2);color:var(--ink-2)}.pill.blue{background:var(--blue-soft);color:var(--blue)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.crit{background:var(--crit);color:#fff}.pill.mute{color:var(--ink-3)}.btn{padding:6px 12px;border-radius:6px;font-size:12.5px;font-weight:600;border:1px solid var(--line);background:var(--paper);transition:transform .1s,background .15s}.btn:hover{background:var(--paper-2)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.primary:hover{background:#2a2f37}.btn.ghost{border-color:transparent;color:var(--blue)}.topbar{display:flex;align-items:center;gap:22px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:0 14px 0 10px}.brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.brand-code{background:var(--sign);color:var(--ink);font-weight:800;font-size:22px;letter-spacing:.02em;padding:6px 10px 5px;border-radius:5px;line-height:1;box-shadow:inset 0 -3px #0000001f}.brand-name{font-weight:700;font-size:15px}.brand-sub{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.12em;color:var(--ink-3);margin-top:2px}.kpis{display:flex;align-items:stretch;flex:1;min-width:0;border-left:1px solid var(--line-2)}.kpi{padding:0 18px;border-right:1px solid var(--line-2);white-space:nowrap}.kpi-label{font-size:11px;color:var(--ink-3)}.kpi-value{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.15}.kpi-unit{font-size:11px;font-weight:500;color:var(--ink-3);margin-left:4px;letter-spacing:0}.kpi.warn .kpi-value{color:var(--warn)}.kpi.ai .kpi-value{background:linear-gradient(transparent 62%,var(--sign) 62%,var(--sign) 92%,transparent 92%)}.topbar-right{display:flex;align-items:center;gap:16px;flex-shrink:0}.runway-chips{display:flex;gap:6px}.rw-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-weight:600;font-size:12px;padding:5px 8px;border-radius:6px;border:1px solid var(--line)}.rw-chip b{font-family:var(--f-sans);font-weight:600;font-size:11px;color:var(--ok)}.rw-chip i{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.rw-chip.closed{background:var(--crit);border-color:var(--crit);color:#fff}.rw-chip.closed b{color:#fff}.rw-chip.closed i{background:#fff;box-shadow:none;animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:.2}}.wx-main{font-weight:600;font-size:13px;white-space:nowrap}.wx-sub,.clock-sub{font-size:10.5px;color:var(--ink-3);white-space:nowrap}.clock-main{font-family:var(--f-mono);font-size:22px;font-weight:600;line-height:1.1;letter-spacing:-.02em}.speed button{font-family:var(--f-mono);min-width:30px;padding:4px 6px}.duty{display:flex;align-items:center;gap:8px;padding-left:14px;border-left:1px solid var(--line-2)}.duty-avatar{width:32px;height:32px;border-radius:50%;background:var(--ink);color:var(--sign);display:grid;place-items:center;font-weight:700}.duty-name{font-weight:700;font-size:13px}.duty-role{font-size:11px;color:var(--ink-3)}.histo{padding:10px 14px 8px;border-bottom:1px solid var(--line-2)}.histo-legend{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-3);margin-bottom:6px}.lg{display:inline-block;width:8px;height:8px;border-radius:2px;margin:0 4px 0 10px;vertical-align:-1px}.lg.arr{background:var(--blue)}.lg.dep{background:var(--ink)}.histo-bars{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;height:64px}.hb{display:flex;flex-direction:column;min-height:0}.hb-stack{flex:1;display:flex;flex-direction:column-reverse;background:repeating-linear-gradient(0deg,var(--line-2) 0 1px,transparent 1px 12px);border-radius:3px;overflow:hidden}.hb-arr,.hb-dep{transition:height .5s}.hb-arr{background:var(--blue)}.hb-dep{background:var(--ink);order:-1}.hb-label{font-family:var(--f-mono);font-size:10px;color:var(--ink-3);text-align:center;margin-top:3px}.fb-head,.fb-row{display:grid;grid-template-columns:64px 1fr 42px 42px 34px 66px;gap:6px;align-items:center;padding:0 14px}.fb-head{font-size:10.5px;color:var(--ink-3);padding-top:8px;padding-bottom:6px}.fb-list{flex:1;overflow-y:auto;min-height:0}.fb-row{width:100%;text-align:left;height:31px;border-top:1px solid var(--line-2);transition:background .15s}.fb-row:hover{background:var(--paper-2)}.fb-row.sel{background:var(--sign-soft);box-shadow:inset 3px 0 0 var(--sign)}.fb-no{font-family:var(--f-mono);font-weight:600;font-size:12.5px}.fb-city{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fb-t,.fb-stand{font-family:var(--f-mono);font-size:12px;color:var(--ink-2)}.fb-t.changed{color:var(--warn);font-weight:600}.fb-stand.fault{color:var(--crit);text-decoration:line-through}.gauges{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:12px 14px}.gauge-top{display:flex;justify-content:space-between;align-items:baseline}.gauge-label{font-size:12px;color:var(--ink-2)}.gauge-val{font-weight:700;font-size:18px;font-variant-numeric:tabular-nums}.gauge-val small{font-size:11px;color:var(--ink-3);font-weight:500}.gauge-track{display:grid;grid-template-columns:repeat(20,1fr);gap:2px;margin:5px 0 4px}.gauge-track i{height:9px;border-radius:1.5px;background:var(--line-2);transition:background .3s}.gauge-track i.on{background:var(--ink)}.gauge.warn .gauge-track i.on{background:var(--warn)}.gauge-note{font-size:10.5px;color:var(--ink-3)}.gauge.warn .gauge-note{color:var(--warn);font-weight:600}.queues{padding:10px 14px 12px;border-top:1px solid var(--line-2);margin-top:auto}.queues-head{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-2);margin-bottom:6px}.th-note{font-size:10.5px;color:var(--ink-3)}.q-row{display:grid;grid-template-columns:32px 1fr 34px 46px;align-items:center;gap:8px;height:24px}.q-zone{font-weight:600;font-size:12px}.q-track{position:relative;height:8px;background:var(--line-2);border-radius:4px}.q-fill{height:100%;border-radius:4px;background:var(--ok);transition:width .5s,background .3s}.q-row.warn .q-fill{background:var(--warn)}.q-row.crit .q-fill{background:var(--crit)}.q-th{position:absolute;top:-3px;bottom:-3px;width:0;border-left:1.5px dashed var(--ink)}.q-val{font-family:var(--f-mono);font-weight:600;font-size:12px;text-align:right}.q-row.crit .q-val{color:var(--crit)}.q-lanes{font-size:10.5px;color:var(--ink-3);text-align:right}.map-wrap{position:relative;flex:1;min-height:0}.map{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.map-bg{fill:#f5f5f0}.dot{fill:#c9c8bf}.apron{fill:#e9e9e3;stroke:#dad9d1}.taxiway{fill:none;stroke:#d6d7cf;stroke-width:10;stroke-linecap:round}.lane{fill:none;stroke:#dedfd7;stroke-width:7}.taxi-center{fill:none;stroke:#e3ad0e;stroke-width:.8}.rw-surface{fill:var(--asphalt)}.rw-key{fill:#fff;opacity:.9}.rw-center{stroke:#fff;stroke-width:1.2;stroke-dasharray:14 10}.rw-desig{fill:#fff;font-family:var(--f-mono);font-size:9px;font-weight:600;text-anchor:middle;dominant-baseline:middle}.rw-closed{fill:url(#hatch);stroke:var(--crit);stroke-width:2}.rw-closed-text{fill:#fff;paint-order:stroke;stroke:var(--crit);stroke-width:4px;font-size:11px;font-weight:700;text-anchor:middle}.map-label{font-family:var(--f-mono);font-size:9px;fill:var(--ink-3);letter-spacing:.04em}.map-label.strong{fill:var(--ink);font-weight:600}.map-label.center{text-anchor:middle}.hold-ring{fill:none;stroke:var(--ink-3);stroke-dasharray:3 4}.terminal{fill:#fff;stroke:var(--ink);stroke-width:1.3}.hatch{stroke:#ecebe5;stroke-width:2}.terminal-roof{opacity:.8}.terminal-div{stroke:var(--line);stroke-dasharray:2 3}.zone-label{font-size:10px;font-weight:600;fill:var(--ink);text-anchor:middle}.zone-sub{font-size:8.5px;fill:var(--ink-3);text-anchor:middle}.terminal-tag{fill:var(--ink)}.terminal-tag-text{fill:var(--sign);font-size:10px;font-weight:700;text-anchor:middle}.hangar{fill:#efefe9;stroke:#cfcec6;stroke-dasharray:4 3}.tower{fill:var(--sign);stroke:var(--ink)}.tower-text{font-family:var(--f-mono);font-size:7px;font-weight:700;text-anchor:middle;fill:var(--ink)}.stand-lead{stroke:#e3ad0e;stroke-width:.8}.stand-id{font-family:var(--f-mono);font-size:8.5px;font-weight:600;fill:var(--ink-2);text-anchor:middle}.stand-id.remote{fill:var(--ink-3)}.bridge{stroke:#a9aeb5;stroke-width:3.5;stroke-linecap:round}.bridge.fault{stroke:var(--crit);stroke-dasharray:3 2}.fault-dot{fill:var(--crit);animation:pulse 1.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.fault-mark{fill:#fff;font-size:8px;font-weight:800;text-anchor:middle}@keyframes pulse{50%{transform:scale(1.35);opacity:.7}}.compass{fill:#fff;stroke:var(--line)}.compass-n{fill:var(--ink);transform:rotate(-90deg)}.scale{stroke:var(--ink-2);stroke-width:1}.heat-layer circle{mix-blend-mode:multiply;transition:r .6s,opacity .6s}.storm{transition:transform .5s linear;pointer-events:none}.storm-ring{fill:none;stroke:#c2291d;stroke-opacity:.5;stroke-dasharray:4 4;animation:spin 14s linear infinite;transform-box:fill-box;transform-origin:center}.storm-label{font-family:var(--f-mono);font-size:10px;font-weight:700;fill:#8a1c13;text-anchor:middle}.storm-sub{font-size:9px;fill:#8a1c13;text-anchor:middle}@keyframes spin{to{transform:rotate(360deg)}}.veh{transition:transform .5s linear;stroke:#fff;stroke-width:.8}.veh.fuel{fill:var(--warn)}.veh.cater{fill:var(--ok)}.veh.bags{fill:var(--blue)}.veh.patrol{fill:var(--sign);stroke:var(--ink)}.veh.bus{fill:var(--ink)}.ac{cursor:pointer}.ac-body,.ac-tag{transition:transform .5s linear}.ac path{fill:var(--ink);stroke:#fff;stroke-width:.9;stroke-linejoin:round}.ac.arr path{fill:var(--blue)}.ac.warn path{fill:var(--warn)}.ac.crit path{fill:var(--crit)}.ac.sel path{fill:var(--ink)}.ac-halo{fill:var(--sign);stroke:var(--ink);stroke-width:.8;opacity:.9;animation:halo 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes halo{50%{transform:scale(1.18)}}.ac-tag text{font-family:var(--f-mono);font-size:8.5px;font-weight:600;fill:var(--ink);paint-order:stroke;stroke:#f5f5f0;stroke-width:3px}.ac.crit .ac-tag text{fill:var(--crit)}.ac.arr .ac-tag text{fill:var(--blue)}.ac:hover path{stroke:var(--sign);stroke-width:1.6}.map-legend{position:absolute;left:12px;bottom:10px;display:flex;gap:12px;font-size:11px;color:var(--ink-2);background:#ffffffe0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:6px;padding:5px 10px}.map-legend span{display:inline-flex;align-items:center;gap:5px}.lg-ac{width:10px;height:6px;clip-path:polygon(0 20%,70% 20%,100% 50%,70% 80%,0 80%);background:var(--ink)}.lg-ac.arr{background:var(--blue)}.lg-ac.warn{background:var(--warn)}.lg-ac.crit{background:var(--crit)}.lg-veh{width:6px;height:6px;border-radius:1px;background:var(--sign);border:1px solid var(--ink)}.detail{position:absolute;top:12px;right:12px;width:300px;max-height:calc(100% - 24px);overflow-y:auto;background:var(--paper);border:1px solid var(--ink);border-radius:10px;box-shadow:6px 6px #15181d14,0 12px 30px #15181d1f;padding:12px 14px;animation:pop .25s cubic-bezier(.2,.8,.2,1)}@keyframes pop{0%{opacity:0;transform:translateY(-6px) scale(.98)}}.detail-head{display:flex;justify-content:space-between;align-items:flex-start}.detail-no{font-family:var(--f-mono);font-size:18px;font-weight:600}.detail-no .muted{font-size:13px}.detail-sub{font-size:11.5px;color:var(--ink-3);margin-top:2px}.icon-btn{width:24px;height:24px;border-radius:5px;color:var(--ink-3)}.icon-btn:hover{background:var(--paper-2);color:var(--ink)}.detail-route{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;margin:12px 0 10px}.detail-route small,.detail-grid small{display:block;font-size:10.5px;color:var(--ink-3)}.detail-route b{font-size:14px}.detail-route .right{text-align:right}.route-line{position:relative;height:1px;background:var(--ink);text-align:center}.route-line:after{content:"";position:absolute;right:-1px;top:-3px;border:3.5px solid transparent;border-left:6px solid var(--ink)}.route-line span{position:relative;top:-9px;background:var(--sign);font-family:var(--f-mono);font-size:10px;font-weight:600;padding:1px 5px;border-radius:3px}.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px 0;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}.detail-grid b{font-family:var(--f-mono);font-size:13px;font-weight:600}.detail-grid b.warn{color:var(--warn)}.steps{display:grid;grid-template-columns:repeat(7,1fr);margin:12px 0 6px}.step{position:relative;text-align:center;font-size:10px;color:var(--ink-3)}.step i{display:block;width:9px;height:9px;margin:0 auto 4px;border-radius:50%;border:1.5px solid var(--line);background:#fff;position:relative;z-index:1}.step:before{content:"";position:absolute;top:4px;left:-50%;width:100%;height:1.5px;background:var(--line)}.step:first-child:before{display:none}.step.done i{background:var(--ink);border-color:var(--ink)}.step.done:before,.step.cur:before{background:var(--ink)}.step.cur{color:var(--ink);font-weight:700}.step.cur i{background:var(--sign);border-color:var(--ink);box-shadow:0 0 0 3px var(--sign-soft)}.detail-flag{font-size:11.5px;font-weight:600;padding:5px 8px;border-radius:5px;margin-bottom:6px}.detail-flag.crit{background:var(--crit-soft);color:var(--crit)}.tasks{margin-top:8px}.tasks-head{display:flex;justify-content:space-between;font-size:11.5px;font-weight:600;margin-bottom:4px}.task{display:grid;grid-template-columns:58px 1fr 40px;gap:8px;align-items:center;height:21px;font-size:11.5px}.task-name{color:var(--ink-2)}.task-track{height:5px;border-radius:3px;background:var(--line-2);overflow:hidden}.task-fill{height:100%;background:var(--ink);transition:width .5s linear}.task.done .task-fill{background:var(--ok)}.task.late .task-fill{background:var(--crit)}.task.late .task-track{background:repeating-linear-gradient(45deg,var(--crit-soft) 0 4px,#fff 4px 8px)}.task-state{font-family:var(--f-mono);font-size:10.5px;text-align:right;color:var(--ink-3)}.task.late .task-state{color:var(--crit);font-family:var(--f-sans);font-weight:700}.task.done .task-state{color:var(--ok);font-family:var(--f-sans)}.predict{display:flex;gap:10px;align-items:center;margin-top:10px;padding:9px 10px;border-radius:8px;background:var(--paper-2)}.predict.warn{background:var(--warn-soft)}.predict-ring{--p: 0deg;width:40px;height:40px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;background:conic-gradient(var(--ink) var(--p),var(--line) 0);transition:background .5s}.predict.warn .predict-ring{background:conic-gradient(var(--warn) var(--p),#f3dcb5 0)}.predict-ring span{width:32px;height:32px;border-radius:50%;background:#fff;display:grid;place-items:center;font-family:var(--f-mono);font-size:10.5px;font-weight:600}.predict-title{font-size:11.5px;font-weight:700}.predict-text{font-size:11px;color:var(--ink-2);margin-top:2px}.ev-list{flex:1;overflow-y:auto;min-height:0;padding:4px 0}.ev{display:grid;grid-template-columns:72px 56px 1fr;gap:10px;align-items:center;padding:4px 14px;font-size:12.5px;position:relative;animation:slidein .35s ease-out}@keyframes slidein{0%{opacity:0;transform:translate(-6px)}}.ev:before{content:"";position:absolute;left:6px;top:50%;width:3px;height:14px;margin-top:-7px;border-radius:2px;background:var(--line)}.ev.warn:before{background:var(--warn)}.ev.crit:before{background:var(--crit)}.ev.ok:before{background:var(--ok)}.ev-time{font-family:var(--f-mono);font-size:11.5px;color:var(--ink-3)}.ev-src{font-size:11px;font-weight:600;text-align:center;padding:1px 0;border-radius:4px;background:var(--paper-2);color:var(--ink-2)}.ev-src.src-ai{background:var(--sign);color:var(--ink)}.ev-src.src-cmd{background:var(--ink);color:#fff}.ev-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ev.crit .ev-text{color:var(--crit);font-weight:600}.panel.ai{border-color:var(--ink)}.ai-head{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--sign);flex-shrink:0;position:relative;overflow:hidden}.ai-head:after{content:"";position:absolute;right:-20px;top:0;bottom:0;width:140px;background:repeating-linear-gradient(-55deg,rgba(21,24,29,.9) 0 10px,transparent 10px 20px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 70%);mask-image:linear-gradient(90deg,transparent,#000 70%);opacity:.16}.ai-mark{width:42px;height:42px;border-radius:9px;background:var(--ink);color:var(--sign);display:grid;place-items:center;font-weight:800;font-size:13px;letter-spacing:.04em;position:relative}.ai-mark:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:12px;border:1.5px solid var(--ink);opacity:.3;animation:breathe 2.4s ease-in-out infinite}@keyframes breathe{50%{top:-7px;right:-7px;bottom:-7px;left:-7px;opacity:0}}.ai-title h2{margin:0;font-size:16px;font-weight:800}.ai-live{font-size:11px;display:flex;align-items:center;gap:6px;margin-top:2px;color:#15181dbf}.ai-live i{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px #138a5b33;animation:blink 1.6s ease-in-out infinite}.ai-stats{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line-2);flex-shrink:0}.ai-stats div{padding:9px 12px;border-right:1px solid var(--line-2)}.ai-stats div:last-child{border-right:0}.ai-stats b{display:block;font-size:19px;font-variant-numeric:tabular-nums;line-height:1.1}.ai-stats span{font-size:10.5px;color:var(--ink-3)}.ai-section{padding:10px 14px;border-bottom:1px solid var(--line-2)}.ai-section-head{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;font-size:12.5px;margin-bottom:8px}.ai-section-head .muted{font-weight:400;font-size:11px}.empty{font-size:12px;color:var(--ink-3);padding:10px 0;text-align:center}.alerts{flex-shrink:0}.alert{display:grid;grid-template-columns:4px 1fr;gap:9px;padding:5px 0}.alert>i{border-radius:2px;background:var(--line)}.alert.warn>i{background:var(--warn)}.alert.crit>i{background:var(--crit)}.alert.ok>i{background:var(--ok)}.alert-title{font-size:12.5px;font-weight:600;display:flex;gap:6px;align-items:center}.alert-title em{font-style:normal;font-size:10px;font-weight:600;color:var(--ok);background:var(--ok-soft);padding:0 5px;border-radius:3px}.alert.crit:not(.resolved) .alert-title{color:var(--crit)}.alert-detail{font-size:11px;color:var(--ink-3);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.alert.resolved{opacity:.55}.sgs{flex:1;min-height:0;display:flex;flex-direction:column}.sg-list{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:8px;margin:0 -4px;padding:0 4px 4px}.sg{border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:var(--paper);flex-shrink:0}.sg.pending{border-color:var(--ink);box-shadow:3px 3px 0 var(--sign);animation:pop .3s cubic-bezier(.2,.8,.2,1)}.sg.pending.urgent{box-shadow:3px 3px 0 var(--crit);border-color:var(--crit)}.sg:not(.pending){padding:7px 12px;background:var(--paper-2);border-color:transparent}.sg-top{display:flex;gap:8px;align-items:center;font-size:10.5px}.sg-kind{font-weight:700;background:var(--ink);color:var(--sign);padding:1px 6px;border-radius:3px}.sg.urgent .sg-kind{background:var(--crit);color:#fff}.sg:not(.pending) .sg-kind{background:var(--line);color:var(--ink-2)}.sg-conf{color:var(--ink-3);font-family:var(--f-mono)}.sg-time{margin-left:auto;font-weight:600;color:var(--ink-2)}.sg.accepted .sg-time{color:var(--ok)}.sg.rejected .sg-time,.sg.expired .sg-time{color:var(--ink-3)}.sg-title{font-size:13.5px;font-weight:700;margin:6px 0 4px;line-height:1.4}.sg:not(.pending) .sg-title{font-size:12px;font-weight:500;color:var(--ink-2);margin:3px 0 0}.sg-reason{margin:0;font-size:11.5px;line-height:1.55;color:var(--ink-2)}.sg-impact{list-style:none;padding:0;margin:8px 0;display:flex;flex-wrap:wrap;gap:4px}.sg-impact li{font-size:10.5px;padding:2px 7px;border-radius:4px;background:var(--paper-2);border:1px solid var(--line)}.sg-impact li:first-child{background:var(--ok-soft);border-color:transparent;color:var(--ok);font-weight:600}.sg-actions{display:flex;gap:6px}.sg-actions .btn.primary{flex:1}.chat{flex-shrink:0;height:292px;display:flex;flex-direction:column;border-bottom:0;background:var(--paper-2)}.chat-list{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:8px;padding-bottom:6px}.msg{display:flex}.msg.user{justify-content:flex-end}.bubble{max-width:88%;font-size:12.5px;line-height:1.55;padding:7px 10px;border-radius:10px;background:var(--paper);border:1px solid var(--line)}.msg.ai .bubble{border-top-left-radius:3px}.msg.user .bubble{background:var(--ink);color:#fff;border-color:var(--ink);border-top-right-radius:3px}.bubble.typing{display:flex;gap:4px;padding:11px 12px}.bubble.typing i{width:5px;height:5px;border-radius:50%;background:var(--ink-3);animation:dot 1s ease-in-out infinite}.bubble.typing i:nth-child(2){animation-delay:.15s}.bubble.typing i:nth-child(3){animation-delay:.3s}@keyframes dot{50%{transform:translateY(-3px);opacity:.4}}.msg-items{display:flex;flex-direction:column;gap:3px;margin-top:6px}.msg-items button{text-align:left;font-family:var(--f-mono);font-size:11.5px;padding:4px 7px;border-radius:5px;background:var(--paper-2);border:1px solid var(--line)}.msg-items button:hover{background:var(--sign-soft);border-color:var(--sign)}.quick{display:flex;gap:5px;flex-wrap:wrap;margin:4px 0 8px}.quick button{font-size:11px;padding:3px 8px;border-radius:12px;border:1px solid var(--line);background:var(--paper);color:var(--ink-2)}.quick button:hover{border-color:var(--ink);color:var(--ink)}.chat-input{display:flex;gap:6px}.chat-input input{flex:1;font:inherit;font-size:12.5px;padding:7px 10px;border-radius:7px;border:1px solid var(--line);background:var(--paper);outline:none}.chat-input input:focus{border-color:var(--ink);box-shadow:0 0 0 3px var(--sign-soft)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#d4d2c9;border-radius:3px}::-webkit-scrollbar-track{background:transparent}@media (max-width: 1720px){.wx{display:none}.kpi{padding:0 12px}.kpi-value{font-size:21px}}
