:root{--bg-primary: #f5f6fa;--bg-secondary: #ffffff;--bg-tertiary: #f9fafb;--bg-input: #ffffff;--bg-hover: #f3f4f6;--bg-sunken: #fafafa;--bg-overlay: rgba(0, 0, 0, .45);--bg-scrim: rgba(245, 246, 250, .85);--text-primary: #111827;--text-secondary: #374151;--text-muted: #6b7280;--text-subtle: #9ca3af;--on-accent: #ffffff;--border-color: #e5e7eb;--border-strong: #d1d5db;--border-subtle: #f3f4f6;--accent-color: #2563eb;--accent-hover: #1d4ed8;--accent-active: #1e40af;--accent-disabled: #93c5fd;--accent-tint: #eff6ff;--accent-tint-strong:#dbeafe;--accent-border: #bfdbfe;--success: #16a34a;--success-bg: #f0fdf4;--success-border: #bbf7d0;--error: #dc2626;--error-bg: #fef2f2;--error-border: #fecaca;--warning: #d97706;--warning-bg: #fffbeb;--warning-border: #fcd34d;--orange: #ea580c;--orange-bg: #fff7ed;--teal: #0d9488;--teal-bg: #f0fdfa;--teal-border: #99f6e4;--violet: #6366f1;--violet-bg: #eef2ff;--violet-border: #c7d2fe;--pink: #9d174d;--pink-bg: #fce7f3;--accent-rgb: 37 99 235;--shadow-soft: 0 4px 20px -2px rgba(0, 0, 0, .05), 0 2px 10px -2px rgba(0, 0, 0, .03);--shadow-modal: 0 20px 60px rgba(0, 0, 0, .18), 0 4px 16px rgba(0, 0, 0, .08);--focus-ring: rgba(37, 99, 235, .08);--focus-ring-strong: rgba(37, 99, 235, .1);--scrollbar-thumb: #d1d5db;--scrollbar-thumb-hover: #9ca3af}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg-primary: #0b1326;--bg-secondary: #131b2e;--bg-tertiary: #1e293b;--bg-input: #0b1326;--bg-hover: #31394d;--bg-sunken: #060e20;--bg-overlay: rgba(0, 0, 0, .65);--bg-scrim: rgba(11, 19, 38, .85);--text-primary: #e8edf7;--text-secondary: #c3ccdd;--text-muted: #93a0b8;--text-subtle: #6d7b93;--on-accent: #ffffff;--border-color: #273349;--border-strong: #3a475f;--border-subtle: #1c2740;--accent-color: #3b82f6;--accent-hover: #60a5fa;--accent-active: #93c5fd;--accent-disabled: #1e3a8a;--accent-tint: #16233f;--accent-tint-strong:#1e3a8a;--accent-border: #2b4a7d;--success: #22c55e;--success-bg: #0f2a1b;--success-border: #1d5236;--error: #ef4444;--error-bg: #2a1113;--error-border: #5a1f22;--warning: #f59e0b;--warning-bg: #2c2010;--warning-border: #6b4a12;--orange: #fb923c;--orange-bg: #2e1a0e;--teal: #2dd4bf;--teal-bg: #0c2724;--teal-border: #17554d;--violet: #a5b4fc;--violet-bg: #1c1f3d;--violet-border: #3b3f78;--pink: #f472b6;--pink-bg: #2e1322;--accent-rgb: 59 130 246;--shadow-soft: 0 4px 20px -2px rgba(0, 0, 0, .45), 0 2px 10px -2px rgba(0, 0, 0, .3);--shadow-modal: 0 20px 60px rgba(0, 0, 0, .6), 0 4px 16px rgba(0, 0, 0, .4);--focus-ring: rgba(59, 130, 246, .28);--focus-ring-strong: rgba(59, 130, 246, .35);--scrollbar-thumb: #3a475f;--scrollbar-thumb-hover: #55637c}}:root[data-theme=dark]{--bg-primary: #0b1326;--bg-secondary: #131b2e;--bg-tertiary: #1e293b;--bg-input: #0b1326;--bg-hover: #31394d;--bg-sunken: #060e20;--bg-overlay: rgba(0, 0, 0, .65);--bg-scrim: rgba(11, 19, 38, .85);--text-primary: #e8edf7;--text-secondary: #c3ccdd;--text-muted: #93a0b8;--text-subtle: #6d7b93;--on-accent: #ffffff;--border-color: #273349;--border-strong: #3a475f;--border-subtle: #1c2740;--accent-color: #3b82f6;--accent-hover: #60a5fa;--accent-active: #93c5fd;--accent-disabled: #1e3a8a;--accent-tint: #16233f;--accent-tint-strong:#1e3a8a;--accent-border: #2b4a7d;--success: #22c55e;--success-bg: #0f2a1b;--success-border: #1d5236;--error: #ef4444;--error-bg: #2a1113;--error-border: #5a1f22;--warning: #f59e0b;--warning-bg: #2c2010;--warning-border: #6b4a12;--orange: #fb923c;--orange-bg: #2e1a0e;--teal: #2dd4bf;--teal-bg: #0c2724;--teal-border: #17554d;--violet: #a5b4fc;--violet-bg: #1c1f3d;--violet-border: #3b3f78;--pink: #f472b6;--pink-bg: #2e1322;--accent-rgb: 59 130 246;--shadow-soft: 0 4px 20px -2px rgba(0, 0, 0, .45), 0 2px 10px -2px rgba(0, 0, 0, .3);--shadow-modal: 0 20px 60px rgba(0, 0, 0, .6), 0 4px 16px rgba(0, 0, 0, .4);--focus-ring: rgba(59, 130, 246, .28);--focus-ring-strong: rgba(59, 130, 246, .35);--scrollbar-thumb: #3a475f;--scrollbar-thumb-hover: #55637c}:root{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg-primary);color:var(--text-primary);font-size:14px;line-height:1.5}h1{font-size:1.25rem;font-weight:700;letter-spacing:-.01em}h2{font-size:1.1rem;font-weight:600}h3{font-size:.95rem;font-weight:600}code,.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:.85em}.shell{display:flex;height:100vh;overflow:hidden}.sidebar{width:216px;flex-shrink:0;background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow-y:auto;transition:margin-left .2s ease,transform .2s ease,visibility .2s}.shell:not(.nav-open) .sidebar{margin-left:-216px;visibility:hidden}.sidebar .brand{padding:1.1rem 1.25rem;font-weight:700;font-size:.95rem;border-bottom:1px solid var(--border-color);letter-spacing:-.01em}.sidebar .brand small{display:block;font-weight:500;font-size:.7rem;color:var(--text-subtle);letter-spacing:.04em;text-transform:uppercase}.sidebar nav{padding:.5rem;display:flex;flex-direction:column;gap:1px}.sidebar .group{padding:.75rem .75rem .3rem;font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-subtle)}.sidebar a{display:block;padding:.45rem .75rem;border-radius:6px;color:var(--text-secondary);text-decoration:none;font-size:.85rem}.sidebar a:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar a.active{background:var(--accent-tint);color:var(--accent-color);font-weight:600}.sidebar .foot{margin-top:auto;padding:.85rem 1rem;border-top:1px solid var(--border-color);font-size:.75rem;color:var(--text-muted)}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;align-items:center;gap:1rem;padding:.85rem 1.5rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0}.topbar .spacer{flex:1}.topbar>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content{flex:1;overflow-y:auto;padding:1.5rem}.nav-toggle{width:28px;height:28px;flex:none;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:none;border-radius:6px;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.nav-toggle svg{flex:none}.nav-toggle:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring);color:var(--text-primary)}.nav-scrim{display:none;position:fixed;inset:0;z-index:40;background:var(--bg-overlay)}@media (max-width: 860px){.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:45;box-shadow:var(--shadow-modal);transform:translate(-100%)}.shell:not(.nav-open) .sidebar{margin-left:0}.shell.nav-open .sidebar{transform:none}.nav-scrim{display:block}.topbar{padding:.7rem .9rem;gap:.6rem}.content{padding:1rem .9rem}.table-wrap{max-height:calc(100vh - 250px)}.modal{border-radius:10px}.overlay{padding:2vh .6rem}}@media (prefers-reduced-motion: reduce){.sidebar{transition:none}}.card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;overflow:hidden}.card>header{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--border-color)}.card>header .spacer{flex:1}.card>.body{padding:1.1rem}.stat-grid{display:grid;gap:1rem;margin-bottom:1.5rem;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.stat{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;padding:1rem 1.1rem}.stat .label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle)}.stat .value{font-size:1.6rem;font-weight:700;line-height:1.2}.stat .sub{font-size:.75rem;color:var(--text-muted)}.stat.warn .value{color:var(--warning)}.stat.bad .value{color:var(--error)}.stat.good .value{color:var(--success)}.table-wrap{max-height:calc(100vh - 320px);overflow-y:auto;overflow-x:hidden}table{width:100%;border-collapse:collapse;table-layout:auto}thead th{position:sticky;top:0;z-index:1;background:var(--bg-tertiary);text-align:left;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);padding:.6rem .9rem;border-bottom:1px solid var(--border-color);white-space:nowrap}tbody td{padding:.6rem .9rem;border-bottom:1px solid var(--border-subtle);vertical-align:middle;overflow-wrap:anywhere}tbody tr:hover{background:var(--bg-tertiary)}tbody tr.clickable{cursor:pointer}tbody td.over{color:var(--warning);font-weight:600}.empty{padding:2.5rem 1rem;text-align:center;color:var(--text-muted)}.explainer{border:1px solid var(--border-color);border-left:3px solid var(--accent-color);background:var(--bg-tertiary);border-radius:6px;padding:.9rem 1.1rem;font-size:.85rem;line-height:1.55;color:var(--text-secondary)}.explainer h4{margin:0 0 .5rem;font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.explainer p{margin:0 0 .55rem}.explainer p:last-child{margin-bottom:0}.explainer strong{color:var(--text-primary)}.explainer code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:3px;padding:0 .25em}.explainer h5{margin:.9rem 0 .3rem;font-size:.85rem;font-weight:700;color:var(--text-primary)}.explainer ul{margin:.3rem 0 .55rem 1.1rem;padding:0}.explainer li{margin-bottom:.35rem}.explainer em{color:var(--text-primary);font-style:italic}.explainer .verdict{background:var(--accent-tint);border:1px solid var(--accent-border);border-radius:5px;padding:.5rem .7rem;color:var(--text-primary)}.explainer .rule{margin-top:.7rem;padding-top:.6rem;border-top:1px dashed var(--border-color)}.explainer table.picker{width:100%;margin:.4rem 0 0;border-collapse:collapse}.explainer table.picker td{padding:.3rem .5rem .3rem 0;border-bottom:1px solid var(--border-subtle);vertical-align:top;font-size:.83rem}.explainer table.picker td:last-child{text-align:right;white-space:normal}.explainer table.picker tr:last-child td{border-bottom:none}label.field[title],div.field[title]{cursor:help}.enrol{display:flex;gap:1.4rem;flex-wrap:wrap;align-items:flex-start}.enrol-qr{text-align:center}.enrol-qr img{display:block;background:#fff;padding:8px;border-radius:6px;border:1px solid var(--border-color)}.enrol-qr p{margin-top:.45rem;font-size:.78rem}.enrol-manual{flex:1 1 16rem;min-width:14rem}.qr-fallback{width:200px;height:200px;display:flex;align-items:center;justify-content:center;text-align:center;padding:1rem;border:1px dashed var(--border-strong);border-radius:6px;color:var(--text-muted);font-size:.8rem}.filters{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;padding:.85rem 1.1rem;border-bottom:1px solid var(--border-color);background:var(--bg-sunken)}.filters .spacer{flex:1}.filters input,.filters select{width:auto}.filters .search{flex:0 1 320px;min-width:200px}.filters .checks{display:contents}label.field{display:flex;flex-direction:column;gap:.28rem;font-size:.8rem}label.field>span{font-weight:600;color:var(--text-secondary)}label.field .hint{font-weight:400;color:var(--text-muted);font-size:.75rem}input,select,textarea{font:inherit;color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-strong);border-radius:6px;padding:.42rem .6rem;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px var(--focus-ring)}input[type=checkbox]{width:auto}textarea{min-height:70px;resize:vertical}.search{min-width:220px}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.9rem}.checks{display:flex;flex-wrap:wrap;gap:.5rem}.checks label{display:flex;align-items:center;gap:.4rem;padding:.35rem .6rem;border:1px solid var(--border-strong);border-radius:999px;font-size:.8rem;cursor:pointer}.checks label.on{background:var(--accent-tint);border-color:var(--accent-border);color:var(--accent-color);font-weight:600}button{font:inherit;font-weight:600;font-size:.82rem;padding:.42rem .85rem;border-radius:6px;cursor:pointer;border:1px solid var(--border-strong);background:var(--bg-secondary);color:var(--text-secondary)}button:hover:not(:disabled){background:var(--bg-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent-color);border-color:var(--accent-color);color:var(--on-accent)}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button.danger{color:var(--error);border-color:var(--error-border)}button.danger:hover:not(:disabled){background:var(--error-bg)}button.link{border:none;background:none;color:var(--accent-color);padding:.2rem}.actions{display:flex;gap:.5rem;flex-wrap:wrap}.badge{display:inline-block;padding:.14rem .5rem;border-radius:999px;font-size:.7rem;font-weight:700;letter-spacing:.02em;border:1px solid transparent;white-space:nowrap}.badge.gray{background:var(--bg-tertiary);color:var(--text-muted);border-color:var(--border-color)}.badge.green{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.badge.amber{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}.badge.red{background:var(--error-bg);color:var(--error);border-color:var(--error-border)}.badge.blue{background:var(--accent-tint);color:var(--accent-color);border-color:var(--accent-border)}.badge.violet{background:var(--violet-bg);color:var(--violet);border-color:var(--violet-border)}.notice{padding:.7rem .95rem;border-radius:8px;font-size:.83rem;border:1px solid var(--border-color);background:var(--bg-tertiary);margin-bottom:1rem}.notice.error{background:var(--error-bg);border-color:var(--error-border);color:var(--error)}.notice.warn{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}.notice.ok{background:var(--success-bg);border-color:var(--success-border);color:var(--success)}.overlay{position:fixed;inset:0;background:var(--bg-overlay);display:flex;align-items:flex-start;justify-content:center;padding:4vh 1rem;z-index:50;overflow-y:auto}.modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-modal);width:min(760px,100%)}.modal>header,.modal>footer{display:flex;align-items:center;gap:.75rem;padding:.9rem 1.2rem}.modal>header{border-bottom:1px solid var(--border-color)}.modal>footer{border-top:1px solid var(--border-color);background:var(--bg-sunken)}.modal>header .spacer,.modal>footer .spacer{flex:1}.modal>.body{padding:1.2rem;display:flex;flex-direction:column;gap:1rem}.secret{background:var(--bg-sunken);border:1px solid var(--border-color);border-radius:8px;padding:.8rem;font-family:ui-monospace,monospace;font-size:.76rem;word-break:break-all;white-space:pre-wrap;max-height:220px;overflow-y:auto}.theme-toggle{width:28px;height:28px;flex:none;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:none;border-radius:6px;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.theme-toggle svg{flex:none}.theme-toggle:hover{background:var(--bg-hover);color:var(--text-primary)}.theme-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring);color:var(--text-primary)}.login-page{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--bg-primary)}.login-page .theme-toggle{position:absolute;top:1rem;right:1rem}.login-card{width:min(380px,100%);background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-soft);padding:1.75rem;display:flex;flex-direction:column;gap:1rem}.login-card h1{text-align:center}.login-card .sub{text-align:center;color:var(--text-muted);font-size:.82rem}.muted{color:var(--text-muted)}.subtle{color:var(--text-subtle);font-size:.78rem}.right{text-align:right}.nowrap{white-space:nowrap}
