 /* ============================================================
       WHISPER & CREAM — Airy Japandi Minimalism
       Palette: warm linen whites, cream, taupe, dark chocolate
       Typography: Playfair Display + DM Sans
       ============================================================ */

 *,
 *::before,
 *::after {
   box-sizing: border-box;
   margin: 0;
   padding: 0;
 }

 :root {
   --bg: #faf7f2;
   --bg-alt: #f5f1ea;
   --bg-dark: #2e2318;
   --cream: #f0ebe0;
   --border: #ddd5c4;
   --taupe: #9e8b72;
   --taupe: #547B4D;
   --choc: #3d2a18;
   --choc-lt: #5c3d22;
   --muted: #14110e;
   --rose: #f0ddd6;
   --rose-dk: #8a5a4a;
   --white: #fdfaf6;
   --radius: 20px;
 }

 html {
   scroll-behavior: smooth;
 }

 body {
   font-family: 'DM Sans', sans-serif;
   font-size: 16px;
   background: var(--bg);
   color: var(--choc);
   -webkit-font-smoothing: antialiased;
   overflow-x: hidden;
 }

 h1,
 h2,
 h3,
 h4,
 h5 {
   font-family: 'Libre Baskerville', serif;
   font-weight: 500;
   line-height: 1.1;
 }

 img {
   display: block;
   max-width: 100%;
 }

 a {
   text-decoration: none;
   color: inherit;
 }

 .container {
   width: 100%;
   max-width: 1280px;
   margin: 0 auto;
   padding: 0 1.25rem;
 }

 @media (min-width: 640px) {
   .container {
     padding: 0 1.75rem;
   }
 }

 @media (min-width: 1024px) {
   .container {
     padding: 0 2.5rem;
   }
 }

 /* ── Fade-up animation ── */
 .fade-up {
   opacity: 0;
   transform: translateY(28px);
   transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
     transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
   will-change: opacity, transform;
 }

 .fade-up.visible {
   opacity: 1;
   transform: translateY(0);
   border-radius: 20px;
 }

 .fade-up.delay-1 {
   transition-delay: 0.08s;
 }

 .fade-up.delay-2 {
   transition-delay: 0.16s;
 }

 .fade-up.delay-3 {
   transition-delay: 0.24s;
 }

 .fade-up.delay-4 {
   transition-delay: 0.32s;
 }

 .fade-up.delay-5 {
   transition-delay: 0.40s;
 }

 /* ── Hairline ── */
 .hairline {
   height: 1px;
   background: var(--border);
 }

 /* ── Stamp circle ── */
 .stamp {
   border-radius: 50%;
   border: 1px solid var(--taupe);
   display: flex;
   align-items: center;
   justify-content: center;
   flex-direction: column;
   text-align: center;
 }

 /* ============================================================
       NAVBAR
       ============================================================ */
 #navbar {
   position: fixed;
   top: 0;
   left: 0;
   right: 0;
   z-index: 100;
   transition: background 0.4s, box-shadow 0.4s;
 }

 #navbar.scrolled {
   background: rgba(250, 247, 242, 0.94);
   backdrop-filter: blur(12px);
   box-shadow: 0 1px 0 var(--border);
 }

 .nav-inner {
   display: flex;
   align-items: center;
   justify-content: space-between;
   height: 68px;
 }

 .nav-logo {
   display: flex;
   align-items: center;
   gap: 10px;
 }

 .nav-logo .stamp {
   width: 36px;
   height: 36px;
   flex-shrink: 0;
 }

 .nav-logo .stamp span {
   font-family: 'Libre Baskerville', serif;
   font-size: 15px;
   font-weight: 600;
   color: var(--choc-lt);
   letter-spacing: 0;
 }

 .nav-logo-text .name {
   display: block;
   font-family: 'Libre Baskerville', serif;
   font-size: 15px;
   font-weight: 600;
   color: var(--taupe);
   letter-spacing: 0.02em;
 }

 .nav-logo-text .sub {
   display: block;
   font-size: 9px;
   letter-spacing: 0.18em;
   text-transform: uppercase;
   color: var(--muted);
   font-weight: 400;
 }

 .nav-links {
   display: flex;
   align-items: center;
   gap: 2rem;
   list-style: none;
 }

 .nav-links a {
   font-size: 14px;
   font-weight: 500;
   letter-spacing: 0.04em;
   color: var(--taupe-dk);
   position: relative;
   transition: color 0.2s;
 }

 .nav-links a::after {
   content: '';
   position: absolute;
   bottom: -2px;
   left: 0;
   height: 1px;
   width: 0;
   background: var(--taupe);
   transition: width 0.3s;
 }

 .nav-links a:hover {
   color: var(--choc);
 }

 .nav-links a:hover::after {
   width: 100%;
 }

 .btn-book-nav {
   padding: 8px 22px;
   border-radius: 999px;
   background: #547B4D;
   color: var(--white) !important;
   font-size: 14px;
   letter-spacing: 0.04em;
   transition: background 0.2s, transform 0.2s !important;
 }

 .btn-book-nav::after {
   display: none !important;
 }

 .btn-book-nav:hover {
   background: var(--choc) !important;
   transform: translateY(-1px);
 }

 /* Mobile nav */
 .nav-hamburger {
   display: none;
   background: none;
   border: none;
   cursor: pointer;
   padding: 6px;
   color: var(--choc-lt);
 }

 .nav-hamburger svg {
   display: block;
 }

 .mobile-menu {
   display: none;
   background: var(--bg);
   border-top: 1px solid var(--border);
   overflow: hidden;
   max-height: 0;
   transition: max-height 0.35s ease;
 }

 .mobile-menu.open {
   max-height: 300px;
 }

 .mobile-menu nav {
   padding: 1.25rem 1.25rem 1.5rem;
   display: flex;
   flex-direction: column;
   gap: 1rem;
 }

 .mobile-menu nav a {
   font-size: 15px;
   color: var(--choc-lt);
   padding: 4px 0;
 }

 @media (max-width: 767px) {
   .nav-links {
     display: none;
   }

   .nav-hamburger {
     display: block;
   }

   .mobile-menu {
     display: block;
   }
 }

 /* ============================================================
       HERO
       ============================================================ */
 #hero {
   position: relative;
   min-height: 100vh;
   display: flex;
   align-items: center;
   clip-path: inset(0);
   background: var(--bg);
 }

 .hero-bg {
   position: absolute;
   inset: 0;
   left: 40%;
 }

 .hero-bg img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   object-position: center;
 }

 .hero-bg::after {
   content: '';
   position: absolute;
   inset: 0;
   background: linear-gradient(to right, #faf7f2 30%, rgba(250, 247, 242, 0.7) 60%, transparent 100%);
 }

 .hero-content {
   position: relative;
   z-index: 1;
   padding-top: 100px;
   padding-bottom: 80px;
   max-width: 520px;
 }

 .hero-eyebrow {
   font-size: 12px;
   font-weight: 600;
   letter-spacing: 0.22em;
   text-transform: uppercase;
   color: var(--taupe);
   margin-bottom: 1.25rem;
   opacity: 0;
   transform: translateY(14px);
   animation: fadeUp 0.6s 0.15s ease forwards;
 }

 .hero-title {
   font-size: clamp(3.2rem, 7vw, 5.5rem);
   font-weight: 500;
   color: var(--choc);
   line-height: 1.05;
   margin-bottom: 1.25rem;
   opacity: 0;
   transform: translateY(20px);
   animation: fadeUp 0.75s 0.25s ease forwards;
 }

 .hero-title em {
   font-style: normal;
   color: var(--taupe);
 }

 .hero-rule {
   height: 1px;
   width: 56px;
   background: var(--taupe);
   margin-bottom: 1.25rem;
   opacity: 0;
   transform: scaleX(0);
   transform-origin: left;
   animation: scaleIn 0.5s 0.55s ease forwards;
   display: none;
 }

 .hero-desc {
   font-size: 18px;
   font-weight: 300;
   color: var(--muted);
   line-height: 1.7;
   max-width: 380px;
   margin-bottom: 2.25rem;
   opacity: 0;
   transform: translateY(14px);
   animation: fadeUp 0.65s 0.6s ease forwards;
 }

 .hero-ctas {
   display: flex;
   flex-wrap: wrap;
   gap: 1rem;
   opacity: 0;
   transform: translateY(14px);
   animation: fadeUp 0.65s 0.75s ease forwards;
 }

 .btn-primary {
   display: inline-flex;
   align-items: center;
   gap: 8px;
   padding: 14px 28px;
   border-radius: 999px;
   background: var(--taupe);
   color: var(--white);
   font-size: 14px;
   letter-spacing: 0.05em;
   font-weight: 500;
   transition: background 0.25s, transform 0.25s, box-shadow 0.25s;
 }

 .btn-primary:hover {
   background: var(--choc);
   transform: translateY(-2px);
   box-shadow: 0 6px 20px rgba(61, 42, 24, 0.18);
 }

 .btn-outline {
   display: inline-flex;
   align-items: center;
   gap: 8px;
   padding: 13px 28px;
   border-radius: 999px;
   border: 1px solid var(--border);
   color: var(--taupe-dk);
   font-size: 14px;
   font-weight: 500;
   letter-spacing: 0.05em;
   transition: border-color 0.25s, background 0.25s;
 }

 .btn-outline:hover {
   border-color: var(--taupe);
   background: var(--cream);
 }

 .scroll-cue {
   position: absolute;
   bottom: 2rem;
   left: 50%;
   transform: translateX(-50%);
   display: flex;
   flex-direction: column;
   align-items: center;
   gap: 4px;
   color: var(--taupe);
   opacity: 0;
   animation: fadeUp 0.6s 1.3s ease forwards;
 }

 .scroll-cue span {
   font-size: 11px;
   letter-spacing: 0.22em;
   text-transform: uppercase;
   font-weight: 600;
 }

 .scroll-cue svg {
   animation: bounce 1.8s ease-in-out infinite;
 }

 @media (max-width: 767px) {
   .hero-bg {
     left: 0;
   }

   .hero-bg::after {
     background: linear-gradient(to bottom, rgba(250, 247, 242, 0.5) 0%, #faf7f2 55%);
   }

   #hero {
     align-items: flex-end;
     min-height: 80vh;
   }

   .hero-content {
     padding-top: 0;
     padding-bottom: 120px;
   }

   .scroll-cue {
     position: absolute;
     left: 50%;
     margin-left: -28px;
   }
 }

 /* ============================================================
     ABOUT
       ============================================================ */
   #about {
     padding: 7rem 0;
     background: var(--bg-alt);
   }

   .about-grid {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: 5rem;
     align-items: center;
   }

   .about-img-wrap {
     position: relative;
   }

   .about-img-wrap img {
     width: 100%;
     aspect-ratio: 4/5;
     object-fit: cover;
     border-radius: var(--radius);
   }

   .about-stamp {
     position: absolute;
     bottom: -1.5rem;
     right: -1.5rem;
     width: 88px;
     height: 88px;
     background: var(--bg-alt);
     box-shadow: 0 4px 16px rgba(61, 42, 24, 0.12);
   }

   .about-stamp .est {
     font-size: 9px;
     letter-spacing: 0.15em;
     text-transform: uppercase;
     color: var(--muted);
   }

   .about-stamp .year {
     font-family: 'Libre Baskerville', serif;
     font-size: 22px;
     font-weight: 500;
     color: var(--choc-lt);
   }

   .about-text {
     display: flex;
     flex-direction: column;
     gap: 1.25rem;
   }

   .eyebrow {
     font-size: 12px;
     letter-spacing: 0.22em;
     text-transform: uppercase;
     color: var(--taupe);
     font-weight: 600;
   }

   .section-title {
     font-size: clamp(2rem, 4vw, 3.2rem);
     font-weight: 500;
     color: var(--choc);
   }

   .section-title em {
     font-style: italic;
     font-weight: 400;
     color: var(--taupe);
   }

   .short-rule {
     height: 1px;
     width: 48px;
     background: var(--taupe);
     display: none;
   }

   .body-text {
     font-size: 16px;
     /* font-weight: 300; */
     color: var(--muted);
     line-height: 1.75;
     display: none;
   }

   .stats-row {
     display: grid;
     grid-template-columns: repeat(3, 1fr);
     gap: 1rem;
     padding-top: 0.5rem;
   }

   .stat-num {
     font-family: 'Libre Baskerville', serif;
     font-size: 2rem;
     font-weight: 500;
     color: var(--taupe);
     display: block;
   }

   .stat-label {
     font-size: 14px;
     color: var(--muted);
     letter-spacing: 0.04em;
   }

   @media (max-width: 767px) {
     .about-grid {
       grid-template-columns: 1fr;
       gap: 3rem;
     }

     .about-stamp {
       right: 0.5rem;
     }
   }

   /* ============================================================
       MENU
       ============================================================ */
   #menu {
     padding: 7rem 0;
     background: var(--bg);
   }

   .menu-header {
     display: flex;
     flex-direction: column;
     gap: 1rem;
     margin-bottom: 3.5rem;
   }

   .menu-grid {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
     border: 1px solid var(--border);
     border-radius: var(--radius);
     overflow: hidden;
   }

   .menu-item {
     padding: 2rem;
     border-right: 1px solid var(--border);
     border-bottom: 1px solid var(--border);
     background: var(--bg);
     transition: background 0.25s;
     display: none;
   }

   .menu-item.active {
     display: block;
   }

   .menu-item:hover {
     background: var(--bg-alt);
   }

   .menu-item-info {
     grid-column: 1 / -1;
   }

   .menu-item-pair {
     grid-column: 1 / -1;
     display: grid;
     grid-template-columns: 1fr 1fr;
   }

   .menu-item-pair .menu-item {
     display: block;
   }

   .menu-item-header {
     display: flex;
     align-items: flex-start;
     justify-content: space-between;
     gap: 0.75rem;
     margin-bottom: 0.6rem;
   }

   .menu-item-name {
     font-family: 'Libre Baskerville', serif;
     font-size: 20px;
     font-weight: 600;
     color: var(--choc);
   }

   .menu-tag {
     flex-shrink: 0;
     font-size: 11px;
     font-weight: 600;
     letter-spacing: 0.15em;
     text-transform: uppercase;
     padding: 4px 10px;
     border-radius: 999px;
     background: #d1eacd;
     color: #476f40;
     white-space: nowrap;
   }

   .menu-item-desc {
     font-size: 16px;
     color: var(--muted);
     line-height: 1.65;
   }

   /* ============================================================
       BRAND STRIP
       ============================================================ */
   #brand-strip {
     position: relative;
     height: 320px;
     overflow: hidden;
   }

   @media (min-width: 768px) {
     #brand-strip {
       height: 580px;
     }
   }

   #brand-strip img {
     width: 100%;
     height: 100%;
     object-fit: cover;
     object-position: center;
   }

   .brand-strip-overlay {
     position: absolute;
     inset: 0;
     background: rgba(45, 32, 18, 0.42);
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: center;
     gap: 0.75rem;
   }

   .brand-strip-eyebrow {
     font-size: 12px;
     letter-spacing: 0.3em;
     font-weight: 600;
     text-transform: uppercase;
     color: rgba(253, 250, 246, 0.75);
   }

   .brand-strip-title {
     font-size: clamp(1.8rem, 4vw, 3.2rem);
     font-weight: 500;
     color: var(--white);
     text-align: center;
   }

   .brand-strip-title em {
     font-style: italic;
     font-weight: 400;
   }

   /* ============================================================
       CATERING
       ============================================================ */
   #catering {
     padding: 7rem 0;
     background: var(--bg-alt);
   }

   .catering-intro {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: 5rem;
     align-items: center;
     margin-bottom: 5rem;
   }

   @media (max-width: 767px) {
     .catering-intro {
       grid-template-columns: 1fr;
       gap: 3rem;
     }

     .catering-intro .catering-img {
       order: -1;
     }
   }

   .catering-img {
     overflow: hidden;
     border-radius: var(--radius);
     aspect-ratio: 4/3;
   }

   .catering-img img {
     width: 100%;
     height: 100%;
     object-fit: cover;
     transition: transform 0.7s ease;
   }

   .catering-img:hover img {
     transform: scale(1.04);
   }

   .event-types {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: 0.75rem;
     margin-top: 0.5rem;
   }

   .event-type-item {
     display: flex;
     align-items: center;
     gap: 10px;
     font-size: 15px;
     color: var(--muted);
   }

   .event-type-item svg {
     color: var(--taupe);
     flex-shrink: 0;
   }

   /* Packages */
   .packages-header {
     text-align: center;
     margin-bottom: 3rem;
   }

   .packages-header .eyebrow {
     margin-bottom: 0.5rem;
   }

   .packages-grid {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
     gap: 1.5rem;
   }

   .pkg-card {
     position: relative;
     display: flex;
     flex-direction: column;
     padding: 2.25rem;
     border-radius: var(--radius);
     border: 1px solid var(--border);
     background: var(--bg);
     transition: transform 0.3s, box-shadow 0.3s;
   }

   .pkg-card:hover {
     transform: translateY(-4px);
     box-shadow: 0 12px 32px rgba(61, 42, 24, 0.1);
   }

   .pkg-card.highlight {
     background: var(--choc-lt);
     border-color: var(--choc-lt);
     color: var(--white);
   }

   .pkg-badge {
     position: absolute;
     top: -12px;
     left: 50%;
     transform: translateX(-50%);
     font-size: 10px;
     letter-spacing: 0.18em;
     text-transform: uppercase;
     padding: 4px 14px;
     border-radius: 999px;
     background: #d1eacd;
     font-weight: 600;
     color: #476f40;
     white-space: nowrap;
   }

   .pkg-name {
     font-size: 1.6rem;
     font-weight: 500;
     margin-bottom: 0.25rem;
   }

   .pkg-guests {
     font-size: 15px;
     font-weight: 300;
     margin-bottom: 1.5rem;
   }

   .pkg-card.highlight .pkg-guests {
     color: rgba(253, 250, 246, 0.7);
   }

   .pkg-card:not(.highlight) .pkg-guests {
     color: var(--muted);
   }

   .pkg-features {
     list-style: none;
     display: flex;
     flex-direction: column;
     gap: 0.65rem;
     flex: 1;
     margin-bottom: 2rem;
   }

   .pkg-features li {
     display: flex;
     align-items: flex-start;
     gap: 10px;
     font-size: 16px;
   }

   .pkg-features li::before {
     content: '';
     width: 5px;
     height: 5px;
     border-radius: 50%;
     flex-shrink: 0;
     margin-top: 5px;
   }

   .pkg-card.highlight .pkg-features li::before {
     background: rgba(253, 250, 246, 0.5);
   }

   .pkg-card:not(.highlight) .pkg-features li::before {
     background: var(--taupe);
   }

   .pkg-cta {
     display: inline-flex;
     align-items: center;
     justify-content: center;
     padding: 10px 22px;
     border-radius: 999px;
     font-weight: 500;
     font-size: 14px;
     letter-spacing: 0.04em;
     transition: background 0.2s, border-color 0.2s;
   }

   .pkg-card.highlight .pkg-cta {
     background: var(--white);
     color: var(--choc-lt);
   }

   .pkg-card.highlight .pkg-cta:hover {
     background: var(--cream);
   }

   .pkg-card:not(.highlight) .pkg-cta {
     border: 1px solid var(--border);
     color: var(--taupe-dk);
   }

   .pkg-card:not(.highlight) .pkg-cta:hover {
     border-color: var(--taupe);
     background: var(--cream);
   }

   /* ============================================================
       TESTIMONIALS
       ============================================================ */
   #testimonials {
     padding: 6rem 0;
     background: var(--bg);
   }

   .testimonials-header {
     text-align: center;
     margin-bottom: 3.5rem;
   }

   .testimonials-header .eyebrow {
     margin-bottom: 0.5rem;
   }

   .testimonials-grid {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
     gap: 1.5rem;
   }

   .testimonial-card {
     display: flex;
     flex-direction: column;
     gap: 1rem;
     padding: 2rem;
     background: var(--bg-alt);
     border: 1px solid var(--border);
     border-radius: var(--radius);
   }

   .stars {
     display: flex;
     gap: 3px;
     color: #ff6c16;
   }

   .star {
     color: var(--taupe);
     font-size: 12px;
   }

   .testimonial-quote {
     font-size: 16px;
     font-style: italic;
     color: var(--taupe-dk);
     line-height: 1.65;
     flex: 1;
   }

   .testimonial-name {
     font-size: 15px;
     font-weight: 500;
     color: var(--taupe);
   }

   .testimonial-event {
     font-size: 13px;
     color: var(--muted);
     font-weight: 500;
   }

   /* ============================================================
       FAQ
       ============================================================ */
   #faq {
     padding: 6rem 0;
     background: var(--bg-alt);
   }

   .faq-header {
     text-align: center;
     margin-bottom: 3.5rem;
   }

   .faq-header .eyebrow {
     margin-bottom: 0.5rem;
   }

   .faq-grid {
     display: flex;
     flex-direction: column;
     gap: 0;
     max-width: 800px;
     margin: 0 auto;
   }

   .faq-item {
     border-bottom: 1px solid var(--border);
   }

   .faq-item:first-child {
     border-top: 1px solid var(--border);
   }

   .faq-item summary {
     list-style: none;
   }

   .faq-item summary::-webkit-details-marker {
     display: none;
   }

   .faq-question {
     display: flex;
     justify-content: space-between;
     align-items: center;
     padding: 1.4rem 0;
     font-family: 'Libre Baskerville', serif;
     font-size: 1rem;
     font-weight: 500;
     color: var(--choc);
     cursor: pointer;
     gap: 1rem;
     user-select: none;
   }

   .faq-question::after {
     content: '+';
     font-family: 'DM Sans', sans-serif;
     font-size: 1.4rem;
     font-weight: 300;
     color: var(--taupe);
     line-height: 1;
     flex-shrink: 0;
     transition: transform 0.25s ease;
   }

   .faq-item[open] .faq-question::after {
     transform: rotate(45deg);
   }

   .faq-answer {
     padding: 0 0 1.4rem;
     font-size: 15px;
     color: var(--muted);
     line-height: 1.75;
     max-width: 680px;
   }

   /* ============================================================
       BOOKING FORM
       ============================================================ */
   #booking {
     padding: 7rem 0;
     background: var(--bg-alt);
   }

   .booking-grid {
     display: grid;
     grid-template-columns: 1fr 1.1fr;
     gap: 5rem;
     align-items: start;
   }

   @media (max-width: 767px) {
     .booking-grid {
       grid-template-columns: 1fr;
       gap: 3rem;
     }
   }

   .booking-info {
     position: sticky;
     top: 100px;
   }

   .contact-list {
     display: flex;
     flex-direction: column;
     gap: 0.75rem;
     margin-top: 2.5rem;
   }

   .contact-item {
     display: flex;
     align-items: center;
     gap: 10px;
     font-size: 15px;
     color: var(--muted);
   }

   .contact-item svg {
     color: var(--taupe);
     flex-shrink: 0;
   }

   .booking-side-img {
     margin-top: 2.5rem;
     overflow: hidden;
     border-radius: var(--radius);
     aspect-ratio: 4/3;
   }

   .booking-side-img img {
     width: 100%;
     height: 100%;
     object-fit: cover;
   }

   @media (max-width: 767px) {
     .booking-side-img {
       display: none;
     }
   }

   /* Form */
   .booking-form-wrap {
     background: var(--bg);
     border: 1px solid var(--border);
     border-radius: var(--radius);
     padding: 2.5rem;
   }

   @media (min-width: 768px) {
     .booking-form-wrap {
       padding: 3rem;
     }
   }

   .form-row {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: 1.25rem;
   }

   @media (max-width: 479px) {
     .form-row {
       grid-template-columns: 1fr;
     }
   }

   .form-group {
     display: flex;
     flex-direction: column;
     gap: 6px;
     margin-bottom: 1.25rem;
   }

   .form-group:last-child {
     margin-bottom: 0;
   }

   .form-label {
     font-size: 12px;
     letter-spacing: 0.08em;
     font-weight: 500;
     text-transform: uppercase;
     color: var(--muted);
   }

   .form-input,
   .form-select,
   .form-textarea {
     width: 100%;
     padding: 10px 14px;
     border: 1px solid var(--border);
     border-radius: var(--radius);
     background: var(--bg-alt);
     font-family: 'DM Sans', sans-serif;
     font-size: 16px;
     font-weight: 300;
     color: var(--choc);
     outline: none;
     transition: border-color 0.2s, box-shadow 0.2s;
     appearance: none;
   }

   .form-input::placeholder,
   .form-textarea::placeholder {
     color: var(--taupe);
     opacity: 0.6;
   }

   .form-input:focus,
   .form-select:focus,
   .form-textarea:focus {
     border-color: var(--taupe);
     box-shadow: 0 0 0 3px rgba(158, 139, 114, 0.12);
   }

   .form-select-wrap {
     position: relative;
   }

   .form-select-wrap::after {
     content: '▾';
     position: absolute;
     right: 14px;
     top: 50%;
     transform: translateY(-50%);
     color: var(--taupe);
     pointer-events: none;
     font-size: 12px;
   }

   .form-textarea {
     resize: none;
   }

   .btn-submit {
     width: 100%;
     padding: 14px;
     border-radius: 999px;
     border: none;
     background: var(--taupe);
     color: var(--white);
     font-family: 'DM Sans', sans-serif;
     font-size: 16px;
     letter-spacing: 0.06em;
     cursor: pointer;
     transition: background 0.25s, transform 0.25s, box-shadow 0.25s;
     margin-top: 0.5rem;
   }

   .btn-submit:hover {
     background: var(--choc);
     transform: translateY(-2px);
     box-shadow: 0 6px 20px rgba(61, 42, 24, 0.18);
   }

   .btn-submit:disabled {
     opacity: 0.6;
     cursor: not-allowed;
     transform: none;
   }

   .form-note {
     text-align: center;
     font-size: 14px;
     color: var(--muted);
     margin-top: 0.75rem;
   }

   /* Success state */
   .form-success {
     display: none;
     flex-direction: column;
     align-items: center;
     justify-content: center;
     gap: 1.25rem;
     padding: 4rem 2rem;
     text-align: center;
   }

   .form-success.show {
     display: flex;
   }

   .success-icon {
     width: 60px;
     height: 60px;
     border-radius: 50%;
     background: var(--choc-lt);
     display: flex;
     align-items: center;
     justify-content: center;
     color: var(--white);
     font-size: 22px;
   }

   .success-title {
     font-size: 1.6rem;
     font-weight: 500;
     color: var(--choc);
   }

   .success-desc {
     font-size: 14px;
     font-weight: 300;
     color: var(--muted);
     max-width: 280px;
     line-height: 1.65;
   }

   .success-reset {
     font-size: 13px;
     color: var(--taupe);
     text-decoration: underline;
     text-underline-offset: 3px;
     cursor: pointer;
     background: none;
     border: none;
     font-family: 'DM Sans', sans-serif;
   }

   /* ============================================================
       FOOTER
       ============================================================ */
   footer {
     background: var(--bg-dark);
     color: rgba(240, 235, 224, 0.75);
     padding: 5rem 0 2.5rem;
   }

   .footer-grid {
     display: grid;
     grid-template-columns: 1.2fr 1fr 1fr;
     gap: 3rem;
     margin-bottom: 3rem;
   }

   @media (max-width: 767px) {
     .footer-grid {
       grid-template-columns: 1fr;
       gap: 2rem;
     }
   }

   .footer-brand-logo {
     display: flex;
     align-items: center;
     gap: 10px;
     margin-bottom: 1rem;
   }

   .footer-stamp {
     width: 32px;
     height: 32px;
     border-radius: 50%;
     border: 1px solid rgba(158, 139, 114, 0.5);
     display: flex;
     align-items: center;
     justify-content: center;
   }

   .footer-stamp span {
     font-family: 'Libre Baskerville', serif;
     font-size: 9px;
     font-weight: 500;
     color: rgba(240, 235, 224, 0.85);
   }

   .footer-brand-name {
     font-family: 'Libre Baskerville', serif;
     font-size: 15px;
     font-weight: 500;
     color: rgba(240, 235, 224, 0.9);
   }

   .footer-brand-name em {
     font-style: italic;
     font-weight: 400;
   }

   .footer-desc {
     font-size: 16px;
     /* font-weight: 300; */
     line-height: 1.7;
     color: rgba(240, 235, 224, 0.55);
   }

   .footer-col-title {
     font-size: 12px;
     letter-spacing: 0.18em;
     text-transform: uppercase;
     color: rgba(158, 139, 114, 0.7);
     margin-bottom: 1rem;
     font-weight: 500;
   }

   .footer-links {
     list-style: none;
     display: flex;
     flex-direction: column;
     gap: 0.6rem;
   }

   .footer-links a {
     font-size: 13px;
     color: rgba(240, 235, 224, 0.6);
     transition: color 0.2s;
   }

   .footer-links a:hover {
     color: rgba(240, 235, 224, 0.9);
   }

   .footer-contact-list {
     display: flex;
     flex-direction: column;
     gap: 0.75rem;
   }

   .footer-contact-item {
     display: flex;
     align-items: center;
     gap: 10px;
     font-size: 13px;
     color: rgba(240, 235, 224, 0.6);
     transition: color 0.2s;
   }

   .footer-contact-item:hover {
     color: rgba(240, 235, 224, 0.9);
   }

   .footer-contact-item svg {
     color: rgba(158, 139, 114, 0.7);
     flex-shrink: 0;
   }

   .footer-socials {
     display: flex;
     gap: 0.6rem;
     margin-top: 1rem;
   }

   .social-btn {
     width: 32px;
     height: 32px;
     border-radius: 50%;
     border: 1px solid rgba(158, 139, 114, 0.3);
     display: flex;
     align-items: center;
     justify-content: center;
     color: rgba(240, 235, 224, 0.55);
     transition: color 0.2s, border-color 0.2s;
   }

   .social-btn:hover {
     color: rgba(240, 235, 224, 0.9);
     border-color: rgba(158, 139, 114, 0.6);
   }

   .footer-bottom {
     border-top: 1px solid rgba(255, 255, 255, 0.07);
     padding-top: 1.5rem;
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: space-between;
     gap: 0.5rem;
     font-size: 14px;
     color: rgba(240, 235, 224, 0.35);
   }

   @media (min-width: 640px) {
     .footer-bottom {
       flex-direction: row;
     }
   }

   /* ============================================================
       KEYFRAMES
       ============================================================ */
   @keyframes fadeUp {
     from {
       opacity: 0;
       transform: translateY(18px);
     }

     to {
       opacity: 1;
       transform: translateY(0);
     }
   }

   @keyframes scaleIn {
     from {
       opacity: 0;
       transform: scaleX(0);
     }

     to {
       opacity: 1;
       transform: scaleX(1);
     }
   }

   @keyframes bounce {

     0%,
     100% {
       transform: translateY(0);
     }

     50% {
       transform: translateY(6px);
     }
   }

   /* ============================================================
       SVG ICONS (inline helper)
       ============================================================ */
   .icon {
     display: inline-block;
     vertical-align: middle;
   }