:root{--canvas: #f6f7f9;--surface: #ffffff;--surface-raised: #ffffff;--surface-sunken: #f1f3f5;--surface-hover: #f6f7f9;--fg: #14161a;--fg-muted: #5f6672;--fg-subtle: #8b929e;--line: #e4e7ec;--line-strong: #d0d5dd;--accent: #4f46e5;--accent-hover: #4338ca;--accent-active: #3730a3;--accent-fg: #ffffff;--accent-soft: #eef2ff;--accent-ring: rgba(79, 70, 229, .32);--danger: #b42318;--danger-hover: #912018;--danger-fg: #ffffff;--danger-soft: #fef3f2;--warn: #b54708;--warn-soft: #fffaeb;--ok: #067647;--ok-soft: #ecfdf3;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .04);--shadow-md: 0 4px 12px -2px rgba(16, 24, 40, .08), 0 2px 4px -2px rgba(16, 24, 40, .04);--shadow-lg: 0 16px 32px -8px rgba(16, 24, 40, .16), 0 4px 8px -4px rgba(16, 24, 40, .06);color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--canvas: #0b0d11;--surface: #121519;--surface-raised: #171b21;--surface-sunken: #0e1116;--surface-hover: #1b2027;--fg: #e8eaee;--fg-muted: #98a0ad;--fg-subtle: #6e7784;--line: #242932;--line-strong: #333a45;--accent: #7c7cf9;--accent-hover: #9092fb;--accent-active: #6366f1;--accent-fg: #0b0d11;--accent-soft: #1a1b3a;--accent-ring: rgba(124, 124, 249, .36);--danger: #f97066;--danger-hover: #fda29b;--danger-fg: #0b0d11;--danger-soft: #2a1512;--warn: #fdb022;--warn-soft: #2a1f0d;--ok: #47cd89;--ok-soft: #0d2a1c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px -2px rgba(0, 0, 0, .5), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 16px 32px -8px rgba(0, 0, 0, .6), 0 4px 8px -4px rgba(0, 0, 0, .4);color-scheme:dark}}:root[data-theme=dark]{--canvas: #0b0d11;--surface: #121519;--surface-raised: #171b21;--surface-sunken: #0e1116;--surface-hover: #1b2027;--fg: #e8eaee;--fg-muted: #98a0ad;--fg-subtle: #6e7784;--line: #242932;--line-strong: #333a45;--accent: #7c7cf9;--accent-hover: #9092fb;--accent-active: #6366f1;--accent-fg: #0b0d11;--accent-soft: #1a1b3a;--accent-ring: rgba(124, 124, 249, .36);--danger: #f97066;--danger-hover: #fda29b;--danger-fg: #0b0d11;--danger-soft: #2a1512;--warn: #fdb022;--warn-soft: #2a1f0d;--ok: #47cd89;--ok-soft: #0d2a1c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px -2px rgba(0, 0, 0, .5), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 16px 32px -8px rgba(0, 0, 0, .6), 0 4px 8px -4px rgba(0, 0, 0, .4);color-scheme:dark}:root{--space-0h: 4px;--space-1: 8px;--space-2: 16px;--space-3: 24px;--space-4: 32px;--space-5: 40px;--space-6: 48px;--space-8: 64px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 999px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", SFMono-Regular, "JetBrains Mono", Menlo, Consolas, monospace;--text-xs: 11px;--text-sm: 12px;--text-base: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 26px;--ease: cubic-bezier(.2, .7, .3, 1);--t-fast: .11s;--t-base: .17s;--t-slow: .28s;--sidebar-w: 244px;--tabbar-h: 60px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--canvas);color:var(--fg);font-family:var(--font-sans);font-size:var(--text-md);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02","cv03","cv04","calt";transition:background-color var(--t-base) var(--ease),color var(--t-base) var(--ease)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}::selection{background:var(--accent-soft);color:var(--fg)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}h1{font-size:var(--text-2xl);font-weight:640;letter-spacing:-.021em;line-height:1.2;margin:0}h2{font-size:var(--text-xs);font-weight:660;text-transform:uppercase;letter-spacing:.07em;color:var(--fg-subtle);margin:var(--space-4) 0 var(--space-1)}h3{font-size:var(--text-lg);font-weight:620;letter-spacing:-.011em;margin:0 0 var(--space-1)}p{margin:var(--space-1) 0}a{color:var(--accent);text-decoration:none;transition:color var(--t-fast) var(--ease)}a:hover{color:var(--accent-hover);text-decoration:underline;text-underline-offset:2px}code,pre,.mono{font-family:var(--font-mono);font-size:var(--text-sm)}.muted{color:var(--fg-muted)}.small{font-size:var(--text-base)}.error{color:var(--danger)}.warn{color:var(--warn);font-weight:560}.ok{color:var(--ok);font-weight:560}.app{min-height:100dvh;display:grid;grid-template-columns:var(--sidebar-w) 1fr}.sidebar{position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-2);background:var(--surface);border-right:1px solid var(--line);transition:background-color var(--t-base) var(--ease),border-color var(--t-base) var(--ease)}.brand{display:flex;align-items:center;gap:var(--space-1);padding:0 var(--space-1) var(--space-2);min-width:0}.brand-mark{width:30px;height:30px;flex:none;border-radius:var(--radius-md);background:var(--accent);color:var(--accent-fg);display:grid;place-items:center;font-size:var(--text-base);font-weight:700;letter-spacing:-.02em;box-shadow:var(--shadow-sm)}.brand-name{font-size:var(--text-md);font-weight:620;letter-spacing:-.012em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-sub{font-size:var(--text-xs);color:var(--fg-subtle)}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto}.nav-section{font-size:var(--text-xs);font-weight:640;text-transform:uppercase;letter-spacing:.07em;color:var(--fg-subtle);padding:var(--space-2) var(--space-1) var(--space-0h)}.nav-link{position:relative;display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-1);border-radius:var(--radius-md);color:var(--fg-muted);font-size:var(--text-md);font-weight:520;text-decoration:none;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.nav-link:hover{background:var(--surface-hover);color:var(--fg);text-decoration:none}.nav-link:active{background:var(--surface-sunken)}.nav-link.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-link:before{content:"";position:absolute;left:0;top:50%;width:3px;height:0;border-radius:0 var(--radius-full) var(--radius-full) 0;background:var(--accent);transform:translateY(-50%);transition:height var(--t-base) var(--ease)}.nav-link.active:before{height:62%}.nav-icon{flex:none;width:18px;height:18px;stroke-width:1.75}.nav-badge{margin-left:auto;min-width:20px;padding:0 6px;border-radius:var(--radius-full);background:var(--warn);color:var(--surface);font-size:var(--text-xs);font-weight:680;line-height:18px;text-align:center;font-variant-numeric:tabular-nums}.nav-link.active .nav-badge{background:var(--accent);color:var(--accent-fg)}.sidebar-footer{display:flex;align-items:center;gap:var(--space-0h);padding-top:var(--space-2);border-top:1px solid var(--line)}main{min-width:0;padding:var(--space-4);padding-bottom:var(--space-6)}.page{max-width:1120px;margin:0 auto;animation:page-in var(--t-slow) var(--ease) both}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.topbar,.tabbar,.sheet-backdrop{display:none}@media (max-width: 900px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}.sidebar{display:none}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);padding-top:max(var(--space-1),env(safe-area-inset-top));background:color-mix(in srgb,var(--surface) 86%,transparent);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line)}.topbar .brand{padding:0;flex:1}main{padding:var(--space-2);padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--space-4))}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-top:1px solid var(--line)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;background:none;padding:0;color:var(--fg-subtle);font-size:var(--text-xs);font-weight:540;text-decoration:none;cursor:pointer;min-height:var(--tabbar-h);transition:color var(--t-fast) var(--ease);-webkit-tap-highlight-color:transparent}.tab:hover{text-decoration:none;color:var(--fg-muted)}.tab.active{color:var(--accent)}.tab .nav-icon{transition:transform var(--t-fast) var(--ease)}.tab:active .nav-icon{transform:scale(.88)}.tab.active .nav-icon{transform:translateY(-1px)}.tab-badge{position:absolute;transform:translate(12px,-10px);min-width:16px;height:16px;padding:0 4px;border-radius:var(--radius-full);background:var(--warn);color:var(--surface);font-size:10px;font-weight:700;line-height:16px;text-align:center}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:block;background:#0006;border:none;padding:0;animation:fade-in var(--t-base) var(--ease) both}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:31;background:var(--surface-raised);border-top:1px solid var(--line);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-1) var(--space-2) calc(var(--space-3) + env(safe-area-inset-bottom));box-shadow:var(--shadow-lg);animation:sheet-up var(--t-slow) var(--ease) both}.sheet:before{content:"";display:block;width:36px;height:4px;margin:var(--space-1) auto var(--space-2);border-radius:var(--radius-full);background:var(--line-strong)}.sheet .nav-link{padding:var(--space-2) var(--space-1);font-size:var(--text-lg)}.sheet .nav-link:before{display:none}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}h1{font-size:var(--text-xl)}table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-3);margin:var(--space-2) 0;box-shadow:var(--shadow-sm);transition:border-color var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease),background-color var(--t-base) var(--ease)}.card.highlight{border-color:var(--accent);background:var(--accent-soft)}.row{display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap}.spread{justify-content:space-between}table{width:100%;border-collapse:collapse;margin-top:var(--space-1);font-size:var(--text-md)}th{text-align:left;font-size:var(--text-xs);font-weight:620;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-subtle);padding:var(--space-1);border-bottom:1px solid var(--line);white-space:nowrap}td{padding:var(--space-1);border-bottom:1px solid var(--line);vertical-align:middle}tbody tr{transition:background-color var(--t-fast) var(--ease)}tbody tr:hover{background:var(--surface-hover)}tr.revoked td{opacity:.48}td:has(+td),.tabular{font-variant-numeric:tabular-nums}button{font:inherit;font-size:var(--text-md);font-weight:540;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);border:1px solid var(--line-strong);background:var(--surface);color:var(--fg);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-0h);white-space:nowrap;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}button:hover{background:var(--surface-hover);border-color:var(--fg-subtle)}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed;transform:none}button:disabled:hover{background:var(--surface);border-color:var(--line-strong)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);font-weight:580;box-shadow:var(--shadow-sm)}button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button.primary:active{background:var(--accent-active)}button.primary:disabled:hover{background:var(--accent);border-color:var(--accent)}button.link{border:none;background:none;color:var(--accent);padding:var(--space-0h) var(--space-0h);font-weight:540}button.link:hover{background:var(--accent-soft);border-color:transparent}button.link.danger{color:var(--danger)}button.link.danger:hover{background:var(--danger-soft)}button.danger-solid{background:var(--danger);border-color:var(--danger);color:var(--danger-fg);font-weight:580}button.danger-solid:hover{background:var(--danger-hover);border-color:var(--danger-hover)}button.danger-solid:disabled{opacity:.4;cursor:not-allowed}button.danger-solid:disabled:hover{background:var(--danger);border-color:var(--danger)}button.icon{padding:0;width:34px;height:34px;flex:none;border-color:transparent;background:none;color:var(--fg-muted)}button.icon:hover{background:var(--surface-hover);border-color:var(--line);color:var(--fg)}button.icon svg{width:17px;height:17px}input,select,textarea{font:inherit;font-size:var(--text-md);padding:var(--space-1) var(--space-2);border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--surface);color:var(--fg);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}input:hover,select:hover,textarea:hover{border-color:var(--fg-subtle)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}input::placeholder,textarea::placeholder{color:var(--fg-subtle)}textarea{width:100%;font-family:var(--font-mono);font-size:var(--text-sm);line-height:1.6;resize:vertical}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 15px) center,calc(100% - 10px) center;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:var(--space-4);cursor:pointer}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;padding:0;border-radius:var(--radius-sm);border:1px solid var(--line-strong);display:inline-grid;place-content:center;cursor:pointer;flex:none}input[type=checkbox]:after{content:"";width:9px;height:9px;transform:scale(0);transition:transform var(--t-fast) var(--ease);box-shadow:inset 1em 1em var(--accent-fg);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{transform:scale(1)}.card label{display:flex;flex-direction:column;gap:var(--space-0h);margin-bottom:var(--space-2);max-width:440px;font-size:var(--text-base);font-weight:540;color:var(--fg-muted)}.card label input,.card label select{width:100%;font-weight:400;color:var(--fg)}.card label textarea{font-family:inherit;font-size:inherit;font-weight:400;color:var(--fg)}.checkgrid{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);margin:var(--space-1) 0}.checkrow{display:inline-flex;align-items:center;gap:var(--space-1);max-width:none;margin:0;font-size:var(--text-md);color:var(--fg);font-weight:400;cursor:pointer}.checkrow input{width:auto}.tag{display:inline-flex;align-items:center;margin-left:var(--space-1);padding:1px var(--space-1);border-radius:var(--radius-full);border:1px solid var(--line);background:var(--surface-sunken);color:var(--fg-muted);font-size:var(--text-xs);font-weight:540;white-space:nowrap}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none;position:relative}.dot-on{background:var(--ok)}.dot-off{background:var(--fg-subtle)}.dot-revoked{background:var(--danger)}.dot-on:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:50%;border:1px solid var(--ok);opacity:0;animation:pulse 2.4s var(--ease) infinite}@keyframes pulse{0%{transform:scale(.7);opacity:.7}70%,to{transform:scale(1.5);opacity:0}}.avatar{border-radius:50%;object-fit:cover;display:inline-flex;flex:none;background:var(--surface-sunken);border:1px solid var(--line)}.avatar-empty{align-items:center;justify-content:center;color:var(--fg-muted);font-weight:620;font-size:.9em;text-transform:uppercase;letter-spacing:-.01em}.signed-in-as{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1);margin:0 var(--space-1) var(--space-1);border-radius:var(--radius-md);background:var(--surface-sunken);min-width:0}.avatar-initials{flex:none;width:28px;height:28px;border-radius:50%;display:inline-grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:640;font-size:var(--text-base)}.signed-in-name{font-size:var(--text-base);font-weight:560;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.signed-in-role{font-size:var(--text-xs);color:var(--fg-subtle)}.live-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-0h) var(--space-1);border-radius:var(--radius-full);border:1px solid var(--line);background:var(--surface);font-size:var(--text-base);font-weight:540;color:var(--fg-muted)}.live-badge.on{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 32%,var(--line))}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--space-2);margin:var(--space-2) 0}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-2);box-shadow:var(--shadow-sm)}.stat-label{font-size:var(--text-xs);font-weight:640;text-transform:uppercase;letter-spacing:.07em;color:var(--fg-subtle)}.stat-value{font-size:38px;font-weight:660;line-height:1.1;letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:var(--space-0h)}.stat-value.accent{color:var(--accent)}.stat-hint{font-size:var(--text-base);color:var(--fg-muted);margin-top:var(--space-0h)}.inline-field{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-base);font-weight:540;color:var(--fg-muted)}.bars{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-1)}.bar-row{display:grid;grid-template-columns:148px 1fr auto;align-items:center;gap:var(--space-2)}.bar-label{font-size:var(--text-md);font-weight:520;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{background:var(--surface-sunken);border:1px solid var(--line);border-radius:var(--radius-full);height:20px;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:var(--radius-full);min-width:3px;background:linear-gradient(90deg,var(--accent),var(--accent-hover));transition:width var(--t-slow) var(--ease)}.bar-value{font-variant-numeric:tabular-nums;font-weight:620;white-space:nowrap}@media (max-width: 900px){.bar-row{grid-template-columns:104px 1fr auto;gap:var(--space-1)}}.ticker{list-style:none;padding:0;margin:var(--space-1) 0}.ticker li{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-0h);border-bottom:1px solid var(--line);transition:background-color var(--t-fast) var(--ease)}.ticker li:hover{background:var(--surface-hover)}.ticker li:first-child{animation:ticker-in var(--t-slow) var(--ease) both}@keyframes ticker-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.ticker-name{font-weight:580}.ticker-action{font-size:var(--text-xs);font-weight:700;letter-spacing:.05em;padding:1px var(--space-1);border-radius:var(--radius-sm)}.ticker-action.in{color:var(--ok);background:var(--ok-soft)}.ticker-action.out{color:var(--fg-muted);background:var(--surface-sunken)}.ticker-time{margin-left:auto;font-variant-numeric:tabular-nums;font-size:var(--text-base)}.code-big{font-family:var(--font-mono);font-size:34px;font-weight:620;letter-spacing:.18em;margin:var(--space-1) 0;color:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#00000073;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:var(--space-3);animation:fade-in var(--t-base) var(--ease) both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{max-width:480px;width:100%;margin:0;box-shadow:var(--shadow-lg);animation:modal-in var(--t-base) var(--ease) both}.modal label{max-width:none}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.signin{max-width:440px;margin:0 auto;padding:var(--space-3);min-height:100dvh;display:flex;flex-direction:column;justify-content:center;animation:page-in var(--t-slow) var(--ease) both}.signin .brand{padding:0 0 var(--space-3)}.signin h1{margin-bottom:var(--space-1)}.signin code{display:block;margin-top:var(--space-1);padding:var(--space-1);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-sunken);font-size:var(--text-sm);word-break:break-all}.signin form{margin-top:var(--space-2)}.signin label{display:flex;flex-direction:column;gap:var(--space-0h);margin-bottom:var(--space-2);font-size:var(--text-base);font-weight:540;color:var(--fg-muted)}.signin label input{width:100%;font-weight:400;color:var(--fg)}.signin form button{margin-top:var(--space-2);width:100%}.signin>button.link{margin-top:var(--space-2);width:auto;align-self:flex-start}.get-app{max-width:520px;margin:0 auto;padding:var(--space-3);min-height:100dvh;display:flex;flex-direction:column;justify-content:center;animation:page-in var(--t-slow) var(--ease) both}.get-app header{padding-bottom:var(--space-3)}.get-app h1{margin-bottom:var(--space-1)}.get-app h2{margin:0}.get-app .button.big{display:block;width:100%;margin:var(--space-3) 0 var(--space-2);padding:var(--space-2);border-radius:var(--radius-md);background:var(--accent);color:var(--accent-fg);font-size:var(--text-lg);font-weight:600;text-align:center;text-decoration:none}.get-app .button.big:hover{background:var(--accent-hover)}.get-app .button.big:active{background:var(--accent-active)}.get-app details{margin-top:var(--space-2)}.get-app summary{cursor:pointer;padding:var(--space-1) 0}.get-app ol{margin:var(--space-1) 0 var(--space-1) var(--space-3)}.get-app li{margin-bottom:var(--space-1)}.get-app .notes{white-space:pre-wrap}.get-app .hash{display:block;padding:var(--space-1);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-sunken);font-size:var(--text-sm);word-break:break-all}.get-app .pill.warn{padding:2px var(--space-1);border-radius:var(--radius-sm);background:var(--warning-soft, var(--surface-sunken));color:var(--warning);font-size:var(--text-sm);font-weight:600}.versions{padding:var(--space-1) 0;font-size:var(--text-sm, .75rem);line-height:1.5;color:var(--muted);opacity:.85}.versions a{color:inherit;text-decoration:underline}.versions a:hover{color:var(--text)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000047;z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);z-index:41;display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--line);box-shadow:-12px 0 32px #0000001f}.drawer-head{display:flex;align-items:center;gap:var(--space-2);justify-content:flex-end;padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface)}.drawer-body{flex:1;overflow-y:auto;padding:var(--space-2)}.editor-title{margin:0;font-size:var(--text-lg);font-weight:640;text-transform:none;letter-spacing:normal;color:var(--fg)}tr.selected>td{background:var(--accent-soft)}.num{text-align:right;width:3rem;font-variant-numeric:tabular-nums}@media (prefers-reduced-motion: no-preference){.drawer{animation:drawer-in .16s ease-out}@keyframes drawer-in{0%{transform:translate(16px);opacity:.6}}}.search{min-width:22rem;max-width:100%}th>button.sortable{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit}th>button.sortable:hover{color:var(--fg)}th>button.sortable:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px;border-radius:4px}.sort-arrow{display:inline-block;min-width:.75em;font-size:.75em;color:var(--accent)}.bulk-bar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding:var(--space-1) var(--space-2);margin:var(--space-2) 0;border:1px solid var(--accent);border-radius:var(--radius-lg);background:var(--accent-soft)}.drawer-head>strong{margin-right:auto}.bulk-bar-head{display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap}.bulk-actions{display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap}.chip{padding:var(--space-0h) var(--space-1);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);color:var(--fg);font-size:.875rem;cursor:pointer;transition:background-color var(--t-base) var(--ease),border-color var(--t-base) var(--ease)}.chip:hover:not(:disabled){background:var(--surface-hover)}.chip:disabled{opacity:.55;cursor:not-allowed}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.bulk-edit{display:flex;flex-direction:column;gap:var(--space-2)}.bulk-edit>p:first-child{margin:0}.bulk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:var(--space-2)}.bulk-edit label{display:flex;flex-direction:column;gap:var(--space-0h)}.bulk-edit label>span{line-height:1.2}.bulk-edit select,.bulk-edit input,.bulk-edit textarea{width:100%}.bulk-edit label.check{flex-direction:row;align-items:center;gap:var(--space-1)}.bulk-edit label.check input{width:auto}.notes{margin-top:var(--space-3)}.note-add{display:flex;gap:var(--space-1);align-items:flex-start;margin-bottom:var(--space-2)}.note-add textarea{flex:1 1 auto}.note-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.note-list li{padding:var(--space-1) var(--space-2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius-lg);background:var(--surface)}.note-list li p{margin:0}.note-list li p+p{margin-top:var(--space-0h)}.editor-actions{display:flex;align-items:center;gap:var(--space-1);margin-right:auto}.policy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--space-2);align-items:start}.policy-grid .field{display:flex;flex-direction:column;gap:var(--space-0h);min-width:0}.policy-grid .field>span{display:flex;align-items:flex-end;min-height:2.5em;line-height:1.25}.policy-grid .field>input{width:100%}.policy-grid .field>small{line-height:1.35}
