/* ==========================================================================
   Tredenwith House — design system
   Palette drawn from the house itself: sage render, slate plaque, granite.
   ========================================================================== */

@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400 700;font-display:swap;src:url('../fonts/cormorant-garamond.woff2') format('woff2');}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400 700;font-display:swap;src:url('../fonts/cormorant-garamond-italic.woff2') format('woff2');}
@font-face{font-family:'Karla';font-style:normal;font-weight:400 700;font-display:swap;src:url('../fonts/karla.woff2') format('woff2');}

:root{
  --slate:#25303F;        /* deep slate navy — hero wash, footer */
  --sage:#76866B;         /* sage band */
  --sage-deep:#5F6E55;
  --sage-pale:#B8C2AE;    /* tints, ticks */
  --chalk:#F7F5F0;        /* page background */
  --white:#FFFFFF;
  --granite:#8A8580;      /* rules, captions */
  --ink:#3A424D;          /* body text */
  --brass:#A07C42;        /* links, accents */
  --brass-dark:#7E6134;

  --serif:'Cormorant Garamond', 'Times New Roman', serif;
  --sans:'Karla', 'Segoe UI', Arial, sans-serif;

  --wrap:1120px;
  --wrap-narrow:760px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--sans);
  font-size:1.0625rem;
  line-height:1.7;
  color:var(--ink);
  background:var(--chalk);
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block;}
a{color:var(--brass);text-underline-offset:3px;}
a:hover{color:var(--brass-dark);}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:3px solid var(--brass);outline-offset:2px;border-radius:2px;
}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--slate);color:#fff;padding:.6rem 1rem;z-index:100;}
.skip-link:focus{left:0;}

h1,h2,h3{font-family:var(--serif);font-weight:600;color:var(--slate);line-height:1.2;margin:0 0 .6em;}
h1{font-size:clamp(2.1rem,5vw,3.4rem);}
h2{font-size:clamp(1.7rem,3.5vw,2.4rem);letter-spacing:.06em;text-transform:uppercase;font-weight:500;}
h3{font-size:1.45rem;}
p{margin:0 0 1.15em;}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 1.25rem;}
.wrap--narrow{max-width:var(--wrap-narrow);}

.kicker{
  font-family:var(--serif);font-style:italic;font-weight:500;
  font-size:1.35rem;color:var(--brass);display:block;margin-bottom:.4rem;
  letter-spacing:.02em;
}
.eyebrow{
  font-size:.8rem;letter-spacing:.32em;text-transform:uppercase;
  color:var(--granite);margin:0 0 1rem;
}
.center{text-align:center;}

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */
.site-header{background:var(--white);border-bottom:1px solid #E4E0D7;}
.brand{display:flex;justify-content:center;padding:1.6rem 1rem 1.1rem;}
.brand a{display:flex;flex-direction:column;align-items:center;gap:.55rem;text-decoration:none;color:var(--slate);}
.brand svg{width:52px;height:52px;color:var(--sage-deep);}
.brand .brand-name{
  font-family:var(--serif);font-weight:600;font-size:1.7rem;
  letter-spacing:.22em;text-transform:uppercase;line-height:1;
}
.brand .brand-loc{
  font-size:.68rem;letter-spacing:.42em;text-transform:uppercase;color:var(--granite);
}
.site-nav{position:relative;}
.site-nav ul{
  list-style:none;margin:0;padding:0 1rem 1.2rem;
  display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:.4rem 2rem;
}
.site-nav a{
  text-decoration:none;color:var(--slate);
  font-size:.86rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;
  padding:.35rem 0;border-bottom:2px solid transparent;
}
.site-nav a:hover{color:var(--brass);}
.site-nav a[aria-current="page"]{border-bottom-color:var(--brass);color:var(--brass-dark);}
.nav-toggle{display:none;}

@media (max-width:480px){
  .brand .brand-name{font-size:1.18rem;}
  .brand svg{width:44px;height:44px;}
}
@media (max-width:820px){
  .nav-toggle{
    display:block;margin:0 auto 1rem;background:none;border:1px solid var(--sage-pale);
    padding:.5rem 1.2rem;font-family:var(--sans);font-size:.8rem;letter-spacing:.2em;
    text-transform:uppercase;color:var(--slate);cursor:pointer;border-radius:3px;
  }
  .site-nav ul{display:none;flex-direction:column;gap:0;padding-bottom:1rem;}
  .site-nav.open ul{display:flex;}
  .site-nav a{display:block;padding:.65rem 0;}
}

/* --------------------------------------------------------------------------
   Hero
   -------------------------------------------------------------------------- */
.hero{
  position:relative;min-height:62vh;display:flex;align-items:center;justify-content:center;
  text-align:center;color:#fff;isolation:isolate;padding:5rem 1.25rem;
}
.hero--short{min-height:44vh;padding:4rem 1.25rem;}
.hero picture,.hero > img{position:absolute;inset:0;z-index:-2;}
.hero img{width:100%;height:100%;object-fit:cover;}
.hero::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(rgba(30,39,51,.55),rgba(30,39,51,.62));
}
.hero .kicker{color:#E9DEC8;}
.hero h1{
  color:#fff;letter-spacing:.18em;text-transform:uppercase;font-weight:500;
  margin-bottom:.35em;
}
.hero .hero-loc{
  font-size:.85rem;letter-spacing:.4em;text-transform:uppercase;color:var(--sage-pale);
  margin-bottom:2.2rem;
}
.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;}

