/*
Theme Name: Angel Brigade
Theme URI: https://www.angelbrigade.co.za
Author: Angel Brigade
Author URI: https://www.angelbrigade.co.za
Description: A compassionate, dignified custom WordPress theme for Angel Brigade Pet Cremation Services. Converted from a bespoke single-page HTML design, preserving the original layout, typography, animations and interactions while adding full WordPress content management, translation-readiness, accessibility support, editable service pricing placeholders, testimonials with Google Reviews integration, a POPIA privacy policy page, and WhatsApp conversion-tracking hooks for Google Tag Manager.
Version: 1.0.4
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: angel-brigade
Tags: custom-colors, custom-logo, custom-menu, featured-images, translation-ready, threaded-comments, accessibility-ready

Angel Brigade WordPress Theme, Copyright 2026
Angel Brigade is distributed under the terms of the GNU GPL.

This theme bundles the Cormorant Garamond and Mulish fonts served via
Google Fonts (https://fonts.google.com), used under the SIL Open Font
License, 1.1: https://scripts.sil.org/OFL
*/


  :root{
    --ink:#1E2C38;
    --ink-soft:#4B5960;
    --gold:#C6963F;
    --gold-deep:#A87B31;
    --gold-soft:#E2C48F;
    --taupe:#D3BBA7;
    --mist:#B6B6B8;
    --cream:#FAF6F1;
    --cream-deep:#F1E6DA;
    --paper:#FFFDFB;
    --line: rgba(30,44,56,0.12);
    --shadow: 0 20px 50px -25px rgba(30,44,56,0.35);
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    font-family:'Mulish', sans-serif;
    color:var(--ink-soft);
    background:var(--cream);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  img{max-width:100%; display:block;}
  a{color:inherit; text-decoration:none;}
  .wrap{max-width:1140px; margin:0 auto; padding:0 28px;}
  h1,h2,h3{
    font-family:'Cormorant Garamond', serif;
    color:var(--ink);
    font-weight:600;
    letter-spacing:0.01em;
  }
  .eyebrow{
    font-family:'Mulish', sans-serif;
    font-size:12.5px;
    font-weight:700;
    letter-spacing:0.22em;
    text-transform:uppercase;
    color:var(--gold-deep);
    display:inline-flex;
    align-items:center;
    gap:10px;
  }
  .eyebrow::before{
    content:"";
    width:26px; height:1px;
    background:var(--gold);
    display:inline-block;
  }
  .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    padding:15px 30px;
    border-radius:100px;
    font-family:'Mulish', sans-serif;
    font-weight:700;
    font-size:14.5px;
    letter-spacing:0.03em;
    cursor:pointer;
    border:1px solid transparent;
    transition: all .25s ease;
    white-space:nowrap; flex-shrink:0;
  }
  .btn-primary{
    background: linear-gradient(180deg, var(--gold) 0%, var(--gold-deep) 100%);
    color:#fff;
    box-shadow: 0 12px 24px -10px rgba(166,122,45,0.55);
  }
  .btn-primary:hover{ transform:translateY(-2px); box-shadow: 0 16px 28px -10px rgba(166,122,45,0.65); }
  .btn-outline{
    background:transparent;
    color:var(--ink);
    border:1px solid var(--line);
  }
  .btn-outline:hover{ border-color:var(--gold); color:var(--gold-deep); }

  /* ---------- NAV ---------- */
  header{
    position:sticky; top:0; z-index:50;
    background:rgba(250,246,241,0.9);
    backdrop-filter: blur(10px);
    border-bottom:1px solid var(--line);
  }
  /*
   * flex-wrap:nowrap + a minimum gap of 24px between the three groups
   * (brand / nav-links / nav-cta) is deliberate: justify-content:space-between
   * alone can collapse to ~0px between groups once the row is full width,
   * which is exactly what made the last nav link ("Contact") visually run
   * into the phone number next to it. The explicit gap guarantees some
   * breathing room always remains, on every screen size.
   */
  nav.wrap{
    display:flex; align-items:center; justify-content:space-between;
    flex-wrap:nowrap; gap:24px;
    height:84px;
  }
  .brand{ display:flex; align-items:center; gap:12px; flex-shrink:0; }
  /*
   * Logo emblem: fixed at its correct native aspect ratio (900x419 ->
   * 2.147971:1) so it always renders at exactly 94.51px x 44px, on every
   * screen size, instead of relying on "width:auto" (which can be
   * overridden by a mismatched width/height on the <img> itself, e.g. if
   * the Custom Logo control's recommended crop guide doesn't match the
   * image's real proportions). object-fit:contain is a second safety net
   * against any stretching/squishing, and !important is used deliberately
   * here (and only here) so this fixed brand-mark size can't be silently
   * overridden by a caching/page-builder plugin's "Additional CSS", by a
   * higher-specificity selector elsewhere, or by a stale style rule left
   * behind from an earlier deploy.
   */
  .brand img,
  .brand img.custom-logo,
  a.brand .custom-logo-link img{
    height:44px !important; width:94.51px !important;
    max-width:94.51px !important; max-height:44px !important;
    object-fit:contain; flex-shrink:0;
  }
  /*
   * .brand-text's two children ("name" and "sub") must stack as two
   * separate lines, matching the original design. The theme outputs them
   * as <span> elements (so the WordPress Site Title field can be used
   * instead of hard-coded text) -- a <span> is inline by default and
   * will NOT stack unless explicitly made a flex column here, which is
   * what was missing and caused "PET CREMATION SERVICES" to run onto the
   * same line as the name and wrap awkwardly. white-space:nowrap on each
   * line stops that wrapping happening ever again, on any screen size.
   */
  .brand-text{
    display:flex; flex-direction:column; justify-content:center;
    font-family:'Cormorant Garamond', serif; line-height:1.05;
  }
  /*
   * text-transform:uppercase guarantees the brand name always renders as
   * "ANGEL BRIGADE" exactly like the original design, regardless of how
   * the WordPress Site Title field happens to be capitalised.
   */
  .brand-text .name{
    font-size:20px; font-weight:600; color:var(--ink); letter-spacing:0.06em;
    text-transform:uppercase; white-space:nowrap;
  }
  .brand-text .sub{
    font-size:10.5px; font-weight:500; letter-spacing:0.22em; color:var(--gold-deep);
    text-transform:uppercase; white-space:nowrap;
  }
  .nav-links{ display:flex; align-items:center; gap:38px; font-size:14.5px; font-weight:600; color:var(--ink-soft); flex-shrink:0; }
  /*
   * WordPress's wp_nav_menu() renders a standard <ul class="nav-links-list">
   * with each item wrapped in its own <li> (this is intentional -- see the
   * note in header.php). These rules make that <ul> a flex row identical
   * to the fallback flat <a> layout above, and explicitly reset the <li>'s
   * own default list-item styling (bullet marker, block sizing, margin)
   * so a real menu never has visibly different spacing/markers than the
   * fallback. white-space:nowrap on the links stops multi-word labels
   * ("How It Works", "For Horses") from wrapping onto a second line if
   * the row is ever tight, which look like a layout bug otherwise.
   */
  .nav-links-list{
    display:flex; align-items:center; gap:38px;
    list-style:none; margin:0; padding:0;
  }
  .nav-links-list li{ list-style:none; margin:0; padding:0; }
  .nav-links a, .nav-links-list a{ position:relative; padding:4px 0; white-space:nowrap; }
  .nav-links a::after, .nav-links-list a::after{
    content:""; position:absolute; left:0; bottom:-2px; width:0; height:1px; background:var(--gold);
    transition:width .25s ease;
  }
  .nav-links a:hover::after, .nav-links-list a:hover::after{ width:100%; }
  .nav-cta{ display:flex; align-items:center; gap:18px; flex-shrink:0; }
  .nav-phone{ font-size:14px; font-weight:700; color:var(--ink); display:flex; align-items:center; gap:8px; white-space:nowrap; flex-shrink:0; }
  /*
   * Same reasoning as .nav-links-list above: wp_nav_menu() renders a
   * standard <ul class="mobile-menu-list"> inside #mobileMenu rather than
   * bare <a> tags, so this makes that <ul> itself the flex column (with
   * list-style/margin/padding reset) instead of relying on the browser's
   * default <ul> indentation and bullets.
   */
  .mobile-menu-list{
    display:flex; flex-direction:column; gap:16px;
    list-style:none; margin:0; padding:0;
  }
  .mobile-menu-list li{ list-style:none; margin:0; padding:0; }
  .burger{ display:none; background:none; border:none; cursor:pointer; padding:6px; }
  .burger span{ display:block; width:24px; height:2px; background:var(--ink); margin:5px 0; }

  /* ---------- HERO ---------- */
  .hero{
    position:relative;
    padding:70px 0 90px;
    overflow:hidden;
    text-align:center;
  }
  .hero-glow{
    position:absolute; top:-160px; left:50%; transform:translateX(-50%);
    width:900px; height:900px;
    background: radial-gradient(circle, rgba(198,150,63,0.14) 0%, rgba(198,150,63,0) 70%);
    pointer-events:none;
  }
  .hero-inner{ position:relative; z-index:2; max-width:620px; margin:0 auto; }
  .hero-logo-full{ width:min(480px, 88%); height:auto; margin:0 auto 8px; display:block; }
  .hero h1{
    font-family:'Cormorant Garamond', serif;
    font-weight:600;
    font-size: clamp(19px, 2.6vw, 25px);
    color:var(--ink);
    line-height:1.2;
    margin-bottom:28px;
    letter-spacing:0.01em;
  }
  .hero-copy{ text-align:left; max-width:560px; margin:0 auto; }
  .hero-copy .eyebrow{ justify-content:flex-start; margin-bottom:14px; }
  .hero-copy .lead{
    font-family:'Cormorant Garamond', serif;
    font-style:italic;
    font-size:21px;
    color:var(--gold-deep);
    margin-bottom:16px;
  }
  .hero-copy p.desc{
    font-size:15.5px;
    color:var(--ink-soft);
    margin-bottom:24px;
  }
  .hero-promise h4{
    font-family:'Cormorant Garamond', serif;
    font-size:19px;
    color:var(--ink);
    font-weight:600;
    margin-bottom:14px;
  }
  .promise-grid{
    display:grid; grid-template-columns:1fr 1fr; gap:12px 20px;
    margin-bottom:34px;
  }
  .promise-grid .p-item{
    display:flex; align-items:flex-start; gap:9px;
    font-size:14.5px; color:var(--ink-soft);
  }
  .promise-grid svg{ width:15px; height:15px; fill:var(--gold); flex-shrink:0; margin-top:3px; }
  .hero-ctas{ display:flex; gap:16px; justify-content:center; flex-wrap:wrap; }
  @media (max-width:560px){
    .promise-grid{ grid-template-columns:1fr; }
  }

  /* ---------- VALUES STRIP ---------- */
  .values{
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    background:var(--paper);
  }
  .values .wrap{
    display:flex; justify-content:center; align-items:center;
    gap:36px; flex-wrap:wrap;
    padding:22px 28px;
  }
  .values .item{
    display:flex; align-items:center; gap:8px;
    font-family:'Cormorant Garamond', serif;
    font-size:17px; letter-spacing:0.04em;
    color:var(--ink);
  }
  .values svg{ width:14px; height:14px; fill:var(--gold); }

  /* ---------- SECTION GENERIC ---------- */
  section{ padding:100px 0; }
  .section-head{ text-align:center; max-width:620px; margin:0 auto 60px; }
  .section-head h2{ font-size:clamp(28px,4vw,40px); margin-top:14px; }
  .section-head p{ margin-top:16px; font-size:16px; }
  .alt-bg{ background:var(--cream-deep); }

  /* ---------- HOW IT WORKS ---------- */
  .steps-wrap{ max-width:900px; margin:0 auto; }
  .steps-nav{ display:flex; justify-content:center; gap:14px; margin-bottom:48px; }
  .step-bar{
    width:90px; height:3px; background:var(--line); border-radius:4px; overflow:hidden;
  }
  .step-bar .fill{ height:100%; width:0%; background:var(--gold); display:block; animation: bar-fill 27s ease-in-out infinite backwards; }
  .step-bar.b1 .fill{ animation-delay: 0s; }
  .step-bar.b2 .fill{ animation-delay: 9s; }
  .step-bar.b3 .fill{ animation-delay: 18s; }
  @keyframes bar-fill{
    0%{ width:0%; }
    2%{ width:0%; }
    33%{ width:100%; }
    100%{ width:100%; }
  }
  .step-stage{
    position:relative;
    min-height:340px;
  }
  .step-panel{
    position:absolute; inset:0;
    display:grid;
    grid-template-columns: 1fr 1fr;
    align-items:center;
    gap:56px;
    opacity:0;
    animation: step-cycle 27s ease-in-out infinite backwards;
  }
  .step-panel[data-index="0"]{ animation-delay: 0s; }
  .step-panel[data-index="1"]{ animation-delay: 9s; }
  .step-panel[data-index="2"]{ animation-delay: 18s; }
  @keyframes step-cycle{
    0%{ opacity:0; }
    2%{ opacity:1; }
    31%{ opacity:1; }
    33%{ opacity:0; }
    100%{ opacity:0; }
  }
  .step-visual{
    aspect-ratio: 4/3.2;
    border-radius:18px;
    overflow:hidden;
    border:1px solid var(--line);
    box-shadow:var(--shadow);
  }
  .step-visual svg{ width:100%; height:100%; display:block; }

  /* Scene 1: van arriving */
  .van-group{ animation: van-drive 7s ease-in-out infinite; transform-origin: center; }
  @keyframes van-drive{
    0%, 100% { transform: translateX(-4px); }
    50% { transform: translateX(6px); }
  }

  /* Scene 2: garden drift */
  .petal{ animation: petal-drift 9s ease-in-out infinite; }
  .petal.p2{ animation-delay: -3s; }
  .petal.p3{ animation-delay: -6s; }
  @keyframes petal-drift{
    0% { transform: translate(0,0) rotate(0deg); opacity:0; }
    10% { opacity:0.8; }
    90% { opacity:0.6; }
    100% { transform: translate(-18px,26px) rotate(45deg); opacity:0; }
  }
  .sway{ animation: sway 6s ease-in-out infinite; transform-origin: bottom center; }
  @keyframes sway{
    0%,100%{ transform: rotate(-1.5deg); }
    50%{ transform: rotate(1.5deg); }
  }

  /* Scene 3: keepsake glow */
  .glow-pulse{ animation: glow-pulse 4s ease-in-out infinite; transform-origin: center; }
  @keyframes glow-pulse{
    0%,100%{ opacity:0.35; transform:scale(1); }
    50%{ opacity:0.75; transform:scale(1.15); }
  }
  .step-text{ text-align:left; }
  .step-text .eyebrow{ margin-bottom:14px; }
  .step-text h3{ font-size:30px; margin-bottom:14px; }
  .step-text p{ font-size:15.5px; }
  @media (max-width:720px){
    .step-panel{ grid-template-columns:1fr; text-align:center; gap:24px; }
    .step-text{ text-align:center; }
    .step-text .eyebrow{ justify-content:center; }
    .step-stage{ min-height:460px; }
  }

  /* ---------- SERVICES ---------- */
  .service-grid{
    display:grid; grid-template-columns:1fr 1fr; gap:30px;
  }
  .service-card{
    background:var(--paper);
    border:1px solid var(--line);
    border-radius:20px;
    padding:44px 38px;
    box-shadow:var(--shadow);
    display:flex; flex-direction:column;
  }
  .service-card.featured{ border-color:var(--gold-soft); }
  .service-tag{
    align-self:flex-start;
    font-size:11px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase;
    color:var(--gold-deep); background:var(--cream-deep); padding:6px 14px; border-radius:100px;
    margin-bottom:22px;
  }
  .service-card h3{ font-size:27px; margin-bottom:14px; }
  .service-card p.desc{ font-size:15px; margin-bottom:22px; }
  .keepsake-list{ list-style:none; margin-bottom:30px; }
  .keepsake-list li{
    display:flex; align-items:center; gap:10px;
    font-size:15px; color:var(--ink); font-weight:600;
    padding:10px 0; border-top:1px solid var(--line);
  }
  .keepsake-list li:first-child{ border-top:none; }
  .keepsake-list svg{ width:15px; height:15px; fill:var(--gold); flex-shrink:0; }
  /*
   * Service area / price placeholders, editable from Appearance >
   * Customize > Angel Brigade Theme Options > Service Area & Pricing.
   * Sits between the card's content and its CTA button, so "margin-top:auto"
   * on .service-card .btn still pushes the button to the card's bottom.
   */
  .service-meta{
    display:flex; align-items:center; justify-content:space-between;
    flex-wrap:wrap; gap:10px 14px;
    margin-bottom:22px; padding:12px 16px;
    background:var(--cream-deep); border-radius:12px;
  }
  .service-area{ font-size:13px; color:var(--ink-soft); }
  .service-price{
    font-size:13px; font-weight:700; color:#fff;
    background:linear-gradient(180deg, var(--gold) 0%, var(--gold-deep) 100%);
    padding:5px 14px; border-radius:100px; white-space:nowrap;
  }
  .service-card .btn{ margin-top:auto; align-self:flex-start; }
  @media (max-width:720px){ .service-grid{ grid-template-columns:1fr; } }

  /* ---------- PHOTO BAND ---------- */
  .photo-band{
    position:relative;
    display:grid;
    grid-template-columns: 1fr 1fr;
    align-items:center;
    gap:60px;
  }
  .photo-band .content{ position:relative; z-index:2; }
  .photo-band .content .eyebrow{ justify-content:flex-start; margin-bottom:16px; }
  .photo-band h2{ color:var(--ink); font-size:clamp(26px,4vw,36px); margin-bottom:16px; }
  .photo-band p{ color:var(--ink-soft); font-size:15.5px; }
  .photo-band .frame{
    position:relative;
    border-radius:22px;
    overflow:hidden;
    box-shadow:var(--shadow);
    aspect-ratio: 1060/728;
  }
  .photo-band .frame img{ width:100%; height:100%; object-fit:cover; }
  .photo-band .frame::after{
    content:"";
    position:absolute; inset:0;
    border-radius:22px;
    border:1px solid rgba(255,255,255,0.5);
    pointer-events:none;
  }
  @media (max-width:800px){
    .photo-band{ grid-template-columns:1fr; text-align:center; gap:34px; }
    .photo-band .content .eyebrow{ justify-content:center; }
  }

  /* ---------- EQUINE ---------- */
  .equine-band{
    position:relative;
    border-radius:26px;
    padding:64px 56px;
    background: linear-gradient(135deg, var(--cream-deep) 0%, var(--taupe) 130%);
    overflow:hidden;
    text-align:center;
  }
  .equine-band .content{ position:relative; z-index:2; max-width:640px; margin:0 auto; }
  .equine-band .eyebrow{ justify-content:center; margin-bottom:16px; }
  .equine-band h2{ font-size:clamp(26px,4vw,38px); margin-bottom:18px; }
  .equine-band p{ font-size:15.5px; margin-bottom:22px; }
  .equine-badge{
    display:inline-flex; align-items:center; gap:8px;
    font-size:12px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;
    color:var(--gold-deep); background:var(--paper); border:1px solid var(--gold-soft);
    padding:8px 16px; border-radius:100px; margin-bottom:26px;
  }
  .equine-badge svg{ width:13px; height:13px; fill:var(--gold-deep); }
  /* .service-meta's default cream-deep background would blend into this
     section's gradient, so give it a solid paper background here. */
  .equine-band .service-meta{ background:var(--paper); display:inline-flex; margin-bottom:22px; }
  .equine-note{ font-size:13.5px; color:var(--ink-soft); margin-top:18px; }
  .equine-ring{
    position:absolute; border-radius:50%; border:1px solid rgba(30,44,56,0.1);
  }
  .equine-ring.e1{ width:260px; height:260px; top:-100px; left:-80px; }
  .equine-ring.e2{ width:340px; height:340px; bottom:-160px; right:-100px; }
  @media (max-width:720px){
    .equine-band{ padding:48px 26px; }
  }

  /* ---------- SHOP TEASER ---------- */
  .shop-grid{
    display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:50px;
  }
  .shop-item{
    text-align:center; padding:38px 20px;
    background:var(--paper); border:1px dashed var(--line); border-radius:16px;
  }
  .shop-item .icon{
    width:46px; height:46px; margin:0 auto 18px;
    display:flex; align-items:center; justify-content:center;
    border-radius:50%; background:var(--cream-deep);
  }
  .shop-item .icon svg{ width:20px; height:20px; fill:var(--gold-deep); }
  .shop-item h4{ font-family:'Cormorant Garamond', serif; font-size:19px; color:var(--ink); font-weight:600; }
  .shop-note{ text-align:center; margin-top:36px; font-size:14.5px; }
  @media (max-width:720px){ .shop-grid{ grid-template-columns:1fr; } }

  /* ---------- TESTIMONIALS & GOOGLE REVIEWS ---------- */
  .testimonial-grid{
    display:grid; grid-template-columns:repeat(3,1fr); gap:26px;
  }
  .testimonial-card{
    position:relative;
    background:var(--paper);
    border:1px solid var(--line);
    border-radius:20px;
    padding:32px 28px;
    box-shadow:var(--shadow);
    display:flex; flex-direction:column;
  }
  .testimonial-card.is-demo{ border-style:dashed; border-color:var(--gold-soft); }
  .testimonial-demo-tag{
    align-self:flex-start;
    font-size:10.5px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase;
    color:var(--gold-deep); background:var(--cream-deep);
    padding:4px 10px; border-radius:100px; margin-bottom:14px;
  }
  .testimonial-stars{ display:flex; gap:3px; margin-bottom:16px; }
  .testimonial-stars svg{ width:16px; height:16px; }
  .testimonial-stars .star-filled{ fill:var(--gold); }
  .testimonial-stars .star-empty{ fill:var(--line); }
  .testimonial-quote{
    font-family:'Cormorant Garamond', serif; font-style:italic;
    font-size:17px; color:var(--ink); line-height:1.5;
    margin-bottom:20px; flex-grow:1;
  }
  .testimonial-author{ display:flex; flex-direction:column; gap:2px; }
  .testimonial-name{ font-size:14.5px; font-weight:700; color:var(--ink); }
  .testimonial-role{ font-size:12.5px; color:var(--ink-soft); }
  .reviews-demo-notice{
    max-width:720px; margin:0 auto 30px;
    text-align:center; font-size:13px; color:var(--ink-soft);
    background:var(--cream-deep); border-radius:12px; padding:14px 20px;
  }
  @media (max-width:900px){ .testimonial-grid{ grid-template-columns:1fr 1fr; } }
  @media (max-width:600px){ .testimonial-grid{ grid-template-columns:1fr; } }

  /* ---------- CONTACT / FOOTER ---------- */
  footer{ background:var(--ink); color:#EDE7DF; padding:70px 0 30px; }
  .footer-top{
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:40px;
    padding-bottom:44px; border-bottom:1px solid rgba(255,255,255,0.12);
  }
  .footer-brand{ display:flex; align-items:center; gap:14px; max-width:340px; }
  /* Same emblem, same fixed aspect ratio, scaled to the footer's slightly taller 46px height (46 x 2.147971 = 98.81px). */
  .footer-brand img,
  .footer-brand img.custom-logo,
  .footer-brand .custom-logo-link img{
    height:46px !important; width:98.81px !important;
    max-width:98.81px !important; max-height:46px !important;
    object-fit:contain; flex-shrink:0;
  }
  .footer-brand .name{ font-family:'Cormorant Garamond', serif; font-size:21px; letter-spacing:0.05em; text-transform:uppercase; white-space:nowrap; }
  .footer-brand .tagline{ font-family:'Cormorant Garamond', serif; font-style:italic; font-size:14.5px; color:var(--gold-soft); margin-top:4px; }
  .footer-contact{ display:flex; flex-direction:column; gap:10px; font-size:14.5px; }
  .footer-contact a{ opacity:0.9; }
  .footer-contact a:hover{ color:var(--gold-soft); }
  .footer-values{ display:flex; gap:22px; flex-wrap:wrap; font-family:'Cormorant Garamond', serif; font-size:15px; color:var(--gold-soft); }
  .footer-bottom{
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;
    padding-top:26px; font-size:12.5px; opacity:0.6;
  }
  .footer-privacy-link a{ color:inherit; text-decoration:underline; }

  @media (max-width:900px){
    .nav-links{ display:none; }
    .burger{ display:block; }
  }
  @media (max-width:560px){
    section{ padding:70px 0; }
    .service-grid{ gap:20px; }
  }

  /* ---------- ENQUIRY MODAL ---------- */
  .modal-overlay{
    display:none;
    position:fixed; inset:0; z-index:200;
    background:rgba(30,44,56,0.55);
    align-items:center; justify-content:center;
    padding:20px;
  }
  .modal-card{
    background:var(--paper);
    border-radius:20px;
    max-width:440px; width:100%;
    max-height:90vh; overflow-y:auto;
    padding:34px 30px;
    box-shadow:var(--shadow);
    position:relative;
  }
  .modal-close{
    position:absolute; top:16px; right:16px;
    width:32px; height:32px; border-radius:50%;
    background:var(--cream-deep); border:none; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    font-size:16px; color:var(--ink); line-height:1;
  }
  .modal-card h3{ font-size:24px; margin-bottom:6px; }
  .modal-card .sub{ font-size:14px; color:var(--ink-soft); margin-bottom:22px; }
  .modal-card label{
    display:block; font-size:12.5px; font-weight:700; letter-spacing:0.03em;
    color:var(--ink); margin-bottom:6px; margin-top:16px;
  }
  .modal-card input, .modal-card select{
    width:100%; padding:11px 14px;
    border:1px solid var(--line); border-radius:10px;
    font-family:'Mulish', sans-serif; font-size:14.5px;
    background:var(--cream); color:var(--ink);
  }
  /*
   * Consent checkbox: overrides the generic ".modal-card label" (block,
   * bold, uppercase-ish field label) and ".modal-card input" (100% width,
   * boxed) rules above, since a checkbox + its sentence of consent text
   * needs an inline flex row instead, not a full-width boxed input with
   * a label stacked above it.
   */
  .modal-card label.consent-check{
    display:flex; align-items:flex-start; gap:10px;
    font-size:13px; font-weight:400; letter-spacing:normal;
    color:var(--ink-soft); text-transform:none;
    margin-top:18px; cursor:pointer;
  }
  .modal-card label.consent-check input[type="checkbox"]{
    width:16px; height:16px; margin:2px 0 0; flex-shrink:0;
    accent-color:var(--gold-deep); cursor:pointer;
  }
  .modal-card label.consent-check span{ line-height:1.5; }
  .modal-card label.consent-check a{ color:var(--gold-deep); text-decoration:underline; }
  .modal-card .btn{ width:100%; margin-top:24px; }
  .whatsapp-link{
    display:flex; align-items:center; justify-content:center; gap:8px;
    width:100%; margin-top:12px;
    padding:13px; border-radius:100px;
    background:#25D366; color:#fff;
    font-weight:700; font-size:14px;
  }
  .whatsapp-link svg{ width:17px; height:17px; fill:#fff; }
  .modal-or{ text-align:center; font-size:12.5px; color:var(--ink-soft); margin:16px 0 2px; }


  /* =====================================================
     Contact Form 7 (pricing enquiry modal)
     ===================================================== */
  .modal-card .wpcf7 form{ margin:0; }
  .modal-card .ab-field{ margin:0; }
  .modal-card .ab-field p{ margin:0; }
  .modal-card .ab-field legend + p{ margin:0; }
  .modal-card .wpcf7-form-control-wrap{ display:block; }
  .modal-card .wpcf7-form-control-wrap input[type="text"],
  .modal-card .wpcf7-form-control-wrap input[type="email"],
  .modal-card .wpcf7-form-control-wrap input[type="tel"],
  .modal-card .wpcf7-form-control-wrap select{ width:100%; }
  .modal-card fieldset.ab-pet-size{
    border:0; padding:0; margin:16px 0 0; min-width:0;
  }
  .modal-card fieldset.ab-pet-size legend{
    padding:0; margin:0 0 8px; font-size:12.5px; font-weight:700; letter-spacing:0.03em; color:var(--ink);
  }
  .modal-card .wpcf7-radio .wpcf7-list-item{ display:block; margin:0 0 8px; }
  .modal-card .wpcf7-radio label,
  .modal-card .wpcf7-acceptance label{
    display:flex; align-items:flex-start; gap:10px; margin:0;
    font-size:13.5px; font-weight:400; letter-spacing:normal; color:var(--ink-soft); cursor:pointer;
    padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--cream);
    line-height:1.4;
  }
  .modal-card .wpcf7-radio label:hover{ border-color:var(--gold); }
  .modal-card .wpcf7-radio label:has(input:checked){ border-color:var(--gold-deep); background:#fff; color:var(--ink); }
  .modal-card .wpcf7-radio input[type="radio"],
  .modal-card .wpcf7-acceptance input[type="checkbox"]{
    width:16px; height:16px; margin:2px 0 0; padding:0; flex-shrink:0; accent-color:var(--gold-deep); cursor:pointer;
  }
  .modal-card .wpcf7-acceptance label{ border:0; background:none; padding:0; }
  .modal-card .wpcf7-acceptance a{ color:var(--gold-deep); text-decoration:underline; }
  .modal-card .ab-consent{ margin-top:18px; }
  .modal-card .wpcf7-submit{ width:100%; margin-top:24px; cursor:pointer; border:0; font-family:inherit; }
  .modal-card .wpcf7-submit:disabled{ opacity:.55; cursor:not-allowed; }
  .modal-card .wpcf7-spinner{ display:block; margin:10px auto 0; }
  .modal-card .wpcf7-not-valid-tip{ color:#b32d2e; font-size:12.5px; margin-top:4px; display:block; }
  .modal-card input.wpcf7-not-valid, .modal-card select.wpcf7-not-valid{ border-color:#b32d2e; }
  .modal-card .wpcf7 form .wpcf7-response-output{
    margin:18px 0 0; padding:12px 14px; border-radius:10px; font-size:13.5px; border:1px solid var(--gold);
  }
  .modal-card .wpcf7 form.sent .wpcf7-response-output{ border-color:#1a7f37; background:#eaf6ee; color:#14532d; }
  .modal-card .wpcf7 form.invalid .wpcf7-response-output,
  .modal-card .wpcf7 form.failed .wpcf7-response-output{ border-color:#b32d2e; background:#fbeaea; color:#7a1d1d; }
  .modal-card .screen-reader-response{ position:absolute; clip:rect(1px,1px,1px,1px); clip-path:inset(50%); height:1px; width:1px; overflow:hidden; }
  .ab-cf7-edit{ font-size:12px; margin-top:10px; text-align:center; }
  .ab-cf7-fallback{ font-size:14px; padding:14px; background:var(--cream); border-radius:10px; }

  /* =====================================================
     Memorial Wall (gallery + upload)
     ===================================================== */
  .memorial-cta{ text-align:center; margin:0 0 30px; }
  .memorial-grid{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:24px; }
  .memorial-card figure{ margin:0; background:var(--paper); border-radius:16px; overflow:hidden; box-shadow:var(--shadow); height:100%; display:flex; flex-direction:column; }
  .memorial-zoom{ display:block; aspect-ratio:1/1; overflow:hidden; background:var(--cream-deep); }
  .memorial-zoom img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s ease; }
  .memorial-zoom:hover img, .memorial-zoom:focus-visible img{ transform:scale(1.04); }
  .memorial-card figcaption{ padding:16px 18px 20px; display:flex; flex-direction:column; gap:6px; }
  .memorial-pet{ font-family:'Cormorant Garamond', Georgia, serif; font-size:22px; color:var(--ink); font-weight:600; }
  .memorial-message{ font-size:14px; color:var(--ink-soft); line-height:1.55; }
  .memorial-empty{ text-align:center; color:var(--ink-soft); padding:30px 0; }
  .memorial-pagination{ margin-top:34px; text-align:center; }
  .memorial-pagination .page-numbers{ display:inline-block; padding:8px 14px; margin:0 3px; border-radius:100px; border:1px solid var(--line); color:var(--ink); font-weight:600; font-size:14px; }
  .memorial-pagination .page-numbers.current{ background:var(--gold-deep); border-color:var(--gold-deep); color:#fff; }
  .memorial-notice{ padding:14px 18px; border-radius:12px; margin:0 0 24px; font-size:15px; border:1px solid; }
  .memorial-notice.is-success{ background:#eaf6ee; border-color:#1a7f37; color:#14532d; }
  .memorial-notice.is-error{ background:#fbeaea; border-color:#b32d2e; color:#7a1d1d; }
  .memorial-upload{ max-width:560px; margin:0 auto; }
  .memorial-form{ background:var(--paper); padding:28px; border-radius:16px; box-shadow:var(--shadow); }
  .memorial-form label{ display:block; font-size:12.5px; font-weight:700; letter-spacing:0.03em; color:var(--ink); margin:16px 0 6px; }
  .memorial-form .ab-field:first-of-type label{ margin-top:0; }
  .memorial-form input[type="text"], .memorial-form input[type="file"], .memorial-form textarea{
    width:100%; padding:11px 14px; border:1px solid var(--line); border-radius:10px;
    font-family:'Mulish', sans-serif; font-size:14.5px; background:var(--cream); color:var(--ink);
  }
  .memorial-form small{ display:block; margin-top:6px; color:var(--ink-soft); font-size:12.5px; }
  .memorial-form label.consent-check{ display:flex; align-items:flex-start; gap:10px; font-size:13px; font-weight:400; letter-spacing:normal; color:var(--ink-soft); margin-top:18px; cursor:pointer; }
  .memorial-form label.consent-check input{ width:16px; height:16px; margin:2px 0 0; flex-shrink:0; accent-color:var(--gold-deep); }
  .memorial-form label.consent-check a{ color:var(--gold-deep); text-decoration:underline; }
  .memorial-form .btn{ width:100%; margin-top:8px; cursor:pointer; border:0; font-family:inherit; }
  .memorial-trap{ position:absolute !important; left:-9999px; width:1px; height:1px; overflow:hidden; }
  .memorial-login-box{ background:var(--paper); padding:32px; border-radius:16px; box-shadow:var(--shadow); text-align:center; }
  .memorial-login-actions .btn{ margin:4px; }
  .memorial-mine-title{ margin:36px 0 12px; font-size:22px; }
  .memorial-upload ul.memorial-mine{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
  .memorial-mine li{ display:flex; align-items:center; gap:14px; background:var(--paper); padding:10px 14px; border-radius:12px; border:1px solid var(--line); }
  .memorial-mine img{ width:56px; height:56px; object-fit:cover; border-radius:8px; }
  .memorial-mine li > span{ flex:1; color:var(--ink); font-weight:600; }
  .memorial-mine form{ margin:0; }
  .memorial-remove{ background:none; border:1px solid var(--line); border-radius:100px; padding:6px 14px; font-size:13px; cursor:pointer; color:#b32d2e; font-family:inherit; }
  .memorial-remove:hover{ border-color:#b32d2e; }
  .memorial-lightbox{ position:fixed; inset:0; z-index:300; background:rgba(20,28,36,0.92); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px; }
  .memorial-lightbox img{ max-width:min(92vw,1000px); max-height:78vh; border-radius:10px; box-shadow:0 10px 50px rgba(0,0,0,.5); }
  .memorial-lightbox p{ color:#fff; margin:16px 0 0; text-align:center; max-width:640px; font-size:15px; }
  .memorial-lightbox button{ position:absolute; background:rgba(255,255,255,.15); color:#fff; border:0; width:44px; height:44px; border-radius:50%; font-size:22px; cursor:pointer; }
  .memorial-lightbox .lb-close{ top:18px; right:18px; }
  .memorial-lightbox .lb-prev{ left:18px; top:50%; }
  .memorial-lightbox .lb-next{ right:18px; top:50%; }
  .footer-memorial-link{ color:inherit; text-decoration:underline; }
  @media (max-width:560px){
    .memorial-grid{ grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:14px; }
    .memorial-form, .memorial-login-box{ padding:20px; }
  }

/* =====================================================
   WordPress core / accessibility requirements
   ===================================================== */
.skip-link{
  position:absolute;
  left:-9999px;
  top:auto;
  width:1px; height:1px;
  overflow:hidden;
  z-index:100000;
}
.skip-link:focus{
  left:6px; top:6px;
  width:auto; height:auto;
  padding:12px 20px;
  background:var(--ink);
  color:#fff;
  border-radius:8px;
  font-weight:700;
  text-decoration:none;
}
.screen-reader-text{
  border:0; clip:rect(1px,1px,1px,1px); clip-path:inset(50%);
  height:1px; margin:-1px; overflow:hidden; padding:0; position:absolute;
  width:1px; word-wrap:normal !important;
}
.screen-reader-text:focus{
  background-color:#f1f1f1;
  border-radius:3px;
  box-shadow:0 0 2px 2px rgba(0,0,0,0.6);
  clip:auto !important; clip-path:none;
  color:#21759b;
  display:block; font-size:14px; font-weight:700;
  height:auto; left:5px; line-height:normal; padding:15px 23px 14px;
  text-decoration:none; top:5px; width:auto; z-index:100000;
}

/* Alignment classes for regular WP content/pages */
.alignleft{ float:left; margin:0 24px 16px 0; }
.alignright{ float:right; margin:0 0 16px 24px; }
.aligncenter{ display:block; margin-left:auto; margin-right:auto; }
.wp-caption{ max-width:100%; }
.wp-caption-text{ font-size:13px; color:var(--ink-soft); margin-top:6px; }
.gallery{ display:flex; flex-wrap:wrap; gap:10px; }

/* Generic inner-page content (page.php / single.php / archive.php / search.php / 404.php) */
.page-hero{
  padding:60px 0 30px;
  text-align:center;
  border-bottom:1px solid var(--line);
  background:var(--paper);
}
.page-hero h1{ font-size:clamp(30px,4.5vw,44px); }
.page-content-wrap{ padding:70px 0; }
.page-content-wrap article{ max-width:760px; margin:0 auto; }
.page-content-wrap .entry-content{ font-size:16px; color:var(--ink-soft); }
.page-content-wrap .entry-content h2,
.page-content-wrap .entry-content h3{ margin-top:1.4em; margin-bottom:0.5em; }
.page-content-wrap .entry-content p{ margin-bottom:1.2em; }
.page-content-wrap .entry-content ul,
.page-content-wrap .entry-content ol{ margin:0 0 1.2em 1.4em; }
.page-content-wrap .entry-content img{ border-radius:14px; }
.page-content-wrap .entry-title{ font-size:clamp(26px,4vw,36px); margin-bottom:20px; }

.post-list{ max-width:760px; margin:0 auto; display:flex; flex-direction:column; gap:44px; }
.post-list article{ padding-bottom:36px; border-bottom:1px solid var(--line); }
.post-list .entry-meta{ font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:var(--gold-deep); margin-bottom:8px; }
.post-list .entry-title{ font-size:26px; margin-bottom:10px; }
.post-list .entry-title a:hover{ color:var(--gold-deep); }
.post-list .entry-summary{ font-size:15.5px; }
.post-list .read-more{ margin-top:14px; display:inline-block; font-weight:700; color:var(--gold-deep); }

.pagination{ display:flex; justify-content:center; gap:10px; margin-top:50px; }
.pagination a, .pagination span{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:38px; height:38px; padding:0 10px;
  border:1px solid var(--line); border-radius:8px;
  font-size:14px; font-weight:600; color:var(--ink);
}
.pagination .current{ background:var(--gold); color:#fff; border-color:var(--gold); }

.comments-area{ max-width:760px; margin:60px auto 0; }
.comment-list{ list-style:none; }
.comment-list .children{ list-style:none; margin-left:30px; }
.comment-body{ padding:20px 0; border-top:1px solid var(--line); }
.comment-author .fn{ font-weight:700; color:var(--ink); font-style:normal; }
.comment-metadata a{ font-size:12.5px; color:var(--ink-soft); }
.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"],
.comment-form textarea{
  width:100%; padding:11px 14px; margin-bottom:14px;
  border:1px solid var(--line); border-radius:10px;
  font-family:'Mulish', sans-serif; font-size:14.5px;
  background:var(--paper); color:var(--ink);
}
.comment-reply-title{ font-size:22px; margin-bottom:16px; }

.widget{ margin-bottom:40px; }
.widget-title{ font-family:'Cormorant Garamond', serif; font-size:19px; color:var(--ink); margin-bottom:14px; }

.error-404{ text-align:center; padding:100px 0; }
.error-404 .error-code{ font-family:'Cormorant Garamond', serif; font-size:110px; color:var(--gold-soft); line-height:1; }
.error-404 h1{ margin-bottom:16px; }
.error-404 .search-form-wrap{ max-width:420px; margin:30px auto 0; }
.search-form{ display:flex; gap:10px; }
.search-form input[type="search"]{
  flex:1; padding:12px 16px; border:1px solid var(--line); border-radius:10px;
  font-family:'Mulish', sans-serif; font-size:14.5px;
}
