:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#0f172a;background-color:#f1f5f9;line-height:1.45;font-weight:400;font-size:14px;--border:#e2e8f0;--border-strong:#cbd5e1;--muted:#64748b;--accent:#0369a1;--accent-bg:#0ea5e9;--nav-bg:#0f172a}*{box-sizing:border-box}body,html{margin:0;min-height:100vh;background-color:#f1f5f9;color:#0f172a}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}.mono,code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.82rem}code{background:#f8fafc;border:1px solid var(--border);border-radius:3px;padding:0 .3rem}code.hash{word-break:break-all;font-size:.75rem}pre{margin:0;padding:.5rem;background:#f8fafc;border:1px solid var(--border);border-radius:3px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:20rem}h1,h2,h3{margin:0;line-height:1.25}.shell{display:flex;min-height:100vh}.sidenav{width:176px;flex-shrink:0;background:var(--nav-bg);color:#e2e8f0;padding:.75rem .5rem;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{padding:.25rem .5rem .75rem}.brand-title{margin:0;font-weight:700;color:#f8fafc}.brand-sub{margin:.1rem 0 0;color:#94a3b8;font-size:.78rem}.sidenav nav{display:flex;flex-direction:column;gap:1px}.nav-link{display:block;border:none;background:transparent;color:#cbd5e1;border-radius:4px;padding:.35rem .6rem;cursor:pointer;font-size:.9rem;text-decoration:none}.nav-link:hover{background:rgba(248,250,252,.08);color:#f8fafc;text-decoration:none}.nav-link.active{background:var(--accent-bg);color:#fff}.shell-main{flex:1 1;min-width:0;display:flex;flex-direction:column}.layout-topbar,.topbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem 1rem;background:#fff;border-bottom:1px solid var(--border);flex-wrap:wrap}.topbar-area{font-weight:600}.topbar-actions{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}.content,.layout-content{flex:1 1;padding:1rem;min-width:0}.stack{display:flex;flex-direction:column;gap:1rem}.card{background-color:#fff;border:1px solid var(--border);border-radius:6px;padding:1rem;min-width:0}.card h2{font-size:1rem;margin:0 0 .5rem}.card h2:not(:first-child){margin-top:1rem}.card h3{font-size:.9rem;margin:1rem 0 .4rem}.crumbs{margin:0 0 .5rem;font-size:.82rem;color:var(--muted)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.75rem;flex-wrap:wrap}.page-header h1,.page-header h2{margin:0 0 .2rem;font-size:1.15rem}.page-header p{margin:0;max-width:60rem}.title-row{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:wrap}.title-code{font-size:1rem}.header-actions,.row-actions{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.row-actions{margin-top:.75rem}.danger-btn,.primary-btn,.secondary-btn{border:1px solid transparent;border-radius:4px;padding:.35rem .75rem;font-size:.875rem;cursor:pointer;white-space:nowrap}.danger-btn.small,.primary-btn.small,.secondary-btn.small{padding:.2rem .55rem;font-size:.8rem}.primary-btn{background-color:var(--accent-bg);color:#fff}.secondary-btn{background-color:#f1f5f9;border-color:var(--border-strong);color:#0f172a}.danger-btn{background-color:#dc2626;color:#fff}.danger-btn:disabled,.primary-btn:disabled,.secondary-btn:disabled{opacity:.55;cursor:not-allowed}.copy-btn{border:1px solid var(--border-strong);background:#f8fafc;border-radius:3px;padding:.05rem .35rem;cursor:pointer;font-size:.75rem;color:#0f172a;white-space:nowrap}.copy-btn:disabled{cursor:not-allowed;opacity:.55}.link-btn{display:inline-block;text-decoration:none}.table-actions{display:flex;flex-wrap:wrap;gap:.3rem}.table-actions button{border:1px solid var(--border-strong);border-radius:3px;padding:.15rem .45rem;font-size:.78rem;cursor:pointer;background-color:#f8fafc;color:#0f172a;white-space:nowrap}.table-actions button:disabled{opacity:.55;cursor:not-allowed}.table-actions button.danger{background-color:#fee2e2;border-color:#fca5a5;color:#7f1d1d}.search-bar,.toolbar{display:flex;gap:.5rem;margin-bottom:.6rem;flex-wrap:wrap;align-items:center}.toolbar input,.toolbar select{width:auto;min-width:10rem}.search-bar input,.toolbar .grow{flex:1 1;min-width:14rem}.filter-line{margin:0 0 .6rem;display:flex;gap:.35rem;flex-wrap:wrap}.tabs{display:flex;gap:0;margin-bottom:.75rem;border-bottom:1px solid var(--border)}.tab{background:transparent;padding:.35rem .8rem;cursor:pointer;font-size:.875rem;border:none;border-bottom:2px solid transparent;color:var(--muted)}.tab.active{border-bottom-color:var(--accent-bg);color:#0f172a;font-weight:600}.pill{display:inline-block;border-radius:999px;padding:.05rem .5rem;font-size:.72rem;font-weight:600;background:#e2e8f0;color:#334155;white-space:nowrap}.pill.good,.status-ok{background-color:#dcfce7;color:#166534}.pill.warn,.status-warn{background-color:#fef3c7;color:#92400e}.pill.down,.status-bad{background-color:#fee2e2;color:#991b1b}.chips{flex-wrap:wrap;gap:.25rem}.chip,.chips{display:inline-flex;align-items:center}.chip{gap:.2rem;border:1px solid var(--border-strong);border-radius:3px;padding:0 .35rem;font-size:.78rem;background:#f8fafc}.chip-remove{border:none;background:transparent;cursor:pointer;padding:0 .1rem;color:var(--muted);font-size:.9rem;line-height:1}.tag-editor{display:flex;flex-direction:column;gap:.35rem}.tag-add{max-width:22rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:.5rem;gap:.5rem;margin-bottom:1rem}.stat{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:4px;padding:.5rem .65rem;color:#0f172a}.stat,.stat:hover{text-decoration:none}.stat:hover{border-color:var(--accent-bg)}.stat-value{font-size:1.35rem;font-weight:700}.stat-label{font-size:.78rem;color:var(--muted)}.kv{display:grid;grid-template-columns:11rem 1fr;grid-gap:.3rem .75rem;gap:.3rem .75rem;margin:0}.kv dt{color:var(--muted);font-size:.82rem}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}.pre-line{white-space:pre-line}table{width:100%;border-collapse:collapse}td,th{padding:.3rem .45rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap}th,tr:hover td{background-color:#f8fafc}.users-sheet{font-size:.82rem}.table-wrap{overflow-x:auto;max-width:100%}.row-revoked td,.row-revoked td code{color:#94a3b8}.detail-row td{background:#f8fafc}.before-after{display:grid;grid-template-columns:1fr 1fr;grid-gap:.5rem;gap:.5rem}.before-after p{margin:0 0 .2rem}.note-cell{display:inline-block;max-width:24rem;overflow-wrap:anywhere}.user-cell{display:flex;flex-direction:column;gap:.05rem;min-width:8rem}.user-cell .muted{font-size:.75rem}.last-seen-fresh{color:var(--accent);font-weight:600}.license-key-cell{display:flex;align-items:center;gap:.35rem}.empty{margin:.25rem 0 .5rem}.muted{color:var(--muted);font-size:.82rem}.alert{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;border-radius:4px;background-color:#fee2e2;color:#991b1b;margin:0 0 .75rem;overflow-wrap:anywhere}.alert.success{background-color:#dcfce7;color:#166534}.alert.info{background-color:#e0f2fe;color:#075985}.alert.warn{background-color:#fef3c7;color:#92400e}.schema-banner{margin-bottom:1rem}.alert-close{border:none;background:transparent;color:inherit;cursor:pointer;font-size:1rem;line-height:1;padding:0}.preview-line{margin:.75rem 0 .5rem}.confirm-message p{margin:0 0 .5rem}.confirm-message{margin-bottom:.75rem}.login-card,.setup-card{max-width:420px;margin:10vh auto;background-color:#fff;border:1px solid var(--border);border-radius:6px;padding:1.5rem}.login-card h1,.setup-card h1{margin:0 0 .5rem;font-size:1.25rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:.6rem .75rem;gap:.6rem .75rem}.form-control{display:flex;flex-direction:column;gap:.25rem;min-width:0}.field span,.form-control label,.form-control>span:first-child{font-size:.8rem;font-weight:600;color:#475569}.form-control-wide{grid-column:1/-1}input,select,textarea{width:100%;border:1px solid var(--border-strong);border-radius:4px;padding:.35rem .55rem;font-size:.875rem;font-family:inherit;background-color:#fff;color:#0f172a}textarea.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem}input[type=checkbox],input[type=radio]{width:auto}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-bg);outline-offset:1px}input:disabled,select:disabled,textarea:disabled{background:#f8fafc;color:var(--muted)}.input-with-button{display:flex;gap:.35rem}.checkbox-row{display:flex;align-items:flex-start;gap:.5rem;margin:.6rem 0}.checkbox-row input[type=checkbox]{margin-top:.2rem}.inline-check{display:inline-flex;align-items:center;gap:.35rem;font-size:.875rem;cursor:pointer}.radio-group{border:1px solid var(--border);border-radius:4px;padding:.5rem .75rem;margin:0 0 .75rem;display:flex;flex-direction:column;gap:.3rem}.radio-group legend{font-size:.8rem;font-weight:600;color:#475569;padding:0 .25rem}.form-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem;flex-wrap:wrap}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:#fff;padding:1rem 1.1rem;border-radius:6px;width:min(560px,100%);max-height:90vh;overflow-y:auto}.modal.modal-wide{width:min(820px,100%)}.modal h2{margin:0 0 .75rem;font-size:1.05rem}.key-reveal{flex-direction:column}.key-reveal p{margin:0}.key-reveal .plaintext{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.05rem;margin:.3rem 0;word-break:break-all;color:#0f172a}@media (max-width:900px){.shell{flex-direction:column}.sidenav{width:100%;height:auto;position:static;display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;flex-wrap:wrap}.brand{padding:0 .5rem 0 .25rem}.brand-sub{display:none}.sidenav nav{flex-direction:row;flex-wrap:wrap}.kv{grid-template-columns:1fr}.kv dt{margin-top:.3rem}.before-after{grid-template-columns:1fr}.content{padding:.6rem}}