/* ═══════════════════════════════════════════════════════════════════
   TaimurTools — Agency design system (2026-08-26)
   Shared chrome (nav + footer) for every page, plus the component set
   used by the agency pages (home, services, case studies, resources,
   audits, contact). Namespaced under .ag- so it never fights the tool
   engine's stylesheet or older page styles.
   Palette/tokens extend the existing redesign skin (--a1/--a2/--a3/--grad).
   ═══════════════════════════════════════════════════════════════════ */
/* ── TOKENS ──────────────────────────────────────────────────────────
   2026-09-22: the homepage's private --h-* palette was promoted here, so
   every page inherits the design that used to live only on index.html.
   Names are unchanged; values are the homepage's. The three values that
   failed WCAG AA in the old light set (--ag-a2 2.77, --ag-a3 1.81,
   --ag-mut2 2.96) are retired, not carried over.
   Measured contrast on --ag-bg: ink 18.45, ink2 14.40, mut 8.97,
   a1 6.26, a2/a3 8.07, ok 8.69. See reports/design/00-inventory.md §6. */
:root{
  --ag-a1:#5B8CFF; --ag-a2:#7DA3FF; --ag-a3:#7DA3FF;
  /* the fill is deliberately light: its label is --ag-ink-on-accent (near-black),
     which gives 8.07:1 at the light stop and 6.26:1 at the dark stop. The old
     white-on-#3D6CFA was 4.45:1 — a real AA miss on a 14.5px label. */
  --ag-grad:linear-gradient(120deg,#7DA3FF,#5B8CFF); --ag-ink-on-accent:#080A0F;
  --ag-accent:#5B8CFF; --ag-violet:#8B5CF6;
  /* --ag-violet is 4.23:1 on --ag-card, i.e. large text only. Use this for
     violet TEXT at any size: 5.41 on card, 5.98 on bg, 5.15 on card2. */
  --ag-violet-ink:#9B76F8;
  --ag-bg:#080A0F; --ag-bg2:#0E1118; --ag-card:#121722; --ag-card2:#161c29;
  --ag-line:rgba(255,255,255,.08); --ag-line2:rgba(255,255,255,.14);
  --ag-ink:#F5F7FA; --ag-ink2:#D7DCE6; --ag-mut:#A7AFBD;
  /* 2026-09-22: was #6F7788, which measured 3.99:1 on --ag-card and was being
     used for 10.5-13px labels in nine places. #7F8899 clears 4.5:1 on ALL four
     surfaces (worst case 4.78 on --ag-card2), so there is no size caveat left. */
  --ag-mut2:#7F8899;
  --ag-soft:rgba(91,140,255,.12);
  --ag-ok:#22C55E; --ag-ok-bg:rgba(34,197,94,.12);
  --ag-warn:#F5B544; --ag-warn-bg:rgba(245,181,68,.12);
  --ag-err:#FF6B5E; --ag-err-bg:rgba(255,107,94,.12);
  /* kept as aliases: they meant "a dark band on a light site", which the
     whole site now is. Anything still asking for them gets a real surface. */
  --ag-dark:#080A0F; --ag-dark2:#121722;
  /* shadows re-tuned for dark surfaces: a light-surface shadow is invisible
     here, so depth comes from opacity and emphasis comes from --ag-glow. */
  --ag-sh:0 24px 60px -28px rgba(0,0,0,.75); --ag-sh2:0 2px 10px rgba(0,0,0,.45); --ag-sh3:0 40px 80px -40px rgba(0,0,0,.8);
  --ag-glow:0 0 0 1px rgba(91,140,255,.35),0 24px 60px -24px rgba(91,140,255,.55);
  --ag-r:20px; --ag-r2:14px; --ag-r3:999px;
  --ag-font:'Inter','Inter Fallback','Inter Fallback A',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --ag-serif:'Instrument Serif','Instrument Serif Fallback','Instrument Serif Fallback A',Georgia,'Times New Roman',serif;
  --ag-nav-h:64px;
  /* spacing scale: every gap and gutter comes from these six steps.
     Ad-hoc values (10px, 22px, 34px...) are what made the rhythm drift. */
  --ag-s1:8px; --ag-s2:12px; --ag-s3:16px; --ag-s4:24px; --ag-s5:32px; --ag-s6:56px;
  --ag-gutter:20px;
  /* display headings use the clamp scale above. These three are the
     COMPONENT tiers -- a card title must not be 38px. Nothing else. */
  --ag-h2-section:1.625rem; --ag-h2-block:1.375rem; --ag-h2-card:1.125rem;
}

/* ── ALIAS LAYER ─────────────────────────────────────────────────────
   The 57 tool pages and the 6 tool category pages speak a different token
   vocabulary (--x*, --a1/--a2/--a3/--grad, --surface/--text*), with ~4,600
   var() references between them. Rather than rewrite those rules, the names
   are aliased onto the shared system here, once. Each page's own :root —
   which used to define these as light values — is deleted, so these win.
   Do not give these independent values: they exist to have none. */
:root{
  --xbg:var(--ag-bg);   --xcard:var(--ag-card); --xline:var(--ag-line);
  --xink:var(--ag-ink); --xmut:var(--ag-mut);
  --xsh:var(--ag-sh);   --xsh2:var(--ag-sh2);
  --a1:var(--ag-a1);    --a2:var(--ag-a2);      --a3:var(--ag-a3);
  --grad:var(--ag-grad);
  --bg:var(--ag-bg);
  --surface:var(--ag-card); --surface2:var(--ag-card2); --border:var(--ag-line);
  --text:var(--ag-ink); --text2:var(--ag-ink2); --text3:var(--ag-mut); --text4:var(--ag-mut2);
  --blue:var(--ag-a1); --accent:var(--ag-warn);
  --shadow:var(--ag-sh2); --shadow-lg:var(--ag-sh); --shadow-sm:var(--ag-sh2);
  --card:var(--ag-card); --muted:var(--ag-mut);
  --bg-elev:var(--ag-card); --bg-elev-2:var(--ag-card2);
  --text-2:var(--ag-ink2); --text-muted:var(--ag-mut); --text-dim:var(--ag-mut2);
  /* names used only as var(--x, #lightfallback) on a few pages -- undefined
     meant the light fallback always won. */
  --t1:var(--ag-ink); --teal:var(--ag-a2); --g1:var(--ag-a1); --orange:var(--ag-warn);
}
.ag-page{background:var(--ag-bg);color:var(--ag-ink);font-family:var(--ag-font);-webkit-font-smoothing:antialiased;line-height:1.6}
.ag-page *,.ag-page *::before,.ag-page *::after{box-sizing:border-box}
.ag-page img{max-width:100%;height:auto}
.ag-wrap{max-width:1180px;margin:0 auto;padding:0 var(--ag-gutter)}
.ag-wrap.narrow{max-width:860px}
.ag-body{padding-top:calc(var(--ag-nav-h) + 24px)}
.ag-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ── Metric-matched font fallbacks (2026-09-23) ──
   Google Fonts loads with display=swap, so a first visit renders in a system
   font and swaps. Unadjusted, that swap cost CLS 0.23 on a cold mobile load of
   /tools/merge-pdf.html (the H1 rewrapped 39px). These local faces are scaled
   to occupy exactly the web fonts' space (widths within 0.05%, identical
   ascent/descent - measured in Chrome), so the swap moves nothing.
   Every font stack lists them straight after the web font:
     'Inter','Inter Fallback','Inter Fallback A',...
   'X Fallback' = Arial / Times New Roman (Windows, macOS, iOS);
   'X Fallback A' = Roboto / Noto Serif (Android, which has no Arial).
   Overrides are divided by size-adjust because the browser scales them by it.
   Re-measure if the web fonts or their weights change. */
