:root{--brand-navy: #002639;--brand-bronze: #c38228;--brand-bronze-hover:#998b7a;--brand-muted: #8b8d94;--brand-muted-2: #adafb3;--brand-surface: #fdfdfd;--brand-border: rgba(0, 38, 57, .12);--navy-950: #00131d;--navy-900: #001a28;--navy-800: #002639;--navy-700: #0a344a;--navy-600: #12435a;--navy-500: #1c5670;--navy-400: #3a6d85;--navy-300: #7996a5;--navy-200: #b7c6cf;--navy-100: #dbe3e8;--navy-050: #eef2f4;--navy-025: #f6f8f9;--bronze-800: #5f4111;--bronze-700: #7a5316;--bronze-600: #935f14;--bronze-500: #c38228;--bronze-400: #d79a46;--bronze-300: #e5b573;--bronze-200: #efce9d;--bronze-100: #f6e6cc;--bronze-050: #faf1e2;--green-500:#1f9d5a;--green-600:#178049;--green-700:#0f6a3b;--green-100:#d6f0e0;--green-900:#0c3a22;--green-300:#4cbf83;--amber-500:#c2610f;--amber-600:#a4530b;--amber-100:#fbe4cf;--amber-900:#4a2405;--amber-300:#e08a3c;--red-500:#d8443c;--red-600:#b8362f;--red-100:#fadedd;--red-900:#4a1512;--red-300:#ef6f66;--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:2.5rem;--space-8:3rem;--space-9:4rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:999px;--font-sans:"Open Sans", Helvetica, Arial, Verdana, sans-serif;--font-mono:"SFMono-Regular", ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--leading-tight:1.2;--leading-normal:1.5;--weight-heading:300;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--tracking-wide:.04em;--shadow-sm:0 1px 2px rgba(0,38,57,.06);--shadow-md:0 2px 8px rgba(0,38,57,.08), 0 1px 2px rgba(0,38,57,.06);--shadow-lg:0 12px 32px rgba(0,38,57,.16);--ring:0 0 0 3px var(--color-focus-ring);--ease:cubic-bezier(.2,.6,.2,1);--dur-fast:.12s;--dur-med:.2s;--sidebar-w:248px;--topbar-h:56px;--content-max:1280px}:root,:root[data-theme=light]{color-scheme:light;--color-bg: var(--navy-050);--color-bg-subtle: var(--navy-025);--color-surface: #ffffff;--color-surface-2: var(--navy-025);--color-surface-sunken: var(--navy-050);--color-overlay: rgba(0, 38, 57, .45);--color-border: var(--brand-border);--color-border-strong: rgba(0, 38, 57, .22);--color-text: var(--brand-navy);--color-heading: var(--brand-navy);--color-text-muted: #566771;--color-text-subtle: var(--brand-muted);--color-text-onbrand: #ffffff;--color-primary: var(--bronze-500);--color-primary-hover: var(--brand-bronze-hover);--color-primary-active: var(--bronze-600);--color-primary-soft: var(--bronze-050);--color-primary-soft-text: var(--bronze-700);--color-link: var(--bronze-600);--color-focus-ring: rgba(195, 130, 40, .45);--color-nav-text: var(--brand-navy);--color-nav-active-bg: var(--bronze-050);--color-nav-active-text: var(--bronze-700);--color-success: var(--green-700);--color-success-soft:var(--green-100);--color-success-text:var(--green-900);--color-warning: var(--amber-600);--color-warning-soft:var(--amber-100);--color-warning-text:var(--amber-900);--color-danger: var(--red-600);--color-danger-hover:var(--red-500);--color-danger-soft:var(--red-100);--color-danger-text:var(--red-900);--color-neutral: var(--brand-muted);--color-neutral-soft:var(--navy-100);--color-selection: var(--bronze-100)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--color-bg: var(--navy-800);--color-bg-subtle: var(--navy-900);--color-surface: var(--navy-700);--color-surface-2: var(--navy-600);--color-surface-sunken: var(--navy-900);--color-overlay: rgba(0, 10, 16, .62);--color-border: rgba(255, 255, 255, .12);--color-border-strong: rgba(255, 255, 255, .24);--color-text: #eaf1f4;--color-heading: #f2f7f9;--color-text-muted: #a9bcc6;--color-text-subtle: #7f95a1;--color-text-onbrand: #ffffff;--color-primary: var(--bronze-500);--color-primary-hover: var(--bronze-400);--color-primary-active: var(--bronze-300);--color-primary-soft: rgba(195, 130, 40, .16);--color-primary-soft-text: var(--bronze-300);--color-link: var(--bronze-300);--color-focus-ring: rgba(217, 156, 70, .55);--color-nav-text: #cfe0e8;--color-nav-active-bg: rgba(195, 130, 40, .16);--color-nav-active-text: var(--bronze-300);--color-success: var(--green-300);--color-success-soft:rgba(31,157,90,.2);--color-success-text:#b6ecce;--color-warning: var(--amber-300);--color-warning-soft:rgba(180,83,9,.24);--color-warning-text:#f2c78e;--color-danger: var(--red-300);--color-danger-hover:#f28b83;--color-danger-soft:rgba(216,68,60,.22);--color-danger-text:#f6c0bb;--color-neutral: #9fb2bd;--color-neutral-soft:rgba(255,255,255,.1);--color-selection: rgba(195, 130, 40, .3);--shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow-md:0 2px 10px rgba(0,0,0,.45);--shadow-lg:0 16px 40px rgba(0,0,0,.55)}}:root[data-theme=dark]{color-scheme:dark;--color-bg: var(--navy-800);--color-bg-subtle: var(--navy-900);--color-surface: var(--navy-700);--color-surface-2: var(--navy-600);--color-surface-sunken: var(--navy-900);--color-overlay: rgba(0, 10, 16, .62);--color-border: rgba(255, 255, 255, .12);--color-border-strong: rgba(255, 255, 255, .24);--color-text: #eaf1f4;--color-heading: #f2f7f9;--color-text-muted: #a9bcc6;--color-text-subtle: #7f95a1;--color-text-onbrand: #ffffff;--color-primary: var(--bronze-500);--color-primary-hover: var(--bronze-400);--color-primary-active: var(--bronze-300);--color-primary-soft: rgba(195, 130, 40, .16);--color-primary-soft-text: var(--bronze-300);--color-link: var(--bronze-300);--color-focus-ring: rgba(217, 156, 70, .55);--color-nav-text: #cfe0e8;--color-nav-active-bg: rgba(195, 130, 40, .16);--color-nav-active-text: var(--bronze-300);--color-success: var(--green-300);--color-success-soft:rgba(31,157,90,.2);--color-success-text:#b6ecce;--color-warning: var(--amber-300);--color-warning-soft:rgba(180,83,9,.24);--color-warning-text:#f2c78e;--color-danger: var(--red-300);--color-danger-hover:#f28b83;--color-danger-soft:rgba(216,68,60,.22);--color-danger-text:#f6c0bb;--color-neutral: #9fb2bd;--color-neutral-soft:rgba(255,255,255,.1);--color-selection: rgba(195, 130, 40, .3);--shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow-md:0 2px 10px rgba(0,0,0,.45);--shadow-lg:0 16px 40px rgba(0,0,0,.55)}::selection{background:var(--color-selection)}:root{--brand-font: var(--font-sans);--brand-heading-weight: 300;--brand-body-weight: 400;--brand-bold-weight: 600;--chrome-bg: var(--brand-navy);--chrome-text: #eaf1f4;--chrome-text-muted: #9fb4c0;--chrome-active: var(--brand-bronze)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);font-weight:var(--brand-body-weight, 400);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg)}h1,h2,h3,h4{font-weight:var(--brand-heading-weight, 300);color:var(--color-text);line-height:var(--leading-tight);margin:0 0 var(--space-4)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:flex;min-height:100%}.sidebar{width:var(--sidebar-w);background:var(--chrome-bg);color:var(--chrome-text);display:flex;flex-direction:column;padding:var(--space-4);gap:var(--space-2)}.sidebar .logo-chip{background:#fff;border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-4);display:flex;justify-content:center}.sidebar .logo-chip img{max-width:100%;height:auto;display:block}.nav-link{color:var(--chrome-text-muted);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm)}.nav-link:hover{color:var(--chrome-text);text-decoration:none;background:#ffffff0f}.nav-link.active{color:var(--color-text-onbrand);background:var(--chrome-active)}.nav-section-label{text-transform:uppercase;letter-spacing:var(--tracking-wide);font-size:var(--text-xs);color:var(--chrome-text-muted);margin:var(--space-4) 0 var(--space-1)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-5);background:var(--color-surface)}.content{padding:var(--space-6);max-width:var(--content-max);width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5);margin-bottom:var(--space-5)}table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}th,td{text-align:left;padding:var(--space-3);border-bottom:1px solid var(--color-border)}th{text-transform:uppercase;letter-spacing:var(--tracking-wide);font-size:var(--text-xs);color:var(--color-text-muted);background:var(--color-surface-2)}.table-wrap{overflow-x:auto}button,.btn{font-family:inherit;font-size:var(--text-sm);font-weight:var(--brand-bold-weight, 600);border:1px solid transparent;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-4);cursor:pointer;transition:background var(--dur-fast) var(--ease)}.btn-primary{background:var(--color-primary);color:var(--color-text-onbrand)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:var(--color-danger-hover)}button:disabled{opacity:.5;cursor:not-allowed}input,select{font-family:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}input:focus,select:focus,button:focus-visible{outline:none;box-shadow:var(--ring)}.badge{display:inline-block;padding:2px var(--space-2);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--brand-bold-weight, 600)}.badge-active{background:var(--color-success-soft);color:var(--color-success-text)}.badge-revoked{background:var(--color-danger-soft);color:var(--color-danger-text)}.login-wrap{min-height:100%;display:grid;place-items:center;background:var(--color-bg);padding:var(--space-6)}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:var(--space-8);width:100%;max-width:400px;text-align:center}.login-card .logo-chip{background:#fff;border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-6);display:inline-block}.login-card .logo-chip img{max-width:240px;height:auto}.row{display:flex;gap:var(--space-3);align-items:center}.spread{justify-content:space-between}.muted{color:var(--color-text-muted)}.stack>*+*{margin-top:var(--space-4)}.error-banner{background:var(--color-danger-soft);color:var(--color-danger-text);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-sm)}.ok-banner{background:var(--color-success-soft);color:var(--color-success-text);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-sm)}.mono{font-family:var(--font-mono)}.hint{font-size:var(--text-xs);color:var(--color-text-muted)}.t-mut{color:var(--color-text-muted)}.t-strong{font-weight:var(--weight-semibold);color:var(--color-text)}.section-title{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--color-text-muted);font-weight:var(--weight-semibold);margin:0 0 var(--space-3)}.page-head{display:flex;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}.page-head .t h1{margin:0;font-size:var(--text-xl)}.page-head .t p{margin:4px 0 0;color:var(--color-text-muted);font-size:var(--text-sm)}.page-head .actions{margin-left:auto;display:flex;gap:var(--space-2);align-items:center}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn-ghost:hover{background:var(--color-surface-sunken);color:var(--color-text)}.btn-sm{padding:5px 10px;font-size:var(--text-xs)}button.btn-danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}button.btn-danger:hover{background:var(--color-danger-soft)}.card.flush{padding:0}.card-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.card-head h3{margin:0;font-size:var(--text-md)}.card-head .sub{font-size:var(--text-xs);color:var(--color-text-muted)}.card-head .actions{margin-left:auto;display:flex;gap:var(--space-2)}.card-pad{padding:var(--space-4) var(--space-5)}.toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.toolbar .search{position:relative;flex:1 1 240px;min-width:180px;max-width:340px;display:flex;align-items:center}.toolbar .search svg{position:absolute;left:10px;width:15px;height:15px;color:var(--color-text-subtle);pointer-events:none}.toolbar .search input{width:100%;padding-left:32px}.toolbar .right{margin-left:auto;display:flex;align-items:center;gap:var(--space-3)}.results-count{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.filter-wrap{position:relative}.filter-btn{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:7px 11px;cursor:pointer;white-space:nowrap;min-height:34px}.filter-btn:hover{background:var(--color-surface-sunken)}.filter-btn svg{width:12px;height:12px;color:var(--color-text-subtle)}.filter-btn.on{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-soft-text)}.filter-btn .cv{min-width:16px;height:16px;padding:0 5px;display:inline-grid;place-items:center;border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-primary-soft-text);font-size:10px;font-weight:var(--weight-bold)}.filter-btn.on .cv{background:var(--color-primary);color:var(--color-text-onbrand)}.filter-pop{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:220px;max-height:300px;overflow:auto;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-2);display:flex;flex-direction:column;gap:2px}.filter-pop .opt{display:flex;align-items:center;gap:var(--space-2);padding:7px var(--space-3);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm)}.filter-pop .opt:hover{background:var(--color-surface-sunken)}.filter-pop .opt input{width:15px;height:15px;accent-color:var(--color-primary)}.chips{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.chips .lead{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--color-text-subtle);font-weight:var(--weight-semibold)}.chip{display:inline-flex;align-items:center;gap:7px;font-size:var(--text-xs);font-weight:var(--weight-semibold);background:var(--color-primary-soft);color:var(--color-primary-soft-text);border-radius:var(--radius-pill);padding:4px 6px 4px 11px}.chip .k{color:var(--color-text-muted);font-weight:var(--weight-medium)}.chip button{display:inline-grid;place-items:center;width:16px;height:16px;border:0;border-radius:50%;cursor:pointer;background:transparent;color:inherit;padding:0;font-size:12px;line-height:1}.chip button:hover{background:#0000001f}.chip-clear{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-link);background:none;border:0;cursor:pointer;padding:4px 6px}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);padding:var(--space-8) var(--space-5)}.empty .ico{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--color-surface-sunken);color:var(--color-text-subtle);font-size:24px}.empty h4{margin:0;font-size:var(--text-md);font-weight:var(--weight-semibold)}.empty p{margin:0;font-size:var(--text-sm);color:var(--color-text-muted);max-width:44ch}mark{background:var(--color-primary-soft);color:var(--color-primary-soft-text);border-radius:2px;padding:0 1px}.cell-main{display:flex;align-items:center;gap:var(--space-3)}.ves-ico{width:30px;height:30px;border-radius:8px;background:var(--color-primary-soft);color:var(--color-primary-soft-text);display:grid;place-items:center;flex:none;font-size:15px}.c-ava{width:30px;height:30px;border-radius:50%;background:var(--color-primary-soft);color:var(--color-primary-soft-text);display:grid;place-items:center;font-size:var(--text-xs);font-weight:var(--weight-bold);flex:none}.rowlink{color:var(--color-text);font-weight:var(--weight-semibold)}.rowlink:hover{color:var(--color-primary);text-decoration:none}.row-actions{display:flex;gap:4px;justify-content:flex-end}.icon-btn{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--color-text-muted);cursor:pointer;font-size:15px}.icon-btn:hover{background:var(--color-surface-sunken);color:var(--color-text)}.icon-btn.danger:hover{background:var(--color-danger-soft);color:var(--color-danger)}.badge-success{background:var(--color-success-soft);color:var(--color-success-text)}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger-text)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning-text)}.badge-neutral{background:var(--color-neutral-soft);color:var(--color-text-muted)}.badge-type{background:var(--color-primary-soft);color:var(--color-primary-soft-text)}.badge .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:5px;vertical-align:middle}.vtags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.vtag{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs);font-weight:var(--weight-medium);background:var(--color-surface-sunken);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:3px 9px}.vtag.none{color:var(--color-text-subtle);font-style:italic;background:transparent;border-style:dashed}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3) var(--space-4)}.form-grid .span-2{grid-column:1 / -1}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:var(--text-sm);font-weight:var(--weight-medium)}.field.req label:after{content:" *";color:var(--color-danger)}.field .err{font-size:var(--text-xs);color:var(--color-danger)}.field input,.field select{width:100%}.check-list{display:flex;flex-direction:column;gap:2px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2);max-height:230px;overflow:auto;background:var(--color-bg)}.check-row{display:flex;align-items:center;gap:var(--space-3);padding:8px var(--space-3);border-radius:var(--radius-sm);cursor:pointer}.check-row:hover{background:var(--color-surface-sunken)}.check-row input{width:16px;height:16px;accent-color:var(--color-primary)}.check-row .meta{font-size:var(--text-xs);color:var(--color-text-muted);margin-left:auto}.dropzone{display:flex;align-items:center;gap:var(--space-4);border:1.5px dashed var(--color-border-strong);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.dropzone.dragover{border-color:var(--color-primary);background:var(--color-primary-soft)}.dropzone .dz-ico{width:44px;height:44px;border-radius:var(--radius-md);display:grid;place-items:center;background:var(--color-primary-soft);color:var(--color-primary-soft-text);flex:none;font-size:22px}.dropzone .dz-t{font-size:var(--text-sm);font-weight:var(--weight-semibold)}.dropzone .dz-s{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:2px}.dropzone .dz-act{margin-left:auto;display:flex;gap:var(--space-2)}.dz-loaded{border-style:solid;border-color:var(--color-success);background:var(--color-success-soft)}.dz-loaded .dz-ico{background:var(--color-success);color:#fff}.file-pill{display:inline-flex;align-items:center;gap:7px;font-size:var(--text-xs);font-weight:var(--weight-medium);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:4px 11px;font-family:var(--font-mono)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-overlay);display:grid;place-items:center;padding:var(--space-5);z-index:100}.dialog{width:100%;max-width:560px;max-height:90vh;overflow:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.dialog .dlg-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.dialog .dlg-head h3{margin:0;font-size:var(--text-md)}.dialog .dlg-body{padding:var(--space-5)}.dialog .dlg-foot{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border)}@media (max-width: 640px){.form-grid{grid-template-columns:1fr}}
