:root { --blue:#3978f6; --blue-soft:#edf3ff; --ink:#17191d; --muted:#697180; --line:#e2e5ea; --surface:#fff; --bg:#f7f8fa; --green:#20b486; --amber:#d99000; }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
body { margin:0; color:var(--ink); background:var(--bg); font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; font-size:14px; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
.sidebar { position:fixed; inset:0 auto 0 0; width:240px; background:#fff; border-right:1px solid var(--line); padding:0 14px; display:flex; flex-direction:column; z-index:10; }
.logo { height:76px; display:flex; align-items:center; gap:10px; padding:0 10px; border-bottom:1px solid var(--line); margin:0 -14px 20px; padding-left:24px; }
.logo-mark { width:32px; height:32px; display:grid; place-items:center; border:2px solid var(--ink); border-radius:10px 10px 2px 10px; font-weight:900; }
.logo strong { font-size:22px; letter-spacing:-.04em; }.logo small { color:var(--muted); border-left:1px solid var(--line); padding-left:9px; }
nav p { margin:24px 12px 8px; color:#8a91a0; font-size:11px; font-weight:750; text-transform:uppercase; letter-spacing:.1em; }
.nav-item { width:100%; border:0; background:transparent; display:flex; gap:12px; align-items:center; padding:11px 13px; border-radius:8px; color:#30343b; font-weight:600; text-align:left; }
.nav-item span { font-size:17px; width:20px; color:#6b7380; }.nav-item:hover { background:#f4f5f7; }.nav-item.active { background:#e9ebef; color:#111; }.nav-item.active span { color:var(--blue); }
.sidebar-foot { margin-top:auto; border-top:1px solid var(--line); padding:18px 9px 22px; display:flex; align-items:flex-start; gap:10px; }.sidebar-foot strong,.sidebar-foot small { display:block; }.sidebar-foot strong { font-size:12px; }.sidebar-foot small { color:var(--muted); font-size:10px; margin-top:3px; }.secure-dot,.live i { width:8px; height:8px; border-radius:50%; background:var(--green); margin-top:4px; box-shadow:0 0 0 4px #ddf6ee; }
.app-shell { margin-left:240px; min-height:100vh; }.app-header { min-height:76px; display:flex; justify-content:space-between; align-items:center; gap:20px; padding:10px 34px; background:#fff; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:5; }.app-header small,.app-header strong { display:block; }.app-header small { color:#9299a5; font-size:9px; letter-spacing:.12em; font-weight:800; margin-bottom:3px; }.header-actions { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; }.header-actions label { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:11px; }.header-actions select { border:1px solid var(--line); padding:8px 10px; border-radius:7px; background:white; color:var(--ink); max-width:170px; }.icon-button { width:38px; height:38px; border:1px solid var(--line); background:white; border-radius:8px; font-size:20px; }.avatar { width:38px; height:38px; display:grid; place-items:center; border-radius:50%; background:#12275d; color:white; font-weight:800; flex:0 0 auto; }
.account-selector { display:block; }.account-selector select { min-width:190px; border:1px solid var(--line); padding:8px 10px; border-radius:7px; background:#fff; color:var(--ink); font-weight:700; }
main { padding:34px; max-width:1700px; margin:0 auto; }.page { display:none; }.page.active { display:block; }.page-title { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:24px; }.page-title h1 { margin:0 0 7px; font-size:28px; letter-spacing:-.035em; }.page-title p { margin:0; color:var(--muted); }.page-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }.page-actions .active { color:#1f55ae; border-color:#9dbbf2; background:#eef4ff; }.live { background:#ebf8f4; color:#17785c; display:flex; gap:9px; align-items:center; padding:8px 11px; border-radius:999px; font-size:11px; font-weight:700; }.live i { display:block; margin:0; width:7px; height:7px; }
.live.cached { color:#315e9c; background:#eaf2ff; }.live.cached i { background:#3978f6; box-shadow:0 0 0 4px #dce8ff; }.live.stale { color:#8a6300; background:#fff4d8; }.live.stale i { background:#d99000; box-shadow:0 0 0 4px #ffebbc; }
.usage-panel { margin-bottom:22px; overflow:hidden; }.usage-head { display:flex; justify-content:space-between; align-items:center; padding:15px 18px; border-bottom:1px solid var(--line); }.usage-head h2 { margin:0 0 4px; font-size:15px; }.usage-head p { margin:0; color:var(--muted); font-size:10px; }.usage-head .secondary-button { padding:7px 10px; font-size:11px; }.usage-grid { display:grid; grid-template-columns:repeat(6,1fr); }.usage-grid article { padding:15px 18px; border-right:1px solid var(--line); }.usage-grid article:last-child { border:0; }.usage-grid span,.usage-grid small { display:block; }.usage-grid span { color:var(--muted); font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }.usage-grid strong { display:block; margin:7px 0 3px; font-size:22px; }.usage-grid small { color:#9299a5; font-size:9px; line-height:1.35; }
.kpis { display:grid; grid-template-columns:1.3fr repeat(3,1fr); background:white; border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-bottom:22px; }.kpi { padding:22px; min-height:132px; border-right:1px solid var(--line); }.kpi:last-child { border:0; }.kpi span { display:block; color:var(--muted); font-weight:650; font-size:12px; }.kpi strong { display:inline-block; margin-top:16px; font-size:32px; letter-spacing:-.05em; }.kpi em { font-style:normal; color:var(--green); font-weight:700; margin-left:7px; }.kpi small { display:block; color:#969ca6; margin-top:7px; font-size:10px; }.kpi.supported { border-top:3px solid var(--blue); }
.kpis.has-sentiment { grid-template-columns:1.3fr repeat(4,1fr); }
@media (max-width:1400px) { .kpis.has-sentiment { grid-template-columns:repeat(3,1fr); }.kpis.has-sentiment .kpi { border-bottom:1px solid var(--line); } }
.dashboard-grid { display:grid; grid-template-columns:minmax(0,2.1fr) minmax(310px,.9fr); gap:22px; }.surface { background:var(--surface); border:1px solid var(--line); border-radius:10px; }.section-head { min-height:76px; padding:19px 22px; border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; }.section-head h2 { font-size:16px; margin:0 0 5px; }.section-head p { margin:0; color:var(--muted); font-size:11px; }.legend { display:flex; gap:8px; align-items:center; color:var(--muted); font-size:11px; }.legend i { width:18px; height:3px; background:var(--blue); border-radius:2px; }.chart { height:330px; padding:18px; display:flex; align-items:center; }.chart svg { width:100%; height:100%; overflow:visible; }.chart-grid { stroke:#e7e9ee; stroke-width:1; }.chart-line { fill:none; stroke:var(--blue); stroke-width:3; stroke-linecap:round; stroke-linejoin:round; }.chart-area { fill:url(#areaGradient); }.chart-dot { fill:white; stroke:var(--blue); stroke-width:2; }.chart-label { fill:#89919e; font-size:10px; }.ranking { padding:8px 0; max-height:330px; overflow:auto; }.rank-row { display:grid; grid-template-columns:28px minmax(110px,1fr) 1.2fr 52px; gap:9px; align-items:center; padding:10px 18px; }.rank-row + .rank-row { border-top:1px solid #f0f1f3; }.rank-num { color:#9aa0aa; font-size:11px; }.brand-cell { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-weight:620; }.brand-dot { display:inline-grid; place-items:center; width:24px; height:24px; border-radius:50%; background:#102c70; color:white; font-size:10px; margin-right:8px; }.bar { height:7px; border-radius:10px; background:#eef0f4; overflow:hidden; }.bar i { display:block; height:100%; border-radius:10px; background:var(--blue); }.share { text-align:right; font-variant-numeric:tabular-nums; font-weight:700; }
.toolbar { display:flex; align-items:center; gap:12px; margin-bottom:16px; flex-wrap:wrap; }.search { width:min(420px,45vw); height:42px; border:1px solid var(--line); background:white; border-radius:8px; display:flex; align-items:center; padding:0 13px; gap:8px; }.search span { font-size:19px; color:#838a96; }.search input { border:0; outline:0; width:100%; }.segmented { display:flex; background:#eceef2; padding:3px; border-radius:8px; }.segmented button { border:0; padding:8px 12px; background:transparent; border-radius:6px; font-size:12px; }.segmented button.active { background:#fff; box-shadow:0 1px 3px #cfd2d8; }.filter-control { height:42px; display:flex; align-items:center; gap:8px; padding:0 10px; border:1px solid var(--line); background:#fff; border-radius:8px; color:var(--muted); font-size:10px; font-weight:700; }.filter-control select { border:0; outline:0; color:var(--ink); background:#fff; font-size:12px; font-weight:650; max-width:190px; }.filter-note { margin:-7px 0 14px; color:var(--muted); font-size:11px; }.count-pill { margin-left:auto; color:var(--muted); background:#eceef2; border-radius:999px; padding:8px 11px; font-size:11px; }
.table-wrap { overflow:hidden; }table { width:100%; border-collapse:collapse; }th { background:#f7f8fa; color:#69717e; font-size:11px; text-transform:uppercase; letter-spacing:.05em; text-align:left; padding:14px 18px; border-bottom:1px solid var(--line); }td { padding:16px 18px; border-bottom:1px solid var(--line); vertical-align:middle; }tbody tr:last-child td { border-bottom:0; }.logo-column { width:58px; padding-left:8px; padding-right:8px; }.source-logo { position:relative; width:34px; height:34px; display:grid; place-items:center; overflow:hidden; border:1px solid var(--line); border-radius:9px; background:#eef2f8; color:#50607d; }.source-logo b { font-size:12px; }.source-logo img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; background:#fff; }.topic-row { cursor:pointer; }.topic-row:hover td { background:#fafbfc; }.topic-name { font-weight:700; }.chevron { display:inline-block; width:20px; color:#7a828e; transition:.2s; }.topic-row.open .chevron { transform:rotate(90deg); }.scope-badge { color:#4f6286; background:var(--blue-soft); padding:6px 9px; border-radius:999px; font-size:10px; font-weight:700; }.row-actions { display:flex; justify-content:flex-end; align-items:center; gap:8px; }.expand-button { border:1px solid var(--line); background:#fff; border-radius:7px; padding:8px 11px; font-weight:650; }.note-wrap { display:flex; align-items:center; gap:7px; min-width:0; }.note-button { border:1px dashed #cbd1da; background:#fff; color:#687386; border-radius:7px; padding:6px 8px; font-size:9px; font-weight:700; white-space:nowrap; }.note-button:hover,.note-button.has-note { color:#245ebc; border-color:#a9c2ef; background:#f3f7ff; }.note-preview { max-width:170px; color:#697180; font-size:9px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.detail-row td { background:#fafbfc; padding:0; }.topic-detail { padding:20px 24px 26px 52px; }.topic-insight-head { display:flex; justify-content:space-between; gap:20px; align-items:flex-start; margin-bottom:17px; }.topic-insight-head h3 { margin:0 0 5px; font-size:14px; }.topic-insight-head p { margin:0; color:var(--muted); font-size:11px; }.competitor-chips { display:flex; flex-wrap:wrap; gap:7px; justify-content:flex-end; }.competitor-chip { border:1px solid #d9e3fa; background:#f2f6ff; padding:6px 9px; border-radius:999px; font-size:10px; font-weight:650; }.prompt-list { background:white; border:1px solid var(--line); border-radius:8px; overflow:hidden; }.prompt-list-head,.prompt-item { display:grid; grid-template-columns:minmax(280px,1.7fr) minmax(250px,1fr); gap:20px; }.prompt-list-head { padding:10px 14px; background:#f4f5f7; color:var(--muted); font-size:10px; text-transform:uppercase; }.prompt-item { padding:13px 14px; align-items:center; cursor:pointer; }.prompt-item:hover { background:#f5f8ff; }.prompt-item:hover .prompt-text { color:#215fcf; }.prompt-item + .prompt-item { border-top:1px solid var(--line); }.prompt-text { line-height:1.5; unicode-bidi:plaintext; }.prompt-text > .note-wrap { margin-top:7px; direction:ltr; }.prompt-text::after { content:"View details ›"; display:block; color:var(--blue); font-size:10px; font-weight:700; margin-top:5px; direction:ltr; }.prompt-competitors { color:var(--muted); font-size:11px; }.prompt-competitors strong { display:block; color:#475269; margin-bottom:4px; }.domains { color:var(--muted); font-size:12px; }.empty { padding:36px; text-align:center; color:var(--muted); }
.source-topic-bar { display:flex; align-items:center; gap:14px; margin-bottom:14px; }.source-topic-bar label { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:11px; }.source-topic-bar select { min-width:260px; border:1px solid var(--line); background:#fff; color:var(--ink); padding:9px 12px; border-radius:8px; font-weight:650; }.source-topic-bar span { color:var(--muted); font-size:11px; }.owned-coverage { display:grid; grid-template-columns:repeat(4,1fr); background:#fff; border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-bottom:14px; }.owned-coverage article { padding:16px 18px; border-right:1px solid var(--line); }.owned-coverage article:last-child { border:0; }.owned-coverage span,.owned-coverage small { display:block; }.owned-coverage span { color:var(--muted); font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }.owned-coverage strong { display:block; margin:8px 0 4px; font-size:22px; }.owned-coverage small { color:#9299a5; font-size:9px; }.coverage-positive { color:var(--green); }.coverage-negative { color:#dd5c5c; }.source-controls { display:flex; align-items:center; gap:12px; margin-bottom:14px; }.source-controls > label { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:11px; }.source-controls select,.domain-picker summary { border:1px solid var(--line); background:#fff; color:var(--ink); padding:9px 12px; border-radius:8px; font-weight:650; }.domain-picker { position:relative; }.domain-picker summary { list-style:none; cursor:pointer; min-width:180px; }.domain-picker summary::-webkit-details-marker { display:none; }.domain-picker summary::after { content:"⌄"; float:right; color:var(--muted); }.domain-menu { position:absolute; top:44px; left:0; width:280px; max-height:390px; overflow:auto; background:#fff; border:1px solid var(--line); border-radius:9px; box-shadow:0 16px 40px #18213a24; padding:8px; z-index:8; }.domain-menu label { display:flex; align-items:center; gap:8px; padding:8px; border-radius:6px; cursor:pointer; }.domain-menu label:hover { background:#f4f7fc; }.domain-menu input { accent-color:var(--blue); }.domain-menu .domain-search { position:sticky; top:0; z-index:1; margin-bottom:5px; border:1px solid var(--line); background:#fff; border-radius:7px; cursor:text; }.domain-menu .domain-search:focus-within { border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }.domain-search > span { color:#87909e; font-size:17px; }.domain-search input { width:100%; min-width:0; border:0; outline:0; background:transparent; color:var(--ink); }.domain-search-empty { margin:8px; padding:12px 4px; color:var(--muted); text-align:center; font-size:11px; }.domain-menu button { width:100%; border:0; border-top:1px solid var(--line); background:#fff; color:var(--blue); padding:10px; margin-top:4px; font-weight:700; }.domain-tag { display:inline-block; background:#eef3fc; color:#455a83; border-radius:999px; padding:5px 8px; font-size:10px; font-weight:700; }.source-footer { display:flex; justify-content:center; padding:16px; }.source-link { color:var(--ink); font-weight:700; text-decoration:none; overflow-wrap:anywhere; }.source-link:hover { color:var(--blue); text-decoration:underline; }.secondary-button { border:1px solid var(--line); background:#fff; color:var(--ink); padding:10px 15px; border-radius:8px; font-weight:700; }.secondary-button:hover { border-color:#b9c8e8; background:#f8faff; }.api-surface { display:grid; grid-template-columns:1fr 1fr; overflow:hidden; }.api-surface form { padding:24px; display:grid; grid-template-columns:130px 1fr; gap:16px; }.api-surface label { color:var(--muted); font-size:11px; font-weight:700; }.api-surface label.wide { grid-column:auto; }.api-surface input,.api-surface select,.api-surface textarea { display:block; width:100%; margin-top:7px; border:1px solid var(--line); border-radius:7px; padding:10px; background:#fff; color:var(--ink); }.api-surface textarea { font-family:ui-monospace,monospace; font-size:11px; }.primary { width:max-content; border:0; background:var(--blue); color:white; padding:11px 18px; border-radius:7px; font-weight:700; }.response-pane { background:#151821; color:#e9ecf2; min-width:0; }.response-pane > div { display:flex; justify-content:space-between; padding:16px 18px; border-bottom:1px solid #303540; }.response-pane button { border:1px solid #454b58; background:transparent; color:white; border-radius:6px; padding:6px 9px; }.response-pane pre { margin:0; padding:18px; max-height:530px; overflow:auto; white-space:pre-wrap; font:12px/1.55 ui-monospace,monospace; }
.skeleton { height:16px; background:linear-gradient(90deg,#edf0f3,#f7f8fa,#edf0f3); background-size:200% 100%; animation:pulse 1.4s infinite; border-radius:5px; margin:12px; }.skeleton.tall { height:220px; width:100%; }.rec-progress { margin:0 12px 14px; text-align:center; color:var(--muted,#6b7280); font-size:12px; }@keyframes pulse { to { background-position:-200% 0; } }
#toast { position:fixed; right:24px; bottom:24px; background:#20242b; color:white; padding:12px 16px; border-radius:8px; box-shadow:0 10px 30px #0003; transform:translateY(80px); opacity:0; transition:.25s; z-index:30; }#toast.show { transform:translateY(0); opacity:1; }
.modal { position:fixed; inset:0; z-index:50; display:none; }.modal.open { display:block; }.modal-backdrop { position:absolute; inset:0; background:#12172280; backdrop-filter:blur(3px); }.modal-card { position:absolute; top:0; right:0; width:min(680px,94vw); height:100%; background:#fff; box-shadow:-14px 0 50px #0002; overflow:auto; animation:slide-in .22s ease-out; }/* The prompt is what all seven sections are about, and it used to scroll away
   after ~150px and never come back. */
.modal-card header { position:sticky; top:0; z-index:4; background:#fff; padding:20px 28px 15px; border-bottom:1px solid var(--line); display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.modal-head-main { min-width:0; flex:1; }
.modal-head-actions { display:flex; align-items:center; gap:8px; flex:none; }
.modal-card header .icon-button { width:34px; height:34px; font-size:15px; }
/* Once past the first section the prompt gives up its height to the pills. */
.modal-card header.is-scrolled { padding-top:13px; padding-bottom:11px; box-shadow:0 6px 14px -12px #0f172a55; }
.modal-card header.is-scrolled h2 { display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden; font-size:17px; margin-top:5px; }
.check-toggle { display:inline-flex; align-items:center; gap:7px; padding:0 12px; height:38px; border:1px solid var(--line); border-radius:9px; background:#fff; font-size:12.5px; color:#3d4757; cursor:pointer; white-space:nowrap; }
.check-toggle input { width:15px; height:15px; margin:0; cursor:pointer; accent-color:#1b5e9e; }
.check-toggle[hidden] { display:none; }
.stat-pills { display:flex; flex-wrap:wrap; gap:6px; margin-top:11px; }
.stat-pills:empty { display:none; }
.stat-pill { display:inline-flex; align-items:baseline; gap:5px; padding:3px 9px; border:1px solid var(--line); border-radius:999px; background:#f7f9fc; font-size:11px; color:#4a5768; white-space:nowrap; }
.stat-pill b { font-size:12px; font-weight:700; color:#1f2a3a; font-variant-numeric:tabular-nums; }
.stat-pill.is-brand { border-color:#bcd8c6; background:#eef8f2; }
.stat-pill.is-pending { opacity:.55; }.modal-card header small { color:#8490a2; font-size:9px; font-weight:800; letter-spacing:.12em; }.modal-card h2 { margin:8px 0 0; font-size:23px; line-height:1.45; unicode-bidi:plaintext; }.modal-close { border:0; background:#f1f2f5; width:34px; height:34px; border-radius:50%; font-size:23px; color:#555d69; }.modal-body { padding:26px 28px; }.modal-section { padding:0 0 27px; }.modal-section h3 { margin:0 0 5px; }.modal-section p { color:var(--muted); margin:0 0 15px; font-size:12px; }.modal-section .competitor-chips { justify-content:flex-start; }.modal-action { display:inline-block; text-decoration:none; }.modal-open { overflow:hidden; }@keyframes slide-in { from { transform:translateX(40px); opacity:0; } }
.note-card { width:min(540px,94vw); }.note-form { padding:26px 28px; }.note-form > label { display:block; color:#4d5664; font-size:12px; font-weight:700; margin-bottom:9px; }.note-form textarea { width:100%; resize:vertical; min-height:210px; padding:13px; border:1px solid var(--line); border-radius:8px; outline:0; line-height:1.55; }.note-form textarea:focus { border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }.note-dates { min-height:24px; padding-top:9px; color:#8b929d; font-size:10px; }.note-actions { display:grid; grid-template-columns:auto 1fr auto auto; gap:9px; align-items:center; padding-top:18px; border-top:1px solid var(--line); }.danger-button { border:1px solid #f2b7b7; background:#fff5f5; color:#b54343; padding:10px 14px; border-radius:8px; font-weight:700; }
.prompt-list-head,.prompt-item { grid-template-columns:minmax(220px,1.2fr) minmax(230px,1.05fr) minmax(190px,.8fr) minmax(220px,.9fr); }
.target-loading,.target-empty { color:var(--muted); font-size:11px; }
.mini-spinner { display:inline-block; width:12px; height:12px; margin-right:6px; border:2px solid #dce5f7; border-top-color:var(--blue); border-radius:50%; animation:spin .8s linear infinite; vertical-align:-2px; }
.target-result { min-width:0; }.target-result > a { display:block; color:#1f55ae; font-weight:700; text-decoration:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.target-result > a:hover { text-decoration:underline; }.target-result > small,.observed-target small { display:block; color:var(--muted); margin-top:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.target-status { display:inline-block; margin-top:7px; padding:4px 7px; border-radius:999px; font-size:9px; font-weight:750; }.target-status.match { color:#147558; background:#e7f7f1; }.target-status.partial { color:#8b6400; background:#fff4d5; }.target-status.gap { color:#b24848; background:#feecec; }.target-status.checking { color:#53647e; background:#eef2f7; }
.target-modal-section { border-top:1px solid var(--line); padding-top:22px; }.observed-target a { color:var(--ink); font-weight:700; text-decoration:none; overflow-wrap:anywhere; }.observed-target a:hover { color:var(--blue); text-decoration:underline; }
.mapped-target-row td { background:#f8fbff; }.target-count { display:inline-block; color:#1f55ae; background:#eaf2ff; border-radius:999px; padding:5px 8px; font-size:10px; font-weight:750; }.top-target-note { display:block; color:var(--green); margin-top:5px; font-weight:700; }
.coverage-badge { display:inline-block; border-radius:999px; padding:6px 9px; font-size:9px; font-weight:750; white-space:nowrap; }.coverage-badge.found { color:#147558; background:#e7f7f1; }.coverage-badge.missing { color:#b24848; background:#feecec; }.target-url-cell { min-width:260px; max-width:540px; }.target-url-cell small { display:block; color:var(--muted); margin-top:5px; overflow-wrap:anywhere; }.target-prompts { position:relative; min-width:100px; }.target-prompts summary { list-style:none; cursor:pointer; }.target-prompts summary::-webkit-details-marker { display:none; }.target-prompts ul { position:absolute; right:0; z-index:7; width:min(520px,70vw); max-height:300px; overflow:auto; margin:7px 0 0; padding:8px 24px 8px 30px; background:#fff; border:1px solid var(--line); border-radius:9px; box-shadow:0 14px 36px #17213a24; }.target-prompts li { padding:7px 3px; line-height:1.4; unicode-bidi:plaintext; }.target-prompts li + li { border-top:1px solid #edf0f4; }.target-prompts li small { display:block; color:var(--muted); margin-top:3px; }
.competitor-brand { display:flex; align-items:center; gap:9px; }.brand-logo,.mini-brand-logo { position:relative; display:inline-grid; place-items:center; flex:0 0 auto; overflow:hidden; border:1px solid var(--line); background:#eef2f8; color:#50607d; }.brand-logo { width:34px; height:34px; border-radius:50%; }.mini-brand-logo { width:25px; height:25px; border-radius:7px; }.brand-logo b,.mini-brand-logo b { font-size:10px; }.brand-logo img,.mini-brand-logo img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; background:#fff; }.competitor-url-list { display:grid; gap:7px; margin-top:7px; }.competitor-url { display:grid; grid-template-columns:26px minmax(0,1fr); gap:7px; align-items:start; }
/* Four columns: index, favicon, badge, meta. The badge has its own track so
   every title starts at the same x - inside <strong> it flowed with the text
   and the badges zig-zagged. Rows with no badge leave the track empty.
   10ch fits "Competitor"; widen if a longer label appears. */
#prompt-modal-citations .competitor-url { grid-template-columns:17px 26px 10ch minmax(0,1fr); column-gap:9px; align-items:center; padding:4px; border-radius:6px; }
#prompt-modal-citations .src-favicon { grid-column:2; }
#prompt-modal-citations .src-badge-cell { grid-column:3; justify-self:start; min-width:0; }
#prompt-modal-citations .src-badge-cell .src-badge { margin-inline-start:0; white-space:nowrap; }
#prompt-modal-citations .src-meta { grid-column:4; min-width:0; }
#prompt-modal-citations .src-meta small { display:block; color:var(--muted); font-size:10px; }.competitor-url strong,.competitor-url a,.competitor-url small { display:block; }.competitor-url strong { color:#34415a; font-size:10px; }.competitor-url a { color:#245ebc; font-size:10px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-decoration:none; }.competitor-url a:hover { text-decoration:underline; }.competitor-url small { color:#8a93a2; font-size:9px; margin-top:2px; }
.owned-topic-url > strong { display:block; color:#34415a; font-size:10px; margin-bottom:7px; }.owned-topic-url-row { display:grid; grid-template-columns:26px minmax(0,1fr); gap:7px; align-items:start; }.owned-topic-url-row a,.owned-topic-url-row small { display:block; }.owned-topic-url-row a { color:#167159; font-size:10px; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-decoration:none; }.owned-topic-url-row a:hover { text-decoration:underline; }.owned-topic-url-row small { color:#8a93a2; font-size:9px; margin-top:2px; }
.target-pick { margin-top:7px; border:1px solid var(--line); background:#fff; color:#1f55ae; padding:5px 9px; border-radius:7px; font-size:10px; font-weight:700; cursor:pointer; }.target-pick:hover { border-color:#8bb0f9; background:#f4f8ff; }.target-manual { display:inline-block; color:#147558; background:#e7f7f1; border-radius:999px; padding:3px 8px; font-size:9px; font-weight:750; margin-bottom:5px; }
.target-card { width:min(720px,96vw); }.target-body { display:grid; gap:14px; }.target-client { color:var(--muted); font-size:11px; margin:6px 0 0; }.target-heading { margin:0; font-size:13px; }.target-current { padding:11px 13px; background:#f8fbff; border:1px solid var(--line); border-radius:9px; font-size:11px; overflow-wrap:anywhere; }.target-current a { color:#1f55ae; }.target-auto-note { color:var(--muted); }
.target-options { display:grid; gap:7px; }.target-option { display:grid; grid-template-columns:18px minmax(0,1fr); gap:9px; align-items:start; text-align:left; width:100%; padding:11px 13px; border:1px solid var(--line); border-radius:9px; background:#fff; cursor:pointer; }.target-option:hover { border-color:#8bb0f9; background:#f7faff; }.target-option.selected { border-color:#2f855a; background:#f2fbf7; }.option-mark { color:#8b98ac; font-size:12px; line-height:1.5; }.target-option.selected .option-mark { color:#2f855a; }.option-body { min-width:0; display:block; }.option-body strong { display:block; font-size:12px; line-height:1.45; }.option-body small { display:block; color:#7d8797; font-size:10px; margin-top:3px; overflow-wrap:anywhere; }.option-tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; align-items:center; }.option-tag { color:#50607d; background:#eef2f8; border-radius:999px; padding:3px 7px; font-size:9px; font-weight:700; }.option-tag.auto { color:#1f55ae; background:#eaf2ff; }.option-score { color:#8a93a2; font-size:9px; font-weight:700; }
.target-search { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:9px; }.target-search input { padding:11px 13px; border:1px solid var(--line); border-radius:8px; outline:0; font-size:12px; }.target-search input:focus { border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }.url-note { color:#1f55ae; }.gsc-chip { display:inline-block; margin-top:6px; color:#50607d; background:#eef2f8; border-radius:999px; padding:3px 8px; font-size:9px; font-weight:700; white-space:nowrap; }.gsc-chip.zero { color:#8a5a00; background:#fdf3e0; }#target-gsc-heading p { margin:4px 0 0; }.gsc-chip.button { border:1px solid var(--line); color:#1f55ae; background:#fff; cursor:pointer; }.gsc-chip.button:hover { border-color:#8bb0f9; background:#f4f8ff; }.gsc-chip.pending { color:#98a1ae; background:#f4f5f7; font-weight:600; }.gsc-chip.empty { color:#98a1ae; background:#f4f5f7; font-weight:600; }.prompt-gsc-slot,.target-gsc-slot { display:block; }
.gsc-modal-total { color:#34415a; font-size:12px; font-weight:700; margin-bottom:10px; }.gsc-modal-list { list-style:none; margin:0; padding:0; display:grid; gap:9px; }.gsc-modal-list li { padding:9px 11px; border:1px solid var(--line); border-radius:8px; }.gsc-modal-list strong { display:block; font-size:12px; line-height:1.4; }.gsc-modal-list small { display:block; color:var(--muted); font-size:10px; margin-top:3px; }.gsc-modal-list a { display:block; color:#1f55ae; font-size:10px; margin-top:3px; overflow-wrap:anywhere; text-decoration:none; }.gsc-modal-list a:hover { text-decoration:underline; }
.gsc-kpis { margin-bottom:18px; }.gsc-table td { vertical-align:top; }.gsc-query { font-weight:700; max-width:260px; overflow-wrap:anywhere; }.gsc-matched .gsc-query { color:#147558; }.gsc-match-cell { min-width:320px; }.gsc-matches { list-style:none; margin:0; padding:0; display:grid; gap:7px; }.gsc-matches li { display:grid; grid-template-columns:38px minmax(0,1fr); gap:8px; align-items:start; }.gsc-score { color:#1f55ae; background:#eaf2ff; border-radius:999px; padding:3px 6px; font-size:9px; font-weight:750; text-align:center; }.gsc-match-body span { display:block; font-size:11px; line-height:1.45; }.gsc-match-body small { display:block; color:#8a93a2; font-size:9px; margin-top:2px; }.gsc-more { display:block; color:#8a93a2; font-size:9px; margin-top:6px; }.source-search { min-width:240px; }.source-search input { border:0; outline:0; background:transparent; font-size:12px; width:100%; }
.target-manual-form > label { display:block; color:#4d5664; font-size:11px; font-weight:700; margin-bottom:7px; }.target-manual-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:9px; }.target-manual-row input { padding:11px 13px; border:1px solid var(--line); border-radius:8px; outline:0; font-size:12px; }.target-manual-row input:focus { border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }
.target-actions { display:grid; grid-template-columns:auto 1fr auto; gap:9px; align-items:center; padding-top:14px; border-top:1px solid var(--line); }
@keyframes spin { to { transform:rotate(360deg); } }
@media (max-width:1100px) { .usage-grid { grid-template-columns:repeat(3,1fr); }.usage-grid article { border-bottom:1px solid var(--line); }.kpis { grid-template-columns:repeat(3,1fr); }.kpi { border-bottom:1px solid var(--line); }.owned-coverage { grid-template-columns:1fr 1fr; }.owned-coverage article { border-bottom:1px solid var(--line); }.dashboard-grid { grid-template-columns:1fr; }.ranking { max-height:none; } }
@media (max-width:760px) { .sidebar { width:70px; padding:0 8px; }.logo strong,.logo small,.nav-item:not(.active){ }.logo { padding-left:18px; }.logo strong,.logo small,nav p,.nav-item { font-size:0; }.nav-item span { font-size:18px; margin:auto; }.sidebar-foot { display:none; }.app-shell { margin-left:70px; }.app-header,main { padding-left:18px; padding-right:18px; }.usage-grid { grid-template-columns:1fr 1fr; }.kpis { grid-template-columns:1fr 1fr; }.api-surface { grid-template-columns:1fr; }.topic-insight-head { display:block; }.competitor-chips { justify-content:flex-start; margin-top:12px; }.prompt-list-head,.prompt-item { grid-template-columns:1fr; }.note-preview { display:none; } }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.fanout-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.fanout-controls { display:flex; align-items:center; gap:6px; flex-shrink:0; }
.fanout-model select { padding:6px 8px; font-size:11px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--ink); }
.fanout-list { list-style:none; margin:10px 0 0; padding:0; display:flex; flex-direction:column; gap:4px; }
.fanout-row { display:flex; align-items:center; gap:8px; padding:6px 8px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.fanout-row:hover { border-color:#c9d4e6; background:var(--blue-soft); }
.fanout-rank { flex-shrink:0; width:18px; color:var(--muted); font-size:10px; font-weight:700; text-align:center; }
.fanout-query { flex:1; min-width:0; font-size:12px; line-height:1.4; word-break:break-word; }
.fanout-score { flex-shrink:0; display:flex; flex-direction:column; align-items:flex-end; color:var(--green); font-size:11px; font-weight:700; line-height:1.2; }
.fanout-score small { color:var(--muted); font-size:9px; font-weight:600; }
.fanout-copy { flex-shrink:0; border:1px solid var(--line); background:var(--surface); color:var(--muted); border-radius:6px; padding:3px 7px; font-size:12px; cursor:pointer; }
.fanout-copy:hover { border-color:var(--blue); color:var(--blue); }
.fanout-empty { margin:10px 0 0; color:var(--muted); font-size:11px; line-height:1.5; }
.fanout-empty.error { color:#b4453a; }
.fanout-empty code { background:#eef2f8; border-radius:4px; padding:1px 4px; font-size:10px; }
.fanout-note { margin:8px 0 0; color:var(--muted); font-size:10px; }
.segmented .segment.active { background:var(--surface); color:var(--ink); font-weight:700; box-shadow:0 1px 2px rgba(16,24,40,.08); }
.prompt-fanout-slot { display:inline-block; margin-inline-start:6px; }
.fanout-chip { display:inline-flex; align-items:center; gap:3px; border-radius:999px; padding:3px 8px; font-size:9px; font-weight:700; white-space:nowrap; vertical-align:middle; }
.fanout-chip.empty { color:#aab2c0; background:#f2f4f8; }
.fanout-chip.has { color:#2c7a5f; background:#e6f6ef; }
.fanout-chip i { font-style:normal; background:rgba(0,0,0,.06); border-radius:4px; padding:0 3px; font-size:8px; }
.model-badge { display:inline-block; border-radius:999px; padding:2px 8px; font-size:9px; font-weight:700; letter-spacing:.02em; }
.model-badge.google { color:#1a56b8; background:#e6efff; }
.model-badge.chatgpt { color:#0d7a63; background:#e2f5f0; }
.model-badge.dim { opacity:.4; }
.keywords-body { display:flex; flex-direction:column; gap:14px; }
.keywords-topic { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
.keywords-topic-head { display:flex; align-items:center; gap:10px; padding-bottom:10px; border-bottom:1px solid var(--line); }
.keywords-topic-head h3 { margin:0; font-size:14px; }
.keywords-prompt { padding:14px 0; border-bottom:1px solid var(--line); }
.keywords-prompt:last-child { border-bottom:0; padding-bottom:0; }
.keywords-prompt header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:8px; }
.keywords-prompt-text { margin:0; flex:1; min-width:240px; font-size:13px; font-weight:600; line-height:1.45; }
.keywords-prompt-meta { display:flex; align-items:center; gap:6px; flex-shrink:0; }
.keywords-prompt-meta .fanout-copy { font-size:10px; padding:4px 8px; }
.keywords-model-block + .keywords-model-block { margin-top:12px; padding-top:12px; border-top:1px dashed var(--line); }
.keywords-model-name { margin:0 0 6px; display:flex; align-items:center; gap:6px; font-size:10px; font-weight:600; color:var(--muted); }
.keywords-more { margin-top:8px; }


/* SearchInsight source: the selector next to ACCOUNT, and the banner the pages
   use to say what a source cannot answer rather than rendering an empty panel. */
.source-selector select { min-width: 9rem; }
.source-selector select option[disabled] { color: #8a8a8a; }

.source-note {
  margin: 0 0 1rem;
  padding: 0.7rem 0.9rem;
  border: 1px solid rgba(224, 92, 92, 0.35);
  border-left: 3px solid #e0a15c;
  border-radius: 6px;
  background: rgba(224, 161, 92, 0.08);
  font-size: 0.85rem;
  line-height: 1.5;
}
.source-note div + div { margin-top: 0.35rem; }

body[data-source="searchinsight"] .limy-only { display: none; }

/* SearchInsight keyword chips: a flat tracked list, each copyable on its own.
   Its own class rather than .fanout-list, which is a vertical fan-out column. */
.si-keyword-list { display:flex; flex-wrap:wrap; gap:0.4rem; padding:0.2rem 0 0.6rem; }
.si-keyword-list .fanout-copy { flex:0 0 auto; }

/* SearchInsight's tracked keyword list, below the fan-outs it recorded. */
.keywords-tracked { margin-top: 1.4rem; padding-top: 1rem; border-top: 1px solid rgba(128,128,128,0.25); }
.keywords-tracked-group { margin-top: 0.7rem; }
.keywords-tracked-group h4 { margin: 0 0 0.35rem; font-size: 0.9rem; font-weight: 600; }
.fanout-unscored { font-size: 0.72rem; opacity: 0.6; white-space: nowrap; }

/* SearchInsight records the answer an engine gave; Limy exposes none, so this
   block only ever renders for that source. Scrollable rather than clipped: an
   answer runs to ~9,000 characters and truncating it would hide the citation
   context it is being read for. */
/* No overflow-y here. It was a 279px window onto 1,843px of content nested
   inside a card that itself scrolls, so putting the cursor over the answer
   silently hijacked the drawer's scroll. One scroll axis per surface. */
.si-answer { position:relative; max-height:460px; overflow:hidden; padding:13px 15px; border:1px solid var(--line); border-radius:9px; background:#f8fafd; color:#34415a; font-size:12.5px; line-height:1.7; overflow-wrap:anywhere; }
.si-answer[data-expanded="true"] { max-height:none; }
.si-answer:not([data-expanded="true"])::after { content:""; position:absolute; inset:auto 0 0 0; height:96px; background:linear-gradient(rgba(248,250,253,0), #f8fafd); pointer-events:none; }
/* Only offered when there is something hidden to reveal. */
.si-answer-more { display:none; margin-top:9px; }
.si-answer-more[data-overflows="true"] { display:inline-flex; }
.si-answer > :first-child { margin-top:0; }
.si-answer > :last-child { margin-bottom:0; }
.si-answer p { margin:0 0 9px; }
/* A model `##` is a section label inside a 12px card, not a page heading. */
.si-answer .ans-h { margin:15px 0 6px; color:#5a6780; font-size:10px; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.si-answer .ans-list { margin:0 0 9px; padding-inline-start:19px; }
.si-answer .ans-list li { margin:0 0 4px; }
.si-answer code { padding:1px 4px; border-radius:4px; background:#eaeff7; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:11px; }
.si-answer .ans-link { color:var(--accent,#1b5e9e); }
.ans-table-wrap { overflow-x:auto; margin:0 0 10px; }
.ans-table { border-collapse:collapse; width:auto; min-width:100%; font-size:11.5px; }
.ans-table th, .ans-table td { padding:6px 9px; border:1px solid var(--line); text-align:start; vertical-align:top; min-width:92px; overflow-wrap:normal; }
.ans-table th { background:#eef2f8; font-weight:700; }
.cite-chip { display:inline-flex; align-items:center; justify-content:center; min-width:17px; height:17px; margin:0 2px; padding:0 4px; border:1px solid #c3d0e4; border-radius:5px; background:#e7eefb; color:#2c4f86; font:inherit; font-size:10px; font-weight:700; line-height:1; cursor:pointer; vertical-align:1px; }
.cite-chip:hover { background:#d6e3f8; }
.cite-index { flex:none; min-width:17px; height:17px; display:inline-flex; align-items:center; justify-content:center; border-radius:5px; background:#eef2f8; color:#5a6780; font-size:10px; font-weight:700; }
.competitor-url.cite-flash { animation:cite-flash 1.25s ease-out; }
@keyframes cite-flash { 0%,22% { background:#fdf2cf; } 100% { background:transparent; } }
@media (prefers-reduced-motion: reduce) { .competitor-url.cite-flash { animation:none; outline:2px solid #e5b93c; } }
/* Citations: one list behind a segmented filter. The segments carry their own
   counts, so filtering never hides how much there is. An empty segment is
   disabled rather than removed - "no competitor page was cited" is a finding,
   and a missing tab reads as a control that was never offered. */
.cite-filter { margin:9px 0 4px; width:max-content; max-width:100%; flex-wrap:wrap; }
.cite-filter .segment { display:inline-flex; align-items:center; gap:5px; border:0; padding:6px 11px; background:transparent; border-radius:6px; color:var(--muted); font-size:11px; font-weight:650; cursor:pointer; }
.cite-filter .segment b { font-variant-numeric:tabular-nums; font-weight:800; }
.cite-filter .segment:disabled { opacity:.42; cursor:default; }
.cite-filter .segment:focus-visible { outline:2px solid var(--blue,#245ebc); outline-offset:1px; }
/* The FAQ a page answers in its markup. The schema column says "FAQPage"; this
   says what it actually answers, which is the part a writer can act on. */
.rec-faq { margin-top:13px; }
.rec-faq h5 { margin:0 0 8px; color:#5a6780; font-size:10px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.faq-block { margin-bottom:11px; border:1px solid var(--line); border-radius:9px; padding:9px 11px; background:var(--surface); }
.faq-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:6px; }
.faq-head b { color:#34415a; font-size:11px; }
.faq-head code { color:var(--muted); font-size:9px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:60%; }
.faq-count { margin-inline-start:auto; background:#eef2f8; color:#5a6780; border-radius:999px; padding:2px 8px; font-size:9px; font-weight:700; white-space:nowrap; }
.faq-count.is-broken { background:#fdf4e3; color:#96631a; border:1px solid #f0dcb4; }
.faq-missing { color:#96631a; font-style:italic; font-weight:600; }
.faq-item { border-top:1px solid var(--line); padding:5px 0; }
.faq-item:first-of-type { border-top:0; }
.faq-item summary { cursor:pointer; color:#34415a; font-size:11px; font-weight:600; list-style:none; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::before { content:"›"; display:inline-block; margin-inline-end:6px; color:var(--muted); transition:transform .15s ease; }
.faq-item[open] summary::before { transform:rotate(90deg); }
.faq-item p { margin:5px 0 0; color:#5a6780; font-size:10.5px; line-height:1.6; }
.faq-item .faq-empty { color:var(--muted); font-style:italic; }
.faq-more { margin:7px 0 0; color:var(--muted); font-size:9px; }
.rec-analysis-stamp { margin:9px 0 0; color:var(--muted); font-size:9px; }

/* Sentiment KPI. The "derived" tag is not decoration: neither API reports
   sentiment, so the tile has to say the number was inferred from answer text. */
.derived-tag { display:inline-block; margin-inline-start:6px; padding:1px 6px; border-radius:999px; background:#efe7fb; color:#6b3fa0; border:1px solid #ddcdf3; font-size:8px; font-weight:800; font-style:normal; letter-spacing:.06em; text-transform:uppercase; vertical-align:middle; cursor:help; }
.sentiment-kpi small { display:block; }
.sentiment-kpi #sentiment-change.is-thin { opacity:.55; }
.sentiment-kpi #sentiment-measure { margin-top:8px; padding:4px 9px; font-size:10px; }

/* Source analysis drill-down: for one cited domain, the prompts that cited it.
   The "you were cited" flag is the column worth scanning - a domain cited by 56
   prompts where we appear in 17 is the finding, not the citation count. */
.source-drill { display:inline-flex; align-items:center; gap:5px; border:1px solid var(--line); background:var(--surface); color:#245ebc; border-radius:7px; padding:4px 9px; font-size:10px; font-weight:700; cursor:pointer; white-space:nowrap; }
.source-drill:hover { border-color:#8bb0f9; background:#f4f8ff; }
.source-drill:focus-visible { outline:2px solid var(--blue,#245ebc); outline-offset:1px; }
.drill-caret { display:inline-block; transition:transform .15s ease; }
.source-drill[aria-expanded="true"] .drill-caret { transform:rotate(90deg); }
.spl-none { color:var(--muted); font-size:9px; }
.source-detail-row > td { background:#f8fafd; padding:0; }
.source-prompt-detail { padding:11px 15px 13px; }
.spl-head { margin-bottom:8px; color:#5a6780; font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.spl-list { margin:0; padding:0; list-style:none; display:grid; gap:7px; }
.spl-list li { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) max-content; gap:11px; align-items:start; padding:6px 8px; border-radius:7px; background:var(--surface); border:1px solid var(--line); }
.spl-main strong { display:block; color:#34415a; font-size:11px; font-weight:650; }
.spl-meta { display:flex; flex-wrap:wrap; gap:5px; margin-top:3px; }
.spl-topic,.spl-engine { border-radius:999px; padding:1px 7px; font-size:9px; font-weight:600; background:#eef2f8; color:#5a6780; }
.spl-engine { background:#eaf1fd; color:#2b5ea8; }
.spl-pages { display:grid; gap:2px; min-width:0; }
.spl-pages a { color:#245ebc; font-size:10px; text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.spl-pages a:hover { text-decoration:underline; }
.spl-flag { align-self:center; border-radius:999px; padding:2px 8px; font-size:9px; font-weight:700; white-space:nowrap; }
.spl-flag.is-cited { background:#e3f6e9; color:#1c7a41; border:1px solid #b7e3c6; }
.spl-flag.is-named { background:#fdf4e3; color:#96631a; border:1px solid #f0dcb4; }
.spl-flag.is-absent { background:#fdeceb; color:#b23c33; border:1px solid #f6ccc8; }
.spl-more { margin:9px 0 0; color:var(--muted); font-size:10px; }

/* Search Console, grouped by query. The rows of one query differ only by page,
   so the query is the group heading and the path is the row - the old flat list
   drew the same query text five times with only the URL changing. Figures are
   tabular so they scan down the column. */
.gsc-query-group { margin:0 0 11px; padding:0; list-style:none; }
.gsc-query-head { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.gsc-query-head strong { color:#34415a; font-size:11px; }
.gsc-figs { flex:none; color:var(--muted); font-size:10px; font-variant-numeric:tabular-nums; }
.gsc-page-list { margin:5px 0 0; padding:0 0 0 11px; list-style:none; border-inline-start:2px solid var(--line); }
.gsc-page-list li { display:flex; align-items:baseline; justify-content:space-between; gap:10px; padding:2px 0; }
.gsc-page-list a { color:#245ebc; font-size:10px; text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gsc-page-list a:hover { text-decoration:underline; }
.gsc-page-more { color:var(--muted); font-size:9px; }
.gsc-more { margin:7px 0 0; color:var(--muted); font-size:10px; }
.url-more { display:block; margin-top:6px; color:var(--muted); font-size:9px; }
.cite-empty { margin:11px 0 0; color:var(--muted); font-size:11px; }
.cite-note { margin:9px 0 0; color:var(--muted); font-size:10px; line-height:1.5; }

/* Source classification. The owned domain is the brand's own site, which is the
   one a reader scans for, so it gets the green. "client" is the upstream word
   for it; the badge says "Brand name" because that is what it means here.
   A competitor reads red: it was neutral grey, which made a rival citation look
   like an unclassified third party at a glance. Kept light - this marks a fact,
   not an error, and it sits inline in a dense list. */
.src-badge { display:inline-block; margin-inline-start:6px; padding:1px 6px; border-radius:999px; font-size:9px; font-weight:600; letter-spacing:.02em; vertical-align:middle; }
.src-badge-brand { background:#e3f6e9; color:#1c7a41; border:1px solid #b7e3c6; }
.src-badge-rival { background:#fdeceb; color:#b23c33; border:1px solid #f6ccc8; }

/* Recommendations. The score is three readable parts, so the composition bar is
   the formula rather than decoration: blue is the citation gap (0.40), amber the
   search volume (0.35), green the SERP decay (0.25). A reader sees *why* a page
   ranks before opening anything. Red is reserved for the client's own citation
   count - the one number the page exists to change. */
:root { --red:#d64a3b; --red-soft:#fdeeec; --amber-soft:#fdf4e3; --green-soft:#e9f8f3; }
.rec-actions { display:flex; gap:7px; }
.kpi-split { display:flex; gap:3px; margin-top:9px; height:5px; border-radius:3px; overflow:hidden; }
.kpi-split i { display:block; height:100%; }
.rec-table { min-width:980px; }
.rec-table th.num, .rec-table td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.rec-score-col { width:118px; } .rec-bar-col { width:150px; } .rec-cit-col { width:172px; }
.rec-row { cursor:pointer; }
.rec-row:hover td { background:#fafbfc; }
.rec-row.open td { background:#fbfcfe; }
.rec-score { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.rec-dial { width:38px; height:38px; border-radius:50%; display:grid; place-items:center; font-weight:700;
  font-size:13px; font-variant-numeric:tabular-nums; color:#fff; flex:none; }
.rec-dial.hi { background:var(--red); } .rec-dial.md { background:var(--amber); } .rec-dial.lo { background:#9aa2b1; }
.rec-band { font-size:9.5px; letter-spacing:.1em; font-weight:700; padding:3px 7px; border-radius:5px; display:inline-block; }
.rec-band.hi { background:var(--red-soft); color:#9c2f22; } .rec-band.md { background:var(--amber-soft); color:#8a5c05; }
.rec-band.lo { background:#f1f3f6; color:#5f6875; }
.rec-page strong { display:block; font-weight:600; font-size:13px; line-height:1.35; margin-bottom:3px; }
.rec-page code { font-size:10.5px; color:var(--muted); overflow-wrap:anywhere; display:block; }
.rec-topic { display:inline-block; margin-top:6px; background:#f1f3f6; border-radius:5px; padding:2px 7px; font-size:11px; color:#4a505c; }
.rec-bar .track { display:flex; height:8px; border-radius:4px; overflow:hidden; background:#eef0f4; }
.rec-bar .track i { display:block; height:100%; }
.rec-bar .legend { display:flex; gap:8px; margin-top:6px; font-size:9.5px; color:var(--muted); }
.rec-bar .legend b { font-weight:500; color:#4a505c; font-variant-numeric:tabular-nums; }
.rec-sw { width:7px; height:7px; border-radius:2px; display:inline-block; margin-right:3px; vertical-align:middle; }
.rec-c1 { background:var(--blue); } .rec-c2 { background:var(--amber); } .rec-c3 { background:var(--green); }
.rec-cit { white-space:nowrap; font-variant-numeric:tabular-nums; }
.rec-cit b { color:var(--red); font-weight:700; } .rec-cit s { text-decoration:none; color:var(--muted); }
.rec-cit small { display:block; font-size:10.5px; color:var(--muted); margin-top:3px; white-space:normal; }
.rec-eng { display:flex; gap:4px; margin-top:6px; flex-wrap:wrap; }
.rec-eng em { font-style:normal; font-size:9px; padding:2px 5px; border-radius:4px; background:var(--green-soft); color:#14795a; }
.rec-eng em.off { background:#f5eceb; color:#a2453a; text-decoration:line-through; }
.rec-detail td { background:#fbfcfe; padding:0 14px 20px; }
.rec-detail-grid { display:grid; grid-template-columns:1.35fr 1fr; gap:16px; padding-top:4px; }
.rec-block { background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px; min-width:0; }
.rec-block h4 { margin:0 0 10px; font-size:9.5px; letter-spacing:.12em; text-transform:uppercase; color:#8b93a1; font-weight:600; }
.rec-card { border:1px solid var(--line); border-left:3px solid var(--red); border-radius:8px; padding:11px 13px; margin-bottom:9px; }
.rec-card.md { border-left-color:var(--amber); } .rec-card.lo { border-left-color:#9aa2b1; }
.rec-card-head { display:flex; align-items:center; gap:7px; margin-bottom:6px; flex-wrap:wrap; }
.rec-cat { font-size:10.5px; font-weight:600; color:#30343b; letter-spacing:.02em; }
.rec-card p { margin:0 0 6px; font-size:12.5px; color:#4a505c; }
.rec-card p.do { margin:0; color:var(--ink); font-weight:500; }
.rec-card p.do::before { content:"\2192 "; color:var(--blue); font-weight:700; }
.rec-mini { width:100%; font-size:12px; border-collapse:collapse; }
.rec-mini th { padding:7px 8px; font-size:9px; }
.rec-mini td { padding:7px 8px; font-size:12px; border-bottom:1px solid var(--line); }
.rec-side { display:flex; flex-direction:column; gap:16px; min-width:0; }
.rec-json { margin:0; background:#12151b; color:#d7dce6; border-radius:9px; padding:13px; overflow-x:auto;
  font-size:10.5px; line-height:1.65; max-height:320px; }
.rec-prompt-list { margin:0; padding:0; list-style:none; }
.rec-prompt-list li { padding:6px 0; border-top:1px solid var(--line); font-size:12px; line-height:1.45; }
.rec-prompt-list li:first-child { border-top:0; }
.rec-flag { font-size:9.5px; padding:2px 6px; border-radius:5px; background:var(--blue-soft); color:#1f55ae; margin-inline-start:6px; }
@media (max-width:1020px) { .rec-detail-grid { grid-template-columns:1fr; } }
.rec-analysis-copy { margin:0 0 9px; color:var(--muted); font-size:11.5px; line-height:1.5; }
.rec-analysis-out { margin-top:11px; }
.rec-analysis-out .rec-mini code { font-size:10px; color:var(--muted); overflow-wrap:anywhere; }

/* Recommendations summary panel. Legend and counts on the left, the donut in
   the middle showing the same three bands as one whole, and the two secondary
   figures split off to the right behind a divider. */
.rec-summary { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(260px,.85fr); background:var(--surface);
  border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-bottom:22px; }
.rec-summary-main { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:20px; align-items:center;
  padding:24px 26px; border-right:1px solid var(--line); }
.rec-summary-title { display:block; color:var(--muted); font-weight:650; font-size:12px; margin-bottom:14px; }
.rec-summary-legend ul { list-style:none; margin:0; padding:0; display:grid; gap:2px; }
.rec-summary-legend button { display:grid; grid-template-columns:11px minmax(0,1fr) auto auto; gap:10px;
  align-items:center; width:100%; padding:7px 9px; border:1px solid transparent; border-radius:7px;
  background:transparent; color:var(--ink); font-size:13px; text-align:left; cursor:pointer; }
.rec-summary-legend button:hover { background:#f5f7fa; }
.rec-summary-legend button.active { border-color:#cdd9ef; background:#f4f8ff; }
.rec-summary-legend i { width:11px; height:11px; border-radius:3px; }
.rec-summary-legend em { font-style:normal; color:#9aa1ad; font-size:11px; font-variant-numeric:tabular-nums; }
.rec-summary-legend b { min-width:44px; text-align:right; font-weight:700; font-size:14px; font-variant-numeric:tabular-nums; }
.rec-legend-empty { padding:7px 9px; color:var(--muted); }
.rec-summary-donut { position:relative; width:148px; height:148px; flex:none; }
.rec-summary-donut svg { width:100%; height:100%; transform:rotate(-90deg); }
.rec-donut-track { fill:none; stroke:#eef0f4; stroke-width:15; }
.rec-donut-arc { fill:none; stroke-width:15; transition:stroke-dasharray .35s ease; }
.rec-donut-mid { position:absolute; inset:0; display:grid; place-content:center; text-align:center; }
.rec-donut-mid strong { display:block; font-size:27px; letter-spacing:-.04em; font-variant-numeric:tabular-nums; }
.rec-donut-mid small { display:block; color:var(--muted); font-size:10.5px; margin-top:2px; }
.rec-summary-aside { display:grid; align-content:center; gap:22px; padding:24px 26px; }
.rec-summary-aside span, .rec-summary-aside small { display:block; }
.rec-summary-aside span { color:var(--muted); font-weight:650; font-size:12px; }
.rec-summary-aside strong { display:block; margin:9px 0 5px; font-size:29px; letter-spacing:-.05em; font-variant-numeric:tabular-nums; }
.rec-summary-aside small { color:#969ca6; font-size:10px; line-height:1.45; }
@media (max-width:1100px) {
  .rec-summary { grid-template-columns:1fr; }
  .rec-summary-main { border-right:0; border-bottom:1px solid var(--line); }
  .rec-summary-aside { grid-template-columns:1fr 1fr; gap:20px; }
}
@media (max-width:620px) {
  .rec-summary-main { grid-template-columns:1fr; justify-items:center; }
  .rec-summary-legend { width:100%; }
  .rec-summary-aside { grid-template-columns:1fr; }
}

/* Sortable column headers. The indicator holds its space whether or not the
   column is the active one, so the header labels do not shift on click.
   Recommendations and the Prompts topic table share the rule rather than a
   copy, so the two cannot drift apart. */
.rec-table th[data-sort],
.topics-table th[data-topic-sort] { padding:0; }
.rec-table th[data-sort] button,
.topics-table th[data-topic-sort] button { display:flex; align-items:center; gap:6px; width:100%; padding:14px 18px;
  border:0; background:transparent; color:inherit; font:inherit; text-transform:inherit; letter-spacing:inherit;
  text-align:left; cursor:pointer; }
.rec-table th[data-sort].num button { justify-content:flex-end; }
.rec-table th[data-sort] button:hover,
.topics-table th[data-topic-sort] button:hover { background:#eef1f5; color:var(--ink); }
.rec-table th[data-sort] button:focus-visible,
.topics-table th[data-topic-sort] button:focus-visible { outline:2px solid var(--blue); outline-offset:-2px; }
.rec-table th[data-sort] i,
.topics-table th[data-topic-sort] i { font-style:normal; font-size:9px; line-height:1; color:#b3bac5; flex:none; }
.rec-table th[data-sort].sorted,
.topics-table th[data-topic-sort].sorted { color:var(--ink); background:#eef1f5; }
.rec-table th[data-sort].sorted i,
.topics-table th[data-topic-sort].sorted i { color:var(--blue); }
/* The priority column is 74px and centred. The shared 18px side padding would
   leave about 38px for the label and its indicator, so it gets its own. */
.topics-table th.topic-priority-col button { padding:14px 6px; gap:4px; justify-content:center; }

/* The citation count in the domain view is the way into that domain's URLs, so
   it has to look like one - a bare number reads as text and nobody clicks it. */
.citation-drill { border:0; background:transparent; padding:0; font:inherit; color:var(--blue);
  font-weight:700; cursor:pointer; border-bottom:1px dashed #a9c2ef; }
.citation-drill:hover { color:#184fae; border-bottom-style:solid; }
.citation-drill:focus-visible { outline:2px solid var(--blue); outline-offset:2px; border-radius:3px; }
/* .source-footer is already a centred flex row; the scan adds buttons beside
   Load more, so it only needs the gap. */
.source-footer { gap:8px; align-items:center; }

/* Period-over-period chips. Colour tracks the server's verdict, not the sign:
   fewer zero-citation pages and more citations are both wins and move opposite
   ways. A `soft` chip is a count the population shift can explain. */
.rec-compare-toggle { display:flex; align-items:center; gap:7px; padding:10px 13px; border:1px solid var(--line);
  background:#fff; border-radius:8px; color:var(--ink); font-size:12px; font-weight:650; cursor:pointer; white-space:nowrap; }
.rec-compare-toggle:hover { border-color:#b9c8e8; background:#f8faff; }
.rec-compare-toggle input { accent-color:var(--blue); margin:0; }
.rec-stat-line { display:flex; align-items:baseline; gap:9px; flex-wrap:wrap; }
.rec-stat-line strong { margin:9px 0 5px; }
.rec-delta-chip { display:inline-block; border-radius:999px; padding:3px 8px; font-size:10px; font-weight:700;
  white-space:nowrap; font-variant-numeric:tabular-nums; cursor:help; }
.rec-delta-chip.good { color:#147558; background:var(--green-soft); }
.rec-delta-chip.bad { color:#9c2f22; background:var(--red-soft); }
.rec-delta-chip.flat { color:#5f6875; background:#f1f3f6; }
.rec-delta-chip.unknown { color:#98a1ae; background:#f4f5f7; font-weight:600; }
/* Muted, because the movement is mostly the page count changing. */
.rec-delta-chip.soft { background:transparent; border:1px dashed currentColor; opacity:.75; }
.rec-compare-strip { display:grid; grid-template-columns:repeat(auto-fit,minmax(158px,1fr)); background:#fff;
  border:1px solid var(--line); border-radius:10px; overflow:hidden; margin:0 0 16px; }
.rec-compare-strip article { padding:14px 16px; border-right:1px solid var(--line); }
.rec-compare-strip article:last-child { border-right:0; }
.rec-compare-strip span { display:block; color:var(--muted); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.04em; }
.rec-compare-strip strong { display:block; margin:8px 0 6px; font-size:20px; letter-spacing:-.03em; font-variant-numeric:tabular-nums; }

/* GEO Guide. Measured cells are flat text, authored cells are inputs - the
   contrast is the product, so it is drawn rather than implied. */
.geo-add { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(300px,.85fr); gap:0;
  background:#fff; border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-bottom:20px; }
.geo-add-main { padding:20px 22px; border-right:1px solid var(--line); }
.geo-add-side { padding:20px 22px; }
.geo-add label { display:block; color:#4d5664; font-size:12px; font-weight:700; margin-bottom:9px; }
.geo-add label small { display:block; color:var(--muted); font-size:10px; font-weight:500; margin-top:3px; }
.geo-add textarea { width:100%; resize:vertical; padding:11px 13px; border:1px solid var(--line);
  border-radius:8px; outline:0; font:12px/1.5 ui-monospace,monospace; }
.geo-add textarea:focus, .geo-add input:focus { border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }
.geo-add-actions { display:flex; align-items:center; gap:12px; margin-top:12px; }
.geo-add-actions .filter-note { margin:0; }
.geo-candidates { display:grid; gap:6px; max-height:190px; overflow:auto; margin-top:10px; }
.geo-candidate { display:block; width:100%; text-align:left; padding:9px 11px; border:1px solid var(--line);
  border-radius:8px; background:#fff; cursor:pointer; }
.geo-candidate:hover { border-color:#8bb0f9; background:#f7faff; }
.geo-candidate strong { display:block; font-size:12px; line-height:1.4; }
.geo-candidate small { display:block; color:var(--muted); font-size:10px; margin-top:3px; overflow-wrap:anywhere; }
.geo-table { min-width:820px; }
.geo-table th.num, .geo-table td.num { text-align:right; font-variant-numeric:tabular-nums; }
.geo-actions-col { width:250px; }
.geo-row td { vertical-align:top; }
.geo-row .rec-band { margin-right:5px; }
.rec-geo-col { width:100px; }

.geo-drawer { width:min(980px,97vw); }
.geo-evidence { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-bottom:24px; }
.geo-evidence article { padding:13px 15px; border-right:1px solid var(--line); }
.geo-evidence article:last-child { border-right:0; }
.geo-evidence span { display:block; color:var(--muted); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.04em; }
.geo-evidence strong { display:block; margin-top:7px; font-size:15px; overflow-wrap:anywhere; }
.geo-modal-foot { position:sticky; bottom:0; display:flex; align-items:center; gap:9px; padding:16px 28px;
  border-top:1px solid var(--line); background:#fff; }
.geo-modal-foot .filter-note { margin:0; }
@media (max-width:1100px) {
  .geo-add { grid-template-columns:1fr; }
  .geo-add-main { border-right:0; border-bottom:1px solid var(--line); }
}

/* GEO Guide, read as a report. The workbook shape belongs in the download, not
   on screen: a health score, findings as one-liners, measured facts as
   colour-coded rows, and suggested copy beside the current copy. */
.geo-body { padding:22px 26px 26px; display:grid; gap:16px; min-width:0; }
.geo-body > * { min-width:0; }
.geo-card { border:1px solid var(--line); border-radius:11px; background:#fff; padding:17px 19px; }
.geo-card h3 { margin:0 0 4px; font-size:14px; display:flex; align-items:center; gap:8px; }
.geo-card h3 .count-pill { margin:0; font-size:10px; padding:3px 8px; }
.geo-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.geo-card-copy { margin:4px 0 13px; color:var(--muted); font-size:11.5px; line-height:1.5; }
.geo-card-copy.warn { color:#8a5c05; }
.geo-draft-controls { display:flex; align-items:center; gap:7px; }
.geo-draft-controls select { border:1px solid var(--line); border-radius:7px; padding:8px 9px;
  background:#fff; color:var(--ink); font-size:11px; font-weight:650; }
.geo-draft-controls .primary { padding:9px 14px; font-size:12px; }

/* Health: a score, a segmented bar, and the finding counts. */
.geo-health { display:grid; grid-template-columns:minmax(0,1fr) auto; min-width:0; gap:18px; align-items:center;
  border:1px solid var(--line); border-radius:11px; background:#fff; padding:17px 19px; }
.geo-health-top { display:flex; align-items:baseline; justify-content:space-between; }
.geo-health-top span { color:var(--muted); font-size:12px; font-weight:650; }
.geo-health-top strong { font-size:27px; letter-spacing:-.04em; font-variant-numeric:tabular-nums; }
.geo-health-top strong small { font-size:13px; color:#9aa1ad; font-weight:600; margin-left:1px; }
.geo-health-top .good { color:var(--green); } .geo-health-top .warn { color:var(--amber); }
.geo-health-top .bad { color:var(--red); }
.geo-health-bar { display:flex; gap:2px; margin:11px 0 10px; }
.geo-health-bar i { flex:1; height:8px; border-radius:2px; background:#e8eaef; }
.geo-health-bar i.good { background:var(--green); } .geo-health-bar i.warn { background:var(--amber); }
.geo-health-bar i.bad { background:var(--red); } .geo-health-bar i.off { background:#e8eaef; }
.geo-health-chips { color:#4a505c; font-size:11.5px; }
.geo-health-side { display:flex; gap:20px; padding-left:20px; border-left:1px solid var(--line); }
.geo-health-side span { display:block; color:var(--muted); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.04em; }
.geo-health-side strong { display:block; margin-top:5px; font-size:19px; font-variant-numeric:tabular-nums; }
.geo-dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:5px; vertical-align:baseline; }
.geo-dot.hi { background:var(--red); } .geo-dot.md { background:var(--amber); }
.geo-dot.lo { background:#9aa2b1; } .geo-dot.ok { background:var(--green); }

.geo-findings { display:grid; gap:2px; }
.geo-finding { display:grid; grid-template-columns:14px minmax(0,1fr); gap:8px; align-items:start;
  padding:9px 8px; border-radius:7px; }
.geo-finding:hover { background:#f7f8fa; }
.geo-finding .geo-dot { margin-top:5px; }
.geo-finding > div { min-width:0; }
.geo-finding strong { display:block; font-weight:500; font-size:12.5px; line-height:1.5;
  overflow-wrap:anywhere; }
.geo-finding small { display:block; color:var(--muted); font-size:10px; margin-top:3px; }

.geo-metrics { display:grid; gap:1px; }
.geo-metric { display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:9px 2px; border-bottom:1px solid #f1f3f6; }
.geo-metric:last-child { border-bottom:0; }
.geo-metric span { color:#4a505c; font-size:12.5px; }
.geo-metric b { font-family:ui-monospace,monospace; font-size:12px; font-weight:600; text-align:right;
  max-width:58%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.geo-metric b.good { color:#147558; } .geo-metric b.warn { color:#8a5c05; } .geo-metric b.bad { color:#9c2f22; }

/* Suggested copy: what is there now, and what to put instead. */
.geo-copy { display:grid; gap:14px; }
.geo-copy-block { display:grid; gap:6px; }
.geo-copy-head { display:flex; align-items:center; gap:8px; }
.geo-copy-head > span:first-child { color:var(--muted); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.04em; margin-right:auto; }
.geo-current { margin:0; padding:8px 10px; background:#f7f8fa; border-radius:7px; color:#6a727f;
  font-size:11.5px; line-height:1.5; overflow-wrap:anywhere; }
.geo-current em { font-style:normal; font-weight:700; color:#9aa1ad; font-size:9.5px;
  text-transform:uppercase; letter-spacing:.05em; margin-right:6px; }
.geo-copy input, .geo-copy textarea, .geo-faq input, .geo-faq textarea {
  width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:8px; outline:0;
  font:13px/1.55 inherit; background:#fff; color:var(--ink); resize:vertical; }
.geo-copy input:focus, .geo-copy textarea:focus, .geo-faq input:focus, .geo-faq textarea:focus {
  border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }
.geo-count { font-family:ui-monospace,monospace; font-size:10px; color:#9aa1ad; }
.geo-count.good { color:#147558; } .geo-count.warn { color:#8a5c05; }
.geo-badge { border-radius:999px; padding:3px 8px; font-size:9px; font-weight:750; white-space:nowrap; }
.geo-badge.good { color:#147558; background:var(--green-soft); }
.geo-badge.warn { color:#8a5c05; background:var(--amber-soft); }
.geo-badge.bad { color:#9c2f22; background:var(--red-soft); }

.geo-faq { display:grid; gap:13px; }
.geo-faq-row { display:grid; gap:6px; padding:12px; border:1px solid var(--line); border-radius:9px; background:#fcfcfd; }
.geo-remove { border:0; background:transparent; color:#b3bac5; font-size:17px; line-height:1; cursor:pointer; padding:0 3px; }
.geo-remove:hover { color:var(--red); }
.geo-add-row { margin-top:12px; font-size:12px; padding:8px 13px; }

.geo-keywords { display:grid; gap:1px; }
.geo-kw-head, .geo-kw-row { display:grid; grid-template-columns:minmax(0,2.2fr) repeat(4,minmax(52px,.7fr)); gap:10px; align-items:center; }
.geo-kw-head { color:var(--muted); font-size:9.5px; font-weight:700; text-transform:uppercase;
  letter-spacing:.04em; padding-bottom:5px; }
.geo-kw-row { padding:8px 0; border-top:1px solid #f1f3f6; font-variant-numeric:tabular-nums; font-size:12px; }
.geo-kw-row strong { font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.geo-kw-row .muted { color:var(--muted); font-size:10.5px; }

.geo-health-col { width:78px; }
.geo-score { width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
  font-weight:700; font-size:13px; color:#fff; font-variant-numeric:tabular-nums; }
.geo-score.good { background:var(--green); } .geo-score.warn { background:var(--amber); }
.geo-score.bad { background:var(--red); }
.geo-findings-cell { font-size:12px; color:#4a505c; font-variant-numeric:tabular-nums; }
.geo-findings-cell .muted { color:var(--muted); }
@media (max-width:820px) {
  .geo-health { grid-template-columns:1fr; }
  .geo-health-side { border-left:0; padding-left:0; border-top:1px solid var(--line); padding-top:14px; }
  .geo-kw-head, .geo-kw-row { grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(44px,.7fr)); }
  .geo-kw-head span:last-child, .geo-kw-row span:last-child { display:none; }
}
.geo-direct { margin-left:auto; color:var(--blue); font-size:11px; font-weight:650; text-decoration:none; white-space:nowrap; }
.geo-direct:hover { text-decoration:underline; }
.geo-candidate { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:9px; align-items:center;
  width:100%; padding:9px 11px; border:1px solid var(--line); border-radius:8px; background:#fff;
  cursor:pointer; text-align:left; }
.geo-candidate:hover { border-color:#8bb0f9; background:#f7faff; }
.geo-candidate.listed { background:#f7f8fa; cursor:default; opacity:.72; }
.geo-candidate input { accent-color:var(--blue); margin:0; }
.geo-candidate span { min-width:0; }
.geo-listed { font-style:normal; color:var(--muted); font-size:9px; font-weight:700;
  text-transform:uppercase; letter-spacing:.04em; }
.geo-pick-actions { display:flex; align-items:center; gap:9px; margin-top:11px; flex-wrap:wrap; }
.geo-pick-actions .primary { padding:9px 14px; font-size:12px; }
.geo-pick-actions .secondary-button { padding:9px 13px; font-size:12px; }
.geo-pick-actions .filter-note { margin:0; }

/* A bulk build in flight. Sequential, so the bar is a real count of finished
   pages rather than an animation. */
.geo-progress { display:flex; align-items:center; gap:13px; margin-bottom:16px; padding:12px 16px;
  background:#fff; border:1px solid var(--line); border-radius:10px; }
.geo-progress-bar { flex:1; height:7px; border-radius:4px; background:#eef0f4; overflow:hidden; }
.geo-progress-bar i { display:block; height:100%; width:0; border-radius:4px; background:var(--blue);
  transition:width .3s ease; }
.geo-progress span { color:#4a505c; font-size:12px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.geo-progress .secondary-button { padding:7px 12px; font-size:11px; }

/* ---- Tracking ---------------------------------------------------------- */
.tracking-table { min-width:1080px; }
.tracking-date-col { width:132px; }
.tracking-sig-col { width:210px; }
.tracking-actions-col { width:150px; text-align:right; }
.tracking-date-input { height:34px; border:1px solid var(--line); border-radius:7px; padding:0 8px; background:#fff; color:var(--ink); font-variant-numeric:tabular-nums; }
.tracking-file { display:inline-flex; align-items:center; cursor:pointer; }
.track-page { display:grid; gap:2px; min-width:0; }
.track-page strong { font-size:13px; }
.track-page a { color:var(--muted); font-size:11px; text-decoration:none; overflow-wrap:anywhere; }
.track-page a:hover { color:var(--blue); text-decoration:underline; }
.track-origin { color:#9aa1ad; font-size:10px; text-transform:uppercase; letter-spacing:.05em; }
.track-cell { display:grid; gap:5px; }
.track-cell-off small { color:var(--muted); font-size:11px; }
.track-cell-top { display:flex; align-items:center; gap:7px; }
.track-cell-top strong { font-size:18px; letter-spacing:-.03em; font-variant-numeric:tabular-nums; }
/* A bounded reading must never look like a measured one. */
.track-cell-top strong.bounded { color:var(--muted); font-weight:600; }
.track-cell-top small { color:var(--muted); font-size:10px; }
.track-cell-row { display:flex; align-items:center; gap:7px; font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; }
.track-engines { color:#9aa1ad; font-size:10px; }
.track-spark { width:92px; height:24px; flex:none; }
.track-spark path { fill:none; stroke:var(--blue); stroke-width:1.6; }
.track-spark .track-spark-bound { fill:none; stroke:#b3bac5; stroke-width:1.2; }
.track-spark-empty { color:#c3c9d4; font-size:11px; }
.track-verdict { display:inline-flex; align-items:center; gap:4px; align-self:start; border-radius:999px;
  padding:2px 8px; font-size:10.5px; font-weight:650; white-space:nowrap; font-variant-numeric:tabular-nums; }
.track-verdict.good { background:var(--green-soft); color:var(--green); }
.track-verdict.bad { background:var(--red-soft); color:var(--red); }
.track-verdict.flat { background:#eceef2; color:var(--muted); }
/* Drawn from a ceiling, not a measurement - so it is outlined, not filled. */
.track-verdict.bounded { background:transparent; border:1px dashed currentColor; }
.track-row.open > td { background:var(--blue-soft); }
.track-detail-row > td { padding:0; background:#fbfcfd; }
.track-detail { padding:18px 20px 20px; border-bottom:1px solid var(--line); }
.track-chart { width:100%; height:210px; }
.track-chart .track-rule { stroke:var(--amber); stroke-width:1.5; stroke-dasharray:4 3; }
.track-chart .track-rule-label { fill:var(--amber); font-size:10px; font-weight:650; }
.track-legend { display:flex; flex-wrap:wrap; gap:16px; margin-top:6px; color:var(--muted); font-size:11px; }
.track-legend span { display:inline-flex; align-items:center; gap:6px; }
.track-legend small { color:#9aa1ad; }
.track-legend i { width:14px; height:3px; border-radius:2px; display:inline-block; }
.track-legend i.dashed { background:repeating-linear-gradient(90deg,#c3c9d4 0 4px,transparent 4px 7px); }
.track-legend i.hollow { width:9px; height:9px; border-radius:50%; background:transparent; border:1.5px dashed #b3bac5; }
.track-detail-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; margin-top:16px; }
.track-detail-grid article { background:#fff; border:1px solid var(--line); border-radius:10px; padding:11px 13px; display:grid; gap:7px; }
.track-detail-grid span { color:var(--muted); font-size:11px; font-weight:650; }
/* The badge Recommendations and the GEO Optimizer wear once a page is tracked. */
.track-badge { display:inline-flex; align-items:center; gap:4px; background:var(--blue-soft); color:var(--blue);
  border-radius:999px; padding:2px 8px; font-size:10px; font-weight:700; white-space:nowrap; }
.filter-note.bad { color:var(--red); }
.track-metric { min-width:56px; color:#9aa1ad; font-size:10px; text-transform:uppercase; letter-spacing:.05em; }

/* ---- Projects ---------------------------------------------------------- */
.projects-list { display:grid; gap:12px; }
.proj-card { background:#fff; border:1px solid var(--line); border-radius:12px; padding:15px 17px; display:grid; gap:11px; }
.proj-card.active { border-color:var(--blue); box-shadow:0 0 0 3px var(--blue-soft); }
.proj-head { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.proj-title { display:flex; align-items:center; gap:9px; min-width:0; flex-wrap:wrap; }
.proj-title strong { font-size:16px; letter-spacing:-.02em; }
.proj-title code { color:var(--muted); background:#eceef2; border-radius:5px; padding:2px 6px; font-size:11px; }
.proj-actions { display:flex; gap:6px; flex:none; }
.gsc-chip.button.danger { color:var(--red); }
.proj-meta { display:flex; flex-wrap:wrap; align-items:center; gap:9px 18px; color:var(--muted); font-size:11.5px; }
.proj-sources { display:flex; gap:8px; flex-wrap:wrap; }
.proj-source { display:inline-flex; align-items:center; gap:6px; background:#f4f6f9; border-radius:999px; padding:3px 10px; font-size:11px; }
.proj-source strong { color:var(--ink); font-size:11px; }
.proj-dot { width:7px; height:7px; border-radius:50%; display:inline-block; }
.proj-dot.good { background:var(--green); } .proj-dot.warn { background:var(--amber); }
.proj-rag code, .proj-meta code { background:#eceef2; border-radius:4px; padding:1px 5px; }
.proj-warnings { margin:0; padding-left:17px; color:var(--amber); font-size:11.5px; display:grid; gap:4px; }
.proj-warnings li::marker { color:var(--amber); }
/* The editor */
.project-card { width:min(760px,96vw); }
.project-card .modal-section h3 { margin:0 0 6px; font-size:13px; }
.proj-hint { color:var(--muted); font-size:11.5px; line-height:1.55; margin:0 0 11px; }
.proj-hint.bad { color:var(--red); }
.proj-hint code, .proj-env-hint code { background:#eceef2; border-radius:4px; padding:1px 5px; font-size:11px; }
.proj-field { display:grid; gap:5px; margin-bottom:13px; }
.proj-field > span { font-size:12px; font-weight:650; }
.proj-field > small { color:var(--muted); font-size:11px; line-height:1.5; }
.proj-field input, .proj-field textarea, .proj-field select {
  border:1px solid var(--line); border-radius:8px; padding:9px 11px; background:#fff; color:var(--ink); width:100%; }
.proj-field textarea { resize:vertical; font-size:13px; line-height:1.6; }
.proj-source-row { display:grid; grid-template-columns:150px minmax(0,1fr) auto auto; gap:8px; align-items:center; margin-bottom:8px; }
.proj-source-row input[type=text] { border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-size:12px; }
.proj-source-row input:disabled { background:#f4f6f9; color:#b3bac5; }
.proj-check { display:flex; align-items:center; gap:7px; font-size:12px; font-weight:650; }
.proj-env-hint { background:var(--blue-soft); border-radius:9px; padding:10px 13px; color:var(--ink); font-size:11.5px; line-height:1.6; }
.proj-env-hint.bad { background:var(--red-soft); color:var(--red); }
.proj-env-hint ul { margin:7px 0 0; padding-left:17px; display:grid; gap:4px; }
.proj-form-actions { display:flex; align-items:center; gap:9px; padding:4px 0 8px; }
.proj-form-actions .filter-note { margin:0 auto 0 0; }
@media (max-width:720px) { .proj-source-row { grid-template-columns:1fr; } }
.proj-source-sep { color:#c3c9d4; }

/* Display settings, on the API explorer page. One row per switch; the list is
   rendered from the server's field list, so a second switch needs no CSS. */
.settings-surface { padding:22px 24px; margin-bottom:16px; }
.settings-head h2 { margin:0; font-size:15px; }
.settings-head p { margin:6px 0 0; color:var(--muted); font-size:11px; }
.settings-list { display:grid; gap:18px; margin-top:16px; }
.settings-group { display:grid; gap:8px; }
.settings-group-head { display:flex; align-items:baseline; justify-content:space-between; }
.settings-group-head h3 { margin:0; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
.settings-count { color:var(--muted); font-size:10px; font-weight:700; }
.settings-row { display:grid; grid-template-columns:18px 1fr; align-items:start; gap:12px; padding:13px 15px; border:1px solid var(--line); border-radius:9px; cursor:pointer; }
.settings-row:hover { border-color:#b9c8e8; background:#f8faff; }
.settings-row input { margin-top:2px; accent-color:var(--blue); width:16px; height:16px; }
.settings-copy strong { display:block; font-size:12px; }
.settings-copy small { display:block; margin-top:5px; color:var(--muted); font-size:11px; line-height:1.5; }
.settings-surface .filter-note { margin:12px 0 0; }

/* The keyword grid without its Search Console column: one track fewer, so the
   remaining four keep their widths instead of stretching over the gap. */
.geo-kw-head.no-metrics, .geo-kw-row.no-metrics { grid-template-columns:minmax(0,2.2fr) repeat(3,minmax(52px,.7fr)); }

/* Topic priority. A narrow first column so the topic name still leads the row;
   the spinners are hidden because the box is 2 characters wide and the arrows
   would take most of it. */
.topic-priority-col { width:74px; text-align:center; }
.topics-table th.topic-priority-col { font-size:9.5px; }
.topic-priority { width:52px; padding:6px 4px; text-align:center; border:1px solid var(--line);
  border-radius:7px; background:#fff; color:var(--ink); font-weight:700; font-variant-numeric:tabular-nums; }
.topic-priority::-webkit-outer-spin-button, .topic-priority::-webkit-inner-spin-button {
  -webkit-appearance:none; margin:0; }
.topic-priority { -moz-appearance:textfield; }
.topic-priority::placeholder { color:#c3c9d4; font-weight:600; }
.topic-priority:hover { border-color:#b9c8e8; }
.topic-priority:focus { outline:0; border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }
.topic-priority.is-bad { border-color:var(--red); box-shadow:0 0 0 3px var(--red-soft); }

/* Topic priority in the Recommendations table, and the fourth score segment. */
.rec-c4 { background:#8b5cf6; }
.rec-priority-col { width:78px; text-align:center; }
.rec-priority { display:inline-flex; align-items:center; justify-content:center; min-width:28px;
  padding:4px 7px; border-radius:999px; background:#f1ecfe; color:#5b3fb8;
  font-weight:800; font-size:12px; font-variant-numeric:tabular-nums; }
.rec-priority.none { background:transparent; color:#c3c9d4; font-weight:600; }

/* AI search volume, in the prompt drawer below the Google section. */
.ai-kw-row { display:flex; align-items:center; gap:9px; flex-wrap:wrap; margin-bottom:12px; }
.ai-kw-label { color:var(--muted); font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.ai-kw-input { min-width:190px; border:1px solid var(--line); border-radius:7px; padding:8px 10px;
  background:#fff; color:var(--ink); font-weight:650; }
.ai-kw-input:focus { outline:0; border-color:#8bb0f9; box-shadow:0 0 0 3px #eaf1ff; }
.ai-kw-tag { background:#eef3fc; color:#455a83; border-radius:999px; padding:4px 9px; font-size:10px; font-weight:700; }
.ai-kw-tag.is-manual { background:#e8f6ee; color:#1f7a46; }
.ai-kw-tag.is-auto { background:#eef3fc; color:#2c5bb8; }
.ai-kw-tag.is-fallback { background:#fdf3e3; color:#8a5a12; }
.ai-head { display:flex; align-items:center; gap:14px; margin-bottom:6px; }
.ai-head strong { font-size:26px; font-variant-numeric:tabular-nums; }
.ai-head small { display:block; color:var(--muted); font-size:10px; }
.ai-chart { width:100%; height:auto; }
.ai-chart circle { fill:var(--blue); }
.ai-empty { background:#f7f8fa; border:1px solid var(--line); border-radius:9px; padding:13px 15px; }
.ai-empty strong { display:block; font-size:12px; }
.ai-empty p { margin:6px 0 0; color:var(--muted); font-size:11px; line-height:1.55; }
.ai-pending { display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:#f7f8fa; border:1px solid var(--line); border-radius:9px; padding:12px 15px; }
.ai-pending span { color:var(--muted); font-size:11px; }

/* Headline visibility tiles on the Visibility page. */
.kpi-panel { padding:20px 22px; margin-bottom:16px; }
.kpi-tiles { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:14px; }
.kpi-tiles .kpi { border:1px solid var(--line); border-radius:10px; padding:15px 16px; background:#fff; }
.kpi-tiles .kpi > div { display:flex; align-items:baseline; gap:9px; margin:7px 0 5px; }
.kpi-tiles .kpi strong { font-size:26px; font-variant-numeric:tabular-nums; }
.kpi-delta { font-size:11px; font-weight:800; font-style:normal; }
.kpi-delta.good { color:var(--green); } .kpi-delta.bad { color:var(--red); }
.kpi-topics { margin-top:16px; }
.kpi-topic-table { width:100%; }
.kpi-topic-table td small { color:var(--muted); font-size:9.5px; }
.kpi-panel .filter-note { margin:12px 0 0; }
@media (max-width:1100px) { .kpi-tiles { grid-template-columns:1fr 1fr; } }

/* ---------------------------------------------------------------- Sign-in */
.user-chip { display:flex; align-items:center; gap:10px; padding:4px 6px 4px 4px; border:1px solid var(--line); border-radius:999px; background:#fff; }
.user-avatar { width:30px; height:30px; display:grid; place-items:center; border-radius:50%; background:var(--blue-soft); color:var(--blue); font-weight:800; font-size:12px; flex:0 0 auto; }
.user-meta { display:flex; flex-direction:column; line-height:1.15; }
.user-meta strong { font-size:12px; max-width:160px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.user-meta small { color:var(--muted); font-size:10px; }
.user-signout { font-size:11px; color:var(--muted); text-decoration:none; padding:4px 8px; border-radius:999px; }
.user-signout:hover { background:var(--bg); color:var(--ink); }
.users-list { display:grid; gap:12px; }
.user-card { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:16px 18px; display:grid; gap:12px; }
.user-card.pending { border-color:var(--amber); box-shadow:0 0 0 3px #fff4d6; }
.user-card-head { display:flex; align-items:center; gap:12px; }
.user-card-id { flex:1; min-width:0; }
.user-card-id strong { display:block; font-size:14px; }
.user-card-id small { color:var(--muted); font-size:11px; }
.role-badge { font-size:11px; font-weight:700; padding:3px 9px; border-radius:999px; background:var(--bg); color:var(--muted); }
.role-badge.role-admin { background:var(--blue-soft); color:var(--blue); }
.role-badge.role-editor { background:#ddf6ee; color:#12805e; }
.role-badge.role-pending { background:#fff4d6; color:#8a5a00; }
.user-card-body { display:grid; grid-template-columns:180px 1fr; gap:14px 18px; align-items:start; }
.user-field { display:grid; gap:6px; font-size:11px; color:var(--muted); font-weight:600; }
.user-field.wide { grid-column:1 / -1; }
.user-field select,.user-field input { border:1px solid var(--line); border-radius:7px; padding:7px 9px; font:inherit; color:var(--ink); background:#fff; }
.user-accounts { display:flex; flex-wrap:wrap; gap:8px 14px; }
.user-account { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--ink); font-weight:500; }
.user-card-foot { display:flex; justify-content:space-between; align-items:center; gap:12px; border-top:1px solid var(--line); padding-top:10px; }
.user-card-foot small { color:var(--muted); font-size:11px; }
.user-actions { display:flex; gap:8px; }
.secondary-button.danger { color:var(--red); }
.pending-pill { background:#fff4d6; color:#8a5a00; }
/* Project editor: the source row is a 4-column grid; the pasted key takes a second line. */
.proj-key-spacer { grid-column:1; }
.proj-source-row input[data-source-key] { grid-column:2 / 4; min-width:0; border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:12px; }
.proj-source-row [data-source-savekey] { grid-column:4; }
/* API keys panel on the Projects page. */
.keys-surface { padding:22px 24px; margin-bottom:16px; }
.keys-list { display:grid; gap:18px; margin-top:14px; }
.key-group { display:grid; gap:8px; }
.key-row { display:grid; grid-template-columns:minmax(220px,1.4fr) minmax(160px,auto) minmax(200px,1fr) auto; gap:12px; align-items:center; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--surface); }
.key-id { display:grid; gap:2px; min-width:0; }
.key-id strong { font-size:13px; }
.key-id code { font-size:11px; color:var(--muted); }
.key-id small { color:var(--muted); font-size:11px; }
.key-status { font-size:11px; font-weight:700; padding:4px 10px; border-radius:999px; background:var(--bg); color:var(--muted); white-space:nowrap; justify-self:start; }
.key-status.ok { background:#ddf6ee; color:#12805e; }
.key-status.env { background:var(--blue-soft); color:var(--blue); }
.key-status.missing { background:#fff4d6; color:#8a5a00; }
.key-status.bad { background:#fdecec; color:#8a1f1f; }
.key-row input[data-key-input] { border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:12px; min-width:0; }
.key-actions { display:flex; gap:6px; }
@media (max-width: 1100px) { .key-row { grid-template-columns:1fr 1fr; } .key-id { grid-column:1 / -1; } }

/* ---------------------------------------------------------- Prompt search
 *
 * The search used to answer at topic level only: a query matching one prompt
 * inside a topic rendered the collapsed topic row and its full prompt count,
 * so "36 prompts" was the whole answer to "where is this prompt". The flat
 * table below is the prompt-level answer, and `mark` is how a row says which
 * words earned it.
 */
mark { background:#fff2a8; color:inherit; border-radius:2px; padding:0 1px; }
.primary-button { border:1px solid var(--blue); background:var(--blue); color:#fff; padding:10px 15px; border-radius:8px; font-weight:700; }
.primary-button:disabled { opacity:.5; cursor:default; }

.advanced-panel { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin:-4px 0 16px; display:flex; flex-direction:column; gap:14px; }
.advanced-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.advanced-row.bulk-row { align-items:flex-end; }
.advanced-label { color:var(--muted); font-size:10px; font-weight:750; text-transform:uppercase; letter-spacing:.08em; }
.advanced-hint { color:var(--muted); font-size:11px; }
.bulk-field { flex:1; min-width:280px; display:flex; flex-direction:column; gap:6px; }
.bulk-field textarea { width:100%; border:1px solid var(--line); border-radius:8px; padding:9px 11px; font-size:12.5px; line-height:1.5; resize:vertical; outline:0; }
.bulk-field textarea:focus-visible { border-color:var(--blue); box-shadow:0 0 0 3px var(--blue-soft); }
.bulk-actions { display:flex; gap:7px; }

.bulk-results { border-top:1px solid var(--line); padding-top:12px; display:flex; flex-direction:column; gap:9px; }
.bulk-summary { display:flex; align-items:center; gap:9px; flex-wrap:wrap; font-size:12px; }
.bulk-pill { border-radius:999px; padding:3px 10px; font-size:11px; font-weight:700; }
.bulk-pill.found { color:#1a7f5f; background:var(--green-soft); }
.bulk-pill.missing { color:#a8392c; background:var(--red-soft); }
.bulk-pill.ambiguous { color:#8a6200; background:var(--amber-soft); }
.bulk-list { max-height:260px; overflow:auto; display:flex; flex-direction:column; gap:1px; }
.bulk-entry { display:grid; grid-template-columns:18px 1fr auto auto; gap:9px; align-items:start; padding:6px 8px; border-radius:6px; font-size:12px; }
.bulk-entry:nth-child(odd) { background:#fafbfc; }
.bulk-entry i { font-style:normal; font-weight:800; line-height:1.5; }
.bulk-entry.found i { color:var(--green); }
.bulk-entry.missing i { color:var(--red); }
.bulk-entry.ambiguous i { color:var(--amber); }
.bulk-entry-line { min-width:0; }
.bulk-entry-query { display:block; overflow-wrap:anywhere; }
.bulk-entry-hit { display:block; color:var(--muted); font-size:11px; margin-top:2px; overflow-wrap:anywhere; }
.bulk-entry-topic { color:var(--muted); font-size:11px; white-space:nowrap; }

.prompt-flat-table td { vertical-align:top; }
.prompt-flat-row { cursor:pointer; }
.prompt-flat-row:hover { background:#f7f8fa; }
.prompt-flat-row:focus-visible { outline:2px solid var(--blue); outline-offset:-2px; }
.flat-prompt-text { display:block; line-height:1.55; overflow-wrap:anywhere; }
.flat-topic { color:var(--muted); font-size:12px; white-space:nowrap; }
.flat-brand-col { width:110px; }
.flat-brand { border-radius:999px; padding:2px 8px; font-size:9.5px; font-weight:750; white-space:nowrap; }
.flat-brand.own { color:#1a56b8; background:var(--blue-soft); }
.flat-brand.competitor { color:#8a6200; background:var(--amber-soft); }
.flat-brand.none { color:#8b93a1; background:#f2f4f8; }
.flat-open { color:var(--muted); font-size:15px; }
.topic-match-count { color:var(--blue); font-weight:750; }
.topic-match-count small { color:var(--muted); font-weight:600; }

/* The bulk-lookup filter: a filter with no visible control, so its banner is
 * the only thing telling the reader why the table is short. */
.link-button { border:0; background:transparent; color:var(--blue); font-size:11px; font-weight:700; padding:0; text-decoration:underline; }
.bulk-note { display:flex; align-items:center; gap:9px; }
.bulk-entry.is-clickable { cursor:pointer; }
.bulk-entry.is-clickable:hover { background:var(--blue-soft); }
.bulk-entry.is-clickable:focus-visible { outline:2px solid var(--blue); outline-offset:-2px; }
.bulk-entry.is-focused { background:var(--blue-soft); box-shadow:inset 2px 0 0 var(--blue); }
.bulk-entry-action { color:var(--blue); font-size:10px; font-weight:700; white-space:nowrap; min-width:84px; text-align:right; }
.bulk-entry.missing .bulk-entry-action { color:var(--muted); }

/* Limy answers: five engines where SearchInsight has one, so the section
   needs a picker. The stub marker is deliberately visible - an engine that
   said nothing is a finding, not an absence to hide. */
.limy-answer-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.limy-answer-tab { font-size: 12px; padding: 4px 10px; }
.limy-answer-tab.on { background: var(--accent, #3978f6); color: #fff; border-color: transparent; }
.limy-answer-pane[hidden] { display: none; }

/* ---- Phone ------------------------------------------------------------- */
/* Below 640px the desktop shell does not fit: the 70px rail plus a header
   that never wraps and a 680px drawer left the document wider than the
   viewport, so iOS zoomed the whole page out and fixed elements floated
   off-screen. Three moves: the nav becomes a bottom bar, the header stacks,
   and every table scrolls inside its own wrapper so nothing can widen the
   page. The drawers take the whole screen. */
@media (max-width:640px) {
  html, body { overflow-x:hidden; }
  .sidebar { inset:auto 0 0 0; width:auto; height:58px; padding:0 6px env(safe-area-inset-bottom); flex-direction:row; align-items:center; border-right:0; border-top:1px solid var(--line); overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
  .sidebar::-webkit-scrollbar { display:none; }
  .sidebar .logo { display:none; }
  .sidebar nav { display:flex; align-items:center; gap:2px; height:100%; margin:0; }
  .sidebar nav p { display:none; }
  .nav-item { width:auto; flex:none; padding:9px 11px; }
  .app-shell { margin-left:0; padding-bottom:calc(72px + env(safe-area-inset-bottom)); }
  .app-header { position:static; flex-direction:column; align-items:stretch; gap:10px; padding:12px 14px; }
  .account-selector select { min-width:0; width:100%; }
  .header-actions { justify-content:flex-start; gap:8px; }
  .header-actions label { flex:1 1 45%; min-width:0; }
  .header-actions select { flex:1; min-width:0; max-width:100%; }
  .user-chip { width:100%; }
  main { padding:16px 12px; }
  .page-title { display:block; }
  .page-title h1 { font-size:22px; }
  .page-actions { justify-content:flex-start; margin-top:10px; }
  .search { width:100%; }
  .toolbar > * { max-width:100%; }
  .filter-control { height:auto; min-height:40px; flex:1 1 100%; }
  .filter-control select { max-width:100%; flex:1; }
  .source-topic-bar, .source-controls { flex-wrap:wrap; }
  .source-topic-bar select, .source-controls select, .source-search, .domain-picker summary, .ai-kw-input, .bulk-field, .keywords-prompt-text { min-width:0; width:100%; }
  .table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .usage-grid, .kpis, .kpis.has-sentiment, .owned-coverage, .kpi-tiles { grid-template-columns:1fr 1fr; }
  .rec-summary-aside { grid-template-columns:1fr; }
  .geo-kw-head, .geo-kw-row { grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(40px,.6fr)); }
  .modal-card, .geo-drawer { width:100%; box-shadow:none; }
  .modal-card header { padding:14px 16px 12px; }
  .modal-card h2 { font-size:18px; }
  .modal-body { padding:16px 14px; }
  .geo-modal-foot { padding:12px 14px; }
  .modal-card header .icon-button, .modal-close { width:32px; height:32px; }
  .app-header { display:grid; grid-template-columns:1fr 1fr; gap:8px 10px; }
  .header-actions { grid-column:1 / -1; }
  #avatar { display:none; }
  .user-chip { width:auto; flex:1 1 auto; }
}
