/* Domine: self-hosted from @fontsource-variable/domine@5.3.0 (OFL-1.1). Generated by ~/.kwm-arsenal/scripts/fonts/fetch-fonts.mjs. */
/* domine-latin-wght-normal */
@font-face {
  font-family: 'Domine Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 400 700;
  src: url(/assets/fonts/domine-latin-wght-normal.d0531fda.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* Instrument Sans: self-hosted from @fontsource-variable/instrument-sans@5.3.0 (OFL-1.1). Generated by ~/.kwm-arsenal/scripts/fonts/fetch-fonts.mjs. */
/* instrument-sans-latin-wght-normal */
@font-face {
  font-family: 'Instrument Sans Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 400 700;
  src: url(/assets/fonts/instrument-sans-latin-wght-normal.2ee17598.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* instrument-sans-latin-wght-italic */
@font-face {
  font-family: 'Instrument Sans Variable';
  font-style: italic;
  font-display: swap;
  font-weight: 400 700;
  src: url(/assets/fonts/instrument-sans-latin-wght-italic.77210cdd.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* JetBrains Mono: self-hosted from @fontsource-variable/jetbrains-mono@5.3.0 (OFL-1.1). Generated by ~/.kwm-arsenal/scripts/fonts/fetch-fonts.mjs. */
/* jetbrains-mono-latin-wght-normal */
@font-face {
  font-family: 'JetBrains Mono Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 800;
  src: url(/assets/fonts/jetbrains-mono-latin-wght-normal.18be4527.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* metric-matched local fallbacks, computed by _build/tools/font_fallbacks.py (capsize method: letter-frequency-weighted
   average advance width, then the web font's hhea ascent, descent and line gap over that size-adjust) from the shipped
   woff2 files against macOS Georgia, Arial and Menlo. A late web font never moves the fold or the splash's landing.
   Round 2 (L2 S5): Chrome matches local() by full or PostScript name, so Menlo is named both ways before the family name. */
@font-face{font-family:"Domine Variable Fallback";src:local("Georgia");size-adjust:109.77%;ascent-override:81.99%;descent-override:21.86%;line-gap-override:0.00%}
@font-face{font-family:"Instrument Sans Variable Fallback";src:local("Arial");size-adjust:103.01%;ascent-override:94.17%;descent-override:24.27%;line-gap-override:0.00%}
@font-face{font-family:"JetBrains Mono Variable Fallback";src:local("Menlo Regular"),local("Menlo-Regular"),local("Menlo");size-adjust:99.66%;ascent-override:102.35%;descent-override:30.10%;line-gap-override:0.00%}
@font-face{font-family:"JetBrains Mono Consolas Fallback";src:local("Consolas");size-adjust:109.13%;ascent-override:93.47%;descent-override:27.49%;line-gap-override:0.00%}
@font-face{font-family:"JetBrains Mono Android Fallback";src:local("Droid Sans Mono"),local("DroidSansMono");size-adjust:99.98%;ascent-override:102.02%;descent-override:30.00%;line-gap-override:0.00%}
/* kit.css: the shared sheet of www.bracesonline.com. Tokens, base type, the chrome (header in its two states, nav panels, drawer,
   pinned bar, footer), every shared component (page head, printed card, chooser, office card, phone lines, dated lines, map band,
   proof band, folios, FAQ, forms, contents wire, prose) and the Reduce Motion and print blocks. Base styles are the finished frame;
   motion runs only under html.run and .run and resolves to the completed state under Reduce Motion and in print. One ink band: the
   footer. Tints instead of fills: pale at full strength or sky at half strength over paper. */
:root{
  --harbor:#1F5F8F;--harbor-text:#1B4A66;--ink:#0F252A;--muted:#45565B;
  --paper:#FBF6EE;
  --pale:#C8E1EB;--sky:#CAE1EF;--mist:#EDEDEE;--rule:rgba(15,37,42,.18);
  --cta:var(--harbor);--cta-swap:#8C4C5C;
  --card:#FFFCF7;
  --field-line:#7F8F96;
  --ok:#1E7B4E;--warn:#9A6B00;--err:#B3261E;
  --sky-50:color-mix(in srgb,var(--sky) 50%,var(--paper));
  --harbor-wash:rgba(31,95,143,.07);
  --bracket-h:linear-gradient(180deg,var(--card) 0 40%,var(--harbor) 40% 60%,var(--card) 60%);
  --bracket-h-ring:inset 0 0 0 1.25px var(--harbor);
  --f-disp:"Domine Variable","Domine Variable Fallback",Georgia,"Times New Roman",serif;
  --f-body:"Instrument Sans Variable","Instrument Sans Variable Fallback",system-ui,"Helvetica Neue",Arial,sans-serif;
  --f-mono:"JetBrains Mono Variable","JetBrains Mono Variable Fallback","JetBrains Mono Consolas Fallback","JetBrains Mono Android Fallback",ui-monospace,Menlo,Consolas,monospace;
  --radius:4px;
  --shadow-1:0 1px 2px rgba(15,37,42,.05),0 12px 30px -18px rgba(15,37,42,.26);
  --shadow-2:0 24px 64px -24px rgba(15,37,42,.38);
  --ease:cubic-bezier(.2,.7,.2,1);--head-h:72px;--head-stuck:56px;--trk:.16em;--wrap:1160px;--gutter:clamp(16px,4vw,40px);
  --sec:clamp(64px,5vw + 44px,120px);
  --dip:clamp(14px,3.4vw,44px);
  --pad:clamp(22px,1.4vw + 16px,28px);
  --cgap:24px;--igap:20px;--bgap:24px;
  --land-h:clamp(170px,17vw,250px);--land-lift:40px;
  --sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);
}
/* the steel lives only in the entrance plate and the hero wire */
#splash,.hero-land{--steel-a:#E4EAED;--steel-b:#A7B4BA;--steel-c:#5F6D74;--slot:#4F5C63;
  --bracket:linear-gradient(180deg,var(--steel-a) 0 36%,var(--slot) 36% 58%,var(--steel-b) 58% 78%,var(--steel-c) 78%);
  --bracket-ring:inset 0 0 0 1.5px rgba(251,246,238,.92),0 1px 2px rgba(15,37,42,.28)}
/* the one ink band keeps its own text tokens */
.site-foot{--od-text:var(--paper);--od-soft:#D7E1E4;--od-link:var(--pale);--od-kicker:var(--sky);--od-muted:#B8C7CC;--od-line:rgba(251,246,238,.2)}
/* the panel swaps (?swap=cta, band-harbor, one-hill): three classes on html, never separate pages */
.swap-cta{--cta:var(--cta-swap)}

/* base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
html,body{overflow-x:hidden;overflow-x:clip}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17.5px/1.55 var(--f-body)}
img{max-width:100%;height:auto;display:block}
svg{display:inline-block}
[hidden]{display:none!important}
[id]{scroll-margin-top:16px}
#offices{scroll-margin-top:64px}
a{color:var(--harbor-text);text-decoration-color:var(--harbor);text-underline-offset:.14em;text-decoration-thickness:1px}
button{font:inherit;color:inherit}
strong,b{font-weight:600}
h1,h2,h3,h4{font-family:var(--f-disp);margin:0;letter-spacing:.01em;text-wrap:balance}
h1{font-size:clamp(2.5rem,1.6rem + 3.3vw,4.3rem);line-height:1.04;font-weight:500}
h1.h1-long{font-size:clamp(1.75rem,1.3rem + 2.3vw,3.1rem);line-height:1.08}
h1.h1-xlong{font-size:clamp(1.3rem,.95rem + 1.75vw,2.35rem);line-height:1.12}
/* design-spec C-4 (EDL-19, L2-27): at most three lines from 320 px; a page head with a column beside its copy holds the h1 to
   9.5 percent of the copy column, so long words ("Orthodontist Near Southborough, MA") never set four lines */
@media (min-width:980px){.ph-copy{container-type:inline-size}.ph-copy h1:not(.h1-long,.h1-xlong){font-size:min(clamp(2.5rem,1.6rem + 3.3vw,4.3rem),9.5cqi)}}
@media (max-width:359px){h1.h1-long{font-size:1.55rem}h1.h1-xlong{font-size:1.2rem}}
h2{font-size:clamp(2rem,1.2rem + 2.6vw,3.3rem);line-height:1.1;font-weight:500}
h3{font-size:clamp(1.25rem,1.1rem + .6vw,1.5rem);line-height:1.25;font-weight:400}
h4{font-size:1.25rem;line-height:1.3;font-weight:400}
h2 .num,h3 .num{font-size:.92em;font-weight:500}
p{margin:0 0 1em;text-wrap:pretty}
.lede,.deck,main p,.faq-a p{max-width:31em}
ul,ol{margin:0;padding:0;list-style:none}
q{quotes:"\201C" "\201D"}
address{font-style:normal}
.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap}
.nb{white-space:nowrap}
.kicker{font:500 12px/1.4 var(--f-mono);font-variant-numeric:tabular-nums;letter-spacing:var(--trk);text-transform:uppercase;color:var(--harbor-text);margin:0 0 16px}
.kicker:empty,.lede:empty,.deck:empty{display:none}
.lede{font-size:clamp(1.1rem,1rem + .5vw,1.3rem);line-height:1.5;color:var(--ink)}
.deck{font-size:clamp(1.1rem,1rem + .45vw,1.28rem);line-height:1.5;margin:clamp(16px,1.8vw,24px) 0 0;max-width:31em;text-wrap:balance}
.attr{font-size:14.5px;color:var(--muted)}
.small{font-size:14px;color:var(--muted)}
.cap{margin:12px 0 0;font-size:15px;line-height:1.45;color:var(--muted);max-width:none}
mark.owner{font:500 14px/1.4 var(--f-mono);color:var(--ink);background:var(--paper);border:1px dashed var(--harbor-text);border-radius:var(--radius);padding:1px 6px;overflow-wrap:anywhere;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.site-foot mark.owner{color:var(--paper);background:transparent;border-color:var(--pale)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 max(var(--gutter),var(--sar)) 0 max(var(--gutter),var(--sal))}
.skip{position:absolute;left:max(12px,var(--sal));top:-80px;z-index:1200;padding:12px 16px;background:var(--ink);color:var(--paper);border-radius:var(--radius);text-decoration:none;font-weight:600}
.skip:focus{top:12px}
:focus-visible{outline:2px solid var(--harbor);outline-offset:3px}
main>section:focus,footer:focus{outline:none}
html.pointer-input :is(a,button,summary,[role="button"],input[type="checkbox"]):focus-visible{outline:none}
html.pointer-input .seg-opt input:focus-visible+span{outline:none}
html.pointer-input .map-frame:has(#map:focus-visible)::after{box-shadow:none}
html.pointer-input [tabindex="-1"]:focus-visible{outline:none}
.brk{display:inline-block;width:12px;height:10px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring);flex:none}

/* the archwire rule under section headings: 1 px hairline, the harbor bracket seated at its left end; .run draws it in */
.rule{position:relative;height:10px;width:min(220px,40%);margin:16px 0 24px}
.rule::before{content:"";position:absolute;left:0;right:0;top:4.5px;height:1px;background:var(--rule);transform-origin:0 50%;transform:scaleX(1)}
.rule::after{content:"";position:absolute;left:0;top:0;width:12px;height:10px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.rule.run::before{animation:ruleDraw .4s var(--ease) both}
.rule.run::after{animation:seat .45s var(--ease) .25s both}
@keyframes ruleDraw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes seat{from{transform:translateY(-7px) scale(1.5);opacity:0}to{transform:none;opacity:1}}
@keyframes seat2{from{transform:translateY(-7px) scale(1.5);opacity:0}to{transform:none;opacity:1}}
@keyframes archDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes spyIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes spyIn2{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes pinPulse{from{transform:scale(.6);opacity:.95}to{transform:scale(1.6);opacity:0}}
@keyframes stampIn{from{transform:rotate(-16deg) scale(1.6);opacity:0}to{transform:rotate(-6deg) scale(1);opacity:1}}

/* buttons: filled harbor with a white label; the hairline secondary; 48 px default, 44 px small; no lift, no glow */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border:1px solid transparent;border-radius:var(--radius);font-weight:600;font-size:16px;line-height:1.2;text-decoration:none;cursor:pointer;background:none;position:relative;transition:background-color .2s,color .2s,border-color .2s}
.btn svg{width:18px;height:18px;flex:none}
.btn-cta{background:var(--cta);border-color:var(--cta);color:#FFFFFF;box-shadow:none}
.btn-line{background:transparent;border-color:var(--harbor);color:var(--harbor-text)}
.btn-sm{min-height:44px;padding:0 14px;font-size:15px}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;flex:none;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);color:var(--harbor-text);cursor:pointer}
.icon-btn svg{width:20px;height:20px}
.act{margin-top:var(--cgap)}

/* header, two states (at rest 72 px from 760 px; condensed and translucent once the page has scrolled 120 px) */
.site-head{position:sticky;top:0;z-index:900;height:var(--head-h);background:var(--paper)}
.site-head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--rule);pointer-events:none}
.head-bar{position:relative;display:flex;align-items:center;gap:14px;height:100%}
.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;flex:none}
.brand-mark{width:auto;height:40px;transform-origin:0 50%;transition:transform .2s var(--ease)}
.brand-name{width:124px;height:auto;transition:opacity .2s linear}
.head-spy{position:absolute;top:0;bottom:0;left:calc(max(var(--gutter),var(--sal)) + 80px);display:flex;align-items:center;gap:8px;max-width:136px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s linear,visibility 0s linear .2s}
.hs-brk{flex:none;width:12px;height:10px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
/* L2-01: a name of up to 18 characters wraps to a second line inside the 116 px beside the bracket (13 characters a line at
   12 px and .14em; no label word is longer, spy_whole() and SPY_FIXED keep it so), so a word is never clipped */
.hs-name{font:500 12px/1.15 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--harbor-text);white-space:normal;overflow-wrap:normal;max-width:116px}
.head-spy.seat-a .hs-brk{animation:seat .45s var(--ease) both}.head-spy.seat-b .hs-brk{animation:seat2 .45s var(--ease) both}
.head-spy.seat-a .hs-name{animation:spyIn .3s var(--ease) both}.head-spy.seat-b .hs-name{animation:spyIn2 .3s var(--ease) both}
.nav{display:flex;align-items:center;gap:2px;margin-left:6px;flex:1 1 auto;min-width:0}
.nav-item{display:flex;align-items:center;flex:none}
.nav-link{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 7px;border-radius:var(--radius);font-weight:500;font-size:15.5px;color:var(--ink);text-decoration:none;white-space:nowrap;transition:color .2s,background-color .2s,font-size .2s var(--ease),padding .2s var(--ease),min-height .2s var(--ease)}
.nav-link[aria-current="page"],.nav-item.is-section>.nav-link,.nav-link.is-spy{color:var(--harbor-text)}
.nav-link[aria-current="page"]::after,.nav-item.is-section>.nav-link::after,.nav-link.is-spy::after{content:"";position:absolute;left:50%;bottom:calc((44px - var(--head-h)) / 2 - 5px);width:12px;height:10px;margin-left:-6px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring);transition:opacity .2s linear}
/* the panel toggle keeps the five labels at their own width: it shows as a 24 px chevron chip only while it has keyboard focus, laid
   over the item's right edge with no layout width; a pause of the mouse opens the panel, a tap on the label follows the link */
.np-toggle{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;background:none;color:var(--harbor-text);cursor:pointer}
.np-toggle:focus-visible{position:relative;z-index:3;display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;margin:0 -13px 0 -11px;overflow:visible;clip:auto;border:1px solid var(--harbor);border-radius:var(--radius);background:var(--card);outline:2px solid var(--harbor);outline-offset:1px}
.np-toggle:focus-visible::before{content:"";width:6px;height:6px;margin-top:-4px;border-right:1.25px solid currentColor;border-bottom:1.25px solid currentColor;transform:rotate(45deg)}
.np-toggle[aria-expanded="true"]:focus-visible::before{transform:translateY(4px) rotate(-135deg)}
.nav-item.is-open>.nav-link{background:var(--harbor-wash);color:var(--harbor-text)}
.nav-item:has(> .nav-panel:empty)>.np-toggle{display:none}
/* the panels: one card under the header bar, the groups in columns; opened by the toggle, by a pause of the pointer, closed by Escape */
.nav-panel{display:none;position:absolute;z-index:2;left:max(var(--gutter),var(--sal));right:max(var(--gutter),var(--sar));top:calc(100% + 1px);padding:var(--pad);border-radius:0 0 var(--radius) var(--radius);background:var(--card);box-shadow:var(--shadow-2);grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:22px 28px;align-items:start}
.nav-item.is-open > .nav-panel{display:grid}
.np-title{font:400 12px/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--harbor-text);margin:0 0 8px;padding-bottom:8px;border-bottom:1px solid var(--rule)}
.np-links{display:grid;gap:2px}
.np-link{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-height:36px;padding:4px 0;font-weight:500;font-size:15.5px;line-height:1.3;color:var(--ink);text-decoration:none}
.np-tag{font:500 11px/1.3 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--harbor-text);border:1px solid var(--harbor-text);border-radius:var(--radius);padding:1px 5px}
.np-tag:empty{display:none}
.np-link[aria-current="page"]{color:var(--harbor-text);text-decoration:underline 1.5px var(--harbor);text-underline-offset:.22em}
.head-right{display:flex;align-items:center;gap:10px;margin-left:auto;flex:none}
.call-pill{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:1px solid var(--harbor);border-radius:var(--radius);color:var(--harbor-text);text-decoration:none;font-weight:600;font-size:15px;white-space:nowrap;transition:min-height .2s var(--ease),background-color .2s}
.call-pill svg{width:18px;height:18px;color:var(--harbor-text)}
.head-cta{min-height:48px;padding:0 16px;font-size:15px;transition:background-color .2s,color .2s,border-color .2s,min-height .2s var(--ease)}
.menu-btn{display:none;width:44px;height:44px;align-items:center;justify-content:center;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);color:var(--harbor-text);cursor:pointer}
.menu-btn svg{width:22px;height:22px}
/* L2-12 (DECISIONS 92): the no-script menu, a link to the footer's link lists, in the menu button's place under 1160 px */
.menu-link{display:none;min-height:44px;align-items:center;padding:0 14px;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);color:var(--harbor-text);font-weight:500;text-decoration:none}
/* the scroll hairline: the sticky header's bottom edge, 2 px harbor over the 1 px rule, a harbor bracket seated per section */
.progress{position:absolute;left:0;right:0;bottom:0;height:2px;z-index:2;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .2s linear,visibility 0s linear .2s}
.progress-wire{position:absolute;left:0;top:0;height:2px;width:0;background:var(--harbor);border-radius:0 1px 1px 0}
.progress-ticks{position:absolute;top:0;bottom:0;left:16px;right:16px}
.progress-tick{position:absolute;top:-4px;width:12px;height:10px;margin-left:-6px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring);opacity:0;transform:translateY(-6px) scale(1.4);transition:opacity .3s,transform .4s var(--ease)}
.progress-tick.on{opacity:1;transform:none}
@media screen and (min-width:760px){
  .site-head{transition:height .2s var(--ease),margin-bottom .2s var(--ease),background-color .2s linear,box-shadow .2s linear}
  .site-head.is-stuck{height:var(--head-stuck);margin-bottom:calc(var(--head-h) - var(--head-stuck));box-shadow:0 10px 24px -22px rgba(15,37,42,.35)}
  .site-head.is-stuck .progress{opacity:1;visibility:visible;transition:opacity .2s linear,visibility 0s}
  .site-head.is-stuck .brand-mark{transform:scale(.9)}
  .site-head.is-stuck.has-spy .brand-name{opacity:0}
  .site-head.is-stuck.has-spy .head-spy{opacity:1;visibility:visible;transition:opacity .2s linear,visibility 0s}
  .site-head.is-stuck .nav-link{min-height:40px;font-size:14.5px}
  .site-head.is-stuck .nav-link[aria-current="page"],.site-head.is-stuck .nav-item.is-section>.nav-link,.site-head.is-stuck .nav-link.is-spy{text-decoration:underline 2px var(--harbor);text-underline-offset:7px}
  .site-head.is-stuck .nav-link[aria-current="page"]::after,.site-head.is-stuck .nav-item.is-section>.nav-link::after,.site-head.is-stuck .nav-link.is-spy::after{opacity:0}
}
@media screen and (min-width:1160px) and (hover:hover) and (pointer:fine){.site-head.is-stuck .call-pill,.site-head.is-stuck .head-cta{min-height:40px}}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  @media screen and (min-width:760px){
    /* the frosted ground sits on ::before, so the header itself never filters and never contains a fixed child (B14) */
    .site-head::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;transition:background-color .2s linear,-webkit-backdrop-filter .2s linear,backdrop-filter .2s linear}
    .site-head.is-stuck{background:transparent}
    .site-head.is-stuck::before{background:rgba(251,246,238,.84);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px)}
  }
}

