/* ==========================================================================
   CAMPAIGN CHOOSER — the #gads-fit content, moved into a panel
   --------------------------------------------------------------------------
   Opened from the one CTA banner under the Google Ads service cards, by
   "Help Me Choose a Campaign" only. Desktop: a drawer from the RIGHT edge,
   ~56vw. Phone: a bottom sheet at 75dvh with a handle and a fixed close.

   Everything is prefixed gfc- because google-ads.html already
   carries a dead .fit / .fit-tab / .fit-canvas block from an earlier design
   and .fit would silently collide with it.

   The panel is a child of <body>, not of #gads-services, so it reads the
   page's :root tokens directly. The per-campaign --h/--hs/--he/--hd stay
   inline on each station, exactly as they were in the section.

   Loaded last, after site/ds.css and gads-hero/hero.css.
   ========================================================================== */

/* ---------- 1 · the second action in the existing banner ----------
   .sv-next-a was a column of [button, note]; it becomes [row of two, note].
   The house has three button looks and this needs no fourth: the secondary
   is ds.css's ghost — white, one --line-b hairline, ink text. */
.sv-next-acts{ display: flex; gap: 10px; }
.sv-next-acts > *{ flex: 1 1 0; min-width: 0; }

button.sv-btn{
  border: 0; cursor: pointer; font-family: inherit;
  -webkit-appearance: none; appearance: none;
}
.sv-btn.is-ghost{
  background: var(--paper); color: var(--ink);
  border: 1px solid var(--line-b); box-shadow: none;
}
.sv-btn.is-ghost:hover{ background: var(--mist); border-color: var(--ds-edge); filter: none; }

@media (max-width: 620px){
  /* `flex:1 1 0` above sizes the MAIN axis — which is the height once this
     turns into a column, squashing both buttons to their 20px line box.
     The children go back to auto height and take the full width instead. */
  .sv-next-acts{ flex-direction: column; }
  .sv-next-acts > *{ flex: none; width: 100%; }
}

/* ---------- 2 · scrim + panel shell ---------- */
:root{
  --gfc-ease: cubic-bezier(.22, 1, .36, 1);   /* ease-out */
  --gfc-dur: .4s;
  --gfc-pad: clamp(22px, 2.8vw, 44px);
}

/* The scrim dims the page behind the panel; it does not blur it. The
   backdrop-filter that used to soften the page while the chooser was open went
   with the rest of the site's haze on 2026-09-09 — the dim alone separates the
   two layers, and the page behind stays legible and sharp. Dropping it also
   removes a full-viewport compositing surface from every scrolled frame. */
.gfc-scrim{
  position: fixed; inset: 0; z-index: 400;
  background: rgba(11, 13, 18, .46);
  opacity: 0; visibility: hidden;
  transition: opacity var(--gfc-dur) var(--gfc-ease), visibility 0s linear var(--gfc-dur);
}
.gfc-scrim.is-on{
  opacity: 1; visibility: visible;
  transition: opacity var(--gfc-dur) var(--gfc-ease), visibility 0s;
}

.gfc{
  position: fixed; z-index: 410; top: 0; right: 0; bottom: 0; left: auto;
  width: clamp(440px, 56vw, 1040px);
  display: flex; flex-direction: column;
  background: #FBFCFE;
  border-left: 1px solid var(--line-b);
  box-shadow: 0 0 0 1px rgba(15, 27, 61, .04), -26px 0 64px -22px rgba(15, 27, 61, .36);
  transform: translateX(101%); visibility: hidden;
  transition: transform var(--gfc-dur) var(--gfc-ease), visibility 0s linear var(--gfc-dur);
}
.gfc.is-on{
  transform: translateX(0); visibility: visible;
  transition: transform var(--gfc-dur) var(--gfc-ease), visibility 0s;
}
.gfc:focus{ outline: 0; }

/* the panel's own element defaults, contributing no specificity so the
   component rules below still sit on top of them */
.gfc :where(p, h2, h3, ol, ul, li, dl, dt, dd, figure){ margin: 0; padding: 0; }
.gfc :where(ol, ul){ list-style: none; }

/* ---------- 3 · the fixed header ---------- */
.gfc-grab{ display: none; }

.gfc-head{
  flex: none; position: relative; z-index: 2;
  display: flex; align-items: flex-start; gap: 18px;
  padding: clamp(22px, 2.6vw, 32px) var(--gfc-pad) clamp(18px, 2vw, 24px);
  border-bottom: 1px solid var(--line-b);
  background: var(--paper);
  box-shadow: 0 1px 0 rgba(15, 27, 61, .03), 0 10px 24px -20px rgba(15, 27, 61, .5);
}
.gfc-head-t{ flex: 1; min-width: 0; }
.gfc-eye{
  font-family: var(--mono); font-size: 11px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--ink-2); font-weight: 500;
}
.gfc-h{
  margin-top: 11px;
  font-size: clamp(23px, 2.5vw, 33px); font-weight: 800;
  letter-spacing: -.042em; line-height: 1.08; color: var(--ink); text-wrap: balance;
}
.gfc-h i{ font-style: normal; color: var(--accent); }

