@import url('tokens.css');
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,600;0,700;0,800;1,500&family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400;1,500&family=Jost:wght@300;400;500;600&display=swap');

/* ============================================
   RESET
   ============================================ */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:auto; }
body{
  margin:0;
  background:var(--ivory);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--step-body);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; background:none; border:none; cursor:pointer; color:inherit; }
input,textarea,select{ font:inherit; }
h1,h2,h3,h4,p,figure{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }

::selection{ background:var(--burgundy); color:var(--ivory); }

:focus-visible{
  outline:2px solid var(--burgundy);
  outline-offset:4px;
}

.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

.skip-link{
  position:fixed; top:-60px; left:1rem; z-index:999;
  background:var(--ink); color:var(--ivory); padding:0.8rem 1.4rem;
  transition:top var(--dur-fast) var(--ease-soft);
}
.skip-link:focus{ top:1rem; }

/* ============================================
   TYPE UTILITIES
   ============================================ */
.eyebrow{
  font-family:var(--font-sans);
  font-size:var(--step-caption);
  letter-spacing:0.22em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--burgundy);
}
.eyebrow.on-dark{ color:var(--peach); }

.display{
  font-family:var(--font-display);
  font-weight:700;
  line-height:0.94;
  letter-spacing:-0.01em;
  text-transform:uppercase;
}
.display-serif{
  font-family:var(--font-serif);
  font-style:italic;
  font-weight:400;
  text-transform:none;
  letter-spacing:0;
}
.lede{
  font-family:var(--font-serif);
  font-size:var(--step-lead);
  line-height:1.35;
  font-weight:400;
}

.btn{
  display:inline-flex;
  align-items:center;
  gap:0.6em;
  font-family:var(--font-sans);
  font-size:var(--step-caption);
  letter-spacing:0.16em;
  text-transform:uppercase;
  font-weight:500;
  padding-bottom:0.35em;
  border-bottom:1px solid currentColor;
  position:relative;
  will-change:transform;
}
.btn .arrow{ transition:transform var(--dur-fast) var(--ease-soft); }
.btn:hover .arrow{ transform:translateX(6px); }
.btn-solid{
  border-bottom:none;
  background:var(--ink);
  color:var(--ivory);
  padding:1.05em 1.9em;
  border-radius:1px;
  transition:background var(--dur-fast) var(--ease-soft), transform var(--dur-fast) var(--ease-soft);
}
.btn-solid:hover{ background:var(--burgundy); }
.btn-solid.on-burgundy{ background:var(--ivory); color:var(--burgundy); }
.btn-solid.on-burgundy:hover{ background:var(--yellow); color:var(--ink); }

/* ============================================
   LAYOUT
   ============================================ */
.wrap{ max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter); }
.section{ position:relative; }
.section-pad{ padding-block:var(--space-xl); }

/* ============================================
   CUSTOM CURSOR
   ============================================ */
.cursor{
  position:fixed; top:0; left:0; width:14px; height:14px;
  border-radius:50%; background:var(--ink); pointer-events:none;
  z-index:9999; mix-blend-mode:difference; background-color:var(--ivory);
  transform:translate(-50%,-50%);
  transition:width var(--dur-fast) var(--ease-soft), height var(--dur-fast) var(--ease-soft), opacity 0.2s;
  display:none;
}
.cursor.active{
  width:84px; height:84px;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-sans); font-size:0.65rem; letter-spacing:0.14em;
  text-transform:uppercase; color:var(--ink); text-align:center;
}
@media (hover:hover) and (pointer:fine){
  .cursor{ display:block; }
  body{ cursor:none; }
  a,button{ cursor:none; }
}

/* ============================================
   PRELOADER
   ============================================ */
.preloader{
  position:fixed; inset:0; z-index:10000;
  background:var(--ivory);
  display:flex; align-items:center; justify-content:center;
  flex-direction:column; gap:1rem;
}
.preloader__word{
  font-family:var(--font-display); font-size:clamp(1.6rem,6vw,3rem);
  letter-spacing:0.06em; color:var(--ink); text-transform:uppercase;
}
.preloader__rule{ width:min(240px,60vw); height:1px; background:rgba(23,23,21,0.2); position:relative; overflow:hidden; }
.preloader__rule span{ position:absolute; inset:0; background:var(--burgundy); transform:scaleX(0); transform-origin:left; }

