/* exNiche shared components (REFACTOR-SPEC §5.4). Every page imports this file.
   One button system, gap card, score ring, verdict pill, chips, lock, table, page shell, footer. */
:root{
  --bg:#fff;--ink:#0A0A0A;--ink2:#3F3F3F;--muted:#5E5E66;--faint:#A8A8A8;--line:#DADAE0;--edge:#B9B9C1;--soft:#FAFAFA;
  --brand-purple:#5B3FE0;--accent:#5B3FE0;--lilac:#F1EEFE;
  --go:#14653F;--go-bg:#E6F6EE;--go-ring:#22A06B;
  --maybe:#7A4D00;--maybe-bg:#FFF4DA;--maybe-ring:#D99A1E;
  --nogo:#4A4A52;--nogo-bg:#F0F0F2;--nogo-ring:#A8A8B0;
  --sans:'Geist',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --display:'DM Serif Display',Georgia,serif;
  --radius:14px;
}

[hidden]{display:none!important}

/* Headings: one accent word per heading, DM Serif Display italic like the logo "ex". */
h1 em,h2 em,h3 em{font-family:var(--display);font-style:italic;font-weight:400;color:var(--brand-purple);letter-spacing:-.02em}

/* ---------- Buttons: .btn (outline), .btn.solid (ink fill), .btn.sm ---------- */
.btn{
  box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:40px;padding:0 18px;margin:0;border:1px solid var(--line);border-radius:999px;
  background:#fff;color:var(--ink);font:500 14px/1 var(--sans);letter-spacing:-.005em;
  text-decoration:none;white-space:nowrap;cursor:pointer;appearance:none;-webkit-appearance:none;
  transition:border-color .15s,background .15s,color .15s;
}
.btn:hover{border-color:var(--ink)}
.btn.solid{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.solid:hover{background:#26232F;border-color:#26232F}
.btn.sm{height:32px;padding:0 13px;font-size:13px;gap:6px}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.btn[aria-pressed="true"],.btn[aria-selected="true"],.btn[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}

/* ---------- Page shell ---------- */
.shell{width:calc(100% - 48px);max-width:1320px;margin:0 auto}
@media(max-width:760px){.shell{width:100%}}
.page-head{padding:56px 0 28px;max-width:760px;text-align:left}
.page-head h1{font:500 clamp(40px,6vw,64px)/1.08 var(--sans);letter-spacing:-.055em;margin:0 0 16px;text-wrap:balance}
.page-head .lead{color:var(--muted);font-size:16px;line-height:1.7;max-width:600px;margin:0}
.kicker{font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.fine{font-size:12px;line-height:1.7;color:var(--muted)}
.crumbs{display:flex;flex-wrap:wrap;gap:8px;font:12px var(--mono);color:var(--muted);margin:0 0 18px;padding:0;list-style:none}
.crumbs li+li::before{content:"/";margin-right:8px;color:var(--faint)}
.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--ink)}

/* ---------- Panel (gaps-table theme container) ---------- */
.panel{background:#fff;border:1px solid var(--edge);border-radius:var(--radius);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.gwrap{background:#fff;border:1px solid var(--edge);border-radius:var(--radius);overflow-x:auto;box-shadow:0 1px 2px rgba(0,0,0,.08)}

/* ---------- Table (ledger theme) ---------- */
.gt{width:100%;border-collapse:collapse;font-size:14px;min-width:700px;text-align:left}
.gt th{font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:10px 14px;background:var(--soft);border-bottom:1px solid var(--line);white-space:nowrap}
.gt td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
.gt tr:last-child td{border-bottom:0}
.gt td.q{font-weight:500}.gt td.q a{color:var(--ink);text-decoration:none}.gt td.q a:hover{color:var(--brand-purple)}
.gt td .sub{display:block;font-weight:400;font-size:12px;color:var(--muted);margin-top:2px}
.gt td.n{font:500 13px var(--mono);white-space:nowrap}.gt td.c{color:var(--muted);font-size:13px;white-space:nowrap}

/* ---------- Gap card grid: same border, radius and rhythm as the ledger table ---------- */
.ggrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;background:#fff;border:1px solid var(--edge);border-radius:var(--radius);overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.ggrid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.ggrid-state{grid-column:1/-1;margin:0;padding:28px 18px;background:#fff;color:var(--muted);font-size:14px}
@media(max-width:1000px){.ggrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.ggrid,.ggrid.two{grid-template-columns:1fr}}
.ggrid>.gcard{box-shadow:1px 0 0 var(--line),0 1px 0 var(--line)}
.gcard{background:#fff;display:flex;flex-direction:column;gap:12px;padding:18px 18px 14px;min-width:0;text-align:left}
.gcard:hover{background:#FDFDFE}
.gcard-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.gcard-cat{display:block;font:500 10.5px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.gcard-title{margin:0;font:500 16px/1.3 var(--sans);letter-spacing:-.02em;color:var(--ink)}
.gcard-title a{color:inherit;text-decoration:none}.gcard-title a:hover{color:var(--brand-purple)}
.gcard-chips,.gcard-src{display:flex;flex-wrap:wrap;gap:6px}
.gcard-ask{margin:0;font-size:13px;line-height:1.55;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.gcard-ask a{color:var(--brand-purple);text-decoration:none;white-space:nowrap}
.gcard-ask a:hover{text-decoration:underline}
.gcard-foot{margin-top:auto;display:flex;justify-content:space-between;gap:10px;padding-top:10px;border-top:1px solid var(--line);font:11px var(--mono);color:var(--muted)}
.gcard.feature{border:1px solid var(--edge);border-radius:var(--radius);box-shadow:0 1px 2px rgba(0,0,0,.08),0 18px 40px -24px rgba(18,14,40,.25);padding:22px 22px 16px;gap:14px}
.gcard.feature .gcard-title{font-size:20px}

/* ---------- Score ring (static SVG, no count-up) ---------- */
.score-ring{position:relative;flex:none;width:56px;height:56px;display:inline-grid;place-items:center}
.score-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.score-ring .track{fill:none;stroke:#EFEDF4;stroke-width:5}
.score-ring .arc{fill:none;stroke:var(--brand-purple);stroke-width:5;stroke-linecap:round}
.score-ring[data-verdict="go"] .arc{stroke:var(--go-ring)}
.score-ring[data-verdict="maybe"] .arc{stroke:var(--maybe-ring)}
.score-ring[data-verdict="no-go"] .arc{stroke:var(--nogo-ring)}
.score-ring .band .arc{stroke-linecap:butt}
.score-ring b{position:relative;font:600 15px/1 var(--mono);letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.score-ring.band b{font-size:10.5px;letter-spacing:-.02em}
.score-ring.none b{color:var(--faint);font-weight:500}
.score-ring.lg{width:84px;height:84px}.score-ring.lg b{font-size:24px}.score-ring.lg.band b{font-size:14px}

/* ---------- Verdict pill (text always present) ---------- */
.verdict{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font:600 12px/1 var(--sans);white-space:nowrap}
.verdict::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.verdict.go{background:var(--go-bg);color:var(--go)}
.verdict.maybe{background:var(--maybe-bg);color:var(--maybe)}
.verdict.no-go{background:var(--nogo-bg);color:var(--nogo)}
.verdict.none{background:#fff;color:var(--muted);border:1px dashed var(--edge)}
.verdict.none::before{display:none}

/* ---------- Chips ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border:1px solid var(--line);border-radius:999px;background:#fff;font:500 11.5px/1 var(--sans);color:var(--ink2);white-space:nowrap}
.chip b{font:600 11px var(--mono);color:var(--ink)}
.chip.trend[data-trend="rising"]{color:var(--go);border-color:#BFE6D3}
.chip.trend[data-trend="cooling"]{color:var(--muted)}
.src-dot{display:inline-block;width:6px;height:6px;border-radius:2px;background:var(--faint);margin-right:2px}
.src-dot[data-kind="community_ask"]{background:#5B3FE0}.src-dot[data-kind="agent_search"]{background:#22A06B}.src-dot[data-kind="store_search"]{background:#D99A1E}
.chip.src::before{content:"";width:6px;height:6px;border-radius:2px;background:var(--faint)}
.chip.src[data-kind="community_ask"]::before{background:#5B3FE0}
.chip.src[data-kind="agent_search"]::before{background:#22A06B}
.chip.src[data-kind="store_search"]::before{background:#D99A1E}
.chip.src[data-kind="bot_research"]::before{background:#0A0A0A;border-radius:50%}

/* ---------- Lock: blurred fixed placeholder + icon + plan. Never a real or fake number under the blur. ---------- */
.lock{display:inline-flex;align-items:center;gap:6px;font:500 11px var(--mono);color:var(--muted);white-space:nowrap}
.lock .lock-v{filter:blur(4px);user-select:none;color:var(--ink);font-weight:600}
.lock svg{width:12px;height:12px;flex:none}
.lock-line{display:block;height:10px;border-radius:5px;background:linear-gradient(90deg,#E9E7F1,#F4F3F8);filter:blur(1.5px);margin:10px 0}
.lock-line:nth-child(2n){width:78%}.lock-line:nth-child(3n){width:62%}

/* ---------- Tabs and segmented view toggle use .btn.sm ---------- */
.tabs{display:flex;flex-wrap:wrap;gap:8px}

/* ---------- Code blocks ---------- */
.code{background:#0F0E14;color:#E7E5F0;border-radius:12px;padding:16px 18px;font:12.5px/1.65 var(--mono);overflow-x:auto;margin:0;white-space:pre}
.code .c{color:#8A86A0}.code .k{color:#B9A9FF}.code .s{color:#9BE0BC}

/* ---------- Footer ---------- */
.site-footer{position:relative;z-index:1;border-top:1px solid var(--line);margin-top:72px;padding:40px 0 48px;background:#fff}
.site-footer .footer-inner{width:calc(100% - 48px);max-width:1320px;margin:0 auto;display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:28px}
.site-footer .logo{font-size:17px}
.site-footer p{margin:10px 0 0;font-size:12.5px;line-height:1.6;color:var(--muted);max-width:30ch}
.site-footer h2{margin:0 0 12px;font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.site-footer a{font-size:13.5px;color:var(--ink);text-decoration:none}
.site-footer a:hover{color:var(--brand-purple)}
@media(max-width:760px){.site-footer .footer-inner{width:100%;grid-template-columns:1fr 1fr}.site-footer .footer-brand{grid-column:1/-1}}

/* ---------- Print (dossier "Save as PDF") ---------- */
@media print{
  .site-header,.site-footer,.no-print,#field{display:none!important}
  body{background:#fff!important;padding:0!important}
  .panel,.gwrap,.ggrid,.gcard.feature{box-shadow:none!important}
  a{color:inherit!important}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Button accent: only call-to-action buttons (.solid / .ink) use the exNiche purple.
   Toggles, tabs and current-page states stay ink, like "Niche" in the logo. */
.btn.solid,.btn.ink{background:#5B3FE0;border-color:#5B3FE0;color:#fff}
.btn.solid:hover,.btn.ink:hover{background:#4A31C4;border-color:#4A31C4}
/* Current page (e.g. Account while on it): ink fill. Otherwise nav buttons stay empty. */
.btn[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:#fff}
