:root{
    --paper:#ffffff;
    --mist:#eef4fb;
    --mist-2:#e2ecf9;
    --ink:#0b2545;
    --ink-soft:#3a537c;
    --blue:#1a56b0;
    --blue-deep:#0e3d85;
    --blue-bright:#2f7ce6;
    --line:#d6e3f3;
    --gold:#e0a63a;
    --shadow-sm:0 1px 2px rgba(11,37,69,.06), 0 2px 8px rgba(11,37,69,.05);
    --shadow-md:0 6px 16px rgba(11,37,69,.08), 0 18px 40px rgba(11,37,69,.09);
    --shadow-lg:0 10px 30px rgba(10,45,105,.16), 0 40px 80px rgba(10,45,105,.18);
    --r-sm:10px; --r-md:16px; --r-lg:24px; --r-xl:34px;
    --maxw:1200px;
    --ease:cubic-bezier(.16,1,.3,1);
  }

  *{box-sizing:border-box}
  html{scroll-behavior:smooth; -webkit-text-size-adjust:100%}
  body{
    margin:0; background:var(--paper); color:var(--ink);
    font-family:"Hanken Grotesk",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
    font-size:17px; line-height:1.65; -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
  }
  h1,h2,h3,h4{font-family:"Newsreader","Georgia",serif; font-weight:600; line-height:1.05; letter-spacing:-.02em; margin:0}
  p{margin:0}
  a{color:inherit; text-decoration:none}
  img{max-width:100%; display:block}
  ::selection{background:var(--blue); color:#fff}

  .wrap{max-width:var(--maxw); margin:0 auto; padding:0 clamp(22px, 4.5vw, 60px)}
  .eyebrow{
    font-family:"Hanken Grotesk",sans-serif; font-weight:600; font-size:.82rem; letter-spacing:.08em;
    text-transform:uppercase; color:var(--blue); display:inline-flex; align-items:center; gap:.5rem;
  }
  .eyebrow::before{content:""; width:22px; height:2px; background:var(--blue); border-radius:2px; display:inline-block}

  :focus-visible{outline:3px solid var(--blue-bright); outline-offset:3px; border-radius:6px}

  /* ---------- Buttons ---------- */
  .btn{
    display:inline-flex; align-items:center; gap:.55rem; justify-content:center;
    font-family:"Hanken Grotesk",sans-serif; font-weight:600; font-size:1rem; line-height:1;
    padding:.95rem 1.5rem; border-radius:999px; cursor:pointer; border:1px solid transparent;
    transition:transform .5s var(--ease), box-shadow .5s var(--ease), background .3s ease, color .3s ease;
    white-space:nowrap;
  }
  .btn svg{width:18px; height:18px; flex:none}
  .btn-primary{background:var(--blue); color:#fff; box-shadow:0 6px 16px rgba(7,22,48,.24)}
  .btn-primary:hover{background:var(--blue-deep); transform:translateY(-2px); box-shadow:0 12px 26px rgba(7,22,48,.32)}
  .btn-ghost{background:rgba(255,255,255,.9); color:var(--ink); border-color:var(--line); box-shadow:var(--shadow-sm)}
  .btn-ghost:hover{background:#fff; transform:translateY(-2px); box-shadow:var(--shadow-md)}
  .btn-onblue{background:#fff; color:var(--blue-deep)}
  .btn-onblue:hover{transform:translateY(-2px); box-shadow:0 14px 30px rgba(0,0,0,.25)}
  .btn-outline-blue{background:transparent; color:#fff; border-color:rgba(255,255,255,.5)}
  .btn-outline-blue:hover{background:rgba(255,255,255,.12); border-color:#fff; transform:translateY(-2px)}

  /* ---------- Header ---------- */
  header{position:sticky; top:0; z-index:50; background:rgba(255,255,255,.82); backdrop-filter:blur(14px) saturate(1.4); border-bottom:1px solid var(--line)}
  .nav{display:flex; align-items:center; gap:.95rem; height:76px}
  .brand{display:flex; align-items:center; gap:.7rem; margin-right:auto}
  .rose{width:40px; height:40px; flex:none}
  .brand-name{font-family:"Newsreader",serif; font-weight:600; font-size:1.32rem; letter-spacing:-.01em; color:var(--ink); line-height:1; white-space:nowrap}
  .brand-name span{color:var(--blue); font-weight:500}
  .brand-sub{display:block; font-family:"Hanken Grotesk",sans-serif; font-size:.62rem; letter-spacing:.22em; text-transform:uppercase; color:var(--ink-soft); font-weight:600; margin-top:3px; white-space:nowrap}
  nav.links{display:flex; gap:.95rem; align-items:center}
  nav.links a{font-weight:500; font-size:.92rem; color:var(--ink-soft); position:relative; padding:.3rem 0; white-space:nowrap}
  nav.links a[aria-current="page"]{color:var(--ink)}
  nav.links a[aria-current="page"]::after{width:100%; transform:scaleX(1)}
  nav.links a::after{content:""; position:absolute; left:0; bottom:-2px; width:100%; height:2px; background:var(--blue); border-radius:2px; transform:scaleX(0); transform-origin:left; transition:transform .4s var(--ease)}
  nav.links a:hover{color:var(--ink)} nav.links a:hover::after{transform:scaleX(1)}
  .nav-phone{display:flex; align-items:center; gap:.5rem; font-weight:700; color:var(--ink); font-size:1.02rem; white-space:nowrap}
  .nav-phone svg{width:18px; height:18px; color:var(--blue)}
  .nav-cta{display:inline-flex}
  @media(max-width:1320px){ .nav-phone{display:none} }
  .burger{display:none; background:none; border:1px solid var(--line); border-radius:10px; width:46px; height:46px; align-items:center; justify-content:center; cursor:pointer; color:var(--ink)}
  .burger svg{width:24px; height:24px}

  /* ---------- Hero ---------- */
  .hero{position:relative; overflow:hidden; background:
      linear-gradient(178deg, rgba(58,133,235,.22) 0%, rgba(58,133,235,0) 34%),
      linear-gradient(168deg, #14458f 0%, #0e3d85 44%, #0a2c66 100%);
    color:#fff; isolation:isolate;}
  .hero::after{content:""; position:absolute; inset:0; background-image:radial-gradient(rgba(255,255,255,.06) 1px, transparent 1.4px); background-size:26px 26px; opacity:.5; z-index:-1}
  .hero-grid{display:grid; grid-template-columns:1.22fr .78fr; grid-template-areas:"top media" "bottom media"; column-gap:clamp(28px,3vw,46px); row-gap:0; align-items:start; padding-top:72px; padding-bottom:84px}
  .hero-copy-top{grid-area:top}
  .hero-copy-bottom{grid-area:bottom}
  .hero .eyebrow{color:#bcd4ff}
  .hero .eyebrow::before{background:#bcd4ff}
  .hero h1{font-size:clamp(2.4rem,4.85vw,4.05rem); font-weight:600; margin:18px 0 0; letter-spacing:-.03em; line-height:.98}
  .hero h1 em{font-style:normal; color:#6f9fe6; position:relative}
  .hero-lead{margin-top:22px; font-size:1.16rem; line-height:1.6; color:#d6e4fb; max-width:36ch}
  .hero-cta{display:flex; gap:14px; margin-top:34px; flex-wrap:wrap}
  .trust-row{display:flex; flex-wrap:wrap; gap:9px; margin-top:34px}
  .chip{display:inline-flex; align-items:center; gap:.4rem; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.18); color:#eaf1ff; font-size:.78rem; font-weight:500; padding:.42rem .64rem; border-radius:999px; backdrop-filter:blur(4px); white-space:nowrap}
  .chip svg{width:14px; height:14px; color:#8fbcff; flex:none}

  /* Hero card */
  .hero-card{background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.16); border-radius:var(--r-xl); padding:30px; box-shadow:0 30px 70px rgba(4,18,45,.4); backdrop-filter:blur(6px); position:relative; overflow:hidden}
  .hero-card .rose-wm{position:absolute; right:-34px; top:-30px; width:180px; height:180px; opacity:.14; color:#fff}
  .hero-card h3{font-size:1.35rem; color:#fff; margin-bottom:4px}
  .hero-card .card-sub{color:#c3d6f6; font-size:.92rem; margin-bottom:22px}
  .stat-line{display:flex; align-items:baseline; gap:12px; padding:15px 0; border-top:1px solid rgba(255,255,255,.13)}
  .stat-line:first-of-type{border-top:none}
  .stat-num{font-family:"Newsreader",serif; font-size:1.75rem; font-weight:600; color:#8fbcff; line-height:1; flex:none; min-width:64px}
  .stat-txt{color:#dbe7fb; font-size:.94rem; line-height:1.35}
  .hero-card .card-foot{margin-top:20px; display:flex; align-items:center; gap:.6rem; font-size:.9rem; color:#bcd4ff}
  .hero-card .card-foot svg{width:17px; height:17px}

  /* Hero image */
  .hero-media{position:relative; grid-area:media; align-self:center}
  .chip .c-min{display:none}
  .hero-img{width:100%; height:100%; max-height:580px; object-fit:cover; border-radius:var(--r-xl); border:1px solid rgba(255,255,255,.2); box-shadow:0 30px 70px rgba(4,18,45,.45); display:block; filter:saturate(1.1) brightness(1.05)}
  .hero-tag{position:absolute; top:14px; left:14px; background:rgba(11,37,69,.58); backdrop-filter:blur(6px); color:#fff; font-size:.72rem; font-weight:600; padding:.34rem .68rem; border-radius:999px; border:1px solid rgba(255,255,255,.2)}
  .hero-badge{position:absolute; left:14px; right:auto; bottom:14px; max-width:calc(100% - 28px); display:flex; align-items:center; gap:10px; background:rgba(255,255,255,.94); backdrop-filter:blur(8px); border-radius:13px; padding:9px 13px 9px 10px; box-shadow:var(--shadow-md)}
  .hero-badge-ic{width:32px; height:32px; border-radius:9px; background:var(--blue); color:#fff; display:flex; align-items:center; justify-content:center; flex:none}
  .hero-badge-ic svg{width:17px; height:17px}
  .hero-badge-text{display:flex; flex-direction:column; gap:1px; line-height:1.22}
  .hero-badge-text strong{font-family:"Newsreader",serif; font-weight:600; font-size:.95rem; color:var(--ink)}
  .hero-badge-text span{font-size:.75rem; color:var(--ink-soft)}

  /* wave divider */
  .hero-wave{display:block; width:100%; height:60px; color:var(--paper)}

  /* ---------- Google review bar ---------- */
  .rev-bar{background:var(--paper); margin-top:-1px}
  .rev-inner{display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
    padding:26px 30px; border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow-md);
    transform:translateY(-46px); background:#fff}
  .rev-left{display:flex; align-items:center; gap:16px}
  .g-badge{width:52px; height:52px; border-radius:50%; background:var(--mist); display:flex; align-items:center; justify-content:center; flex:none; box-shadow:var(--shadow-sm)}
  .g-badge svg{width:26px; height:26px}
  .rev-left b{font-family:"Newsreader",serif; font-size:1.2rem; font-weight:600; display:block; letter-spacing:-.01em}
  .stars{color:var(--gold); letter-spacing:2px; font-size:.95rem}
  .rev-left small{color:var(--ink-soft); font-size:.88rem}
  .rev-right{display:flex; align-items:center; gap:14px; flex-wrap:wrap}
  .rev-quote{color:var(--ink-soft); font-style:italic; font-size:.95rem; max-width:34ch; border-left:2px solid var(--line); padding-left:14px}

  /* ---------- Sections ---------- */
  section{padding:88px 0}
  .sec-head{max-width:620px}
  .sec-head.center{margin:0 auto; text-align:center}
  .sec-head h2{font-size:clamp(2.1rem,3.8vw,3rem); margin-top:14px; color:var(--ink)}
  .sec-head p{margin-top:16px; color:var(--ink-soft); font-size:1.1rem}

  /* Services */
  .services{background:var(--mist)}
  .svc-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:52px}
  /* image-forward cards: photo visible, dark scrim, white text */
  .svc{
    position:relative; overflow:hidden; border-radius:var(--r-lg); min-height:288px;
    display:flex; flex-direction:column; justify-content:space-between; gap:20px; padding:26px;
    color:#fff; box-shadow:var(--shadow-md); isolation:isolate; text-decoration:none;
    transition:transform .55s var(--ease), box-shadow .55s var(--ease);
  }
  .svc:hover{transform:translateY(-6px); box-shadow:var(--shadow-lg)}
  .svc-bg{position:absolute; inset:0; z-index:-2; background-size:cover; background-position:center; filter:brightness(1.14) saturate(1.28); transition:transform .8s var(--ease)}
  .svc::after{content:""; position:absolute; inset:0; z-index:-1;
    background:linear-gradient(178deg, rgba(9,26,54,.04) 0%, rgba(9,26,54,.34) 46%, rgba(7,20,44,.84) 100%)}
  .svc:hover .svc-bg{transform:scale(1.06)}
  .svc-ic{align-self:flex-start; width:48px; height:48px; border-radius:13px; flex:none;
    background:rgba(255,255,255,.18); border:1px solid rgba(255,255,255,.36); backdrop-filter:blur(6px);
    color:#fff; display:flex; align-items:center; justify-content:center}
  .svc-ic svg{width:24px; height:24px}
  .svc h3{font-size:1.3rem; margin-bottom:7px; color:#fff; text-shadow:0 1px 12px rgba(4,14,34,.5)}
  .svc p{color:rgba(240,245,252,.92); font-size:.95rem; line-height:1.5; text-shadow:0 1px 10px rgba(4,14,34,.4)}
  /* lock the six service cards' copy to a uniform 3-line block so every heading lines up */
  .svc:not(.feat) p{min-height:4.5em; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden}
  .svc-note{position:absolute; top:16px; right:16px; z-index:2; font-size:.78rem; font-weight:600; color:#fff;
    background:rgba(11,37,69,.5); border:1px solid rgba(255,255,255,.32); padding:.32rem .72rem; border-radius:999px; backdrop-filter:blur(6px)}
  .svc-link{display:inline-flex; align-items:center; gap:.45rem; margin-top:16px; font-weight:600; color:#fff}
  .svc-link svg{width:16px; height:16px; transition:transform .4s var(--ease)}
  .svc:hover .svc-link svg{transform:translateX(4px)}
  /* featured wedding: full-width, taller */
  .svc.feat{grid-column:1 / -1; min-height:352px}
  .svc.feat .svc-body{max-width:50ch}
  .svc.feat h3{font-size:1.75rem}
  .svc.feat p{font-size:1.02rem}
  /* £26.99 offer tile — a colourful highlight card */
  .svc.offer{background:linear-gradient(155deg,#c1721b 0%, #a55913 48%, #874510 100%)}
  .svc.offer::after{display:block; background:linear-gradient(158deg, rgba(150,78,14,.3) 0%, rgba(120,58,12,.42) 48%, rgba(78,38,8,.72) 100%)}
  .svc.offer .svc-bg{filter:saturate(1.18) brightness(1.2); background-position:center 22%}
  .svc.offer .svc-ic{background:rgba(255,255,255,.22); border-color:rgba(255,255,255,.5)}
  .offer-price{position:absolute; top:20px; right:22px; z-index:2; display:flex; flex-direction:column; align-items:flex-end; font-family:"Newsreader",serif; font-weight:700; font-size:2.15rem; color:#fff; line-height:.92; text-shadow:0 2px 12px rgba(60,28,2,.45)}
  .offer-from{font-family:"Hanken Grotesk",sans-serif; font-weight:600; font-size:.66rem; letter-spacing:.03em; text-transform:uppercase; opacity:.92; margin-bottom:4px}

  /* Wedding band */
  .wedding{background:linear-gradient(160deg,#0e3d85,#0b2f6b); color:#fff; position:relative; overflow:hidden}
  .wedding .rose-wm{position:absolute; left:-60px; bottom:-70px; width:280px; height:280px; opacity:.1; color:#fff}
  .wed-grid{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center}
  .wedding h2{font-size:clamp(2rem,3.6vw,2.9rem); color:#fff}
  .wedding .eyebrow{color:#8fbcff}.wedding .eyebrow::before{background:#8fbcff}
  .wedding p{color:#d3e2fa; margin-top:16px; font-size:1.08rem}
  .wed-list{margin:26px 0 30px; display:grid; gap:14px}
  .wed-list li{list-style:none; display:flex; gap:12px; align-items:flex-start; color:#e7effc}
  .wed-list svg{width:22px; height:22px; color:#8fbcff; flex:none; margin-top:2px}
  .wed-photo{margin:0; border-radius:var(--r-lg); overflow:hidden; border:1px solid rgba(255,255,255,.18); box-shadow:0 24px 60px rgba(4,18,45,.4)}
  .wed-photo img{width:100%; height:100%; max-height:440px; object-fit:cover; display:block; filter:saturate(1.1) brightness(1.05)}

  /* Process */
  .process{background:var(--mist)}
  .steps{display:grid; grid-template-columns:repeat(4,1fr); gap:22px; margin-top:52px; position:relative}
  .step{background:#fff; border:1px solid var(--line); border-radius:var(--r-md); padding:28px 24px; box-shadow:var(--shadow-sm); position:relative}
  .step-n{width:44px; height:44px; border-radius:50%; background:var(--blue); color:#fff; font-family:"Newsreader",serif; font-weight:600; font-size:1.2rem; display:flex; align-items:center; justify-content:center; margin-bottom:18px; box-shadow:0 6px 14px rgba(26,86,176,.3)}
  .step h3{font-size:1.16rem; margin-bottom:7px}
  .step p{color:var(--ink-soft); font-size:.95rem}

  /* About */
  .about-grid{display:grid; grid-template-columns:1.05fr .95fr; gap:56px; align-items:center}
  .about h2{font-size:clamp(2rem,3.6vw,2.8rem)}
  .about p.lead{color:var(--ink-soft); font-size:1.1rem; margin-top:18px}
  .about-list{margin:26px 0 0; display:grid; gap:14px}
  .about-list li{list-style:none; display:flex; gap:12px; align-items:flex-start; font-weight:500}
  .about-list svg{width:22px; height:22px; color:var(--blue); flex:none; margin-top:2px}
  .about-photo{position:relative; margin:0; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow-lg); border:1px solid var(--line)}
  .about-photo img{width:100%; height:auto; display:block}
  .about-photo figcaption{position:absolute; left:0; right:0; bottom:0; padding:48px 22px 18px; color:#fff; background:linear-gradient(to top, rgba(7,20,44,.86), rgba(7,20,44,.32) 58%, rgba(7,20,44,0))}
  .about-photo figcaption strong{font-family:"Newsreader",serif; font-weight:600; font-size:1.4rem; display:block; letter-spacing:-.01em}
  .about-photo figcaption span{font-size:.9rem; color:#d3e2fa}

  /* Visit / Contact */
  .visit{background:var(--ink); color:#fff; position:relative; overflow:hidden}
  .visit::after{content:""; position:absolute; inset:0; background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1.4px); background-size:26px 26px; opacity:.5}
  .visit-grid{display:grid; grid-template-columns:1fr 1fr; gap:48px; position:relative; z-index:1}
  .visit .eyebrow{color:#8fbcff}.visit .eyebrow::before{background:#8fbcff}
  .visit h2{font-size:clamp(2rem,3.6vw,2.8rem); color:#fff; margin-top:14px}
  .visit-lead{color:#c7d6ef; margin-top:16px; font-size:1.08rem; max-width:40ch}
  .contact-rows{margin-top:30px; display:grid; gap:4px}
  .crow{display:flex; gap:16px; align-items:flex-start; padding:16px 0; border-top:1px solid rgba(255,255,255,.12)}
  .crow:first-child{border-top:none}
  .crow .ic{width:44px; height:44px; border-radius:12px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.14); display:flex; align-items:center; justify-content:center; flex:none; color:#8fbcff}
  .crow .ic svg{width:20px; height:20px}
  .crow .lbl{font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; color:#8fbcff; font-weight:600}
  .crow .val{font-size:1.08rem; font-weight:500; color:#fff; margin-top:2px}
  .crow .val a:hover{color:#8fbcff}
  .visit-actions{display:flex; gap:12px; margin-top:26px; flex-wrap:wrap}

  .hours-card{background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.14); border-radius:var(--r-lg); padding:32px; align-self:start; box-shadow:var(--shadow-md)}
  .hours-card h3{font-size:1.35rem; color:#fff; margin-bottom:6px; display:flex; align-items:center; gap:.6rem}
  .hours-card h3 svg{width:22px; height:22px; color:#8fbcff}
  .hours-card .open-now{font-size:.85rem; color:#a7e0b8; font-weight:600; margin-bottom:18px; display:none}
  .hours-card .open-now.show{display:block}
  .hrow{display:flex; justify-content:space-between; padding:12px 0; border-top:1px solid rgba(255,255,255,.1); font-size:1rem}
  .hrow:first-of-type{border-top:none}
  .hrow.today{font-weight:700}
  .hrow.today .day::after{content:" · Today"; color:#8fbcff; font-weight:600; font-size:.8rem}
  .hrow .time{color:#d3e2fa}
  .hrow.closed .time{color:#9fb4d6}
  .hours-note{margin:14px 0 0; padding-top:14px; border-top:1px solid rgba(255,255,255,.1); font-size:.84rem; color:#a7bbdb}

  /* Footer */
  footer{background:#081b3a; color:#a9bfe0; padding:56px 0 32px}
  .foot-top{display:flex; justify-content:space-between; gap:40px; flex-wrap:wrap; align-items:flex-start; padding-bottom:36px; border-bottom:1px solid rgba(255,255,255,.1)}
  .foot-brand{display:flex; align-items:center; gap:.7rem}
  .foot-brand .brand-name{color:#fff}
  .foot-brand .brand-name span{color:#8fbcff}
  .foot-links{display:flex; gap:30px; flex-wrap:wrap}
  .foot-links a{color:#c2d3ee; font-size:.96rem}.foot-links a:hover{color:#fff}
  .foot-bottom{padding-top:26px; display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:.86rem; color:#7f97bd}
  .foot-bottom a{color:#a9bfe0}.foot-bottom a:hover{color:#fff}

  /* Reveal animation — only when JS is confirmed; no-JS shows content by default */
  .js .reveal{opacity:0; transform:translateY(22px); transition:opacity .9s var(--ease), transform .9s var(--ease)}
  .js .reveal.in{opacity:1; transform:none}
  /* Above-the-fold hero + review bar animate on load via CSS (never depend on the scroll observer) */
  @keyframes riseIn{from{opacity:0; transform:translateY(22px)} to{opacity:1; transform:none}}
  .js .hero .reveal, .js .rev-inner.reveal{animation:riseIn .85s var(--ease) both; transition:none}
  .js .hero .reveal:nth-child(2){animation-delay:.06s}
  .js .hero .reveal:nth-child(3){animation-delay:.12s}
  .js .hero .reveal:nth-child(4){animation-delay:.18s}
  .js .hero .reveal:nth-child(5){animation-delay:.24s}
  .js .hero .hero-media.reveal{animation-delay:.2s}

  /* ---------- Mobile ---------- */
  @media(max-width:1000px){
    .hero-grid{grid-template-columns:1fr; grid-template-areas:"top" "media" "bottom"; gap:30px; padding-top:48px; padding-bottom:64px}
    .hero-media{max-width:520px; align-self:start}
    .hero-img{max-height:460px}
    .wed-grid,.about-grid,.visit-grid{grid-template-columns:1fr; gap:36px}
    .svc-grid{grid-template-columns:repeat(2,1fr)}
    .steps{grid-template-columns:repeat(2,1fr)}
  }
  @media(max-width:760px){
    nav.links,.nav-phone,.nav-cta{display:none}
    .burger{display:flex}
    .nav{height:66px}
    section{padding:64px 0}
    .svc-grid{grid-template-columns:1fr}
    .svc.feat{grid-column:span 1}
    .rev-inner{transform:translateY(-34px)}
    .rev-right{display:none}
    .foot-top{flex-direction:column}
  }
  @media(max-width:600px){
    /* headline beside the image; intro, buttons & pills full-width below */
    .hero-grid{grid-template-columns:1.02fr .98fr; grid-template-areas:"top media" "bottom bottom"; column-gap:15px; row-gap:0; align-items:start; padding-top:30px; padding-bottom:48px}
    .hero-copy-top{align-self:center}
    .hero .eyebrow{font-size:.62rem; letter-spacing:.05em; line-height:1.3}
    .hero .eyebrow::before{width:14px}
    .hero h1{font-size:1.72rem; line-height:1.08; margin-top:10px}
    .hero-media{max-width:none; align-self:start}
    .hero-img{max-height:none; aspect-ratio:3/4}
    .hero-tag{display:none}
    .hero-badge{display:none}
    .hero-lead{font-size:1rem; line-height:1.55; margin-top:22px; max-width:none}
    .hero-cta{margin-top:22px}
    .trust-row{margin-top:20px; gap:7px; flex-wrap:nowrap}
    .chip{font-size:.72rem; padding:.42rem .58rem; gap:.3rem}
    .chip .c-full{display:none}
    .chip .c-min{display:inline}
  }

  /* Mobile menu */
  .mobile-menu{position:fixed; inset:0; z-index:60; background:rgba(11,37,69,.55); backdrop-filter:blur(4px); opacity:0; pointer-events:none; transition:opacity .3s ease}
  .mobile-menu.open{opacity:1; pointer-events:auto}
  .mm-panel{position:absolute; top:0; right:0; width:min(84vw,340px); height:100%; background:#fff; box-shadow:var(--shadow-lg); padding:26px; display:flex; flex-direction:column; gap:6px; transform:translateX(100%); transition:transform .45s var(--ease)}
  .mobile-menu.open .mm-panel{transform:none}
  .mm-panel .mm-close{align-self:flex-end; background:none; border:1px solid var(--line); border-radius:10px; width:44px; height:44px; cursor:pointer; color:var(--ink)}
  .mm-panel a{padding:14px 8px; font-size:1.1rem; font-weight:500; border-bottom:1px solid var(--mist); color:var(--ink)}
  .mm-panel .btn{margin-top:18px}
  .mm-phone{margin-top:14px; font-weight:700; font-size:1.2rem; color:var(--blue); display:flex; align-items:center; gap:.5rem}
  .mm-phone svg{width:20px;height:20px}

  /* ---------- Service detail modal ---------- */
  .modal[hidden]{display:none}
  .modal{position:fixed; inset:0; z-index:100; display:flex; align-items:center; justify-content:center; padding:20px}
  .modal-overlay{position:absolute; inset:0; background:rgba(7,20,44,.55); backdrop-filter:blur(4px); opacity:0; transition:opacity .3s var(--ease)}
  .modal.open .modal-overlay{opacity:1}
  .modal-panel{position:relative; z-index:1; width:100%; max-width:600px; max-height:90vh; overflow:auto; background:#fff; border-radius:var(--r-lg); box-shadow:var(--shadow-lg); opacity:0; transform:translateY(18px) scale(.985); transition:opacity .4s var(--ease), transform .4s var(--ease)}
  .modal.open .modal-panel{opacity:1; transform:none}
  .modal-media{height:210px; background-size:cover; background-position:center; background-color:var(--mist)}
  .modal-media.offer{background:linear-gradient(155deg,#c1721b,#874510); display:flex; align-items:center; justify-content:center}
  .modal-media.offer .modal-price{font-family:"Newsreader",serif; font-weight:700; font-size:3.2rem; color:#fff; text-shadow:0 2px 14px rgba(60,28,2,.45)}
  .modal-close{position:absolute; top:14px; right:14px; z-index:2; width:42px; height:42px; border-radius:50%; background:rgba(255,255,255,.92); border:none; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:var(--shadow-md); color:var(--ink)}
  .modal-close svg{width:20px; height:20px}
  .modal-close:hover{background:#fff}
  .modal-body{padding:26px clamp(24px,4vw,34px) 30px}
  .modal-body h3{font-size:clamp(1.5rem,3vw,1.9rem); color:var(--ink); margin-top:8px}
  .modal-lead{color:var(--ink-soft); font-size:1.04rem; margin-top:12px}
  .modal-points{list-style:none; margin:22px 0 0; padding:0; display:grid; gap:12px}
  .modal-points li{display:flex; gap:11px; align-items:flex-start; color:var(--ink); font-size:.98rem; line-height:1.45}
  .modal-points svg{width:20px; height:20px; color:var(--blue); flex:none; margin-top:2px}
  .modal-actions{display:flex; gap:12px; margin-top:26px; flex-wrap:wrap}
  @media(max-width:560px){ .modal-media{height:168px} .modal-actions .btn{flex:1 1 auto} }

  /* ---------- Quote request side panel ---------- */
  .quote[hidden]{display:none}
  .quote{position:fixed; inset:0; z-index:110}
  .quote-overlay{position:absolute; inset:0; background:rgba(7,20,44,.5); backdrop-filter:blur(3px); opacity:0; transition:opacity .35s var(--ease)}
  .quote.open .quote-overlay{opacity:1}
  .quote-panel{position:absolute; top:0; right:0; height:100%; width:min(440px,100%); background:#fff; box-shadow:-20px 0 60px rgba(4,18,45,.25); transform:translateX(100%); transition:transform .42s var(--ease); display:flex; flex-direction:column; overflow:hidden}
  .quote.open .quote-panel{transform:none}
  .quote-close{position:absolute; top:16px; right:16px; z-index:2; width:42px; height:42px; border-radius:50%; background:var(--mist); border:none; cursor:pointer; display:flex; align-items:center; justify-content:center; color:var(--ink)}
  .quote-close svg{width:20px; height:20px}
  .quote-close:hover{background:var(--mist-2)}
  .quote-inner{overflow-y:auto; padding:34px clamp(22px,4vw,32px) 30px}
  .quote-head h3{font-size:1.65rem; color:var(--ink); margin-top:8px}
  .quote-head p{color:var(--ink-soft); font-size:.95rem; margin-top:10px}
  .quote-head p a{color:var(--blue); font-weight:600}
  .quote-form{margin-top:22px; display:grid; gap:15px}
  .quote-form[hidden]{display:none}
  .qrow{display:grid; grid-template-columns:1fr 1fr; gap:14px}
  .qfield{display:flex; flex-direction:column; gap:6px}
  .qfield label{font-size:.85rem; font-weight:600; color:var(--ink)}
  .qfield label .opt{font-weight:400; color:var(--ink-soft)}
  .qfield input, .qfield select, .qfield textarea{font-family:inherit; font-size:1rem; color:var(--ink); background:#fff; border:1px solid var(--line); border-radius:10px; padding:.7rem .8rem; width:100%; transition:border-color .2s ease, box-shadow .2s ease}
  .qfield textarea{resize:vertical; min-height:74px}
  .qfield input:focus, .qfield select:focus, .qfield textarea:focus{outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(26,86,176,.14)}
  .qfield.invalid input, .qfield.invalid select{border-color:#c23b3b; box-shadow:0 0 0 3px rgba(194,59,59,.12)}
  .qerr:empty{display:none}
  .qerr{color:#c23b3b; font-size:.8rem}
  .qhoney{position:absolute !important; left:-9999px; width:1px; height:1px; opacity:0}
  .qsubmit{margin-top:4px; width:100%}
  .qnote{font-size:.79rem; color:var(--ink-soft); text-align:center; margin-top:2px}
  .quote-success{text-align:center; padding:32px 8px}
  .quote-success .qtick{width:60px; height:60px; margin:0 auto 14px; border-radius:50%; background:var(--blue); color:#fff; display:flex; align-items:center; justify-content:center}
  .quote-success .qtick svg{width:30px; height:30px}
  .quote-success h3{font-size:1.5rem; color:var(--ink)}
  .quote-success p{color:var(--ink-soft); margin-top:10px}
  .quote-success p a{color:var(--blue); font-weight:600}
  .quote-success .btn{margin-top:22px}

  @media(prefers-reduced-motion:reduce){
    *{scroll-behavior:auto !important}
    .reveal,.js .reveal{opacity:1 !important; transform:none !important; transition:none; animation:none !important}
    .btn,.svc{transition:none}
    .modal-overlay,.modal-panel,.quote-overlay,.quote-panel{transition:none}
  }

/* ================= SUBPAGES ================= */
/* Page header band */
.page-hero{background:linear-gradient(168deg,#14458f 0%, #0e3d85 46%, #0a2c66 100%); color:#fff; position:relative; overflow:hidden}
.page-hero::after{content:""; position:absolute; inset:0; background-image:radial-gradient(rgba(255,255,255,.06) 1px, transparent 1.4px); background-size:26px 26px; opacity:.5}
.page-hero .wrap{position:relative; z-index:1; padding-top:58px; padding-bottom:66px; max-width:860px}
.page-hero .breadcrumb{font-size:.84rem; color:#a9c4ee; margin-bottom:18px}
.page-hero .breadcrumb a{color:#cfe0fb}
.page-hero .breadcrumb a:hover{color:#fff}
.page-hero h1{font-size:clamp(2.1rem,4.4vw,3.3rem); letter-spacing:-.02em}
.page-hero .lead{margin-top:16px; font-size:1.12rem; color:#d6e4fb; max-width:62ch}
.page-hero .hero-cta{margin-top:26px}
.page-wave{display:block; width:100%; height:48px; color:var(--paper)}
main.page{display:block}
.section{padding:64px 0}
.section.tint{background:var(--mist)}

/* Detailed service rows (services + wedding pages) */
.svc-detail{display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,4vw,56px); align-items:center; padding:52px 0; border-top:1px solid var(--line)}
.svc-detail:first-of-type{border-top:none; padding-top:8px}
.svc-detail:nth-child(even) .svc-detail-media{order:2}
.svc-detail-media{border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow-md); aspect-ratio:4/3; background:var(--mist)}
.svc-detail-media img{width:100%; height:100%; object-fit:cover; display:block; filter:brightness(1.05) saturate(1.14)}
.svc-detail-body h2{font-size:clamp(1.55rem,3vw,2.05rem); color:var(--ink)}
.svc-detail-body > p{color:var(--ink-soft); margin-top:12px; font-size:1.02rem}
.svc-detail-list{list-style:none; margin:18px 0 22px; padding:0; display:grid; gap:10px}
.svc-detail-list li{display:flex; gap:10px; align-items:flex-start; color:var(--ink)}
.svc-detail-list svg{width:20px; height:20px; color:var(--blue); flex:none; margin-top:3px}
.svc-detail-note{display:inline-block; font-size:.82rem; font-weight:600; color:var(--blue); background:var(--mist); padding:.35rem .75rem; border-radius:999px; margin-bottom:14px}
@media(max-width:820px){ .svc-detail{grid-template-columns:1fr; gap:22px; padding:38px 0} .svc-detail:nth-child(even) .svc-detail-media{order:0} }

/* Prose + CTA band */
.prose{max-width:68ch}
.prose h2{font-size:clamp(1.45rem,3vw,1.95rem); color:var(--ink); margin:34px 0 0}
.prose h2:first-child{margin-top:0}
.prose p{color:var(--ink-soft); margin-top:14px; font-size:1.05rem}
.cta-band{background:var(--ink); color:#fff; text-align:center}
.cta-band .wrap{padding:60px 24px}
.cta-band h2{font-size:clamp(1.6rem,3vw,2.2rem); color:#fff}
.cta-band p{color:#c7d6ef; margin-top:12px; max-width:54ch; margin-left:auto; margin-right:auto}
.cta-band .hero-cta{justify-content:center; margin-top:24px; display:flex; gap:14px; flex-wrap:wrap}

/* Services page — £26.99 offer media (matches home offer tile) */
.svc-detail-media.offer-media{background-color:#a55913; background-size:cover; background-position:center 20%; display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden}
.svc-detail-media.offer-media::after{content:""; position:absolute; inset:0; background:linear-gradient(158deg, rgba(150,78,14,.24) 0%, rgba(110,54,12,.34) 50%, rgba(78,38,8,.6) 100%)}
.offer-media-price{position:relative; z-index:1; display:flex; flex-direction:column; gap:6px; align-items:center; font-family:"Newsreader",serif; font-weight:700; font-size:clamp(2.6rem,5vw,3.6rem); color:#fff; line-height:1; text-shadow:0 2px 14px rgba(60,28,2,.5)}
.offer-media-price span{font-family:"Hanken Grotesk",sans-serif; font-weight:600; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; opacity:.92}

/* ---------- Reviews section (widget-ready) ---------- */
.reviews{background:var(--mist)}
.reviews-embed{max-width:1000px; margin:34px auto 0}
.reviews-embed:empty{display:none}
.reviews-card{max-width:640px; margin:32px auto 0; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow-md); padding:34px 28px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:12px}
.reviews-card .g-badge{width:56px; height:56px; border-radius:50%; background:var(--mist); display:flex; align-items:center; justify-content:center; box-shadow:var(--shadow-sm)}
.reviews-card .g-badge svg{width:28px; height:28px}
.reviews-card .stars{color:var(--gold); letter-spacing:3px; font-size:1.15rem}
.reviews-card b{font-family:"Newsreader",serif; font-weight:600; font-size:1.25rem; color:var(--ink)}
.reviews-card p{color:var(--ink-soft); max-width:44ch; margin-top:-2px}
.reviews-card .btn{margin-top:10px}

/* ---- Our Work gallery ---- */
.gallery-intro{max-width:60ch; margin:0 0 30px}
.gallery{display:flex; flex-direction:column; gap:22px}
.gallery figure{margin:0; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow-sm); display:flex; flex-direction:column}
.gallery img{width:100%; height:auto; display:block; object-fit:cover}
.gallery figcaption{padding:16px 18px 18px; font-size:.94rem; color:var(--ink-soft); line-height:1.5; flex:1}
.gallery figcaption strong{display:block; font-family:"Newsreader",serif; font-weight:600; font-size:1.1rem; color:var(--ink); margin-bottom:3px}
.g-feature img{height:clamp(260px,42vw,540px); object-position:center top}
.g-row{display:grid; grid-template-columns:repeat(3,1fr); gap:22px}
.g-row img{aspect-ratio:3/4}
@media(max-width:900px){.g-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.g-row{grid-template-columns:1fr}}

/* ============ Microinteractions ============ */
/* Sticky header softens in with a shadow once scrolled */
header{transition:box-shadow .35s ease, background .35s ease}
header.scrolled{box-shadow:0 8px 30px rgba(11,37,69,.10); background:rgba(255,255,255,.92)}

/* Brand rose gives a friendly nudge on hover */
.brand .rose{transition:transform .5s var(--ease)}
.brand:hover .rose{transform:rotate(-10deg) scale(1.08)}

/* Button icons drift on hover; the phone rings on Call buttons */
.btn svg{transition:transform .35s var(--ease)}
.btn:hover svg{transform:translateX(2px)}
.btn[href^="tel:"]:hover svg{animation:ring .7s var(--ease)}
@keyframes ring{0%,100%{transform:rotate(0)}15%{transform:rotate(-16deg)}30%{transform:rotate(13deg)}45%{transform:rotate(-9deg)}60%{transform:rotate(6deg)}75%{transform:rotate(-3deg)}}

/* Hero trust chips lift & brighten */
.chip{transition:transform .35s var(--ease), background .3s ease, border-color .3s ease}
.chip:hover{transform:translateY(-2px); background:rgba(255,255,255,.17); border-color:rgba(255,255,255,.34)}

/* Our Work gallery: tiles lift, photos zoom */
.gallery figure{transition:transform .5s var(--ease), box-shadow .5s var(--ease)}
.gallery figure img{transition:transform .9s var(--ease)}
.gallery figure:hover{transform:translateY(-5px); box-shadow:var(--shadow-md)}
.gallery figure:hover img{transform:scale(1.055)}

/* Service-detail, wedding & about photos gently zoom on hover */
.svc-detail-media img,.wed-photo img,.about-photo img{transition:transform .9s var(--ease)}
.svc-detail:hover .svc-detail-media img,.wed-photo:hover img,.about-photo:hover img{transform:scale(1.05)}

/* How-It-Works steps lift, the number pops */
.step{transition:transform .5s var(--ease), box-shadow .5s var(--ease)}
.step:hover{transform:translateY(-5px); box-shadow:var(--shadow-md)}
.step-n{transition:transform .5s var(--ease)}
.step:hover .step-n{transform:scale(1.08) rotate(-4deg)}

/* Visit Us: contact rows slide, hours rows highlight */
.crow{transition:transform .3s var(--ease)}
.crow:hover{transform:translateX(4px)}
.hrow{transition:background .25s ease, padding-left .25s ease; border-radius:8px}
.hrow:hover{background:rgba(255,255,255,.05); padding-left:8px}

/* "Open now" pulsing status dot */
.hours-card .open-now.show{display:inline-flex; align-items:center; gap:9px}
.hours-card .open-now.show::before{content:""; width:9px; height:9px; border-radius:50%; background:#57d98a; box-shadow:0 0 0 0 rgba(87,217,138,.6); animation:pulse 2.2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(87,217,138,.55)}70%{box-shadow:0 0 0 9px rgba(87,217,138,0)}100%{box-shadow:0 0 0 0 rgba(87,217,138,0)}}

@media(prefers-reduced-motion:reduce){
  header,.brand .rose,.btn svg,.chip,.gallery figure,.gallery figure img,.svc-detail-media img,.wed-photo img,.about-photo img,.step,.step-n,.crow,.hrow{transition:none !important}
  .btn[href^="tel:"]:hover svg,.hours-card .open-now.show::before{animation:none !important}
}

/* Services: insurance note */
.insurance-note{max-width:680px; margin:34px auto 0; text-align:center; display:flex; align-items:center; justify-content:center; gap:10px; background:var(--mist); border:1px solid var(--line); border-radius:var(--r-md); padding:14px 22px; color:var(--ink-soft); font-size:1rem}
.insurance-note svg{width:20px; height:20px; color:var(--blue); flex:none}

/* Service pop-up: insurance note */
.modal-note{display:flex; align-items:center; gap:9px; margin:16px 0 4px; padding:11px 14px; background:var(--mist); border:1px solid var(--line); border-radius:10px; color:var(--ink-soft); font-size:.9rem; line-height:1.4}
.modal-note svg{width:18px; height:18px; color:var(--blue); flex:none}
.modal-note[hidden]{display:none}
