/* TSC shell: what every page shares (home v2 look, Abraham 2026-10-31): fonts, tokens, header + mega menu + phone sheet, footer,
   bottom buttons, ADA tab, acting icons. Bundled first in both site.css (inner pages) and home.css (home). Class names here are the
   only ones both bundles share, so a section style never leaks between them. */
@font-face{font-family:Poppins;src:url(/assets/fonts/poppins-700.cb726212d5.woff2) format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Poppins;src:url(/assets/fonts/poppins-800.6d11d743bc.woff2) format('woff2');font-weight:800;font-display:swap}
@font-face{font-family:'Hanken Grotesk';src:url(/assets/fonts/hanken-grotesk.c742200860.woff2) format('woff2');font-weight:100 900;font-display:swap}
:root{--ah:44px;--ink:#1d2430;--mute:#566171;--muted:#566171;--blue:#2152a2;--red:#cf2a10;--accent:#cf2a10;--accent-d:#b82409;--navy:#0f1d3a;--sky:#E7F0FB;--sky2:#EEF5FE;--gr:#F3F6FA;--canvas:#fff;--panel:#F3F6FA;--line:#dbe2ec;--peach:#FFD9C9;--warm:20,40,80;--e:cubic-bezier(.4,0,.2,1);--ex:cubic-bezier(.3,0,1,1);--sine:cubic-bezier(.37,0,.63,1);--r:24px;--w:1240px}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:110px}html,body{overflow-x:clip}
body{margin:0;font-family:'Hanken Grotesk',system-ui,sans-serif;font-size:1.1875rem;line-height:1.55;color:var(--ink);background:#fff;-webkit-font-smoothing:antialiased}
img,video{display:block;max-width:100%}img{height:auto}a{color:inherit}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
h1,h2,h3{font-family:Poppins,system-ui,sans-serif;font-weight:700;letter-spacing:-.02em;line-height:1.08;margin:0;text-wrap:balance}h1 em,h2 em,h3 em{font-style:normal}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:6px}
.sheet :focus-visible,.base :focus-visible,.ann :focus-visible{outline-color:#fff}
.wrap{width:min(var(--w),100% - 48px);margin-inline:auto}
.skip{position:absolute;left:-999px;top:8px;z-index:99;background:#fff;padding:12px 18px;border-radius:12px}.skip:focus{left:8px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:56px;padding:0 28px;border-radius:14px;font-family:inherit;font-weight:600;font-size:1.0625rem;text-decoration:none;white-space:nowrap;border:0;cursor:pointer;transition:transform .25s var(--e),background .25s var(--e)}
.btn:hover{transform:translateY(-2px)}.btn:active{transform:scale(.97)}.btn svg{flex:none}
.btn.p,.btn.pri{background:var(--red);color:#fff}.btn.p:hover,.btn.pri:hover{background:var(--accent-d)}
.btn.o,.btn.ghost{box-shadow:inset 0 0 0 1.5px var(--blue);color:var(--blue);background:#fff}.btn.ghost:hover{background:var(--sky2)}
.btn.lite{background:rgba(255,255,255,.14);color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.55);backdrop-filter:blur(8px)}.btn.lite:hover{background:rgba(255,255,255,.24)}

/* top bar + floating header. Over the home hero it is clear; everywhere else white (.solid, shell.js) */
.hw{position:fixed;left:0;right:0;top:0;z-index:50;transition:transform .35s var(--e)}.hw.solid{transform:translateY(calc(var(--ah)*-1))}
.ann{display:flex;align-items:center;justify-content:center;gap:12px;height:var(--ah);background:var(--blue);color:#fff;font-weight:600;font-size:1.0625rem;text-decoration:none}.ann i{font-style:normal;background:#fff;color:var(--blue);border-radius:999px;padding:1px 11px;font-size:.875rem;font-weight:700}
.hdr{position:relative;margin:12px 12px 0;border-radius:24px;color:#fff;font-weight:500;transition:background .35s var(--e),color .35s var(--e),box-shadow .35s var(--e)}
.hdr>.wrap{display:flex;align-items:center;gap:18px;width:auto;height:76px;padding:0 26px}
.hdr .logo{height:44px;width:auto;flex:none}.hdr .logo.c{display:none}
.hdr.solid{background:rgba(255,255,255,.95);color:var(--ink);box-shadow:0 8px 30px rgba(20,40,80,.1);backdrop-filter:blur(14px)}.hdr.solid .logo.w{display:none}.hdr.solid .logo.c{display:block}
.nav{display:flex;align-items:center;gap:clamp(14px,1.7vw,26px);margin-inline:auto;font-size:1.0625rem;white-space:nowrap}
.nav>a,.nav>button.mm{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:44px;color:inherit;text-decoration:none;font:inherit}
.nav>a::after,.nav>button.mm::after{content:"";position:absolute;left:0;right:0;bottom:6px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s var(--e)}.nav>a:hover::after,.nav>button.mm:hover::after,.nav>button.mm[aria-expanded=true]::after{transform:scaleX(1)}
.mm svg{width:14px;height:14px;transition:transform .2s var(--e)}.mm[aria-expanded=true] svg{transform:rotate(180deg)}
.tools{display:flex;align-items:center;gap:14px}.tools .btn{min-height:48px;padding:0 18px;font-size:1rem}
.sz{display:inline-flex;gap:2px}.sz button{min-width:30px;height:36px;border-radius:8px;font-weight:600}.sz button:nth-child(2){font-size:1.1em}.sz button:nth-child(3){font-size:1.25em}.sz button:hover{background:rgba(127,140,160,.18)}
.lang{display:inline-flex;gap:2px;font-weight:600}.lang a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:9px;color:inherit;text-decoration:none}.lang a[aria-current]{background:rgba(255,255,255,.2)}.hdr.solid .lang a[aria-current]{background:#e9eff8}
.burger{display:none;width:48px;height:48px;border-radius:12px;align-items:center;justify-content:center;color:inherit}
/* mega menu */
.mega{position:absolute;left:0;right:0;top:calc(100% + 8px);background:#fff;color:var(--ink);border-radius:24px;box-shadow:0 24px 50px rgba(20,40,80,.16);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .14s var(--ex),transform .14s var(--ex),visibility 0s .14s}
.mega.open{opacity:1;visibility:visible;transform:none;transition:opacity .2s var(--e),transform .2s var(--e)}
.mega .wrap{display:grid;grid-template-columns:.8fr 1.6fr;gap:36px;width:auto;padding:24px}
.mega .lead{background:var(--sky2);border-radius:18px;padding:26px}.mega .lead h3{font-size:1.75rem;margin:0 0 10px}.mega .lead p{margin:0 0 18px;font-size:1.0625rem;color:var(--mute)}.mega .eyebrow{display:none}
.mega ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 24px}
.mega li{opacity:0;transform:translateY(6px)}.mega.open li{opacity:1;transform:none;transition:opacity .2s var(--e) calc(50ms + var(--i)*30ms),transform .2s var(--e) calc(50ms + var(--i)*30ms)}
.mega li a{display:grid;grid-template-columns:48px 1fr;gap:14px;align-items:center;padding:12px;border-radius:16px;text-decoration:none;color:var(--ink);min-height:72px}.mega li a:hover{background:var(--sky2)}.mega li svg{color:var(--blue)}
.mega li b{display:block;font-size:1.125rem;line-height:1.25;font-weight:600}.mega li span{font-size:1rem;color:var(--mute);line-height:1.3;display:block}
/* phone menu */
.sheet{position:fixed;inset:0;z-index:60;background:var(--navy);color:#fff;display:flex;flex-direction:column;padding:0 22px 22px;overflow:auto;visibility:hidden;opacity:0;transform:translateY(-10px);transition:opacity .21s var(--ex),transform .21s var(--ex),visibility 0s .21s}
.sheet.open{visibility:visible;opacity:1;transform:none;transition:opacity .3s var(--e),transform .3s var(--e)}
.sheet .top{display:flex;align-items:center;justify-content:space-between;min-height:84px}.sheet .top img{height:48px;width:auto}
.sheet .x{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center}
.sheet nav{display:grid;gap:2px;margin-top:8px}
.sheet nav>a,.sheet nav summary{display:flex;justify-content:space-between;align-items:center;min-height:64px;font:700 1.75rem/1.1 Poppins,sans-serif;letter-spacing:-.02em;color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.16);list-style:none;cursor:pointer}
.sheet summary::-webkit-details-marker{display:none}.sheet details[open] summary svg{transform:rotate(180deg)}
.sheet details div{display:grid;padding:6px 0 14px}.sheet details a{display:flex;gap:14px;align-items:center;min-height:56px;color:#dfe6f2;text-decoration:none;font-size:1.25rem}.sheet details a svg{color:var(--peach);flex:none}
.sheet nav>*{opacity:0;transform:translateY(8px)}.sheet.open nav>*{opacity:1;transform:none;transition:opacity .25s var(--e) calc(80ms + var(--i)*30ms),transform .25s var(--e) calc(80ms + var(--i)*30ms)}
.sheet .foot{margin-top:auto;display:grid;gap:12px;padding-top:26px}.sheet .foot .lang{justify-self:start}.sheet .foot .lang a[aria-current]{background:#fff;color:var(--ink)}.sheet .foot .btn{width:100%}

/* acting icons: loops run only while .play is on (shell.js) */
.ai{display:inline-flex;flex:none;width:var(--s,56px);height:var(--s,56px)}.ai svg{width:100%;height:100%;overflow:visible}
.ai:not(.play) *{animation-play-state:paused!important}
.a-ring{transform-origin:24px 40px;animation:ring 2.8s var(--sine) infinite}
@keyframes ring{0%,27%,100%{transform:none}2.5%,8.5%,14.5%,20.5%{transform:rotate(-14deg)}5.5%,11.5%,17.5%,23.5%{transform:rotate(14deg)}}
.a-arc{opacity:0;animation:arc 2.8s var(--sine) infinite}.a-arc2{animation-delay:.12s}@keyframes arc{0%,30%,100%{opacity:0}6%,22%{opacity:1}}
@keyframes type{0%,60%,100%{transform:none;opacity:.55}30%{transform:translateY(-3px);opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

/* footer */
.base{position:relative;background:var(--navy);color:#dfe6f2;margin:0 12px 12px;padding:40px 0 30px;border-radius:36px;overflow:hidden}body.home .base{border-radius:0 0 36px 36px}.starz i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;animation:tw 1.5s var(--sine) infinite alternate}@keyframes tw{from{opacity:.12}to{opacity:.95}}
.cols{position:relative;display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:30px}.cols h2{font-family:inherit;font-size:.9375rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:#fff;margin-bottom:12px}.cols a,.cols p{display:block;margin:0;padding:4px 0;color:inherit;text-decoration:none}.cols a:hover{text-decoration:underline;text-underline-offset:3px}.cols img{height:50px;width:auto;margin-bottom:12px}
.lgl{position:relative;display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:26px}.lgl a{display:inline-flex;align-items:center;min-height:32px;color:#dfe6f2;font-size:1rem}.lgl a:hover{color:#fff}
.cr{position:relative;margin:14px 0 0;padding-top:18px;border-top:1px solid rgba(255,255,255,.14);font-size:.9375rem}.cr a{color:inherit;display:inline-flex;align-items:center;min-height:24px}

/* bottom buttons, custom in the brand; the GHL chat loads on the first tap and hides its own bubble (shell.js) */
.dock{position:fixed;z-index:28;right:18px;bottom:18px;display:flex;align-items:center;gap:10px;transition:transform .35s var(--e),opacity .35s var(--e)}.dc1,.dc2{transition:transform .35s var(--e),opacity .35s var(--e),background .25s var(--e)}.js .dock:not(.on) .dc1,.js .dock:not(.on) .dc2{transform:translateY(130%);opacity:0;pointer-events:none;visibility:hidden}
.dock a,.dock button{display:flex;align-items:center;justify-content:center;gap:8px;height:56px;border-radius:999px;font-weight:700;font-size:1.0625rem;white-space:nowrap;text-decoration:none;box-shadow:0 10px 26px rgba(20,40,80,.25);transition:transform .25s var(--e),background .25s var(--e)}.dock a:hover,.dock button:hover{transform:translateY(-2px)}
.dc1{background:#fff;color:var(--blue);padding:0 20px 0 14px}.dc1 .ai{--s:30px}.dc2{background:var(--red);color:#fff;padding:0 22px}.dc2:hover{background:var(--accent-d)}.ds{display:none}
.dc3{position:relative;width:60px;height:60px!important;flex:none;background:var(--blue);color:#fff}.dc3:hover{background:#1a4387}.dc3 svg{width:32px;height:32px}.dc3 .b{fill:currentColor}.dc3 .d{fill:var(--blue);animation:type 1.4s var(--sine) infinite;animation-delay:calc(var(--d)*.16s)}.dc3 .d0{--d:0}.dc3 .d1{--d:1}.dc3 .d2{--d:2}.dc3::before{content:"";position:absolute;inset:0;border-radius:50%;animation:pulse 3.2s var(--sine) infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(33,82,162,.45)}70%,100%{box-shadow:0 0 0 16px rgba(33,82,162,0)}}
.dc3 .sp{display:none;position:absolute;inset:14px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}.dc3.load svg{visibility:hidden}.dc3.load .sp{display:block}
html.chat-open .dock,html.chat-open .ada{opacity:0;pointer-events:none}

/* accessibility panel: the site's own, a small tab on the left edge that tucks away */
.ada{position:fixed;z-index:27;left:0;bottom:96px;display:flex;align-items:flex-end;transition:transform .3s var(--e)}
.ada-t{display:flex;flex-direction:column;background:var(--navy);color:#fff;border-radius:0 14px 14px 0;box-shadow:0 8px 22px rgba(15,29,58,.3);overflow:hidden}.ada-t button{display:grid;place-items:center;width:46px;height:46px;color:#fff}.ada-t .tk2{height:28px;border-top:1px solid rgba(255,255,255,.18)}.ada-t svg{width:26px;height:26px}.ada-t .tk2 svg{width:16px;height:16px;transition:transform .25s var(--e)}
.ada.hid .ada-t .op{display:none}.ada.hid .tk2{width:28px;height:64px;border-top:0}.ada.hid .tk2 svg{transform:rotate(180deg)}
.ada-p{position:fixed;left:12px;bottom:calc(96px + env(safe-area-inset-bottom,0px));z-index:40;width:min(320px,calc(100vw - 24px));max-height:calc(100vh - 120px);overflow:auto;padding:20px;border-radius:20px;background:#fff;color:var(--ink);box-shadow:0 0 0 1px var(--line),0 24px 50px rgba(15,29,58,.28)}.ada-p[hidden]{display:none}.ada-p h2{font-size:1.25rem;margin-bottom:12px}.ada-o{display:flex;flex-direction:column;gap:6px}.ada-o button{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:0 14px;border-radius:12px;background:var(--sky2);font-weight:600;font-size:1.0625rem;text-align:left}.ada-o button i{flex:none;width:22px;height:22px;border-radius:50%;box-shadow:inset 0 0 0 2px #B9C7DA;font-style:normal;font-size:.75rem;display:grid;place-items:center}.ada-o button[aria-pressed=true]{background:var(--blue);color:#fff}.ada-o button[aria-pressed=true] i{background:#fff;color:var(--blue);box-shadow:none}.ada-f{margin-top:12px}.ada-f button{min-height:44px;padding:0 14px;border-radius:999px;box-shadow:inset 0 0 0 1.5px var(--line);font-weight:600}.ada-p p{margin:10px 0 0;font-size:1rem;color:var(--mute)}.ada-p p a{color:var(--blue)}.ada-x{position:absolute;top:10px;right:10px;width:44px;height:44px;border-radius:50%;font-size:1.5rem;line-height:1;color:var(--mute)}
html.a11y-text body{font-size:1.32rem}html.a11y-text2 body{font-size:1.48rem}html.a11y-contrast{--mute:#1d2430;--muted:#1d2430}html.a11y-links main a:not(.btn):not(.big):not(.sc):not(.wd):not(.igt):not(.svc):not(.post){text-decoration:underline;text-underline-offset:3px}html.a11y-space main :is(p,li,blockquote){line-height:1.95;letter-spacing:.02em;word-spacing:.08em}
html.a11y-still *,html.a11y-still *::before,html.a11y-still *::after{animation:none!important;transition:none!important}html.a11y-still .a-arc,html.a11y-still .a-b2{opacity:1}html.a11y-still .a-check{stroke-dashoffset:0}html.a11y-still .dock{transition:none}html.a11y-still.js [data-rise]{opacity:1!important;transform:none!important}

.ck{position:fixed;left:64px;right:16px;bottom:16px;z-index:45;max-width:560px;display:flex;align-items:center;gap:16px;padding:16px 18px;border-radius:20px;background:#fff;border:1px solid var(--line);box-shadow:0 20px 50px rgba(var(--warm),.18);font-size:17px;animation:rise .4s var(--e) both}
.ck p{margin:0;flex:1}.ck .btn{min-height:48px;padding:0 20px;font-size:17px}
@media(max-width:700px){.ck{left:10px;right:10px;bottom:84px;gap:12px;padding:10px 10px 10px 16px;font-size:16px;line-height:1.35}.ck .btn{padding:0 16px;font-size:16px;flex:none}html.nf-on .ck{bottom:10px}}
@media (max-width:1180px){.sz{display:none}}
@media (max-width:1060px){.mega,.nav,.tools .btn{display:none}.burger{display:inline-flex}.tools{margin-left:auto;gap:6px}}
@media (max-width:960px){
.hdr{margin:6px 8px 0}.hdr>.wrap{height:64px;padding:0 8px 0 14px}.hdr .logo{height:40px}.ann{font-size:.9375rem}.hm{display:none}
.ada{bottom:calc(84px + env(safe-area-inset-bottom,0px))}.ada.away{transform:translateX(-110%)}.ada-p{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
.cols{grid-template-columns:1fr 1fr}.cols>div:first-child,.cols>div:last-child{grid-column:1/-1}.base,body.home .base{margin:0 8px 80px}
.dock{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));gap:8px}.dock a,.dock button{height:56px;font-size:1rem}.dc1{padding:0 14px 0 8px;flex:none}.dc2{flex:1;padding:0 12px;min-width:0}.dl{display:none}.ds{display:inline}.dc3{width:56px;height:56px!important}.js .dock:not(.on) .dc1,.js .dock:not(.on) .dc2{transform:none;opacity:1;pointer-events:auto;visibility:visible}.nf-on .dock{transform:translateY(130%);opacity:0;pointer-events:none}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.a-arc,.a-b2{opacity:1}.a-check{stroke-dashoffset:0}.mega li,.sheet nav>*{opacity:1;transform:none}}

/* TSC inner pages (fonts, tokens, header and footer: shell.css). */
section{scroll-margin-top:100px}p{margin:0 0 1em}a{color:var(--blue)}h2{font-size:clamp(2.25rem,4.2vw,3.5rem)}h3{font-size:1.5rem;line-height:1.2}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);margin-bottom:18px}
/* facts */
.facts{background:var(--panel);border-bottom:1px solid var(--line)}
.facts .wrap{display:grid;grid-template-columns:repeat(4,1fr)}
.facts .c{display:flex;gap:16px;align-items:center;padding:26px 22px;border-left:1px solid var(--line);color:var(--ink);text-decoration:none}
.facts .c:first-child{border-left:0;padding-left:0}.facts svg{color:var(--blue);flex:none}
.facts b{display:block;font-size:19px;line-height:1.25}.facts span{font-size:17px;color:var(--muted)}
/* sections */
section{padding:104px 0}
.alt{background:var(--panel)}
.head{max-width:760px;margin-bottom:52px}.head p{margin:18px 0 0;color:var(--muted);font-size:20px}
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:72px;align-items:center}
.split p{color:#3f4c60}
.ph{border-radius:var(--r);overflow:hidden;background:var(--panel)}
.ph img{width:100%;height:100%;object-fit:cover}
.ph.tall{aspect-ratio:4/4.6}.ph.wide{aspect-ratio:4/3}.ph.sq{aspect-ratio:1}
.cap{font-size:16px;color:var(--muted);margin:10px 4px 0}
/* numbered steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:s}
.step{background:var(--panel);border-radius:var(--r);padding:30px 26px 32px;counter-increment:s;position:relative}
.alt .step{background:var(--canvas)}
.step:before{content:"0" counter(s);font:700 20px Poppins,sans-serif;color:var(--accent);display:block;margin-bottom:18px;letter-spacing:.06em}
.step .ico{color:var(--blue);margin-bottom:16px}
.step h3{margin-bottom:10px}.step p{margin:0;font-size:18px;color:#3f4c60}
/* services */
.svcs{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.svc{display:flex;flex-direction:column;gap:14px;min-height:240px;padding:28px 26px;background:var(--canvas);border-radius:var(--r);text-decoration:none;color:var(--ink);border:1px solid var(--line);transition:transform .25s var(--e),box-shadow .25s var(--e),border-color .25s var(--e)}
.svc:hover{transform:translateY(-4px);box-shadow:0 18px 36px rgba(var(--warm),.1);border-color:var(--blue)}
.svc .ico{color:var(--blue)}.svc p{margin:0;color:var(--muted);font-size:18px;line-height:1.4}
.svc .go{margin-top:auto;display:inline-flex;gap:8px;align-items:center;font-weight:700;color:var(--blue)}
.svc.more{background:var(--blue);color:#fff;border-color:var(--blue);justify-content:center}.svc.more p{color:#e3ebf8}.svc.more .go{color:#fff}.svc.more .ico{color:#fff}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:20px}
/* calendar */
.days{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.day{background:var(--canvas);border-radius:var(--r);padding:24px;display:flex;flex-direction:column;gap:14px;border:1px solid var(--line)}
.day .d{display:flex;align-items:baseline;gap:12px}.day .d b{font:700 54px/1 Poppins,sans-serif;color:var(--blue)}.day .d span{font-weight:700;letter-spacing:.04em}
.day .a{font-size:18px;line-height:1.35}.day .a small{display:block;color:var(--muted);font-size:17px}
.day.ev{background:var(--ink);color:#fff;border-color:var(--ink)}.day.ev .d b{color:#fff}.day.ev .a small{color:#c8d3e4}
.pill{display:inline-block;align-self:flex-start;background:var(--accent);color:#fff;font-weight:700;font-size:14px;letter-spacing:.06em;text-transform:uppercase;padding:3px 12px;border-radius:14px}
/* moments, form, contact */
.mom{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:20px;align-items:stretch}
.mom .ph{aspect-ratio:auto;min-height:340px}
form.f{background:var(--canvas);border-radius:var(--r);padding:34px;border:1px solid var(--line)}
form.f label{display:block;font-weight:700;margin:16px 0 6px}
form.f input,form.f select{width:100%;min-height:56px;font:400 19px 'Hanken Grotesk',sans-serif;border:1.5px solid var(--line);border-radius:14px;padding:0 22px;background:#fff;color:var(--ink)}
form.f .btn{width:100%;margin-top:22px}
.info{list-style:none;padding:0;margin:26px 0 0;display:grid;gap:16px}.info li{display:flex;gap:14px;align-items:flex-start}.info svg{flex:none;color:var(--blue);margin-top:2px}
.map{border-radius:var(--r);min-height:300px;margin-top:26px;background:linear-gradient(135deg,var(--panel),#dbe6f5);display:flex;align-items:center;justify-content:center;text-align:center;padding:26px;color:var(--muted)}
/* motion: reveals and icon draw (gated by .js, content visible without JS) */
.js [data-rise]{opacity:0;transform:translateY(20px)}
.js [data-rise].in{opacity:1;transform:none;transition:opacity .4s var(--e) calc(var(--i,0)*60ms),transform .4s var(--e) calc(var(--i,0)*60ms)}
.js h2[data-rise]{transition-duration:.6s}.js h2[data-rise].in{transition-duration:.6s}
.js .ico.draw *{stroke-dasharray:1;stroke-dashoffset:1}
.js .ico.draw.in *{animation:draw .7s var(--e) forwards;animation-delay:calc(var(--k)*90ms)}
@keyframes draw{to{stroke-dashoffset:0}}
.ico[data-a]{transform-origin:50% 60%}
.ico.in[data-a=bob]{animation:bob 4.5s ease-in-out 1.4s infinite}
.ico.in[data-a=steam]{animation:bob 5.5s ease-in-out 1.4s infinite}
.ico.in[data-a=tilt]{animation:tilt 5.5s ease-in-out 1.4s infinite}
.ico.in[data-a=spin]{animation:spin 24s linear 1.4s infinite}
.ico.in[data-a=drop]{animation:drop 3.5s ease-in-out 1.4s infinite}
.ico.in[data-a=ring]{animation:ring 4s ease-in-out 1.4s infinite}
.ico.in[data-a=beat]{animation:beat 3.2s ease-in-out 1.4s infinite}
.hand{transform-origin:24px 24px;animation:spin 14s linear infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes tilt{0%,100%{transform:rotate(0)}50%{transform:rotate(6deg)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes drop{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes ring{0%,70%,100%{transform:rotate(0)}76%{transform:rotate(-7deg)}82%{transform:rotate(6deg)}88%{transform:rotate(-4deg)}94%{transform:rotate(2deg)}}
@keyframes beat{0%,60%,100%{transform:scale(1)}70%{transform:scale(1.07)}80%{transform:scale(1)}}
@media(max-width:1060px){
.steps,.svcs{grid-template-columns:repeat(2,1fr)}.days{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr;gap:40px}.facts .wrap{grid-template-columns:1fr 1fr}.facts .c:nth-child(3){border-left:0;padding-left:0}.mom{grid-template-columns:1fr 1fr}.mom .ph:first-child{grid-column:1/-1}}
@media(max-width:700px){body{font-size:18px}
section{padding:64px 0}.head{margin-bottom:34px}
.steps,.svcs,.days,.trio,.mom{grid-template-columns:1fr}.facts .wrap{grid-template-columns:1fr}.facts .c{border-left:0;padding:16px 0;border-top:1px solid var(--line)}.facts .c:first-child{border-top:0}
.svc{min-height:0;flex-direction:row;flex-wrap:wrap;align-items:center}.svc .ico{flex:none}.svc h3{flex:1 1 60%}.svc p{flex:1 1 100%}.svc .go{margin-top:0}
.mom .ph{min-height:260px}form.f{padding:24px}}
@media(prefers-reduced-motion:reduce){.js [data-rise]{opacity:1;transform:none}.js .ico.draw *{stroke-dashoffset:0}}

/* inner pages: service, contact (direction D). Shared base is base.css. */
#sen0{position:absolute;top:0;left:0;width:1px;height:40px;pointer-events:none}
main{position:relative}
.phead{padding:calc(var(--ah) + 88px + 64px) 0 72px;background:var(--canvas)}
.phead .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}
.crumbs{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;font-size:16px;color:var(--muted);margin-bottom:26px}
.crumbs a{color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;min-height:32px}.crumbs a:hover{color:var(--blue);text-decoration:underline}
.crumbs [aria-current]{color:var(--ink);font-weight:600}
.phead h1{font-size:clamp(38px,4.8vw,66px);font-weight:700;line-height:1.05}
.phead p.l{font-size:clamp(19px,1.6vw,22px);color:#3f4c60;max-width:34em;margin:22px 0 32px}
.phead .acts,.cta .acts{display:flex;gap:14px;flex-wrap:wrap}
.pimg{aspect-ratio:4/3;box-shadow:0 30px 60px rgba(var(--warm),.14)}
.body{padding-top:88px}
.lead2{font:400 clamp(21px,2vw,26px)/1.5 'Hanken Grotesk',sans-serif;color:#26303f;max-width:44em;margin:0 0 64px}
.blk{display:grid;grid-template-columns:1fr 2fr;gap:56px;padding:48px 0;border-top:1px solid var(--line)}
.blk h2{font-size:clamp(28px,3vw,42px);font-weight:700}
.blk .bc p{max-width:42em;margin:0 0 1.1em;color:#3f4c60}.blk .bc p:last-child{margin-bottom:0}
.ticks{list-style:none;margin:0;padding:0;display:grid;gap:18px;max-width:46em}
.ticks li{display:grid;grid-template-columns:28px 1fr;gap:16px;align-items:start}
.ticks svg{color:var(--blue);margin-top:3px}.ticks b{color:var(--ink)}
.narrow{max-width:900px}
.faq{display:grid;gap:12px}
.faq details{background:var(--canvas);border:1px solid var(--line);border-radius:20px}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:18px;min-height:64px;padding:12px 24px;font:600 20px/1.35 'Hanken Grotesk',sans-serif;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}.faq summary svg{flex:none;color:var(--blue);transition:transform .2s var(--e)}
.faq details[open] summary svg{transform:rotate(180deg)}.faq details[open]{border-color:var(--blue)}
.faq .a{padding:0 24px 22px}.faq .a p{margin:0;color:#3f4c60;max-width:42em}
.svcs.three{grid-template-columns:repeat(3,1fr)}
section.cta{background:linear-gradient(120deg,#1a4387,var(--blue) 60%,#2e68c4);color:#fff;padding:84px 0;margin:0 12px 12px;border-radius:36px}
section.cta .wrap{display:grid;grid-template-columns:1.4fr 1fr;gap:48px;align-items:center}
section.cta h2{color:#fff;font-size:clamp(30px,3.6vw,50px)}section.cta p{color:#e9dfd1;margin:18px 0 0;max-width:36em}
section.cta .acts{justify-content:flex-end}
.split.top{align-items:start}
.formbox{margin-top:32px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:20px;min-height:220px}
.formbox .fl{margin:0;color:var(--muted)}
aside .map.on{padding:0;overflow:hidden;height:340px;min-height:340px;display:block}
.map p{margin:0 0 14px}.map .dir{margin:14px 0 0}.map .dir a{display:inline-flex;align-items:center;min-height:48px}
/* footer */
.frow{display:grid;grid-template-columns:1.3fr 1fr 1fr 1.4fr;gap:40px}
.fbrand p{max-width:18em;margin:0}
.fh{font:700 14px 'Hanken Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--peach);margin:0 0 12px}
footer ul{list-style:none;margin:0;padding:0}footer li a,footer li{display:flex;align-items:center;min-height:48px;text-decoration:none}footer li a:hover{text-decoration:underline}
footer .credit{margin:40px 0 0;padding-top:24px;border-top:1px solid rgba(255,255,255,.16);font-size:16px}
@media(max-width:1060px){
.phead .wrap,.blk,section.cta .wrap{grid-template-columns:1fr;gap:36px}.blk{gap:18px;padding:36px 0}
.svcs.three{grid-template-columns:1fr 1fr}.frow{grid-template-columns:1fr 1fr}section.cta .acts{justify-content:flex-start}
.phead{padding-top:calc(var(--ah) + 76px + 28px)}}
@media(max-width:700px){
.phead{padding-bottom:48px}.phead .acts .btn,section.cta .acts .btn{width:100%}.body{padding-top:56px}.lead2{margin-bottom:36px}
.svcs.three{grid-template-columns:1fr}.frow{grid-template-columns:1fr;gap:28px}section.cta{padding:60px 0}
.faq summary{font-size:19px;padding:12px 18px}.faq .a{padding:0 18px 20px}.formbox{padding:12px}}
/* touch targets and spacing fixes */
.ann a{min-height:var(--ah)}
.crumbs a{min-height:48px}
footer{padding-bottom:54px}
section.cta h2+p{margin-top:22px}
@media(max-width:700px){footer{padding-bottom:110px}}
h2+.lead2{margin-top:22px}
.hdr .wrap>a:first-child{display:inline-flex;align-items:center;min-height:48px}

/* mega icons: wipe in left to right each time the menu opens (transition, not animation; drawn at rest) */
.js .mega .ico{clip-path:inset(0 100% 0 0)}
.js .mega.open .ico{clip-path:inset(0 -2% 0 0);transition:clip-path .5s var(--e) calc(80ms + var(--i)*40ms)}
@media(prefers-reduced-motion:reduce){.js .mega .ico{clip-path:none}}

/* The site's own trial-day form (templates/_form.html.j2), direction D: cream card, 56 px pill fields, day chips as
   pills, the send button is the red primary. Errors are ink with an icon, never red text (red is the accent for
   actions only). 18 px labels, 17 px hints. Motion: MOTION.md "Form" (error drops in 200 ms, the form leaves in 280 ms,
   the thank-you rises 400 ms with 110 ms overlap, its check draws in 260 ms). Nothing moves under reduced motion. */
.nf-box{position:relative;container-type:inline-size;scroll-margin-top:120px;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:0 24px 50px rgba(var(--warm),.08);text-align:left}
.nf-box p{margin:0}
.nf{display:grid;gap:22px;margin:0;padding:clamp(20px,5cqi,34px)}
.nf[hidden]{display:none}
.nf__row{display:grid;gap:22px}
@container (min-width:560px){.nf__row{grid-template-columns:1fr 1fr}}
.nf__f{min-width:0;margin:0;padding:0;border:0}
.nf label,.nf legend{display:block;padding:0;font:700 18px/1.3 'Hanken Grotesk',sans-serif;color:var(--ink)}
.nf__opt{font-weight:400;color:var(--muted)}
.nf-box .nf__hint{margin:8px 0 0;font:400 17px/1.45 'Hanken Grotesk',sans-serif;color:var(--muted)}
.nf legend+.nf__hint{margin-top:4px}
.nf input[type=text],.nf input[type=tel],.nf input[type=email],.nf textarea{display:block;width:100%;height:56px;margin:8px 0 0;padding:0 22px;border:1.5px solid var(--line);border-radius:14px;background:var(--canvas);font:400 19px/1.3 'Hanken Grotesk',sans-serif;color:var(--ink);transition:border-color .18s var(--e),box-shadow .18s var(--e),background-color .18s var(--e)}
.nf textarea{height:auto;min-height:120px;padding:16px 22px;border-radius:24px;line-height:1.5;resize:vertical}
.nf ::placeholder{color:#6b7686;opacity:1}
@media(hover:hover){.nf input:hover,.nf textarea:hover{border-color:#b5aba0}}
.nf input:focus,.nf textarea:focus{outline:0;border-color:var(--blue);background:#fff;box-shadow:0 0 0 4px rgba(33,82,163,.18)}
.nf .is-err input{border:2px solid var(--ink);background:#fff}
.nf-box .nf__err{display:flex;align-items:flex-start;gap:9px;margin:10px 0 0;font:600 17px/1.4 'Hanken Grotesk',sans-serif;color:var(--ink)}
.nf__err:before{content:"!";display:grid;place-items:center;flex:none;width:22px;height:22px;margin-top:1px;border-radius:50%;background:var(--ink);font:700 14px/1 'Hanken Grotesk',sans-serif;color:#fff}
.nf-box .nf__err[hidden]{display:none}
.nf__chiprow{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
@container (max-width:380px){.nf__chiprow{grid-template-columns:1fr 1fr}}
.nf__chip{position:relative;display:flex;margin:0;padding:0!important}
.nf__chip input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.nf__chip span{display:flex;flex:1;align-items:center;gap:10px;min-height:52px;padding:0 14px 0 12px;border-radius:14px;background:var(--canvas);box-shadow:inset 0 0 0 1.5px var(--line);font:600 18px/1.2 'Hanken Grotesk',sans-serif;color:var(--ink);transition:background-color .18s var(--e),color .18s var(--e),box-shadow .18s var(--e),transform .18s var(--e)}
.nf__chip i{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;box-shadow:inset 0 0 0 1.5px #b5aba0;transition:background-color .18s var(--e),box-shadow .18s var(--e)}
.nf__chip svg,.nf-done__mark svg{width:15px;height:15px;fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .2s var(--e) 40ms}
@media(hover:hover){.nf__chip:hover span{box-shadow:inset 0 0 0 1.5px var(--blue)}}
.nf__chip:active span{transform:scale(.97);transition-duration:.12s}
.nf__chip input:checked+span{background:var(--blue);color:#fff;box-shadow:inset 0 0 0 1.5px var(--blue)}
.nf__chip input:checked+span i{background:#fff;box-shadow:none}
.nf__chip input:checked+span svg{stroke:var(--blue);stroke-dashoffset:0}
.nf__chip input:focus-visible+span{box-shadow:inset 0 0 0 1.5px var(--blue),0 0 0 3px #fff,0 0 0 6px var(--blue)}
.nf__send{display:flex}
button.nf__go{display:inline-flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;margin:0;padding:0 8px 0 30px;border:0;border-radius:14px;background:var(--accent);color:#fff;font:700 19px/1 'Hanken Grotesk',sans-serif;white-space:nowrap;cursor:pointer;box-shadow:0 12px 30px rgba(207,42,16,.24);transition:transform .18s var(--e),background-color .18s var(--e)}
button.nf__go:hover{background:var(--accent-d)}
button.nf__go:focus-visible{outline:0;box-shadow:0 0 0 3px #fff,0 0 0 6px var(--blue)}
button.nf__go:active{transform:scale(.97);transition-duration:.12s}
.nf__go i{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#fff;color:var(--accent);transition:transform .25s var(--e)}
.nf__go svg{transition:opacity .15s var(--e),transform .15s var(--e)}
@media(hover:hover){button.nf__go:hover i{transform:translateX(3px)}}
.nf__spin{position:absolute;inset:12px;border-radius:50%;border:2.5px solid rgba(207,42,16,.25);border-top-color:var(--accent);opacity:0;transition:opacity .15s var(--e)}
.nf.is-busy .nf__go{cursor:progress}.nf.is-busy .nf__go svg{opacity:0;transform:scale(.6)}
.nf.is-busy .nf__spin{opacity:1;animation:nf-spin 1s linear infinite}
@container (max-width:460px){.nf__send .nf__go{width:100%;white-space:normal;text-align:left;line-height:1.2}}
.nf__status:empty{display:none}
.nf-box .nf__status{padding:14px 18px;border-radius:18px;background:var(--panel);box-shadow:inset 4px 0 0 var(--ink);font:600 17px/1.45 'Hanken Grotesk',sans-serif;color:var(--ink)}
.nf-box .nf__fine{margin-top:-6px;font:400 16px/1.55 'Hanken Grotesk',sans-serif;color:var(--muted)}
.nf__nojs{font:600 17px/1.45 'Hanken Grotesk',sans-serif}
/* without script the endpoint (JSON only) cannot be reached: show only the call-us line */
html:not(.js) .nf>*:not(noscript){display:none}
.nf__hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
/* thank-you state */
.nf-done{display:grid;justify-items:start;gap:14px;padding:clamp(24px,6cqi,44px)}
.nf-done[hidden]{display:none}
.nf-done__mark{position:relative;display:grid;place-items:center;width:68px;height:68px;margin-bottom:6px;border-radius:50%;background:var(--blue)}
.nf-done__mark svg{position:relative;width:30px;height:30px;stroke:#fff;stroke-width:2.6;transition:none}
.nf-done__glow{position:absolute;inset:-16px;border-radius:50%;background:radial-gradient(circle,rgba(33,82,163,.28),rgba(33,82,163,0) 68%);opacity:.6}
.nf-done__h{margin:0;font:700 clamp(30px,6cqi,40px)/1.1 Poppins,sans-serif;color:var(--ink);outline:0}
.nf-box .nf-done__p{max-width:40ch;color:#3f4c60}
.nf-done__call{display:flex;align-items:center;gap:14px;margin-top:8px;min-height:56px;color:var(--ink);text-decoration:none}
.nf-done__call i{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--blue);color:#fff}
.nf-done__call span{font-size:17px;color:var(--muted)}.nf-done__call b{display:block;font-size:20px;color:var(--ink)}
/* motion (MOTION.md "Form", Premium: no overshoot) */
.nf__err:not([hidden]){animation:nf-err .2s var(--e) both}.nf__err:not([hidden]):before{animation:nf-pop .15s var(--e) 50ms both}
.nf__status:not(:empty){animation:nf-err .25s var(--e) both}
.nf-box.is-leaving .nf{animation:nf-out .28s var(--ex) forwards;pointer-events:none}
.nf-box.is-swap .nf{position:absolute;top:0;left:0;right:0}
.nf-done.is-in>*{animation:nf-rise .4s var(--e) both}
.nf-done.is-in>.nf-done__h{animation-delay:60ms}.nf-done.is-in>.nf-done__p{animation-delay:120ms}.nf-done.is-in>.nf-done__call{animation-delay:180ms}
.nf-done.is-in .nf-done__mark svg{animation:nf-draw .26s var(--e) .45s both}
.nf-done.is-in .nf-done__glow{animation:nf-breathe 4.5s ease-in-out .8s infinite}
@keyframes nf-spin{to{transform:rotate(1turn)}}
@keyframes nf-err{from{opacity:0;transform:translateY(-6px)}}
@keyframes nf-pop{from{transform:scale(.6)}}
@keyframes nf-out{to{opacity:0;transform:translateY(-12px)}}
@keyframes nf-rise{0%{opacity:0;transform:translate(5px,20px)}100%{opacity:1;transform:none}}
@keyframes nf-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes nf-breathe{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:.85;transform:scale(1.05)}}
@media(prefers-reduced-motion:reduce){.nf-box *,.nf-box *:before{animation:none!important;transition:none!important}.nf-done__mark svg,.nf__chip input:checked+span svg{stroke-dashoffset:0}}
/* the phone dock steps aside while a form is on screen */
@media(max-width:700px){.dock{transition:transform .25s var(--e)}html.nf-on .dock{transform:translateY(120%)}}

/* TSC native site, direction D: the home page and the templates added 2026-10-25 (section pages, cities, calendar,
   blog, article, legal, sitemap, 404), plus the motion layer written to generator/MOTION.md. Rows of cards share one
   height (grid stretch + flex columns with the footer pinned), split rows end level, no empty bands. */
:root{--d:.45s;--st:80ms}
@media(max-width:700px){:root{--d:.36s;--st:56ms}}  /* MOTION.md: phones x0.8, stagger -30% */

/* ---------- what + stats */
#sen{position:absolute;top:0;left:0;width:1px;height:160px;pointer-events:none}
.what-ph{aspect-ratio:3/2}.what-ph img{object-position:50% 85%}
.what .split{align-items:center}
.stats{list-style:none;margin:64px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.stats li{display:flex;flex-direction:column;gap:8px;padding:26px 24px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line)}
.stats b{font:700 clamp(44px,5vw,64px)/1 Poppins,sans-serif;color:var(--blue)}
.stats li>span{font-size:18px;color:var(--muted);line-height:1.35}
@media(max-width:1060px){.stats{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.stats{margin-top:40px;gap:12px}.stats li{padding:20px 18px}}

/* ---------- steps: cards stack on phones as you scroll (MOTION.md "Reasons") */
.steps{align-items:stretch}.step{display:flex;flex-direction:column}
@media(max-width:700px){
 .steps.stack{gap:14px}
 .steps.stack .step{position:sticky;top:calc(92px + var(--i,0)*14px);box-shadow:0 -10px 30px rgba(var(--warm),.08);border:1px solid var(--line)}
}

/* ---------- services + trio */
.svcs{align-items:stretch}
.trio figure{margin:0}.trio .cap{margin-top:12px}

/* ---------- dark band (CTA / coverage) with the warm light drifting behind it */
section.cta{position:relative;overflow:hidden;isolation:isolate}
section.cta .glow{position:absolute;z-index:-1;inset:-40% -10%;background:radial-gradient(40% 55% at 30% 50%,rgba(207,42,16,.32),transparent 70%),radial-gradient(35% 50% at 75% 40%,rgba(33,82,163,.38),transparent 70%);animation:glow 16s ease-in-out infinite alternate}
@keyframes glow{from{transform:translate3d(-4%,0,0) scale(1)}to{transform:translate3d(4%,-3%,0) scale(1.08)}}
.eyebrow.lt{color:var(--peach)}
section.cta.band p{max-width:40em}

/* ---------- calendar week (home) */
.days{align-items:stretch}.day .a{line-height:1.3}
.more-row{margin:34px 0 0}

/* ---------- moments */
.mom{display:grid;grid-template-columns:1.25fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:20px;min-height:560px}
.mom .ph{min-height:0;aspect-ratio:auto}
.mom .big{grid-row:1/3}
.momlink{display:flex;flex-direction:column;justify-content:center;gap:14px;padding:28px;border-radius:var(--r);background:var(--blue);color:#fff;text-decoration:none;font-size:20px}
.momlink b{font:700 26px/1.2 Poppins,sans-serif}.momlink .ico{color:#fff}
.momlink:hover{background:#1b4589}
@media(max-width:1060px){.mom{grid-template-columns:1fr 1fr;grid-template-rows:auto;min-height:0}.mom .big{grid-row:auto;grid-column:1/-1;aspect-ratio:4/3}.mom .ph{aspect-ratio:1}.momlink{aspect-ratio:1}}
@media(max-width:700px){.mom{grid-template-columns:1fr 1fr;gap:12px}.momlink{padding:18px;font-size:17px}.momlink b{font-size:20px}}

/* ---------- reviews */
.revs{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:stretch}
.rev{margin:0;display:flex;flex-direction:column;gap:14px;padding:28px;border-radius:var(--r);background:var(--canvas);border:1px solid var(--line)}
.stars{display:flex;gap:2px;color:#e0a100}
.rev blockquote{margin:0;font:400 20px/1.5 'Hanken Grotesk',sans-serif;color:#26303f;flex:1}
.rev figcaption{font-weight:700;color:var(--muted);font-size:17px}
@media(max-width:1060px){.revs{grid-template-columns:1fr 1fr}}@media(max-width:700px){.revs{grid-template-columns:1fr}}

/* ---------- instagram strip */
.ighead .btn{white-space:normal;text-align:center}
.ighead{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:40px}.ighead .head{margin:0}
.iggrid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.iggrid a{display:block;border-radius:18px;overflow:hidden}.iggrid .ph{aspect-ratio:1;border-radius:18px}
.iggrid a:hover img{transform:scale(1.04)}.iggrid img{transition:transform .4s var(--e)}
@media(max-width:1060px){.iggrid{grid-template-columns:repeat(3,1fr)}}

/* ---------- form + visit columns end level: the map takes what is left of the column */
.split.eq{align-items:stretch}
.split.eq>*{display:flex;flex-direction:column;min-width:0}
.split.eq .visit .map{flex:1;min-height:300px}
.lead2.s{margin:18px 0 30px;font-size:21px}
.fwrap{margin-top:8px}
.map{flex-direction:column;gap:6px;border:1px solid var(--line)}.map>div{display:grid;justify-items:center;gap:10px}.map .ico{color:var(--blue)}
.map.on{padding:0;overflow:hidden;display:block}.map.on iframe{display:block;width:100%;height:100%;min-height:340px;border:0}
aside .map.on{height:auto}

/* ---------- section pages */
.intro{padding:80px 0 24px}.intro .lead2{margin:0;max-width:52em}
.rowx .body-p{color:#3f4c60;margin:20px 0 0;max-width:40em}
.rowx.flip>:first-child{order:2}
.rowx{align-items:stretch}.rowx .ph{aspect-ratio:auto;height:100%;min-height:380px}
@media(max-width:1060px){.rowx .ph{height:auto;min-height:0;aspect-ratio:4/3}}
.phead.noimg .wrap{grid-template-columns:1fr}.phead.noimg .pt{max-width:900px}
.month-ev .head{max-width:820px}
.evgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-items:stretch}
.evgrid.n3{grid-template-columns:repeat(3,1fr)}
.evgrid figure{margin:0;display:flex;flex-direction:column;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.alt .evgrid figure{background:var(--canvas)}
.evgrid .ph{aspect-ratio:4/5;border-radius:0}
.evgrid figcaption{display:grid;gap:6px;padding:18px 20px 22px;flex:1}.evgrid figcaption b{font-size:19px;line-height:1.3}.evgrid figcaption span{font-size:17px;color:var(--muted);line-height:1.45}
.center{text-align:center}.center .head{margin-left:auto;margin-right:auto}
.repeat{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:20px;text-align:left}
.repeat li{display:flex;flex-direction:column;gap:10px;padding:26px;border-radius:var(--r);background:var(--canvas);border:1px solid var(--line)}
.repeat .ico{color:var(--blue)}.repeat b{font-size:20px}.repeat span{color:var(--muted);font-size:18px;line-height:1.45}
@media(max-width:1060px){.evgrid,.evgrid.n3,.repeat{grid-template-columns:1fr 1fr}.rowx.flip>:first-child{order:0}}
@media(max-width:700px){.evgrid,.evgrid.n3,.repeat{grid-template-columns:1fr}.intro{padding:52px 0 8px}.evgrid .ph{aspect-ratio:4/3}}

/* ---------- prose + sidebar (cities, articles) */
.withside{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:64px;align-items:start}
.side{position:sticky;top:112px;display:grid;gap:18px}
.side .card,.smap .card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:24px}
.side .card .nf-box{border:0;box-shadow:none;border-radius:0}.side .card .nf{padding:12px 0 0}
.ch{font:700 14px 'Hanken Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 12px}
.card.call p{margin:10px 0 0;color:#3f4c60}.card.call .btn{width:100%;margin-top:16px}
.card .big{display:flex;align-items:center;gap:12px;min-height:56px;font:700 30px Poppins,sans-serif;color:var(--blue);text-decoration:none;margin-top:6px}
.links{list-style:none;margin:0;padding:0}.links li{border-top:1px solid var(--line)}.links li:first-child{border-top:0}
.links a{display:flex;align-items:center;min-height:52px;color:var(--ink);text-decoration:none;font-weight:600}.links a:hover{color:var(--blue);text-decoration:underline}
.links small{color:var(--muted);font-weight:700;margin-left:6px}
.prose{min-width:0;font-size:19px}
.prose h2{font-size:clamp(28px,3vw,40px);font-weight:700;margin:56px 0 18px;scroll-margin-top:120px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:24px;margin:34px 0 10px}.prose h4{font:700 19px 'Hanken Grotesk',sans-serif;margin:26px 0 8px}
.prose p{margin:0 0 1.1em;color:#3f4c60;max-width:42em}
.prose ul,.prose ol{margin:0 0 1.3em;padding-left:1.3em;max-width:42em}.prose li{margin:.45em 0;color:#3f4c60}.prose li::marker{color:var(--blue)}
.prose a{color:var(--blue);text-underline-offset:3px}
.prose figure{margin:32px 0}.prose img{border-radius:var(--r)}.prose figcaption{font-size:16px;color:var(--muted);margin-top:10px}
.prose blockquote{margin:28px 0;padding:6px 0 6px 24px;border-left:3px solid var(--accent);font:700 24px/1.45 Poppins,sans-serif;color:var(--ink)}
.prose table{width:100%;border-collapse:collapse;margin:24px 0;font-size:17px}.prose th,.prose td{border-bottom:1px solid var(--line);padding:12px 10px;text-align:left;vertical-align:top}.prose th{background:var(--panel)}
.prose .tbl{overflow-x:auto}
.toc ol,.toc-m ol{margin:0;padding-left:1.2em;display:grid;gap:4px}.toc a,.toc-m a{display:inline-flex;min-height:48px;align-items:center;color:var(--ink);text-decoration:none;font-size:17px;line-height:1.3}.toc a:hover{color:var(--blue)}
.toc{max-height:calc(100vh - 360px);overflow:auto}
.toc-m{display:none;margin:0 0 30px;border:1px solid var(--line);border-radius:20px;padding:6px 20px;background:#fff}.toc-m summary{min-height:52px;display:flex;align-items:center;font-weight:700;cursor:pointer}
.legal h2{font-size:clamp(26px,2.6vw,34px)}
@media(max-width:1060px){.withside{grid-template-columns:1fr;gap:40px}.side{position:static}.art-body .toc{display:none}.toc-m{display:block}}

/* ---------- article head */
.phead.art{padding-bottom:40px}.phead.art h1{font-size:clamp(34px,4.2vw,58px);max-width:20em}
.phead.art a.eyebrow{text-decoration:none;min-height:32px}
.meta{display:flex;flex-wrap:wrap;gap:6px 22px;margin:22px 0 0;color:var(--muted);font-size:17px}
.ahero{border-radius:var(--r);overflow:hidden;aspect-ratio:16/8;background:var(--panel)}.ahero img{width:100%;height:100%;object-fit:cover}
.art-body{padding-top:64px}
@media(max-width:700px){.ahero{aspect-ratio:4/3;border-radius:18px}.art-body{padding-top:40px}}

/* ---------- blog cards */
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:40px}
.chips a{display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border-radius:14px;background:var(--canvas);box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink);text-decoration:none;font-weight:600;font-size:17px}
.chips a:hover{box-shadow:inset 0 0 0 1.5px var(--blue)}.chips a[aria-current]{background:var(--blue);color:#fff;box-shadow:none}
.blog{padding-top:64px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:stretch}
.post{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;color:var(--ink);text-decoration:none;transition:transform .25s var(--e),box-shadow .25s var(--e),border-color .25s var(--e)}
.post:hover{transform:translateY(-4px);box-shadow:0 18px 36px rgba(var(--warm),.1);border-color:var(--blue)}
.post .ph{aspect-ratio:16/9;border-radius:0}
.pb{display:flex;flex-direction:column;gap:10px;padding:22px 24px 24px;flex:1}
.pc{font-weight:700;font-size:14px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.post h3,.post .h3{font:700 22px/1.25 Poppins,sans-serif;letter-spacing:-.012em}.post p{margin:0;color:var(--muted);font-size:17px;line-height:1.5}
.pf{margin-top:auto;padding-top:12px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:16px;color:var(--muted)}
.pf .go{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--blue)}
.pager{display:flex;gap:10px;margin-top:40px}.pager a{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink);text-decoration:none;font-weight:700}.pager a[aria-current]{background:var(--blue);color:#fff}
@media(max-width:1060px){.cards{grid-template-columns:1fr 1fr}}@media(max-width:700px){.cards{grid-template-columns:1fr}.blog{padding-top:40px}}

/* ---------- calendar (native) */
.cal{padding-top:64px}
.mtabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:34px}
.mtabs button{min-height:52px;padding:0 22px;border-radius:14px;border:0;background:var(--canvas);box-shadow:inset 0 0 0 1.5px var(--line);font:600 18px 'Hanken Grotesk',sans-serif;color:var(--ink);cursor:pointer}
.mtabs button[aria-selected=true]{background:var(--blue);color:#fff;box-shadow:none}
.month+.month{margin-top:72px}
.js .mtabs:not([hidden])~.month[data-current=false]{display:none}
.js .mtabs:not([hidden])~.month+.month{margin-top:0}
.mh{font-size:clamp(32px,3.6vw,48px);font-weight:700;margin-bottom:24px}.mh em{color:var(--blue)}
.grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.wd{font-weight:700;font-size:15px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0 6px 4px}
.cell{display:flex;flex-direction:column;gap:8px;min-height:150px;padding:14px;border-radius:18px;background:#fff;border:1px solid var(--line)}
.cell.out{background:transparent;border-style:dashed;border-color:rgba(209,201,191,.6)}
.cell .n{display:flex;align-items:baseline;gap:8px}.cell .n b{font:700 30px/1 Poppins,sans-serif;color:var(--blue)}.cell .n i{display:none;font-style:normal;font-weight:700;font-size:15px;color:var(--muted)}
.cell .a{font-size:16px;line-height:1.3;font-weight:600}.cell .a small{display:block;font-weight:400;color:var(--muted);font-size:15px}
.cell.ev{background:var(--blue);color:#fff;border-color:var(--blue)}.cell.ev .n b{color:#fff}.cell.ev .a small{color:#c8d3e4}
.cell .fly{margin-top:auto;display:inline-flex;align-items:center;min-height:48px;color:var(--peach);font-weight:700;font-size:15px}
.cell.today{box-shadow:0 0 0 3px var(--accent)}
@media(max-width:900px){
 .grid{grid-template-columns:1fr;gap:10px}.wd,.cell.out,.cell:not(.has){display:none}
 .cell{min-height:0;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:6px 16px}.cell .n{flex:0 0 100%}.cell .n i{display:inline}.cell .a{flex:1 1 40%}
}

/* ---------- sitemap page, 404, cookie notice */
.smap{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start}
@media(max-width:1060px){.smap{grid-template-columns:1fr 1fr}}@media(max-width:700px){.smap{grid-template-columns:1fr}}
.nf404{min-height:70vh;display:flex;align-items:center}

/* ======================================================================== motion (generator/MOTION.md)
   One entrance everywhere: rise 20 px with a 5 px sideways settle on an arc, 450 ms, (.4,0,.2,1), 80 ms stagger. */
.js [data-rise]{opacity:0;transform:translate(5px,20px)}
.js [data-rise].in{opacity:1;transform:none;transition:none;animation:arc var(--d) var(--e) calc(var(--i,0)*var(--st)) both}
@keyframes arc{0%{opacity:0;transform:translate(5px,20px)}60%{opacity:1;transform:translate(3px,4px)}100%{opacity:1;transform:none}}
/* h2 lines: motion.js wraps the words of a heading that is still below the fold and numbers its rendered lines */
.js h2.sp[data-rise]{opacity:1;transform:none;animation:none}
.js h2.sp .w{display:inline-block;opacity:0;transform:translateY(.45em)}
.js h2.sp.in .w{animation:wl .6s var(--e) calc(var(--l,0)*var(--st)) both}
@keyframes wl{to{opacity:1;transform:none}}
/* icons: stroke by stroke, 420 ms each, 45 ms apart, 100 ms after their card lands (follow-through) */
.js .ico.draw.in *{animation:draw .42s var(--e) both;animation-delay:calc(var(--i,0)*var(--st) + 100ms + var(--k)*45ms)}
/* counters are filled by motion.js; buttons press */
.btn:active{transform:scale(.97);transition-duration:.12s}
/* scroll-linked layers: CSS scroll timelines only (no scroll listeners); browsers without them get the static page */
@supports (animation-timeline:view()){
 @media(prefers-reduced-motion:no-preference){
  .settle img{animation:settle linear both;animation-timeline:view();animation-range:entry 0% cover 50%}
  @keyframes settle{from{transform:scale(1.06)}to{transform:scale(1)}}
  .settle img{animation-timing-function:var(--e)}
  @media(min-width:1061px){
   .hero .plane-bg{animation:pbg linear both;animation-timeline:scroll(root);animation-range:0 100vh}
   .js .hero .glass.plane-mid{animation:rise .6s var(--e) .42s both,pmid linear both;animation-timeline:auto,scroll(root);animation-range:normal,0 100vh}
   @keyframes pbg{to{transform:translateY(80px)}}
   @keyframes pmid{to{transform:translateY(40px)}}
  }
  .hero .dim{animation:dim linear both;animation-timeline:scroll(root);animation-range:0 60vh}
  @keyframes dim{to{opacity:.35}}
 }
}
@media(prefers-reduced-motion:reduce){
 .js [data-rise],.js [data-rise].in,.js h2.sp .w,.js .hero .glass{opacity:1!important;transform:none!important;animation:none!important}
 .steps.stack .step{position:static}
 section.cta .glow{animation:none}
}

.k-location .side{position:static}
.cell.ev .n i{color:#e9dfd1}
