:root{--vnmade-blue-900: #152a6b;--vnmade-blue-800: #1e3a8a;--vnmade-blue-700: #1d4ed8;--vnmade-blue-600: #2563eb;--vnmade-blue-100: #dbe6ff;--vnmade-blue-050: #eef2ff;--vnmade-amber-700: #b26a00;--vnmade-amber-500: #f59e0b;--vnmade-amber-100: #fff4dc;--vnmade-ink-950: #0b111c;--vnmade-ink-900: #0e1420;--vnmade-ink-800: #161f30;--vnmade-ink-700: #1f2a3d;--vnmade-ink-600: #2a3242;--vnmade-ink-500: #475569;--vnmade-ink-400: #64748b;--vnmade-ink-300: #94a3b8;--vnmade-ink-200: #cbd5e1;--vnmade-canvas: #f6f8fb;--vnmade-surface: #ffffff;--vnmade-surface-sunken: #f0f3f9;--vnmade-surface-raised: #ffffff;--vnmade-hairline: #e3e7ee;--vnmade-hairline-strong: #d3dae5;--vnmade-ok-700: #1b6e3c;--vnmade-ok-100: #e7f5ec;--vnmade-warn-700: #b26a00;--vnmade-warn-100: #fff6e5;--vnmade-danger-700: #c62828;--vnmade-danger-100: #fdecec;--vnmade-info-700: #1d4ed8;--vnmade-info-100: #eef2ff;--vnmade-neutral-700: #475569;--vnmade-neutral-100: #eef1f6;--vnmade-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--vnmade-font-mono: "SF Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--vnmade-text-2xs: 11px;--vnmade-text-xs: 12px;--vnmade-text-sm: 13px;--vnmade-text-md: 14px;--vnmade-text-lg: 16px;--vnmade-text-xl: 20px;--vnmade-text-2xl: 26px;--vnmade-text-3xl: 34px;--vnmade-radius-xs: 6px;--vnmade-radius-sm: 8px;--vnmade-radius-md: 12px;--vnmade-radius-lg: 16px;--vnmade-radius-pill: 999px;--vnmade-space-1: 4px;--vnmade-space-2: 8px;--vnmade-space-3: 12px;--vnmade-space-4: 16px;--vnmade-space-5: 20px;--vnmade-space-6: 24px;--vnmade-space-8: 32px;--vnmade-space-10: 40px;--vnmade-space-12: 48px;--vnmade-sidebar-w: 268px;--vnmade-topbar-h: 60px;--vnmade-shadow-xs: 0 1px 2px rgba(14, 20, 32, .05);--vnmade-shadow-sm: 0 1px 3px rgba(14, 20, 32, .07), 0 1px 2px rgba(14, 20, 32, .04);--vnmade-shadow-md: 0 4px 14px rgba(14, 20, 32, .08), 0 1px 3px rgba(14, 20, 32, .05);--vnmade-shadow-lg: 0 18px 48px rgba(14, 20, 32, .16);--vnmade-ring: 0 0 0 3px rgba(29, 78, 216, .18);--vnmade-ease: cubic-bezier(.22, .61, .36, 1);--vnmade-dur-fast: .12s;--vnmade-dur: .18s}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--vnmade-font);font-size:var(--vnmade-text-md);line-height:1.55;color:var(--vnmade-ink-700);background:var(--vnmade-canvas);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,p,figure{margin:0}a{color:var(--vnmade-blue-700);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}code,kbd,samp{font-family:var(--vnmade-font-mono);font-size:.92em}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.mono{font-family:var(--vnmade-font-mono);font-size:var(--vnmade-text-xs)}.muted{color:var(--vnmade-ink-400)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app{display:grid;grid-template-columns:var(--vnmade-sidebar-w) minmax(0,1fr);min-height:100%}.sidebar{position:sticky;top:0;align-self:start;height:100vh;display:flex;flex-direction:column;color:#e7ecf5;background:linear-gradient(180deg,#0b111c,#101a2b 62%,#0d1626);border-right:1px solid rgba(255,255,255,.06)}.sidebar__brand{display:flex;align-items:center;gap:var(--vnmade-space-3);padding:18px var(--vnmade-space-5) 16px;border-bottom:1px solid rgba(255,255,255,.07)}.sidebar__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(145deg,var(--vnmade-blue-600),var(--vnmade-blue-800));box-shadow:0 6px 18px #1d4ed866;font-weight:800;font-size:15px;letter-spacing:-.02em;color:#fff}.sidebar__wordmark{display:flex;flex-direction:column;line-height:1.2}.sidebar__wordmark strong{font-size:var(--vnmade-text-md);font-weight:700;letter-spacing:-.01em;color:#fff}.sidebar__wordmark span{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#7f8ea8}.sidebar__nav{flex:1;overflow-y:auto;padding:var(--vnmade-space-3) var(--vnmade-space-3) var(--vnmade-space-6);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.16) transparent}.sidebar__group{margin-top:var(--vnmade-space-4)}.sidebar__group:first-child{margin-top:0}.sidebar__group-label{display:flex;align-items:center;justify-content:space-between;padding:0 var(--vnmade-space-3);margin-bottom:6px;font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#64748b}.sidebar__group-count{font-family:var(--vnmade-font-mono);font-size:10px;letter-spacing:0;color:#475569}.sidebar__link{position:relative;display:flex;align-items:center;gap:var(--vnmade-space-2);padding:7px var(--vnmade-space-3);margin-bottom:1px;border-radius:var(--vnmade-radius-sm);color:#b9c4d6;font-size:var(--vnmade-text-sm);text-decoration:none;transition:background var(--vnmade-dur-fast) var(--vnmade-ease),color var(--vnmade-dur-fast) var(--vnmade-ease)}.sidebar__link:hover{background:#ffffff0d;color:#fff;text-decoration:none}.sidebar__link.is-active{background:#2563eb2e;color:#fff;font-weight:600}.sidebar__link.is-active:before{content:"";position:absolute;left:-3px;top:6px;bottom:6px;width:3px;border-radius:3px;background:var(--vnmade-blue-600)}.sidebar__dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.45;flex:none}.sidebar__link.is-active .sidebar__dot{opacity:1;background:var(--vnmade-blue-600);box-shadow:0 0 0 3px #2563eb40}.sidebar__footer{padding:var(--vnmade-space-3) var(--vnmade-space-4) var(--vnmade-space-4);border-top:1px solid rgba(255,255,255,.07);font-size:var(--vnmade-text-2xs);color:#64748b;line-height:1.6}.sidebar__footer code{color:#94a3b8}.topbar{position:sticky;top:0;z-index:20;height:var(--vnmade-topbar-h);display:flex;align-items:center;gap:var(--vnmade-space-4);padding:0 var(--vnmade-space-6);background:#ffffffdb;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--vnmade-hairline)}.topbar__crumbs{display:flex;align-items:center;gap:6px;font-size:var(--vnmade-text-sm);color:var(--vnmade-ink-400);min-width:0}.topbar__crumbs strong{color:var(--vnmade-ink-900);font-weight:600}.topbar__sep{color:var(--vnmade-ink-200)}.topbar__search{position:relative;flex:1;max-width:420px;margin-left:auto}.topbar__search input{width:100%;height:34px;padding:0 10px 0 32px;border:1px solid var(--vnmade-hairline-strong);border-radius:var(--vnmade-radius-sm);background:var(--vnmade-surface-sunken);font-size:var(--vnmade-text-sm);color:var(--vnmade-ink-800);transition:border-color var(--vnmade-dur-fast),box-shadow var(--vnmade-dur-fast),background var(--vnmade-dur-fast)}.topbar__search input:focus{outline:none;background:#fff;border-color:var(--vnmade-blue-600);box-shadow:var(--vnmade-ring)}.topbar__search svg{position:absolute;left:10px;top:9px;color:var(--vnmade-ink-300)}.tenant-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid var(--vnmade-hairline-strong);border-radius:var(--vnmade-radius-pill);background:#fff;font-size:var(--vnmade-text-xs);color:var(--vnmade-ink-500);max-width:260px}.tenant-chip strong{color:var(--vnmade-ink-800);font-weight:600}.main{min-width:0;display:flex;flex-direction:column}.page{flex:1;padding:var(--vnmade-space-6) var(--vnmade-space-8) var(--vnmade-space-12);max-width:1480px;width:100%}.page__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--vnmade-space-6);margin-bottom:var(--vnmade-space-5)}.page__title{display:flex;align-items:center;gap:var(--vnmade-space-3);flex-wrap:wrap}.page__title h1{font-size:var(--vnmade-text-2xl);font-weight:700;letter-spacing:-.02em;color:var(--vnmade-ink-900);line-height:1.2}.page__sub{margin-top:4px;font-size:var(--vnmade-text-sm);color:var(--vnmade-ink-400);max-width:78ch}.page__actions{display:flex;align-items:center;gap:var(--vnmade-space-2);flex:none}.stack{display:flex;flex-direction:column;gap:var(--vnmade-space-4)}.stack--sm{gap:var(--vnmade-space-2)}.row{display:flex;align-items:center;gap:var(--vnmade-space-3);flex-wrap:wrap}.row--between{justify-content:space-between}.grid{display:grid;gap:var(--vnmade-space-4)}.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid--sidebar{grid-template-columns:minmax(0,2.1fr) minmax(280px,1fr);align-items:start}@media (max-width: 1180px){.grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid--3,.grid--sidebar{grid-template-columns:minmax(0,1fr)}}@media (max-width: 860px){.grid--2,.grid--4{grid-template-columns:minmax(0,1fr)}.app{grid-template-columns:1fr}.sidebar{display:none}.page{padding:var(--vnmade-space-4)}}.card{background:var(--vnmade-surface);border:1px solid var(--vnmade-hairline);border-radius:var(--vnmade-radius-md);box-shadow:var(--vnmade-shadow-xs)}.card__head{display:flex;align-items:center;justify-content:space-between;gap:var(--vnmade-space-3);padding:14px var(--vnmade-space-5);border-bottom:1px solid var(--vnmade-hairline)}.card__head h2,.card__head h3{font-size:var(--vnmade-text-md);font-weight:650;color:var(--vnmade-ink-900);letter-spacing:-.01em}.card__body{padding:var(--vnmade-space-5)}.card__body--flush{padding:0}.metric{padding:var(--vnmade-space-4) var(--vnmade-space-5)}.metric__label{display:flex;align-items:center;gap:6px;font-size:var(--vnmade-text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--vnmade-ink-400)}.metric__value{margin-top:6px;font-size:28px;font-weight:700;letter-spacing:-.03em;color:var(--vnmade-ink-900);font-variant-numeric:tabular-nums;line-height:1.15}.metric__hint{margin-top:2px;font-size:var(--vnmade-text-xs);color:var(--vnmade-ink-400)}.table-wrap{width:100%;overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:var(--vnmade-text-sm)}table.table th{position:sticky;top:0;z-index:1;padding:10px var(--vnmade-space-4);text-align:left;font-size:var(--vnmade-text-2xs);font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--vnmade-ink-400);background:var(--vnmade-surface-sunken);border-bottom:1px solid var(--vnmade-hairline);white-space:nowrap}table.table td{padding:11px var(--vnmade-space-4);border-bottom:1px solid var(--vnmade-hairline);color:var(--vnmade-ink-700);vertical-align:middle}table.table tbody tr:last-child td{border-bottom:none}table.table tbody tr:hover td{background:#fafbfe}table.table td.is-num,table.table th.is-num{text-align:right;font-variant-numeric:tabular-nums}table.table td.is-key{font-family:var(--vnmade-font-mono);font-size:var(--vnmade-text-xs);color:var(--vnmade-ink-500)}.pill{display:inline-flex;align-items:center;gap:5px;height:21px;padding:0 8px;border-radius:var(--vnmade-radius-pill);font-size:var(--vnmade-text-2xs);font-weight:650;letter-spacing:.02em;white-space:nowrap;border:1px solid transparent}.pill--ok{color:var(--vnmade-ok-700);background:var(--vnmade-ok-100);border-color:#cbe8d6}.pill--warn{color:var(--vnmade-warn-700);background:var(--vnmade-warn-100);border-color:#f6e0b8}.pill--danger{color:var(--vnmade-danger-700);background:var(--vnmade-danger-100);border-color:#f6cfcf}.pill--info{color:var(--vnmade-info-700);background:var(--vnmade-info-100);border-color:#cfdcff}.pill--neutral{color:var(--vnmade-neutral-700);background:var(--vnmade-neutral-100);border-color:#dfe5ee}.pill__dot{width:5px;height:5px;border-radius:50%;background:currentColor}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--vnmade-radius-sm);border:1px solid var(--vnmade-hairline-strong);background:#fff;color:var(--vnmade-ink-700);font-size:var(--vnmade-text-sm);font-weight:600;white-space:nowrap;transition:background var(--vnmade-dur-fast),border-color var(--vnmade-dur-fast),box-shadow var(--vnmade-dur-fast),transform var(--vnmade-dur-fast)}.btn:hover{background:var(--vnmade-surface-sunken);text-decoration:none}.btn:active{transform:translateY(.5px)}.btn:focus-visible{outline:none;box-shadow:var(--vnmade-ring)}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn--primary{background:linear-gradient(180deg,var(--vnmade-blue-600),var(--vnmade-blue-700));border-color:var(--vnmade-blue-700);color:#fff;box-shadow:0 1px 2px #152a6b3d}.btn--primary:hover{background:linear-gradient(180deg,var(--vnmade-blue-700),var(--vnmade-blue-800))}.btn--ghost{border-color:transparent;background:transparent;color:var(--vnmade-ink-500)}.btn--ghost:hover{background:var(--vnmade-surface-sunken)}.btn--danger{color:var(--vnmade-danger-700);border-color:#f0c9c9;background:#fff}.btn--danger:hover{background:var(--vnmade-danger-100)}.btn--sm{height:28px;padding:0 10px;font-size:var(--vnmade-text-xs)}.btn--block{width:100%}.field{display:flex;flex-direction:column;gap:5px}.field>label,.field__label{font-size:var(--vnmade-text-xs);font-weight:600;color:var(--vnmade-ink-500)}.field__hint{font-size:var(--vnmade-text-2xs);color:var(--vnmade-ink-300)}.input,.select,.textarea{width:100%;min-height:34px;padding:7px 10px;border:1px solid var(--vnmade-hairline-strong);border-radius:var(--vnmade-radius-sm);background:#fff;font:inherit;font-size:var(--vnmade-text-sm);color:var(--vnmade-ink-800);transition:border-color var(--vnmade-dur-fast),box-shadow var(--vnmade-dur-fast)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--vnmade-blue-600);box-shadow:var(--vnmade-ring)}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:#e38b8b}.textarea{min-height:84px;resize:vertical;font-family:var(--vnmade-font-mono);font-size:var(--vnmade-text-xs);line-height:1.6}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vnmade-space-4)}.form-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid>.span-2{grid-column:span 2}@media (max-width: 860px){.form-grid,.form-grid--3{grid-template-columns:minmax(0,1fr)}.form-grid>.span-2{grid-column:span 1}}.notice{display:flex;gap:var(--vnmade-space-3);padding:12px var(--vnmade-space-4);border-radius:var(--vnmade-radius-sm);border:1px solid var(--vnmade-hairline-strong);background:var(--vnmade-surface-sunken);font-size:var(--vnmade-text-sm);color:var(--vnmade-ink-600)}.notice--error{border-color:#f0c9c9;background:var(--vnmade-danger-100);color:var(--vnmade-danger-700)}.notice--warn{border-color:#f6e0b8;background:var(--vnmade-warn-100);color:var(--vnmade-warn-700)}.notice--ok{border-color:#cbe8d6;background:var(--vnmade-ok-100);color:var(--vnmade-ok-700)}.notice--info{border-color:#cfdcff;background:var(--vnmade-info-100);color:var(--vnmade-info-700)}.notice strong{font-weight:650}.notice code{background:#fff9;padding:1px 5px;border-radius:4px}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--vnmade-space-2);padding:var(--vnmade-space-10) var(--vnmade-space-5);text-align:center;color:var(--vnmade-ink-400)}.empty__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--vnmade-surface-sunken);color:var(--vnmade-ink-300)}.empty strong{color:var(--vnmade-ink-700);font-weight:650}.empty p{font-size:var(--vnmade-text-sm);max-width:52ch}.kv{display:grid;grid-template-columns:minmax(120px,max-content) minmax(0,1fr);gap:8px var(--vnmade-space-5);font-size:var(--vnmade-text-sm)}.kv dt{color:var(--vnmade-ink-400);font-size:var(--vnmade-text-xs);font-weight:600;letter-spacing:.02em}.kv dd{margin:0;color:var(--vnmade-ink-800);word-break:break-word}.codeblock{margin:0;padding:var(--vnmade-space-4);border-radius:var(--vnmade-radius-sm);background:var(--vnmade-ink-900);color:#d5deec;font-family:var(--vnmade-font-mono);font-size:var(--vnmade-text-xs);line-height:1.65;overflow:auto;max-height:340px}.section-label{font-size:var(--vnmade-text-2xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--vnmade-ink-300)}.divider{height:1px;background:var(--vnmade-hairline);border:0;margin:0}.skeleton{border-radius:var(--vnmade-radius-sm);background:linear-gradient(90deg,#eef1f6 25%,#f6f8fb 37%,#eef1f6 63%);background-size:400% 100%;animation:vnmade-shimmer 1.3s ease infinite}@keyframes vnmade-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:vnmade-spin .7s linear infinite}.spinner--ink{border-color:#0e142026;border-top-color:var(--vnmade-ink-500)}@keyframes vnmade-spin{to{transform:rotate(360deg)}}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;grid-template-columns:minmax(0,1fr) 420px}.drawer__scrim{background:#0b111c66;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.drawer__panel{display:flex;flex-direction:column;background:#fff;border-left:1px solid var(--vnmade-hairline);box-shadow:var(--vnmade-shadow-lg);overflow-y:auto}.drawer__head{display:flex;align-items:center;justify-content:space-between;padding:var(--vnmade-space-4) var(--vnmade-space-5);border-bottom:1px solid var(--vnmade-hairline)}.drawer__body{padding:var(--vnmade-space-5);display:flex;flex-direction:column;gap:var(--vnmade-space-4)}.toasts{position:fixed;right:var(--vnmade-space-6);bottom:var(--vnmade-space-6);z-index:80;display:flex;flex-direction:column;gap:var(--vnmade-space-2);max-width:420px}.toast{display:flex;gap:var(--vnmade-space-3);padding:12px var(--vnmade-space-4);border-radius:var(--vnmade-radius-sm);background:var(--vnmade-ink-900);color:#e7ecf5;font-size:var(--vnmade-text-sm);box-shadow:var(--vnmade-shadow-lg);animation:vnmade-toast-in var(--vnmade-dur) var(--vnmade-ease)}.toast--error{background:#4a1518;color:#ffd9d9}.toast--ok{background:#0f2e1c;color:#cdeed7}@keyframes vnmade-toast-in{0%{opacity:0;transform:translateY(6px)}}.tag{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border-radius:var(--vnmade-radius-xs);background:var(--vnmade-surface-sunken);border:1px solid var(--vnmade-hairline);font-family:var(--vnmade-font-mono);font-size:10.5px;color:var(--vnmade-ink-500);white-space:nowrap}.tag--method-post{color:var(--vnmade-blue-700);background:var(--vnmade-blue-050);border-color:#cfdcff}.tag--method-get{color:var(--vnmade-ok-700);background:var(--vnmade-ok-100);border-color:#cbe8d6}.tag--method-put,.tag--method-patch{color:var(--vnmade-warn-700);background:var(--vnmade-warn-100);border-color:#f6e0b8}.timeline{position:relative;padding-left:22px}.timeline:before{content:"";position:absolute;left:5px;top:4px;bottom:4px;width:1px;background:var(--vnmade-hairline-strong)}.timeline__item{position:relative;padding-bottom:var(--vnmade-space-4)}.timeline__item:last-child{padding-bottom:0}.timeline__item:before{content:"";position:absolute;left:-21px;top:5px;width:9px;height:9px;border-radius:50%;background:#fff;border:2px solid var(--vnmade-blue-600)}.timeline__item--done:before{background:var(--vnmade-blue-600)}.timeline__title{font-size:var(--vnmade-text-sm);font-weight:600;color:var(--vnmade-ink-800)}.timeline__meta{font-size:var(--vnmade-text-2xs);color:var(--vnmade-ink-400)}.bar{height:6px;border-radius:var(--vnmade-radius-pill);background:var(--vnmade-surface-sunken);overflow:hidden}.bar__fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--vnmade-blue-600),var(--vnmade-blue-800))}.bar__fill--warn{background:linear-gradient(90deg,#f7b955,var(--vnmade-amber-700))}.bar__fill--ok{background:linear-gradient(90deg,#34a853,var(--vnmade-ok-700))}