/* ============================================
   NAV
   ============================================ */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:900;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.4rem var(--gutter);
  transition:background var(--dur-fast) var(--ease-soft), color var(--dur-fast) var(--ease-soft), padding var(--dur-fast) var(--ease-soft), border-color var(--dur-fast) var(--ease-soft);
  color:var(--ink);
  border-bottom:1px solid transparent;
}
.nav.is-on-dark{ color:var(--ivory); }
.nav.is-chip{ background:rgba(245,240,232,0.88); backdrop-filter:blur(10px); border-color:rgba(23,23,21,0.1); color:var(--ink); }
.nav.is-scrolled{ padding:0.9rem var(--gutter); }
.nav__logo{ font-family:var(--font-display); font-size:1.15rem; letter-spacing:0.08em; text-transform:uppercase; }
.nav__links{ display:flex; gap:2.2rem; align-items:center; }
.nav__links a{
  font-size:0.78rem; letter-spacing:0.14em; text-transform:uppercase;
  position:relative; padding-bottom:3px;
}
.nav__links a::after{
  content:''; position:absolute; left:0; bottom:0; height:1px; width:100%;
  background:currentColor; transform:scaleX(0); transform-origin:right;
  transition:transform 0.4s var(--ease-soft);
}
.nav__links a:hover::after{ transform:scaleX(1); transform-origin:left; }
.nav__cta{ font-size:0.75rem; }
@media (max-width:920px){ .nav__links{ display:none; } }

.nav__burger{
  display:none; flex-direction:column; gap:5px; width:26px; z-index:1001;
}
.nav__burger span{ height:1px; background:currentColor; width:100%; transition:transform 0.35s var(--ease-soft), opacity 0.2s; }
@media (max-width:920px){ .nav__burger{ display:flex; } }

.mobile-menu{
  position:fixed; inset:0; background:var(--burgundy); color:var(--ivory);
  z-index:950; display:flex; flex-direction:column; justify-content:center;
  padding:2rem var(--gutter);
  transform:translateY(-100%);
  transition:transform 0.6s var(--ease-silk);
}
.mobile-menu.is-open{ transform:translateY(0); }
.mobile-menu a{
  font-family:var(--font-display); font-size:2.3rem; text-transform:uppercase;
  padding:0.4rem 0; display:block; border-bottom:1px solid rgba(245,240,232,0.15);
}
.mobile-menu__meta{ margin-top:2rem; font-family:var(--font-serif); font-style:italic; color:var(--peach); }

/* ============================================
   HERO
   ============================================ */
.hero{
  min-height:100svh; height:auto;
  position:relative; overflow:hidden;
  background:var(--ivory);
  display:flex; flex-direction:column; justify-content:space-between;
  padding-top:5.5rem;
}
.hero__photo{ position:absolute; inset:0; z-index:0; }
.hero__photo img{ width:100%; height:100%; object-fit:cover; }
.hero__photo::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(245,240,232,0.94) 0%, rgba(245,240,232,0.82) 26%, rgba(245,240,232,0.32) 56%, rgba(245,240,232,0.08) 78%, rgba(245,240,232,0.28) 100%);
}
.hero__center{
  flex:1; display:flex; flex-direction:column; justify-content:center;
  padding:2rem var(--gutter); position:relative; z-index:2;
}
.hero__logo-line{ font-family:var(--font-serif); font-style:italic; font-size:var(--step-lead); color:var(--burgundy); margin-bottom:0.6rem; }
.hero__headline{
  font-size:var(--step-h1);
  display:flex; flex-direction:column; gap:0.02em;
}
.hero__headline span{ display:block; overflow:hidden; }
.hero__headline span > em{ font-style:normal; display:inline-block; transform:translateY(110%); }
.hero__sub{ margin-top:var(--space-sm); max-width:36ch; }
@media (max-width:720px){
  .hero__photo::after{
    background:linear-gradient(180deg, rgba(245,240,232,0.35) 0%, rgba(245,240,232,0.9) 55%, rgba(245,240,232,0.97) 100%);
  }
}
.hero__bottom{
  position:relative; z-index:2;
  display:flex; align-items:flex-end; justify-content:space-between; flex-wrap:wrap; gap:1.4rem;
  padding:0 var(--gutter) clamp(2rem, 4vh, 3.2rem);
}
.hero__ctas{ display:flex; gap:2.4rem; align-items:center; flex-wrap:wrap; }
.hero__scroll{
  writing-mode:vertical-rl; font-size:0.72rem; letter-spacing:0.2em; text-transform:uppercase;
  display:flex; align-items:center; gap:0.6rem; color:var(--ink-soft);
}
.hero__scroll-line{ width:1px; height:52px; background:var(--ink-soft); position:relative; overflow:hidden; }
.hero__scroll-line span{ position:absolute; top:-100%; left:0; width:100%; height:100%; background:var(--burgundy); animation:scrollLine 2.2s ease-in-out infinite; }
@keyframes scrollLine{ 0%{ top:-100%; } 50%{ top:0; } 100%{ top:100%; } }

