:root{
    --boxwood: #2F3E32;
    --boxwood-deep: #26332A;
    --ivory: #F3EFE6;
    --warm-white: #FBF9F4;
    --stone: #EAE3D3;
    --charcoal: #26251F;
    --brick: #C1633B;
    --brick-deep: #A34F2C;
    --brass: #A9822C;
    --line: rgba(38,37,31,0.12);
    --line-light: rgba(243,239,230,0.22);
    --radius: 2px;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    font-family:'Inter',sans-serif;
    color:var(--charcoal);
    background:var(--warm-white);
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,h4{
    font-family:'Fraunces',serif;
    font-weight:600;
    margin:0;
    line-height:1.08;
    letter-spacing:-0.01em;
  }
  p{margin:0;}
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;display:block;}
  .wrap{max-width:1140px;margin:0 auto;padding:0 28px;}
  .eyebrow{
    font-family:'Inter',sans-serif;
    font-size:12px;
    font-weight:600;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--brass);
  }
  .btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:14px 26px;
    font-family:'Inter',sans-serif;
    font-weight:600;
    font-size:15px;
    border-radius:var(--radius);
    border:1.5px solid transparent;
    cursor:pointer;
    transition:transform .15s ease, background .2s ease, border-color .2s ease, color .2s ease;
  }
  .btn:hover{transform:translateY(-1px);}
  .btn-primary{background:var(--brick);color:var(--ivory);}
  .btn-primary:hover{background:var(--brick-deep);}
  .btn-outline-light{border-color:var(--line-light);color:var(--ivory);}
  .btn-outline-light:hover{background:rgba(255,255,255,0.08);}
  .btn-outline-dark{border-color:var(--charcoal);color:var(--charcoal);}
  .btn-outline-dark:hover{background:var(--charcoal);color:var(--ivory);}

  /* focus visibility */
  a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
    outline:2px solid var(--brick);
    outline-offset:3px;
  }

  /* ===== HEADER ===== */
  header{
    position:sticky;top:0;z-index:50;
    background:var(--boxwood);
    border-bottom:1px solid var(--line-light);
  }
  .nav{
    display:flex;align-items:center;justify-content:space-between;
    padding:16px 28px;max-width:1140px;margin:0 auto;
  }
  .brand{
    font-family:'Fraunces',serif;
    font-weight:600;
    font-size:18px;
    color:var(--ivory);
    line-height:1.15;
    max-width:250px;
  }
  .brand span{color:var(--brick);}
  .nav-links{display:flex;gap:30px;align-items:center;}
  .nav-links a{
    font-size:14px;font-weight:500;color:var(--ivory);opacity:0.85;
  }
  .nav-links a:hover{opacity:1;}
  .nav-cta{display:flex;align-items:center;gap:16px;}
  .nav-phone{font-size:14px;font-weight:600;color:var(--ivory);white-space:nowrap;}
  .menu-toggle{
    display:none;background:none;border:none;color:var(--ivory);
    font-size:26px;cursor:pointer;line-height:1;
  }
  @media (max-width: 880px){
    .nav-links{
      position:absolute;top:100%;left:0;right:0;
      background:var(--boxwood);
      flex-direction:column;align-items:flex-start;
      padding:10px 28px 24px;gap:16px;
      display:none;border-bottom:1px solid var(--line-light);
    }
    .nav-links.open{display:flex;}
    .menu-toggle{display:block;}
    .nav-phone{display:none;}
  }

  /* ===== HERO ===== */
  .hero{
    background:var(--boxwood);
    color:var(--ivory);
    padding:76px 0 90px;
    position:relative;
    overflow:hidden;
  }
  .hero::after{
    content:"";
    position:absolute;
    right:-120px;top:-120px;
    width:420px;height:420px;
    border:1px solid var(--line-light);
    border-radius:50%;
    opacity:0.4;
  }
  .hero-grid{
    display:grid;grid-template-columns:1.15fr 0.85fr;gap:56px;align-items:end;
    position:relative;z-index:1;
  }
  .hero h1{
    font-size:clamp(38px,5.4vw,62px);
    color:var(--ivory);
    margin-top:18px;
  }
  .hero-mark{position:relative;display:inline-block;}
  .hero-mark svg{
    position:absolute;left:-6%;top:-18%;width:112%;height:140%;
    pointer-events:none;
  }
  .hero-sub{
    margin-top:22px;font-size:17px;line-height:1.6;color:rgba(243,239,230,0.82);
    max-width:480px;
  }
  .hero-actions{display:flex;gap:14px;margin-top:32px;flex-wrap:wrap;}
  .hero-chips{
    margin-top:40px;display:flex;flex-wrap:wrap;gap:10px;
  }
  .chip{
    font-size:12.5px;font-weight:500;
    border:1px solid var(--line-light);
    color:rgba(243,239,230,0.85);
    padding:7px 13px;border-radius:20px;
  }
  .hero-side{
    border-left:1px solid var(--line-light);
    padding-left:40px;
  }
  .hero-side-item{padding:18px 0;border-bottom:1px solid var(--line-light);}
  .hero-side-item:first-child{padding-top:0;}
  .hero-side-item:last-child{border-bottom:none;}
  .hero-side-item .label{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass);font-weight:600;}
  .hero-side-item .val{font-family:'Fraunces',serif;font-size:20px;margin-top:6px;}
  @media (max-width: 880px){
    .hero-grid{grid-template-columns:1fr;}
    .hero-side{border-left:none;border-top:1px solid var(--line-light);padding-left:0;padding-top:28px;}
  }

  /* ===== SECTION SHELL ===== */
  section{padding:90px 0;}
  .section-stone{background:var(--stone);}
  .section-head{
    display:flex;justify-content:space-between;align-items:flex-end;gap:30px;
    margin-bottom:52px;flex-wrap:wrap;
  }
  .section-head h2{font-size:clamp(28px,3.4vw,40px);max-width:600px;}
  .section-head p{color:rgba(38,37,31,0.65);max-width:380px;font-size:15px;line-height:1.6;}

  /* ===== SERVICES ===== */
  .services-grid{
    display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
    background:var(--line);border:1px solid var(--line);
  }
  .service-card{
    background:var(--warm-white);padding:36px 32px;
    display:flex;flex-direction:column;gap:16px;min-height:260px;
    transition:background .25s ease;
  }
  .service-card:hover{background:var(--stone);}
  .service-icon{width:40px;height:40px;color:var(--brick);}
  .service-card h3{font-size:21px;}
  .service-card p{font-size:14.5px;line-height:1.6;color:rgba(38,37,31,0.68);}
  .service-tag{
    margin-top:auto;font-size:12px;font-weight:600;letter-spacing:.08em;
    text-transform:uppercase;color:var(--brass);
  }
  @media (max-width: 880px){
    .services-grid{grid-template-columns:1fr 1fr;}
  }
  @media (max-width: 560px){
    .services-grid{grid-template-columns:1fr;}
  }

  /* ===== PROCESS ===== */
  .process-list{display:grid;grid-template-columns:repeat(4,1fr);gap:36px;}
  .process-item{border-top:2px solid var(--charcoal);padding-top:20px;}
  .process-num{font-family:'Fraunces',serif;font-size:15px;color:var(--brick);font-weight:600;}
  .process-item h3{font-size:19px;margin-top:10px;}
  .process-item p{font-size:14px;line-height:1.6;color:rgba(38,37,31,0.65);margin-top:10px;}
  @media (max-width: 880px){
    .process-list{grid-template-columns:1fr 1fr;}
  }
  @media (max-width: 560px){
    .process-list{grid-template-columns:1fr;}
  }

  /* ===== SERVICE AREA ===== */
  .area-grid{display:grid;grid-template-columns:0.9fr 1.1fr;gap:60px;align-items:center;}
  .area-list{list-style:none;margin:0;padding:0;}
  .area-list li{
    display:flex;align-items:center;gap:14px;
    padding:16px 0;border-bottom:1px solid var(--line);
    font-family:'Fraunces',serif;font-size:19px;
  }
  .area-list li:first-child{padding-top:0;}
  .area-dot{width:8px;height:8px;border-radius:50%;background:var(--brick);flex-shrink:0;}
  @media (max-width: 880px){
    .area-grid{grid-template-columns:1fr;}
    .area-grid{gap:36px;}
  }

  /* ===== WHY US ===== */
  .why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line-light);border:1px solid var(--line-light);}
  .why-card{background:var(--boxwood-deep);color:var(--ivory);padding:34px 30px;}
  .why-card h3{font-size:18px;color:var(--ivory);}
  .why-card p{font-size:14px;color:rgba(243,239,230,0.72);line-height:1.6;margin-top:10px;}
  .section-dark{background:var(--boxwood);color:var(--ivory);}
  .section-dark .section-head p{color:rgba(243,239,230,0.68);}
  @media (max-width: 880px){ .why-grid{grid-template-columns:1fr 1fr;} }
  @media (max-width: 560px){ .why-grid{grid-template-columns:1fr;} }

  /* ===== TESTIMONIALS (template slots) ===== */
  .testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
  .testi-card{
    background:var(--warm-white);border:1px solid var(--line);padding:30px 26px;
    display:flex;flex-direction:column;gap:16px;
  }
  .testi-quote{font-family:'Fraunces',serif;font-style:italic;font-size:17px;line-height:1.55;color:var(--charcoal);}
  .testi-name{font-size:13px;font-weight:600;color:var(--brass);letter-spacing:.03em;}
  @media (max-width: 880px){ .testi-grid{grid-template-columns:1fr;} }

  /* ===== CTA BAND ===== */
  .cta-band{
    background:var(--brick);color:var(--ivory);
    padding:64px 0;text-align:center;
  }
  .cta-band h2{color:var(--ivory);font-size:clamp(26px,3.6vw,38px);}
  .cta-band p{margin-top:14px;color:rgba(243,239,230,0.9);font-size:16px;}
  .cta-band .btn-primary{background:var(--charcoal);margin-top:26px;}
  .cta-band .btn-primary:hover{background:#141310;}

  /* ===== CONTACT ===== */
  .contact-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:60px;}
  .contact-info-item{margin-bottom:28px;}
  .contact-info-item .label{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass);font-weight:600;}
  .contact-info-item .val{font-family:'Fraunces',serif;font-size:19px;margin-top:6px;}
  .contact-info-item .val small{display:block;font-family:'Inter',sans-serif;font-size:13px;font-weight:400;color:rgba(38,37,31,0.55);margin-top:4px;}

  form{display:grid;gap:18px;}
  .form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
  label{font-size:12.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--charcoal);display:block;margin-bottom:7px;}
  input, select, textarea{
    width:100%;padding:12px 14px;font-family:'Inter',sans-serif;font-size:15px;
    border:1.5px solid var(--line);border-radius:var(--radius);background:var(--warm-white);color:var(--charcoal);
  }
  input:focus, select:focus, textarea:focus{border-color:var(--brick);outline:none;}
  textarea{resize:vertical;min-height:110px;}
  @media (max-width: 700px){
    .contact-grid{grid-template-columns:1fr;}
    .form-row{grid-template-columns:1fr;}
  }

  /* ===== FOOTER ===== */
  footer{background:var(--boxwood-deep);color:rgba(243,239,230,0.7);padding:56px 0 28px;}
  .footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;}
  footer h4{color:var(--ivory);font-size:14px;font-family:'Inter',sans-serif;font-weight:600;letter-spacing:.05em;text-transform:uppercase;margin-bottom:16px;}
  .footer-brand{font-family:'Fraunces',serif;color:var(--ivory);font-size:19px;max-width:260px;margin-bottom:14px;}
  footer ul{list-style:none;padding:0;margin:0;display:grid;gap:10px;}
  footer a{font-size:14px;}
  footer a:hover{color:var(--ivory);}
  .footer-bottom{
    margin-top:48px;padding-top:24px;border-top:1px solid var(--line-light);
    font-size:13px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;
  }
  @media (max-width: 780px){
    .footer-grid{grid-template-columns:1fr 1fr;}
  }