/* sections, bands and tints */
section{padding:var(--sec) 0}
[data-curve="top"]{padding-top:calc(var(--sec) + var(--dip))}
.band-pale{position:relative;isolation:isolate;background:var(--pale)}
.band-pale::before{content:"";position:absolute;inset:0;z-index:-1;background:url(/assets/img/grain-240.webp) 0 0/240px 240px repeat;opacity:.1;mix-blend-mode:multiply;pointer-events:none}
.band-sky{position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(160deg,var(--sky) 0%,#E8F0F2 30%,var(--paper) 62%)}
.band-sky::before{content:"";position:absolute;inset:0;z-index:-1;background:url(/assets/img/grain-240.webp) 0 0/240px 240px repeat;opacity:.1;mix-blend-mode:multiply;pointer-events:none}
.band-pale .tp-card,.band-pale .chooser-pinned,.band-pale .chooser-preset{--ground:var(--pale)}
/* the reviews band swap: harbor ground with paper type (6.31:1) */
.band-harbor,.swap-band-harbor .proof.band-pale{background:var(--harbor);color:var(--paper)}
.band-harbor::before,.swap-band-harbor .proof.band-pale::before{opacity:.06}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) :is(.kicker,.g-note,.gl-count,.quote figcaption,.quotes-label){color:var(--paper)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) :is(a,.g-lines a,.proof-num,.quote blockquote){color:var(--paper)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) a{text-decoration-color:var(--pale)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) :is(.g-lines,.g-lines>*,.quote){border-color:rgba(251,246,238,.32)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) .gl-ext{color:var(--paper)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) .quote-mono{color:var(--paper);border-color:rgba(251,246,238,.7)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) .rule::before{background:rgba(251,246,238,.4)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) .rule::after{box-shadow:inset 0 0 0 1.25px var(--paper);background:linear-gradient(180deg,var(--harbor) 0 40%,var(--paper) 40% 60%,var(--harbor) 60%)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) :focus-visible{outline-color:var(--paper)}
:is(.band-harbor,.swap-band-harbor .proof.band-pale) mark.owner{color:var(--paper);background:transparent;border-color:var(--paper)}
.sec-head{display:grid;grid-template-columns:minmax(0,1fr);gap:0 clamp(32px,5vw,72px);align-items:end;margin-bottom:8px}
.sec-head>*{min-width:0}
.sec-head .lede{margin:0 0 var(--igap)}
.illus-line{margin:var(--igap) 0 0;font-size:15px;color:var(--muted);max-width:none}
.src-line{margin:var(--cgap) 0 0;font-size:14px;color:var(--muted)}

/* the page head of every inner template: the hero's ambient sky wash over paper, crumbs, kicker, H1, rule, deck, the CTA pair, the
   dated or trust line, and from 980 px the instrument column */
.page-head{position:relative;isolation:isolate;padding:clamp(24px,3vw,48px) 0 var(--sec);background:var(--paper)}
.page-head::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(85% 75% at 6% 0%,rgba(202,225,239,.5),rgba(202,225,239,0) 64%);pointer-events:none}
.crumbs ol{display:flex;flex-wrap:wrap;align-items:center;margin:0 0 clamp(18px,2.2vw,30px);font:500 12px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.crumbs ol:empty,.crumbs:has(ol:empty){display:none}
.crumbs li{display:inline-flex;align-items:center;min-width:0}
.crumbs li+li::before{content:"/";margin:0 10px;color:var(--muted)}
.crumbs a{display:inline-block;padding:4px 0;color:var(--harbor-text);text-decoration-color:rgba(31,95,143,.45)}
.crumbs a[aria-current]{color:var(--muted);text-decoration:none}
.ph-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(28px,4vw,56px);align-items:start}
.ph-grid>*{min-width:0}
.ph-copy h1{margin:0}
.ph-copy .rule{margin:clamp(14px,1.6vw,20px) 0 0}
.ph-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(20px,2.2vw,28px)}
.ph-dated{margin-top:18px;display:grid;gap:8px}
.ph-ctas:empty,.ph-dated:empty,.ph-instrument:empty{display:none}
.ph-instrument .office-cards{padding:0;max-width:none}
.bar-sentinel{position:absolute;left:0;top:60%;width:1px;height:1px;pointer-events:none}
/* a render in a page head or a body: whole at 4:3 on its pale ground, the illustration line beneath */
.render{margin:0}
.render-img{aspect-ratio:4/3;overflow:hidden;border-radius:var(--radius);background:var(--pale)}
.render-img img{width:100%;height:100%;object-fit:contain}
.render figcaption{margin-top:10px}
.ph-call{margin:0;font-size:clamp(1.05rem,1rem + .3vw,1.2rem)}
.ph-call a{font-size:1.05em}
@media (min-width:980px){.ph-grid:has(> .ph-instrument:not(:empty)){grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}}
.ph-aside{min-width:0}
.ph-call{margin:0}
.ph-form>.tp-card{max-width:none}
@media (min-width:980px){
  .ph-grid:has(> .ph-aside){grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);grid-template-areas:"copy form" "aside form";row-gap:clamp(24px,2.6vw,36px)}
  .ph-grid:has(> .ph-aside)>.ph-copy{grid-area:copy}
  .ph-grid:has(> .ph-aside)>.ph-instrument{grid-area:form}
  .ph-grid:has(> .ph-aside)>.ph-aside{grid-area:aside}
}
/* the locations page: its head gives the finder sheet 48 px to ride over (a section with .ride-up holds the chooser) */
.ph-locations{padding-bottom:calc(var(--sec) + 48px)}
.ride-up{padding-top:0}
.ride-up .finder-sheet{margin-top:-48px;position:relative;z-index:3}

/* inner pages: main holds a run of sections, each with its own .wrap (the page head, the fragment's sections, the parts, the
   closing bands). The run reads in one column at every width; the body sections sit close (no top padding, a short bottom
   one) while the bands keep the section rhythm. From 1160 px a page with the pinned chooser lays the run on a grid on main:
   the body at the measure (672 px) and the chooser in a 360 px rail beside it, sticky while idle; a page with the contents
   wire and no chooser puts the wire in a 220 px left rail, sticky, beside an 812 px body. A grid is used only where no band
   sits between body sections after the rail begins, so the order on screen is always the order in the page. */
main>:is(.prose-sec,.part,.related-sec,.post-nav,.post-offices):not(.part-map,.part-chooser,.request-sec){padding:0 0 clamp(28px,3vw,44px)}
main>:is(.band-pale,.band-sky,.band-harbor)+:is(.prose-sec,.part,.related-sec,.post-nav,.post-offices):not(.part-map,.part-chooser,.request-sec){padding-top:clamp(28px,3vw,44px)}
main>.post-featured{box-sizing:border-box;max-width:var(--wrap);margin:0 auto var(--cgap);padding:0 max(var(--gutter),var(--sar)) 0 max(var(--gutter),var(--sal))}
@media (min-width:1160px){
  /* the two grids set custom properties that the rules for main's children read, so each condition is written once */
  main:has(> .part-chooser .chooser-pinned):not(:has(> .part-chooser ~ :is(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))){display:grid;grid-auto-flow:row dense;align-items:start;grid-template-columns:[full-start] minmax(var(--gutter),1fr) [body-start] minmax(0,672px) [body-end] 48px [rail-start] 360px [rail-end] minmax(var(--gutter),1fr) [full-end];--g-body:body;--g-full:full;--g-rail:rail;--g-span:span 80;--g-sticky:sticky;--g-rail-pad:0px}
  main:has(> .cw):not(:has(> .part-chooser .chooser-pinned)):not(:has(> :is(.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))){display:grid;grid-auto-flow:row dense;align-items:start;grid-template-columns:[full-start] minmax(var(--gutter),1fr) [wire-start] 220px [wire-end] 48px [body-start] minmax(0,812px) [body-end] minmax(var(--gutter),1fr) [full-end];--g-body:body;--g-full:full;--g-wire:wire;--g-wire-span:span 80;--g-wire-sticky:sticky;--g-wire-rail:block;--g-wire-fold:none}
  main>*{grid-column:var(--g-body,auto);min-width:0}
  main>:is(.page-head,.part-map,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor){grid-column:var(--g-full,auto)}
  :is(main:has(> .part-chooser .chooser-pinned):not(:has(> .part-chooser ~ :is(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))),main:has(> .cw):not(:has(> .part-chooser .chooser-pinned)):not(:has(> :is(.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))))>:not(.page-head,.part-map,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor)>.wrap,:is(main:has(> .part-chooser .chooser-pinned):not(:has(> .part-chooser ~ :is(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))),main:has(> .cw):not(:has(> .part-chooser .chooser-pinned)):not(:has(> :is(.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))))>.wrap.cw,:is(main:has(> .part-chooser .chooser-pinned):not(:has(> .part-chooser ~ :is(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))),main:has(> .cw):not(:has(> .part-chooser .chooser-pinned)):not(:has(> :is(.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-map,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor))))>.post-featured{max-width:none;margin-left:0;margin-right:0;padding-left:0;padding-right:0}
  /* the rail section fills its grid area and its .wrap is the sticky box: a sticky grid item is held by main, not by its area,
     so the idle chooser would ride over the closing bands */
  main>.part-chooser:has(.chooser-pinned){grid-column:var(--g-rail,auto);grid-row:var(--g-span,auto);align-self:stretch;padding-top:var(--g-rail-pad,var(--sec));padding-bottom:var(--g-rail-pad,var(--sec))}
  html.run main>.part-chooser:has(.chooser-pinned:not(.is-open))>.wrap{position:var(--g-sticky,static);top:calc(var(--head-stuck) + 24px)}
  main>.cw{grid-column:var(--g-wire,var(--g-body,auto));grid-row:var(--g-wire-span,auto);position:var(--g-wire-sticky,static);top:calc(var(--head-stuck) + 24px)}
  /* an office page (DECISIONS 72 and 83, L2-19): the pinned chooser follows the office card in the page, then the map; from 1160 px
     the map is seated under the head and the chooser in the rail beside the body, so only these two trade places on screen */
  main:has(> .part-chooser + .part-map):not(:has(> .part-map ~ :is(.page-head,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor,.part-map))){display:grid;grid-auto-flow:row dense;align-items:start;grid-template-columns:[full-start] minmax(var(--gutter),1fr) [body-start] minmax(0,672px) [body-end] 48px [rail-start] 360px [rail-end] minmax(var(--gutter),1fr) [full-end];--g-body:body;--g-full:full;--g-rail:rail;--g-span:span 80;--g-sticky:sticky;--g-rail-pad:0px}
  main:has(> .part-chooser + .part-map)>.part-map{grid-row:2}
  main:has(> .part-chooser + .part-map)>.part-chooser:has(.chooser-pinned){grid-row:3/span 80}
  main:has(> .part-chooser + .part-map):not(:has(> .part-map ~ :is(.page-head,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor,.part-map)))>:not(.page-head,.part-map,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor)>.wrap,main:has(> .part-chooser + .part-map):not(:has(> .part-map ~ :is(.page-head,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor) ~ :not(.page-head,.part-chooser,.faq,.request-sec,.cta-band,.proof,.band-pale,.band-sky,.band-harbor,.part-map)))>.wrap.cw{max-width:none;margin-left:0;margin-right:0;padding-left:0;padding-right:0}
}