/* ============================================
   MANIFESTO / SECTION 02
   ============================================ */
.manifesto{ background:var(--ivory); }
.manifesto__grid{
  display:grid; grid-template-columns:1fr 1fr; gap:var(--space-md);
  align-items:end;
}
.manifesto__word-old{ font-size:var(--step-h2); color:var(--sage); position:relative; }
.manifesto__word-old .strike{
  position:absolute; left:-4%; top:48%; width:108%; height:2px; background:var(--burgundy);
  transform:scaleX(0); transform-origin:left;
}
.manifesto__word-new{ font-size:var(--step-h2); color:var(--ink); margin-top:0.6rem; }
.manifesto__copy{ max-width:40ch; }
.manifesto__copy p{ margin-bottom:var(--space-sm); }
@media (max-width:860px){
  .manifesto__grid{ grid-template-columns:1fr; }
}

/* ============================================
   ATELIER
   ============================================ */
.atelier{ background:var(--ink); color:var(--ivory); overflow:hidden; }
.atelier__inner{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:0; min-height:88vh; }
.atelier__scene{
  position:relative; background:var(--burgundy-deep);
  overflow:hidden;
}
.atelier__scene img{ width:100%; height:100%; object-fit:cover; display:block; }
.atelier__content{ display:flex; flex-direction:column; justify-content:center; padding:var(--space-lg) var(--space-md); gap:var(--space-sm); }
.atelier__addr{ margin-top:var(--space-sm); font-family:var(--font-serif); font-style:italic; font-size:var(--step-lead); color:var(--peach); }
.atelier__addr span{ display:block; }
@media (max-width:860px){
  .atelier__inner{ grid-template-columns:1fr; }
  .atelier__scene{ min-height:52vh; padding:var(--space-md); }
}

/* ============================================
   COLLECTIONS — horizontal editorial gallery
   ============================================ */
.collections{ background:var(--ivory); padding-block:var(--space-xl) var(--space-lg); }
.collections__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:2rem; flex-wrap:wrap; margin-bottom:var(--space-md); }
.collections__track{
  display:flex; gap:1.6rem; overflow-x:auto; padding:0.5rem var(--gutter) 2rem; margin:0 calc(var(--gutter) * -1);
  scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch;
}
.collections__track::-webkit-scrollbar{ height:4px; }
.collections__track::-webkit-scrollbar-thumb{ background:rgba(23,23,21,0.2); }
.collection-card{
  flex:0 0 min(74vw,420px); scroll-snap-align:start;
  position:relative; overflow:hidden;
  display:flex; flex-direction:column;
}
.collection-card__visual{
  aspect-ratio:3/4; position:relative; overflow:hidden;
}
.collection-card__visual img{ width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease-silk); }
.collection-card:hover .collection-card__visual img{ transform:scale(1.08); }
.collection-card__visual::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(23,23,21,0) 55%, rgba(23,23,21,0.55) 100%);
}
.collection-card__tag{ z-index:2; }
.collection-card__tag{
  position:absolute; top:1.1rem; left:1.1rem; font-size:0.68rem; letter-spacing:0.18em; text-transform:uppercase;
}
.collection-card__meta{ padding-top:1.2rem; }
.collection-card__name{ font-size:var(--step-h3); }
.collection-card__line{
  font-family:var(--font-serif); font-style:italic; font-size:var(--step-lead); margin-top:0.3rem;
}
.collection-card__ctx{
  margin-top:0.7rem; font-size:0.85rem; opacity:0; max-height:0; overflow:hidden;
  transition:opacity 0.4s var(--ease-soft), max-height 0.4s var(--ease-soft);
}
.collection-card:hover .collection-card__ctx, .collection-card:focus-within .collection-card__ctx{ opacity:1; max-height:3rem; }

