@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2) format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2) format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2) format("woff2-variations");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 Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2) format("woff2-variations");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 Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2) format("woff2-variations");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 Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2) format("woff2-variations");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 Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2) format("woff2-variations");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(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/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(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/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}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--ff-d: "Bricolage Grotesque", system-ui, sans-serif;--ff-u: "IBM Plex Sans", system-ui, sans-serif;--ff-m: "IBM Plex Mono", monospace;--b50: oklch(97% .012 237);--b100: oklch(93% .03 237);--b200: oklch(86% .06 237);--b300: oklch(75% .095 237);--b400: oklch(63% .13 237);--b500: oklch(52% .148 237);--b600: oklch(43% .135 237);--b700: oklch(34% .108 237);--b800: oklch(26% .075 237);--b900: oklch(18% .052 237);--n0: #ffffff;--n50: oklch(98.5% .004 237);--n100: oklch(96.8% .006 237);--n200: oklch(92.5% .007 237);--n300: oklch(84% .007 237);--n400: oklch(70% .007 237);--n500: oklch(56% .007 237);--n600: oklch(44% .007 237);--n700: oklch(35% .007 237);--n800: oklch(25% .007 237);--n900: oklch(16% .007 237);--n950: oklch(10% .007 237);--sg: oklch(54% .172 145);--sgb: oklch(96.5% .035 145);--sgt: oklch(35% .118 145);--sgbr: oklch(87% .075 145);--sa: oklch(68% .182 72);--sab: oklch(97% .04 72);--sat: oklch(42% .125 72);--sabr: oklch(88% .1 72);--sr: oklch(52% .215 25);--srb: oklch(96.5% .038 25);--srt: oklch(35% .148 25);--srbr: oklch(87% .088 25);--sl: oklch(54% .148 237);--slb: oklch(96.5% .03 237);--slt: oklch(36% .108 237);--slbr: oklch(87% .07 237);--bdr: 1px solid var(--n200);--sh-sm: 0 1px 3px rgba(8,18,42,.07), 0 1px 2px rgba(8,18,42,.04);--sh-md: 0 4px 8px rgba(8,18,42,.08), 0 2px 4px rgba(8,18,42,.04);--sh-lg: 0 16px 48px rgba(8,18,42,.14), 0 4px 12px rgba(8,18,42,.06)}html,body{height:100%;font-family:var(--ff-u);color:var(--n900);background:var(--n100);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}#root{height:100%}button{font-family:var(--ff-u);cursor:pointer}a{text-decoration:none;color:inherit}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--n300);border-radius:2px}.app-shell{display:flex;height:100vh;overflow:hidden;background:var(--n100)}.sidebar{width:220px;flex-shrink:0;background:var(--n0);border-right:var(--bdr);display:flex;flex-direction:column;overflow:hidden}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 16px;font-size:13px;color:var(--n700);border-left:2px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s}.nav-item:hover{background:var(--n50)}.nav-item.active{background:var(--b50);border-left-color:var(--b500);color:var(--b700);font-weight:500}.nav-badge{margin-left:auto;font-family:var(--ff-m);font-size:10px;font-weight:600;padding:1px 5px;border-radius:999px}.badge{display:inline-flex;align-items:center;gap:3px;border-radius:2px;padding:2px 7px;font-size:11px;font-weight:500;border:1px solid;white-space:nowrap}.badge-g{background:var(--sgb);color:var(--sgt);border-color:var(--sgbr)}.badge-a{background:var(--sab);color:var(--sat);border-color:var(--sabr)}.badge-r{background:var(--srb);color:var(--srt);border-color:var(--srbr)}.badge-b{background:var(--slb);color:var(--slt);border-color:var(--slbr)}.badge-n{background:var(--n100);color:var(--n600);border-color:var(--n200)}.badge-ip{background:#e8eeff;background:oklch(95% .04 270);color:#2b3b81;border-color:#becdf6}.btn{display:flex;align-items:center;justify-content:center;gap:8px;height:40px;border-radius:4px;font-family:var(--ff-u);font-size:14px;font-weight:500;cursor:pointer;border:none}.btn-primary{background:var(--b500);color:#fff}.btn-primary:hover{background:var(--b600)}.btn-secondary{background:var(--n0);color:var(--n800);border:1px solid var(--n300)}.btn-secondary:hover{background:var(--n50)}.input{width:100%;height:40px;border:1px solid var(--n300);border-radius:4px;padding:0 12px;font-family:var(--ff-u);font-size:14px;color:var(--n900);background:var(--n0);outline:none}.input:focus{border-color:var(--b500);box-shadow:0 0 0 3px var(--b100)}.label{display:block;font-size:12px;font-weight:500;color:var(--n700);margin-bottom:5px}.kpi{background:var(--n0);border:var(--bdr);border-radius:8px;padding:20px;box-shadow:var(--sh-sm)}.tab-btn{padding:10px 16px;font-size:13px;color:var(--n500);border:none;border-bottom:2px solid transparent;background:transparent;cursor:pointer;font-family:var(--ff-u);white-space:nowrap}.tab-btn.active{color:var(--b600);font-weight:500;border-bottom-color:var(--b500)}.row-hover:hover{background:var(--n50)}[data-theme=dark]{--n0: oklch(13% .007 237);--n50: oklch(16% .008 237);--n100: oklch(19% .008 237);--n200: oklch(24% .009 237);--n300: oklch(32% .009 237);--n400: oklch(48% .008 237);--n500: oklch(60% .007 237);--n600: oklch(72% .007 237);--n700: oklch(82% .006 237);--n800: oklch(90% .005 237);--n900: oklch(95% .004 237);--n950: oklch(97% .003 237);--bdr: 1px solid oklch(24% .009 237);--sh-sm: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);--sh-md: 0 4px 8px rgba(0,0,0,.35), 0 2px 4px rgba(0,0,0,.2);--sgb: oklch(20% .05 145);--sgt: oklch(70% .14 145);--sgbr: oklch(28% .07 145);--sab: oklch(20% .05 72);--sat: oklch(72% .15 72);--sabr: oklch(28% .07 72);--srb: oklch(20% .05 25);--srt: oklch(68% .15 25);--srbr: oklch(28% .07 25);--slb: oklch(18% .04 237);--slt: oklch(70% .12 237);--slbr: oklch(26% .06 237)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@media (max-width: 768px){.sidebar{position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);transition:transform .22s ease,box-shadow .22s ease;z-index:100;width:220px}.sidebar.sidebar--mobile-open{transform:translate(0);box-shadow:var(--sh-lg)}.sidebar-overlay{display:block!important}.sidebar-hamburger{display:flex!important}table{min-width:560px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (pointer: coarse){.btn,.input,.tab-btn{min-height:44px}.nav-item{padding-top:11px;padding-bottom:11px}}