.gfc-x{
  flex: none; display: grid; place-items: center;
  width: 44px; height: 44px; margin-top: 2px;
  border: 1px solid var(--line-b); border-radius: 50%;
  background: var(--paper); color: var(--ink-2); cursor: pointer;
  box-shadow: 0 1px 2px rgba(11, 13, 18, .05);
  transition: background .16s var(--gfc-ease), color .16s var(--gfc-ease),
              border-color .16s var(--gfc-ease);
}
.gfc-x:hover{ background: var(--mist); color: var(--ink); border-color: var(--ds-edge); }
.gfc-x svg{ width: 18px; height: 18px; fill: none; stroke: currentColor;
  stroke-width: 2.2; stroke-linecap: round; }

/* ---------- 4 · the scrolling body ---------- */
.gfc-body{
  flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: clamp(24px, 2.8vw, 36px) var(--gfc-pad) clamp(30px, 3.4vw, 46px);
}
.gfc-sub{
  max-width: 64ch; font-size: clamp(15.5px, 1.2vw, 17px); line-height: 1.62; color: var(--ink-2);
}
.gfc-sub b{ font-weight: 700; color: var(--ink); }

/* the things the answer turns on — one row, not a numbered list.  They are
   read together, so each carries the same mark rather than a rank. */
.gfc-axes{
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px;
  margin-top: clamp(20px, 2.2vw, 28px);
}
.gfc-axes li{
  padding: 16px 16px 17px;
  border: 1px solid var(--line-b); border-radius: 16px; background: var(--paper);
  box-shadow: 0 1px 2px rgba(11, 13, 18, .04);
}
.gfc-axes b{
  display: block; width: 26px; height: 4px; border-radius: 2px;
  background: var(--accent);
}
.gfc-axes span{
  display: block; margin-top: 11px;
  font-size: 15px; font-weight: 700; line-height: 1.35;
  letter-spacing: -.02em; color: var(--ink);
}

/* ---------- 5 · the six, in the order the customer meets you ----------
   The section's six-column axis is not forced in here: it stands up as a
   vertical journey, one card per campaign, each carrying its own colour. */
.gfc-scale{
  display: flex; align-items: center; gap: 12px;
  margin-top: clamp(28px, 3.2vw, 40px);
  font-size: 13px; font-weight: 700; letter-spacing: -.01em; color: var(--ink-3);
}
.gfc-scale::after{ content: ""; flex: 1; height: 1px; background: var(--line-b); }
.gfc-scale.is-end{ margin-top: 18px; }
.gfc-scale.is-end::after{ order: -1; }
.gfc-scale b{ font-weight: 700; color: var(--g-blue); }

.gfc-line{ margin-top: 14px; display: grid; gap: 14px; }

.gfc-st{ position: relative; }

.gfc-card{
  position: relative; overflow: hidden;
  padding: clamp(18px, 1.8vw, 24px) clamp(18px, 2vw, 26px) clamp(18px, 1.8vw, 24px);
  border-radius: 18px; background: var(--paper);
  border: 1px solid var(--line-b); border-left: 4px solid var(--h);
  box-shadow: 0 1px 2px rgba(11, 13, 18, .04), 0 12px 26px -20px rgba(15, 27, 61, .4);
}

/* name + what it is */
.gfc-top{ display: flex; align-items: flex-start; gap: 16px; }
.gfc-ico{
  flex: none; display: grid; place-items: center;
  width: 54px; height: 54px; border-radius: 15px;
  background: var(--hs); border: 1px solid var(--he); color: var(--hd);
}
.gfc-ico svg{
  width: 26px; height: 26px; fill: none; stroke: currentColor;
  stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round;
}
.gfc-ico svg .f{ fill: currentColor; stroke: none; }
.gfc-top-t{ flex: 1; min-width: 0; padding-top: 2px; }
.gfc-name{
  font-size: clamp(20px, 1.8vw, 25px); font-weight: 800;
  letter-spacing: -.038em; line-height: 1.12; color: var(--ink);
}

/* the match statement — the line a business owner scans for */
.gfc-for{
  margin-top: 9px;
  font-size: clamp(15.5px, 1.2vw, 17px); line-height: 1.45;
  font-weight: 650; letter-spacing: -.016em; color: var(--ink);
}
.gfc-for em{ font-style: normal; color: var(--ink-3); font-weight: 600; }

/* the two facts, as a label/value pair — not stacked micro-caps */
.gfc-rows{
  display: grid; grid-template-columns: minmax(0, 168px) minmax(0, 1fr);
  gap: 12px 20px; align-items: baseline;
  margin-top: 18px; padding-top: 17px; border-top: 1px solid var(--line-2);
}
.gfc-rows dt{
  font-size: 14px; font-weight: 700; line-height: 1.4;
  letter-spacing: -.012em; color: var(--ink-3);
}
.gfc-rows dd{ font-size: clamp(14.6px, 1.15vw, 16px); line-height: 1.5; color: var(--ink-2); }
.gfc-rows dd b{ font-weight: 700; color: var(--hd); }
.gfc-rows dd.gfc-gives{
  /* no align-self: the row is baseline-aligned, so the label sits level with
     the first line INSIDE the tinted box rather than 15px above it */
  padding: 11px 15px; border-radius: 12px;
  background: var(--hs); border: 1px solid var(--he);
  color: var(--hd); font-weight: 600;
}