.collection-card__tag{ color:var(--ivory); text-shadow:0 1px 6px rgba(0,0,0,0.35); }

/* ============================================
   MEMORY
   ============================================ */
.memory{ background:var(--paris-blue); color:var(--ivory); }
.memory__head{ text-align:center; max-width:22ch; margin-inline:auto; }
.memory__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:rgba(245,240,232,0.14); margin-top:var(--space-lg); }
.memory-story{ background:var(--paris-blue); padding:var(--space-md) var(--space-sm); display:flex; flex-direction:column; gap:1.2rem; min-height:460px; }
.memory-story__num{ font-family:var(--font-display); font-size:0.85rem; color:var(--yellow); }
.memory-story__visual{ flex:1; position:relative; overflow:hidden; margin:0 calc(var(--space-sm) * -1); }
.memory-story__visual img{ width:100%; height:100%; object-fit:cover; position:absolute; inset:0; transition:transform 1.2s var(--ease-silk); }
.memory-story:hover .memory-story__visual img{ transform:scale(1.06); }
.memory-story__quote{ font-family:var(--font-serif); font-style:italic; font-size:var(--step-lead); }
@media (max-width:860px){ .memory__grid{ grid-template-columns:1fr; } .memory-story{ min-height:320px; } }

/* ============================================
   PARIS EDIT
   ============================================ */
.paris-edit{ background:var(--ivory); }
.paris-edit__grid{ display:grid; grid-template-columns:1fr 1fr; gap:var(--space-md); align-items:center; }
.paris-edit__map{ position:relative; aspect-ratio:4/3; background:var(--ivory-deep); overflow:hidden; }
.paris-edit__map img{ width:100%; height:100%; object-fit:cover; }
.paris-edit__caption{
  position:absolute; left:1.4rem; bottom:1.4rem; color:var(--ivory);
  font-family:var(--font-serif); font-style:italic; font-size:1.1rem;
  text-shadow:0 2px 10px rgba(0,0,0,0.45);
}
@media (max-width:860px){ .paris-edit__grid{ grid-template-columns:1fr; } }

/* ============================================
   MAKING OF A BOUQUET — signature sequence
   ============================================ */
.making{ background:var(--ink); color:var(--ivory); height:420vh; position:relative; }
.making__pin{ position:sticky; top:0; height:100vh; display:flex; flex-direction:column; overflow:hidden; }
.making__head{ padding:var(--space-md) var(--gutter) 0; margin-bottom:1rem; }
.making__stage{
  flex:1; position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:1.6rem; padding:1.5rem var(--gutter);
}
.making__visual{ position:relative; width:min(74vw,640px); aspect-ratio:3/2; box-shadow:0 40px 90px rgba(0,0,0,0.4); }
.making__frame{
  position:absolute; inset:0; opacity:0; transition:opacity 0.9s var(--ease-soft);
}
.making__frame.is-active{ opacity:1; }
.making__frame img{ width:100%; height:100%; object-fit:cover; }
.making__label{
  font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.05em;
  font-size:clamp(1.1rem,2.6vw,1.8rem); text-align:center;
}
.making__index{ font-size:0.75rem; letter-spacing:0.2em; color:var(--peach); text-transform:uppercase; text-align:center; }
.making__progress{ position:absolute; bottom:var(--space-md); left:var(--gutter); right:var(--gutter); height:1px; background:rgba(245,240,232,0.18); }
.making__progress span{ position:absolute; top:0; left:0; height:100%; background:var(--yellow); width:0%; transition:width 0.2s linear; }
.making__final{ text-align:center; padding:0 var(--gutter) var(--space-lg); }