/* Buttons */
.btn{
  display:inline-block;padding:.85rem 2.1rem;text-decoration:none;cursor:pointer;
  font-family:var(--sans);font-size:.82rem;letter-spacing:.24em;text-transform:uppercase;font-weight:700;
  border:1.5px solid currentColor;border-radius:2px;background:transparent;color:inherit;
  transition:background .2s,color .2s;
}
.btn:hover{background:#fff;color:var(--slate);}
.btn--solid{background:var(--brass);border-color:var(--brass);color:#fff;}
.btn--solid:hover{background:var(--brass-dark);border-color:var(--brass-dark);color:#fff;}
.btn--slate{color:var(--slate);}
.btn--slate:hover{background:var(--slate);color:#fff;}
.on-sage .btn:hover{background:#fff;color:var(--sage-deep);}

/* --------------------------------------------------------------------------
   Sections
   -------------------------------------------------------------------------- */
.section{padding:4.5rem 0;}
.section--tight{padding:3rem 0;}
.band{
  background:var(--sage);color:#fff;padding:4rem 0;text-align:center;
}
.band h2,.band h3{color:#fff;}
.band p{max-width:52ch;margin-left:auto;margin-right:auto;}
.band a:not(.btn){color:#F3EBDA;}
.rule{
  border:0;height:1px;background:#DDD8CC;max-width:160px;margin:0 auto;
}

/* Apartment cards */
.card-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));
  gap:1.6rem;margin-top:2.5rem;
}
.card{
  background:var(--white);border:1px solid #E4E0D7;border-radius:4px;overflow:hidden;
  display:flex;flex-direction:column;text-align:left;
}
.card img{aspect-ratio:4/3;object-fit:cover;width:100%;}
.card-body{padding:1.4rem 1.4rem 1.6rem;display:flex;flex-direction:column;flex:1;}
.card h3{margin-bottom:.2rem;}
.card .card-meta{
  font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--granite);
  margin-bottom:.8rem;
}
.card p{font-size:.98rem;flex:1;}
.card .card-link{
  font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;font-weight:700;
  text-decoration:none;color:var(--brass);
}
.card .card-link:hover{color:var(--brass-dark);}
a.card-cover{position:absolute;inset:0;}
.card{position:relative;}

/* Feature rows (image + text) */
.feature{
  display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center;margin:3.5rem 0;
}
.feature img{border-radius:4px;}
@media (max-width:760px){.feature{grid-template-columns:1fr;gap:1.5rem;}}

/* Tick lists */
.ticks{list-style:none;margin:0;padding:0;}
.ticks li{padding:.32rem 0 .32rem 1.9rem;position:relative;}
.ticks li::before{
  content:"\2713";position:absolute;left:0;top:.32rem;
  color:var(--sage-deep);font-weight:700;
}
.ticks li.no::before{content:"\2717";color:#A5554B;}
.ticks-cols{
  display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;margin:2.5rem 0;
}
@media (max-width:700px){.ticks-cols{grid-template-columns:1fr;gap:1.5rem;}}

/* At-a-glance strip */
.glance{
  display:flex;flex-wrap:wrap;gap:.6rem 2.4rem;justify-content:center;
  background:var(--white);border:1px solid #E4E0D7;border-radius:4px;
  padding:1.1rem 1.6rem;margin:0 0 3rem;
  font-size:.85rem;letter-spacing:.16em;text-transform:uppercase;color:var(--slate);
}
.glance span strong{color:var(--sage-deep);}

/* Gallery */
.gallery{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem;margin-top:2rem;
}
.gallery button{
  padding:0;border:0;background:none;cursor:pointer;border-radius:4px;overflow:hidden;display:block;
}
.gallery img{aspect-ratio:4/3;object-fit:cover;width:100%;transition:transform .3s;}
.gallery button:hover img{transform:scale(1.04);}

/* Lightbox */
.lightbox{
  position:fixed;inset:0;background:rgba(20,26,34,.93);z-index:60;
  display:none;align-items:center;justify-content:center;flex-direction:column;padding:2rem;
}
.lightbox.open{display:flex;}
.lightbox img{max-width:min(1100px,92vw);max-height:80vh;object-fit:contain;border-radius:3px;}
.lightbox figcaption{color:#C9CDD3;margin-top:1rem;font-size:.95rem;}
.lightbox .lb-btn{
  position:absolute;background:none;border:0;color:#fff;cursor:pointer;font-size:2.2rem;
  padding:1rem;line-height:1;opacity:.8;
}
.lightbox .lb-btn:hover{opacity:1;}
.lb-close{top:.5rem;right:.8rem;}
.lb-prev{left:.4rem;top:50%;transform:translateY(-50%);}
.lb-next{right:.4rem;top:50%;transform:translateY(-50%);}

/* Explore cards */
.place-card .card-meta{margin-bottom:.4rem;}
.place-card p{margin-bottom:.6rem;}
.place-links{font-size:.9rem;}

/* Simple list section */
.list-cols{
  columns:2;column-gap:3rem;max-width:820px;margin:1.5rem auto 0;text-align:left;
}
@media (max-width:640px){.list-cols{columns:1;}}
.list-cols li{margin-bottom:.5rem;}

/* --------------------------------------------------------------------------
   Forms
   -------------------------------------------------------------------------- */
.form-card{
  background:var(--white);border:1px solid #E4E0D7;border-radius:4px;
  padding:2.2rem;max-width:760px;margin:0 auto;
}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem 1.4rem;}
.form-grid .full{grid-column:1/-1;}
@media (max-width:620px){.form-grid{grid-template-columns:1fr;}}
label{
  display:block;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:700;color:var(--slate);margin-bottom:.35rem;
}
label .req{color:#A5554B;}
input,select,textarea{
  width:100%;padding:.7rem .8rem;border:1px solid #CFC9BD;border-radius:3px;
  font-family:var(--sans);font-size:1rem;color:var(--ink);background:#FDFCFA;
}
textarea{min-height:130px;resize:vertical;}
.field-error{display:none;color:#A5554B;font-size:.85rem;margin-top:.3rem;}
.invalid input,.invalid select,.invalid textarea{border-color:#A5554B;}
.invalid .field-error{display:block;}
.form-note{font-size:.9rem;color:var(--granite);}
.form-status{display:none;padding:1rem 1.2rem;border-radius:3px;margin-top:1.2rem;}
.form-status.ok{display:block;background:#EEF3E8;border:1px solid var(--sage-pale);color:#3F4A36;}
.form-status.err{display:block;background:#F7ECEA;border:1px solid #D8B3AC;color:#7A3A31;}
.hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden;}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.site-footer{
  background:var(--slate);color:#B9C0CA;margin-top:5rem;
  padding:3.5rem 0 2rem;font-size:.95rem;text-align:center;
}
.site-footer .brand-foot{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:1.6rem;}
.site-footer .brand-foot svg{width:44px;height:44px;color:var(--sage-pale);}
.site-footer .brand-foot .brand-name{
  font-family:var(--serif);font-size:1.35rem;letter-spacing:.22em;text-transform:uppercase;color:#fff;
}
.site-footer nav ul{
  list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 1.8rem;
  padding:0;margin:0 0 1.6rem;
}
.site-footer nav a{
  color:#B9C0CA;text-decoration:none;font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;
}
.site-footer nav a:hover{color:#fff;}
.site-footer a{color:#D8CDB8;}
.site-footer .fine{font-size:.8rem;color:#7E8794;margin-top:1.4rem;}
.site-footer .fine a{color:#9AA3B0;}

/* Utility */
.visually-hidden{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .gallery img{transition:none;}
}
