:root{
    --ivory:#FBF4EE;
    --ivory-deep:#F5E9E0;
    --blush:#F6E1E2;
    --paper:#FFFCF9;
    --rose-1:#E9B9BE;
    --rose-2:#C48793;
    --rose-3:#A85C68;
    --gold:#B8873C;
    --gold-soft:#D9B876;
    --plum:#3B2430;
    --plum-soft:#6E4C56;
    --line:rgba(59,36,48,0.14);
    --shadow: 0 20px 50px -25px rgba(88,45,58,0.35);
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--ivory);
    color:var(--plum);
    font-family:'Jost',sans-serif;
    font-weight:400;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    position:relative;
  }
  h1,h2,h3,.display{
    font-family:'Cormorant Garamond',serif;
    font-weight:500;
    letter-spacing:0.01em;
    margin:0;
    color:var(--plum);
  }
  .script{font-family:'Parisienne',cursive; font-weight:400;}
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;display:block;}
  .wrap{max-width:1180px;margin:0 auto;padding:0 32px;}
  .eyebrow{
    font-family:'Jost',sans-serif;
    font-size:12.5px;
    letter-spacing:0.32em;
    text-transform:uppercase;
    color:var(--rose-3);
    font-weight:500;
  }
  ::selection{background:var(--rose-1);color:var(--plum);}
  .reveal{opacity:0; transform:translateY(28px); transition:opacity .9s ease, transform .9s ease;}
  .reveal.is-visible{opacity:1; transform:translateY(0);}

  /* ---------- confetti ---------- */
  #confettiCanvas{
    position:fixed; inset:0; width:100vw; height:100vh;
    pointer-events:none; z-index:999;
  }

  /* ---------- nav ---------- */
  header{
    position:fixed; top:0; left:0; right:0; z-index:50;
    background:rgba(251,244,238,0.86);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
    transition:box-shadow .3s ease;
  }
  header.scrolled{box-shadow:0 8px 24px -18px rgba(59,36,48,0.4);}
  nav.wrap{ display:flex; align-items:center; justify-content:space-between; height:78px; }
  .brandmark{display:flex; align-items:center; gap:12px;}
  .brandmark img{height:46px; width:46px; border-radius:50%; object-fit:cover;}
  .brandmark span{ font-family:'Cormorant Garamond',serif; font-size:22px; letter-spacing:0.06em; font-weight:600; color:var(--plum); }
  .navlinks{display:flex; gap:32px; font-size:14px; letter-spacing:0.03em;}
  .navlinks a{position:relative; padding:6px 0; color:var(--plum-soft);}
  .navlinks a:hover{color:var(--rose-3);}
  .navlinks a::after{ content:''; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--gold); transition:width .3s ease; }
  .navlinks a:hover::after{width:100%;}
  .nav-cta{
    position:relative;
    display:inline-flex; align-items:center; gap:8px;
    padding:14px 28px 14px 22px; border-radius:999px;
    border:2px solid rgba(255,255,255,0.85);
    font-size:14px; letter-spacing:0.03em; font-weight:700; color:#fff;
    background:linear-gradient(135deg,var(--rose-2),var(--rose-3));
    box-shadow:0 12px 28px -8px rgba(168,92,104,0.85), 0 0 0 3px rgba(233,185,190,0.35);
    white-space:nowrap;
    animation:ctaPulse 2.4s ease-in-out infinite;
  }
  .nav-cta svg{width:17px; height:17px; flex-shrink:0;}
  .nav-cta::before{
    content:''; position:absolute; top:-3px; right:-3px; width:11px; height:11px;
    background:var(--gold-soft); border:2px solid #fff; border-radius:50%;
    animation:pingDot 1.8s ease-in-out infinite;
  }
  @keyframes pingDot{
    0%,100%{ transform:scale(1); opacity:1; }
    50%{ transform:scale(1.4); opacity:0.6; }
  }

  /* ---------- mobile hamburger + slide-down nav ---------- */
  .nav-actions{ display:flex; align-items:center; gap:18px; }
  .nav-toggle{
    display:none;
    position:relative;
    width:40px; height:40px;
    border:none; background:none; cursor:pointer;
    flex-direction:column; align-items:center; justify-content:center; gap:6px;
    z-index:210;
  }
  .nav-toggle span{
    display:block; width:24px; height:2px; background:var(--plum);
    border-radius:2px; transition:transform .3s ease, opacity .3s ease;
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(8px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-8px) rotate(-45deg); }

  .mobile-nav{
    display:flex;
    flex-direction:column;
    gap:4px;
    max-height:0;
    overflow:hidden;
    background:var(--ivory);
    border-bottom:1px solid var(--line);
    transition:max-height .4s ease;
  }
  .mobile-nav.is-open{ max-height:520px; }
  .mobile-nav a{
    padding:16px 24px;
    font-size:15px;
    color:var(--plum-soft);
    border-bottom:1px solid var(--line);
  }
  .mobile-nav a:hover{ color:var(--rose-3); }
  .mobile-nav .mobile-nav-cta{
    margin:16px 24px 20px;
    text-align:center;
    border-bottom:none;
    color:#fff !important;
  }

  body.nav-open{ overflow:hidden; }
  @keyframes ctaPulse{
    0%,100%{ box-shadow:0 12px 28px -8px rgba(168,92,104,0.85), 0 0 0 3px rgba(233,185,190,0.35); transform:scale(1); }
    50%{ box-shadow:0 18px 38px -6px rgba(168,92,104,1), 0 0 0 6px rgba(233,185,190,0.22); transform:scale(1.06); }
  }

  /* ---------- hero ---------- */
  .hero{
    position:relative; padding:168px 0 110px;
    background:
      radial-gradient(ellipse 60% 50% at 18% 15%, rgba(233,185,190,0.55), transparent 60%),
      radial-gradient(ellipse 55% 45% at 85% 20%, rgba(217,184,118,0.28), transparent 60%),
      var(--ivory);
    overflow:hidden;
  }
  .hero-grid{ display:grid; grid-template-columns:1.05fr 0.95fr; gap:64px; align-items:center; }
  .hero-eyebrow{display:flex; align-items:center; gap:14px; margin-bottom:26px;}
  .hero-eyebrow .rule{width:40px; height:1px; background:var(--gold);}
  .hero h1{ font-size:clamp(38px,5vw,62px); line-height:1.08; font-weight:500; }
  .hero h1 em{ font-style:italic; color:var(--rose-3); }
  .hero p.lede{ margin-top:26px; max-width:470px; font-size:17px; line-height:1.75; color:var(--plum-soft); }
  .hero-ctas{display:flex; gap:16px; margin-top:40px; flex-wrap:wrap;}
  .btn-primary{
    background:linear-gradient(135deg,var(--rose-2),var(--rose-3)); color:#fff; padding:16px 34px; border-radius:999px;
    font-size:14px; letter-spacing:0.05em; box-shadow:0 16px 30px -14px rgba(168,92,104,0.55);
    transition:transform .35s ease, box-shadow .35s ease; display:inline-block; border:none; cursor:pointer;
  }
  .btn-primary:hover{transform:translateY(-3px); box-shadow:0 22px 36px -14px rgba(168,92,104,0.6);}
  .btn-ghost{ padding:16px 30px; border-radius:999px; border:1px solid var(--line); font-size:14px; letter-spacing:0.05em; color:var(--plum); transition:border-color .3s ease, color .3s ease; }
  .btn-ghost:hover{border-color:var(--rose-3); color:var(--rose-3);}

  .hero-art{position:relative; height:540px;}
  .hero-art svg.balloon-field{position:absolute; inset:0; width:100%; height:100%;}
  .bob1{animation:bob 5.5s ease-in-out infinite;}
  .bob2{animation:bob 6.5s ease-in-out infinite .6s;}
  .bob3{animation:bob 7.2s ease-in-out infinite 1.1s;}
  @keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-16px);}}
  .invite-card{
    position:absolute; left:50%; top:50%; width:280px; transform:translate(-50%,-50%) rotate(-6deg);
    background:var(--paper); border-radius:4px; box-shadow:var(--shadow); padding:34px 26px 30px; text-align:center;
    animation:tilt 7s ease-in-out infinite; border:1px solid rgba(59,36,48,0.08);
  }
  .invite-card::before{ content:''; position:absolute; inset:10px; border:1px solid var(--rose-1); }
  @keyframes tilt{ 0%,100%{transform:translate(-50%,-50%) rotate(-6deg) translateY(0);} 50%{transform:translate(-50%,-50%) rotate(-4deg) translateY(-10px);} }
  .invite-seal{ width:56px; height:56px; border-radius:50%; margin:0 auto 16px; box-shadow:0 8px 16px -8px rgba(168,92,104,0.6); border:3px solid var(--paper); outline:1px solid var(--rose-2); }
  .invite-card p.k1{ font-family:'Jost',sans-serif; font-size:10.5px; letter-spacing:0.28em; text-transform:uppercase; color:var(--rose-3); margin:0 0 10px; }
  .invite-card p.k2{ font-family:'Cormorant Garamond',serif; font-style:italic; font-size:19px; line-height:1.5; color:var(--plum); margin:0 0 14px; }
  .invite-card p.k3{ font-size:11px; letter-spacing:0.05em; color:var(--plum-soft); margin:0; }
  .invite-card .rule2{width:34px; height:1px; background:var(--gold); margin:0 auto 14px;}

  .stat-strip{ margin-top:78px; padding-top:36px; border-top:1px solid var(--line); display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
  .stat-strip div h3{font-size:30px; color:var(--rose-3);}
  .stat-strip div p{margin:6px 0 0; font-size:12.5px; letter-spacing:0.05em; color:var(--plum-soft); text-transform:uppercase;}

  .hero-social-row{
    display:flex; flex-wrap:wrap; align-items:center; justify-content:center;
    gap:20px; margin-top:38px; padding-top:34px; border-top:1px solid var(--line);
  }
  .hero-social-row a{
    display:inline-flex; align-items:center; gap:12px;
    padding:10px 26px 10px 10px;
    border-radius:999px;
    background:#fff;
    border:1px solid var(--line);
    font-size:15.5px; font-weight:600; letter-spacing:0.01em; color:var(--plum);
    box-shadow:0 10px 22px -14px rgba(59,36,48,0.35);
    transition:transform .3s ease, box-shadow .3s ease, border-color .3s ease;
  }
  .hero-social-row a:hover{
    transform:translateY(-3px);
    border-color:var(--rose-2);
    box-shadow:0 16px 28px -12px rgba(168,92,104,0.5);
  }
  .hero-social-row .ic-circle{
    width:44px; height:44px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center; color:#fff;
  }
  .hero-social-row .ic-circle svg{ width:22px; height:22px; }
  .ic-ig{ background:linear-gradient(135deg,var(--rose-2),var(--rose-3)); }
  .ic-fb{ background:linear-gradient(135deg,var(--gold-soft),var(--gold)); }
  .ic-tiktok{ background:var(--plum); }
  .ic-yt{ background:linear-gradient(135deg,var(--rose-3),var(--plum)); }

  /* ---------- section shared ---------- */
  section{padding:120px 0;}
  .section-head{max-width:640px; margin:0 auto 56px; text-align:center;}
  .section-head .eyebrow-script{
    display:block; font-family:'Parisienne',cursive; font-size:26px; color:var(--rose-3); margin-bottom:6px;
  }
  .section-head h2{font-size:clamp(30px,3.6vw,44px); line-height:1.15; letter-spacing:0.04em;}
  .section-head .divider{ display:flex; align-items:center; justify-content:center; gap:12px; margin:18px auto 0; }
  .section-head .divider span{width:60px; height:1px; background:var(--gold);}
  .section-head .divider svg{width:16px; height:16px; color:var(--gold);}
  .section-head p{margin-top:18px; color:var(--plum-soft); font-size:16px; line-height:1.7;}

  /* ---------- story ---------- */
  .story{background:var(--ivory-deep);}
  .story-grid{display:grid; grid-template-columns:0.9fr 1.1fr; gap:70px; align-items:center;}
  .story-frame{ position:relative; border-radius:18px; overflow:hidden; box-shadow:var(--shadow); }
  .story-frame img{width:100%; height:auto;}
  .story h2{font-size:clamp(28px,3.4vw,38px); margin-bottom:22px;}
  .story p{color:var(--plum-soft); font-size:16px; line-height:1.85; margin-bottom:16px;}
  .story-values{display:flex; gap:30px; margin-top:34px; flex-wrap:wrap;}
  .story-values div{flex:1; min-width:150px;}
  .story-values h4{font-family:'Cormorant Garamond',serif; font-size:20px; color:var(--rose-3); margin-bottom:6px;}
  .story-values p{font-size:13.5px; margin:0; line-height:1.6;}

  /* ---------- OUR SERVICES (reference-matched) ---------- */
  .services-section{ position:relative; }
  .services-grid18{ display:grid; grid-template-columns:repeat(6,1fr); gap:20px; }
  .svc-card{
    background:#fff; border:1px solid var(--line); border-radius:16px; padding:28px 16px 24px;
    text-align:center; transition:transform .35s ease, box-shadow .35s ease, border-color .35s ease;
  }
  .svc-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); border-color:transparent; }
  .svc-card .icon-wrap{
    width:52px; height:52px; margin:0 auto 16px; border-radius:50%;
    background:linear-gradient(135deg,var(--rose-1),var(--rose-2));
    display:flex; align-items:center; justify-content:center;
  }
  .svc-card .icon-wrap svg{width:24px; height:24px;}
  .svc-card h4{ font-family:'Jost',sans-serif; font-size:14px; font-weight:500; line-height:1.4; color:var(--plum); }
  .svc-card .underline{width:22px; height:2px; background:var(--rose-2); margin:12px auto 0; border-radius:2px;}

  .cta-banner{
    margin-top:56px; border-radius:20px; padding:38px 44px;
    background:linear-gradient(120deg,var(--rose-2),var(--rose-3));
    display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
    box-shadow:var(--shadow); position:relative; overflow:hidden;
  }
  .cta-banner::after{
    content:''; position:absolute; inset:0; pointer-events:none;
    background:radial-gradient(circle at 85% 20%, rgba(255,255,255,0.18), transparent 55%);
  }
  .cta-banner h3{ font-family:'Parisienne',cursive; font-size:30px; color:#fff; font-weight:400; margin-bottom:8px; }
  .cta-banner p{ color:rgba(255,255,255,0.88); font-size:14px; line-height:1.6; margin:0; max-width:460px; }
  .cta-banner .btn-white{
    background:#fff; color:var(--rose-3); padding:16px 32px; border-radius:999px; font-size:14px;
    letter-spacing:0.06em; font-weight:700; display:inline-flex; align-items:center; gap:10px;
    box-shadow:0 14px 28px -10px rgba(0,0,0,0.35); transition:transform .3s ease, box-shadow .3s ease;
    white-space:nowrap; position:relative; z-index:2; animation:ctaWhitePulse 2.6s ease-in-out infinite;
  }
  .cta-banner .btn-white:hover{transform:translateY(-2px) scale(1.03); box-shadow:0 18px 34px -10px rgba(0,0,0,0.4);}
  @keyframes ctaWhitePulse{
    0%,100%{ box-shadow:0 14px 28px -10px rgba(0,0,0,0.35); }
    50%{ box-shadow:0 18px 36px -8px rgba(0,0,0,0.5); }
  }

  .photo-strip{ margin-top:44px; display:grid; grid-template-columns:repeat(6,1fr); gap:14px; }
  .ps-tile{ border-radius:14px; aspect-ratio:3/4; overflow:hidden; position:relative; display:flex; align-items:center; justify-content:center; }
  .ps-tile svg{width:34%; height:34%; opacity:0.85;}
  .ps1{background:linear-gradient(150deg,var(--rose-1),var(--rose-3));}
  .ps2{background:var(--ivory-deep); border:1px solid var(--line);}
  .ps3{background:var(--blush);}
  .ps4{background:linear-gradient(150deg,var(--plum),var(--rose-3));}
  .ps5{background:linear-gradient(150deg,var(--gold-soft),var(--gold));}
  .ps6{background:var(--rose-1);}

  /* ---------- process ---------- */
  .process{background:var(--plum); color:var(--ivory); position:relative;}
  .process::before{ content:''; position:absolute; inset:0; background:radial-gradient(ellipse 60% 60% at 80% 0%, rgba(233,185,190,0.16), transparent 60%); }
  .process .section-head h2{color:var(--ivory);}
  .process .section-head p{color:rgba(251,244,238,0.66);}
  .process .eyebrow-script{color:var(--gold-soft);}
  .process-list{display:grid; grid-template-columns:repeat(4,1fr); gap:28px; position:relative;}
  .process-step{padding:28px 6px; border-top:1px solid rgba(251,244,238,0.18);}
  .process-step .idx{font-family:'Cormorant Garamond',serif; font-style:italic; font-size:15px; color:var(--gold-soft);}
  .process-step h4{font-family:'Cormorant Garamond',serif; font-size:21px; margin:14px 0 10px; color:#fff;}
  .process-step p{font-size:13.5px; line-height:1.7; color:rgba(251,244,238,0.62); margin:0;}

  /* ---------- gallery (extensible, ~100 photo ready) ---------- */
  .gallery-grid{ display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:130px; gap:14px; }
  .g-tile{ border-radius:16px; position:relative; overflow:hidden; display:flex; align-items:center; justify-content:center; }
  .g-tile svg{width:38%; height:38%; opacity:0.85;}
  .g1{grid-column:span 2; grid-row:span 2; background:linear-gradient(135deg,var(--rose-1),var(--rose-3));}
  .g2{background:var(--blush);}
  .g3{background:var(--ivory-deep); border:1px solid var(--line);}
  .g4{grid-column:span 2; background:linear-gradient(135deg,var(--gold-soft),var(--gold));}
  .g5{background:var(--plum);}
  .g6{grid-column:span 2; grid-row:span 2; background:linear-gradient(160deg,var(--rose-3),var(--plum));}
  .g7{background:var(--rose-1);}
  .g8{background:var(--ivory-deep); border:1px solid var(--line);}
  .gallery-note{text-align:center; margin-top:26px; font-size:13.5px; color:var(--plum-soft); font-style:italic; font-family:'Cormorant Garamond',serif;}
  .gallery-cta{ text-align:center; margin-top:30px; }

  /* ---------- testimonial ---------- */
  .testimonial{background:var(--blush);}
  .testi-wrap{max-width:760px; margin:0 auto; text-align:center;}
  .testi-quote{font-family:'Cormorant Garamond',serif; font-style:italic; font-size:clamp(22px,2.8vw,30px); line-height:1.6; color:var(--plum);}
  .testi-name{margin-top:28px; font-size:13px; letter-spacing:0.08em; text-transform:uppercase; color:var(--rose-3);}
  .testi-stars{margin-bottom:24px; color:var(--gold); font-size:18px; letter-spacing:4px;}

  /* ---------- QUOTE section ---------- */
  .quote{background:var(--ivory);}
  .quote-grid{display:grid; grid-template-columns:0.82fr 1.18fr; gap:64px; align-items:start;}
  .quote-intro h2{ font-size:clamp(26px,3vw,34px); line-height:1.25; margin-bottom:14px; }
  .quote-intro p.phone-line{ font-size:14px; color:var(--plum-soft); margin-bottom:30px; }
  .quote-intro p.phone-line b{color:var(--rose-3);}
  .quote-steps{display:flex; flex-direction:column; gap:18px; margin-bottom:34px;}
  .quote-step{display:flex; gap:14px; align-items:flex-start;}
  .quote-step .n{
    width:30px; height:30px; border-radius:50%; background:var(--blush); color:var(--rose-3);
    font-family:'Cormorant Garamond',serif; font-style:italic; font-size:15px;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }
  .quote-step h5{margin:0 0 4px; font-size:14.5px; color:var(--plum);}
  .quote-step p{margin:0; font-size:13px; color:var(--plum-soft); line-height:1.6;}
  .quote-contact-list{border-top:1px solid var(--line); padding-top:24px;}
  .contact-detail{display:flex; gap:16px; margin-bottom:20px; align-items:flex-start;}
  .contact-detail .ic{ width:38px; height:38px; border-radius:50%; background:var(--blush); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  .contact-detail .ic svg{width:17px; height:17px; color:var(--rose-3);}
  .contact-detail h5{margin:0 0 4px; font-size:14px; letter-spacing:0.03em; color:var(--plum);}
  .contact-detail span{font-size:13.5px; color:var(--plum-soft);}

  .demo-flag{
    display:inline-flex; align-items:center; gap:8px; background:var(--blush); border:1px solid var(--rose-1);
    border-radius:999px; padding:8px 16px; font-size:12px; color:var(--rose-3); letter-spacing:0.03em; margin-bottom:26px;
  }
  .demo-flag .dot{width:7px; height:7px; border-radius:50%; background:var(--rose-3); animation:pulse 1.6s ease-in-out infinite;}
  @keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.3;}}

  .form-card{ background:#fff; border:1px solid var(--line); border-radius:24px; padding:44px; box-shadow:var(--shadow); }
  .form-section-label{
    font-size:12px; letter-spacing:0.1em; text-transform:uppercase; color:var(--rose-3); font-weight:600;
    margin:0 0 18px; padding-bottom:10px; border-bottom:1px solid var(--line);
  }
  .form-section-label:not(:first-child){margin-top:34px;}
  .form-grid{display:grid; grid-template-columns:1fr 1fr; gap:20px 18px;}
  .field{display:flex; flex-direction:column; gap:8px;}
  .field.full{grid-column:1 / -1;}
  .field label{font-size:12px; letter-spacing:0.05em; text-transform:uppercase; color:var(--plum-soft);}
  .field label .req{color:var(--rose-3);}
  .field input, .field select, .field textarea{
    border:1px solid var(--line); border-radius:10px; padding:13px 14px;
    font-family:'Jost',sans-serif; font-size:14.5px; color:var(--plum); background:var(--ivory);
    transition:border-color .25s ease, box-shadow .25s ease;
  }
  .field input:focus, .field select:focus, .field textarea:focus{
    outline:none; border-color:var(--rose-3); box-shadow:0 0 0 3px rgba(196,135,147,0.18);
  }
  .field textarea{resize:vertical; min-height:110px;}

  .upload-row{ display:flex; flex-direction:column; gap:12px; }
  .upload-slot{
    display:flex; align-items:center; justify-content:space-between; gap:14px;
    border:1.5px dashed var(--rose-1); border-radius:12px; padding:14px 18px; background:var(--ivory);
    cursor:pointer; transition:border-color .25s ease, background .25s ease;
  }
  .upload-slot:hover{border-color:var(--rose-3); background:var(--blush);}
  .upload-slot .ul-left{display:flex; align-items:center; gap:12px;}
  .upload-slot .ul-left svg{width:20px; height:20px; color:var(--rose-3); flex-shrink:0;}
  .upload-slot .ul-text b{display:block; font-size:13.5px; color:var(--plum);}
  .upload-slot .ul-text span{font-size:11.5px; color:var(--plum-soft);}
  .upload-slot input[type=file]{display:none;}
  .upload-filename{font-size:12px; color:var(--rose-3); font-weight:500; max-width:140px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .upload-hint{font-size:11.5px; color:var(--plum-soft); margin-top:2px;}

  .submit-row{margin-top:30px; display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;}
  .submit-row .note{font-size:12px; color:var(--plum-soft); max-width:300px; line-height:1.6;}
  .btn-submit{
    background:linear-gradient(135deg,var(--rose-2),var(--rose-3)); color:#fff; padding:17px 40px; border-radius:999px; border:none;
    font-family:'Jost',sans-serif; font-size:14.5px; font-weight:600; letter-spacing:0.05em; cursor:pointer;
    box-shadow:0 16px 32px -14px rgba(168,92,104,0.6); transition:transform .3s ease; white-space:nowrap;
  }
  .btn-submit:hover{transform:translateY(-2px);}
  .form-success{display:none; text-align:center; padding:16px 4px 6px;}
  .form-success.show{display:block;}
  .form-success svg{width:48px; height:48px; color:var(--rose-3); margin-bottom:14px;}
  .form-success h3{font-size:23px; margin-bottom:8px;}
  .form-success p{color:var(--plum-soft); font-size:14px;}
  .receipt{ text-align:left; margin-top:22px; background:var(--ivory); border:1px dashed var(--rose-1); border-radius:14px; padding:20px 22px; }
  .receipt h4{font-family:'Jost',sans-serif; font-size:12px; letter-spacing:0.08em; text-transform:uppercase; color:var(--rose-3); margin:0 0 12px;}
  .receipt-row{display:flex; justify-content:space-between; gap:14px; font-size:13.5px; padding:6px 0; border-bottom:1px solid var(--line);}
  .receipt-row:last-child{border-bottom:none;}
  .receipt-row .k{color:var(--plum-soft);}
  .receipt-row .v{color:var(--plum); font-weight:500; text-align:right;}
  .reset-demo{
    display:inline-block; margin-top:18px; font-size:12.5px; color:var(--rose-3); border-bottom:1px solid var(--rose-1);
    cursor:pointer; background:none; border-top:none; border-left:none; border-right:none; padding:0 0 2px; font-family:'Jost',sans-serif;
  }
  .demo-log{ margin-top:26px; border-top:1px solid var(--line); padding-top:22px; }
  .demo-log summary{ cursor:pointer; font-size:12.5px; letter-spacing:0.04em; color:var(--plum-soft); list-style:none; display:flex; align-items:center; gap:8px; }
  .demo-log summary::-webkit-details-marker{display:none;}
  .demo-log summary::before{content:'▸'; color:var(--rose-3); transition:transform .2s ease;}
  .demo-log[open] summary::before{transform:rotate(90deg);}
  .demo-log-list{margin-top:14px; display:flex; flex-direction:column; gap:10px;}
  .demo-log-item{ background:var(--ivory); border:1px solid var(--line); border-radius:10px; padding:12px 14px; font-size:12.5px; }
  .demo-log-item b{color:var(--rose-3); font-weight:500;}
  .demo-log-empty{font-size:12.5px; color:var(--plum-soft); font-style:italic;}

  /* ---------- final cta ---------- */
  .final-cta{padding:0 0 120px;}
  .final-cta-card{
    background:linear-gradient(125deg,var(--rose-2),var(--rose-3) 60%,var(--plum));
    border-radius:28px; padding:60px 56px; box-shadow:var(--shadow);
    display:flex; align-items:center; justify-content:space-between; gap:40px; flex-wrap:wrap;
    position:relative; overflow:hidden;
  }
  .final-cta-card::after{ content:''; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 88% 15%, rgba(255,255,255,0.16), transparent 55%); }
  .final-cta-text{position:relative; max-width:560px;}
  .final-cta-text h2{color:#fff; font-size:clamp(28px,3.2vw,38px); margin:12px 0 14px;}
  .final-cta-text p{color:rgba(255,255,255,0.85); font-size:15.5px; line-height:1.7; margin:0;}
  .btn-white-lg{
    position:relative; z-index:2; display:inline-flex; align-items:center; gap:10px;
    background:#fff; color:var(--rose-3); padding:19px 38px; border-radius:999px;
    font-size:15px; font-weight:800; letter-spacing:0.04em;
    box-shadow:0 18px 38px -12px rgba(0,0,0,0.4); transition:transform .3s ease, box-shadow .3s ease;
    white-space:nowrap; animation:ctaWhitePulse 2.6s ease-in-out infinite;
  }
  .btn-white-lg svg{width:18px; height:18px;}
  .btn-white-lg:hover{transform:translateY(-3px) scale(1.03); box-shadow:0 22px 42px -10px rgba(0,0,0,0.5);}
  @media (max-width:680px){
    .final-cta-card{padding:44px 26px; flex-direction:column; align-items:flex-start;}
    .btn-white-lg, .cta-banner .btn-white{
      width:100%; justify-content:center; font-size:15.5px; padding:18px 22px;
    }
  }

  /* ---------- footer ---------- */
  footer{background:var(--plum); color:rgba(251,244,238,0.75); padding:70px 0 30px;}
  .footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:50px; padding-bottom:50px; border-bottom:1px solid rgba(251,244,238,0.14);}
  .footer-brand{display:flex; align-items:center; gap:12px; margin-bottom:18px;}
  .footer-brand img{width:44px; height:44px; border-radius:50%;}
  .footer-brand span{font-family:'Cormorant Garamond',serif; font-size:21px; color:#fff;}
  .footer-col h5{color:#fff; font-size:13px; letter-spacing:0.06em; text-transform:uppercase; margin-bottom:18px;}
  .footer-col a{display:block; font-size:14px; margin-bottom:12px; color:rgba(251,244,238,0.68); transition:color .25s ease;}
  .footer-col a:hover{color:var(--gold-soft);}
  .footer-bottom{display:flex; justify-content:space-between; align-items:center; padding-top:26px; font-size:12.5px; color:rgba(251,244,238,0.5); flex-wrap:wrap; gap:12px;}
  .footer-social{display:flex; gap:14px;}
  .footer-social a{ width:36px; height:36px; border-radius:50%; border:1px solid rgba(251,244,238,0.25); display:flex; align-items:center; justify-content:center; }
  .footer-social a svg{width:15px; height:15px;}
  .footer-social a:hover{border-color:var(--gold-soft); color:var(--gold-soft);}

  /* ---------- responsive ---------- */
  @media (max-width: 1024px){
    .services-grid18{grid-template-columns:repeat(3,1fr);}
    .photo-strip{grid-template-columns:repeat(3,1fr);}
  }
  @media (max-width: 980px){
    .hero-grid, .story-grid, .quote-grid{grid-template-columns:1fr;}
    .hero-art{height:380px; order:-1;}
    .stat-strip{grid-template-columns:repeat(2,1fr);}
    .process-list{grid-template-columns:1fr 1fr;}
    .gallery-grid{grid-template-columns:repeat(2,1fr);}
    .g1,.g6{grid-column:span 2;}
    .footer-grid{grid-template-columns:1fr 1fr;}
    .form-grid{grid-template-columns:1fr;}
  }
  @media (max-width: 680px){
    .navlinks{display:none;}
    .wrap{padding:0 20px;}
    .brandmark span{display:none;}
    nav.wrap{ gap:10px; }
    .nav-cta{ padding:10px 16px 10px 13px; font-size:12.5px; gap:5px; border-width:1.5px; }
    .nav-cta svg{ width:13px; height:13px; }
    .nav-toggle{display:flex;}
    .hero{padding:150px 0 90px;}
    .services-grid18{grid-template-columns:repeat(2,1fr);}
    .photo-strip{grid-template-columns:repeat(2,1fr);}
    .process-list{grid-template-columns:1fr;}
    .gallery-grid{grid-template-columns:repeat(2,1fr); grid-auto-rows:110px;}
    .footer-grid{grid-template-columns:1fr;}
    .stat-strip{grid-template-columns:1fr 1fr;}
    .hero-social-row{ gap:12px; margin-top:28px; padding-top:24px; }
    .hero-social-row a{ font-size:13.5px; padding:8px 18px 8px 8px; }
    .hero-social-row .ic-circle{ width:36px; height:36px; }
    .hero-social-row .ic-circle svg{ width:17px; height:17px; }
    .invite-card{width:230px; padding:26px 18px 24px;}
    .cta-banner{flex-direction:column; align-items:flex-start;}
    .form-card{padding:26px 20px;}
    .quote-hero{padding:130px 0 44px;}
    .quote-hero h1{font-size:clamp(28px,7vw,38px);}
    .upload-slot{flex-direction:column; align-items:flex-start; gap:8px;}
    .upload-filename{max-width:100%;}
    .submit-row{flex-direction:column; align-items:stretch;}
    .btn-submit{width:100%; text-align:center;}
    .form-section-label:not(:first-child){margin-top:26px;}
  }

/* database-driven gallery photo tiles */
.g-tile img{ width:100%; height:100%; object-fit:cover; }
.ps-tile img{ width:100%; height:100%; object-fit:cover; }

/* ---------- sliding photo carousels (all uploaded photos, auto-scrolling) ---------- */
.photo-strip-slider,
.gallery-slider{
  overflow:hidden;
  position:relative;
  margin-top:44px;
}
.gallery-slider{ margin-top:10px; display:flex; flex-direction:column; gap:14px; }

.photo-strip-slider::before,
.photo-strip-slider::after,
.gallery-track-row::before,
.gallery-track-row::after{
  content:'';
  position:absolute;
  top:0; bottom:0;
  width:70px;
  z-index:2;
  pointer-events:none;
}
.photo-strip-slider::before,
.gallery-track-row::before{ left:0; background:linear-gradient(90deg, var(--ivory), transparent); }
.photo-strip-slider::after,
.gallery-track-row::after{ right:0; background:linear-gradient(270deg, var(--ivory), transparent); }

.gallery-track-row{ position:relative; overflow:hidden; }

.photo-strip-track,
.gallery-track{
  display:flex;
  align-items:center;
  gap:14px;
  width:max-content;
}
.photo-strip-track{ animation: strip-scroll 150s linear infinite; }
.gallery-track{ animation: gallery-scroll 150s linear infinite; }
.gallery-track-row.row-reverse .gallery-track{ animation-direction:reverse; }

.photo-strip-slider:hover .photo-strip-track,
.gallery-slider:hover .gallery-track{ animation-play-state: paused; }

.photo-strip-track .ps-tile{ flex:0 0 200px; margin:0; }

.gallery-track .g-tile{ margin:0; }
.gallery-track .g-size-1{ flex:0 0 170px; height:140px; }
.gallery-track .g-size-2{ flex:0 0 230px; height:190px; }
.gallery-track .g-size-3{ flex:0 0 290px; height:250px; }

@keyframes strip-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@keyframes gallery-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }

@media (max-width: 680px){
  .photo-strip-track .ps-tile{ flex:0 0 140px; }
  .gallery-track .g-size-1{ flex:0 0 120px; height:100px; }
  .gallery-track .g-size-2{ flex:0 0 160px; height:135px; }
  .gallery-track .g-size-3{ flex:0 0 200px; height:170px; }
}

@media (prefers-reduced-motion: reduce){
  .photo-strip-track,
  .gallery-track{ animation: none; }
}
