/* V4.02 shared visual system. CTA layout lives here, with one mobile rule. */
:root{--note-bg:#f7f8fa;--note-border:#e2e6ec;--action-bg:#eff6ff;--action-border:#bfdbfe;--warning-bg:#fffbeb;--warning-border:#f5cf77}
/* Readable actions with a consistent weight, including nested emphasis. */
body :is(.btn-primary,.btn-secondary,.dropbtn){font-size:15px;font-weight:600;min-height:44px;line-height:1.45;white-space:normal;text-align:center;gap:6px}
body :is(.btn-primary,.btn-secondary) :is(b,strong){font-weight:inherit}
body .dropbtn{font-size:14px;white-space:nowrap}
body .cta-label-mobile{display:none}
body #main :is(.hero-cta,.cta-buttons,.contact-actions){display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
body #main :is(.hero-cta,.cta-buttons,.contact-actions)>a{flex:0 1 auto;padding:11px 16px;min-width:0}
body .burger-btn{min-width:44px;min-height:44px}
body .mobile-menu a{min-height:44px;display:flex;align-items:center}
/* A linked card is the only service tile with movement on hover. */
body a.service-card:hover,body a.service-card:focus-visible{border-color:#98a7bc;box-shadow:0 6px 18px #17212d0d;transform:translateY(-2px)}
body div.service-card:hover{box-shadow:none;transform:none;border-color:var(--border)}
.info-panel{background:var(--note-bg);border:0;border-radius:10px;padding:22px;min-width:0}
.info-panel h2,.info-panel h3{font-size:20px;margin:0 0 10px}
.info-panel p{color:var(--muted);font-size:15px;margin-bottom:12px}
.info-panel p:last-child{margin-bottom:0}
.info-panel .service-top{margin-bottom:12px}
.info-panel a{display:inline-block;font-size:15px;text-underline-offset:4px}
.info-panel a:hover{text-decoration:underline}
/* Grey explains, amber warns, blue asks for the next step. */
body :is(.article-box,.summary-box,.location-box,.related-links,.case-limit){background:var(--note-bg);border:1px solid var(--note-border);border-radius:12px;color:var(--text);padding:22px;margin:28px 0}
body .warning-box{background:var(--warning-bg);border:1px solid var(--warning-border);border-left:4px solid #c78a17;border-radius:12px;padding:22px;margin:28px 0}
body :is(.action-panel,.cta-block,.contact-block,.case-contact){background:var(--action-bg);border:1px solid var(--action-border);border-radius:14px;padding:24px;margin-top:28px}
body .action-panel{margin-bottom:28px}
body :is(.action-panel,.cta-block,.summary-box,.warning-box,.article-box)>:first-child{margin-top:0}
body :is(.action-panel,.cta-block,.summary-box,.warning-box,.article-box)>:last-child{margin-bottom:0}
.action-panel h2{font-size:23px;margin:0 0 10px}
.action-panel>p{margin-bottom:14px}
body .action-hint{font-size:14px;color:#526174;margin:10px 0 16px}
.action-panel>.read-more{display:inline-block;margin-top:4px;font-size:15px}
.article-help>.read-more{margin-top:16px}
.quick-answer{padding-left:16px;border-left:3px solid #cbd5e1}
.photo-original{display:block;margin-top:6px;font-size:14px;text-underline-offset:3px}
/* Articles and completed works share one outer frame and grid. */
.listing-page>.page-title{margin:0 0 28px}
.listing-page>.page-title h1{margin-bottom:14px}
.listing-page .articles-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:0 0 32px}
.listing-page .article-card{padding:24px;background:#fff;border:1px solid var(--border);border-radius:14px}
.listing-page .article-card h2{font-size:21px;line-height:1.35}
.listing-page .article-card p{font-size:15px;line-height:1.65;color:var(--muted)}
.listing-page .article-card .read-more{font-size:15px;margin-top:auto}
.listing-page .case-articles .article-card{padding:0;overflow:hidden}
.listing-page .case-article-body{padding:24px}
body .case-card-image,body .service-example-image{aspect-ratio:16/9}
body .case-card-image picture,body .service-example-image picture{display:block;width:100%;height:100%}
body .case-card-image img,body .service-example-image img{width:100%;height:100%;object-fit:cover;object-position:center}
.case-photo picture{display:block}
body .case-photo img{width:100%;height:auto;max-height:720px;object-fit:contain}
.case-photo-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.symptom-groups{margin-top:32px;scroll-margin-top:100px}
.symptom-groups>h2{margin:0 0 12px}
.symptom-groups>p{color:var(--muted);font-size:15px}
.symptom-group{background:var(--note-bg);border:1px solid var(--note-border);border-radius:12px;margin-bottom:12px;overflow:hidden}
.symptom-group>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;font-weight:600;cursor:pointer;list-style:none}
.symptom-group>summary::-webkit-details-marker{display:none}
.symptom-group>summary::after{content:'+';font-size:24px;color:#45505e;flex:none}
.symptom-group[open]>summary::after{content:'−'}
.symptom-group summary small{display:block;color:#596574;font-size:14px;font-weight:400;margin-top:4px}
.symptom-group[open]>summary{border-bottom:1px solid var(--note-border)}
.symptom-options{padding:0 20px}
.symptom-option{padding:20px 0}
.symptom-option+.symptom-option{border-top:1px solid var(--note-border)}
.symptom-option h3{font-size:18px;margin:0 0 8px}
.symptom-option p{font-size:15px;color:var(--muted);margin-bottom:10px}
.symptom-option .read-more{font-size:15px;display:inline-block;text-underline-offset:4px}
.diagnostics-note{margin-top:18px}
.home-work-examples{margin:32px 0}
.home-work-examples .section-heading{margin-bottom:16px}
.work-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.work-preview{display:flex;align-items:flex-start;gap:16px;padding:18px;border:1px solid var(--note-border);border-radius:14px;background:#fff;color:var(--text);text-decoration:none}
.work-preview:hover{border-color:#98a7bc;box-shadow:0 6px 18px #17212d0d}
.work-preview picture{display:block;flex:0 0 100px;border-radius:8px;overflow:hidden}
.work-preview img{display:block;width:100px;height:86px;object-fit:cover}
.work-preview h3{font-size:18px;margin:0 0 8px}
.work-preview p{font-size:14px;line-height:1.55;margin-bottom:12px;color:var(--muted)}
.work-preview .read-more{font-size:14px}
.footer-label-mobile{display:none}
.hours-label-mobile{display:none}
.site-footer .footer-signature{margin-bottom:6px}
.footer-principle{display:block;margin-bottom:2px;color:#23436a;font-size:16px;font-weight:650;line-height:1.3}
.review-rating{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;max-width:100%;min-height:44px;padding:9px 12px;border:1px solid var(--note-border);border-radius:10px;background:#fff;color:var(--text);text-decoration:none;line-height:1.3}
.review-rating:hover{border-color:#98a7bc;background:#f8fafc}
.review-rating .rating-stars{font-size:15px;letter-spacing:1px;color:#9a6700;white-space:nowrap}
.review-rating strong{font-size:18px;font-weight:650}
.review-rating .rating-count{font-size:14px;white-space:nowrap;color:#526174}
.review-rating .rating-arrow{font-size:14px;color:#526174}
.review-swipe-hint{display:none}
#reviews .review-grid:focus-visible{outline:3px solid #b45309;outline-offset:3px}
@media(max-width:700px){
 body #main :is(.hero-cta,.cta-buttons,.contact-actions){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;width:100%}
 body #main :is(.hero-cta,.cta-buttons,.contact-actions)>a{width:100%;padding:11px 2px;font-size:14px;white-space:nowrap;min-width:0;gap:0}
 body #main :is(.hero-cta,.cta-buttons,.contact-actions)>.btn-primary{grid-column:auto}
 body #main .cta-label-full{display:none}
 body #main .cta-label-mobile{display:inline}
 body #main :is(.hero-cta,.cta-buttons,.contact-actions)>a>span[aria-hidden="true"]:not(.cta-label-mobile){display:none}
 body :is(.action-panel,.cta-block,.contact-block,.case-contact){padding:20px 16px}
 .listing-page .articles-grid{grid-template-columns:1fr}
 .listing-page .article-card,.listing-page .case-article-body{padding:20px}
 .info-panel{padding:18px}
 .case-photo-gallery{grid-template-columns:1fr}
 body .case-photo img{max-height:none}
 .symptom-group>summary{padding:16px}
 .symptom-options{padding:0 16px}
 .work-preview-grid{grid-template-columns:1fr}
 .work-preview{padding:16px;gap:12px}
 .work-preview picture{flex-basis:88px}
 .work-preview img{width:88px;height:80px}
 /* Compact mobile contact: introduction, one CTA row, hours and service area. */
 body #main .contact-block{grid-template-columns:1fr;gap:14px;padding:29px 14px;margin-top:24px;margin-bottom:0}
 .contact-intro>.eyebrow{margin-bottom:4px;font-size:10px;letter-spacing:.06em}
 .contact-intro h2{font-size:22px;line-height:1.25;margin-bottom:8px}
 .contact-intro>p{font-size:14px;line-height:1.5;margin-bottom:0;max-width:none}
 body #main .contact-block .contact-actions{margin-top:14px}
 .contact-number{font-size:14px;line-height:1.4;margin-top:8px;color:#455568}
 .contact-details{display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:start;gap:14px;border-left:0;border-top:1px solid #d5e1ef;padding:12px 0 0}
 .contact-details>div:first-child>.eyebrow{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 .contact-details .hours{display:grid;grid-template-columns:1fr;gap:8px;font-size:12px;line-height:1.5}
 .contact-details .hours div{display:grid;grid-template-columns:45px max-content;align-items:baseline;gap:5px;margin:0}
 .contact-details .hours dt{white-space:nowrap}
 .contact-details .hours dd{white-space:nowrap}
 .contact-details .hours-label-full{display:none}
 .contact-details .hours-label-mobile{display:inline}
 .contact-details>div:last-child{display:block;align-self:start;justify-self:end;text-align:right;margin-top:-5px}
 .contact-details>div:last-child>.eyebrow{margin:0 0 3px;font-size:13px;line-height:1.4;letter-spacing:0;text-transform:none;color:var(--text)}
 .contact-details p{font-size:13px;line-height:1.4}
 .contact-area-note{display:inline;margin:0;font-size:12px;color:#596574}
 .contact-area-note::before{content:'. '}
 .contact-area-label{font-weight:700}
 .contact-city{display:inline}
 .contact-details>div:last-child>.contact-area-label{display:inline;margin:0;font-size:13px;line-height:1.4;letter-spacing:0;text-transform:none;color:var(--text)}
 .contact-details>div:last-child>.contact-area-label::after{content:' '}
 .contact-details>div:last-child>p{display:inline;margin:0}
 .contact-details>div:last-child .contact-area-note{display:block;margin:0;font-size:11px;line-height:1.45}
 .contact-details>div:last-child .contact-area-note::before{content:none}
 /* Keep the footer readable without large paragraph and link-row gaps. */
 main>.wrapper{margin-bottom:16px}
 .site-footer{padding:8px 16px 16px;font-size:12px;line-height:1.4}
 .site-footer p{margin:0}
 .site-footer p+p{margin-top:3px}
 .site-footer .footer-links{column-gap:10px;row-gap:0;margin-top:5px;align-items:center}
 .site-footer .footer-links>a,.site-footer .footer-links>button{display:inline-flex;align-items:center;min-height:32px;margin:0;padding:4px 0;font-size:12px;line-height:1.3;text-underline-offset:2px}
 .site-footer .footer-label-full{display:none}
 .site-footer .footer-label-mobile{display:inline}
 #reviews .section-heading{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:6px}
 #reviews .section-heading>.review-rating{min-height:44px;padding:0;gap:4px;border:0;background:transparent}
 #reviews .section-heading>div>.eyebrow{display:none}
 #reviews .section-heading h2{font-size:clamp(14px,4.2vw,20px);white-space:nowrap;letter-spacing:-.02em;margin:0}
 #reviews .review-rating .rating-stars{font-size:clamp(10px,2.7vw,12px);letter-spacing:0}
 #reviews .review-rating strong{font-size:clamp(13px,3.6vw,16px)}
 #reviews .review-rating .rating-count{font-size:clamp(12px,3.1vw,14px)}
 #reviews .review-rating .rating-arrow{display:none}
 #reviews .review-swipe-hint{display:block;margin:0 0 8px;color:#596574;font-size:13px;line-height:1.4}
 #reviews .review-grid{display:flex;gap:10px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;scroll-padding-inline:2px;padding:2px 2px 12px;scrollbar-width:thin}
 #reviews .review-card{flex:0 0 calc(100% - 32px);scroll-snap-align:start}
}
@media(max-width:360px){
 body .dropbtn{font-size:14px;padding:8px;min-width:0}
 body .logo-sub{font-size:13px}
 body .logo{font-size:17px}
 .work-preview{display:block}
 .work-preview picture{float:left;margin:0 12px 6px 0}
 .work-preview::after{content:'';display:block;clear:both}
}
@media(prefers-reduced-motion:reduce){body a.service-card:hover{transform:none}}
