:root {
  color-scheme: dark;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --bg: #11171c;
  --surface: #182126;
  --text: #f7f9fb;
  --muted: #aebbc8;
  --border: rgba(255,255,255,.10);
  --accent: #d5f4e3;
  --accent-ink: #18352a;
  --control-outline: #87cba8;
  --control-hover: #c0efd5;
  --control-muted: #788590;
  --control-danger: #ec929a;
  --control-danger-hover: #ffc1c7;
  --control-focus: #8fb7e5;
  --control-processing: #91ceff;
}
* {box-sizing:border-box}
body {margin:0;background:var(--bg);color:var(--text);line-height:1.55}
main {
  max-width:1100px;
  margin:2rem auto;
  padding:clamp(1.25rem,3vw,2rem);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:24px;
}
h1,h2 {line-height:1.2;letter-spacing:-.02em}
h1 {font-size:clamp(1.5rem,4vw,2rem);font-weight:700;margin:0 0 .75rem}
h2 {font-size:1.125rem;margin:1.5rem 0 .75rem}
.brand-heading{display:flex;align-items:center;gap:.4em}
.brand-heading img{width:1.25em;height:1.25em;object-fit:contain;flex-shrink:0}
.brand-heading span{min-width:0}
p {margin:.75rem 0;color:var(--muted)}
.admin-description {max-width:none;margin-bottom:1.5rem}
label {display:inline-flex;flex-direction:column;gap:.4rem;max-width:100%;font-size:.9375rem}
input,select,button {font:inherit;min-height:44px;border-radius:12px}
input,select {
  max-width:100%;min-width:0;padding:.65rem .85rem;
  background:var(--bg);color:var(--text);border:1px solid #667085;
}
button {
  padding:.65rem 1.1rem;border:1px solid var(--border);
  background:rgba(255,255,255,.055);color:var(--text);
  font-weight:600;cursor:pointer;white-space:normal;
}
button:enabled:hover {background:rgba(255,255,255,.10)}
nav a {color:var(--accent);display:inline-block;padding:.65rem 0;min-height:44px}
button:disabled {opacity:.55;cursor:not-allowed}
#login button {background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
#login button:enabled:hover {background:#bcebd2;border-color:#bcebd2}
#register {margin-top:1.25rem}
details {border:1px solid var(--border);border-radius:14px;padding:.85rem 1rem}
summary {cursor:pointer;font-weight:600;min-height:28px}
details[open] summary {margin-bottom:.75rem}
details p {max-width:75ch;font-size:.9375rem}
#register label {display:flex;max-width:32rem;margin:1rem 0}
#revoke {color:#f5b5b5;border-color:var(--control-outline);background:transparent}
#revoke:enabled:hover {border-color:var(--control-hover);background:rgba(137,84,84,.15)}
:focus-visible {outline:3px solid #8fb7e5;outline-offset:3px}
#message {min-height:1.5rem;overflow-wrap:anywhere}
#message:empty {margin:0}
section {margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border)}
#filters {display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}
#filters label {flex:1 1 14rem}
.table-wrap {overflow-x:auto;border:1px solid var(--border);border-radius:12px;margin:1rem 0}
table {border-collapse:collapse;width:100%;font-size:.9375rem}
th,td {padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border)}
th {background:var(--bg);font-weight:600}
tbody tr:last-child td {border-bottom:0}
li {margin:.4rem 0;color:var(--muted)}
[hidden] {display:none!important}
@media (max-width:1140px) {main {margin:1.25rem}}
@media (max-width:480px) {
  main {margin:.75rem;border-radius:18px;padding:1rem}
  #login button {width:100%}
  #filters > button {flex:1 1 100%}
  th,td {padding:.65rem .75rem}
}

