/* Locally hosted Latin subsets; licenses accompany the font files. */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 500;
  font-display: swap;
  src: url('/assets/fonts/fraunces-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url('/assets/fonts/fraunces-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/assets/fonts/manrope-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family:Gotham;
    src:url('/assets/fonts/GothamMedium.ttf') format('truetype');
    font-weight:500;
    font-display:swap
}
@font-face {
    font-family:Gotham;
    src:url('/assets/fonts/GothamBold.ttf') format('truetype');
    font-weight:700;
    font-display:swap
}
:root {
    --ink:#203e35;
    --forest:#203e35;
    --paper:#fafbf8;
    --white:#fff;
    --mist:#edf3f2;
    --muted:#52635d;
    --line:#cbd5ce;
    --accent:#476a73;
    --light-accent:#cbd8ca;
    --serif:Fraunces,Georgia,'Times New Roman',serif;
    --sans:Manrope,Arial,Helvetica,sans-serif;
    --brand:Gotham,Arial,sans-serif;
    --column-gap:clamp(2rem,5.5vw,5rem);
    --section-space:clamp(4.5rem,8vw,7rem);
    --split-columns:minmax(0,1.1fr) minmax(0,1fr)
}
* {
    box-sizing:border-box
}
html {
    scroll-behavior:smooth;
    scroll-padding-top:120px
}
body {
    margin:0;
    color:var(--ink);
    background:var(--paper);
    font-family:var(--sans);
    font-weight:400;
    font-size:1rem;
    line-height:1.75;
}
h1,h2,h3,p,figure {
    margin:0
}
h1,h2 {
    font-family:var(--serif);
    font-weight:400;
    font-optical-sizing:auto;
    line-height:1.12;
    letter-spacing:-.035em;
    text-wrap:balance;
}
h2 {
    font-size:clamp(2.25rem,4vw,3.5rem);
}
h3 {
    font-weight:400;
    line-height:1.3;
}
a {
    color:inherit;
    text-underline-offset:5px
}
button,input,textarea {
    font:inherit
}
button,a,input,textarea,summary {
    -webkit-tap-highlight-color:transparent
}
button,a,summary {
    touch-action:manipulation
}
button {
    cursor:pointer
}
img {
    display:block;
    max-width:100%
}
[hidden] {
    display:none!important
}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible {
    outline:3px solid var(--accent);
    outline-offset:5px
}
.container {
    width:min(1200px,calc(100% - 96px));
    margin:auto;
}
.section {
    padding:var(--section-space) 0;
}
.eyebrow {
    font-size:.875rem;
    letter-spacing:.015em;
    line-height:1.6;
    font-weight:600;
    color:var(--accent);
    margin-bottom:1.25rem;
}
.text-link {
    display:inline-flex;
    align-items:center;
    gap:1rem;
    text-decoration:none;
    font-size:.9375rem;
    border-bottom:1px solid currentColor;
    padding:0 0 5px;
    font-weight:500;
    line-height:1.5;
    min-height:44px;
}
.text-link:hover {
    color:var(--accent)
}
.button {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:1.5rem;
    padding:1rem 1.5rem;
    background:var(--ink);
    color:white;
    border:1px solid var(--ink);
    text-decoration:none;
    font-size:.9375rem;
    line-height:1.5;
    transition:background .2s,color .2s;
    font-weight:500;
    min-height:3.5rem;
    border-radius:3px;
}
.button:hover {
    background:var(--accent);
    border-color:var(--accent)
}
.button-small {
    padding:.75rem 1.125rem;
    min-height:2.875rem;
}
.skip-link {
    position:absolute;
    left:16px;
    top:-100px;
    background:white;
    padding:15px;
    z-index:100
}
.skip-link:focus {
    top:16px
}
.site-header {
    position:sticky;
    top:0;
    z-index:20;
    background:var(--paper);
    border-bottom:1px solid var(--line)
}
.header-inner {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:2rem;
    min-height:104px;
}
.brand {
    display:inline-flex;
    align-items:center;
    gap:16px;
    flex-shrink:0;
    text-decoration:none
}
.brand-symbol {
    width:64px;
    height:64px;
    object-fit:contain;
    flex-shrink:0;
    background:var(--ink);
    border-radius:50%;
}
.wordmark {
    font-size:1.625rem;
    line-height:1;
    letter-spacing:.13em;
    text-decoration:none;
    font-weight:700;
    display:inline-block;
    font-family:var(--brand);
    text-align:center;
}
.wordmark span {
    display:block;
    font-size:.5625rem;
    letter-spacing:.23em;
    font-weight:500;
    margin-top:.5rem;
}
.site-header nav {
    display:flex;
    gap:2rem;
}
.site-header nav a {
    font-size:.9375rem;
    text-decoration:none;
}
.site-header nav a:hover {
    text-decoration:underline
}
.header-actions { display:flex; align-items:center; gap:.75rem; min-height:104px; }
.menu-toggle {
    width:44px;
    height:44px;
    flex:none;
    padding:12px;
    border:1px solid var(--line);
    background:transparent;
    color:var(--ink);
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:6px;
}
.menu-toggle span { display:block; height:1px; width:18px; background:currentColor; }
.menu-toggle[aria-expanded=true] span:first-child { transform:translateY(3.5px) rotate(45deg); }
.menu-toggle[aria-expanded=true] span:last-child { transform:translateY(-3.5px) rotate(-45deg); }
.hero {
    background:var(--mist);
}
.hero-copy {
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    padding-top:clamp(4rem,7vw,6.5rem);
    padding-bottom:clamp(4rem,7vw,6.5rem);
}
.hero .eyebrow {
    margin:0 0 1.75rem;
    font-size:.9375rem;
    letter-spacing:.015em;
}
.hero h1 {
    font-size:clamp(3.5rem,6.8vw,6rem);
    line-height:1.06;
    max-width:100%;
}
.hero-details {
    display:flex;
    flex-direction:column;
    align-items:center;
    min-width:0;
    margin-top:2rem;
}
.hero-description {
    font-size:1.125rem;
    line-height:1.8;
    color:var(--muted);
    max-width:64ch;
}
.hero-actions {
    display:flex;
    justify-content:center;
    align-items:center;
    flex-wrap:wrap;
    gap:1.5rem 2rem;
    margin-top:2rem;
}
.hero-note {
    margin-top:1.5rem;
    color:var(--muted);
    font-size:.8125rem;
    line-height:1.6;
}
h1 {
    font-size:clamp(3rem,5.3vw,5rem);
}
.split-heading {
    display:grid;
    grid-template-columns:var(--split-columns);
    gap:var(--column-gap);
    align-items:start;
}
.intro-body {
    padding-top:0;
}
.intro-body .large-copy {
    font-family:var(--sans);
    font-size:1.25rem;
    line-height:1.6;
    color:var(--ink);
    margin-bottom:1.25rem;
}
.intro-body p {
    font-family:var(--sans);
    color:var(--muted);
    font-size:1.0625rem;
    max-width:48ch;
}
.intro-body .text-link {
    margin-top:1.5rem;
}
.services {
    background:var(--white);
    border-top:1px solid var(--line)
}
.section-heading {
    display:grid;
    align-items:end;
    gap:var(--column-gap);
    margin-bottom:3rem;
    grid-template-columns:var(--split-columns);
}
.section-heading>p {
    max-width:44ch;
    color:var(--muted);
    font-size:1.0625rem;
    font-family:var(--sans);
    line-height:1.75;
    padding-bottom:.25rem;
}
.service-row {
    border-top:1px solid var(--line)
}
.service-row:last-child {
    border-bottom:1px solid var(--line)
}
.service-row summary {
    list-style:none;
    display:grid;
    grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) 1.5rem;
    align-items:center;
    gap:1.5rem;
    padding:1.75rem 0;
    cursor:pointer;
}
.service-row summary::-webkit-details-marker {
    display:none
}
.service-row h3 {
    font-family:var(--serif);
    font-size:1.75rem;
    letter-spacing:-.02em;
}
.service-teaser {
    font-size:1rem;
    color:var(--muted);
}
.plus {
    width:19px;
    height:19px;
    position:relative
}
.plus:before,.plus:after {
    content:'';
    position:absolute;
    background:var(--ink);
    width:19px;
    height:1px;
    top:9px
}
.plus:after {
    transform:rotate(90deg)
}
details[open] .plus:after {
    transform:rotate(0)
}
.service-detail {
    display:grid;
    grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);
    gap:1.5rem;
    padding:0 3rem 2rem 0;
    font-family:var(--sans);
    font-size:1rem;
    color:var(--muted);
}
.service-detail p {
    max-width:38ch;
}
.service-detail ul {
    padding:0;
    margin:0;
    list-style:none;
    font-size:.9375rem;
}
.service-detail li {
    margin-bottom:.5rem;
    break-inside:avoid;
    padding-left:1rem;
    position:relative;
}
.service-detail li:before {
    content:'·';
    position:absolute;
    left:0;
    color:var(--accent)
}
.section-footnote {
    font-size:.9375rem;
    margin-top:1.5rem;
    color:var(--muted);
}
.section-footnote a {
    color:var(--ink);
    margin-left:10px
}
.process {
    background:var(--forest);
    color:white
}
.process .eyebrow {
    color:var(--light-accent)
}
.process .section-heading>p {
    color:#d9e3dc
}
.process-steps {
    list-style:none;
    padding:0;
    margin:3rem 0;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:2rem;
}
.process-steps li {
    border-top:1px solid #5c7568;
    padding-top:1.5rem;
    min-width:0;
}
.step-number {
    font-size:.75rem;
    letter-spacing:.015em;
    color:var(--light-accent);
}
.process-steps h3 {
    font-family:var(--serif);
    font-size:1.5rem;
    line-height:1.3;
    margin:1.5rem 0 1rem;
    min-height:2.6em;
    letter-spacing:-.015em;
}
.process-steps p {
    font-family:var(--sans);
    color:#d9e3dc;
    font-size:1rem;
    line-height:1.75;
}
.process-bottom {
    display:flex;
    gap:2rem;
    justify-content:space-between;
    align-items:center;
    padding-top:1.5rem;
    border-top:1px solid #5c7568;
    flex-wrap:wrap;
}
.process-bottom p {
    font-family:var(--sans);
    font-size:.875rem;
    color:#d9e3dc;
}
.process-bottom p span {
    margin:0 .5rem;
    color:#8f9fa6;
}
.process .text-link {
    white-space:normal;
}
.process .text-link:hover {
    color:var(--light-accent)
}
.process a:focus-visible,footer a:focus-visible {
    outline-color:var(--light-accent)
}
.area-grid {
    display:grid;
    grid-template-columns:var(--split-columns);
    gap:var(--column-gap);
    align-items:start;
}
.area-intro>p:not(.eyebrow):not(.area-signoff) {
    font-family:var(--sans);
    color:var(--muted);
    font-size:1.0625rem;
    margin:1.5rem 0;
    max-width:42ch;
}
.area-signoff {
    font-family:var(--sans);
    font-style:normal;
    font-size:1rem;
    line-height:1.6;
    margin-top:2rem;
}
.area-signoff span {
    color:var(--accent)
}
.area-directory {
    border-top:1px solid var(--line)
}
.area-directory-top {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:1rem;
    padding:1.5rem 0;
    flex-wrap:wrap;
}
.area-directory-top h3 {
    font-size:1rem;
    font-weight:600;
}
.area-toggle {
    display:flex;
    gap:5px
}
.area-toggle button {
    border:1px solid var(--line);
    background:transparent;
    font-size:.875rem;
    padding:.625rem 1rem;
    color:var(--ink);
    min-height:44px;
}
.area-toggle button[aria-pressed=true] {
    background:var(--ink);
    color:white;
    border-color:var(--ink)
}
.location-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:0 1.5rem;
    min-height:0;
    align-content:start;
}
.location-grid span {
    border-bottom:1px solid var(--line);
    padding:.75rem 0;
    font-size:.9375rem;
}
.area-note {
    font-family:var(--sans);
    font-size:.9375rem;
    line-height:1.7;
    color:var(--muted);
    padding-top:1.5rem;
}
.area-note a {
    color:var(--ink)
}
.contact {
    background:var(--mist);
    border-top:1px solid var(--line)
}
.contact-layout {
    display:grid;
    grid-template-columns:var(--split-columns);
    gap:var(--column-gap);
    align-items:start;
    grid-template-areas:"intro form";
    row-gap:2.5rem;
}
.contact-intro {
    grid-area:intro;
    padding-top:0;
}
.contact-intro>p:not(.eyebrow) {
    font-family:var(--sans);
    color:var(--muted);
    font-size:1.0625rem;
    max-width:42ch;
    margin-top:1.5rem;
}
.next-step {
    border-top:1px solid var(--line);
    padding-top:1.5rem;
    margin-top:2rem;
    max-width:26rem;
}
.next-step .eyebrow {
    font-size:.75rem;
}
.next-step p {
    font-family:var(--sans);
    font-size:1rem;
    margin-top:.75rem;
    color:var(--muted);
}
.form-container {
    grid-area:form;
    background:white;
    padding:2rem;
    min-width:0;
}
.form-heading {
    display:block;
    margin-bottom:1.5rem;
}
.form-heading h3 {
    font-family:var(--serif);
    font-size:1.75rem;
    letter-spacing:-.02em;
}
.form-heading p {
    font-family:var(--sans);
    font-size:.875rem;
    color:var(--muted);
    margin-top:.5rem;
}
.form-grid {
    display:grid;
    grid-template-columns:1fr;
    gap:1.5rem;
}
.form-group label,legend {
    display:block;
    font-size:.875rem;
    margin-bottom:.5rem;
    font-weight:600;
}
.form-group input,.form-group textarea {
    display:block;
    width:100%;
    border:1px solid var(--line);
    background:#fff;
    border-radius:0;
    padding:.75rem;
    font-family:var(--sans);
    font-size:1rem;
    color:var(--ink);
    line-height:1.5;
    scroll-margin-top:120px;
}
.form-group input {
    height:3.25rem;
}
.form-group textarea {
    resize:vertical;
    min-height:120px
}
.form-group input::placeholder,.form-group textarea::placeholder {
    color:#6b7478;
    opacity:1
}
.form-group [aria-invalid=true] {
    border-color:#ad3427
}
.form-error {
    color:#a72f24;
    font-family:var(--sans);
    font-size:.875rem;
    line-height:1.5;
    margin-top:.5rem;
}
.form-error:empty {
    display:none
}
.project-types {
    padding:0;
    border:0;
    margin:1.5rem 0;
    min-width:0;
}
.project-types legend span {
    font-family:var(--sans);
    font-size:.875rem;
    color:var(--muted);
    display:block;
    font-weight:400;
    margin-top:.25rem;
}
.project-options {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:.5rem 1rem;
}
.project-options label {
    display:flex;
    align-items:center;
    gap:.625rem;
    cursor:pointer;
    min-height:2.75rem;
    font-family:var(--sans);
    font-size:.9375rem;
    line-height:1.4;
}
.project-options input {
    width:18px;
    height:18px;
    margin:0;
    accent-color:var(--ink);
    flex:none
}
.description-meta {
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:10px
}
.description-meta>span {
    margin-left:auto;
    font-family:var(--sans);
    font-size:.8125rem;
    color:var(--muted);
    white-space:nowrap;
    padding-top:5px;
}
.coverage-status {
    font-family:var(--sans);
    font-size:.875rem;
    line-height:1.5;
    color:var(--muted);
    margin-top:.5rem;
}
.coverage-status:empty {
    display:none
}
.coverage-status[data-coverage=primary] {
    color:#29633b
}
.coverage-status[data-coverage=extended] {
    color:#765115
}
.submit-button {
    width:100%;
    margin-top:1.5rem;
}
.submit-button:disabled {
    opacity:.6;
    cursor:wait
}
.form-status:not(:empty) {
    padding:14px;
    margin-top:18px;
    background:#f8ebe7;
    font-family:var(--sans);
    font-size:14px;
    color:#8e3024
}
.form-success {
    padding:55px 5px
}
.success-mark {
    font-family:var(--sans);
    font-size:32px;
    color:#376643;
    display:block;
    margin-bottom:25px
}
.form-success h3 {
    font-family:var(--serif);
    font-size:2rem;
    margin-bottom:1.5rem;
}
.form-success>p:last-child {
    font-family:var(--sans);
    color:var(--muted);
    font-size:1.0625rem;
}
.form-success:focus {
    outline:none
}
#turnstile-widget:not(:empty) {
    margin-top:22px
}
footer {
    background:var(--ink);
    color:white;
    padding:3rem 0 1.5rem;
}
.footer-top {
    display:grid;
    align-items:center;
    gap:2rem;
    padding-bottom:2rem;
    grid-template-columns:1fr auto auto;
}
.footer-top>p {
    font-family:var(--sans);
    font-size:1rem;
    font-style:normal;
    color:var(--light-accent);
}
.footer-top .text-link {
    font-size:.875rem;
}
.footer-bottom {
    border-top:1px solid #5c7568;
    display:flex;
    justify-content:space-between;
    gap:20px;
    padding-top:1.5rem;
    font-family:var(--sans);
    font-size:.875rem;
    color:#d9e3dc;
}

