:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#070809;color:#f4f2ee;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--bg: #070809;--panel: #101214;--panel-muted: #171b1f;--border: #272b30;--border-strong: #3d4249;--text: #f4f2ee;--muted: #aaa8a4;--accent: #ff7a00;--accent-strong: #ff9a1f;--accent-soft: rgb(255 122 0 / 14%);--danger: #ff9b93;--danger-soft: rgb(255 107 95 / 16%);--warning: #ffb454;--warning-soft: rgb(255 180 84 / 16%);--success: #5ee08b;--success-soft: rgb(94 224 139 / 16%);--sidebar: #050607;--sidebar-text: #f4f2ee;--sidebar-muted: #9a9a9a;--radius: 8px;--shadow: 0 18px 46px rgb(0 0 0 / 44%)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--sidebar);color:var(--sidebar-text);padding:16px 12px;min-height:100vh}.sidebar-backdrop{display:none}.sidebar__brand{display:flex;align-items:center;gap:10px;min-height:48px;padding:4px 8px 14px;border-bottom:1px solid rgb(255 122 0 / 22%)}.sidebar__logo{width:92px;height:46px;object-fit:cover;object-position:center;border-radius:4px;background:#050607}.sidebar__title{font-weight:700;line-height:1.2}.sidebar__subtitle{margin-top:2px;color:var(--sidebar-muted);font-size:.78rem}.sidebar__nav{display:grid;gap:14px;padding-top:16px}.nav-group{display:grid;gap:4px}.nav-group__label{padding:8px;color:var(--sidebar-muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0}.nav-link{display:flex;align-items:center;gap:9px;min-height:36px;padding:8px;border-radius:6px;color:var(--sidebar-text);text-decoration:none}.nav-link:hover,.nav-link--active{background:#ff7a001f}.nav-link--active{box-shadow:inset 3px 0 0 var(--accent)}.app-main{min-width:0}.topbar{position:sticky;z-index:20;top:0;display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 18px;border-bottom:1px solid var(--border);background:#0a0b0ceb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.icon-button.topbar__menu{display:none}.topbar__status{display:flex;align-items:center;gap:8px;min-width:0;margin-right:auto}.topbar__detail{color:var(--muted);font-size:.86rem}.content{width:min(1180px,100%);padding:24px}.auth-page{display:grid;place-items:center;min-height:100vh;padding:24px}.auth-panel{display:grid;gap:18px;width:min(440px,100%);border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);padding:20px}.auth-panel__header{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr);align-items:center;gap:12px}.auth-panel__header h1{margin:0;font-size:1.35rem;line-height:1.2}.auth-panel__header p{margin:4px 0 0;color:var(--muted)}.auth-panel__logo{width:100%;max-width:150px;height:86px;object-fit:cover;object-position:center;border-radius:6px;background:#050607}.auth-panel__section{display:grid;gap:12px}.auth-panel__button{width:100%}.auth-panel__subhead{display:inline-flex;align-items:center;gap:8px;font-weight:700}.page{display:grid;gap:20px}.page__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.page__header h1{margin:0;font-size:1.55rem;line-height:1.2}.page__header p,.placeholder-panel p,.empty-state p,.metric-card p{margin:6px 0 0;color:var(--muted);line-height:1.5}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.metric-card,.placeholder-panel,.empty-state{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}.metric-card{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;min-height:142px;padding:14px}.metric-card__icon{display:grid;place-items:center;width:36px;height:36px;border-radius:6px;background:var(--accent-soft);color:var(--accent)}.metric-card h2,.placeholder-panel h2,.empty-state h2,.dialog h2{margin:0;font-size:.95rem;line-height:1.25}.metric-card__value{margin-top:8px;font-weight:700}.dashboard-page{padding-bottom:24px}.dashboard-header{align-items:center}.dashboard-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-card-title,.dashboard-summary-card__header,.dashboard-service-group__header,.dashboard-panel__header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.dashboard-card-title h2{min-width:0}.dashboard-panel,.dashboard-summary-card,.dashboard-service-group{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}.dashboard-panel{display:grid;gap:14px;padding:16px}.dashboard-panel__header h2,.dashboard-summary-card h3,.dashboard-service-group h3{margin:0;font-size:1rem;line-height:1.25}.dashboard-panel__header p{margin:5px 0 0;color:var(--muted);line-height:1.45}.dashboard-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dashboard-summary-grid--wide{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-summary-card{display:grid;align-content:start;gap:12px;min-height:154px;padding:14px}.dashboard-kv{display:grid;gap:8px;margin:0}.dashboard-kv div{display:grid;grid-template-columns:minmax(120px,1fr) minmax(70px,auto);gap:12px;align-items:baseline}.dashboard-kv dt{color:var(--muted)}.dashboard-kv dd{margin:0;font-weight:700;text-align:right}.dashboard-warning{margin:0;color:var(--warning);line-height:1.45}.dashboard-error-list{display:grid;gap:8px}.dashboard-service-grid{display:grid;gap:12px}.dashboard-service-group{display:grid;gap:10px;padding:12px}.dashboard-service-group .data-table{min-width:760px}.dashboard-log-message{display:inline-block;max-width:560px;overflow-wrap:anywhere;line-height:1.45}.governance-page,.wireguard-page{padding-bottom:24px}.governance-stack{display:grid;gap:16px}.governance-panel{display:grid;gap:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);padding:16px}.governance-panel__header,.subject-editor__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.governance-panel__header h2,.subject-editor__header h3{margin:0;font-size:1rem;line-height:1.25}.governance-panel__header p{margin:5px 0 0;color:var(--muted);line-height:1.45}.form-grid{display:grid;gap:12px}.form-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-actions{display:flex;justify-content:flex-end}.mapping-list,.subject-editor{display:grid;gap:10px}.mapping-row{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(190px,1.5fr) minmax(160px,1fr) auto auto;gap:10px;align-items:end;border:1px solid var(--border);border-radius:var(--radius);padding:10px}.mapping-row__role{display:grid;gap:8px;align-content:end;min-height:62px}.check-field{display:inline-flex;align-items:center;gap:8px;align-self:end;min-height:36px;font-weight:700}.table-actions{display:flex;flex-wrap:wrap;gap:8px}.muted-text{margin-top:3px;color:var(--muted);font-size:.86rem;overflow-wrap:anywhere}.detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.detail-item{display:grid;gap:4px;min-height:74px;border:1px solid var(--border);border-radius:var(--radius);padding:10px}.detail-item dt{color:var(--muted);font-size:.83rem;font-weight:700}.detail-item dd{margin:0;overflow-wrap:anywhere}.detail-grid__actions{display:flex;align-items:end}.wireguard-back-link{display:inline-block;margin-bottom:6px;color:var(--muted);font-size:.86rem;font-weight:700;text-decoration:none}.wireguard-back-link:hover{color:var(--accent)}.wireguard-action-bar{display:flex;flex-wrap:wrap;gap:8px}.wireguard-action-button{width:108px;min-width:108px}.button.wireguard-action-button--success{border-color:#5ee08b8a;background:#166534;color:#fff}.button.wireguard-action-button--success:hover{border-color:#5ee08bbd;background:#15803d}.button.wireguard-action-button--danger{border-color:#ff9b9394;background:#b42318;color:#fff}.button.wireguard-action-button--danger:hover{border-color:#ff9b93c2;background:#c83b30}.wireguard-runtime-cell{display:grid;gap:4px;min-width:190px}.wireguard-runtime-cell span:last-child{color:var(--muted);font-size:.86rem}.dialog-copy{display:grid;gap:10px}.dialog-copy p{margin:0}.operations-page{padding-bottom:24px}.operations-stack{display:grid;gap:14px}.operations-panel{display:grid;gap:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);padding:16px}.operations-panel--nested{background:var(--panel-muted)}.operations-panel__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.operations-panel__header h2,.operations-panel__header h3{margin:0;font-size:1rem;line-height:1.25}.operations-panel__header p{margin:5px 0 0;color:var(--muted);line-height:1.45}.operations-filter-grid{align-items:end}.operations-actions{gap:8px}.operations-inline-controls{display:grid;grid-template-columns:minmax(180px,260px) auto;align-items:end;gap:12px}.operations-check{justify-self:start}.operations-message{display:inline-block;min-width:220px;overflow-wrap:anywhere}.operations-metadata{display:grid;gap:6px;min-width:220px;margin:0}.operations-metadata div{display:grid;grid-template-columns:minmax(88px,.7fr) minmax(120px,1fr);gap:8px}.operations-metadata dt{color:var(--muted);font-size:.82rem;font-weight:700;text-transform:capitalize}.operations-metadata dd{margin:0;overflow-wrap:anywhere}.operations-empty{display:inline-flex;align-items:center;gap:8px;color:var(--muted)}.network-page .data-table{min-width:820px}.network-metric{grid-template-columns:minmax(0,1fr);min-height:118px}.network-toggle-row,.network-saved-summary,.network-form-status,.network-preview__badges{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.network-saved-summary,.network-form-status{color:var(--muted);font-size:.9rem}.network-preview{display:grid;gap:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-muted);padding:12px}.network-code-block{display:grid;gap:5px}.network-code-block__label{color:var(--muted);font-size:.82rem;font-weight:700}.network-code-block pre,.network-inline-code{overflow-wrap:anywhere;white-space:pre-wrap;word-break:break-word}.network-code-block pre{max-height:260px;overflow:auto;margin:0;border:1px solid var(--border);border-radius:6px;background:#08090a;color:var(--text);padding:10px}.network-inline-code{display:inline-block;max-width:360px;color:var(--muted);font-size:.82rem}.network-warning-list{display:grid;gap:4px;margin:0;padding-left:18px;color:var(--warning)}.placeholder-panel,.empty-state{padding:18px}.button,.icon-button,.tabs__tab{border:1px solid transparent;border-radius:6px;font-weight:650}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:7px 12px}.button--sm{min-height:32px;padding:5px 10px;font-size:.86rem}.button--primary{background:var(--accent);color:#090909}.button--primary:hover{background:var(--accent-strong)}.button--secondary{border-color:var(--border);background:var(--panel);color:var(--text)}.button--secondary:hover{border-color:var(--border-strong);background:var(--panel-muted)}.button--danger{background:#b42318;color:#fff}.button--ghost{background:transparent;color:var(--text)}.button:disabled{opacity:.58}.icon-button{display:inline-grid;place-items:center;width:34px;height:34px;padding:0;border-color:var(--border);background:var(--panel);color:var(--text)}.icon-button:hover{background:var(--panel-muted)}.status-badge{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:999px;font-size:.78rem;font-weight:750;white-space:nowrap}.status-badge--neutral{background:var(--panel-muted);color:var(--muted)}.status-badge--success{background:var(--success-soft);color:var(--success)}.status-badge--warning{background:var(--warning-soft);color:var(--warning)}.status-badge--danger{background:var(--danger-soft);color:var(--danger)}.field{display:grid;gap:5px}.field__label{font-weight:700}.field__description,.field__error{font-size:.85rem}.field__description{color:var(--muted)}.field__error{color:var(--danger)}.input{width:100%;min-height:36px;border:1px solid var(--border-strong);border-radius:6px;background:#08090a;color:var(--text);padding:7px 9px}.input:focus{border-color:var(--accent);outline:2px solid rgb(255 122 0 / 24%);outline-offset:1px}.textarea{min-height:96px;resize:vertical}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}.data-table{width:100%;min-width:640px;border-collapse:collapse}.data-table th,.data-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.data-table th{background:var(--panel-muted);font-size:.83rem}.data-table tr:last-child td{border-bottom:0}.table-empty,.inline-error,.loading-state{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);padding:12px}.inline-error{border-color:var(--danger-soft);background:#ff6b5f1a;color:var(--danger)}.tabs{display:grid;gap:12px}.tabs__list{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid var(--border)}.tabs__tab{min-height:34px;padding:7px 10px;background:transparent;color:var(--muted)}.tabs__tab--active{border-color:var(--border);border-bottom-color:var(--panel);background:var(--panel);color:var(--text)}.tabs__panel{min-height:48px}.dialog-backdrop{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:16px;background:#00000061}.dialog{width:min(440px,100%);border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);padding:18px}.dialog__body{margin-top:10px;color:var(--muted)}.dialog__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.loading-state{display:inline-flex;align-items:center;gap:8px}.loading-state__spinner{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:999px;animation:spin .9s linear infinite}.toast-stack{position:fixed;z-index:60;right:14px;bottom:14px;display:grid;gap:8px;width:min(360px,calc(100vw - 28px))}.toast{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);padding:9px 9px 9px 12px}.toast--success{border-color:var(--success-soft)}.toast--warning{border-color:var(--warning-soft)}.toast--danger{border-color:var(--danger-soft)}.portal-shell{min-height:100vh;background:var(--bg)}.portal-topbar{position:sticky;z-index:20;top:0;display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:64px;border-bottom:1px solid var(--border);background:#0a0b0cf0;padding:10px 24px}.portal-brand{display:flex;align-items:center;gap:10px;min-width:0}.portal-brand__logo{width:76px;height:38px;object-fit:cover;object-position:center;border-radius:4px;background:#050607}.portal-brand__title{font-weight:700;line-height:1.2}.portal-brand__subtitle,.portal-user{color:var(--muted);font-size:.84rem}.portal-topbar__actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.portal-user{overflow:hidden;max-width:260px;text-overflow:ellipsis;white-space:nowrap}.portal-content{width:min(980px,100%);margin:0 auto;padding:24px}.portal-content--centered{display:grid;place-items:center;min-height:calc(100vh - 64px)}.portal-content:has(.portal-auth),.portal-content:has(.portal-centered){display:grid;place-items:center;min-height:calc(100vh - 64px)}.portal-centered{display:grid;place-items:center;min-height:calc(100vh - 112px)}.portal-auth{display:grid;justify-items:center;gap:14px;width:min(460px,100%);margin:min(12vh,96px) auto 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);padding:22px;text-align:center}.portal-content--centered .portal-auth,.portal-content:has(.portal-auth) .portal-auth{margin:0}.portal-auth .button{justify-self:center;width:fit-content}.portal-auth h1{margin:0;font-size:1.45rem}.portal-auth p{margin:0;color:var(--muted);line-height:1.5}.portal-page{max-width:980px}.client-link-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.client-link{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:68px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-muted);padding:12px;text-decoration:none}.client-link:hover{border-color:var(--accent);background:var(--accent-soft)}.client-link span{display:grid;gap:3px}.client-link small{color:var(--muted)}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 920px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:40;inset:0 auto 0 0;width:min(280px,86vw);transform:translate(-100%);transition:transform .15s ease}.sidebar--open{transform:translate(0)}.sidebar-backdrop{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:block;border:0;background:#0000007a;padding:0}.icon-button.topbar__menu{display:inline-grid}.metric-grid,.dashboard-summary-grid,.dashboard-summary-grid--wide,.form-grid--two,.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mapping-row{grid-template-columns:repeat(2,minmax(0,1fr)) auto}.client-link-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 620px){.content{padding:16px}.page__header,.topbar{align-items:flex-start}.page__header{flex-direction:column}.topbar{flex-wrap:wrap}.portal-topbar{align-items:flex-start;flex-direction:column;padding:12px 16px}.portal-topbar__actions{justify-content:space-between;width:100%}.portal-content{padding:16px}.auth-panel__header{grid-template-columns:1fr}.topbar__status{order:3;width:100%}.metric-grid{grid-template-columns:1fr}.dashboard-header,.dashboard-panel__header{align-items:flex-start}.dashboard-summary-grid,.dashboard-summary-grid--wide,.form-grid--two,.detail-grid,.operations-inline-controls,.mapping-row{grid-template-columns:1fr}.dashboard-kv div{grid-template-columns:1fr;gap:2px}.dashboard-kv dd{text-align:left}.client-link-grid{grid-template-columns:1fr}}
