/* =========================================================
   YEN BEAUTY HAVEN — shared stylesheet
   Used by every page. Edit here once, every page updates.
   ========================================================= */

:root{
  --ink:#1F1A17;
  --ink-soft:#4A3F38;
  --ivory:#FAF5EC;
  --ivory-dim:#F1E7D7;
  --card:#FFFDF8;
  --wine:#6B2737;
  --wine-dark:#4A1B26;
  --wine-tint:#F4E5E4;
  --gold:#B08D4F;
  --gold-light:#D9C08E;
  --line: rgba(31,26,23,0.14);
  --line-on-wine: rgba(250,245,236,0.22);
  --shadow: 0 30px 60px -30px rgba(31,26,23,0.35);
  --maxw: 1180px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}
}

body{
  margin:0;
  background:var(--ivory);
  color:var(--ink);
  font-family:'Inter', sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4{
  font-family:'Fraunces', serif;
  font-weight:500;
  margin:0;
  color:var(--ink);
  letter-spacing:-0.01em;
}

a{color:inherit; text-decoration:none;}
ul{margin:0; padding:0; list-style:none;}
button{font-family:inherit;}

img{max-width:100%; display:block;}
.photo{
  width:100%; height:100%; object-fit:cover; display:block;
  background:linear-gradient(150deg,#EFE1D2 0%, #E7D3C6 55%, #DCC3B3 100%);
  color:transparent; font-size:0;
}

.wrap{max-width:var(--maxw); margin:0 auto; padding:0 32px;}
@media (max-width:640px){ .wrap{padding:0 22px;} }

.eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-family:'Inter',sans-serif; font-size:12px; font-weight:600;
  letter-spacing:0.18em; text-transform:uppercase; color:var(--wine);
}
.eyebrow::before{ content:''; width:26px; height:1px; background:var(--gold); display:inline-block; }
section.on-wine .eyebrow{ color:var(--gold-light); }
section.on-wine .eyebrow::before{ background:var(--gold-light); }

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:15px 30px; border-radius:2px; font-size:13px; font-weight:600;
  letter-spacing:0.06em; text-transform:uppercase; border:1px solid transparent; cursor:pointer;
  transition:transform .35s cubic-bezier(.2,.7,.2,1), background .3s, color .3s, border-color .3s;
}
.btn:hover{ transform:translateY(-2px); }
.btn-primary{ background:var(--wine); color:var(--ivory); }
.btn-primary:hover{ background:var(--wine-dark); }
.btn-outline{ background:transparent; color:var(--ink); border-color:var(--ink); }
.btn-outline:hover{ background:var(--ink); color:var(--ivory); }
.btn-gold{ background:transparent; color:var(--ivory); border-color:var(--gold-light); }
.btn-gold:hover{ background:var(--gold-light); color:var(--wine-dark); }

/* ---------- ANNOUNCEMENT ---------- */
.announce{
  background:var(--ink); color:var(--ivory-dim); text-align:center;
  font-size:12.5px; letter-spacing:0.05em; padding:9px 20px;
}
.announce b{ color:var(--gold-light); font-weight:600; }

/* ---------- NAV ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(250,245,236,0.9); backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
nav.wrap{ display:flex; align-items:center; justify-content:space-between; height:78px; }
.logo{ display:flex; flex-direction:column; line-height:1; }
.logo .name{ font-family:'Fraunces',serif; font-size:22px; font-weight:600; letter-spacing:0.01em;}
.logo .sub{ font-size:9.5px; letter-spacing:0.28em; text-transform:uppercase; color:var(--wine); margin-top:4px;}
.navlinks{ display:flex; align-items:center; gap:30px; }
.navlinks a{
  font-size:13px; font-weight:500; letter-spacing:0.02em; color:var(--ink-soft);
  position:relative; padding-bottom:4px;
}
.navlinks a::after{
  content:''; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--wine);
  transition:width .3s ease;
}
.navlinks a:hover::after, .navlinks a.current::after{ width:100%; }
.navlinks a.current{ color:var(--wine); }
.nav-cta{ display:flex; align-items:center; gap:18px; }
.burger{ display:none; background:none; border:none; cursor:pointer; padding:6px; }
.burger span{ display:block; width:22px; height:1.5px; background:var(--ink); margin:5px 0; }

@media (max-width:980px){
  .navlinks{
    position:fixed; inset:78px 0 0 0; background:var(--ivory);
    flex-direction:column; justify-content:flex-start; align-items:flex-start;
    padding:40px 28px; gap:26px; transform:translateX(100%);
    transition:transform .4s ease; height:calc(100vh - 78px); overflow:auto;
  }
  .navlinks.open{ transform:translateX(0); }
  .navlinks a{ font-size:20px; }
  .burger{ display:block; }
  .nav-cta .btn-outline{ display:none; }
}

/* ---------- FRAME ---------- */
.frame{ position:relative; z-index:1; }
.frame::before{
  content:''; position:absolute; inset:-16px; border:1px solid var(--gold);
  transform:rotate(-2deg); z-index:-1; transition:transform .5s ease;
}
.frame:hover::before{ transform:rotate(-3.5deg) scale(1.01); }

