/* Fine details shared by the existing layouts; no new theme. */
html{scrollbar-gutter:stable}
body{overflow-wrap:break-word}
::selection{background:#d7b486;color:#0c1a2d}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:rgba(215,180,134,.22)}
button:disabled{cursor:wait}
button[disabled][aria-label^="Previous"],button[disabled][aria-label^="Next"]{cursor:default}
textarea{resize:vertical;min-height:110px;max-height:42vh}
.refined :is(textarea,summary):focus-visible{outline:2px solid currentColor;outline-offset:5px}
.refined .overlay :is(input,textarea):focus-visible{outline:2px solid #0c1a2d;outline-offset:3px}
.overlay input[aria-invalid=true]{border-color:#a4452f;box-shadow:0 0 0 1px #a4452f}
.overlay.open,.mm-panel{overscroll-behavior:contain}
.refined .fee-scope a{text-decoration:underline;text-underline-offset:3px}
.refined .fee-scope a:hover{color:#7d5f33}
.calc input,.calc .val,.calc .result,.chart-table{font-variant-numeric:tabular-nums}
.calculators-refined .calc-chart text{font-size:12px}
.calc-jumps a{min-height:44px;display:flex;align-items:center}
.calc-support summary{min-height:44px;display:list-item;padding:10px 0}
.chart-table{border:1px solid #c7cdd6;border-radius:3px;scrollbar-width:thin}
.chart-table thead{position:sticky;top:0;background:#f6f5f1;z-index:1}
.chart-table th,.chart-table td{padding:9px 12px!important}
.chart-table tbody tr:nth-child(even){background:#e9e9e766}
.chart-table tbody th{text-align:left}
.chart-table:focus-visible{outline:2px solid #0c1a2d;outline-offset:4px}
.calc-validation:not(:empty){border-left:2px solid #a4452f;padding-left:12px}
.refined :is(.service-detail,.blog-topic)>summary{min-height:48px}
.refined :is(.service-detail,.blog-topic)[open]>summary{margin-bottom:16px}
.refined :is(.service-detail,.blog-topic)>summary:focus-visible{outline-offset:-3px}
.feature-link{display:inline-flex;align-items:center;gap:7px}
.post a:not(.btn),.post-side .toc a{text-underline-offset:3px;text-decoration-thickness:1px}
.post-side .toc a:focus-visible{outline-offset:2px}
.post-side .toc{scrollbar-width:thin}
.post :is(h2,h3){scroll-margin-top:24px}
.service-calendar{scroll-margin-top:24px}
.portal-help a{display:inline-block;min-height:36px;padding:4px 0}
@media(hover:hover){.refined :is(.btn,.card,.svc3>a,.fee-menu-item):active{filter:brightness(.96)}}
@media(max-width:760px){
 .refined :is(input,select,textarea){font-size:16px!important}
 .refined .overlay .panel{max-height:calc(100svh - 32px);overflow-y:auto;overscroll-behavior:contain}
 .refined footer .foot-grid>div:not(:first-child)>a{padding:4px 0;min-height:32px}
 .portal-help a{min-height:44px;display:block}
 .service-calendar{scroll-margin-top:94px}
 .chart-table th,.chart-table td{padding:9px 10px!important}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.refined :is(.btn,.card,.svc3>a,.fee-menu-item){transition:none!important}}
@media print{.chart-table{max-height:none!important;overflow:visible!important}.chart-table thead{position:static}}

/* Footer services list, Sept 19 2026: nine links made the footer very tall, so the last four sit
   behind a native <details>. They stay in the DOM and stay crawlable. Deliberately a <details>
   and not a <nav>, because the legacy bare nav{position:fixed} rule pins any nav element.
   These rules live at the END of the file on purpose: the first attempt was appended next to the
   .refined footer rule, which sits INSIDE @media(max-width:760px), so they only applied on phones
   and the nested media queries broke the rest of that block. */
.foot-more{margin:0 0 10px}
.foot-more>summary{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:#A79C8A;cursor:pointer;list-style:none;padding:4px 0;min-height:32px}
.foot-more>summary::-webkit-details-marker{display:none}
.foot-more>summary::marker{content:none}
.foot-more>summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin-top:-3px;transition:transform .2s}
.foot-more[open]>summary::after{transform:rotate(-135deg);margin-top:2px}
.foot-more>summary:hover{color:#f3f3f3}
.foot-more>summary:focus-visible{outline:2px solid #f3f3f3;outline-offset:3px}
.foot-more>a{display:block}
@media(prefers-reduced-motion:reduce){.foot-more>summary::after{transition:none}}
@media print{.foot-more>summary{display:none}}

/* Sept 25, 2026: the footer's YouTube / X / Contact links were 17px tall and X was 9px wide,
   under the 24px minimum touch target. They keep their look; the tappable box grows. */
footer .foot-grid p a[style*="display:inline"]{display:inline-block!important;min-width:24px;padding:4px 3px;margin:-4px 0;text-align:center}
/* the phone and email links are display:block, so the <br> between them left an empty line */
footer .foot-nap br{display:none}
footer .foot-nap a{margin-bottom:8px}

/* Fit quiz lands straight on the calendar (Sept 25, 2026). After "Send", the Zoom Scheduler
   frame replaces the thank-you step inside the same dialog: the dialog widens and centres on
   desktop and goes full screen on phones. scripts/site-polish.js builds .fit-cal and sets
   .is-cal on the overlay; closing and reopening the quiz clears it. */
.fit-cal{display:none}
.overlay.is-cal .fit-cal{display:block}
.overlay.is-cal .fit-step[data-step="4"]>:not(.fit-cal){display:none!important}
.overlay.is-cal{align-items:center;padding:24px}
.overlay.is-cal .fit-panel{max-width:1000px;max-height:none;padding:26px 28px 20px}
.fit-cal .fit-cal-title{margin:0 0 6px;padding-right:44px}
.fit-cal .fit-cal-note{font-size:14px;line-height:1.6;color:#4a5568;margin:0 0 16px}
.fit-cal .fit-cal-note a{color:#7d5f33;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.fit-cal .fit-cal-frame{display:block;width:100%;height:min(720px,calc(100svh - 190px));min-height:420px;border:0;border-radius:10px;background:#fff}
@media(max-width:640px){
 .overlay.is-cal{padding:0;align-items:stretch}
 .overlay.is-cal .fit-panel{max-width:none;width:100%;min-height:100svh;max-height:none;border-radius:0;border:0;padding:18px 16px 10px}
 .fit-cal .fit-cal-frame{height:calc(100svh - 150px);min-height:0;border-radius:8px}
 .fit-cal .fit-cal-note a{white-space:normal}
}

/* Header logo on every page but the homepage (Sept 26, 2026). Joseph: on the navy bar the logo
   "seems a little bit faded, a little bit low res and a little bit hard to see". It is a vector,
   so the softness was size and tone: 26px tall against the homepage's 33px, in #f3f3f3. Now it
   matches the homepage at 32px and is pure white, so it reads as the same mark on every page. */
body:not(.home-refined) #topnav .lockup-svg{height:32px;shape-rendering:geometricPrecision}
body:not(.home-refined) #topnav .lockup{color:#fff}
@media(max-width:760px){body:not(.home-refined) #topnav .lockup-svg{height:29px}}
