/* ═══════════════════════════════════════════════════════════════════
   Rooftop Signal — brand system CSS
   Port of the approved homepage prototype (July 2026 redesign).

   INSTALL: copy to static/css/rs-brand.css and load AFTER app.css:
     <link rel="stylesheet" href="/static/css/app.css?v=102">
     <link rel="stylesheet" href="/static/css/rs-brand.css?v=1">

   Utility classes (.mt-*, .gap-*, .grid) intentionally mirror the
   Tailwind spacing scale (4px base) so coexistence with app.css is
   harmless. Brand spec: docs/BRAND_SPEC.md §3 — navy/blue is the only
   brand color; green/amber/red are score states, never decoration.
   ═══════════════════════════════════════════════════════════════════ */

:root{
  /* Surfaces */
  --bg:           #FFFFFF;
  --bg-alt:       #F6F7F9;
  --surface:      #FFFFFF;
  /* Ink */
  --ink:          #0B1220;
  --ink-2:        #1B2530;
  --muted:        #5F6B7A;
  --muted-2:      #8A93A0;
  /* Borders */
  --border:       #E6E9EE;
  --border-2:     #D5DBE3;
  /* Brand — the one accent */
  --brand:        #1F5EFF;
  --brand-2:      #1A4ED1;
  --brand-soft:   #EAF0FF;
  --ink-on-brand: #FFFFFF;
  /* Score states */
  --good:         #16A34A;
  --good-soft:    #E6F4EC;
  --warn:         #B45309;
  --warn-soft:    #FBEFD9;
  --bad:          #DC2626;
  --bad-soft:     #FBE7E7;
  /* Radius + elevation */
  --r-sm: 6px; --r-md: 10px; --r-lg: 14px; --r-xl: 22px;
  --shadow-1: 0 1px 0 rgba(11,18,32,.04), 0 1px 2px rgba(11,18,32,.06);
  --shadow-2: 0 12px 28px -10px rgba(11,18,32,.16), 0 2px 4px rgba(11,18,32,.06);
  /* Type */
  --font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
}

/* ───── base ───────────────────────────────────────────────────────── */
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--font-sans);font-size:16px;line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.mono,.num{font-family:var(--font-mono);font-feature-settings:"tnum","zero"}
/* app.css sets h1,h2 to the retired UbuntuBrand face; the 2026 system is Inter everywhere */
h1,h2{font-family:var(--font-sans)}
img{display:block;max-width:100%}

/* ───── layout ─────────────────────────────────────────────────────── */
.wrap{max-width:1280px;margin:0 auto;padding:0 32px}
@media (max-width:700px){.wrap{padding:0 20px}}
.pad-y{padding-top:88px;padding-bottom:88px}
@media (max-width:700px){.pad-y{padding-top:56px;padding-bottom:56px}}
.bg-paper{background:var(--bg)}
.bg-alt,.bg-cream{background:var(--bg-alt)}
/* dark section — Answer Preview only (screenshots of third-party AI
   assistants sit on dark); everything else stays light per brand spec */
.bg-ink{background:var(--ink);color:#E6E8EC}
.bg-ink .h1,.bg-ink .h2,.bg-ink .h3{color:#fff}
.bg-ink .lead,.bg-ink .muted{color:#9AA3AD}
.bg-ink .eyebrow{color:#9AA3AD}

/* ───── type ───────────────────────────────────────────────────────── */
.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);font-weight:500}
.eyebrow .dot{display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--brand);margin-right:8px;vertical-align:1px}
.h1{font-size:clamp(40px,6vw,80px);line-height:1;letter-spacing:-.025em;
  font-weight:700;margin:0;text-wrap:balance}
.h2{font-size:clamp(30px,3.6vw,50px);line-height:1.05;letter-spacing:-.022em;
  font-weight:700;margin:0;text-wrap:balance}
.h3{font-size:clamp(20px,2vw,26px);line-height:1.2;letter-spacing:-.012em;
  font-weight:600;margin:0}
.lead{font-size:clamp(17px,1.4vw,20px);line-height:1.5;color:var(--muted);
  max-width:60ch;text-wrap:pretty}
.kicker{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);font-weight:500}