/* ---------- SECTION SHELL ---------- */
section{ padding:108px 0; }
section.tight{ padding:80px 0; }
section.on-wine{ background:var(--wine); color:var(--ivory); }
section.on-wine h2, section.on-wine h3, section.on-wine h4{ color:var(--ivory); }
section.on-dim{ background:var(--ivory-dim); }
.section-head{
  display:flex; align-items:flex-end; justify-content:space-between; gap:40px;
  margin-bottom:56px; flex-wrap:wrap;
}
.section-head h2{ font-size:clamp(30px,3.4vw,44px); margin-top:16px; max-width:560px; }
.section-head p{ max-width:380px; font-size:15px; color:var(--ink-soft); }
section.on-wine .section-head p{ color:rgba(250,245,236,0.72); }
.center-head{ text-align:center; max-width:620px; margin:0 auto 56px; }
.center-head .eyebrow{ justify-content:center; }
.center-head h2{ font-size:clamp(30px,3.6vw,46px); margin-top:16px; }
.center-head p{ margin-top:16px; color:var(--ink-soft); font-size:15px; }

/* ---------- PAGE HERO (inner pages) ---------- */
.page-hero{
  padding:74px 0 66px; background:var(--ivory-dim);
  border-bottom:1px solid var(--line); position:relative; overflow:hidden;
}
.page-hero::after{
  content:''; position:absolute; right:-90px; top:-90px; width:300px; height:300px;
  border:1px solid var(--gold); transform:rotate(-12deg); opacity:.45; pointer-events:none;
}
.page-hero h1{ font-size:clamp(34px,4.6vw,58px); line-height:1.05; margin-top:18px; max-width:760px; }
.page-hero h1 em{ font-style:italic; font-weight:400; color:var(--wine); }
.page-hero p{ max-width:520px; margin-top:20px; color:var(--ink-soft); font-size:16px; }
.page-hero .hero-ctas{ display:flex; gap:14px; margin-top:32px; flex-wrap:wrap; }

.crumbs{ font-size:12px; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-soft); }
.crumbs a:hover{ color:var(--wine); }
.crumbs span{ color:var(--gold); margin:0 8px; }

/* ---------- SERVICE CARDS ---------- */
.service-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
.service-card{ background:var(--card); display:flex; flex-direction:column; transition:background .35s ease; }
.service-card:hover{ background:var(--ivory-dim); }
.svc-photo{ aspect-ratio:4/3; overflow:hidden; }
.svc-photo .photo{ transition:transform .7s cubic-bezier(.2,.7,.2,1); }
.service-card:hover .svc-photo .photo{ transform:scale(1.05); }
.svc-body{ padding:30px 30px 34px; display:flex; flex-direction:column; gap:14px; flex:1; }
.service-card h3{ font-size:21px; }
.service-card p{ font-size:14px; color:var(--ink-soft); margin:0; flex:1; }
.svc-link{
  font-size:12px; font-weight:600; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--wine); display:inline-flex; align-items:center; gap:6px; margin-top:4px;
}
.svc-link svg{ width:13px; height:13px; transition:transform .3s; }
.service-card:hover .svc-link svg{ transform:translateX(4px); }
@media (max-width:900px){ .service-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:580px){ .service-grid{ grid-template-columns:1fr; } }

