@font-face{
  font-family:'Hanken Grotesk';
  font-style:normal;
  font-weight:300;
  font-display:swap;
  src:url(fonts/hanken-grotesk-300-latin.woff2) format('woff2');
  /* latin subset only — site content is English */
  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;
}
:root{
  --bg:#f7f1e7;            /* ivory */
  --surface:rgba(255,252,245,0.6);
  --surface-strong:rgba(255,252,245,0.85);
  --accent:#4f5f59;        /* primary text — matches logo green */
  --muted:#5f6f68;         /* secondary text — lighter logo green */
  --gold:#9c7637;
  --hover:#c7d9d0;         /* PANTONE 621 C — hover accent */
  --border:#3a322b;
  --line:rgba(44,36,24,0.14);
  --shadow:0 30px 70px rgba(74,60,38,0.18);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{min-height:100%;margin:0}
body{
  margin:0;
  font-family:'Hanken Grotesk',sans-serif;
  font-weight:300;
  background:var(--bg);
  color:var(--accent);
  -webkit-font-smoothing:antialiased;
  line-height:1.6;
  position:relative;
  overflow-x:hidden;
}
body::before{
  content:'';
  position:fixed;
  inset:0;
  background-image:linear-gradient(180deg, transparent 0%, rgba(60,48,28,0.04) 1%, transparent 2%),
                    linear-gradient(90deg, transparent 0%, rgba(60,48,28,0.04) 1%, transparent 2%);
  opacity:0.45;
  pointer-events:none;
}
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  padding:0;
  border:0;
  clip:rect(0 0 0 0);
  overflow:hidden;
  white-space:nowrap;
}
.site-header{
  position:fixed;
  inset:0 0 auto 0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  padding:1.5rem 2.5rem;
  z-index:20;
  background:rgba(252,248,240,0.62);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line);
  transition:background 0.35s ease, transform 0.35s ease;
}
.menu-toggle{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:2.9rem;
  height:2.9rem;
  border:none;
  border-radius:12px;
  background:none;
  color:var(--accent);
  cursor:pointer;
  transition:transform 200ms ease, background 200ms ease, color 200ms ease;
}
.menu-toggle:hover{
  transform:translateY(-1px);
  background:var(--hover);
  color:var(--accent);
}
.menu-toggle svg{
  width:1.2rem;
  height:1.2rem;
}
.site-header.scrolled{
  background:rgba(252,248,240,0.9);
  transform:translateY(-2px);
}
.nav{
  position:fixed;
  top:5.9rem;
  left:2.5rem;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:1rem;
  min-width:240px;
  background:rgba(252,248,240,0.97);
  backdrop-filter:blur(16px);
  border:1px solid var(--line);
  padding:1.4rem 1.2rem;
  border-radius:22px;
  box-shadow:0 24px 60px rgba(74,60,38,0.18);
  opacity:0;
  pointer-events:none;
  transform:translateY(-12px);
  transition:opacity 220ms ease, transform 220ms ease;
  z-index:25;
}
body.menu-open .nav{
  opacity:1;
  pointer-events:auto;
  transform:translateY(0);
}
.nav a{
  color:var(--muted);
  text-decoration:none;
  font-size:0.95rem;
  font-weight:300;
  text-transform:uppercase;
  letter-spacing:0.26em;
  padding:0.8rem 1.1rem;
  background:rgba(44,36,24,0.04);
  border-radius:16px;
  width:100%;
  transition:color 200ms ease, background 200ms ease;
}
.nav a:hover{color:var(--accent);background:var(--hover);}
/* Current page: reuse the hover treatment as a resting state so the nav
   orients you without introducing new decoration. */