/* ───── buttons ────────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;
  height:48px;padding:0 22px;border-radius:var(--r-md);
  font-weight:600;font-size:15px;letter-spacing:-.005em;
  border:1px solid transparent;cursor:pointer;text-decoration:none;
  transition:transform .08s ease,background .15s ease,color .15s ease,border-color .15s ease}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--brand);color:var(--ink-on-brand);border-color:var(--brand)}
.btn-primary:hover{background:var(--brand-2);border-color:var(--brand-2);color:var(--ink-on-brand)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--border-2)}
.btn-ghost:hover{border-color:var(--ink);background:rgba(11,18,32,.03)}
.btn-dark{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn-dark:hover{background:#000}
.btn-sm{height:44px;padding:0 16px;font-size:13.5px}
.btn-lg{height:56px;padding:0 28px;font-size:16px}

/* ───── cards / chips / rules ──────────────────────────────────────── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--shadow-1)}
.hairline{border-top:1px solid var(--border)}
.hairline-b{border-bottom:1px solid var(--border)}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;
  background:var(--bg-alt);border:1px solid var(--border);color:var(--ink-2);
  font-size:12px;font-weight:500}
.chip.brand{background:var(--brand-soft);border-color:transparent;color:var(--brand-2)}
.chip.good {background:var(--good-soft);border-color:transparent;color:#0C5A28}
.chip.warn {background:var(--warn-soft);border-color:transparent;color:#7A4200}
.chip.bad  {background:var(--bad-soft);border-color:transparent;color:#8A1414}
.rule{height:1px;background:var(--border);border:0;width:100%;margin:0}

/* ───── placeholder tile (testimonial slots etc.) ──────────────────── */
.placeholder{
  background:repeating-linear-gradient(135deg,
    rgba(11,18,32,.045) 0 10px, rgba(11,18,32,0) 10px 22px), var(--bg-alt);
  border:1px dashed var(--border-2);
  display:flex;align-items:center;justify-content:center;
  color:var(--muted);font-family:var(--font-mono);font-size:11px;
  letter-spacing:.08em;text-transform:uppercase}

/* ───── score bars ─────────────────────────────────────────────────── */
.barwrap{position:relative;height:8px;background:rgba(11,18,32,.06);border-radius:999px;overflow:hidden}
.bar{position:absolute;left:0;top:0;bottom:0;border-radius:999px}
.bar.green{background:var(--good)}
.bar.yellow{background:var(--warn)}
.bar.red{background:var(--bad)}
.bar.brand{background:var(--brand)}
.avg-tick{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.4}

/* ───── forms ──────────────────────────────────────────────────────── */
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.08em;
  text-transform:uppercase;font-family:var(--font-mono)}
.input{height:48px;padding:0 16px;border:1px solid var(--border-2);border-radius:var(--r-md);
  background:var(--surface);color:var(--ink);font:inherit;outline:none;
  transition:border-color .15s, box-shadow .15s}
.input:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}
.input.lg{height:56px;font-size:16px}
.form-error{margin:6px 0 0;font-size:12.5px;color:var(--bad)}

/* ───── status banners (rate-limit / scanning / gate) ──────────────── */
.banner{border-radius:var(--r-md);padding:14px 18px;font-size:14px;line-height:1.5;
  border:1px solid transparent;margin-bottom:20px}
.banner.warn{background:var(--warn-soft);border-color:#E8C88F;color:#6B4500}
.banner.good{background:var(--good-soft);border-color:#B5DEC4;color:#0C5A28}
.banner a{color:var(--brand);text-decoration:underline}

/* ───── leaderboard rows ───────────────────────────────────────────── */
.row{display:grid;grid-template-columns:48px minmax(0,1.6fr) minmax(70px,1fr) 80px;gap:18px;align-items:center;padding:16px 20px}
@media (max-width:780px){.row{grid-template-columns:36px minmax(0,1.5fr) minmax(60px,1fr) 56px;gap:10px;padding:14px 14px}}
.row + .row{border-top:1px solid var(--border)}
.row .rank{font-family:var(--font-mono);font-weight:600;font-size:16px;color:var(--ink-2);text-align:center}
.row.you{background:linear-gradient(90deg, var(--brand-soft), transparent 60%)}
.row.you .rank{color:var(--brand)}
.row.you .name{color:var(--brand-2);font-weight:600}
.row.top1 .rank{color:var(--good)}
.row .name{font-size:14.5px;font-weight:500;color:var(--ink-2);display:flex;align-items:center;gap:10px;min-width:0}
.row .name .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .name .badge{flex-shrink:0;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:700}

/* ───── header ─────────────────────────────────────────────────────── */
header.rs-top{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.88);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border)}
.nav{display:flex;align-items:center;justify-content:space-between;height:64px;gap:16px;
  transition:height .2s ease}