/* ---------- PRICE LIST ---------- */
.price-block{ margin-bottom:56px; }
.price-block h3{
  font-size:13px; letter-spacing:0.12em; text-transform:uppercase; color:var(--wine);
  padding-bottom:14px; border-bottom:1px solid var(--line); margin-bottom:8px;
  font-family:'Inter',sans-serif; font-weight:600;
}
.price-row{
  display:flex; align-items:baseline; gap:16px; padding:18px 0; border-bottom:1px dashed var(--line);
}
.price-row .pr-name{ font-family:'Fraunces',serif; font-size:19px; }
.price-row .pr-note{ display:block; font-family:'Inter',sans-serif; font-size:13.5px; color:var(--ink-soft); margin-top:4px; }
.price-row .pr-dots{ flex:1; border-bottom:1px dotted var(--line); transform:translateY(-4px); }
.price-row .pr-price{ font-family:'Fraunces',serif; font-size:19px; font-weight:600; color:var(--wine); white-space:nowrap; }
.price-row .pr-time{ display:block; font-family:'Inter',sans-serif; font-size:12px; color:var(--ink-soft); text-align:right; font-weight:400; margin-top:4px; }
.price-note{ font-size:13.5px; color:var(--ink-soft); margin-top:18px; }

/* ---------- SPLIT (image + copy) ---------- */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:70px; align-items:center; }
.split.narrow-left{ grid-template-columns:0.9fr 1.1fr; }
.split .frame{ aspect-ratio:1/1; overflow:hidden; }
.split-copy p{ color:var(--ink-soft); font-size:16px; max-width:520px; }
section.on-wine .split-copy p{ color:rgba(250,245,236,0.82); }
.split-copy h2{ font-size:clamp(28px,3.2vw,42px); margin-top:16px; }
.split-copy h3{ font-size:22px; margin-top:28px; margin-bottom:8px; }
@media (max-width:900px){
  .split, .split.narrow-left{ grid-template-columns:1fr; gap:48px; }
  .split .frame{ max-width:340px; margin:0 auto; }
}

.cred-list{ margin-top:30px; display:grid; gap:14px; }
.cred-list li{ display:flex; gap:12px; align-items:flex-start; font-size:14px; color:var(--ink-soft); }
.cred-list svg{ width:16px; height:16px; flex:none; margin-top:3px; color:var(--gold); }
section.on-wine .cred-list li{ color:var(--ivory-dim); }
section.on-wine .cred-list svg{ color:var(--gold-light); }

/* ---------- PROCESS ---------- */
.process{ display:grid; grid-template-columns:repeat(3,1fr); gap:50px; }
.process-step .num{ font-family:'Fraunces',serif; font-style:italic; font-size:15px; color:var(--gold); margin-bottom:14px; display:block; }
.process-step h3{ font-size:22px; margin-bottom:10px; }
.process-step p{ font-size:14.5px; color:var(--ink-soft); }
section.on-wine .process-step p{ color:rgba(250,245,236,0.75); }
@media (max-width:780px){ .process{ grid-template-columns:1fr; gap:36px; } }

/* ---------- GALLERY ---------- */
.filter-bar{ display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-bottom:44px; }
.filter-bar button{
  background:transparent; border:1px solid var(--line); color:var(--ink-soft);
  padding:10px 20px; border-radius:2px; font-size:12px; font-weight:600;
  letter-spacing:0.08em; text-transform:uppercase; cursor:pointer; transition:all .3s;
}
.filter-bar button:hover{ border-color:var(--wine); color:var(--wine); }
.filter-bar button.active{ background:var(--wine); border-color:var(--wine); color:var(--ivory); }

.masonry{ columns:3; column-gap:16px; }
.masonry .tile{ break-inside:avoid; margin-bottom:16px; position:relative; overflow:hidden; display:block; }
.masonry .tile .photo{ transition:transform .6s ease; }
.masonry .tile:hover .photo{ transform:scale(1.05); }
.tile-cap{
  position:absolute; inset:auto 0 0 0; padding:16px 18px;
  background:linear-gradient(to top, rgba(74,27,38,0.86), rgba(74,27,38,0));
  color:var(--ivory); font-size:12.5px; letter-spacing:0.06em; text-transform:uppercase;
  opacity:0; transform:translateY(10px); transition:opacity .35s, transform .35s;
}
.masonry .tile:hover .tile-cap{ opacity:1; transform:translateY(0); }
@media (max-width:900px){ .masonry{ columns:2; } }
@media (max-width:560px){ .masonry{ columns:2; column-gap:8px; } .masonry .tile{ margin-bottom:8px; } }