/* prose: the inner pages' long text at the measure */
.prose{max-width:40em}
.prose>*+*{margin-top:0}
.prose h2{font-size:clamp(1.6rem,1.2rem + 1.4vw,2.25rem);line-height:1.15;margin:0 0 14px}
.prose h3{margin:28px 0 10px}
.prose h4{margin:22px 0 8px}
.prose p,.prose li,.prose dd{max-width:31em}
.prose ul,.prose ol{display:grid;gap:8px;margin:0 0 1em}
.prose ul>li{position:relative;padding-left:22px}
.prose ul>li::before{content:"";position:absolute;left:0;top:calc(.78em - 4px);width:10px;height:8px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.prose ol{counter-reset:pl}
.prose ol>li{position:relative;padding-left:30px;counter-increment:pl}
.prose ol>li::before{content:counter(pl);position:absolute;left:0;top:0;font:500 14px/1.9 var(--f-mono);color:var(--harbor-text)}
.prose dl{display:grid;gap:6px 0;margin:0 0 1em}
.prose dt{font-family:var(--f-disp);font-size:1.25rem;line-height:1.3;margin-top:14px}
.prose dd{margin:0}
.prose a{overflow-wrap:anywhere}
.prose blockquote{margin:0 0 1em;padding-left:18px;border-left:1px solid var(--rule);font-family:var(--f-disp);font-size:1.25rem;line-height:1.45}
.prose figure{margin:0 0 1em}
.prose figcaption{margin-top:8px;font-size:15px;color:var(--muted)}
.prose img{height:auto;border-radius:var(--radius)}
.prose .float-left{float:left;max-width:min(46%,320px);margin:4px 22px 12px 0}
.prose .float-right{float:right;max-width:min(46%,320px);margin:4px 0 12px 22px}
.prose table{width:100%;border-collapse:collapse;margin:0 0 1em;font-size:15.5px}
.prose caption{text-align:left;font-size:15px;color:var(--muted);padding-bottom:8px}
.prose th{font:500 12px/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--harbor-text);text-align:left;padding:10px 12px 8px 0;border-bottom:1px solid var(--rule)}
.prose td{padding:10px 12px 10px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.prose .small{font-size:15px}
.prose-sec{padding:0 0 clamp(28px,3vw,44px);scroll-margin-top:16px}
.prose-sec::after{content:"";display:table;clear:both}
/* related pages: the row's related paths as one quiet list, a body section after the fragment and the parts */
.related-h{font-size:clamp(1.4rem,1.15rem + .9vw,1.85rem);line-height:1.2;margin:0 0 12px}
.related-list,.prose .related-list{display:flex;flex-wrap:wrap;gap:0 24px;margin:0;padding:0;list-style:none}
.prose .related-list>li{padding-left:0}
.prose .related-list>li::before{content:none}
/* the office phone block placed in prose: the list rules, never the prose bullet */
.prose .office-list{gap:0;margin:0 0 1em}
.prose .office-list>li{padding-left:0;max-width:none}
.prose .office-list>li::before{content:none}
/* a long word (a URL carried verbatim) wraps rather than widening the page */
.prose p,.prose li{overflow-wrap:anywhere}
.related-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:500;color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule);text-decoration-thickness:1px;text-underline-offset:.22em}
.related-link svg{width:14px;height:14px;flex:none;color:var(--harbor-text)}
/* areas served: the towns of the office that have an area page, each a nav link (the tag can carry the miles); an empty title hides */
.as-title{font-size:clamp(1.4rem,1.15rem + .9vw,1.85rem);line-height:1.2;margin:0 0 12px}
.as-title:empty{display:none}
.as-list,.prose .as-list{display:flex;flex-wrap:wrap;gap:8px 10px;margin:0;padding:0;list-style:none}
.as-list>li,.prose .as-list>li{padding:0;max-width:none}
.prose .as-list>li::before{content:none}
.prose .forms-list{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 1em}
.prose .forms-list>li{padding-left:0;max-width:none}
.prose .forms-list>li::before{content:none}
.as-list .np-link{min-height:44px;padding:8px 14px;border:1px solid var(--rule);border-radius:var(--radius);background:var(--card);font-size:16px;color:var(--ink)}
.as-list .np-tag{border:0;padding:0;font-size:12px;letter-spacing:.04em;text-transform:none;color:var(--muted)}
.as-list>li.as-src{flex-basis:100%}
/* the generator's own pieces of the body run: head and body figures, the post's meta, featured image and links, the sitemap
   groups, the confirmation pages' reach line, the request card's measure */
.ph-fig,.still{margin:0}
.ph-fig img,.still img,.prose-fig img{display:block;width:100%;height:auto;border-radius:var(--radius)}
/* a body still at the measure (its sizes say 672 px from 1160); the expander still capped near 640 CSS px, so its files never stretch */
.part-still:not(.part-storefront) .still{max-width:672px}
.part-still .still.still-narrow{max-width:640px}
.ph-fig figcaption,.still figcaption{margin-top:10px}
.prose-fig{margin:0 0 1em}
.post-featured img{display:block;max-width:100%;height:auto;border-radius:var(--radius)}
/* post images: the featured image inside the measure and never taller than 68 percent of the viewport or 540px, so the first
   screen is never one picture; every other post image under 70 percent of the viewport height; each at its own aspect (--ar, the
   file width over its height, set by the generator), never upscaled, with no shift when it loads */
.post-featured img{max-width:min(100%,40em,calc(min(68vh,540px) * var(--ar,100)))}
.prose img{max-width:min(100%,calc(70vh * var(--ar,100)))}
.post-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:0;color:var(--muted)}
.post-meta time{font:500 15px/1.4 var(--f-mono);color:var(--ink)}
.post-nav-links{display:flex;flex-wrap:wrap;gap:4px 28px;margin:0;padding:0;list-style:none}
.post-nav-links a,.proof-more a,.sm-group a{display:inline-flex;align-items:center;min-height:44px;font-weight:500}
.proof-more{margin:var(--cgap) 0 0}
.sm-group ul{columns:2 260px;column-gap:32px;margin:0;padding:0;list-style:none}
.sm-group li{break-inside:avoid}
/* a page nested under its parent in the sitemap tree (an office and its local pages) */
.sm-group li>ul{columns:auto;margin:0 0 6px;padding-left:20px}
.sm-group li>ul a{min-height:40px;font-weight:400}
.sent-reach{margin:0;font-size:clamp(1.05rem,1rem + .3vw,1.2rem)}
.map-empty-addr{margin:0;font-weight:500}
.doc-lic{font-size:15px;color:var(--muted)}
.f-ok .f-stamp:empty{display:none}
.request-sec>.wrap>:is(.tp-card,.phone-card){max-width:760px}
/* a part's own heading reads at the prose scale, so the body run keeps one heading size */
main>:is(.part,.post-offices)>.wrap>h2:not(.as-title){font-size:clamp(1.6rem,1.2rem + 1.4vw,2.25rem);line-height:1.15;margin:0 0 14px}
.as-list span.np-link{min-height:0;padding:4px 0;border:0;background:none}

/* the contents wire: a 220 px rail from 1160 px, a folded list under it */
.cw-rail{display:var(--g-wire-rail,none)}
main>.cw .cw-rail{max-height:calc(100vh - var(--head-stuck) - 48px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.cw-title{font:500 12px/1.4 var(--f-mono);letter-spacing:var(--trk);text-transform:uppercase;color:var(--muted);margin:0 0 12px}
.cw-list{position:relative;display:grid;gap:0;padding-left:20px}
.cw-list::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--rule)}
.cw-list a{position:relative;display:flex;align-items:center;min-height:36px;padding:4px 0;font-weight:500;font-size:14.5px;line-height:1.3;color:var(--muted);text-decoration:none}
.cw-tick{position:absolute;left:-20px;top:50%;width:10px;height:8px;margin-top:-4px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring);opacity:.4;transform:translateY(-3px) scale(.9);transition:opacity .3s,transform .35s var(--ease)}
.cw-list a.is-on{color:var(--ink)}
.cw-list a.is-on .cw-tick{opacity:1;transform:none}
.cw-fold{display:var(--g-wire-fold,block);margin:0 0 var(--cgap);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1)}
.cw-fold summary{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:0 18px;cursor:pointer;font:500 12px/1.4 var(--f-mono);letter-spacing:var(--trk);text-transform:uppercase;color:var(--harbor-text);list-style:none}
.cw-fold summary::-webkit-details-marker{display:none}
.cw-fold summary::after{content:"";width:6px;height:6px;margin-top:-4px;border-right:1.25px solid currentColor;border-bottom:1.25px solid currentColor;transform:rotate(45deg)}
.cw-fold[open] summary::after{transform:translateY(4px) rotate(-135deg)}
.cw-fold .cw-list{padding:0 18px 14px 38px}
.cw-fold .cw-list::before{left:23px}

/* the printed card: the house card for working content (perforated stub, mono head row, mono field labels) */
.tp-card{position:relative;--ground:var(--paper);background:var(--card);border:0;border-radius:var(--radius);box-shadow:var(--shadow-1);padding:var(--pad) var(--pad) var(--pad) calc(var(--pad) + 10px)}
.tp-card::before{content:"";position:absolute;left:15px;top:12px;bottom:12px;width:0;border-left:1px dashed var(--rule);pointer-events:none}
.tp-card::after{content:"";position:absolute;left:0;top:0;bottom:0;width:8px;background:radial-gradient(circle at 0 50%,var(--ground) 2.5px,transparent 3px) 0 7px/8px 14px repeat-y;pointer-events:none}
.tp-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 var(--igap);padding-bottom:12px;border-bottom:1px solid var(--rule);max-width:none}
.tp-kicker{font:500 12px/1.4 var(--f-mono);letter-spacing:var(--trk);text-transform:uppercase;color:var(--harbor-text)}
.tp-title{font-family:var(--f-disp);font-weight:400;font-size:clamp(1.25rem,1.1rem + .6vw,1.5rem);line-height:1.25;letter-spacing:.01em}
.tp-fields{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px 18px;margin:0 0 var(--igap)}
.tp-fields>div{display:contents}
.tp-fields dt{font:500 11.5px/1.5 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding-top:5px}
.tp-fields dd{margin:0;min-width:0}
.tp-fields dd p{margin:0}
.tp-stamp-row{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px 14px;min-height:48px}
.tp-stamp-row>*{min-width:0}
.tp-stamp{display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:5px 14px;border:1.5px solid var(--harbor);border-radius:var(--radius);color:var(--harbor);font:400 24px/1.1 var(--f-disp);letter-spacing:.02em;text-transform:uppercase;transform:rotate(-6deg)}
.tp-stamp svg{width:20px;height:20px}
.tp-stamp.in{animation:stampIn .36s cubic-bezier(.2,1.25,.3,1) both}
.gap{padding:20px 22px;border:1px dashed var(--harbor-text);border-radius:var(--radius);background:var(--paper)}
.flow,.plan-lines{display:grid;gap:8px}
.flow{margin:0 0 var(--igap)}
.flow li,.plan-lines li{display:flex;gap:10px;align-items:flex-start}
.flow li svg,.plan-lines li svg{width:20px;height:20px;flex:none;color:var(--harbor-text);margin-top:4px}
.forms-intro{font-weight:600}
.forms-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.forms-list a{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-height:44px;padding:6px 12px;border:1.25px solid var(--harbor-text);border-radius:var(--radius);background:var(--card);color:var(--ink);text-decoration:none;font-weight:500;font-size:15px;line-height:1.3}
.forms-list a svg{width:16px;height:16px;flex:none;color:var(--harbor-text)}
.fl-meta{font:400 13px/1.3 var(--f-mono);color:var(--muted)}
.fl-meta:empty{display:none}
.advice{font-size:15px;color:var(--muted)}