/* ============================================
   ELISE
   ============================================ */
.elise{ background:var(--ivory); }
.elise__grid{ display:grid; grid-template-columns:0.85fr 1.15fr; gap:var(--space-md); align-items:center; }
.elise__portrait{ position:relative; aspect-ratio:3/4; background:var(--sage); overflow:hidden; }
.elise__portrait img{ width:100%; height:100%; object-fit:cover; }
.elise__quote{ font-family:var(--font-serif); font-style:italic; font-size:var(--step-h3); line-height:1.3; color:var(--burgundy); }
.elise__byline{ margin-top:var(--space-sm); }
.elise__byline strong{ display:block; font-family:var(--font-display); font-size:1rem; text-transform:uppercase; letter-spacing:0.04em; }
.elise__story{ margin-top:var(--space-sm); max-width:52ch; }
@media (max-width:860px){ .elise__grid{ grid-template-columns:1fr; } }

/* ============================================
   FLOWER OF THE WEEK
   ============================================ */
.fow{ background:var(--peach); overflow:hidden; }
.fow__grid{ display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:var(--space-md); }
.fow__visual{ position:relative; aspect-ratio:1/1; overflow:hidden; border-radius:2px; }
.fow__visual img{ width:100%; height:100%; object-fit:cover; transition:transform 2.4s var(--ease-silk); }
.fow.is-in .fow__visual img{ transform:scale(1.12); }
.fow__meta{ margin-top:var(--space-sm); display:grid; grid-template-columns:1fr 1fr; gap:1rem 2rem; }
.fow__meta dt{ font-size:0.68rem; letter-spacing:0.16em; text-transform:uppercase; opacity:0.7; }
.fow__meta dd{ margin:0.2rem 0 0; font-family:var(--font-serif); font-style:italic; font-size:1.15rem; }
@media (max-width:860px){ .fow__grid{ grid-template-columns:1fr; } }

/* ============================================
   SERVICES
   ============================================ */
.services__list{ border-top:var(--border-hair); }
.service-row{
  display:grid; grid-template-columns:80px 1fr 1.4fr; gap:2rem; align-items:baseline;
  padding:var(--space-sm) 0; border-bottom:var(--border-hair);
  transition:background var(--dur-fast) var(--ease-soft);
}
.service-row:hover{ background:rgba(74,24,34,0.03); }
.service-row__num{ font-family:var(--font-display); color:var(--sage); font-size:1.1rem; }
.service-row__name{ font-size:var(--step-h3); }
.service-row__desc{ max-width:48ch; }
@media (max-width:760px){
  .service-row{ grid-template-columns:1fr; gap:0.5rem; }
}

/* ============================================
   NEWSLETTER
   ============================================ */
.letter{ background:var(--burgundy); color:var(--ivory); }
.letter__grid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:var(--space-md); align-items:center; }
.letter__form{ display:flex; gap:0; border-bottom:1px solid rgba(245,240,232,0.4); padding-bottom:0.8rem; max-width:460px; }
.letter__form input{ flex:1; background:transparent; border:none; color:var(--ivory); font-size:1.05rem; padding:0.4rem 0; }
.letter__form input::placeholder{ color:rgba(245,240,232,0.55); }
.letter__form button{ font-size:0.75rem; letter-spacing:0.14em; text-transform:uppercase; white-space:nowrap; }
.letter__small{ margin-top:0.8rem; font-size:0.78rem; opacity:0.6; }
.letter__note{ padding:0.8rem; font-size:0.85rem; opacity:0; height:0; overflow:hidden; transition:opacity 0.3s, height 0.3s; }
.letter__note.is-shown{ opacity:1; height:auto; margin-top:0.8rem; }
@media (max-width:860px){ .letter__grid{ grid-template-columns:1fr; } }

/* ============================================
   TESTIMONIALS
   ============================================ */
