:root{
    --cream:#FBF7FC;
    --cream-2:#F3ECF6;
    --plum:#2B1E33;
    --plum-soft:#5B4A66;
    --lilac:#B48FCE;
    --lilac-deep:#7C4FA0;
    --lilac-pale:#E7D9F0;
    --gold:#C6A25E;
    --blush:#F1DEE5;
    --line:rgba(43,30,51,0.12);
    --shadow: 0 20px 50px -20px rgba(124,79,160,0.35);
  }

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

  html{scroll-behavior:smooth;}

  body{
    font-family:'Manrope', sans-serif;
    background:var(--cream);
    color:var(--plum);
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }

  @media (prefers-reduced-motion: reduce){
    *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important; scroll-behavior:auto !important;}
  }

  h1,h2,h3, .display{
    font-family:'Fraunces', serif;
    font-weight:500;
    letter-spacing:-0.01em;
    color:var(--plum);
  }

  .script{
    font-family:'Caveat', cursive;
    font-weight:600;
    color:var(--lilac-deep);
  }

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

  .container{
    max-width:1120px;
    margin:0 auto;
    padding:0 20px;
  }

  .eyebrow{
    font-size:0.72rem;
    letter-spacing:0.22em;
    text-transform:uppercase;
    font-weight:700;
    color:var(--lilac-deep);
  }

  /* ---------- SIGNATURE SVG LASH DIVIDER ---------- */
  .lash-divider{
    display:flex;
    justify-content:center;
    padding:8px 0;
  }
  .lash-divider svg{
    width:140px;
    height:34px;
    overflow:visible;
  }
  .lash-divider path{
    fill:none;
    stroke:var(--lilac-deep);
    stroke-width:2;
    stroke-linecap:round;
    stroke-dasharray:260;
    stroke-dashoffset:260;
    transition:stroke-dashoffset 1.4s cubic-bezier(.4,0,.2,1);
  }
  .lash-divider.in-view path{ stroke-dashoffset:0; }

  /* ---------- HEADER ---------- */
  header{
    position:fixed;
    top:0; left:0; right:0;
    z-index:100;
    background:rgba(251,247,252,0.82);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
  }
  .nav-inner{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:14px 18px;
    max-width:1120px;
    margin:0 auto;
    gap:12px;
  }
  .logotype{
    display:flex;
    align-items:baseline;
    gap:5px;
    font-family:'Fraunces', serif;
    font-size:clamp(1rem, 3.6vw, 1.25rem);
    font-weight:600;
    white-space:nowrap;
  }
  .logotype .dot{ color:var(--lilac-deep); }
  .nav-cta{
    display:inline-flex;
    align-items:center;
    gap:8px;
    background:var(--plum);
    color:var(--cream);
    padding:11px 18px;
    border-radius:999px;
    font-size:0.82rem;
    font-weight:600;
    white-space:nowrap;
    min-height:44px;
    transition:transform .25s ease, background .25s ease;
  }
  .nav-cta:hover{ background:var(--lilac-deep); transform:translateY(-2px); }

  /* ---------- HERO ---------- */
  .hero{
    position:relative;
    min-height:100svh;
    display:flex;
    align-items:center;
    padding-top:84px;
    overflow:hidden;
  }
  .hero-bg{
    position:absolute;
    inset:0;
    background:
      radial-gradient(circle at 15% 20%, rgba(180,143,206,0.25), transparent 55%),
      linear-gradient(180deg, var(--cream) 0%, var(--cream-2) 100%);
    z-index:0;
  }
  .hero-grid{
    position:relative;
    z-index:1;
    display:grid;
    grid-template-columns:1.05fr 0.85fr;
    gap:56px;
    align-items:center;
    width:100%;
  }
  .hero-copy .eyebrow{ margin-bottom:18px; }
  .hero-copy h1{
    font-size:clamp(1.9rem, 7vw, 3.6rem);
    line-height:1.12;
    margin-bottom:22px;
  }
  .hero-copy p{
    font-size:1.05rem;
    color:var(--plum-soft);
    max-width:440px;
    margin-bottom:32px;
    line-height:1.6;
  }
  .hero-actions{
    display:flex;
    align-items:center;
    gap:22px;
    flex-wrap:wrap;
  }
  .btn-primary{
    display:inline-flex;
    align-items:center;
    gap:10px;
    background:var(--lilac-deep);
    color:#fff;
    padding:16px 30px;
    border-radius:999px;
    font-weight:700;
    font-size:0.95rem;
    box-shadow:var(--shadow);
    transition:transform .25s ease, box-shadow .25s ease;
  }
  .btn-primary:hover{ transform:translateY(-3px); box-shadow:0 24px 46px -18px rgba(124,79,160,0.5); }
  .btn-secondary{
    font-weight:700;
    font-size:0.9rem;
    color:var(--plum);
    border-bottom:2px solid var(--lilac);
    padding-bottom:2px;
  }
  .location-badge{
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-size:0.8rem;
    color:var(--plum-soft);
    margin-top:28px;
  }
  .location-badge svg{ width:14px; height:14px; }

  .hero-photo{
    position:relative;
    border-radius:28px;
    overflow:hidden;
    aspect-ratio:9/13;
    box-shadow:var(--shadow);
    animation:kenburns 18s ease-in-out infinite alternate;
  }
  .hero-photo img{
    width:100%; height:100%; object-fit:cover; display:block;
  }
  .hero-photo::after{
    content:'';
    position:absolute; inset:0;
    background:linear-gradient(180deg, transparent 55%, rgba(43,30,51,0.55) 100%);
  }
  @keyframes kenburns{
    0%{ transform:scale(1); }
    100%{ transform:scale(1.06); }
  }

  /* ---------- SECTION GENERIC ---------- */
  section{ position:relative; padding:120px 0; }
  .reveal{
    opacity:0;
    transform:translateY(28px);
    transition:opacity .9s ease, transform .9s ease;
  }
  .reveal.in-view{ opacity:1; transform:translateY(0); }

  .section-head{
    text-align:center;
    max-width:640px;
    margin:0 auto 64px;
  }
  .section-head h2{
    font-size:clamp(1.8rem, 3vw, 2.5rem);
    margin-top:14px;
  }
  .section-head p{
    color:var(--plum-soft);
    margin-top:16px;
    line-height:1.7;
  }

  /* ---------- ABOUT ---------- */
  .about{ background:var(--cream-2); }
  .about-grid{
    display:grid;
    grid-template-columns:0.8fr 1fr;
    gap:64px;
    align-items:center;
  }
  .about-photo{
    position:relative;
    border-radius:24px;
    overflow:hidden;
    box-shadow:var(--shadow);
  }
  .about-photo img{ width:100%; display:block; }
  .about-photo::before{
    content:'';
    position:absolute;
    inset:-14px;
    border:1.5px solid var(--lilac);
    border-radius:30px;
    z-index:-1;
    transform:translate(14px,14px);
  }
  .about-copy .eyebrow{ margin-bottom:16px; }
  .about-copy h2{ font-size:clamp(1.7rem,3vw,2.3rem); margin-bottom:20px; }
  .about-copy p{ color:var(--plum-soft); line-height:1.8; margin-bottom:16px; }
  .about-signature{ margin-top:24px; font-size:1.7rem; }

  /* ---------- SERVICES ---------- */
  .services-grid{
    display:grid;
    grid-template-columns:repeat(2, 1fr);
    gap:28px;
  }
  .service-card{
    background:#fff;
    border:1px solid var(--line);
    border-radius:22px;
    padding:40px 34px;
    transition:transform .35s ease, box-shadow .35s ease;
  }
  .service-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
  .service-icon{
    width:48px; height:48px;
    margin-bottom:22px;
  }
  .service-card h3{ font-size:1.4rem; margin-bottom:12px; }
  .service-card p{ color:var(--plum-soft); line-height:1.7; font-size:0.95rem; }
  .service-card .tag{
    display:inline-block;
    margin-top:18px;
    font-size:0.72rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    font-weight:700;
    color:var(--gold);
  }

  /* ---------- GALLERY ---------- */
  .gallery{ background:var(--cream-2); }
  .gallery-grid{
    display:grid;
    grid-template-columns:repeat(4, 1fr);
    grid-auto-rows:200px;
    gap:16px;
  }
  .gallery-item{
    position:relative;
    border-radius:18px;
    overflow:hidden;
    cursor:pointer;
  }
  .gallery-item:nth-child(1){ grid-row:span 2; grid-column:span 2; }
  .gallery-item:nth-child(6){ grid-row:span 2; }
  .gallery-item img{
    width:100%; height:100%; object-fit:cover; display:block;
    transition:transform .6s ease;
  }
  .gallery-item:hover img{ transform:scale(1.08); }
  .gallery-item::after{
    content:'';
    position:absolute; inset:0;
    background:linear-gradient(180deg, transparent 60%, rgba(43,30,51,0.45) 100%);
    opacity:0;
    transition:opacity .4s ease;
  }
  .gallery-item:hover::after{ opacity:1; }
  .gallery-cap{
    position:absolute; left:16px; bottom:14px;
    color:#fff; font-size:0.8rem; font-weight:600;
    opacity:0; transform:translateY(8px);
    transition:opacity .4s ease, transform .4s ease;
    z-index:2;
  }
  .gallery-item:hover .gallery-cap{ opacity:1; transform:translateY(0); }

  /* ---------- CTA BAND ---------- */
  .cta-band{
    background:linear-gradient(120deg, var(--lilac-deep), #9A6BBD 60%, var(--gold));
    color:#fff;
    text-align:center;
    padding:100px 0;
  }
  .cta-band .eyebrow{ color:rgba(255,255,255,0.85); }
  .cta-band h2{ color:#fff; font-size:clamp(1.9rem,4vw,2.7rem); margin:16px 0 30px; }
  .cta-band .btn-primary{
    background:#fff; color:var(--lilac-deep);
    box-shadow:0 20px 50px -18px rgba(0,0,0,0.3);
  }
  .cta-band .btn-primary:hover{ background:var(--plum); color:#fff; }

  /* ---------- FOOTER ---------- */
  footer{
    padding:60px 0 40px;
    text-align:center;
  }
  footer .logotype{ justify-content:center; margin-bottom:14px; }
  .footer-links{
    display:flex;
    justify-content:center;
    gap:28px;
    margin:22px 0;
    font-size:0.9rem;
    font-weight:600;
  }
  .footer-links a{ color:var(--plum-soft); transition:color .25s ease; }
  .footer-links a:hover{ color:var(--lilac-deep); }
  footer .fine{
    font-size:0.78rem;
    color:var(--plum-soft);
    opacity:0.75;
  }

  /* ---------- RESPONSIVE ---------- */
  @media (max-width: 880px){
    .hero-grid{ grid-template-columns:1fr; gap:36px; }
    .hero-photo{ order:-1; aspect-ratio:16/11; max-width:360px; margin:0 auto; }
    .hero-copy p{ max-width:none; }
    .about-grid{ grid-template-columns:1fr; gap:36px; }
    .about-photo::before{ display:none; }
    .services-grid{ grid-template-columns:1fr; }
    .gallery-grid{ grid-template-columns:repeat(2,1fr); grid-auto-rows:170px; }
    .gallery-item:nth-child(1){ grid-column:span 2; grid-row:span 2; }
    .gallery-item:nth-child(6){ grid-row:span 1; }
    section{ padding:72px 0; }
    /* hover reveals don't work on touch, so keep captions visible */
    .gallery-cap{ opacity:1; transform:translateY(0); }
    .gallery-item::after{ opacity:1; background:linear-gradient(180deg, transparent 45%, rgba(43,30,51,0.5) 100%); }
  }

  @media (max-width: 520px){
    .container{ padding:0 16px; }
    .nav-cta{ padding:10px 15px; font-size:0.78rem; }
    .hero{ padding-top:76px; }
    .hero-actions{ flex-direction:column; align-items:flex-start; gap:16px; width:100%; }
    .btn-primary{ width:100%; justify-content:center; padding:15px 24px; }
    .hero-photo{ max-width:100%; aspect-ratio:4/5; }
    section{ padding:56px 0; }
    .section-head{ margin-bottom:40px; }
    .service-card{ padding:30px 24px; }
    .gallery-grid{ gap:10px; grid-auto-rows:150px; }
    .cta-band{ padding:70px 0; }
    .cta-band .btn-primary{ width:auto; }
    .footer-links{ flex-wrap:wrap; gap:16px 22px; }
  }

  /* Larger tap targets on touch devices */
  @media (hover: none){
    .btn-primary, .nav-cta{ min-height:46px; }
    .footer-links a{ padding:6px 0; display:inline-block; }
  }

  :focus-visible{
    outline:3px solid var(--lilac-deep);
    outline-offset:3px;
  }
