
:root{
  /* ---- DESIGN TOKENS — added by scripts/design-tokens.mjs ----------------------------------
     New hard-coded radii, shadows, font sizes and spacing are not permitted. Use these.
     Anything that cannot land on the scale needs a comment saying why, next to the value.
     Two style systems carry this block: styles.css (403 pages) and index.html's inline CSS
     (the homepage). Change one, change the other, or they drift. ---------------------------- */

  /* spacing — --space-10 is the 100px section rhythm already in use */
  --space-1:4px;   --space-2:8px;   --space-3:12px;  --space-4:16px;  --space-5:24px;
  --space-6:32px;  --space-7:48px;  --space-8:64px;  --space-9:80px;  --space-10:100px;

  /* type — fluid, so existing responsive behaviour is preserved */
  --fs-display:clamp(38px,4.4vw,62px);
  --fs-h2:clamp(30px,3.1vw,44px);
  --fs-h3:clamp(19px,1.5vw,22px);
  --fs-lead:clamp(17px,1.3vw,20px);
  --fs-body:16px;
  --fs-sm:15px;
  --fs-xs:13px;
  --fs-eyebrow:12px;
  --fs-stat:clamp(36px,3.4vw,50px);

  /* weight — 300 and 800 are being retired; 300 Fraunces is fragile small, 800 Inter is
     redundant beside 700 */
  --fw-regular:400; --fw-medium:500; --fw-semi:600; --fw-bold:700;

  /* radius — --r-lg is the existing --radius */
  --r-sm:10px; --r-md:14px; --r-lg:20px; --r-xl:26px; --r-full:999px;

  /* shadow — --shadow-lg is the existing --shadow-lift, unchanged */
  --shadow-sm:0 2px 8px -2px rgba(13,31,60,.10);
  --shadow-md:0 12px 28px -14px rgba(13,31,60,.22);
  --shadow-lg:0 30px 64px -30px rgba(13,31,60,.28);
  --shadow-gold:0 8px 20px -10px rgba(195,154,63,.38);

  /* link colour is surface-aware. The global rule is a:color:var(--navy), which is invisible on
     navy — see D3, measured at 1.37:1 against a 4.5:1 requirement. */
  --link-on-light:var(--navy);
  --link-on-dark:var(--gold-bright);
--navy-deep:#0d1f3c;--navy:#16315a;--navy-2:#21477d;--ink:#1f2832;--slate:#4f5b6a;--muted:#5d6775;--stone:#faf7f1;--stone-2:#f2ede2;--gold:#c39a3f;--gold-2:#84671f;--gold-bright:#d9b257;--gold-soft:#f0e6cf;--green:#3a8a66;--line:#ebe6da;--white:#fff;--radius:20px;--maxw:1180px;--sans:'Inter','Inter-fb',-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;--serif:'Fraunces','Fraunces-fb',Georgia,'Times New Roman',serif;--shadow-lift:0 30px 64px -30px rgba(13,31,60,.28);--ease-out:cubic-bezier(.22,.61,.21,1);--dur:.65s}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body{overflow-x:hidden;max-width:100%}html{scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--sans);color:var(--ink);line-height:1.75;background:var(--white);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--gold);color:#2a1f05}svg{display:block}img{max-width:100%;display:block}a{color:var(--navy);text-decoration:none}.grid-4>*,.grid-3>*,.pillars>*,.rv>*,.steps>*,.fgrid>*,.split>*,.hero-grid>div{min-width:0}.skip{position:absolute;left:-999px;top:0;z-index:300;background:var(--navy);color:#fff;padding:10px 18px;border-radius:0 0 10px 0;font-weight:600}.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip:focus{left:0}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:4px}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}h1,h2,h3{font-family:var(--serif);line-height:1.12;color:var(--navy);font-weight:600;letter-spacing:-.02em;overflow-wrap:break-word}h2{font-size:clamp(1.9rem,3.4vw,2.7rem);margin-bottom:.5rem}p{color:var(--slate);overflow-wrap:break-word}.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--sans);text-transform:uppercase;letter-spacing:.2em;font-size:0.75rem;font-weight:700;color:var(--gold-2);margin-bottom:16px}.eyebrow .no{font-family:var(--serif);font-style:italic;font-weight:500;letter-spacing:.02em;font-size:0.875rem;color:var(--gold-2)}.eyebrow:before{content:"";width:30px;height:2px;background:linear-gradient(90deg,var(--gold),transparent)}.reveal{opacity:0;transform:translateY(12px);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);transition-delay:var(--d,0s);will-change:opacity,transform}.reveal.in-view{opacity:1;transform:none}.reveal-l{opacity:0;transform:translateX(-14px);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);transition-delay:var(--d,0s)}.reveal-r{opacity:0;transform:translateX(14px);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);transition-delay:var(--d,0s)}.reveal-l.in-view,.reveal-r.in-view{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal,.reveal-l,.reveal-r{opacity:1!important;transform:none!important;transition:none!important}}.btn{position:relative;display:inline-flex;align-items:center;gap:10px;font-weight:600;font-family:var(--sans);padding:16px 32px;border-radius:var(--r-md);transition:transform .3s var(--ease-out),box-shadow .3s,background .3s,color .3s,border-color .3s;cursor:pointer;border:2px solid transparent;font-size:0.95rem;overflow:hidden;isolation:isolate}.btn svg{width:18px;height:18px;transition:transform .35s var(--ease-out)}.btn:hover svg{transform:translateX(3px)}.btn:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.28) 50%,transparent 60%);transform:translateX(-110%);transition:transform .9s ease;z-index:-1;pointer-events:none}.btn:hover:after{transform:translateX(110%)}.btn-primary{background:linear-gradient(160deg,var(--gold-bright),var(--gold));color:#2e2306;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 14px 30px -14px rgba(195,154,63,.6)}.btn-primary:hover{transform:translateY(-2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 20px 38px -14px rgba(195,154,63,.75)}.btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}.btn-ghost:hover{background:#fff;color:var(--navy);border-color:#fff}.btn-outline{background:transparent;color:var(--navy);border-color:#d8d2c2}.btn-outline:hover{background:var(--navy);color:#fff;border-color:var(--navy);transform:translateY(-2px)}@media(prefers-reduced-motion:reduce){.btn:after{display:none}}.progress{position:fixed;top:0;left:0;height:3px;width:100%;z-index:200;background:transparent;pointer-events:none}.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold),var(--gold-bright))}.topbar{background:var(--navy-deep);color:#c8d2e4;font-size:0.82rem}.topbar .wrap{display:flex;justify-content:space-between;align-items:center;padding:9px 28px;flex-wrap:wrap;gap:8px}.topbar a{color:#fff;font-weight:600}.topbar a:hover{color:var(--gold-bright)}.topbar .dot{opacity:.45;margin:0 10px}header.nav{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid transparent;transition:box-shadow .3s,border-color .3s,background .3s}header.nav.scrolled{background:rgba(255,255,255,.94);border-bottom-color:var(--line);box-shadow:var(--shadow-sm)}.nav .wrap{display:flex;align-items:center;justify-content:space-between;padding:15px 28px}header.nav.scrolled .wrap{padding:15px 28px}.logo{display:inline-flex;align-items:center;font-family:var(--sans);font-size:1.5rem;color:var(--ink);line-height:1;letter-spacing:.01em;white-space:nowrap}.logo .l1{font-weight:400}.logo .l2{font-weight:800;margin-left:.2em}.logo .bar{width:1.5px;height:1.05em;background:#cfc8b8;margin:0 13px}.logo .l3{font-weight:400;letter-spacing:.14em}.logo--light{color:#fff}.logo--light .bar{background:rgba(255,255,255,.38)}.menu{display:flex;gap:30px;align-items:center;font-weight:500;font-size:.95rem}.menu>a{color:var(--ink);position:relative;padding:4px 0}.menu>a:not(.btn):after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease-out)}.menu>a:not(.btn):hover:after{transform:scaleX(1);transform-origin:left}.menu>a:hover{color:var(--gold-2)}.navtoggle{display:none;background:none;border:0;cursor:pointer;padding:6px;color:var(--navy);align-items:center;border-radius:var(--r-sm);transition:transform .15s ease}.navtoggle:active{transform:scale(.9)}.navtoggle svg{width:28px;height:28px}.navclose{display:none}.nav-scrim{display:none}.hero{position:relative;background:radial-gradient(1300px 620px at 82% -10%,#2b5590 0%,transparent 60%),radial-gradient(900px 540px at -6% 108%,#1d3a66 0%,transparent 58%),linear-gradient(168deg,#1a3866 0%,#16315a 62%,#14294a 100%);color:#fff;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.05'/%3E%3C/svg%3E");pointer-events:none;z-index:1}.hero .glow{position:absolute;border-radius:50%;filter:blur(90px);opacity:.5;pointer-events:none;z-index:0}.hero .glow.g1{width:560px;height:560px;background:radial-gradient(circle,rgba(217,178,87,.34),transparent 65%);top:-220px;right:-120px;animation:drift1 28s ease-in-out infinite alternate}.hero .glow.g2{width:480px;height:480px;background:radial-gradient(circle,rgba(33,71,125,.9),transparent 66%);bottom:-200px;left:-140px;animation:drift2 34s ease-in-out infinite alternate}@keyframes drift1{from{transform:translate(0,0) scale(1)}to{transform:translate(-44px,32px) scale(1.07)}}@keyframes drift2{from{transform:translate(0,0)}to{transform:translate(50px,-30px)}}@media(prefers-reduced-motion:reduce){.hero .glow{animation:none}}.hero .grid-lines{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(820px 480px at 70% 20%,#000 0%,transparent 75%);-webkit-mask-image:radial-gradient(820px 480px at 70% 20%,#000 0%,transparent 75%);pointer-events:none;z-index:0}.hero-grid{position:relative;z-index:2;display:flex;flex-wrap:wrap;align-items:center;gap:54px;padding:92px 28px 86px;max-width:var(--maxw);margin:0 auto}.hero-grid>div{flex:1 1 380px}.hero .eyebrow{color:var(--gold-bright)}.hero .eyebrow:before{background:linear-gradient(90deg,var(--gold-bright),transparent)}.hero h1{font-size:clamp(2.3rem,5vw,3.9rem);margin:0 0 24px;color:#fff;font-weight:600}.hero h1 em{font-style:italic;font-weight:500;background:linear-gradient(100deg,#ecd9a4,var(--gold-bright) 55%,#b8893a);-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}.hero p.lead{font-size:clamp(1.05rem,1.6vw,1.22rem);color:#c3cfe3;max-width:560px;line-height:1.78}.hero .cta-row{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap;align-items:center}.trust{margin-top:34px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}.badge-chip{display:inline-flex;align-items:center;gap:14px;max-width:100%;flex-wrap:wrap;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:var(--r-md);padding:11px 18px;backdrop-filter:blur(6px)}@media(max-width:360px){.badge-chip{gap:10px;padding:10px 12px}.badge-chip .cpa-logo{height:34px}}.badge-chip .cpa-logo{height:42px;width:auto}.badge-chip .bt{color:#aab8d0;font-size:.82rem;line-height:1.45}.badge-chip .bt b{color:#fff}.trust .pl{font-size:0.875rem;color:#93a3bf;line-height:1.5}.trust .pl b{color:#fff}.hero-stats{position:relative;z-index:2;border-top:1px solid rgba(255,255,255,.1)}.hero-stats .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;padding:22px 28px 26px}.hstat{text-align:center}.hstat .n{font-family:var(--serif);font-size:1.85rem;color:#fff;font-weight:600;line-height:1.1}.hstat .n .u{color:var(--gold-bright)}.hstat .l{color:#8fa0bd;font-size:0.75rem;text-transform:uppercase;letter-spacing:.13em;margin-top:3px}.hero-art{position:relative;perspective:1100px}.cs-card{position:relative;border-radius:var(--r-xl);padding:28px 28px 32px;background:linear-gradient(165deg,rgba(36,66,112,.85) 0%,rgba(19,41,75,.92) 55%,rgba(15,37,69,.95) 100%);border:1px solid rgba(217,178,87,.3);box-shadow:0 50px 100px -40px rgba(4,12,28,.9),inset 0 1px 0 rgba(255,255,255,.08);overflow:hidden;backdrop-filter:blur(8px);transform-style:preserve-3d;transition:transform .5s var(--ease-out)}.cs-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(217,178,87,.75),transparent)}.cs-divider{position:absolute;top:28px;bottom:28px;left:50%;border-left:1px dashed rgba(255,255,255,.13)}.cs-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.cs-kicker{font-size:0.75rem;letter-spacing:.22em;text-transform:uppercase;color:#9fb0cc;font-weight:600}.cs-brand{font-family:var(--serif);font-size:1.15rem;color:var(--gold-bright);position:relative;padding-bottom:6px}.cs-brand:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:rgba(201,162,74,.5)}.cs-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px;position:relative}.cs-tab{display:block;text-decoration:none;border:1px solid rgba(255,255,255,.12);border-radius:var(--r-md);padding:14px 6px;text-align:center;background:rgba(255,255,255,.03);transition:.3s var(--ease-out)}.cs-tab:hover{border-color:rgba(217,178,87,.6);background:rgba(255,255,255,.08);transform:translateY(-2px)}.cs-tab .t{display:block;font-family:var(--serif);font-size:1.4rem;color:#eaf0f8;font-weight:600;line-height:1}.cs-tab .s{display:block;font-size:0.75rem;letter-spacing:.16em;text-transform:uppercase;color:#90a1bd;margin-top:6px}.cs-tab.is-active{border-color:rgba(217,178,87,.7);background:linear-gradient(160deg,rgba(217,178,87,.22),rgba(217,178,87,.05))}.cs-tab.is-active .t{color:#f0d493}.cs-list{list-style:none;display:flex;flex-direction:column;gap:8px;position:relative}.cs-list li{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:var(--r-sm);overflow:hidden;transition:.3s var(--ease-out)}.cs-list li:hover{background:rgba(217,178,87,.14);border-color:rgba(217,178,87,.36);transform:translateX(3px)}.cs-list li a{display:flex;align-items:center;gap:12px;padding:13px 16px;color:#dde6f2;font-size:.95rem;font-weight:500;text-decoration:none}.cs-list li .d{width:7px;height:7px;border-radius:50%;background:var(--gold-bright);flex-shrink:0}.cs-list li .ck{margin-left:auto;color:var(--gold-2);font-size:0.875rem}.ticker{background:var(--gold);color:#2e2306;overflow:hidden;padding:13px 0;position:relative}.ticker .track{display:flex;width:max-content;animation:tick 52s linear infinite;gap:0}.ticker:hover .track{animation-play-state:paused}.ticker span{display:inline-flex;align-items:center;gap:0;font-weight:700;font-size:.82rem;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}.ticker span i{font-style:normal;margin:0 26px;opacity:.55;font-family:var(--serif)}@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}@media(prefers-reduced-motion:reduce){.ticker .track{animation:none}}section{padding:64px 0;position:relative}.section-head{text-align:center;max-width:720px;margin:0 auto 60px}.section-head .eyebrow{justify-content:center}.section-head .eyebrow:after{content:"";width:30px;height:2px;background:linear-gradient(90deg,transparent,var(--gold))}.section-head p{color:var(--muted);font-size:1.1rem;margin-top:10px}.tint{background:linear-gradient(180deg,var(--stone) 0%,#fdfbf7 100%)}.intro{max-width:880px;margin:0 auto;text-align:center}.intro p{font-family:var(--serif);font-size:clamp(1.25rem,2.2vw,1.6rem);line-height:1.72;color:#33405a;font-weight:400;letter-spacing:-.01em}.intro p b{color:var(--navy);font-weight:600;background:linear-gradient(transparent 68%,var(--gold-soft) 68%)}.grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px}.card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:36px 28px;transition:transform .45s var(--ease-out),box-shadow .45s,border-color .45s;overflow:hidden}.card:before{content:"";position:absolute;inset:0;border-radius:var(--radius);padding:1.5px;background:linear-gradient(135deg,var(--gold-bright),transparent 45%,transparent 60%,var(--navy-2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .45s}.card:hover{box-shadow:var(--shadow-lift);transform:translateY(-4px)}.card:hover:before{opacity:1}.card .ic{width:60px;height:60px;border-radius:var(--r-md);background:linear-gradient(140deg,var(--navy),var(--navy-2));display:flex;align-items:center;justify-content:center;margin-bottom:22px;color:#fff;box-shadow:var(--shadow-sm);transition:transform .45s var(--ease-out)}.card:hover .ic{transform:scale(1.05) rotate(-3deg)}.card .ic svg{width:28px;height:28px;stroke-width:1.6}.card h3{font-size:1.25rem;margin-bottom:8px}.card p{font-size:0.95rem;color:var(--muted)}.card a.more{display:inline-flex;align-items:center;gap:6px;margin-top:18px;font-weight:600;color:var(--gold-2);font-size:0.95rem}.card a.more svg{width:15px;height:15px;transition:transform .35s var(--ease-out)}.card:hover a.more svg{transform:translateX(3px)}.pillars{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:34px;counter-reset:pillar}.pillar{position:relative;padding-top:6px}.pillar:before{counter-increment:pillar;content:"0" counter(pillar);position:absolute;top:-18px;right:6px;font-family:var(--serif);font-style:italic;font-size:3.6rem;line-height:1;color:var(--gold-2);opacity:.16;font-weight:500;pointer-events:none}.pillar .pic{width:56px;height:56px;border-radius:15px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--gold-2);margin-bottom:16px;box-shadow:var(--shadow-sm);transition:transform .35s var(--ease-out),border-color .35s}.pillar:hover .pic{transform:translateY(-3px);border-color:#e0d6bb}.pillar .pic svg{width:26px;height:26px;stroke-width:1.6}.pillar h3{font-size:1.15rem;margin-bottom:6px}.pillar p{color:var(--muted);font-size:.95rem}.split{display:flex;flex-wrap:wrap;align-items:center;gap:58px}.split>*{flex:1 1 340px}.split h2{margin-bottom:16px}.split .p{font-size:1rem;margin-bottom:18px}.local-list{list-style:none;margin:6px 0 26px}.local-list li{padding:9px 0 9px 34px;position:relative;color:var(--ink)}.local-list li svg{position:absolute;left:0;top:12px;width:19px;height:19px;color:var(--green)}.valley{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-lift);background:#fff}.valley svg{width:100%;height:auto}.valley .draw{stroke-dasharray:1400;stroke-dashoffset:1400;transition:stroke-dashoffset 2.8s var(--ease-out)}.valley.in-view .draw{stroke-dashoffset:0}.valley .draw.d2{transition-delay:.4s}@media(prefers-reduced-motion:reduce){.valley .draw{stroke-dashoffset:0;transition:none}}.valley .ov{position:absolute;left:16px;bottom:16px;right:16px;background:rgba(255,255,255,.96);backdrop-filter:blur(4px);border-radius:var(--r-md);padding:16px;border:1px solid var(--line)}.valley .ov h3{font-size:1rem;margin-bottom:10px}.area-chips{display:flex;flex-wrap:nowrap;gap:6px}.area-chips a{flex:1 1 0;display:flex;align-items:center;justify-content:center;background:var(--stone);border:1px solid var(--line);border-radius:var(--r-lg);padding:9px 3px;font-weight:600;color:var(--navy);font-size:clamp(.56rem,1vw,.7rem);text-align:center;white-space:nowrap;text-decoration:none;transition:.25s var(--ease-out);min-height:36px}.area-chips a:hover{background:var(--gold-soft);border-color:#e3d4a8;transform:translateY(-1px)}.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:26px}.step{text-align:center;position:relative}.step .sa{width:100px;height:100px;margin:0 auto 18px;border-radius:50%;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);transition:transform .4s var(--ease-out),box-shadow .4s}.step:hover .sa{transform:translateY(-4px) scale(1.02);box-shadow:var(--shadow-sm)}.step .sa svg{width:48px;height:48px}.step .sn{font-family:var(--serif);font-style:italic;color:var(--gold-2);font-size:.95rem;margin-bottom:4px}.step h3{font-size:1.1rem;margin-bottom:6px}.step p{color:var(--muted);font-size:0.95rem}.step:not(:last-child):after{content:"";position:absolute;top:50px;right:-13px;width:26px;height:2px;background:repeating-linear-gradient(90deg,var(--gold) 0 6px,transparent 6px 11px)}.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px}.indus{display:block;color:inherit;text-decoration:none;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:#fff;transition:transform .45s var(--ease-out),box-shadow .45s}.indus:hover{box-shadow:var(--shadow-lift);transform:translateY(-4px)}.indus .pic{height:170px;background:linear-gradient(180deg,var(--stone),#fdfaf4);display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line);overflow:hidden}.indus .pic svg{width:120px;height:120px;transition:transform .5s var(--ease-out)}.indus:hover .pic svg{transform:scale(1.05) translateY(-2px)}.indus .b{padding:24px 26px 28px}.indus h3{font-size:1.15rem;margin-bottom:6px;display:flex;align-items:center;gap:8px}.indus h3:after{content:"→";font-family:var(--sans);font-size:1rem;color:var(--gold-2);opacity:0;transform:translateX(-6px);transition:.3s var(--ease-out)}.indus:hover h3:after{opacity:1;transform:none}.indus p{color:var(--muted);font-size:0.95rem}.stats-band{background:linear-gradient(120deg,var(--navy) 0%,var(--navy-deep) 100%);position:relative;overflow:hidden}.stats-band:before{content:"";position:absolute;inset:0;background:radial-gradient(700px 300px at 80% 0%,rgba(217,178,87,.14),transparent 60%)}.stats{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:22px;text-align:center}.stat{padding:14px}.stat .n{font-family:var(--serif);font-size:clamp(2.3rem,4vw,3.1rem);color:#fff;font-weight:600;line-height:1}.stat .n .u{color:var(--gold-bright)}.stat .l{color:#9fb0cc;font-size:0.875rem;text-transform:uppercase;letter-spacing:.1em;margin-top:10px}.stat+.stat{border-left:1px solid rgba(255,255,255,.12)}.reviews-band{background:linear-gradient(135deg,#15315a 0%,#0d1f3c 100%);color:#fff;overflow:hidden}.reviews-band:before{content:"";position:absolute;top:-160px;right:-120px;width:480px;height:480px;border-radius:50%;background:radial-gradient(circle,rgba(217,178,87,.16),transparent 65%);filter:blur(50px);pointer-events:none}.reviews-band .eyebrow{color:#e0c277}.reviews-band .eyebrow .no{color:#e0c277}.reviews-band h2{color:#fff}.reviews-band .section-head p{color:#a9b6cc}.rv{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:24px}.rvc{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.11);border-radius:var(--r-lg);padding:32px;position:relative;backdrop-filter:blur(6px);transition:transform .45s var(--ease-out),border-color .45s,background .45s}.rvc:hover{transform:translateY(-3px);border-color:rgba(217,178,87,.4);background:rgba(255,255,255,.07)}.rvc .qm{position:absolute;top:14px;right:24px;font-family:var(--serif);font-size:3.4rem;line-height:1;color:rgba(217,178,87,.4)}.rvc .stars{color:var(--gold-bright);letter-spacing:3px;font-size:1rem}.rvc .body{color:#dbe4f1;font-style:italic;margin:14px 0 22px;font-size:0.95rem;line-height:1.72}.rvc .ln{display:block;width:34px;height:2px;background:var(--gold);opacity:.6;margin-bottom:16px}.rvc .who{display:flex;align-items:center;gap:13px}.rvc .av{width:44px;height:44px;border-radius:50%;border:1px solid rgba(217,178,87,.55);background:rgba(217,178,87,.13);color:#e0c277;display:flex;align-items:center;justify-content:center;font-weight:600;font-family:var(--serif);flex-shrink:0}.rvc .nm{font-weight:700;color:#fff;font-size:.95rem}.rvc .src{color:#90a1bd;font-size:0.82rem}.gbtn{display:inline-flex;align-items:center;gap:9px;margin-top:40px;color:#e0c277;font-weight:600;font-size:.95rem;transition:gap .3s var(--ease-out)}.gbtn:hover{gap:13px;color:#f0d493}.faq{max-width:840px;margin:0 auto}.faq details{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:20px 26px;margin-bottom:14px;transition:border-color .25s,box-shadow .25s}.faq details[open]{border-color:#e0d6bb;box-shadow:var(--shadow-sm)}.faq summary{font-family:var(--serif);font-weight:600;color:var(--navy);cursor:pointer;font-size:1.1rem;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:14px}.faq summary::-webkit-details-marker{display:none}.faq summary .pm{color:var(--gold-2);font-size:1.5rem;font-weight:300;flex-shrink:0;transition:transform .3s var(--ease-out)}.faq details[open] summary .pm{transform:rotate(45deg)}.faq .a{margin-top:14px;color:var(--slate);animation:faqin .5s var(--ease-out)}@keyframes faqin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.faq .a{animation:none}}.bcard{display:block;position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:32px 28px;transition:transform .45s var(--ease-out),box-shadow .45s,border-color .45s;overflow:hidden}.bcard:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--gold),var(--gold-bright));transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease-out)}.bcard:hover{box-shadow:var(--shadow-lift);transform:translateY(-4px);border-color:#e4ddca}.bcard:hover:after{transform:scaleX(1)}.bcard .tag{display:inline-block;font-size:0.75rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--gold-2);margin-bottom:12px}.bcard h3{font-size:1.15rem;margin-bottom:8px}.bcard p{color:var(--muted);font-size:.95rem}.bcard .more{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-weight:600;color:var(--gold-2);font-size:0.95rem}.mapwrap{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-lift)}.mapwrap iframe{width:100%;height:400px;border:0;display:block}.cta-band{background:radial-gradient(900px 420px at 50% -20%,#23477c 0%,transparent 60%),linear-gradient(120deg,var(--navy),var(--navy-deep));color:#fff;text-align:center;position:relative;overflow:hidden}.cta-band:before{content:"";position:absolute;left:50%;top:-130px;width:560px;height:300px;transform:translateX(-50%);background:radial-gradient(ellipse,rgba(217,178,87,.22),transparent 65%);filter:blur(36px);pointer-events:none}.cta-band h2{color:#fff;font-size:clamp(1.9rem,3.4vw,2.6rem);position:relative}.cta-band p{color:#d4deee;max-width:600px;margin:14px auto 32px;font-size:1.1rem;position:relative}.cta-band .row{position:relative;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}footer{background:var(--navy-deep);color:#bcc7da;padding:70px 0 28px;font-size:0.95rem}footer h3,footer h4{color:#fff;font-family:var(--sans);font-size:0.95rem;margin-bottom:16px;letter-spacing:.03em}.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:36px}footer a{color:#bcc7da;transition:color .2s}footer a:hover{color:var(--gold-bright)}footer ul{list-style:none}footer li{margin:8px 0}.fbrand{margin-bottom:12px}footer p{color:#a6b2c8}.fsocial{display:flex;gap:12px;margin-top:16px}.fsocial a{width:38px;height:38px;border-radius:9px;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;color:#fff;transition:.25s}.fsocial a:hover{background:var(--gold);color:var(--navy-deep);transform:translateY(-2px)}.fsocial svg{width:18px;height:18px}.fbot{border-top:1px solid rgba(255,255,255,.13);margin-top:42px;padding-top:20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;color:#8d9ab3;font-size:0.875rem}.totop{position:fixed;right:22px;bottom:22px;width:46px;height:46px;border-radius:50%;background:var(--navy);color:#fff;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);opacity:0;visibility:hidden;transform:translateY(10px);transition:.4s var(--ease-out);z-index:80}.totop.show{opacity:1;visibility:visible;transform:none}.totop:hover{background:var(--gold);color:#2e2306}.totop svg{width:20px;height:20px}@media(max-width:960px){.navtoggle{display:inline-flex}header.nav{z-index:130;backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.97)}header.nav.scrolled{background:#fff}.menu{position:fixed;top:0;right:0;bottom:0;width:min(86vw,330px);height:100%;flex-direction:column;align-items:stretch;gap:0;background:#fff;box-shadow:-14px 0 44px rgba(13,31,60,.25);padding:78px 24px 28px;transform:translateX(100%);transition:transform .44s cubic-bezier(.16,.84,.44,1);will-change:transform;z-index:120;overflow-y:auto}.menu.open{transform:translateX(0)}@media(prefers-reduced-motion:reduce){.menu{transition:none}}.menu>a{width:auto;padding:15px 2px;border-bottom:1px solid var(--line);font-size:1rem;opacity:0;transform:translateX(14px);transition:opacity .4s ease,transform .4s ease}.menu>a:not(.btn):after{display:none}.menu.open>a{opacity:1;transform:none}.menu.open>a:nth-of-type(2){transition-delay:.07s}.menu.open>a:nth-of-type(3){transition-delay:.12s}.menu.open>a:nth-of-type(4){transition-delay:.17s}.menu.open>a:nth-of-type(5){transition-delay:.22s}.menu.open>a:nth-of-type(6){transition-delay:.27s}.menu a.btn-primary{margin-top:20px;border-bottom:0;justify-content:center}.navclose{display:flex;align-items:center;justify-content:center;position:absolute;top:10px;right:10px;width:44px;height:44px;background:none;border:0;font-size:1.7rem;line-height:1;color:var(--muted);cursor:pointer;z-index:121;border-radius:var(--r-sm)}.nav-scrim{display:block;position:fixed;inset:0;background:rgba(10,22,42,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .44s ease,visibility .44s ease;z-index:110}.nav-scrim.open{opacity:1;visibility:visible}body.nav-open{overflow:hidden}}@media(max-width:960px){section{padding:46px 0}.hero-grid{gap:40px;padding:56px 28px 50px}.hero-stats .wrap{grid-template-columns:repeat(2,1fr);gap:14px}.split{gap:38px}.grid-4,.pillars,.stats,.steps,.grid-3,.rv,.fgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat+.stat{border-left:0}.step:not(:last-child):after{display:none}}@media(max-width:640px){.wrap{padding:0 18px}section{padding:38px 0}.hero-grid{padding:40px 18px 36px;gap:32px}.hero p.lead{font-size:1.1rem}.section-head{margin-bottom:38px}.grid-4,.pillars,.stats,.steps,.grid-3,.rv,.fgrid{grid-template-columns:1fr}.area-chips{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.area-chips::-webkit-scrollbar{display:none}.area-chips a{flex:0 0 auto;padding:8px 13px;font-size:0.75rem}.topbar .wrap{justify-content:center;text-align:center;padding:8px 16px}.topbar .wrap>span:first-child{display:none}.nav .wrap{padding:13px 16px}header.nav.scrolled .wrap{padding:13px 16px}.logo{font-size:1.15rem}.logo .bar{margin:0 9px}.hero .cta-row{width:100%}.hero .cta-row .btn,.cta-band .row .btn{width:100%;justify-content:center}.cs-card{padding:22px 20px 26px}.totop{right:14px;bottom:14px}}@media(max-width:400px){.logo{font-size:1rem}.logo .l3{letter-spacing:.08em}}.topbar a[href^="tel"],footer a[href^="tel"]{white-space:nowrap}.h1-in{animation:h1in 1.1s var(--ease-out) both .08s}@keyframes h1in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.h1-in{animation:none}}.bento{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:24px}.card.feat{grid-row:span 2;background:linear-gradient(168deg,#1d3c6b 0%,#13294b 55%,var(--navy-deep) 100%);border-color:rgba(217,178,87,.32);display:flex;flex-direction:column}.card.feat:hover{border-color:rgba(217,178,87,.55)}.card.feat h3{color:#fff;font-size:1.5rem}.card.feat p{color:#b9c6dc}.card.feat .ic{background:linear-gradient(140deg,var(--gold-bright),var(--gold));color:#26303d;box-shadow:var(--shadow-gold)}.card.feat a.more{color:var(--gold-bright);margin-top:auto;padding-top:18px}.card.feat .inc{list-style:none;margin:18px 0 6px;display:flex;flex-direction:column;gap:9px}.card.feat .inc li{border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.045);border-radius:var(--r-sm);transition:.3s var(--ease-out)}.card.feat .inc li:hover{border-color:rgba(217,178,87,.45);background:rgba(217,178,87,.1);transform:translateX(3px)}.card.feat .inc li a{display:flex;align-items:center;gap:10px;width:100%;color:#dde6f2;font-size:0.95rem;padding:9px 14px;text-decoration:none}.card.feat .inc li a:before{content:"✓";color:var(--gold-bright);font-weight:700}.card.feat .inc li a:after{content:"→";margin-left:auto;color:var(--gold-bright);opacity:0;transform:translateX(-5px);transition:.3s var(--ease-out)}.card.feat .inc li:hover a:after{opacity:1;transform:none}.tlink{color:var(--gold-2);font-weight:600;text-decoration:underline;text-decoration-color:rgba(195,154,63,.45);text-decoration-thickness:1.5px;text-underline-offset:3px;transition:color .2s,text-decoration-color .2s}.tlink:hover{color:var(--navy);text-decoration-color:var(--gold)}.tlink b{font-weight:600}.card.feat:after,.rvc:after,.about-card:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%),rgba(217,178,87,.14),transparent 65%);opacity:0;transition:opacity .4s;pointer-events:none}.card.feat:hover:after,.rvc:hover:after,.about-card:hover:after{opacity:1}.menu>a[aria-current="page"]{color:var(--gold-2)}.menu>a[aria-current="page"]:not(.btn):after{transform:scaleX(1)}.card.wide{grid-column:span 2;display:flex;gap:26px;align-items:flex-start}.card.wide .ic{flex-shrink:0;margin-bottom:0}@media(max-width:960px){.bento{grid-template-columns:repeat(2,minmax(0,1fr))}.card.feat{grid-row:auto;grid-column:span 2}.card.wide{grid-column:span 2}}@media(max-width:640px){.bento{grid-template-columns:1fr}.card.feat,.card.wide{grid-column:auto}.card.wide{flex-direction:column;gap:0}.card.wide .ic{margin-bottom:22px}}.quote-spot{background:#fff;padding:118px 0}.qwrap{max-width:900px;margin:0 auto;text-align:center;position:relative;padding:0 10px}.qwrap .qmark{font-family:var(--serif);font-style:italic;display:block;font-size:7.5rem;line-height:.4;color:var(--gold);opacity:.32;margin-bottom:26px;font-weight:500}.qwrap blockquote{font-family:var(--serif);font-size:clamp(1.55rem,3.3vw,2.45rem);font-style:italic;font-weight:500;color:var(--navy);line-height:1.42;letter-spacing:-.01em}.qwrap blockquote em{font-style:italic;color:var(--gold-2)}.qwrap .qrule{display:block;width:46px;height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:34px auto 18px}.qwrap cite{font-style:normal;font-family:var(--sans);font-size:.82rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.qwrap cite b{color:var(--navy)}.mapload{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;width:100%;height:400px;border:0;cursor:pointer;font-family:var(--sans);background:linear-gradient(165deg,#f2f5fa 0%,#faf7f1 100%);overflow:hidden}.mapload .mp-bg{position:absolute;inset:0;pointer-events:none}.mapload .mp-bg svg{width:100%;height:100%}.mapload .mp-pin{position:relative;width:54px;height:54px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:linear-gradient(140deg,var(--gold-bright),var(--gold));box-shadow:var(--shadow-gold);display:flex;align-items:center;justify-content:center;animation:pinbob 3.4s ease-in-out infinite}.mapload .mp-pin:after{content:"";width:18px;height:18px;border-radius:50%;background:#fff}@keyframes pinbob{0%,100%{transform:rotate(-45deg) translate(0,0)}50%{transform:rotate(-45deg) translate(-4px,4px)}}@media(prefers-reduced-motion:reduce){.mapload .mp-pin{animation:none}}.mapload .mp-txt{position:relative;color:var(--slate);font-size:.95rem;line-height:1.6;text-align:center}.mapload .mp-txt b{color:var(--navy);font-size:1rem}.mapload .mp-btn{position:relative;display:inline-flex;align-items:center;gap:8px;background:var(--navy);color:#fff;font-weight:600;font-size:0.875rem;padding:11px 22px;border-radius:var(--r-sm);transition:.25s}.mapload:hover .mp-btn{background:var(--gold);color:#2e2306;transform:translateY(-2px)}.mapload:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}.cta-band .frame{position:relative;border:1px solid rgba(217,178,87,.38);border-radius:var(--r-xl);padding:64px 36px 60px;max-width:880px;margin:0 auto}.cta-band .frame:before{content:"◆";position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:linear-gradient(120deg,#16315a,#102543);padding:0 16px;color:var(--gold-bright);font-size:.95rem}.cta-band .est{display:block;font-family:var(--sans);font-size:0.75rem;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:#9fb0cc;margin-bottom:18px}@media(max-width:640px){.cta-band .frame{padding:46px 20px 44px}}.mcta{position:fixed;left:0;right:0;bottom:0;z-index:85;display:none;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(13,31,60,.96);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid rgba(217,178,87,.3)}.mcta a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:13px 10px;border-radius:var(--r-sm);font-weight:700;font-size:0.95rem}.mcta .call{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.25)}.mcta .book{background:linear-gradient(160deg,var(--gold-bright),var(--gold));color:#2e2306}@media(max-width:640px){.mcta{display:flex}body{padding-bottom:66px}.totop{bottom:84px}}.tint{position:relative}.tint:before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:min(1180px,92%);height:1px;background:linear-gradient(90deg,transparent,#e3d9c2,transparent)}.about-card{position:relative;background:linear-gradient(168deg,#1d3c6b 0%,#13294b 55%,var(--navy-deep) 100%);border:1px solid rgba(217,178,87,.32);border-radius:var(--r-xl);padding:46px 38px 42px;text-align:center;box-shadow:var(--shadow-sm);overflow:hidden}.about-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(217,178,87,.75),transparent)}.about-card .akick{font-size:0.75rem;letter-spacing:.26em;text-transform:uppercase;color:#9fb0cc;font-weight:700;display:block;margin-bottom:14px}.about-card .akick:before,.about-card .akick:after{content:"◆";color:var(--gold-bright);font-size:.55rem;margin:0 12px;vertical-align:1px}.about-card h3{font-family:var(--serif);font-size:1.85rem;color:#fff;line-height:1.25;font-style:italic;font-weight:500}.about-card h3 b{color:var(--gold-bright);font-weight:500}.std{list-style:none;text-align:left;margin:28px 0 6px}.std li{display:flex;gap:18px;align-items:flex-start;padding:14px 2px;border-bottom:1px dashed rgba(255,255,255,.13);color:#dde6f2;font-size:.95rem;line-height:1.6;transition:.3s var(--ease-out)}.std li:hover{padding-left:6px;color:#fff}.std li:last-child{border-bottom:0}.std .rn{font-family:var(--serif);font-style:italic;color:var(--gold-bright);min-width:28px;text-align:center;font-size:1rem;padding-top:1px;flex-shrink:0}.about-card .ds{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 26px;margin-top:24px;padding-top:20px;border-top:1px solid rgba(255,255,255,.12)}.about-card .ds span{font-size:0.75rem;letter-spacing:.14em;text-transform:uppercase;color:#aab8d0;font-weight:600}.about-card .ds span b{color:#fff;display:block;font-family:var(--serif);font-size:1.15rem;letter-spacing:0;text-transform:none;font-weight:600}.cred-list{list-style:none;margin:6px 0 26px}.cred-list li{padding:9px 0 9px 34px;position:relative;color:var(--ink)}.cred-list li svg{position:absolute;left:0;top:12px;width:19px;height:19px;color:var(--gold-2)}.compare-scroll{overflow-x:auto;border-radius:var(--radius);box-shadow:var(--shadow-lift);border:1px solid var(--line);max-width:920px;margin:0 auto;background:#fff}.compare{width:100%;border-collapse:collapse;font-size:.95rem;min-width:560px}.compare th,.compare td{padding:17px 20px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}.compare thead th{background:var(--navy);color:#fff;font-family:var(--sans);font-size:0.75rem;letter-spacing:.14em;text-transform:uppercase;border-bottom:0}.compare thead th.es{background:linear-gradient(140deg,var(--gold-bright),var(--gold));color:#2e2306;text-align:center}.compare thead th.ty{text-align:center}.compare tbody th{font-weight:600;color:var(--ink);font-family:var(--sans);font-size:.95rem}.compare td.es{background:#fbf6ea;text-align:center;font-weight:600;color:var(--navy)}.compare td.ty{text-align:center;color:var(--muted);font-size:0.875rem}.compare .yes{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;font-weight:700;font-size:0.875rem}.compare .no{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--stone-2);color:#8b8b83;font-weight:700;font-size:0.82rem}.compare tbody tr:last-child th,.compare tbody tr:last-child td{border-bottom:0}.compare tbody tr{transition:background .2s}.compare tbody tr:hover{background:#fdfbf5}@media(max-width:640px){.compare th,.compare td{padding:13px 12px}}.magnet{background:radial-gradient(820px 420px at 85% 0%,#1d3d6e 0%,transparent 58%),linear-gradient(135deg,#16315a,var(--navy-deep));color:#fff;overflow:hidden}.magnet .eyebrow{color:var(--gold-bright)}.magnet .eyebrow:before{background:linear-gradient(90deg,var(--gold-bright),transparent)}.magnet h2{color:#fff}.magnet p{color:#b9c6dc}.magnet .mg-list{list-style:none;margin:18px 0 28px}.magnet .mg-list li{padding:8px 0 8px 34px;position:relative;color:#dde6f2}.magnet .mg-list li svg{position:absolute;left:0;top:11px;width:19px;height:19px;color:var(--gold-bright)}.mg-img{position:relative;max-width:360px;margin:0 auto;padding:10px}.mg-img img{position:relative;z-index:2;width:100%;height:auto;border-radius:var(--r-sm);border:1px solid rgba(217,178,87,.45);box-shadow:var(--shadow-sm);transform:rotate(-2.5deg);transition:transform .5s var(--ease-out)}.mg-img:hover img{transform:rotate(0) scale(1.01)}.mg-img:before{content:"";position:absolute;inset:26px -10px -12px 28px;border:1px solid rgba(217,178,87,.4);border-radius:var(--r-sm);transform:rotate(2deg);z-index:1}.mg-free{position:absolute;top:-12px;right:2px;z-index:3;background:linear-gradient(140deg,var(--gold-bright),var(--gold));color:#2e2306;font-weight:800;font-size:0.75rem;letter-spacing:.14em;text-transform:uppercase;padding:9px 16px;border-radius:var(--r-full);box-shadow:var(--shadow-gold);transform:rotate(3deg)}.magnet .note{font-size:0.875rem;color:#93a3bf;margin-top:14px}.mg-form{display:flex;gap:10px;flex-wrap:wrap;max-width:460px}.mg-form input{flex:1 1 200px;padding:14px 16px;border-radius:var(--r-sm);border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.09);color:#fff;font-size:0.95rem;font-family:inherit}.mg-form input::placeholder{color:#93a3bf}.mg-form input:focus{outline:2px solid var(--gold);background:rgba(255,255,255,.14)}.mg-done{background:rgba(58,138,102,.18);border:1px solid var(--green);color:#bfe8d4;border-radius:var(--r-sm);padding:12px 16px;font-weight:600;font-size:0.95rem;margin-top:14px}.mg-done a{color:var(--gold-bright);text-decoration:underline}.citylinks{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:760px;margin:0 auto}.citylinks a{border:1px solid var(--line);background:#fff;padding:12px 24px;border-radius:var(--r-full);font-weight:600;color:var(--navy);transition:.2s}.citylinks a:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.founder-chip{display:flex;align-items:center;gap:16px;margin-top:22px;padding:16px 18px;background:var(--stone);border:1px solid var(--line);border-radius:var(--r-md);max-width:420px}.founder-chip img{width:58px;height:76px;object-fit:cover;border-radius:var(--r-sm);flex:none}.founder-chip b{font-family:var(--serif);color:var(--navy);display:block;font-size:1rem}.founder-chip small{color:var(--muted);display:block;margin:1px 0 4px}.compare-scroll{-webkit-overflow-scrolling:touch}@media(max-width:1100px){.pillars{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 14px}.pillars{grid-template-columns:1fr}.magnet .cta-row .btn{width:100%;justify-content:center}.hero .glow{animation:none;filter:blur(60px);opacity:.4}.quote-spot{padding:64px 0}.qwrap .qmark{font-size:4.6rem;margin-bottom:16px}.about-card{padding:34px 22px 30px}.about-card h3{font-size:1.5rem}.std li{gap:13px;font-size:0.875rem}.card.feat h3{font-size:1.3rem}.compare thead th{font-size:.66rem}.compare tbody th{font-size:0.875rem}.mg-img{max-width:300px}.hero-stats .wrap{padding:18px 18px 20px}.hstat .n{font-size:1.5rem}.hstat .l{font-size:0.66rem}}@media(max-width:400px){.hero-grid{padding:34px 16px 30px}.cs-tabs{gap:8px}.cs-tab .t{font-size:1.15rem}.area-chips a{padding:8px 11px;font-size:.66rem}.frame{padding:42px 16px 40px}}.navitem{position:relative}.navitem>a{color:var(--ink);display:inline-flex;align-items:center;gap:6px;position:relative;padding:4px 0;font-weight:500;font-size:.95rem}.navitem>a:after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease-out)}.navitem:hover>a:after,.navitem:focus-within>a:after{transform:scaleX(1);transform-origin:left}.navitem>a:hover{color:var(--gold-2)}.navitem .caret{width:11px;height:11px;transition:transform .3s var(--ease-out);flex-shrink:0}.navitem:hover .caret,.navitem:focus-within .caret{transform:rotate(180deg)}.dropdown{position:absolute;top:calc(100% + 16px);left:50%;transform:translate(-50%,8px);width:320px;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-sm);padding:10px;opacity:0;visibility:hidden;transition:opacity .3s var(--ease-out),transform .3s var(--ease-out),visibility .3s;z-index:95}.dropdown:before{content:"";position:absolute;top:-16px;left:0;right:0;height:16px}.dropdown:after{content:"";position:absolute;top:0;left:20px;right:20px;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}.navitem:hover .dropdown,.navitem:focus-within .dropdown{opacity:1;visibility:visible;transform:translate(-50%,0)}.dd-link{display:block;padding:11px 14px;border-radius:var(--r-sm);transition:.2s}.dd-link b{display:block;color:var(--navy);font-weight:600;font-size:0.95rem;transition:color .2s}.dd-link span{display:block;color:var(--muted);font-size:0.82rem;line-height:1.5;margin-top:1px}.dd-link:hover{background:var(--stone);transform:translateX(3px)}.dd-link:hover b{color:var(--gold-2)}.dd-all{display:block;margin-top:6px;padding:12px 14px 8px;border-top:1px solid var(--line);color:var(--gold-2);font-weight:600;font-size:0.875rem;text-align:center}.dd-all:hover{color:var(--navy)}@media(max-width:960px){.navitem{width:auto}.navitem>a{display:flex;justify-content:space-between;width:100%;padding:15px 2px;border-bottom:1px solid var(--line);font-size:1rem}.navitem>a:after{display:none}.navitem .caret{display:none}.dropdown{position:static;width:auto;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;border-radius:0;padding:2px 0 8px 14px;background:transparent}.dropdown:before,.dropdown:after{display:none}.dd-link{padding:10px 2px;border-radius:0;border-bottom:1px dashed var(--line)}.dd-link:hover{background:transparent;transform:none}.dd-link span{display:none}.dd-all{margin-top:0;padding:11px 2px;border-top:0;text-align:left;border-bottom:1px solid var(--line)}}h2,h3,.qwrap blockquote{text-wrap:balance}.section-head p{text-wrap:pretty}@media print{.topbar,header.nav,.nav-scrim,.menu,.progress,.totop,.mcta,.ticker,.mapwrap,.cta-band,.cta-row,.crumb,footer,.hero .glow,.hero .grid-lines,.btn{display:none!important}body{padding-bottom:0;color:#000}details{display:block!important;page-break-inside:avoid}details>summary{font-weight:700}details>*{display:revert!important}main::after{content:"EverStone CPA \00b7 32615 South Fraser Way, Abbotsford, BC V2T 1X8 \00b7 (604) 832-1743 \00b7 everstonecpa.com";display:block;margin-top:12pt;padding-top:6pt;border-top:1px solid #999;font-size:9pt}section{padding:28px 0;break-inside:avoid}.hero{background:#fff;color:#000}.hero h1,.hero h1 em{color:#000;background:none;-webkit-text-fill-color:initial}.hero p.lead{color:#333}.reveal,.reveal-l,.reveal-r,.rvl,[class*="rvl"]{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}*{background:transparent!important;box-shadow:none!important;color:#000!important;border-radius:0!important;animation:none!important}.faq .a,.a{opacity:1!important}.hero h1,.hero h1 em{-webkit-text-fill-color:#000!important}a[href^="https://www.everstonecpa.com"]:after{content:""}}.bento .card{cursor:pointer}.bento .card-cover{position:absolute;inset:0;z-index:1;border-radius:inherit}.bento .card a:not(.card-cover){position:relative;z-index:2}.bento .card:hover{border-color:var(--gold)}#canada .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}#canada .grid .feat{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:26px 24px;box-shadow:var(--shadow-sm);transition:transform .4s var(--ease-out),border-color .3s,box-shadow .4s}#canada .grid .feat:hover{transform:translateY(-4px);border-color:var(--gold);box-shadow:var(--shadow-lift)}#canada .grid .feat h3{margin-bottom:8px;font-size:1.15rem}#canada .grid .feat p{font-size:0.95rem;color:var(--muted);line-height:1.6}#canada .grid .feat .more{margin-top:auto;display:inline-flex;align-items:center;gap:6px;color:var(--gold-2);font-weight:600;font-size:0.875rem;padding-top:14px}#canada .grid .feat .more svg{width:16px;height:16px}@media(max-width:860px){#canada .grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){#canada .grid{grid-template-columns:1fr}}
/* ==== FOOTER v2 (scripts/footer-css.mjs) ==== */
footer{background:var(--navy);color:#bcc7da;padding:66px 0 26px;font-size:0.95rem}
footer a{color:#bcc7da;transition:color .18s}
footer a:hover{color:var(--gold-bright,#d9b257)}
footer h3{color:#fff;font-size:.82rem;font-family:var(--sans);font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;margin:0 0 16px}

/* Brand block and link columns are SEPARATE grid children. The old markup put all five in one
   auto-wrapping row, so at tablet widths four fitted and "Company" wrapped alone beside three
   empty cells. Four link columns divide evenly into 4, 2 and 1 — nothing can orphan. */
footer .fgrid{display:grid;grid-template-columns:minmax(260px,1fr) minmax(0,2.5fr);gap:56px;align-items:start}
footer .flinks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px}
footer .fcol ul{list-style:none;margin:0;padding:0}
footer .fcol li{margin:0 0 9px}
footer .fcol a{font-size:0.875rem;line-height:1.45}

footer .fbrand{margin:0 0 14px}
footer .fbrand .logo{font-size:1.25rem}
footer .fblurb{color:#a6b2c8;margin:0 0 20px;font-size:0.875rem;line-height:1.65;max-width:34ch}
footer .fnap{list-style:none;margin:0 0 20px;padding:0;display:flex;flex-direction:column;gap:9px}
footer .fnap li{display:flex;gap:10px;align-items:flex-start;font-size:0.875rem;line-height:1.5;color:#a6b2c8}
.fnap-i{flex:none;width:16px;text-align:center;opacity:.75;font-size:0.875rem;line-height:1.5}

/* One social account, so a bare 44px icon box read as a leftover rather than a choice.
   A labelled pill looks deliberate at a count of one. */
.fsocial-pill{display:inline-flex;align-items:center;gap:9px;padding:9px 16px 9px 12px;border-radius:var(--r-full);
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);font-size:0.875rem;font-weight:600;color:#fff}
.fsocial-pill svg{width:17px;height:17px;flex:none}
.fsocial-pill:hover{background:var(--gold);border-color:var(--gold);color:#2e2306}

/* Areas served: was a run-on of 14 middot-separated links directly beneath the Company list, so
   it read as a continuation of it. Now separated, and set as chips that scan. */
footer .fareas{margin-top:44px;padding-top:28px;border-top:1px solid rgba(255,255,255,.13)}
footer .fchips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}
footer .fchips a{display:inline-block;padding:6px 13px;border-radius:var(--r-full);background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.09);font-size:0.82rem;line-height:1.4;white-space:nowrap}
.fchips a:hover{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.22)}

/* The bottom was six spans in one space-between flex row; at narrow widths they wrapped into a
   ragged stack and the last one landed under the scroll-to-top button. Explicit rows now. */
footer .fbot{margin-top:40px;padding-top:22px;border-top:1px solid rgba(255,255,255,.13);
  color:#8d9ab3;font-size:0.82rem}
footer .fdisc{color:#8d9ab3;font-size:0.82rem;line-height:1.65;margin:0 0 20px;max-width:88ch}
footer .fbot-links{display:flex;flex-wrap:wrap;gap:10px 30px;margin:0 0 18px}
footer .fbot-links ul{list-style:none;display:flex;flex-wrap:wrap;gap:6px 18px;margin:0;padding:0}
.fbot-links a{font-size:0.82rem}
footer .fbot-legal{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;
  padding-top:16px;border-top:1px solid rgba(255,255,255,.08)}
.freview{display:inline-flex;align-items:center;gap:7px;font-weight:600;white-space:nowrap}

@media(max-width:1000px){
  footer .fgrid{grid-template-columns:1fr;gap:40px}
  footer .flinks{grid-template-columns:repeat(4,minmax(0,1fr))}
  footer .fblurb{max-width:52ch}
}
@media(max-width:760px){
  footer .flinks{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 24px}
}
@media(max-width:420px){
  footer{padding-top:48px}
  footer .fgrid{gap:32px}
  footer .fareas{margin-top:34px;padding-top:22px}
  footer .fbot-legal{justify-content:flex-start}
}
/* The scroll-to-top button floats bottom-right; without this the last footer row sits under it.
   Reserve its footprint rather than letting it clip "Review us on Google", as it did. */
@media(max-width:1100px){
  footer .fbot-legal{padding-right:60px}
}
/* ==== /FOOTER v2 ==== */

/* ==== NAV COMPACT BAND (scripts/fix-nav-compact.mjs) ==== */
/* 961-1100px: every nav link stays visible, just tighter. Below 961px the drawer takes over. */
@media(min-width:961px) and (max-width:1100px){
  header.nav .wrap{padding-left:20px;padding-right:20px}
  header.nav .logo{font-size:1.3rem}
  header.nav .logo .bar{margin:0 9px}
  header.nav .menu{gap:16px;font-size:0.875rem}
  header.nav .menu .btn-primary{padding:9px 15px!important;font-size:0.875rem}
  header.nav .navitem>a{font-size:0.875rem;gap:4px}
}
/* 1101-1240px: the same idea, gentler — at 1150px the untouched nav leaves only ~108px between
   the logo and the first link, which reads as cramped even though nothing overlaps. */
@media(min-width:1101px) and (max-width:1240px){
  header.nav .menu{gap:22px}
  header.nav .menu .btn-primary{padding:10px 18px!important}
}
/* ==== /NAV COMPACT BAND ==== */

/* ==== READABILITY FLOOR (scripts/audit-visual.mjs TINY findings) ==== */
.s{font-size:0.75rem}
.area-chips a,.citylinks a{font-size:.82rem}
@media(max-width:900px){
  .stat .l,.hero-stats .l{font-size:0.82rem!important}
  .compare th,.compare thead th{font-size:0.82rem!important}
  .area-chips a,.citylinks a{font-size:0.82rem!important}
}
@media(max-width:640px){
  .stat .l,.hero-stats .l{font-size:0.75rem!important}
  .area-chips a,.citylinks a{font-size:0.82rem!important}
}
/* ==== /READABILITY FLOOR ==== */
@media(max-width:960px){header.nav{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.98)}.reveal,.reveal-l,.reveal-r{transition-delay:0s!important;transition-duration:.32s!important}.navphone{display:inline-flex!important}.menu .menu-tel{display:block!important}}@media(max-width:640px){.eyebrow{font-size:0.82rem;letter-spacing:.15em}}.btn-primary:focus-visible{outline-color:var(--navy)}summary .pm{transition:transform .25s ease;display:inline-block}details[open] summary .pm{transform:rotate(45deg)}header.nav.scrolled{box-shadow:var(--shadow-sm)}.navphone{display:none;width:40px;height:40px;align-items:center;justify-content:center;border-radius:var(--r-sm);background:var(--gold-soft);color:var(--gold-2);margin-right:6px}.navphone svg{width:20px;height:20px}.menu .menu-tel{display:none;font-weight:700;color:var(--navy)}.mcta{display:none}@media(max-width:820px){.mcta{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:60;box-shadow:var(--shadow-sm)}.mcta a{flex:1;display:flex;align-items:center;justify-content:center;gap:9px;padding:15px 8px;font-weight:700;font-size:.95rem}.mcta a svg{width:18px;height:18px}.mcta .mc-call{background:var(--navy);color:#fff}.mcta .mc-book{background:var(--gold);color:#3a2c08}footer{padding-bottom:76px}}@media(prefers-reduced-motion:reduce){summary .pm{transition:none}}@media(max-width:820px){.glow{animation:none!important}.hero-visual [class*=pin]{animation:none!important}}
.fresh-note{font-size:0.95rem;font-weight:600;color:var(--gold-bright);margin-top:14px}.hero .reveal,.hero .reveal-l,.hero .reveal-r{opacity:1!important;transform:none!important;transition:none!important}.h1-in{animation:none!important}

.reveal,.reveal-l,.reveal-r{opacity:1!important;transform:none!important}

/* ---- D3 / D2 / D1 — D3-surface-aware-links -------------------------------------------------------------
   Contrast and overflow fixes, each verified against a render rather than assumed. ---------- */

/* D3. A link on a dark surface cannot use the light-surface link colour. Scoped to the sections
   that are actually dark, so light-surface links are untouched. */
.hero a:not(.btn):not(.cs-list a),
.cta-band a:not(.btn),
.stat-band a:not(.btn){color:var(--link-on-dark)}

/* the byline and its link sit on the navy hero: 3.09:1 and 1.37:1 measured */
.hero .reviewed-stamp{color:rgba(255,255,255,.72)}
.hero .reviewed-stamp a{color:var(--link-on-dark);text-decoration:underline;text-underline-offset:2px}

/* D3b. --gold-2 is the DARK gold, for light surfaces. On the navy services card it measured
   2.87:1. --gold-bright is its dark-surface counterpart. */
.hero .cs-list .ck{color:var(--gold-bright)}

/* D2. Let the chip row wrap instead of clipping "Maple Ridge" mid-word. The card grows; every
   chip stays readable at 1440, 768 and 390. */
.area-chips{flex-wrap:wrap;overflow-x:visible;gap:var(--space-2)}
.area-chips a{flex:0 0 auto}

:root{
/* ---- D19 — D19-yes-badge-contrast ---------------------------------------------------------
   White on --green measured 4.19:1 at 13.6px; AA needs 4.5:1. Darkened to the nearest value
   that clears it (5.19:1) rather than restyling the badge. --green itself is unchanged. */
--green-badge:#2f7a58;
}
.compare .yes{background:var(--green-badge,#2f7a58)}


/* ---- inline-style-utilities — generated by scripts/migrate-inline-styles.mjs -------------
   Declarations moved verbatim out of style="" attributes. NO VALUE IS CHANGED HERE; only
   cascade position, so the token layer can finally reach them. Doubled selectors give 0-2-0
   specificity, matching the two-class rules already in this codebase, without !important.
   Mapping these values onto the token scale is a separate pass. ------------------------- */
.u1.u1{max-width:824px}
.u2.u2{color:var(--gold-2,#84671f);font-weight:600}
.u3.u3{color:var(--navy,#16315a);text-decoration:underline}
.u4.u4{justify-content:center}
.u5.u5{vertical-align:-3px;display:inline-block}
.u6.u6{padding:11px 22px}
.u7.u7{position:fixed;left:0;right:0;bottom:0;z-index:60;transform:translateY(110%);transition:transform .3s ease;background:var(--navy,#16315a);padding:10px 14px calc(10px + env(safe-area-inset-bottom));display:none;align-items:center;gap:10px;box-shadow:0 -6px 24px rgba(22,49,90,.25)}
.u8.u8{color:#fff;font-size:0.875rem;line-height:1.3;flex:1}
.u9.u9{flex-shrink:0;background:var(--gold,#c39a3f);color:#16315a;font-weight:700;font-size:0.875rem;padding:9px 16px;border-radius:9px;text-decoration:none}
.u10.u10{flex-shrink:0;background:none;border:0;color:#fff;opacity:.7;font-size:1.1rem;padding:11px;min-width:44px;min-height:44px;line-height:1;cursor:pointer}
.u11.u11{text-align:left}
.u12.u12{width:100%;max-width:720px;height:auto;display:block;margin:0 auto;border:1px solid var(--line,#ebe6da);border-radius:var(--r-md);background:#fff}
.u13.u13{font-size:0.82rem;color:var(--slate,#4f5b6a);margin-top:8px}
.u14.u14{margin:1.9em 0;text-align:center}
.u15.u15{background:var(--stone,#faf7f1);border:1px solid var(--line,#ebe6da);border-radius:var(--r-md);padding:22px 24px;margin:2.4em 0 0}
.u16.u16{font-size:0.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-2,#84671f);margin-bottom:5px}
.u17.u17{color:var(--navy,#16315a);font-size:1rem}
.u18.u18{margin:5px 0 0;color:var(--slate,#4f5b6a);font-size:0.95rem;line-height:1.6}
.u19.u19{font-size:.82rem;color:var(--muted,#5d6775);margin:.55em 0 0}
.u20.u20{max-width:900px}
.u21.u21{margin-bottom:4px}
.u22.u22{line-height:0;background:#f2ede2}
.u23.u23{width:100%;height:auto;display:block;margin-bottom:-2px}
.u24.u24{display:flex;gap:10px;align-items:flex-start}
.u25.u25{padding:6px 0 56px}
.u26.u26{color:var(--slate);margin-bottom:2px}
.u27.u27{color:var(--gold-2);font-weight:600}
.u28.u28{padding:8px 0 0}
.u29.u29{margin-bottom:2px}
.u30.u30{font-size:0.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-2,#84671f);font-weight:700;margin-bottom:10px}
.u31.u31{font-size:.82rem;color:var(--slate);margin-top:10px}
.u32.u32{margin:34px 0 0;padding:20px 22px;background:var(--stone,#faf7f1);border:1px solid var(--line,#ebe6da);border-radius:var(--r-md)}
.u33.u33{margin:0;padding-left:18px;font-size:0.95rem;line-height:1.75;color:var(--slate,#4f5b6a)}
.u34.u34{margin-top:26px;padding:16px 18px;background:var(--stone,#faf7f1);border-left:3px solid var(--gold,#c39a3f);border-radius:var(--r-sm);font-size:0.95rem;line-height:1.85;color:var(--slate,#4f5b6a)}
.u35.u35{display:flex;flex-wrap:wrap;gap:12px}
.u36.u36{margin:16px 0 0;font-size:0.82rem;line-height:1.7;color:var(--slate,#4f5b6a);font-style:italic}
.u37.u37{width:19px;height:19px;flex:none;color:#3a8a66;margin-top:3px}
.u38.u38{margin:34px 0;padding:22px 24px;background:linear-gradient(135deg,#16315a 0%,#1f4174 100%);border-radius:var(--r-md);box-shadow:var(--shadow-sm)}
.u39.u39{font-size:0.75rem;letter-spacing:.12em;text-transform:uppercase;color:#e0c67d;font-weight:700;margin-bottom:8px}
.u40.u40{margin:0 0 16px;color:#eef2f8;font-size:1rem;line-height:1.65;max-width:52ch}
.u41.u41{display:inline-flex;align-items:center;gap:8px;background:#c39a3f;color:#2a1f06;font-weight:700;padding:12px 22px;border-radius:var(--r-full);font-size:.95rem}
.u42.u42{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.35);color:#fff;font-weight:600;padding:12px 22px;border-radius:var(--r-full);font-size:.95rem}
.u43.u43{border:1px solid var(--line);background:#fff;padding:12px 20px;border-radius:var(--r-full);font-weight:600;color:var(--navy)}
.u44.u44{max-width:820px}
.u45.u45{margin:2em 0;padding:16px 20px;border-left:3px solid var(--gold,#c39a3f);background:var(--stone,#faf7f1);border-radius:0 12px 12px 0}
.u46.u46{margin:0;font-size:0.95rem}
.u47.u47{color:var(--gold-2,#84671f);font-weight:600;white-space:nowrap}
.u48.u48{break-inside:avoid;margin:0 0 .4em}
.u49.u49{margin-top:12px}
.u50.u50{max-width:860px}
.u51.u51{width:20px;height:20px;flex:none;color:var(--green,#3a8a66);margin-top:4px}
.u52.u52{padding:10px 13px;border-bottom:1px solid var(--line,#ebe6da);color:var(--slate,#4f5b6a)}
.u53.u53{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line,#ebe6da);border-radius:var(--r-md);padding:20px 22px;box-shadow:var(--shadow-sm);transition:transform .35s ease,border-color .3s}
.u54.u54{font-size:0.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-2,#84671f)}
.u55.u55{margin:7px 0 4px;color:var(--navy,#16315a);font-size:1rem}
.u56.u56{color:var(--muted,#5d6775);font-size:0.875rem;line-height:1.5}
.u57.u57{color:var(--navy,#16315a)}
.u58.u58{padding:42px 0 0}
.u59.u59{width:100%;height:auto;display:block;border-radius:var(--r-md);border:1px solid var(--line,#ebe6da)}
.u60.u60{margin-top:22px}
.u61.u61{flex:none;width:38px;height:38px;border-radius:50%;background:var(--navy);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center}
.u62.u62{color:var(--navy);display:block;margin-bottom:2px}
.u63.u63{color:var(--slate)}
.u64.u64{margin:26px 0}
.u65.u65{margin-top:14px}
.u66.u66{font-weight:600}
.u67.u67{padding:10px 13px;border-bottom:1px solid var(--line,#ebe6da);font-weight:600;color:var(--navy,#16315a)}
.u68.u68{margin-top:12px;font-size:0.875rem;color:var(--muted)}
.u69.u69{margin:0}
.u70.u70{display:flex;gap:16px;align-items:flex-start}
.u71.u71{margin-top:0}
.u72.u72{margin:0 0 8px;font-size:0.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-2,#84671f);font-weight:700}
.u73.u73{margin:0;font-size:1rem;color:var(--slate,#4f5b6a);line-height:1.7}
.u74.u74{margin-top:16px}
.u75.u75{padding-left:0;border-bottom:0}
.u76.u76{caption-side:top;text-align:left;font-weight:700;color:var(--navy);padding:0 0 9px;font-size:0.875rem}
.u77.u77{background:var(--stone)}
.u78.u78{margin-top:18px}
.u79.u79{display:inline-block;padding:6px 12px;border:1px solid var(--line,#ebe6da);border-radius:var(--r-sm);text-decoration:none;color:var(--navy,#16315a);font-weight:700}
.u80.u80{margin:1.4em 0 0;font-size:0.95rem;line-height:1.85;color:var(--slate,#4f5b6a)}
.u81.u81{text-align:left;margin-bottom:6px}
.u82.u82{color:var(--gold-bright,#d9b257)}
.u83.u83{margin:24px 0 2px}
.u84.u84{color:var(--slate);margin:0 0 4px;font-size:0.95rem}
.u85.u85{text-align:left;padding:11px 13px;font-weight:700}
.u86.u86{color:var(--slate);margin-bottom:16px}
.u87.u87{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-2,#84671f)}
.u88.u88{margin:8px 0 6px;color:var(--navy,#16315a)}
.u89.u89{color:var(--muted,#5d6775);font-size:.95rem;margin:0}
.u90.u90{list-style:none;display:grid;gap:11px;margin-top:16px;grid-template-columns:repeat(auto-fit,minmax(258px,1fr))}
.u91.u91{padding:34px 0;background:var(--stone,#faf7f1);border-top:1px solid var(--line,#ebe6da)}
.u92.u92{cursor:pointer}
.u93.u93{margin:0 0 14px;font-size:0.95rem;color:var(--slate,#4f5b6a)}
.u94.u94{padding:12px 14px}
.u95.u95{padding:11px 14px}
.u96.u96{color:var(--slate,#4f5b6a);line-height:1.85}
.u97.u97{display:flex;gap:10px;flex-wrap:wrap}
.u98.u98{display:none}
.u99.u99{flex:1;min-width:220px;padding:12px 14px;border:1px solid var(--line,#e6e1d5);border-radius:var(--r-sm);font-size:.95rem}
.u100.u100{border-bottom:1px solid var(--line,#ebe6da)}
.u101.u101{padding:60px 0}
.u102.u102{max-width:860px;padding:0 22px;margin:26px auto 8px}
.u103.u103{color:inherit;text-decoration:underline}
.u104.u104{text-align:center}
.u105.u105{font-style:normal;font-weight:700;color:var(--navy,#16315a)}
.u106.u106{font-size:.82rem;margin-bottom:14px}
.u107.u107{padding:56px 0}
.u108.u108{font-size:1.1rem}
.u109.u109{counter-increment:s;display:flex;gap:16px;align-items:flex-start}
.u110.u110{border:1px solid var(--line);background:#fff;padding:12px 20px;border-radius:var(--r-full);font-weight:600;color:var(--navy);transition:.2s}
.u111.u111{font-size:0.875rem;color:var(--slate,#4f5b6a)}
.u112.u112{padding:26px 0 0}
.u113.u113{color:#fff}
.u114.u114{margin:0 0 1.1em;display:flex;gap:12px;align-items:flex-start}
.u115.u115{flex-shrink:0;width:26px;height:26px;border:2px solid var(--gold,#c39a3f);border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;color:var(--navy,#16315a);font-size:.82rem}
.u116.u116{padding:10px 13px}
.u117.u117{font-size:0.875rem;color:var(--muted,#5d6775);margin-top:1.4em}
.u118.u118{font-size:1rem}
.u119.u119{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:20px}
.u120.u120{margin-top:8px}
.u121.u121{padding:44px 0}
.u122.u122{background:var(--stone,#faf7f1);border:1px solid var(--line,#ebe6da);border-left:4px solid var(--gold,#c39a3f);border-radius:var(--r-md);padding:22px 26px}
.u123.u123{margin:6px 0 0;color:var(--slate,#5d6775)}
.u124.u124{margin:0;font-size:0.95rem;line-height:1.9;color:var(--slate,#4f5b6a)}
.u125.u125{margin-top:32px}
.u126.u126{list-style:none;display:grid;gap:12px;margin-top:16px}
.u127.u127{max-width:70ch;color:var(--slate)}
.u128.u128{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(288px,1fr));margin-top:22px}
.u129.u129{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line,#ebe6da);border-radius:var(--r-md);padding:18px 20px}
.u130.u130{font-size:0.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-2,#84671f);font-weight:700}
.u131.u131{color:var(--navy,#16315a);margin:6px 0 0}
.u132.u132{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.u133.u133{margin:10px 0 0;font-size:0.875rem;color:var(--slate,#4f5b6a)}
.u134.u134{font-size:0.875rem;color:var(--slate);margin-top:12px}
.u135.u135{font-size:0.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-2,#84671f);font-weight:700;margin-bottom:9px}
.u136.u136{background:var(--navy,#16315a);color:#fff}
.u137.u137{display:block;background:#fff;border:1px solid rgba(22,49,90,.12);border-radius:var(--r-md);padding:24px;box-shadow:var(--shadow-sm);transition:border-color .2s}
.u138.u138{margin:1.6em 0 0;padding:16px 18px;background:var(--stone,#faf7f1);border-left:3px solid var(--gold,#c39a3f);border-radius:var(--r-sm);font-size:0.95rem;line-height:1.85;color:var(--slate,#4f5b6a)}

@media print{.reveal,.reveal-l,.reveal-r{opacity:1!important;transform:none!important}}

/* ---- C11-tap-targets — 44px touch targets --------------------------------------------------------
   Real padding, not invisible overlays: footer rows are 6-10px apart and overlapping hit areas
   would fire the wrong link. Container gaps are reduced by the padding added, so overall height
   is close to unchanged. Vertical padding on an inline element costs no layout at all. */

/* footer column links: 17px -> 44px */
footer .fcol a{display:block;padding:13px 0;margin:-6px 0}
footer .fcol ul{display:flex;flex-direction:column;gap:0}

/* footer bottom row and NAP links: 16-21px -> 44px */
footer .fbot-links a,footer .fnap a,footer .fbot-legal a{display:inline-block;padding:12px 0}
footer .fbot-links{row-gap:0}

/* footer chips 33px and area chips 40px -> 44px */
footer .fchips a{padding:11px 15px}
.area-chips a{min-height:44px}

/* card "read more" links: 26px -> 44px */
.card a.more{display:inline-block;padding:9px 0}

/* the primary conversion control was 24px tall */
.nav a.btn,.nav .btn-primary{min-height:44px;display:inline-flex;align-items:center}
.wrap a.gbtn{min-height:44px;display:inline-flex;align-items:center}

/* brand lockup and any remaining small control */
.wrap a.brand{display:inline-flex;align-items:center;min-height:44px}


/* near-misses: 43px chips and 40px nav controls */
footer .fchips a{padding:12px 15px}
.wrap a.navphone,.wrap button.navtoggle{min-width:44px;min-height:44px}


/* ---- C8 mobile sticky bar --------------------------------------------------------------
   The bar renders 104px tall on a 390x844 screen — a quarter of the viewport — because
   "Book free consult" wraps to two lines and flex stretches Text and Call to match. The
   buttons are NOT uneven, as reported; they are equal and all too tall. Copy is fixed by
   constraint, so the width is redistributed instead: the primary action gets the room it
   needs and the two secondary actions shrink to fit their short labels.
   Also removes nothing — the dead .mc-book/.mc-call rules target classes that appear on zero
   elements and are left in place only because deleting minified CSS by hand is riskier than
   the confusion they cause; they are documented in visual-audit/REPORT.md instead. */
@media (max-width:430px){
  .mcta a{font-size:14px;padding:13px 6px;white-space:nowrap}
  .mcta .book{flex:1.6}
  .mcta .call{flex:1}
}


/* ---- D7 testimonial attribution alignment ------------------------------------------------
   The three review cards are already equal height (357px measured); the attributions were not
   anchored, so they started at 275px, 248px and 168px from their card tops — the eye reads the
   ragged baseline, not the equal boxes. The quote flexes and the divider takes the slack, which
   pins the divider + attribution to the bottom of every card. */
.rv .rvc{display:flex;flex-direction:column}
.rv .rvc .body{flex:1 1 auto}
.rv .rvc .ln{margin-top:auto}

/* ---- D13 hero eyebrow wraps to three lines at 390px --------------------------------------
   Copy is fixed by constraint, so the tracking gives way instead: 0.14em to 0.10em recovers
   enough width for two clean lines, and the decorative rule stacks above rather than sitting
   orphaned beside the first. */
@media (max-width:600px){
  /* .eyebrow is display:inline-flex, so the decorative rule is a FLEX ITEM. display:block on a
     flex item is blockified away and it stays on the row — the first attempt at this changed
     nothing. flex-basis:100% is what actually breaks it onto its own line. */
  .hero .eyebrow{flex-wrap:wrap;letter-spacing:.08em;gap:6px}
  .hero .eyebrow:before{flex:0 0 100%;margin-bottom:1px}
}


/* ---- D11-flat-cta / D6 ------------------------------------------------------------------------
   The later .btn-primary rule reintroduced a gradient plus an inset white highlight. That inset
   over a gradient is the embossed, dated read the brief identifies. Flat fill, token radius,
   token shadow, and a hover that lifts instead of brightening. */
.btn-primary.btn-primary{
  background:var(--gold);
  color:#2e2306;
  border-radius:var(--r-md);
  box-shadow:var(--shadow-gold);
  transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out)
}
.btn-primary.btn-primary:hover{
  background:var(--gold);
  color:#2e2306;
  transform:translateY(-1px);
  box-shadow:0 12px 26px -12px rgba(195,154,63,.5)
}
@media (prefers-reduced-motion:reduce){
  .btn-primary.btn-primary{transition:none}
  .btn-primary.btn-primary:hover{transform:none}
}

/* D6 — the arrow keeps its baseline and never wraps away from its label */
.ar{display:inline-block;vertical-align:-2px;margin-left:.35em}


/* ---- D20 small gold text on light surfaces -----------------------------------------------
   --gold-2 (#84671f) measures 4.29:1 on --stone. Above the 3:1 large-text allowance but under
   the 4.5:1 body floor, and breadcrumbs and eyebrows are 12-13px, so they fail on every content
   page. Constraint 1 freezes the palette, so this EXTENDS it rather than replacing --gold-2:
   a darker sibling used only for small text on light surfaces. Everything else keeps --gold-2. */
:root{--gold-text:#6b5316}
.crumb a,.crumb,.eyebrow{color:var(--gold-text)}
/* .page-hero .crumb a is 0-3-0 and beats a bare .crumb a — the third specificity trap in this
   pass, after .compare .yes and the sticky bar. Match it rather than reach for !important. */
.page-hero .crumb a,.page-hero .crumb{color:var(--gold-text)}
/* .tlink at 17.6-18.4px sits just under the 18.66px large-text threshold, so it needs the full
   4.5:1 and measured 4.29. Same darker sibling. */
.artbody a.tlink,a.tlink{color:var(--gold-text)}
.hero .eyebrow,.cta-band .eyebrow,.reviews-band .eyebrow{color:var(--gold-bright)}

/* D20-gold-text — small gold text on light surfaces needs 4.5:1; --gold-2 gives 4.29.
   Placed here, after the page's own inline blocks, because appending to styles.css loses to them. */
:root{--gold-text:#6b5316}
.crumb,.crumb a,.page-hero .crumb,.page-hero .crumb a,.eyebrow,a.tlink,.artbody a.tlink{color:var(--gold-text)}
.hero .eyebrow,.cta-band .eyebrow,.reviews-band .eyebrow,.hero .crumb a{color:var(--gold-bright)}

/* ---- D14 services bento --------------------------------------------------------------------
   OPTION B, deliberately. The brief offers a uniform 2x2 (safer) or a repeated asymmetry (more
   distinctive). The grid is ALREADY the asymmetric shape: a dark feature card carrying the
   emphasis, with lighter cards around it. Flattening that to a 2x2 would throw away the one
   piece of visual hierarchy on the page and make Tax Services — the highest-value service —
   indistinguishable from the rest. So the asymmetry stays and is made intentional instead.

   What actually read as an accident was not the WIDTH of the Fractional CFO card but its
   INTERNAL layout: it alone ran horizontally, icon to the left, while its three peers stacked
   icon-over-title-over-body. One card in a different orientation looks like a mistake; one card
   at a different width looks like emphasis.

   The vertical variant already existed for narrow viewports, so this promotes it to every
   breakpoint. Four cards, one internal shape, two widths — a pattern rather than an exception. */
.bento .card.wide{flex-direction:column;gap:0;align-items:stretch}
.bento .card.wide .ic{margin-bottom:22px}


/* ---- D6b link arrows were breaking to their own line -------------------------------------
   The base reset carries svg{display:block}, a sensible default that removes the inline
   descender gap — and it forces every arrow inside a link onto a new line. "Accounting
   services" then sits above a lone arrow, which reads as a broken layout. The .ar class fixed
   the arrows this pass inserted; these are the site's own pre-existing SVG arrows. */
a.more,a.dd-all,.card a.more{display:inline-flex;align-items:center;gap:.4em}
a.more svg,a.dd-all svg{display:inline-block;flex-shrink:0;width:14px;height:14px}

/* contrast-final — see scripts/fix-remaining-contrast.mjs
   Prose links, pricing pills and comparison ticks, all on light surfaces. */
.feat .pp,.pp{color:var(--gold-text)}
.cmp .yes,.yes{color:#2f7a58}
/* lk-surface — a link's colour has to follow the surface it is printed on.
   lk-l: light surface, dark gold. lk-d: dark surface, bright gold. Applied only where measured. */
a.lk-l.lk-l{color:var(--gold-text)!important}
a.lk-d.lk-d{color:var(--gold-bright)!important}
/* ${MARK} — visual pass 2. Stars on navy chips (ends the 2.62:1 standoff inside brand),
   surface depth, and interaction polish. Injected last so it wins the cascade. */
/* stars: gold on a navy chip — brand gold kept, AA passed */
.s[aria-label*="stars"],.stars[aria-label*="stars"],span.st,div[aria-label*="stars"],span[aria-label*="stars"]{display:inline-block;background:var(--navy,#16315a);color:var(--gold-bright,#d9b257)!important;padding:3px 12px 4px;border-radius:999px;line-height:1.35}
/* the comparison-table ✕: slate, not faded gold */
table span.no,.compare span.no{color:#44505e!important;font-weight:700}
/* quick answer: from bordered note to owned card */
.qabox,.quick-answer{background:var(--gold-soft,#f0e6cf)!important;border:1.5px solid var(--gold,#c39a3f)!important;border-left-width:5px!important;border-radius:12px!important;padding:16px 20px!important}
/* tables: navy-mist headers, zebra, hover */
.artbody tbody tr:nth-child(even) td,table.dl tbody tr:nth-child(even) td{background:rgba(22,49,90,.025)}
.artbody tbody tr:hover td,table.dl tbody tr:hover td{background:var(--gold-soft,#f0e6cf)}
/* text inside the gold-soft quick answer needs the darker gold */
.qabox .lab,.qabox a.tlink,.quick-answer a,.qabox a{color:var(--gold-text,#6b5316)!important}
/* h2: quiet gold signature */
.artbody h2{padding-bottom:6px;border-bottom:2px solid var(--gold-soft,#f0e6cf)}
/* one focus ring, everywhere */
:focus-visible{outline:2px solid var(--gold,#c39a3f)!important;outline-offset:2px;border-radius:4px}
/* related cards: lift + gold edge on hover */
.relgrid a{transition:transform .15s cubic-bezier(.22,.61,.21,1),box-shadow .15s,border-color .15s}
.relgrid a:hover{transform:translateY(-2px);border-color:var(--gold,#c39a3f);box-shadow:0 10px 24px -14px rgba(13,31,60,.25)}
/* reviewed-by: badge, not afterthought */
.reviewed-stamp a{color:var(--gold-text,#6b5316)!important}
.reviewed-stamp{display:inline-block;border:1px solid var(--line,#ebe6da);border-radius:999px;padding:3px 12px;background:#fff;color:var(--muted,#5d6775)!important}
/* micro-interactions, guarded */
@media (prefers-reduced-motion:no-preference){
a,button,.btn,summary{transition:color .15s ease-out,background-color .15s ease-out,border-color .15s ease-out,transform .15s ease-out}
.faq details[open] summary{color:var(--navy,#16315a)}}
/* callout variants for authoring */
.co-tip,.co-warn,.co-deadline{border-radius:12px;padding:14px 18px;margin:1.1em 0;border:1.5px solid}
.co-tip{background:#f4f7f4;border-color:#2f7a58}
.co-warn{background:#fdf6ec;border-color:var(--gold,#c39a3f)}
.co-deadline{background:rgba(22,49,90,.04);border-color:var(--navy,#16315a)}
/* print: content, not chrome */
@media print{header,footer,nav,#mcta,.cta-band,.mcta,.toc-jump,.relgrid{display:none!important}.artbody{font-size:11pt}}

@media(max-width:700px){.fitband div[style*="grid-template-columns"]{grid-template-columns:1fr!important}}

/* one mobile action bar, email-first (visual audit 2026-08-13) */
.mcta.mcta-v3{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;gap:6px;padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:#0d1f3c;border-top:1px solid rgba(255,255,255,.14)}
@media(max-width:760px){.mcta.mcta-v3{display:flex}}
.mcta.mcta-v3 a{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;border-radius:9px;font:600 .88rem/1.1 inherit;text-decoration:none;white-space:nowrap;padding:0 12px}
.mcta.mcta-v3 .mc-mail{flex:1 1 auto;background:#fff;color:#16315a}
.mcta.mcta-v3 .mc-book{flex:1 1 auto;background:#c39a3f;color:#0d1f3c}
.mcta.mcta-v3 .mc-call{flex:0 0 46px;padding:0;background:rgba(255,255,255,.10);color:#fff}

/* --- Tap targets: WCAG 2.2 minimum target size (24px), added 2026-08-20 -----------------
   MEASURED, NOT ASSUMED. On /accountant-abbotsford 37 of 89 in-body links rendered under 24px
   tall; on the homepage 21 of 124, most at exactly 19px. An inline <a> takes its hit box from
   the font content box, NOT from the line-height, so a 28px line-height link is still a 19px
   target. Vertical padding on an inline element extends the hit area without entering the line
   box, so this was verified in the live DOM before shipping: 37 undersized links -> 0, with 3px
   of total document movement across the whole page.
   The review badge links are display:block and need a min-height instead of padding. --------- */
main p a, main li a, main dd a, main dt a, main h3 a,
main .artbody a, main .faq .a a, main .quick-answer a, main .callout a {
  padding-top: 4px;
  padding-bottom: 4px;
}
.rvbadge a, .reviewed-stamp a { display: inline-block; min-height: 24px; line-height: 24px; }

/* ==== compact-footer start (scripts/compact-footer.mjs) ==== */
/* ---- section spacing: the footer was ~356px of gaps before any text was drawn ---- */
footer{padding-top:30px;padding-bottom:18px}
footer .fgrid{gap:24px 40px;align-items:start}
footer .flinks{gap:16px 24px}
footer .fcol h3{margin-bottom:7px}
/* The blurb repeats the value proposition the page has already made three times by the point
   a reader reaches the footer. It goes; the NAP block and the links are what a footer is for. */
footer .fblurb{display:none}
footer .fnap{gap:2px;margin:0 0 10px}
footer .fnap li{line-height:1.45}
footer .fareas{margin-top:16px;padding-top:12px}
footer .fareas h3{margin-bottom:5px}
footer .fareas p{line-height:1.55}
footer .fchips{gap:6px}
footer .fbot{margin-top:14px;padding-top:12px;gap:6px}
footer .fdisc{margin:0 0 8px;line-height:1.45}
footer .fbot-links{margin:0 0 8px;gap:6px 22px}
footer .fbot-legal{padding-top:8px;gap:6px 18px}

/* ---- the brand column was 502px of a 550px row ---- */
/* Three social pills at 192px wide in a 304px column stacked three-high: 135px for three links.
   A wider brand column and a smaller pill puts them on one row. */
footer .fsocial-pill{padding:5px 11px 5px 9px;font-size:.78rem;gap:6px}
footer .fsocial-pill svg{width:14px;height:14px}

/* Two columns from 640 rather than 900. Between those widths the brand block sat ABOVE the
   links instead of beside them, which cost about 200px on every tablet. */
@media (min-width:640px){
  footer .fgrid{display:grid;grid-template-columns:minmax(280px,1fr) minmax(0,2fr);gap:18px 36px}
}
/* The NAP goes to two columns only once its own column can hold them. At 768 the brand column is
   about 250px wide, and a two-column NAP there pushed the phone number out of the column and on
   top of the service links — a real collision, caught by the overlap check rather than by eye. */
@media (min-width:900px){
  footer .fnap{display:grid;grid-template-columns:1fr 1fr;gap:2px 18px}
  footer .fbrand{margin-bottom:8px}
}

/* The areas-served row was a bordered section with its own heading for three chips. It reads as
   one line of the bottom bar instead. */
footer .fareas{margin-top:12px;padding-top:10px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
footer .fareas h3{margin:0}
footer .fareas p,footer .fareas ul{margin:0}

/* The bottom bar held the disclaimer, the legal links and the copyright in three stacked rows. */
/* First attempt put the disclaimer beside the links in a 1.35/1 grid. The six legal links then
   had only ~460px and wrapped onto three rows, so .fbot-links grew from 63px to 132px and the
   bar got TALLER. Disclaimer full width, then links and copyright sharing one row. */
@media (min-width:900px){
  footer .fbot{display:grid;grid-template-columns:1fr auto;gap:8px 28px;align-items:baseline}
  footer .fdisc{grid-column:1/-1;margin:0}
  footer .fbot-links{grid-column:1;margin:0}
  footer .fbot-legal{grid-column:2;padding-top:0;text-align:right;justify-content:flex-end;flex-wrap:nowrap;white-space:nowrap}
}
footer .fdisc{font-size:.78rem;line-height:1.45}

/* 44px targets are for fingers. With a mouse, 32px clears the WCAG 2.5.8 minimum of 24px and
   returns 14px on each of 29 links. Touch keeps the full 44px. */
@media (pointer:fine){
  footer .fcol a{padding:7px 0;margin:-1px 0}
  footer .fnap li a{padding:2px 0}
}
@media (pointer:coarse),(hover:none){
  footer .fcol a{padding:13px 0;margin:-6px 0}
}

/* ---- phone: four one-item columns stacked is the single biggest waste ---- */
@media (max-width:640px){
  footer{padding-top:20px;padding-bottom:14px}
  footer .flinks{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}
  footer .fgrid{gap:14px}
  footer .fblurb{display:none}
  footer .fnap{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px}
  footer .fbot{margin-top:10px}
  footer .fdisc{font-size:.74rem;line-height:1.4}
  footer .fbot-links{gap:4px 16px}
  footer .fareas{margin-top:10px;padding-top:8px}
  footer .fbot-legal{padding-top:6px;gap:4px 12px;font-size:.74rem;line-height:1.4}
  footer .fnap li{font-size:.82rem}
  footer .fstrip{margin-top:10px;padding-top:8px}
  /* Three area chips stacked at full tap height was 155px for three links. Wrapped inline they
     keep a 34px target and take a third of the room. */
  footer .fchips{display:flex;flex-wrap:wrap;gap:6px 8px}
  footer .fchips li{flex:0 0 auto}
  footer .fchips a{padding:7px 10px}
  footer .fbot{gap:4px}
}
/* ==== compact-footer end ==== */
