/* Internal pages extend the approved homepage. No homepage selectors are changed. */
.internal-page { background: var(--paper); }
.internal-page main h1,.internal-page main h2,.internal-page main h3,.internal-page main p { text-align: center; }
.internal-page main h1,.internal-page main h2 { margin-inline:auto; text-wrap:balance; }
.internal-page main p { text-wrap:pretty; }
.internal-page .page-intro { padding: clamp(190px,17vw,250px) var(--pad) 80px; text-align:center; }
.page-intro h1 { color:var(--yellow); font-size:clamp(42px,5.5vw,84px); line-height:1.14; max-width:1150px; }
.page-intro .intro-prose { max-width:790px; margin:32px auto 0; }
.page-intro .intro-prose p { font-size:clamp(16px,1.3vw,19px); line-height:1.75; color:#e1e1e1; }
.page-intro .intro-subtitle { font-size:clamp(23px,2.4vw,34px); line-height:1.3; margin-bottom:24px; max-width:700px; letter-spacing:-.035em; }
.page-intro .button { margin:28px 8px 0; }
.content-band { text-align:center; }
.content-prose { width:100%; max-width:830px; margin:0 auto; }
.content-prose > h2 { font-size:clamp(34px,4vw,62px); line-height:1.18; margin:0 auto 32px; }
.content-prose > h3 { margin:32px auto 20px; font-size:clamp(24px,2.5vw,34px); line-height:1.3; }
.content-prose > p { font-size:16px; line-height:1.8; max-width:740px; margin-inline:auto; }
.content-prose > .button { margin:28px 8px 0; }
.content-band + .content-band:not(.dark):not(.yellow-band) { padding-top:65px; }
.yellow-band { background:var(--yellow); color:var(--heading); }
.yellow-band p { color:var(--heading); }
.yellow-band .button-yellow { background:var(--ink); color:white; }
.yellow-band ::selection { background:var(--ink); color:var(--yellow); }
.centered-list { padding:0; margin:24px auto; list-style:none; max-width:650px; }
.centered-list li { font-size:16px; line-height:1.7; padding:8px 0; }
.page-photo.visual-frame { max-width:1000px; width:100%; height:auto; aspect-ratio:auto; padding:8px; border:1px solid var(--yellow); background:var(--ink); margin:50px auto 0; }
.page-photo img { width:100%; height:auto; object-fit:contain; }
.page-photo.service-lead-photo { max-width:900px; }
.page-photo.about-wide { max-width:960px; }
.page-photo.about-work { max-width:620px; }
.internal-page .service-cards { max-width:1320px; margin:0 auto; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 28px; }
.service-card { min-width:0; text-align:center; display:grid; grid-template-rows:subgrid; grid-row:span 4; row-gap:0; padding-bottom:55px; }
.service-card .page-photo { padding:6px; margin:0 0 24px; aspect-ratio:13/10; }
.service-card .page-photo img { height:100%; object-fit:cover; }
.service-card h3 { font-size:clamp(23px,2.1vw,31px); line-height:1.2; text-wrap:balance; }
.service-card p { font-size:15px; line-height:1.7; margin:20px auto; max-width:450px; }
.service-card .button { margin-top:8px; justify-self:center; align-self:end; }
.internal-page .dark .service-card .button-dark { background:var(--yellow); color:var(--ink); }
.related-services { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:30px; margin-top:45px; }
.related-service { padding:24px 12px; border:1px solid #ffffff40; min-width:0; }
.related-service:hover { border-color:var(--yellow); }
.related-service h3 { font-size:22px; line-height:1.3; }
.related-service span { display:block; color:var(--yellow); margin-top:20px; font-size:13px; }
.internal-page .faq-list { max-width:880px; margin:32px auto 0; text-align:center; }
.internal-page .faq-list details { border-bottom:1px solid #010d1440; }
.internal-page .faq-list details:first-child { border-top:1px solid #010d1440; }
.internal-page .faq-list summary { position:relative; display:block; text-align:center; padding:27px 40px; line-height:1.5; font-size:clamp(18px,1.6vw,23px); }
.internal-page .faq-list summary > span { position:absolute; right:8px; top:50%; transform:translateY(-50%); }
.internal-page .faq-list details[open] summary > span { transform:translateY(-50%) rotate(45deg); }
.internal-page .faq-list details p { padding:0; margin:0 auto 24px; max-width:720px; line-height:1.75; font-size:16px; }
.faq-jumps { display:flex; flex-wrap:wrap; justify-content:center; gap:14px 28px; margin:42px auto 0; max-width:980px; }
.faq-jumps a { font-size:13px; line-height:1.6; color:var(--yellow); text-decoration:underline; text-underline-offset:5px; padding:7px; }
.internal-page .social-icons { margin-top:40px; }
.internal-page .contact-page-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(35px,6vw,90px); padding-top:45px; align-items:start; }
.contact-page-copy h2 { font-size:clamp(31px,3vw,48px); line-height:1.22; margin-bottom:28px; }
.contact-page-copy p { font-size:16px; line-height:1.75; }
.contact-page-copy .contact-details { text-align:center; align-items:center; }
.contact-page-copy .contact-details h3 { margin:32px 0 18px; }
.contact-page-copy .contact-call-title { padding-bottom:12px; border-bottom:2px solid var(--yellow); }
.contact-page-copy .contact-phones { display:flex; justify-content:center; align-items:center; gap:clamp(12px,1.8vw,24px); width:100%; }
.contact-page-copy .contact-phones .phone { display:inline-flex; align-items:center; min-height:44px; margin:0; white-space:nowrap; font-size:clamp(16px,2vw,28px); }
.contact-page-copy .contact-details p { margin-top:20px; }
.contact-page-copy .contact-details .email { overflow-wrap:anywhere; font-size:16px; }
.contact-page-copy .social-icons { --icon-size:78px; gap:24px; }
.page-form.form-panel { border:2px solid var(--yellow); margin:0; padding:clamp(20px,3vw,40px); }
.page-form h2 { font-size:clamp(30px,3vw,43px); line-height:1.25; margin-bottom:32px; }
.page-form .field { text-align:left; }
.page-form .field label { font-size:13px; }
.page-form .field input,.page-form .field select,.page-form .field textarea { border:1px solid #808080; background:#151515; min-height:46px; padding:10px 12px; }
.page-form .field textarea { min-height:90px; }
.page-form .field [aria-invalid=true] { border-color:#ffb6aa; }
.page-form .field :focus { border-color:var(--yellow); outline:2px solid var(--yellow); outline-offset:3px; }
.page-form .field label span { color:#c5c5c5; }
.policy-section { padding-block:55px; }
.policy-section .content-prose { max-width:800px; }
.policy-section h2 { font-size:clamp(30px,3.3vw,46px); }
.internal-page .footer p,.internal-page .footer h3 { text-align:inherit; }
.internal-page a[aria-current=page] { color:var(--yellow); }
.internal-page .nav-estimate[aria-current=page] { color:#000; }
/* React gallery: intrinsic image heights and measured scroll geometry. */
.gallery-section { padding:20px var(--pad) 70px; }
.gallery-groups { max-width:1500px; margin:auto; }
.gallery-scroll { position:relative; margin:0 0 60px; }
.gallery-sticky { position:sticky; top:0; height:100svh; padding:36px 0; overflow:hidden; perspective:1300px; perspective-origin:center top; }
.gallery-grid { display:grid; align-items:start; gap:18px; transform-origin:50% 0%; transform-style:preserve-3d; }
.gallery-column { display:flex; flex-direction:column; gap:18px; min-width:0; }
.gallery-thumbnail { display:block; border:1px solid #ffcc0070; background:#151515; border-radius:2px; padding:6px; width:100%; position:relative; line-height:0; color:white; }
.gallery-thumbnail img { display:block; width:100%; height:auto; border-radius:1px; }
.gallery-thumbnail:hover { border-color:var(--yellow); }
.gallery-thumbnail:focus-visible { outline:3px solid var(--yellow); outline-offset:3px; z-index:2; }
.gallery-thumbnail img { transition:filter .25s; }
.gallery-thumbnail:hover img { filter:brightness(1.06); }
.static-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; max-width:1500px; margin:auto; align-items:start; }
.gallery-lightbox { position:fixed; inset:0; z-index:3000; background:rgba(0,0,0,.97); color:#fff; display:flex; flex-direction:column; padding:20px max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)); overscroll-behavior:contain; }
.gallery-lightbox .lightbox-top { display:flex; align-items:center; justify-content:space-between; gap:16px; flex:none; }
.lightbox-count { font:14px var(--mono); color:var(--yellow); }
.gallery-lightbox .lightbox-image { display:block; width:100%; height:100%; object-fit:contain; min-height:0; }
.lightbox-photo { flex:1; min-height:0; margin:20px 0; position:relative; touch-action:pan-y; }
.lightbox-photo img { user-select:none; }
.lightbox-controls { display:flex; justify-content:center; gap:20px; flex:none; }
.gallery-lightbox .button { font-size:14px; min-width:110px; }
.gallery-lightbox .button:focus-visible { outline:3px solid white; }
.lightbox-message { position:absolute; inset:0; display:grid; place-content:center; text-align:center; color:white; pointer-events:none; }
.lightbox-error a { display:inline-block; margin:12px; color:var(--yellow); }
.lightbox-error { text-align:center; padding:30px; }
@media(min-width:1600px) { .page-intro h1 { font-size:90px; } }
@media(max-width:1000px) { .related-services { gap:15px; } .contact-page-copy .social-icons { --icon-size:64px; gap:20px; } }
@media(max-width:760px) {
 .internal-page .service-cards { grid-template-columns:1fr; }
 .internal-page .contact-page-layout { grid-template-columns:1fr; }
 .contact-page-copy .contact-phones .phone { font-size:clamp(16px,5vw,24px); }
 .related-services { grid-template-columns:1fr; gap:18px; }
 .internal-page .page-intro { padding-top:180px; padding-bottom:55px; }
 .internal-page .content-band { padding-block:65px; }
 .page-photo.visual-frame { margin-top:35px; padding:5px; }
 .gallery-grid,.gallery-column { gap:12px; }
 .gallery-sticky { padding:24px 0; }
 .gallery-section { padding-inline:18px; }
 .static-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
 .gallery-thumbnail { padding:4px; }
}
@media(max-width:540px) {
 .page-intro h1 { font-size:clamp(36px,9vw,48px); line-height:1.15; }
 .internal-page .page-intro { padding-top:170px; }
 .content-prose > p { font-size:16px; }
 .internal-page .faq-list summary { padding:24px 28px; }
 .internal-page .faq-list details p { font-size:15px; }
 .static-gallery { grid-template-columns:1fr; }
 .gallery-lightbox { padding:14px; }
 .gallery-lightbox .button { min-width:95px; padding:12px 16px; }
 .lightbox-controls { gap:16px; }
}
@media(prefers-reduced-motion:reduce) {
 .gallery-thumbnail img { transition:none; }
 .gallery-scroll { height:auto!important; }
 .gallery-sticky { position:static; height:auto; overflow:visible; }
}
