/* Shared extension. The original style.css owns the protected homepage cinema. */
:root {
  --site-bg: var(--paper); --site-fg: var(--ink); --site-muted: #535e62;
  --site-rule: #c7ccc9; --site-soft: #e7e9e5; --site-light-rule: #465158;
  --site-accent-text: #a33411; --site-button-fg: #101820;
  --space-1: 8px; --space-2: 16px; --space-3: 24px; --space-4: 32px;
  --space-6: 48px; --space-8: 64px; --space-12: 96px;
  --site-gutter: clamp(22px, 6vw, 96px); --site-width: 1320px;
  --site-section: clamp(64px, 7vw, 104px); --site-radius: 0;
  --site-display: clamp(48px, 6.7vw, 96px); --site-heading: clamp(36px, 4.5vw, 64px);
  --ease-out: cubic-bezier(.23,1,.32,1); --duration-fast: 160ms; --duration-normal: 240ms;
}
.site-content, .site-footer, .inner-header, .site-nav, .menu-toggle { -webkit-font-smoothing: antialiased; }
[hidden] { display:none!important; }
.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; }
.site-content { background:var(--site-bg); color:var(--site-fg); }
.site-content ::selection, .site-footer ::selection { background:var(--accent); color:var(--ink); }
.site-content *, .site-footer * { min-width:0; }
.site-content h1,.site-content h2,.site-content h3,.site-footer h2 { font-weight:400; letter-spacing:-.045em; text-wrap:balance; }
.site-content h1 { font-size:var(--site-display); line-height:1.02; margin:0; font-weight:300; }
.site-content h2 { font-size:var(--site-heading); line-height:1.08; margin:0 0 24px; }
.site-content h3 { font-size:clamp(24px,2.5vw,36px); line-height:1.16; margin:0 0 16px; }
.site-content p { font-size:17px; line-height:1.65; margin:0 0 22px; max-width:64ch; }
.site-content .large-copy { font-size:clamp(20px,2.1vw,28px); line-height:1.45; letter-spacing:-.02em; }
.site-content .meta,.site-footer .meta { font-size:11px; letter-spacing:.13em; text-transform:uppercase; line-height:1.5; color:var(--site-muted); margin:0 0 24px; }
.site-content .muted { color:var(--site-muted); }
.site-content a:focus-visible,.site-content button:focus-visible,.site-content summary:focus-visible,.site-content input:focus-visible,.site-content select:focus-visible,.site-content textarea:focus-visible { outline:2px solid var(--site-accent-text); outline-offset:5px; }
.shell { width:min(calc(100% - var(--site-gutter)*2),var(--site-width)); margin-inline:auto; }
.section { padding-block:var(--site-section); }
.ruled { border-top:1px solid var(--site-rule); }
.soft { background:var(--site-soft); }
.split { display:grid; grid-template-columns:1.2fr 1fr; gap:clamp(32px,7vw,100px); align-items:start; }
.split.equal { grid-template-columns:1fr 1fr; }
.align-bottom { align-items:end; }
.statement { max-width:760px; }
.link-arrow { display:inline-flex; align-items:center; justify-content:space-between; gap:32px; padding:12px 0; min-height:44px; border-bottom:1px solid currentColor; font-size:14px; }
.link-arrow span[aria-hidden] { transition:transform 200ms var(--ease-out); }
.site-button { display:inline-flex; align-items:center; justify-content:space-between; gap:40px; padding:17px 22px; min-height:52px; border:1px solid transparent; border-radius:var(--site-radius); background:var(--accent); color:var(--site-button-fg); font-size:14px; font-weight:600; transition:transform var(--duration-fast) var(--ease-out),background 200ms ease; }
.site-button:active { transform:scale(.98); }
.site-button:disabled { cursor:wait; opacity:.65; }
.inner-header { position:sticky; z-index:40; top:0; padding:13px var(--site-gutter); height:94px; background:var(--ink); color:var(--paper); display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid var(--site-light-rule); }
.inner-header .brand { width:94px; }
.inner-header .brand img { height:64px; object-fit:contain; }
.site-nav { display:flex; align-items:center; gap:clamp(18px,2.4vw,36px); font-size:14px; }
.site-nav a { padding-block:12px; position:relative; }
.site-nav a[aria-current=page]:after { content:''; position:absolute; left:0; bottom:5px; width:20px; height:2px; background:var(--accent); }
.site-nav .nav-enquiry { border:1px solid var(--site-light-rule); padding:14px 18px; margin-left:8px; }
.site-nav .nav-enquiry[aria-current=page] { border-color:var(--accent); }
.site-nav .nav-enquiry[aria-current=page]:after { display:none; }
.site-header .site-nav { gap:24px; }
.site-header .site-nav a { text-shadow:0 1px 8px #101820; }
.menu-toggle { display:none; padding:10px 14px; min-height:44px; border:1px solid var(--site-light-rule); background:var(--ink); color:var(--paper); }
.inner-header~.site-content [id],.site-content details[id] { scroll-margin-top:30px; }
.page-opening { padding-top:clamp(56px,7vw,100px); padding-bottom:64px; }
.page-opening .opening-line { display:flex; justify-content:space-between; align-items:center; padding-bottom:24px; margin-bottom:32px; border-bottom:1px solid var(--site-rule); }
.opening-line .meta { margin:0; }
.opening-line>span:last-child { font-size:12px; color:var(--site-muted); }
.opening-intro { max-width:530px; padding-top:28px; }
.photo { margin:0; }
.photo .image-frame { overflow:hidden; background:var(--site-soft); }
.photo img { width:100%; height:auto; aspect-ratio:1; object-fit:cover; }
.photo.landscape img { aspect-ratio:1.4; }
.photo figcaption { color:var(--site-muted); font-size:12px; line-height:1.5; padding-top:12px; }
.about-opening { display:grid; grid-template-columns:1.3fr 1fr; gap:6%; align-items:start; }
.about-opening .photo { padding-top:66px; }
.about-opening .opening-intro { max-width:480px; }
.service-overview { display:grid; grid-template-columns:.9fr 1.1fr; gap:8%; align-items:center; }
.service-overview .photo { max-width:500px; }
.service-index { list-style:none; padding:0; margin:32px 0 0; }
.service-index li { border-top:1px solid var(--site-rule); }
.service-index a { display:grid; grid-template-columns:28px 1fr 20px; gap:18px; align-items:center; padding:18px 0; min-height:64px; font-size:clamp(17px,1.65vw,24px); letter-spacing:-.02em; }
.service-index .number { color:var(--site-accent-text); font-size:11px; letter-spacing:.08em; }
.service-index .index-arrow { font-size:20px; }
.section-top { display:flex; align-items:end; justify-content:space-between; gap:40px; margin-bottom:40px; }
.section-top h2 { margin:0; }
.selected-grid { display:grid; grid-template-columns:1.4fr 1fr; gap:50px 7%; }
.selected-grid article:first-child { grid-row:span 2; }
.selected-grid article:nth-child(2) { margin-top:70px; }
.selected-grid .image-frame { overflow:hidden; background:var(--site-soft); }
.selected-grid img { height:auto; aspect-ratio:1.25; }
.selected-grid article:first-child img { aspect-ratio:.88; }
.selected-grid h3 { font-size:clamp(25px,2.6vw,38px); margin:8px 0 12px; }
.selected-grid .meta { margin:18px 0 0; }
.selected-grid p:not(.meta) { font-size:15px; margin:0; }
.selected-grid article>a { display:block; }
.selected-grid .project-title { display:flex; justify-content:space-between; align-items:center; gap:16px; }
.selected-grid .project-title span { font-size:25px; }
.process-strip { display:grid; grid-template-columns:repeat(4,1fr); gap:32px; margin-top:48px; }
.process-strip article { border-top:1px solid var(--site-rule); padding-top:22px; }
.process-strip h3 { font-size:23px; letter-spacing:-.03em; margin:15px 0; }
.process-strip p { font-size:15px; }
.process-strip .number { color:var(--site-accent-text); font-size:12px; }
.credential-line { display:flex; flex-wrap:wrap; align-items:center; gap:20px 48px; padding:32px 0; border-top:1px solid var(--site-rule); }
.credential-line h3 { font-size:18px; margin:0 auto 0 0; }
.credential-line p { font-size:14px; margin:0; }
.credential-line a { text-decoration:underline; text-underline-offset:5px; }
.traceability { display:grid; grid-template-columns:1fr 1fr; gap:10%; }
.traceability .trace-note { border-top:1px solid var(--site-rule); padding-top:24px; }
.service-opening { display:grid; grid-template-columns:1.15fr 1fr; gap:9%; }
.service-opening .service-index { margin:0; }
.service-block { display:grid; grid-template-columns:60px 1.1fr .9fr; gap:40px; border-top:1px solid var(--site-rule); padding:64px 0; align-items:start; }
.service-block>.number { font-size:18px; color:var(--site-accent-text); padding-top:7px; }
.service-block h2 { font-size:clamp(34px,4vw,55px); }
.service-block .photo { max-width:430px; margin-left:auto; }
.service-block:nth-child(even) { grid-template-columns:60px .9fr 1.1fr; }
.service-block:nth-child(even) .service-description { grid-column:3; grid-row:1; }
.service-block:nth-child(even) .photo { grid-column:2; grid-row:1; margin:0; }
.service-block ul { list-style:none; margin:24px 0; padding:0; }
.service-block li { font-size:15px; line-height:1.55; margin:9px 0; padding-left:20px; position:relative; }
.service-block li:before { content:'—'; position:absolute; left:0; color:var(--site-accent-text); }
.service-block .photo img { aspect-ratio:1; }
.site-content .spec-note { font-size:14px; color:var(--site-muted); }
.portfolio-opening { padding-bottom:40px; }
.portfolio-opening .split { align-items:end; }
.project-feature { display:grid; grid-template-columns:1.25fr .75fr; gap:7%; padding-bottom:64px; align-items:center; }
.project-feature .photo img { aspect-ratio:1.15; }
.project-feature h2 { font-size:clamp(40px,4.5vw,64px); }
.project-collection { display:grid; grid-template-columns:1fr 1fr; gap:64px 7%; padding-bottom:80px; align-items:start; }
.project-entry { border-top:1px solid var(--site-rule); }
.project-entry summary { list-style:none; cursor:pointer; padding-top:22px; }
.project-entry summary::-webkit-details-marker { display:none; }
.project-entry summary .image-frame { overflow:hidden; }
.project-entry summary img { height:auto; aspect-ratio:1.35; object-fit:cover; }
.project-entry summary .meta { margin:20px 0 10px; }
.project-entry summary h2 { font-size:clamp(28px,2.7vw,40px); margin:0; }
.project-entry summary .summary-line { display:flex; justify-content:space-between; align-items:center; gap:16px; }
.project-entry summary .disclosure-mark { font-size:30px; font-weight:300; }
.project-entry[open] .disclosure-mark { transform:rotate(45deg); }
.project-entry .disclosure-label { display:block; font-size:13px; margin:15px 0 22px; color:var(--site-muted); }
.project-entry[open] .disclosure-label .when-closed,.project-entry:not([open]) .disclosure-label .when-open { display:none; }
.project-body { padding:2px 0 24px; }
.project-body p { font-size:16px; }
.project-facts { display:grid; grid-template-columns:1fr 1fr; gap:24px; padding:24px 0; margin:0 0 12px; border-block:1px solid var(--site-rule); }
.project-facts dt { font-size:11px; letter-spacing:.07em; color:var(--site-muted); margin-bottom:8px; text-transform:uppercase; }
.project-facts dd { font-size:18px; margin:0; }
.project-body .scope-list { margin:0 0 24px; padding-left:20px; line-height:1.7; font-size:15px; }
.project-permalink { font-size:12px; text-decoration:underline; text-underline-offset:4px; }
.contact-opening { padding-bottom:42px; }
.contact-grid { display:grid; grid-template-columns:.8fr 1.2fr; gap:11%; padding-bottom:96px; }
.contact-details { border-top:1px solid var(--site-rule); padding-top:28px; }
.contact-details h2 { font-size:13px; letter-spacing:0; margin:0 0 12px; }
.contact-details .contact-phone { font-size:clamp(28px,3vw,44px); letter-spacing:-.035em; }
.contact-details a { display:inline-block; padding-block:8px; overflow-wrap:anywhere; }
.contact-details address { font-style:normal; line-height:1.7; font-size:16px; margin-top:26px; }
.contact-details .company-info { font-size:12px; color:var(--site-muted); margin-top:36px; }
.enquiry-form { border-top:1px solid var(--site-rule); padding-top:26px; }
.enquiry-form .form-intro { font-size:13px; color:var(--site-muted); }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:22px 24px; }
.field { display:flex; flex-direction:column; gap:8px; }
.field.full { grid-column:1/-1; }
.field label { font-size:13px; }
.field label span { color:var(--site-muted); font-size:11px; }
.field input,.field select,.field textarea { width:100%; font:inherit; font-size:16px; color:var(--ink); background:transparent; border:1px solid #929c9d; border-radius:0; padding:12px; min-height:47px; caret-color:var(--site-accent-text); }
.field textarea { resize:vertical; min-height:135px; }
.field [aria-invalid=true] { border-color:var(--site-accent-text); }
.field-error { color:var(--site-accent-text); font-size:12px; line-height:1.4; }
.enquiry-form .privacy-note { font-size:12px; line-height:1.6; margin:22px 0; }
.privacy-note a { text-decoration:underline; text-underline-offset:3px; }
.form-status { font-size:14px!important; line-height:1.5!important; margin:22px 0!important; padding:18px; background:var(--site-soft); }
.form-status:empty { display:none; }
.policy-layout { display:grid; grid-template-columns:.55fr 1.45fr; gap:8%; padding-bottom:96px; }
.policy-index a { display:block; padding:10px 0; font-size:14px; }
.policy-body { max-width:760px; }
.policy-body section { border-top:1px solid var(--site-rule); padding-top:30px; margin-bottom:40px; scroll-margin-top:30px; }
.policy-body h2 { font-size:29px; }
.policy-body p,.policy-body li { font-size:16px; line-height:1.7; }
.policy-body a { text-decoration:underline; text-underline-offset:4px; overflow-wrap:anywhere; }
.site-footer { background:var(--ink); color:var(--paper); padding:0; }
.site-footer .footer-cta { padding:64px 0; display:flex; justify-content:space-between; align-items:center; gap:40px; border-bottom:1px solid var(--site-light-rule); }
.site-footer .footer-cta h2 { font-size:clamp(36px,4.5vw,64px); line-height:1.1; margin:0; }
.site-footer .footer-columns { padding:48px 0; display:grid; grid-template-columns:1.3fr .7fr 1fr 1fr; gap:40px; font-size:14px; line-height:1.7; }
.site-footer .footer-logo { width:105px; height:72px; object-fit:contain; margin-bottom:18px; }
.site-footer .footer-credentials { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:24px 48px; padding:24px; margin-bottom:32px; }
.site-footer .footer-credentials img { display:block; height:auto; object-fit:contain; max-width:100%; }
.site-footer .credential-ifc { width:104px; }
.site-footer .credential-constructionline { width:190px; }
.site-footer .credential-chas { width:92px; }
@media(max-width:760px) {
 .site-footer .footer-credentials { gap:20px 24px; padding:20px; }
 .site-footer .credential-ifc { width:80px; }
 .site-footer .credential-constructionline { width:144px; }
 .site-footer .credential-chas { width:80px; }
}
.site-footer .footer-columns p { font-size:14px; margin:0; max-width:240px; color:#c5cdcf; }
.site-footer nav { display:flex; flex-direction:column; align-items:start; gap:7px; }
.site-footer a { overflow-wrap:anywhere; }
.site-footer address { font-style:normal; color:#c5cdcf; }
.site-footer .footer-legal { border-top:1px solid var(--site-light-rule); padding:24px 0; display:flex; justify-content:space-between; gap:18px; flex-wrap:wrap; font-size:11px; color:#c5cdcf; }
.site-footer .footer-legal a { text-decoration:underline; text-underline-offset:4px; }
.reveal-line { display:block; overflow:hidden; padding-bottom:.08em; margin-bottom:-.08em; }
.reveal-line>span { display:block; }
@media(hover:hover) and (pointer:fine) {
  .site-content .link-arrow:hover span[aria-hidden] { transform:translateX(4px); }
  .site-button:hover { background:#ef6838; }
  .site-content a:hover,.site-footer nav a:hover,.site-nav a:hover { text-decoration:underline; text-underline-offset:6px; }
  .selected-grid img,.project-entry summary img { transition:transform 400ms var(--ease-out); }
  .selected-grid a:hover img,.project-entry summary:hover img { transform:scale(1.025); }
}
@media(prefers-reduced-motion:no-preference) {
  .site-content .revealing .reveal-line>span { animation:heading-in 550ms var(--ease-out) both; }
  .site-content .revealing .reveal-line:nth-child(2)>span { animation-delay:45ms; }
  .site-content .photo.revealing img { animation:photo-in 600ms var(--ease-out) both; }
  @keyframes heading-in { from { transform:translateY(105%); } to { transform:translateY(0); } }
  @keyframes photo-in { from { opacity:.65; transform:scale(1.025); } to { opacity:1; transform:scale(1); } }
}
.reduced .site-content * { animation:none!important; transition:none!important; }
@media(prefers-reduced-motion:reduce) { .site-content *,.site-footer * { animation:none!important; transition:none!important; } .site-content img { transform:none!important; } }
@media(max-width:1000px) {
  .site-header .site-nav,.inner-header .site-nav { gap:15px; font-size:12px; }
  .site-nav .nav-enquiry { margin:0; padding:12px; }
  .service-block { grid-template-columns:36px 1fr 1fr; gap:24px; }
  .service-block:nth-child(even) { grid-template-columns:36px 1fr 1fr; }
  .site-footer .footer-columns { grid-template-columns:1fr 1fr; }
}
@media(max-width:760px) {
  .inner-header { height:88px; padding:12px 22px; }
  .inner-header .brand { width:88px; }
  .menu-toggle { display:block; }
  .site-header .site-nav,.inner-header .site-nav { display:flex; flex-wrap:wrap; gap:10px 20px; background:var(--ink); padding:20px; }
  .site-header .site-nav>a:not(.contact-link) { display:block; }
  .site-header:has(.site-nav),.inner-header:has(.site-nav) { flex-wrap:wrap; }
  .inner-header:not(.nav-ready) { height:auto; }
  .nav-ready .site-nav { display:none; }
  .site-header.nav-ready .site-nav,.inner-header.nav-ready .site-nav { display:none; }
  .nav-ready .menu-toggle { margin-left:auto; }
  .site-header.nav-ready .site-nav.is-open,.inner-header.nav-ready .site-nav.is-open { display:flex; position:absolute; left:0; right:0; top:100%; padding:24px; flex-direction:column; align-items:stretch; gap:4px; border-bottom:1px solid var(--site-light-rule); box-shadow:0 18px 30px #10182033; }
  .site-nav a { min-height:44px; font-size:18px; text-shadow:none!important; }
  .site-nav .nav-enquiry { margin-top:10px; }
  .page-opening { padding-top:48px; padding-bottom:40px; }
  .page-opening .opening-line { margin-bottom:28px; }
  .opening-line>span:last-child { display:none; }
  .split,.split.equal,.about-opening,.service-overview,.service-opening,.traceability,.project-feature,.contact-grid,.policy-layout { grid-template-columns:1fr; gap:32px; }
  .about-opening .photo { padding-top:0; }
  .about-opening .photo img { aspect-ratio:1.3; }
  .site-content h1 { font-size:clamp(44px,10.5vw,76px); }
  .service-overview .photo { max-width:100%; }
  .service-overview .photo img { aspect-ratio:1.35; }
  .service-index a { font-size:19px; }
  .section-top { align-items:start; flex-direction:column; gap:16px; }
  .selected-grid,.project-collection { grid-template-columns:1fr; gap:40px; }
  .selected-grid article:first-child { grid-row:auto; }
  .selected-grid article:nth-child(2) { margin:0; }
  .selected-grid article:first-child img,.selected-grid img { aspect-ratio:1.25; }
  .process-strip { grid-template-columns:1fr 1fr; gap:20px; margin-top:32px; }
  .process-strip h3 { font-size:21px; }
  .credential-line { gap:20px 28px; }
  .credential-line h3 { flex-basis:100%; }
  .service-block,.service-block:nth-child(even) { grid-template-columns:32px 1fr; gap:12px; padding:42px 0; }
  .service-block .service-description,.service-block:nth-child(even) .service-description { grid-column:2; grid-row:1; }
  .service-block .photo,.service-block:nth-child(even) .photo { grid-column:2; grid-row:2; max-width:none; margin:16px 0 0; }
  .service-block .photo img { aspect-ratio:1.2; }
  .service-block h2 { font-size:34px; }
  .project-feature { padding-bottom:44px; }
  .contact-grid { padding-bottom:64px; }
  .contact-details .company-info { margin-top:20px; }
  .form-grid { gap:20px 16px; }
  .policy-index { display:none; }
  .site-footer .footer-cta { flex-direction:column; align-items:start; gap:25px; padding:48px 0; }
  .site-footer .footer-columns { gap:32px 24px; }
  .site-footer .footer-columns>div:first-child { grid-column:1/-1; }
  .site-footer .footer-columns>address { grid-column:1/-1; }
  .site-footer .footer-legal { flex-direction:column; }
}
@media(max-width:370px) { .form-grid { grid-template-columns:1fr; } .field.full { grid-column:auto; } .process-strip { grid-template-columns:1fr; } .site-footer .footer-columns { grid-template-columns:1fr; } }

/* Shared footer refinements approved with the homepage research report. */
.site-footer .footer-cta h2 { max-width:19ch; }
.site-footer .footer-cta .site-button { flex-shrink:0; }
.site-footer a:focus-visible { outline:2px solid var(--accent); outline-offset:5px; }
@media(max-width:760px) { .site-footer .footer-contact { grid-column:1/-1; } }

/* Draw action arrows consistently, without mobile emoji font substitution. */
.action-arrow { display:inline-block; width:1em; height:1em; vertical-align:-.125em; flex-shrink:0; }