/* Keep children from widening the shared page columns. */
.hero-copy > *, .split-heading > *, .section-heading > *,
.area-grid > *, .contact-layout > * { min-width:0; }

@media(max-width:1050px) {
    .container { width:calc(100% - 64px); }
    .header-inner { flex-wrap:wrap; column-gap:1rem; row-gap:0; }
    .site-header nav { order:3; width:100%; flex-direction:column; gap:0; padding-bottom:1rem; max-height:calc(100dvh - 104px); overflow-y:auto; }
    .site-header nav a { display:flex; align-items:center; min-height:48px; border-top:1px solid var(--line); }
    .process-steps { grid-template-columns:repeat(2,minmax(0,1fr)); gap:2rem; }
    .process-steps h3 { min-height:0; }
    .form-grid { grid-template-columns:1fr; }
    .project-options { grid-template-columns:1fr; }
    .service-row summary { grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) 1.25rem; }
    .service-detail { padding-left:0; padding-right:2.75rem; }
    .footer-top { grid-template-columns:1fr auto; }
    .footer-top > p { grid-row:2; }
}
@media(max-width:800px) {
    html { scroll-padding-top:104px; }
    .header-inner { min-height:88px; }
    .header-actions { min-height:88px; }
    .site-header nav { max-height:calc(100dvh - 88px); }
    .contact-layout { grid-template-areas:"intro" "form"; grid-template-rows:auto; }
    .split-heading,.section-heading,.area-grid,.contact-layout {
        grid-template-columns:1fr;
        gap:2rem;
    }
    .hero h1 { font-size:clamp(3rem,8vw,4.5rem); }
    .hero-description { max-width:50ch; }
    .section-heading { margin-bottom:2rem; }
    .section-heading > p { max-width:50ch; padding:0; }
    .intro-body p,.area-intro > p:not(.eyebrow):not(.area-signoff),.contact-intro > p:not(.eyebrow) { max-width:50ch; }
    .service-row summary { grid-template-columns:minmax(0,1fr) 1.25rem; }
    .service-teaser { display:none; }
    .service-detail { grid-template-columns:1fr; gap:1.25rem; padding-right:0; }
    .service-detail p { max-width:50ch; }
    .service-detail ul { columns:2; column-gap:2rem; }
    .next-step { max-width:32rem; }
    .project-options { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .form-container { padding:2rem; }
    .area-signoff { margin-top:1.5rem; }
}
@media(max-width:560px) {
    html { scroll-padding-top:96px; }
    :root { --section-space:3rem; }
    .container { width:calc(100% - 40px); }
    .header-inner { min-height:80px; gap:1rem; }
    .brand { gap:.625rem; }
    .brand-symbol { width:48px; height:48px; }
    .wordmark { font-size:1.125rem; }
    .wordmark span { font-size:.5rem; margin-top:.375rem; }
    .button-small { padding:.625rem .75rem; gap:.75rem; font-size:.875rem; }
    .header-actions { gap:.5rem; min-height:80px; }
    .site-header nav { max-height:calc(100dvh - 80px); }
    .hero-copy { padding:3.5rem 0; }
    .hero-actions { width:100%; gap:1rem; }
    .hero-actions > .button { width:100%; padding:1rem; }
    .hero .eyebrow { font-size:.8125rem; letter-spacing:0; margin-bottom:1.5rem; }
    .hero h1 { font-size:clamp(2.2rem,8.8vw,3rem); }
    .hero-description { font-size:1.0625rem; }
    .hero-note { margin-top:1.5rem; }
    h2 { font-size:clamp(2rem,8vw,2.5rem); }
    .intro-body .large-copy { font-size:1.1875rem; }
    .service-row summary { gap:1rem; grid-template-columns:minmax(0,1fr) 1.25rem; padding:1.5rem 0; }
    .service-row h3 { font-size:1.5rem; }
    .service-detail { padding:0 0 1.5rem; }
    .service-detail ul { columns:1; }
    .section-footnote a { display:inline-block; margin:.5rem 0 0; }
    .process-steps { grid-template-columns:1fr; margin:2rem 0; gap:2rem; }
    .process-steps h3 { margin:1rem 0 .75rem; font-size:1.5rem; }
    .process-bottom { gap:1.5rem; }
    .area-directory-top { gap:1rem; }
    .location-grid { gap:0 1rem; }
    .location-grid span { font-size:.875rem; }
    .form-container { padding:1.5rem; }
    .form-grid { grid-template-columns:1fr; }
    .project-options { grid-template-columns:1fr; gap:.25rem; }
    .footer-top { gap:1.5rem 1rem; }
    .footer-top > p { grid-column:1 / -1; }
    .footer-top .text-link { justify-self:end; }
    .footer-bottom { flex-direction:column; gap:.5rem; }
}
@media(max-width:380px) {
    .brand-symbol { width:40px; height:40px; }
    .brand { gap:.5rem; }
    .wordmark { font-size:1rem; }
    .wordmark span { font-size:.4375rem; }
    .header-inner { gap:.5rem; }
    .button-small { gap:.5rem; padding:.625rem; }
    .footer-top { grid-template-columns:1fr; }
    .footer-top .text-link { justify-self:start; }
}
@media(prefers-reduced-motion:reduce) {
    html { scroll-behavior:auto; }
    *,*:before,*:after { transition:none!important; animation:none!important; }
}

/* Static, native disclosures keep answers available without JavaScript. */
.field-optional { font-weight:400; color:var(--muted); }
.contact-email a { overflow-wrap:anywhere; color:var(--ink); }
.faq { background:var(--white); border-top:1px solid var(--line); }
.faq-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--column-gap); align-items:start; }
.faq-group { min-width:0; }
.faq-group h3 { font-size:1rem; font-weight:600; margin-bottom:1.25rem; }
.faq-group details { border-top:1px solid var(--line); scroll-margin-top:120px; }
.faq-group details:last-child { border-bottom:1px solid var(--line); }
.faq-group summary {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:1.5rem;
    list-style:none;
    cursor:pointer;
    padding:1.125rem 0;
    font-size:1rem;
    line-height:1.6;
    min-height:64px;
}
.faq-group summary::-webkit-details-marker { display:none; }
.faq-group .plus { flex:none; }
.faq-group p { color:var(--muted); padding:0 2.5rem 1.25rem 0; font-size:1rem; max-width:65ch; }
.faq-group p a { color:var(--ink); }
.footer-bottom a { display:inline-flex; align-items:center; min-height:44px; overflow-wrap:anywhere; }
@media(max-width:800px) {
    .faq-grid { grid-template-columns:1fr; gap:2.5rem; }
}
@media(max-width:560px) {
    .faq-group summary { gap:1rem; }
    .faq-group p { padding-right:0; }
    .faq-group details { scroll-margin-top:96px; }
}

