:root,:root[data-theme=light]{color-scheme:light;--bg: #f4f5f7;--surface: #ffffff;--ink: #1b1f24;--muted: #5c6570;--line: #d8dde3;--accent: #1f4b99;--accent-ink: #ffffff;--danger: #9b1c1c;--ok: #146c2e;--shadow: 0 1px 2px rgba(21, 32, 51, .04), 0 10px 28px rgba(21, 32, 51, .06);--radius: 12px;--row-hover: #f3f7fd;--tone-bad-bg: #fdf3f3;--tone-warn-bg: #fff8e8;--tone-muted-bg: #f4f6f8;--tone-bad-hover: #f8e6e6;--tone-warn-hover: #fff1cc;--tone-muted-hover: #eceff2}:root[data-theme=dark]{color-scheme:dark;--bg: #10141b;--surface: #1a2130;--ink: #e8edf4;--muted: #9aabc2;--line: #2c3648;--accent: #7aa2ff;--accent-ink: #10141b;--danger: #f2a0a0;--ok: #8fd4a4;--shadow: 0 1px 2px rgba(0, 0, 0, .2), 0 12px 28px rgba(0, 0, 0, .28);--row-hover: #222b3c;--tone-bad-bg: rgba(242, 160, 160, .1);--tone-warn-bg: rgba(255, 209, 102, .1);--tone-muted-bg: rgba(154, 171, 194, .08);--tone-bad-hover: rgba(242, 160, 160, .16);--tone-warn-hover: rgba(255, 209, 102, .16);--tone-muted-hover: rgba(154, 171, 194, .14)}:root[data-density=compact]{font-size:14px}:root[data-density=compact] button,:root[data-density=compact] input,:root[data-density=compact] select,:root[data-density=compact] textarea{padding:.4rem .65rem}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:15px/1.45 Segoe UI,system-ui,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button,input,select,textarea{font:inherit}button{background:var(--accent);color:var(--accent-ink);border:0;border-radius:6px;padding:.6rem .9rem;cursor:pointer}button:disabled{opacity:.6;cursor:default}button.btn-busy,td.col-actions>button.btn-busy{display:inline-flex;align-items:center;gap:.45rem}.btn-spinner{width:.85rem;height:.85rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;flex-shrink:0;animation:btn-spin .7s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.btn-spinner{animation:none;border-right-color:currentColor;opacity:.55}}button.ghost,a.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}a.ghost{display:inline-flex;align-items:center;padding:.55rem .9rem;border-radius:.5rem;text-decoration:none}label{display:flex;flex-direction:column;gap:.45rem;font-size:.85rem;color:var(--muted)}input,select,textarea{border:1px solid var(--line);border-radius:6px;padding:.55rem .7rem;background:var(--surface);color:var(--ink)}textarea{resize:vertical;min-height:4.5rem}.auth-shell{box-sizing:border-box;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:2rem 1.25rem}.auth-stack{width:min(28rem,100%);margin-top:auto;margin-bottom:auto}.auth-stack .auth-brand{justify-content:center}.auth-stack .auth-card{width:100%}.auth-brand,.brand{display:flex;flex-direction:row;align-items:center;gap:.75rem;margin-bottom:1.5rem}.auth-brand img,.brand img{display:block;border-radius:8px;flex-shrink:0}.auth-brand div,.brand div{display:flex;flex-direction:column}.auth-brand span,.brand span{color:var(--muted);font-size:.8rem}.auth-card,.panel{width:min(28rem,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.page .panel{width:100%}.auth-card h1,.page h1,.page-header h1{margin:0 0 .4rem;font-size:1.4rem}.lede{color:var(--muted);margin:0 0 1rem}.hint{color:var(--muted);margin:.3rem 0 0;font-size:.8rem}form{display:flex;flex-direction:column;gap:1rem}.row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.checkbox{flex-direction:row;align-items:center;gap:.55rem}.checkbox input{margin:0}.links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin:1.5rem 0 0}.errors{color:var(--danger);margin:0}.success{color:var(--ok)}.app-shell{display:grid;grid-template-columns:220px 1fr;height:100vh;height:100dvh;overflow:hidden}.app-shell.nav-collapsed{grid-template-columns:1fr}.app-shell.nav-collapsed .sidebar{display:none}.sidebar{display:flex;flex-direction:column;min-height:0;height:100%;overflow:hidden;background:#101a2b;color:#e8eef7;padding:1.25rem .85rem 0}.sidebar .brand{flex-shrink:0;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid #24344d}.sidebar .brand span{color:#9aabc2}.sidebar nav{display:flex;flex-direction:column;flex:1;min-height:0;gap:.2rem;overflow-y:auto;overscroll-behavior:contain;padding-bottom:1.25rem}.sidebar a{display:flex;align-items:center;justify-content:flex-start;gap:.55rem;color:#d5deea;padding:.48rem .65rem .48rem .55rem;border-radius:8px}.nav-tree{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.15rem}.nav-tree>a{grid-column:1}.nav-tree .nav-toggle{grid-column:2;min-width:1.75rem;padding:.2rem;color:#9aabc2}.nav-sub{grid-column:1 / -1;display:flex;flex-direction:column;gap:.15rem;padding-left:.85rem}.sidebar a .nav-label{flex:1;min-width:0}.sidebar a:hover{background:#1c2b42;text-decoration:none}.sidebar a.active{background:#24344d;color:#fff;box-shadow:inset 3px 0 #7aa2ff;text-decoration:none}.sidebar a app-icon{color:#8ea0b8}.sidebar a.active app-icon,.sidebar a:hover app-icon{color:#7aa2ff}.main{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.topbar{position:sticky;top:0;z-index:15;display:flex;align-items:flex-end;flex-wrap:wrap;gap:.85rem 1rem;padding:.85rem 1.25rem;border-bottom:1px solid var(--line);background:var(--surface)}.org-switcher{min-width:14rem}.role,.user{font-size:.85rem;color:var(--muted);padding-bottom:.65rem}.spacer{flex:1}.search{position:relative;min-width:16rem}.search input{width:100%}.search-results{position:absolute;z-index:20;top:calc(100% + .35rem);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.4rem;box-shadow:0 8px 24px #1520331f}.search-results button{display:flex;flex-direction:column;align-items:flex-start;width:100%;background:transparent;color:var(--ink);padding:.45rem .55rem;text-align:left}.search-results button:hover,.search-results button.active{background:#f3f7fd}.search-results button span{color:var(--muted);font-size:.75rem}.content,.page{padding:1.5rem}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.85rem;margin:0 0 1.25rem}.stats div{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.95rem 1.15rem;min-width:0;box-shadow:var(--shadow)}.stats dt{color:var(--muted);font-size:.8rem}.stats dd{margin:.2rem 0 0;font-size:1.4rem}.page>.panel+.panel,.page>.split+.panel,.page>.stats+.panel{margin-top:1.25rem}.panel.wide{width:100%}.panel h2{margin:0 0 .75rem;font-size:1.05rem}.split{display:grid;grid-template-columns:minmax(0,2fr) minmax(16rem,1fr);gap:1rem;margin-top:1.25rem}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin:0 0 1rem}.actions a{padding:.2rem .1rem}.page-header .actions,.panel>.actions:last-child,form>.actions{margin-bottom:0}.filter{max-width:16rem;margin-bottom:1rem}table{width:100%;table-layout:auto;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:8px}table th,table td,table th.actions,table td.actions{display:table-cell;text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--line);vertical-align:middle}.col-fit,.col-check{width:1%;white-space:nowrap}.col-check{text-align:center}.col-clip{max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}th.col-actions,td.col-actions{width:1%;white-space:nowrap;text-align:right}td.col-actions>*{display:inline-block;vertical-align:middle}td.col-actions>*+*{margin-left:.4rem}td input[type=checkbox]{display:inline-block;margin:0;vertical-align:middle}.cell-stack{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem}.cell-stack .hint{margin:0}th{font-size:.8rem;color:var(--muted);font-weight:600}tr:last-child td{border-bottom:0}.badge{display:inline-block;border-radius:999px;padding:.15rem .5rem;font-size:.75rem;font-weight:600;background:#e8edf3;color:#3a4450}.badge.ok{background:#d9f2e1;color:var(--ok)}.badge.warn{background:#fff1cc;color:#8a5a00}.badge.bad{background:#f8d7d7;color:var(--danger)}.badge.info{background:#d7e6f8;color:var(--accent)}.badge.muted{background:#eceff2;color:var(--muted)}ul.plain,.inbox{list-style:none;margin:0;padding:0}ul.plain li,.inbox li{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem 1.25rem;padding:.85rem 0;border-bottom:1px solid var(--line)}ul.plain li:last-child,.inbox li:last-child{border-bottom:0}.inbox li.unread{background:#f3f7fd;margin:0 -.75rem;padding:.65rem .75rem;border-radius:8px}.chip-list{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;margin-bottom:1rem}.swatch{display:inline-block;width:.7rem;height:.7rem;border-radius:999px;margin-right:.4rem;vertical-align:middle}input[type=color]{padding:.15rem;height:2.4rem;width:4.5rem}pre.log{overflow:auto;max-height:16rem;background:#111827;color:#e5e7eb;border-radius:6px;padding:.75rem;font-size:.8rem}button.active{border-color:var(--accent);color:var(--accent)}.nav-count{display:inline-block;min-width:1.25rem;margin-left:auto;padding:.05rem .4rem;border-radius:999px;background:#c53d3d;color:#fff;font-size:.7rem;text-align:center;flex-shrink:0}.skip-link{position:absolute;left:.75rem;top:-3rem;z-index:40;background:var(--accent);color:var(--accent-ink);padding:.45rem .7rem;border-radius:6px}.skip-link:focus{top:.75rem}.page-header{display:flex;justify-content:space-between;gap:1rem;align-items:center;flex-wrap:wrap;margin-bottom:1.25rem}.page-header h1{margin:0 0 .35rem}.page-header .lede{margin:0}.empty-state{background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);padding:1.5rem}.empty-title{margin:0 0 .35rem;font-weight:600}.alert{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;padding:.75rem .9rem;border-radius:8px;background:#eef3f8;margin-bottom:1rem}.alert.danger,.alert.ok p,.alert p{margin:0}.alert.danger{background:#f8d7d7;color:var(--danger)}.alert.ok{background:#d9f2e1;color:var(--ok)}.field-error{color:var(--danger);font-size:.8rem;margin:.25rem 0 0}.form-field.invalid input,.form-field.invalid select,.form-field.invalid textarea{border-color:var(--danger)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);margin-top:.25rem;box-shadow:var(--shadow);background:var(--surface)}.table-wrap table{border:0}.table-wrap th{position:sticky;top:0;background:var(--surface)}.click-row{cursor:pointer}.click-row:hover>td{background:var(--row-hover)}tbody tr.tone-bad>td{background:var(--tone-bad-bg)}tbody tr.tone-warn>td{background:var(--tone-warn-bg)}tbody tr.tone-muted>td{background:var(--tone-muted-bg)}tbody tr.tone-bad>td:first-child{box-shadow:inset 3px 0 0 var(--danger)}tbody tr.tone-warn>td:first-child{box-shadow:inset 3px 0 #c48a00}tbody tr.tone-muted>td:first-child{box-shadow:inset 3px 0 #8a93a0}tbody tr.tone-bad.click-row:hover>td{background:var(--tone-bad-hover)}tbody tr.tone-warn.click-row:hover>td{background:var(--tone-warn-hover)}tbody tr.tone-muted.click-row:hover>td{background:var(--tone-muted-hover)}.stats div.tone-bad,.attention a.tone-bad{background:var(--tone-bad-bg);box-shadow:inset 3px 0 0 var(--danger),var(--shadow)}.stats div.tone-warn,.attention a.tone-warn{background:var(--tone-warn-bg);box-shadow:inset 3px 0 #c48a00,var(--shadow)}.toast-host{position:fixed;right:1rem;bottom:1rem;z-index:50;display:flex;flex-direction:column;gap:.5rem}.toast{min-width:16rem;max-width:24rem;padding:.7rem .9rem;border-radius:8px;background:#152033;color:#fff}.toast.ok{background:var(--ok)}.toast.danger{background:var(--danger)}.dialog-backdrop{position:fixed;inset:0;background:#15203373;z-index:60;display:flex;align-items:center;justify-content:center;padding:1rem}.dialog{width:min(28rem,100%);background:var(--surface);border-radius:10px;padding:1.25rem}.dialog h2{margin:0 0 .5rem}.dialog dl{display:grid;gap:.45rem;margin:.75rem 0 0}.dialog dl>div{display:grid;grid-template-columns:5.5rem 1fr;gap:.5rem}.dialog dt{margin:0;font-weight:600}.dialog dd{margin:0;color:var(--muted)}.nav-group{margin:1.1rem 0 .35rem;padding:0 .55rem;color:#9aabc2;font-size:.7rem;letter-spacing:.04em;text-transform:uppercase}.menu-toggle,.user-menu{position:relative}.menu-toggle{display:inline-flex;align-items:center;gap:.4rem;align-self:flex-end}.user-menu-panel{position:absolute;right:0;top:calc(100% + .35rem);min-width:12rem;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.4rem;z-index:30}.user-menu-panel a,.user-menu-panel button{display:block;width:100%;text-align:left;background:transparent;color:var(--ink);border:0;padding:.45rem .55rem}.attention{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.attention a{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem .95rem;text-decoration:none;color:inherit;box-shadow:var(--shadow)}.attention strong{display:block}.sidebar-backdrop{display:none}.status-banner{border-radius:10px;padding:1rem 1.15rem;margin-bottom:1.25rem}.status-banner.ok{background:#d9f2e1}.status-banner.warn{background:#fff1cc}.status-banner.bad{background:#f8d7d7}.public-shell{min-height:100vh;background:var(--bg);padding:2rem 1rem 3rem}.public-shell .public-card{width:min(56rem,100%);margin:0 auto}@media(max-width:800px){.app-shell,.app-shell.nav-collapsed{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:min(18rem,86vw);height:100dvh;z-index:35}.sidebar-backdrop{display:block;position:fixed;inset:0;background:#15203366;z-index:34}.row,.split,.page-header{grid-template-columns:1fr}.topbar .role{display:none}.org-switcher{min-width:0;flex:1 1 10rem}.topbar .spacer{display:none}.topbar .search:not(.search-overlay){display:none}.search-toggle{display:inline-flex;align-items:center;gap:.35rem}.search-overlay-backdrop{position:fixed;inset:0;background:#15203366;z-index:48}.search.search-overlay{position:fixed;top:.75rem;left:.75rem;right:.75rem;z-index:50;min-width:0}.search.search-overlay .search-results{max-height:min(24rem,70vh);overflow:auto}}@media(min-width:801px){.search-toggle,.search-overlay-backdrop{display:none}}.filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.85rem 1rem;margin-bottom:1.15rem}.filter-bar label{min-width:12rem;flex:1 1 12rem;max-width:20rem}.filter-bar>button{align-self:flex-end}.filter-bar form{display:flex;flex-wrap:wrap;gap:.85rem 1rem;align-items:flex-end}.filter-bar .tabs{margin-bottom:0}.pager{align-items:center;margin-top:1rem}.pager .hint{margin:0}app-form-field{display:block;width:100%;min-width:0}.form-field input:not([type=checkbox]):not([type=radio]),.form-field select,.form-field textarea{width:100%}.password-wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;align-items:stretch;width:100%}.password-wrap input{width:100%;min-width:0}.password-wrap button{align-self:stretch}.tabs{display:flex;gap:.35rem;margin-bottom:1rem}.tabs button{background:transparent;color:var(--ink);border:1px solid var(--line)}.tabs button.active{background:var(--surface);border-color:var(--ink)}.public-page{width:min(48rem,100%)}.public-page h1{margin-top:0}.sparkline{width:min(20rem,100%);height:2.25rem;color:var(--accent)}.password-check{list-style:none;padding:0;margin:.35rem 0 0;font-size:.8rem;color:var(--muted)}.password-check .ok{color:var(--ok)}.kv-list{border:1px solid var(--line);border-radius:.5rem;padding:.75rem;margin:0 0 .75rem}.kv-list legend{padding:0 .35rem}.kv-row{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;margin-bottom:.5rem}.flow{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem}.flow li{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .75rem;border:1px solid var(--line);border-radius:.5rem;background:var(--surface)}.session-banner{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:0 0 1rem;padding:.65rem .85rem;border:1px solid var(--line);border-radius:.5rem;background:var(--surface)}@media print{.sidebar,.topbar,.skip-link,.actions,.menu-toggle,.toast-host,.dialog-backdrop{display:none!important}.app-shell{display:block}.main,.page{padding:0}body{background:#fff;color:#000}.panel,.table-wrap,.stats div,.attention a,.auth-card{box-shadow:none}}
