:root{--brand-50:#eef4ff;--brand-100:#dbe8ff;--brand-200:#b9d1ff;--brand-500:#1f6fe5;--brand-600:#1a5fcc;--brand-700:#1448a3;--brand-900:#0b2a6b;--success-50:#eaf6ee;--success-200:#bfe3cb;--success-500:#2e9d57;--success-700:#1f7a3e;--success-900:#12482a;--bg:#f3f6fb;--surface:#fff;--surface-muted:#f8fafd;--border:#e1e7f0;--border-strong:#cdd6e4;--text:#1c2433;--text-muted:#5d6b82;--text-faint:#8793a8;--danger-50:#fdeeee;--danger-500:#d6453d;--danger-700:#a1281f;--warning-50:#fff5df;--warning-500:#e0950b;--warning-700:#8f5d00;--info-50:#eef4ff;--info-500:#1f6fe5;--info-700:#1448a3;--neutral-100:#e9eef6;--radius-sm:.5rem;--radius:.75rem;--radius-lg:1rem;--shadow-sm:0 1px 2px #14285a0f;--shadow:0 1px .1875rem #14285a14, 0 .375rem 1.125rem #14285a0d;--shadow-lg:0 1.25rem 3.125rem #0b2a6b38;--sidebar-width:14rem;--topbar-height:3.5rem;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}html{font-size:16px}@media (width>=2400px){html{font-size:max(16px,.9vw)}}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-size:.875rem;line-height:1.5}h1,h2,h3,h4,p{margin:0}h1{letter-spacing:-.01em;font-size:1.5rem;font-weight:700}h2{font-size:1rem;font-weight:600}h3{font-size:.875rem;font-weight:600}a{color:var(--brand-700);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--brand-500);outline-offset:2px}code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78125rem}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.btn{white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;height:2.375rem;padding:0 1rem;font-size:.84375rem;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand-600);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brand-700)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-muted);border-color:var(--text-faint)}.btn-danger{background:var(--danger-500);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-700)}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--neutral-100);color:var(--text)}.btn-sm{height:2rem;padding:0 .75rem;font-size:.78125rem}.btn-block{width:100%}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:.875rem;height:.875rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.25rem;display:flex}.card-body{padding:1.25rem}.field{flex-direction:column;gap:.375rem;display:flex}.field>label{font-size:.8125rem;font-weight:600}.field .hint{color:var(--text-muted);font-size:.75rem}.input,.select,.textarea{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;height:2.5rem;padding:0 .75rem;transition:border-color .15s,box-shadow .15s}.textarea{resize:vertical;height:auto;min-height:5.25rem;padding:.625rem .75rem}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand-500);box-shadow:0 0 0 .1875rem var(--brand-100);outline:none}.input:disabled,.select:disabled{background:var(--neutral-100);color:var(--text-muted)}.form-grid{grid-template-columns:minmax(0,1fr);gap:1rem;display:grid}.form-grid.cols-2{grid-template-columns:1fr 1fr}.form-actions{justify-content:flex-end;gap:.625rem;margin-top:.5rem;display:flex}.search{position:relative}.search svg{color:var(--text-faint);pointer-events:none;position:absolute;top:50%;left:.75rem;transform:translateY(-50%)}.search .input{padding-left:2.375rem}.alert{border-radius:var(--radius-sm);border:1px solid;gap:.625rem;padding:.75rem .875rem;font-size:.8125rem;display:flex}.alert-error{background:var(--danger-50);color:var(--danger-700);border-color:#f3c7c4}.alert-success{background:var(--success-50);color:var(--success-900);border-color:var(--success-200)}.alert-warning{background:var(--warning-50);color:var(--warning-700);border-color:#f1d9a0}.alert-info{background:var(--info-50);color:var(--info-700);border-color:#c4dbf2}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:.375rem;padding:2px .625rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:.375rem;height:.375rem}.badge.no-dot:before{display:none}.badge-green{background:var(--success-50);color:var(--success-700)}.badge-red{background:var(--danger-50);color:var(--danger-700)}.badge-amber{background:var(--warning-50);color:var(--warning-700)}.badge-blue{background:var(--info-50);color:var(--info-700)}.badge-gray{background:var(--neutral-100);color:var(--text-muted)}.avatar{background:var(--brand-100);width:2.25rem;height:2.25rem;color:var(--brand-700);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.8125rem;font-weight:700;display:inline-flex}.avatar-lg{width:2.75rem;height:2.75rem;font-size:.9375rem}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--surface-muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:.6875rem 1.25rem;font-size:.75rem;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.875rem 1.25rem}.table tbody tr:last-child td{border-bottom:0}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:var(--surface-muted)}.table .actions{text-align:right;white-space:nowrap}.cell-user{align-items:center;gap:.75rem;min-width:0;display:flex}.cell-stack{flex-direction:column;min-width:0;display:flex}.cell-stack small{color:var(--text-muted);font-size:.75rem}.pagination{border-top:1px solid var(--border);color:var(--text-muted);justify-content:space-between;align-items:center;padding:.75rem 1.25rem;font-size:.8125rem;display:flex}.pagination .group{gap:.5rem;display:flex}.overlay{z-index:50;background:#0b2a6b61;justify-content:center;align-items:center;padding:1rem;animation:.15s ease-out fade;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:36.25rem;max-height:calc(100vh - 2rem);box-shadow:var(--shadow-lg);flex-direction:column;animation:.18s ease-out rise;display:flex}.modal.wide{max-width:47.5rem}.modal-header{justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.25rem 1.5rem .5rem;display:flex}.modal-body{padding:.5rem 1.5rem 1.5rem;overflow-y:auto}.icon-btn{width:2.125rem;height:2.125rem;color:var(--text-muted);background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--neutral-100);color:var(--text)}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(.5rem)scale(.99)}}.toasts{z-index:80;flex-direction:column;gap:.625rem;display:flex;position:fixed;bottom:1.25rem;right:1.25rem}.toast{background:var(--brand-900);color:#fff;border-radius:var(--radius-sm);min-width:16.25rem;max-width:23.75rem;box-shadow:var(--shadow-lg);align-items:center;gap:.625rem;padding:.75rem 1rem;animation:.2s ease-out rise;display:flex}.toast.error{background:var(--danger-700)}.state{text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;gap:.5rem;padding:3.5rem 1.5rem;display:flex}.state svg{color:var(--brand-500)}.state h3{color:var(--text)}.skeleton{background:linear-gradient(90deg, var(--neutral-100), #f6f5f0, var(--neutral-100));background-size:200% 100%;border-radius:.375rem;animation:1.2s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.rules{color:var(--text-muted);grid-template-columns:1fr 1fr;gap:.25rem .75rem;margin:0;padding:0;font-size:.75rem;list-style:none;display:grid}.rules li{align-items:center;gap:.375rem;display:flex}.rules li.ok{color:var(--success-700)}.rules li:before{content:"";border:1.5px solid;border-radius:50%;width:.5rem;height:.5rem}.rules li.ok:before{background:currentColor}.secret{background:var(--surface-muted);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);align-items:center;gap:.5rem;padding:.625rem .75rem;display:flex}.secret code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;flex:1}@media (width<=640px){.form-grid.cols-2,.rules{grid-template-columns:1fr}}@media (width<=1200px){.table.responsive thead{display:none}.table.responsive,.table.responsive tbody,.table.responsive tr,.table.responsive td{width:100%;display:block}.table.responsive tr{border-bottom:1px solid var(--border);padding:.875rem 1rem}.table.responsive tbody tr:last-child{border-bottom:0}.table.responsive td{text-align:right;border:0;justify-content:space-between;align-items:center;gap:1rem;padding:.375rem 0;display:flex}.table.responsive td:before{content:attr(data-label);color:var(--text-muted);text-align:left;flex:none;font-size:.75rem;font-weight:600}.table.responsive td:first-child{text-align:left;justify-content:flex-start;padding-bottom:.625rem}.table.responsive td:first-child:before{display:none}.table.responsive td.actions{flex-wrap:wrap;justify-content:flex-start;gap:.25rem;padding-top:.625rem}.table.responsive td.actions:before,.table.responsive td.actions:empty{display:none}}@media (width>=701px) and (width<=1200px){.table.responsive tr{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2rem;display:grid}.table.responsive td:first-child,.table.responsive td.actions{grid-column:1/-1}}@media (width<=700px){.overlay{align-items:flex-end;padding:0}.modal,.modal.wide{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:none;max-height:92vh}.modal-header{padding:1.125rem 1.125rem .375rem}.modal-body{padding:.5rem 1.125rem 1.375rem}.form-actions{flex-direction:column-reverse}.form-actions .btn{width:100%}.toasts{bottom:.75rem;left:.75rem;right:.75rem}.toast{max-width:none}.detail-grid{grid-template-columns:6.875rem 1fr}.pagination{text-align:center;flex-direction:column;align-items:stretch;gap:.625rem}.pagination .group{justify-content:center}}.table td:first-child{min-width:10.625rem}.table td.muted{white-space:nowrap}@media (width<=1200px){.table.responsive td:first-child{min-width:0}.table.responsive td.muted{white-space:normal}}.password-input{position:relative}.password-input .input{width:100%;padding-right:2.75rem}.password-toggle{border-radius:var(--radius-md,.5rem);width:2rem;height:2rem;color:var(--text-muted);cursor:pointer;background:0 0;border:0;place-items:center;display:grid;position:absolute;top:50%;right:.375rem;transform:translateY(-50%)}.password-toggle:hover{color:var(--brand-600,var(--brand-500));background:var(--neutral-100)}.password-toggle:focus-visible{outline:2px solid var(--brand-500);outline-offset:1px}.role-picker{flex-wrap:wrap;gap:.5rem;display:flex}.role-chip{border:1px solid var(--border);background:var(--surface);height:2.25rem;color:var(--text);cursor:pointer;border-radius:999px;padding:0 .875rem;font-weight:600}.role-chip:hover:not(:disabled){border-color:var(--brand-500)}.role-chip.on{background:var(--brand-100);border-color:var(--brand-500);color:var(--brand-700)}.role-chip:disabled{cursor:not-allowed;opacity:.7}.role-chip:focus-visible{outline:2px solid var(--brand-500);outline-offset:2px}.badge-row{flex-wrap:wrap;gap:.375rem;display:inline-flex}.shell{grid-template-columns:var(--sidebar-width) 1fr;min-height:100%;display:grid}.sidebar{scrollbar-width:none;background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:.25rem;height:100vh;padding:1rem .75rem;display:flex;position:sticky;top:0;overflow-y:auto}.brand,.brand:hover{text-decoration:none}.brand{letter-spacing:-.02em;color:var(--brand-900);white-space:nowrap;align-items:center;gap:.625rem;padding:.25rem .375rem .75rem;font-size:1rem;font-weight:700;text-decoration:none;display:flex}.nav{flex-direction:column;gap:2px;display:flex}.nav-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);padding:.75rem .75rem .3125rem;font-size:.6875rem;font-weight:600}.nav a{color:var(--text-muted);border-radius:999px;align-items:center;gap:.75rem;padding:.5rem .75rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav a:hover{background:var(--neutral-100);color:var(--text)}.nav a.active{background:var(--brand-50);color:var(--brand-700);font-weight:600}.nav a svg{flex:none}.sidebar::-webkit-scrollbar{display:none}.brand img{width:1.875rem;height:1.875rem}.main{flex-direction:column;min-width:0;display:flex}.topbar{z-index:20;height:var(--topbar-height);-webkit-backdrop-filter:blur(.5rem);backdrop-filter:blur(.5rem);border-bottom:1px solid var(--border);background:#f3f6fbd9;justify-content:space-between;align-items:center;padding:0 2rem;display:flex;position:sticky;top:0}.menu-btn{display:none}.user-menu{position:relative}.user-trigger{border:1px solid var(--border);background:var(--surface);border-radius:999px;align-items:center;gap:.625rem;padding:.25rem .625rem .25rem .25rem;display:flex}.user-trigger:hover{border-color:var(--border-strong)}.user-trigger .who{text-align:left;line-height:1.2}.user-trigger .who small{color:var(--text-muted);font-size:.71875rem;display:block}.dropdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:13.75rem;box-shadow:var(--shadow-lg);padding:.375rem;position:absolute;top:calc(100% + .5rem);right:0}.dropdown .head{border-bottom:1px solid var(--border);margin-bottom:.375rem;padding:.625rem .75rem}.dropdown button{border-radius:var(--radius-sm);text-align:left;background:0 0;border:0;align-items:center;gap:.625rem;width:100%;padding:.5625rem .75rem;display:flex}.dropdown button:hover{background:var(--neutral-100)}.content{flex:1 0 auto;width:100%;max-width:77.5rem;margin:0 auto;padding:.875rem 2rem 1.5rem}.toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.75rem;padding:1rem 1.25rem;display:flex}.toolbar .search{flex:16.25rem;max-width:22.5rem}.toolbar .select{width:auto;min-width:10rem}.stat-grid{grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1rem;display:grid}.stat{padding:.75rem 1rem}.stat .value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.375rem;font-weight:700;line-height:1.15}.stat .label{color:var(--text-muted);margin-top:1px;font-size:.8125rem}.two-col{grid-template-columns:1.4fr 1fr;gap:1.25rem;display:grid}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding:.875rem 1.25rem;display:flex}.list li:last-child{border-bottom:0}.progress{background:var(--neutral-100);border-radius:999px;height:.375rem;margin-top:.5rem;overflow:hidden}.progress>span{border-radius:inherit;background:var(--success-500);height:100%;display:block}.card-grid{grid-template-columns:repeat(auto-fill,minmax(18.75rem,1fr));gap:1rem;display:grid}.site-card{flex-direction:column;gap:.875rem;padding:1.25rem;display:flex}.site-card header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.meta{gap:1.25rem;display:flex}.meta div small{color:var(--text-muted);font-size:.75rem;display:block}.meta div strong{font-size:1.125rem}.detail-grid{grid-template-columns:8.75rem 1fr;gap:.625rem 1rem;margin:0 0 1.25rem;display:grid}.detail-grid dt{color:var(--text-muted)}.detail-grid dd{overflow-wrap:anywhere;margin:0}.auth{grid-template-columns:1.05fr 1fr;min-height:100%;display:grid}.auth-aside{color:#fff;background:radial-gradient(circle at 20% 90%, #ffffff1f, transparent 50%), linear-gradient(150deg, var(--brand-900), var(--brand-600));flex-direction:column;justify-content:space-between;gap:2rem;padding:3rem;display:flex}.auth-aside h2{letter-spacing:-.02em;max-width:26.25rem;font-size:2.125rem;line-height:1.15}.auth-aside p{opacity:.85;max-width:26.25rem;margin-top:.875rem;font-size:.9375rem}.auth-aside ul{gap:.75rem;margin:1.75rem 0 0;padding:0;list-style:none;display:grid}.auth-aside li{opacity:.95;align-items:center;gap:.75rem;display:flex}.auth-main{background:var(--surface);place-items:center;padding:2rem 1.5rem;display:grid}.auth-card{gap:1.375rem;width:100%;max-width:23.75rem;display:grid}.auth-card .heading p{color:var(--text-muted);margin-top:.375rem}.auth-card .links{justify-content:space-between;font-size:.8125rem;display:flex}.fullscreen{place-items:center;min-height:100%;display:grid}@media (width<=1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}}@media (width<=860px){.shell{grid-template-columns:1fr}.sidebar{z-index:40;width:var(--sidebar-width);transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sidebar.open{box-shadow:var(--shadow-lg);transform:none}.scrim{z-index:30;background:#0000004d;position:fixed;inset:0}.menu-btn{display:inline-flex}.topbar,.content{padding-left:1rem;padding-right:1rem}.auth{grid-template-columns:1fr}.auth-aside{display:none}}@media (width<=520px){.stat-grid{grid-template-columns:1fr}.user-trigger .who{display:none}}@media (width<=700px){.toolbar{padding:.875rem 1rem}.toolbar .search{flex-basis:100%;max-width:none}.toolbar .select{flex:8.75rem;min-width:0}.card-header,.list li{padding-left:1rem;padding-right:1rem}.card-grid{grid-template-columns:1fr}.dropdown{max-width:calc(100vw - 1.5rem);right:-.25rem}.auth-main{align-items:start;padding:3rem 1.25rem 1.5rem}}.auth-logo{align-self:flex-start;display:block}.auth-logo img{width:11.875rem;height:auto;display:block}.auth-card .mobile-logo-link{display:none}.auth-card .mobile-logo{width:9.375rem;height:auto;margin:0 auto .25rem;display:block}@media (width<=860px){.auth-card .mobile-logo-link{display:block}}.auth-copy{opacity:.7}.auth-copy-mobile{display:none}.app-footer{z-index:10;text-align:center;color:#ffffffd9;background:linear-gradient(120deg, var(--brand-700), var(--brand-500));border-top:1px solid var(--brand-900);flex:none;padding:.625rem 1.5rem;font-size:.75rem;position:sticky;bottom:0}@media (width<=860px){.auth-copy-mobile{text-align:center;color:var(--text-muted,#6b7280);margin-top:1.5rem;display:block}}.table th.num,.table td.num{text-align:right;font-variant-numeric:tabular-nums}.table td.ok{color:var(--success-700);font-weight:600}.table td.bad{color:var(--danger-500);font-weight:600}.table tfoot th{text-align:left;text-transform:none;letter-spacing:normal;border-top:2px solid var(--border-strong);background:var(--surface-muted);padding:.75rem 1.25rem;font-size:.8125rem}.table tfoot th.num{text-align:right}.nowrap{white-space:nowrap}.row-link{color:inherit}.row-link:hover{color:var(--brand-700)}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.92em}.sort-btn{color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:.375rem;padding:0;display:inline-flex}.sort-btn:focus-visible{outline:2px solid var(--brand-500);outline-offset:.1875rem;border-radius:.25rem}.sort-icon{opacity:.45;font-size:.625rem}.sort-icon.active{opacity:1;color:var(--brand-600)}.summary-strip{border-bottom:1px solid var(--border);background:var(--surface-muted);flex-wrap:wrap;gap:.5rem 1.5rem;padding:.75rem 1.25rem;font-size:.8125rem;display:flex}.summary-strip strong{font-variant-numeric:tabular-nums}.toolbar-spacer{flex:1 1 0}.toolbar .count{align-self:center;font-size:.8125rem}.toolbar input[type=date]{width:auto;min-width:9.375rem}.table td.actions .btn{margin-left:2px}@media (width<=520px){.summary-strip,.toolbar{padding-left:1rem;padding-right:1rem}.toolbar input[type=date]{flex:8.75rem;min-width:0}}.tabs{border-bottom:1px solid var(--border);scrollbar-width:none;gap:.25rem;margin-bottom:1rem;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tabs button{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:none;align-items:center;gap:.5rem;padding:.75rem .875rem;font-weight:600;display:inline-flex}.tabs button:hover{color:var(--text)}.tabs button.active{color:var(--brand-700);border-bottom-color:var(--brand-600)}.tabs button:focus-visible{outline:2px solid var(--brand-500);outline-offset:-2px;border-radius:.375rem}.tab-count{background:var(--neutral-100);color:var(--text-muted);border-radius:999px;padding:1px .5rem;font-size:.75rem}.segmented{border:1px solid var(--border);background:var(--surface-muted);border-radius:.625rem;padding:.1875rem;display:inline-flex}.segmented button{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:.5rem;padding:.375rem .875rem;font-weight:600}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.segmented button:focus-visible{outline:2px solid var(--brand-500);outline-offset:1px}.menu-button{display:inline-block;position:relative}.menu-list{z-index:60;min-width:11.25rem;left:auto}.menu-list button.danger{color:var(--danger-700)}.check-field{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;align-items:flex-start;gap:.75rem;padding:.75rem .875rem;display:flex}.check-field input{width:1.125rem;height:1.125rem;accent-color:var(--brand-600);flex:none;margin-top:.1875rem}.check-field span{gap:2px;display:grid}.check-field small{color:var(--text-muted)}.field-error{color:var(--danger-700);font-size:.75rem}.form-actions .toolbar-spacer{flex:1 1 0}.two-col+.card,.stat-grid+.two-col,.two-col,section.card+section.card{margin-bottom:1.25rem}.stat .value{font-variant-numeric:tabular-nums}.stat-grid.five{grid-template-columns:repeat(5,1fr)}@media (width<=1100px){.stat-grid.five{grid-template-columns:repeat(3,1fr)}}@media (width<=640px){.stat-grid.five{grid-template-columns:repeat(2,1fr)}}.topbar-slot{flex:1;justify-content:space-between;align-items:center;gap:.75rem;min-width:0;margin-left:.25rem;display:flex}.page-bar{flex:1;justify-content:space-between;align-items:center;gap:.75rem;min-width:0;display:flex}.page-bar-title{min-width:0}.page-bar-title .line{align-items:baseline;gap:.375rem;min-width:0;display:flex}.page-bar-title h1{white-space:nowrap;text-overflow:ellipsis;font-size:1rem;line-height:1.2;overflow:hidden}.page-bar-title p{max-width:62ch;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;line-height:1.3;overflow:hidden}.breadcrumb.inline{flex:none;margin:0;font-size:.875rem}.page-bar-actions{flex:none;gap:.5rem;display:flex}.page-bar-actions .btn{height:2.125rem;padding:0 .875rem;font-size:.8125rem}@media (width<=700px){.page-bar-title p,.hide-sm{display:none}}.greeting{flex:1;align-items:center;gap:.75rem;min-width:0;display:flex}.greeting-text{min-width:0}.greeting h1{white-space:nowrap;text-overflow:ellipsis;font-size:1rem;line-height:1.2;overflow:hidden}.greeting p{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;line-height:1.3;overflow:hidden}@media (width<=700px){.greeting p{display:none}}.tile-link{color:inherit;text-decoration:none;transition:border-color .15s,box-shadow .15s}.tile-link:hover{border-color:var(--brand-500);box-shadow:var(--shadow)}.tile-link:focus-visible{outline:2px solid var(--brand-500);outline-offset:2px}.sites-table td.num,.sites-table th.num{white-space:nowrap;width:1%}.breadcrumb{color:var(--text-muted);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem;display:flex}.breadcrumb a{color:var(--text-muted)}.breadcrumb a:hover{color:var(--brand-700)}.breadcrumb [aria-current]{color:var(--text)}.eyebrow{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:.6875rem;font-weight:700;display:block}.gateway-list{gap:.75rem;margin-bottom:1rem;display:grid}.gateway{border-color:var(--border-strong);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;padding:.875rem 1.25rem;display:flex}.gateway-list .gateway{margin-bottom:0}.gateway h2{margin-top:2px;font-size:1rem}.gateway.online{border-color:var(--success-200);box-shadow:0 0 0 .1875rem var(--success-50)}.gateway.offline{box-shadow:0 0 0 .1875rem var(--danger-50);border-color:#f2c6c3}.gateway-state{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.status-pill{letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;display:inline-flex}.status-pill.online{color:var(--success-700)}.status-pill.offline{color:var(--danger-700)}.status-pill.unknown{color:var(--text-muted)}.dot{background:var(--border-strong);border-radius:50%;flex:none;width:.5625rem;height:.5625rem;display:inline-block}.dot.online{background:var(--success-500)}.dot.offline{background:var(--danger-500)}.dot.unknown{background:var(--text-faint)}.stat-plain{padding:.75rem 1rem}.stat-plain .value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:2px;font-size:1.5rem;font-weight:700;line-height:1.1}.stat-plain .value.ok{color:var(--success-700)}.stat-plain .value.bad{color:var(--danger-500)}.device-grid{grid-template-columns:repeat(auto-fill,minmax(13.75rem,1fr));gap:.875rem;padding:1rem;display:grid}.device-card{box-shadow:none;flex-direction:column;align-items:flex-start;gap:.5rem;padding:.875rem 1rem;display:flex}.device-card header{width:100%;color:var(--text-muted);justify-content:space-between;align-items:center;display:flex}.device-card .name-row{justify-content:space-between;align-items:center;gap:.5rem;width:100%;min-width:0;display:flex}.device-card .name-row strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=860px){.gateway-state{align-items:flex-start}}@media (width<=520px){.stat-grid.compact{grid-template-columns:1fr 1fr;gap:.625rem}.stat-plain{padding:.75rem .875rem}.stat-plain .value{font-size:1.5rem}.device-grid{grid-template-columns:1fr;padding:.75rem}}.topology-wrap{padding:1rem}.topology{grid-template-columns:minmax(0,1fr);gap:.75rem;display:grid}.topo-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.topo-legend{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin:0;padding:0;font-size:.8125rem;list-style:none;display:flex}.topo-legend li{align-items:center;gap:.375rem;display:inline-flex}.line-sample{border-top:2px dashed var(--danger-500);width:1.375rem}.topo-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.topo-hint{border-radius:var(--radius-sm);background:var(--info-50);color:var(--info-700);margin:0;padding:.625rem .875rem;font-size:.8125rem}.topo-canvas{border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface-muted);background-image:radial-gradient(var(--border-strong) 1px, transparent 1px);overscroll-behavior:contain;background-size:1rem 1rem;max-height:72vh;overflow:auto}.topo-canvas svg{margin:0 auto;display:block}.topo-canvas.editing svg{touch-action:none}.topo-edge{stroke:var(--brand-200);stroke-width:2.2px}.topo-edge.offline{stroke:var(--danger-500);stroke-dasharray:6 5}.topo-edge.online{stroke:#8cc8a3}.topo-node{cursor:pointer;outline:none}.topo-canvas.editing .topo-node{cursor:grab}.topo-canvas.editing .topo-node:active{cursor:grabbing}.topo-node rect{fill:var(--surface);stroke:var(--border-strong);stroke-width:1.5px;filter:drop-shadow(0 1px 2px #14285a1a)}.topo-node.gateway rect{fill:var(--brand-50);stroke:var(--brand-500)}.topo-node.offline rect{stroke:var(--danger-500)}.topo-node:hover rect{stroke:var(--brand-500)}.topo-node:focus-visible rect,.topo-node.selected rect{stroke:var(--brand-600);stroke-width:3px}.topo-node .status-dot{fill:var(--text-faint)}.topo-node.online .status-dot{fill:var(--success-500)}.topo-node.offline .status-dot{fill:var(--danger-500)}.topo-node.pending .status-dot{fill:var(--warning-500)}.topo-node .label{fill:var(--text);font:600 13px var(--font)}.topo-node .sub{fill:var(--text-muted);font:11px ui-monospace,SFMono-Regular,Consolas,monospace}.topo-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:.875rem 1rem}.topo-detail{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;display:flex}.topo-detail-actions{gap:.75rem;min-width:15rem;display:grid}.detail-list{grid-template-columns:repeat(auto-fit,minmax(9.375rem,1fr));gap:.75rem 1.5rem;margin:0;display:grid}.detail-list dt{color:var(--text-muted);font-size:.75rem;font-weight:600}.detail-list dd{margin:2px 0 0}.topo-detail .detail-list{flex:26.25rem}.topo-toolbar,.topo-stage{min-width:0}.topo-toolbar .search{flex:15rem;max-width:22.5rem}.topo-matches{font-size:.8125rem}.tool-btn{border:1px solid var(--border);background:var(--surface);height:2.125rem;color:var(--text-muted);cursor:pointer;border-radius:.625rem;justify-content:center;align-items:center;gap:.375rem;padding:0 .75rem;font-weight:600;display:inline-flex}.tool-btn:hover{color:var(--text);border-color:var(--border-strong)}.tool-btn.icon-only{width:2.25rem;padding:0}.tool-btn:focus-visible,.topo-zoom button:focus-visible{outline:2px solid var(--brand-500);outline-offset:2px}.topo-stage{position:relative}.topo-canvas svg{cursor:grab}.topo-canvas svg:active{cursor:grabbing}.topo-zoom{border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow);border-radius:.625rem;flex-direction:column;display:flex;position:absolute;bottom:.75rem;left:.75rem;overflow:hidden}.topo-zoom button{width:2.25rem;height:2.25rem;color:var(--text-muted);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.topo-zoom button+button{border-top:1px solid var(--border)}.topo-zoom button:hover:not(:disabled){background:var(--neutral-100);color:var(--text)}.topo-zoom button:disabled{opacity:.4;cursor:not-allowed}.topo-minimap{border:1px solid var(--border-strong);box-shadow:var(--shadow);cursor:pointer;touch-action:none;background:#ffffffeb;border-radius:.625rem;position:absolute;bottom:1.125rem;right:1.125rem}.mini-node{fill:var(--text-faint)}.mini-node.online{fill:var(--success-500)}.mini-node.offline{fill:var(--danger-500)}.mini-node.pending{fill:var(--warning-500)}.mini-view{fill:#1f6fe51f;stroke:var(--brand-600);stroke-width:1.5px;vector-effect:non-scaling-stroke}.topo-node .detail{fill:var(--text-faint);font:10.5px ui-monospace,SFMono-Regular,Consolas,monospace}.topo-node.match rect{stroke:var(--warning-500);stroke-width:3.5px}svg.searching .topo-node:not(.match){opacity:.32}svg.searching .topo-edge{opacity:.35}.topo-print-title{display:none}.topology.fullscreen{z-index:45;background:var(--bg);flex-direction:column;align-items:stretch;gap:.625rem;padding:.75rem 1rem;display:flex;position:fixed;inset:0}.topology.fullscreen .topo-stage{flex:1;min-height:0;display:flex}.topology.fullscreen .topo-print-area{flex-direction:column;flex:1;min-width:0;display:flex}.topology.fullscreen .topo-canvas{flex:1;max-height:none}.topology.fullscreen .topo-panel{max-height:32vh;overflow:auto}.topology.fullscreen .topo-hint{margin:0}@media (width<=860px){.topo-detail-actions{width:100%;min-width:0}}@media (width<=700px){.topo-toolbar .search{flex-basis:100%;max-width:none}.topo-minimap{display:none}}@media (width<=520px){.topology-wrap{padding:.75rem}.topo-canvas{max-height:60vh}}@media (prefers-reduced-motion:reduce){.topo-node rect{transition:none}}@media print{@page{size:landscape;margin:10mm}body.printing-topology *{visibility:hidden!important}body.printing-topology .topo-print-area,body.printing-topology .topo-print-area *{visibility:visible!important}body.printing-topology .topo-print-area{background:#fff;padding:0;position:fixed;inset:0}body.printing-topology .topo-print-title{margin:0 0 .5rem;font-size:1rem;display:block}body.printing-topology .topo-print-title small{color:#666;margin-left:.5rem;font-size:.6875rem;font-weight:400}body.printing-topology .topo-canvas{background:0 0;border:0;max-height:none;overflow:visible}body.printing-topology .topo-canvas svg{max-height:90vh;width:100%!important;height:auto!important}body.printing-topology .topo-node rect{filter:none}}.retire-btn{color:var(--danger-700)}.report-filters{margin-bottom:1rem}.report-filters .toolbar{border-bottom:0}.bar{background:var(--neutral-100);border-radius:999px;height:.5rem;overflow:hidden}.bar>span{border-radius:inherit;background:var(--brand-500);height:100%;display:block}.share{min-width:8.125rem}.share small{color:var(--text-muted);font-size:.75rem}.bar-list{gap:.875rem;margin:0;padding:.5rem 1.25rem 1rem;list-style:none;display:grid}.bar-list li{gap:.25rem;display:grid}.bar-list small{color:var(--text-muted);font-size:.75rem}.bar-row{justify-content:space-between;gap:.75rem;display:flex}.month-chart{align-items:flex-end;gap:.625rem;padding:1.25rem;display:flex;overflow-x:auto}.month{text-align:center;flex:1 0 4rem;justify-items:center;gap:.375rem;display:grid}.month .column{background:var(--surface-muted);border-radius:.5rem .5rem 0 0;align-items:flex-end;width:100%;height:8.75rem;display:flex}.month .column span{background:var(--brand-500);border-radius:.5rem .5rem 0 0;width:100%;min-height:2px;display:block}.month .amount{min-height:.875rem;color:var(--text);font-variant-numeric:tabular-nums;font-size:.6875rem}.month small{color:var(--text-muted);font-size:.6875rem}.matrix th,.matrix td{white-space:nowrap}.matrix td:first-child,.matrix th:first-child{background:var(--surface);position:sticky;left:0}.matrix tfoot th:first-child{background:var(--surface-muted)}@media (width<=860px){.month .column{height:6.875rem}}@media (width<=520px){.bar-list{padding-left:1rem;padding-right:1rem}}.analytics{--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--ramp-100:#cde2fb;--ramp-250:#86b6ef;--ramp-400:#3987e5;--ramp-550:#1c5cab;--ramp-600:#184f95;--ramp-700:#0d366b;--chart-grid:#e1e0d9;--chart-axis:#c3c2b7;--chart-muted:#898781;--chart-zero:#f0efec;transition:opacity .15s}.analytics.loading{opacity:.55}.stat .delta{color:var(--text-muted);margin-top:2px;font-size:.75rem}.stat .delta.good{color:var(--success-700)}.stat .delta.bad{color:var(--danger-700)}.analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:.75rem;display:grid}.analytics-grid .span-2{grid-column:1/-1}.chart-card{padding:0 0 1rem}.chart-head{justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.875rem 1.125rem .5rem;display:flex}.chart-head h2{font-size:.875rem}.chart-head p{color:var(--text-muted);margin-top:2px;font-size:.75rem}.link-btn{color:var(--brand-700);cursor:pointer;background:0 0;border:0;flex:none;padding:0;font-size:.75rem;font-weight:600}.link-btn:hover{text-decoration:underline}.chart-card>:not(.chart-head){margin-left:1.125rem;margin-right:1.125rem}.chart-card>.table-wrap{margin-left:0;margin-right:0}.chart-empty{text-align:center;color:var(--text-muted);padding:1.75rem 0;font-size:.8125rem}.chart-table td,.chart-table th{padding:.5rem 1.125rem;font-size:.8125rem}.mini-title{color:var(--text-muted);margin:.75rem 0 .375rem;font-size:.75rem;font-weight:600}.mini-title:first-child{margin-top:.25rem}.analytics-note{color:var(--text-muted);max-width:88ch;margin:.875rem 2px .5rem;font-size:.75rem}.analytics-actions{margin-bottom:.5rem}.bar-chart{gap:.375rem;margin:0;padding:0;list-style:none;display:grid}.bar-chart li{grid-template-columns:minmax(5.625rem, 30%) minmax(0, 1fr) var(--bc-value,8.75rem);border-radius:.5rem;outline:none;align-items:center;gap:.75rem;padding:.25rem .375rem;display:grid}.bar-chart li:hover,.bar-chart li:focus-visible{background:var(--surface-muted)}.bar-chart li:focus-visible{box-shadow:0 0 0 2px var(--brand-500)}.bc-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.8125rem;overflow:hidden}.bc-label small{color:var(--text-muted);font-size:.6875rem;display:block}.bc-lane{border-left:1px solid var(--chart-axis);align-items:center;height:.875rem;display:flex}.bc-bar{border-radius:0 .25rem .25rem 0;max-width:100%;height:.625rem;display:block}.bc-value{text-align:right;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.75rem}.stack{gap:2px;height:.875rem;display:flex}.stack-seg{border-radius:.25rem;outline:none;min-width:.375rem}.stack-seg:first-child{border-radius:.25rem 0 0 .25rem}.stack-seg:last-child{border-radius:0 .25rem .25rem 0}.stack-seg:only-child{border-radius:.25rem}.stack-seg:focus-visible{box-shadow:0 0 0 2px var(--brand-500)}.legend{color:var(--text-muted);flex-wrap:wrap;gap:.25rem 1rem;margin:.5rem 0 0;padding:0;font-size:.75rem;list-style:none;display:flex}.legend li{align-items:center;gap:.375rem;display:inline-flex}.legend strong{color:var(--text)}.swatch{border-radius:.1875rem;width:.625rem;height:.625rem}.time-chart{width:calc(100% - 2.25rem);position:relative}.time-chart svg{display:block;overflow:visible}.time-chart .grid{stroke:var(--chart-grid);stroke-width:1px}.time-chart .baseline{stroke:var(--chart-axis);stroke-width:1px}.time-chart .tick{fill:var(--chart-muted);font-size:calc(11px * var(--ui,1))}.time-chart .col{fill:var(--series-1)}.time-chart .col.on{fill:var(--ramp-550)}.time-chart .line{fill:none;stroke:var(--series-1);stroke-width:calc(2px * var(--ui,1));stroke-linejoin:round;stroke-linecap:round}.time-chart .area{fill:var(--series-1);opacity:.1}.time-chart .dot{fill:var(--series-1);stroke:var(--surface);stroke-width:2px}.time-chart .cross{stroke:var(--chart-axis);stroke-width:1px}.heat-grid{grid-template-columns:2.125rem repeat(24,minmax(0,1fr));align-items:center;gap:2px;display:grid}.heat-row{display:contents}.heat-hour,.heat-day{color:var(--chart-muted);text-align:center;font-size:10px}.heat-day{text-align:left}.heat-cell{aspect-ratio:1;background:var(--chart-zero);border-radius:.1875rem;outline:none;min-height:.75rem;display:block}.heat-cell:focus-visible{box-shadow:0 0 0 2px var(--brand-500)}.heat-cell.s1{background:var(--ramp-100)}.heat-cell.s2{background:var(--ramp-250)}.heat-cell.s3{background:var(--ramp-400)}.heat-cell.s4{background:var(--ramp-550)}.heat-cell.s5{background:var(--ramp-700)}.heat-scale{color:var(--chart-muted);justify-content:flex-end;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.6875rem;display:flex}.heat-scale .heat-cell{aspect-ratio:auto;width:1rem;height:.625rem;min-height:0}.pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.mini-tiles{flex-wrap:wrap;gap:1.5rem;padding:.25rem 0;display:flex}.mini-tiles div{display:grid}.mini-tiles strong{font-size:1.375rem;line-height:1.15}.mini-tiles span{color:var(--text-muted);font-size:.75rem}.chart-tip{z-index:90;background:var(--surface);border:1px solid var(--border-strong);min-width:9.375rem;max-width:13.75rem;box-shadow:var(--shadow-lg);pointer-events:none;border-radius:.625rem;padding:.5rem .625rem;font-size:.75rem;position:fixed}.tip-title{color:var(--text-muted);margin-bottom:.25rem;font-weight:600}.tip-row{align-items:center;gap:.375rem;line-height:1.5;display:flex}.tip-row strong{font-size:.8125rem}.tip-row span:last-child{color:var(--text-muted)}.tip-key{border-radius:2px;width:.625rem;height:.1875rem}@media (width<=860px){.analytics-grid{grid-template-columns:minmax(0,1fr)}.analytics-grid .span-2{grid-column:auto}.pair{grid-template-columns:minmax(0,1fr)}}@media (width>=861px) and (width<=1180px){.bar-chart li{grid-template-columns:minmax(4.5rem, 28%) minmax(0, 1fr) minmax(0, var(--bc-value,8.75rem));gap:.5rem}}@media (width<=520px){.bar-chart li{grid-template-columns:minmax(4.375rem,34%) 1fr}.bc-value{text-align:left;grid-column:1/-1}.heat-grid{grid-template-columns:1.75rem repeat(24,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.analytics{transition:none}}.stack-col{gap:.75rem;min-width:0;display:grid}.models-input{gap:.5rem;display:grid}.model-chips{flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.model-chips li{background:var(--brand-100);color:var(--brand-700);border-radius:999px;align-items:center;gap:.25rem;padding:.25rem .375rem .25rem .75rem;font-size:.8125rem;font-weight:600;display:inline-flex}.model-chips button{width:1.25rem;height:1.25rem;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;font-size:1rem;line-height:1}.model-chips button:hover{background:var(--brand-500);color:#fff}.model-chips button:focus-visible{outline:2px solid var(--brand-500);outline-offset:1px}.script-filter{gap:.375rem;display:grid}.script-where{margin:0 0 .5rem}.script-box{background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius-sm);white-space:pre;tab-size:4;max-height:18rem;margin:0 0 1rem;padding:.75rem;font:.75rem/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;overflow:auto}.script-box:focus-visible{outline:2px solid var(--brand-500)}.removed-card{margin-bottom:1rem}.removed-card .card-title{margin:0;padding:1rem 1.25rem .75rem;font-size:1rem}.removed-note{margin:0}