@font-face{font-family:'Inter Fallback';font-style:normal;font-weight:400;src:local('Arial'),local('ArialMT');size-adjust:106.53%;ascent-override:91.05%;descent-override:22.53%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback';font-style:normal;font-weight:500;src:local('Arial'),local('ArialMT');size-adjust:107.43%;ascent-override:90.29%;descent-override:22.34%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback';font-style:normal;font-weight:600;src:local('Arial Bold'),local('Arial-BoldMT');size-adjust:100.97%;ascent-override:96.07%;descent-override:23.77%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback';font-style:normal;font-weight:700;src:local('Arial Bold'),local('Arial-BoldMT');size-adjust:101.80%;ascent-override:95.28%;descent-override:23.58%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback';font-style:normal;font-weight:800;src:local('Arial Bold'),local('Arial-BoldMT');size-adjust:102.82%;ascent-override:94.34%;descent-override:23.34%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback';font-style:normal;font-weight:900;src:local('Arial Bold'),local('Arial-BoldMT');size-adjust:103.94%;ascent-override:93.32%;descent-override:23.09%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback A';font-style:normal;font-weight:400;src:local('Roboto'),local('Roboto-Regular');size-adjust:107.55%;ascent-override:90.19%;descent-override:22.32%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback A';font-style:normal;font-weight:500;src:local('Roboto Medium'),local('Roboto-Medium');size-adjust:107.54%;ascent-override:90.20%;descent-override:22.32%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback A';font-style:normal;font-weight:600;src:local('Roboto Bold'),local('Roboto-Bold');size-adjust:107.66%;ascent-override:90.10%;descent-override:22.29%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback A';font-style:normal;font-weight:700;src:local('Roboto Bold'),local('Roboto-Bold');size-adjust:108.54%;ascent-override:89.37%;descent-override:22.11%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback A';font-style:normal;font-weight:800;src:local('Roboto Black'),local('Roboto-Black');size-adjust:108.80%;ascent-override:89.15%;descent-override:22.06%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback A';font-style:normal;font-weight:900;src:local('Roboto Black'),local('Roboto-Black');size-adjust:109.99%;ascent-override:88.19%;descent-override:21.82%;line-gap-override:0%}
@font-face{font-family:'Instrument Serif Fallback';font-style:normal;font-weight:400;src:local('Times New Roman'),local('TimesNewRomanPSMT');size-adjust:82.54%;ascent-override:119.94%;descent-override:37.56%;line-gap-override:0%}
@font-face{font-family:'Instrument Serif Fallback';font-style:italic;font-weight:400;src:local('Times New Roman Italic'),local('TimesNewRomanPS-ItalicMT');size-adjust:86.41%;ascent-override:114.57%;descent-override:35.88%;line-gap-override:0%}
@font-face{font-family:'Instrument Serif Fallback A';font-style:normal;font-weight:400;src:local('Noto Serif'),local('NotoSerif-Regular');size-adjust:70.48%;ascent-override:140.47%;descent-override:43.98%;line-gap-override:0%}
@font-face{font-family:'Instrument Serif Fallback A';font-style:italic;font-weight:400;src:local('Noto Serif Italic'),local('NotoSerif-Italic');size-adjust:75.89%;ascent-override:130.45%;descent-override:40.85%;line-gap-override:0%}

/* ───────── NAV (2026-09-23 redesign) ─────────
   Full-width bar, a 3-column mega-menu with a featured card, and a full-height
   mobile sheet with Services as an accordion.

   Why the selectors below are all prefixed (.ag-nav …, .ag-dd-menu …,
   .ag-mobile …): the TYPE section styles `a:not([class])` blue + underlined so
   inline body links meet WCAG 1.4.1. That rule has specificity (0,1,1) — the
   same as `.ag-links>a` — and sits later in the file, so it silently won and
   turned 4 of 5 nav links and every menu item blue-underlined. Two-class
   selectors (0,2,1) beat it regardless of source order. Do not "simplify"
   them back to one class.

   --ag-nav-top is 0 everywhere except the homepage, where home.css sets it to
   the announcement bar's measured height (see agency.js). The bar, the menu
   and the mobile sheet all hang off it, so they can never disagree. */
/* height/display/padding are reset explicitly: assets/tools.css:21 still has a
   legacy bare `nav{height:48px;display:flex;padding:0 clamp(1rem,4vw,3rem)…}` rule
   from the old tool-site chrome. It matches .ag-nav on all 64 tool pages and
   squeezed this 64px bar into a 48px box, drawing the bottom border through
   the middle of it (measured 2026-09-23). The old floating pill had no
   background of its own, which is why nobody saw it. */
.ag-nav{position:fixed;top:var(--ag-nav-top,0px);left:0;right:0;z-index:1000;height:auto;display:block;padding:0;font-family:var(--ag-font);
  background:rgba(8,10,15,.72);backdrop-filter:saturate(160%) blur(16px);-webkit-backdrop-filter:saturate(160%) blur(16px);
  border-bottom:1px solid var(--ag-line);transition:background .2s ease,border-color .2s ease}
.ag-nav.scrolled{background:rgba(8,10,15,.92);border-bottom-color:var(--ag-line2)}
.ag-nav-in{max-width:1200px;height:var(--ag-nav-h);margin:0 auto;padding:0 24px;display:flex;align-items:center;gap:28px}

/* brand — the base rules are shared with the footer, so they stay generic;
   the nav-only overrides give the glyph a light tile it can be read on
   (6.26:1; it was dark-on-dark at 1.09:1) */
.ag-brand{display:inline-flex;align-items:center;gap:9px;font-weight:800;letter-spacing:-.02em;color:#F5F7FA;text-decoration:none;font-size:17px;white-space:nowrap}
.ag-brand .lg{width:30px;height:30px;border-radius:9px;background:var(--ag-card);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.ag-brand .lg svg{width:18px;height:18px}
.ag-brand .lg svg g{fill:#0b0b12}
.ag-brand small{font-weight:600;color:var(--ag-mut);font-size:11.5px;letter-spacing:.02em;margin-left:2px}
.ag-nav .ag-brand{gap:10px;font-weight:700;font-size:16px;flex-shrink:0;border-radius:8px}
.ag-nav .ag-brand .lg{border-radius:8px;background:var(--ag-grad)}
.ag-nav .ag-brand .lg svg g{fill:var(--ag-ink-on-accent)}

/* top-level links */
.ag-nav .ag-links{display:flex;align-items:center;gap:2px;height:100%}
.ag-nav .ag-nl{position:relative;height:100%;display:flex;align-items:center}
.ag-nav .ag-nl>a,.ag-nav .ag-nl>button{position:relative;font:inherit;font-size:14px;font-weight:500;color:var(--ag-ink2);text-decoration:none;background:none;border:0;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:8px;white-space:nowrap;transition:color .15s ease,background .15s ease}
.ag-nav .ag-nl>a:hover,.ag-nav .ag-nl>button:hover,.ag-nav .ag-nl>button[aria-expanded="true"]{color:#fff;background:rgba(255,255,255,.06);text-decoration:none}
.ag-nav .ag-nl>button svg{width:12px;height:12px;transition:transform .2s ease}
.ag-nav .ag-nl>button[aria-expanded="true"] svg{transform:rotate(180deg)}
/* current section: white text + a 2px accent bar on the bar's bottom edge.
   Drawn from the 36px link, so it drops by half the leftover bar height. */
.ag-nav .ag-nl.on>a,.ag-nav .ag-nl.on>button{color:#fff}
.ag-nav .ag-nl.on>a::after,.ag-nav .ag-nl.on>button::after{content:"";position:absolute;left:12px;right:12px;bottom:calc((36px - var(--ag-nav-h)) / 2 - 1px);height:2px;border-radius:2px;background:var(--ag-a1)}
/* The Services item is left unpositioned on purpose: its panel lives INSIDE it
   (so Tab moves from the button straight into the menu), and this makes the
   panel resolve against .ag-nav. .ag-nav's backdrop-filter makes it the
   containing block for descendants anyway, so position:fixed would not mean
   the viewport here - absolute + top:100% is the honest version. */
.ag-nav .ag-nl.ag-dd{position:static}

/* primary action */
.ag-nav .ag-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
.ag-nav-cta{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 16px;border-radius:8px;background:var(--ag-grad);color:var(--ag-ink-on-accent);
  font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap;transition:filter .15s ease,transform .15s ease}
.ag-nav-cta:hover{filter:brightness(1.08);color:var(--ag-ink-on-accent);text-decoration:none}
.ag-nav-cta:active{transform:translateY(1px)}

/* ── mega-menu: a disclosure panel (not an ARIA menu) ── */
.ag-dd-menu{position:absolute;left:50%;top:calc(100% + 8px);width:min(1120px,calc(100vw - 48px));z-index:1001;
  max-height:calc(100vh - var(--ag-nav-top,0px) - var(--ag-nav-h) - 24px);overflow-y:auto;overscroll-behavior:contain;
  transform:translate(-50%,-6px);opacity:0;visibility:hidden;pointer-events:none;font-family:var(--ag-font);
  background:var(--ag-bg2);border:1px solid var(--ag-line2);border-radius:16px;box-shadow:0 32px 80px -24px rgba(0,0,0,.85);
  transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s}
/* invisible bridge over the 8px gap, so the pointer never 'leaves' on the way down */
.ag-dd-menu::before{content:"";position:absolute;left:0;right:0;top:-10px;height:10px}
.ag-dd-menu.open{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0);transition:opacity .16s ease,transform .16s ease}
.ag-dd-menu .ag-dd-grid{display:grid;grid-template-columns:repeat(3,1fr) 280px;gap:8px 20px;padding:20px}
.ag-dd-menu .ag-dd-h{margin:0 0 6px;padding:0 10px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ag-mut2);line-height:1.6}
.ag-dd-menu .ag-dd-h.gap{margin-top:14px}
.ag-dd-menu .ag-dd-col a{display:block;padding:8px 10px;border-radius:10px;text-decoration:none;transition:background .15s ease}
.ag-dd-menu .ag-dd-col a:hover{background:rgba(255,255,255,.05);text-decoration:none}
.ag-dd-menu .ag-dd-col a b{display:block;font-size:14px;font-weight:600;color:var(--ag-ink);line-height:1.35}
.ag-dd-menu .ag-dd-col a span{display:block;font-size:12.5px;font-weight:400;color:var(--ag-mut);line-height:1.4;margin-top:2px}
.ag-dd-menu .ag-dd-feat{background:linear-gradient(160deg,rgba(91,140,255,.16),rgba(91,140,255,.04) 60%);border:1px solid rgba(91,140,255,.28);
  border-radius:12px;padding:18px;display:flex;flex-direction:column;align-self:start}
.ag-dd-menu .ag-dd-feat .eyebrow{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ag-a2)}
.ag-dd-menu .ag-dd-feat strong{display:block;font-size:17px;font-weight:700;line-height:1.3;margin:8px 0 6px;color:#fff}
.ag-dd-menu .ag-dd-feat p{margin:0 0 16px;font-size:13.5px;color:var(--ag-ink2);line-height:1.5}
.ag-dd-menu .ag-dd-feat .ag-nav-cta{white-space:normal;text-align:center;height:auto;min-height:40px;padding:10px 14px;line-height:1.3}
.ag-dd-menu .ag-dd-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 30px;border-top:1px solid var(--ag-line);font-size:13px;color:var(--ag-mut)}
.ag-dd-menu .ag-dd-foot a{color:var(--ag-a2);font-weight:600;text-decoration:none}
.ag-dd-menu .ag-dd-foot a:hover{color:#fff;text-decoration:none}
/* Compact menu on short or narrow desktops. Measured 2026-09-23: the full menu
   is 684px tall (722px at 1024px wide) and needs ~772px of viewport, so it had
   to scroll INSIDE itself at 1366x768 (the most common laptop), 1280x720 and
   1024x768. A menu you must scroll is worse than one without subtitles, and
   the service titles carry the meaning on their own - so drop the one-line
   descriptions there. 1280x800 and up keep the full design. */
@media(max-height:779px),(max-width:1279px){
  .ag-dd-menu .ag-dd-col a span{display:none}
  .ag-dd-menu .ag-dd-col a{padding:7px 10px}
}

/* ── burger: light lines (were --ag-card, 1.10:1), 44px target ── */
.ag-nav .ag-burger{display:none;width:44px;height:44px;border-radius:10px;border:1px solid var(--ag-line2);background:transparent;cursor:pointer;
  align-items:center;justify-content:center;flex-shrink:0;padding:0}
.ag-nav .ag-burger span,.ag-nav .ag-burger span::before,.ag-nav .ag-burger span::after{display:block;width:18px;height:2px;border-radius:2px;background:var(--ag-ink);transition:transform .2s ease,background .2s ease}
.ag-nav .ag-burger span{position:relative}
.ag-nav .ag-burger span::before,.ag-nav .ag-burger span::after{content:"";position:absolute;left:0}
.ag-nav .ag-burger span::before{top:-6px}
.ag-nav .ag-burger span::after{top:6px}
.ag-nav .ag-burger[aria-expanded="true"] span{background:transparent}
.ag-nav .ag-burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.ag-nav .ag-burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}

/* ── mobile sheet ── */
.ag-mobile{position:fixed;top:calc(var(--ag-nav-top,0px) + var(--ag-nav-h));left:0;right:0;bottom:0;z-index:999;background:var(--ag-bg);
  display:none;flex-direction:column;border-top:1px solid var(--ag-line);font-family:var(--ag-font)}
.ag-mobile.open{display:flex}
.ag-mobile .ag-mob-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:8px 20px 16px}
.ag-mobile .ag-mob-row,.ag-mobile .ag-mob-acc{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:52px;padding:0 4px;
  font:inherit;font-size:17px;font-weight:500;color:var(--ag-ink);text-decoration:none;background:none;border:0;border-bottom:1px solid var(--ag-line);cursor:pointer;text-align:left}
.ag-mobile .ag-mob-acc svg{width:14px;height:14px;flex-shrink:0;transition:transform .2s ease;color:var(--ag-mut)}
.ag-mobile .ag-mob-acc[aria-expanded="true"] svg{transform:rotate(180deg)}
.ag-mobile .ag-mob-sub{display:none;padding:4px 0 12px;border-bottom:1px solid var(--ag-line)}
.ag-mobile .ag-mob-sub.open{display:block}
.ag-mobile .ag-mob-h{margin:12px 4px 2px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ag-mut2)}
.ag-mobile .ag-mob-sub a{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:10px;font-size:15px;font-weight:400;color:var(--ag-ink2);text-decoration:none}
.ag-mobile .ag-mob-sub a:active{background:rgba(255,255,255,.05)}
.ag-mobile .ag-mob-cta{padding:14px 20px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--ag-line);background:var(--ag-bg2);display:grid;gap:10px}
.ag-mobile .ag-mob-cta a{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:10px;font-size:15px;font-weight:600;text-decoration:none;text-align:center;padding:0 16px;line-height:1.3}
.ag-mobile .ag-mob-cta .primary{background:var(--ag-grad);color:var(--ag-ink-on-accent)}
.ag-mobile .ag-mob-cta .ghost{border:1px solid var(--ag-line2);color:var(--ag-ink)}