/* ===== GALLERY ===== */
.breadcrumb{font-size:13px;color:rgba(243,239,230,0.65);margin-bottom:18px;}
.breadcrumb a{color:rgba(243,239,230,0.85);}
.breadcrumb a:hover{color:var(--ivory);}
.gallery-hero{padding:56px 0 48px;}
.gallery-hero h1{font-size:clamp(32px,4.6vw,50px);color:var(--ivory);max-width:640px;}
.gallery-hero p{margin-top:16px;color:rgba(243,239,230,0.8);font-size:16px;max-width:520px;line-height:1.6;}
.gallery-hero-actions{display:flex;gap:14px;margin-top:30px;flex-wrap:wrap;}

.filter-row{
  display:flex;flex-wrap:wrap;gap:10px;
  padding:28px 0 8px;
}
.filter-chip{
  font-family:'Inter',sans-serif;font-size:13px;font-weight:600;
  padding:9px 18px;border-radius:20px;border:1.5px solid var(--line);
  background:var(--warm-white);color:var(--charcoal);cursor:pointer;
  transition:background .2s ease, color .2s ease, border-color .2s ease;
}
.filter-chip:hover{border-color:var(--brick);}
.filter-chip.active{background:var(--charcoal);border-color:var(--charcoal);color:var(--ivory);}

.gallery-masonry{
  column-count:3;column-gap:16px;margin-top:12px;
}
.gallery-tile{
  break-inside:avoid;margin-bottom:16px;border-radius:2px;overflow:hidden;
  border:1px solid var(--line);
  background:linear-gradient(150deg, var(--stone) 0%, var(--warm-white) 100%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;gap:10px;padding:26px 18px;
  transition:opacity .2s ease, transform .2s ease;
}
.gallery-tile.h-sm{min-height:170px;}
.gallery-tile.h-md{min-height:230px;}
.gallery-tile.h-lg{min-height:300px;}
.gallery-tile svg{width:30px;height:30px;color:var(--brick);opacity:0.75;}
.gallery-tile .cat{
  font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--brass);
}
.gallery-tile .cue{font-family:'Fraunces',serif;font-size:15px;color:rgba(38,37,31,0.55);}
.gallery-tile.hidden{display:none;}

@media (max-width: 880px){ .gallery-masonry{column-count:2;} }
@media (max-width: 560px){ .gallery-masonry{column-count:1;} }