.ig-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:48px; }
.ig-tile{ position:relative; aspect-ratio:1/1; overflow:hidden; background:var(--ivory-dim); display:block; }
.ig-tile .photo{ transition:transform .6s ease; }
.ig-tile:hover .photo{ transform:scale(1.06); }
.ig-overlay{ position:absolute; inset:0; background:rgba(74,27,38,0); display:flex; align-items:center; justify-content:center; transition:background .35s ease; }
.ig-tile:hover .ig-overlay{ background:rgba(74,27,38,0.68); }
.ig-overlay svg{ width:22px; height:22px; color:#fff; opacity:0; transform:translateY(6px); transition:opacity .35s, transform .35s; }
.ig-tile:hover .ig-overlay svg{ opacity:1; transform:translateY(0); }
@media (max-width:900px){ .ig-grid{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:580px){ .ig-grid{ grid-template-columns:repeat(2,1fr); gap:8px; } }
.ig-follow{ text-align:center; }
.ig-handle{ display:block; margin-top:14px; font-size:13px; color:var(--ink-soft); }

/* ---------- REVIEWS ---------- */
.review-lead{ max-width:760px; margin:0 auto; text-align:center; }
.review-lead blockquote{
  margin:0; font-family:'Fraunces',serif; font-size:clamp(22px,2.8vw,34px);
  line-height:1.35; color:var(--ivory); font-weight:400;
}
.review-lead .attrib{
  margin-top:22px; font-size:12px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--gold-light); font-weight:600;
}
.review-nums{
  display:flex; justify-content:center; gap:0; margin-top:64px;
  border-top:1px solid var(--line-on-wine); border-bottom:1px solid var(--line-on-wine); flex-wrap:wrap;
}
.review-nums div{ padding:30px 46px; text-align:center; border-right:1px solid var(--line-on-wine); }
.review-nums div:last-child{ border-right:none; }
.review-nums b{ font-family:'Fraunces',serif; font-size:32px; font-weight:600; display:block; color:var(--ivory); }
.review-nums span{ font-size:12px; letter-spacing:0.06em; color:rgba(250,245,236,0.7); }
@media (max-width:640px){ .review-nums div{ padding:24px 26px; } }

.yelp-strip{ margin-top:52px; display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; }
.yelp-strip a{
  font-size:13px; font-weight:600; letter-spacing:0.05em; text-transform:uppercase;
  color:var(--gold-light); border-bottom:1px solid var(--gold-light); padding-bottom:3px;
}

.quote-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
.quote-card{ background:var(--card); padding:36px 32px; display:flex; flex-direction:column; gap:16px; }
.stars{ display:flex; gap:3px; color:var(--gold); }
.stars svg{ width:15px; height:15px; }
.quote-card p{ font-family:'Fraunces',serif; font-size:17.5px; line-height:1.5; margin:0; flex:1; }
.quote-card .who{ font-size:12px; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink-soft); font-weight:600; }
@media (max-width:900px){ .quote-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:580px){ .quote-grid{ grid-template-columns:1fr; } }

/* ---------- ACCORDION ---------- */
.accordion{ max-width:820px; margin:0 auto; border-top:1px solid var(--line); }
.acc-item{ border-bottom:1px solid var(--line); }
.acc-q{
  width:100%; background:none; border:none; text-align:left; cursor:pointer;
  padding:24px 44px 24px 0; font-family:'Fraunces',serif; font-size:19px; color:var(--ink);
  position:relative;
}
.acc-q::after{
  content:''; position:absolute; right:6px; top:50%; width:11px; height:11px;
  border-right:1.5px solid var(--wine); border-bottom:1.5px solid var(--wine);
  transform:translateY(-70%) rotate(45deg); transition:transform .35s ease;
}
.acc-item.open .acc-q::after{ transform:translateY(-30%) rotate(225deg); }
.acc-a{ max-height:0; overflow:hidden; transition:max-height .45s ease; }
.acc-a p{ margin:0 0 24px; font-size:15px; color:var(--ink-soft); max-width:680px; }