/* ≤1023px: burger replaces the links and the bar CTA (both CTAs live in the
   sheet — owner decision 2026-09-23) */
@media(max-width:1023px){
  .ag-nav .ag-links,.ag-nav .ag-actions .ag-nav-cta{display:none}
  .ag-nav .ag-burger{display:inline-flex}
  .ag-nav .ag-nav-in{padding:0 16px;gap:12px}
}
/* the mega-menu is desktop-only; never let it linger if the window narrows */
@media(max-width:1023px){.ag-dd-menu{display:none}}
@media(prefers-reduced-motion:reduce){
  .ag-nav,.ag-nav *,.ag-dd-menu,.ag-dd-menu *,.ag-mobile *{transition:none!important}
}

/* ───────── BUTTONS ───────── */
.ag-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--ag-grad);color:var(--ag-ink-on-accent);font-weight:700;font-size:14.5px;padding:11px 20px;border-radius:999px;text-decoration:none;white-space:nowrap;border:0;cursor:pointer;font-family:inherit;box-shadow:0 10px 22px -10px rgba(91,140,255,.7);transition:transform .2s,box-shadow .2s,filter .2s}
.ag-btn:hover{transform:translateY(-1px);box-shadow:0 14px 28px -10px rgba(91,140,255,.8);filter:brightness(1.07)}
.ag-btn:focus-visible{outline:3px solid rgba(125,163,255,.85);outline-offset:2px}

/* ── FOCUS (WCAG 2.4.7) ───────────────────────────────────────────────
   15 rules across the page stylesheets set `outline:none` on inputs and
   rely on a border-colour change, which is not a reliable focus indicator.
   agency.css now loads FIRST, so a plain rule here would lose to them:
   !important is deliberate and is scoped to :focus-visible only, so it
   never affects the resting state and never shows for mouse users. */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible,
[contenteditable]:focus-visible,[role="button"]:focus-visible{
  outline:3px solid var(--ag-a2)!important;outline-offset:2px!important;
}
/* on a light island (the printable invoice) the ring needs a dark colour */
#ws-invoice .inv-doc :focus-visible{outline-color:#2563eb!important}

/* ── TARGET SIZE (WCAG 2.5.8) ─────────────────────────────────────────
   Block links in the nav and footer columns measured 19px tall at 390px.
   Inline links inside a sentence are exempt from 2.5.8 and are left alone;
   these are standalone list targets, so they get a real 24px hit area.
   Padding rather than height, so nothing reflows. */
.ag-footer a,.ag-footer-grid a,
.ag-footer-bottom a,.ftr-col a,.bnav-item,.nlinks a{
  min-height:24px;display:inline-flex;align-items:center;
}
.ag-footer-grid a,.ftr-col a{padding-block:3px}
/* small icon-only controls: close buttons, row delete, stepper arrows */
.dl-promo-close,.ann .x,button.del,.inv-gbtn{min-width:24px;min-height:24px}
/* the announcement-bar CTA and the invoice adjustment links were 15-19px tall */
.ann a,.inv-adj a,.inv-trow a{min-height:24px;display:inline-flex;align-items:center}
/* the invoice line-item description collapses to 20px wide in its grid column */
.inv-row .desc,.inv-row input.desc{min-width:24px}
.q #qv{min-height:24px}
/* native checkboxes and radios render 13x13. Enlarge them and make the label
   that wraps them a 24px target, which is what a pointer actually hits. */
input[type="checkbox"],input[type="radio"]{width:24px;height:24px;accent-color:var(--ag-a1);flex-shrink:0}
label:has(> input[type="checkbox"]),label:has(> input[type="radio"]),
.wb-pattern-opt,.ag-check,.ag-checks label{min-height:24px;display:inline-flex;align-items:center;gap:8px}




.ag-btn.ghost{background:transparent;color:var(--ag-ink);box-shadow:none;border:1px solid var(--ag-line2)}
.ag-btn.ghost:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.3)}
.ag-btn.dark{background:var(--ag-card2);color:var(--ag-ink);box-shadow:none;border:1px solid var(--ag-line2)}
.ag-btn.lg{padding:15px 26px;font-size:16px}
.ag-btn.wide{width:100%}
.ag-btn[disabled]{opacity:.6;cursor:not-allowed;transform:none}
/* Unclassed links in prose had no colour of their own, so they fell back to the
   browser default #0000EE -- 1.9:1 on a dark card. :not([class]) keeps this away
   from every component that styles its own anchors. */
/* WCAG 1.4.1: a link inside a block of text needs a non-colour cue, or it is
   invisible to anyone who cannot distinguish the hue. Underline, offset so it
   does not collide with descenders. Classed links (nav, cards, buttons) are
   excluded -- they are visually distinguishable by their own treatment. */
