@font-face { font-family: "Besley"; src: url("/assets/fonts/besley.woff2?v=1bfcd48a") format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; } @font-face { font-family: "Libre Franklin"; src: url("/assets/fonts/libre-franklin.woff2?v=d5e6781d") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; } @font-face { font-family: "Libre Franklin"; src: url("/assets/fonts/libre-franklin-italic.woff2?v=d29132a2") format("woff2"); font-weight: 100 900; font-style: italic; font-display: swap; } @font-face { font-family: "Besley Fallback"; src: local("Georgia"); size-adjust: 112%; ascent-override: 88%; descent-override: 24%; line-gap-override: 0%; } @font-face { font-family: "Franklin Fallback"; src: local("Arial"); size-adjust: 103%; ascent-override: 93%; descent-override: 24%; line-gap-override: 0%; } :root { --color-paper: oklch(97.6% 0.006 150); --color-paper-2: oklch(95% 0.009 150); --color-paper-3: oklch(90.5% 0.012 152); --color-white: oklch(99.4% 0.002 150); --color-ink: oklch(24% 0.02 165); --color-ink-2: oklch(42% 0.02 165); --color-rule: oklch(87% 0.012 155); --color-ivy: oklch(40% 0.085 158); --color-ivy-deep: oklch(33% 0.075 160); --color-ivy-wash: oklch(93.5% 0.03 158); --color-night: oklch(23% 0.035 165); --color-night-2: oklch(28% 0.04 163); --color-night-deep: oklch(19% 0.03 166); --color-night-line: oklch(37% 0.035 163); --color-on-night: oklch(96.5% 0.008 150); --color-on-night-2: oklch(82% 0.02 155); --color-scrim: oklch(23% 0.035 165 / 0.45); --color-brass: oklch(76% 0.095 85); --color-brass-halo: oklch(76% 0.095 85 / 0.25); --color-brass-deep: oklch(52% 0.085 80); --color-ply: oklch(89% 0.035 85); --color-ply-2: oklch(85% 0.04 85); --color-ply-3: oklch(80% 0.045 85); --asm-navy: oklch(28.5% 0.045 250); --asm-navy-deep: oklch(22% 0.04 250); --color-warn: oklch(46% 0.14 30); --color-focus: oklch(40% 0.085 158); --color-focus-on-night: oklch(76% 0.095 85); --color-shadow: oklch(24% 0.02 165 / 0.16); --color-shadow-deep: oklch(19% 0.03 166 / 0.45); --color-veil: oklch(21% 0.035 165 / 0.82); --color-veil-soft: oklch(21% 0.035 165 / 0.55); --color-veil-clear: oklch(21% 0.035 165 / 0); --color-scrim: oklch(19% 0.03 166 / 0.92); --font-display: "Besley", "Besley Fallback", Georgia, serif; --font-body: "Libre Franklin", "Franklin Fallback", Arial, sans-serif; --text-xs: 0.8rem; --text-sm: 0.9rem; --text-base: 1.125rem; --text-md: 1.25rem; --text-lg: 1.4rem; --text-xl: 1.65rem; --text-2xl: clamp(1.6rem, 1.25rem + 1.5vw, 2.15rem); --text-3xl: clamp(1.8rem, 1.35rem + 1.9vw, 2.5rem); --text-display: clamp(2.1rem, 1.35rem + 3vw, 3.35rem); --space-3xs: 0.25rem; --space-2xs: 0.5rem; --space-xs: 0.75rem; --space-sm: 1rem; --space-md: 1.5rem; --space-lg: 2rem; --space-xl: 3rem; --space-2xl: 4rem; --space-3xl: 6rem; --radius: 2px; --radius-card: 3px; --radius-pill: 999px; --stile: 0.5rem; --rule: 1px solid var(--color-rule); --rule-night: 1px solid var(--color-night-line); --ease-out: cubic-bezier(0.22, 1, 0.36, 1); --ease-in: cubic-bezier(0.55, 0, 1, 0.45); --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); --dur-fast: 140ms; --dur-base: 240ms; --dur-door: 620ms; --wrap: 76rem; --header-h: 4.5rem; } *, *::before, *::after { box-sizing: border-box; } html, body { overflow-x: clip; } html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + var(--space-md)); --gutter: clamp(1rem, 4vw, 2.5rem); } body { margin: 0; background: var(--color-paper); color: var(--color-ink); font: 400 var(--text-base)/1.6 var(--font-body); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; } [hidden] { display: none !important; } img, video, svg { display: block; max-width: 100%; } img, video { height: auto; } a { color: inherit; text-underline-offset: 0.18em; text-decoration-thickness: 1px; } a:hover { text-decoration-color: var(--color-ivy); } :focus-visible { outline: 3px solid var(--color-focus); outline-offset: 3px; } ::selection { background: var(--color-ivy); color: var(--color-white); } h1, h2, h3, h4 { margin: 0; color: var(--color-ink); font-family: var(--font-display); font-weight: 650; letter-spacing: -0.012em; line-height: 1.1; overflow-wrap: anywhere; min-width: 0; font-style: normal; text-wrap: balance; } h1 { font-size: var(--text-display); line-height: 1.06; } h2 { font-size: var(--text-3xl); } h3 { font-size: var(--text-lg); line-height: 1.2; letter-spacing: -0.005em; } h4 { font-size: var(--text-md); line-height: 1.25; letter-spacing: 0; } p { margin: 0; } ul, ol { margin: 0; padding: 0; } [role="list"] { list-style: none; } figure { margin: 0; } address { font-style: normal; } table { border-collapse: collapse; } .visually-hidden { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; } .sprite { position: absolute; width: 0; height: 0; overflow: hidden; } .icon { width: 1.15em; height: 1.15em; flex: none; fill: currentColor; } .wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gutter); } .wrap--narrow { max-width: 54rem; } .skip { position: absolute; left: var(--space-sm); top: -4rem; z-index: 60; padding: var(--space-xs) var(--space-sm); background: var(--color-white); color: var(--color-ink); font: 600 var(--text-sm)/1 var(--font-body); } .skip:focus { top: var(--space-sm); } .lead { font-size: var(--text-md); line-height: 1.55; max-width: 60ch; } .muted { color: var(--color-ink-2); } .num { font-variant-numeric: tabular-nums lining-nums; } .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2xs); min-height: 3.1rem; padding: 0 var(--space-md); border: 2px solid transparent; border-radius: var(--radius); font: 600 var(--text-base)/1 var(--font-body); letter-spacing: 0.005em; text-decoration: none; white-space: nowrap; cursor: pointer; transition: background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out); } .btn:active { transform: translateY(1px); } .btn:disabled, .btn[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; transform: none; } .btn--sm { min-height: 2.6rem; padding: 0 var(--space-sm); font-size: var(--text-sm); } .btn--lg { min-height: 3.4rem; padding: 0 var(--space-lg); } .btn--ivy { background: var(--color-ivy); color: var(--color-white); } .btn--ivy:hover { background: var(--color-ivy-deep); } .btn--paper { background: var(--color-white); color: var(--color-ink); } .btn--paper:hover { background: var(--color-ivy-wash); } .btn--line { border-color: var(--color-ink); color: var(--color-ink); background: transparent; } .btn--line:hover { background: var(--color-ink); color: var(--color-white); } .night .btn--line { border-color: var(--color-on-night-2); color: var(--color-on-night); } .night .btn--line:hover { background: var(--color-on-night); border-color: var(--color-on-night); color: var(--color-night); } .btn .icon { width: 1.2em; height: 1.2em; } .lbl-narrow { display: none; } .link { display: inline-flex; align-items: center; gap: var(--space-2xs); font: 600 var(--text-base)/1.2 var(--font-body); text-decoration: none; border-bottom: 2px solid currentColor; padding-bottom: 0.15em; white-space: nowrap; color: var(--color-ivy); justify-self: start; width: fit-content; } .link:hover { color: var(--color-ivy-deep); } .night .link { color: var(--color-on-night); border-bottom-color: var(--color-brass); } .link .icon { transition: transform var(--dur-fast) var(--ease-out); } .link:hover .icon { transform: translateX(3px); } .night { background: var(--color-night); color: var(--color-on-night); } .night h1, .night h2, .night h3, .night h4 { color: var(--color-on-night); } .night .muted, .site-footer .muted { color: var(--color-on-night-2); } .night :focus-visible { outline-color: var(--color-focus-on-night); } .night ::selection { background: var(--color-brass); color: var(--color-night); } .logo { display: block; width: 100%; height: auto; } .logo-plate { display: inline-block; padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-card); background: var(--color-white); } .section { padding-block: clamp(3rem, 2rem + 5vw, 5.5rem); } .section--tight { padding-block: clamp(2.25rem, 1.5rem + 3.5vw, 3.75rem); } .band { background: var(--color-paper-2); } .section-head { display: grid; gap: var(--space-sm); max-width: 46rem; margin-bottom: var(--space-xl); } .section-head p { font-size: var(--text-md); line-height: 1.55; color: var(--color-ink-2); } .night .section-head p { color: var(--color-on-night-2); } .section-head--row { max-width: none; grid-template-columns: minmax(0, 1fr) auto; align-items: end; column-gap: var(--space-lg); } .section-head--row > :first-child { display: grid; gap: var(--space-sm); max-width: 46rem; } .frame { padding: var(--stile); border: var(--rule); border-radius: var(--radius-card); background: var(--color-paper-2); } .frame__panel { height: 100%; padding: var(--space-md); border: var(--rule); border-radius: var(--radius); background: var(--color-white); box-shadow: inset 0 2px 3px -2px var(--color-shadow); } .night .frame { border: var(--rule-night); background: var(--color-night-2); } .night .frame__panel { border: var(--rule-night); background: var(--color-night); box-shadow: inset 0 2px 4px -2px var(--color-shadow-deep); } .status { display: inline-flex; align-items: center; gap: 0.5rem; font-size: var(--text-sm); text-decoration: none; white-space: nowrap; } .status__dot { width: 0.55rem; height: 0.55rem; border-radius: 50%; background: var(--color-paper-3); flex: none; } .is-open .status__dot { background: var(--color-brass); box-shadow: 0 0 0 3px var(--color-brass-halo); } .site-header { position: sticky; top: 0; z-index: 40; background: var(--color-white); border-bottom: 1px solid var(--color-rule); transition: box-shadow var(--dur-base) var(--ease-out); } .site-header.is-scrolled { box-shadow: 0 10px 24px -20px var(--color-shadow); } .site-header__bar { display: flex; align-items: center; gap: var(--space-lg); max-width: var(--wrap); margin-inline: auto; min-height: var(--header-h); padding-inline: var(--gutter); } .site-header__logo { width: 13.5rem; flex: none; padding-block: 0.5rem; } .site-nav { margin-left: auto; } .site-nav ul { display: flex; gap: var(--space-md); list-style: none; } .site-nav a { font: 500 var(--text-sm)/1 var(--font-body); font-size: 0.98rem; color: var(--color-ink); text-decoration: none; white-space: nowrap; padding: var(--space-2xs) 0; border-bottom: 2px solid transparent; } .site-nav a:hover { border-bottom-color: var(--color-paper-3); } .site-nav a[aria-current="page"] { border-bottom-color: var(--color-ivy); } .site-header__actions { display: flex; align-items: center; gap: var(--space-sm); } .site-header__phone { display: inline-flex; align-items: center; gap: 0.4rem; font: 600 var(--text-base)/1 var(--font-body); font-variant-numeric: tabular-nums; text-decoration: none; white-space: nowrap; color: var(--color-ink); } .site-header__phone .icon { color: var(--color-ivy); } .site-header__phone:hover { color: var(--color-ivy); } .menu-btn { display: none; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center; color: var(--color-ink); border: 1px solid var(--color-rule); border-radius: var(--radius); background: var(--color-white); cursor: pointer; } .menu-btn .icon { width: 1.4rem; height: 1.4rem; } .menu { position: fixed; inset: 0; z-index: 50; display: flex; flex-direction: column; gap: var(--space-lg); padding: 0 var(--gutter) calc(var(--space-lg) + env(safe-area-inset-bottom, 0px)); background: var(--color-white); overflow-y: auto; } .menu__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); min-height: var(--header-h); padding-top: env(safe-area-inset-top, 0px); } .menu nav ul { list-style: none; border-top: var(--rule); } .menu nav a { display: flex; align-items: center; justify-content: space-between; padding: var(--space-sm) 0; border-bottom: var(--rule); font: 600 var(--text-lg)/1.1 var(--font-display); color: var(--color-ink); text-decoration: none; } .menu nav a[aria-current="page"] { color: var(--color-ivy); } .menu nav .menu__sub a { font: 500 var(--text-base)/1.2 var(--font-body); padding-left: var(--space-md); } .menu__foot { display: grid; gap: var(--space-xs); margin-top: auto; } .menu__foot .btn { min-height: 3.2rem; } .menu__hours { font-size: var(--text-sm); color: var(--color-ink-2); } @media (min-width: 60rem) { .menu { left: auto; width: min(26rem, 100%); box-shadow: -24px 0 48px -24px var(--color-shadow), 0 0 0 100vmax var(--color-scrim); } } .rail__dots { display: none; } @media (max-width: 59.99rem) { .rail { display: flex !important; gap: var(--space-sm); overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; margin-inline: calc(var(--gutter) * -1); padding: 0 var(--gutter) var(--space-2xs); scroll-padding-inline: var(--gutter); scrollbar-width: none; } .rail::-webkit-scrollbar { display: none; } .rail > * { flex: 0 0 min(82%, 21rem); scroll-snap-align: start; } .rail__dots { display: flex; justify-content: center; flex-wrap: wrap; gap: 0.35rem; margin-top: var(--space-sm); } .rail__dots i { width: 1rem; height: 4px; border-radius: 1px; background: var(--color-paper-3); transition: background-color var(--dur-fast) var(--ease-out); } .rail__dots i.is-on { background: var(--color-ivy); } .night .rail__dots i { background: var(--color-night-line); } .night .rail__dots i.is-on { background: var(--color-brass); } } .shot { display: grid; gap: var(--space-2xs); } .shot img { width: 100%; border-radius: var(--radius); background: var(--color-paper-2); } .shot figcaption { font-size: var(--text-sm); line-height: 1.4; color: var(--color-ink-2); } .night .shot figcaption { color: var(--color-on-night-2); } .chips { display: flex; flex-wrap: wrap; gap: var(--space-2xs); margin-bottom: var(--space-lg); } .chip { min-height: 2.6rem; padding: 0 var(--space-sm); border: 1px solid var(--color-paper-3); border-radius: var(--radius-pill); background: var(--color-white); color: var(--color-ink); font: 500 var(--text-sm)/1 var(--font-body); cursor: pointer; white-space: nowrap; transition: background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out); } .chip:hover { border-color: var(--color-ink); } .chip[aria-pressed="true"] { background: var(--color-ink); border-color: var(--color-ink); color: var(--color-white); } .crumbs ol { display: flex; flex-wrap: wrap; gap: var(--space-2xs); list-style: none; font: 500 var(--text-sm)/1.4 var(--font-body); color: var(--color-ink-2); } .crumbs li + li::before { content: "/"; margin-right: var(--space-2xs); color: var(--color-paper-3); } .crumbs a { text-decoration: none; } .crumbs a:hover { color: var(--color-ivy); text-decoration: underline; } .night .crumbs ol { color: var(--color-on-night-2); } .night .crumbs li + li::before { color: var(--color-night-line); } .night .crumbs a:hover { color: var(--color-on-night); } .site-footer { background: var(--color-night-deep); color: var(--color-on-night); padding-block: var(--space-2xl) var(--space-lg); } .site-footer h2 { color: var(--color-on-night-2); font: 600 var(--text-sm)/1.2 var(--font-body); letter-spacing: 0.02em; margin-bottom: var(--space-sm); } .site-footer__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) repeat(3, minmax(0, 1fr)); gap: var(--space-xl); } .site-footer__mark .logo-plate { width: 15rem; } .site-footer__statement { margin-top: var(--space-md); font: 600 var(--text-lg)/1.25 var(--font-display); max-width: 22ch; } .site-footer__license { margin-top: var(--space-sm); font-size: var(--text-sm); color: var(--color-on-night-2); } .site-footer ul, .site-footer address { display: grid; gap: var(--space-2xs); font-size: var(--text-base); } .site-footer a { display: inline-flex; align-items: center; gap: 0.4rem; text-decoration: none; } .site-footer a:hover { text-decoration: underline; text-decoration-color: var(--color-brass); } .site-footer a .icon { color: var(--color-brass); } .site-footer :focus-visible { outline-color: var(--color-focus-on-night); } .site-footer .hours th { color: var(--color-on-night-2); } .site-footer__base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-sm); margin-top: var(--space-2xl); padding-top: var(--space-md); border-top: var(--rule-night); font-size: var(--text-sm); color: var(--color-on-night-2); } .site-footer__base ul { display: flex; flex-wrap: wrap; gap: var(--space-2xs) var(--space-md); font-size: var(--text-sm); } .hours { font-size: var(--text-base); } .hours th { font-weight: 400; text-align: left; padding: 0 var(--space-md) 0.2rem 0; color: var(--color-ink-2); } .hours td { padding: 0 0 0.2rem; font-variant-numeric: tabular-nums; } .hours .is-today th, .hours .is-today td { font-weight: 600; } .action-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; display: none; gap: var(--space-2xs); padding: var(--space-2xs) var(--gutter) calc(var(--space-2xs) + env(safe-area-inset-bottom, 0px)); background: var(--color-white); border-top: var(--rule); box-shadow: 0 -10px 24px -20px var(--color-shadow); transform: translateY(110%); transition: transform var(--dur-base) var(--ease-out); } .action-bar .btn { flex: 1 1 0; min-width: 0; min-height: 3rem; padding: 0 var(--space-2xs); } .action-bar.is-on { transform: none; } .field { display: grid; gap: 0.4rem; min-width: 0; align-content: start; } .field label, .field legend, .field__label { font: 600 var(--text-base)/1.25 var(--font-body); color: var(--color-ink); padding: 0; } fieldset.field { border: 0; margin: 0; padding: 0; } .optional { font: 400 var(--text-sm)/1 var(--font-body); color: var(--color-ink-2); } .input { width: 100%; min-height: 3.1rem; padding: 0.7rem 0.85rem; border: 1px solid var(--color-paper-3); border-radius: var(--radius); background: var(--color-white); color: var(--color-ink); font: 400 var(--text-base)/1.4 var(--font-body); transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); } .input:hover { border-color: var(--color-ink-2); } .input:focus { outline: none; border-color: var(--color-ivy); box-shadow: 0 0 0 3px var(--color-ivy-wash); } .input:disabled { background: var(--color-paper-2); cursor: not-allowed; } .textarea { min-height: 7.5rem; resize: vertical; } .select { appearance: none; padding-right: 2.4rem; cursor: pointer; background-image: linear-gradient(45deg, transparent 50%, var(--color-ink) 50%), linear-gradient(135deg, var(--color-ink) 50%, transparent 50%); background-position: calc(100% - 1.15rem) 55%, calc(100% - 0.8rem) 55%; background-size: 0.36rem 0.36rem; background-repeat: no-repeat; } .field.is-invalid .input { border-color: var(--color-warn); } .field__error { color: var(--color-warn); font-size: var(--text-sm); font-weight: 600; } .hint { font-size: var(--text-sm); color: var(--color-ink-2); } .choice-row { display: flex; flex-wrap: wrap; gap: var(--space-2xs); } .choice { position: relative; display: inline-flex; } .choice input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; } .choice span { display: inline-flex; align-items: center; gap: 0.45rem; min-height: 2.75rem; padding: 0 var(--space-sm); border: 1px solid var(--color-paper-3); border-radius: var(--radius-pill); background: var(--color-white); font: 500 var(--text-base)/1 var(--font-body); color: var(--color-ink); transition: background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out); } .choice:hover span { border-color: var(--color-ink); } .choice input:checked + span { background: var(--color-ink); border-color: var(--color-ink); color: var(--color-white); } .choice input[type="checkbox"]:checked + span::before { content: ""; width: 0.45rem; height: 0.8rem; margin-top: -0.2rem; border: solid var(--color-brass); border-width: 0 3px 3px 0; transform: rotate(45deg); } .choice input:focus-visible + span { outline: 3px solid var(--color-focus); outline-offset: 2px; } .honey { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; } .prose { display: grid; gap: var(--space-sm); max-width: 68ch; } .prose > * { min-width: 0; } .prose h2 { font-size: var(--text-2xl); margin-top: var(--space-lg); } .prose h3 { font-size: var(--text-lg); margin-top: var(--space-sm); } .prose h4 { margin-top: var(--space-2xs); } .prose ul, .prose ol { display: grid; gap: var(--space-2xs); padding-left: 1.3em; } .prose a { color: var(--color-ivy); } .prose a:hover { color: var(--color-ivy-deep); } .prose blockquote { margin: var(--space-xs) 0; padding: var(--space-2xs) 0 var(--space-2xs) var(--space-md); border-left: 3px solid var(--color-ivy); font: 500 var(--text-md)/1.45 var(--font-display); } .prose hr { width: 100%; border: 0; border-top: var(--rule); margin: var(--space-sm) 0; } .prose figure { margin: var(--space-xs) 0; } .prose figure img { border-radius: var(--radius); } .prose figcaption { margin-top: var(--space-2xs); font-size: var(--text-sm); color: var(--color-ink-2); } .prose table { width: 100%; font-size: var(--text-sm); line-height: 1.4; } .prose th, .prose td { padding: 0.6rem 0.75rem; border: var(--rule); text-align: left; vertical-align: top; } .prose th { background: var(--color-paper-2); font-weight: 600; } .prose .table-scroll { overflow-x: auto; } .prose .takeaways, .prose .callout { display: grid; gap: var(--space-xs); padding: var(--space-md); border: var(--rule); border-left: 3px solid var(--color-ivy); border-radius: var(--radius); background: var(--color-white); } .prose .takeaways h2, .prose .callout h2, .prose .callout h3 { margin: 0; font-size: var(--text-md); } .prose .infographic { justify-self: center; max-width: 30rem; } @media (max-width: 81.99rem) { .site-nav { display: none; } .site-header__actions { margin-left: auto; } .menu-btn { display: inline-flex; } } @media (max-width: 87.49rem) { .site-footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-xl) var(--space-lg); } .site-footer__mark { grid-column: 1 / -1; display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: var(--space-xl); align-items: center; } .site-footer__mark .logo-plate { grid-row: 1 / 3; } .site-footer__statement { margin-top: 0; } .site-footer__license { margin-top: var(--space-2xs); } } @media (max-width: 59.99rem) { .site-header__phone span { display: none; } .site-header__phone { width: 2.75rem; height: 2.75rem; justify-content: center; border: 1px solid var(--color-rule); border-radius: var(--radius); } .site-header__logo { width: 12rem; } .site-header__actions { gap: var(--space-xs); } .site-header__actions .btn { display: none; } .action-bar { display: flex; } .site-footer { padding-bottom: calc(var(--space-3xl) + env(safe-area-inset-bottom, 0px)); } .site-footer__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-lg); } .section-head { margin-bottom: var(--space-lg); } .section-head--row { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-sm); } } @media (max-width: 40rem) { :root { --header-h: 4rem; } .site-header__bar { gap: var(--space-sm); } .site-header__logo { width: 10.5rem; } .site-footer__mark { grid-template-columns: minmax(0, 1fr); } .site-footer__mark .logo-plate { grid-row: auto; } .site-footer__statement { margin-top: var(--space-md); } .lbl-wide { display: none; } .lbl-narrow { display: inline; } .frame__panel { padding: var(--space-sm); } } @media (max-width: 30rem) { .site-footer__grid { grid-template-columns: minmax(0, 1fr); } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 120ms !important; scroll-behavior: auto !important; } } .hero { position: relative; isolation: isolate; overflow: hidden; } .hero__media { position: absolute; inset: 0; z-index: -2; background: var(--color-night-deep); } .hero__media picture, .hero__poster, .hero__media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; } .hero__media video { opacity: 0; transition: opacity 900ms var(--ease-out); } .hero__media.is-playing video { opacity: 1; } .hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, var(--color-veil) 0%, var(--color-veil) 42%, var(--color-veil-soft) 100%); } .hero__inner { display: grid; gap: var(--space-md); max-width: var(--wrap); padding-block: clamp(3.5rem, 2rem + 8vw, 7rem) var(--space-xl); } .hero__inner > * { max-width: 40rem; } .hero__where { display: inline-flex; align-items: center; gap: 0.45rem; font-size: var(--text-sm); color: var(--color-on-night-2); } .hero__where .icon { color: var(--color-brass); } .hero__lead { font-size: var(--text-md); line-height: 1.55; color: var(--color-on-night); } .hero__ctas { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-2xs); } .rating { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; font-size: var(--text-sm); text-decoration: none; color: var(--color-on-night-2); } .rating strong { color: var(--color-on-night); font-size: var(--text-base); } .rating:hover span:last-child { text-decoration: underline; } .stars { display: inline-flex; gap: 0.1rem; color: var(--color-brass); } .stars .icon { width: 1rem; height: 1rem; } .hero__facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-md); margin: 0; padding-block: var(--space-md) var(--space-lg); border-top: var(--rule-night); } .hero__facts div { display: grid; gap: 0.2rem; } .hero__facts dt { font-size: var(--text-sm); color: var(--color-on-night-2); } .hero__facts dd { margin: 0; font: 600 var(--text-md)/1.2 var(--font-display); color: var(--color-on-night); } .hero__toggle { position: absolute; right: var(--gutter); top: var(--space-md); display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border: 1px solid var(--color-on-night-2); border-radius: 50%; background: var(--color-veil-soft); color: var(--color-on-night); cursor: pointer; } .hero__toggle:hover { background: var(--color-night); } .page-head { padding-block: clamp(2rem, 1.2rem + 3.5vw, 3.75rem) clamp(1.5rem, 1rem + 2.5vw, 2.75rem); background: var(--color-white); border-bottom: var(--rule); } .page-head .wrap { display: grid; gap: var(--space-sm); } .page-head h1 { max-width: 24ch; } .page-head .lead { color: var(--color-ink-2); } .page-head__ctas { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-xs) var(--space-sm); margin-top: var(--space-2xs); } .page-head--post h1 { max-width: 28ch; font-size: var(--text-3xl); } .doorwall { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: var(--space-xl); align-items: start; } .doorwall__stage { display: grid; gap: var(--space-sm); } .doorwall__cab { position: relative; aspect-ratio: 720 / 370; padding: var(--stile); border: var(--rule); border-radius: var(--radius-card); background: var(--color-white); perspective: 90rem; box-shadow: 0 18px 30px -24px var(--color-shadow); } .doorwall__inside { position: absolute; inset: var(--stile); display: block; overflow: hidden; border-radius: var(--radius); background: var(--color-night); box-shadow: inset 0 0 0 1px var(--color-rule); } .doorwall__inside img { width: 100%; height: 100%; object-fit: cover; } .doorwall__inside::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 14px 18px -12px var(--color-shadow-deep), inset 0 -10px 14px -12px var(--color-shadow-deep); } .doorwall__empty { position: absolute; inset: 0; display: grid; place-items: center; padding: var(--space-lg); text-align: center; color: var(--color-on-night); font-size: var(--text-base); } .doorwall__leaves { position: absolute; inset: var(--stile); display: flex; pointer-events: none; } .leaf { flex: 1 1 0; background: var(--door, var(--color-paper-3)) var(--leaf) center bottom / 100% auto no-repeat; box-shadow: inset 0 0 0 1px var(--color-shadow); backface-visibility: hidden; transition: transform var(--dur-door) var(--ease-in-out), filter var(--dur-door) var(--ease-in-out); } .leaf--l { transform-origin: left center; } .leaf--r { transform-origin: right center; transition-delay: 60ms; } .leaf--end { transition-delay: 120ms; } .doorwall.is-open .leaf--l { transform: rotateY(-84deg); filter: brightness(0.82); } .doorwall.is-open .leaf--r { transform: rotateY(84deg); filter: brightness(0.82); } .doorwall.is-still .leaf { transition: none; } .doorwall:not(.is-open) .doorwall__leaves { pointer-events: auto; } .doorwall__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-sm); } .doorwall__caption { font-size: var(--text-sm); color: var(--color-ink-2); } .doorwall__side { display: grid; gap: var(--space-md); } .doorwall__picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(4.25rem, 1fr)); gap: var(--space-xs) var(--space-2xs); } .swatch { display: grid; gap: 0.3rem; justify-items: center; text-decoration: none; font-size: var(--text-xs); line-height: 1.2; text-align: center; color: var(--color-ink-2); } .swatch img { width: 100%; border-radius: var(--radius); box-shadow: 0 0 0 1px var(--color-rule); transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); } .swatch:hover img { transform: translateY(-2px); } .swatch.is-on { color: var(--color-ink); font-weight: 600; } .swatch.is-on img { box-shadow: 0 0 0 2px var(--color-white), 0 0 0 4px var(--color-ivy); } .doorwall__info .frame__panel { display: grid; gap: var(--space-xs); } .doorwall__info h3 { font-size: var(--text-xl); } .doorwall__built { font-size: var(--text-sm); font-weight: 600; margin-top: var(--space-2xs); } .doorwall__built-list { display: grid; gap: 0.25rem; list-style: none; font-size: var(--text-base); } .doorwall__built-list a { color: var(--color-ivy); } .doorwall__info .btn { justify-self: start; margin-top: var(--space-2xs); } .ledger-wrap .section-head { margin-bottom: var(--space-lg); } .ledger .frame__panel { padding: 0; } .ledger__table { width: 100%; font-size: var(--text-base); line-height: 1.45; } .ledger__table th, .ledger__table td { padding: var(--space-sm) var(--space-md); text-align: left; vertical-align: top; border-bottom: var(--rule); } .ledger__table thead th { font: 600 var(--text-sm)/1.2 var(--font-body); color: var(--color-ink-2); background: var(--color-paper); } .ledger__table tbody th { font: 600 var(--text-md)/1.25 var(--font-display); width: 22%; } .ledger__table td:nth-child(3) { font-weight: 600; white-space: nowrap; } .ledger__table td:nth-child(4) { color: var(--color-ink-2); } .ledger__note { padding: var(--space-md); font-size: var(--text-base); color: var(--color-ink-2); max-width: 72ch; } .steps-wrap { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: var(--space-xl); align-items: start; } .steps-wrap .section-head { margin-bottom: 0; position: sticky; top: calc(var(--header-h) + var(--space-md)); } .steps { display: grid; gap: 0; list-style: none; counter-reset: none; } .step { display: grid; grid-template-columns: 2.75rem minmax(0, 1fr); gap: var(--space-md); padding-bottom: var(--space-lg); position: relative; } .step:not(:last-child)::before { content: ""; position: absolute; left: 1.35rem; top: 2.9rem; bottom: 0.15rem; width: 1px; background: var(--color-paper-3); } .step__n { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border: 1px solid var(--color-ink); border-radius: 50%; font: 600 var(--text-md)/1 var(--font-display); background: var(--color-white); } .step h3 { margin-bottom: var(--space-2xs); padding-top: 0.5rem; } .step p { color: var(--color-ink-2); } .step p + p { margin-top: var(--space-xs); } .steps--long .step p { color: var(--color-ink); } .cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg) var(--space-md); list-style: none; } .card__link { display: grid; gap: var(--space-xs); text-decoration: none; height: 100%; align-content: start; } .card__media { overflow: hidden; border-radius: var(--radius); background: var(--color-paper-3); aspect-ratio: 4 / 3; } .card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease-out); } .card__link:hover .card__media img { transform: scale(1.03); } .card__body { display: grid; gap: 0.3rem; } .card__meta { font-size: var(--text-sm); color: var(--color-ink-2); } .card__body h3 { font-size: var(--text-md); } .card__body p { font-size: var(--text-sm); color: var(--color-ink-2); line-height: 1.45; } .card__more { display: inline-flex; align-items: center; gap: 0.35rem; margin-top: 0.15rem; font-size: var(--text-sm); font-weight: 600; color: var(--color-ivy); } .card__link:hover h3 { text-decoration: underline; text-decoration-thickness: 2px; text-decoration-color: var(--color-ivy); text-underline-offset: 0.2em; } .card__more .icon { transition: transform var(--dur-fast) var(--ease-out); } .card__link:hover .card__more .icon { transform: translateX(3px); } .filters { display: grid; gap: var(--space-2xs); margin-bottom: var(--space-lg); } .filters .chips { margin-bottom: var(--space-xs); } .filters__label { font: 600 var(--text-md)/1.2 var(--font-display); } .towns { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-lg) var(--space-md); list-style: none; } .quotes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-md); list-style: none; } .quote { display: grid; gap: var(--space-sm); align-content: space-between; } .quote blockquote { margin: 0; } .quote blockquote p { font-size: var(--text-base); line-height: 1.55; } .quote figcaption { font-weight: 600; font-size: var(--text-sm); } .quote figcaption span { font-weight: 400; color: var(--color-on-night-2); } .pull { display: grid; gap: var(--space-sm); padding-left: var(--space-md); border-left: 3px solid var(--color-ivy); } .pull blockquote { margin: 0; } .pull blockquote p { font: 500 var(--text-lg)/1.45 var(--font-display); } .pull figcaption { font-size: var(--text-sm); color: var(--color-ink-2); } .pull__after { margin-top: var(--space-md); font-size: var(--text-md); } .trio { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-md); list-style: none; } .trio__item { display: grid; gap: var(--space-xs); align-content: start; } .trio__item img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius); background: var(--color-paper-3); } .trio__item h3 { margin-top: var(--space-2xs); } .trio__item p { font-size: var(--text-base); color: var(--color-ink-2); line-height: 1.5; } .section-foot { margin-top: var(--space-lg); } .anatomy-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-xl); align-items: center; } .anatomy-copy { display: grid; gap: var(--space-md); } .anatomy { display: grid; gap: var(--space-2xs); } .anatomy figcaption { font-size: var(--text-sm); color: var(--color-ink-2); } .anatomy__svg { width: 100%; height: auto; max-height: 34rem; } .anatomy__svg .skin { fill: var(--color-white); stroke: var(--color-ink); stroke-width: 1.5; stroke-linejoin: round; } .anatomy__svg .panel { fill: var(--color-paper-2); stroke: var(--color-ink); stroke-width: 1.1; stroke-linejoin: round; } .anatomy__svg .shade { fill: var(--color-paper-3); stroke: var(--color-ink); stroke-width: 1.3; stroke-linejoin: round; } .anatomy__svg .inside { fill: var(--color-ply); stroke: var(--color-ink); stroke-width: 1; stroke-linejoin: round; } .anatomy__svg .inside--wall { fill: var(--color-ply-2); } .anatomy__svg .inside--back { fill: var(--color-ply-3); } .anatomy__svg .shelf { fill: var(--color-ply); stroke: var(--color-ink); stroke-width: 1.1; } .anatomy__svg .shelf--edge, .anatomy__svg .tail { fill: var(--color-ply-3); stroke: var(--color-ink); stroke-width: 0.8; } .anatomy__svg .open { fill: none; stroke: var(--color-ink); stroke-width: 1.5; } .anatomy__svg .hinge { fill: var(--color-brass); stroke: var(--color-ink); stroke-width: 1; } .anatomy__svg .glide { fill: var(--color-rule); stroke: var(--color-ink); stroke-width: 1; } .anatomy__svg .ln { stroke: var(--color-ink); stroke-width: 1.2; } .anatomy__svg .lead { stroke: var(--color-ivy); stroke-width: 1.2; } .anatomy__svg .dot, .anatomy__svg .disc { fill: var(--color-ivy); } .anatomy__svg text { font: 600 14px var(--font-body); fill: var(--color-white); } .anatomy-list { display: grid; gap: var(--space-2xs); padding: 0; list-style: none; counter-reset: part; } .anatomy-list li { counter-increment: part; display: grid; grid-template-columns: 1.75rem minmax(0, 1fr); gap: var(--space-xs); align-items: baseline; } .anatomy-list li::before { content: counter(part); display: grid; place-items: center; width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--color-ivy); color: var(--color-white); font: 600 var(--text-sm)/1 var(--font-body); } .ticks { display: grid; gap: var(--space-xs); list-style: none; } .ticks li { display: grid; grid-template-columns: 1.4rem minmax(0, 1fr); gap: var(--space-xs); align-items: start; } .ticks .icon { width: 1.3rem; height: 1.3rem; margin-top: 0.2rem; color: var(--color-ivy); } .night .ticks .icon { color: var(--color-brass); } .more-wrap { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: var(--space-xl); align-items: start; } .more-wrap .section-head { margin-bottom: 0; } .services { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg) var(--space-xl); list-style: none; } .services--full { grid-template-columns: repeat(3, minmax(0, 1fr)); } .service { display: grid; gap: 0.3rem; align-content: start; } .service .icon { width: 1.75rem; height: 1.75rem; color: var(--color-ivy); margin-bottom: 0.2rem; } .service p { color: var(--color-ink-2); font-size: var(--text-base); line-height: 1.5; } .videos { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-md); list-style: none; } .videos--grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg) var(--space-md); } .videos--inline { grid-template-columns: minmax(0, 1fr); margin-bottom: var(--space-lg); } .video { display: grid; gap: var(--space-xs); align-content: start; } .video h3 { font-size: var(--text-base); line-height: 1.3; } .videos--grid .video h3 { font-size: var(--text-md); } .videos--inline .video h3 { display: none; } .video__play { position: relative; display: block; width: 100%; padding: 0; border: 0; border-radius: var(--radius); overflow: hidden; background: var(--color-night); cursor: pointer; aspect-ratio: 16 / 9; } .video__play img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease-out), opacity var(--dur-base) var(--ease-out); } .video__play:hover img { transform: scale(1.03); opacity: 0.9; } .video__icon { position: absolute; left: 50%; top: 50%; display: grid; place-items: center; width: 3.25rem; height: 3.25rem; margin: -1.625rem 0 0 -1.625rem; border-radius: 50%; background: var(--color-white); color: var(--color-ink); } .video__time { position: absolute; right: 0.4rem; bottom: 0.4rem; padding: 0.15rem 0.4rem; border-radius: var(--radius); background: var(--color-scrim); color: var(--color-on-night); font-size: var(--text-xs); font-variant-numeric: tabular-nums; } .video__frame { width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: var(--radius); background: var(--color-night); } .posts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg) var(--space-md); list-style: none; } .post-card__link { display: grid; gap: var(--space-xs); text-decoration: none; align-content: start; height: 100%; } .post-card__media { overflow: hidden; border-radius: var(--radius); aspect-ratio: 16 / 9; background: var(--color-paper-3); } .post-card__media img { width: 100%; height: 100%; object-fit: cover; } .post-card__body { display: grid; gap: 0.3rem; } .post-card__meta { font-size: var(--text-sm); color: var(--color-ink-2); } .post-card__body h3 { font-size: var(--text-md); } .post-card__link:hover h3 { text-decoration: underline; text-decoration-thickness: 2px; text-decoration-color: var(--color-ivy); text-underline-offset: 0.2em; } .post-card__body p:last-child { font-size: var(--text-sm); color: var(--color-ink-2); line-height: 1.45; } .post__meta { font-size: var(--text-sm); color: var(--color-ink-2); } .post__layout { display: grid; grid-template-columns: minmax(0, 46rem) minmax(0, 18rem); gap: var(--space-xl); justify-content: space-between; padding-block: var(--space-xl) var(--space-2xl); align-items: start; } .post__body { display: grid; gap: var(--space-lg); min-width: 0; } .post__cover img { width: 100%; border-radius: var(--radius); } .post__side { position: sticky; top: calc(var(--header-h) + var(--space-md)); } .post__side .frame__panel, .author .frame__panel, .toc .frame__panel { display: grid; gap: var(--space-xs); } .post__side h2, .author h2, .toc h2 { font-size: var(--text-md); } .post__side .btn { justify-self: start; } .toc ol { display: grid; gap: 0.3rem; padding-left: 1.3em; font-size: var(--text-base); } .toc a { color: var(--color-ivy); } .author a { color: var(--color-ivy); } .faq-wrap { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: var(--space-xl); align-items: start; } .faq-wrap .section-head { margin-bottom: 0; } .faq { border-top: 1px solid var(--color-paper-3); } .faq__item { border-bottom: 1px solid var(--color-paper-3); } .faq__item summary { display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); padding: var(--space-sm) 0; cursor: pointer; font: 600 var(--text-md)/1.3 var(--font-display); list-style: none; } .faq__item summary::-webkit-details-marker { display: none; } .faq__item summary .icon { color: var(--color-ivy); transition: transform var(--dur-base) var(--ease-out); } .faq__item[open] summary .icon { transform: rotate(45deg); } .faq__item p { padding: 0 var(--space-xl) var(--space-md) 0; color: var(--color-ink-2); max-width: 68ch; } .request-wrap { display: grid; grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr); gap: var(--space-xl); align-items: start; } .request-wrap .section-head { margin-bottom: 0; } .request { display: grid; gap: var(--space-md); } .request__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-md); } .field--wide { grid-column: 1 / -1; } .photos-input { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-xs); } .photos-input__list { display: flex; gap: var(--space-2xs); } .photos-input__thumb { width: 3.25rem; height: 3.25rem; padding: 0; border: 1px solid var(--color-paper-3); border-radius: var(--radius); overflow: hidden; cursor: pointer; background: var(--color-white); } .photos-input__thumb img { width: 100%; height: 100%; object-fit: cover; } .request__send { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-sm) var(--space-md); } .request__send .hint { max-width: 34ch; } .request__status { min-height: 1.5em; font-weight: 600; } .request__status.is-ok { color: var(--color-ivy); } .request__status.is-error { color: var(--color-warn); } .split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-xl); align-items: start; } .split__copy { display: grid; gap: var(--space-sm); align-content: start; } .split__copy h2 { margin-bottom: var(--space-2xs); } .split__copy p a, .lead a, .hint a, .ledger__note a { color: var(--color-ivy); } .split--flip .split__copy { order: 2; } .facts { margin: 0; } .facts .frame__panel { display: grid; gap: 0; padding: 0 var(--space-md); } .facts .frame__panel > div, .facts--plain > div { display: grid; gap: 0.2rem; padding: var(--space-sm) 0; border-bottom: var(--rule); } .facts .frame__panel > div:last-child, .facts--plain > div:last-of-type { border-bottom: 0; } .facts dt { font-size: var(--text-sm); color: var(--color-ink-2); } .facts dd { margin: 0; font: 600 var(--text-md)/1.3 var(--font-display); } .facts dd a { color: var(--color-ivy); } .facts--plain { margin: 0; } .facts--plain dd { font: 400 var(--text-base)/1.5 var(--font-body); } .guide-links { display: grid; gap: var(--space-sm); padding: var(--space-md); border: var(--rule); border-radius: var(--radius-card); background: var(--color-white); } .guide-links ul { display: grid; gap: var(--space-sm); } .guide-links .link { white-space: normal; } .figure-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-md); list-style: none; } .figure-row--two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .figure-row figure, .render-grid figure, .gallery figure { display: grid; gap: var(--space-2xs); } .figure-row img, .render-grid img { width: 100%; border-radius: var(--radius); } .figure-row figcaption, .render-grid figcaption, .gallery figcaption { font-size: var(--text-sm); line-height: 1.4; color: var(--color-ink-2); } .render-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-md); list-style: none; } .points { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-md); list-style: none; } .points--three { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: var(--space-lg); } .points .frame__panel, .tiers .frame__panel { display: grid; gap: var(--space-2xs); align-content: start; } .points p, .tiers p { color: var(--color-ink-2); font-size: var(--text-base); line-height: 1.5; } .tiers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-md); list-style: none; align-items: stretch; } .tiers__ours { border-color: var(--color-ivy); background: var(--color-ivy); } .tiers__ours .frame__panel { border-color: var(--color-ivy); } .tiers__ours h3 { color: var(--color-ivy); } .cta-band { padding-block: clamp(2.5rem, 1.5rem + 4vw, 4.5rem); } .cta-band__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-lg); align-items: center; } .cta-band__row > div:first-child { display: grid; gap: var(--space-xs); max-width: 44rem; } .cta-band p { color: var(--color-on-night-2); font-size: var(--text-md); } .cta-band__ctas { display: flex; flex-wrap: wrap; gap: var(--space-xs); } .project { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: var(--space-xl); align-items: start; } .project__cover img { width: 100%; max-height: 38rem; object-fit: contain; object-position: left top; border-radius: var(--radius); } .project__cover figure.is-small img, .gallery figure.is-small img { width: auto; max-width: 100%; } .project__facts .frame__panel { display: grid; gap: var(--space-md); } .project__facts dl { margin: 0; display: grid; } .project__facts dl > div { display: grid; gap: 0.15rem; padding: var(--space-xs) 0; border-bottom: var(--rule); } .project__facts dl > div:first-child { padding-top: 0; } .project__facts dt { font-size: var(--text-sm); color: var(--color-ink-2); } .project__facts dd { margin: 0; font-size: var(--text-base); line-height: 1.45; } .project__facts dd a { display: block; font-size: var(--text-sm); color: var(--color-ivy); } .project__doors { display: flex; flex-wrap: wrap; gap: var(--space-sm); list-style: none; } .project__doors a { display: flex; align-items: center; gap: var(--space-xs); text-decoration: none; font-weight: 600; font-size: var(--text-sm); } .project__doors img { width: 2.25rem; border-radius: var(--radius); box-shadow: 0 0 0 1px var(--color-rule); } .project__doors a:hover span { text-decoration: underline; } .gallery { columns: 4; column-gap: var(--space-sm); list-style: none; margin-top: var(--space-md); } .gallery li { break-inside: avoid; margin-bottom: var(--space-sm); } .gallery a { display: block; } .gallery img { width: 100%; border-radius: var(--radius); background: var(--color-paper-3); } .gallery__title { margin-top: var(--space-xl); } .gallery figure.is-small { justify-items: start; } .lightbox { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0; padding: var(--space-md); border: 0; background: var(--color-scrim); color: var(--color-on-night); } .lightbox[open] { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-xs); } .lightbox::backdrop { background: var(--color-scrim); } .lightbox figure { display: grid; gap: var(--space-xs); justify-items: center; min-width: 0; max-height: 100%; } .lightbox img { max-width: 100%; max-height: calc(100dvh - 7rem); width: auto; height: auto; object-fit: contain; border-radius: var(--radius); } .lightbox figcaption { font-size: var(--text-sm); text-align: center; max-width: 60ch; color: var(--color-on-night-2); } .lightbox__btn { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border: 1px solid var(--color-on-night-2); border-radius: 50%; background: transparent; color: var(--color-on-night); cursor: pointer; } .lightbox__btn:hover { background: var(--color-night-2); } .lightbox__close { position: absolute; right: var(--space-md); top: var(--space-md); z-index: 1; } .lightbox :focus-visible { outline-color: var(--color-focus-on-night); } .colors { display: grid; grid-template-columns: repeat(auto-fill, minmax(13.5rem, 1fr)); gap: var(--space-lg) var(--space-md); list-style: none; } .color { display: grid; gap: var(--space-sm); align-content: start; scroll-margin-top: calc(var(--header-h) + var(--space-md)); } .color__door { display: grid; place-items: center; padding: var(--space-md); border-radius: var(--radius-card); background: var(--color-white); border: var(--rule); } .color__door img { width: min(100%, 9rem); border-radius: 1px; box-shadow: 0 14px 22px -16px var(--color-shadow-deep); } .color:target .color__door { border-color: var(--color-ivy); box-shadow: 0 0 0 2px var(--color-ivy-wash); } .color__body { display: grid; gap: var(--space-2xs); } .color__body h3 { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2xs); } .color__body p { font-size: var(--text-sm); color: var(--color-ink-2); line-height: 1.45; } .color__built { font-weight: 600; color: var(--color-ink); margin-top: 0.2rem; } .color__kitchens { display: grid; gap: 0.2rem; font-size: var(--text-sm); } .color__kitchens a { color: var(--color-ivy); } .color .link { font-size: var(--text-sm); margin-top: 0.2rem; } .badge { padding: 0.15rem 0.5rem; border-radius: var(--radius-pill); background: var(--color-ivy); color: var(--color-white); font: 600 var(--text-xs)/1.3 var(--font-body); } .badge--soon { background: var(--color-paper-3); color: var(--color-ink); } .vanity { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); gap: var(--space-xl); align-items: start; } .vanity__stage { display: grid; gap: var(--space-sm); position: sticky; top: calc(var(--header-h) + var(--space-md)); } .vanity__photo { position: relative; aspect-ratio: 1; border: var(--rule); border-radius: var(--radius-card); background: var(--color-white); overflow: hidden; } .vanity__layer { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transition: opacity var(--dur-fast) var(--ease-out); } .vanity__photo[aria-busy="true"] .vanity__layer { opacity: 0.85; } .vanity__drawing { padding: var(--space-md); object-fit: contain; background: var(--color-white); } .vanity__views { display: flex; flex-wrap: wrap; gap: var(--space-2xs); } .vanity__view { font: 500 var(--text-sm)/1 var(--font-body); padding: 0.6rem 0.9rem; border: var(--rule); border-radius: var(--radius); background: var(--color-white); color: var(--color-ink-2); cursor: pointer; } .vanity__view[aria-pressed="true"] { border-color: var(--color-ivy); color: var(--color-ink); box-shadow: inset 0 0 0 1px var(--color-ivy); } .vanity__title { display: grid; gap: var(--space-2xs); } .vanity__kicker { font-size: var(--text-sm); color: var(--color-ink-2); letter-spacing: 0.02em; } .vanity__name { font: 650 var(--text-lg)/1.2 var(--font-display); } .vanity__dims, .vanity__sizes { font-size: var(--text-sm); color: var(--color-ink-2); } .vanity__set legend strong { font-weight: 650; } .vanity__controls { display: grid; gap: var(--space-md); } .vanity__set { display: grid; gap: var(--space-xs); border: 0; margin: 0; padding: 0; min-width: 0; } .vanity__set legend { font: 600 var(--text-md)/1.2 var(--font-display); padding: 0; margin-bottom: var(--space-xs); } .vanity__group { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); gap: var(--space-xs); align-items: center; } .vanity__group-name { font-size: var(--text-sm); color: var(--color-ink-2); } .vanity__swatches { display: flex; flex-wrap: wrap; gap: var(--space-2xs); } .vswatch { width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: var(--radius); background: var(--door, var(--color-paper-3)) center / cover; cursor: pointer; box-shadow: 0 0 0 1px var(--color-shadow); transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); } .vswatch:hover { transform: translateY(-2px); } .vswatch[aria-pressed="true"] { box-shadow: 0 0 0 2px var(--color-white), 0 0 0 4px var(--color-ivy); } .vanity__actions, .doorwall__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-sm) var(--space-md); } .vanity__actions .link { white-space: normal; } .warranty { display: grid; grid-template-columns: minmax(0, 20rem) minmax(0, 1fr); gap: var(--space-xl); align-items: start; } .warranty__short { position: sticky; top: calc(var(--header-h) + var(--space-md)); } .warranty__short .frame__panel { display: grid; gap: var(--space-xs); } .warranty__short h2 { font-size: var(--text-lg); } .warranty .prose h2 { margin-top: 0; } .contact { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-xl); } .contact__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-md); } .contact-card .frame__panel { display: grid; gap: var(--space-xs); align-content: start; } .contact-card h2 { font-size: var(--text-md); } .contact-card h2 + address, .contact-card h2:not(:first-child) { margin-top: var(--space-2xs); } .contact-card__big { font: 600 var(--text-xl)/1.1 var(--font-display); text-decoration: none; font-variant-numeric: tabular-nums; } .contact-card__big:hover, .contact-card__mid:hover { color: var(--color-ivy); } .contact-card__mid { font-weight: 600; overflow-wrap: anywhere; } .contact__form { display: grid; gap: var(--space-md); max-width: 52rem; scroll-margin-top: calc(var(--header-h) + var(--space-md)); } @media (max-width: 69.99rem) { .videos { grid-template-columns: repeat(3, minmax(0, 1fr)); } .trio { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg) var(--space-md); } .gallery { columns: 3; } .towns { grid-template-columns: repeat(3, minmax(0, 1fr)); } .render-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .post__layout { grid-template-columns: minmax(0, 1fr); } .post__side { position: static; max-width: 30rem; } } @media (max-width: 59.99rem) { .hero::before { background: linear-gradient(180deg, var(--color-veil-soft) 0%, var(--color-veil) 55%); } .hero__inner { padding-block: var(--space-2xl) var(--space-lg); } .hero__ctas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .hero__ctas .btn { padding-inline: var(--space-xs); min-width: 0; } .hero__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-sm) var(--space-md); } .hero__toggle { top: auto; bottom: var(--space-md); } .doorwall, .steps-wrap, .anatomy-wrap, .more-wrap, .faq-wrap, .request-wrap, .split, .project, .vanity, .warranty { grid-template-columns: minmax(0, 1fr); gap: var(--space-lg); } .steps-wrap .section-head, .warranty__short { position: static; } .split--flip .split__copy { order: 0; } .doorwall__picker { display: flex; overflow-x: auto; gap: var(--space-xs); margin-inline: calc(var(--gutter) * -1); padding: 0.4rem var(--gutter) var(--space-2xs); scrollbar-width: none; } .doorwall__picker::-webkit-scrollbar { display: none; } .doorwall__picker li { flex: 0 0 4.4rem; } .ledger__table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } .ledger__table, .ledger__table tbody, .ledger__table tr, .ledger__table th, .ledger__table td { display: block; width: auto; } .ledger__table tr { padding: var(--space-sm) var(--space-sm); border-bottom: var(--rule); } .ledger__table th, .ledger__table td { padding: 0.15rem 0; border: 0; } .ledger__table td::before { content: attr(data-label) ": "; font-weight: 600; color: var(--color-ink); } .ledger__table td:nth-child(3) { white-space: normal; } .ledger__note { padding: var(--space-sm); } .cards--grid, .posts--grid, .towns { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-md) var(--space-sm); } .cards--grid .card__body p, .posts--grid .post-card__body p:last-child { display: none; } .cards--grid .card__body h3, .posts--grid .post-card__body h3, .towns .card__body h3 { font-size: var(--text-base); } .videos--grid { grid-template-columns: minmax(0, 1fr); } .gallery { columns: 2; } .render-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-sm); } .colors.rail > * { flex-basis: min(64%, 15rem); } .cta-band__row { grid-template-columns: minmax(0, 1fr); } .cta-band__ctas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .cta-band__ctas .btn { padding-inline: var(--space-xs); min-width: 0; font-size: var(--text-sm); } .page-head__ctas .btn { min-height: 2.9rem; padding-inline: var(--space-sm); } .request__grid { grid-template-columns: minmax(0, 1fr); } .faq__item p { padding-right: 0; } .contact__cards.rail { align-items: stretch; } .lightbox[open] { grid-template-columns: minmax(0, 1fr); padding: var(--space-xs); } .lightbox__prev, .lightbox__next { position: absolute; bottom: var(--space-md); } .lightbox__prev { left: var(--space-md); } .lightbox__next { right: var(--space-md); } .lightbox img { max-height: calc(100dvh - 9rem); } .vanity__group { grid-template-columns: minmax(0, 1fr); gap: 0.3rem; } .vanity__stage { position: static; } } @media (max-width: 24rem) { .hero__ctas .btn .icon { display: none; } } .anatomy-wrap--full { align-items: start; } .card, .post-card, .split__media { min-width: 0; } .anatomy__svg .inside--floor { fill: var(--color-ply); } .anatomy__svg .ln--thin { stroke-width: 0.9; } .anatomy__svg .tag { pointer-events: none; } .request__turnstile:empty { display: none; } .vswatch--stone { background-size: cover; } .vswatch--door { background-size: cover; background-position: center 72%; } .near { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: var(--space-xl); align-items: center; margin-bottom: var(--space-xl); } .near .section-head { margin-bottom: 0; } .near__map { display: grid; gap: var(--space-2xs); } .near__map figcaption { font-size: var(--text-sm); color: var(--color-ink-2); } .near__map--wide { max-width: 56rem; margin: 0 auto var(--space-xl); } .map { width: 100%; height: auto; overflow: visible; } .map__fill path { fill: var(--color-white); } .band .map__fill path { fill: var(--color-paper); } .map__coast path { fill: none; stroke: var(--color-ink); stroke-width: 1.6; stroke-linejoin: round; stroke-linecap: round; } .map__water text { font: italic 400 18px var(--font-display); fill: var(--color-ink-2); text-anchor: middle; opacity: 0.7; } .map__town { text-decoration: none; cursor: pointer; } .map__dot { fill: var(--color-ivy); transition: fill var(--dur-fast) var(--ease-out); } .map__ring { fill: none; stroke: var(--color-ivy); stroke-width: 1.5; transform-box: fill-box; transform-origin: center; transition: transform var(--dur-base) var(--ease-out); } .map__town--base .map__dot { fill: var(--color-brass-deep); } .map__town--base .map__ring { stroke: var(--color-brass-deep); } .map__n { font: 700 15px var(--font-body); fill: var(--color-white); pointer-events: none; } .map__name { font: 600 19px var(--font-body); fill: var(--color-ink); paint-order: stroke; stroke: var(--color-paper); stroke-width: 4px; stroke-linejoin: round; } .map__town:hover .map__ring, .map__town:focus-visible .map__ring { transform: scale(1.25); } .map__town:hover .map__name { text-decoration: underline; } @media (max-width: 59.99rem) { .near { grid-template-columns: minmax(0, 1fr); gap: var(--space-lg); margin-bottom: var(--space-lg); } .map__name { font-size: 26px; } .map__n { font-size: 17px; } } .assemble { padding-block: clamp(2.5rem, 2rem + 3vw, 4rem); min-height: calc(100svh - var(--header-h)); display: grid; align-items: center; } .assemble__grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: var(--space-xl); align-items: center; } .assemble__copy { display: grid; gap: var(--space-md); } .assemble__copy .lead { color: var(--color-on-night-2); } .assemble__steps { display: grid; gap: var(--space-sm); list-style: none; } .assemble__steps li { display: grid; gap: 0.2rem; padding-left: var(--space-md); border-left: 2px solid var(--color-night-line); transition: opacity var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); } .assemble__steps h3 { font-size: var(--text-md); } .assemble__steps p { color: var(--color-on-night-2); font-size: var(--text-base); line-height: 1.45; } .assemble.is-live .assemble__steps li { opacity: 0.32; } .assemble.is-live .assemble__steps li.is-on { opacity: 1; border-left-color: var(--color-brass); } .assemble__stage { display: grid; gap: var(--space-2xs); justify-items: center; } .assemble__stage figcaption { min-height: 1.5em; font: 600 var(--text-md)/1.3 var(--font-display); color: var(--color-on-night); text-align: center; } .assemble__svg { width: 100%; max-width: 34rem; height: auto; max-height: calc(100svh - var(--header-h) - 7rem); overflow: visible; } .assemble__svg .paint { fill: var(--color-white); stroke: var(--color-night-deep); stroke-width: 1.4; stroke-linejoin: round; } .assemble__svg .front { fill: var(--asm-navy); stroke: var(--color-night-deep); stroke-width: 1.4; stroke-linejoin: round; } .assemble__svg .ext { fill: var(--asm-navy); } .assemble__svg .front--edge { fill: var(--asm-navy-deep); } .assemble__svg .recess { fill: var(--color-shadow); stroke: var(--color-night-deep); stroke-width: 1; } .assemble__svg .ply { fill: var(--color-ply); stroke: var(--color-night-deep); stroke-width: 1; stroke-linejoin: round; } .assemble__svg .ply--2 { fill: var(--color-ply-2); } .assemble__svg .ply--3 { fill: var(--color-ply-3); } .assemble__svg .shade { fill: var(--color-paper-3); stroke: var(--color-night-deep); stroke-width: 1.2; } .assemble__svg .stone { fill: url(#asm-stone); stroke: var(--color-night-deep); stroke-width: 1.4; stroke-linejoin: round; } .assemble__svg .stone--edge { fill: var(--color-rule); } .assemble__svg .asm { will-change: transform, opacity; } .steps-wrap__side { position: sticky; top: calc(var(--header-h) + var(--space-md)); display: grid; gap: var(--space-lg); } .steps-wrap .steps-wrap__side .section-head { position: static; } .plan-fig { padding: var(--space-sm); border: var(--rule); border-radius: var(--radius-card); background: var(--color-white); } .plan { --plan-ink: var(--color-ink); --plan-light: var(--color-on-night-2); width: 100%; height: auto; } .plan .pl-wall { stroke: var(--color-paper-3); stroke-width: 1.2; } .plan .pl-dim { stroke: var(--color-ivy); stroke-width: 1.3; } .plan .pl-dimtext { font: 600 13px var(--font-body); fill: var(--color-ivy); } .plan .pl-box { fill: none; stroke: var(--color-ink); stroke-width: 1.6; } .plan .pl-window { fill: none; stroke: var(--color-ink); stroke-width: 1.2; } .plan .pl-inset { fill: none; stroke: var(--color-ink); stroke-width: 1; } .plan .pl-inset--base { stroke: var(--color-on-night-2); } .plan .pl-appliance { fill: none; stroke: var(--color-ink-2); stroke-width: 1.2; } .plan .pl-code { font: 600 11px var(--font-body); fill: var(--color-ink-2); } .plan .pl-fill--base { fill: var(--asm-navy); } .plan .pl-fill--wall { fill: var(--color-paper-2); } .plan .pl-top { fill: var(--color-rule); stroke: var(--color-ink); stroke-width: 1; } .plan .pl-fixture { fill: none; stroke: var(--color-ink); stroke-width: 2; stroke-linecap: round; } .plan .pl-lead { stroke: var(--color-brass-deep); stroke-width: 1.2; } .plan .pl-lead-dot { fill: var(--color-brass-deep); } .plan .pl-tagbox { fill: var(--color-white); stroke: var(--color-brass-deep); stroke-width: 1.2; } .plan .pl-tagtext { font: 600 13px var(--font-body); fill: var(--color-ink); } .plan .pl-measure, .plan .pl-codes, .plan .pl-tags { opacity: 0; } .motion .step h3, .motion .step p, .motion .step__n { transition: color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out); } .motion .steps:not(.steps--long) .step:not(.is-now) h3, .motion .steps:not(.steps--long) .step:not(.is-now) .step__n { color: var(--color-ink-2); border-color: var(--color-paper-3); } .motion .step.is-now .step__n { background: var(--color-ivy); border-color: var(--color-ivy); color: var(--color-white); } @media (max-width: 59.99rem) { .assemble { min-height: calc(100svh - var(--header-h)); padding-block: var(--space-md); align-items: start; } .assemble__grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-sm); } .assemble__stage { order: -1; } .assemble__svg { max-height: 46svh; } .assemble__copy { gap: var(--space-xs); } .assemble__copy h2 { font-size: var(--text-2xl); } .assemble.is-live .assemble__copy .lead, .assemble.is-live .assemble__copy .link { display: none; } .assemble.is-live .assemble__steps li { display: none; } .assemble.is-live .assemble__steps li.is-on { display: grid; } .steps-wrap__side { position: static; gap: var(--space-md); } .plan-fig { position: sticky; top: calc(var(--header-h) + 0.25rem); z-index: 2; padding: var(--space-2xs); box-shadow: 0 10px 20px -16px var(--color-shadow); } } .viz { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: var(--space-xl); align-items: start; } .viz__stage { display: grid; gap: var(--space-sm); } .viz__scene { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--radius-card); border: var(--rule); background: var(--color-paper-2); } .viz__scene img { display: block; width: 100%; height: 100%; object-fit: cover; } .viz__tint { position: absolute; inset: 0; background: var(--paint, transparent); mix-blend-mode: multiply; pointer-events: none; -webkit-mask-image: var(--mask); mask-image: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; transition: background-color var(--dur-base) var(--ease-out); } .viz__caption { font: 600 var(--text-md)/1.3 var(--font-display); color: var(--color-ink); text-align: center; } .viz__controls { display: grid; gap: var(--space-md); } .viz__rooms { display: flex; flex-wrap: wrap; gap: var(--space-xs); } .viz__room { display: grid; gap: 0.35rem; padding: 0.3rem; border: 1px solid var(--color-rule); border-radius: var(--radius); background: var(--color-white); font: 500 var(--text-sm)/1.2 var(--font-body); color: var(--color-ink-2); cursor: pointer; text-align: left; transition: box-shadow var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out); } .viz__room img { display: block; width: 9rem; height: auto; border-radius: 2px; } .viz__room[aria-pressed="true"] { color: var(--color-ink); box-shadow: 0 0 0 2px var(--color-ivy); border-color: var(--color-ivy); } .viz__room:hover { color: var(--color-ink); } @media (max-width: 59.99rem) { .viz { grid-template-columns: minmax(0, 1fr); gap: var(--space-lg); } .viz__room img { width: 7rem; } }