/* the chooser: full (the pale finder sheet over the plan card), pinned (one printed card in the rail), preset (the served result) */
.chooser{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap)}
.chooser>*{min-width:0}
.chooser-full{max-width:880px}
.finder-sheet{position:relative;z-index:3;padding:var(--pad);border:0;border-radius:var(--radius);background:var(--pale);box-shadow:var(--shadow-2);display:grid;gap:clamp(20px,2vw,26px)}
.finder-head{display:grid;gap:12px}
.finder-head .kicker,.finder-head .lede{margin:0}
.finder-head .rule{margin:4px 0 0}
.finder-h{font-size:clamp(1.7rem,1.1rem + 2vw,2.5rem)}
.finder-tool{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding-top:clamp(18px,2vw,24px);border-top:1px solid var(--rule)}
.finder-tool>*{min-width:0}
.finder-label{font-weight:600;font-size:15px;color:var(--ink)}
.finder-hint{margin:-4px 0 2px;font-size:14px;color:var(--muted);max-width:none}
.finder-field{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;min-height:58px;padding:5px;border:1px solid var(--harbor);border-radius:var(--radius);background:var(--card);box-shadow:inset 0 1px 2px rgba(15,37,42,.06)}
.finder-field:focus-within{outline:2px solid var(--harbor);outline-offset:2px}
.finder-field:has(.finder-find:focus-visible){outline:none}
.finder-input{min-height:46px;min-width:0;padding:0 10px;border:0;border-radius:2px;background:transparent;color:var(--ink);font:500 17px/1.3 var(--f-body);outline:none}
.finder-find{min-height:46px;padding:0 22px}
.finder-geo{justify-self:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;margin:0 -4px;border:0;border-radius:var(--radius);background:none;color:var(--harbor-text);font-weight:600;font-size:15px;text-decoration:underline;text-decoration-color:rgba(31,95,143,.45);text-underline-offset:.22em;cursor:pointer}
.finder-geo svg{width:18px;height:18px;flex:none;color:var(--harbor-text)}
.chips-label{margin:6px 0 0;font:500 12px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--harbor-text);max-width:none}
/* the four chips in practice order on a 1 px thread: harbor on pale with ink text */
.office-chips{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));justify-items:center;align-items:center;gap:16px 8px;padding:6px 0}
.office-chips::before{content:"";position:absolute;left:6px;right:6px;top:50%;height:1px;background:var(--rule);pointer-events:none}
.office-chips li{position:relative;z-index:1;min-width:0}
.chip,.hw-chip{position:relative;isolation:isolate;display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 15px 0 11px;border:1.25px solid var(--harbor-text);border-radius:var(--radius);background:var(--pale);color:var(--ink);font-weight:500;font-size:15px;line-height:1.2;white-space:nowrap;cursor:pointer;text-decoration:none;transition:border-color .2s,background-color .2s,box-shadow .2s}
.chip{box-shadow:none}
.hw-glyph{position:relative;display:inline-flex;width:22px;height:18px;flex:none;color:var(--harbor-text)}
.hw-glyph svg{width:22px;height:18px;display:block}
.hw-glyph::after{content:"";position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;border:1.5px solid var(--harbor);opacity:0;transform:scale(.7);transition:opacity .25s,transform .3s var(--ease);pointer-events:none}
.chip[aria-pressed="true"],.hw-chip[aria-current="true"]{border-color:var(--harbor);box-shadow:inset 0 0 0 1px var(--harbor)}
.chip[aria-pressed="true"] .hw-glyph::after,.hw-chip[aria-current="true"] .hw-glyph::after{opacity:1;transform:none}
.chip-two{display:inline}
.chip-sep{white-space:pre}
/* in the compact card (a 360 px rail or a narrow column) the satellite chip always stacks its label, as phones do */
:is(.chooser-pinned,.chooser-preset) .chip-two{display:grid;justify-items:start;line-height:1.15;text-align:left}
:is(.chooser-pinned,.chooser-preset) .chip-sep{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
:is(.chooser-pinned,.chooser-preset) .chip-sat{font:500 11.5px/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--harbor-text)}
.finder-msg{margin:0;font-size:15.5px;color:var(--ink)}
.finder-sheet>.finder-msg{padding-top:2px}
.result-all{border-top:0}
.finder-msg:empty{display:none}
.plan-card:has(> .result:empty):has(> .plan[hidden]){display:none}
/* the served office list is the card's content without script; with script it never paints, and app.js removes it */
/* the refusal state's list of all four offices (app.js, .result-all) is the script's own content and always paints */
@media (scripting:enabled){.result>.office-list:not(.result-all){display:none}.plan-card:has(> .result > .office-list:not(.result-all):only-child):has(> .plan[hidden]){display:none}}
.result{display:grid;gap:12px}
.result:empty{display:none}
.result-card{display:grid;gap:12px}
.result-card h3{margin-bottom:2px}
.result-card .sat-tag{margin:4px 0}
.result-card>.sat-tag,.result-card .sat-tag,.office-hours mark.owner,.result-hours mark.owner,.office-hours>.oh-line,.result-hours>.oh-line{justify-self:start}
.office-hours mark.owner,.result-hours mark.owner{max-width:100%}
.result-addr{margin:0;overflow-wrap:anywhere}
.result-dist{font:500 15px/1.45 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--harbor-text);margin:0}
.rc-dist:has(.result-dist:empty){display:none}
.result-hours,.result-tel{display:grid;gap:4px}
.result-tel .tel-main .tel-label{display:none}
.result-hours .oh-line,.result-hours p{font:500 14.5px/1.5 var(--f-mono);margin:0}
.result-links,.result-acts{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.result-links:empty{display:none}
.result-links a:not(.btn){display:inline-flex;align-items:center;gap:6px;min-height:44px;font-weight:500}
.result-links svg{width:16px;height:16px}
.result-change{font-size:14.5px;margin:0}
.result-change button{background:none;border:0;padding:10px 0;min-height:44px;color:var(--harbor-text);text-decoration:underline;text-decoration-color:rgba(31,95,143,.45);text-underline-offset:.2em;cursor:pointer;font-size:14.5px}
.result-card.tie{padding:var(--igap);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1);gap:10px}
.result-card.tie h3{margin:calc(-1 * var(--igap)) calc(-1 * var(--igap)) 0;padding:12px var(--igap);background:var(--pale);border-radius:var(--radius) var(--radius) 0 0;font-size:20px}
.tie-note{font-weight:600;margin:0 0 4px}
@media (min-width:768px){
  .result:has(> .result-card.tie){grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 22px;align-items:start}
  .result:has(> .result-card.tie)>.tie-note{grid-column:1/-1}
  .result>.result-card.tie{padding:0;background:none;box-shadow:none;border-top:1px solid var(--rule);border-radius:0;padding-top:12px}
  .result>.result-card.tie h3{margin:0;padding:0;background:none;border-radius:0}
}
.plan{border-top:1px solid var(--rule);margin-top:var(--igap);padding-top:var(--igap);display:grid;gap:16px}
.plan-h{font-size:clamp(1.25rem,1.1rem + .6vw,1.5rem)}
.seg{border:0;padding:0;margin:0;min-width:0}
.seg legend{font-weight:600;font-size:15px;margin-bottom:8px;padding:0}
.seg-row{display:flex;flex-wrap:wrap;gap:8px}
.seg-opt{position:relative;display:inline-flex}
.seg-opt input{position:absolute;opacity:0;width:1px;height:1px}
.seg-opt>span{display:inline-block;min-height:44px;line-height:41.5px;padding:0 14px;border:1.25px solid var(--harbor-text);border-radius:var(--radius);background:var(--card);font-weight:500;font-size:15px;cursor:pointer;transition:border-color .2s,background-color .2s,color .2s}
.seg-opt input:checked+span{background:var(--pale);border-color:var(--harbor);box-shadow:inset 0 0 0 1px var(--harbor);font-weight:600}
.seg-opt input:focus-visible+span{outline:2px solid var(--harbor);outline-offset:2px}
.plan-out{display:grid;gap:16px;padding:var(--igap) 0 0;border-top:1px dashed var(--rule)}
.plan-block h4{font:500 11.5px/1.5 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--harbor-text);margin:0 0 8px}
.plan-out p{margin:0}
.plan-forms{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.plan-forms a{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1.25px solid var(--harbor-text);border-radius:var(--radius);background:var(--card);color:var(--ink);text-decoration:none;font-weight:500;font-size:15px}
.plan-forms a svg{width:16px;height:16px;color:var(--harbor-text)}
.pt-toggle{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:500;cursor:pointer}
.pt-toggle input{width:20px;height:20px;accent-color:var(--harbor)}
.plan-path{font-style:italic}
.plan-advice{font-size:14.5px;color:var(--muted)}
.plan-out .act{margin-top:4px}
.selftest{border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px;background:var(--card);font:400 13.5px/1.5 var(--f-mono)}
.selftest h3{font:500 14px/1.4 var(--f-mono);margin-bottom:8px}
.selftest .badge{display:inline-block;padding:4px 10px;border-radius:var(--radius);color:#FFFFFF;background:var(--ok);font-weight:500;margin-bottom:10px}
.selftest .badge.fail{background:var(--err)}
.selftest li{display:flex;gap:8px;padding:3px 0;border-top:1px solid var(--mist)}
.selftest li b{flex:none;min-width:44px;font-weight:500}
.selftest li.ok b{color:var(--ok)}
.selftest li.bad b{color:var(--err)}
/* the pinned and preset forms: one printed card holding the head, the tool, the live line, the result and the plan */
.chooser-pinned,.chooser-preset{position:relative;--ground:var(--paper);gap:16px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:var(--pad) var(--pad) var(--pad) calc(var(--pad) + 10px)}
.chooser-pinned::before,.chooser-preset::before{content:"";position:absolute;left:15px;top:12px;bottom:12px;width:0;border-left:1px dashed var(--rule);pointer-events:none}
.chooser-pinned::after,.chooser-preset::after{content:"";position:absolute;left:0;top:0;bottom:0;width:8px;background:radial-gradient(circle at 0 50%,var(--ground) 2.5px,transparent 3px) 0 7px/8px 14px repeat-y;pointer-events:none}
:is(.chooser-pinned,.chooser-preset) .finder-sheet{margin:0;padding:0;background:none;box-shadow:none;gap:16px;z-index:auto}
:is(.chooser-pinned,.chooser-preset) .finder-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;padding-bottom:12px;border-bottom:1px solid var(--rule)}
:is(.chooser-pinned,.chooser-preset) .finder-head .kicker{font-size:12px}
:is(.chooser-pinned,.chooser-preset) .finder-h{font-weight:400;font-size:clamp(1.25rem,1.1rem + .6vw,1.5rem);line-height:1.25}
:is(.chooser-pinned,.chooser-preset) .finder-head .rule{display:none}
:is(.chooser-pinned,.chooser-preset) .finder-head .lede{flex-basis:100%;font-size:15.5px;line-height:1.5;color:var(--muted)}
:is(.chooser-pinned,.chooser-preset) .finder-tool{padding-top:0;border-top:0}
:is(.chooser-pinned,.chooser-preset) .office-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
:is(.chooser-pinned,.chooser-preset) .office-chips li{width:100%}
:is(.chooser-pinned,.chooser-preset) .office-chips .chip{width:100%;justify-content:flex-start;padding:0 7px;gap:5px;font-size:14.5px;white-space:normal;line-height:1.15;text-align:left}
:is(.chooser-pinned,.chooser-preset) .plan-card{padding:0;background:none;box-shadow:none;border-radius:0}
:is(.chooser-pinned,.chooser-preset) .plan-card::before,:is(.chooser-pinned,.chooser-preset) .plan-card::after,:is(.chooser-pinned,.chooser-preset) .plan-card>.tp-head{display:none}
:is(.chooser-pinned,.chooser-preset) .finder-field{grid-template-columns:minmax(0,1fr);gap:10px;min-height:0;padding:0;border:0;background:none;box-shadow:none}
:is(.chooser-pinned,.chooser-preset) .finder-field:focus-within{outline:none}
:is(.chooser-pinned,.chooser-preset) .finder-input{min-height:48px;padding:0 14px;border:1px solid var(--harbor);border-radius:var(--radius);background:var(--card)}
:is(.chooser-pinned,.chooser-preset) .finder-input:focus{outline:2px solid var(--harbor);outline-offset:2px}
:is(.chooser-pinned,.chooser-preset) .finder-find{width:100%;min-height:48px}
:is(.chooser-pinned,.chooser-preset) .tp-fields{grid-template-columns:minmax(0,1fr);gap:4px}
:is(.chooser-pinned,.chooser-preset) .tp-fields dt{padding-top:8px}
.chooser-preset .finder-tool,.chooser-preset .plan,.chooser-preset .result-change{display:none}
@media (min-width:980px){
  .chooser-full .finder-head{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);column-gap:clamp(28px,3.4vw,48px)}
  .chooser-full .finder-head>*{grid-column:1}
  .chooser-full .finder-head .lede{grid-column:2;grid-row:1 / span 3;align-self:end;max-width:none;font-size:clamp(1.05rem,.95rem + .35vw,1.18rem)}
}
@media (min-width:760px){
  .chooser-full .finder-tool{grid-template-columns:minmax(0,1fr) auto;align-items:center;row-gap:10px}
  .chooser-full .finder-label{grid-column:1;grid-row:1}
  .chooser-full .finder-geo{grid-column:2;grid-row:1;justify-self:end}
  .chooser-full .finder-hint,.chooser-full .finder-field,.chooser-full .chips-label,.chooser-full .office-chips{grid-column:1 / -1}
}
@media (max-width:859px){
  .office-chips{grid-template-columns:repeat(2,minmax(0,1fr));padding:0}
  .office-chips li{width:100%}
  .office-chips .chip{width:100%;justify-content:center;padding:0 10px 0 9px;gap:8px}
}

/* the office card: pale header strip, the address as one element, the phone lines, the hours block, the dated Google line, the
   address-based links and the action; the spare height is shared above the blocks so the actions sit level across a row */