a:not([class]){color:var(--ag-a1);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
a:not([class]):hover{color:var(--ag-a2);text-decoration-thickness:2px}
.ag-link{color:var(--ag-a1);font-weight:600;text-decoration:none}
.ag-link:hover{text-decoration:underline}

/* ───────── TYPE ───────── */
/* ── TYPE SCALE (2026-09-22) ──────────────────────────────────────────
   One scale for the whole site. It replaces 27 different H1 font-size
   declarations that had accumulated across tools.css, theme.css,
   website-builder.css, home.css and ~100 inline <style> blocks.
   The bare element selectors are what reach pages that never adopted the
   .ag- classes; the .ag- classes are kept so existing markup still matches.
   Anything that needs a different size should use a component class, not a
   new h1/h2 rule — that is how five sizes became twenty-seven. */
body{font-size:1rem;line-height:1.6;font-weight:400}
h1,.ag-h1{font-size:clamp(2.25rem,1.2rem + 3.6vw,4.3rem);font-weight:800;line-height:1;letter-spacing:-.035em;margin:0 0 18px;text-wrap:balance}
h2,.ag-h2{font-size:clamp(1.75rem,1.2rem + 1.8vw,2.375rem);font-weight:800;line-height:1.12;letter-spacing:-.025em;margin:0 0 12px;text-wrap:balance}
h3,.ag-h3{font-size:1.0625rem;font-weight:700;line-height:1.6;letter-spacing:-.01em;margin:0 0 6px}
/* .sm steps an H2 down to the section tier without inventing a new size.
   Reach for this instead of a style="font-size:..." attribute. */
.ag-h2.sm{font-size:var(--ag-h2-section)}
.ag-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:.75rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ag-a2);margin:0 0 14px}
.ag-eyebrow::before{content:"";width:22px;height:2px;background:var(--ag-a1);border-radius:2px}
h1 em,h2 em,.ag-h1 em,.ag-h2 em{font-family:var(--ag-serif);font-style:italic;font-weight:400;background:var(--ag-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.ag-lead{font-size:1.0625rem;color:var(--ag-mut);max-width:62ch;margin:0 0 26px;line-height:1.7}
.ag-sub{color:var(--ag-mut);max-width:64ch}
.ag-center{text-align:center}
.ag-center .ag-lead,.ag-center .ag-sub{margin-left:auto;margin-right:auto}
.ag-center .ag-eyebrow{justify-content:center}

/* ───────── LAYOUT ───────── */
.ag-section{padding:96px 0}
.ag-section.tight{padding:56px 0}
.ag-section.alt{background:var(--ag-bg2);border-top:1px solid var(--ag-line);border-bottom:1px solid var(--ag-line)}
.ag-section.dark{background:var(--ag-card);color:var(--ag-ink2);border-top:1px solid var(--ag-line);border-bottom:1px solid var(--ag-line)}
.ag-section.dark .ag-h2,.ag-section.dark .ag-h3{color:var(--ag-ink)}
.ag-section.dark .ag-lead,.ag-section.dark .ag-sub{color:var(--ag-mut)}
.ag-section.dark .ag-eyebrow{color:var(--ag-a3)}
.ag-grid{display:grid;gap:18px}
.ag-grid.c2{grid-template-columns:repeat(2,1fr)}
.ag-grid.c3{grid-template-columns:repeat(3,1fr)}
.ag-grid.c4{grid-template-columns:repeat(4,1fr)}
.ag-split{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center}
@media(max-width:1024px){.ag-grid.c4{grid-template-columns:repeat(2,1fr)}.ag-grid.c3{grid-template-columns:repeat(2,1fr)}.ag-split{grid-template-columns:1fr;gap:28px}}
@media(max-width:768px){.ag-section{padding:64px 0}.ag-grid.c2,.ag-grid.c3,.ag-grid.c4{grid-template-columns:1fr}}

/* ───────── HERO ───────── */
.ag-hero{padding:52px 0 40px;position:relative;overflow:hidden}
.ag-hero::before{content:"";position:absolute;inset:-20% -10% auto;height:70%;background:radial-gradient(60% 60% at 20% 20%,rgba(91,140,255,.14),transparent 60%),radial-gradient(50% 50% at 80% 10%,rgba(125,163,255,.16),transparent 60%);pointer-events:none;z-index:0}
.ag-hero>.ag-wrap{position:relative;z-index:1}
.ag-hero .ag-lead{font-size:clamp(17px,1.5vw,20px)}
.ag-ctas{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:6px 0 22px}
.ag-trustline{display:flex;flex-wrap:wrap;gap:8px 18px;color:var(--ag-mut);font-size:13.5px;font-weight:600}
.ag-trustline span::before{content:"✓";color:var(--ag-a1);margin-right:6px;font-weight:800}
.ag-hero-visual{position:relative}
.ag-hero-card{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:22px;box-shadow:var(--ag-sh);padding:18px;font-size:13.5px}
.ag-hero-card+.ag-hero-card{margin-top:12px}
.ag-hero-card .k{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ag-mut2);margin-bottom:8px}
.ag-flow{display:flex;flex-direction:column;gap:8px}
.ag-flow div{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--ag-line);border-radius:12px;background:var(--ag-card)}
.ag-flow div b{width:24px;height:24px;border-radius:7px;background:var(--ag-grad);color:var(--ag-ink-on-accent);display:inline-flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}
.ag-hero-mini{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ag-hero-mini div{padding:12px;border-radius:12px;background:var(--ag-soft);border:1px solid rgba(91,140,255,.14)}
.ag-hero-mini b{display:block;font-size:22px;letter-spacing:-.02em}
.ag-hero-mini span{font-size:12px;color:var(--ag-mut)}
.ag-magnet{margin-top:28px;display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;padding:16px 20px;border:1px dashed rgba(91,140,255,.35);border-radius:16px;background:rgba(255,255,255,.7)}
.ag-magnet p{margin:0;font-size:14.5px;color:var(--ag-ink2)}
.ag-magnet p b{display:block;color:var(--ag-ink);font-size:15px}
.ag-magnet .ag-btn{margin-left:auto}

/* ───────── TRUST STRIP ───────── */
.ag-trust{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding:22px 0 0}
.ag-trust div{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:16px;padding:18px 18px 16px;box-shadow:var(--ag-sh2)}
.ag-trust b{display:block;font-size:28px;letter-spacing:-.03em;line-height:1;background:var(--ag-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.ag-trust span{display:block;margin-top:6px;font-size:13.5px;color:var(--ag-mut);font-weight:600}
@media(max-width:1024px){.ag-trust{grid-template-columns:repeat(2,1fr)}}

/* ───────── CARDS ───────── */
.ag-card{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:var(--ag-r);padding:26px;box-shadow:var(--ag-sh2);transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s,border-color .3s;display:flex;flex-direction:column;gap:8px}
.ag-card:hover{transform:translateY(-3px);box-shadow:var(--ag-sh);border-color:rgba(91,140,255,.28)}
.ag-card p{margin:0;color:var(--ag-mut);font-size:14.5px;line-height:1.55}
.ag-card .ag-h3{margin:0}
.ag-card .ic{width:44px;height:44px;border-radius:12px;background:var(--ag-soft);display:inline-flex;align-items:center;justify-content:center;font-size:21px;margin-bottom:6px}
.ag-card .more{margin-top:auto;padding-top:8px;font-size:14px;font-weight:700;color:var(--ag-a1);text-decoration:none}
.ag-card .more:hover{text-decoration:underline}
a.ag-card{text-decoration:none;color:inherit}
.ag-card.hl{border-color:rgba(91,140,255,.35);background:linear-gradient(180deg,var(--ag-card2),var(--ag-card))}

/* category block (Ecommerce / AI) */
.ag-cat{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:26px;padding:34px;box-shadow:var(--ag-sh2);display:flex;flex-direction:column;gap:18px;position:relative;overflow:hidden}
.ag-cat::after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(91,140,255,.12),transparent 65%);pointer-events:none}
.ag-cat.ai::after{background:radial-gradient(circle,rgba(125,163,255,.18),transparent 65%)}
.ag-cat .ag-h2{font-size:28px}
.ag-cat ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.ag-cat li{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}
.ag-cat li i{font-style:normal;width:30px;height:30px;border-radius:9px;background:var(--ag-soft);display:inline-flex;align-items:center;justify-content:center;font-size:15px}
.ag-cat li a{font-weight:700;color:var(--ag-ink);text-decoration:none}
.ag-cat li a:hover{color:var(--ag-a1)}
.ag-cat li span{display:block;color:var(--ag-mut);font-size:14px;line-height:1.5}
.ag-cat .ag-btn{align-self:flex-start;margin-top:4px}

/* problem list */
.ag-problems{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0 10px}
.ag-problems div{display:flex;gap:10px;align-items:flex-start;background:var(--ag-card);border:1px solid var(--ag-line);border-radius:14px;padding:14px 16px;font-size:14.5px;color:var(--ag-ink2);font-weight:500}
.ag-problems div::before{content:"✕";color:var(--ag-err);font-weight:800;flex-shrink:0}
.ag-problem-turn{margin-top:26px;font-size:20px;font-weight:800;letter-spacing:-.01em}
.ag-problem-turn em{font-family:var(--ag-serif);font-style:italic;font-weight:400;font-size:1.25em;background:var(--ag-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
@media(max-width:1024px){.ag-problems{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.ag-problems{grid-template-columns:1fr}}

/* steps */
.ag-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:st}
.ag-steps>div{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:18px;padding:22px;position:relative;counter-increment:st}
.ag-steps>div::before{content:"0" counter(st);font-size:12px;font-weight:800;letter-spacing:.1em;color:var(--ag-a1);display:block;margin-bottom:10px}
.ag-steps b{display:block;font-size:16.5px;margin-bottom:6px;letter-spacing:-.01em}
.ag-steps p{margin:0;color:var(--ag-mut);font-size:14px;line-height:1.55}
@media(max-width:1024px){.ag-steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.ag-steps{grid-template-columns:1fr}}

/* check list / feature list */
.ag-checks{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.ag-checks li{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;font-size:15px;color:var(--ag-ink2)}
.ag-checks li::before{content:"✓";width:22px;height:22px;border-radius:7px;background:var(--ag-ok-bg);color:var(--ag-ok);font-weight:800;font-size:12px;display:inline-flex;align-items:center;justify-content:center;margin-top:2px}
.ag-checks li b{color:var(--ag-ink)}
.ag-pills{display:flex;flex-wrap:wrap;gap:8px}
.ag-pills span{padding:6px 12px;border-radius:999px;background:var(--ag-card);border:1px solid var(--ag-line);font-size:13px;font-weight:600;color:var(--ag-ink2)}

/* FAQ */
.ag-faq{display:grid;gap:10px;max-width:860px}
.ag-faq details{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:16px;box-shadow:var(--ag-sh2)}
.ag-faq summary{cursor:pointer;list-style:none;padding:18px 22px;font-weight:700;font-size:16px;display:flex;justify-content:space-between;align-items:center;gap:14px}
.ag-faq summary::-webkit-details-marker{display:none}
.ag-faq summary::after{content:"+";font-size:22px;font-weight:300;color:var(--ag-mut);flex-shrink:0}
.ag-faq details[open] summary::after{content:"−"}
.ag-faq details>div{padding:0 22px 20px;color:var(--ag-ink2);font-size:15px;line-height:1.65}

/* CTA band */
.ag-cta{background:var(--ag-dark);color:#fff;border-radius:28px;padding:54px 40px;position:relative;overflow:hidden;text-align:center}
.ag-cta::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 80% at 15% 10%,rgba(91,140,255,.45),transparent 60%),radial-gradient(50% 70% at 90% 90%,rgba(125,163,255,.35),transparent 60%);pointer-events:none}
.ag-cta>*{position:relative}
.ag-cta .ag-h2{color:#fff;margin-bottom:10px}
.ag-cta p{color:#c9cedb;max-width:56ch;margin:0 auto 24px;font-size:16.5px}
.ag-cta .ag-ctas{justify-content:center;margin:0}
.ag-cta .ag-btn.ghost{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.25)}
@media(max-width:768px){.ag-cta{padding:40px 22px;border-radius:22px}}

/* breadcrumbs */
.ag-crumb{font-size:13px;color:var(--ag-mut);margin:0 0 18px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ag-crumb a{color:var(--ag-mut);text-decoration:none}
.ag-crumb a:hover{color:var(--ag-a1)}
.ag-crumb span::before{content:"/";margin:0 2px;color:var(--ag-mut2)}
.ag-crumb span:first-child::before{content:none}

/* ───────── FORMS ───────── */
.ag-form{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:22px;padding:28px;box-shadow:var(--ag-sh)}
.ag-form h3{margin:0 0 4px;font-size:20px;letter-spacing:-.01em}
.ag-form .hint{margin:0 0 18px;color:var(--ag-mut);font-size:14px}
.ag-form label{display:block;font-size:13px;font-weight:700;color:var(--ag-ink2);margin:14px 0 6px}
.ag-form label:first-of-type{margin-top:0}
.ag-form .help{margin:-2px 0 8px;font-size:12.5px;line-height:1.5;color:var(--ag-mut)}
.ag-form input,.ag-form select,.ag-form textarea{width:100%;font:inherit;font-size:15px;padding:12px 14px;border:1px solid var(--ag-line2);border-radius:12px;background:var(--ag-bg2);color:var(--ag-ink);outline:none;transition:border-color .15s,box-shadow .15s}
.ag-form input:focus,.ag-form select:focus,.ag-form textarea:focus{border-color:var(--ag-a1);box-shadow:0 0 0 3px rgba(91,140,255,.25);background:var(--ag-bg2)}
.ag-form textarea{min-height:110px;resize:vertical}
.ag-form .row{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.ag-form .ag-btn{margin-top:20px}
.ag-form .fine{font-size:12.5px;color:var(--ag-mut2);margin:12px 0 0}
.ag-form .msg{display:none;margin-top:14px;padding:12px 14px;border-radius:12px;font-size:14px;font-weight:600}
.ag-form .msg.ok{display:block;background:var(--ag-ok-bg);color:var(--ag-ok)}
.ag-form .msg.err{display:block;background:var(--ag-err-bg);color:var(--ag-err)}
.ag-form .hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}
.ag-form-wrap{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
.ag-form-side .ag-checks{margin-top:18px}
.ag-contact-list{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:10px}
.ag-contact-list a{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--ag-card);border:1px solid var(--ag-line);border-radius:14px;color:var(--ag-ink);text-decoration:none;font-weight:600}
.ag-contact-list a:hover{border-color:rgba(91,140,255,.3)}
.ag-contact-list a span{color:var(--ag-mut);font-weight:500;font-size:13px;display:block}
@media(max-width:1024px){.ag-form-wrap{grid-template-columns:1fr}.ag-form .row{grid-template-columns:1fr}}

/* ───────── CASE STUDY ───────── */
.ag-case-card{display:flex;flex-direction:column;background:var(--ag-card);border:1px solid var(--ag-line);border-radius:22px;overflow:hidden;text-decoration:none;color:inherit;box-shadow:var(--ag-sh2);transition:transform .3s,box-shadow .3s}
.ag-case-card:hover{transform:translateY(-3px);box-shadow:var(--ag-sh)}
.ag-case-card .img{aspect-ratio:16/10;background:var(--ag-card2) center/cover no-repeat;border-bottom:1px solid var(--ag-line)}
.ag-case-card .body{padding:20px 22px 22px;display:flex;flex-direction:column;gap:6px}
.ag-tag{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ag-a1);background:var(--ag-soft);padding:4px 9px;border-radius:999px;align-self:flex-start}
.ag-case-card p{margin:0;color:var(--ag-mut);font-size:14.5px}
.ag-case-hero{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:center}
.ag-case-media{border-radius:22px;overflow:hidden;border:1px solid var(--ag-line);box-shadow:var(--ag-sh);background:#000}
.ag-case-media img,.ag-case-media video{display:block;width:100%}
.ag-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:22px 0}
.ag-facts div{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:14px;padding:14px}
.ag-facts b{display:block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ag-mut2);margin-bottom:5px}
.ag-note{background:var(--ag-warn-bg);border:1px solid rgba(245,181,68,.35);color:var(--ag-warn);border-radius:14px;padding:14px 16px;font-size:14px}
@media(max-width:1024px){.ag-case-hero{grid-template-columns:1fr}}

/* ───────── ARTICLE / PROSE ───────── */
.ag-prose{max-width:760px;font-size:17px;line-height:1.75;color:var(--ag-ink2)}
.ag-prose h2{font-size:var(--ag-h2-section);letter-spacing:-.02em;color:var(--ag-ink);margin:44px 0 12px;line-height:1.2}
.ag-prose h3{font-size:19px;color:var(--ag-ink);margin:28px 0 8px}
.ag-prose p{margin:0 0 18px}
.ag-prose ul,.ag-prose ol{padding-left:22px;margin:0 0 18px}
.ag-prose li{margin:6px 0}
.ag-prose a{color:var(--ag-a1)}
.ag-prose strong{color:var(--ag-ink)}
.ag-meta{display:flex;flex-wrap:wrap;gap:8px 16px;color:var(--ag-mut);font-size:13.5px;margin:0 0 26px}
.ag-article-cta{margin:44px 0 0;background:linear-gradient(180deg,var(--ag-card),var(--ag-card2));border:1px solid rgba(91,140,255,.25);border-radius:20px;padding:26px}
.ag-article-cta h3{margin:0 0 6px;font-size:20px}
.ag-article-cta p{margin:0 0 14px;color:var(--ag-mut)}
.ag-related{margin-top:56px;padding-top:32px;border-top:1px solid var(--ag-line)}
.ag-related h2{font-size:var(--ag-h2-block);margin:0 0 16px}
.ag-related .ag-grid{gap:12px}
.ag-related .ag-card{padding:18px 20px}
.ag-related .ag-card .ag-h3{font-size:16px}

/* ───────── TOOLS LANDING ───────── */
.ag-tool{display:flex;gap:12px;align-items:flex-start;background:var(--ag-card);border:1px solid var(--ag-line);border-radius:16px;padding:14px 16px;text-decoration:none;color:inherit;transition:border-color .2s,transform .2s}
.ag-tool:hover{border-color:rgba(91,140,255,.35);transform:translateY(-2px)}
.ag-tool i{font-style:normal;font-size:22px;line-height:1;width:38px;height:38px;border-radius:10px;background:var(--ag-soft);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.ag-tool b{display:block;font-size:15px;letter-spacing:-.01em}
.ag-tool span{display:block;color:var(--ag-mut);font-size:13px;line-height:1.45}
.ag-toolcat{margin-top:36px}
.ag-toolcat h2{font-size:var(--ag-h2-block);margin:0 0 14px;display:flex;align-items:baseline;gap:10px}
.ag-toolcat h2 small{font-weight:600;color:var(--ag-mut);font-size:13px}

/* conversion block injected on tool pages */
.ag-tool-cta{margin:36px 0 0;background:linear-gradient(120deg,#0b0b12,#15172a);color:#fff;border-radius:22px;padding:28px 30px;display:flex;flex-wrap:wrap;gap:16px 24px;align-items:center;justify-content:space-between;font-family:var(--ag-font)}
.ag-tool-cta div{max-width:58ch}
.ag-tool-cta b{display:block;font-size:19px;letter-spacing:-.01em;margin-bottom:4px}
.ag-tool-cta p{margin:0;color:#c9cedb;font-size:14.5px;line-height:1.55}
.ag-tool-cta .ag-btn{flex-shrink:0}

/* ───────── AUDIT TOOLS ───────── */
.ag-audit{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:24px;box-shadow:var(--ag-sh);padding:30px;max-width:820px;margin:0 auto}
.ag-audit .q{margin:0 0 18px}
.ag-audit .q>b{display:block;font-size:16px;margin-bottom:10px}
.ag-opts{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.ag-opts label{display:flex;gap:10px;align-items:center;padding:11px 13px;border:1px solid var(--ag-line2);border-radius:12px;cursor:pointer;font-size:14.5px;font-weight:500;margin:0;background:var(--ag-bg2)}
.ag-opts label:has(input:checked){border-color:var(--ag-a1);background:var(--ag-soft)}
.ag-opts input{width:auto;margin:0}
.ag-score{display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:center;background:var(--ag-soft);border:1px solid rgba(91,140,255,.2);border-radius:18px;padding:20px}
.ag-score .n{font-size:52px;font-weight:800;letter-spacing:-.04em;line-height:1;background:var(--ag-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.ag-score .n small{font-size:18px;color:var(--ag-mut);-webkit-text-fill-color:var(--ag-mut)}
.ag-findings{display:grid;gap:10px;margin:18px 0}
.ag-findings div{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:14px 16px;border:1px solid var(--ag-line);border-radius:14px;background:var(--ag-card)}
.ag-findings div i{font-style:normal;width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:13px}
.ag-findings .good i{background:var(--ag-ok-bg);color:var(--ag-ok)}
.ag-findings .warn i{background:var(--ag-warn-bg);color:var(--ag-warn)}
.ag-findings .bad i{background:var(--ag-err-bg);color:var(--ag-err)}
.ag-findings b{display:block;font-size:15px}
.ag-findings span{color:var(--ag-mut);font-size:13.5px;line-height:1.5}
.ag-progress{height:6px;border-radius:999px;background:var(--ag-line);overflow:hidden;margin:0 0 22px}
.ag-progress i{display:block;height:100%;background:var(--ag-grad);width:0;transition:width .3s}
@media(max-width:768px){.ag-opts{grid-template-columns:1fr}.ag-audit{padding:22px}.ag-score{grid-template-columns:1fr}}

/* ───────── FOOTER ───────── */
.ag-footer{background:var(--ag-bg);color:var(--ag-ink2);margin-top:80px;padding:0 0 34px;font-family:var(--ag-font)}
.ag-footer-cta{background:linear-gradient(120deg,#131529,#0b0b12);border-bottom:1px solid rgba(255,255,255,.06);padding:44px 0}
.ag-footer-cta .ag-wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px}
.ag-footer-cta b{display:block;font-size:24px;letter-spacing:-.02em;color:#fff}
.ag-footer-cta p{margin:4px 0 0;color:#b8bdcc;font-size:15px}
.ag-footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:30px;padding:50px 0 36px}
.ag-footer h2,.ag-footer h4{margin:0 0 12px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ag-mut2);line-height:1.6}
.ag-footer a{display:block;color:#c9cedb;text-decoration:none;font-size:14.5px;padding:5px 0}
.ag-footer a:hover{color:#fff}
.ag-footer .ag-brand{color:#fff;display:inline-flex;align-items:center;gap:10px;font-size:16px;font-weight:700}
/* `.ag-footer a` (0,1,1) outranks `.ag-btn` (0,1,0), so it was painting the footer
   CTA's label #c9cedb on the blue fill: 1.56:1 to 2.01:1 across the gradient, on
   every page (measured 2026-09-23). It also made the brand link display:block,
   which dropped the gap between the logo tile and the wordmark. */
.ag-footer .ag-btn,.ag-footer .ag-btn:hover{color:var(--ag-ink-on-accent)}
/* Same mark as the nav (2026-09-23). Was a #0b0b12 glyph on a --ag-card tile,
   1.09:1 - the footer logo was effectively invisible. 6.26:1 now. */
.ag-footer .ag-brand .lg{background:var(--ag-grad);border-radius:8px}
.ag-footer .ag-brand .lg svg g{fill:var(--ag-ink-on-accent)}
.ag-footer .blurb{color:#9aa1b4;font-size:14px;line-height:1.6;margin:14px 0 0;max-width:300px}
.ag-footer-bottom{border-top:1px solid rgba(255,255,255,.08);padding-top:22px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;color:#7d8499;font-size:13px}
.ag-footer-bottom a{display:inline;padding:0 0 0 14px;color:#9aa1b4;font-size:13px}
@media(max-width:1024px){.ag-footer-grid{grid-template-columns:1fr 1fr 1fr}.ag-footer-grid>div:first-child{grid-column:1/-1}}
@media(max-width:768px){.ag-footer-grid{grid-template-columns:1fr 1fr}.ag-footer-grid>div:first-child{grid-column:1/-1}}
@media(max-width:560px){.ag-footer-grid{grid-template-columns:1fr;gap:24px}}

/* ───────── MISC ───────── */
.ag-badge{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;background:var(--ag-card);border:1px solid var(--ag-line);font-size:13px;font-weight:600;color:var(--ag-ink2)}
.ag-badge i{width:8px;height:8px;border-radius:50%;background:var(--ag-ok);display:inline-block}
.ag-testimonials .ag-card{gap:12px}
.ag-testimonials .stars{color:#f59e0b;letter-spacing:2px;font-size:14px}
.ag-testimonials .q{font-size:15px;color:var(--ag-ink2);line-height:1.6;margin:0}
.ag-testimonials .who{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:6px}
.ag-testimonials .who i{font-style:normal;width:36px;height:36px;border-radius:50%;background:var(--ag-grad);color:var(--ag-ink-on-accent);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:12px}
.ag-testimonials .who b{display:block;font-size:14px}
.ag-testimonials .who span{font-size:12.5px;color:var(--ag-mut)}
.ag-reveal{opacity:0;transform:translateY(14px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1)}
.ag-reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.ag-reveal{opacity:1!important;transform:none!important;transition:none!important}.ag-btn,.ag-card,.ag-case-card,.ag-tool{transition:none!important}}

/* ───────── Phase 3 (2026-09-06): Business Support components ───────── */
.ag-dd-menu{grid-template-columns:1fr 1fr 1fr;min-width:860px}
.ag-footer-grid{grid-template-columns:1.35fr 1fr 1fr 1fr 1fr 1fr;gap:22px}
.ag-footer a{font-size:13.5px}
@media(max-width:1024px){.ag-footer-grid{grid-template-columns:1fr 1fr 1fr}.ag-footer-grid>div:first-child{grid-column:1/-1}}

/* services hub: tertiary category + Build → Operate → Automate strip */
.ag-cat.support{margin-top:14px;background:linear-gradient(135deg,var(--ag-card2),var(--ag-card));border:1px solid var(--ag-line)}
.ag-cat.support ul{grid-template-columns:repeat(3,1fr)}
@media(max-width:1024px){.ag-cat.support ul{grid-template-columns:1fr}}
.ag-boa{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}
.ag-boa a{position:relative;display:block;background:var(--ag-dark);color:#fff;border-radius:16px;padding:20px 22px;text-decoration:none;border:1px solid rgba(255,255,255,.08);transition:transform .2s,border-color .2s}
.ag-boa a:hover{transform:translateY(-2px);border-color:rgba(91,140,255,.5)}
.ag-boa .n{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:#7DA3FF}
.ag-boa b{display:block;font-size:20px;margin:4px 0 4px;letter-spacing:-.01em}
.ag-boa p{margin:0;font-size:13.5px;color:#AFB6C6}
.ag-boa a:not(:last-child)::after{content:"→";position:absolute;right:-13px;top:50%;transform:translateY(-50%);width:26px;height:26px;border-radius:50%;background:var(--ag-a1);color:#fff;font-size:13px;display:grid;place-items:center;z-index:1}
@media(max-width:768px){.ag-boa{grid-template-columns:1fr}.ag-boa a:not(:last-child)::after{right:auto;left:50%;top:auto;bottom:-13px;transform:translateX(-50%) rotate(90deg)}}

/* hero visual: fillable PDF animation */
.ag-pdfvis{margin:0;background:#0f1420;border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:18px;box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}
.ag-pdfvis .doc{background:var(--ag-card);color:#1a1f2e;border-radius:12px;padding:16px 18px 14px;font-size:13px;position:relative}
.ag-pdfvis .bar{display:flex;justify-content:space-between;align-items:center;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;color:#6b7280;border-bottom:1px solid #e9ecf2;padding-bottom:8px;margin-bottom:10px}
.ag-pdfvis .state::before{content:attr(data-a);color:#b45309;background:#fff4dc;padding:2px 8px;border-radius:999px;font-weight:700}
.ag-pdfvis .ttl{font-weight:800;font-size:15px;letter-spacing:-.01em;margin-bottom:10px}
.ag-pdfvis .f{display:grid;grid-template-columns:96px 1fr auto;gap:8px;align-items:center;margin:7px 0;opacity:.35;transition:opacity .4s}
.ag-pdfvis .f label{font-size:11.5px;color:#4b5563}
.ag-pdfvis .fld{position:relative;height:26px;border:1px solid #cfd5e1;border-radius:6px;background:#f9fafc;padding:0 8px;display:flex;align-items:center;gap:6px;overflow:visible}
.ag-pdfvis .f em{font-style:normal;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:9.5px;letter-spacing:.12em;color:#5B8CFF;background:rgba(91,140,255,.1);padding:2px 6px;border-radius:5px;opacity:0;transition:opacity .4s}
.ag-pdfvis .typed{white-space:nowrap;overflow:hidden;width:0;color:#111827;font-weight:600}
.ag-pdfvis .cur{width:1.5px;height:14px;background:#5B8CFF;opacity:0}
.ag-pdfvis .dd b{margin-left:auto;color:#6b7280}
.ag-pdfvis .dd ul{position:absolute;left:-1px;right:-1px;top:calc(100% + 4px);margin:0;padding:4px;list-style:none;background:var(--ag-card);border:1px solid #cfd5e1;border-radius:6px;box-shadow:0 8px 22px -10px rgba(0,0,0,.35);opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .3s,transform .3s;z-index:2}
.ag-pdfvis .dd li{padding:4px 8px;border-radius:4px;font-size:12px}
.ag-pdfvis .dd li:first-child{background:rgba(91,140,255,.12);color:#1d4ed8;font-weight:600}
.ag-pdfvis .chk{grid-template-columns:auto 1fr auto}
.ag-pdfvis .box{width:16px;height:16px;border:1.5px solid #9aa3b5;border-radius:4px;display:grid;place-items:center;color:#fff;font-size:11px;background:var(--ag-card);transition:background .3s,border-color .3s}
.ag-pdfvis .box i{font-style:normal;opacity:0;transition:opacity .3s}
.ag-pdfvis .sig{height:34px;color:#1d4ed8}
.ag-pdfvis .sig svg{width:150px;height:28px}
.ag-pdfvis .sig path{stroke-dasharray:420;stroke-dashoffset:420}
.ag-pdfvis figcaption{margin:12px 6px 0;font-size:12px;color:#8a93a6;letter-spacing:.06em;text-transform:uppercase;font-weight:700}
/* staged animation (≈3s), then subtle idle */
.ag-pdfvis.play .f{opacity:1}
.ag-pdfvis.play .f em{opacity:1}
.ag-pdfvis.play .t1 .cur{animation:pvBlink 1s steps(2) 3}
.ag-pdfvis.play .t1 .typed{animation:pvType .7s steps(12) .3s forwards}
.ag-pdfvis.play .t2 .dd ul{animation:pvDrop 1.1s ease 1.1s forwards}
.ag-pdfvis.play .t2 .typed{animation:pvType .5s steps(20) 1.9s forwards}
.ag-pdfvis.play .t3 .typed{animation:pvType .4s steps(12) 2.2s forwards}
.ag-pdfvis.play .t4 .box{animation:pvCheck .3s ease 2.5s forwards}
.ag-pdfvis.play .t4 .box i{animation:pvShow .2s ease 2.6s forwards}
.ag-pdfvis.play .t5 .sig path{animation:pvSign .8s ease 2.7s forwards}
.ag-pdfvis.play .state{animation:pvState .1s linear 3.4s forwards}
.ag-pdfvis .state.done::before,.ag-pdfvis.play .state.done::before{content:attr(data-b);color:#137a4a;background:#e6f5ec}
@keyframes pvType{from{width:0}to{width:100%}}
@keyframes pvBlink{50%{opacity:1}}
@keyframes pvDrop{0%{opacity:0;transform:translateY(-4px)}20%{opacity:1;transform:none}80%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-4px)}}
@keyframes pvCheck{to{background:#5B8CFF;border-color:#5B8CFF}}
@keyframes pvShow{to{opacity:1}}
@keyframes pvSign{to{stroke-dashoffset:0}}
@keyframes pvState{to{opacity:1}}
@media(prefers-reduced-motion:reduce){.ag-pdfvis .f,.ag-pdfvis .f em{opacity:1!important}.ag-pdfvis .typed{width:100%!important;animation:none!important}.ag-pdfvis .box{background:#5B8CFF;border-color:#5B8CFF}.ag-pdfvis .box i{opacity:1}.ag-pdfvis .sig path{stroke-dashoffset:0}.ag-pdfvis .state::before{content:attr(data-b);color:#137a4a;background:#e6f5ec}.ag-pdfvis *{animation:none!important}}

/* the animated document must never widen the hero column on narrow screens */
.ag-split>*{min-width:0}
.ag-hero-visual,.ag-pdfvis,.ag-pdfvis .doc{min-width:0;max-width:100%;overflow:hidden}
.ag-pdfvis .f{grid-template-columns:88px minmax(0,1fr) auto}
.ag-pdfvis .fld{min-width:0}
.ag-pdfvis .typed{max-width:100%;text-overflow:ellipsis}
@media(max-width:560px){.ag-pdfvis{padding:12px}.ag-pdfvis .doc{padding:12px}.ag-pdfvis .f{grid-template-columns:74px minmax(0,1fr) auto;gap:6px}.ag-pdfvis .f label{font-size:10.5px}.ag-pdfvis .f em{font-size:8px;padding:2px 4px;letter-spacing:.06em}.ag-pdfvis .sig svg{width:110px}.ag-pdfvis .bar span{max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

/* hero visual: human + AI → workflow */
.ag-vavis{margin:0;background:var(--ag-dark);color:#fff;border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:22px;box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}
.ag-vavis .row{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center}
.ag-vavis .node{background:#161c29;border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:14px;text-align:center}
.ag-vavis .node.ai{border-color:rgba(139,92,246,.5)}
.ag-vavis .node i{font-style:normal;font-size:22px;display:block;margin-bottom:4px}
.ag-vavis .node b{display:block;font-size:15px}
.ag-vavis .node span{font-size:12px;color:#AFB6C6}
.ag-vavis .plus{font-size:26px;color:#7DA3FF}
.ag-vavis .arrow{height:34px;position:relative}
.ag-vavis .arrow span{position:absolute;left:50%;top:4px;width:2px;height:22px;background:linear-gradient(#5B8CFF,#8B5CF6);transform:translateX(-50%)}
.ag-vavis .arrow span::after{content:"";position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);border:6px solid transparent;border-top:8px solid #8B5CF6}
.ag-vavis .node.wide{border-color:rgba(91,140,255,.5)}
.ag-vavis .eq{margin:12px 0 10px;text-align:center;font-weight:800;color:#7FD6A9}
.ag-vavis .tasks{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.ag-vavis .tasks li{font-size:11.5px;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.06);color:#c9cedb;opacity:0;transform:translateY(4px);animation:vaIn .5s ease forwards}
.ag-vavis .tasks li:nth-child(2){animation-delay:.15s}.ag-vavis .tasks li:nth-child(3){animation-delay:.3s}.ag-vavis .tasks li:nth-child(4){animation-delay:.45s}.ag-vavis .tasks li:nth-child(5){animation-delay:.6s}
@keyframes vaIn{to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.ag-vavis .tasks li{opacity:1;transform:none;animation:none}}

/* service grids + micro-interactions */
.ag-svcgrid .ag-card{position:relative;overflow:hidden}
.ag-svcgrid .ag-card.fillable-pdf::after{content:"";position:absolute;left:22px;right:22px;bottom:14px;height:0;border-bottom:2px solid var(--ag-a1);opacity:0;transform:scaleX(.2);transform-origin:left;transition:opacity .25s,transform .35s}
.ag-svcgrid .ag-card.fillable-pdf:hover::after{opacity:1;transform:scaleX(1)}
.ag-svcgrid .ag-card.virtual-assistance::before,.ag-svcgrid .ag-card.ecommerce-virtual-assistant::before{content:"✓ task done";position:absolute;right:14px;top:14px;font-size:11px;font-weight:700;color:var(--ag-ok);background:var(--ag-ok-bg);padding:3px 8px;border-radius:999px;opacity:0;transform:translateY(-4px);transition:opacity .25s,transform .25s}
.ag-svcgrid .ag-card.virtual-assistance:hover::before,.ag-svcgrid .ag-card.ecommerce-virtual-assistant:hover::before{opacity:1;transform:none}
@media(max-width:1024px){.ag-grid.c4.ag-svcgrid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.ag-grid.c4.ag-svcgrid{grid-template-columns:1fr}}
.ag-tasks{list-style:none;margin:18px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.ag-tasks li{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:12px;padding:11px 14px;font-size:14px;font-weight:600;color:var(--ag-ink2);display:flex;align-items:center;gap:10px}
.ag-tasks li::before{content:"✓";width:20px;height:20px;border-radius:6px;background:var(--ag-ok-bg);color:var(--ag-ok);font-size:11px;font-weight:800;display:inline-grid;place-items:center;flex-shrink:0}
.ag-ucgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin-top:18px}
.ag-ucgrid span{display:flex;align-items:center;gap:8px;background:var(--ag-card);border:1px solid var(--ag-line);border-radius:12px;padding:12px 14px;font-size:14px;font-weight:600;color:var(--ag-ink)}
.ag-ucgrid span::before{content:"📄";font-size:15px}

/* before / after */
.ag-ba{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}
.ag-ba .side{border-radius:18px;padding:22px 24px;border:1px solid var(--ag-line);background:var(--ag-card)}
.ag-ba .side b{display:block;font-size:17px;margin-bottom:10px}
.ag-ba .side ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.ag-ba .side li{padding-left:26px;position:relative;font-size:14.5px;color:var(--ag-ink2)}
.ag-ba .before li::before{content:"✕";position:absolute;left:0;color:var(--ag-err);font-weight:800}
.ag-ba .after{border-color:rgba(91,140,255,.35);background:linear-gradient(180deg,var(--ag-card2),var(--ag-card))}
.ag-ba .after li::before{content:"✓";position:absolute;left:0;color:var(--ag-ok);font-weight:800}
@media(max-width:768px){.ag-ba{grid-template-columns:1fr}}

/* packages, objections, person/system/both, cross-sell */
.ag-pkg{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}
.ag-pkg .best{display:block;margin-top:12px;font-size:12.5px;font-weight:700;color:var(--ag-a1)}
@media(max-width:1024px){.ag-pkg{grid-template-columns:1fr}}
.ag-obj{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}
.ag-obj b{display:block;font-size:16px;margin-bottom:8px;letter-spacing:-.01em}
.ag-obj p{margin:0;color:var(--ag-mut)}
@media(max-width:768px){.ag-obj{grid-template-columns:1fr}}
.ag-pss{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}
.ag-pss .ag-card{display:flex;flex-direction:column}
.ag-pss .ag-btn{margin-top:auto;align-self:flex-start;margin-top:14px}
@media(max-width:1024px){.ag-pss{grid-template-columns:1fr}}
.ag-xsell{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(120deg,#131529,#0b0b12);border:1px solid rgba(91,140,255,.35);border-radius:22px;padding:28px 30px;color:#fff}
.ag-xsell .ag-eyebrow{color:#7DA3FF}
.ag-xsell h2{font-size:var(--ag-h2-block);margin:0 0 6px;letter-spacing:-.02em;color:#fff}
.ag-xsell p{margin:0;color:#b8bdcc;max-width:60ch}
.ag-xsell .ag-btn{flex-shrink:0}

/* ── conversion upgrade 2026-09-07: audit hook band, case-study outcome, footer audit link, tool CTA alt link ── */
.ag-audit-hook{display:flex;flex-wrap:wrap;gap:18px 28px;align-items:center;justify-content:space-between;background:var(--ag-card);border:1px solid var(--ag-line);border-left:5px solid #3D6CFA;border-radius:18px;padding:24px 28px}
.ag-audit-hook>div{max-width:62ch;min-width:0}
.ag-audit-hook h3{font-size:21px;letter-spacing:-.01em;margin:6px 0 6px}
.ag-audit-hook p{margin:0;color:var(--ag-ink2,#4b5468)}
.ag-audit-hook .ag-eyebrow{margin:0}
.ag-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:14px 0 18px}
.ag-metrics div{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:14px;padding:14px}
.ag-metrics b{display:block;font-size:30px;letter-spacing:-.02em;line-height:1}
.ag-metrics span{display:block;font-size:13px;color:var(--ag-mut);margin-top:6px}
.ag-quote{margin:18px 0 0;padding:16px 20px;border-left:3px solid var(--ag-a1);background:var(--ag-card);border-radius:0 12px 12px 0}
.ag-quote p{margin:0 0 8px;font-size:17px}
.ag-quote footer{font-size:14px;color:var(--ag-mut)}
.ag-footer-cta p a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.ag-tool-cta .alt{display:inline-block;margin-top:10px;color:#cfe0ff;font-weight:600;font-size:14px;text-decoration:underline;text-underline-offset:3px}
@media(max-width:768px){.ag-audit-hook{padding:20px}.ag-audit-hook .ag-btn{width:100%;justify-content:center}}
/* long CTA labels must wrap on small screens (Book a Free 30-Minute Strategy Call) */
@media(max-width:768px){.ag-btn.lg{white-space:normal;text-align:center;line-height:1.25;max-width:100%}.ag-ctas{max-width:100%}}

/* ── GSC 2026-09-13: related-tools block on tool pages (_agency_stamp.py) ── */
.ag-tool-related{margin:34px 0 8px;padding:22px 24px;border:1px solid var(--ag-line);border-radius:16px;background:var(--ag-card)}
.ag-tool-related h2{font-size:var(--ag-h2-card);margin:0 0 12px;letter-spacing:-.01em}
.ag-tool-related ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 10px}
.ag-tool-related li a{display:inline-block;padding:8px 14px;border-radius:999px;background:var(--ag-bg2);color:var(--ag-ink);font-weight:600;font-size:14px;text-decoration:none}
.ag-tool-related li a:hover{background:rgba(255,255,255,.08);text-decoration:none}
/* standalone tool pages: tool first (SEO master plan 4.6, 2026-09-27). Only /tools/<slug>.html
   nests the workspace in main > .wrap; tools.html does not, so the toolkit is untouched. The page H1
   and breadcrumb already name the tool and link back, so the workspace's own title and "All Tools"
   button are hidden here, and its 80px top padding is cut. First control was 913-1261px down at
   390x844; see _agency_toolfacts.relocate_intro() for the other half of the change. */
main>.wrap>section.ws{padding-top:14px}
main>.wrap>section.ws .ws-back,main>.wrap>section.ws .ws-title{display:none}
main>.wrap>section.ws.active .ws-head{position:static}
.ag-answer{font-size:15.5px;line-height:1.55;color:var(--ag-mut);margin:10px 0 0;max-width:760px}
.ag-tool-intro{margin-top:26px}
/* article comparison tables + dated source lists (2026-09-27, resources/ platforms guide) */
.ag-table-wrap{overflow-x:auto;margin:16px 0 6px;-webkit-overflow-scrolling:touch}
.ag-table{width:100%;min-width:760px;border-collapse:collapse;font-size:14.5px;line-height:1.5}
.ag-table th,.ag-table td{border:1px solid var(--ag-line);padding:10px 12px;text-align:left;vertical-align:top}
.ag-table thead th{background:var(--ag-bg2);font-weight:700}
.ag-table tbody th{font-weight:700;width:17%;min-width:130px}
.ag-table-note{font-size:13.5px;color:var(--ag-mut)}
.ag-sources{font-size:14px;line-height:1.7}
/* tools hub: landing-page variants under each category (2026-09-27) */
.ag-presets-row{margin:14px 0 0;font-size:14px;line-height:2;color:var(--ag-mut)}
.ag-presets-row b{color:var(--ag-ink);margin-right:4px}
.ag-tool-related p{margin:12px 0 0;font-size:14px;color:var(--ag-mut)}
/* ── HTML sitemap (generated by _agency_build.render_sitemap_page) ── */
.ag-sitemap h2{font-size:var(--ag-h2-section);margin:40px 0 4px}.ag-sitemap>h2:first-child{margin-top:0}
.ag-sitemap h3{font-size:17px;margin:22px 0 10px;color:var(--ag-ink2)}.ag-sitemap h3 .count{font-weight:500;color:var(--ag-mut);font-size:13px;margin-left:8px}
.ag-sitemap ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:0 26px}
.ag-sitemap li{padding:9px 0;border-bottom:1px solid var(--ag-line);font-size:14.5px}
.ag-sitemap li a{font-weight:600;color:var(--ag-ink)}.ag-sitemap li a:hover{color:var(--ag-a1)}
.ag-sitemap li span{display:block;color:var(--ag-mut);font-size:13.5px;margin-top:2px;line-height:1.45}
@media(max-width:768px){.ag-sitemap ul{grid-template-columns:1fr}}

/* ── 2026-09-19: per-tool facts published by _agency_toolfacts.py from _agency/tool-facts.json ──
   The data panel sits directly under the workspace so the disclosure is next to the controls
   that act on the visitor's file, not buried at the foot of the page. */
.ag-datafacts{margin:18px 0 0;padding:18px 20px;border-radius:16px;border:1px solid var(--ag-line);background:var(--ag-card)}
.ag-datafacts.ag-df-ok{border-color:rgba(34,197,94,.35);background:var(--ag-ok-bg)}
.ag-datafacts.ag-df-warn{border-color:rgba(245,181,68,.35);background:var(--ag-warn-bg)}
.ag-df-h{margin:0 0 8px;font-size:15px;letter-spacing:0}
.ag-df-badge{display:inline-block;padding:5px 12px;border-radius:999px;font-size:13px;font-weight:700;letter-spacing:.01em}
.ag-df-ok .ag-df-badge{background:var(--ag-ok);color:var(--ag-ink-on-accent)}
.ag-df-warn .ag-df-badge{background:#9a5b06;color:#fff}
.ag-datafacts p{margin:0 0 8px;font-size:14.5px;line-height:1.6;color:var(--ag-ink2)}
.ag-df-who{margin-top:10px!important;font-weight:700;font-size:13.5px!important}
.ag-df-who-list{margin:0 0 8px;padding-left:20px;font-size:14px;line-height:1.55;color:var(--ag-ink2)}
.ag-df-limit{font-weight:600}
.ag-df-more{margin:0!important;font-size:13.5px!important;color:var(--ag-mut)}
.ag-df-more a{color:var(--ag-a1);font-weight:600}

.ag-toolspec,.ag-toolexample,.ag-toolfix{margin:30px 0 0}
.ag-toolspec h2,.ag-toolexample h2,.ag-toolfix h2{font-size:var(--ag-h2-block);margin:0 0 12px;letter-spacing:-.01em}
.ag-ts-best{margin:0 0 16px;padding-left:20px;font-size:15.5px;line-height:1.65}
.ag-ts-table{width:100%;border-collapse:collapse;font-size:15px}
.ag-ts-table th,.ag-ts-table td{text-align:left;vertical-align:top;padding:11px 14px;border-bottom:1px solid var(--ag-line);line-height:1.6}
.ag-ts-table th{width:210px;font-weight:700;color:var(--ag-ink);background:var(--ag-card2)}
.ag-toolexample dl{margin:0;border:1px solid var(--ag-line);border-radius:14px;overflow:hidden}
.ag-toolexample dt{padding:10px 16px 2px;font-weight:700;font-size:13.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ag-mut)}
.ag-toolexample dd{margin:0;padding:0 16px 14px;font-size:15px;line-height:1.65}
.ag-toolexample dd+dt{border-top:1px solid var(--ag-line);padding-top:12px}
.ag-toolguide{margin:30px 0 0}
.ag-toolguide h2{font-size:var(--ag-h2-block);margin:34px 0 12px;letter-spacing:-.01em}
.ag-toolguide h2:first-child{margin-top:0}
.ag-toolguide h3{font-size:16.5px;margin:18px 0 4px}
.ag-toolguide p,.ag-toolguide li,.ag-toolguide dd{font-size:15.5px;line-height:1.7}
.ag-toolguide p{margin:0 0 12px}
.ag-toolguide ul{margin:0 0 14px;padding-left:20px}
.ag-toolguide dl{margin:0 0 14px;border:1px solid var(--ag-line);border-radius:14px;overflow:hidden}
.ag-toolguide dt{padding:12px 16px 2px;font-weight:700}
.ag-toolguide dd{margin:0;padding:0 16px 12px;color:var(--ag-ink2)}
.ag-toolguide dd+dt{border-top:1px solid var(--ag-line);padding-top:12px}
.ag-toolguide a{color:var(--ag-a1);font-weight:600}
.ag-tt{border-bottom:1px solid var(--ag-line);padding:12px 0}
.ag-tt summary{cursor:pointer;font-weight:600;font-size:15.5px;list-style:none}
.ag-tt summary::-webkit-details-marker{display:none}
.ag-tt summary::before{content:"+ ";color:var(--ag-a1);font-weight:800}
.ag-tt[open] summary::before{content:"\2212 "}
.ag-tt p{margin:8px 0 0;font-size:15px;line-height:1.65;color:var(--ag-ink2)}
/* the daily-cap notice used when a tool page has no #limitOverlay (assets/tools.js showLimit) */
.ag-limitnote{margin:14px 0 0;padding:14px 16px;border-radius:14px;border:1px solid rgba(245,181,68,.35);background:var(--ag-warn-bg);font-size:14.5px;line-height:1.6;color:var(--ag-ink2)}
.ag-limitnote a{color:var(--ag-a1);font-weight:700}
@media(max-width:768px){
  .ag-ts-table th{width:auto;display:block;border-bottom:none;padding-bottom:0}
  .ag-ts-table td{display:block;padding-top:4px}
  .ag-datafacts{padding:16px}
}

/* tool card processing badge on /tools/ (rendered by _agency_build._tool_processing_badges) */
.ag-tool .ag-tp{display:inline-block;margin-top:7px;padding:3px 9px;border-radius:999px;font-size:11.5px;font-style:normal;font-weight:700;letter-spacing:.01em}
.ag-tool .ag-tp.tp-local{background:var(--ag-ok-bg);color:var(--ag-ok)}
.ag-tool .ag-tp.tp-net{background:var(--ag-warn-bg);color:var(--ag-warn)}

/* ======================================================
   Multi-step wizard (moved here from home.css, 2026-09-22)
   It was never homepage-only: /strategy-call/ and three service pages
   render .hm-wiz too, and used to pull all 29KB of home.css to get it.
   ====================================================== */
/* ── wizard ── */
.hm-wiz{background:var(--ag-card);border:1px solid var(--ag-line);border-radius:26px;padding:30px;max-width:820px;margin:0 auto;box-shadow:0 40px 80px -40px rgba(0,0,0,.8)}
.hm-wiz .top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;font-size:12.5px;color:var(--ag-mut2);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.hm-wiz .bar{height:5px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden;margin-bottom:24px}
.hm-wiz .bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--ag-a1),var(--ag-violet));transition:width .35s}
.hm-wiz h3{font-size:clamp(20px,2.2vw,26px);letter-spacing:-.02em;margin:0 0 6px}
.hm-wiz .hint{color:var(--ag-mut);margin:0 0 18px;font-size:14.5px}
.hm-opts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.hm-opt{display:flex;align-items:center;gap:10px;background:var(--ag-bg2);border:1px solid var(--ag-line2);border-radius:14px;padding:14px 16px;color:var(--ag-ink);font:inherit;font-weight:600;font-size:15px;text-align:left;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.hm-opt:hover{border-color:rgba(91,140,255,.55);transform:translateY(-1px)}
.hm-opt[aria-pressed="true"]{border-color:var(--ag-a1);background:rgba(91,140,255,.14);box-shadow:inset 0 0 0 1px rgba(91,140,255,.5)}
.hm-opt i{font-style:normal;font-size:18px}
.hm-wiz label{display:block;font-size:13px;font-weight:700;color:var(--ag-mut);margin:14px 0 6px}
.hm-wiz input,.hm-wiz textarea{width:100%;font:inherit;font-size:15px;padding:13px 14px;border:1px solid var(--ag-line2);border-radius:12px;background:var(--ag-bg2);color:var(--ag-ink);outline:none;transition:border-color .15s,box-shadow .15s}
.hm-wiz input:focus,.hm-wiz textarea:focus{border-color:var(--ag-a1);box-shadow:0 0 0 3px rgba(91,140,255,.2)}
.hm-wiz textarea{min-height:120px;resize:vertical}
.hm-wiz .row{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.hm-wiz .nav{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:22px}
.hm-wiz .nav .ag-btn.ghost{padding-left:14px}
.hm-wiz .fine{margin:12px 0 0;font-size:12.5px;color:var(--ag-mut2)}
.hm-wiz .err{display:none;margin-top:12px;padding:11px 14px;border-radius:12px;background:rgba(239,68,68,.12);color:#fca5a5;font-size:14px;font-weight:600}
.hm-wiz .err.on{display:block}
.hm-wiz .done{text-align:center;padding:16px 0 6px}
.hm-wiz .done .ok{width:56px;height:56px;border-radius:50%;background:rgba(34,197,94,.15);color:var(--ag-ok);display:grid;place-items:center;margin:0 auto 16px;font-size:26px;font-weight:800}
.hm-wiz .done p{color:var(--ag-mut);max-width:52ch;margin:0 auto 20px}
.hm-wiz .done .rec{display:inline-flex;align-items:center;gap:8px;margin:0 0 20px;padding:9px 14px;border-radius:999px;background:rgba(91,140,255,.12);color:var(--ag-a2);font-weight:700;font-size:14px;text-decoration:none}
.hm-wiz .hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}
.hm-wiz .filebox{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:110px;border:2px dashed var(--ag-line2);border-radius:14px;background:var(--ag-bg2);cursor:pointer;text-align:center;padding:18px;transition:border-color .2s,background .2s}
.hm-wiz .filebox:hover,.hm-wiz .filebox:focus-within{border-color:var(--ag-a1);background:rgba(91,140,255,.08)}
.hm-wiz .filebox input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.hm-wiz .filebox b{font-size:15px;color:var(--ag-ink)}
.hm-wiz .filebox span{font-size:13px;color:var(--ag-mut2)}
.hm-wiz .filestatus{min-height:18px;margin-top:10px;font-size:13px;color:var(--ag-mut)}
.hm-wiz .files{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}
.hm-wiz .files li{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--ag-bg2);border:1px solid var(--ag-line);border-radius:10px;padding:8px 12px;font-size:14px;color:var(--ag-ink)}
.hm-wiz .files small{color:var(--ag-mut2)}
.hm-wiz .files button{border:0;background:transparent;color:var(--ag-mut);font-size:18px;cursor:pointer;line-height:1;padding:2px 6px;border-radius:6px}
.hm-wiz .files button:hover{background:rgba(255,255,255,.08);color:#fff}
@media(max-width:768px){.hm-opts{grid-template-columns:1fr 1fr}.hm-wiz{padding:22px}.hm-wiz .row{grid-template-columns:1fr}}
@media(max-width:560px){.hm-opts{grid-template-columns:1fr}}