.nav a[aria-current="page"]{
  color:var(--accent);
  background:var(--hover);
}
/* Collapsible Services group */
.nav-group{
  width:100%;
}
.nav-group summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  color:var(--muted);
  font-size:0.95rem;
  font-weight:300;
  text-transform:uppercase;
  letter-spacing:0.26em;
  padding:0.8rem 1.1rem;
  background:rgba(44,36,24,0.04);
  border-radius:16px;
  transition:color 200ms ease, background 200ms ease;
}
.nav-group summary::-webkit-details-marker{display:none;}
.nav-group summary::after{
  content:'+';
  font-size:1.2rem;
  line-height:1;
  color:var(--muted);
  transition:transform 240ms ease, color 200ms ease;
}
.nav-group summary:hover{color:var(--accent);background:var(--hover);}
.nav-group summary:hover::after{color:var(--accent);}
.nav-group[open] summary{
  color:var(--accent);
  background:var(--hover);
  border-bottom-left-radius:0;
  border-bottom-right-radius:0;
}
.nav-group[open] summary::after{transform:rotate(45deg);}
.nav-group__panel{
  display:flex;
  flex-direction:column;
  gap:0.5rem;
  padding:0.5rem;
  background:rgba(44,36,24,0.06);
  border:1px solid var(--line);
  border-top:none;
  border-radius:0 0 16px 16px;
  animation:navPanelReveal 260ms ease;
}
@keyframes navPanelReveal{
  from{opacity:0;transform:translateY(-6px);}
  to{opacity:1;transform:translateY(0);}
}
.nav-group__panel a{
  font-size:0.82rem;
  letter-spacing:0.2em;
  padding:0.7rem 0.9rem;
  background:rgba(255,253,247,0.55);
}
.hero{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:10rem 2rem 6rem;
  position:relative;
  overflow:hidden;
}
.hero::before{
  content:'';
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 20% 20%, rgba(255,253,247,0.45), transparent 18%),
              radial-gradient(circle at 80% 35%, rgba(156,118,55,0.1), transparent 14%);
  pointer-events:none;
}
.hero-inner{
  position:relative;
  z-index:1;
  max-width:860px;
  text-align:center;
  margin:0 auto;
}
.hero-logo{
  width:min(520px,100%);
  height:auto;
  display:block;
  margin:0 auto 2rem;
}
.hero-eyebrow{
  font-size:0.85rem;
  letter-spacing:0.35em;
  text-transform:uppercase;
  color:var(--muted);
  line-height:2;
  margin-bottom:1.4rem;
}
.hero-title{
  font-family:'Hanken Grotesk',sans-serif;
  font-size:clamp(2.8rem, 5vw, 4.8rem);
  line-height:0.95;
  margin:0 auto;
  max-width:12ch;
}
.links{
  margin-top:2.5rem;
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:1.2rem;
}
.cta{
  color:var(--bg);
  background:var(--accent);
  text-decoration:none;
  padding:1rem 2rem;
  border-radius:999px;
  font-weight:300;
  letter-spacing:0.08em;
  text-transform:uppercase;
  transition:transform 200ms ease, background 200ms ease;
}
.cta:visited,
.cta:active,
.cta:focus{color:var(--bg);background:var(--accent)}
.cta:hover{transform:translateY(-2px);background:var(--hover);color:var(--accent)}
.cta--header{
  display:inline-block;
  color:var(--accent);
  text-decoration:none;
  font-size:0.8rem;
  font-weight:300;
  letter-spacing:0.22em;
  text-transform:uppercase;
  white-space:nowrap;
  padding:0.55rem 0.25rem;
  border-top:1px solid currentColor;
  border-bottom:1px solid currentColor;
  transition:color 200ms ease, border-color 200ms ease, background 200ms ease;
}
.cta--header:hover,
.cta--header:focus{
  color:var(--accent);
  background:var(--hover);
}
.social{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:1rem;
}
.social a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:2.6rem;
  height:2.6rem;
  color:var(--muted);
  text-decoration:none;
  border-radius:50%;
  background:rgba(255,253,247,0.6);
  border:1px solid var(--line);
  transition:background 200ms ease, color 200ms ease, transform 200ms ease;
}
.social a:hover{
  color:var(--accent);
  background:var(--hover);
  transform:translateY(-1px);
}
.social a svg{
  width:1.1rem;
  height:1.1rem;
  fill:currentColor;
}
.section{
  padding:7rem 2rem;
  opacity:0;
  transform:translateY(24px);
  transition:opacity 0.85s ease, transform 0.85s ease;
}
.contact-hint{
  margin-top:1.25rem;
  color:var(--muted);
  font-size:0.96rem;
}
.contact-modal{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  opacity:0;
  pointer-events:none;
  transform:translateY(16px);
  transition:opacity 240ms ease, transform 240ms ease;
  z-index:40;
}
.contact-modal--open{
  opacity:1;
  pointer-events:auto;
  transform:translateY(0);
}
.contact-modal__overlay{
  position:absolute;
  inset:0;
  background:rgba(13,10,8,0.8);
  backdrop-filter:blur(10px);
}
.contact-modal__panel{
  position:relative;
  width:min(640px,calc(100% - 3rem));
  max-height:min(85vh,760px);
  max-height:min(85dvh,760px);
  background:rgba(255,250,242,0.96);
  border-radius:28px;
  padding:2rem;
  box-shadow:0 40px 120px rgba(0,0,0,0.32);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.contact-modal__close{
  position:absolute;
  top:1rem;
  right:1rem;
  width:2.5rem;
  height:2.5rem;
  border:none;
  border-radius:50%;
  background:rgba(13,10,8,0.1);
  color:var(--border);
  font-size:1.4rem;
  cursor:pointer;
  z-index:2;
}
.contact-modal__content{
  position:relative;
  z-index:1;
  min-height:0;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}
.contact-modal__content h2{
  margin-top:0;
  color:#0d0a08;
}
.contact-modal__content p{
  margin:0.75rem 0 2rem;
  color:#4b4235;
}
body.modal-open{
  overflow:hidden;
}
.section.reveal{
  opacity:1;
  transform:none;
}
.container{
  max-width:1080px;
  margin:0 auto;
}
.section h2{
  font-family:'Hanken Grotesk',sans-serif;
  font-size:3rem;
  margin-bottom:0.8rem;
  color:var(--accent);
  max-width:14ch;
}
.section p{
  color:var(--muted);
  max-width:62ch;
  font-size:1.05rem;
}
#about{
  text-align:center;
}
#about p{
  margin-left:auto;
  margin-right:auto;
  font-weight:300;
  letter-spacing:0.01em;
}
@media (min-width:901px){
  #about p{
    font-size:1.05rem;
    line-height:1.65;
    max-width:60ch;
  }
}
.parking-map{
  display:block;
  width:100%;
  max-width:560px;
  height:auto;
  margin:2.5rem 0;
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:var(--shadow);
}
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:1.8rem;
  margin-top:2.5rem;
}
.grid article{
  background:var(--surface);
  border:1px solid var(--line);
  padding:2.2rem;
  border-radius:22px;
  box-shadow:var(--shadow);
  backdrop-filter:blur(8px);
}
.grid h3{
  font-family:'Hanken Grotesk',sans-serif;
  font-size:1.75rem;
  margin:0 0 1rem;
}
.grid p{
  margin:0;
}
.alt{
  background:linear-gradient(180deg, rgba(255,252,245,0.35), rgba(255,252,245,0));
}
.faq-list{
  margin-top:2.5rem;
  display:flex;
  flex-direction:column;
  gap:1rem;
  max-width:760px;
}
.faq-item{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:18px;
  padding:0 1.5rem;
  box-shadow:var(--shadow);
}
.faq-item summary{
  list-style:none;
  cursor:pointer;
  padding:1.3rem 0;
  font-size:1.1rem;
  color:var(--accent);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  transition:color 200ms ease;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{
  content:'+';
  font-size:1.4rem;
  line-height:1;
  color:var(--muted);
  transition:transform 240ms ease, color 200ms ease;
}
.faq-item[open] summary::after{transform:rotate(45deg);}
.faq-item summary:hover{color:var(--hover);}
.faq-item p{
  margin:0 0 1.3rem;
  color:var(--muted);
}
.contact-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:2rem;
}
.form-field{
  display:flex;
  flex-direction:column;
  gap:0.65rem;
  margin-bottom:1.35rem;
}
.form-field label{
  font-size:0.88rem;
  text-transform:uppercase;
  letter-spacing:0.18em;
  color:var(--muted);
}
.form-field input,
.form-field textarea{
  border:1px solid rgba(44,36,24,0.18);
  background:rgba(255,253,247,0.85);
  color:#0d0a08;
  border-radius:16px;
  padding:1.05rem 1.2rem;
  font:inherit;
  min-width:0;
}
.form-field input::placeholder,
.form-field textarea::placeholder{
  color:rgba(13,10,8,0.45);
}
.form-field input:focus,
.form-field textarea:focus{
  outline:none;
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(156,118,55,0.18);
}
.submit-btn{
  background:var(--accent);
  color:var(--bg);
  border:none;
  border-radius:999px;
  padding:1rem 2rem;
  text-transform:uppercase;
  letter-spacing:0.18em;
  font-weight:300;
  cursor:pointer;
  transition:transform 180ms ease, background 180ms ease;
}
.submit-btn:hover{
  transform:translateY(-1px);
  background:var(--hover);
  color:var(--accent);
}
.footer-content{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  text-align:center;
  gap:0.5rem 1rem;
  margin:0 auto;
  color:var(--muted);
}
.footer-content p{
  margin:0;
}
.footer-legal{
  margin-top:0.75rem;
}
.footer-content a{
  color:var(--accent);
  text-decoration:none;
}
.footer-copy{
  margin-top:1rem;
  color:var(--muted);
}
.contact-card{
  background:var(--surface);
  border:1px solid var(--line);
  padding:3rem;
  border-radius:28px;
  box-shadow:var(--shadow);
  max-width:720px;
}
.contact-card h2{
  margin-top:0;
}
.contact-card a{
  color:var(--accent);
  text-decoration:underline;
}
.site-footer{
  padding:3rem 2rem;
  text-align:center;
  color:var(--muted);
  font-size:0.95rem;
}
.hero-inner{opacity:0;transform:translateY(18px);animation:enter 1100ms ease-out 180ms forwards}
@keyframes enter{to{opacity:1;transform:none}}
.legal{
  padding:9rem 2rem 5rem;
}
.legal .container{
  max-width:760px;
}
/* Echoes the homepage hero's entrance so subpages arrive the same way. */
@media (prefers-reduced-motion: no-preference){
  .legal .container{
    opacity:0;
    transform:translateY(14px);
    animation:enter 780ms cubic-bezier(0.22,1,0.36,1) 120ms forwards;
  }
}
.legal h1{
  font-size:clamp(2.2rem,4vw,3rem);
  margin:0 0 0.4rem;
}
.legal .legal-updated{
  color:var(--muted);
  font-size:0.9rem;
  margin:0 0 2.5rem;
}
.legal h2{
  font-size:1.35rem;
  margin:2.4rem 0 0.6rem;
  color:var(--accent);
}
.legal h3{
  font-size:1.05rem;
  margin:1.8rem 0 0.4rem;
  color:var(--accent);
}
.legal p,
.legal li{
  color:var(--muted);
  font-size:1.02rem;
}
.legal ul{
  padding-left:1.2rem;
  color:var(--muted);
}
.legal li{
  margin:0.4rem 0;
}
.legal .legal-caps{
  font-size:0.92rem;
  letter-spacing:0.01em;
}
.legal a{
  color:var(--accent);
}
.legal .back-link{
  display:inline-block;
  margin-bottom:2.5rem;
  text-transform:uppercase;
  letter-spacing:0.18em;
  font-size:0.8rem;
  text-decoration:none;
  border-bottom:1px solid currentColor;
  padding-bottom:0.25rem;
  transition:color 200ms ease;
}
.legal .back-link:hover{color:var(--hover);}
.legal .back-link:last-child{
  margin-top:3.5rem;
  margin-bottom:1rem;
}
.brand-list{
  margin-top:2.5rem;
  display:grid;
  gap:1.5rem;
}
.brand-item{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:18px;
  padding:2rem 2.2rem;
  box-shadow:var(--shadow);
}
.brand-item h2{
  margin:0 0 0.3rem;
  font-size:1.5rem;
  color:var(--accent);
}
.brand-item .brand-origin{
  margin:0 0 0.9rem;
  font-size:0.78rem;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:var(--muted);
}
.brand-item p{
  margin:0;
  color:var(--muted);
}
/* ---- Contact page ---- */
.contact-page h1{
  font-size:clamp(1.45rem,2.4vw,1.8rem);
}
.contact-page p,
.contact-page li{
  font-size:1.05rem;
}
.contact-page .legal-updated{
  font-size:0.78rem;
  margin-bottom:2rem;
}
.contact-lines{
  margin-top:2.5rem;
  border-top:1px solid var(--line);
}
.contact-line{
  position:relative;
  display:grid;
  grid-template-columns:7rem 1fr;
  align-items:baseline;
  gap:1.25rem;
  padding:1.2rem 0.25rem;
  border-bottom:1px solid var(--line);
  text-decoration:none;
  color:var(--accent);
}
.contact-line::after{
  content:'';
  position:absolute;
  left:0;
  bottom:-1px;
  width:100%;
  height:1px;
  background:var(--gold);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 420ms cubic-bezier(0.22,1,0.36,1);
}
a.contact-line:hover::after{transform:scaleX(1);}
.contact-line__label{
  font-size:1.05rem;
  line-height:1.65;
  color:var(--muted);
}
.contact-line__value{
  font-size:1.05rem;
  line-height:1.65;
  transition:transform 420ms cubic-bezier(0.22,1,0.36,1);
}
.contact-line__value--sm{
  color:var(--muted);
}
a.contact-line:hover .contact-line__value{transform:translateX(0.4rem);}
.gift-card{
  position:relative;
  margin-top:3.5rem;
  padding:2.4rem;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:24px;
  box-shadow:var(--shadow);
  overflow:hidden;
}
.gift-card__eyebrow{
  margin:0 0 0.8rem;
  text-transform:uppercase;
  letter-spacing:0.22em;
  font-size:0.62rem;
  color:var(--gold);
}
.gift-card p:last-child{margin-bottom:0;}
.gift-card a{
  color:var(--accent);
  text-decoration:none;
  border-bottom:1px solid var(--gold);
  padding-bottom:1px;
  transition:color 200ms ease, border-color 200ms ease;
}
.gift-card a:hover{
  color:var(--gold);
  border-color:currentColor;
}
/* Match the About paragraph scale on desktop (see #about p) */
@media (min-width:901px){
  .contact-page p,
  .contact-page li,
  .contact-line__value{
    font-size:1.05rem;
    line-height:1.65;
  }
  .contact-page .legal-updated{
    font-size:0.78rem;
  }
}
@media (max-width:900px){
  .site-header{padding:1rem 1.5rem;}
  .nav{
    top:5.4rem;
    left:1.5rem;
    right:1.5rem;
    min-width:0;
  }
  .hero-title{max-width:100%;}
}
@media (max-width:680px){
  .hero{padding:8rem 1.5rem 4rem;}
  .hero-eyebrow{font-size:0.78rem;letter-spacing:0.28em;}
  .hero-title{font-size:2.8rem;}
  .hero-logo{width:min(380px,92vw);}
  .site-header{justify-content:space-between;gap:0.75rem;}
  .cta--header{padding:0.45rem 0.2rem;font-size:0.66rem;letter-spacing:0.16em;}
  .grid{grid-template-columns:1fr;}
  .section{padding:5.5rem 1.5rem;}
  .contact-modal__panel{
    width:calc(100% - 2rem);
    max-height:90vh;
    max-height:90dvh;
    padding:1.5rem;
  }
  .contact-line{
    grid-template-columns:1fr;
    gap:0.5rem;
    padding:1.5rem 0.25rem;
  }
  .gift-card{padding:2.2rem 1.6rem;}
}