.office-cards{position:relative;z-index:1;box-sizing:border-box;width:100%;max-width:var(--wrap);margin:0 auto;padding:0 max(var(--gutter),var(--sar)) 0 max(var(--gutter),var(--sal));display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap)}
.office-cards:empty{display:none}
.office-cards>*{min-width:0}
.office-card{position:relative;padding:var(--pad);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:12px;transition:box-shadow .25s,transform .25s var(--ease)}
.oc-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:calc(-1 * var(--pad)) calc(-1 * var(--pad)) 0;padding:14px var(--pad);background:var(--pale);border-radius:var(--radius) var(--radius) 0 0}
.oc-head h3{font-size:20px;line-height:1.25;color:var(--ink);margin:0;flex:1 1 auto;min-width:0}
.sat-tag{display:inline-block;font:500 11.5px/1.3 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--harbor-text);border:1.25px solid var(--harbor-text);border-radius:var(--radius);padding:2px 6px;white-space:nowrap}
.office-card[aria-current="true"]{box-shadow:0 0 0 1.25px var(--harbor),var(--shadow-2);transform:translateY(-4px)}
.office-addr{margin:0;overflow-wrap:anywhere}
.office-note{display:block;color:var(--muted);font-size:15px}
.office-tel{display:grid;gap:2px;margin:0;font-size:15.5px}
.office-hours{display:grid;gap:6px;align-content:start}
.office-hours:empty{display:none}
.oh-line .num.nb{white-space:normal}
.oh-line{display:block;font:500 14px/1.5 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--ink)}
.oh-day{font:500 11.5px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.oh-time{font:500 14.5px/1.4 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--ink)}
.oh-list{display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:14px;row-gap:3px;margin:0;align-items:baseline}.oh-list .oh-row{display:contents}.oh-list dt{margin:0;white-space:nowrap}.oh-list dd{margin:0;white-space:nowrap}
/* the hours rows in a narrow card (the four-across locations grid, a 320 px phone): the day label stacks over its time (2026-10-21) */
.office-card,.result-card{container-type:inline-size}
@container (max-width:292px){.oh-list{grid-template-columns:minmax(0,1fr);row-gap:0}.oh-list dt{margin-top:5px}.oh-list .oh-row:first-child dt{margin-top:0}.oh-list dd{font-size:13.5px}}
.office-card>.office-addr,.office-card>.office-tel,.office-card>.office-hours,.office-card>.dl{margin-top:auto}
.office-links{display:flex;flex-wrap:wrap;gap:0 18px;margin:0;font-size:15px}
.office-links:empty{display:none}
.office-links a{display:inline-flex;align-items:center;gap:5px;min-height:44px;font-weight:500}
.office-links svg{width:14px;height:14px}
.office-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:0;padding-top:4px}
.office-acts:empty{display:none}
.office-acts>*{flex:1 0 auto;min-width:0}
.office-acts .btn-cta{flex-basis:100%;min-width:0;max-width:100%;white-space:normal;text-align:center;line-height:1.25;padding-top:8px;padding-bottom:8px}
.office-acts .btn-sm{padding:0 10px;font-size:14.5px}
.office-acts a:not(.btn){display:inline-flex;align-items:center;min-height:44px;font-weight:500;flex:0 0 auto;min-width:0}
/* the phone lines: the label, the number in mono as a 44 px tel link on phones, the note on the main line only */
.tel-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px;margin:0;font-size:15.5px;line-height:1.45}
.tel-label{flex:none;min-width:3.6em;font:500 11.5px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.tel-line a{display:inline-block;padding:4px 0;color:var(--ink);text-decoration-color:var(--harbor)}
.tel-note{font-size:14.5px;color:var(--muted)}
.tel-note:empty{display:none}
/* the dated line: mono, with the date it was read */
.dl{display:block;margin:0;font:400 13.5px/1.6 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--ink);max-width:none}
.dl-mark{display:inline-block;width:12px;height:10px;margin-right:8px;vertical-align:-1px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.dl-read{display:block;color:var(--muted)}
.dl-read time{white-space:nowrap}
.dl-src,.dl a{color:var(--harbor-text);white-space:nowrap}
.dl svg{width:13px;height:13px;margin-left:3px;vertical-align:-2px}
/* the compact office list (the form pages, the posts, the 404) */
.office-list{display:grid;gap:0;border-top:1px solid var(--rule)}
.ol-item{display:grid;gap:4px;padding:14px 0;border-bottom:1px solid var(--rule)}
.ol-name{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0;font-weight:600}
.ol-name a{display:inline-flex;align-items:center;min-height:32px;color:var(--ink)}
.ol-tel{display:grid;gap:0}
.ol-addr{margin:0;overflow-wrap:anywhere}

/* the map band: the static poster by default, the live map on a tap (vendored Leaflet, harbor pins on one arch), the office cards
   riding over its lower edge */
.map-band{margin-top:clamp(36px,4vw,56px)}
.wrap>.map-band:first-child{margin-top:0}
.wrap>.map-band{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.map-cap{box-sizing:border-box;width:100%;max-width:var(--wrap);margin:0 auto 14px;padding:0 max(var(--gutter),var(--sar)) 0 max(var(--gutter),var(--sal));font-size:14.5px;color:var(--muted)}
.map-cap:empty{display:none}
.map-frame{position:relative;overflow:hidden;background:var(--mist)}
.map-frame::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none}
.map-frame:has(#map:focus-visible)::after{box-shadow:inset 0 0 0 2px var(--harbor)}
.map{position:relative;width:100%;height:100%;min-height:240px;background:var(--mist);z-index:0}
.map-static{position:absolute;top:0;left:max(0px,(100% - 1200px) / 2);width:min(100%,1200px);height:100%;object-fit:cover;z-index:300}
.map-empty{position:absolute;inset:0;z-index:300;display:grid;place-content:center;justify-items:center;gap:8px;padding:24px;text-align:center;background:var(--mist)}
.map-empty p{margin:0;max-width:24em}
.map-load{position:absolute;z-index:500;left:max(var(--gutter),var(--sal));top:auto;bottom:16px;background:var(--card)}
.map-load[aria-busy="true"]{opacity:.75;cursor:progress}
.map-office .map-load{left:50%;top:auto;bottom:24px;transform:translateX(-50%)}
.map.leaflet-container:not(.tiles-on) .leaflet-map-pane,.map.leaflet-container:not(.tiles-on) .leaflet-control-container{visibility:hidden}
.map.tiles-on .map-static,.map.tiles-on .map-empty{display:none}
.map.leaflet-container{font-family:var(--f-body);background:var(--mist)}
.map.leaflet-container img.leaflet-tile{max-width:none}
.map .leaflet-attribution-flag{width:1em;height:.6669em;display:inline}
.map.leaflet-container .leaflet-control-attribution{font:400 13px/1.4 var(--f-mono);color:var(--muted);background:rgba(251,246,238,.88)}
.map .leaflet-control-attribution a{color:var(--harbor-text)}
.map .leaflet-bar a{color:var(--harbor-text);background:var(--paper);font-family:var(--f-mono);font-weight:500}
.map-arch[pathLength]{stroke-dasharray:1;stroke-dashoffset:0}
.map.run .map-arch[pathLength]{animation:archDraw 1.4s var(--ease) both}
.pin-wrap,.leaflet-marker-icon.pin-wrap{background:none;border:0;display:flex;align-items:center;justify-content:center}
.pin-wrap.off,.leaflet-marker-icon.pin-wrap.off{display:none}
.pin{position:relative;display:block;width:22px;height:18px;transition:transform .2s var(--ease);filter:drop-shadow(0 1px 2px rgba(15,37,42,.35))}
.pin svg{width:22px;height:18px;display:block}
.pin::after{content:"";position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;border:1.5px solid var(--harbor);opacity:0;pointer-events:none}
.pin-wrap.is-on .pin{transform:scale(1.25)}
.pin-wrap.pulse .pin::after{animation:pinPulse .6s ease-out both}
.pin-label{position:absolute;left:34px;top:12px;white-space:nowrap;font:500 12px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--harbor-text);background:rgba(251,246,238,.92);padding:1px 6px;border-radius:var(--radius)}
.pin-wrap.up .pin-label{top:auto;bottom:38px;left:50%;transform:translateX(-50%)}
.pin-wrap.flip .pin-label{left:auto;right:34px}
.pin-wrap.flip.up .pin-label{right:auto;left:50%}
#map .leaflet-bar a,#map.leaflet-touch .leaflet-bar a{width:36px;height:36px;line-height:36px}
.map-band>.office-cards{margin-top:var(--cgap)}

/* the proof band: pale, the dated mono lines, air; the total in mono beside the sentence at the h2 scale */
.proof-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 28px;margin-top:4px}
.proof-num{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-weight:500;font-size:clamp(64px,9vw,128px);line-height:.95;letter-spacing:-.02em;color:var(--ink)}
.proof-rest{display:flex;flex-direction:column;font-size:clamp(1.5rem,1rem + 1.9vw,2.4rem);line-height:1.15;max-width:15em;text-wrap:balance}
.proof-top{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap) clamp(32px,5vw,72px);align-items:end}
.proof-top>*{min-width:0}
.proof-top .rule{margin-bottom:0}
.g-lines{display:grid;grid-template-columns:minmax(0,1fr);margin:0 0 14px;border-top:1px solid var(--rule)}
.g-lines>*{min-width:0;border-bottom:1px solid var(--rule)}
.g-lines a{display:grid;grid-template-columns:minmax(0,1fr) auto auto 14px;align-items:baseline;gap:6px 16px;padding:14px 2px;min-height:48px;text-decoration:none;color:var(--ink)}
.gl-town{font:600 17px/1.3 var(--f-body)}
.gl-rate{font:500 clamp(1.45rem,1.2rem + .7vw,1.85rem)/1 var(--f-mono);letter-spacing:-.01em}
.gl-count{font:400 14.5px/1.3 var(--f-body);color:var(--muted);min-width:7.6em;text-align:right}
.gl-count .num{font-weight:500}
.gl-ext{width:14px;height:14px;color:var(--harbor-text);align-self:center}
.g-note{color:var(--muted);font-size:14.5px;margin:0}
.quotes-bracket{margin:clamp(36px,4vw,56px) 0 0;max-width:none}
.quotes{display:grid;grid-template-columns:minmax(0,1fr);gap:28px 44px;margin-top:clamp(36px,4vw,56px)}
.quotes-bracket+.quotes{margin-top:20px}
.quotes>*{min-width:0}
.quote{margin:0;padding:22px 0 0;border-top:1px solid var(--rule);display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 18px;align-content:start}
.quote-mono{grid-row:1/3;width:52px;height:52px;display:inline-flex;align-items:center;justify-content:center;border:1.25px solid var(--harbor-text);border-radius:50%;font:400 22px/1 var(--f-disp);letter-spacing:.02em;color:var(--harbor-text)}
.quote blockquote{margin:0;font:400 clamp(1.25rem,1.15rem + .4vw,1.375rem)/1.5 var(--f-disp);color:var(--ink);max-width:30em}
.quote blockquote p{max-width:none;margin:0}
.quote figcaption{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:15px;color:var(--muted)}
.quote cite{font-style:normal;display:inline-flex;align-items:center;gap:8px}
.quote cite::before{content:"";width:14px;height:1px;background:var(--rule)}
.quote figcaption a{display:inline-flex;align-items:center;gap:4px;min-height:24px}
.quote figcaption a svg{width:14px;height:14px}
.quotes-label{margin:24px 0 0;font-size:14px;color:var(--muted)}
.prose .quote{margin:0 0 28px}
.prose .quote blockquote{padding:0;border:0}