/* ---------- BOOKING BAND ---------- */
.book-band{ background:var(--ink); color:var(--ivory); text-align:center; padding:100px 0; }
.book-band .eyebrow{ color:var(--gold-light); justify-content:center; }
.book-band .eyebrow::before{ background:var(--gold-light); }
.book-band h2{ color:var(--ivory); font-size:clamp(32px,4.4vw,54px); margin-top:18px; max-width:680px; margin-left:auto; margin-right:auto; }
.book-band p{ color:rgba(250,245,236,0.68); max-width:480px; margin:20px auto 0; font-size:15.5px; }
.book-band .hero-ctas{ display:flex; gap:16px; flex-wrap:wrap; justify-content:center; margin-top:38px; }

/* ---------- CONTACT ---------- */
.contact-grid{ display:grid; grid-template-columns:0.85fr 1.15fr; gap:0; border:1px solid var(--line); }
.contact-info{ padding:56px 48px; background:var(--card); }
.contact-info h3{ font-size:15px; letter-spacing:0.08em; text-transform:uppercase; margin-bottom:22px; color:var(--wine); }
.info-row{ display:flex; gap:14px; margin-bottom:22px; align-items:flex-start; }
.info-row svg{ width:18px; height:18px; color:var(--wine); flex:none; margin-top:2px; }
.info-row div b{ display:block; font-size:14.5px; margin-bottom:3px; }
.info-row div span{ font-size:13.5px; color:var(--ink-soft); }
.hours-table{ width:100%; margin-top:4px; border-collapse:collapse; }
.hours-table td{ padding:5px 0; font-size:13.5px; color:var(--ink-soft); border-bottom:1px dashed var(--line); }
.hours-table td:last-child{ text-align:right; color:var(--ink); font-weight:500; }
.map-embed{ min-height:460px; background:var(--ivory-dim); position:relative; }
.map-embed iframe{ width:100%; height:100%; min-height:460px; border:0; filter:grayscale(35%) contrast(1.05); }
@media (max-width:900px){ .contact-grid{ grid-template-columns:1fr; } .map-embed{ min-height:320px;} .map-embed iframe{min-height:320px;} }

/* ---------- FORM ---------- */
.form-card{ background:var(--card); border:1px solid var(--line); padding:48px; }
.field{ margin-bottom:22px; }
.field label{ display:block; font-size:12px; letter-spacing:0.1em; text-transform:uppercase; font-weight:600; color:var(--ink-soft); margin-bottom:8px; }
.field input, .field select, .field textarea{
  width:100%; padding:14px 16px; border:1px solid var(--line); background:var(--ivory);
  font-family:inherit; font-size:15px; color:var(--ink); border-radius:2px; transition:border-color .3s;
}
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--wine); }
.field textarea{ min-height:130px; resize:vertical; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
@media (max-width:640px){ .field-row{ grid-template-columns:1fr; gap:0; } .form-card{ padding:30px 24px; } }
.form-note{ font-size:12.5px; color:var(--ink-soft); margin-top:4px; }

/* ---------- SMALL CARD GRID ---------- */
.mini-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.mini-card{ background:var(--card); border:1px solid var(--line); padding:32px 28px; }
.mini-card h3{ font-size:19px; margin-bottom:10px; }
.mini-card p{ font-size:14px; color:var(--ink-soft); margin:0; }
@media (max-width:860px){ .mini-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .mini-grid{ grid-template-columns:1fr; } }

/* ---------- FOOTER ---------- */
footer{ background:var(--wine-dark); color:rgba(250,245,236,0.75); padding:64px 0 30px; }
.foot-top{ display:flex; justify-content:space-between; gap:40px; flex-wrap:wrap; padding-bottom:44px; border-bottom:1px solid var(--line-on-wine); }
.foot-logo .name{ font-family:'Fraunces',serif; font-size:24px; color:var(--ivory); }
.foot-logo .sub{ font-size:9.5px; letter-spacing:0.28em; text-transform:uppercase; color:var(--gold-light); margin-top:6px; display:block; }
.foot-cols{ display:flex; gap:64px; flex-wrap:wrap; }
.foot-col h4{ font-family:'Inter',sans-serif; font-size:12px; letter-spacing:0.1em; text-transform:uppercase; color:var(--gold-light); margin-bottom:16px; font-weight:600; }
.foot-col li{ margin-bottom:10px; }
.foot-col a:hover{ color:var(--ivory); }
.foot-social{ display:flex; gap:14px; margin-top:16px; }
.foot-social a{
  width:36px; height:36px; border:1px solid var(--line-on-wine); border-radius:50%;
  display:flex; align-items:center; justify-content:center; transition:border-color .3s, background .3s;
}
.foot-social a:hover{ background:var(--gold-light); border-color:var(--gold-light); color:var(--wine-dark); }
.foot-social svg{ width:15px; height:15px; }
.foot-bottom{ display:flex; justify-content:space-between; padding-top:24px; font-size:12px; flex-wrap:wrap; gap:10px; }

/* ---------- UTILITIES ---------- */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .8s ease, transform .8s cubic-bezier(.2,.7,.2,1); }
.reveal.in{ opacity:1; transform:translateY(0); }

