/* Interior-page patterns. Content and order remain page-specific. */
.page-hero{padding-block:80px 64px;border-bottom:1px solid var(--border)}
.page-hero h1{max-width:19ch;font-size:clamp(40px,5vw,66px)}
.eyebrow{font:600 12px/1.5 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--action);margin-bottom:20px}
.page-hero .lead{max-width:58ch}.page-hero .muted{margin-top:20px}
.section{padding-block:70px}.section+.section{border-top:1px solid var(--border)}
.section h2{font-size:clamp(30px,3vw,42px);margin-bottom:24px}
.section h3{font-size:23px;margin-bottom:12px}.section-intro{margin-bottom:35px}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,6vw,80px);align-items:start}
.stack>*+*{margin-top:24px}.prose{max-width:var(--reading-width)}
.prose>h2{margin-top:44px}.prose>h2:first-child{margin-top:0}.prose>h3{margin-top:30px}
.prose p,.prose li{line-height:1.7}.prose ul,.prose ol{padding-left:24px;margin-block:20px}.prose li+li{margin-top:10px}
.prose a,.panel a:not(.button){color:var(--brand)}
.card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.card-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.panel{padding:30px;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface)}
.panel p,.panel li{font-size:16px}.panel h3{font-size:23px;margin-bottom:15px}.panel .actions{margin-top:24px}
.panel.soft{background:var(--surface-subtle)}.panel.dark{background:var(--surface-dark);color:var(--text-inverse)}
.panel.dark h2,.panel.dark h3{color:var(--surface)}.panel.dark .muted{color:var(--text-inverse)}
.checklist{list-style:none;padding:0;margin-block:22px}.checklist li{position:relative;padding:10px 0 10px 35px}
.checklist li:before{content:'✓';position:absolute;left:0;top:11px;width:23px;height:23px;border-radius:var(--radius-small);background:var(--illustration-sand);color:var(--brand);display:grid;place-items:center;font-size:14px}
.numbered-list{list-style:none;padding:0;counter-reset:steps;display:grid;gap:0}
.numbered-list>li{counter-increment:steps;position:relative;padding:26px 0 26px 62px;border-bottom:1px solid var(--border)}
.numbered-list>li:before{content:counter(steps,decimal-leading-zero);position:absolute;left:0;top:25px;font:500 20px var(--font-heading);color:var(--brand)}
.numbered-list h3{font-size:23px}.numbered-list p{font-size:16px;max-width:65ch}
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface)}
.comparison-table{border-collapse:collapse;width:100%;text-align:left;font-size:15px;min-width:600px}
.comparison-table caption{text-align:left;padding:24px;font-weight:600}
.comparison-table th,.comparison-table td{padding:20px 24px;border-bottom:1px solid var(--border);vertical-align:top}
.comparison-table thead{background:var(--surface-subtle)}.comparison-table th{font-family:var(--font-heading);font-weight:500}
.comparison-table tr:last-child td{border:0}.table-wrap:focus-visible{outline:3px solid var(--brand);outline-offset:4px}
.pricing-panel{padding:36px;background:var(--surface-subtle);border-radius:var(--radius-card);border:1px solid var(--border)}
.pricing-panel .price{margin-block:20px}.pricing-panel h3{font-size:24px}
.muted{color:var(--text-muted);font-size:14px}.button.secondary{background:transparent;color:var(--brand);border-color:var(--brand)}.button.secondary:hover{background:var(--surface-active)}
.portrait{width:100%;max-width:440px;border-radius:var(--radius-portrait);object-fit:cover}.portrait-caption{font-size:14px;color:var(--text-muted);margin-top:12px}
.article{max-width:760px;margin-inline:auto;padding-block:65px}.article h1{font-size:clamp(38px,5vw,64px);line-height:1.1}.article .lead{max-width:65ch}
.article figure{margin-block:32px}.article figcaption{font-size:13px;color:var(--text-muted);margin-top:10px}
.article blockquote{margin:30px 0;padding:20px 28px;border-left:3px solid var(--brand);background:var(--surface-subtle);font:500 24px/1.5 var(--font-heading)}
.article-nav{border-block:1px solid var(--border);padding-block:20px;margin-block:32px}.article-nav a{display:inline-flex;align-items:center;min-height:48px;margin-right:24px}
.empty-state{padding:45px;border:1px dashed var(--border);border-radius:var(--radius-card);max-width:760px}.empty-state h2{margin-bottom:18px}
.form-field{display:grid;gap:8px;margin-block:20px}.form-field label{font-size:15px;font-weight:600}.form-field input,.form-field textarea,.form-field select{width:100%;min-height:48px;padding:12px 15px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:var(--surface);font:inherit}.form-field [aria-invalid=true]{border-color:#a33131}.field-error{font-size:14px;color:#a33131}.form-field small{font-size:13px;color:var(--text-muted)}
.notice{padding:20px 24px;border-left:3px solid var(--signal);background:var(--illustration-sand);border-radius:0 12px 12px 0;font-size:15px}
.site-footer{margin-top:55px}.site-footer .wordmark img{width:172px;height:60px;object-fit:contain}.site-footer nav{max-width:600px;justify-self:end}
#navigation [aria-current=page]{text-decoration:underline;text-underline-offset:6px}
.guide-header{padding-block:45px}.guide-header h1{font-size:clamp(38px,5vw,62px);max-width:20ch}.guide-nav{display:flex;gap:18px;flex-wrap:wrap;margin-top:25px}.guide-nav a{min-height:48px;display:inline-flex;align-items:center}
.swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.swatch{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--surface)}.swatch-color{height:110px;background:var(--swatch)}.swatch p{padding:15px;font-size:14px}.swatch code{display:block;font-size:12px;margin-top:5px}
.specimen{margin-top:28px;padding:28px;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface)}.specimen-code{margin-top:20px}.specimen-code pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.5 monospace;padding:20px;max-height:420px;overflow:auto;background:var(--surface-subtle);border-radius:12px}.specimen-code summary{min-height:48px}.specimen-caption{font-size:14px;color:var(--text-muted);margin-bottom:20px}.specimen .recognition-cards{gap:18px}.specimen .recognition-card>p{font-size:16px;padding:20px}.specimen .service-cover h3{font-size:28px}
@media(max-width:1000px){.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split>.card-grid{grid-template-columns:1fr}.swatches{grid-template-columns:repeat(3,minmax(0,1fr))}.site-footer nav{justify-self:start}.page-hero{padding-block:60px 50px}}
@media(max-width:760px){.split,.card-grid,.card-grid.two{grid-template-columns:1fr}.section{padding-block:48px}.page-hero{padding-block:45px}.page-hero h1{font-size:40px}.panel,.pricing-panel,.specimen{padding:24px}.swatches{grid-template-columns:repeat(2,minmax(0,1fr))}.guide-header{padding-block:35px}.article{padding-block:45px}.empty-state{padding:25px}.site-footer nav{justify-self:start}.numbered-list>li{padding-left:48px}.section h2{font-size:32px}.specimen .recognition-cards{grid-template-columns:1fr}.specimen .services{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* Interior hero emphasis and natural portrait proportions. */
.page-hero h1 em,.article h1 em{color:var(--brand)}
.portrait{height:auto;aspect-ratio:4/5;object-position:center}
.button:disabled{background:var(--surface-subtle);border-color:var(--border);color:var(--text-muted);cursor:not-allowed}

/* The page exists to pick a time, so the hero stays out of the way of the
   picker. Scoped to booking; .page-hero is shared with other interior pages. */
.booking-page .page-hero{padding-block:44px 34px}
.booking-page .page-hero h1{font-size:clamp(32px,3.4vw,44px);max-width:26ch}
.booking-page .page-hero .lead{margin-top:14px;font-size:17px}
.booking-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:48px;align-items:start;padding-top:clamp(20px,2.4vw,28px)}
.calendar-panel{min-width:0;background:white;border:1px solid var(--border);border-radius:24px;overflow:hidden;padding:12px}
.calendar-panel iframe{display:block;width:100%;height:760px;background:white}
/* A parent page cannot detect a cross-origin embed failing, so the way out is
   always visible rather than conditional on a load event that fires anyway. */
.booking-fallback{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:0;padding:16px 10px 8px;text-align:left}
.booking-fallback p{margin:0;max-width:46ch;color:var(--text-muted);font-size:15px;line-height:1.5}
.booking-fallback .button{flex:none;min-height:48px;font-size:14px}
.booking-aside h2{font-size:32px}
@media(max-width:900px){.booking-layout{grid-template-columns:1fr;gap:32px}.calendar-panel{padding:4px}.booking-aside{max-width:65ch}}
/* On phones Google stacks the month above the times; give it room so the times are not hidden in a scroll box. */
@media(max-width:640px){.calendar-panel iframe{height:1500px}}
@media(max-width:600px){.booking-fallback{justify-content:flex-start}.booking-fallback .button{width:100%;justify-content:center}}

/* Footer newsletter signup. Keeps the live form IDs so newsletter.js and reCAPTCHA attach unchanged at launch. */
.footer-signup{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(20px,4vw,56px);align-items:center;margin-bottom:28px;padding:clamp(24px,3vw,34px);border-radius:var(--radius-card);background:var(--surface-subtle)}
.footer-signup h2{margin:0 0 6px;font-size:22px}
.footer-signup p{margin:0;font-size:15px;line-height:1.55;color:var(--text-muted)}
.footer-signup .signup-form{display:flex;flex-wrap:wrap;gap:10px}
.footer-signup input[type=email]{flex:1 1 240px;min-height:52px;padding:0 18px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);font:inherit;color:var(--text)}
.footer-signup input[type=email]:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.footer-signup .recaptcha-field:empty,.footer-signup .recaptcha-field [data-recaptcha-widget]:empty{display:none}
.footer-signup .recaptcha-field{flex-basis:100%}
.footer-signup .newsletter-message{flex-basis:100%;font-size:14px;line-height:1.5;color:var(--text)}
.footer-signup .newsletter-message.success{color:var(--action)}
.footer-signup .newsletter-message button{min-height:0;padding:0;border:0;background:none;color:var(--brand);font:inherit;text-decoration:underline;cursor:pointer}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:760px){.footer-signup{grid-template-columns:1fr}.footer-signup .button{flex:1 1 100%;justify-content:center}}
footer nav button{min-height:48px;padding:0;border:0;background:none;color:inherit;font:inherit;font-size:13px;cursor:pointer}
footer nav button:hover{text-decoration:underline}
