@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/be-vietnam-pro-400-latin.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/be-vietnam-pro-400-vietnamese.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/be-vietnam-pro-500-latin.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/be-vietnam-pro-500-vietnamese.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/be-vietnam-pro-600-latin.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/be-vietnam-pro-600-vietnamese.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/be-vietnam-pro-700-latin.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/be-vietnam-pro-700-vietnamese.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/be-vietnam-pro-800-latin.woff2) format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/be-vietnam-pro-800-vietnamese.woff2) format("woff2");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}:root{--bg: #eef1f8;--panel: #ffffff;--panel-2: #f4f6fb;--line: #e3e7f2;--text: #0f1f3d;--muted: #526080;--accent: #3b5fe0;--accent-2: #2947b8;--good: #16a34a;--good-bg: #e8f7ee;--warn: #d97706;--warn-bg: #fdf1de;--bad: #dc2626;--bad-bg: #fdeaea;--radius: 16px;--shadow: 0 1px 2px rgba(19, 28, 51, .04), 0 8px 24px rgba(19, 28, 51, .06);--sb-bg-1: #0d1a3f;--sb-bg-2: #142a63;--sb-line: rgba(255, 255, 255, .1);--sb-text: #f2f5ff;--sb-muted: #aab6e6;--sb-active: #3b5fe0}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Be Vietnam Pro,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{display:flex;min-height:100vh}.sidebar{flex:0 0 220px;background:linear-gradient(180deg,var(--sb-bg-1),var(--sb-bg-2));color:var(--sb-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;overflow-x:hidden;transition:flex-basis .18s ease}.sidebar.collapsed{flex-basis:76px}.sidebar .brand{display:flex;align-items:center;gap:8px;padding:22px 18px 18px;font-weight:800;font-size:21px;letter-spacing:.3px;white-space:nowrap}.sidebar .brand .logo-mark{width:30px;height:30px;flex:none;object-fit:contain;display:block}.sidebar.collapsed .brand-text{display:none}.sidebar-collapse-btn{position:absolute;top:24px;right:-13px;width:26px;height:26px;border-radius:50%;background:var(--panel);color:var(--sb-bg-1);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow);z-index:6;transition:transform .18s ease}.sidebar-collapse-btn:hover{background:var(--panel-2)}.sidebar-collapse-btn svg{transition:transform .18s ease;transform:rotate(90deg)}.sidebar.collapsed .sidebar-collapse-btn svg{transform:rotate(-90deg)}.sidebar-nav{display:flex;flex-direction:column;gap:3px;padding:6px 12px;flex:1}.sidebar-nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;color:var(--sb-muted);font-size:15.5px;font-weight:600;white-space:nowrap}.sidebar-nav a:hover{color:var(--sb-text);background:#ffffff0f;text-decoration:none}.sidebar-nav a.active{color:#fff;background:var(--sb-active);box-shadow:0 4px 14px #3b5fe073}.sidebar-nav a svg{flex:none;opacity:.95}.sidebar.collapsed .sidebar-nav a{justify-content:center;padding:12px}.sidebar.collapsed .sidebar-nav a .nav-label{display:none}.sidebar-foot{border-top:1px solid var(--sb-line);padding:14px;padding-bottom:calc(14px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}.sidebar-user{display:flex;align-items:center;gap:10px;padding:6px;border-radius:11px}.sidebar-user .avatar{width:34px;height:34px;border-radius:50%;flex:none;background:linear-gradient(135deg,#5b7cff,#3b5fe0);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:800;color:#fff}.sidebar-user .who{min-width:0}.sidebar-user .who .name{font-size:14.5px;font-weight:700;color:var(--sb-text)}.sidebar-user .who .sub{font-size:12.5px;color:var(--sb-muted);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar.collapsed .sidebar-user{justify-content:center}.sidebar.collapsed .sidebar-user .who{display:none}.sidebar-foot-row{display:flex;align-items:center;gap:8px}.sb-ghost{display:flex;align-items:center;gap:6px;flex:1;background:#ffffff12;color:var(--sb-text);border:1px solid var(--sb-line);padding:8px 10px;border-radius:9px;font-size:13px;font-weight:700;cursor:pointer;justify-content:center;white-space:nowrap;overflow:hidden}.sb-ghost:hover{background:#ffffff21}.sb-ghost.on{background:var(--sb-active);border-color:transparent}.sidebar.collapsed .sb-ghost .btn-label,.sidebar-backdrop,.hamburger-btn{display:none}.lang-switch{position:relative}.lang-switch-dark{flex:1}.lang-trigger{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:8px 10px;border-radius:9px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit}.lang-switch-dark .lang-trigger{background:#ffffff12;color:var(--sb-text);border:1px solid var(--sb-line)}.lang-switch-dark .lang-trigger:hover{background:#ffffff21}.lang-switch-light .lang-trigger{background:var(--panel);color:var(--text);border:1px solid var(--line);box-shadow:var(--shadow)}.lang-switch-light .lang-trigger:hover{background:var(--panel-2)}.lang-trigger svg:last-child{opacity:.75}.lang-menu{position:absolute;min-width:180px;z-index:60;border-radius:12px;padding:6px;display:flex;flex-direction:column;gap:2px}.lang-switch-dark .lang-menu{bottom:calc(100% + 8px);left:0;background:#16265a;border:1px solid var(--sb-line);box-shadow:0 16px 32px #04091980}.lang-switch-light .lang-menu{top:calc(100% + 8px);right:0;background:var(--panel);border:1px solid var(--line);box-shadow:0 16px 36px #131c332e}.lang-option{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:8px;font-size:14.5px;font-weight:600;cursor:pointer;text-align:left;font-family:inherit}.lang-option span{flex:1}.lang-option svg:last-child{flex:none;color:var(--accent)}.lang-switch-dark .lang-option{background:transparent;color:var(--sb-muted)}.lang-switch-dark .lang-option:hover{background:#ffffff14;color:var(--sb-text)}.lang-switch-dark .lang-option.selected{color:#fff;background:#3b5fe059}.lang-switch-light .lang-option{background:transparent;color:var(--text)}.lang-switch-light .lang-option:hover{background:var(--panel-2)}.lang-switch-light .lang-option.selected{background:color-mix(in srgb,var(--accent) 10%,var(--panel));color:var(--accent-2)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:15;display:flex;align-items:center;justify-content:space-between;padding:18px 28px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding-top:calc(18px + env(safe-area-inset-top))}.topbar h1{margin:0;font-size:26px;font-weight:800;letter-spacing:-.2px}.topbar-left,.topbar-right{display:flex;align-items:center;gap:12px}.bell-btn{position:relative;width:38px;height:38px;border-radius:50%;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;color:var(--text);cursor:pointer;flex:none}.bell-dot{position:absolute;top:6px;right:7px;width:8px;height:8px;border-radius:50%;background:var(--bad);border:2px solid var(--bg)}.clock{text-align:right;line-height:1.3;white-space:nowrap}.clock .time{font-size:15.5px;font-weight:800}.clock .date{font-size:12.5px;color:var(--muted)}.hamburger-btn{width:38px;height:38px;border-radius:10px;flex:none;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);align-items:center;justify-content:center;color:var(--text);cursor:pointer}.app{max-width:1180px;margin:0 auto;padding:4px 28px 96px;width:100%}@media (max-width: 860px){.sidebar{position:fixed;z-index:46;top:0;left:0;height:100vh;flex-basis:260px!important;width:260px;padding-top:env(safe-area-inset-top);transform:translate(-100%);transition:transform .22s ease}.sidebar.mobile-open{transform:translate(0);box-shadow:0 0 40px #00000059}.sidebar.collapsed .brand-text,.sidebar.collapsed .sidebar-nav a .nav-label,.sidebar.collapsed .sidebar-user .who,.sidebar.collapsed .sb-ghost .btn-label{display:unset}.sidebar.collapsed .sidebar-nav a{justify-content:flex-start;padding:10px 12px}.sidebar-collapse-btn{display:none}.sidebar-backdrop.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:#080c188c;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.hamburger-btn{display:flex}.app,.topbar{padding-left:16px;padding-right:16px}}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}.card h2{margin:0 0 4px;font-size:21px}.card h3{margin:0 0 12px;font-size:17px}.sub{color:var(--muted);font-size:14.5px;line-height:1.6;margin:0 0 12px}.grid{display:grid;gap:14px}.grid.two{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid.three{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.right{margin-left:auto}.hero{background:linear-gradient(120deg,#16255e,#2947b8 65%,#3b5fe0);color:#fff;border:0;box-shadow:0 10px 30px #2947b859;position:relative;overflow:hidden}.hero .rating{color:#fff}.hero .sub,.hero .badge{color:#ffffffe0}.hero .badge{border-color:#ffffff59;background:#ffffff1a}.hero .badge.warn{color:#ffd48a;border-color:#ffd48a80;background:#ffd48a24}.hero .badge.good{color:#7bf0b6;border-color:#7bf0b680;background:#7bf0b624}.metric-box{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:15px}.metric-box .metric-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);margin-bottom:10px}.metric-box .metric-title{font-size:14px;font-weight:700;color:var(--muted);margin-bottom:2px}.metric-box .metric-value{font-size:18px;font-weight:800;margin-bottom:6px}button,.btn{background:var(--accent);color:#fff;border:0;padding:10px 16px;border-radius:10px;font-weight:700;cursor:pointer;font-size:15px;display:inline-flex;align-items:center;gap:6px;font-family:inherit}button:hover{background:var(--accent-2)}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}button.ghost:hover{background:var(--panel-2)}button.danger{background:var(--bad);color:#fff}button.small{padding:6px 11px;font-size:13.5px}input,select,textarea{background:var(--panel);border:1px solid var(--line);color:var(--text);padding:10px 12px;border-radius:10px;font-size:15px;width:100%;font-family:inherit}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:1px}label{display:block;font-size:13.5px;color:var(--muted);margin-bottom:5px;font-weight:500}.field{margin-bottom:12px}.search-box{position:relative}.search-box svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted)}.search-box input{padding-left:38px}.rating{font-size:38px;font-weight:800;letter-spacing:-1px;line-height:1;color:var(--text)}.rating.small{font-size:21px}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:999px;font-size:12.5px;font-weight:700;border:1px solid var(--line);color:var(--muted);background:var(--panel-2)}.badge.good{color:var(--good);background:var(--good-bg);border-color:color-mix(in srgb,var(--good) 30%,transparent)}.badge.warn{color:var(--warn);background:var(--warn-bg);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.badge.bad{color:var(--bad);background:var(--bad-bg);border-color:color-mix(in srgb,var(--bad) 30%,transparent)}.badge.pill-count{background:var(--panel);color:var(--text);font-weight:800}.delta{font-weight:800;font-variant-numeric:tabular-nums}.delta.up{color:var(--good)}.delta.down{color:var(--bad)}.mono{font-variant-numeric:tabular-nums}.table{width:100%;border-collapse:collapse;font-size:15px}.table th,.table td{text-align:left;padding:13px 10px;border-bottom:1px solid var(--line)}.table th{color:var(--muted);font-weight:700;font-size:12.5px;text-transform:uppercase;letter-spacing:.5px}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--panel-2)}.table-wrap{overflow-x:auto}.bar{height:7px;background:var(--line);border-radius:99px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent);border-radius:99px}.empty{color:var(--muted);text-align:center;padding:40px 12px;font-size:15px}.empty .empty-icon{width:56px;height:56px;border-radius:50%;margin:0 auto 14px;background:var(--panel-2);color:var(--muted);display:flex;align-items:center;justify-content:center}.empty .empty-sub{font-size:13.5px;margin-top:4px;color:var(--muted)}.error{background:var(--bad-bg);border:1px solid color-mix(in srgb,var(--bad) 35%,transparent);color:var(--bad);padding:11px 13px;border-radius:10px;font-size:14.5px;margin-bottom:12px;font-weight:500}.notice{background:color-mix(in srgb,var(--accent) 8%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);color:var(--text);padding:11px 13px;border-radius:10px;font-size:14px;margin-bottom:12px;line-height:1.6}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f14238c;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.modal{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:20px;max-width:460px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #131c3340}.chip{padding:8px 13px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);cursor:pointer;font-size:14px;font-weight:600;-webkit-user-select:none;user-select:none}.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}@media (max-width: 560px){.rating{font-size:30px}.card{padding:15px}.topbar h1{font-size:20px}}
