/* self-hosted @font-face — stylesheet-relative URLs (deployable under any base path) */
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/Inter-400.8909904ab6.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/Inter-500.f3779f1efc.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/Inter-600.f9a06e79cd.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/Inter-700.6f56409fd3.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/Inter-800.a7d0a50f15.woff2') format('woff2')}
@font-face{font-family:'General Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/GeneralSans-Medium.c30377df1d.woff2') format('woff2')}
@font-face{font-family:'General Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/GeneralSans-Semibold.94a2a0e1ef.woff2') format('woff2')}
@font-face{font-family:'Satoshi';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/Satoshi-Bold.353a7fbfb4.woff2') format('woff2')}
@font-face{font-family:'Satoshi';font-style:normal;font-weight:900;font-display:swap;src:url('../fonts/Satoshi-Black.bd11b58202.woff2') format('woff2')}

/* ============================================================
   DESIGN TOKENS — landing-scoped (V1 system preserved, §0)
   ============================================================ */
:root{
  --roo-ink:#07142B;
  --roo-ink-soft:#43516B;      /* darkened from V1 #526079 for contrast (§5,§13.4) */
  --roo-midnight:#061A4A;
  --roo-deep-blue:#0A2D78;
  --roo-blue:#1769FF; --brand-primary:#1769FF; --brand-primary-hover:var(--roo-blue-hover); --brand-primary-soft:#EAF1FF;
  --roo-blue-hover:#1147B8;  /* V461 §7.2: unified brand-primary-hover across public + dashboard */
  --roo-blue-soft:#EAF1FF;
  --roo-canvas:#F7F9FF;
  --roo-white:#FFFFFF;
  --roo-line:#DCE4F2;
  --roo-positive:#159A66;
  --roo-amber:#C88712;

  --font-display:"General Sans","Inter",Arial,sans-serif;
  --font-body:"Inter",Arial,sans-serif;
  --font-number:"Satoshi","General Sans","Inter",Arial,sans-serif;

  --landing-max:1180px;   /* V5.5: consolidated desktop width (was 1280) to align with the V25 baseline */
  --gutter-desktop:24px;  /* V5.5: tighter desktop gutter (was 64) */
  --gutter-tablet:32px;
  --gutter-mobile:20px;
  --section-y-desktop:92px;   /* V5.1: tightened to reduce page length */
  --section-y-tablet:72px;
  --section-y-mobile:38px;
  --radius-card:28px;
  --radius-large:40px;
  --radius-pill:999px;

  --ease-reveal:cubic-bezier(0.16,1,0.3,1);
  --ease-header:cubic-bezier(0.22,1,0.36,1);
}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{scroll-padding-top:96px} /* fixed sticky header must not obscure anchored content */
/* V5.1: per-section anchor offset so headings clear the sticky header on jump/scroll */
section[id]{scroll-margin-top:90px}
@media(max-width:767px){section[id]{scroll-margin-top:78px}}
body{
  font-family:var(--font-body);
  color:var(--roo-ink);
  background:var(--roo-canvas);
  font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
/* Batch 1.2-cv2 (A2): the horizontal-overflow guard lives on html, NOT body.
   body{overflow-x:hidden} forced body's overflow-y to compute to `auto` (CSS single-axis
   rule), making <body> its own scroll container — a classic cause of position:sticky
   failing on real mobile browsers. On the root element the guard clamps the viewport
   instead, so body never becomes an independent scroller and sticky keeps working.
   Individual wide components (tables, swipe decks) keep their own overflow containers,
   and remaining overflow bugs are fixed at the source rather than silently hidden. */
html{overflow-x:hidden;overflow-x:clip}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;margin:0;letter-spacing:-0.01em}
p{margin:0}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
img,svg{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--roo-blue);outline-offset:3px;border-radius:4px}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.wrap{max-width:var(--landing-max);margin:0 auto;padding:0 var(--gutter-desktop)}
.eyebrow{font-size:13px;font-weight:600;letter-spacing:0.02em;color:var(--roo-blue);display:inline-flex;align-items:center;gap:8px}
.eyebrow--onblue{color:#BFD4FF}
.eyebrow-chip{display:inline-block;padding:7px 14px;border-radius:var(--radius-pill);background:var(--roo-blue-soft);color:var(--roo-blue);font-size:13px;font-weight:600;letter-spacing:0.01em}
.eyebrow-chip--onblue{background:rgba(255,255,255,0.14);color:#DCE8FF}

/* ============================================================
   BUTTONS — hover/focus/active states, WCAG-AA (§3)
   ============================================================ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:50px;padding:0 26px;border-radius:var(--radius-pill);font-size:15px;font-weight:500;letter-spacing:0.005em;transition:transform .18s var(--ease-reveal),background .18s ease,box-shadow .18s ease,border-color .18s ease,color .18s ease;white-space:nowrap}
.btn:active{transform:translateY(0) scale(0.99)}
.btn-primary{background:var(--roo-blue);color:#fff;box-shadow:0 6px 20px -6px rgba(23,105,255,0.55)}
.btn-primary:hover{background:var(--roo-blue-hover);transform:translateY(-2px);box-shadow:0 10px 26px -6px rgba(23,105,255,0.6)}
/* Hero primary CTA = deep navy so it doesn't sink into the blue gradient (§3.1) */
.btn-navy{background:var(--roo-ink);color:#fff;box-shadow:0 8px 22px -8px rgba(7,20,43,0.7)}
.btn-navy:hover{background:#0C1E3D;transform:translateY(-2px);box-shadow:0 12px 28px -8px rgba(7,20,43,0.75)}
.btn-ghost{background:transparent;color:var(--roo-ink);border:1px solid var(--roo-line)}
.btn-ghost:hover{border-color:var(--roo-blue);color:var(--roo-blue);transform:translateY(-2px)}
/* Secondary hero CTA over pale gradient floor — darker text/border for contrast (§3.2) */
.btn-hero-secondary{background:rgba(255,255,255,0.9);color:var(--roo-ink);border:1px solid rgba(7,20,43,0.22)}
.btn-hero-secondary:hover{background:#fff;border-color:var(--roo-ink);transform:translateY(-2px)}
.btn-lg{height:54px;padding:0 30px;font-size:16px}

/* ============================================================
   HEADER — transparent → floating pill (§8)
   ============================================================ */
.site-header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;justify-content:center;padding:20px var(--gutter-desktop);transition:padding .28s var(--ease-header);pointer-events:none}
.header-inner{width:100%;max-width:var(--landing-max);display:flex;align-items:center;justify-content:space-between;padding:14px 8px 14px 4px;border-radius:var(--radius-pill);border:1px solid transparent;transition:background .28s var(--ease-header),border-color .28s var(--ease-header),box-shadow .28s var(--ease-header),padding .28s var(--ease-header);pointer-events:auto}
.site-header.scrolled{padding-top:16px;padding-bottom:16px}
.site-header.scrolled .header-inner{background:rgba(255,255,255,0.94);backdrop-filter:saturate(150%) blur(12px);-webkit-backdrop-filter:saturate(150%) blur(12px);border-color:var(--roo-line);box-shadow:0 8px 30px -12px rgba(7,20,43,0.18);padding-left:22px;padding-right:14px}
/* D1 (V5.5): logo click/touch target ≥44×44 (transparent min-height; visible mark unchanged),
   icon + wordmark both link home, with a header-context-aware focus ring. */
.brand-link{display:flex;align-items:center;flex:none;padding:0 12px;min-height:44px;border-radius:10px}
.brand-link:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:10px}
.site-header.scrolled .brand-link:focus-visible{outline-color:var(--roo-blue)}
.brand-logo{height:26px;width:auto;transition:filter .28s var(--ease-header)}
.brand-logo{filter:brightness(0) invert(1)}
.site-header.scrolled .brand-logo{filter:none}
.main-nav{display:flex;align-items:center;gap:2px}
.nav-link,.nav-trigger{padding:9px 15px;border-radius:var(--radius-pill);font-size:14.5px;font-weight:500;color:rgba(255,255,255,0.88);transition:color .2s ease,background .2s ease;display:inline-flex;align-items:center;gap:6px}
.nav-link:hover,.nav-trigger:hover{color:#fff;background:rgba(255,255,255,0.1)}
.site-header.scrolled .nav-link,.site-header.scrolled .nav-trigger{color:var(--roo-ink-soft)}
.site-header.scrolled .nav-link:hover,.site-header.scrolled .nav-trigger:hover{color:var(--roo-blue);background:var(--roo-blue-soft)}
.nav-trigger .chev{width:15px;height:15px;transition:transform .25s var(--ease-header)}
.nav-trigger[aria-expanded="true"] .chev{transform:rotate(180deg)}
.header-actions{display:flex;align-items:center;gap:8px}
.header-login{padding:9px 16px;font-size:14.5px;font-weight:500;color:#fff;border-radius:var(--radius-pill);transition:color .2s,background .2s}
.header-login:hover{background:rgba(255,255,255,0.1)}
.site-header.scrolled .header-login{color:var(--roo-ink)}
.site-header.scrolled .header-login:hover{color:var(--roo-blue);background:var(--roo-blue-soft)}
.header-cta{height:42px;padding:0 20px;border-radius:var(--radius-pill);background:#fff;color:var(--roo-ink);font-size:14.5px;font-weight:600;display:inline-flex;align-items:center;white-space:nowrap;transition:transform .18s,background .18s,color .18s}
.header-cta:hover{transform:translateY(-1px)}
.site-header.scrolled .header-cta{background:var(--roo-blue);color:#fff}
.menu-btn{display:none;width:44px;height:44px;border-radius:12px;align-items:center;justify-content:center;color:#fff}
.site-header.scrolled .menu-btn{color:var(--roo-ink)}
/* B1: reduced motion → the directional header changes state instantly (no slide) */
@media(prefers-reduced-motion:reduce){ .site-header,.site-header .header-inner{transition:none!important} }

/* ============================================================
   PRODUCT MEGA MENU (§9)
   ============================================================ */
.mega{position:fixed;left:0;right:0;top:0;z-index:99;display:flex;justify-content:center;padding:0 var(--gutter-desktop);pointer-events:none;opacity:0;transition:opacity .24s var(--ease-header);}
.mega .mega-panel{transform:translateY(-8px);transition:transform .24s var(--ease-header)}
.mega.open .mega-panel{transform:translateY(0)}
.mega.open{opacity:1;pointer-events:auto}
/* A06: panel top derived from measured header bottom + 14–16px gap (JS sets --mega-top) */
.mega-panel{width:100%;max-width:var(--landing-max);margin-top:var(--mega-top,86px);background:#fff;border:1px solid var(--roo-line);border-radius:30px;box-shadow:0 30px 70px -30px rgba(7,20,43,0.35);padding:26px;display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:20px}
.mega-col h4{font-size:12px;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;color:var(--roo-ink-soft);margin-bottom:12px}
.mega-item{display:flex;gap:12px;padding:11px 12px;border-radius:14px;transition:background .16s;align-items:flex-start}
.mega-item:hover{background:var(--roo-blue-soft)}
.mega-item .mic{width:34px;height:34px;border-radius:9px;flex:none;background:var(--roo-blue-soft);color:var(--roo-blue);display:flex;align-items:center;justify-content:center}
.mega-item:hover .mic{background:#fff}
/* A05: title + desc are separate block rows inside a vertical wrapper — never concatenate */
.mega-item .mtext{display:flex;flex-direction:column;min-width:0}
.mega-item .mtitle{display:block;font-size:14px;font-weight:600;color:var(--roo-ink);line-height:1.3}
.mega-item .msub{display:block;font-size:12.5px;color:var(--roo-ink-soft);margin-top:3px;line-height:1.45}
.mega-preview{background:linear-gradient(160deg,#061A4A,#0A2D78);border-radius:18px;padding:20px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;position:relative;overflow:hidden}
.mega-preview .grid-bg{position:absolute;inset:0;background:linear-gradient(90deg,transparent 39px,rgba(255,255,255,0.07) 40px) 0 0/40px 40px,linear-gradient(0deg,transparent 39px,rgba(255,255,255,0.07) 40px) 0 0/40px 40px}
.mega-preview .mp-label{position:relative;font-size:12px;color:#BFD4FF;font-weight:600}
.mega-preview .mp-mini{position:relative;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.16);border-radius:12px;padding:13px;margin:12px 0}
.mega-preview .mp-row{display:flex;justify-content:space-between;font-size:12px;padding:5px 0;color:rgba(255,255,255,0.9)}
.mega-preview .mp-row b{font-weight:600}
.mega-preview .btn{position:relative;background:#fff;color:var(--roo-ink);height:40px;font-size:13.5px}

/* ============================================================
   MOBILE DRAWER (§10)
   ============================================================ */
.drawer-scrim{position:fixed;inset:0;background:rgba(7,20,43,0.4);z-index:150;opacity:0;pointer-events:none;transition:opacity .25s ease}
.drawer-scrim.open{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:12px;right:12px;left:12px;z-index:151;background:#fff;border-radius:24px;box-shadow:0 30px 70px -20px rgba(7,20,43,0.4);padding:18px;transform:translateY(-16px);opacity:0;pointer-events:none;transition:transform .28s var(--ease-header),opacity .28s var(--ease-header);max-height:calc(100vh - 24px);overflow-y:auto}
.drawer.open{transform:translateY(0);opacity:1;pointer-events:auto}
.drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.drawer-head .brand-logo{filter:none;height:24px}
.drawer-close{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:var(--roo-ink);background:var(--roo-canvas)}
.drawer-nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.drawer-nav a,.drawer-acc-btn{padding:14px 12px;border-radius:12px;font-size:16px;font-weight:500;color:var(--roo-ink);display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left}
.drawer-nav a:hover,.drawer-acc-btn:hover{background:var(--roo-blue-soft)}
.drawer-acc-btn .chev{width:18px;height:18px;transition:transform .25s}
.drawer-acc-btn[aria-expanded="true"] .chev{transform:rotate(180deg)}
.drawer-acc-panel{max-height:0;overflow:hidden;transition:max-height .3s var(--ease-header)}
.drawer-acc-panel a{padding-left:26px;font-size:15px;font-weight:400;color:var(--roo-ink-soft)}
.drawer-cta{margin-top:12px}
.drawer-cta .btn{width:100%}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative;min-height:min(100vh,1080px);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:150px var(--gutter-desktop) 90px;text-align:center;overflow:hidden;background:linear-gradient(180deg,#04143F 0%,#082A77 18%,#1769FF 42%,#77A5FF 64%,#D8E5FF 84%,#F7F9FF 100%)}
#hero-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.hero-context-label{position:absolute;z-index:2;top:calc(50% - 40px);left:50%;transform:translateX(-50%);font-size:12px;font-weight:600;letter-spacing:0.04em;color:rgba(255,255,255,0.7);display:none}
.hero-content{position:relative;z-index:3;width:100%;max-width:860px;margin:0 auto}
.hero h1{font-size:clamp(38px,4.2vw,64px);line-height:1.04;font-weight:500;color:#fff;max-width:760px;margin:18px auto 0;letter-spacing:-0.02em;text-shadow:0 2px 30px rgba(4,20,63,0.3)}
.hero-sub{font-size:18px;line-height:1.62;color:rgba(255,255,255,0.94);max-width:640px;margin:22px auto 0;text-shadow:0 1px 20px rgba(4,20,63,0.25)}
.hero-ctas{display:flex;gap:12px;justify-content:center;margin-top:32px;flex-wrap:wrap}

/* Analysis bar */
.analysis-bar{position:relative;z-index:5;width:100%;max-width:1152px;margin:44px auto 0;background:rgba(255,255,255,0.97);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.7);border-radius:26px;box-shadow:0 24px 60px -20px rgba(6,26,74,0.5);padding:20px}
.analysis-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding:0 2px}
.analysis-title{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--roo-ink)}
.analysis-sample{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--roo-blue)}
.analysis-sample svg{width:15px;height:15px;transition:transform .18s}
.analysis-sample:hover{color:var(--roo-blue-hover)}.analysis-sample:hover svg{transform:translateX(2px)}
.analysis-fields{display:grid;grid-template-columns:minmax(138px,0.92fr) minmax(150px,1.0fr) minmax(200px,1.48fr) minmax(112px,0.72fr) minmax(140px,0.9fr);gap:14px;align-items:end}
.afield{display:flex;flex-direction:column;gap:7px;text-align:left;min-width:0}
.afield label{font-size:12.5px;font-weight:600;color:var(--roo-ink-soft);padding-left:2px}
.afield-control{height:52px;border:1px solid var(--roo-line);border-radius:14px;background:var(--roo-white);padding:0 14px;display:flex;align-items:center;gap:10px;font-size:15px;color:var(--roo-ink);transition:border-color .18s,box-shadow .18s}
.afield-control:hover{border-color:#B9CCEC}
.afield-control svg{flex:none;color:var(--roo-ink-soft)}
.afield-control input{border:none;outline:none;background:none;width:100%;font-family:inherit;font-size:15px;color:var(--roo-ink);min-width:0}
.analysis-action .btn{width:100%;height:52px}
.analysis-note{display:flex;align-items:center;gap:8px;justify-content:center;margin-top:14px;font-size:12.5px;color:var(--roo-ink-soft)}
.analysis-note svg{color:var(--roo-positive)}

/* ============================================================
   CUSTOM COMBOBOX / LISTBOX (§4) — replaces native <select>
   ============================================================ */
.combo{position:relative;width:100%}
.combo-trigger{height:52px;width:100%;border:1px solid var(--roo-line);border-radius:14px;background:#fff;padding:0 14px;display:flex;align-items:center;gap:10px;font-size:15px;color:var(--roo-ink);cursor:pointer;transition:border-color .18s,box-shadow .18s;text-align:left}
.combo-trigger:hover{border-color:#B9CCEC}
.combo-trigger:focus-visible{outline:2px solid var(--roo-blue);outline-offset:2px}
.combo.open .combo-trigger{border-color:var(--roo-blue);box-shadow:0 0 0 3px var(--roo-blue-soft)}
.afield-invalid .combo-trigger{border-color:var(--roo-blue);box-shadow:0 0 0 3px var(--roo-blue-soft)}
.combo-trigger svg.lead{flex:none;color:var(--roo-ink-soft)}
.combo-val{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.combo-val.placeholder{color:#93A0B7}
.combo-chev{flex:none;width:16px;height:16px;color:var(--roo-ink-soft);transition:transform .22s var(--ease-header)}
.combo.open .combo-chev{transform:rotate(180deg)}
.combo-pop{position:absolute;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--roo-line);border-radius:16px;box-shadow:0 20px 50px -18px rgba(6,26,74,0.4);padding:6px;max-height:320px;overflow-y:auto;z-index:30;display:none}
.combo.open .combo-pop{display:block}
.combo-pop.flip{top:auto;bottom:calc(100% + 6px)}
.combo-group-label{font-size:11px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:var(--roo-ink-soft);padding:10px 12px 5px}
.combo-opt{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;font-size:14.5px;color:var(--roo-ink);cursor:pointer}
.combo-opt:hover,.combo-opt.active{background:var(--roo-blue-soft)}
.combo-opt[aria-selected="true"]{color:var(--roo-blue);font-weight:600}
.combo-opt .check{width:16px;height:16px;color:var(--roo-blue);flex:none;opacity:0}
.combo-opt[aria-selected="true"] .check{opacity:1}
/* A07: subtle Recommended badge — Analysis area only, pale blue bg + small blue text (no dominant filled pill) */
.combo-opt .rec-badge{font-size:10.5px;font-weight:600;color:var(--roo-blue);background:var(--roo-blue-soft);border-radius:999px;padding:2px 8px;letter-spacing:0.01em}
.combo-opt[aria-selected="true"] .rec-badge{background:#fff}
/* Location autocomplete uses same family */
.loc-suggest{position:absolute;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--roo-line);border-radius:16px;box-shadow:0 20px 50px -18px rgba(6,26,74,0.4);padding:6px;z-index:30;display:none}
.loc-suggest.open{display:block}
.loc-opt{min-height:44px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;font-size:14.5px;cursor:pointer}
.loc-opt:hover,.loc-opt.active{background:var(--roo-blue-soft)}
.loc-opt svg{color:var(--roo-ink-soft);flex:none}
/* A3: portalled dropdown — fixed to <body>, unclipped by the hero, above the header,
   scrolls internally on small screens. left/top/width/max-height are set inline by JS. */
.combo-pop--portal{position:fixed;left:auto;right:auto;top:auto;z-index:400;overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 24px 60px -20px rgba(6,26,74,0.45)}
/* V5.2: searchable business-type combobox (POPULAR + search across all canonical types) */
#bt-pop{padding:0;overflow:hidden;display:none;flex-direction:column}
.bt-search-wrap{position:relative;flex:none;padding:10px;border-bottom:1px solid var(--roo-line);background:#fff}
.bt-search-wrap .bt-sicon{position:absolute;left:22px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--roo-ink-soft);pointer-events:none}
#bt-search{width:100%;height:42px;border:1px solid var(--roo-line);border-radius:11px;padding:0 12px 0 36px;font-size:14.5px;color:var(--roo-ink);background:#F5F8FF;font-family:inherit}
#bt-search::placeholder{color:#93A0B7}
#bt-search:focus{outline:none;border-color:var(--roo-blue);background:#fff;box-shadow:0 0 0 3px var(--roo-blue-soft)}
.bt-results{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px;overscroll-behavior:contain}
#bt-pop .combo-opt{gap:8px}
.bt-opt-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bt-opt-group{font-size:11px;color:var(--roo-ink-soft);flex:none;white-space:nowrap}
.combo-opt[aria-selected="true"] .bt-opt-group{color:var(--roo-blue)}
.bt-noresult{padding:18px 12px;font-size:14px;color:var(--roo-ink-soft);text-align:center}

/* Trust line — dark foreground for legibility over pale floor (§5) */
.trust-line{position:relative;z-index:3;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:30px}
.trust-item{display:inline-flex;align-items:center;gap:9px;padding:0 20px;font-size:14px;color:var(--roo-ink-soft);font-weight:500}
.trust-item:not(:last-child){border-right:1px solid rgba(7,20,43,0.14)}
.trust-item svg{color:var(--roo-blue);flex:none}

/* ============================================================
   REVEAL MOTION
   ============================================================ */
.js .reveal{opacity:0;transform:translateY(16px) scale(0.99);filter:blur(6px);animation:rooRevealSafety 1ms linear 3s forwards}
@keyframes rooRevealSafety{to{opacity:1;transform:none;filter:none}}
.js .reveal.in{opacity:1;transform:none;filter:none;transition:opacity .82s var(--ease-reveal),transform .82s var(--ease-reveal),filter .82s var(--ease-reveal)}
.js .hero-stagger{opacity:0;transform:translateY(15px)}
.js .hero-stagger.in{opacity:1;transform:none;transition:opacity .7s var(--ease-reveal),transform .7s var(--ease-reveal)}

/* ============================================================
   SECTION SCAFFOLD
   ============================================================ */
.section{padding:var(--section-y-desktop) 0}
.section--dark{background:var(--roo-ink);color:#fff}
.section-head{max-width:680px;margin:0 auto 40px;text-align:center}
.section-head.left{margin-left:0;text-align:left}
.section h2{font-size:clamp(30px,3vw,44px);line-height:1.12;font-weight:500;letter-spacing:-0.02em}
.section--dark h2{color:#fff}
.section-lead{font-size:18px;line-height:1.66;color:var(--roo-ink-soft);max-width:620px;margin:18px auto 0}
.section--dark .section-lead{color:rgba(255,255,255,0.82)}
.section-head.left .section-lead{margin-left:0;margin-right:0}
/* A4: Find → Validate → Compare method flow (Process section only) */
.method-flow{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin-top:20px;font-family:var(--font-display);font-size:13.5px;font-weight:600;letter-spacing:0.03em}
.method-flow .mf-step{background:var(--roo-blue-soft);color:var(--roo-blue);border-radius:999px;padding:6px 15px}
.method-flow .mf-arrow{color:var(--roo-ink-soft)}

/* WHY ROOCATION */
/* V5.2: compacted ~25-30% vs V4 — a controlled ~60vh reveal, not a full-screen scroll */
.why-section{padding:56px 0 60px;background:var(--roo-canvas);min-height:min(60vh,660px);display:flex;align-items:center}
.why-inner{max-width:860px;margin:0 auto;text-align:center}
.why-statement{font-family:var(--font-display);font-weight:500;font-size:clamp(28px,3.4vw,46px);line-height:1.28;letter-spacing:-0.015em;margin-top:26px}
/* unlit words darkened to #7C8AA3 → ~3:1 on canvas, readable at all states (§13.4) */
.why-word{color:#7C8AA3;transition:color .3s ease}
.why-word.lit{color:var(--roo-ink)}

/* ============================================================
   A2 — WHAT ROOCATION READS (V5.2): the six signal cards start
   separated, then converge on scroll into one decision-ready view.
   Restyled premium from the V4 mechanism. NO centre glow / AI-scan
   orb. Desktop >=1100: pinned sticky choreography (transform+opacity,
   one rAF, stops offscreen). <1100: progressive reveal grid.
   Reduced motion: everything visible, static.
   ============================================================ */
.story-section{position:relative;height:min(200vh,2200px);background:linear-gradient(180deg,#F7F9FF 0%,#EDF2FF 52%,#F7F9FF 100%)}
.story-sticky{position:sticky;top:0;height:min(100vh,1100px);display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;padding:0 var(--gutter-desktop)}
.story-intro{flex:none;display:flex;flex-direction:column;align-items:center;gap:13px;text-align:center;margin-bottom:56px;will-change:opacity}
.story-eyebrow{pointer-events:auto}
.story-lead{max-width:520px;font-size:15.5px;line-height:1.6;color:var(--roo-ink-soft);margin:0}
.story-stage{position:relative;width:100%;max-width:980px;flex:none;height:52vh;min-height:404px;max-height:524px;margin:0 auto}
/* signal cards — premium, per-signal accent; positioned via JS transform on desktop */
.sig-set{display:contents}
.sig{position:absolute;left:0;top:0;width:234px;background:#fff;border:1px solid var(--roo-line);border-top:3px solid var(--sig,var(--roo-blue));border-radius:18px;box-shadow:0 22px 50px -26px rgba(6,26,74,0.32);padding:16px 18px 18px;will-change:transform,opacity}
/* A3: readable content fades via --cop (set by JS) BEFORE card bounds ever cross, so no
   readable label/metric/chart is on-screen while two cards approach the shared centre. */
.sig>*{opacity:var(--cop,1)}
.sig-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sig-ic{width:34px;height:34px;border-radius:10px;flex:none;background:var(--sigs,var(--roo-blue-soft));color:var(--sig,var(--roo-blue));display:flex;align-items:center;justify-content:center}
.sig-ic svg{width:17px;height:17px}
.sig-tw{display:flex;flex-direction:column;min-width:0}
.sig-name{font-size:13.5px;font-weight:600;color:var(--roo-ink);letter-spacing:-0.005em}
.sig-sub{font-size:11px;color:var(--roo-ink-soft)}
.sig .spark{height:40px}
.sig .sig-val{margin-top:8px}
.sig .cluster{margin-top:2px}
.sig .donut{margin-top:2px}
.sig .donut-ring{width:48px;height:48px}
.sig .route{margin-top:6px}
.sig .revdist{margin-top:2px}
.sig .revavg{margin-top:7px}
/* per-signal viz tint from the card's accent (reviews keep amber) */
.sig .donut-ring{background:conic-gradient(var(--sig) 0 72%,#E7EDF7 72% 100%)}
.sig .cluster{background:color-mix(in srgb,var(--sig) 8%,#fff)}
.sig .cluster .cx{background:var(--sig)}
.sig .cluster .cc{background:var(--roo-ink);box-shadow:0 0 0 4px color-mix(in srgb,var(--sig) 22%,transparent)}
.sig .route .node{background:var(--sig)}
.sig .route .line{background:repeating-linear-gradient(90deg,var(--sig) 0 5px,transparent 5px 9px)}
.sig .fitrow .bar i{background:var(--sig)}
.sig .spark span{background:linear-gradient(180deg,var(--sig),color-mix(in srgb,var(--sig) 35%,#fff))}
/* final consolidation — concise headline + support (B3) */
.story-final{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;opacity:0;pointer-events:none;padding:0 24px;gap:12px;will-change:opacity}
.story-final h3,.story-final h2{font-family:var(--font-display);font-size:clamp(28px,3.4vw,44px);font-weight:500;letter-spacing:-0.02em;color:var(--roo-ink);max-width:16ch;line-height:1.14;margin:0}
.story-final p{font-size:16px;color:var(--roo-ink-soft);max-width:420px;margin:0 auto;line-height:1.6}
.story-below{flex:none;margin-top:26px;display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;will-change:opacity}
.story-progress-label{font-size:12.5px;color:var(--roo-ink-soft);display:flex;align-items:center;gap:8px;opacity:.62;white-space:nowrap}
.story-demo-label{font-size:11px;color:var(--roo-ink-soft);opacity:.62;text-align:center;max-width:92vw}

/* P0.2 — <1100: simplified stable flow (desktop convergence runs ONLY >=1100). The six cards and the
   final summary are in normal document flow and READABLE WITHOUT JS (visible by default). The reveal
   is a progressive enhancement gated on .mob-anim (added by JS). Any leftover desktop inline transform
   is neutralised the moment JS leaves desktop mode — .story-section carries .desktop-motion ONLY while
   the pinned choreography is active — so a resize from desktop can never strand cards mid-transform. */
@media(max-width:1099px){
  .story-section{height:auto;background:linear-gradient(180deg,#F7F9FF,#EDF2FF 60%,#F7F9FF)}
  .story-sticky{position:static;height:auto;display:block;overflow:visible;padding:var(--section-y-tablet) 20px}
  .story-intro{margin:0 auto 28px}
  .story-stage{height:auto;min-height:0;max-height:none;max-width:760px;flex:none}
  .sig-set{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .sig{position:relative;left:auto;top:auto;width:auto;opacity:1;padding:24px}
  .story-final{position:relative;inset:auto;opacity:1;pointer-events:auto;margin-top:20px;padding:26px 20px;background:#fff;border:1px solid var(--roo-line);border-radius:20px;box-shadow:0 20px 46px -28px rgba(6,26,74,0.28)}
  /* kill any stale desktop inline transform when the choreography is not running */
  .story-section:not(.desktop-motion) .sig,
  .story-section:not(.desktop-motion) .story-final{transform:none!important;left:auto!important;top:auto!important}
  /* progressive reveal (opacity only, so it never conflicts with the transform reset) */
  .story-section.mob-anim .sig,
  .story-section.mob-anim .story-final{opacity:0;transition:opacity .55s var(--ease-reveal)}
  .story-section.mob-anim .sig.in-view,
  .story-section.mob-anim .story-final.in-view{opacity:1}
  .story-below{margin-top:18px}
  .story-progress-label{display:none}
}
@media(max-width:767px){
  .story-sticky{padding-left:20px;padding-right:20px}
  .sig-set{grid-template-columns:1fr;gap:18px}
  .rstack-deck{padding-left:0;padding-right:0;scroll-padding-left:0}
  #report-stack .wrap{padding-left:18px;padding-right:18px}
}
@media(prefers-reduced-motion:reduce){
  /* A3: no pinned convergence — show a complete, readable, non-converging grid + the final
     message beneath it. Force the flow layout so absolute cards never pile at 0,0. */
  .story-section{height:auto!important;background:linear-gradient(180deg,#F7F9FF,#EDF2FF 60%,#F7F9FF)}
  .story-sticky{position:static!important;height:auto!important;display:block!important;overflow:visible;padding:var(--section-y-tablet) var(--gutter-desktop)}
  .story-stage{height:auto!important;min-height:0!important;max-height:none!important;max-width:820px}
  .sig-set{display:grid!important;grid-template-columns:1fr 1fr 1fr;gap:24px}
  .js .sig{position:relative!important;left:auto!important;top:auto!important;width:auto!important;opacity:1!important;transform:none!important;padding:20px}
  .sig>*{opacity:1!important}
  .story-final{position:relative!important;inset:auto!important;opacity:1!important;transform:none!important;margin-top:26px;padding:26px 20px;background:#fff;border:1px solid var(--roo-line);border-radius:20px;box-shadow:0 20px 46px -28px rgba(6,26,74,0.28)}
  .story-intro{opacity:1!important;margin-bottom:28px}
  .story-progress-label{display:none}
}
@media(prefers-reduced-motion:reduce) and (max-width:900px){ .sig-set{grid-template-columns:1fr 1fr} }
@media(prefers-reduced-motion:reduce) and (max-width:600px){ .sig-set{grid-template-columns:1fr} }

/* demand sparkline */
.spark{display:flex;align-items:flex-end;gap:3px;height:34px}
.spark span{flex:1;background:linear-gradient(180deg,var(--roo-blue),#9EC2FF);border-radius:2px;min-height:5px}
.sig-val{font-family:var(--font-number);font-weight:700;font-size:20px;color:var(--roo-ink);display:flex;align-items:baseline;gap:5px;margin-top:2px}
.sig-val .up{font-size:12px;color:var(--roo-positive);font-weight:600}
/* competition cluster */
.cluster{position:relative;height:44px;background:#F2F6FF;border-radius:9px;overflow:hidden}
.cluster .cx{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--roo-blue)}
.cluster .cc{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:11px;height:11px;border-radius:50%;background:var(--roo-ink);box-shadow:0 0 0 4px rgba(7,20,43,0.12)}
/* catchment donut */
.donut{display:flex;align-items:center;gap:12px}
.donut-ring{width:44px;height:44px;border-radius:50%;background:conic-gradient(var(--roo-blue) 0 72%,#E3EAF6 72% 100%);flex:none;position:relative}
.donut-ring::after{content:"";position:absolute;inset:8px;background:#fff;border-radius:50%}
.donut-num{font-family:var(--font-number);font-weight:700;font-size:19px;color:var(--roo-ink)}
/* customer fit bars */
.fitbars{display:flex;flex-direction:column;gap:5px}
.fitrow{display:flex;align-items:center;gap:7px;font-size:10.5px;color:var(--roo-ink-soft)}
.fitrow .bar{flex:1;height:6px;border-radius:3px;background:#E3EAF6;overflow:hidden}
.fitrow .bar i{display:block;height:100%;background:var(--roo-blue);border-radius:3px}
/* access route */
.route{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--roo-ink);margin-top:2px}
.route .node{width:9px;height:9px;border-radius:50%;background:var(--roo-blue);flex:none}
.route .line{flex:1;height:2px;background:repeating-linear-gradient(90deg,var(--roo-blue) 0 5px,transparent 5px 9px)}
.route .walk{font-family:var(--font-number);font-weight:700;font-size:15px;color:var(--roo-ink)}
/* reviews distribution */
.revdist{display:flex;flex-direction:column;gap:3px}
.revrow{display:flex;align-items:center;gap:6px}
.revrow .rl{font-size:9px;color:var(--roo-ink-soft);width:8px}
.revrow .rbar{flex:1;height:5px;background:#E3EAF6;border-radius:3px;overflow:hidden}
.revrow .rbar i{display:block;height:100%;background:var(--roo-amber)}
.revavg{font-family:var(--font-number);font-weight:700;font-size:17px;color:var(--roo-ink);display:flex;align-items:baseline;gap:4px}

.pill-pos{color:var(--roo-positive)}.pill-amber{color:var(--roo-amber)}
.dotm{width:8px;height:8px;border-radius:50%}
.dotm.pos{background:var(--roo-positive)}.dotm.amber{background:var(--roo-amber)}.dotm.neu{background:#9AA9C1}

/* PROCESS — compact three-step (V5.1) */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.step-card{background:#fff;border:1px solid var(--roo-line);border-radius:var(--radius-card);padding:26px 26px 28px;transition:transform .2s var(--ease-reveal),border-color .2s,box-shadow .2s}
.step-card:hover{transform:translateY(-3px);border-color:#C4D4F0;box-shadow:0 20px 44px -22px rgba(6,26,74,0.25)}
/* A4: quiet editorial composition — blue eyebrow number upper-left, accent-tinted icon
   container (48–52px) upper-right, title + copy underneath. No dark filled number square. */
.step-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}
.step-n{font-family:var(--font-number);font-weight:700;font-size:14px;letter-spacing:0.12em;color:var(--roo-blue);line-height:1;padding-top:6px}
.step-ic{width:50px;height:50px;border-radius:15px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--accs,var(--roo-blue-soft));color:var(--acc,var(--roo-blue))}
.step-ic svg{width:24px;height:24px}
.step-card h3,.step-card h2{font-size:20px;font-weight:600;font-family:var(--font-display);color:var(--roo-ink);letter-spacing:-0.01em}
.step-card p{font-size:14.5px;color:var(--roo-ink-soft);margin-top:8px;line-height:1.55}
@media(max-width:767px){.steps{grid-template-columns:1fr;gap:12px}}

/* SAMPLE REPORT window */
.sample-window{max-width:1000px;margin:0 auto;background:#fff;border:1px solid var(--roo-line);border-radius:var(--radius-large);box-shadow:0 40px 90px -40px rgba(6,26,74,0.4);overflow:hidden}
.sw-bar{display:flex;align-items:center;gap:7px;padding:14px 18px;border-bottom:1px solid var(--roo-line);background:#FBFCFF}
.sw-dot{width:11px;height:11px;border-radius:50%}
.sw-dot.r{background:#FF6058}.sw-dot.y{background:#FFBD2E}.sw-dot.g{background:#28C840}
.sw-url{margin-left:12px;font-size:12.5px;color:var(--roo-ink-soft);background:#fff;border:1px solid var(--roo-line);border-radius:8px;padding:5px 14px}
.sw-body{padding:28px 30px}
.sw-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:22px}
.sw-loc h4{font-size:20px;font-weight:600;font-family:var(--font-display)}
.sw-loc .sw-addr{font-size:13.5px;color:var(--roo-ink-soft);margin-top:3px}
.sw-score{text-align:right}
.sw-score .num{font-family:var(--font-number);font-weight:900;font-size:44px;line-height:1;color:var(--roo-ink)}
.sw-score .lbl{font-size:12px;color:var(--roo-ink-soft);margin-top:4px}
.sw-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.sw-kpi{border:1px solid var(--roo-line);border-radius:14px;padding:16px}
.sw-kpi .k{font-size:12.5px;color:var(--roo-ink-soft);display:flex;align-items:center;gap:7px}
.sw-kpi .v{font-family:var(--font-number);font-weight:700;font-size:26px;margin-top:8px}
.sw-kpi .f{font-size:12px;font-weight:600;margin-top:4px}
.sw-source{margin-top:20px;padding-top:16px;border-top:1px solid #EEF2FA;font-size:12px;color:var(--roo-ink-soft);display:flex;align-items:center;gap:8px}
.demo-tag{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;color:var(--roo-ink-soft);background:var(--roo-blue-soft);border-radius:999px;padding:6px 14px;margin:0 auto 22px;width:fit-content}

/* SAMPLE REPORT — report-navigation interface (V5.1) */
.sw-report{display:grid;grid-template-columns:220px 1fr}
.sw-nav{border-right:1px solid var(--roo-line);padding:16px 12px;background:#FBFCFF}
.sw-nav-title{font-size:11px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:var(--roo-ink-soft);padding:2px 10px 10px}
.sw-nav-item{display:block;padding:8px 10px;border-radius:8px;font-size:12.5px;color:var(--roo-ink-soft);border-left:2px solid transparent;line-height:1.3}
.sw-nav-item.active{color:var(--roo-blue);font-weight:600;background:var(--roo-blue-soft);border-left-color:var(--roo-blue)}
.sw-doc{padding:22px 26px}
.sw-crumb{font-size:12px;color:var(--roo-ink-soft)}
.sw-doc-head h4,.sw-doc-head h3{font-size:19px;font-weight:600;font-family:var(--font-display);color:var(--roo-ink);margin-top:4px}
.sw-doc-body{margin-top:16px;display:flex;flex-direction:column;gap:10px}
.sw-doc-body > p{font-size:14px;color:var(--roo-ink-soft);line-height:1.6}
.sw-finding{display:grid;grid-template-columns:1fr auto;gap:3px 14px;align-items:baseline;padding:12px 14px;border:1px solid var(--roo-line);border-radius:12px;background:#FBFCFF}
.swf-k{font-size:13.5px;font-weight:600;color:var(--roo-ink)}
.swf-v{font-size:13px;font-weight:600;text-align:right}
.swf-src{grid-column:1 / -1;font-size:11.5px;color:var(--roo-ink-soft);line-height:1.4}
.sw-foot{padding:12px 18px;border-top:1px solid var(--roo-line);background:#FBFCFF;font-size:12px;color:var(--roo-ink-soft);text-align:center}
/* A6 (V5.4): evidence-depth view — no repeated 01–09 menu; each finding shows Source,
   Confidence, Limitation and Recommended check so it reads as a real evidence product. */
.sw-report-doc{display:block}
.sw-report-doc .sw-doc{padding:26px 30px}
.sw-doc-head h4,.sw-doc-head h3{max-width:52ch}
.sw-doc-body{margin-top:20px;display:flex;flex-direction:column;gap:16px}
.sw-ev{border:1px solid var(--roo-line);border-radius:14px;padding:20px 22px;background:#fff}
.sw-ev-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px;padding-bottom:13px;border-bottom:1px solid #EEF2FA}
.sw-ev-k{font-size:16.5px;font-weight:600;font-family:var(--font-display);color:var(--roo-ink);letter-spacing:-0.01em}
.sw-ev-v{font-size:13.5px;font-weight:600;text-align:right;flex:none}
.sw-ev-meta{display:grid;grid-template-columns:1fr 1fr;gap:14px 26px;margin:0}
.sw-ev-meta > div{display:flex;flex-direction:column;gap:4px;min-width:0}
.sw-ev-meta dt{font-size:10px;font-weight:700;letter-spacing:0.07em;text-transform:uppercase;color:var(--roo-blue)}
.sw-ev-meta dd{margin:0;font-size:13px;color:var(--roo-ink);line-height:1.45;display:flex;align-items:center;gap:9px}
.conf-meter{display:inline-block;width:62px;height:6px;border-radius:3px;background:#E3EAF6;overflow:hidden;position:relative;flex:none}
.conf-meter i{position:absolute;left:0;top:0;height:100%;width:var(--w,80%);background:var(--roo-positive);border-radius:3px}
.conf-meter.amber i{background:var(--roo-amber)}
@media(max-width:640px){ .sw-ev-meta{grid-template-columns:1fr} }
@media(max-width:767px){
  .sw-report:not(.sw-report-doc){grid-template-columns:1fr}
  .sw-nav{border-right:none;border-bottom:1px solid var(--roo-line);display:flex;gap:6px;overflow-x:auto;padding:10px}
  .sw-nav-title{display:none}
  .sw-nav-item{white-space:nowrap;border-left:none;padding:7px 10px}
  .sw-nav-item.active{border-left:none}
}

/* EVIDENCE dark */
.proof-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.proof-card{background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:20px;padding:24px 22px}
/* §7.1: semantic icon tile + fact-led title, no giant numeral. §7.2 accents only on the tile. */
.proof-card .picon{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;margin-bottom:15px}
.proof-card .picon svg{width:21px;height:21px}
.proof-card .picon.acc-blue{background:rgba(23,105,255,0.16);color:#9EC2FF}
.proof-card .picon.acc-amber{background:rgba(200,135,18,0.18);color:#F0C067}
.proof-card .picon.acc-green{background:rgba(21,154,102,0.18);color:#6FD3A3}
.proof-card .picon.acc-teal{background:rgba(20,160,180,0.18);color:#71D2DE}
.proof-card .ptitle{font-size:15.5px;font-weight:600;color:#fff;line-height:1.3;font-family:var(--font-display)}
.proof-card .pdesc{font-size:13px;color:rgba(255,255,255,0.72);margin-top:7px;line-height:1.5}
.source-strip{margin-top:38px;display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.source-tag{font-size:13px;color:rgba(255,255,255,0.88);border:1px solid rgba(255,255,255,0.18);border-radius:999px;padding:8px 18px}
.disclaimer-note{text-align:center;font-size:12.5px;color:rgba(255,255,255,0.58);max-width:640px;margin:26px auto 0;line-height:1.6}

/* V5.1: data-source categories now live inside the (dark) Evidence section */
.ev-sources{margin-top:32px;padding-top:26px;border-top:1px solid rgba(255,255,255,0.12)}
.ev-sources-title{text-align:center;font-size:13px;font-weight:600;color:rgba(255,255,255,0.72);margin-bottom:16px;letter-spacing:0.02em}
.ev-sources-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 24px;max-width:920px;margin:0 auto}
.ev-src{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:12.5px;font-weight:600;letter-spacing:0.04em;color:rgba(255,255,255,0.9);text-transform:uppercase;white-space:nowrap}
.ev-src svg{width:20px;height:20px;color:#9EC2FF;flex:none}
@media(max-width:767px){.ev-src{font-size:11.5px}.ev-sources-row{gap:10px 16px}}

/* PRICING — expanded content + matrix (§7.2) */
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:stretch}
.price-card{background:#fff;border:1px solid var(--roo-line);border-radius:var(--radius-card);padding:30px 26px;display:flex;flex-direction:column;position:relative;transition:transform .2s var(--ease-reveal),box-shadow .2s}
.price-card:hover{transform:translateY(-3px);box-shadow:0 20px 44px -22px rgba(6,26,74,0.2)}
.price-card.featured{border-color:var(--roo-blue);box-shadow:0 20px 50px -24px rgba(23,105,255,0.4)}
.price-badge{position:absolute;top:-12px;left:26px;background:var(--roo-blue);color:#fff;font-size:12px;font-weight:600;padding:5px 14px;border-radius:999px}
.price-name{font-size:17px;font-weight:600;font-family:var(--font-display)}
.price-desc{font-size:13.5px;color:var(--roo-ink-soft);margin-top:6px;min-height:38px}
.price-amt{display:flex;align-items:baseline;gap:4px;margin:18px 0 2px}
.price-amt .cur{font-size:18px;font-weight:600;color:var(--roo-ink-soft)}
.price-amt .num{font-family:var(--font-number);font-weight:900;font-size:48px;line-height:1;color:var(--roo-ink)}
.price-future{font-size:12.5px;color:var(--roo-ink-soft);margin-bottom:16px}
.price-future b{color:var(--roo-ink);font-weight:600}
.price-note{font-size:12.5px;color:var(--roo-ink-soft);max-width:560px;margin:12px auto 0;line-height:1.5}
.price-scope{font-size:12px;color:var(--roo-blue);font-weight:600;margin-bottom:14px}
.price-feats{list-style:none;padding:0;margin:0 0 22px;display:flex;flex-direction:column;gap:9px}
.price-feats li{font-size:13.5px;color:var(--roo-ink);display:flex;align-items:flex-start;gap:9px;line-height:1.45}
.price-feats svg{color:var(--roo-positive);flex:none;margin-top:2px}
.price-card .btn{margin-top:auto}
.price-matrix-wrap{margin-top:28px}
.matrix-toggle{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;border:1px solid var(--roo-line);border-radius:14px;background:#fff;font-size:14px;font-weight:600;color:var(--roo-ink);transition:background .18s,border-color .18s}
.matrix-toggle:hover{background:var(--roo-blue-soft);border-color:var(--roo-blue)}
.matrix-toggle .chev{width:16px;height:16px;transition:transform .25s var(--ease-header)}
.matrix-toggle[aria-expanded="true"] .chev{transform:rotate(180deg)}
.matrix-panel{max-height:0;overflow:hidden;transition:max-height .4s var(--ease-header)}
.matrix-inner{padding-top:18px;overflow-x:auto;width:100%;max-width:100%;-webkit-overflow-scrolling:touch}
.matrix-table{width:100%;border-collapse:collapse;min-width:520px}
.matrix-table th,.matrix-table td{padding:13px 16px;text-align:left;font-size:13.5px;border-bottom:1px solid var(--roo-line)}
.matrix-table thead th{font-size:12px;font-weight:600;color:var(--roo-ink-soft);text-transform:uppercase;letter-spacing:0.03em}
.matrix-table thead th:not(:first-child){text-align:center}
.matrix-table td:not(:first-child){text-align:center}
/* C4: comparison ticks use the same SVG check as the pricing feature lists (no font glyphs) */
.matrix-table .cmark{display:inline-flex;align-items:center;justify-content:center}
.matrix-table .cmark svg{width:19px;height:19px}
.matrix-table .cmark.yes{color:var(--roo-positive)}
.matrix-table .cmark.no{color:#C6CFDD}
.matrix-table .cmark.no svg{width:16px;height:16px}
.matrix-table .feat-name{color:var(--roo-ink);font-weight:500}
.mon-wrap{display:flex;justify-content:center;margin-top:26px}
.monitoring-teaser{display:inline-flex;align-items:center;gap:10px;background:var(--roo-blue-soft);border-radius:999px;padding:10px 20px;font-size:13.5px;color:var(--roo-ink-soft)}
.monitoring-teaser b{color:var(--roo-ink);font-weight:600}

/* INSIGHTS */
.insights-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:18px}
.insight-feature{background:#fff;border:1px solid var(--roo-line);border-radius:var(--radius-card);overflow:hidden;transition:transform .2s var(--ease-reveal),box-shadow .2s;display:flex;flex-direction:column}
.insight-feature:hover{transform:translateY(-3px);box-shadow:0 20px 44px -22px rgba(6,26,74,0.2)}
.if-visual{height:200px;background:linear-gradient(135deg,#0A2D78,#1769FF);position:relative;overflow:hidden}
.if-visual .grid-bg{position:absolute;inset:0;background:linear-gradient(90deg,transparent 39px,rgba(255,255,255,0.08) 40px) 0 0/40px 40px,linear-gradient(0deg,transparent 39px,rgba(255,255,255,0.08) 40px) 0 0/40px 40px}
/* Article sample image cover — true 16:9 so the whole artwork shows (addendum §4/§6). No overlay/crop. */
.if-cover{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;background:#0A2D78;line-height:0}
.if-cover img{width:100%;height:auto;display:block}
/* B2/D4: designed fallback if the sample cover ever fails to load — never a broken-image icon */
.if-cover .cover-fallback{display:none;position:absolute;inset:0;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:linear-gradient(135deg,#04143F,#0A2D78 55%,#1769FF);line-height:1.3}
.if-cover .cover-fallback .cf-logo{width:150px;height:auto;filter:brightness(0) invert(1);opacity:.92}
.if-cover .cover-fallback .cf-label{font-size:12px;letter-spacing:0.03em;color:rgba(255,255,255,0.82)}
.if-cover.img-fallback .cover-fallback{display:flex}
.if-body{padding:24px 26px}
.insight-side{display:flex;flex-direction:column;gap:18px}
.insight-card{background:#fff;border:1px solid var(--roo-line);border-radius:20px;padding:22px 24px;transition:transform .2s var(--ease-reveal),box-shadow .2s;flex:1;display:block}
.insight-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px -20px rgba(6,26,74,0.2)}
.imeta{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--roo-ink-soft);margin-bottom:10px}
.imeta .cat{color:var(--roo-blue);font-weight:600}
.insight-feature h3,.insight-card h3,.insight-card .h3-style{font-size:19px;font-weight:500;line-height:1.3;letter-spacing:-0.01em}
.insight-card h3,.insight-card .h3-style{font-size:16px}
.iexc{font-size:13.5px;color:var(--roo-ink-soft);margin-top:8px;line-height:1.5}

/* FAQ — A5 "Location Notes Grid": centred header, 2-col rounded cards (1-col mobile),
   numbered nodes, chevron control (no plus/X), open card = pale-blue + blue border,
   single-open, final navy CTA card. Subtle catchment contour behind the grid. */
/* subtle catchment contour behind the grid — as a self-clipping background so it can never overflow */
.faq-layout{display:grid;grid-template-columns:0.82fr 1.18fr;gap:52px;align-items:start;max-width:var(--landing-max);margin:0 auto}
.faq-aside{position:sticky;top:118px}
.faq-aside h2{margin-top:16px}
.faq-aside .section-lead{margin-left:0;margin-right:0}
.faq-aside-cta{display:inline-flex;align-items:center;gap:9px;height:46px;padding:0 22px;margin-top:26px;border-radius:var(--radius-pill);background:var(--roo-blue);color:#fff;font-weight:600;font-size:14.5px;transition:transform .18s,background .18s}
.faq-aside-cta:hover{transform:translateY(-1px);background:var(--roo-blue-hover)}
.faq-aside-cta svg{width:17px;height:17px}
.faq-list{display:flex;flex-direction:column;border-top:1px solid var(--roo-line)}
/* E (V5.3): line-based / flat — thin dividers, no card backgrounds, no blue outline box */
.faq-item{border-bottom:1px solid var(--roo-line);background:transparent}
.faq-q{width:100%;text-align:left;display:flex;align-items:center;gap:16px;padding:22px 10px;font-size:16px;font-weight:500;color:var(--roo-ink);font-family:var(--font-display);transition:color .18s}
.faq-q:hover .faq-qt{color:var(--roo-blue)}
.faq-qt{flex:1;min-width:0;line-height:1.36}
/* real + (closed) / - (open) control, drawn in CSS — never a chevron or x */
.faq-ic{position:relative;width:20px;height:20px;flex:none}
.faq-ic::before,.faq-ic::after{content:"";position:absolute;background:var(--roo-blue);border-radius:2px;transition:opacity .25s var(--ease-header),transform .3s var(--ease-header)}
.faq-ic::before{left:3px;right:3px;top:9px;height:2px}
.faq-ic::after{top:3px;bottom:3px;left:9px;width:2px}
.faq-item.open .faq-ic::after{opacity:0;transform:scaleY(0)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .35s var(--ease-header)}
.faq-a-inner{padding:0 10px 22px 10px;font-size:14px;color:var(--roo-ink-soft);line-height:1.6}

/* FINAL CTA + FOOTER */
.final-cta{text-align:center;padding:84px var(--gutter-desktop);background:linear-gradient(165deg,#04143F 0%,#082A77 40%,#1769FF 100%);color:#fff}
.final-cta h2{font-size:clamp(32px,3.4vw,50px);font-weight:500;color:#fff;max-width:720px;margin:0 auto;letter-spacing:-0.02em}
.final-cta .fc-sub{font-size:18px;color:rgba(255,255,255,0.88);margin:18px auto 0;max-width:560px}
.final-cta .hero-ctas{margin-top:34px}
.site-footer{background:var(--roo-canvas);border-top:1px solid var(--roo-line);padding:64px var(--gutter-desktop) 40px}
.footer-inner{max-width:var(--landing-max);margin:0 auto}
.footer-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;margin-bottom:44px}
.footer-brand .brand-logo{filter:none;height:24px;margin-bottom:14px}
.footer-tag{font-size:13.5px;color:var(--roo-ink-soft);max-width:30ch;line-height:1.55}
/* C (V5): footer social — bare near-black glyphs (no tile/border/frame/shadow), ~22px icon,
   ~18px spacing, hover = Roocation blue + 2px lift, an invisible 44×44 touch target via
   ::before, and a visible keyboard focus ring (no permanent frame). Routing integration-pending. */
.footer-social{display:flex;gap:18px;margin-top:18px}
.footer-social .soc-link{position:relative;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;color:var(--roo-ink);background:none;border:none;padding:0;cursor:pointer;transition:color .18s,transform .18s}
.footer-social .soc-link svg{width:22px;height:22px}
.footer-social .soc-link::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px} /* invisible ≥44×44 touch target */
.footer-social .soc-link:hover{color:var(--roo-blue);transform:translateY(-2px)}
.footer-social .soc-link:focus-visible{outline:2px solid var(--roo-blue);outline-offset:5px;border-radius:5px}
.footer-col h5{font-size:12.5px;font-weight:600;color:var(--roo-ink);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:14px}
.footer-col a{display:block;font-size:14px;color:var(--roo-ink-soft);padding:6px 0;transition:color .18s}
.footer-col a:hover{color:var(--roo-blue)}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;padding-top:28px;border-top:1px solid var(--roo-line);font-size:13px;color:var(--roo-ink-soft)}
.footer-bottom a{color:var(--roo-ink-soft)}.footer-bottom a:hover{color:var(--roo-blue)}

/* checkpoint ribbon */
.cp-ribbon{position:fixed;bottom:16px;left:16px;z-index:200;background:var(--roo-ink);color:#fff;border-radius:12px;padding:10px 15px;font-size:12px;box-shadow:0 10px 30px -10px rgba(0,0,0,0.5);display:flex;align-items:center;gap:9px;max-width:360px;line-height:1.4}
.cp-ribbon b{color:#9EC2FF}
.cp-close{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,0.7);flex:none}
.cp-close:hover{background:rgba(255,255,255,0.12);color:#fff}
/* V5.2: honest pending-production CTA state + toast (no fake navigation) */
[data-placeholder]{cursor:default}
.pending-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(12px);background:var(--roo-ink);color:#fff;font-size:13px;font-weight:500;padding:11px 17px;border-radius:11px;box-shadow:0 16px 40px -12px rgba(0,0,0,0.45);z-index:500;opacity:0;transition:opacity .25s var(--ease-header),transform .25s var(--ease-header);pointer-events:none;max-width:90vw;text-align:center}
.pending-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============================================================
   RESPONSIVE — mobile menu switches at ~1024px (§10)
   ============================================================ */
@media(max-width:1099px){
  :root{--gutter-desktop:var(--gutter-tablet)}
  .wrap,.site-header,.final-cta,.site-footer,.mega{padding-left:var(--gutter-tablet);padding-right:var(--gutter-tablet)}
  .section{padding:var(--section-y-tablet) 0}
  .main-nav,.header-login{display:none}
  .menu-btn{display:flex}
  .mega{display:none} /* desktop-only; drawer handles Product on tablet/mobile — prevents grid overflow */
  .analysis-fields{grid-template-columns:1fr 1fr;gap:14px}
  .analysis-action{grid-column:span 2}
  .proof-grid{grid-template-columns:repeat(2,1fr)}
  .footer-top{grid-template-columns:1fr 1fr}
}
@media(max-width:767px){
  :root{--gutter-desktop:var(--gutter-mobile);--gutter-tablet:var(--gutter-mobile)}
  .wrap,.site-header,.final-cta,.site-footer,.mega{padding-left:var(--gutter-mobile);padding-right:var(--gutter-mobile)}
  .section{padding:var(--section-y-mobile) 0}
  .hero{padding-top:84px;min-height:auto;padding-bottom:52px}
  .hero h1{font-size:clamp(32px,8vw,44px)}
  .hero-ctas{flex-direction:column;width:100%}
  .hero-ctas .btn{width:100%}
  .analysis-fields{grid-template-columns:1fr}
  .analysis-action{grid-column:span 1}
  .trust-line{gap:4px 0;max-width:340px}
  .trust-item{border-right:none!important;padding:7px 10px;width:50%;justify-content:flex-start;font-size:13px}
  .why-statement{font-size:clamp(24px,6vw,32px)}
  .proof-grid{grid-template-columns:1fr 1fr}
  .price-grid{grid-template-columns:1fr}
  .insights-grid{grid-template-columns:1fr}
  .faq-layout{grid-template-columns:1fr;gap:26px}
  .faq-aside{position:static}
  .sw-grid{grid-template-columns:1fr}
  .footer-top{grid-template-columns:1fr 1fr;gap:28px}
  .footer-bottom{flex-direction:column;align-items:flex-start}
  .sw-head{flex-direction:column}.sw-score{text-align:left}
  .cp-ribbon{max-width:calc(100vw - 32px)}
  /* D (V5.3): compact PILL — 999px radius, ~16px inline margin, CTA 44px with 9px breathing room,
     logo/CTA/hamburger vertically centred, identical top & scrolled geometry. */
  .site-header{padding-top:max(10px,env(safe-area-inset-top));padding-bottom:10px;padding-left:16px;padding-right:16px}
  .site-header.scrolled{padding-top:max(10px,env(safe-area-inset-top));padding-bottom:10px}
  .site-header .header-inner{padding:9px 8px 9px 10px;border-radius:999px}
  .site-header.scrolled .header-inner{padding:9px 8px 9px 10px;border-radius:999px;box-shadow:0 6px 18px -12px rgba(7,20,43,0.16)}
  /* B1: directional reveal — transform only (no layout jump), smooth colour so no abrupt pop */
  .site-header{transition:transform .32s var(--ease-header),padding .28s var(--ease-header),background .28s var(--ease-header);will-change:transform}
  .site-header .header-inner{transition:background .28s var(--ease-header),box-shadow .28s var(--ease-header),border-color .28s var(--ease-header)}
  .site-header.hide-up{transform:translateY(-165%)}
  .site-header .brand-logo{height:19px}
  .brand-link{padding:0 8px}
  .header-cta{height:44px;padding:0 16px;font-size:14px}
  .cta-get{display:none}
  .menu-btn{width:44px;height:44px;border-radius:14px}
  .menu-btn svg{width:20px;height:20px}
  /* C2: tighter Why→signals rhythm — content height on mobile, reduced top/bottom gaps */
  .why-section{padding:48px 0 44px;min-height:0}
}
@media(max-width:400px){
  .proof-grid{grid-template-columns:1fr}
  .header-cta{padding:0 13px;font-size:13.5px}
  .header-actions{gap:5px}
  .site-header.scrolled .header-inner{padding-left:14px;padding-right:10px}
  .brand-link{padding:0 6px}
}

/* REDUCED MOTION (§13.5) — static composition, no overlapping canvas */
@media(prefers-reduced-motion:reduce){
  *{animation-duration:0.001ms!important;transition-duration:0.001ms!important}
  .js .reveal{opacity:1!important;transform:none!important;filter:none!important}
  .js .hero-stagger{opacity:1!important;transform:none!important}
  .why-word{color:var(--roo-ink)!important}
  #hero-canvas{opacity:0.5}
}

/* V5.1: mobile length reduction — tighten the tall stacked blocks */
@media(max-width:767px){
  .section-head{margin-bottom:26px}
  .price-card{padding:24px 20px}
  .price-feats{gap:7px;margin-bottom:16px}
  .proof-card{padding:18px 16px}
  .proof-grid{gap:12px}
  .ev-sources{margin-top:22px;padding-top:20px}
  .final-cta{padding-top:54px;padding-bottom:54px}
  .rstack-sticky{padding-top:42px;padding-bottom:42px}
}
@media(max-width:400px){
  .step-card{padding:20px}
  .price-card{padding:22px 18px}
  .price-desc{min-height:0}
  .price-feats li{line-height:1.4}
  .section-head{margin-bottom:22px}
  .final-cta{padding-top:46px;padding-bottom:46px}
  .hero h1{font-size:clamp(30px,7.6vw,40px)}
}
@media(max-width:360px){
  :root{--section-y-mobile:30px}
  .final-cta{padding-top:40px;padding-bottom:40px}
  .rstack-sticky{padding-top:36px;padding-bottom:36px}
  .section-head{margin-bottom:20px}
}

/* ============================================================
   B — NINE-SECTION REPORT STACK ("Inside the full report")
   Desktop ≥1100: compact pinned deck, one sheet forward at a time (01/09),
   converging into a Full Report cover. <1100: scroll-snap carousel (1/9).
   Reduced motion: static grid of all nine + the cover.
   ============================================================ */
.rstack-section{position:relative;height:min(180vh,2000px);background:linear-gradient(180deg,#F7F9FF 0%,#EAF1FF 50%,#F7F9FF 100%)}
.rstack-sticky{position:sticky;top:0;height:min(100vh,1100px);display:flex;align-items:center;overflow:hidden}
.rstack-sticky > .wrap{width:100%}
.rstack-head{max-width:660px;margin:0 auto 22px;text-align:center}
.rstack-stage{position:relative;max-width:560px;margin:0 auto;height:322px}
.rstack-count{font-family:var(--font-number);font-size:13px;letter-spacing:0.14em;color:var(--roo-ink-soft)}
.rstack-count b{color:var(--roo-blue);font-weight:800;font-size:19px}
.rstack-deck{position:relative;height:100%}
.sheet{position:absolute;left:0;right:0;top:0;margin:0 auto;width:min(520px,92%);min-height:210px;background:#fff;border:1px solid var(--roo-line);border-top:3px solid var(--acc,var(--roo-blue));border-radius:22px;box-shadow:0 30px 70px -32px rgba(6,26,74,0.42);padding:26px 30px;will-change:transform,opacity}
.sheet-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.sheet-n{font-family:var(--font-number);font-weight:900;font-size:15px;letter-spacing:0.04em;color:var(--acc,var(--roo-blue))}
.sheet-ic{width:46px;height:46px;border-radius:13px;flex:none;background:var(--accs,var(--roo-blue-soft));color:var(--acc,var(--roo-blue));display:flex;align-items:center;justify-content:center}
.sheet-ic svg{width:24px;height:24px}
.sheet-title{font-size:24px;font-weight:600;font-family:var(--font-display);color:var(--roo-ink);line-height:1.2;letter-spacing:-0.01em}
.sheet-line{font-size:15px;color:var(--roo-ink-soft);margin-top:9px;line-height:1.5;max-width:40ch}

/* Full Report cover (desktop overlay; converges from the deck) */
.rstack-final{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:30px;border-radius:22px;color:#fff;background:linear-gradient(150deg,#04143F 0%,#0A2D78 55%,#123FA6 100%);border:none;box-shadow:0 34px 80px -34px rgba(6,26,74,0.6);opacity:0;pointer-events:none;will-change:transform,opacity}
.rstack-final .rf-tabs{display:flex;gap:5px;margin-bottom:12px}
.rstack-final .rf-tabs i{display:block;width:22px;height:5px;border-radius:3px;background:rgba(255,255,255,0.35)}
.rstack-final .rf-tabs i:nth-child(1){background:#8CE0D0}.rstack-final .rf-tabs i:nth-child(2){background:#9EC2FF}
.rstack-final .rf-eyebrow{font-size:12px;font-weight:600;letter-spacing:0.1em;color:#9EC2FF}
.rstack-final .rf-title{font-size:clamp(22px,2.4vw,28px);font-weight:600;font-family:var(--font-display);letter-spacing:-0.01em;max-width:22ch;margin-top:6px}
.rstack-final .rf-price{font-size:15px;color:#DCE8FF;margin-top:12px}
.rstack-final .rf-price b{font-family:var(--font-number);font-weight:900;font-size:18px;color:#fff}
.rstack-final .rf-ctas{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:18px}
.rstack-mprog{display:none}

@media(max-width:1099px){
  .rstack-section{height:auto}
  .rstack-sticky{position:static;height:auto;display:block;overflow:visible;padding:var(--section-y-tablet) 0}
  .rstack-stage{max-width:none;height:auto}
  .rstack-timeline{display:none}
  .rstack-deck{display:flex;gap:14px;height:auto;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:4px 2px 16px;scroll-padding-left:var(--gutter-tablet)}
  .rstack-deck::-webkit-scrollbar{height:6px}
  .rstack-deck::-webkit-scrollbar-thumb{background:var(--roo-line);border-radius:3px}
  .sheet,.rstack-final{position:relative;left:auto;right:auto;top:auto;inset:auto;margin:0;flex:0 0 80%;max-width:360px;min-height:200px;scroll-snap-align:center;opacity:1!important;transform:none!important;pointer-events:auto;will-change:auto}
  .sheet{box-shadow:0 18px 44px -26px rgba(6,26,74,0.32)}
  .rstack-mprog{display:flex;align-items:center;justify-content:center;gap:6px;font-family:var(--font-number);font-size:13px;letter-spacing:0.1em;color:var(--roo-ink-soft)}
  .rstack-mprog b{color:var(--roo-blue);font-weight:800;font-size:17px}
  .rstack-hint-d{display:none}
  .rstack-hint-m{display:block;text-align:center;font-size:12px;color:var(--roo-ink-soft);opacity:.75}
}
@media(max-width:767px){
  .sheet,.rstack-final{flex-basis:84%}
  .sheet-title{font-size:21px}
  /* B4: more breathing on mobile — extra section padding, a wider inter-card gap and a clear
     gap before the below-card progress/instruction/disclaimer group. (Card height set below.) */
  .rstack-sticky{padding-top:calc(var(--section-y-mobile) + 8px);padding-bottom:calc(var(--section-y-mobile) + 8px)}
  .rstack-deck{gap:16px;padding-top:6px;padding-bottom:20px}
  .rstack-below{margin-top:22px;gap:12px}
}
@media(prefers-reduced-motion:reduce){
  .rstack-section{height:auto}
  .rstack-sticky{position:static;height:auto;display:block;overflow:visible;padding:var(--section-y-tablet) 0}
  .rstack-stage{max-width:820px;height:auto}
  .rstack-timeline{display:none}
  .rstack-deck{display:grid;grid-template-columns:1fr 1fr;gap:14px;height:auto;overflow:visible}
  .sheet,.rstack-final{position:relative;left:auto;top:auto;inset:auto;margin:0;width:auto;max-width:none;min-height:0;opacity:1!important;transform:none!important;pointer-events:auto}
  .rstack-final{grid-column:1 / -1}
  .rstack-mprog,.rstack-hint-d,.rstack-hint-m{display:none}
}

/* ============================================================
   V5.2 — Nine Report Section previews (product-native mini visuals)
   Same demo scenario (Café / Newtown / 1 km). Top ~55-60% = data
   visual; bottom = number, icon, title, short line. Light motion
   replays when a card becomes active; reduced motion = full static.
   ============================================================ */
/* C2/C4 (V5.3): counter + hint + disclosure form one centred group beneath the deck */
.rstack-below{display:flex;flex-direction:column;align-items:center;gap:9px;margin-top:26px;text-align:center}
.rstack-hint-d{font-size:12.5px;color:var(--roo-ink-soft);opacity:.72}
.rstack-hint-m{display:none}
.rstack-demo{max-width:600px;margin:0;text-align:center;font-size:11px;color:var(--roo-ink-soft);opacity:.7}
@media(max-width:1099px){.rstack-below .rstack-timeline{display:none}.rstack-hint-d{display:none}.rstack-hint-m{display:block;font-size:12px;color:var(--roo-ink-soft);opacity:.75}}
.rstack-stage{height:372px}
.sheet{padding:0;overflow:hidden;display:flex;flex-direction:column;min-height:268px}
.sheet-viz{position:relative;padding:18px 20px 8px;min-height:158px;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;gap:9px}
.sheet-demo{position:absolute;right:16px;top:13px;font-size:9px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--roo-ink-soft);opacity:.55}
.sheet-foot{padding:13px 22px 20px;border-top:1px solid #EEF2FA;background:#FCFDFF}
.sheet-top{margin-bottom:9px}
.sheet-ic{width:38px;height:38px;border-radius:11px}
.sheet-ic svg{width:20px;height:20px}
.sheet-n{font-size:13px}
.sheet-title{font-size:20px}
.sheet-line{font-size:13px;margin-top:4px;max-width:38ch}
/* A5 (V5.4): enlarged premium desktop showcase — wide active card, 64/36 visual/text split,
   only a light ~14px peek behind (no heavy accordion), progress timeline lives outside the card. */
@media(min-width:1100px){
  .rstack-section{height:min(150vh,1700px)}
  /* let this section's stage reach the 1180–1280 target beyond the standard content gutter */
  /* A2 (V5.5): nine-report section aligned to the 1180 container (was 1320/40) so it is never
     wider than the other sections; stage fits inside the 1180 wrap content width. */
  .rstack-sticky>.wrap{max-width:1180px;padding-left:24px;padding-right:24px}
  .rstack-stage{max-width:1132px;height:560px}
  .sheet{width:min(1080px,94%);height:536px;min-height:0;flex-direction:row;border-top:none;border-left:4px solid var(--acc,var(--roo-blue));border-radius:24px}
  .sheet-viz{flex:0 0 64%;min-height:0;padding:44px 48px;justify-content:center;gap:18px;border-right:1px solid #EEF2FA}
  .sheet-foot{flex:1 1 36%;border-top:none;background:#fff;display:flex;flex-direction:column;justify-content:center;padding:40px 42px}
  .sheet-top{margin-bottom:22px}
  .sheet-ic{width:52px;height:52px;border-radius:15px}
  .sheet-ic svg{width:26px;height:26px}
  .sheet-title{font-size:31px}
  .sheet-line{font-size:16.5px;margin-top:13px;max-width:30ch;line-height:1.55}
  .sheet-demo{right:22px;top:20px;font-size:10px}
  /* enlarge the per-card mini-previews so each reads as a real evidence visual, not whitespace.
     Prefixed with .sheet-viz so these win over the base rv-* sizes regardless of source order. */
  .sheet-viz .rv-ov{gap:20px}
  .sheet-viz .rv-ovscore b{font-size:62px}
  .sheet-viz .rv-ovscore span{font-size:14.5px}
  .sheet-viz .rv-ovcats{gap:14px 20px}
  .sheet-viz .rv-cat{font-size:14.5px}
  .sheet-viz .rv-cat i{width:9px;height:9px}
  .sheet-viz .rv-lvl{font-size:36px}
  .sheet-viz .rv-up{font-size:15px}
  .sheet-viz .rv-linechart{height:170px}
  .sheet-viz .rv-map{height:250px}
  .sheet-viz .rv-mapcap{font-size:15px}
  .sheet-viz .rv-rows{gap:16px}
  .sheet-viz .rv-drow{font-size:16px;gap:14px}
  .sheet-viz .rv-catch{gap:26px}
  .sheet-viz .rv-catchnum b{font-size:44px}
  .sheet-viz .rv-rings{width:150px;height:150px}
  .sheet-viz .rv-accrow{gap:10px}
  .sheet-viz .rv-chip{font-size:14px;padding:8px 14px}
  .sheet-viz .rv-route{height:64px}
  .sheet-viz .rv-rev{gap:26px}
  .sheet-viz .rv-revleft b{font-size:44px}
  .sheet-viz .rv-srctag{font-size:14px}
  .sheet-viz .rv-meter{height:10px}
  .sheet-viz .rv-date,.sheet-viz .rv-conflbl{font-size:14px}
  .sheet-viz .rv-checks{gap:14px}
  .sheet-viz .rv-ck{font-size:16px}
  .sheet-viz .rv-limit{font-size:13.5px}
}
/* thin external progress timeline (A5): count + advancing fill, communicates movement through 9 */
.rstack-timeline{display:flex;align-items:center;gap:14px}
.rstack-track{position:relative;width:300px;max-width:64vw;height:3px;border-radius:3px;background:var(--roo-line);overflow:hidden}
.rstack-fill{position:absolute;left:0;top:0;height:100%;width:11%;background:var(--roo-blue);border-radius:3px;transition:width .32s var(--ease-reveal)}
/* motion primitives (replay on active) */
.rv-bar{transform-origin:left center;display:block;height:100%;border-radius:3px;background:var(--acc,var(--roo-blue));width:var(--w,100%)}
.rv-linechart{width:100%;height:74px;display:block;overflow:visible}
.rv-line{fill:none;stroke:var(--acc);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.rv-linefill{fill:var(--accs);opacity:.55;stroke:none}
.sheet-active .rv-bar{animation:rvBar .62s var(--ease-reveal) both}
.sheet-active .rv-line{animation:rvDraw .9s var(--ease-reveal) both}
.sheet-active .rv-pin{animation:rvPin .5s var(--ease-reveal) both}
.sheet-active .rv-ringpulse{animation:rvRing .7s var(--ease-reveal) both}
@keyframes rvBar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes rvDraw{from{stroke-dasharray:340;stroke-dashoffset:340}to{stroke-dasharray:340;stroke-dashoffset:0}}
@keyframes rvPin{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes rvRing{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
/* 1 Opportunity */
.rv-ov{display:flex;flex-direction:column;gap:12px}
.rv-ovscore{display:flex;align-items:baseline;gap:8px}
.rv-ovscore b{font-family:var(--font-number);font-weight:900;font-size:40px;color:var(--roo-ink);line-height:1}
.rv-ovscore span{font-size:12px;color:var(--roo-ink-soft);font-weight:600}
.rv-ovcats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px 10px}
.rv-cat{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--roo-ink-soft)}
.rv-cat i{width:7px;height:7px;border-radius:50%;flex:none}
.rv-cat i.pos{background:var(--roo-positive)}.rv-cat i.amber{background:var(--roo-amber)}.rv-cat i.neu{background:#9AA9C1}
/* 2 Demand */
.rv-head2{display:flex;align-items:baseline;gap:10px}
.rv-lvl{font-family:var(--font-number);font-weight:900;font-size:24px;color:var(--roo-ink)}
.rv-up{font-size:12px;font-weight:600;color:var(--roo-positive)}
/* 3 Competition map */
.rv-map{position:relative;height:88px;border-radius:12px;overflow:hidden;background:linear-gradient(0deg,transparent 15px,rgba(124,92,255,.08) 16px) 0 0/100% 22px,linear-gradient(90deg,transparent 21px,rgba(124,92,255,.08) 22px) 0 0/24px 100%,#F6F4FF;border:1px solid #E7E1FF}
.rv-pin{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--acc);box-shadow:0 0 0 3px rgba(124,92,255,.16)}
.rv-pin.me{width:12px;height:12px;background:var(--roo-ink);box-shadow:0 0 0 4px rgba(124,92,255,.2);left:48%;top:46%}
.rv-mapcap{font-size:12px;color:var(--roo-ink-soft)}.rv-mapcap b{font-family:var(--font-number);font-weight:900;font-size:17px;color:var(--roo-ink)}
/* 4 Demographics + 7 Reviews shared rows */
.rv-rows{display:flex;flex-direction:column;gap:7px}
.rv-drow{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--roo-ink-soft)}
.rv-drow>span:first-child{width:38px;flex:none}
.rv-track{flex:1;height:7px;border-radius:4px;background:#EAF0FA;overflow:hidden}
.rv-drow b{font-family:var(--font-number);font-size:11px;color:var(--roo-ink);width:32px;text-align:right}
/* 5 Catchment rings */
.rv-catch{display:flex;align-items:center;gap:16px}
.rv-rings{position:relative;width:78px;height:78px;flex:none}
.rv-rings span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;border:1.5px solid var(--acc);opacity:.5}
.rv-rings span:nth-child(1){width:74px;height:74px;opacity:.28}
.rv-rings span:nth-child(2){width:50px;height:50px;opacity:.42}
.rv-rings span:nth-child(3){width:26px;height:26px;background:var(--accs);opacity:.9}
.rv-rings i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:9px;height:9px;border-radius:50%;background:var(--acc)}
.rv-catchnum b{display:block;font-family:var(--font-number);font-weight:900;font-size:26px;color:var(--roo-ink);line-height:1.1}
.rv-catchnum span{font-size:11.5px;color:var(--roo-ink-soft)}
/* 6 Accessibility */
.rv-route{display:flex;align-items:center;gap:0;height:20px}
.rv-node{width:10px;height:10px;border-radius:50%;background:var(--acc);flex:none}
.rv-routeline{flex:1;height:2px;background:repeating-linear-gradient(90deg,var(--acc) 0 5px,transparent 5px 9px)}
.rv-node.end{background:var(--roo-ink)}
.rv-accrow{display:flex;flex-wrap:wrap;gap:6px}
.rv-chip{font-size:11px;color:var(--roo-ink);background:var(--accs);border-radius:999px;padding:4px 10px;font-weight:500}
/* 7 Reviews */
.rv-rev{display:flex;align-items:center;gap:16px}
.rv-revleft{flex:none;text-align:center}
.rv-revleft b{font-family:var(--font-number);font-weight:900;font-size:28px;color:var(--roo-ink);display:block;line-height:1}
.rv-revleft span{font-size:10.5px;color:var(--roo-ink-soft)}
.rv-revbars{flex:1;display:flex;flex-direction:column;gap:5px}
.rv-rrow{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--roo-ink-soft)}
.rv-rrow>span:first-child{width:8px;flex:none}
.rv-themes{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.rv-themes span{font-size:10.5px;color:var(--roo-ink-soft);background:#F4F6FB;border-radius:6px;padding:3px 8px}
/* 8 Source & confidence */
.rv-conf{display:flex;flex-direction:column;gap:8px}
.rv-srcrow{display:flex;flex-wrap:wrap;gap:6px}
.rv-srctag{font-size:10.5px;font-weight:600;color:var(--acc);background:var(--accs);border-radius:6px;padding:4px 9px}
.rv-date{font-size:11.5px;color:var(--roo-ink-soft)}
.rv-meter{height:8px;border-radius:5px;background:#E7EEF7;overflow:hidden}
.rv-conflbl{font-size:11.5px;font-weight:600;color:var(--roo-ink)}
/* 9 Limits & checks */
.rv-checks{display:flex;flex-direction:column;gap:7px}
.rv-ck{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--roo-ink)}
.rv-ckbox{width:16px;height:16px;border-radius:5px;background:var(--accs);color:var(--acc);flex:none;display:flex;align-items:center;justify-content:center}
.rv-ckbox svg{width:11px;height:11px}
.rv-limit{font-size:11px;color:var(--roo-ink-soft);background:#FBF5E9;border-radius:7px;padding:6px 9px;margin-top:2px}
@media(max-width:1099px){
  .rstack-stage{height:auto}
  /* B4: uniform, taller swipe cards (consistent active-card height on every one of the nine) */
  .sheet,.rstack-final{height:360px;min-height:360px}
  .sheet-viz{flex:0 0 58%;min-height:0}
  .sheet-foot{flex:0 0 42%;display:flex;flex-direction:column;justify-content:center}
}
@media(max-width:767px){
  .sheet-viz{padding:18px 19px 8px;min-height:150px}
  .sheet-foot{padding:14px 20px 20px}
  .sheet-title{font-size:19px}
}

/* ============================================================
   A4 (V5.3) — Mobile analysis bottom sheet + business sub-view.
   Opens only on explicit action (<=767px); body scroll-locked;
   internal scroll; close via control/scrim/Escape/swipe-down.
   ============================================================ */
@media(max-width:767px){ .analysis-bar{display:none} .hero{padding-bottom:40px} }
body.sheet-lock{overflow:hidden;touch-action:none}
.asheet-scrim{position:fixed;inset:0;background:rgba(7,20,43,0.5);z-index:210;opacity:0;pointer-events:none;transition:opacity .3s ease}
.asheet-scrim.open{opacity:1;pointer-events:auto}
.asheet{position:fixed;left:0;right:0;bottom:0;z-index:211;background:#fff;border-radius:24px 24px 0 0;max-height:90dvh;display:flex;flex-direction:column;transform:translateY(101%);transition:transform .36s cubic-bezier(0.22,1,0.36,1);box-shadow:0 -24px 70px -24px rgba(6,26,74,0.5);will-change:transform}
.asheet.open{transform:translateY(0)}
.asheet-view{display:flex;flex-direction:column;min-height:0;max-height:90dvh}
.asheet-view[hidden]{display:none}
.asheet-grab{display:flex;justify-content:center;padding:10px 0 4px;flex:none;touch-action:none;cursor:grab}
.asheet-grab span{width:42px;height:4px;border-radius:2px;background:var(--roo-line)}
.asheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 16px 12px;flex:none;border-bottom:1px solid var(--roo-line)}
.asheet-title{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--roo-ink);margin:0}
.asheet-x{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:var(--roo-ink-soft);background:var(--roo-canvas);flex:none}
.asheet-x svg{width:20px;height:20px}
.asheet-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:16px 18px 10px;display:flex;flex-direction:column;gap:15px}
.asheet-field{display:flex;flex-direction:column;gap:7px}
.asheet-field label,.asheet-lbl{font-size:12.5px;font-weight:600;color:var(--roo-ink-soft);padding-left:2px}
.asheet-selwrap{position:relative;display:flex;align-items:center;height:52px;border:1px solid var(--roo-line);border-radius:14px;background:#fff;padding:0 12px;gap:10px}
.asheet-selwrap:focus-within{border-color:var(--roo-blue);box-shadow:0 0 0 3px var(--roo-blue-soft)}
.asheet-lead{width:17px;height:17px;color:var(--roo-ink-soft);flex:none}
.asheet-select{flex:1;border:none;background:transparent;font-size:15px;color:var(--roo-ink);font-family:inherit;-webkit-appearance:none;appearance:none;outline:none;height:100%;padding-right:22px}
.asheet-select:invalid{color:#93A0B7}
.asheet-input{flex:1;border:none;background:transparent;font-size:15px;color:var(--roo-ink);font-family:inherit;outline:none;height:100%;min-width:0}
.asheet-chev{position:absolute;right:12px;width:18px;height:18px;color:var(--roo-ink-soft);pointer-events:none}
.asheet-fieldbtn{position:relative;display:flex;align-items:center;height:52px;border:1px solid var(--roo-line);border-radius:14px;background:#fff;padding:0 12px;gap:10px;width:100%;text-align:left;font-size:15px;color:var(--roo-ink);cursor:pointer}
.asheet-fieldbtn:focus-visible{outline:2px solid var(--roo-blue);outline-offset:2px}
.asheet-fieldbtn > span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* B2 (V5.4): custom inline listbox — replaces the native <select> (Analysis type + Analysis area).
   Selected option = pale-blue background, blue text and a check. No native/system dropdown. */
.asheet-val.is-placeholder{color:#93A0B7}
.asheet-lbbtn[aria-expanded="true"]{border-color:var(--roo-blue);box-shadow:0 0 0 3px var(--roo-blue-soft)}
.asheet-lbbtn[aria-expanded="true"] .asheet-chev{transform:rotate(180deg)}
.asheet-lblist{list-style:none;margin:7px 0 0;padding:6px;border:1px solid var(--roo-line);border-radius:14px;background:#fff;box-shadow:0 14px 34px -18px rgba(6,26,74,0.3);display:flex;flex-direction:column;gap:2px}
.asheet-lblist[hidden]{display:none}
.asheet-lbopt{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px;border-radius:11px;font-size:15px;color:var(--roo-ink);cursor:pointer}
.asheet-lbopt .lb-check{width:19px;height:19px;flex:none;color:var(--roo-blue);opacity:0}
.asheet-lbopt.active{background:#F2F6FF}
.asheet-lbopt[aria-selected="true"]{background:var(--roo-blue-soft);color:var(--roo-blue);font-weight:600}
.asheet-lbopt[aria-selected="true"] .lb-check{opacity:1}
.asheet-note{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--roo-ink-soft);margin:3px 0 0;line-height:1.45}
.asheet-note svg{width:15px;height:15px;flex:none;color:var(--roo-positive)}
.asheet-note.is-prompt svg{color:var(--roo-blue)}.asheet-note.is-prompt{color:var(--roo-blue)}
.asheet-foot{flex:none;padding:12px 18px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--roo-line);background:#fff}
.asheet-submit{width:100%;height:52px}
.asheet-back{display:inline-flex;align-items:center;gap:4px;font-size:14.5px;font-weight:600;color:var(--roo-blue);padding:6px 8px 6px 2px;min-height:40px}
.asheet-back svg{width:18px;height:18px}
.asheet-subsearch{position:relative;display:flex;align-items:center;height:48px;margin:14px 16px 8px;border:1px solid var(--roo-line);border-radius:12px;background:#F5F8FF;padding:0 12px;gap:9px;flex:none}
.asheet-subsearch:focus-within{border-color:var(--roo-blue);background:#fff;box-shadow:0 0 0 3px var(--roo-blue-soft)}
.asheet-subsearch .bt-sicon{width:16px;height:16px;color:var(--roo-ink-soft);flex:none}
.asheet-sublist{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:4px 10px 16px}
.asheet-optrow{width:100%}
@media(prefers-reduced-motion:reduce){ .asheet{transition:none} .asheet-scrim{transition:none} }
@media(min-width:768px){ .asheet,.asheet-scrim{display:none!important} }

/* ---- V46 B4/G/H: public additions ---- */
.early-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:26px;align-items:start}
@media (max-width:960px){.early-grid{grid-template-columns:1fr}}
.early-cta-card{background:linear-gradient(160deg,var(--roo-blue),#0F4FD8);color:#fff;border:0}
.early-cta-card h2,.early-cta-card p{color:#fff}
.early-cta-card .form-note,.early-cta-card .form-note a{color:rgba(255,255,255,.85)}
/* CTA legibility: buttons inside prose/cards never inherit link colours */
.prose p a.btn,.prose a.btn,.info-card a.btn{border-bottom:0}
.btn-onblue{background:#fff !important;color:var(--roo-blue) !important;border-bottom:0 !important}
.btn-onblue:hover{background:#EAF1FF !important;color:#0F4FD8 !important}
/* entry cards + mini product UI */
.entrycard .ec-k,.ec-k{font-size:.66rem;font-weight:800;letter-spacing:.09em;color:var(--roo-blue)}
.ec-ui{margin-top:14px;border:1px solid var(--roo-line);border-radius:12px;padding:12px;background:#fff}
.ec-ui-bar{display:flex;gap:8px;flex-wrap:wrap}
.ec-chip{font-size:.72rem;font-weight:700;border:1px solid var(--roo-line);border-radius:999px;padding:3px 10px;color:var(--roo-ink-soft)}
.ec-chip.ec-ok{color:#0A6B41;background:#E4F5EC;border-color:#CBE8D4}
.ec-chip.ec-alert{color:#B02E20;background:#FBEAE8;border-color:#F0A0A0}
.ec-ui-line{height:8px;border-radius:99px;background:#EEF1F6;margin-top:10px}
.mono-note{font-size:.78rem;color:var(--roo-ink-soft);margin:10px 0 0;line-height:1.55}
/* compare mini */
.cmp-mini{max-width:680px;margin:22px auto 0;border:1px solid var(--roo-line);border-radius:14px;overflow:hidden;background:#fff}
.cm-row{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px;padding:10px 16px;border-top:1px solid #F0F2F6;font-size:.86rem}
.cm-row:first-child{border-top:0}
.cm-head{background:#F7F9FF;font-weight:700;font-size:.78rem;letter-spacing:.03em;text-transform:uppercase;color:var(--roo-ink-soft)}
.cm-lead{color:#0A6B41;font-weight:700}
.cm-unk{color:#8A97AD}
/* asset slots — designed branded fallback */
.aslot{margin:18px 0 0}
.aslot-in{position:relative;border-radius:14px;overflow:hidden;background:linear-gradient(150deg,#0E1B33,#1147B8);color:#9DBDFB}
.aslot-bg{position:absolute;inset:0;width:100%;height:100%}
.aslot-lbl{position:absolute;left:14px;bottom:12px;right:14px;color:#EAF1FF;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-shadow:0 1px 6px rgba(7,20,43,.5)}
/* insights fallback covers */
.acard .acover-fb{display:block;border-radius:12px 12px 0 0;background:linear-gradient(150deg,#0E1B33,#1769FF);color:#EAF1FF;padding:26px 18px;min-height:120px;position:relative}
.acover-fb .af-topic{font-size:.68rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#9DBDFB}
.acover-fb .af-line{height:7px;border-radius:99px;background:rgba(255,255,255,.22);margin-top:12px}
/* editorial rail (Template B) — the injected .rail is a SIBLING column of the
   .editorial-grid (minmax(0,760px) 1fr), never nested inside the reading column */
@media (min-width:1100px){
  .editorial-grid>.rail{position:sticky;top:96px;max-width:340px;justify-self:start;border:1px solid var(--roo-line);border-radius:14px;padding:16px 18px;background:#fff}
}
.rail .rail-k{font-size:.66rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--roo-ink-soft)}
.rail ol{list-style:none;margin:10px 0 0;padding:0}
.rail li{margin:0}
.rail a{display:block;padding:6px 0;font-size:.85rem;color:var(--roo-ink-soft);border-bottom:0}
.rail a:hover{color:var(--roo-blue)}
@media (max-width:1099px){.editorial-grid>.rail{order:-1;position:static;border:1px solid var(--roo-line);border-radius:12px;padding:12px 16px;margin:0 0 18px;background:#F7F9FF}}

.insight-card .acover-fb{border-radius:12px;margin-bottom:12px;min-height:86px;padding:16px}
.insight-card .acover-fb .af-line{display:block}

/* ==== V461 P0.6: topic covers on insight side cards ==== */
.insight-card .ic-cover{display:block;border-radius:12px;overflow:clip;margin-bottom:12px;line-height:0}
.insight-card .ic-cover img{width:100%;height:auto;display:block;border-radius:12px}
.insight-card .ic-cover+.acover-fb{display:none}
.insight-card.img-fallback .ic-cover{display:none}
.insight-card.img-fallback .acover-fb{display:flex}

/* ==== V461 P0.7: public card containment at the primitive level ==== */
.info-card,.insight-card,.insight-feature,.rvcard,.ev-item,.faq-item,.why-opt,.aslot{overflow:clip}
/* .price-card: the MOST-POPULAR badge deliberately straddles the top edge (design-system
   exception, uniform across cards) — clip everything else via inner wrapper instead */

/* ==== V461 §7.1: Roocation Select ==== */
select.rsel-native{display:none!important}
.rsel-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;min-height:40px;padding:8px 12px;font:inherit;font-size:0.8438rem;color:var(--roo-ink);background:#fff;border:1px solid var(--roo-line);border-radius:10px;cursor:pointer;min-width:150px;max-width:100%;text-align:left}
.rsel-btn:hover{border-color:var(--roo-blue);background:var(--blue-bg,rgba(23,105,255,0.05))}
.rsel-btn:focus-visible{outline:2px solid var(--roo-blue);outline-offset:2px}
.rsel-btn .rsel-v{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rsel-btn .rsel-chev{width:16px;height:16px;flex:0 0 auto;color:var(--roo-ink-soft)}
.rsel-btn.rsel-sm{min-height:34px;padding:5px 10px;font-size:0.8125rem;min-width:130px}
.rsel-pop{position:fixed;z-index:260;background:#fff;border:1px solid var(--roo-line);border-radius:12px;box-shadow:0 18px 44px -18px rgba(7,20,43,0.28);overflow:auto;padding:6px}
.rsel-list{outline:none}
.rsel-opt{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:42px;padding:9px 12px;border-radius:8px;font-size:0.8438rem;color:var(--roo-ink);cursor:pointer}
.rsel-opt:hover,.rsel-opt.act{background:var(--blue-bg,rgba(23,105,255,0.08))}
.rsel-opt.on{color:var(--roo-blue);font-weight:600}
.rsel-opt .rsel-tick{width:16px;height:16px;color:var(--roo-blue);flex:0 0 auto}
.rsel-scrim{position:fixed;inset:0;z-index:255;background:rgba(7,15,33,0.44)}
.rsel-sheet{position:fixed;left:0;right:0;bottom:0;z-index:260;background:#fff;border-radius:16px 16px 0 0;border:1px solid var(--roo-line);border-bottom:0;box-shadow:0 18px 44px -18px rgba(7,20,43,0.28);max-height:70vh;display:flex;flex-direction:column;padding:0 10px calc(10px + env(safe-area-inset-bottom,0px))}
.rsel-sheet .rsel-shead{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0 10px;border-bottom:1px solid var(--roo-line);margin-bottom:6px}
.rsel-sheet .rsel-shead b{font-size:0.875rem}
.rsel-grab{width:42px;height:4px;border-radius:99px;background:var(--roo-line);display:block;margin-top:6px}
.rsel-sheet .rsel-list{overflow:auto}
.rsel-sheet .rsel-opt{min-height:46px}
html.rsel-lock,html.rsel-lock body{overflow:hidden}


/* ==== V461 §16 part A: coded public diagrams ==== */
/* depth ladder */
.dgl{margin:26px 0 8px;border:1px solid var(--roo-line);border-radius:14px;padding:20px 22px;background:#fff;overflow:clip}
.dgl-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:end}
.dgl-step{display:flex;flex-direction:column}
.dgl-bar{height:var(--h,40px);border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,#5B93FF,#1769FF);margin-bottom:10px}
.dgl-name{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.dgl-name b{font-size:.9rem}
.dgl-p{font-size:.78rem;font-weight:700;color:var(--roo-blue)}
.dgl-d{font-size:.78rem;color:var(--roo-ink-soft);margin:4px 0 0;line-height:1.5}
@media (max-width:700px){.dgl-row{grid-template-columns:repeat(2,1fr);gap:14px}}
/* input fragment */
.dgi{margin:18px 0 0}
.dgi-ui{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch;border:1px solid var(--roo-line);border-radius:14px;padding:12px;background:#F7F9FF}
.dgi-f{display:flex;flex-direction:column;gap:2px;border:1px solid var(--roo-line);border-radius:10px;background:#fff;padding:8px 12px;min-width:110px}
.dgi-grow{flex:1;min-width:180px}
.dgi-k{font-size:.62rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--roo-ink-soft)}
.dgi-v{font-size:.85rem;font-weight:600;color:var(--roo-ink)}
.dgi-btn{align-self:center;background:var(--roo-blue);color:#fff;font-size:.82rem;font-weight:700;border-radius:999px;padding:10px 18px;white-space:nowrap}
/* anatomy of a finding */
.dga{margin:22px 0 6px}
.dga-card{border:1px solid var(--roo-line);border-left:4px solid var(--roo-blue);border-radius:14px;background:#fff;padding:16px 18px;max-width:640px;overflow:clip}
.dga-row{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px dashed var(--roo-line);font-size:.86rem;line-height:1.5;flex-wrap:wrap}
.dga-row:last-child{border-bottom:0}
.dga-meta{gap:22px}
.dga-tag{flex:0 0 auto;font-size:.62rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--roo-blue);background:#EAF1FF;border-radius:6px;padding:2px 8px}
.dga-conf{font-weight:700;color:#8a6d00}
.dga-lim{color:var(--roo-ink-soft)}
.dga-chk .dga-tag{color:#0B6E40;background:#E4F5EC}
/* confidence scale */
.dgc{margin:20px 0 6px;max-width:640px}
.dgc-bar{display:flex;border-radius:999px;overflow:clip;border:1px solid var(--roo-line)}
.dgc-bar span{padding:8px 0;text-align:center;font-size:.75rem;font-weight:700;color:#fff}
.dgc-hi{background:#159A66}.dgc-md{background:#C88712}.dgc-lo{background:#9AA6B8}
.dgc-legend{display:flex;gap:10px 22px;flex-wrap:wrap;margin-top:10px;color:var(--roo-ink-soft)}
/* rings */
.dgr{margin:20px 0 6px;max-width:520px}.dgr-svg{width:100%;height:auto}
.dgr-dot{display:inline-block;width:10px;height:10px;border-radius:99px;margin-right:5px;vertical-align:-1px}
/* freshness */
.dgf{margin:20px 0 6px}
.dgf-line{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.dgf-n{font-size:.78rem;color:var(--roo-ink-soft);line-height:1.5}
.dgf-n b{color:var(--roo-ink)}
.dgf-n i{display:block;width:10px;height:10px;border-radius:99px;background:var(--roo-blue);margin-bottom:6px}
.dgf-arrow{color:var(--roo-ink-soft)}
/* pipeline */
.dgp{margin:20px 0 6px}
.dgp-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.dgp-chip{border:1px solid var(--roo-line);background:#F7F9FF;border-radius:999px;padding:7px 14px;font-size:.8rem;font-weight:600}
.dgp-arrow{color:var(--roo-ink-soft)}
/* why option icons + use-together */
.wo-ic{display:inline-flex;width:26px;height:26px;color:var(--roo-blue);vertical-align:-6px;margin-right:8px}
.wo-ic svg{width:100%;height:100%}
.wtog{margin:18px 0 0}
.wtog-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;border:1px solid var(--roo-line);border-radius:14px;background:#F7F9FF;padding:14px 16px}
.wtog-i{display:inline-flex;width:38px;height:38px;padding:8px;border:1px solid var(--roo-line);border-radius:10px;background:#fff;color:var(--roo-ink-soft)}
.wtog-i svg{width:100%;height:100%}
.wtog-arrow{color:var(--roo-ink-soft);font-size:1.1rem}
.wtog-roo{font-weight:700;color:var(--roo-blue);line-height:1.3}
.wtog-roo .tiny{color:var(--roo-ink-soft);font-weight:500}
/* pricing minis */
.pmini{border:1px solid var(--roo-line);border-radius:12px;background:#F7F9FF;padding:12px;margin-bottom:14px;min-height:74px;display:flex;gap:14px;align-items:center;overflow:clip}
.pm-score b{font-size:1.6rem;color:var(--roo-blue)}
.pm-score span{font-size:.75rem;color:var(--roo-ink-soft)}
.pm-rows{display:flex;flex-direction:column;gap:6px;flex:1}
.pm-rows span{display:block;height:8px;border-radius:99px;background:#D7E4FD}
.pm-nine{display:grid;grid-template-columns:repeat(3,14px);gap:5px}
.pm-nine i{width:14px;height:14px;border-radius:4px;background:#1769FF;opacity:.85}
.pm-nine i:nth-child(2n){opacity:.55}
.pm-chips{display:flex;gap:6px}
.pm-chips span{font-size:.66rem;font-weight:700;border:1px solid var(--roo-line);border-radius:99px;padding:3px 9px;background:#fff;color:var(--roo-ink-soft)}
.pm-cols{display:flex;gap:10px;align-items:flex-end;flex:1}
.pm-c{display:flex;gap:3px;align-items:flex-end}
.pm-c i{display:block;width:9px;border-radius:3px 3px 0 0;background:#1769FF;opacity:.8}
.pm-dim i{background:#9AA6B8}

/* ==== V461 §16 part B ==== */
/* tools */
.hub-ic{display:inline-flex;width:24px;height:24px;color:var(--acc,#1769FF);vertical-align:-5px;margin-right:8px}
.hub-ic svg{width:100%;height:100%}
.tmini{display:flex;gap:12px;align-items:center;border:1px solid var(--roo-line);border-radius:12px;background:#F7F9FF;padding:10px 14px;margin:10px 0 12px;overflow:clip}
.tm-k{font-size:.66rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--roo-ink-soft)}
.tm-v{font-size:1.15rem;font-weight:700;color:var(--roo-blue)}
.tm-s{font-size:.72rem;color:var(--roo-ink-soft);font-weight:500}
.tm-bar{flex:1;height:8px;border-radius:99px;background:#D7E4FD;overflow:clip}
.tm-bar i{display:block;height:100%;background:var(--roo-blue);border-radius:99px}
.tm-rows{display:flex;flex-direction:column;gap:5px;flex:1}
.tm-rows i{display:block;height:7px;border-radius:99px;background:#D7E4FD}
.tm-cols{display:flex;gap:5px;align-items:flex-end}
.tm-cols i{display:block;width:10px;border-radius:3px 3px 0 0;background:var(--roo-blue);opacity:.8}
.tm-chip{font-size:.66rem;font-weight:700;border:1px solid var(--roo-line);border-radius:99px;padding:3px 9px;background:#fff;color:var(--roo-ink-soft);white-space:nowrap}
/* about */
.dgae{margin:0 0 22px}
.dgae-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap;border:1px solid var(--roo-line);border-radius:14px;background:#fff;padding:16px 18px}
.dgae-pin{width:44px;height:44px;color:var(--roo-blue);flex:0 0 auto}
.dgae-pin svg{width:100%;height:100%}
.dgae-sigs{display:flex;gap:6px;flex-wrap:wrap;max-width:340px}
.dgae-sigs span{font-size:.7rem;font-weight:700;border:1px solid var(--roo-line);border-radius:99px;padding:4px 10px;background:#F7F9FF;color:var(--roo-ink-soft)}
.dgae-rep{border:1px solid var(--roo-line);border-left:4px solid var(--roo-blue);border-radius:12px;padding:10px 14px;min-width:150px}
.dgae-rep b{font-size:.8rem;display:block;margin-bottom:7px}
.dgae-rep i{display:block;height:7px;border-radius:99px;background:#D7E4FD;margin-top:5px}
.dgau{margin:22px 0 0;max-width:420px}
.dgau-svg{width:100%;height:auto;border:1px solid var(--roo-line);border-radius:14px;background:#F7F9FF}
/* coverage */
.dgcf{margin:0 0 22px}
.dgcf-lad{display:flex;flex-direction:column;gap:8px;margin-top:10px;max-width:560px}
.dgcf-l{border:1px solid var(--roo-line);border-radius:12px;padding:10px 14px;font-size:.85rem;display:flex;flex-direction:column;gap:2px}
.dgcf-l span{font-size:.78rem;color:var(--roo-ink-soft)}
.dgcf-ok{border-left:4px solid #159A66}
.dgcf-mid{border-left:4px solid #C88712}
.dgcf-no{border-left:4px solid #9AA6B8}
.dgly{margin:22px 0 0;max-width:460px;overflow:clip;position:relative}
.dgly-stack{position:relative;height:150px}
.dgly-l{position:absolute;left:calc(var(--i)*26px);top:calc(var(--i)*38px);right:calc((2 - var(--i))*26px);height:64px;border:1px solid var(--roo-line);border-radius:12px;background:rgba(23,105,255,calc(0.06 + var(--i)*0.05));display:flex;align-items:center;padding:0 16px}
.dgly-l span{font-size:.78rem;font-weight:600;color:var(--roo-ink)}
/* contact */
.ct-grid{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:26px;align-items:start;margin:0 0 22px}
.ct-ill svg{width:100%;height:auto}
@media (max-width:820px){.ct-grid{grid-template-columns:1fr}.ct-side{order:-1;max-width:260px}}
/* glossary */
.gl-tools{margin:0 0 18px;display:flex;flex-direction:column;gap:12px}
.gl-tools input[type="search"]{width:100%;max-width:460px;border:1px solid var(--roo-line);border-radius:10px;padding:10px 14px;font:inherit;font-size:.9rem}
.gl-cats{display:flex;gap:8px;flex-wrap:wrap}
.gl-cats button{font:inherit;font-size:.78rem;font-weight:600;border:1px solid var(--roo-line);background:#fff;border-radius:999px;padding:6px 14px;cursor:pointer;color:var(--roo-ink-soft)}
.gl-cats button.on{background:var(--roo-blue);border-color:var(--roo-blue);color:#fff}
.gl-az{display:flex;gap:4px;flex-wrap:wrap}
.gl-az a{font-size:.75rem;font-weight:700;color:var(--roo-blue);border:1px solid var(--roo-line);border-radius:8px;min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-bottom-width:1px}
.gl-az a:hover{background:#EAF1FF}
.gl-minis{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;margin:0 0 8px}
.gl-mini{margin:0;border:1px solid var(--roo-line);border-radius:14px;padding:14px 16px;background:#fff;overflow:clip}
.gloss-term.gl-hide{display:none}

/* ==== V461 fixes: enhanced selects inside dense tool tables + rail box-sizing ==== */
.sc-table .rsel-btn,.tfield .rsel-btn,.toolrow .rsel-btn{min-width:0;width:100%;padding:7px 9px}
.sc-table{table-layout:fixed;width:100%}
.editorial-grid>.rail{box-sizing:border-box;max-width:100%}

/* ===================== Batch 1 shared additions (built on the V5.5 system) ===================== */
.skip-link{position:absolute;left:-999px;top:0;z-index:400;background:var(--roo-ink);color:#fff;padding:10px 16px;border-radius:0 0 10px 0;font-weight:600}
.skip-link:focus{left:0}
main:focus{outline:none}
.page-hero{padding:132px 0 20px;background:linear-gradient(180deg,#F7F9FF,#EDF2FF 60%,#F7F9FF)}
.page-hero .wrap{max-width:var(--landing-max);margin:0 auto;padding:0 var(--gutter-desktop)}
.page-hero .eyebrow{color:var(--roo-blue)}
.page-hero h1{font-family:var(--font-display);font-size:clamp(30px,4vw,46px);font-weight:500;letter-spacing:-0.02em;line-height:1.1;margin:14px 0 0;max-width:20ch}
.page-hero .lead{font-size:18px;line-height:1.6;color:var(--roo-ink-soft);max-width:64ch;margin:16px 0 0}
.page-hero .crumb{font-size:13px;color:var(--roo-ink-soft)}
.page-hero .crumb a{color:var(--roo-ink-soft)}.page-hero .crumb a:hover{color:var(--roo-blue)}
/* Batch 1.2 (P0 §15 editorial grid): .prose used to centre itself independently of its ancestor
   (max-width:760px;margin:0 auto against the FULL VIEWPORT when used bare, or against whatever ad-hoc
   wrapper a page happened to add) — on any viewport wider than ~1000px that put the body column well
   right of the page-hero title above it, exactly the "wide left-aligned title, narrow centred column,
   looks accidental" pattern the brief calls out. .prose no longer centres itself: pages now nest it
   inside the SAME .wrap (1180/gutter, left-aligned) the hero already uses, via .editorial-grid below,
   so the body's left edge always lines up with the hero's left edge. */
.prose{max-width:760px;padding:8px 0 0;font-size:16.5px;line-height:1.72;color:#20304C}
.prose.wide{max-width:var(--landing-max)}
/* Shared editorial grid: one outer .wrap (matches the hero), a ~760px reading column, an optional
   sticky right rail (TOC) for longer pages. Falls back to a single column under 1100px. */
.editorial-grid{display:grid;grid-template-columns:minmax(0,760px) 1fr;gap:56px;align-items:start}
.editorial-grid.no-rail{grid-template-columns:minmax(0,760px)}
.editorial-body{max-width:760px}
.editorial-rail{position:sticky;top:112px;align-self:start;min-width:0}
@media(max-width:1099px){.editorial-grid{grid-template-columns:minmax(0,1fr);gap:0}.editorial-rail{display:none}}
.h3-style{font-size:18px;font-weight:600;font-family:var(--font-display);letter-spacing:-0.01em;margin:0 0 8px}
/* Batch 1.2-cv2 (A5): Sample Report nine-section cards with real rv-* preview visuals.
   Self-scoped (.rvcard, NOT .sheet) so home's @media .sheet rules can't distort a static grid.
   Reuses the unscoped base rv-* component styles from site.css.raw for the visuals themselves. */
.rvgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0 0 8px}
@media(max-width:1023px){.rvgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:679px){.rvgrid{grid-template-columns:1fr}}
.rvcard{position:relative;background:#fff;border:1px solid var(--roo-line);border-top:3px solid var(--acc,var(--roo-blue));border-radius:18px;overflow:hidden;display:flex;flex-direction:column}
.rvcard-viz{position:relative;padding:34px 20px 16px;min-height:184px;display:flex;flex-direction:column;justify-content:center;gap:9px;border-bottom:1px solid #EEF2FA;background:linear-gradient(180deg,var(--accs,#F4F7FE) -40%,#fff 90%)}
.rvcard-foot{padding:13px 20px 18px;background:#FCFDFF;flex:1}
.rvcard-top{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.rvcard-num{font-family:var(--font-number);font-weight:700;font-size:12.5px;color:var(--acc,var(--roo-blue));letter-spacing:.1em}
.rvcard-ic{display:inline-flex;width:20px;height:20px;color:var(--acc,var(--roo-blue))}
.rvcard-ic svg{width:100%;height:100%}
.rvcard h3{font-family:var(--font-display);font-weight:500;font-size:17.5px;margin:0 0 4px}
.rvcard p{font-size:13.5px;line-height:1.5;color:var(--roo-ink-soft);margin:0}
.rvcard .rv-facts{display:flex;flex-direction:column;gap:8px}
.rvcard .rv-fact{display:flex;justify-content:space-between;gap:12px;font-size:13px;border-bottom:1px dashed #E6EBF4;padding-bottom:7px}
.rvcard .rv-fact:last-child{border-bottom:0;padding-bottom:0}
.rvcard .rv-fact span{color:var(--roo-ink-soft)}
.rvcard .rv-fact b{font-weight:600;text-align:right}
.rvcard .rv-verdict{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:14px;color:#0E8F5E}
.rvcard .rv-verdict i{width:9px;height:9px;border-radius:50%;background:#0E8F5E;flex:none}
/* Batch 1.2-cv2 (C): /why-roocation/ components — option cards + fair comparison table.
   Table collapses to labelled stacked cards on small screens (no unlabelled sideways scroll). */
.why-jump{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.why-jump a{display:inline-block;border:1px solid var(--roo-line);border-radius:999px;padding:7px 14px;font-size:13px;color:var(--roo-ink-soft);background:#fff;min-height:30px}
.why-jump a:hover{border-color:var(--roo-blue);color:var(--roo-blue)}
.why-opt{scroll-margin-top:110px;border:1px solid var(--roo-line);border-radius:16px;padding:22px 24px;margin:0 0 14px;background:#fff}
.why-opt h3{font-family:var(--font-display);font-weight:500;font-size:19px;margin:0 0 8px}
.why-opt p{margin:0 0 10px;color:var(--roo-ink-soft);font-size:15px;line-height:1.62}
.why-opt-meta{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:12px;padding-top:12px;border-top:1px dashed #E6EBF4;font-size:13.5px}
.why-opt-meta span{color:var(--roo-ink-soft)}
.why-opt-meta b{font-weight:600}
.cmp-wrap{overflow:visible;margin:18px 0 6px}
table.cmp{width:100%;border-collapse:collapse;font-size:14.5px;line-height:1.55}
.cmp th,.cmp td{padding:13px 14px;text-align:left;vertical-align:top;border-bottom:1px solid #EEF2FA}
.cmp thead th{font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--roo-ink-soft);border-bottom:2px solid var(--roo-line)}
.cmp tbody th[scope=row]{font-weight:600;width:15%;color:var(--roo-ink)}
.cmp td.roo{background:#F4F8FF}
.cmp thead th.roo{color:var(--roo-blue)}
@media(max-width:860px){
  .cmp thead{position:absolute;left:-9999px}
  table.cmp,.cmp tbody,.cmp tr,.cmp td,.cmp tbody th[scope=row]{display:block;width:100%}
  .cmp tr{border:1px solid var(--roo-line);border-radius:14px;margin:0 0 14px;overflow:hidden;background:#fff}
  .cmp tbody th[scope=row]{background:#F7F9FF;border-bottom:1px solid var(--roo-line);font-size:14.5px}
  .cmp td{border-bottom:1px dashed #EEF2FA}
  .cmp td:last-child{border-bottom:0}
  .cmp td::before{content:attr(data-col);display:block;font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--roo-ink-soft);margin-bottom:3px}
  .cmp td.roo::before{color:var(--roo-blue)}
}
.why-list{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 26px}
.why-list li{position:relative;padding-left:26px;font-size:15px;line-height:1.55}
.why-list li::before{content:"";position:absolute;left:0;top:5px;width:15px;height:15px;border-radius:50%;background:var(--roo-blue-soft,#EAF1FF) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231769FF" stroke-width="3.4"><path d="M20 6L9 17l-5-5"/></svg>') center/9px no-repeat}
@media(max-width:679px){.why-list{grid-template-columns:1fr}}
.why-steps{counter-reset:ws;list-style:none;margin:16px 0 0;padding:0}
.why-steps li{counter-increment:ws;position:relative;padding:0 0 16px 46px;font-size:15px;line-height:1.6}
.why-steps li::before{content:counter(ws,decimal-leading-zero);position:absolute;left:0;top:-1px;font-family:var(--font-number);font-weight:700;font-size:14px;color:var(--roo-blue);letter-spacing:.06em}
.why-steps li:not(:last-child)::after{content:"";position:absolute;left:11px;top:24px;bottom:4px;width:1px;background:#E6EBF4}
/* Batch 1.2-cv2 (D): shared Free Tools shell + form primitives. Client-side only; no fake backend. */
.tool-shell{display:grid;grid-template-columns:minmax(0,460px) minmax(0,1fr);gap:36px;align-items:start}
@media(max-width:1023px){.tool-shell{grid-template-columns:1fr}}
.tool-panel{background:#fff;border:1px solid var(--roo-line);border-radius:18px;padding:26px 28px}
.tool-panel h2{font-family:var(--font-display);font-weight:500;font-size:21px;margin:0 0 16px}
.tfield{margin:0 0 16px}
.tfield label{display:block;font-size:13.5px;font-weight:600;margin:0 0 6px}
.tfield .hint{font-weight:400;color:var(--roo-ink-soft);font-size:12.5px;margin-left:6px}
.tfield input[type=number],.tfield input[type=text],.tfield select,.tfield textarea{width:100%;border:1px solid var(--roo-line);border-radius:10px;padding:10px 12px;font:inherit;font-size:15px;background:#fff;color:var(--roo-ink)}
.tfield input:focus,.tfield select:focus,.tfield textarea:focus{outline:2px solid var(--roo-blue);outline-offset:1px}
.tfield .terr{display:none;color:#B3261E;font-size:12.5px;margin-top:5px}
.tfield.invalid input,.tfield.invalid select{border-color:#B3261E}
.tfield.invalid .terr{display:block}
.trow2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
@media(max-width:520px){.trow2{grid-template-columns:1fr}}
.tool-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.tool-out{border:1px solid var(--roo-line);border-radius:18px;overflow:hidden}
.tool-out-head{padding:16px 24px;background:var(--roo-navy,#07142B);color:#fff;font-family:var(--font-display);font-weight:500;font-size:18px}
.tool-out-body{padding:20px 24px;background:#fff}
.tres{display:flex;justify-content:space-between;gap:18px;align-items:baseline;padding:12px 0;border-bottom:1px dashed #E6EBF4}
.tres:last-child{border-bottom:0}
.tres .tk{font-size:14px;color:var(--roo-ink-soft);max-width:60%}
.tres .tk b{display:block;color:var(--roo-ink);font-size:14.5px;font-weight:600}
.tres .tv{font-family:var(--font-number);font-weight:700;font-size:20px;white-space:nowrap}
.tres.muted .tv{color:var(--roo-ink-soft);font-weight:600;font-size:14.5px;font-family:inherit;white-space:normal;text-align:right}
.tool-note{background:#F7F9FF;border:1px solid #E6EBF4;border-radius:14px;padding:16px 18px;font-size:13.5px;line-height:1.6;color:var(--roo-ink-soft);margin-top:18px}
.tool-note b{color:var(--roo-ink)}
.tassume{margin-top:16px;font-size:13.5px}
.tassume summary{cursor:pointer;font-weight:600}
.tassume ul{margin:10px 0 0;padding-left:20px;color:var(--roo-ink-soft);line-height:1.7}
.tstate-empty{color:var(--roo-ink-soft);font-size:14.5px;padding:8px 0}
/* checklist */
.ck-group{border:1px solid var(--roo-line);border-radius:14px;margin:0 0 14px;overflow:hidden}
.ck-group h3{margin:0;background:#F7F9FF;border-bottom:1px solid var(--roo-line);font-size:15.5px;font-family:var(--font-display);font-weight:500}
.ck-group h3 button{all:unset;display:flex;justify-content:space-between;align-items:center;width:100%;box-sizing:border-box;padding:13px 18px;cursor:pointer;min-height:44px}
.ck-group h3 button::after{content:"−";font-size:18px;color:var(--roo-ink-soft)}
.ck-group h3 button[aria-expanded=false]::after{content:"+"}
.ck-group.collapsed .ck-item{display:none}
.ck-progress{font-size:13.5px;font-weight:600;color:var(--roo-blue);margin:0 0 12px}
.ck-item{display:flex;gap:12px;align-items:flex-start;padding:12px 18px;border-bottom:1px dashed #EEF2FA}
/* v4 (P1 §7): on mobile the question reads full-width first; the tri-state controls move BELOW it
   so long tailored questions never squeeze into a narrow column beside two 44px buttons. */
@media(max-width:679px){
  .ck-item{flex-direction:column;gap:10px;padding:14px 16px}
  .ck-item .ck-txt{order:0;width:100%;font-size:15px}
  .ck-item .ck-tri{order:1;width:100%;display:flex;gap:8px}
  .ck-item .ck-tri button{flex:1;text-align:center}
}
.ck-item:last-child{border-bottom:0}
.ck-item .ck-txt{flex:1;font-size:14.5px;line-height:1.5}
.ck-tri{display:flex;gap:4px;flex:none}
.ck-tri button{border:1px solid var(--roo-line);background:#fff;border-radius:8px;font-size:12.5px;padding:11px 12px;min-height:44px;cursor:pointer;color:var(--roo-ink-soft)}
.ck-tri button[aria-pressed=true]{border-color:var(--roo-blue);color:var(--roo-blue);background:#F0F5FF;font-weight:600}
.ck-tri button.nc[aria-pressed=true]{border-color:#C88712;color:#C88712;background:#FBF4E4}
.ck-note{width:100%;margin-top:8px;border:1px solid var(--roo-line);border-radius:8px;padding:7px 10px;font:inherit;font-size:13px;display:none}
.ck-item.has-note .ck-note{display:block}
.ck-addnote{border:0;background:none;color:var(--roo-blue);font-size:12.5px;cursor:pointer;padding:0;margin-top:6px}
/* scorecard */
.sc-table{width:100%;border-collapse:collapse;font-size:14px}
.sc-table th,.sc-table td{border:1px solid #E6EBF4;padding:10px 12px;text-align:left;vertical-align:top}
.sc-table thead th{background:#F7F9FF;font-size:13px}
.sc-table select{width:100%;border:1px solid var(--roo-line);border-radius:8px;padding:7px 9px;font:inherit;font-size:13.5px}
.sc-table textarea{width:100%;border:1px solid var(--roo-line);border-radius:8px;padding:7px 9px;font:inherit;font-size:13px;min-height:44px}
.sc-good{background:#E4F5EC}.sc-mid{background:#FBF4E4}.sc-neu{background:#F3F5F9}
.sc-sum{border:1px solid var(--roo-line);border-radius:14px;padding:18px 20px;margin-top:18px}
.sc-sum h3{margin:0 0 10px;font-size:16px;font-family:var(--font-display);font-weight:500}
.sc-sum ul{margin:0;padding-left:20px;line-height:1.7;font-size:14px;color:var(--roo-ink-soft)}
.sc-hint{display:none;font-size:12.5px;color:var(--roo-ink-soft);margin:0 0 8px}
@media(max-width:860px){
  .sc-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .sc-table{min-width:640px}
  .sc-table tbody th[scope=row],.sc-table thead th:first-child{position:sticky;left:0;background:#fff;z-index:2;box-shadow:2px 0 0 #E6EBF4}
  .sc-table thead th:first-child{background:#F7F9FF}
  .sc-hint{display:block}
}
/* tools hub */
.hub-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 24px;border:1px solid var(--roo-line);border-left:4px solid var(--acc,var(--roo-blue));border-radius:16px;padding:22px 26px;margin:0 0 16px;background:#fff}
.hub-card h3,.hub-card h2{font-family:var(--font-display);font-weight:500;font-size:20px;margin:0 0 6px}
.hub-card p{margin:0;color:var(--roo-ink-soft);font-size:14.5px;line-height:1.6;max-width:62ch}
.hub-card .hub-fit{font-size:13px;color:var(--roo-ink-soft);margin-top:8px}
.hub-card .hub-fit b{color:var(--roo-ink)}
.hub-card .hub-go{align-self:center}
@media(max-width:679px){.hub-card{grid-template-columns:1fr}.hub-card .hub-go{justify-self:start}}
@media print{
  header.site-header,footer.site-footer,.tool-actions,.hub-card .hub-go,.mega,.drawer,.cta-row,.tool-panel .btn{display:none !important}
  .tool-shell{grid-template-columns:1fr}
  .tool-out{border:1px solid #999}
  body{background:#fff}
  .ck-note{display:block !important;border-style:dashed}
}
.prose h2{font-family:var(--font-display);font-size:26px;font-weight:500;color:var(--roo-ink);margin:44px 0 10px;letter-spacing:-0.01em}
.prose h3{font-size:19px;font-weight:600;color:var(--roo-ink);margin:28px 0 8px}
.prose p{margin:0 0 16px}
.prose ul,.prose ol{margin:0 0 18px;padding-left:22px}.prose li{margin-bottom:8px}
.prose a.inline,.prose p a,.prose li a{color:var(--roo-blue);font-weight:500;border-bottom:1px solid rgba(23,105,255,.3)}
.prose strong{font-weight:600;color:var(--roo-ink)}
.section-pad{padding:56px 0}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.info-card{background:#fff;border:1px solid var(--roo-line);border-radius:var(--radius-card,18px);padding:24px}
.info-card h3,.info-card h2{font-size:18px;font-weight:600;font-family:var(--font-display);color:var(--roo-ink);margin:0 0 8px}
.info-card p{font-size:14.5px;color:var(--roo-ink-soft);line-height:1.6;margin:0}
.info-card .ic{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:var(--accs,var(--roo-blue-soft));color:var(--acc,var(--roo-blue));margin-bottom:14px}
.info-card .ic svg{width:23px;height:23px}
.pcard-row{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start;padding:20px 0;border-top:1px solid var(--roo-line)}
.pcard-row .n{font-family:var(--font-number);font-weight:700;font-size:14px;color:var(--roo-blue);letter-spacing:.1em;padding-top:4px}
.pcard-row h3{font-size:19px;font-weight:600;font-family:var(--font-display);margin:0 0 6px}
.pcard-row p{font-size:15px;color:var(--roo-ink-soft);line-height:1.6;margin:0}
.callout{background:var(--roo-blue-soft);border:1px solid #CBDCFA;border-radius:16px;padding:20px 22px;font-size:15px;line-height:1.6;color:var(--roo-ink);margin:22px 0}
.callout b{color:var(--roo-blue)}
.note-limit{background:#FBF5E9;border:1px solid #F0E2C4;border-radius:12px;padding:14px 16px;font-size:13.5px;color:#7a5b1e;margin:16px 0}
.evidence-list{display:flex;flex-direction:column;gap:14px;margin:18px 0}
.ev-item{border:1px solid var(--roo-line);border-radius:14px;padding:18px 20px;background:#fff}
.ev-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px;padding-bottom:12px;border-bottom:1px solid #EEF2FA}
.ev-k{font-size:16px;font-weight:600;font-family:var(--font-display)}
.ev-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}
.ev-meta>div{display:flex;flex-direction:column;gap:3px}
.ev-meta dt{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--roo-blue)}
.ev-meta dd{margin:0;font-size:13px;color:var(--roo-ink);line-height:1.45}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.form-field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.form-field label{font-size:13px;font-weight:600;color:var(--roo-ink)}
.form-field input,.form-field select,.form-field textarea{height:50px;border:1px solid var(--roo-line);border-radius:12px;padding:0 14px;font-size:15px;font-family:inherit;background:#fff;color:var(--roo-ink)}
.form-field textarea{height:auto;padding:12px 14px;min-height:96px}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:2px solid var(--roo-blue);outline-offset:1px;border-color:var(--roo-blue)}
.form-help{font-size:12.5px;color:var(--roo-ink-soft)}
.form-note{font-size:13px;color:var(--roo-ink-soft);margin-top:4px}
.form-msg{margin-top:14px;font-size:14px;padding:12px 15px;border-radius:11px;display:none}
.form-msg.show{display:block}
.form-msg.info{background:var(--roo-blue-soft);color:var(--roo-blue)}
.form-msg.err{background:#FDEBEC;color:#C0342B}
.pending-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(12px);background:var(--roo-ink);color:#fff;font-size:13px;font-weight:500;padding:11px 17px;border-radius:11px;box-shadow:0 16px 40px -12px rgba(0,0,0,.45);z-index:500;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;max-width:90vw;text-align:center}
.pending-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
[aria-current="page"]{color:var(--roo-blue)!important}
.nav-link[aria-current="page"]{font-weight:600}
.faq-min{max-width:760px;margin:0 auto}
.tag-pill{display:inline-block;background:var(--roo-blue-soft);color:var(--roo-blue);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:600;letter-spacing:.02em}
@media(max-width:900px){.grid-2,.grid-3{grid-template-columns:1fr}}
@media(max-width:767px){.page-hero{padding-top:96px}.page-hero .wrap,.prose{padding-left:var(--gutter-mobile);padding-right:var(--gutter-mobile)}.ev-meta{grid-template-columns:1fr}}

/* ===================== Article shell (from V5.5 article) ===================== */
/* ============================================================
   ARTICLE LAYOUT
   ============================================================ */
.article-top{padding:120px var(--gutter-desktop) 0;max-width:calc(1180px + 2*var(--gutter-desktop));margin:0 auto}
.breadcrumb{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--roo-ink-soft);margin-bottom:20px;flex-wrap:wrap}
.breadcrumb a:hover{color:var(--roo-blue)}
.breadcrumb .sep{color:#B9C4D8}
.breadcrumb .current{color:var(--roo-ink)}
.article-meta-top{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.cat-pill{display:inline-block;padding:6px 14px;border-radius:var(--radius-pill);background:var(--roo-blue-soft);color:var(--roo-blue);font-size:12.5px;font-weight:600}
.meta-dot{font-size:13px;color:var(--roo-ink-soft)}
.article-h1{font-size:clamp(30px,4vw,48px);line-height:1.1;font-weight:500;letter-spacing:-0.02em;max-width:20ch}
/* C/D2 (V5.4): byline above the cover — "By Roocation Team", 34px avatar (desktop),
   tiny optional editorial line, ~22px gap. On mobile the avatar shrinks and the editorial
   line is removed (see the mobile block). */
.article-byline{display:flex;align-items:center;gap:11px;margin-top:22px;margin-bottom:2px}
.byline-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--roo-deep-blue),var(--roo-blue));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-family:var(--font-display);font-size:13px;flex:none}
.byline-info .bn{font-size:14.5px;font-weight:600;color:var(--roo-ink)}
.byline-info .br{font-size:12px;color:var(--roo-ink-soft)}
/* B1: article hero — breadcrumb spans the row, then 2 columns (text 56% / 16:9 media 44%)
   on desktop ≥1100px; stacks below 1100. B2: cover uses a relative path + a designed
   fallback (never a broken-image icon); it's the LCP image, so it is NOT lazy-loaded. */
.article-hero{margin-top:24px}
.article-hero-text{min-width:0}
.article-hero-media{margin:0}
.cover-frame{margin:0;position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:26px;background:#0A2D78;line-height:0}
.cover-frame img{width:100%;height:auto;display:block}
.cover-frame .cover-fallback{display:none;position:absolute;inset:0;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:linear-gradient(135deg,#04143F,#0A2D78 55%,#1769FF);line-height:1.3}
.cover-frame .cover-fallback .cf-logo{width:160px;height:auto;filter:brightness(0) invert(1);opacity:.92}
.cover-frame .cover-fallback .cf-label{font-size:12px;letter-spacing:0.03em;color:rgba(255,255,255,0.82)}
.cover-frame.img-fallback .cover-fallback{display:flex}
.cover-caption{font-size:12px;color:var(--roo-ink-soft);margin-top:10px;text-align:left;opacity:.8}
/* P0.4: base (mobile-first) hero = single column, text then cover. The 2-col grid is desktop-only
   (see @media min-width:1100 at the foot of this file). */
/* body grid: article column + right TOC */
/* C1 (V5.4): article grid — total ~1180px content, body ~800px (65–80 char measure),
   TOC 292px, 88px gap. Sticky TOC aligns to the first paragraph (align-items:start). */
.article-shell{max-width:calc(1180px + 2*var(--gutter-desktop));margin:0 auto;padding:56px var(--gutter-desktop) 0;display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:88px;align-items:start}
.article-body{max-width:820px;font-size:17px;line-height:1.75;color:#20304C}
.article-body > *{margin-bottom:22px}
.article-body .lead{font-size:20px;line-height:1.6;color:var(--roo-ink);font-weight:400}
.article-body h2{font-size:27px;font-weight:500;color:var(--roo-ink);margin-top:44px;line-height:1.2;scroll-margin-top:20px}
.article-body h3{font-size:20px;font-weight:600;color:var(--roo-ink);margin-top:32px;scroll-margin-top:20px}
.article-body p{margin-bottom:20px}
.article-body ul,.article-body ol{margin:0 0 22px;padding-left:22px}
.article-body li{margin-bottom:9px}
.article-body strong{font-weight:600;color:var(--roo-ink)}
.article-body a.inline{color:var(--roo-blue);font-weight:500;border-bottom:1px solid rgba(23,105,255,0.3)}
.article-body a.inline:hover{border-bottom-color:var(--roo-blue)}
.pull-fact{border-left:3px solid var(--roo-blue);padding:6px 0 6px 20px;font-size:19px;line-height:1.5;color:var(--roo-ink);font-family:var(--font-display);font-weight:500}
.article-disclaimer{margin-top:40px;padding-top:22px;border-top:1px solid var(--roo-line);font-size:13px;color:var(--roo-ink-soft);line-height:1.6}
/* right-side sticky TOC (desktop). Batch 1.2 (P0 §14): minimal treatment — a plain heading + list
   with a clean active line (the .toc-rail a.active border-left rule below), NOT a filled rounded
   card/box around the whole rail (the brief's "no awkward rounded block plus curved edge"). */
.toc-rail{position:sticky;top:104px;align-self:start}
.toc-inner{padding:0 0 0 2px}
.toc-inner h4,.toc-inner .toc-label{font-size:12px;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;color:var(--roo-ink-soft);margin-bottom:14px}
.toc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.toc-list a{display:block;padding:7px 12px;font-size:13.5px;line-height:1.4;color:var(--roo-ink-soft);transition:color .16s,background .16s,border-color .16s}
.toc-list a.sub{padding-left:22px;font-size:13px}
/* B3 — desktop rail: straight 3px blue active bar, no white capsule, no active background */
.toc-rail .toc-list a{border-left:3px solid transparent;border-radius:0}
.toc-rail .toc-list a:hover{color:var(--roo-ink)}
.toc-rail .toc-list a.active{color:var(--roo-blue);font-weight:600;border-left-color:var(--roo-blue);background:transparent}
/* mobile disclosure keeps its approved behaviour (subtle blue active text) */
.toc-mobile .toc-list a.active{color:var(--roo-blue);font-weight:600}
.toc-progress{height:3px;background:var(--roo-line);border-radius:2px;margin-top:16px;overflow:hidden}
.toc-progress i{display:block;height:100%;width:0;background:var(--roo-blue);border-radius:2px;transition:width .1s linear}
/* D3: mobile "On this page" — slim divider row (no card, not sticky) opens a bottom sheet */
.toc-mobile{display:none;margin:22px auto;max-width:820px}
.toc-openrow{display:flex;align-items:center;justify-content:space-between;width:100%;padding:15px 2px;border-top:1px solid var(--roo-line);border-bottom:1px solid var(--roo-line);font-size:14.5px;font-weight:600;color:var(--roo-ink);background:none;cursor:pointer}
.toc-openrow .chev{width:18px;height:18px;color:var(--roo-blue);transition:transform .25s}
.toc-openrow[aria-expanded="true"] .chev{transform:rotate(180deg)}
.toc-scrim{position:fixed;inset:0;z-index:150;background:rgba(7,17,35,0.5);opacity:0;transition:opacity .3s ease}
.toc-scrim.open{opacity:1}
.toc-scrim[hidden]{display:none}
.toc-sheet{position:fixed;left:0;right:0;bottom:0;z-index:151;background:#fff;border-radius:22px 22px 0 0;box-shadow:0 -18px 50px -20px rgba(6,26,74,0.4);transform:translateY(100%);transition:transform .34s var(--ease-header);max-height:80dvh;display:flex;flex-direction:column}
.toc-sheet.open{transform:translateY(0)}
.toc-sheet[hidden]{display:none}
.toc-sheet-grab{display:flex;justify-content:center;padding:10px 0 2px;flex:none}
.toc-sheet-grab span{width:42px;height:4px;border-radius:2px;background:var(--roo-line)}
.toc-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:6px 18px 12px;border-bottom:1px solid var(--roo-line);flex:none}
.toc-sheet-title{font-family:var(--font-display);font-size:17px;font-weight:600;margin:0;color:var(--roo-ink)}
.toc-sheet-x{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:var(--roo-ink-soft);background:var(--roo-canvas);flex:none}
.toc-sheet-x svg{width:20px;height:20px}
.toc-sheet-list{list-style:none;margin:0;padding:8px 12px calc(14px + env(safe-area-inset-bottom));overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.toc-sheet-list a{display:block;padding:13px 14px;border-radius:11px;font-size:15px;color:var(--roo-ink);line-height:1.4;border-left:none}
.toc-sheet-list a.active{background:var(--roo-blue-soft);color:var(--roo-blue);font-weight:600}
.toc-scrim,.toc-sheet{transition:none}
/* related + CTA + footer */
.related{max-width:calc(1180px + 2*var(--gutter-desktop));margin:72px auto 0;padding:56px var(--gutter-desktop);border-top:1px solid var(--roo-line)}
.related h2{font-size:26px;font-weight:500;margin-bottom:28px}
.related-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.rel-card{border:1px solid var(--roo-line);border-radius:20px;padding:24px;transition:transform .2s var(--ease-reveal),box-shadow .2s;display:block}
.rel-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px -20px rgba(6,26,74,0.2)}
.rel-card .rmeta{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--roo-ink-soft);margin-bottom:10px}
.rel-card .rmeta .cat{color:var(--roo-blue);font-weight:600}
.rel-card h3{font-size:17px;font-weight:500;line-height:1.3}
.rel-card p{font-size:13.5px;color:var(--roo-ink-soft);margin-top:8px;line-height:1.5}
.article-cta{text-align:center;padding:80px var(--gutter-desktop);margin-top:24px;background:linear-gradient(165deg,#04143F,#082A77 45%,#1769FF);color:#fff}
.article-cta h2{font-size:clamp(28px,3vw,40px);font-weight:500;color:#fff;max-width:640px;margin:0 auto;letter-spacing:-0.02em}
.article-cta p{font-size:17px;color:rgba(255,255,255,0.88);margin:16px auto 0;max-width:520px}
.article-cta .cta-row{display:flex;gap:12px;justify-content:center;margin-top:28px;flex-wrap:wrap}

/* ==========================================================================
   P0.4 — RESTORED responsive contract (these blocks lost their @media wrappers
   during extraction and were applying globally). Gutters come from the :root
   --gutter-* remap in site.css.raw, so no per-element gutter rules are needed here.
   Desktop ≥1100: two-column hero + right sticky TOC.  <1100: single column + mobile TOC.
   ========================================================================== */
@media(min-width:1100px){
  /* two-column article hero: text 58% / 16:9 cover 42% */
  .article-hero{display:grid;grid-template-columns:minmax(0,58fr) minmax(0,42fr);gap:72px;align-items:start}
}
@media(max-width:1099px){
  /* TOC moves inline (On-this-page sheet); article body goes full width; hero already stacks
     (base is single-column) — text → cover with a ~24px gap. */
  .article-shell{grid-template-columns:1fr;gap:0}
  .toc-rail{display:none}
  .toc-mobile{display:block}
  .article-hero-media{margin-top:24px}
}
@media(max-width:767px){
  /* mobile type scale + gutters (gutters via :root remap); byline wraps, drop the editorial role line */
  .article-top{padding-top:100px}
  .article-body{font-size:16px}
  .article-body .lead{font-size:18px}
  .byline-avatar{width:30px;height:30px;font-size:12px}
  .byline-info .br{display:none}
  .related-grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){ .toc-scrim,.toc-sheet{transition:none} }
/* supplemental */
.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}
.crumb .sep{color:var(--roo-line);margin:0 2px}
.price-badge{position:absolute;top:-11px;left:50%;transform:translateX(-50%);background:var(--roo-blue);color:#fff;font-size:11px;font-weight:700;letter-spacing:.04em;padding:4px 12px;border-radius:999px}
.price-card{position:relative}.price-best{font-size:13.5px;color:var(--roo-ink-soft);margin:8px 0 14px;min-height:38px}
.cmp-matrix{width:100%;border-collapse:collapse;font-size:14px}
.cmp-matrix th,.cmp-matrix td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--roo-line)}
.cmp-matrix thead th{font-family:var(--font-display);font-weight:600;color:var(--roo-ink);background:#FBFCFF}
.cmp-matrix th[scope=row]{font-weight:600;color:var(--roo-ink)}
.cmp-matrix td{color:var(--roo-ink-soft)}
.footer-tag{font-size:13.5px;color:var(--roo-ink-soft);line-height:1.55;margin:12px 0 0;max-width:36ch}
.footer-col h4,.footer-col .footer-h{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--roo-ink-soft);margin:0 0 12px}
.footer-col a{display:block;font-size:14px;color:var(--roo-ink);margin-bottom:9px}
.footer-col a:hover{color:var(--roo-blue)}
/* Batch 1.2 (P0 §17): four-group footer — brand + 4 columns (was brand + 3) */
.footer-top--4{grid-template-columns:1.15fr 1fr 1fr 1fr 1fr}
@media(max-width:1099px){.footer-top--4{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:767px){.footer-top--4{grid-template-columns:1fr 1fr}}
.footer-cookie-btn{display:block;font-size:14px;color:var(--roo-ink);margin-bottom:9px;text-align:left;padding:0;background:none;border:none;cursor:default;text-decoration:underline;text-decoration-color:var(--roo-line);text-underline-offset:3px}
.footer-cookie-btn:hover{color:var(--roo-blue)}
.footer-cookie-btn:focus-visible{outline:2px solid var(--roo-blue);outline-offset:2px;border-radius:3px}
.footer-cookie-note{max-width:var(--landing-max);margin:-6px auto 0;font-size:11.5px;color:var(--roo-ink-soft);opacity:.75;line-height:1.5}
.footer-social{display:inline-flex;gap:10px}
.footer-social .soc-link{display:inline-flex;color:var(--roo-ink)}
.article-hero-notext{padding:132px 0 8px}
.article-hero-notext .wrap{max-width:820px;margin:0 auto;padding:0 var(--gutter-desktop)}
/* ===================== Batch 1.1 tablet/overflow fixes ===================== */
/* the 3-up pricing row overflowed at 768 (only wrapped at <=767); stack it below 900 */
@media(max-width:900px){.price-grid{grid-template-columns:1fr;max-width:480px;margin-left:auto;margin-right:auto}}
/* ===================== Batch 1.1 content-parity styles ===================== */
/* glossary term list (migrated V25 glossary) */
.gloss-term{padding:18px 0;border-top:1px solid var(--roo-line)}
.prose .gloss-term:first-of-type{border-top:1px solid var(--roo-line);margin-top:8px}
.gloss-term h3,.gloss-term h2{font-size:18px;font-weight:600;color:var(--roo-ink);margin:0 0 6px}
.gloss-term p{margin:0 0 6px}
.gloss-note{font-size:14px;color:var(--roo-ink-soft);line-height:1.6}
.gloss-note strong{color:var(--roo-ink)}
/* prose spacing polish for the longer migrated pages */
.prose h2{scroll-margin-top:96px}
.prose .info-card h3,.info-card h2{margin-top:0}
.pcard-steps{margin:0 0 10px}