/* the doctors: folios on borderless cards, the medallion in a card ring with the harbor bracket seated on it */
.doc-cols{display:grid;gap:var(--cgap);align-items:start}
/* the Founder section of the doctors page: on paper beneath a 1 px rule, lower on the page */
.part-founder>.wrap{border-top:1px solid var(--rule);padding-top:clamp(28px,3vw,44px)}
.doc{display:grid;gap:14px;padding:var(--pad);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1);align-content:start}
.doc-head{display:grid;gap:16px;justify-items:start;margin-bottom:2px}
.doc-med{position:relative;flex:none;width:112px;height:112px;margin-top:8px}
.doc-med:empty{display:none}
.doc-med img{width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:50% 18%;background:radial-gradient(70% 70% at 50% 35%,#E2EEF3,#C5DDEA);box-shadow:0 0 0 3px var(--card),0 0 0 4px var(--rule),0 10px 24px -14px rgba(15,37,42,.35)}
.doc-med::after{content:"";position:absolute;left:50%;top:-8px;width:12px;height:10px;margin-left:-6px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.doc-id{min-width:0}
.doc-id h3{font-size:clamp(1.35rem,1.2rem + .45vw,1.55rem);color:var(--ink);text-wrap:balance}
.doc-cred{margin:6px 0 0;font-size:14.5px;color:var(--muted)}
.doc-deg{font:500 13.5px/1.4 var(--f-mono);color:var(--harbor-text);margin-right:8px}
.doc-schools{display:grid;gap:2px;margin:0;padding:12px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);font-size:14.5px;line-height:1.6;color:var(--muted)}
.doc-schools:empty{display:none}
.doc-schools li{display:flex;align-items:flex-start;gap:10px;min-width:0}
.doc-schools .sep,.doc-schools li:not(:has(.sep))::before{content:"";flex:none;display:inline-block;width:10px;height:8px;margin-top:calc(.8em - 4px);border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.doc-bio{display:grid;gap:12px}
.doc-bio:empty{display:none}
.doc p{margin:0;max-width:none;font-size:16px}
.doc .fn{font-size:14.5px;color:var(--muted)}
.doc .fn a{overflow-wrap:anywhere}
.doc-lang{font-size:15px;color:var(--muted)}
.doc-founder{margin:var(--cgap) 0 0;font-size:16px;color:var(--ink)}
.doc-founder a{font-weight:500}
.doc-award{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(16px,2.4vw,28px);align-items:start;margin-top:var(--cgap);padding:calc(var(--pad) + 6px) var(--pad);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1)}
.doc-award>*{min-width:0}
.award-mark{display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;border:1.25px solid var(--harbor-text);background:none;color:var(--harbor-text)}
.award-mark svg{width:26px;height:21px}
.doc-award .kicker{margin-bottom:12px}
.award-quote{margin:0;font:400 clamp(1.25rem,1.1rem + .55vw,1.5rem)/1.45 var(--f-disp);color:var(--ink)}
.award-quote p{margin:0 0 10px;max-width:30em}
.award-quote footer{font:400 14.5px/1.4 var(--f-body);color:var(--muted)}
.doc-award .fn{font-size:14.5px;color:var(--muted);margin:12px 0 0;max-width:34em}
.shelf{margin-top:var(--cgap);padding:var(--pad);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1)}
.shelf h3{font:500 12px/1.4 var(--f-mono);letter-spacing:var(--trk);text-transform:uppercase;color:var(--harbor-text);margin-bottom:12px}
.shelf ul{display:grid;gap:10px;font-size:15px}
.shelf li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;align-items:baseline;padding-bottom:10px;border-bottom:1px solid var(--rule)}
.shelf li>*{min-width:0}
.shelf li:last-child{border-bottom:0}
.shelf .jr{display:block;color:var(--muted);font-size:14px}
.shelf .yr{color:var(--muted);white-space:nowrap}
.shelf .shelf-attr{margin:14px 0 0;font-size:14px;color:var(--muted);max-width:none}
@media (max-width:599px){.doc-award{grid-template-columns:minmax(0,1fr)}.award-mark{width:52px;height:52px}}
/* the team roster: role in mono, the first name in the display face */
.roster{display:grid;grid-template-columns:minmax(0,1fr);gap:0 clamp(24px,4vw,48px)}
.roster-item{display:grid;gap:2px;padding:14px 0;border-bottom:1px solid var(--rule)}
.ro-role{font:500 11.5px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.ro-name{font:400 20px/1.3 var(--f-disp);letter-spacing:.01em;color:var(--ink)}
@media (min-width:760px){.roster{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* who we treat, the gallery and the typographic plates (the homepage and the treatment hub) */
.plates{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap);margin-top:8px}
.plates>*{min-width:0}
.plate{display:flex;flex-direction:column;gap:var(--igap);padding:0 var(--pad) var(--pad);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1);overflow:hidden}
.plate-img{width:calc(100% + 2 * var(--pad));align-self:flex-start;margin:0 calc(-1 * var(--pad)) 4px;aspect-ratio:4/3;overflow:hidden;background:var(--pale);border-bottom:0}
.plate-img img{width:100%;height:100%;object-fit:contain}
.plate h3{font-size:1.35rem}
.plate p{margin:0;max-width:34em}
.plate .btn{align-self:flex-start;margin-top:auto}
.plate p:last-of-type{margin-bottom:4px}
.gallery{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap);margin-top:8px}
.gallery>*{min-width:0}
.treat-item{position:relative;display:flex;flex-direction:column;gap:0;padding:0;border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1);overflow:hidden}
.treat-item .treat-fig{margin:0}
.treat-img{position:relative;overflow:hidden;aspect-ratio:16/9;background:var(--pale)}
.treat-img img{width:100%;height:100%;object-fit:cover}
.treat-body{display:flex;flex-direction:column;gap:var(--igap);padding:var(--pad);flex:1 1 auto}
.treat-body h3{font-size:clamp(1.35rem,1.2rem + .6vw,1.6rem)}
.treat-body p,.tplate p{margin:0;max-width:34em}
.treat-act{position:relative;z-index:2;margin:auto 0 0;padding-top:4px}
.treat-act .btn{min-height:44px;padding:0 14px;font-size:14.5px}
.treat-plates{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap);margin-top:var(--cgap)}
.treat-plates>*{min-width:0}
.tplate{position:relative;display:flex;flex-direction:column;gap:var(--igap);padding:var(--pad);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1)}
.tplate h3{font-size:1.25rem}
.cover{color:var(--ink);text-decoration:none}
.cover::after{content:"";position:absolute;inset:0;z-index:1;border-radius:var(--radius)}
.cover:focus-visible{outline:none}
.cover:focus-visible::after{outline:2px solid var(--harbor);outline-offset:3px}
/* the office page's treatment list */
.treatment-list{display:grid;gap:0;border-top:1px solid var(--rule)}
.treatment-item{display:grid;gap:4px;padding:16px 0;border-bottom:1px solid var(--rule)}
.ti-link{display:inline-flex;align-items:center;gap:8px;min-height:32px;font:400 1.25rem/1.3 var(--f-disp);letter-spacing:.01em;color:var(--ink);text-decoration:none}
.ti-link svg{width:16px;height:16px;color:var(--harbor-text)}
.ti-line{margin:0;color:var(--muted);font-size:16px}
/* the blog's dated shelf */
.post-year{font:500 12px/1.4 var(--f-mono);letter-spacing:var(--trk);text-transform:uppercase;color:var(--harbor-text);margin:clamp(28px,3vw,40px) 0 0;padding-bottom:10px;border-bottom:1px solid var(--rule)}
.post-rows{display:grid}
.post-row{display:grid;gap:4px;padding:18px 0;border-bottom:1px solid var(--rule)}
.pr-date{font:500 13px/1.4 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--muted)}
.pr-title{font-size:clamp(1.25rem,1.15rem + .3vw,1.375rem);line-height:1.3}
.pr-title a{color:var(--ink);text-decoration-color:var(--rule)}
.pr-excerpt{margin:0;font-size:15.5px;color:var(--muted)}
.pr-excerpt:empty{display:none}
.byline{margin:0;font:400 13px/1.4 var(--f-mono);color:var(--muted)}
/* the review-us cards */
.review-cards{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap)}
.review-card{display:flex;flex-direction:column;gap:12px;padding:var(--pad);border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-1)}
.rv-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.rv-head h3{font-size:20px;flex:1 1 auto}
.rv-addr{margin:0}
.rv-act{margin:auto 0 0}
@media (min-width:760px){.review-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* the emergency card and the phone card (forms in phone-only mode) */
.ec-tel{margin:0 0 12px}
.ec-tel a{display:inline-flex;align-items:center;gap:12px;min-height:56px;font-size:clamp(1.6rem,1.2rem + 1.4vw,2.25rem);color:var(--ink);text-decoration-color:var(--harbor)}
.ec-tel svg{width:28px;height:28px;color:var(--harbor-text)}
.ec-after,.ec-list{display:grid;gap:10px}
.ec-after:empty,.ec-list:empty{display:none}
.ec-list ul{display:grid;gap:8px}
.ec-list li{position:relative;padding-left:22px}
.ec-list li::before{content:"";position:absolute;left:0;top:calc(.78em - 4px);width:10px;height:8px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.phone-card{display:grid;gap:12px}
.pc-acts{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
/* the closing band of inner pages */
.cta-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap) clamp(32px,5vw,72px);align-items:end}
.cta-grid>*{min-width:0}
.cta-copy h2{font-size:clamp(1.8rem,1.2rem + 2vw,2.75rem)}
.cta-copy .lede{margin:0}
.cta-acts{display:flex;flex-wrap:wrap;gap:12px}
@media (min-width:980px){.cta-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr)}.cta-acts{justify-content:flex-end}}
/* the 404 body */
.nf-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--cgap) clamp(32px,5vw,72px)}
.nf-grid h2{font-size:clamp(1.4rem,1.15rem + .9vw,1.85rem);margin-bottom:14px}
.nf-links{display:grid;gap:0;border-top:1px solid var(--rule)}
.nf-links li{border-bottom:1px solid var(--rule)}
.nf-links a{display:flex;align-items:center;min-height:48px;font-weight:500}
.nf-call{margin-top:18px}
@media (min-width:980px){.nf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* the FAQ: the questions on a pale field, native details, 1 px rules between rows; the open question in harbor-text */
.faq-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(24px,4vw,56px);align-items:start}
.faq-grid>*{min-width:0}
.faq-list{display:grid;gap:0;padding:4px var(--pad);border-radius:var(--radius);background:var(--pale)}
.faq-list details{border-top:1px solid var(--rule)}
.faq-list details:first-child{border-top:0}
.faq-list summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:16px 0;cursor:pointer;font-weight:600;font-size:16.5px;line-height:1.4;color:var(--ink);list-style:none}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary svg{width:20px;height:20px;flex:none;color:var(--harbor-text);transition:transform .2s var(--ease)}
.faq-list details[open] summary{color:var(--harbor-text)}
.faq-list details[open] summary svg{transform:rotate(45deg)}
.faq-a{padding:0 0 20px}
.faq-a p{margin:0}

/* forms: the printed request card; one partial for every kind; idle, validating, sending, confirmed, failed */
.sheet{box-shadow:var(--shadow-2)}
.lead-form{position:relative;display:grid;gap:16px;container-type:inline-size}
.f-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.f-grid:empty{display:none}
@container (min-width:440px){
  .f-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .f-grid>.fld{grid-column:1/-1}
  .f-grid>:is(.fld-phone,.fld-email,.fld-patient,.fld-interest,.fld-doctor_phone,.fld-doctor_email,.fld-patient_name,.fld-patient_phone){grid-column:auto}
}
.fld{display:grid;gap:6px;min-width:0;align-content:start}
.fld label,.fld legend{font-weight:600;font-size:15px}
.fld .opt{font-weight:400;color:var(--muted)}
.fld input,.fld select,.fld textarea{min-height:48px;padding:10px 14px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--card);color:var(--ink);font:400 17px/1.4 var(--f-body);width:100%;min-width:0}
.fld textarea{min-height:96px;resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--harbor);outline:2px solid var(--harbor);outline-offset:2px}
.fld .hint{font-size:14px;color:var(--muted)}
.fld-check{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:0 12px;min-height:44px}
.fld-check input{width:20px;height:20px;min-height:0;margin:12px 0 0;padding:0;accent-color:var(--harbor)}
.fld-check label{font-weight:400;font-size:15px;line-height:1.45;padding:10px 0;cursor:pointer}
.lead-form.validating :is(input,select,textarea)[aria-invalid="true"]{border-color:var(--err)}
.f-msg{font-size:14px;color:var(--err)}
.f-msg:empty{display:none}
.hp{position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.hp input{position:absolute;left:0;top:0;width:1px;height:1px;min-height:0;margin:0;padding:0;border:0;opacity:0}
.f-note{font-size:15px;color:var(--muted);margin:0;max-width:34em}
.f-turnstile:empty{display:none}
.f-grid{align-items:end}
.f-noscript{margin:0;font-size:14.5px;color:var(--ink)}
.f-submit{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:8px}
.f-status{font-size:14.5px;font-weight:500;color:var(--muted);margin:0}
.f-status:empty{display:none}
.lead-form button[type="submit"][disabled]{opacity:.7;cursor:progress}
.f-error{padding:20px 22px;border:1px solid var(--err);border-radius:var(--radius);background:#FBF1F0;color:var(--ink)}
.f-error p{margin:0 0 10px;max-width:none}
.f-error .row-links{display:flex;flex-wrap:wrap;gap:8px}
.f-error .row-links a,.f-error .btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--err);border-radius:var(--radius);background:var(--card);text-decoration:none;font-weight:600;color:var(--ink)}
.f-direct{font-size:15.5px}
.f-ok{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:4px 0}
.f-ok>*{min-width:0}
.f-ok :is(h2,h3){font-size:clamp(1.35rem,1.15rem + .6vw,1.6rem)}
.f-ok p{margin:0;max-width:32em}
.f-ok .tp-stamp-row{justify-content:flex-start;margin-bottom:4px}
.f-check{display:inline-flex;align-items:center;gap:8px;font:500 13px/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ok)}
.f-check svg{width:18px;height:18px}

/* the footer, the one ink band: the lockup and the retainer close, the town line, the four office rows, the links, the legal block */
.site-foot{position:relative;color:var(--od-text);background:var(--ink);padding:calc(clamp(44px,5vw,72px) + var(--dip)) 0 calc(28px + env(safe-area-inset-bottom))}
.site-foot a{color:var(--od-link);text-decoration-color:var(--od-muted)}
.site-foot :focus-visible{outline-color:var(--pale)}
.site-foot .brk{background:none;box-shadow:none;border:1.25px solid var(--pale)}
.site-foot .btn-line{color:var(--pale);border-color:var(--pale)}
.site-foot .foot-brand{display:grid;gap:8px;justify-items:start;margin-bottom:clamp(20px,2.4vw,32px)}
.site-foot .foot-lockup{display:inline-flex;align-items:center;gap:12px}
.site-foot .foot-mark{height:44px;width:auto}
.site-foot .foot-name{width:200px;height:auto}
.site-foot .retainer{width:320px;max-width:100%;height:44px;overflow:visible;display:block}
.site-foot .ret-wire{fill:none;stroke:var(--pale);stroke-width:1.5;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}
.site-foot .ret-tick{fill:none;stroke:var(--pale);stroke-width:1.25;transform-box:fill-box;transform-origin:50% 100%}
.site-foot .foot-brand.run .ret-wire{animation:archDraw .9s var(--ease) both}
.site-foot .foot-brand.run .ret-tick{animation:seat .45s var(--ease) .7s both}
.site-foot .foot-tag{font:500 12px/1.4 var(--f-mono);letter-spacing:var(--trk);text-transform:uppercase;color:var(--od-kicker);margin:0}
.site-foot .foot-towns{font:400 clamp(1.4rem,1.1rem + 1vw,1.85rem)/1.25 var(--f-disp);letter-spacing:.01em;color:var(--od-text);margin:0 0 4px;max-width:none}
.site-foot .foot-towns .ft-sep{color:var(--od-muted)}
.site-foot .foot-mono{font:500 13px/1.4 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--od-kicker);margin:0 0 clamp(20px,2.4vw,32px);max-width:none}
.site-foot .foot-rows{display:grid;gap:0;padding:8px 0;border-top:1px solid var(--od-line);border-bottom:1px solid var(--od-line)}
.site-foot .foot-row{display:grid;grid-template-columns:auto minmax(0,1.25fr) minmax(0,1fr) minmax(0,1fr);gap:6px 18px;align-items:start;padding:16px 0;border-bottom:1px solid var(--od-line);font-size:15px}
.site-foot .foot-row:last-child{border-bottom:0}
.site-foot .foot-row .brk{margin-top:6px}
.site-foot .foot-row h3{font:600 15px/1.4 var(--f-body);letter-spacing:0;color:var(--od-text);margin:0 0 2px}
.site-foot .foot-row .sat-tag{color:var(--od-kicker);border-color:var(--od-kicker);margin:2px 0 4px}
/* a two-up footer plate at 320 px is narrower than the one-line tag: the tag wraps inside its plate, never past the edge */
@media (max-width:399px){.site-foot .foot-row .sat-tag{white-space:normal}}
.site-foot .foot-row p,.site-foot .fr-addr{margin:0;overflow-wrap:anywhere;max-width:none;color:var(--od-soft)}
.site-foot .fr-addr .office-note{color:var(--od-muted)}
.site-foot .fr-tel{display:grid;gap:0}
.site-foot .fr-tel .tel-label{color:var(--od-muted)}
.site-foot .fr-tel .tel-line a{color:var(--od-text);text-decoration-color:var(--od-muted)}
.site-foot .fr-tel .tel-note{color:var(--od-soft)}
.site-foot .oh-line{color:var(--od-soft)}
.site-foot .oh-day{color:var(--od-muted)}.site-foot .oh-time{color:var(--od-soft);font-size:13.5px}.site-foot .foot-row .hrs{container-type:inline-size}
.site-foot .foot-row .hrs{grid-column:4;font:400 13.5px/1.5 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--od-soft)}
.site-foot .foot-row .hrs:empty{display:none}
.site-foot .foot-row .acts{grid-column:4;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:14.5px}
.site-foot .foot-row .acts a{display:inline-flex;align-items:center;min-height:24px}
.site-foot .foot-links{display:grid;gap:22px;padding:24px 0;border-bottom:1px solid var(--od-line)}
.site-foot .foot-contact{display:flex;flex-wrap:wrap;gap:6px 22px;font-size:16px;margin:0}
.site-foot .foot-contact a{display:inline-flex;align-items:center;min-height:24px}
.site-foot .foot-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:20px 28px;font-size:15px}
.site-foot .foot-list>li>h3,.site-foot .fl-title{font:500 12px/1.4 var(--f-mono);letter-spacing:var(--trk);text-transform:uppercase;color:var(--od-kicker);margin:0 0 8px}
.site-foot .foot-list ul{display:grid;gap:2px}
.site-foot .foot-list a{display:inline-flex;align-items:center;gap:5px;min-height:28px}
.site-foot .foot-list svg,.site-foot .foot-social svg{width:14px;height:14px}
.site-foot .foot-list .leave{color:var(--od-muted);font-size:13.5px;margin-left:4px}
.site-foot .foot-social{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:15px}
.site-foot .foot-social:empty{display:none}
.site-foot .foot-social a{display:inline-flex;align-items:center;gap:5px;min-height:28px}
.site-foot .foot-all{margin:12px 0 0;font-size:15px}
.site-foot .foot-all a{display:inline-flex;align-items:center;min-height:44px;font-weight:500}
.site-foot .foot-legal{padding-top:20px;display:grid;gap:6px}
.site-foot .foot-legal-links{display:flex;flex-wrap:wrap;gap:4px 22px;margin:0 0 8px;font-size:15px}
.site-foot .foot-legal-links a{display:inline-flex;align-items:center;min-height:44px}
.site-foot .owner-line,.site-foot .foot-legal .small{color:#C9D5D9;font-size:14px;margin:0;max-width:40em}
.site-foot .agency-credit{margin:8px 0 0;font-size:14px;color:var(--mist);max-width:none}
.site-foot .agency-credit a{color:var(--mist);white-space:nowrap;text-decoration:underline}

/* the pinned bar: phones only, two plates (Call, Request appointment), after 60 percent of the first section, never over a form */
.callbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:950;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:8px;padding:8px max(8px,var(--sar)) calc(8px + env(safe-area-inset-bottom)) max(8px,var(--sal));background:var(--paper);border-top:1px solid var(--rule);box-shadow:0 -10px 28px -16px rgba(15,37,42,.25);transform:translateY(110%);visibility:hidden;transition:transform .3s var(--ease),visibility 0s linear .3s}
.callbar.show{transform:none;visibility:visible;transition:transform .3s var(--ease),visibility 0s}
.callbar.cb-single,.callbar:not(:has(.cb-cta)){grid-template-columns:minmax(0,1fr)}
.cb-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:0 8px;white-space:nowrap;border:1px solid var(--harbor);border-radius:var(--radius);background:var(--card);color:var(--harbor-text);font-weight:600;font-size:15px;text-decoration:none;cursor:pointer;position:relative}
.cb-btn svg{width:18px;height:18px;color:var(--harbor-text)}
.cb-cta{background:var(--cta);border-color:var(--cta);color:#FFFFFF}
.cb-cta svg{color:#FFFFFF}

/* the drawer and the consult dialog: native dialogs, focus trapped and Escape handled by the platform */
dialog{color:var(--ink)}
dialog::backdrop{background:rgba(15,37,42,.55)}
.drawer{position:fixed;inset:0 0 0 auto;margin:0;width:min(88vw,360px);height:100dvh;max-height:100dvh;border:0;padding:0;background:var(--paper);box-shadow:var(--shadow-2);display:none;grid-template-rows:auto minmax(0,1fr) auto}
.drawer[open]{display:grid}
.drawer:focus{outline:none}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px max(12px,var(--sar)) 10px 16px;border-bottom:1px solid var(--rule)}
.drawer-call{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--harbor);border-radius:var(--radius);color:var(--harbor-text);text-decoration:none;font-weight:600}
.drawer-call svg{width:18px;height:18px}
.drawer-nav{display:grid;align-content:start;padding:8px max(8px,var(--sar)) 8px 8px;overflow:auto;overscroll-behavior:contain}
.drawer-group summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:0 12px;border-radius:var(--radius);font-size:18px;font-weight:500;color:var(--ink);cursor:pointer;list-style:none}
.drawer-group summary::-webkit-details-marker{display:none}
.drawer-group summary::after{content:"";flex:none;width:7px;height:7px;margin:-4px 4px 0 0;border-right:1.25px solid var(--harbor-text);border-bottom:1.25px solid var(--harbor-text);transform:rotate(45deg)}
.drawer-group[open] summary::after{transform:translateY(4px) rotate(-135deg)}
.drawer-group[open] summary{color:var(--harbor-text)}
.dg-links{display:grid;padding:0 0 8px 12px}
.dg-links a{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-height:44px;padding:0 12px;border-radius:var(--radius);font-size:15.5px;font-weight:500;color:var(--ink);text-decoration:none;overflow-wrap:anywhere}
.dg-links .dg-hub a{color:var(--harbor-text);gap:8px}
.dg-links .dg-hub svg{width:16px;height:16px}
.dg-sub{display:grid;margin-top:6px}
.dg-title{margin:0;padding:8px 12px 4px;font:500 12px/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.dg-sublinks{display:grid}
.dg-plain{margin:0}
.dg-plain a{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:0 12px;border-radius:var(--radius);font-size:18px;font-weight:500;color:var(--ink);text-decoration:none}
.dg-plain svg{width:16px;height:16px;color:var(--harbor-text)}
.dg-plain a[aria-current="page"]{color:var(--harbor-text)}
.dg-links a[aria-current="page"],.drawer-more a[aria-current="page"]{color:var(--harbor-text)}
.dg-links a[aria-current="page"]::before,.drawer-more a[aria-current="page"]::before{content:"";flex:none;width:10px;height:8px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.drawer-more{display:grid;margin-top:8px;padding-top:8px;border-top:1px solid var(--rule)}
.drawer-more:empty{display:none}
.drawer-more a{display:flex;align-items:center;gap:8px;min-height:48px;padding:0 12px;border-radius:var(--radius);font-size:17px;font-weight:500;color:var(--ink);text-decoration:none}
.drawer-foot{display:grid;gap:10px;padding:12px max(16px,var(--sar)) calc(12px + env(safe-area-inset-bottom)) 16px;border-top:1px solid var(--rule)}
.drawer-foot .btn{width:100%}
.consult-dialog{position:fixed;inset:0;margin:auto;width:min(92vw,640px);max-height:92dvh;overflow:hidden;overscroll-behavior:contain;padding:0;border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-2);display:none;grid-template-rows:auto minmax(0,1fr)}
.consult-dialog[open]{display:grid}
.cd-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px var(--pad) 10px calc(var(--pad) + 10px);border-bottom:1px solid var(--rule);background:var(--card)}
.cd-head .kicker{margin:0}
.cd-body{overflow:auto;overscroll-behavior:contain;padding:var(--igap) var(--pad) var(--pad) calc(var(--pad) + 10px)}
.cd-title{font-size:clamp(1.5rem,1.2rem + 1.2vw,2rem);margin:0 0 8px}
.cd-sub{color:var(--muted);margin-bottom:16px;max-width:none}
.cd-fields{padding:12px 14px;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);margin-bottom:16px}
.cd-body .tp-card.sheet{padding:0;background:none;box-shadow:none;border-radius:0}
.cd-body .tp-card.sheet::before,.cd-body .tp-card.sheet::after,.cd-body .sheet>.tp-head{display:none}

