/* Northview responsive reading edition. The print PDF has separate fixed-page CSS. */
:root{--paper:#f5f4ef;--white:#fff;--ink:#202527;--muted:#566267;--line:#c8cdca;--graphite:#1d2427;--blue:#173b4a;--glacier:#7ea5b3;--bronze:#9a8067}
*{box-sizing:border-box}html{font-family:"DejaVu Sans",Arial,sans-serif;color:var(--ink);background:var(--paper);font-size:100%;line-height:1.55;overflow-wrap:anywhere}body{margin:0}main{max-width:76rem;margin:auto}.page{position:relative;padding:clamp(1.25rem,5vw,4rem);border-bottom:1px solid var(--line);background:var(--paper)}.page.cover,.page.dark,.page.back{color:#fff;background:var(--graphite)}img,svg{max-width:100%;height:auto}.photo,.cover-image,.back>img{display:block;width:100%;height:auto;object-fit:cover}figure{margin:1.25rem 0}h1,h2,h3{line-height:1.12;margin:0 0 .7em}h1{font-size:clamp(2.25rem,8vw,5rem)}h2{font-size:clamp(1.75rem,5.8vw,3.3rem)}h3{font-size:clamp(1rem,3.2vw,1.35rem)}p{margin:.4rem 0 1rem;max-width:72ch}.lede{font-size:1.12rem;color:var(--muted)}.dark .lede,.cover .lede,.back .lede{color:#dce4e6}.eyebrow,.caps{text-transform:uppercase;letter-spacing:.12em;font-size:.78rem;font-weight:700;color:var(--blue)}.dark .eyebrow,.cover .eyebrow,.back .eyebrow{color:#b9d4dd}.small{font-size:.875rem}.tag{display:inline-block;padding:.35rem .6rem;background:#dfe8ea;color:var(--blue);font-size:.75rem;font-weight:700}.note{padding-left:1rem;border-left:3px solid var(--glacier);color:var(--muted)}.footer{margin-top:2rem;padding-top:1rem;border-top:1px solid currentColor;display:flex;justify-content:space-between;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;opacity:.75}.brand-lockup{display:flex;align-items:center;gap:1rem}.brand-mark{width:3rem}.brand-name{font-weight:700;letter-spacing:.12em;text-transform:uppercase}.brand-sub{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.cover-content,.back-content{position:relative}.cover-image,.back>img{margin:calc(-1 * clamp(1.25rem,5vw,4rem));width:calc(100% + 2 * clamp(1.25rem,5vw,4rem));max-width:none;margin-bottom:2rem}.cover-index{display:flex;flex-wrap:wrap;gap:1rem}.promise-grid,.contents-head,.product-top,.product-bottom,.detail-layout,.slider-copy,.entry-layout,.glazing-layout,.gallery-grid{display:grid;gap:clamp(1.25rem,4vw,3rem)}.principles,.collection-list,.profile-grid,.swatch-grid,.hardware-grid,.config-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:1rem}.principle,.collection-card,.profile-card,.hardware-card,.config,.gallery-specs{padding:1rem;border:1px solid var(--line);background:rgba(255,255,255,.45)}.toc{margin-top:1.5rem}.toc a{display:grid;grid-template-columns:2rem minmax(0,1fr) 2rem;gap:.5rem;padding:.65rem 0;border-bottom:1px solid var(--line);color:inherit}.code,.big-number{font-size:clamp(2.8rem,12vw,6rem);line-height:.9;color:#a9c1c9}.metric{padding-top:.7rem;border-top:3px solid var(--blue)}.metric .value{font-size:1.6rem}.feature-list{padding-left:1.2rem}.operation-diagram,.glass-stack,.technical-banner{padding:1rem;background:#e5e9e8}.dark .config{border-color:#667176;background:transparent}table{width:100%;border-collapse:collapse}th,td{text-align:left;vertical-align:top;padding:.65rem;border-bottom:1px solid var(--line)}th{border-bottom:3px solid var(--blue);font-size:.78rem;text-transform:uppercase}.swatch-color{min-height:4rem;border:1px solid #0002}.door-elevations{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.door-shape{height:11rem;background:#8a684d;border:2px solid #303638}.door-shape.glass{background:linear-gradient(90deg,#795a44 0 70%,#b7ced3 70%)}.contact a{display:block;margin:.5rem 0;color:inherit}.disclosure{font-size:.82rem;color:#c4ced1}.gallery-main figcaption,.gallery-side figcaption{padding:1rem;background:var(--graphite);color:#fff}dl{max-width:50rem}dd{margin-bottom:.7rem}
@media(min-width:48rem){.promise-grid{grid-template-columns:minmax(18rem,.85fr) 1.3fr}.contents-head{grid-template-columns:8rem 1fr;align-items:end}.product-top{grid-template-columns:13rem 1fr;align-items:end}.product-bottom{grid-template-columns:12rem 1fr 1fr}.detail-layout,.entry-layout{grid-template-columns:1.05fr .95fr}.slider-copy{grid-template-columns:16rem 1fr}.glazing-layout{grid-template-columns:18rem 1fr}.gallery-grid{grid-template-columns:1.1fr .9fr}.cover,.back{min-height:80vh}.cover-image,.back>img{max-height:58vh;object-fit:cover}}
@media(max-width:32rem){html{font-size:100%}.page{padding:1rem}.cover-image,.back>img{margin:-1rem -1rem 1.5rem;width:calc(100% + 2rem)}.toc a{grid-template-columns:1.7rem minmax(0,1fr) 1.7rem}.door-elevations{grid-template-columns:1fr}.footer{gap:1rem}.brand-name{font-size:.95rem}.brand-sub{font-size:.62rem}.profile-card svg,.operation-diagram svg,.glass-stack svg{max-height:18rem}table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}}
@media print{.page{break-before:page}.page:first-child{break-before:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}


/* Pass-05.4: grid and flex children may shrink to their column so enlarged text wraps instead of widening the page (no change at normal text size) */
main *{min-width:0}
/* Pass-05.4: fixed rem grid tracks capped as a share of the container (identical at normal text size; prevents squeezed columns at enlarged text) */
@media(min-width:48rem){.promise-grid{grid-template-columns:minmax(min(18rem,50%),.85fr) 1.3fr}.contents-head{grid-template-columns:min(8rem,40%) 1fr}.product-top{grid-template-columns:min(13rem,45%) 1fr}.product-bottom{grid-template-columns:min(12rem,30%) 1fr 1fr}.slider-copy{grid-template-columns:min(16rem,45%) 1fr}.glazing-layout{grid-template-columns:min(18rem,50%) 1fr}}
/* Pass-05.4: a data table wider than its column scrolls inside its own wrapper instead of widening the page (no effect when the table fits) */
div:has(>table){max-width:100%;overflow-x:auto}
.toc a{grid-template-columns:min(2rem,15%) minmax(0,1fr) min(2rem,15%)}
@media(max-width:32rem){.toc a{grid-template-columns:min(1.7rem,15%) minmax(0,1fr) min(1.7rem,15%)}}