.testimonials{ background:var(--ivory); position:relative; overflow:hidden; }
.testimonials__stage{ position:relative; min-height:420px; display:flex; align-items:center; justify-content:center; }
.testimonials__flower{ width:min(40vw,320px); color:var(--sage); opacity:0.5; }
.testimonial{
  position:absolute; max-width:280px; font-family:var(--font-serif); font-style:italic; font-size:1.2rem;
}
.testimonial cite{ display:block; margin-top:0.6rem; font-family:var(--font-sans); font-style:normal; font-size:0.72rem; letter-spacing:0.1em; text-transform:uppercase; opacity:0.65; }
.t-1{ top:6%; left:2%; }
.t-2{ bottom:10%; right:0%; text-align:right; }
@media (max-width:760px){
  .testimonials__stage{ flex-direction:column; gap:2rem; min-height:auto; padding-block:var(--space-md); }
  .testimonial{ position:static; max-width:44ch; text-align:left !important; }
  .testimonials__flower{ display:none; }
}

/* ============================================
   ATELIER JOURNAL / INSTAGRAM
   ============================================ */
.journal{ background:var(--ivory); }
.journal__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:rgba(23,23,21,0.1); margin-top:var(--space-md); }
.journal-item{ aspect-ratio:1/1; background:var(--ivory-deep); position:relative; overflow:hidden; }
.journal-item img{ width:100%; height:100%; object-fit:cover; transition:transform 0.6s var(--ease-soft); }
.journal-item:hover img{ transform:scale(1.1); }
.journal-item__cap{
  position:absolute; left:0.8rem; bottom:0.8rem; font-size:0.68rem; letter-spacing:0.08em;
  background:rgba(23,23,21,0.75); color:var(--ivory); padding:0.3rem 0.6rem;
}
@media (max-width:760px){ .journal__grid{ grid-template-columns:repeat(2,1fr); } }

/* ============================================
   FINAL CTA
   ============================================ */
.finale{
  background:var(--burgundy-deep); color:var(--ivory); text-align:center; position:relative; overflow:hidden;
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--space-sm);
}
.finale__photo{ position:absolute; inset:0; z-index:0; }
.finale__photo img{ width:100%; height:100%; object-fit:cover; opacity:0.55; }
.finale__photo::after{ content:''; position:absolute; inset:0; background:radial-gradient(circle at 50% 50%, rgba(51,16,26,0.35), rgba(51,16,26,0.88) 75%); }
.finale__headline{ position:relative; z-index:2; font-size:var(--step-h1); }
.finale__sub{ position:relative; z-index:2; max-width:44ch; }
.finale__ctas{ position:relative; z-index:2; display:flex; gap:1.6rem; flex-wrap:wrap; justify-content:center; margin-top:1rem; }

/* ============================================
   CONTACT
   ============================================ */
.contact{ background:var(--ivory); }
.contact__grid{ display:grid; grid-template-columns:0.8fr 1.2fr; gap:var(--space-lg); }
.contact__info dl{ margin-top:var(--space-sm); }
.contact__info dt{ font-size:0.7rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--sage); margin-top:1.4rem; }
.contact__info dd{ margin:0.25rem 0 0; font-family:var(--font-serif); font-size:1.2rem; }
.contact__info a:hover{ color:var(--burgundy); }

.field{ margin-bottom:1.4rem; }
.field label{ display:block; font-size:0.75rem; letter-spacing:0.08em; text-transform:uppercase; margin-bottom:0.5rem; color:var(--ink-soft); }
.field input, .field select, .field textarea{
  width:100%; border:none; border-bottom:1px solid rgba(23,23,21,0.25);
  background:transparent; padding:0.6rem 0.1rem; font-size:1rem;
  transition:border-color var(--dur-fast) var(--ease-soft);
}
.field input:focus, .field select:focus, .field textarea:focus{ border-color:var(--burgundy); }
.field textarea{ resize:vertical; min-height:100px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:1.4rem; }
.field-error{ display:none; color:var(--burgundy); font-size:0.78rem; margin-top:0.3rem; }
.field.has-error input, .field.has-error select, .field.has-error textarea{ border-color:var(--burgundy); }
.field.has-error .field-error{ display:block; }
.form-status{ margin-top:1rem; font-family:var(--font-serif); font-style:italic; font-size:1.1rem; display:none; }
.form-status.is-shown{ display:block; }
@media (max-width:860px){ .contact__grid{ grid-template-columns:1fr; } .field-row{ grid-template-columns:1fr; } }