header.rs-top.scrolled .nav{height:54px}
header.rs-top.scrolled{box-shadow:var(--shadow-1)}
.brandmark{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}
.brandmark .rs-chip{display:inline-flex;align-items:center;justify-content:center;
  background:var(--brand);color:#fff;border-radius:6px;width:28px;height:28px;
  font-size:15px;font-weight:700;letter-spacing:-.04em;line-height:1;flex:0 0 28px}
.brandmark .rs-chip .glyphs{display:inline-flex;align-items:baseline;transform:translateY(.08em)}
.brandmark .rs-chip .pt{display:inline-block;width:.18em;height:.18em;background:#fff;border-radius:50%;margin-left:.08em}
.brandmark .name{font-weight:600;letter-spacing:-.015em;font-size:17px;color:var(--ink)}
.brandmark .name .name-dot{color:var(--brand);font-weight:700}
.navlinks{display:flex;gap:28px}
.navlinks a{font-size:14px;color:var(--ink-2);font-weight:500;text-decoration:none}
.navlinks a:hover{color:var(--brand)}
@media (max-width:900px){.navlinks{display:none}}
.menu-btn{display:none;background:transparent;border:0;padding:8px;color:var(--ink);cursor:pointer}
@media (max-width:900px){.menu-btn{display:block}}
.mobile-drawer{display:none}
.mobile-drawer.open{display:block;border-top:1px solid var(--border);background:var(--bg);padding:14px 20px}
.mobile-drawer a{display:block;padding:12px 0;font-size:16px;font-weight:500;
  color:var(--ink-2);border-bottom:1px solid var(--border);text-decoration:none}
.mobile-drawer a:last-child{border-bottom:0}

/* ───── utilities (mirror Tailwind 4px scale — harmless coexistence) ── */
.muted{color:var(--muted)}
.stack{display:flex;flex-direction:column}
.row-flex{display:flex;align-items:center}
.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-5{gap:20px}
.gap-6{gap:24px}.gap-8{gap:32px}.gap-10{gap:40px}.gap-12{gap:48px}
.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}
.mt-5{margin-top:20px}.mt-6{margin-top:24px}.mt-8{margin-top:32px}
.mt-10{margin-top:40px}.mt-12{margin-top:48px}.mt-16{margin-top:64px}
.grid{display:grid}
.pill{display:inline-flex;align-items:center;padding:8px 18px;border-radius:999px;
  font-size:12px;font-weight:600;border:0;cursor:pointer;background:transparent}

/* ───── small badges ───────────────────────────────────────────────── */
.checkmark{width:18px;height:18px;flex:0 0 18px;border-radius:50%;background:var(--good);
  display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700}
.x{width:18px;height:18px;flex:0 0 18px;border-radius:50%;background:var(--bad);
  display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700}

/* ───── answer-preview terminals (screenshots of third-party AI UIs) ── */
.terminal{background:#0C1116;border:1px solid #1F2A36;border-radius:14px;color:#D8DDE4;
  overflow:hidden;box-shadow:var(--shadow-2)}