/* The optional project conversation shares the site's quiet, text-first design. */
button.text-link { background:transparent; border:0; border-bottom:1px solid currentColor; color:inherit; padding:0 0 5px; }
.form-heading .chat-open { margin-top:1rem; }
#project-chat { width:min(620px,calc(100% - 32px)); max-height:calc(100dvh - 32px); padding:0; border:1px solid var(--line); color:var(--ink); background:var(--paper); overflow:auto; }
#project-chat::backdrop { background:rgb(32 62 53 / .55); }
.chat-top { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; padding:1.5rem; border-bottom:1px solid var(--line); }
.chat-top .eyebrow { margin-bottom:.5rem; font-size:.625rem; }
.chat-top h2 { font-size:1.75rem; }
.chat-close { flex:none; min-height:44px; padding:.5rem; background:transparent; border:1px solid var(--line); color:inherit; }
.chat-body { padding:1.5rem; }
#chat-intro,#chat-mode { font-size:.875rem; color:var(--muted); line-height:1.6; margin-bottom:1rem; }
#chat-mode:empty,#chat-status:empty { display:none; }
.chat-message { padding:1rem; margin:1rem 0; background:var(--mist); white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.6; }
.chat-message strong { display:block; font-size:.75rem; margin-bottom:.4rem; }
.chat-user { background:white; margin-left:1.5rem; border:1px solid var(--line); }
#project-chat label { display:block; font-size:.875rem; font-weight:600; margin:.75rem 0 .5rem; }
#project-chat textarea { width:100%; padding:.75rem; font-size:1rem; border:1px solid var(--line); border-radius:0; color:var(--ink); background:white; resize:vertical; }
#chat-send,#chat-use-notes { width:100%; margin-top:1rem; }
#chat-status { font-size:.875rem; line-height:1.6; margin:1rem 0; }
#chat-review { margin-top:1rem; text-align:left; }
#chat-review-panel { border-top:1px solid var(--line); margin-top:1.5rem; padding-top:1.5rem; }
#chat-review-panel h3 { font-family:var(--serif); font-size:1.5rem; margin-bottom:.75rem; }
#chat-review-panel p { font-size:.875rem; }
#chat-send:disabled { opacity:.6; cursor:wait; }
@media(max-width:380px) { .chat-top,.chat-body { padding:1rem; } .chat-top h2 { font-size:1.5rem; } }
.chat-top { position:sticky; top:0; z-index:2; background:var(--paper); }