/* ---------- 6 · the close, into the enquiry the page already has ---------- */
.gfc-next{
  display: flex; align-items: center; gap: clamp(18px, 2.6vw, 34px);
  margin-top: clamp(28px, 3.2vw, 42px);
  padding: clamp(22px, 2.4vw, 30px) clamp(22px, 2.6vw, 32px);
  border-radius: var(--r-lg); background: var(--paper);
  border: 1px solid var(--ds-edge); box-shadow: var(--shadow-s);
}
.gfc-next-t{ flex: 1; min-width: 0; }
.gfc-next-t b{
  display: block; font-size: clamp(17px, 1.5vw, 20px); font-weight: 800;
  letter-spacing: -.036em; line-height: 1.2; color: var(--ink); text-wrap: balance;
}
.gfc-next-t p{ margin-top: 9px; font-size: 14.8px; line-height: 1.55; color: var(--ink-2); }
.gfc-next-a{ flex: none; display: flex; flex-direction: column; align-items: stretch; gap: 9px; }
.gfc-go{
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  height: 54px; padding: 0 26px; border-radius: 13px; white-space: nowrap;
  background: var(--accent); color: #fff; font-size: 15.6px; font-weight: 700;
  letter-spacing: -.014em; cursor: pointer; border: 0; font-family: inherit;
  box-shadow: 0 10px 24px -12px var(--accent);
  transition: background .18s var(--gfc-ease), transform .12s var(--gfc-ease);
}
.gfc-go:hover{ background: var(--accent-ink); }
.gfc-go:active{ transform: translateY(1px); }
.gfc-go svg{ width: 16px; height: 16px; fill: none; stroke: currentColor;
  stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.gfc-time{ text-align: center; font-size: 12.8px; color: var(--ink-3); }

/* ---------- 7 · tablet — the label column stops paying its way ---------- */
@media (max-width: 1080px){
  .gfc{ width: min(92vw, 720px); }
}
@media (max-width: 720px){
  .gfc-axes{ grid-template-columns: minmax(0, 1fr); gap: 9px; }
  .gfc-axes li{ display: flex; align-items: center; gap: 13px; padding: 13px 15px; }
  .gfc-axes b{ width: 4px; height: 22px; flex: none; }
  .gfc-axes span{ margin-top: 0; }
}

/* ---------- 8 · phones — the drawer becomes a bottom sheet ---------- */
@media (max-width: 860px){
  .gfc{
    --gfc-pad: var(--gut);
    top: auto; left: 0; right: 0; bottom: 0;
    width: auto; height: 75dvh; max-height: 75dvh;
    border-left: 0; border-top: 1px solid var(--line-b);
    border-radius: 22px 22px 0 0;
    box-shadow: 0 -1px 0 rgba(15, 27, 61, .04), 0 -20px 50px -18px rgba(15, 27, 61, .38);
    transform: translateY(101%);
  }
  .gfc.is-on{ transform: translateY(0); }

  /* the handle sits above the header, which stays put while the body moves */
  .gfc-grab{
    display: block; flex: none; width: 42px; height: 4px; margin: 9px auto 0;
    border-radius: 999px; background: #D5DEEC;
  }
  .gfc-head{ padding: 13px var(--gut) 15px; border-radius: 22px 22px 0 0; gap: 12px; }
  .gfc-h{ margin-top: 8px; font-size: clamp(20px, 5.4vw, 25px); }
  .gfc-x{ width: 44px; height: 44px; margin-top: 0; }
  .gfc-body{ padding: 20px var(--gut) 28px; }

  .gfc-top{ gap: 13px; }
  .gfc-ico{ width: 46px; height: 46px; border-radius: 13px; }
  .gfc-ico svg{ width: 23px; height: 23px; }
  .gfc-rows{ grid-template-columns: minmax(0, 1fr); gap: 6px; margin-top: 16px; padding-top: 15px; }
  .gfc-rows dt{ font-size: 13.2px; color: var(--ink-3); }
  .gfc-rows dd + dt{ margin-top: 10px; }
  .gfc-next{ flex-direction: column; align-items: stretch; gap: 17px; padding: 22px 18px; }
  .gfc-next-a{ width: 100%; }
  .gfc-go{ width: 100%; }
}

/* ---------- 9 · background scroll lock ---------- */
html.gfc-lock{ overflow: hidden; }
html.gfc-lock body{ margin-right: var(--gfc-sb, 0px); }
html.gfc-lock .bar{ right: var(--gfc-sb, 0px); }

@media (prefers-reduced-motion: reduce){
  .gfc, .gfc-scrim{ transition-duration: .01ms; }
}
