@keyframes spin{to{transform:rotate(360deg)}}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-vietnamese-500-normal-k0drYPZA.woff2) format("woff2"),url(/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(/assets/archivo-latin-ext-500-normal-RFhg4CpD.woff2) format("woff2"),url(/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(/assets/archivo-latin-500-normal-CGugC8dq.woff2) format("woff2"),url(/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(/assets/archivo-vietnamese-600-normal-anCjMumA.woff2) format("woff2"),url(/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(/assets/archivo-latin-ext-600-normal-Dm61iqcg.woff2) format("woff2"),url(/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(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2) format("woff2"),url(/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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format("woff");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;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.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(/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}:root{--color-charcoal: #111318;--color-platinum: #6b7280;--color-silver: #d1d5db;--color-violet: #8b5cf6;--color-violet-deep: #2a0e5f;--color-text: #f3f2fa;--color-surface: #191c24;--color-border: #303440;--color-surface-raised: #1e222b;--color-surface-overlay: #232733;--color-border-strong: #3d414e;--color-text-muted: #a6aaba;--color-text-faint: #8b90a0;--color-focus: #bda1ff;--color-ok: #23d29b;--color-watch: #f0c34d;--color-warning: #ffb052;--color-danger: #ff6f6a;--color-unknown: #93a1b0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--radius-sm: 8px;--radius-md: 12px;--font-display: "Archivo", "IBM Plex Sans", sans-serif;--font-body: "IBM Plex Sans", sans-serif;--font-figure: "IBM Plex Mono", ui-monospace, monospace;--type-xs: 11px;--type-sm: 12.5px;--type-base: 14px;--type-md: 16px;--type-lg: 20px;--type-xl: 32px;color-scheme:dark}:root{--bg: #0a0c11;--bg-glow: radial-gradient(1200px 600px at 12% -10%, rgb(139 92 246 / 13%), transparent 60%), radial-gradient(900px 500px at 100% 0%, rgb(56 189 248 / 6%), transparent 60%);--surface-1: #10131a;--surface-2: #151922;--surface-3: #1b202b;--line: rgb(255 255 255 / 6.5%);--line-strong: rgb(255 255 255 / 11%);--hi: inset 0 1px 0 rgb(255 255 255 / 4%);--text-1: #f4f3fb;--text-2: #b4b8c7;--text-3: #8a8fa1;--text-4: #6b7083;--accent: #8b5cf6;--accent-2: #6d5dfc;--accent-soft: rgb(139 92 246 / 14%);--accent-grad: linear-gradient(135deg, #9b6cff 0%, #6d5dfc 100%);--ok: #2fd8a2;--watch: #f2c94c;--warn: #ffab4d;--danger: #ff6b6b;--info: #8fb4ff;--file: #4dd4e6;--radius: 14px;--radius-sm: 9px;--shadow-pop: 0 30px 80px rgb(0 0 0 / 55%), 0 0 0 1px var(--line-strong)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;color:var(--text-1);background:var(--bg)}body{font-family:var(--font-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;background-image:var(--bg-glow);background-attachment:fixed;min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:6px}::selection{background:#8b5cf659}h1,h2,h3,h4{font-family:var(--font-display);margin:0;font-weight:600;letter-spacing:-.015em}h1{font-size:26px;line-height:1.2;letter-spacing:-.025em}h2{font-size:15px}h3{font-size:14px}p{margin:0}.mono,.num{font-family:var(--font-figure);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.t2{color:var(--text-2)}.t3{color:var(--text-3)}.t4{color:var(--text-4)}.sm{font-size:12.5px}.xs{font-size:11.5px}.lg{font-size:16px}.strong{font-weight:500;color:var(--text-1)}.nowrap{white-space:nowrap}.right{text-align:right}.center{text-align:center}.row{display:flex;align-items:center;gap:8px}.row-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.stack{display:grid;gap:16px}.stack-lg{display:grid;gap:24px}.stack-sm{display:grid;gap:8px}.stack-xs{display:grid;gap:4px}.grow{flex:1;min-width:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.shell{display:grid;grid-template-columns:252px minmax(0,1fr);min-height:100vh}.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:22px;padding:20px 14px;border-right:1px solid var(--line);background:linear-gradient(180deg,#10131aeb,#0c0e14eb);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.brand{display:flex;align-items:center;gap:11px;padding:2px 8px}.brand-mark{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--accent-grad);box-shadow:0 8px 24px #6d5dfc59,inset 0 1px #ffffff40}.brand-name{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:-.01em}.brand-sub{font-size:11.5px;color:var(--text-3)}.nav{display:grid;gap:2px}.nav-group{font-size:11px;color:var(--text-4);padding:14px 10px 6px;letter-spacing:.02em}.nav a{position:relative;display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:9px;color:var(--text-2);font-weight:450;transition:background .15s,color .15s}.nav a svg{color:var(--text-4);transition:color .15s}.nav a:hover{background:#ffffff09;color:var(--text-1)}.nav a:hover svg{color:var(--text-2)}.nav a.on{background:linear-gradient(90deg,#8b5cf629,#8b5cf60a);color:var(--text-1)}.nav a.on svg{color:#b79cff}.nav a.on:before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--accent-grad)}.nav .count{margin-left:auto;font-family:var(--font-figure);font-size:11px;padding:0 7px;border-radius:999px;line-height:18px;background:#ff6b6b29;color:var(--danger)}.side-foot{margin-top:auto;display:grid;gap:10px}.env{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;font-size:12px;border:1px solid rgb(242 201 76 / 22%);background:#f2c94c12;color:#f5d77a}.env.prod{border-color:#2fd8a238;background:#2fd8a212;color:var(--ok)}.env .dot{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px #f2c94c26;flex:none}.me{display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;background:var(--surface-1);border:1px solid var(--line)}.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex:none;font-family:var(--font-display);font-weight:600;font-size:12.5px;color:#fff;background:linear-gradient(135deg,#7c5cff,#3aa0ff)}.avatar.sm{width:26px;height:26px;font-size:11px}.avatar.lg{width:48px;height:48px;font-size:17px;border-radius:14px}.main{min-width:0;display:flex;flex-direction:column}.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:12px 32px;background:#0a0c11b8;-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);border-bottom:1px solid var(--line)}.search{display:flex;align-items:center;gap:10px;width:min(440px,100%);padding:8px 12px;border-radius:10px;cursor:pointer;background:var(--surface-1);border:1px solid var(--line);color:var(--text-4);text-align:left;transition:border-color .15s}.search:hover{border-color:var(--line-strong);color:var(--text-3)}.kbd{font-family:var(--font-figure);font-size:11px;padding:1px 6px;border-radius:5px;border:1px solid var(--line-strong);color:var(--text-3);background:var(--surface-2)}.page{padding:28px 32px 64px;display:grid;gap:24px;max-width:1480px;width:100%}.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.eyebrow{font-size:12px;color:var(--text-3);margin-bottom:6px;display:flex;align-items:center;gap:6px}.eyebrow a{color:var(--text-3)}.eyebrow a:hover{color:var(--text-1)}.lede{color:var(--text-2);margin-top:6px;max-width:72ch}.card{background:linear-gradient(180deg,var(--surface-1),rgb(14 17 23));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--hi)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}.card-head .hint{font-size:12px;color:var(--text-4)}.card-body{padding:18px}.card-body.flush{padding:0}.card-foot{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.split{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(330px,1fr);gap:16px;align-items:start}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(176px,1fr));gap:12px}.kpi{position:relative;overflow:hidden;padding:16px 18px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,var(--surface-1),rgb(14 17 23));box-shadow:var(--hi);transition:border-color .15s,transform .15s}a.kpi:hover{border-color:var(--line-strong);transform:translateY(-1px)}.kpi .label{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-3)}.kpi .label svg{color:var(--text-4)}.kpi .value{font-family:var(--font-figure);font-size:30px;font-weight:500;letter-spacing:-.03em;margin-top:8px;line-height:1}.kpi .value .unit{font-size:13px;color:var(--text-3);margin-left:4px;letter-spacing:0}.kpi .sub{font-size:12px;color:var(--text-4);margin-top:8px}.kpi.alert .value{color:var(--danger)}.kpi.warn .value{color:var(--warn)}.kpi.unknown .value{color:var(--text-4)}.kpi:after{content:"";position:absolute;inset:auto -40% -60% auto;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgb(139 92 246 / 10%),transparent 70%);pointer-events:none}.pill{display:inline-flex;align-items:center;gap:6px;padding:0 9px;height:22px;border-radius:999px;white-space:nowrap;font-size:12px;font-weight:500;border:1px solid transparent}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill.ok{color:var(--ok);background:#2fd8a21a;border-color:#2fd8a229}.pill.watch{color:var(--watch);background:#f2c94c1a;border-color:#f2c94c29}.pill.warning{color:var(--warn);background:#ffab4d1a;border-color:#ffab4d29}.pill.danger{color:var(--danger);background:#ff6b6b1a;border-color:#ff6b6b2e}.pill.info{color:var(--info);background:#8fb4ff1a;border-color:#8fb4ff29}.pill.muted{color:var(--text-3);background:#ffffff0a;border-color:var(--line)}.pill.unknown{color:var(--text-3);background:transparent;border:1px dashed rgb(255 255 255 / 20%)}.pill.file{color:var(--file);background:#4dd4e617;border-color:#4dd4e629}.tag{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px;border-radius:6px;font-size:11.5px;color:var(--text-2);background:#ffffff0d;border:1px solid var(--line);white-space:nowrap}.tag.file{color:var(--file);border-color:#4dd4e62e;background:#4dd4e612}.tag.service{color:#c4b2ff;border-color:#8b5cf638;background:#8b5cf617}.table-wrap{overflow-x:auto}table.t{width:100%;border-collapse:separate;border-spacing:0}table.t th{text-align:left;font-size:11.5px;font-weight:500;color:var(--text-4);padding:10px 16px;white-space:nowrap;border-bottom:1px solid var(--line);background:#ffffff03;position:sticky;top:0}table.t td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}table.t tr:last-child td{border-bottom:none}table.t tbody tr{transition:background .12s}table.t tbody tr.click{cursor:pointer}table.t tbody tr.click:hover td{background:#ffffff06}table.t .main-cell{font-weight:500;color:var(--text-1)}table.t .sub{font-size:11.5px;color:var(--text-4);margin-top:2px}.meter{height:6px;border-radius:99px;background:#ffffff0f;overflow:hidden;min-width:72px}.meter>i{display:block;height:100%;border-radius:99px;background:var(--accent-grad)}.meter.full>i{background:linear-gradient(90deg,#ffb75e,#ff8f4d)}.meter.low>i{background:linear-gradient(90deg,#ff8a8a,#ff5c5c)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 14px;border-radius:9px;font-weight:500;font-size:13.5px;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s,transform .1s,box-shadow .15s;background:var(--surface-2);border:1px solid var(--line-strong);color:var(--text-1)}.btn:hover{background:var(--surface-3)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent-grad);border-color:transparent;color:#fff;box-shadow:0 6px 20px #6d5dfc4d,inset 0 1px #ffffff38}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{background:transparent;color:var(--danger);border-color:#ff6b6b4d}.btn.danger:hover{background:#ff6b6b17}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn.ghost:hover{background:#ffffff0a;color:var(--text-1)}.btn.sm{height:28px;padding:0 10px;font-size:12.5px;border-radius:8px}.btn.icon{width:34px;padding:0}.btn.sm.icon{width:28px}.field{display:grid;gap:6px}.field>.lbl{font-size:12.5px;color:var(--text-2);font-weight:500}.field .help{font-size:11.5px;color:var(--text-4)}.input,select.input,textarea.input{width:100%;height:38px;padding:0 12px;border-radius:9px;background:#06080cb3;border:1px solid var(--line-strong);transition:border-color .15s,box-shadow .15s}textarea.input{height:auto;min-height:84px;padding:10px 12px;resize:vertical;line-height:1.5}.input:focus{outline:none;border-color:#8b5cf6b3;box-shadow:0 0 0 3px #8b5cf62e}.input::placeholder{color:var(--text-4)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.toolbar .input{width:auto;height:34px}.seg{display:inline-flex;padding:3px;gap:2px;border-radius:10px;background:var(--surface-1);border:1px solid var(--line)}.seg button{height:28px;padding:0 11px;border-radius:7px;border:none;background:transparent;color:var(--text-3);font-size:12.5px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.seg button:hover{color:var(--text-1)}.seg button.on{background:var(--surface-3);color:var(--text-1);box-shadow:inset 0 1px #ffffff0d,0 1px 2px #0006}.seg .n{font-family:var(--font-figure);font-size:11px;color:var(--text-4)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}.tabs button{position:relative;height:40px;padding:0 12px;border:none;background:none;color:var(--text-3);font-weight:500;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:7px}.tabs button:hover,.tabs button.on{color:var(--text-1)}.tabs button.on:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent-grad)}.tabs .n{font-family:var(--font-figure);font-size:11px;color:var(--text-4);padding:0 6px;border-radius:99px;background:#ffffff0d}.empty{display:grid;justify-items:center;gap:10px;padding:48px 24px;text-align:center;color:var(--text-3)}.empty .art{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;background:#8b5cf61a;border:1px solid rgb(139 92 246 / 18%);color:#b79cff}.empty h3{color:var(--text-1);font-size:15px}.empty p{max-width:52ch;font-size:13px}.note{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:11px;font-size:13px;border:1px solid var(--line);background:var(--surface-1);color:var(--text-2)}.note svg{flex:none;margin-top:1px}.note.error{border-color:#ff6b6b47;background:#ff6b6b12;color:#ff9a9a}.note.warn{border-color:#ffab4d42;background:#ffab4d12;color:#ffc887}.note.unknown{border-style:dashed;border-color:#ffffff2e;color:var(--text-2)}.note.ok{border-color:#2fd8a23d;background:#2fd8a20f;color:#8ff0cf}.read-at{font-size:11.5px;color:var(--text-4)}.skel{height:12px;border-radius:6px;background:linear-gradient(90deg,var(--surface-2),var(--surface-3),var(--surface-2));background-size:200% 100%;animation:shimmer 1.3s infinite}@keyframes shimmer{to{background-position:-200% 0}}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0304089e;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade .15s ease-out}@keyframes fade{0%{opacity:0}}.modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:51;display:grid;place-items:start center;padding-top:12vh;pointer-events:none}.modal{pointer-events:auto;width:min(560px,calc(100vw - 32px));border-radius:16px;background:var(--surface-1);box-shadow:var(--shadow-pop);animation:pop .18s cubic-bezier(.2,.8,.2,1)}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.985)}}.modal-head{padding:20px 22px 4px;display:flex;gap:12px;align-items:flex-start}.modal-head .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--accent-soft);color:#b79cff}.modal-head .ic.danger{background:#ff6b6b1f;color:var(--danger)}.modal-body{padding:14px 22px;display:grid;gap:14px}.modal-foot{padding:14px 22px 18px;display:flex;justify-content:flex-end;gap:8px}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:51;width:min(520px,100vw);display:flex;flex-direction:column;background:var(--surface-1);border-left:1px solid var(--line-strong);box-shadow:-30px 0 80px #00000073;animation:slide .22s cubic-bezier(.2,.8,.2,1)}@keyframes slide{0%{transform:translate(24px);opacity:0}}.drawer-head{padding:20px 22px 16px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:flex-start}.drawer-body{flex:1;overflow-y:auto;padding:20px 22px;display:grid;gap:20px;align-content:start}.drawer-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px}.palette{pointer-events:auto;width:min(640px,calc(100vw - 32px));border-radius:16px;overflow:hidden;background:var(--surface-1);box-shadow:var(--shadow-pop);animation:pop .16s ease-out}.palette .q{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--line);color:var(--text-4)}.palette input{flex:1;height:54px;border:none;background:none;outline:none;font-size:15.5px;color:var(--text-1)}.palette ul{list-style:none;margin:0;padding:8px;max-height:52vh;overflow-y:auto}.palette .grp{font-size:11px;color:var(--text-4);padding:8px 10px 4px}.palette li button{width:100%;display:flex;align-items:center;gap:11px;padding:9px 10px;border:none;border-radius:9px;background:none;text-align:left;cursor:pointer;color:var(--text-2)}.palette li button svg{color:var(--text-4)}.palette li button.on{background:#8b5cf621;color:var(--text-1)}.palette li button.on svg{color:#b79cff}.toasts{position:fixed;right:24px;bottom:24px;z-index:60;display:grid;gap:8px}.toast{display:flex;gap:10px;align-items:flex-start;max-width:420px;padding:12px 14px;border-radius:12px;font-size:13px;background:var(--surface-2);box-shadow:var(--shadow-pop);animation:pop .2s ease-out}.toast.ok svg{color:var(--ok)}.toast.error svg{color:var(--danger)}.code{display:block;padding:12px 14px;border-radius:10px;background:#07090d;border:1px solid var(--line);font-family:var(--font-figure);font-size:12px;line-height:1.6;white-space:pre-wrap;word-break:break-all;color:#d6d2ff}dl.facts{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:10px 18px;margin:0}dl.facts dt{color:var(--text-4);font-size:12.5px}dl.facts dd{margin:0;color:var(--text-1)}.feed{list-style:none;margin:0;padding:0}.feed li{display:grid;grid-template-columns:30px 1fr auto;gap:12px;padding:13px 18px;border-bottom:1px solid var(--line);align-items:start}.feed li:last-child{border-bottom:none}.feed .when{font-size:11.5px;color:var(--text-4);white-space:nowrap}.day-sep{padding:10px 18px;font-size:11.5px;color:var(--text-4);background:#ffffff04;border-bottom:1px solid var(--line)}.attn{list-style:none;margin:0;padding:0}.attn li a,.attn li>div{display:grid;grid-template-columns:34px 1fr auto;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);align-items:start;transition:background .12s}.attn li:last-child a,.attn li:last-child>div{border-bottom:none}.attn li a:hover{background:#ffffff05}.sev{width:34px;height:34px;border-radius:10px;display:grid;place-items:center}.sev.critical{background:#ff6b6b1f;color:var(--danger)}.sev.warning{background:#ffab4d1f;color:var(--warn)}.sev.info{background:#8fb4ff1a;color:var(--info)}.region{display:grid;gap:6px;padding:14px 18px;border-bottom:1px solid var(--line)}.region:last-child{border-bottom:none}.runway{--label: 230px;position:relative}.runway-axis{display:grid;grid-template-columns:var(--label) 1fr;border-bottom:1px solid var(--line)}.runway-ticks{position:relative;height:46px}.runway-ticks span{position:absolute;top:6px;font-size:11px;color:var(--text-4);transform:translate(-50%);white-space:nowrap}.runway-row{display:grid;grid-template-columns:var(--label) 1fr;align-items:center;min-height:46px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}.runway-row:last-child{border-bottom:none}.runway-row:hover{background:#ffffff05}.runway-label{padding:8px 16px;min-width:0}.runway-track{position:relative;height:46px}.runway-grid{position:absolute;top:0;bottom:0;width:1px;background:#ffffff09}.runway-today{position:absolute;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#b79cff,#8b5cf640);z-index:2}.runway-ticks .runway-today-label{position:absolute;top:24px;transform:translate(-50%);font-size:10.5px;font-weight:600;color:#c9b6ff;background:#8b5cf62e;padding:1px 7px;border-radius:99px;white-space:nowrap}.runway-bar{position:absolute;top:13px;height:20px;border-radius:6px;min-width:6px;display:flex;align-items:center;padding:0 8px;font-size:11px;font-weight:500;color:#ffffffeb;white-space:nowrap;overflow:hidden;box-shadow:inset 0 1px #ffffff2e}.runway-bar.active{background:linear-gradient(90deg,#8b5cf6d9,#6d5dfcd9)}.runway-bar.soon{background:linear-gradient(90deg,#ffab4dd9,#ff8f4dd9);color:#1b1206}.runway-bar.ended{background:#ffffff17;color:var(--text-3);box-shadow:none}.runway-bar.stopped{background:repeating-linear-gradient(135deg,#ff6b6b8c 0,#ff6b6b8c 6px,#ff6b6b59 6px,#ff6b6b59 12px)}.runway-bar.file{background:linear-gradient(90deg,#4dd4e6bf,#38bdf8b3);color:#04161a}.runway-bar.file.soon{background:linear-gradient(90deg,#ffab4dd9,#ff8f4dd9);color:#1b1206}.runway-bar.file.ended{background:#4dd4e61f;color:var(--file)}.runway-bar .clip-l{position:absolute;left:0;top:0;bottom:0;width:10px;background:linear-gradient(90deg,rgb(10 12 17 / 70%),transparent)}.runway-out{position:absolute;top:15px;font-size:11.5px;color:var(--text-2);white-space:nowrap;pointer-events:none}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:11.5px;color:var(--text-3)}.legend i{display:inline-block;width:18px;height:8px;border-radius:3px;margin-right:6px;vertical-align:middle}.licard{position:relative;overflow:hidden;padding:22px;border-radius:18px;border:1px solid rgb(139 92 246 / 30%);background:radial-gradient(500px 220px at 100% 0%,rgb(139 92 246 / 26%),transparent 65%),linear-gradient(160deg,#151129,#0e0f18 60%);box-shadow:0 24px 60px #00000073,inset 0 1px #ffffff0f}.licard .k{font-size:11px;color:#d6cdff99}.licard .v{font-family:var(--font-figure);font-size:13px;color:#ece8ff}.licard .terms{font-family:var(--font-display);font-size:18px;line-height:1.35;letter-spacing:-.01em;color:#f6f4ff}.licard .grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.licard:after{content:"";position:absolute;right:-60px;bottom:-60px;width:200px;height:200px;border-radius:50%;border:1px solid rgb(139 92 246 / 18%);box-shadow:0 0 0 30px #8b5cf60a,0 0 0 60px #8b5cf606}.steps{display:grid;gap:4px}.step{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:var(--text-3);cursor:default}.step .n{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;font-family:var(--font-figure);font-size:12px;border:1px solid var(--line-strong)}.step.on{background:#8b5cf61a;color:var(--text-1)}.step.on .n{background:var(--accent-grad);border-color:transparent;color:#fff}.step.done{color:var(--text-2);cursor:pointer}.step.done .n{background:#2fd8a224;border-color:transparent;color:var(--ok)}.choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.choice{text-align:left;display:grid;gap:8px;padding:16px;border-radius:13px;cursor:pointer;border:1px solid var(--line);background:var(--surface-1);transition:border-color .15s,background .15s}.choice:hover{border-color:var(--line-strong);background:var(--surface-2)}.choice.on{border-color:#8b5cf6a6;background:#8b5cf614;box-shadow:0 0 0 3px #8b5cf61f}.choice .ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--accent-soft);color:#b79cff}.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px 18px}.cust-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.cust{display:grid;gap:14px;padding:18px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,var(--surface-1),rgb(14 17 23));box-shadow:var(--hi);transition:border-color .15s,transform .15s}.cust:hover{border-color:var(--line-strong);transform:translateY(-1px)}.bars{display:grid;gap:10px}.bars .b{display:grid;grid-template-columns:minmax(140px,1fr) 2fr auto;gap:12px;align-items:center;font-size:13px}@media(max-width:1180px){.split,.grid-3{grid-template-columns:1fr}}@media(max-width:860px){.shell{grid-template-columns:1fr}.side{position:static;height:auto;padding:12px;gap:10px}.nav{display:flex;flex-wrap:wrap}.nav-group,.side-foot{display:none}.top,.page{padding-left:16px;padding-right:16px}.grid-2{grid-template-columns:1fr}.runway{--label: 140px}}