.terminal.after-ok{border-color:#1F4A2D}
.terminal .head{display:flex;align-items:center;gap:8px;padding:12px 16px;
  border-bottom:1px solid #1F2A36;background:#0F151C}
.terminal.after-ok .head{background:#0D1A12;border-bottom-color:#1F4A2D}
.terminal .body{padding:18px 20px;font-family:var(--font-mono);font-size:13.5px;line-height:1.6;min-height:160px}
.terminal .you{color:#9AA3AD}
.terminal .ai{color:#E6E8EC}
.terminal .hit{color:#7DD0A4;font-weight:700;background:rgba(125,208,164,.08);padding:1px 4px;border-radius:3px}
/* mode switching: section[data-mode] hides the other state */
#answer-preview [data-ap="after"]{display:none}
#answer-preview[data-mode="after"] [data-ap="after"]{display:block}
#answer-preview[data-mode="after"] [data-ap="before"]{display:none}
/* staggered line reveal, replayed on toggle via .replay */
.fadeline{opacity:0;animation:rsLineIn .35s ease forwards}
@keyframes rsLineIn{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}

/* ───── map hero card ──────────────────────────────────────────────── */
.map-canvas{position:relative;aspect-ratio:5/4;background:linear-gradient(160deg,#F4F6F9 0%,#E9EDF3 100%)}
.map-pin{position:absolute;transform:translate(-50%,-50%);background:transparent;border:0;padding:14px;cursor:pointer}
.map-pin .dot-sm{width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.map-pin .dot-sm.glow{box-shadow:0 0 0 5px rgba(22,163,74,.18)}
.map-pin .tip{display:none;position:absolute;top:34px;left:50%;transform:translateX(-50%);
  padding:6px 10px;white-space:nowrap;font-size:12px;z-index:5}
.map-pin:hover .tip,.map-pin:focus-visible .tip{display:block}
.pin-pulse{position:absolute;width:36px;height:36px;border-radius:50%;background:var(--bad);
  opacity:.25;left:-18px;top:-18px;animation:rsPulse 2s ease-out infinite}
@keyframes rsPulse{0%{transform:scale(.7);opacity:.5}100%{transform:scale(2);opacity:0}}

/* ───── FAQ (native details/summary) ───────────────────────────────── */
details.faq{border-bottom:1px solid var(--border)}
details.faq summary{list-style:none;display:flex;justify-content:space-between;align-items:center;
  padding:22px 0;cursor:pointer;font-weight:600;font-size:17px;color:var(--ink)}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:"+";font-family:var(--font-mono);font-size:18px;color:var(--brand)}
details.faq[open] summary::after{content:"–"}
details.faq p{margin:0;padding:0 30px 22px 0;font-size:15.5px;line-height:1.55;color:var(--muted);max-width:780px}

/* ───── hero grid + section grids ──────────────────────────────────── */
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:start}
@media (max-width:980px){.hero-grid{grid-template-columns:1fr;gap:32px}}
@media (max-width:900px){
  .leaderboard-grid{grid-template-columns:1fr !important}
  .pricing-grid{grid-template-columns:1fr !important}
  .explainer-grid{grid-template-columns:1fr !important}
  .explainer-grid > div{border-right:0 !important;border-bottom:1px solid var(--border)}
}
@media (max-width:760px){
  .steps-grid{grid-template-columns:1fr !important}
  .ap-grid{grid-template-columns:1fr !important}
  .testimonial-grid{grid-template-columns:1fr !important}
  .footer-grid{grid-template-columns:1fr 1fr !important;gap:24px !important}
  .row{grid-template-columns:30px 1fr 90px 44px !important;gap:8px !important;padding:12px 12px !important}
  .h1{font-size:clamp(34px,9vw,52px) !important}
  .h2{font-size:clamp(26px,6.5vw,38px) !important}
  .hero-grid{gap:24px !important}
  .nav{height:56px}
  .scanstrip-form{flex-direction:column;align-items:stretch !important}
  .scanstrip-form .input,.scanstrip-form .btn{width:100%}
}
@media (max-width:480px){.footer-grid{grid-template-columns:1fr !important}}

/* ───── mobile sticky scan CTA (homepage only via body.page-home) ───── */
.mobile-cta{display:none}
@media (max-width:700px){
  body.page-home{padding-bottom:74px}
  body.page-home .mobile-cta{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;
    padding:10px 14px;gap:10px;background:rgba(255,255,255,.96);
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    border-top:1px solid var(--border);box-shadow:0 -8px 24px -10px rgba(11,18,32,.16)}
  body.page-home .mobile-cta .btn{flex:1;height:46px}
}

/* ───── footer ─────────────────────────────────────────────────────── */
footer.rs-footer{background:var(--ink);color:#9AA3AD;padding:64px 0 32px}
footer.rs-footer a{color:#C7CCD3;text-decoration:none}
footer.rs-footer a:hover{color:#fff}
footer.rs-footer h4{color:#fff;font-size:12px;text-transform:uppercase;letter-spacing:.1em;
  font-family:var(--font-mono);font-weight:500;margin:0 0 14px}

/* ───── accessibility ──────────────────────────────────────────────── */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{
  outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
main p a,main li a{color:var(--brand)}
main p a:hover,main li a:hover{color:var(--brand-2)}
@media (prefers-reduced-motion: reduce){
  .pin-pulse,.fadeline{animation:none !important;opacity:1 !important}
  *{transition-duration:.01ms !important}
}
