/* Canadian Building Systems — shared styles
   Light steel-grey pages; header, heroes and photo bands stay dark over photographs. */
:root{
 --bg:#eef0f2;--surface:#ffffff;--surface2:#f6f7f8;--line:#d5dade;--ink:#14181c;--muted:#454c54;
 --accent:#34414e;--accent-2:#1f5f8f;--on-accent:#ffffff;
 --band:#1a1f24;--band-ink:#eef0f2;--band-muted:#bcc3ca;
 --silver-hi:#f2f4f6;--silver:#c8ced5;--silver-lo:#9aa2ab;
 --wrap:min(1280px,100% - 64px);--nav:88px}
header,.hero,.page-hero,.wide{--ink:#eef0f2;--muted:#aab1b9;--line:rgba(255,255,255,.18);color:var(--ink)}

*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font:400 17px/1.6 Archivo,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit}
.wrap{width:var(--wrap);margin-inline:auto}
.skip{position:absolute;left:16px;top:-60px;background:var(--accent);color:var(--on-accent);padding:10px 16px;z-index:50}
.skip:focus{top:16px}
:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}
h1,h2,h3{font-weight:700;font-stretch:118%;letter-spacing:-.015em;line-height:1;text-transform:uppercase}
h2{font-size:clamp(34px,4.4vw,64px);margin-bottom:24px}
h3{font-size:19px;margin-bottom:10px}
.tag{display:inline-flex;gap:12px;align-items:center;font-size:13px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:20px}
.tag::before{content:"";width:28px;height:2px;background:currentColor}
.lead{font-size:19px;color:var(--muted);max-width:620px}
.muted{color:var(--muted)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:52px;padding:0 28px;border:0;cursor:pointer;
 background:var(--accent);color:var(--on-accent);text-decoration:none;font:700 14px/1 Archivo,sans-serif;font-stretch:110%;
 text-transform:uppercase;letter-spacing:.08em;transition:transform .15s,filter .2s}