.analytics-controls {display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin-top:1.5rem}
.plan-graph {display:block;width:100%;height:auto;background:var(--bg);border:1px solid var(--border);border-radius:12px}
.plan-graph .preview {fill:#d5f4e3}
.plan-graph .manual {fill:#8fb7e5}
.plan-graph .premium {fill:#f1c879}

.price-analytics-controls{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin:1rem 0}
.price-analytics-controls label{flex:1 1 11rem}
.price-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem;margin:1rem 0}
.price-metrics>div{display:flex;flex-direction:column;gap:.35rem;padding:1rem;border:1px solid var(--border);border-radius:12px;background:var(--bg)}
.price-metrics strong{font-size:.85rem;color:var(--muted)}
.price-metrics span{font-size:1.5rem;font-weight:700}
.price-step-chart{display:block;width:100%;height:auto;min-height:180px;background:var(--bg);border:1px solid var(--border);border-radius:12px}
.price-legend{display:flex;flex-wrap:wrap;gap:.25rem 1rem;padding-left:1.3rem}
.price-legend li{overflow-wrap:anywhere}
.price-legend-swatch{display:inline-block;width:.8em;height:.8em;margin-right:.4em;border-radius:50%;vertical-align:middle}
.price-color-0{background:#89d9b0}.price-color-1{background:#91ceff}.price-color-2{background:#f1c879}.price-color-3{background:#f39bad}
.price-color-4{background:#c5adff}.price-color-5{background:#87dfd8}.price-color-6{background:#f8b982}.price-color-7{background:#b0d781}
.price-heatmap{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.65rem;margin:1rem 0}
.price-heat-tile{border:1px solid var(--border);border-radius:12px;padding:.75rem;min-width:0;overflow-wrap:anywhere;background:var(--bg)}
.price-heat-tile p{margin:.25rem 0 0}
.price-heat-tile.increase{border-left:4px solid #f39bad}
.price-heat-tile.decrease{border-left:4px solid #89d9b0}
.price-heat-tile.flat{border-left:4px solid #91ceff}
.price-heat-tile.unavailable{border-left:4px solid var(--control-muted)}
@media(max-width:480px){.price-analytics-controls label{flex-basis:100%}}

/* V2 Operations follows the existing admin visual language. */
#v2-operations nav{display:flex;flex-wrap:wrap;gap:.5rem}
.ops-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin:1rem 0}
.ops-form>p,.ops-form>details,.ops-form>div{flex-basis:100%}
#v2-operations a{color:var(--accent);overflow-wrap:anywhere}
#v2-operations td{max-width:32rem;overflow-wrap:anywhere}
@media(max-width:600px){.ops-form>label{width:100%}#v2-operations nav button{flex:1 1 40%}}

/* Mature V2 targeting uses the existing Admin typography and controls. */
.ops-research-builder{width:100%;display:grid;gap:1rem;margin:1.5rem 0}
.ops-presets,.ops-facets,.ops-facet-options{display:flex;flex-wrap:wrap;gap:.6rem}
.ops-canonical-tools{position:relative}
.ops-research-links-panel{position:absolute;z-index:5;top:2.5rem;left:.75rem;width:min(42rem,calc(100vw - 3rem));max-height:min(70vh,38rem);overflow:auto;border:1px solid var(--border,#d5dce3);border-radius:.5rem;padding:1rem;background:var(--surface,#fff);box-shadow:0 .5rem 1.5rem #0002}
.ops-research-links-panel[hidden]{display:none}
.ops-research-link-row{border-top:1px solid var(--border,#d5dce3);padding:.6rem 0;overflow-wrap:anywhere}
.ops-research-link-row p{margin:.2rem 0}
.ops-research-link-row button,.ops-research-links-panel>button{margin:.25rem .4rem .25rem 0}
.ops-research-links-editor{display:grid;gap:.5rem;margin-top:.6rem}

.ops-facets>details{flex:1;min-width:14rem}
.ops-facet-options{max-height:16rem;overflow:auto;padding:.75rem 0}
.ops-facet-options label{display:flex;align-items:center;gap:.4rem;width:100%}
.ops-country-list-choice{display:grid;gap:.5rem;box-sizing:border-box;width:min(100%,42rem);margin:.8rem 0;padding:1rem;border:1px solid var(--border,#ddd);border-radius:.75rem;background:var(--surface,#fff)}
.ops-country-list-choice h5,.ops-country-list-choice p{margin:0}
.ops-country-list-choice label{display:block;font-weight:600}
.ops-country-list-input{display:block;box-sizing:border-box;width:100%;min-height:5rem;margin:.4rem 0 0;resize:vertical}
.ops-service-list{max-height:28rem;overflow:auto;border:1px solid var(--border,#ddd);border-radius:.5rem}
.ops-service-row{display:grid;grid-template-columns:auto 1fr;gap:.3rem .75rem;padding:.75rem;border-bottom:1px solid var(--border,#ddd)}
.ops-service-row input{grid-row:1/5;align-self:start}
.ops-service-row span{grid-column:2;font-size:.9rem}
.ops-research-builder fieldset{display:flex;flex-wrap:wrap;gap:.6rem;padding:1rem}
.ops-research-builder fieldset p{flex-basis:100%;margin:.15rem 0}
.ops-research-builder button{justify-self:start}

/* Native checkbox semantics and label activation, with a switch presentation. */
.ops-research-builder .ops-tool-switch{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 3rem;align-items:center;gap:.4rem .75rem;flex:1 1 22rem;min-width:0;padding:.85rem;border:1px solid var(--border);border-radius:.85rem;cursor:pointer;font-weight:600}
.ops-tool-switch-input{position:absolute;width:1px;height:1px;min-height:0;margin:0;padding:0;border:0;opacity:0;overflow:hidden}
.ops-tool-switch-track{grid-column:2;grid-row:1;position:relative;display:block;width:3rem;height:1.75rem;border-radius:1rem;background:#687381;box-shadow:inset 0 0 0 1px #0002;transition:background-color .16s ease}
.ops-tool-switch-track::after{content:"";position:absolute;top:.1875rem;left:.1875rem;width:1.375rem;height:1.375rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0004;transition:transform .16s ease}
.ops-tool-switch-input:checked+.ops-tool-switch-track{background:var(--accent)}
.ops-tool-switch-input:checked+.ops-tool-switch-track::after{transform:translateX(1.25rem);background:var(--accent-ink)}
.ops-tool-switch-input:focus-visible+.ops-tool-switch-track{outline:3px solid #8fb7e5;outline-offset:4px}
.ops-tool-switch-availability{grid-column:1/-1;font-size:.85rem;font-weight:400;overflow-wrap:anywhere}
@media(max-width:480px){.ops-research-builder .ops-tool-switch{flex-basis:100%;grid-template-columns:minmax(0,1fr) 3rem;gap:.5rem}.ops-tool-switch-availability{grid-row:2}}
@media(prefers-reduced-motion:reduce){.ops-tool-switch-track,.ops-tool-switch-track::after{transition:none}}
@media(forced-colors:active){.ops-tool-switch-track{border:1px solid ButtonText;background:Canvas}.ops-tool-switch-track::after{background:ButtonText}.ops-tool-switch-input:checked+.ops-tool-switch-track{background:Highlight}.ops-tool-switch-input:checked+.ops-tool-switch-track::after{background:HighlightText}}

.ops-tool-switch-availability[hidden]{display:none}
.ops-tool-switch-warning{color:#ffd49b;font-weight:600}

/* Operations summary cards: no horizontal table dependency. */
.ops-service-results,.ops-inspect {min-width:0}
.ops-result-card {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) auto;gap:1rem;align-items:start;padding:1rem;border:1px solid var(--border);border-radius:12px;margin:.65rem 0;overflow-wrap:anywhere}
.ops-result-card p {margin:.35rem 0}
.ops-inspect {border:1px solid var(--border);border-radius:12px;padding:1rem;margin:1rem 0;overflow-wrap:anywhere}
.ops-inspect-section {padding:.75rem 0;border-bottom:1px solid var(--border)}
.ops-inspect pre {white-space:pre-wrap;overflow-wrap:anywhere;max-height:28rem;overflow:auto}
.ops-inspect label {display:block;margin:.75rem 0}
.ops-inspect input,.ops-inspect select,.ops-inspect textarea {display:block;max-width:100%;box-sizing:border-box;width:100%}
.ops-lead {display:grid;gap:.35rem;padding:.75rem;margin:.5rem 0;background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow-wrap:anywhere}
.ops-pagination {display:flex;gap:1rem;align-items:center;flex-wrap:wrap}
@media(max-width:760px){.ops-result-card {grid-template-columns:minmax(0,1fr)}.ops-result-card button {justify-self:start}}

/* An unavailable permission is not an operational tool. */
.ops-tool-switch-input:disabled+.ops-tool-switch-track{opacity:.4;filter:grayscale(1);cursor:not-allowed}

/* Stable live region: polling changes field text, never the surrounding workspace. */
.ops-live-card{border:1px solid var(--border);border-inline-start:4px solid #6e93bb;border-radius:12px;padding:1rem;margin:1rem 0;min-height:14rem;overflow-wrap:anywhere;background:var(--surface)}
.ops-live-card[hidden]{display:none}
.ops-live-card p{margin:.35rem 0}
.ops-lifecycle{display:flex;flex-wrap:wrap;gap:.5rem 1rem;list-style:none;padding:0}
.ops-lifecycle li{border:1px solid var(--border);border-radius:1rem;padding:.25rem .65rem}
.ops-stage-current,.ops-status-active{border-color:#7ab6ef;color:#a8d5ff}
.ops-stage-done,.ops-status-success{border-color:#67bd91;color:#a2dfbc}
.ops-status-attention{border-color:#dfbc66;color:#ffe1a0}
.ops-status-error{border-color:#dc8790;color:#ffb8bf}
.ops-stage-unknown,.ops-status-muted,.ops-historical{color:var(--muted)}
.ops-detail-workspace{display:grid;gap:1rem;min-width:0}
.ops-detail-workspace section,.ops-technical{min-width:0;overflow-wrap:anywhere}
.ops-technical{padding:.8rem;border:1px solid var(--border);border-radius:8px}
.ops-stage-current{animation:ops-active 2s ease-in-out infinite}
@keyframes ops-active{50%{border-color:currentColor}}
@media(prefers-reduced-motion:reduce){.ops-stage-current{animation:none}}
@media(max-width:600px){.ops-live-card{padding:.75rem}.ops-lifecycle{display:grid;gap:.35rem}.ops-live-card button{min-height:2.75rem}}

/* Top-level views keep their workspace nodes while inactive. */
[hidden]{display:none!important}
.admin-view-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem;margin:0 0 1.25rem}
.admin-view-nav a{padding:.5rem .75rem;border:1px solid var(--border);border-radius:.5rem;color:var(--text)}
.admin-view-nav a[aria-current="page"]{background:var(--accent);color:var(--accent-ink)}
.admin-view-nav a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.admin-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.admin-header .brand-heading{margin:0}
.admin-session-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-left:auto;max-width:100%}
.admin-session-actions button{max-width:100%}
@media(max-width:600px){.admin-session-actions{margin-left:0;justify-content:flex-start}.admin-description{overflow-wrap:break-word}}

.ops-workflow{min-width:0;max-width:100%;overflow-wrap:anywhere}

/* Busy actions keep their geometry and colors; disabled does not imply busy. */
button.ops-action-busy{--control-outline:var(--control-processing);opacity:1;border-color:var(--control-processing);outline:2px solid var(--control-processing);outline-offset:2px;animation:ops-action-pulse 1.8s ease-in-out infinite}
@keyframes ops-action-pulse{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 4px var(--control-processing)}}
@media(prefers-reduced-motion:reduce){button.ops-action-busy{animation:none;outline:2px solid var(--control-processing);outline-offset:2px}}

/* Interactive affordances only: links, status pills and containers are excluded. */
:is(button,.admin-view-nav a,select){border-color:var(--control-outline)}
summary{border-radius:6px;box-shadow:inset 0 0 0 1px var(--control-outline)}
input:is([type="checkbox"],[type="radio"]):not(.ops-tool-switch-input){accent-color:var(--control-outline);outline:1px solid var(--control-outline);outline-offset:1px}
#revoke{--control-outline:var(--control-danger);--control-hover:var(--control-danger-hover);color:var(--control-danger)}
:is(button:enabled,.admin-view-nav a:not([aria-disabled="true"]),select:enabled):hover{border-color:var(--control-hover)}
summary:hover{box-shadow:inset 0 0 0 1px var(--control-hover)}
:is(button:enabled,.admin-view-nav a:not([aria-disabled="true"]),select:enabled):active{box-shadow:inset 0 0 0 2px var(--control-hover);background-color:rgba(135,203,168,.16)}
summary:active{box-shadow:inset 0 0 0 2px var(--control-hover)}
:is(button[aria-pressed="true"],.admin-view-nav a[aria-current="page"]){border-color:var(--control-hover);box-shadow:inset 0 0 0 1px var(--control-hover)}
details[open]>summary{box-shadow:inset 0 0 0 2px var(--control-outline)}
details[open]>summary:hover{box-shadow:inset 0 0 0 2px var(--control-hover)}
:is(button:disabled:not(.ops-action-busy),select:disabled,.admin-view-nav a[aria-disabled="true"]){border-color:var(--control-muted);color:var(--muted);cursor:not-allowed;box-shadow:none}
input:is([type="checkbox"],[type="radio"]):enabled:not(.ops-tool-switch-input):hover{outline-color:var(--control-hover)}
input:is([type="checkbox"],[type="radio"]):disabled:not(.ops-tool-switch-input){outline-color:var(--control-muted);accent-color:var(--control-muted);cursor:not-allowed}
.ops-research-builder .ops-tool-switch:has(input:enabled){border-color:var(--control-outline)}
.ops-research-builder .ops-tool-switch:has(input:enabled):hover{border-color:var(--control-hover)}
.ops-research-builder .ops-tool-switch:has(input:enabled):active{box-shadow:inset 0 0 0 1px var(--control-hover)}
.ops-research-builder .ops-tool-switch:has(input:checked:enabled){border-color:var(--control-hover);box-shadow:inset 0 0 0 1px var(--control-hover)}
.ops-research-builder .ops-tool-switch:has(input:disabled){border-color:var(--control-muted);cursor:not-allowed}
:is(button,.admin-view-nav a,summary,select,input[type="checkbox"],input[type="radio"]):focus-visible{outline:3px solid var(--control-focus);outline-offset:5px}
.ops-tool-switch-input:focus-visible+.ops-tool-switch-track{outline:3px solid var(--control-focus);outline-offset:4px}

:is(#revoke,#login button):disabled{border-color:var(--control-muted);color:var(--muted);background:rgba(255,255,255,.055)}

.ops-primary-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}
button.ops-action-busy:focus-visible{outline:3px double var(--control-focus);outline-offset:6px}

/* Failure accents stay local to live status; controls retain their own semantics. */
.ops-live-card.ops-status-error{border-color:var(--control-danger);color:var(--text);background:var(--surface)}
.ops-live-card .ops-state.ops-status-error{color:var(--control-danger);border-inline-start:3px solid var(--control-danger);padding-inline-start:.6rem}
.ops-result-overview{border:1px solid var(--border);border-radius:12px;padding:1rem;margin:1rem 0;overflow-wrap:anywhere}
.ops-overview-metrics{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.ops-overview-coverage{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.5rem 1rem}
.ops-overview-coverage p{margin:.25rem 0}
.ops-overview-coverage progress{width:100%;accent-color:var(--control-outline)}

/* Compact Operations workflow; disclosure nodes stay mounted during polling. */
.ops-disclosure{margin:.65rem 0}
.ops-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.ops-disclosure-toggle{font-size:.85rem;color:var(--muted);white-space:nowrap}
.ops-feedback{margin:.65rem 0;overflow-wrap:anywhere}
.ops-feedback.ops-status-error{color:var(--control-danger)}
.ops-live-card .ops-secondary{margin-top:.75rem;color:var(--muted)}
.ops-live-card p:empty{display:none}
.ops-live-timing{display:flex;flex-wrap:wrap;gap:.3rem 1.2rem;font-variant-numeric:tabular-nums}
.ops-live-card .ops-secondary{margin-inline-end:.5rem}
.ops-live-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
