:root{
    --ink:#15130f;
    --ink-2:#211e17;
    --ivory:#f6f1e6;
    --ivory-2:#ede5d3;
    --stone:#f0e2da;
    --blush:#e9d9c8;
    --gold:#b08d57;
    --gold-light:#d9c197;
    --rose:#c7a79c;
    --line-on-dark:rgba(246,241,230,.28);
    --line-on-light:rgba(21,19,15,.14);
    --serif:'Cormorant Garamond', Georgia, serif;
    --sans:'Jost', Arial, sans-serif;
  }

  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    font-family:var(--sans);
    background:var(--ivory);
    color:var(--ink);
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  a{color:inherit; text-decoration:none;}
  img{display:block; max-width:100%;}
  ::selection{background:var(--gold); color:var(--ivory);}
  :focus-visible{outline:2px solid var(--gold); outline-offset:3px;}

  .eyebrow{
    font-family:var(--sans);
    font-size:.72rem;
    letter-spacing:.35em;
    text-transform:uppercase;
    font-weight:500;
    color:var(--gold);
  }
  .section{padding:7.5rem 6vw;}
  .section-inner{max-width:1180px; margin:0 auto;}
  @media (max-width:720px){ .section{padding:5rem 7vw;} }

  /* ---------- NAV ---------- */
  header{
    position:sticky; top:0; left:0; right:0; z-index:100;
    display:flex; align-items:center; justify-content:space-between;
    padding:1.15rem 5vw;
    background:var(--ivory);
    border-bottom:1px solid var(--line-on-light);
  }
  .brand-mark{
    display:flex; align-items:center; gap:.65rem;
    font-family:var(--serif);
    font-size:1.35rem;
    letter-spacing:.06em;
    color:var(--ink);
    font-weight:500;
  }
  .brand-logo{height:38px; width:auto; display:block;}
  .brand-mark span{color:var(--gold); font-style:italic;}
  nav.primary-nav{display:flex; align-items:center; gap:2.3rem;}
  nav.primary-nav a{
    font-size:.72rem; letter-spacing:.2em; text-transform:uppercase;
    color:var(--ink); opacity:.78; font-weight:400;
    padding:.3rem 0; position:relative;
  }
  nav.primary-nav a::after{
    content:''; position:absolute; left:0; right:0; bottom:-2px; height:1px;
    background:var(--gold); transform:scaleX(0); transform-origin:left;
    transition:transform .35s ease;
  }
  nav.primary-nav a:hover{opacity:1;}
  nav.primary-nav a:hover::after{transform:scaleX(1);}
  .nav-toggle{display:none; background:none; border:0; color:var(--ink); font-size:1.5rem; cursor:pointer;}

  @media (max-width:900px){
    nav.primary-nav{
      position:fixed; inset:0 0 0 auto; width:min(78vw,320px); height:100vh;
      background:var(--ivory); flex-direction:column; justify-content:center; gap:2rem;
      transform:translateX(100%); transition:transform .45s ease;
      border-left:1px solid var(--line-on-light);
    }
    nav.primary-nav.open{transform:translateX(0);}
    nav.primary-nav a{font-size:.85rem;}
    .nav-toggle{display:block;}
  }

  /* ---------- HERO ---------- */
  .hero{
    position:relative; min-height:calc(100vh + 320px); display:flex; align-items:center; justify-content:center;
    text-align:center; overflow:hidden; background:var(--ink);
  }
  .hero-bg{
    position:absolute; inset:0;
    background:url('https://aspireweddings.uk/gifs/couple.jpg') center top/cover no-repeat;
  }
  .hero-veil{
    position:absolute; inset:0;
    background:
      linear-gradient(180deg, rgba(15,13,9,.18) 0%, rgba(15,13,9,.06) 35%, rgba(15,13,9,.5) 100%);
  }
  .hero-frame{
    position:absolute; inset:26px;
    border:1px solid var(--line-on-dark);
    pointer-events:none;
  }
  .hero-frame::before, .hero-frame::after,
  .hero-frame i::before, .hero-frame i::after{
    content:''; position:absolute; width:26px; height:26px;
    border:1px solid var(--gold-light);
  }
  .hero-frame::before{ top:-1px; left:-1px; border-right:none; border-bottom:none; }
  .hero-frame::after{ top:-1px; right:-1px; border-left:none; border-bottom:none; }
  .hero-frame i::before{ bottom:-1px; left:-1px; border-right:none; border-top:none; }
  .hero-frame i::after{ bottom:-1px; right:-1px; border-left:none; border-top:none; }
  @media (max-width:720px){ .hero-frame{inset:14px;} }

  .hero-logo{
    position:absolute; top:44px; left:44px; z-index:4;
    width:200px; height:auto; display:block;
  }
  @media (max-width:720px){ .hero-logo{width:130px; top:26px; left:26px;} }

  .hero-content{position:relative; z-index:2; padding:0 6vw; max-width:900px; transform:translateY(145px);}
  .hero-pill{
    display:inline-block;
    background:rgba(21,19,15,.28);
    border-radius:48px;
    padding:2.6rem 3.4rem;
  }
  @media (max-width:720px){ .hero-pill{padding:2rem 1.8rem; border-radius:32px;} .hero-content{transform:translateY(170px);} }
  .hero-content .eyebrow{color:var(--gold-light); margin-bottom:1.6rem;}
  .hero-content h1{
    font-family:var(--serif); font-weight:500;
    font-size:clamp(2.8rem, 8vw, 6.2rem); line-height:1.03;
    color:var(--ivory); letter-spacing:.01em;
    text-shadow:0 2px 24px rgba(0,0,0,.55);
  }
  @media (min-width:900px){
    .hero-content h1{ font-size:clamp(1.4rem, 4vw, 3.1rem); }
    .line-break-mobile{display:none;}
  }
  .hero-content h1 em{font-style:italic; color:var(--gold-light); font-weight:400;}
  .hero-sub{
    font-family:var(--sans); font-weight:300; font-size:1.02rem; letter-spacing:.03em;
    color:var(--ivory); opacity:.95; max-width:520px; margin:1.9rem auto 0; line-height:1.75;
    text-shadow:0 1px 16px rgba(0,0,0,.5);
  }
  .hero-actions{
    display:flex; gap:1.1rem; justify-content:center; flex-wrap:wrap; margin-top:2.8rem;
  }
  .btn{
    display:inline-block; padding:.95rem 2.1rem; font-size:.72rem; letter-spacing:.24em;
    text-transform:uppercase; border:1px solid var(--gold-light); transition:all .35s ease;
  }
  .btn-large{padding:1.2rem 2.8rem; font-size:.8rem;}
  .btn-solid{background:var(--gold-light); color:var(--ink); border-color:var(--gold-light);}
  .btn-solid:hover{background:transparent; color:var(--ink);}
  .btn-solid.on-dark:hover{color:var(--ivory);}
  .btn-solid.on-light:hover{color:var(--ink);}
  .btn-ghost{color:var(--ivory); border-color:var(--line-on-dark);}
  .btn-ghost:hover{border-color:var(--gold-light); color:var(--gold-light);}
  .btn-ghost-on-light{color:var(--ink); border-color:var(--line-on-light);}
  .btn-ghost-on-light:hover{border-color:var(--gold); color:var(--gold);}

  .scroll-cue{
    position:absolute; bottom:2.6rem; left:50%; transform:translateX(-50%);
    z-index:2; display:flex; flex-direction:column; align-items:center; gap:.6rem;
  }
  .scroll-cue span{font-size:.62rem; letter-spacing:.3em; text-transform:uppercase; color:var(--ivory); opacity:.65;}
  .scroll-cue .line{width:1px; height:38px; background:var(--line-on-dark); position:relative; overflow:hidden;}
  .scroll-cue .line i{position:absolute; top:-100%; left:0; width:100%; height:100%; background:var(--gold-light); animation:drip 2.2s ease-in-out infinite;}
  @keyframes drip{ 0%{top:-100%;} 60%{top:100%;} 100%{top:100%;} }

  /* ---------- INTRO ---------- */
  .intro{background:var(--ivory); text-align:center;}
  .intro .eyebrow{display:block; margin-bottom:1.6rem; font-size:1.04rem;}
  .intro blockquote{
    font-family:var(--serif); font-style:italic; font-weight:400;
    font-size:clamp(1.5rem,3vw,2.15rem); line-height:1.55; color:var(--ink);
    max-width:820px; margin:0 auto;
  }
  .intro .signoff{margin-top:2rem; font-size:.72rem; letter-spacing:.25em; text-transform:uppercase; color:var(--gold);}

  /* ---------- GALLERY ---------- */
  .gallery{background:var(--blush); color:var(--ink);}
  .gallery .section-inner{text-align:center;}
  .gallery .eyebrow{color:var(--gold); font-size:1.04rem;}
  .gallery h2{font-family:var(--serif); font-weight:500; font-size:clamp(2rem,4vw,3rem); margin:1.2rem 0 1rem; color:var(--ink);}
  .gallery p.lead{color:var(--ink); opacity:.72; max-width:560px; margin:0 auto 3.5rem; font-weight:300; line-height:1.8;}
  .gallery-frame{
    position:relative; max-width:920px; margin:0 auto; border:1px solid var(--line-on-dark); padding:14px;
  }
  .gallery-frame img{width:100%; height:auto; display:block; filter:saturate(.96);}
  .gallery-frame figcaption{
    margin-top:1.1rem; font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-light); opacity:.85;
  }

  .slideshow{max-width:920px; margin:0 auto;}
  .slide-main{
    position:relative; border:1px solid var(--line-on-light); padding:14px; background:var(--ivory-2);
  }
  .slide-main img{
    width:100%; height:clamp(280px,52vw,560px); object-fit:contain; display:block; filter:saturate(.96);
  }
  .slide-arrow{
    position:absolute; top:50%; transform:translateY(-50%); z-index:3;
    width:44px; height:44px; border:1px solid var(--line-on-light); background:rgba(246,241,230,.85);
    color:var(--ink); font-size:1.4rem; line-height:1; cursor:pointer; transition:border-color .3s ease, background .3s ease;
  }
  .slide-arrow:hover{border-color:var(--gold); background:var(--ivory);}
  .slide-arrow.prev{left:26px;}
  .slide-arrow.next{right:26px;}
  .slide-thumbs{
    display:grid; grid-template-columns:repeat(auto-fill, minmax(70px,1fr)); gap:.6rem; margin-top:.9rem;
  }
  .thumb{
    padding:0; border:1px solid transparent; background:none; cursor:pointer; overflow:hidden; aspect-ratio:1/1;
    opacity:.6; transition:opacity .3s ease, border-color .3s ease;
  }
  .thumb img{width:100%; height:100%; object-fit:cover; display:block;}
  .thumb:hover{opacity:.9;}
  .thumb.active{opacity:1; border-color:var(--gold);}

  /* ---------- ABOUT ---------- */
  .about{background:var(--ivory-2);}
  .about .section-inner{display:grid; grid-template-columns:.85fr 1.15fr; gap:5vw; align-items:center;}
  @media (max-width:860px){ .about .section-inner{grid-template-columns:1fr; gap:2.5rem;} }
  .about-portrait{border:1px solid var(--line-on-light); padding:12px;}
  .about-portrait img{width:100%; height:auto; display:block;}
  .about h2{font-family:var(--serif); font-weight:500; font-size:clamp(2rem,3.6vw,2.9rem); margin:1rem 0 1.4rem;}
  .about-eyebrow{font-size:1.04rem;}
  .about p{font-weight:300; line-height:1.9; color:var(--ink); opacity:.85; margin-bottom:1.1rem; max-width:52ch;}

  /* ---------- PACKAGES ---------- */
  .packages{background:var(--ivory); text-align:center;}
  .packages > .section-inner > .eyebrow{font-size:1.04rem;}
  .packages h2{font-family:var(--serif); font-weight:500; font-size:clamp(2rem,4vw,3rem); margin:1rem 0 3.5rem;}
  .package-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:0; border-top:1px solid var(--line-on-light); border-left:1px solid var(--line-on-light);}
  @media (max-width:860px){ .package-grid{grid-template-columns:1fr;} }
  .package-card{
    border-right:1px solid var(--line-on-light); border-bottom:1px solid var(--line-on-light);
    padding:3rem 2.2rem; text-align:left; position:relative; display:flex; flex-direction:column;
  }
  .package-card.featured{background:var(--ivory-2);}
  .package-card .eyebrow{margin-bottom:1rem;}
  .package-card h3{font-family:var(--serif); font-weight:500; font-size:1.6rem; margin-bottom:.6rem;}
  .package-card .price{font-family:var(--serif); font-style:italic; font-weight:700; color:var(--gold); font-size:1.3rem; margin-bottom:1.4rem;}
  .package-card ul{list-style:none; flex:1;}
  .package-card li{
    font-size:.87rem; font-weight:300; padding:.6rem 0; border-top:1px solid var(--line-on-light); color:var(--ink); opacity:.82; line-height:1.5;
  }
  .package-card li:first-child{border-top:none;}
  .package-card .prints-note{margin-top:1.4rem; font-size:.87rem; font-weight:700; color:var(--gold); font-style:italic; font-family:var(--serif);}
  .package-note{margin-top:2.5rem; font-size:.95rem; color:var(--ink); opacity:.65; font-weight:300;}

  /* ---------- REVIEWS ---------- */
  .reviews{background:var(--blush); color:var(--ink); text-align:center;}
  .reviews > .section-inner > .eyebrow{font-size:1.04rem;}
  .reviews h2{font-family:var(--serif); font-weight:500; font-size:clamp(2rem,4vw,3rem); margin:1rem 0 3.5rem; color:var(--ink);}
  .review-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:3rem;}
  .review-grid-single{grid-template-columns:1fr; max-width:720px; margin:0 auto;}
  @media (max-width:860px){ .review-grid{grid-template-columns:1fr; gap:2.6rem;} }
  .review-card blockquote{
    font-family:var(--serif); font-style:italic; font-size:1.28rem; line-height:1.6; color:var(--ink); opacity:.88;
  }
  .review-card .stars{color:var(--gold); letter-spacing:.2em; margin-bottom:1.1rem; font-size:.85rem;}
  .review-card .attribution{margin-top:1.3rem; font-size:1.28rem; font-weight:700; letter-spacing:.06em; color:var(--gold); opacity:.9; font-family:var(--serif); font-style:italic;}

  /* ---------- FAQ ---------- */
  .faq{background:var(--ivory-2);}
  .faq .section-inner{max-width:840px;}
  .faq h2{font-family:var(--serif); font-weight:500; font-size:clamp(2rem,4vw,3rem); margin:1rem 0 3rem; text-align:center;}
  .faq-item{border-bottom:1px solid var(--line-on-light);}
  .faq-q{
    width:100%; text-align:left; background:none; border:0; cursor:pointer;
    display:flex; justify-content:space-between; align-items:center; gap:1rem;
    padding:1.5rem 0; font-family:var(--serif); font-size:1.2rem; color:var(--ink);
  }
  .faq-q .plus{font-family:var(--sans); font-size:1.3rem; color:var(--gold); transition:transform .35s ease; flex-shrink:0;}
  .faq-item.open .plus{transform:rotate(45deg);}
  .faq-a{max-height:0; overflow:hidden; transition:max-height .4s ease;}
  .faq-a p{padding:0 0 1.6rem; font-weight:300; line-height:1.85; color:var(--ink); opacity:.82; max-width:65ch;}
  .faq-a p a{color:var(--gold); text-decoration:underline; text-underline-offset:2px; opacity:1;}
  .faq-a p a:hover{color:var(--ink);}

  /* ---------- CONTACT ---------- */
  .contact{background:var(--blush); color:var(--ink);}
  .contact > .section-inner > div > .eyebrow{font-size:1.04rem;}
  .contact .section-inner{display:grid; grid-template-columns:.9fr 1.1fr; gap:5vw;}
  @media (max-width:860px){ .contact .section-inner{grid-template-columns:1fr; gap:2.8rem;} }
  .contact h2{font-family:var(--serif); font-weight:500; font-size:clamp(2rem,3.6vw,2.9rem); margin:1rem 0 1.4rem; color:var(--ink);}
  .contact p.lead{font-weight:300; line-height:1.85; color:var(--ink); opacity:.82; max-width:44ch; margin-bottom:2.2rem;}
  .contact-detail{margin-bottom:1.2rem;}
  .contact-detail .label{font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold); margin-bottom:.35rem;}
  .contact-detail a, .contact-detail span{font-family:var(--serif); font-size:1.2rem; color:var(--ink);}
  .contact-signature{
    font-family:var(--serif); font-style:italic; font-weight:700; color:var(--gold);
    font-size:1.05rem; margin:-1.4rem 0 2rem;
  }
  .contact-links{display:flex; flex-direction:column; gap:1.1rem; margin-top:2rem;}
  .contact-link{
    display:flex; align-items:center; gap:.85rem;
    font-family:var(--sans); font-weight:300; font-size:.92rem; letter-spacing:.02em;
    color:var(--ink); opacity:.82; transition:opacity .3s ease, color .3s ease;
  }
  .contact-link:hover{opacity:1; color:var(--gold);}
  .contact-link .icon{width:20px; height:20px; color:var(--gold); flex-shrink:0; display:inline-flex;}
  .contact-link .icon svg{width:100%; height:100%; display:block;}

  form.enquiry{display:flex; flex-direction:column; gap:1.2rem;}
  form.enquiry.is-hidden{display:none;}
  .contact-right{display:flex; flex-direction:column; gap:.5rem; align-self:start;}
  form.enquiry .row{display:grid; grid-template-columns:1fr 1fr; gap:1.2rem;}
  @media (max-width:520px){ form.enquiry .row{grid-template-columns:1fr;} }
  form.enquiry label{font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold); margin-bottom:.5rem; display:block;}
  form.enquiry input, form.enquiry textarea{
    width:100%; background:transparent; border:none; border-bottom:1px solid var(--line-on-light);
    color:var(--ink); font-family:var(--sans); font-weight:300; font-size:.95rem; padding:.6rem 0;
  }
  form.enquiry input:focus, form.enquiry textarea:focus{outline:none; border-color:var(--gold);}
  form.enquiry textarea{resize:vertical; min-height:90px;}
  form.enquiry button{margin-top:.8rem; align-self:flex-start; cursor:pointer;}
  .form-note{font-size:.75rem; opacity:.6; margin-top:1rem; font-weight:300; color:var(--ink);}

  /* ---------- FOOTER ---------- */
  footer{background:var(--ink); border-top:1px solid var(--line-on-dark); padding:3rem 6vw 2.2rem; text-align:center;}
  footer .brand-mark{display:inline-flex; margin-bottom:1.6rem; color:var(--ivory);}
  footer nav{display:flex; flex-wrap:wrap; gap:1.6rem; justify-content:center; margin-bottom:2rem;}
  footer nav a{font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--ivory); opacity:.65;}
  footer nav a:hover{opacity:1;}
  footer .copy{font-size:.85rem; opacity:.8; color:#ffffff; font-weight:300;}
  footer .credit{font-size:.85rem; opacity:.8; color:#ffffff; font-weight:300; margin-top:.5rem;}
  footer .credit a{color:var(--gold-light); opacity:1; text-decoration:underline; text-underline-offset:2px;}
  footer .credit a:hover{color:var(--ivory);}

  /* ---------- BACK TO TOP ---------- */
  .back-to-top{
    position:fixed; right:1.8rem; bottom:1.8rem; z-index:90;
    width:48px; height:48px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    background:var(--ink); color:var(--ivory); border:1px solid var(--gold-light);
    font-size:1.2rem; line-height:1;
    opacity:0; visibility:hidden; transform:translateY(12px);
    transition:opacity .3s ease, transform .3s ease, visibility .3s ease, background .3s ease, color .3s ease;
  }
  .back-to-top.visible{opacity:1; visibility:visible; transform:translateY(0);}
  .back-to-top:hover{background:var(--gold-light); color:var(--ink);}
  @media (max-width:720px){ .back-to-top{right:1.2rem; bottom:1.2rem; width:44px; height:44px;} }