/* the site chat, Ask us (DECISIONS, October 22, 2026; _build/plan/chatbot.md): the header pill from 760 to 1159 px, the compact plate
   in the pinned bar under 760 px (a glyph with its label for screen readers under 480 px, so the three plates fit; under 400 px the
   kit's own rule lets a plate's label take two lines), the drawer's first row, and the dialog in the printed-card language: a sheet on
   phones, a 420 px card at the lower right from 760 px. From 1160 px the five nav items leave the header 19 px, too little for the
   pill, so the bar's Ask plate rides alone at the lower right on the bar's own rules (in once the first section has scrolled away,
   out over a form section and while a dialog is open; the two form pages carry no Ask plate), opaque over whatever lies under it,
   with a ring on a card halo that reads on paper and on the ink footer alike. A component, never an effect: nothing moves beyond the
   dialog opening and the bar's own slide, so Reduce Motion changes nothing here. Without script every launcher is a link to the FAQ. */
.ask-pill{display:none;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--harbor);border-radius:var(--radius);color:var(--harbor-text);text-decoration:none;font-weight:600;font-size:15px;white-space:nowrap;transition:min-height .2s var(--ease),background-color .2s}
.ask-pill svg{width:18px;height:18px;flex:none;color:var(--harbor-text)}
@media (min-width:760px) and (max-width:1159px){.ask-pill{display:inline-flex}}
.cb-ask{flex:none;padding:0 10px;gap:5px}
.cb-us{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.callbar:has(.cb-ask){grid-template-columns:auto minmax(0,1fr) minmax(0,1.4fr)}
@media not all and (max-width:1159px){
  html:has(#callbar .cb-ask){scroll-padding-bottom:88px}
  .callbar:has(.cb-ask){display:flex;left:auto;right:max(24px,var(--sar));bottom:24px;padding:0;border:0;background:none;box-shadow:none;transform:translateY(calc(100% + 40px))}
  .callbar:has(.cb-ask).show{transform:none}
  .callbar:has(.cb-ask)>.cb-btn:not(.cb-ask){display:none}
  .cb-ask{min-height:48px;padding:0 18px;gap:8px;box-shadow:var(--shadow-2)}
  .cb-us{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
  .callbar .cb-ask:focus-visible{box-shadow:0 0 0 7px var(--card),var(--shadow-2)}
}
@media not all and (max-width:1159px){@media (hover:hover){.callbar .cb-ask:hover{background:color-mix(in srgb,var(--harbor) 7%,var(--card));color:var(--harbor-text)}}}
.dg-ask{margin:0 0 6px}
.dg-ask a{justify-content:flex-start;gap:10px;color:var(--harbor-text);background:var(--harbor-wash)}
.dg-ask svg{width:20px;height:20px;flex:none;color:var(--harbor-text)}
.ask-dialog{position:fixed;inset:auto 16px 16px auto;margin:0;width:min(420px,calc(100vw - 32px));height:min(680px,calc(100dvh - 32px));max-height:calc(100dvh - 32px);overflow:hidden;overscroll-behavior:contain;padding:0;border:0;border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-2);display:none;flex-direction:column}
.ask-dialog[open]{display:flex}
.ask-head,.ask-foot{flex:none}
.ask-dialog::backdrop{background:rgba(15,37,42,.35)}
.ask-dialog:focus{outline:none}
.ask-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px var(--pad) 10px calc(var(--pad) + 10px);border-bottom:1px solid var(--rule)}
.ask-head .kicker{margin:0}
.ask-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:var(--igap) var(--pad) var(--igap) calc(var(--pad) + 10px);scroll-behavior:smooth}
.ask-title{font-size:clamp(1.35rem,1.2rem + .6vw,1.6rem);margin:0 0 6px}
.ask-title:focus{outline:none}
.ask-sub{font-size:14.5px;line-height:1.5;color:var(--muted);margin:0 0 var(--igap);max-width:none}
.ask-thread{display:grid;gap:14px;margin:0}
.ask-msg{display:grid;min-width:0}
.ask-q{justify-items:end}
.ask-q p{margin:0;max-width:88%;padding:10px 14px;border-radius:var(--radius);background:var(--pale);color:var(--ink);font-size:16px;line-height:1.45;overflow-wrap:anywhere}
.ask-a{grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start}
.ask-a>.brk{margin-top:7px}
.ask-bubble{display:grid;gap:8px;min-width:0;font-size:16px;line-height:1.5}
.ask-bubble p{margin:0;max-width:none;overflow-wrap:anywhere}
.ask-bubble ul,.ask-bubble ol{display:grid;gap:6px;margin:0}
.ask-bubble ul>li{position:relative;padding-left:18px}
.ask-bubble ul>li::before{content:"";position:absolute;left:0;top:calc(.78em - 4px);width:10px;height:8px;border-radius:2px;background:var(--bracket-h);box-shadow:var(--bracket-h-ring)}
.ask-bubble a{overflow-wrap:anywhere}
.ask-off{display:grid;gap:4px;padding:10px 0 2px;border-top:1px solid var(--rule);container:askoff/inline-size}
.ask-off:first-child{border-top:0;padding-top:0}
.ask-off h3{font-size:1.1rem;line-height:1.3;margin:0}
.ask-off address{margin:0;overflow-wrap:anywhere}
.ask-off .office-note{display:block;color:var(--muted);font-size:15px}
.ask-off .tel-line{font-size:15px}
.ask-off .oh-list{font-size:14px;row-gap:2px}
.ask-off .result-dist{margin:0}
@container askoff (max-width:340px){.ask-off .oh-list{grid-template-columns:minmax(0,1fr);row-gap:0}.ask-off .oh-list dt{margin-top:5px}.ask-off .oh-list .oh-row:first-child dt{margin-top:0}.ask-off .oh-list dd{font-size:13.5px}}
@media (pointer:coarse){.ask-off .tel-line a{display:inline-flex;align-items:center;min-height:44px}}
.ask-src{font:500 11.5px/1.5 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0}
.ask-quote{display:grid;gap:4px;min-width:0}
.ask-fq{font-weight:600;color:var(--ink)}
.ask-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:2px}
.ask-acts .btn{min-height:44px;max-width:100%;padding:0 14px;font-size:15px}
.ask-acts a:not(.btn){display:inline-flex;align-items:center;gap:5px;min-height:44px;font-weight:500}
.ask-acts a:not(.btn) svg{width:14px;height:14px;color:var(--harbor-text)}
.ask-foot{display:grid;gap:10px;padding:12px var(--pad) calc(12px + env(safe-area-inset-bottom)) calc(var(--pad) + 10px);border-top:1px solid var(--rule);background:var(--card)}
.ask-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.ask-chip{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border:1.25px solid var(--harbor-text);border-radius:var(--radius);background:var(--pale);color:var(--ink);font-weight:500;font-size:14.5px;line-height:1.2;text-align:left;cursor:pointer}
@media (min-width:760px) and (hover:hover) and (pointer:fine){.ask-foot .ask-chip{min-height:40px}}
.ask-bubble .ask-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.ask-bubble .ask-chips>li{padding-left:0}
.ask-bubble .ask-chips>li::before{content:none}
.ask-row{display:grid;gap:6px}
.ask-label{font-weight:600;font-size:15px}
.ask-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.ask-input{min-height:48px;min-width:0;width:100%;padding:10px 14px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--card);color:var(--ink);font:400 17px/1.4 var(--f-body)}
.ask-input:focus{border-color:var(--harbor);outline:2px solid var(--harbor);outline-offset:2px}
.ask-send{min-height:48px;padding:0 18px}
.ask-note{margin:0;font-size:14px;color:var(--muted);max-width:none}
.ask-dialog.has-vv{top:var(--vvt,0px);bottom:auto;height:var(--vvh,100dvh);max-height:var(--vvh,100dvh)}
@media (min-width:760px){.ask-dialog.has-vv{top:calc(var(--vvt,0px) + 8px);height:calc(var(--vvh,100dvh) - 16px);max-height:calc(var(--vvh,100dvh) - 16px)}}
@media (max-width:759px){
  .ask-dialog{inset:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;border-radius:0}
  .ask-head{padding-top:max(12px,env(safe-area-inset-top))}
  .ask-dialog.has-vv .ask-head{padding-top:10px}
}
/* a short dialog (a phone in landscape, a small window, or the keyboard up) keeps the thread in view: the suggested questions and the
   closing line step aside and the field's label is kept for screen readers only, so the foot is the field alone */
