:root{color-scheme:dark;--bg:#0b1120;--panel:#111a2e;--panel2:#17233b;--line:#263653;--text:#edf3ff;--muted:#91a1bd;--blue:#66a3ff;--green:#49d89b;--red:#ff6b7a;--amber:#f7c66b}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 80% -10%,#19345e 0,#0b1120 42%);color:var(--text);font:14px/1.55 Inter,Segoe UI,Microsoft YaHei,sans-serif}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:flex;min-height:100vh}.sidebar{width:248px;position:fixed;inset:0 auto 0 0;background:rgba(9,16,31,.94);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column;z-index:2}.brand{display:flex;gap:12px;align-items:center;padding:0 8px 28px}.brand strong{display:block;letter-spacing:.08em}.brand small{display:block;color:var(--muted);margin-top:2px}.brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#6a9cff,#8b65ff);display:grid;place-items:center;font-weight:800;color:#fff;box-shadow:0 8px 24px #5d75ff33}.nav-link{display:flex;padding:11px 12px;border-radius:10px;color:var(--muted);margin:3px 0}.nav-link.active,.nav-link:hover{background:#1c2b49;color:#fff;text-decoration:none}.sidebar-foot{margin-top:auto;padding:14px 10px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted)}.logout-form{display:inline}.logout-form button{border:0;background:transparent;color:var(--muted);font:inherit;padding:0;cursor:pointer}.logout-form button:hover{color:#fff}.main{margin-left:248px;width:calc(100% - 248px);max-width:1800px;padding:34px 42px}.mobile-head{display:none}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px}.page-head h1{font-size:32px;line-height:1.1;margin:4px 0 8px}.eyebrow{color:var(--blue);font-weight:700;font-size:11px;letter-spacing:.18em;margin:0}.muted{color:var(--muted)}.small{font-size:12px}.head-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat-card,.panel{background:linear-gradient(145deg,#121d33dd,#0f1829ee);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 50px #0000001c}.stat-card{padding:20px}.stat-card strong{display:block;font-size:29px;margin:7px 0}.stat-card small{color:var(--muted)}.panel{padding:20px;margin-bottom:20px}.panel.narrow-panel{max-width:560px}.grid.two{display:grid;grid-template-columns:1.45fr 1fr;gap:20px}.grid.three{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.panel h2{font-size:17px;margin:0 0 6px}.panel h3{font-size:13px;color:var(--muted);margin:20px 0 8px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.table-wrap{overflow:auto;margin:0 -2px}table{width:100%;border-collapse:collapse;min-width:860px}th,td{padding:11px 10px;border-bottom:1px solid #22314c;text-align:left;vertical-align:top}th{color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}tr:hover td{background:#16243d55}code{font:12px ui-monospace,SFMono-Regular,Consolas,monospace;color:#b9d1ff;word-break:break-all}.badge{display:inline-block;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;background:#33415c;color:#d9e4f9;white-space:nowrap}.badge.allow,.badge.active{background:#123e36;color:var(--green)}.badge.deny{background:#4a202d;color:var(--red)}.badge.disabled,.badge.warning{background:#4b3b1a;color:var(--amber)}.badge.processing{background:#173457;color:#8fc1ff}.badge.neutral{color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:9px;padding:8px 13px;color:#fff;background:#1b2b48;cursor:pointer;font:inherit}.button:hover{text-decoration:none;background:#243a61}.button.primary{border-color:#568fe9;background:linear-gradient(135deg,#3d7ce0,#6158c8)}.button.ghost{background:transparent}.button.tiny{padding:4px 8px;font-size:12px;margin:1px 0}.danger-button{background:#4a202d;border-color:#7a3244}.toolbar,.filter-grid{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.toolbar input{flex:1;min-width:260px}.filter-grid{display:grid;grid-template-columns:repeat(4,1fr);align-items:end;margin:0}.filter-grid .wide{grid-column:1 / -1}.filter-actions{display:flex;gap:8px;align-items:center}.filter-grid input,.filter-grid select{min-width:0}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:9px;background:#0b1425;color:var(--text);padding:9px 10px;font:inherit;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #66a3ff22}label{display:grid;gap:6px;color:var(--muted);font-size:12px}.device-form{display:grid;grid-template-columns:2fr 1.2fr 1fr 1.3fr;gap:12px;align-items:end;margin-top:18px}.device-form .wide{grid-column:1 / -1}.note-form{display:grid;gap:12px;margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.note-form textarea{min-height:150px;resize:vertical}.details-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}.details-grid>div{background:#0d1729;border:1px solid #1d2c47;border-radius:10px;padding:11px;min-height:66px}.details-grid strong{display:block;margin-top:5px;word-break:break-word}.json-view,.log-view,.request-note-view{background:#08101d;border:1px solid #1e2c45;border-radius:10px;color:#cfe0ff;padding:16px;overflow:auto;max-height:650px;white-space:pre-wrap;word-break:break-word;font:12px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace}.request-note-view{margin:0;min-height:88px;max-height:460px;font-size:13px}summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px}summary::-webkit-details-marker{display:none}summary h2{display:inline-block}.empty-cell,.empty-state{text-align:center;color:var(--muted);padding:38px}.empty-state.compact{padding:20px}.alert{padding:12px 14px;border-radius:10px;margin-bottom:18px;border:1px solid}.alert.success{background:#12352c;border-color:#236a53;color:#9cf0cd}.alert.danger{background:#421f2b;border-color:#7a3244;color:#ffb8c0}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:14px;padding-top:16px;color:var(--muted)}.pager-info{margin:14px 0 0}.summary-list{display:grid;gap:14px;padding:10px 0}.summary-list>div{display:flex;align-items:center;justify-content:space-between;padding:12px;border-bottom:1px solid #22314c}.bar-list{display:grid;gap:12px}.bar-row>div{display:flex;justify-content:space-between;gap:12px;font-size:12px}.bar{height:6px;display:block;background:#1c2b49;border-radius:99px;margin-top:5px;overflow:hidden}.bar i{height:100%;display:block;background:linear-gradient(90deg,var(--blue),#8a70ff);border-radius:99px}.error-list{display:grid;gap:12px}.error-list>div{padding:10px 0;border-bottom:1px solid #22314c}.error-list strong{display:block;color:#ffb8c0;margin-top:3px}.error-list p{margin:3px 0 0;color:var(--muted);overflow-wrap:anywhere}.callout{border:1px solid #29466a;border-radius:12px;padding:13px 15px;margin-top:16px;background:#10233c}.callout.warning{border-color:#6d5428;background:#2c2515}.callout.success{border-color:#236a53;background:#12352c}.callout p{margin:5px 0 10px}.action-card{display:grid;gap:6px}.request-note-panel{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.note-cell{max-width:280px;min-width:180px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;color:#d9e6ff}.inline-form{display:inline-block;margin-left:4px}.danger-actions{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap}.count-pill{display:inline-block;padding:1px 8px;border-radius:99px;background:#25375a;color:#9fc5ff;font-size:12px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(420px,100%);padding:34px;border:1px solid var(--line);border-radius:20px;background:#111a2eee;box-shadow:0 30px 100px #0008}.login-card h1{font-size:30px;margin:8px 0}.login-card .brand-mark{margin-bottom:20px}.login-card label{font-size:13px}.login-card .button{width:100%;margin-top:4px}.stack{display:grid;gap:16px}
@media(max-width:1200px){.stats{grid-template-columns:repeat(4,1fr)}.grid.three{grid-template-columns:1fr}.filter-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1000px){.sidebar{width:210px}.main{margin-left:210px;width:calc(100% - 210px);padding:26px}.stats{grid-template-columns:repeat(2,1fr)}.grid.two{grid-template-columns:1fr}.details-grid{grid-template-columns:repeat(2,1fr)}.device-form{grid-template-columns:1fr 1fr}.device-form .wide{grid-column:1 / -1}.filter-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.sidebar{display:none}.main{margin:0;width:100%;padding:18px}.mobile-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.page-head{align-items:flex-start;flex-direction:column}.page-head h1{font-size:27px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat-card{padding:14px}.stat-card strong{font-size:23px}.panel{padding:14px}.details-grid{grid-template-columns:1fr}.device-form{grid-template-columns:1fr}.device-form .wide{grid-column:auto}.toolbar input{min-width:100%}.filter-grid{grid-template-columns:1fr}.filter-grid .wide{grid-column:auto}.filter-actions{grid-column:auto}.head-actions{width:100%}.head-actions .button,.head-actions form{width:100%}.head-actions form .button{width:100%}}

/* 让高频信息更容易扫读：摘要优先，协议字段收进详情。 */
.main{max-width:1920px;padding-top:30px}.panel{backdrop-filter:blur(14px)}.table-wrap{border:1px solid rgba(57,79,116,.55);border-radius:13px;background:rgba(7,15,29,.28)}
table{min-width:980px}.request-table{min-width:1260px}.request-table.compact{min-width:900px}th{background:#101d34;position:sticky;top:0;z-index:1}td{line-height:1.45}tr:hover td{background:rgba(55,88,143,.18)}
.request-table th:nth-child(1){width:125px}.request-table th:nth-child(2){width:150px}.request-table th:nth-child(3){width:150px}.request-table th:nth-child(4){width:145px}.request-table th:nth-child(5){width:190px}.request-table th:nth-child(6){width:150px}.request-table th:nth-child(7){width:180px}.request-table th:nth-child(8){width:190px}.request-table th:nth-child(9){width:155px}.request-table th:nth-child(10){width:150px}
.block-text{display:block;margin-top:5px;max-width:180px;overflow:hidden;text-overflow:ellipsis}.id-label{display:inline-block;color:var(--muted);width:35px}.ip-cell{display:grid;gap:2px;white-space:pre-line}.ip-cell strong{font-size:13px}.ip-cell span{font-size:12px;color:var(--muted)}
.note-cell{max-width:240px;white-space:normal;word-break:break-word}.count-pill{display:inline-grid;place-items:center;min-width:23px;height:23px;padding:0 7px;border-radius:99px;background:#243c63;color:#b9d4ff;font-size:12px}
.callout{padding:14px 16px;border:1px solid var(--line);border-radius:13px;margin-top:16px}.callout strong{font-size:15px}.callout p{margin:5px 0 12px;color:var(--muted)}.action-card{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.action-card p{flex:1;min-width:260px}
.activation-panel{max-width:860px}.activation-summary{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:12px;padding-bottom:18px;border-bottom:1px solid var(--line)}.activation-summary>div{display:grid;gap:5px}.activation-form{display:grid;gap:16px;padding-top:20px}.activation-form label{font-size:13px;color:var(--text)}.field-hint{font-size:12px;color:var(--muted)}.quick-durations{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:4px}.status-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.status-tabs a{padding:7px 12px;border-radius:9px;background:#14233c;color:var(--muted)}.status-tabs a.active,.status-tabs a:hover{background:#315c9d;color:#fff;text-decoration:none}.danger-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
@media(max-width:680px){.activation-summary{grid-template-columns:1fr}.action-card{display:grid}.action-card p{min-width:0}.form-actions{justify-content:stretch}.form-actions>*{flex:1}.status-tabs{overflow:auto;flex-wrap:nowrap}.status-tabs a{white-space:nowrap}}

.device-status-tabs{margin-bottom:8px}.device-sort-hint{margin:0 0 14px}.device-group-row td{padding:8px 10px;background:#0d1a31;border-bottom-color:#31517f}.device-group-row:hover td{background:#10213c}.device-group-row .badge{margin-left:5px}

/* =========================
   Admin UI v2 — clearer scan flow
   ========================= */
:root{--panel-soft:#0d1729;--panel-raised:#121f36;--blue-soft:#8ebcff;--shadow:0 18px 44px rgba(0,0,0,.18)}
body{background:radial-gradient(circle at 78% -8%,rgba(37,77,132,.38) 0,rgba(11,17,32,0) 38%),var(--bg)}
.main{max-width:none;padding:32px 36px 48px}.page-head{align-items:center;margin-bottom:22px}.page-head>div:first-child{max-width:900px}.page-head h1{font-size:30px;letter-spacing:-.02em}.page-head .muted{margin:0;max-width:900px}.panel{padding:20px;border-radius:18px;box-shadow:var(--shadow)}.panel-head{align-items:center;margin-bottom:16px}.panel-head p{margin:2px 0 0}.button{font-weight:600}.button.primary{box-shadow:0 8px 20px rgba(74,111,226,.18)}
.sidebar{width:232px;padding:22px 14px}.main{margin-left:232px;width:calc(100% - 232px)}.nav-link{padding:10px 12px}.sidebar-foot{align-items:flex-end}.sidebar-user{display:grid;gap:4px}.role-badge{display:inline-flex;width:max-content;padding:2px 7px;border-radius:999px;background:#203a61;color:#a9ccff;font-size:10px;font-weight:700}.role-badge.manager{background:#263042;color:#aab7ca}

/* Small summary cards: information first, decoration second. */
.request-summary,.device-detail-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.mini-stat{min-height:94px;padding:15px 16px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,rgba(18,31,54,.95),rgba(12,22,40,.92));display:grid;align-content:center;gap:2px}.mini-stat>span{color:var(--muted);font-size:12px}.mini-stat>strong{font-size:22px;line-height:1.2;margin:3px 0}.mini-stat>small{color:var(--muted);font-size:11px}

/* Request filters: common choices on one row, precise fields collapsed. */
.request-filter-panel{padding:16px 18px}.request-filter-primary{display:grid;grid-template-columns:minmax(300px,2fr) minmax(125px,.8fr) minmax(125px,.8fr) minmax(145px,.95fr) auto;gap:10px;align-items:end}.request-filter-primary label>span{display:block}.request-filter-actions{display:flex;gap:8px;align-items:center;white-space:nowrap}.request-filter-actions .button{min-height:40px}.advanced-filters{margin-top:14px;padding-top:13px;border-top:1px solid var(--line)}.advanced-filters>summary{justify-content:space-between;padding:3px 2px;color:var(--text)}.advanced-filters>summary>div{display:grid;gap:2px}.advanced-filters>summary span:not(.count-pill):not(.summary-action){font-size:12px;color:var(--muted);font-weight:400}.summary-action{color:var(--blue);font-size:12px;font-weight:600}.advanced-grid{margin:14px 0 0;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.advanced-submit{display:flex;align-items:end}.advanced-submit .button{width:100%}

/* Request list: fewer columns, grouped meaning. */
.request-list-panel .table-wrap{border-radius:14px}.request-table{min-width:1080px;table-layout:fixed}.request-table.compact{min-width:1040px}.request-table th:nth-child(1){width:125px}.request-table th:nth-child(2){width:245px}.request-table th:nth-child(3){width:145px}.request-table th:nth-child(4){width:220px}.request-table th:nth-child(5){width:155px}.request-table th:nth-child(6){width:190px}.request-table th:nth-child(7){width:105px}.request-time{display:grid;gap:2px}.request-time>span,.request-time>small{color:var(--muted);font-size:11px}.request-main{display:grid;gap:7px}.request-method-line{display:flex;align-items:flex-start;gap:8px}.request-method-line code{font-size:12px;line-height:1.5}.method-chip{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:2px 7px;border-radius:7px;background:#203c62;color:#c4dcff;font:700 10px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace}.request-ids{display:grid;gap:2px;color:var(--muted);font-size:11px}.request-ids code{font-size:11px}.result-stack,.risk-stack{display:flex;gap:5px;flex-wrap:wrap}.source-stack{display:grid;gap:5px}.device-inline{display:grid;gap:1px}.block-text{max-width:none;white-space:normal;overflow:visible;text-overflow:clip}.row-actions{display:flex;gap:5px;flex-wrap:wrap;align-items:center}.row-actions .inline-form{margin:0}.note-cell{min-width:0;max-width:none;color:#d9e6ff;line-height:1.55}.access-inline{padding:22px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px;background:#0b1425}

/* Device management: latest request + historical max risk, without action clutter. */
.pending-panel{border-color:#335783;background:linear-gradient(145deg,rgba(18,35,61,.96),rgba(14,25,44,.94))}.device-list-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:14px}.device-list-head>div{min-width:0;flex:1}.device-search{display:flex;gap:8px;min-width:min(430px,40vw)}.device-search input{min-width:220px}.device-table{min-width:1060px;table-layout:fixed}.device-table th:nth-child(1){width:185px}.device-table th:nth-child(2){width:155px}.device-table th:nth-child(3){width:240px}.device-table th:nth-child(4){width:110px}.device-table th:nth-child(5),.device-table th:nth-child(6){width:180px}.device-table th:last-child{width:130px}.pending-table{min-width:1040px}.device-name-cell,.latest-activity,.max-risk{display:grid;gap:3px}.device-name-cell code{font-size:11px;color:#87a4cf}.latest-request-link{display:grid;gap:2px;color:var(--text)}.latest-request-link:hover{text-decoration:none}.latest-request-link:hover strong{color:var(--blue-soft)}.latest-request-link code{font-size:11px}.latest-activity>span{display:block}.max-risk{justify-items:start}.device-group-row td{padding:7px 10px;background:#0d1a31}.device-group-row .badge{margin:0}.manual-device>summary{justify-content:space-between}.manual-device>summary>div{display:grid;gap:2px}.device-edit-form{padding-top:16px;border-top:1px solid var(--line)}

/* Device detail separates server-managed notes and client-reported notes. */
.device-info-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,.8fr);gap:16px;align-items:start}.client-note-card{border:1px solid #2b4264;border-radius:13px;padding:15px;background:#0c172a}.client-note-card.restricted{border-style:dashed}.client-note-card h3{margin:2px 0 0;color:var(--text);font-size:14px}.client-note-card p{margin:12px 0 0;color:#d5e2f7;white-space:pre-wrap;overflow-wrap:anywhere}.note-title-row{display:flex;justify-content:space-between;gap:12px;align-items:center}.request-note-panel .note-title-row h3{margin:0;color:var(--text)}.danger-actions>span:first-child{align-self:center;margin-right:4px}.access-panel{display:flex;align-items:center;gap:16px;min-height:132px}.access-panel h2{margin-bottom:4px}.access-panel p{margin:0}.access-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#162b4a;color:#8ebcff;font-size:22px}

/* CPP parameters: current state on the left, editing on the right. */
.cpp-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:18px;align-items:start}.cpp-values{display:grid;gap:10px}.cpp-values>div{padding:13px 14px;border:1px solid #243653;border-radius:12px;background:#0b1527;display:grid;gap:5px}.cpp-values span{color:var(--muted);font-size:12px}.cpp-values code{font-size:14px;color:#c9dcff}.cpp-flow{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:11px 12px;border:1px solid #243653;border-radius:11px;background:#0b1527;color:var(--muted);font-size:11px}.cpp-flow span{padding:3px 7px;border-radius:7px;background:#162641;color:#c9d9ef}.cpp-flow b{color:#668ec9}

@media(max-width:1280px){.request-filter-primary{grid-template-columns:minmax(280px,2fr) repeat(2,minmax(125px,1fr));}.request-filter-primary label:nth-of-type(4){grid-column:auto}.request-filter-actions{grid-column:1/-1;justify-content:flex-end}.advanced-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.device-list-head{display:grid}.device-search{min-width:0;width:100%}.cpp-layout{grid-template-columns:1fr}}
@media(max-width:1000px){.sidebar{width:210px}.main{margin-left:210px;width:calc(100% - 210px);padding:26px}.request-summary,.device-detail-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.request-filter-primary{grid-template-columns:1fr 1fr}.request-search{grid-column:1/-1}.advanced-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.device-info-layout{grid-template-columns:1fr}}
@media(max-width:680px){.main{margin:0;width:100%;padding:18px}.request-summary,.device-detail-stats{grid-template-columns:1fr 1fr}.request-filter-primary{grid-template-columns:1fr}.request-search{grid-column:auto}.request-filter-actions{grid-column:auto}.request-filter-actions>*{flex:1}.advanced-grid{grid-template-columns:1fr}.device-search{display:grid;grid-template-columns:1fr auto}.device-search input{min-width:0}.device-search .ghost{grid-column:1/-1}.cpp-layout{display:block}.cpp-layout>.panel{margin-bottom:16px}.access-panel{align-items:flex-start}.page-head{align-items:flex-start}.mobile-head>div{display:flex;gap:8px;align-items:center}}

/* =========================
   Admin UI v3 — 3-core-menu layout
   ========================= */
:root{--sidebar-w:252px;--panel-border:#263a5b;--panel-deep:#0c1628;--panel-hover:#172842;--soft-blue:#8fbaff;--soft-cyan:#78d7ff}
.sidebar{width:var(--sidebar-w);padding:24px 16px 18px;background:linear-gradient(180deg,rgba(8,15,29,.98),rgba(9,17,31,.96));box-shadow:16px 0 60px rgba(0,0,0,.12)}
.main{margin-left:var(--sidebar-w);width:calc(100% - var(--sidebar-w));padding:34px 40px 52px}
.brand{padding:0 8px 24px}.brand-mark{border-radius:11px}.brand strong{font-size:14px}.brand small{font-size:11px}
.primary-nav{display:grid;gap:10px}
.nav-primary{min-height:70px;padding:12px 13px;border:1px solid transparent;border-radius:14px;margin:0;display:grid;grid-template-columns:34px 1fr;align-items:center;gap:10px;background:rgba(17,29,49,.45)}
.nav-primary:hover{border-color:#2d466d;background:#152641;text-decoration:none}.nav-primary.active{border-color:#426da8;background:linear-gradient(135deg,#1b3458,#1b2949);box-shadow:0 12px 28px rgba(0,0,0,.18)}
.nav-number{font:700 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#6685af;letter-spacing:.08em}.nav-primary.active .nav-number{color:#9dc4ff}
.nav-copy{display:grid;gap:2px}.nav-copy strong{font-size:15px;color:#f4f7ff}.nav-copy small{font-size:11px;color:#7f91ae}.nav-primary.active .nav-copy small{color:#a9bad3}
.sidebar-nav-hint{margin:18px 7px 0;padding:13px 12px;border-top:1px solid #1e2d46;color:#667894;display:grid;gap:4px}.sidebar-nav-hint span{font-size:10px;text-transform:uppercase;letter-spacing:.16em}.sidebar-nav-hint small{font-size:11px;line-height:1.55}
.sidebar-foot{padding:14px 8px 2px;border-top:1px solid #1e2d46}.sidebar-user>span{font-weight:600;color:#cfd9e9}
.mobile-primary-nav{display:none}

.page-head{margin-bottom:22px}.page-head h1{font-size:31px}.page-head .muted{line-height:1.7}.eyebrow{color:#7db4ff}
.panel{border-color:var(--panel-border);background:linear-gradient(145deg,rgba(17,29,50,.95),rgba(12,21,37,.96));box-shadow:0 18px 44px rgba(0,0,0,.15)}

/* Overview: numbers and trends only, no record-level clutter. */
.overview-head{margin-bottom:20px}.overview-hero-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}
.overview-metric{position:relative;overflow:hidden;min-height:142px;padding:20px;border:1px solid #2a3e60;border-radius:17px;background:linear-gradient(145deg,#14233b,#101b2e);display:grid;align-content:center;gap:5px}
.overview-metric:after{content:"";position:absolute;width:110px;height:110px;border-radius:50%;right:-44px;top:-48px;background:rgba(111,160,255,.08)}
.overview-metric.risk:after{background:rgba(247,198,107,.10)}.overview-metric.danger:after{background:rgba(255,107,122,.10)}.overview-metric.device:after{background:rgba(73,216,155,.09)}
.overview-metric>span{font-size:12px;color:var(--muted)}.overview-metric>strong{font-size:34px;line-height:1.1;letter-spacing:-.03em}.overview-metric>small{font-size:11px}
.metric-delta.up{color:#f2c575}.metric-delta.down{color:#79d8a9}.metric-delta.neutral{color:var(--muted)}
.overview-quick-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:18px}.overview-quick-stats .mini-stat{min-height:86px;padding:13px 14px}.overview-quick-stats .mini-stat strong{font-size:20px}
.overview-panels{display:grid;grid-template-columns:1.05fr .95fr;gap:18px}.overview-panel{min-height:330px}.overview-panel .bar-list{margin-top:18px}
.status-matrix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.status-tile{border:1px solid #253955;border-radius:13px;background:#0d182a;padding:15px;display:flex;align-items:center;justify-content:space-between;gap:14px;color:inherit}.status-tile:hover{background:#13233b;text-decoration:none;border-color:#3c5a86}.status-tile strong{font-size:25px}
.management-panel{margin-top:0}.overview-tools{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.tool-card{position:relative;min-height:96px;padding:15px 42px 15px 15px;border:1px solid #263a58;border-radius:13px;background:#0c1729;color:inherit;display:grid;align-content:center;gap:5px}.tool-card:hover{background:#13243d;border-color:#42618f;text-decoration:none}.tool-card strong{font-size:14px}.tool-card span{font-size:11px;color:var(--muted);line-height:1.5}.tool-card b{position:absolute;right:15px;top:50%;transform:translateY(-50%);color:#6f9bd8;font-size:16px}

/* Request list: common filters first, technical fields second. */
.request-summary,.risk-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.request-list-panel,.risk-list-panel{padding:18px}.request-list-panel .panel-head,.risk-list-panel .panel-head{padding:1px 2px 3px}
.request-filter-primary,.risk-filter-primary{grid-template-columns:minmax(340px,2fr) minmax(130px,.8fr) minmax(130px,.8fr) minmax(145px,.9fr) auto}
.request-table{min-width:1130px}.request-table th:nth-child(1){width:120px}.request-table th:nth-child(2){width:250px}.request-table th:nth-child(3){width:150px}.request-table th:nth-child(4){width:220px}.request-table th:nth-child(5){width:150px}.request-table th:nth-child(6){width:185px}.request-table th:nth-child(7){width:105px}
.note-cell{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;color:#c9d8ef}

/* Risk list: severity is the first visual anchor; device history is a primary action. */
.risk-filter-panel{padding:16px 18px}.risk-filter-primary{display:grid;gap:10px;align-items:end}.risk-search{min-width:0}.risk-advanced-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.risk-summary{display:grid;gap:12px;margin-bottom:18px}
.risk-table{min-width:1180px;table-layout:fixed}.risk-table th:nth-child(1){width:110px}.risk-table th:nth-child(2){width:245px}.risk-table th:nth-child(3){width:215px}.risk-table th:nth-child(4){width:220px}.risk-table th:nth-child(5){width:135px}.risk-table th:nth-child(6){width:175px}.risk-table th:nth-child(7){width:160px}
.risk-score-cell{display:grid;gap:6px;justify-items:start}.risk-score-cell .badge{font-size:13px;padding:4px 10px}.risk-score-cell strong{font-size:11px;color:var(--muted)}.risk-flags-cell{display:grid;gap:6px}.risk-flags-cell strong{font-size:12px;line-height:1.6;color:#dfe9f8;word-break:break-word}

/* Device pages: same structure for every role; only client-note text differs. */
.device-table{min-width:1140px}.pending-table{min-width:1110px}.client-note-card{min-height:122px}.client-note-card p{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}

/* CPP is visually identical but genuinely disabled for normal admins. */
.cpp-fieldset{border:0;padding:0;margin:0;display:grid;gap:16px;min-width:0}.cpp-editor.readonly{position:relative;background:linear-gradient(145deg,rgba(19,25,35,.96),rgba(14,19,28,.96));border-color:#313946}.cpp-editor.readonly .cpp-fieldset{opacity:.46;filter:saturate(.25)}
.cpp-editor.readonly input,.cpp-editor.readonly button{cursor:not-allowed}.cpp-editor.readonly input:disabled{background:#121720;color:#737d8c;border-color:#2b313b}.cpp-editor.readonly .button:disabled{background:#232933;border-color:#353d49;color:#788391;box-shadow:none}
.cpp-lock-notice{display:grid;gap:4px;padding:12px 13px;margin-bottom:14px;border:1px solid #394251;border-radius:11px;background:#151b25;color:#aab4c3}.cpp-lock-notice strong{font-size:12px;color:#d8dee8}.cpp-lock-notice span{font-size:11px;line-height:1.55}

@media(max-width:1400px){.overview-quick-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.overview-tools{grid-template-columns:repeat(3,minmax(0,1fr))}.request-filter-primary,.risk-filter-primary{grid-template-columns:minmax(280px,2fr) repeat(2,minmax(130px,1fr))}.request-filter-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:1080px){:root{--sidebar-w:214px}.sidebar{padding-left:12px;padding-right:12px}.main{padding:28px 26px 44px}.overview-hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-panels{grid-template-columns:1fr}.overview-tools{grid-template-columns:repeat(2,minmax(0,1fr))}.request-filter-primary,.risk-filter-primary{grid-template-columns:1fr 1fr}.request-search,.risk-search{grid-column:1/-1}.risk-advanced-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.sidebar{display:none}.main{margin:0;width:100%;padding:16px}.mobile-head{display:flex;margin-bottom:10px}.mobile-primary-nav{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:18px;padding:5px;border:1px solid #263a58;border-radius:12px;background:#0d1729}.mobile-primary-nav a{padding:9px 6px;text-align:center;border-radius:8px;color:var(--muted);font-size:12px}.mobile-primary-nav a.active{background:#1d3557;color:#fff;text-decoration:none}.overview-hero-grid{grid-template-columns:1fr 1fr;gap:9px}.overview-metric{min-height:118px;padding:15px}.overview-metric>strong{font-size:27px}.overview-quick-stats{grid-template-columns:1fr 1fr}.overview-tools{grid-template-columns:1fr}.status-matrix{grid-template-columns:1fr 1fr}.request-summary,.risk-summary{grid-template-columns:1fr 1fr}.request-filter-primary,.risk-filter-primary{grid-template-columns:1fr}.request-search,.risk-search{grid-column:auto}.request-filter-actions{grid-column:auto;justify-content:stretch}.risk-advanced-grid{grid-template-columns:1fr}.page-head{gap:14px}.page-head h1{font-size:27px}.tool-card{min-height:82px}}
.risk-summary{grid-template-columns:repeat(5,minmax(0,1fr))}.overview-metric.risk .metric-delta.up{color:#ff9aa6}.overview-metric.risk .metric-delta.down{color:#78d9aa}
@media(max-width:1080px){.risk-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.risk-summary{grid-template-columns:1fr 1fr}}

/* =========================
   Admin UI v4 — restored utilities + dashboard cards
   ========================= */
.sidebar-utilities{display:grid;gap:7px;margin-top:18px;padding-top:16px;border-top:1px solid #1f304a}
.sidebar-section-title{padding:0 8px 5px;color:#667b9b;font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.nav-utility{display:grid;grid-template-columns:31px 1fr;align-items:center;gap:10px;min-height:53px;padding:8px 10px;border:1px solid transparent;border-radius:12px;color:#aebed5;background:rgba(14,25,43,.42)}
.nav-utility:hover{background:#13243d;border-color:#2b4367;color:#fff;text-decoration:none}.nav-utility.active{background:#172b49;border-color:#365a88;color:#fff}
.nav-utility>span:last-child{display:grid;gap:1px;min-width:0}.nav-utility strong{font-size:12px;color:inherit}.nav-utility small{font-size:10px;color:#7185a3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-utility.active small{color:#9bb3d2}
.utility-icon{width:29px;height:29px;display:grid;place-items:center;border-radius:9px;background:#173354;color:#79cba5;font-size:14px;font-weight:800}.utility-icon.code{font-size:9px;color:#9dbfff;background:#222f57;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.mobile-utility-nav{display:none}

.overview-summary-panel{margin-bottom:18px;padding:20px;border:1px solid #2a3f61;border-radius:18px;background:linear-gradient(145deg,rgba(13,25,44,.96),rgba(10,19,34,.96));box-shadow:0 20px 48px rgba(0,0,0,.14)}
.overview-section-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px;padding:0 2px}.overview-section-head h2{margin:3px 0 4px;font-size:17px}.overview-section-head p{margin:0;color:var(--muted);font-size:11px}.overview-section-kicker{font-size:9px;font-weight:800;letter-spacing:.18em;color:#6e9edb}
.live-summary{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #27415f;border-radius:999px;background:#0b192b;color:#8ea6c6;font-size:10px;white-space:nowrap}.live-summary i{width:7px;height:7px;border-radius:50%;background:#4bd59b;box-shadow:0 0 0 4px rgba(75,213,155,.09)}
.overview-summary-panel .overview-hero-grid{margin-bottom:11px}
.overview-metric{min-height:132px;padding:17px 18px;border-color:#2a4164;background:linear-gradient(145deg,#14263f,#101c30)}
.overview-metric:hover{transform:translateY(-1px);border-color:#365a87;box-shadow:0 12px 28px rgba(0,0,0,.15)}
.overview-metric-top{display:flex;align-items:center;gap:9px;margin-bottom:4px}.metric-icon{width:27px;height:27px;display:grid;place-items:center;border-radius:9px;background:#1c385d;color:#9bc4ff;font-size:13px;font-weight:800}.overview-metric.risk .metric-icon{background:#3b3020;color:#ffd27f}.overview-metric.device .metric-icon{background:#17372e;color:#76d8ad}.overview-metric.danger .metric-icon{background:#3a232b;color:#ff9aaa}
.metric-label{font-size:11px;font-weight:650;color:#91a5c1}.overview-metric>strong{font-size:31px;margin-top:3px}.overview-metric>small{margin-top:2px;line-height:1.45}
.overview-quick-stats{gap:9px;margin:0}.overview-quick-stats .mini-stat{position:relative;overflow:hidden;min-height:91px;padding:13px 14px;background:#0d1a2e;border-color:#233b5c;box-shadow:none}.overview-quick-stats .mini-stat:after{content:"";position:absolute;right:-16px;bottom:-23px;width:54px;height:54px;border-radius:50%;background:rgba(89,137,207,.06)}
.mini-stat-label{display:flex;align-items:center;justify-content:space-between;gap:8px}.mini-stat-label>span{color:#8498b5;font-size:10px}.mini-stat-label>i{width:5px;height:5px;border-radius:50%;background:#466b9a}.overview-quick-stats .mini-stat>strong{font-size:21px;margin-top:4px}.overview-quick-stats .mini-stat>small{line-height:1.4}

/* Keep the three core menus dominant; restored operational shortcuts stay compact. */
@media(max-width:1080px){.sidebar-utilities{margin-top:14px}.overview-summary-panel{padding:16px}.overview-section-head{align-items:flex-start}.head-actions{flex-wrap:wrap}}
@media(max-width:680px){.mobile-utility-nav{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:-10px 0 17px}.mobile-utility-nav a{padding:8px 10px;text-align:center;border:1px solid #263b5b;border-radius:9px;background:#0e1b2e;color:#8fa3bf;font-size:11px}.mobile-utility-nav a.active{background:#1b3455;border-color:#3b638f;color:#fff;text-decoration:none}.overview-summary-panel{padding:13px;border-radius:15px}.overview-section-head{margin-bottom:12px}.overview-section-head p{display:none}.overview-hero-grid{grid-template-columns:1fr 1fr}.overview-metric{min-height:113px;padding:13px}.metric-icon{width:24px;height:24px}.overview-metric>strong{font-size:25px}.overview-quick-stats{grid-template-columns:1fr 1fr}.head-actions .button{min-width:0}}

/* Name binding administration. */
.name-binding-table{min-width:760px;table-layout:fixed}.name-binding-table th:nth-child(1){width:330px}.name-binding-table th:nth-child(2){width:auto}.name-binding-table th:nth-child(3){width:150px}.name-binding-display{display:grid;gap:3px;min-width:0}.name-binding-display strong{font-size:13px;overflow-wrap:anywhere;word-break:break-word}.name-binding-display small{color:var(--muted);font:11px ui-monospace,SFMono-Regular,Consolas,monospace}.name-binding-edit-form{display:flex;align-items:center;gap:8px}.name-binding-edit-form input{min-width:0;flex:1}.name-binding-edit-form .button{flex:0 0 auto}.name-binding-table .inline-form{margin:0}
@media(max-width:680px){.mobile-utility-nav{grid-template-columns:repeat(3,minmax(0,1fr))}.name-binding-table{min-width:680px}.name-binding-table th:nth-child(1){width:250px}.name-binding-edit-form{align-items:stretch;flex-direction:column}.name-binding-edit-form .button{width:100%}}

/* =========================
   Admin UI v5 — authorization queue + table alignment fixes
   ========================= */
/* Request rows keep real table-cell layout. Inner wrappers handle stacking,
   preventing header/data columns from shifting in Chromium/WebKit. */
.request-table td{vertical-align:top}
.request-table .request-time,.request-table .request-main{min-width:0}
.source-device-row{display:flex;align-items:flex-start;gap:7px;flex-wrap:wrap}
.source-device-row .device-inline{flex:1 1 110px;min-width:0}
.source-device-row>.badge{flex:0 0 auto}
.request-risk-cell{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.risk-caption{font-size:10px;color:#7f93af;white-space:nowrap}
.client-note-preview{display:block;min-height:28px;padding:6px 8px;border:1px solid rgba(54,76,110,.45);border-radius:8px;background:rgba(8,16,29,.28);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;line-height:1.5}

/* IP is a first-class authorization field, not hidden inside latest activity. */
.device-table{min-width:1320px}
.device-table th:nth-child(1){width:180px}.device-table th:nth-child(2){width:150px}.device-table th:nth-child(3){width:190px}.device-table th:nth-child(4){width:210px}.device-table th:nth-child(5){width:110px}.device-table th:nth-child(6){width:165px}.device-table th:nth-child(7){width:165px}.device-table th:nth-child(8){width:125px}
.pending-table{min-width:1300px;table-layout:fixed}
.pending-table th:nth-child(1){width:190px}.pending-table th:nth-child(2){width:145px}.pending-table th:nth-child(3){width:190px}.pending-table th:nth-child(4){width:215px}.pending-table th:nth-child(5){width:110px}.pending-table th:nth-child(6){width:170px}.pending-table th:nth-child(7){width:125px}.pending-table th:nth-child(8){width:155px}
.pending-table .device-name-cell .badge{width:max-content;margin-top:3px}

.activation-panel{max-width:1040px}
.activation-summary{grid-template-columns:minmax(210px,1.35fr) minmax(160px,1fr) minmax(150px,.9fr) minmax(190px,1.1fr)}
.activation-summary .ip-cell{margin-top:1px}
.reauth-actions{align-items:center;border-top-color:#6d5428;background:linear-gradient(90deg,rgba(88,65,25,.12),transparent);padding-left:10px;padding-right:10px;border-radius:10px}

@media(max-width:1000px){.activation-summary{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.activation-summary{grid-template-columns:1fr}.client-note-preview{padding:5px 7px}}

/* Request list v6: separate administrator note + compact device actions */
.request-table{min-width:1390px;table-layout:fixed}
.request-table.compact{min-width:1280px}
.request-table th:nth-child(1){width:120px}
.request-table th:nth-child(2){width:235px}
.request-table th:nth-child(3){width:145px}
.request-table th:nth-child(4){width:215px}
.request-table th:nth-child(5){width:145px}
.request-table th:nth-child(6){width:175px}
.request-table th:nth-child(7){width:175px}
.request-table th:nth-child(8){width:175px}
.admin-note-preview{display:block;min-height:28px;padding:6px 8px;border:1px solid rgba(72,100,142,.52);border-radius:8px;background:rgba(20,33,54,.52);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;line-height:1.5;color:#dce7f8}
.request-action-grid{display:grid;grid-template-columns:repeat(2,minmax(66px,1fr));gap:6px;align-items:stretch;min-width:148px}
.request-action-grid .button,.request-action-grid .inline-form,.request-action-grid .inline-form .button{width:100%;margin:0}
.request-action-grid .button{min-height:29px;white-space:nowrap}
.warning-button{background:#4b3b1a;border-color:#765b26;color:#ffd98a}
.warning-button:hover{background:#604a1e}
.disabled-button{cursor:not-allowed;opacity:.46;pointer-events:none;user-select:none}
.disabled-button.danger-muted{background:#3d2028;border-color:#63303d;color:#e8a7b0;opacity:.62}
.request-actions-cell{vertical-align:top}
@media(max-width:1100px){.request-table{min-width:1320px}.request-table.compact{min-width:1220px}}

/* Admin UI v7: risk-list sorting controls */
@media(min-width:1401px){
  .risk-filter-primary{grid-template-columns:minmax(300px,1.8fr) repeat(5,minmax(116px,.72fr)) auto}
}