.btn:hover{transform:translateY(-2px);filter:brightness(1.12)}
.btn:active{transform:translateY(0);filter:brightness(.96)}
.btn .arr{transition:transform .2s}.btn:hover .arr{transform:translateX(4px)}
.btn.line{background:none;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.line:hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.btn.silver,.hero .btn:not(.line),.page-hero .btn:not(.line){background:linear-gradient(180deg,var(--silver-hi) 0%,var(--silver) 55%,var(--silver-lo) 100%);color:#0f1113;box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 1px 0 rgba(0,0,0,.4)}
.link{font-weight:600;text-decoration:none;text-transform:uppercase;letter-spacing:.1em;font-size:13px;display:inline-flex;gap:8px;align-items:center;
 background:linear-gradient(currentColor,currentColor) 0 100%/0 1.5px no-repeat;padding-bottom:3px;transition:background-size .25s}
.link:hover{background-size:100% 1.5px}

/* Header */
header{position:absolute;inset:0 0 auto;z-index:10}
header .wrap{display:flex;align-items:center;justify-content:space-between;height:var(--nav);border-bottom:1px solid rgba(255,255,255,.12)}
.logo{display:flex;align-items:center;gap:14px;text-decoration:none;font-weight:800;font-stretch:125%;font-size:22px;letter-spacing:.02em;line-height:1.1}
.logo svg{width:36px;height:36px;flex:none}
.logo small{display:block;font-size:10px;font-weight:500;letter-spacing:.2em;color:var(--muted);font-stretch:100%}
nav{display:flex;align-items:center;gap:32px}
nav ul{display:flex;gap:32px;list-style:none;padding:0;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.1em}
nav ul a{text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/0 1.5px no-repeat;padding:4px 0;transition:background-size .25s,color .2s}
nav ul a:hover,nav ul a[aria-current="page"]{background-size:100% 1.5px;color:#fff}
nav .btn{min-height:44px;padding:0 20px;font-size:13px}
.menu-btn{display:none;width:48px;height:48px;background:none;border:1px solid var(--line);color:var(--ink);cursor:pointer}
.menu-btn span{display:block;width:20px;height:2px;background:currentColor;margin:5px auto;transition:transform .2s,opacity .2s}

/* Home hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;background:#0f1113}
.hero>img{position:absolute;inset:0;object-position:60% 50%;animation:zoom 1.8s cubic-bezier(.2,.7,.2,1) both}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(15,17,19,.92) 0%,rgba(15,17,19,.6) 46%,rgba(15,17,19,.1) 100%),linear-gradient(0deg,rgba(15,17,19,.85) 0%,transparent 38%)}
.hero .wrap{position:relative;z-index:1;padding:calc(var(--nav) + 48px) 0 56px;animation:rise .9s .15s ease-out both}
.hero h1{font-size:clamp(40px,6.2vw,96px);max-width:16ch;margin-bottom:28px}
.hero h1 em,.page-hero h1 em{font-style:normal;color:transparent;background:linear-gradient(180deg,var(--silver-hi),var(--silver) 60%,var(--silver-lo));-webkit-background-clip:text;background-clip:text}
.hero p{font-size:19px;max-width:540px;color:#c9ced4;margin-bottom:36px}
.actions{display:flex;gap:14px;flex-wrap:wrap}
.strip{display:grid;grid-template-columns:repeat(4,1fr);margin-top:72px;border-top:1px solid var(--line)}
.strip a{padding:20px 0;font-weight:600;text-transform:uppercase;letter-spacing:.12em;font-size:13px;color:var(--muted);text-decoration:none;transition:color .2s}
.strip a:hover{color:var(--ink)}
.strip b{color:var(--silver);margin-right:10px}
@keyframes zoom{from{transform:scale(1.07)}}
@keyframes rise{from{opacity:0;transform:translateY(28px)}}

/* Inner page hero */
.page-hero{position:relative;min-height:62svh;display:flex;align-items:flex-end;overflow:hidden;background:#0f1113}
.page-hero>img{position:absolute;inset:0;animation:zoom 1.8s cubic-bezier(.2,.7,.2,1) both}
.page-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(15,17,19,.92) 0%,rgba(15,17,19,.55) 60%,rgba(15,17,19,.2) 100%),linear-gradient(0deg,rgba(15,17,19,.7),transparent 50%)}
.page-hero .wrap{position:relative;z-index:1;padding:calc(var(--nav) + 64px) 0 64px;animation:rise .9s .1s ease-out both}
.page-hero h1{font-size:clamp(40px,5.4vw,84px);max-width:18ch;margin-bottom:22px}
.page-hero p{font-size:19px;max-width:600px;color:#c9ced4}
.page-hero .tag{color:var(--silver)}

/* Sections */
section{padding:128px 0}
section.tight{padding:96px 0}
.alt{background:var(--surface)}
.head{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:end;margin-bottom:56px}
.head p{color:var(--muted);max-width:480px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center}
.grid2.top{align-items:start}

/* Cards in a ruled grid */
.ruled{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.ruled.c4{grid-template-columns:repeat(4,1fr)}
.ruled.c3{grid-template-columns:repeat(3,1fr)}
.ruled.c2{grid-template-columns:repeat(2,1fr)}
.ruled>*{background:var(--surface);padding:36px 28px 40px}
.alt .ruled>*{background:var(--surface2)}
.card{text-decoration:none;transition:background .25s,transform .2s,box-shadow .25s;position:relative;display:block}
a.card:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(20,24,28,.08);z-index:1}
a.card::after{content:"";position:absolute;left:0;top:0;height:2px;width:0;background:var(--accent);transition:width .35s}
a.card:hover::after{width:100%}
.card .ico{width:52px;height:52px;stroke:var(--accent);fill:none;stroke-width:1.6;margin-bottom:48px}
.card p{color:var(--muted);font-size:15px}
.card ul{list-style:none;padding:0;margin-top:22px;font-size:14px}
.card li{padding:8px 0;border-top:1px solid var(--line)}
.card .more{margin-top:24px}

/* Frame-type diagrams */
.frame svg{width:100%;height:auto;margin-bottom:28px;display:block}
.frame svg .s{stroke:var(--ink);stroke-width:3;fill:none;stroke-linejoin:round}
.frame svg .g{stroke:var(--line);stroke-width:1.5;fill:none}
.frame svg .a{stroke:var(--accent-2);stroke-width:1.5;fill:none;stroke-dasharray:4 4}
.frame dl{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;font-size:14px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.frame dt{color:var(--muted)}

/* Photo frames */
.photo{overflow:hidden;aspect-ratio:5/4}
.photo img{transition:transform .6s}.photo:hover img{transform:scale(1.03)}

/* Numbered spec list */
.spec{list-style:none;padding:0;margin:32px 0 40px;counter-reset:k}
.spec li{display:grid;grid-template-columns:56px 1fr;padding:15px 0;border-top:1px solid var(--line);counter-increment:k}
.spec li::before{content:counter(k,decimal-leading-zero);color:var(--accent);font-weight:700}
.spec span{display:block;color:var(--muted);font-size:14px}

/* Photo band */
.wide{position:relative;height:80svh;min-height:520px;overflow:hidden;padding:0;background:#0f1113}
.wide img{filter:grayscale(.35) contrast(1.05)}
.wide::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(15,17,19,.9) 0%,rgba(15,17,19,.25) 55%,rgba(15,17,19,.05) 100%)}
.wide .wrap{position:absolute;inset:auto 0 64px;z-index:1}
.wide h2{max-width:16ch;margin:0}
.wide .tag{color:var(--silver)}
.wide p{max-width:520px;color:#c9ced4;margin-top:20px}

/* Steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.steps>div{background:var(--surface);padding:32px 28px}
.steps small{display:block;color:var(--accent);font-weight:700;letter-spacing:.16em;margin-bottom:44px}
.steps p{color:var(--muted);font-size:15px}

/* Benefit stats */
.why{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 48px}
.why>div{border-top:2px solid var(--accent);padding-top:28px}
.why b{display:block;font-size:clamp(28px,3vw,44px);font-weight:800;font-stretch:125%;line-height:1;margin-bottom:12px;text-transform:uppercase;color:var(--accent)}
.why p{color:var(--muted)}

/* Checklist */
.checks{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 40px}
.checks li{padding:14px 0 14px 34px;border-top:1px solid var(--line);position:relative}
.checks li::before{content:"";position:absolute;left:4px;top:21px;width:14px;height:8px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg)}
.checks.one{grid-template-columns:1fr}

/* FAQ */
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:24px 48px 24px 0;font-weight:600;font-size:19px;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:8px;top:50%;width:14px;height:14px;margin-top:-10px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg);transition:transform .25s}
.faq details[open] summary::after{transform:rotate(225deg);margin-top:-2px}
.faq summary:hover{color:var(--accent-2)}
.faq details p{padding:0 48px 28px 0;color:var(--muted);max-width:780px}

/* Dark band (contact / CTA) */
.band{background:var(--band);color:var(--band-ink)}
.band .tag{color:var(--band-muted)}
.band .lead,.band .muted{color:var(--band-muted)}
.band h2{}
.band dl{display:grid;grid-template-columns:110px 1fr;gap:12px 20px;font-weight:500;margin-top:36px}
.band dt{color:var(--band-muted);font-size:14px;text-transform:uppercase;letter-spacing:.1em;padding-top:2px}
.cta{display:flex;justify-content:space-between;align-items:end;gap:48px;flex-wrap:wrap}
.cta h2{margin:0;max-width:14ch}

/* Form */
form{display:grid;grid-template-columns:1fr 1fr;gap:12px}
form label{display:grid;gap:6px;font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--band-muted)}
form .full{grid-column:1/-1}
input,select,textarea{font:400 16px Archivo,sans-serif;padding:14px 16px;border:1px solid transparent;background:#fff;color:#111;border-radius:0;width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--silver);outline-offset:-1px}
textarea{min-height:120px;resize:vertical}
form .btn{grid-column:1/-1}
.sent{grid-column:1/-1;font-weight:600;display:none}

/* Footer */
footer{background:#0f1113;color:#aab1b9;padding:72px 0 32px;font-size:15px}
.foot{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:48px;padding-bottom:48px;border-bottom:1px solid #2a2f34}
.foot h4{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#eef0f2;margin-bottom:16px;font-weight:600}
.foot ul{list-style:none;padding:0;display:grid;gap:8px}
.foot a{text-decoration:none}.foot a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}
.foot .logo{color:#eef0f2;margin-bottom:18px}
.legal{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;padding-top:28px;font-size:12px}
.legal .credits{max-width:760px;opacity:.75}
.legal a{color:inherit}

@media (max-width:1100px){nav .btn{display:none}}
@media (max-width:960px){
 :root{--wrap:calc(100% - 48px)}
 nav ul{display:none}
 .menu-btn{display:block}
 nav.open ul{display:flex;position:fixed;inset:0;flex-direction:column;justify-content:center;align-items:center;gap:28px;background:#0f1113;font-size:22px;z-index:-1}
 nav.open .menu-btn span:nth-child(1){transform:translateY(7px) rotate(45deg)}
 nav.open .menu-btn span:nth-child(2){opacity:0}
 nav.open .menu-btn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
 .head,.grid2{grid-template-columns:1fr;gap:32px}
 .ruled.c4,.ruled.c3,.steps,.strip,.foot{grid-template-columns:1fr 1fr}
 .why{grid-template-columns:1fr 1fr}
 section{padding:96px 0}
}
@media (max-width:560px){
 :root{--wrap:calc(100% - 32px)}
 .ruled.c4,.ruled.c3,.ruled.c2,.steps,form,.why,.checks,.foot{grid-template-columns:1fr}
 .hero .btn,.page-hero .btn{width:100%}
 .logo{font-size:18px}
 .hero::after,.page-hero::after{background:linear-gradient(180deg,rgba(15,17,19,.55) 0%,rgba(15,17,19,.82) 45%,#0f1113 100%)}
 .ruled>*{padding:28px 22px 30px}
 .card .ico{width:40px;height:40px;margin-bottom:20px}
 #sectors .card ul{display:none}
 .ruled.c4:has(.frame){grid-template-columns:1fr 1fr}
 .ruled .frame{padding:0 16px 24px}
 .ruled .frame .cimg{margin:0 -16px 16px}
 .frame h3{font-size:16px}
 .frame p{font-size:14px}
 .frame dl{grid-template-columns:1fr;font-size:13px}
 .strip{display:none}
 .hero .wrap{padding-bottom:40px}
 .hero h1{font-size:clamp(34px,10.5vw,44px)}
 .hero p{font-size:17px;margin-bottom:28px}
 .page-hero{min-height:auto}
 .page-hero .wrap{padding:calc(var(--nav) + 40px) 0 44px}
 .page-hero h1{font-size:clamp(32px,9.6vw,44px)}
 .page-hero p{font-size:17px}
 h2{font-size:clamp(30px,8.6vw,40px)}

 .why b{font-size:28px}
 .lead{font-size:17px}
 .faq summary{font-size:17px;padding:20px 40px 20px 0}
 .band dl{grid-template-columns:90px 1fr}
 .wide{height:auto;min-height:72svh}
 .wide .wrap{bottom:40px}
 .btn{padding:0 20px}
 .legal{flex-direction:column}
 section{padding:72px 0}
 section.tight{padding:64px 0}
}
@media (max-width:380px){
 .ruled.c4:has(.frame){grid-template-columns:1fr}
 .logo small{display:none}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* Legal pages */
.page-hero.plain{min-height:auto}
.page-hero.plain::after{display:none}
.page-hero.plain .wrap{padding:calc(var(--nav) + 72px) 0 64px}
.page-hero.plain h1{font-size:clamp(36px,4.6vw,68px)}
.prose{max-width:800px}
.prose h2{font-size:clamp(22px,2.4vw,30px);margin:48px 0 14px;letter-spacing:0}
.prose h2:first-child{margin-top:0}
.prose p,.prose li{color:var(--muted)}
.prose p+p{margin-top:12px}
.prose ul{padding-left:22px;margin:12px 0}
.prose li{margin:6px 0}
.prose strong{color:var(--ink)}
.prose a{color:var(--accent-2)}
.legal-grid{display:grid;grid-template-columns:240px 1fr;gap:72px;align-items:start}
.toc{position:sticky;top:32px;list-style:none;padding:0;border-left:2px solid var(--line)}
.toc a{display:block;padding:8px 0 8px 18px;text-decoration:none;color:var(--muted);font-size:15px;margin-left:-2px;border-left:2px solid transparent}
.toc a:hover{color:var(--ink);border-left-color:var(--accent)}
.updated{font-size:14px;color:var(--muted);margin-bottom:40px}

/* Footer legal links */
.legal-links{display:flex;flex-wrap:wrap;gap:8px 20px}
.legal-links a,.legal-links button{color:inherit;font:inherit;background:none;border:0;padding:0;cursor:pointer;text-decoration:none}
.legal-links a:hover,.legal-links button:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}

/* Cookie banner */
.cookie{position:fixed;left:16px;right:16px;bottom:16px;z-index:60;max-width:560px;background:#14181c;color:#e6e9ec;border:1px solid #2f363d;padding:22px 24px;box-shadow:0 18px 48px rgba(0,0,0,.35);font-size:15px;line-height:1.5;animation:rise .4s ease-out both}
.cookie p{margin-bottom:16px;color:#c3c9cf}
.cookie a{color:#fff}
.cookie .row{display:flex;gap:10px;flex-wrap:wrap}
.cookie .btn{min-height:44px;padding:0 20px;font-size:13px}
.cookie .btn.line{color:#e6e9ec;box-shadow:inset 0 0 0 1.5px #3a4148}
@media (max-width:960px){.legal-grid{grid-template-columns:1fr;gap:32px}.toc{position:static;display:none}}
@media (max-width:560px){.cookie{left:8px;right:8px;bottom:8px;padding:18px}.cookie .btn{flex:1}}
.form-note{grid-column:1/-1;font-size:13px;color:var(--band-muted)}
.form-note a{color:inherit}
.why.two{grid-template-columns:1fr 1fr}
@media (max-width:560px){.why.two{grid-template-columns:1fr}}
.why b{overflow-wrap:anywhere}

/* Photo at the top of a card */
.ruled>*:has(.cimg){padding-top:0}
.cimg{aspect-ratio:4/3;overflow:hidden;margin:0 -28px 28px;background:#d9dde1}
.cimg img{transition:transform .6s}
a.card:hover .cimg img{transform:scale(1.03)}
@media (max-width:560px){.cimg{margin:0 -22px 22px;aspect-ratio:16/10}}

/* Gate fixes */
.logo,nav ul a,.btn{white-space:nowrap}
.foot .logo small{color:#9aa3ac}
.head.top{align-items:start}
.head .photo{aspect-ratio:16/10}
.head .lead{margin-top:4px}
.photo.mt{margin-top:40px;aspect-ratio:16/10}
body.has-cookie{padding-bottom:var(--cookie-h,0px)}
html.has-cookie{scroll-padding-bottom:calc(var(--cookie-h,0px) + 16px)}
@media (max-width:560px){.band .photo.mt{display:none}}