@media (max-height:560px){
  .ask-foot .ask-chips,.ask-note{display:none}
  .ask-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .ask-head{padding-top:max(8px,env(safe-area-inset-top));padding-bottom:8px}
}
.ask-dialog.has-vv .ask-foot .ask-chips,.ask-dialog.has-vv .ask-note{display:none}
.ask-dialog.has-vv .ask-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ask-bubble .ask-links{gap:0}
.ask-links a{display:inline-block;padding:6px 0}
.ask-bubble .ask-links>li::before{top:calc(6px + .75em - 4px)}
@media (max-width:759px),(pointer:coarse){.ask-links a{padding:10px 0}.ask-bubble .ask-links>li::before{top:calc(10px + .75em - 4px)}}
@media (max-width:479px){
  .callbar:has(.cb-ask){grid-template-columns:48px minmax(0,1fr) minmax(0,1.6fr)}
  .cb-ask{padding:0;gap:0}
  .cb-ask .cb-lbl{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
}
@media (hover:hover){.ask-pill:hover,.cb-ask:hover{background:var(--harbor-wash)}.ask-chip:hover{border-color:var(--harbor);background:var(--harbor-wash)}.dg-plain.dg-ask a:hover{background:color-mix(in srgb,var(--harbor) 14%,var(--card));color:var(--harbor-text)}}
@media (forced-colors:active){.ask-q p,.ask-chip{outline:1px solid CanvasText}.ask-chip:focus-visible{outline:2px solid Highlight;outline-offset:3px}.ask-dialog{border:1px solid CanvasText}}

/* reveals: base is visible; under html.run an element waits for its observer, with the failsafes in app.js */
.fp-reveal{transition:opacity .7s var(--ease),transform .7s var(--ease)}
html.run .fp-reveal:not(.fp-in){opacity:0;transform:translateY(22px)}
html.run .fp-reveal[data-fp-dir="left"]:not(.fp-in){transform:translateX(-26px)}
html.run .fp-reveal[data-fp-dir="right"]:not(.fp-in){transform:translateX(26px)}
.fp-clip{display:inline-block;padding-bottom:.2em;margin-bottom:-.2em;transition:clip-path .85s var(--ease),transform .85s var(--ease)}
html.run .fp-clip:not(.fp-in){clip-path:inset(0 0 100% 0);transform:translateY(14px)}
html.run .fp-clip.fp-in{clip-path:inset(0 0 0 0)}

/* hover, only where a pointer can hover; a tap never leaves a hover state behind */
@media (hover:hover){
  a:hover{color:var(--ink)}
  .btn-cta:hover{background:var(--harbor-text);border-color:var(--harbor-text);color:#FFFFFF}
  .swap-cta .btn-cta:hover{background:color-mix(in srgb,var(--cta-swap) 82%,#000000);border-color:color-mix(in srgb,var(--cta-swap) 82%,#000000)}
  .btn-line:hover{background:var(--harbor-wash);color:var(--harbor-text)}
  .nav-link:hover{background:var(--harbor-wash);color:var(--harbor-text)}
  .np-link:hover{color:var(--harbor-text)}
  .related-link:hover{color:var(--harbor-text);text-decoration-color:currentColor}
  .as-list a.np-link:hover{border-color:var(--harbor);background:var(--harbor-wash);color:var(--harbor-text)}
  .call-pill:hover{background:var(--harbor-wash)}
  .chip:hover,.hw-chip:hover{border-color:var(--harbor);background:var(--harbor-wash)}
  .finder-geo:hover{color:var(--ink);text-decoration-color:currentColor}
  .map .leaflet-bar a:hover{background:var(--pale)}
  .g-lines a:hover .gl-town{text-decoration:underline;text-underline-offset:.18em}
  .drawer-group summary:hover,.dg-links a:hover,.dg-plain a:hover,.drawer-more a:hover{background:var(--harbor-wash);color:var(--harbor-text)}
  .cover:hover{color:var(--harbor-text)}
  .ti-link:hover{color:var(--harbor-text)}
  .site-foot a:hover{color:var(--od-text)}
  :is(.band-harbor,.swap-band-harbor .proof.band-pale) a:hover{color:var(--paper)}
}

/* responsive */
@media (min-width:920px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:600px){.plates{grid-template-columns:repeat(2,minmax(0,1fr))}.plates>li:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:calc((100% - var(--cgap)) / 2)}}
@media (max-width:979px){.doc p{max-width:33em}}
@media (min-width:760px){.quotes{grid-template-columns:repeat(2,minmax(0,1fr))}.treat-plates{grid-template-columns:repeat(2,minmax(0,1fr))}.treat-plates>li:last-child:nth-child(odd){grid-column:1/-1}.office-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.ph-instrument .office-cards{grid-template-columns:minmax(0,1fr)}}
@media (min-width:1160px){.plates{grid-template-columns:repeat(3,minmax(0,1fr))}.plates>li:last-child:nth-child(odd){grid-column:auto;justify-self:stretch;width:auto}}
@media (min-width:980px){
  .doc-cols{grid-template-columns:repeat(2,minmax(0,1fr))}
  .doc-cols>.doc:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:calc((100% - var(--cgap)) / 2)}
  .proof-top{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
  .sec-head{grid-template-columns:minmax(0,1.6fr) minmax(0,.8fr)}
  .sec-head .lede{margin-bottom:26px}
}
@media (min-width:760px){
  .map-band{--map-top:220px;--ov:232px}
  .map-band>.map-frame{height:calc(var(--map-top) + var(--ov))}
  .map-band>.office-cards{margin-top:calc(-1 * var(--ov))}
  .map-band:has(> .office-cards:empty)>.map-frame{height:calc(var(--map-top) + 120px)}
  /* fix wave 2026-10-21 (DESIGN-LOOP r1, L4 MF1): the cards ride --ov over the frame's foot, so Show the map is seated at the
     frame's top-left, clear of the cards and of the poster's pins (just above the cards it sat on the Worcester pin from 760 to
     about 1250 px); the office page's band (.map-office) has no cards and keeps its centred control */
  .map-all .map-load{top:16px;bottom:auto}
}
@media (min-width:1160px){
  .map-band{--map-top:210px;--ov:320px}
  .map-band>.office-cards{grid-template-columns:repeat(4,minmax(0,1fr))}
  .map-office>.map-frame{height:420px}
}
@media (min-width:1201px){.map-static{-webkit-mask-image:linear-gradient(90deg,transparent,#000 64px,#000 calc(100% - 64px),transparent);mask-image:linear-gradient(90deg,transparent,#000 64px,#000 calc(100% - 64px),transparent)}}
@media (min-width:760px){
  html{scroll-padding-top:calc(var(--head-stuck) + 12px)}
  [id]{scroll-margin-top:0}
  #offices{scroll-margin-top:48px}
  .site-head :is(a[href],button){scroll-margin-top:calc(-1 * (var(--head-stuck) + 12px));scroll-margin-bottom:calc(var(--head-stuck) + 12px)}
}
@media (max-width:1159px){
  .nav{display:none}
  .menu-btn,.menu-link{display:inline-flex}
  .head-cta{display:none}
  .call-pill .w-long{display:none}
}
@media (max-width:1099px){
  .pin-label{display:none}
  .pin-wrap.is-on .pin-label{display:block}
}
@media (max-width:860px){
  .faq-grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:759px){
  :root{--head-h:56px}
  .g-lines{grid-template-columns:minmax(0,1fr)}
  .site-head{position:static}
  .progress{display:none}
  html{scroll-padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .brand-mark{height:36px}
  .brand-name{width:112px}
  h1{line-height:1.02}
  .ph-ctas{flex-direction:column;gap:12px}
  .ph-ctas .btn{width:100%}
  .cta-acts{flex-direction:column}
  .cta-acts .btn{width:100%}
  .callbar{display:grid}
  .map{height:auto;aspect-ratio:4/3}
  .map-static{object-fit:contain;object-position:50% 0}
  #map .leaflet-bar a,#map.leaflet-touch .leaflet-bar a{width:44px;height:44px;line-height:44px}
  .map-band>.office-cards{margin-top:var(--cgap)}
  .chooser-full .finder-field{grid-template-columns:minmax(0,1fr);gap:10px;min-height:0;padding:0;border:0;background:none;box-shadow:none}
  .chooser-full .finder-field:focus-within{outline:none}
  .chooser-full .finder-input{min-height:48px;padding:0 14px;border:1px solid var(--harbor);border-radius:var(--radius);background:var(--card)}
  .chooser-full .finder-input:focus{outline:2px solid var(--harbor);outline-offset:2px}
  .chooser-full .finder-find{width:100%;min-height:48px}
  .office-chips .chip{font-size:14.5px}
  .tp-fields{grid-template-columns:minmax(0,1fr);gap:4px}
  .tp-fields dt{padding-top:8px}
  .site-foot .foot-rows{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px 0;border-bottom:0}
  .site-foot .foot-row{grid-template-columns:minmax(0,1fr);gap:4px;padding:12px;border:1px solid var(--od-line);border-radius:var(--radius);font-size:14.5px}
  .site-foot .foot-row:last-child{border-bottom:1px solid var(--od-line)}
  .site-foot .foot-row .brk{display:none}
  .site-foot .foot-row .fr-tel,.site-foot .foot-row .hrs,.site-foot .foot-row .acts{grid-column:1}
  .site-foot .foot-row .acts{flex-direction:column;align-items:flex-start;gap:0}
  .site-foot .foot-row .tel-label{min-width:0}
  .site-foot .foot-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px}
  .site-foot .foot-row .acts a,.site-foot .foot-contact a,.site-foot .foot-list a,.site-foot .foot-social a{min-height:44px;margin:-10px 0}
  .site-foot .foot-row .acts{row-gap:0}
  .site-foot .foot-contact,.site-foot .foot-social{row-gap:20px}
  .site-foot .foot-list ul{gap:20px}
  .tel-line a{display:inline-flex;align-items:center;min-height:44px;padding:0;margin:-6px 0}
  .crumbs ol{row-gap:0}
  .crumbs a{display:inline-flex;align-items:center;min-height:44px;padding:0}
  .cw-list a{min-height:44px}
  .ti-link,.ol-name a{min-height:44px}
  .brand{min-height:44px}
  .office-links a{min-height:44px}
  .site-foot{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
}
@media (max-width:479px){
  body{font-size:16.5px}
  .btn{padding:0 18px}
  .cb-btn{font-size:14.5px;gap:5px}
  .cb-btn svg{width:16px;height:16px}
  .chip-two{display:grid;justify-items:start;line-height:1.15;text-align:left}
  .chip-sep{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .chip-sat{font:500 11.5px/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--harbor-text)}
}
@media (max-width:399px){h1:not(.h1-long,.h1-xlong){font-size:2.375rem}.cb-cta svg{display:none}.cb-btn{white-space:normal;line-height:1.1}}
@media (max-width:374px){
  .tp-stamp{font-size:20px;letter-spacing:0;padding:5px 10px;gap:6px}
  .tp-stamp svg{width:16px;height:16px}
  .office-chips{margin-inline:-12px}
  .office-chips .chip{font-size:14px;gap:5px;padding:0 5px;white-space:normal;line-height:1.1;text-align:left}
  .office-chips .chip .hw-glyph,.office-chips .chip .hw-glyph svg{width:16px;height:13px}
  :is(.chooser-pinned,.chooser-preset) .office-chips .chip{padding:0 5px;gap:5px;font-size:14px}
}
@media (min-width:360px) and (max-width:367px){.brand-name{width:104px}}
@media (max-width:359px){h1:not(.h1-long,.h1-xlong){font-size:2.125rem}h2{font-size:1.75rem}.brand-name{display:none}}
@media (pointer:coarse){#map .leaflet-bar a,#map.leaflet-touch .leaflet-bar a{width:44px;height:44px;line-height:44px}.np-link{min-height:44px}}
@media (forced-colors:active){
  .seg-opt input:checked+span,.chip[aria-pressed="true"],.hw-chip[aria-current="true"]{outline:3px solid Highlight;outline-offset:-3px}
  .nav-link[aria-current="page"],.nav-item.is-section>.nav-link,.nav-link.is-spy,.dg-links a[aria-current="page"],.dg-plain a[aria-current="page"]{text-decoration:underline 2px}
  .office-card[aria-current="true"],.faq-list details[open]{outline:2px solid Highlight}
  .np-toggle::before,.drawer-group summary::after,.cw-fold summary::after{border-color:CanvasText}
}

/* Reduce Motion: the completed state at first paint, pseudo-elements included */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  html{scroll-behavior:auto}
  .fp-reveal,.fp-clip{opacity:1!important;transform:none!important;clip-path:none!important}
  .rule::before{transform:scaleX(1)!important}
  .hd-img{transform:none!important}
  .hw-wire,.hw-hi{stroke-dashoffset:0!important}
  .map-arch[pathLength],.ret-wire{stroke-dashoffset:0!important}
  .hw-chip{opacity:1!important}
  .pin-wrap.pulse .pin::after{opacity:0}
  .progress-tick{transform:none}
  .pb-video.is-pending{opacity:1}
  .pb-toggle{display:none}
  .callbar{transform:none}
  .callbar:not(.show){display:none}
  .btn-cta:hover,.hw-chip:hover,.chip:hover{transform:none}
  .head-spy .hs-brk,.head-spy .hs-name{animation:none!important}
  .contents .cw-tick{opacity:1;transform:none}
  .office-card[aria-current="true"]{transform:none}
}
@media print{
  #splash,.callbar,.head-right,.progress,.skip,.nav-panel,.np-toggle,.map-load,dialog,nav.nav,.head-spy,.part-chooser,.chooser,.hw-chips,mark.owner,.cw,.drawer,.pb-toggle{display:none!important}
  .site-head{position:static}
  .fp-reveal,.fp-clip{opacity:1!important;transform:none!important;clip-path:none!important}
  .rule::before{transform:scaleX(1)!important}
  .hd-img{transform:none!important}
  .map-static{display:block!important;opacity:1!important}
  .map .leaflet-map-pane,.map .leaflet-control-container{visibility:hidden!important}
  section{padding:24px 0}
  [data-curve]{clip-path:none!important;padding-top:24px}
  .hero,.band-pale,.band-sky,.insure,.page-head{background:var(--paper)}
  .hero::before,.hero::after,.band-pale::before,.band-sky::before,.page-head::before,.treat::after,.insure::before{display:none}
  .site-foot{background:var(--paper);color:var(--ink);--od-text:var(--ink);--od-soft:var(--muted);--od-link:var(--harbor-text);--od-kicker:var(--harbor-text);--od-muted:var(--muted);--od-line:var(--rule)}
  .site-foot .owner-line,.site-foot .foot-legal .small{color:var(--muted)}
  .site-foot .agency-credit,.site-foot .agency-credit a{color:var(--ink)}
  .site-foot .foot-name{filter:invert(1) brightness(.1)}
  .site-foot .brk{border-color:var(--harbor-text)}
  .proof-num{color:var(--ink)}
  .btn-cta{background:none!important;color:var(--ink)!important;border-color:var(--ink)!important;box-shadow:none!important}
  .pb-toggle{display:none!important}
  .place-band .pb-cap{color:var(--ink)}
  a{color:var(--ink)}
}

/* Published weekly hours need a full-width footer card on narrow phones. */
@media(max-width:459px){.site-foot .foot-rows{grid-template-columns:minmax(0,1fr)}}

/* Approved legacy clips: native playback, no autoplay, whole clinical frames. */
.smile-films{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 24px;margin-top:32px}
.smile-film{min-width:0;margin:0;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;background:var(--paper)}
.smile-film video{display:block;width:100%;height:auto;aspect-ratio:9/16;object-fit:contain;background:#fff}
.smile-film figcaption{padding:22px}
.smile-film h3{font-size:1.15rem;line-height:1.4;margin:0 0 10px}
.smile-film p{margin:0 0 12px;font-size:.95rem;line-height:1.6}
.smile-film a{display:inline-block;color:var(--harbor-text);text-underline-offset:3px;padding:9px 0;min-height:44px}
.prose .as-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;padding-left:22px}
@media(max-width:759px){.smile-films{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:599px){.smile-films,.prose .as-list{grid-template-columns:minmax(0,1fr)}}
