/* apple-design: warm architectural identity, readable hierarchy and immediate control feedback. */
:root {
  font-size: 100%;
  --content: 80rem;
  --text-small: .8125rem;
  --text-caption: .75rem;
  --text-body: .9375rem;
  --header-height: 5.25rem;
}
body { font-size: 1rem; font-optical-sizing: auto; }
html { scroll-padding-top: calc(var(--sticky-offset, var(--header-height)) + 1rem); }
.hero-title { flex-wrap: wrap; }
.hero-title > span { max-width: 100%; white-space: normal; }
.header-row { flex-wrap: wrap; }
.brand { min-width: 0; flex-shrink: 1; }
.brand-name { white-space: normal; overflow-wrap: anywhere; }
.header-end, .menu-toggle, .mobile-header-request { flex-shrink: 0; }
.contact-phone, .footer-contact-phone { overflow-wrap: anywhere; white-space: normal; min-height: 2.75rem; }
.header-phone { min-height: 2.75rem; display: inline-flex; align-items: center; }
.footer-name { font-size: clamp(1.875rem, 3vw, 2.375rem); overflow-wrap: anywhere; }
.form-field, .contact-information, .contact-information > div { min-width: 0; }
.container { width: min(var(--content), calc(100% - 6rem)); }
.site-header {
  background: var(--header-surface); border-bottom: 0;
  box-shadow: 0 1px 12px rgb(56 41 32 / 5%);
}
.header-row { min-height: var(--header-height); }
.site-header.is-scrolled { box-shadow: 0 6px 24px rgb(56 41 32 / 10%); }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site-header { background: rgb(242 236 228 / 94%); backdrop-filter: blur(16px) saturate(110%); -webkit-backdrop-filter: blur(16px) saturate(110%); }
  .mobile-menu { background: rgb(252 249 244 / 97%); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }
}
.brand-name { font-size: 2.25rem; }
.brand-caption { font-size: .625rem; letter-spacing: .09em; }
.desktop-nav, .header-phone, .header-contact { font-size: .875rem; }
.desktop-nav { gap: 1.375rem; }
.desktop-nav a { min-height: 2.75rem; }
.desktop-nav a[aria-current='location'] { font-weight: 600; }
.desktop-nav a[aria-current='location']::after { transform: scaleX(1); }
.mobile-menu a[aria-current='location'] { color: var(--ink); font-weight: 600; }
.hero-title { font-size: clamp(3rem, min(4.4vw, 8vh), 4.75rem); letter-spacing: -.045em; }
.hero-title .accent { letter-spacing: -.025em; }
.hero-description { font-size: clamp(.9375rem, 1.17vw, 1.125rem); line-height: 1.6; }
.hero-actions .button { font-size: .875rem; min-height: 3rem; }
.hero-fact { font-size: .8125rem; padding: 1rem 1.125rem; }
.button { font-size: .9375rem; }
.text-link { font-size: .875rem; min-height: 2.75rem; }
.map-load { font-size: .875rem; min-height: 2.75rem; }
.section-title { font-size: clamp(2.25rem, 3.8vw, 3.375rem); letter-spacing: -.035em; }
.eyebrow { font-size: .75rem; letter-spacing: .1em; }
.section-intro, .materials-description, .conversation-lead, .request-lead, .contact-description { font-size: .9375rem; line-height: 1.6; }
.section-footnote, .directions-caption, .conversation-note { font-size: .8125rem; }
.project-card::before, .direction-card::before { border-color: rgb(110 92 78 / 28%); }
.project-card-title { font-size: 1.25rem; letter-spacing: -.025em; }
.project-card-meta { font-size: .8125rem; border-color: transparent; background: #f4eee6; line-height: 1.55; }
.project-card-arrow { border: 0; background: var(--soft); width: 2rem; height: 2rem; }
.project-trigger { overflow: hidden; border-radius: 3px; }
.filter-button { font-size: .875rem; min-height: 2.75rem; }
.filter-count, .portfolio-summary, .rail-position { font-size: .75rem; }
.direction-card h3 { font-size: clamp(1.25rem, 1.65vw, 1.4375rem); letter-spacing: -.025em; }
.direction-card p { font-size: .875rem; line-height: 1.6; }
.direction-card:hover::before { border-color: rgb(110 92 78 / 28%); box-shadow: 0 3px 12px rgb(56 41 32 / 3%); }
.direction-photo img, .materials-photo img { transition: none; }
.material-types h3 { font-size: .9375rem; line-height: 1.4; }
.material-types p, .topic p { font-size: .875rem; line-height: 1.55; }
.topic h3 { font-size: 1.125rem; letter-spacing: -.025em; }
.topic-num { font-size: .75rem; }
.request-explanation, .request-call { font-size: .875rem; }
.form-field label, .request-details summary { font-size: .9375rem; }
.field-required, .field-optional, .field-hint, .request-details small, .form-submit-row p, .form-privacy-link, .form-preview-note { font-size: .75rem; }
.form-consent label, .field-error, .form-status { font-size: .8125rem; line-height: 1.6; }
.form-field input, .form-field select, .form-field textarea { font-size: 1rem; min-height: 2.875rem; }
.contact-information .eyebrow, .contact-map-footnote, .map-note { font-size: .75rem; }
.contact-address { font-size: .9375rem; }
.contact-hours, .contact-action-name { font-size: .875rem; }
.contact-action small { font-size: .75rem; }
.contact-phone { font-size: clamp(1.375rem, 2.05vw, 1.75rem); }
.footer-description, .footer-contacts p, .footer-navigation, .footer-social { font-size: .875rem; line-height: 1.6; }
.footer-meta, .footer-legal { font-size: .75rem; }
.footer-navigation a, .footer-social, .footer-top, .footer-legal-links a { min-height: 2.75rem; display: inline-flex; align-items: center; }
.footer-navigation { gap: .25rem; }
.project-viewer-description, .project-viewer-facts dd { font-size: .9375rem; line-height: 1.6; }
.project-viewer-facts dt, .gallery-count, .gallery-caption { font-size: .8125rem; }
.project-viewer-title { font-size: 2rem; letter-spacing: -.025em; }
.project-viewer-bottom .text-link, .project-next { font-size: .875rem; min-height: 2.75rem; }
.lightbox-close, .icon-button { min-width: 2.75rem; min-height: 2.75rem; font-size: .8125rem; }
.rail-buttons .icon-button { min-width: 2.75rem; min-height: 2.75rem; }
.icon-button { font-size: 1.25rem; }
.gallery-image-state { position: absolute; inset: 0; z-index: 3; padding: 1rem; background: var(--surface); display: flex; flex-direction: column; gap: 1rem; align-items: center; justify-content: center; text-align: center; font-size: .875rem; }
.project-viewer { overscroll-behavior: contain; }
button:focus-visible, a:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; }
.policy-main p, .policy-main li { font-size: 1rem; line-height: 1.75; }
.policy-main h1 { font-size: clamp(1.875rem, 4vw, 3rem); line-height: 1.15; letter-spacing: -.025em; overflow-wrap: break-word; }
.policy-main h2 { font-size: 1.375rem; }
.policy-back { min-height: 2.75rem; font-size: .875rem; }
@media (max-height: 740px) and (min-width: 1101px) {
  .hero-title { font-size: clamp(2.875rem, min(4.4vw, 7.4vh), 4.125rem); }
  .hero-description { font-size: .9375rem; }
}
@media (max-width: 1190px) and (min-width: 901px) {
  .brand-name { font-size: 2.0625rem; }
  .desktop-nav { gap: 1rem; }
}
@media (max-width: 1100px) {
  .hero-title { font-size: clamp(2.625rem, 5.2vw, 3.625rem); }
  .hero-description { font-size: .9375rem; }
}
@media (max-width: 900px) {
  :root { --header-height: 4.25rem; }
  .container { width: calc(100% - 3rem); }
  .brand-name { font-size: 1.75rem; }
  .brand-caption { font-size: .625rem; }
  .menu-toggle, .mobile-header-request { min-height: 2.75rem; min-width: 2.75rem; }
  .menu-toggle { font-size: .875rem; }
  .mobile-header-request { font-size: .875rem; padding: .5rem .75rem; }
  .mobile-menu:not([hidden]) {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 1;
    padding: .75rem 1.5rem 1rem; max-height: calc(100dvh - var(--sticky-offset, var(--header-height)));
    border: 1px solid var(--line); border-top: 0; box-shadow: 0 18px 30px rgb(56 41 32 / 12%);
    transform-origin: 95% 0;
  }
  .mobile-menu > a { min-height: 2.75rem; font-size: 1rem; padding-block: .625rem; }
}
@media (max-width: 760px) {
  html { scroll-padding-top: calc(var(--sticky-offset, var(--header-height)) + .75rem); }
  .section-title, .materials-copy .section-title, .contact-heading .section-title { font-size: 2rem; line-height: 1.12; }
  .hero-title { font-size: clamp(2.5rem, 8.6vw, 3.75rem); letter-spacing: -.035em; }
  .hero-title .accent { line-height: 1; }
  .hero-description { font-size: .875rem; }
  .hero-fact { font-size: .75rem; line-height: 1.45; padding: .75rem .5rem; }
  .section-intro, .directions-heading .section-intro, .materials-description, .conversation-lead, .request-lead, .contact-description { font-size: .875rem; line-height: 1.55; }
  .section-footnote, .directions-caption, .conversation-note, .rail-position { font-size: .75rem; line-height: 1.5; }
  .section-footnote { flex-direction: column; gap: .25rem; }
  #selected-works .featured-grid .project-card .project-card-title { font-size: 1.1875rem; line-height: 1.35; }
  .project-card-topline { padding: .875rem .875rem 0; }
  .project-card-meta { font-size: .8125rem; margin: .75rem .875rem .875rem; padding: .5rem .625rem; }
  .filter-button { font-size: .8125rem; padding: .5rem .625rem; }
  .filter-count { font-size: .75rem; margin-left: .25rem; }
  .direction-card h3 { font-size: 1.25rem; line-height: 1.3; }
  .direction-card p { font-size: .875rem; }
  .direction-copy { padding: .875rem .75rem; }
  .directions-caption { margin-top: .875rem; }
  .material-types h3 { font-size: .875rem; }
  .material-types p { font-size: .8125rem; margin-top: .375rem; }
  .topic { padding-block: .75rem; }
  .topic h3 { font-size: 1rem; line-height: 1.4; }
  .topic p { font-size: .8125rem; line-height: 1.5; }
  .request-copy .section-title { font-size: 2rem; }
  .request-lead { margin-top: .75rem; }
  .form-field label, .request-details summary { font-size: .875rem; }
  .field-required, .field-optional, .field-hint, .request-details small { font-size: .75rem; }
  .form-consent label { font-size: .8125rem; line-height: 1.5; }
  .form-submit-row .button { min-height: 2.875rem; font-size: .9375rem; }
  .form-preview-note, .form-privacy-link { font-size: .75rem; }
  .form-status { font-size: .875rem; }
  .contact-information { gap: .875rem; padding: 1rem; }
  .contact-information .eyebrow { font-size: .75rem; }
  .contact-city { font-size: 1.625rem; }
  .contact-address { display: block; font-size: .8125rem; margin: .25rem 0 0; }
  .contact-phone { font-size: clamp(1rem, 4vw, 1.125rem); letter-spacing: -.025em; }
  .contact-hours { font-size: .8125rem; line-height: 1.5; }
  .contact-action { min-height: 3rem; padding: .75rem; }
  .contact-action-name, .contact-map-footnote, .map-note, .map-close, .map-status { font-size: .75rem; }
  .map-close { min-height: 2.75rem; }
  .contact-map, .contact-map:has(.map-frame) { min-height: 10rem; }
  .project-viewer-title { font-size: 1.75rem; }
  .project-viewer-description, .project-viewer-facts dd { font-size: .875rem; }
  .project-viewer-bottom .text-link, .project-next { font-size: .875rem; }
}
@media (max-width: 640px) {
  :root { --header-height: 4rem; }
  .container { width: calc(100% - 2.5rem); }
  .header-row { width: calc(100% - 2rem); gap: .375rem; }
  .brand-name { font-size: clamp(1.1rem, 5.5vw, 1.5rem); letter-spacing: -.025em; }
  .brand-caption { font-size: .625rem; }
  .menu-toggle { min-width: 2.75rem; padding: .5rem; }
  .mobile-header-request { font-size: .8125rem; padding-inline: .5rem; gap: .375rem; }
  .mobile-header-request .arrow { font-size: .875rem; }
  .hero-title { font-size: clamp(2.375rem, 10.6vw, 3.625rem); }
  .hero-description { font-size: .875rem; line-height: 1.55; }
  .hero-actions .button { font-size: .875rem; min-height: 2.875rem; padding: .625rem .75rem; gap: .625rem; }
  .hero-actions { gap: .5rem; }
  .hero-fact { font-size: .75rem; }
}
@media (max-width: 420px) {
  .brand-caption { display: none; }
  .hero-baseline { grid-template-columns: 1fr; }
  .hero-fact { padding: .5rem .75rem; font-size: .75rem; }
  .hero-fact + .hero-fact { border-left: 0; border-top: 1px solid var(--line); }
}
.has-scaled-text .hero-stage { height: auto; display: flex; flex-direction: column; padding-top: 2rem; }
.has-scaled-text .hero-scene { position: relative; left: auto; bottom: auto; transform: none; width: calc(100% - 2rem); margin: 1.5rem auto 0; }
.has-scaled-text .hero-actions { flex-wrap: wrap; margin-bottom: 1.5rem; }
.has-scaled-text .header-row { gap: .625rem; padding-block: .5rem; }
.has-scaled-text .brand { flex: 1 0 100%; }
.has-scaled-text .brand-caption { white-space: normal; }
.has-scaled-text .desktop-nav, .has-scaled-text .header-end { display: none; }
.has-scaled-text .menu-toggle, .has-scaled-text .mobile-header-request { display: inline-flex; font-size: .875rem; }
.has-scaled-text .mobile-header-request { margin-left: auto; }
.has-scaled-text .mobile-menu:not([hidden]) {
  display: flex; flex-direction: column; position: absolute; top: 100%; left: 0; right: 0;
  padding: .75rem 1.5rem; overflow-y: auto; max-height: calc(100dvh - var(--sticky-offset, var(--header-height)));
  border: 1px solid var(--line); box-shadow: 0 18px 30px rgb(56 41 32 / 12%); transform-origin: 95% 0;
}
.has-scaled-text .mobile-menu > a { min-height: 2.75rem; font-size: 1rem; padding-block: .625rem; }
.has-scaled-text .form-contact-fields { grid-template-columns: 1fr; }
.has-scaled-text .contact-information { grid-template-columns: 1fr; }
.has-scaled-text .contact-information > div:first-child { grid-column: auto; grid-row: auto; }
.has-scaled-text .hero-baseline { grid-template-columns: 1fr; }
.has-scaled-text .hero-fact + .hero-fact { border-left: 0; border-top: 1px solid var(--line); }
@media (prefers-reduced-transparency: reduce) {
  .site-header, .mobile-menu { background: var(--header-surface); backdrop-filter: none; -webkit-backdrop-filter: none; }
}
@media (prefers-contrast: more) {
  :root { --muted: #382920; --line: #786451; }
  .site-header, .mobile-menu { background: var(--surface); backdrop-filter: none; -webkit-backdrop-filter: none; }
  .project-card::before, .direction-card::before, .material-types, .conversation-topics, .request-details { border-color: var(--ink); }
  .project-card-meta { border-color: var(--ink); }
  .eyebrow, .footer-description, .footer-contacts p, .footer-meta, .footer-legal { font-weight: 500; }
}
@media (prefers-reduced-motion: reduce) {
  .project-card-photo img { scale: 1 !important; }
}
@media (forced-colors: active) {
  .button, .filter-button, .icon-button, .project-card::before, .direction-card::before { border: 1px solid ButtonText; }
  .site-header { border-bottom: 1px solid CanvasText; }
  .is-current { text-decoration: underline; }
}

/* Compact closing section: keep useful destinations, reduce duplicated visual weight. */
.site-footer { padding: 2rem 0 1rem; }
.footer-layout { grid-template-columns: 1.15fr 1fr 1fr; gap: 2rem; align-items: start; }
.footer-name { font-size: clamp(1.75rem, 2.3vw, 2.125rem); }
.footer-description { margin-top: .5rem; font-size: .8125rem; line-height: 1.55; }
.footer-navigation { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 .75rem; }
.footer-navigation a { min-height: 2.5rem; font-size: .8125rem; }
.footer-contacts { display: block; grid-column: auto; }
.footer-contacts p { margin-top: .125rem; font-size: .8125rem; }
.footer-social { margin-top: 0; font-size: .8125rem; }
.footer-meta { margin-top: 1rem; padding-top: .75rem; gap: .5rem 1.5rem; }
.footer-legal { margin-top: .25rem; gap: .25rem 1rem; }
.footer-legal-links { gap: 0 1.25rem; }
.form-contact-fields { align-items: start; }
@media (max-width: 900px) {
  .footer-layout { grid-template-columns: 1fr 1fr; gap: 1rem 1.5rem; }
  .footer-contacts { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 0 1.5rem; }
  .footer-contacts p { margin: 0; }
}
@media (max-width: 640px) {
  .header-row { width: calc(100% - 1.5rem); gap: .375rem; }
  .mobile-header-request { font-size: .75rem; padding: .5rem; white-space: nowrap; }
  .site-footer { padding: 1.25rem 0 .75rem; }
  .footer-layout { display: flex; flex-direction: column; align-items: stretch; gap: .375rem; }
  .footer-name { font-size: 1.75rem; }
  .footer-description { display: none; }
  .footer-navigation { display: flex; flex-wrap: wrap; gap: 0 1rem; }
  .footer-navigation a { min-height: 2.75rem; }
  .footer-contacts { display: flex; flex-wrap: wrap; gap: 0 1rem; }
  .footer-contact-phone { font-size: 1rem; }
  .footer-contacts p { order: 1; flex-basis: 100%; }
  .footer-meta { flex-direction: row; flex-wrap: wrap; align-items: baseline; margin-top: .75rem; padding-top: .75rem; gap: .25rem 1rem; font-size: .6875rem; }
  .footer-legal { flex-direction: row; align-items: center; gap: 0 .75rem; font-size: .6875rem; }
  .footer-legal-links { flex-direction: row; flex-wrap: wrap; gap: 0 .75rem; }
  .footer-legal-links a, .footer-top { min-height: 2.75rem; }
  .form-contact-fields { gap: .75rem; }
}
.has-scaled-text .footer-layout { display: flex; flex-direction: column; gap: 1rem; }
.has-scaled-text .footer-navigation { display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.has-scaled-text .footer-contacts { display: block; }
.has-scaled-text .footer-meta, .has-scaled-text .footer-legal { flex-wrap: wrap; }