.skip{ position:absolute; left:-9999px; top:0; background:var(--wine); color:var(--ivory); padding:12px 20px; z-index:200; }
.skip:focus{ left:12px; top:12px; }

.rich p{ color:var(--ink-soft); font-size:16px; }
.rich h2{ font-size:clamp(26px,3vw,36px); margin-top:44px; margin-bottom:14px; }
.rich h3{ font-size:21px; margin-top:32px; margin-bottom:10px; }
.rich ul{ margin:14px 0; display:grid; gap:10px; }
.rich ul li{ display:flex; gap:12px; font-size:15px; color:var(--ink-soft); }
.rich ul li::before{ content:''; width:5px; height:5px; background:var(--gold); border-radius:50%; margin-top:10px; flex:none; }
.narrow{ max-width:800px; margin:0 auto; }

::selection{ background:var(--wine); color:var(--ivory); }
:focus-visible{ outline:2px solid var(--wine); outline-offset:3px; }

/* ---------- SERVICES DROPDOWN ---------- */
.has-sub{ position:relative; }
.has-sub > a .caret{
  display:inline-block; width:7px; height:7px; margin-left:7px;
  border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor;
  transform:translateY(-2px) rotate(45deg); transition:transform .3s ease;
}
.has-sub:hover > a .caret, .has-sub:focus-within > a .caret{ transform:translateY(0) rotate(225deg); }

.submenu{
  position:absolute; top:100%; left:-20px; min-width:264px;
  background:var(--card); border:1px solid var(--line);
  padding:10px 0; margin-top:14px;
  box-shadow:0 24px 44px -24px rgba(31,26,23,0.4);
  opacity:0; visibility:hidden; transform:translateY(8px);
  transition:opacity .28s ease, transform .28s ease, visibility .28s;
  z-index:60;
}
/* invisible bridge so the menu survives the gap under the link */
.submenu::before{ content:''; position:absolute; top:-20px; left:0; right:0; height:20px; }
.has-sub:hover .submenu, .has-sub:focus-within .submenu{
  opacity:1; visibility:visible; transform:translateY(0);
}
.submenu li a{
  display:block; padding:11px 24px; font-size:13.5px; color:var(--ink-soft);
  transition:background .25s ease, color .25s ease;
}
.submenu li a::after{ display:none; }
.submenu li a:hover{ background:var(--ivory-dim); color:var(--wine); }
.submenu li.sub-all{ border-top:1px solid var(--line); margin-top:8px; padding-top:4px; }
.submenu li.sub-all a{
  font-size:11.5px; font-weight:600; letter-spacing:0.1em; text-transform:uppercase; color:var(--wine);
}

@media (max-width:980px){
  .has-sub > a .caret{ display:none; }
  .submenu{
    position:static; opacity:1; visibility:visible; transform:none;
    min-width:0; background:transparent; border:none; box-shadow:none;
    padding:16px 0 0; margin:0 0 0 2px;
    border-left:1px solid var(--line); display:grid; gap:16px;
  }
  .submenu::before{ display:none; }
  .submenu li a{ padding:0 0 0 18px; font-size:15.5px; }
  .submenu li a:hover{ background:transparent; }
  .submenu li.sub-all{ border-top:none; margin-top:0; padding-top:0; }
}

/* Contact form feedback and spam trap */
.form-feedback{padding:16px;margin-bottom:22px;border:1px solid currentColor;line-height:1.6;}
.form-success{color:#285735;background:#f0f7ef;}
.form-error{color:var(--wine);background:#fff3f0;}
.contact-honeypot{display:none;}