/* ============================================
   FOOTER
   ============================================ */
.site-footer{ background:var(--ink); color:var(--ivory); }
.site-footer__grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:var(--space-md); padding-block:var(--space-lg); }
.site-footer__brand{ font-family:var(--font-display); font-size:1.5rem; text-transform:uppercase; }
.site-footer__tag{ font-family:var(--font-serif); font-style:italic; color:var(--peach); margin-top:0.4rem; }
.site-footer h4{ font-size:0.72rem; letter-spacing:0.16em; text-transform:uppercase; color:var(--sage); margin-bottom:1rem; }
.site-footer li{ margin-bottom:0.6rem; }
.site-footer a:hover{ color:var(--peach); }
.site-footer__bottom{
  border-top:1px solid rgba(245,240,232,0.12); padding:1.4rem var(--gutter);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:0.8rem;
  font-size:0.78rem; opacity:0.7;
}
@media (max-width:760px){ .site-footer__grid{ grid-template-columns:1fr 1fr; } }

/* ============================================
   BACK TO TOP
   ============================================ */
.to-top{
  position:fixed; right:1.4rem; bottom:1.4rem; z-index:850;
  width:48px; height:48px; border-radius:50%;
  background:var(--ink); color:var(--ivory);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transform:translateY(12px);
  transition:opacity 0.35s var(--ease-soft), transform 0.35s var(--ease-soft), background 0.25s;
}
.to-top.is-shown{ opacity:1; visibility:visible; transform:translateY(0); }
.to-top:hover{ background:var(--burgundy); }
.to-top svg{ width:18px; height:18px; }

/* ============================================
   COOKIE BANNER
   ============================================ */
.cookie-banner{
  position:fixed; left:1rem; right:1rem; bottom:1rem; z-index:998;
  max-width:640px; margin-inline:auto;
  background:var(--ink); color:var(--ivory);
  padding:1.6rem; display:flex; flex-direction:column; gap:1rem;
  transform:translateY(140%); transition:transform 0.6s var(--ease-silk);
  box-shadow:0 20px 60px rgba(0,0,0,0.25);
}
.cookie-banner.is-shown{ transform:translateY(0); }
.cookie-banner p{ font-size:0.88rem; opacity:0.85; }
.cookie-banner__actions{ display:flex; gap:0.8rem; flex-wrap:wrap; }
.cookie-banner__actions button{ font-size:0.74rem; letter-spacing:0.08em; text-transform:uppercase; padding:0.7em 1.2em; border:1px solid rgba(245,240,232,0.4); }
.cookie-banner__actions .btn-solid{ border:none; }

/* ============================================
   SIMPLE PAGE (legal / 404)
   ============================================ */
.simple-page{ padding-top:calc(var(--space-xl) + 3rem); padding-bottom:var(--space-xl); min-height:70vh; }
.simple-page h1{ font-family:var(--font-display); font-size:var(--step-h2); text-transform:uppercase; margin-bottom:var(--space-sm); }
.simple-page h2{ font-family:var(--font-display); font-size:var(--step-h3); text-transform:uppercase; margin-top:var(--space-md); margin-bottom:0.8rem; }
.simple-page p, .simple-page li{ max-width:70ch; margin-bottom:1rem; }
.simple-page ul{ list-style:disc; padding-left:1.4rem; }
.simple-page .notice{ background:var(--ivory-deep); border-left:3px solid var(--burgundy); padding:1rem 1.4rem; margin:1.5rem 0; font-size:0.92rem; }

.error-page{
  min-height:100svh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; gap:1.4rem; padding:2rem;
}
.error-page__flower{ width:140px; color:var(--burgundy); }

/* ============================================
   REVEAL UTILITY
   ============================================ */
[data-reveal]{ opacity:0; transform:translateY(36px); }
[data-reveal].is-visible{ opacity:1; transform:translateY(0); transition:opacity 1s var(--ease-silk), transform 1s var(--ease-silk); }

/* ============================================
   REDUCED MOTION
   ============================================ */
@media (prefers-reduced-motion: reduce){
  *{ animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.15s !important; scroll-behavior:auto !important; }
  [data-reveal]{ opacity:1; transform:none; }
}
