@font-face { font-family: "Zilla Slab"; src: url("/assets/fonts/zilla-slab-600.woff2") format("woff2"); font-weight: 600; font-display: swap; } @font-face { font-family: "Zilla Slab"; src: url("/assets/fonts/zilla-slab-700.woff2") format("woff2"); font-weight: 700; font-display: swap; } @font-face { font-family: "Atkinson Hyperlegible Next"; src: url("/assets/fonts/atkinson-next.woff2") format("woff2"); font-weight: 200 800; font-style: normal; font-display: swap; } @font-face { font-family: "Zilla Fallback"; src: local("Rockwell"), local("Georgia"); size-adjust: 92%; ascent-override: 92%; descent-override: 26%; } @font-face { font-family: "Atkinson Fallback"; src: local("Verdana"), local("Arial"); size-adjust: 96%; ascent-override: 96%; descent-override: 25%; } :root { --color-paper: oklch(96.9% 0.003 248); --color-paper-2: oklch(93.5% 0.007 248); --color-paper-3: oklch(88.5% 0.011 250); --color-white: oklch(99.5% 0.001 248); --color-ink: oklch(39% 0.031 265.2); --color-ink-2: oklch(50.2% 0.029 263.2); --color-rule: oklch(86% 0.012 252); --color-navy: oklch(28.4% 0.068 274.3); --color-navy-2: oklch(35% 0.07 274); --color-navy-deep: oklch(22.9% 0.054 273.7); --color-navy-line: oklch(40% 0.05 274); --color-on-navy: oklch(96.5% 0.006 260); --color-on-navy-2: oklch(80% 0.025 265); --color-terra: oklch(64.4% 0.139 44.7); --color-terra-wash: oklch(93% 0.035 50); --color-terra-light: oklch(74% 0.12 48); --color-brick: oklch(53.3% 0.129 43); --color-brick-deep: oklch(46% 0.115 42); --color-focus: oklch(53.3% 0.129 43); --color-focus-on-navy: oklch(74% 0.12 48); --color-plan-paper: oklch(98.2% 0.003 248); --color-plan-line: oklch(28.4% 0.068 274.3); --color-plan-soft: oklch(70% 0.03 265); --color-lawn: oklch(91% 0.055 132); --color-lawn-line: oklch(62% 0.1 135); --color-water: oklch(89% 0.045 220); --color-water-line: oklch(62% 0.08 225); --color-pea: oklch(90% 0.025 85); --color-pea-dot: oklch(70% 0.03 75); --color-bluestone: oklch(80% 0.018 245); --color-fieldstone: oklch(82% 0.02 70); --color-fieldstone-line: oklch(58% 0.025 60); --color-roof: oklch(80% 0.01 260); --color-roof-line: oklch(68% 0.012 260); --color-asphalt: oklch(58% 0.012 260); --color-asphalt-line: oklch(92% 0.005 250); --color-paver: oklch(86% 0.038 62); --color-paver-line: oklch(56% 0.06 50); --color-cobble: oklch(86% 0.008 250); --color-tree: oklch(72% 0.07 140 / 0.55); --color-shadow: oklch(28.4% 0.068 274.3 / 0.14); --color-scrim-strong: oklch(22.9% 0.054 273.7 / 0.9); --color-scrim: oklch(22.9% 0.054 273.7 / 0.72); --color-scrim-faint: oklch(22.9% 0.054 273.7 / 0.25); --color-scrim-clear: oklch(22.9% 0.054 273.7 / 0); --color-scrim-soft: oklch(22.9% 0.054 273.7 / 0.35); --font-display: "Zilla Slab", "Zilla Fallback", Rockwell, Georgia, serif; --font-body: "Atkinson Hyperlegible Next", "Atkinson Fallback", Verdana, Arial, sans-serif; --text-xs: 0.8rem; --text-sm: 0.92rem; --text-base: 1.125rem; --text-md: 1.25rem; --text-lg: 1.45rem; --text-xl: 1.75rem; --text-2xl: clamp(1.8rem, 1.3rem + 1.9vw, 2.45rem); --text-3xl: clamp(1.95rem, 1.4rem + 2vw, 2.6rem); --text-display: clamp(2.3rem, 1.5rem + 2.9vw, 3.4rem); --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-stone: 4px; --radius-card: 8px; --radius-pill: 999px; --rule: 1px solid var(--color-rule); --rule-navy: 1px solid var(--color-navy-line); --cap: 0.42rem; --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-slow: 640ms; --dur-draw: 2200ms; --wrap: 76rem; --header-h: 4.75rem; } *, *::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-brick); } :focus-visible { outline: 3px solid var(--color-focus); outline-offset: 3px; } ::selection { background: var(--color-navy); color: var(--color-white); } h1, h2, h3 { margin: 0; color: var(--color-navy); font-family: var(--font-display); font-weight: 700; letter-spacing: -0.01em; line-height: 1.06; overflow-wrap: anywhere; min-width: 0; font-style: normal; text-wrap: balance; } h1 { font-size: var(--text-display); } h2 { font-size: var(--text-3xl); } h3 { font-size: var(--text-lg); line-height: 1.15; } p { margin: 0; } ul, ol { margin: 0; padding: 0; } [role="list"] { list-style: none; } figure { margin: 0; } address { font-style: normal; } .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); } .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-navy); font: 700 var(--text-sm)/1 var(--font-display); } .skip:focus { top: var(--space-sm); } .lead { font-size: var(--text-md); line-height: 1.55; max-width: 58ch; } .muted { color: var(--color-ink-2); } .prose { display: grid; gap: var(--space-sm); max-width: 66ch; } .prose h2 { font-size: var(--text-2xl); margin-top: var(--space-md); } .prose h3 { margin-top: var(--space-xs); } .prose ul { display: grid; gap: var(--space-2xs); padding-left: 1.2em; } .prose a { color: var(--color-brick); } .cap::after { content: ""; display: block; width: calc(1.6rem * 3 + 6px); height: var(--cap); margin-top: var(--space-sm); border-radius: 1px; background: repeating-linear-gradient(90deg, var(--color-terra) 0 1.6rem, transparent 1.6rem calc(1.6rem + 3px)); } .cap--center::after { margin-inline: auto; } .navy .cap::after { background: repeating-linear-gradient(90deg, var(--color-terra-light) 0 1.6rem, transparent 1.6rem calc(1.6rem + 3px)); } .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-stone); font: 700 var(--text-base)/1 var(--font-display); 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.5rem; padding: 0 var(--space-lg); font-size: var(--text-md); } .btn--brick { background: var(--color-brick); color: var(--color-white); } .btn--brick:hover { background: var(--color-brick-deep); } .btn--navy { background: var(--color-navy); color: var(--color-white); } .btn--navy:hover { background: var(--color-navy-2); } .btn--line { border-color: var(--color-navy); color: var(--color-navy); background: transparent; } .btn--line:hover { background: var(--color-navy); color: var(--color-white); } .navy .btn--line { border-color: var(--color-on-navy); color: var(--color-on-navy); } .navy .btn--line:hover { background: var(--color-on-navy); color: var(--color-navy); } .btn .icon { width: 1.2em; height: 1.2em; } .lbl-narrow { display: none; } .pill-phone { display: inline-flex; align-items: center; gap: 0.45rem; min-height: 2.6rem; padding: 0 1.05rem; border-radius: var(--radius-pill); background: var(--color-navy); color: var(--color-white); font: 700 var(--text-base)/1 var(--font-display); font-variant-numeric: tabular-nums; letter-spacing: 0.02em; text-decoration: none; white-space: nowrap; transition: background-color var(--dur-fast) var(--ease-out); } .pill-phone:hover { background: var(--color-navy-2); } .pill-phone .icon { width: 1.05em; height: 1.05em; color: var(--color-terra-light); } .link { display: inline-flex; align-items: center; gap: var(--space-2xs); font: 700 var(--text-base)/1.2 var(--font-display); text-decoration: none; border-bottom: 2px solid currentColor; padding-bottom: 0.15em; white-space: nowrap; color: var(--color-brick); justify-self: start; width: fit-content; } .link:hover { color: var(--color-brick-deep); } .navy .link { color: var(--color-terra-light); } .link .icon { transition: transform var(--dur-fast) var(--ease-out); } .link:hover .icon { transform: translateX(3px); } .navy { background: var(--color-navy); color: var(--color-on-navy); } .navy h1, .navy h2, .navy h3 { color: var(--color-on-navy); } .navy .muted { color: var(--color-on-navy-2); } .navy :focus-visible { outline-color: var(--color-focus-on-navy); } .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); } .site-header { position: sticky; top: 0; z-index: 40; background: var(--color-paper); border-bottom: 1px solid transparent; transition: border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); } .site-header.is-scrolled { border-bottom-color: var(--color-rule); 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: 6.6rem; flex: none; padding-block: 0.35rem; } .site-nav { margin-left: auto; } .site-nav ul { display: flex; gap: var(--space-lg); list-style: none; } .site-nav a { font: 600 var(--text-base)/1 var(--font-display); color: var(--color-navy); text-decoration: none; white-space: nowrap; padding: var(--space-2xs) 0; border-bottom: 3px solid transparent; } .site-nav a:hover { border-bottom-color: var(--color-paper-3); } .site-nav a[aria-current="page"] { border-bottom-color: var(--color-terra); } .site-header__actions { display: flex; align-items: center; gap: var(--space-sm); } .menu-btn { display: none; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center; color: var(--color-navy); border: 1px solid var(--color-rule); border-radius: var(--radius-stone); 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-paper); 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: 700 var(--text-xl)/1.1 var(--font-display); color: var(--color-navy); text-decoration: none; } .menu nav a[aria-current="page"] { color: var(--color-brick); } .menu nav .menu__sub a { font-size: var(--text-md); font-weight: 600; padding-left: var(--space-md); color: var(--color-ink); } .menu__foot { display: grid; gap: var(--space-xs); margin-top: auto; } .menu__foot .btn, .menu__foot .pill-phone { min-height: 3.2rem; justify-content: center; } .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; gap: 0.35rem; margin-top: var(--space-sm); } .rail__dots i { width: 1.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-terra); } .navy .rail__dots i { background: var(--color-navy-line); } .navy .rail__dots i.is-on { background: var(--color-terra-light); } } .shot { display: grid; gap: var(--space-2xs); } .shot img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-stone); background: var(--color-paper-2); } .shot figcaption { font-size: var(--text-sm); line-height: 1.4; color: var(--color-ink-2); } .navy .shot figcaption { color: var(--color-on-navy-2); } .crumbs ol { display: flex; flex-wrap: wrap; gap: var(--space-2xs); list-style: none; font: 600 var(--text-sm)/1.4 var(--font-display); color: var(--color-ink-2); } .crumbs li + li::before { content: "/"; margin-right: var(--space-2xs); color: var(--color-rule); } .crumbs a { text-decoration: none; } .crumbs a:hover { color: var(--color-brick); text-decoration: underline; } .crumbs [aria-current] { white-space: nowrap; } .site-footer { background: var(--color-navy-deep); color: var(--color-on-navy); padding-block: var(--space-2xl) var(--space-lg); } .site-footer h2 { color: var(--color-on-navy-2); font: 700 var(--text-sm)/1.2 var(--font-display); letter-spacing: 0.04em; margin-bottom: var(--space-sm); } .site-footer__grid { display: grid; grid-template-columns: minmax(0, 1.3fr) repeat(3, minmax(0, 1fr)); gap: var(--space-xl); } .site-footer__mark .logo-plate { width: 12.5rem; } .site-footer__statement { margin-top: var(--space-md); font: 700 var(--text-xl)/1.2 var(--font-display); max-width: 18ch; } .site-footer__statement span { color: var(--color-terra-light); } .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-terra-light); } .site-footer :focus-visible { outline-color: var(--color-focus-on-navy); } .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-navy); font-size: var(--text-sm); color: var(--color-on-navy-2); } .site-footer__base ul { display: flex; flex-wrap: wrap; gap: var(--space-md); } .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); font-size: var(--text-base); } .action-bar.is-on { transform: none; } .field { display: grid; gap: 0.4rem; min-width: 0; } .field label, .field legend, .field__label { font: 700 var(--text-base)/1.25 var(--font-display); color: var(--color-navy); 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-stone); 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-plan-soft); } .input:focus { outline: none; border-color: var(--color-navy); box-shadow: 0 0 0 3px var(--color-terra-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-navy) 50%), linear-gradient(135deg, var(--color-navy) 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-brick); } .field__error { color: var(--color-brick-deep); 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: 600 var(--text-base)/1 var(--font-display); color: var(--color-navy); 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-navy); } .choice input:checked + span { background: var(--color-navy); border-color: var(--color-navy); color: var(--color-white); } .choice input[type="checkbox"]:checked + span::before { content: ""; width: 0.5rem; height: 0.85rem; margin-top: -0.2rem; border: solid var(--color-terra-light); 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; } @media (max-width: 69.99rem) { .site-nav ul { gap: var(--space-md); } } @media (max-width: 59.99rem) { .site-nav { display: none; } .site-header__actions { margin-left: auto; gap: var(--space-xs); } .site-header__actions .btn--brick { display: none; } .menu-btn { display: inline-flex; } .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); } .site-footer__mark { grid-column: 1 / -1; } } @media (max-width: 40rem) { :root { --header-h: 4.25rem; } .site-header__bar { gap: var(--space-sm); } .site-header__logo { width: 5.6rem; } .lbl-wide { display: none; } .lbl-narrow { display: inline; } } @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; } } section { padding-block: var(--space-3xl); } .plan-sec, .work-sec, .under, .about-strip { content-visibility: auto; contain-intrinsic-size: auto 56rem; } .sec-head { display: grid; gap: var(--space-sm); max-width: 46rem; margin-bottom: var(--space-xl); } .sec-head--row { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--space-md); max-width: none; } .hero { position: relative; display: grid; min-height: clamp(34rem, 84svh, 52rem); padding: 0; overflow: hidden; isolation: isolate; background: var(--color-navy-deep); color: var(--color-on-navy); } .hero__slides, .hero__slide, .hero__scrim { position: absolute; inset: 0; } .hero__slides { z-index: -2; } .hero__slide { margin: 0; opacity: 0; transition: opacity 1400ms var(--ease-in-out); } .hero__slide.is-on { opacity: 1; } .hero__slide img { width: 100%; height: 100%; object-fit: cover; } .hero.is-live .hero__slide.is-on { animation: drift 9s var(--ease-out) both; } .hero.is-paused .hero__slide { animation-play-state: paused; } @keyframes drift { from { transform: scale(1); } to { transform: scale(1.06); } } .hero__scrim { z-index: -1; background: linear-gradient(90deg, var(--color-scrim-strong) 0%, var(--color-scrim) 34%, var(--color-scrim-faint) 62%, var(--color-scrim-clear) 100%); } .hero__inner { display: grid; grid-template-rows: 1fr auto; gap: var(--space-xl); padding-block: var(--space-2xl) var(--space-md); } .hero__copy { align-self: center; display: grid; gap: var(--space-md); max-width: 36rem; } .hero__copy h1 { color: var(--color-white); max-width: 14ch; } .hero__copy .lead { color: var(--color-on-navy); } .hero__ctas { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-2xs); } .hero .btn--line { border-color: var(--color-on-navy); color: var(--color-on-navy); } .hero .btn--line:hover { background: var(--color-on-navy); color: var(--color-navy); } .hero__note { font: 600 var(--text-sm)/1.4 var(--font-display); color: var(--color-on-navy-2); } .hero__bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); } .hero__caption { font-size: var(--text-sm); color: var(--color-on-navy-2); max-width: 60ch; } .hero__pause { display: grid; place-items: center; flex: none; width: 2.75rem; height: 2.75rem; border: 1px solid var(--color-on-navy-2); border-radius: 50%; background: var(--color-scrim); color: var(--color-white); cursor: pointer; } .hero__pause:hover { background: var(--color-navy); } .hero__pause .icon { width: 1.1rem; height: 1.1rem; } .hero :focus-visible { outline-color: var(--color-focus-on-navy); } .drawn__lines { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; } .drawn__line { fill: none; stroke: var(--color-white); stroke-width: 2.75; stroke-linecap: round; vector-effect: non-scaling-stroke; } .drawn__line--thin { stroke-width: 1.75; } .drawn__tag rect { fill: var(--color-white); } .drawn__tag circle { fill: var(--color-terra); } .drawn__tag text { fill: var(--color-navy); font: 700 22px/1 var(--font-display); } .js .drawn__line { stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw var(--dur-draw) var(--ease-in-out) forwards; } .js .drawn__line:nth-child(2) { animation-delay: 250ms; } .js .drawn__line:nth-child(3) { animation-delay: 500ms; } .js .drawn__line:nth-child(4) { animation-delay: 750ms; } .js .drawn__line:nth-child(5) { animation-delay: 950ms; } .js .drawn__tag { opacity: 0; animation: tag-in var(--dur-slow) var(--ease-out) forwards; } .js .drawn__tag:nth-of-type(1) { animation-delay: 1700ms; } .js .drawn__tag:nth-of-type(2) { animation-delay: 2000ms; } .js .drawn__tag:nth-of-type(3) { animation-delay: 2300ms; } @keyframes draw { to { stroke-dashoffset: 0; } } @keyframes tag-in { to { opacity: 1; } } .plan-sec { background: var(--color-white); border-block: var(--rule); } .plan { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-xl); align-items: start; } .plan__drawing { position: sticky; top: calc(var(--header-h) + var(--space-sm)); border: var(--rule); border-radius: var(--radius-card); overflow: hidden; background: var(--color-plan-paper); } .plan__svg { width: 100%; height: auto; } .plan__side { display: grid; gap: var(--space-md); } .plan__legend { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2xs); list-style: none; } .plan__key { display: flex; align-items: center; gap: var(--space-xs); width: 100%; min-height: 3rem; padding: 0.45rem 0.7rem; text-align: left; border: 1px solid var(--color-rule); border-radius: var(--radius-stone); background: var(--color-paper); color: var(--color-navy); font: 700 var(--text-base)/1.15 var(--font-display); cursor: pointer; transition: border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out); } .plan__key:hover { border-color: var(--color-navy); } .plan__key[aria-expanded="true"] { border-color: var(--color-navy); background: var(--color-white); box-shadow: inset 4px 0 0 var(--color-terra); } .plan__n { display: inline-grid; place-items: center; flex: none; width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--color-navy); color: var(--color-white); font: 700 var(--text-sm)/1 var(--font-display); } .plan__name { flex: 1; min-width: 0; } .plan__tick { display: none; color: var(--color-brick); } .plan__tick .icon { width: 1.25rem; height: 1.25rem; } .plan__key.is-picked .plan__tick { display: inline-flex; } .plan__key.is-picked .plan__n { background: var(--color-terra); } .no-js .plan__legend, .no-js .plan__add { display: none; } .plan__panels { display: grid; gap: var(--space-md); } .js .plan__panel:not(.is-on) { display: none; } .plan__panel { display: grid; border: var(--rule); border-radius: var(--radius-card); overflow: hidden; background: var(--color-paper); } .plan__photo { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; } .plan__body { display: grid; gap: var(--space-xs); padding: var(--space-md); } .plan__body h3 { display: flex; align-items: center; gap: var(--space-xs); font-size: var(--text-lg); } .plan__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-sm) var(--space-md); margin-top: var(--space-2xs); } .plan__add[aria-pressed="true"] { background: var(--color-navy); color: var(--color-white); } .plan__add[aria-pressed="true"] .icon { transform: rotate(45deg); } .plan__add .icon { transition: transform var(--dur-fast) var(--ease-out); } .plan__list { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-sm); padding: var(--space-sm) var(--space-md); border-radius: var(--radius-card); background: var(--color-terra-wash); } .plan__list-label { font: 700 var(--text-sm)/1 var(--font-display); color: var(--color-ink-2); margin-right: 0.3rem; } .plan__list strong { font: 700 var(--text-base)/1.3 var(--font-display); color: var(--color-navy); } .plan__paper { fill: var(--color-plan-paper); } .lawn-fill, .lawn-upper { fill: url(#pat-lawn); } .pt-lawn-bg { fill: var(--color-lawn); } .pt-lawn path { stroke: var(--color-lawn-line); stroke-width: 1; fill: none; opacity: 0.55; } .street { fill: var(--color-asphalt); } .street__line { stroke: var(--color-asphalt-line); stroke-width: 2; stroke-dasharray: 22 16; } .lot-line { fill: none; stroke: var(--color-plan-line); stroke-width: 1.4; stroke-dasharray: 18 6 3 6; opacity: 0.55; } .bluestone { fill: url(#pat-bluestone); } .pt-bluestone rect { fill: var(--color-bluestone); stroke: var(--color-plan-line); stroke-width: 0.7; stroke-opacity: 0.4; } .pavers { fill: url(#pat-pavers); } .pt-pavers rect { fill: var(--color-paver); stroke: var(--color-paver-line); stroke-width: 0.7; } .walk { fill: none; stroke: url(#pat-pavers); stroke-width: 30; stroke-linecap: round; } .walk__edge { fill: none; stroke: var(--color-plan-line); stroke-width: 34; stroke-linecap: round; } .cobble { fill: url(#pat-cobble); } .pt-cobble rect { fill: var(--color-cobble); stroke: var(--color-ink-2); stroke-width: 0.6; } .crushed { fill: url(#pat-crushed); } .pt-crushed-bg { fill: var(--color-pea); } .pt-crushed circle { fill: var(--color-pea-dot); } .water { fill: url(#pat-water); } .pt-water-bg { fill: var(--color-water); } .pt-water { fill: none; stroke: var(--color-water-line); stroke-width: 1.2; } .coping { fill: var(--color-bluestone); stroke: var(--color-plan-line); stroke-width: 1.2; } .fence { fill: none; stroke: var(--color-plan-line); stroke-width: 2; stroke-dasharray: 2 5; } .roof { fill: url(#pat-roof); } .pt-roof-bg { fill: var(--color-roof); } .pt-roof { stroke: var(--color-roof-line); stroke-width: 0.8; fill: none; } .ridge { stroke: var(--color-plan-line); stroke-width: 2; fill: none; } .edge { fill: none; stroke: var(--color-plan-line); stroke-width: 2.2; stroke-linejoin: round; } .fieldstone { fill: var(--color-fieldstone); stroke: var(--color-fieldstone-line); stroke-width: 1; } .fieldstone-mass { fill: var(--color-fieldstone); stroke: var(--color-plan-line); stroke-width: 2; } .chimney { fill: var(--color-plan-line); } .chimney--brick { fill: var(--color-brick); } .hearth, .stepper { fill: var(--color-bluestone); stroke: var(--color-plan-line); stroke-width: 1.3; } .granite-step { fill: var(--color-plan-paper); stroke: var(--color-plan-line); stroke-width: 1.4; } .pillar { fill: var(--color-fieldstone); stroke: var(--color-plan-line); stroke-width: 2; } .firepit__bowl { fill: var(--color-ink); } .chamber { fill: none; stroke: var(--color-plan-line); stroke-width: 1.6; stroke-dasharray: 6 4; } .chamber__rib { stroke: var(--color-plan-line); stroke-width: 1; opacity: 0.6; } .pipe { fill: none; stroke: var(--color-plan-line); stroke-width: 1.8; stroke-dasharray: 10 5; } .tree { pointer-events: none; } .tree__canopy { fill: var(--color-tree); stroke: var(--color-lawn-line); stroke-width: 1.4; } .tree__trunk { fill: var(--color-lawn-line); } .tree__branch { stroke: var(--color-lawn-line); stroke-width: 1; opacity: 0.5; } .shrubs circle { fill: var(--color-tree); stroke: var(--color-lawn-line); stroke-width: 1; } .north circle { fill: var(--color-white); stroke: var(--color-plan-line); stroke-width: 1.5; } .north__star { fill: var(--color-terra); stroke: var(--color-plan-line); stroke-width: 1; } .north__n { fill: none; stroke: var(--color-plan-line); stroke-width: 2; } .plan__part { cursor: pointer; } .plan__hl { fill: var(--color-terra); fill-opacity: 0; stroke: var(--color-terra); stroke-width: 0; stroke-linejoin: round; transition: fill-opacity var(--dur-base) var(--ease-out); } .plan__part:hover .plan__hl { fill-opacity: 0.12; } .plan__part.is-picked .plan__hl { fill-opacity: 0.3; } .plan__part.is-current .plan__hl { stroke-width: 4; } .plan__pin { cursor: pointer; } .plan__pin circle { fill: var(--color-navy); stroke: var(--color-white); stroke-width: 3; transition: fill var(--dur-fast) var(--ease-out); } .plan__pin text { fill: var(--color-white); font: 700 23px/1 var(--font-display); text-anchor: middle; pointer-events: none; } .plan__pin.is-picked circle { fill: var(--color-terra); } .plan__pin.is-current circle { stroke: var(--color-terra); stroke-width: 5; } .types { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-md); } .type { display: grid; height: 100%; border-radius: var(--radius-card); overflow: hidden; background: var(--color-white); border: var(--rule); text-decoration: none; transition: border-color var(--dur-fast) var(--ease-out), transform var(--dur-base) var(--ease-out); } .type:hover { border-color: var(--color-navy); } .type__img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; } .type__body { display: grid; gap: 0.35rem; padding: var(--space-sm) var(--space-md) var(--space-md); } .type__name { font: 700 var(--text-lg)/1.15 var(--font-display); color: var(--color-navy); } .type__line { color: var(--color-ink); } .type__count { display: inline-flex; align-items: center; gap: 0.35rem; margin-top: 0.3rem; font: 700 var(--text-sm)/1 var(--font-display); color: var(--color-brick); } .type:hover .type__count .icon { transform: translateX(3px); } .type__count .icon { transition: transform var(--dur-fast) var(--ease-out); } .work-sec--page { padding-top: 0; } .under__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--space-xl); align-items: center; } .under__copy { display: grid; gap: var(--space-md); align-content: start; } .under__shots { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-md); } .plan-cta { padding-block: var(--space-2xl); } .plan-cta__grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-lg); align-items: center; } .plan-cta__grid > div:first-child { display: grid; gap: var(--space-sm); } .plan-cta__actions { display: flex; flex-wrap: wrap; gap: var(--space-xs); } .about-strip__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: var(--space-xl); align-items: center; } .about-strip__photo img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--radius-card); } .about-strip__copy { display: grid; gap: var(--space-md); max-width: 38rem; } .about-body__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-xl); align-items: start; } .about-body__shots { display: grid; gap: var(--space-md); } .faq-sec { background: var(--color-paper-2); } .faq-sec__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--space-xl); } .faq { display: grid; 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; list-style: none; font: 700 var(--text-md)/1.3 var(--font-display); color: var(--color-navy); } .faq__item summary::-webkit-details-marker { display: none; } .faq__item summary .icon { transition: transform var(--dur-base) var(--ease-out); color: var(--color-brick); } .faq__item[open] summary .icon { transform: rotate(45deg); } .faq__item p { padding: 0 0 var(--space-md); max-width: 62ch; } .estimate-sec { background: var(--color-white); border-top: var(--rule); } .estimate-sec__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--space-xl); align-items: start; } .estimate-sec__intro { display: grid; gap: var(--space-md); justify-items: start; position: sticky; top: calc(var(--header-h) + var(--space-md)); } .estimate-sec__call { font: 700 var(--text-base)/1.3 var(--font-display); color: var(--color-ink-2); } .pill-phone--lg { min-height: 3.4rem; padding: 0 1.4rem; font-size: var(--text-lg); } .estimate-sec--page { padding-top: var(--space-lg); border-top: 0; } .estimate-sec--page .estimate-sec__grid { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); } .estimate-sec__aside { display: grid; gap: var(--space-md); position: sticky; top: calc(var(--header-h) + var(--space-md)); } .request { display: grid; gap: var(--space-lg); padding: var(--space-lg); border: var(--rule); border-radius: var(--radius-card); background: var(--color-paper); } .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.5rem; height: 3.5rem; padding: 0; border: 1px solid var(--color-rule); border-radius: var(--radius-stone); overflow: hidden; background: none; cursor: pointer; } .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__status:empty { display: none; } .request__status { padding: var(--space-sm) var(--space-md); border-radius: var(--radius-stone); font-weight: 700; } .request__status.is-ok { background: var(--color-lawn); color: var(--color-navy); } .request__status.is-error { background: var(--color-terra-wash); color: var(--color-brick-deep); } .page-head { padding-block: var(--space-xl) var(--space-2xl); } .page-head .wrap { display: grid; gap: var(--space-md); } .page-head h1 { max-width: 22ch; } .page-head--tight { padding-bottom: var(--space-lg); } .page-head .lead a { color: var(--color-brick); font-weight: 700; white-space: nowrap; } .svc-hero { padding-block: var(--space-lg) var(--space-2xl); } .svc-hero__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: var(--space-xl); align-items: center; } .svc-hero__copy { display: grid; gap: var(--space-md); } .svc-hero__figure { display: grid; gap: var(--space-xs); } .svc-hero__img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-card); } .svc-hero__figure figcaption { font-size: var(--text-sm); color: var(--color-ink-2); } .svc-body { background: var(--color-white); border-block: var(--rule); } .svc-body__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-xl); align-items: start; } .svc-builds { display: grid; gap: var(--space-sm); padding: var(--space-lg); border-radius: var(--radius-card); background: var(--color-paper); } .svc-builds__h { font-size: var(--text-lg); } .svc-builds ul { display: grid; gap: var(--space-xs); } .svc-builds li { display: flex; gap: var(--space-xs); align-items: baseline; } .svc-builds li .icon { color: var(--color-terra); transform: translateY(0.15em); } .svc-next__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-xl); align-items: start; } .svc-next__cta { display: grid; gap: var(--space-md); justify-items: start; padding: var(--space-xl); border-radius: var(--radius-card); } .svc-next__related { display: grid; gap: var(--space-sm); } .related { display: grid; border-top: var(--rule); } .related__link { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); padding: var(--space-sm) 0; border-bottom: var(--rule); font: 700 var(--text-md)/1.2 var(--font-display); color: var(--color-navy); text-decoration: none; } .related__link:hover { color: var(--color-brick); } .related--wide { max-width: 32rem; } .contact-sec__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--space-xl); align-items: start; } .contact-card { display: grid; gap: var(--space-md); justify-items: start; padding: var(--space-xl); border-radius: var(--radius-card); } .contact-card .pill-phone { background: var(--color-white); color: var(--color-navy); } .guide { background: var(--color-white); border-block: var(--rule); } .guide__grid { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: var(--space-xl); align-items: start; } .guide__main { max-width: 70ch; } .guide__main h2 { margin-top: var(--space-lg); } .guide__main h2:first-child { margin-top: 0; } .guide__table { overflow-x: auto; margin-block: var(--space-xs); border: var(--rule); border-radius: var(--radius-card); } .guide__table table { width: 100%; min-width: 34rem; border-collapse: collapse; font-size: var(--text-sm); } .guide__table th, .guide__table td { padding: 0.7rem 0.85rem; text-align: left; vertical-align: top; border-bottom: var(--rule); } .guide__table thead th { background: var(--color-paper-2); font: 700 var(--text-sm)/1.2 var(--font-display); color: var(--color-navy); } .guide__table tbody th { font-weight: 700; color: var(--color-navy); } .guide__table tr:last-child th, .guide__table tr:last-child td { border-bottom: 0; } .guide__note { padding: var(--space-sm) var(--space-md); border-left: 4px solid var(--color-terra); background: var(--color-paper); font-size: var(--text-sm); } .guide__aside { display: grid; gap: var(--space-lg); position: sticky; top: calc(var(--header-h) + var(--space-md)); } .guide__card { display: grid; gap: var(--space-sm); justify-items: start; padding: var(--space-lg); border-radius: var(--radius-card); } .guide__card h2 { font-size: var(--text-xl); } .guide__sources { display: grid; gap: var(--space-sm); } .guide__sources ul { display: grid; gap: var(--space-2xs); font-size: var(--text-sm); } .guide__sources a { color: var(--color-brick); } .work-gallery { padding-top: 0; } .chips { display: flex; flex-wrap: wrap; gap: var(--space-2xs); margin-bottom: var(--space-lg); } .chip { 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); color: var(--color-navy); font: 700 var(--text-base)/1 var(--font-display); white-space: nowrap; cursor: pointer; 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-navy); } .chip[aria-pressed="true"] { background: var(--color-navy); border-color: var(--color-navy); color: var(--color-white); } .gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg) var(--space-md); } .shot__zoom { display: block; border-radius: var(--radius-stone); overflow: hidden; cursor: zoom-in; } .shot__zoom img { transition: transform var(--dur-slow) var(--ease-out); } .shot__zoom:hover img { transform: scale(1.03); } .lightbox { width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: var(--space-xl) var(--space-3xl); border: 0; background: var(--color-navy-deep); color: var(--color-on-navy); } .lightbox[open] { display: grid; place-items: center; } .lightbox::backdrop { background: var(--color-scrim); } .lightbox figure { display: grid; gap: var(--space-sm); justify-items: center; max-width: 100%; max-height: 100%; } .lightbox img { max-width: 100%; max-height: calc(100dvh - 9rem); width: auto; height: auto; border-radius: var(--radius-stone); } .lightbox figcaption { color: var(--color-on-navy-2); text-align: center; max-width: 60ch; } .lightbox__btn { position: absolute; display: grid; place-items: center; width: 3rem; height: 3rem; border: 1px solid var(--color-navy-line); border-radius: 50%; background: var(--color-navy); color: var(--color-on-navy); cursor: pointer; } .lightbox__btn:hover { background: var(--color-navy-2); } .lightbox__btn .icon { width: 1.4rem; height: 1.4rem; } .lightbox__btn:focus-visible { outline-color: var(--color-focus-on-navy); } .lightbox__prev { left: var(--space-md); top: 50%; transform: translateY(-50%); } .lightbox__next { right: var(--space-md); top: 50%; transform: translateY(-50%); } .lightbox__close { right: var(--space-md); top: var(--space-md); } .under__shots .shot img, .about-body__shots .shot img { aspect-ratio: 4 / 3; } @media (max-width: 69.99rem) { .types { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 59.99rem) { section { padding-block: var(--space-2xl); } .hero { min-height: clamp(36rem, 88svh, 46rem); } .hero__scrim { background: linear-gradient(0deg, var(--color-scrim-strong) 0%, var(--color-scrim) 45%, var(--color-scrim-faint) 72%, var(--color-scrim-clear) 100%); } .hero__inner { padding-block: var(--space-xl) var(--space-sm); } .hero__copy { align-self: end; } .drawn__tag { display: none; } .guide__grid, .plan, .under__grid, .about-strip__grid, .about-body__grid, .faq-sec__grid, .estimate-sec__grid, .estimate-sec--page .estimate-sec__grid, .svc-hero__grid, .svc-body__grid, .svc-next__grid, .contact-sec__grid, .plan-cta__grid { grid-template-columns: minmax(0, 1fr); } .hero__ctas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .hero__ctas .btn { min-width: 0; padding-inline: var(--space-xs); font-size: var(--text-base); } .plan__drawing { position: static; margin-inline: calc(var(--gutter) * -1); border-radius: 0; border-inline: 0; } .plan__pin circle, .plan__pin text { transform: scale(1.45); transform-box: fill-box; transform-origin: center; } .plan__legend { display: flex; gap: var(--space-2xs); overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); } .plan__legend::-webkit-scrollbar { display: none; } .plan__legend li { flex: none; scroll-snap-align: start; } .plan__key { white-space: nowrap; } .estimate-sec__intro, .estimate-sec__aside, .guide__aside { position: static; } .request { padding: var(--space-md); margin-inline: calc(var(--gutter) * -0.5); } .request__grid { grid-template-columns: minmax(0, 1fr); } .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-md) var(--space-sm); } .gallery .shot figcaption { font-size: var(--text-xs); } .chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); } .chips::-webkit-scrollbar { display: none; } .lightbox { padding: var(--space-xl) var(--space-sm); } .lightbox__prev, .lightbox__next { top: auto; bottom: var(--space-md); transform: none; } .about-strip__photo img { aspect-ratio: 4 / 3; } .svc-next__cta, .contact-card { padding: var(--space-lg); } } @media (max-width: 24rem) { .hero__ctas .btn .icon { display: none; } }
