:root{--color-primary-50:#eff6ff;--color-primary-100:#dbeafe;--color-primary-200:#bfdbfe;--color-primary-300:#93c5fd;--color-primary-400:#60a5fa;--color-primary-500:#3b82f6;--color-primary-600:#2563eb;--color-primary-700:#1d4ed8;--color-primary-800:#1e40af;--color-primary-900:#1e3a8a;--color-neutral-50:#f8fafc;--color-neutral-100:#f1f5f9;--color-neutral-200:#e2e8f0;--color-neutral-300:#cbd5e1;--color-neutral-400:#94a3b8;--color-neutral-500:#64748b;--color-neutral-600:#475569;--color-neutral-700:#334155;--color-neutral-800:#1e293b;--color-neutral-900:#0f172a;--color-danger-50:#fef2f2;--color-danger-100:#fee2e2;--color-danger-300:#fca5a5;--color-danger-500:#ef4444;--color-danger-600:#dc2626;--color-danger-700:#b91c1c;--color-danger-900:#7f1d1d;--color-success-50:#f0fdf4;--color-success-100:#dcfce7;--color-success-300:#86efac;--color-success-500:#22c55e;--color-success-600:#16a34a;--color-success-700:#15803d;--color-success-900:#14532d;--color-white:#fff;--surface-page:var(--color-neutral-50);--surface-raised:var(--color-white);--surface-sunken:var(--color-neutral-100);--surface-hover:var(--color-neutral-100);--surface-active:var(--color-primary-50);--surface-scrim:#0f172a73;--text-strong:var(--color-neutral-900);--text-body:var(--color-neutral-600);--text-muted:var(--color-neutral-500);--text-on-accent:var(--color-white);--text-disabled:var(--color-neutral-400);--border-subtle:var(--color-neutral-200);--border-strong:var(--color-neutral-300);--border-focus:var(--color-primary-600);--accent:var(--color-primary-600);--accent-hover:var(--color-primary-700);--accent-active:var(--color-primary-800);--accent-soft:var(--color-primary-50);--accent-text:var(--color-primary-700);--danger:var(--color-danger-600);--danger-hover:var(--color-danger-700);--danger-soft:var(--color-danger-50);--danger-text:var(--color-danger-700);--ok:var(--color-success-600);--ok-soft:var(--color-success-50);--ok-text:var(--color-success-700);--warn-soft:var(--color-neutral-100);--warn-text:var(--color-neutral-700);--info-soft:var(--color-primary-50);--info-text:var(--color-primary-700);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--leading-tight:1.2;--leading-normal:1.5;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-pill:999px;--shadow-sm:0 1px 2px #0f172a0a;--shadow-md:0 4px 12px #0f172a14, 0 1px 2px #0f172a0a;--shadow-lg:0 16px 40px #0f172a29, 0 2px 8px #0f172a14;--z-sticky:10;--z-topbar:30;--z-drawer:40;--z-popover:60;--z-modal:100;--dur-fast:.12s;--dur-base:.18s;--ease-out:cubic-bezier(.2, .8, .3, 1);--row-h:40px;--row-head-h:36px;--control-h:36px;--control-h-touch:44px;--sidebar-w:248px;--sidebar-w-collapsed:64px;--topbar-h:56px;--content-max:1600px;font:var(--text-base) / var(--leading-normal) var(--font-sans);color:var(--text-body);background:var(--surface-page);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-page:var(--color-neutral-900);--surface-raised:var(--color-neutral-800);--surface-sunken:var(--color-neutral-900);--surface-hover:var(--color-neutral-700);--surface-active:#1e3a8a66;--surface-scrim:#020617b3;--text-strong:var(--color-neutral-50);--text-body:var(--color-neutral-300);--text-muted:var(--color-neutral-400);--text-disabled:var(--color-neutral-500);--border-subtle:var(--color-neutral-700);--border-strong:var(--color-neutral-600);--border-focus:var(--color-primary-400);--accent:var(--color-primary-600);--accent-hover:var(--color-primary-500);--accent-active:var(--color-primary-400);--accent-soft:#1e3a8a66;--accent-text:var(--color-primary-400);--danger:var(--color-danger-600);--danger-hover:var(--color-danger-500);--danger-soft:#7f1d1d4d;--danger-text:var(--color-danger-300);--ok:var(--color-success-600);--ok-soft:#14532d4d;--ok-text:var(--color-success-300);--warn-soft:var(--color-neutral-700);--warn-text:var(--color-neutral-200);--info-soft:#1e3a8a66;--info-text:var(--color-primary-300);--shadow-sm:none;--shadow-md:0 4px 12px #02061780;--shadow-lg:0 16px 40px #020617b3}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-page:var(--color-neutral-900);--surface-raised:var(--color-neutral-800);--surface-sunken:var(--color-neutral-900);--surface-hover:var(--color-neutral-700);--surface-active:#1e3a8a66;--surface-scrim:#020617b3;--text-strong:var(--color-neutral-50);--text-body:var(--color-neutral-300);--text-muted:var(--color-neutral-400);--text-disabled:var(--color-neutral-500);--border-subtle:var(--color-neutral-700);--border-strong:var(--color-neutral-600);--border-focus:var(--color-primary-400);--accent:var(--color-primary-600);--accent-hover:var(--color-primary-500);--accent-active:var(--color-primary-400);--accent-soft:#1e3a8a66;--accent-text:var(--color-primary-400);--danger:var(--color-danger-600);--danger-hover:var(--color-danger-500);--danger-soft:#7f1d1d4d;--danger-text:var(--color-danger-300);--ok:var(--color-success-600);--ok-soft:#14532d4d;--ok-text:var(--color-success-300);--warn-soft:var(--color-neutral-700);--warn-text:var(--color-neutral-200);--info-soft:#1e3a8a66;--info-text:var(--color-primary-300);--shadow-sm:none;--shadow-md:0 4px 12px #02061780;--shadow-lg:0 16px 40px #020617b3}}*,:before,:after{box-sizing:border-box}body{background:var(--surface-page);min-height:100svh;color:var(--text-body);margin:0}#root{min-height:100svh}h1,h2,h3,h4{font-family:var(--font-sans);color:var(--text-strong);line-height:var(--leading-tight);text-wrap:balance;margin:0}h1{font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:-.01em}h2{font-size:var(--text-xl);font-weight:var(--weight-semibold)}h3{font-size:var(--text-lg);font-weight:var(--weight-semibold)}h4{font-size:var(--text-base);font-weight:var(--weight-semibold)}p{margin:0}a{color:var(--accent-text);-webkit-text-decoration-color:color-mix(in srgb, currentColor 40%, transparent);text-decoration-color:color-mix(in srgb, currentColor 40%, transparent);text-underline-offset:2px}a:hover{text-decoration-color:currentColor}.u-wrap{overflow-wrap:anywhere}.u-num{font-variant-numeric:tabular-nums}.u-muted{color:var(--text-muted);font-size:var(--text-sm)}.u-strong{color:var(--text-strong);font-weight:var(--weight-semibold)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);grid-template-rows:var(--topbar-h) minmax(0, 1fr);min-height:100svh;transition:grid-template-columns var(--dur-base) var(--ease-out);grid-template-areas:"brand topbar""nav main";display:grid}.shell[data-collapsed=true]{grid-template-columns:var(--sidebar-w-collapsed) minmax(0, 1fr)}.brand{align-items:center;gap:var(--space-2);min-width:0;height:var(--topbar-h);padding:0 var(--space-4);background:var(--surface-raised);border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);grid-area:brand;display:flex}.brand-logo{align-items:center;min-width:0;display:inline-flex}.brand-asset{-webkit-user-select:none;user-select:none;width:auto;height:24px;display:none}.brand-logo-mark .brand-asset{height:28px}.brand-logo-stacked .brand-asset{height:96px}.brand-asset-light{display:block}:root[data-theme=dark] .brand-asset-light{display:none}:root[data-theme=dark] .brand-asset-dark{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .brand-asset-light{display:none}:root:not([data-theme=light]) .brand-asset-dark{display:block}}.brand-collapsed{display:none}.shell[data-collapsed=true] .brand{justify-content:center;padding:0}.shell[data-collapsed=true] .brand-expanded{display:none}.shell[data-collapsed=true] .brand-collapsed{display:inline-flex}.topbar{z-index:var(--z-topbar);align-items:center;gap:var(--space-2);height:var(--topbar-h);padding:0 var(--space-4);background:var(--surface-raised);border-bottom:1px solid var(--border-subtle);grid-area:topbar;display:flex;position:sticky;top:0}.topbar-spacer{flex:1}.skip-link{top:var(--space-2);left:var(--space-2);z-index:calc(var(--z-modal) + 1);transition:transform var(--dur-fast) var(--ease-out);position:absolute;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.topbar .topbar-brand{align-items:center;gap:var(--space-2);display:none}.topbar .drawer-toggle{display:none}.topbar .logout-label{display:inline}.topbar-user{flex-direction:column;align-items:flex-end;gap:1px;min-width:0;line-height:1.25;display:flex}.topbar-email{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;max-width:22ch;overflow:hidden}.topbar-role{font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap}.sidebar{gap:var(--space-1);min-height:0;padding:var(--space-3) var(--space-2) var(--space-4);background:var(--surface-raised);border-right:1px solid var(--border-subtle);overscroll-behavior:contain;flex-direction:column;grid-area:nav;display:flex;overflow-y:auto}.sidebar-group+.sidebar-group{margin-top:var(--space-3)}.sidebar-group-label{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);display:block}.sidebar-link{align-items:center;gap:var(--space-3);min-height:var(--row-h);padding:0 var(--space-3);border-radius:var(--radius-md);color:var(--text-body);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);text-decoration:none;display:flex}.sidebar-link-icon{width:20px;height:20px;color:var(--text-muted);flex:none;place-items:center;display:grid}.sidebar-link-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.sidebar-link:hover{background:var(--surface-hover);color:var(--text-strong)}.sidebar-link[aria-current=page]{background:var(--surface-active);color:var(--text-strong);font-weight:var(--weight-semibold);box-shadow:inset 3px 0 0 0 var(--accent)}.sidebar-link[aria-current=page] .sidebar-link-icon{color:var(--accent-text)}.shell[data-collapsed=true] .sidebar{padding-inline:var(--space-2)}.shell[data-collapsed=true] .sidebar-link{justify-content:center;padding:0}.shell[data-collapsed=true] .sidebar-link-label,.shell[data-collapsed=true] .sidebar-group-label{display:none}.shell[data-collapsed=true] .sidebar-group+.sidebar-group{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border-subtle)}.main{min-width:0;padding:var(--space-6) var(--space-6) var(--space-6);grid-area:main;overflow-x:hidden}.main-inner{max-width:var(--content-max)}.scrim{z-index:var(--z-drawer);background:var(--surface-scrim);cursor:pointer;animation:fade-in var(--dur-base) var(--ease-out);border:0;padding:0;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.page-head{align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.page-head-text{gap:var(--space-1);flex-direction:column;flex:24ch;min-width:0;display:flex}.page-head-desc{font-size:var(--text-sm);color:var(--text-muted);max-width:78ch}.page-head-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.stack{gap:var(--space-4);flex-direction:column;display:flex}.stack-tight{gap:var(--space-2);flex-direction:column;align-items:flex-start;display:flex}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.card{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-head{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;display:flex}.card-head-title{align-items:baseline;gap:var(--space-2);flex:auto;min-width:0;display:flex}.card-body{padding:var(--space-4)}.card-body-flush{padding:0}.toolbar{align-items:flex-end;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;display:flex}.toolbar-end{align-items:flex-end;gap:var(--space-2);margin-left:auto;display:flex}.toolbar>.btn,.toolbar-end>.btn{margin-bottom:0}.toolbar-count{font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;min-height:var(--control-h);align-items:center;display:flex}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--control-h);padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-raised);color:var(--text-strong);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;cursor:pointer;touch-action:manipulation;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);line-height:1;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-hover)}.btn:active:not(:disabled){border-color:var(--border-focus)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:active:not(:disabled){background:var(--accent-active);border-color:var(--accent-active)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--text-on-accent)}.btn-danger:hover:not(:disabled){background:var(--danger-hover);border-color:var(--danger-hover)}.btn-quiet{color:var(--text-body);background:0 0;border-color:#0000}.btn-quiet:hover:not(:disabled){background:var(--surface-hover);color:var(--text-strong)}.btn-icon{width:var(--control-h);min-width:var(--control-h);padding:0}.btn-sm{min-height:28px;padding:0 var(--space-2);font-size:var(--text-xs)}.btn-block{width:100%}.btn>svg{flex:none;width:16px;height:16px}.field{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.field-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-strong);line-height:1.3}.field-req{color:var(--danger-text);margin-left:2px}.field-hint{font-size:var(--text-xs);color:var(--text-muted);max-width:60ch}.field-error{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--danger-text)}.field-inline{align-items:center;gap:var(--space-2);flex-direction:row}.field-xs{flex:0 0 7rem;max-width:7rem}.field-sm{flex:0 0 11rem;max-width:11rem}.field-md{flex:0 0 16rem;max-width:16rem}.field-lg{flex:22rem}.input,.select,.textarea{width:100%;min-height:var(--control-h);padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-raised);color:var(--text-strong);font:inherit;font-size:var(--text-sm)}.textarea{min-height:calc(var(--control-h) * 2);padding:var(--space-2) var(--space-3);line-height:var(--leading-normal);resize:vertical}.input::placeholder,.textarea::placeholder{color:var(--text-disabled)}.input:hover:not(:disabled),.select:hover:not(:disabled),.textarea:hover:not(:disabled){border-color:var(--border-focus)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-sunken);color:var(--text-disabled);cursor:not-allowed}.input[readonly]{background:var(--surface-sunken);border-color:var(--border-subtle);color:var(--text-body)}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.select{padding-right:var(--space-2);cursor:pointer}.input[type=file]{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);cursor:pointer;display:flex}.input[type=file]::file-selector-button{min-height:calc(var(--control-h) - 10px);padding:0 var(--space-3);margin-right:var(--space-2);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--text-strong);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer}.input[type=file]:hover:not(:disabled)::file-selector-button{background:var(--surface-hover);border-color:var(--border-focus)}.checkbox{width:18px;height:18px;accent-color:var(--accent);cursor:pointer;flex:none}.field-row{align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.field-row>.btn{margin-top:calc(var(--text-sm) * 1.3 + var(--space-1))}.fieldset{border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);min-width:0;margin:0}.fieldset>legend{padding:0 var(--space-1);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.badge{vertical-align:middle;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-semibold);white-space:nowrap;line-height:1.5;display:inline-flex}.badge:before{content:"";border-radius:var(--radius-pill);background:currentColor;flex:none;width:6px;height:6px}.badge-neutral{background:var(--surface-sunken);color:var(--text-body)}.badge-info{background:var(--info-soft);color:var(--info-text)}.badge-warning{background:var(--warn-soft);color:var(--warn-text)}.badge-online{background:var(--ok-soft);color:var(--ok-text)}.badge-offline,.badge-critical{background:var(--danger-soft);color:var(--danger-text)}.badge-plain:before{display:none}.chip{min-height:var(--control-h);padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--text-body);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;touch-action:manipulation;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);align-items:center;display:inline-flex}.chip:hover{background:var(--surface-hover)}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--text-strong);font-weight:var(--weight-semibold)}.chip-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.msg{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);border:1px solid;border-left-width:3px;display:flex}.msg>svg{flex:none;width:18px;height:18px;margin-top:1px}.msg-body{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.msg-error{background:var(--danger-soft);border-color:var(--danger);color:var(--danger-text)}.msg-success{background:var(--ok-soft);border-color:var(--ok);color:var(--ok-text)}.msg-info{background:var(--info-soft);border-color:var(--accent);color:var(--info-text)}.msg-warning{background:var(--warn-soft);border-color:var(--border-strong);color:var(--warn-text)}.msg-list{padding-left:var(--space-4);margin:0}.msg-list li+li{margin-top:var(--space-1)}.text-danger{color:var(--danger-text);font-weight:var(--weight-semibold)}.text-ok{color:var(--ok-text)}.empty{align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);text-align:center;color:var(--text-muted);flex-direction:column;display:flex}.empty-icon{border-radius:var(--radius-pill);background:var(--surface-sunken);width:40px;height:40px;color:var(--text-muted);place-items:center;display:grid}.empty-title{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--text-strong)}.empty-desc{font-size:var(--text-sm);color:var(--text-muted);max-width:52ch}.loading{align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);color:var(--text-muted);font-size:var(--text-sm);justify-content:center;display:flex}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:var(--radius-pill);flex:none;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{height:var(--row-h);border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--surface-sunken) 25%, var(--surface-hover) 37%, var(--surface-sunken) 63%);background-size:400% 100%;animation:1.4s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.dt{min-width:0}.dt-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;overflow-x:auto}.dt table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--text-sm)}.dt thead th{z-index:var(--z-sticky);height:var(--row-head-h);padding:0 var(--space-3);background:var(--surface-sunken);border-bottom:1px solid var(--border-subtle);color:var(--text-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.04em;text-transform:uppercase;text-align:left;white-space:nowrap;vertical-align:middle;position:sticky;top:0}.dt tbody td{height:var(--row-h);padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--border-subtle);color:var(--text-body);text-align:left;vertical-align:middle;line-height:1}.dt tbody td.dt-wrap,.dt tbody td .stack-tight,.dt tbody td p{line-height:var(--leading-normal)}.dt tbody tr:last-child td{border-bottom:0}.dt tbody tr:hover td{background:var(--surface-hover)}.dt td.dt-cell-ident{color:var(--text-strong);font-weight:var(--weight-medium)}.dt th.dt-num,.dt td.dt-num{font-variant-numeric:tabular-nums}.dt th.dt-end,.dt td.dt-end{text-align:right}.dt td.dt-wrap{overflow-wrap:anywhere;white-space:normal;min-width:12ch}.dt th.dt-sortable{padding:0}.dt-sort-btn{align-items:center;gap:var(--space-1);width:100%;height:100%;min-height:var(--row-head-h);padding:0 var(--space-3);color:inherit;font:inherit;font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;display:flex}.dt-sort-btn:hover{color:var(--text-strong)}.dt-sort-icon{opacity:0;flex:none;width:12px;height:12px}.dt th[aria-sort] .dt-sort-icon{opacity:1;color:var(--accent-text)}.dt th.dt-menu-col,.dt td.dt-menu-col{width:44px;padding-left:var(--space-2);text-align:left;padding-right:0;line-height:0}.dt th.dt-select-col,.dt td.dt-select-col{width:40px;padding-right:0}.dt tbody tr[data-selected=true] td{background:var(--surface-active)}.dt tbody tr[data-selected=true] td:first-child{box-shadow:inset 3px 0 0 0 var(--accent)}.dt-caption{text-align:left;padding:var(--space-2) var(--space-4);font-size:var(--text-xs);color:var(--text-muted)}.rowmenu{vertical-align:middle;display:inline-flex;position:relative}.rowmenu-trigger{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-muted);cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #0000;place-items:center;display:grid}.rowmenu-trigger:hover,.rowmenu-trigger[aria-expanded=true]{background:var(--surface-raised);border-color:var(--border-strong);color:var(--text-strong)}.floating{z-index:var(--z-popover);overscroll-behavior:contain;position:fixed;overflow-y:auto}.rowmenu-panel{min-width:13rem;max-width:20rem;padding:var(--space-1);background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);animation:menu-in var(--dur-fast) var(--ease-out)}.rowmenu-panel[data-placement=top]{animation-name:menu-in-up}@keyframes menu-in{0%{opacity:0;transform:translateY(-2px)}}@keyframes menu-in-up{0%{opacity:0;transform:translateY(2px)}}.rowmenu-item{align-items:center;gap:var(--space-2);width:100%;min-height:var(--control-h);padding:0 var(--space-2);border-radius:var(--radius-md);color:var(--text-body);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;background:0 0;border:0;text-decoration:none;display:flex}.rowmenu-item>svg{width:16px;height:16px;color:var(--text-muted);flex:none}.rowmenu-item:hover:not(:disabled),.rowmenu-item:focus-visible{background:var(--surface-hover);color:var(--text-strong)}.rowmenu-item:disabled{opacity:.45;cursor:not-allowed}.rowmenu-item-danger,.rowmenu-item-danger>svg{color:var(--danger-text)}.rowmenu-item-danger:hover:not(:disabled),.rowmenu-item-danger:focus-visible{background:var(--danger-soft);color:var(--danger-text)}.rowmenu-sep{height:1px;margin:var(--space-1) 0;background:var(--border-subtle)}.rowmenu-confirm{padding:var(--space-2);gap:var(--space-2);flex-direction:column;display:flex}.rowmenu-confirm-text{font-size:var(--text-sm);color:var(--text-strong);font-weight:var(--weight-medium)}.rowmenu-confirm-actions{gap:var(--space-2);display:flex}.rowmenu-empty{padding:var(--space-2);font-size:var(--text-sm);color:var(--text-muted)}.modal-overlay{z-index:var(--z-modal);padding:var(--space-6) var(--space-4);background:var(--surface-scrim);animation:fade-in var(--dur-base) var(--ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-raised);width:100%;max-width:42rem;max-height:100%;color:var(--text-body);box-shadow:var(--shadow-lg);animation:modal-in var(--dur-base) var(--ease-out);grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.modal:focus{outline:none}.modal-wide{max-width:60rem}.modal-confirm-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.99)}}.modal-head{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--border-subtle);display:flex}.modal-head-text{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.modal-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-strong)}.modal-desc{font-size:var(--text-sm);color:var(--text-muted)}.modal-body{padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex;overflow-y:auto}.modal-foot{justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-subtle);background:var(--surface-sunken);flex-wrap:wrap;display:flex}.modal-foot-start{margin-right:auto}.health-bar{border-radius:var(--radius-pill);background:var(--surface-sunken);width:100%;height:10px;display:flex;overflow:hidden}.health-bar>span{height:100%;display:block}.health-legend{gap:var(--space-2) var(--space-4);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.health-legend-item{align-items:center;gap:var(--space-2);display:flex}.health-legend-swatch{border-radius:var(--radius-sm);flex:none;width:10px;height:10px}.progress{border-radius:var(--radius-pill);background:var(--surface-sunken);align-self:stretch;width:100%;min-width:72px;max-width:140px;height:6px;overflow:hidden}.progress>span{background:var(--accent);height:100%;display:block}.progress-complete>span{background:var(--ok)}.qr-cell{align-items:center;gap:var(--space-3);display:flex}.qr-token{font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere}.qr-video{border-radius:var(--radius-lg);background:var(--surface-sunken);width:100%;max-width:360px;display:block}.thumb-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.thumb{object-fit:cover;border-radius:var(--radius-md);border:1px solid var(--border-subtle);width:56px;height:56px}.pager{align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-subtle);flex-direction:column;display:flex}.pager-count{font-size:var(--text-sm);color:var(--text-body)}.pager-count strong{color:var(--text-strong);font-variant-numeric:tabular-nums}.pager-hint{font-size:var(--text-xs);color:var(--text-muted);max-width:72ch}.kv{gap:var(--space-2) var(--space-3);font-size:var(--text-sm);grid-template-columns:minmax(0,10rem) minmax(0,1fr);display:grid}.kv>dt{color:var(--text-muted)}.kv>dd{color:var(--text-strong);overflow-wrap:anywhere;margin:0}@media (width<=1023px){.shell,.shell[data-collapsed=true]{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--topbar-h) minmax(0, 1fr);grid-template-areas:"topbar""main"}.brand{display:none}.topbar .topbar-brand{display:flex}.topbar .drawer-toggle{display:inline-flex}.topbar .collapse-toggle{display:none}.sidebar{z-index:calc(var(--z-drawer) + 1);width:min(84vw, var(--sidebar-w));padding-top:var(--space-3);box-shadow:var(--shadow-lg);transition:transform var(--dur-base) var(--ease-out);visibility:hidden;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.shell[data-drawer=open] .sidebar{visibility:visible;transform:none}.shell[data-collapsed=true] .sidebar{width:min(84vw, var(--sidebar-w))}.shell[data-collapsed=true] .sidebar-link{padding:0 var(--space-3);justify-content:flex-start}.shell[data-collapsed=true] .sidebar-link-label,.shell[data-collapsed=true] .sidebar-group-label{display:revert}.shell[data-collapsed=true] .sidebar-group+.sidebar-group{margin-top:var(--space-3);border-top:0;padding-top:0}.main{padding:var(--space-4)}.btn,.chip,.input,.select,.textarea,.rowmenu-item{min-height:var(--control-h-touch)}.btn-icon{width:var(--control-h-touch);min-width:var(--control-h-touch)}.btn-sm{min-height:var(--control-h-touch);font-size:var(--text-sm)}.rowmenu-trigger{width:var(--control-h-touch);height:var(--control-h-touch)}.checkbox{width:24px;height:24px}.dt th.dt-menu-col,.dt td.dt-menu-col{width:var(--control-h-touch)}}@media (width<=767px){.dt-stack table,.dt-stack tbody,.dt-stack tr,.dt-stack td{width:auto;display:block}.dt-stack thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.dt-stack tr{padding:var(--space-3);padding-right:calc(var(--control-h-touch) + var(--space-3));border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-raised);position:relative}.dt-stack tr+tr{margin-top:var(--space-2)}.dt-stack tbody tr:hover td{background:0 0}.dt-stack tbody tr[data-selected=true]{background:var(--surface-active);border-color:var(--accent)}.dt-stack tbody tr[data-selected=true] td{background:0 0}.dt-stack tbody tr[data-selected=true] td:first-child{box-shadow:none}.dt-stack td{height:auto;min-height:0;padding:var(--space-1) 0;gap:var(--space-3);border-bottom:0;grid-template-columns:minmax(0,8.5rem) minmax(0,1fr);align-items:baseline;display:grid}.dt-stack td:before{content:attr(data-label);color:var(--text-muted);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em}.dt-stack td[data-label=""]{display:block}.dt-stack td[data-label=""]:before{display:none}.dt-stack td.dt-cell-ident{padding-bottom:var(--space-2);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--text-strong);display:block}.dt-stack td.dt-cell-ident:before{display:none}.dt-stack td.dt-end{text-align:left}.dt-stack td.dt-menu-col{top:var(--space-2);right:var(--space-2);width:auto;padding:0;position:absolute}.dt-stack td.dt-select-col{width:auto;padding-bottom:var(--space-2);display:block}.main{padding:var(--space-3)}.topbar-brand .brand-expanded{display:none}.topbar-brand .brand-collapsed{display:inline-flex}.topbar-email{max-width:14ch}.topbar{gap:var(--space-1);padding:0 var(--space-2)}.topbar .logout-label{display:none}.logout-btn{width:var(--control-h-touch);min-width:var(--control-h-touch);padding:0}.page-head-actions{width:100%}.page-head-actions>.btn{flex:auto}.toolbar,.card-head,.card-body,.modal-body,.modal-head{padding:var(--space-3)}.field-xs,.field-sm,.field-md,.field-lg{flex:100%;max-width:none}.modal-overlay{align-items:flex-end;padding:0}.modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:0;max-width:100%;max-height:92dvh}@keyframes modal-in{0%{opacity:0;transform:translateY(16px)}}.modal-confirm-actions{flex-direction:column-reverse}.modal-confirm-actions>.btn{width:100%}.modal-foot{flex-direction:column-reverse}.modal-foot>.btn{width:100%}.modal-foot-start{margin-right:0}.kv{gap:var(--space-1);grid-template-columns:minmax(0,1fr)}.kv>dt{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em}.kv>dd+dt{margin-top:var(--space-2)}}.centered-page{min-height:100svh;padding:var(--space-4);place-items:center;display:grid}.centered-page>.card{width:100%;max-width:34rem}.signin-brand{justify-items:center;gap:var(--space-5);display:grid}
