/*
Theme Name: Storefront Child
Template: storefront
Description: Custom luxury theme for SKIIN Clinic
Version: 1.0.0
*/

/* ==========================================================================
   SKIIN CLINIC — UNIFIED STYLE SYSTEM
   One stylesheet for the whole theme, organised by component to match the
   PHP templates 1:1 (functions.php, header.php, footer.php, front-page.php,
   single-services.php, archive/single-locations.php, home.php/single.php,
   archive/single-product.php, page-contact.php).

   Design language: "clinical botanical" — deep forest green + warm brass,
   warm paper backgrounds, a characterful serif for display type paired with
   a clean grotesque for UI/body copy. Sharp edges over rounded "SaaS" cards,
   hairline rules over drop shadows, numbered steps only where content is
   genuinely sequential.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500;9..144,600&family=Work+Sans:wght@400;500;600;700&display=swap');

/* --------------------------------------------------------------------------
   1. TOKENS
   -------------------------------------------------------------------------- */
:root{
  --font-display:'Fraunces', ui-serif, Georgia, 'Times New Roman', serif;
  --font-body:'Work Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --ink:#12211c;
  --ink-soft:#44514b;
  --muted:#7c8981;
  --paper:#f7f4ee;
  --paper-deep:#ece4d2;
  --line:#dbd4c1;
  --line-dark:rgba(255,255,255,.14);
  --white:#ffffff;

  --forest:#1f5c4d;
  --forest-deep:#0f2e26;
  --forest-footer:#0b2219;
  --forest-tint:#e4ede5;
  --gold:#af8339;
  --gold-deep:#7e5c26;
  --gold-tint:#f2e6c8;
  --clay:#9c5a3f;
  --clay-tint:#f2e2d8;

  --container:1240px;
  --gutter:clamp(20px, 4vw, 48px);
  --radius:3px;
  --radius-pill:999px;
  --ease:cubic-bezier(.4,0,.2,1);
  --shadow:0 24px 48px -28px rgba(15,46,38,.35);
}

/* --------------------------------------------------------------------------
   2. RESET / BASE
   -------------------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important;}
}
body{
  margin:0;
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.65;
  color:var(--ink-soft);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul{margin:0;padding:0;list-style:none;}
table{border-collapse:collapse;width:100%;}

/* Storefront's parent style.css is intentionally not loaded (see the note
   at the top of functions.php's "2. ENQUEUE STYLES & SCRIPTS" section), so
   this theme owns 100% of the base form-control normalization itself
   rather than partially inheriting it. Every button/input/select/textarea
   below starts from the same predictable baseline in every browser before
   the component-specific classes (.btn, .field, .check-item, etc.) apply
   their own look. */
button,input,select,textarea{
  font-family:inherit;
  font-size:100%;
  margin:0;
  color:inherit;
  border-radius:0;
}
button,input:not([type="checkbox"]):not([type="radio"]),textarea{
  -webkit-appearance:none;
  appearance:none;
}
button{cursor:pointer;background:none;border:none;padding:0;text-align:inherit;}
input,textarea,select{background:var(--white);}

h1,h2,h3,h4{
  font-family:var(--font-display);
  color:var(--ink);
  margin:0;
  font-weight:500;
  line-height:1.15;
  letter-spacing:-.01em;
}
p{margin:0;}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}

.container{max-width:var(--container);margin:0 auto;padding:0 var(--gutter);}
.accent{color:var(--gold);font-style:italic;}
.section--dark .accent, .band-dark .accent{color:var(--gold);}

.kicker{
  display:inline-flex;align-items:center;gap:10px;
  font-size:13px;font-weight:600;color:var(--forest);
  margin-bottom:14px;
}
.kicker::before{content:none;width:26px;height:2px;background:var(--gold);display:inline-block;}
.section--dark .kicker, .band-dark .kicker{color:var(--gold-tint);}
.section--dark .kicker::before, .band-dark .kicker::before{background:var(--gold);}

/* Section rhythm */
.section{padding:88px 0;}
.section--tight{padding:44px 0;}
.section--white{background:var(--white);}
.section--paper{background:var(--paper);}
.section--deep{background:var(--paper-deep);}
.section--dark{background:var(--forest-deep);color:rgba(255,255,255,.78);}
.section--dark h2,.section--dark h3{color:var(--white);}
.section--dark p{color:rgba(255,255,255,.72);}

.section-head{max-width:680px;margin-bottom:44px;}
.section-head.center{margin-left:auto;margin-right:auto;text-align:center;}
.section-head h2{font-size:clamp(1.9rem,3vw,2.5rem);margin-bottom:14px;}
.section-head p{font-size:16px;color:var(--muted);}
.section--dark .section-head p{color:rgba(255,255,255,.65);}

/* Visually-hidden but screen-reader-accessible — used by WordPress core's
   the_posts_pagination() / the_post_navigation() heading text. */
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(1px,1px,1px,1px);white-space:nowrap;
}

/* --------------------------------------------------------------------------
   3. BUTTONS
   -------------------------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:15px 30px;
  font-family:var(--font-body);font-weight:600;font-size:14.5px;
  border:1px solid transparent;border-radius:var(--radius);
  cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease);
  white-space:nowrap;
}
.btn-primary{background:var(--forest);color:var(--white);}
.btn-primary:hover{background:var(--forest-deep);}
.btn-outline{background:transparent;color:var(--ink);border-color:var(--line);}
.btn-outline:hover{border-color:var(--forest);color:var(--forest);}
.btn-light{background:var(--white);color:var(--forest-deep);}
.btn-light:hover{background:var(--gold-tint);}
.btn-outline-light{background:transparent;color:var(--white);border-color:rgba(255,255,255,.4);}
.btn-outline-light:hover{border-color:var(--white);}
.btn-sm{padding:10px 18px;font-size:13px;}
.btn-block{width:100%;}
.btn-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px;}

/* --------------------------------------------------------------------------
   4. HEADER  ->  moved to assets/css/skiin-header.css
   (top notice, utility bar, navbar, desktop flyouts, mobile drill-down drawer).
   Enqueued after this file in functions.php. Do not re-add header rules here.
   -------------------------------------------------------------------------- */

/* Template quick-jump strip - an in-page index across the merged templates.
   Purely a navigation aid for the original single-file static build; not
   used by any PHP template, kept only in case a preview page still needs it. */
.template-index{background:var(--ink);overflow-x:auto;}
.template-index .container{display:flex;gap:6px;padding:10px var(--gutter);}
.template-index a{
  flex:none;padding:7px 16px;font-size:12.5px;font-weight:600;color:rgba(255,255,255,.6);
  border:1px solid rgba(255,255,255,.16);border-radius:var(--radius-pill);white-space:nowrap;
  transition:color .2s,border-color .2s,background .2s;
}
.template-index a:hover{color:var(--white);border-color:var(--gold);background:rgba(255,255,255,.06);}

/* --------------------------------------------------------------------------
   5. HERO (home)
   -------------------------------------------------------------------------- */
.hero{background:var(--paper);padding:72px 0 72px;position:relative;overflow:hidden;}
.hero .container{display:grid;grid-template-columns:1fr .92fr;gap:56px;align-items:center;}
.hero__content h1{font-size:clamp(2.5rem,4.6vw,4rem);margin-bottom:22px;}
.hero__content .lead{font-size:17.5px;color:var(--muted);max-width:46ch;}
.hero__rating{margin-top:34px;}
.rating-line{display:flex;align-items:center;gap:14px;font-size:14px;color:var(--ink-soft);}
.rating-line strong{color:var(--ink);}
.rating-line .stars{color:var(--gold);letter-spacing:1px;}
.hero__image{position:relative;align-self:stretch;}
.hero__image img{height:100%;width:100%;object-fit:cover;min-height:360px;border-bottom:6px solid var(--gold);border-radius:8px;}
.hero__image::before{
  content:"";position:absolute;inset:18px -18px auto auto;width:120px;height:120px;
  border:1px solid var(--line);z-index:-1;display:none;
}

.trust-strip{background:var(--forest-deep);}
.trust-strip .container{display:flex;flex-wrap:wrap;gap:14px 40px;justify-content:space-between;padding:22px var(--gutter);}
.trust-strip__item{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500;color:rgba(255,255,255,.86);}
.trust-strip__item svg{width:18px;height:18px;color:var(--gold);flex:none;}

/* Legacy compatibility (rating-badge markup reused across every page-hero) */
.rating-badge{display:inline-flex;align-items:center;gap:16px;background:var(--white);border:1px solid var(--line);padding:14px 22px;}
.rating-badge__icon{width:26px;height:26px;}
.rating-badge__score{font-size:19px;font-weight:700;color:var(--ink);font-family:var(--font-body);}
.rating-badge__score span{font-size:12px;font-weight:500;color:var(--muted);}
.rating-badge__label{font-size:12px;color:var(--muted);}
.rating-badge__divider{width:1px;height:30px;background:var(--line);}
.rating-badge__stars{color:var(--gold);letter-spacing:1px;font-size:14px;}
.rating-badge__stars .is-empty{color:var(--line);}
.rating-badge__stars small{display:block;font-size:11px;color:var(--muted);letter-spacing:0;margin-top:2px;}

/* --------------------------------------------------------------------------
   6. INTRO / SPLIT LAYOUTS
   -------------------------------------------------------------------------- */
.intro-panel{max-width:820px;}
.intro-panel h2{font-size:clamp(1.9rem,3.4vw,2.6rem);margin-bottom:18px;}
.intro-panel p.lead{font-size:17px;color:var(--muted);}

.split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center;}
.split__text h2{font-size:clamp(1.8rem,2.9vw,2.3rem);margin-bottom:16px;}
.split__text p{color:var(--muted);}
.split__image{position:relative;}
.split__image img{width:100%;object-fit:cover;aspect-ratio:4/3.4; border-radius:8px;}
.split__badge{
  position:absolute;top:-16px;left:-16px;background:var(--forest);color:var(--white);
  font-family:var(--font-display);font-size:22px;font-weight:600;
  width:74px;height:74px;display:flex;align-items:center;justify-content:center;
  border:5px solid var(--paper);
}

.section--blush{background:var(--gold-tint);}
.section--beige{background:var(--paper-deep);}
.section--cream{background:var(--paper);}

/* --------------------------------------------------------------------------
   7. SERVICE GRID
   -------------------------------------------------------------------------- */
.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:var(--line);border:1px solid var(--line);}
.service-card{background:var(--white);}
.service-card img{aspect-ratio:3/3.6;object-fit:cover;}
.service-card__body{padding:24px;border-top:3px solid var(--gold);}
.service-card__body h3{font-size:1.15rem;margin-bottom:8px;}
.service-card__body p{font-size:14px;color:var(--muted);}
.service-grid__footer{text-align:center;margin-top:44px;}

/* --------------------------------------------------------------------------
   8. FEATURE LIST
   -------------------------------------------------------------------------- */
.feature-list{display:grid;grid-template-columns:1fr 1fr;gap:34px 40px;}
.feature-item__icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--forest-tint);color:var(--forest);margin-bottom:14px;}
.feature-item h3{font-size:1.05rem;margin-bottom:8px;}
.feature-item p{font-size:14px;color:var(--muted);}

/* --------------------------------------------------------------------------
   9. TESTIMONIALS
   -------------------------------------------------------------------------- */
.testimonial-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin-top:40px;border-top:1px solid var(--line);border-left:1px solid var(--line);}
.testimonial-card{padding:26px 22px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);}
.testimonial-card__head{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.testimonial-card__avatar{width:36px;height:36px;border-radius:50%;background:var(--forest);color:var(--white);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;font-family:var(--font-body);}
.testimonial-card__name{font-size:13.5px;font-weight:700;color:var(--ink);}
.testimonial-card__stars{color:var(--gold);font-size:12px;letter-spacing:1px;}
.testimonial-card p{font-size:13.5px;color:var(--muted);}

/* --------------------------------------------------------------------------
   10. PROCESS (numbered — genuinely sequential)
   -------------------------------------------------------------------------- */
.process-steps{display:flex;flex-direction:column;gap:30px;}
.process-step{display:flex;gap:22px;}
.process-step__index{font-family:var(--font-display);font-size:1.6rem;color:var(--gold);flex:none;width:44px;}
.process-step h3{color:var(--white);font-size:1.05rem;margin-bottom:6px;}
.process-step p{font-size:14px;color:rgba(255,255,255,.62);}

/* --------------------------------------------------------------------------
   11. CTA BANNER (image background)
   -------------------------------------------------------------------------- */
.cta-banner{position:relative;overflow:hidden;min-height:360px;display:flex;align-items:center;border-radius:8px;}
.cta-banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;}
.cta-banner::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(15,46,38,.92) 0%,rgba(15,46,38,.55) 55%,rgba(15,46,38,.2) 100%);z-index:1;}
/* Content sits inside .cta-banner without a .container wrapper (the
   section is full-bleed for the background image), so its left edge is
   reproduced here with the same maths .container uses to center itself
   — max(0, (100% - 1240px) / 2) — plus the standard gutter, so the text
   lines up with every other section's left edge instead of sitting
   flush against the browser edge on wide screens. */
.cta-banner__content{
  position:relative;z-index:2;
  max-width:560px;
  margin-left:calc(max(0px, (100% - var(--container)) / 2) + var(--gutter));
  margin-right:var(--gutter);
  padding:56px 0;
}
.cta-banner__content h2{color:var(--white);font-size:clamp(1.8rem,3vw,2.3rem);margin-bottom:14px;}
.cta-banner__content p{color:rgba(255,255,255,.78);}

/* --------------------------------------------------------------------------
   12. GIFT FORM
   -------------------------------------------------------------------------- */
.gift-form-card{background:var(--white);border:1px solid var(--line);padding:40px;border-radius:8px;}
.gift-form-card h2{font-size:1.8rem;margin-bottom:8px;}
.gift-form-card>p{color:var(--muted);margin-bottom:22px;}
.form-row{display:flex;flex-direction:column;gap:14px;}
.field{
  padding:14px 16px;border:1px solid var(--line);background:var(--white);
  font-family:var(--font-body);font-size:14.5px;color:var(--ink);width:100%;
}
textarea.field{resize:vertical;min-height:110px;}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}
::placeholder{color:var(--muted);}

/* --------------------------------------------------------------------------
   13. ACCORDION (FAQ / skin concerns)
   -------------------------------------------------------------------------- */
.accordion{border-top:1px solid var(--line);}
.accordion-item{border-bottom:1px solid var(--line);}
.accordion-trigger{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 4px;background:none;border:none;text-align:left;cursor:pointer;
  font-family:var(--font-body);font-size:15.5px;font-weight:600;color:var(--ink);
}
.accordion-item.is-active .accordion-trigger{color:var(--forest);}
.icon-plus{position:relative;width:16px;height:16px;flex:none;}
.icon-plus::before,.icon-plus::after{content:"";position:absolute;background:var(--muted);transition:transform .2s var(--ease),background .2s;}
.icon-plus::before{top:50%;left:0;width:100%;height:2px;transform:translateY(-50%);}
.icon-plus::after{left:50%;top:0;height:100%;width:2px;transform:translateX(-50%);}
.accordion-item.is-active .icon-plus::after{transform:translateX(-50%) rotate(90deg);opacity:0;}
.accordion-item.is-active .icon-plus::before{background:var(--forest);}
.accordion-panel{max-height:0;overflow:hidden;transition:max-height .3s var(--ease);}
.accordion-panel__inner{padding:0 4px 22px;font-size:14.5px;color:var(--muted);max-width:64ch;}

/* --------------------------------------------------------------------------
   14. BOOKING SECTION (final CTA + form) — reused across every template
   -------------------------------------------------------------------------- */
.booking-section{position:relative;padding:88px 0;overflow:hidden;background:var(--forest-deep);}
.booking-section__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.16;z-index:0;}
.booking-section .container{position:relative;z-index:1;}
.booking-grid{display:grid;grid-template-columns:1fr .95fr;gap:56px;align-items:center;}
.booking-grid__text h2{color:var(--white);font-size:clamp(1.9rem,3vw,2.4rem);margin-bottom:16px;}
.booking-grid__text p{color:rgba(255,255,255,.72);max-width:44ch;}
.booking-card{background:var(--white);padding:38px;border-radius:8px;}
.booking-card h3{font-size:1.4rem;margin-bottom:20px;}

/* --------------------------------------------------------------------------
   15. INNER PAGE HERO / BREADCRUMBS
   -------------------------------------------------------------------------- */
.page-hero{background:var(--paper-deep);padding:52px 0 44px;position:relative;}
.page-hero .container{position:relative;}
.page-hero h1{font-size:clamp(2.1rem,4vw,3rem);margin-bottom:12px;}
.breadcrumbs{font-size:13.5px;color:var(--muted);margin-bottom:26px;}
.breadcrumbs a:hover{color:var(--forest);}
.breadcrumbs .sep{margin:0 8px;color:var(--line);}
.breadcrumbs .current{color:var(--gold-deep);font-weight:600;}

/* --------------------------------------------------------------------------
   15B. INNER PAGE BANNER IMAGE
   A fixed-aspect banner slot for the wide image directly under .page-hero
   on inner pages (about-page hero banner, etc.). Sized by aspect-ratio
   rather than a fixed pixel height so it can never collapse or overlap
   the section below it while the image loads — or if it fails to load.
   Sharp edges + a single gold accent line, matching .hero__image's
   treatment on the homepage rather than a rounded/shadowed card.
   -------------------------------------------------------------------------- */
.page-banner{background:var(--paper);}
.page-banner__frame{aspect-ratio:21/8;overflow:hidden;border-bottom:4px solid var(--gold);}
.page-banner__frame img{width:100%;height:100%;object-fit:cover;}

/* --------------------------------------------------------------------------
   16. DISCLAIMER
   -------------------------------------------------------------------------- */
.disclaimer-banner{background:var(--clay-tint);border-left:3px solid var(--clay);padding:20px 26px;font-size:13.5px;color:#5c3a29;}
.disclaimer-banner strong{color:#3f2718;}

/* --------------------------------------------------------------------------
   17. HOW-IT-WORKS / VIDEO CARD (treatment template)
   -------------------------------------------------------------------------- */
.how-it-works{display:grid;grid-template-columns:1.1fr 1fr;gap:2px;background:var(--line);border:1px solid var(--line);}
.info-card{background:var(--paper);padding:40px;}
.info-card h2{font-size:1.7rem;margin-bottom:16px;}
.info-card p{margin-bottom:14px;font-size:14.5px;color:var(--ink-soft);}
.video-card{padding:0;position:relative;background:var(--ink);}
.video-placeholder{position:relative;display:block;height:100%;min-height:320px;color:var(--white);}
.video-placeholder__title{position:absolute;top:20px;left:22px;font-family:var(--font-display);font-size:1.2rem;}
.video-placeholder__play{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:64px;height:64px;border-radius:50%;background:var(--gold);color:var(--forest-deep);
  display:flex;align-items:center;justify-content:center;
}
.video-placeholder__play svg{width:24px;height:24px;}
.video-placeholder__label{position:absolute;bottom:20px;left:22px;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;}
.video-placeholder__label svg{width:18px;height:18px;color:var(--gold);}

/* --------------------------------------------------------------------------
   18. LOCATIONS GRID
   -------------------------------------------------------------------------- */
.location-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
.location-pin-btn{
  display:flex;align-items:center;gap:10px;padding:16px 18px;
  background:var(--ink);color:var(--white);font-size:13.5px;font-weight:600;
  border-left:3px solid transparent;transition:border-color .2s,background .2s;
}
.location-pin-btn svg{width:16px;height:16px;color:var(--gold);flex:none;}
.location-pin-btn:hover{border-color:var(--gold);background:var(--forest-deep);}

/* --------------------------------------------------------------------------
   19. SINGLE LOCATION (tick list / flat cta / map)
   -------------------------------------------------------------------------- */
.tick-list{display:grid;grid-template-columns:1fr 1fr;gap:12px 30px;margin:26px 0;}
.tick-list li{display:flex;align-items:center;gap:10px;font-size:14.5px;color:var(--ink-soft);}
.tick-list svg{width:18px;height:18px;color:var(--forest);flex:none;}

.cta-flat-dark{display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap;background:var(--ink);color:rgba(255,255,255,.75);padding:36px 40px;}
.cta-flat-dark h3{color:var(--white);font-size:1.3rem;margin-bottom:8px;}
.cta-flat-dark p{max-width:52ch;font-size:14px;}
.cta-flat-dark a{color:var(--gold);}

.map-frame{border:1px solid var(--line);height:420px;}
.map-frame iframe{width:100%;height:100%;border:0;filter:grayscale(.15);}

/* Drive-time / destination-address line above the map iframe — populated
   from the "travel_time" / "clinic_address" JetEngine fields in
   single-locations.php. Only rendered when at least one field has a value. */
.map-frame__meta{display:flex;flex-wrap:wrap;gap:10px 24px;margin-bottom:16px;font-size:13.5px;color:var(--muted);}
.map-frame__meta strong{color:var(--ink);font-weight:700;}

/* --------------------------------------------------------------------------
   20. SHOP
   -------------------------------------------------------------------------- */
.shop-intro{padding:36px 0 8px;}
.shop-intro>.container>p{max-width:62ch;color:var(--muted);margin-bottom:24px;}
.shop-filters{display:flex;flex-wrap:wrap;gap:10px;}
.filter-pill{
  padding:9px 18px;font-size:13.5px;font-weight:600;color:var(--ink-soft);
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius-pill);cursor:pointer;
  transition:background .2s,color .2s,border-color .2s;
}
.filter-pill:hover{border-color:var(--forest);}
.filter-pill.active{background:var(--forest);border-color:var(--forest);color:var(--white);}

.shop-grid-section{padding:36px 0 90px;}
.product-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;}
.product-card{border:1px solid var(--line);background:var(--white);display:flex;flex-direction:column;}
.product-card-media{display:block;overflow:hidden;aspect-ratio:1/1;}
.product-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .35s var(--ease);}
.product-card:hover .product-card-media img{transform:scale(1.04);}
.product-card-body{padding:20px;display:flex;flex-direction:column;gap:8px;flex:1;}
.product-category{font-size:11.5px;font-weight:700;color:var(--forest);}
.product-card-body h3{font-size:1rem;font-weight:600;font-family:var(--font-body);color:var(--ink);}
.product-desc{font-size:13px;color:var(--muted);flex:1;}
.product-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:10px;flex-wrap:wrap;}
.product-price{font-family:var(--font-display);font-size:1.1rem;color:var(--gold-deep);font-weight:600;}
.btn-outline-dark{border:1px solid var(--ink);color:var(--ink);background:none;}
.btn-outline-dark:hover{background:var(--ink);color:var(--white);}

/* --------------------------------------------------------------------------
   21. BLOG
   -------------------------------------------------------------------------- */
.blog-featured{padding:36px 0 0;}
.featured-post{display:grid;grid-template-columns:1.1fr 1fr;gap:2px;background:var(--line);border:1px solid var(--line);}
.featured-post-media{display:block;overflow:hidden;}
.featured-post-media img{width:100%;height:100%;object-fit:cover;min-height:280px;}
.featured-post-body{background:var(--white);padding:40px;display:flex;flex-direction:column;justify-content:center;}
.post-meta{display:flex;gap:14px;align-items:center;font-size:12.5px;color:var(--muted);margin-bottom:12px;}
.post-tag{color:var(--forest);font-weight:700;}
.post-tag a{color:inherit;}
.post-tag a:hover{color:var(--forest-deep);text-decoration:underline;}
.featured-post-body h2{font-size:1.6rem;margin-bottom:12px;}
.featured-post-body p{font-size:14.5px;color:var(--muted);margin-bottom:18px;}
.read-more{font-size:13.5px;font-weight:700;color:var(--gold-deep);border-bottom:1px solid var(--gold);padding-bottom:2px;align-self:flex-start;}

.blog-grid-section{padding:50px 0 90px;}
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px 26px;}
.blog-card-media{display:block;overflow:hidden;aspect-ratio:16/11;}
.blog-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .35s var(--ease);}
.blog-card:hover .blog-card-media img{transform:scale(1.04);}
.blog-card-body{padding-top:16px;}
.blog-card-body h3{font-size:1.1rem;margin-bottom:8px;}
.blog-card-body h3 a:hover{color:var(--forest);}
.blog-card-body p{font-size:13.5px;color:var(--muted);}

/* Static-demo pagination markup, kept for backward compatibility. */
.pagination{display:flex;gap:8px;justify-content:center;margin-top:56px;}
.pagination a,.pagination span{
  width:38px;height:38px;display:flex;align-items:center;justify-content:center;
  font-size:13.5px;font-weight:600;color:var(--ink-soft);border:1px solid var(--line);
}
.pagination span.is-active{background:var(--forest);border-color:var(--forest);color:var(--white);}
.pagination a:hover{border-color:var(--forest);color:var(--forest);}
.pagination a[href="#"]:last-child{width:auto;padding:0 16px;}

/* Real markup from WordPress core's the_posts_pagination() (home.php,
   archive-locations.php) and WooCommerce's woocommerce_pagination()
   (archive-product.php) — both output "page-numbers" links rather than the
   static demo's markup above, so these rules target the actual classes. */
.pagination .nav-links,.woocommerce-pagination{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:56px;}
.pagination .page-numbers,.woocommerce-pagination .page-numbers{
  min-width:38px;height:38px;padding:0 12px;display:flex;align-items:center;justify-content:center;
  font-size:13.5px;font-weight:600;color:var(--ink-soft);border:1px solid var(--line);background:var(--white);
}
.pagination .page-numbers:hover,.woocommerce-pagination .page-numbers:hover{border-color:var(--forest);color:var(--forest);}
.pagination .page-numbers.current,.woocommerce-pagination .page-numbers.current{background:var(--forest);border-color:var(--forest);color:var(--white);}
.pagination .page-numbers.dots,.woocommerce-pagination .page-numbers.dots{border:none;background:none;}

/* --------------------------------------------------------------------------
   22. CONTACT
   -------------------------------------------------------------------------- */
.contact-form-section{padding:64px 0;}
.form-card{background:var(--white);border:1px solid var(--line);padding:clamp(28px,5vw,56px);}
.form-card h2{font-size:clamp(1.7rem,3vw,2.1rem);margin-bottom:8px;}
.form-card .sub{color:var(--muted);margin-bottom:32px;}
.field-row-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}
.procedure-label{font-size:14px;font-weight:700;color:var(--ink);margin:10px 0 14px;}
.procedure-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 24px;margin-bottom:26px;}
.check-item{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:var(--ink-soft);cursor:pointer;}
.check-item input[type="checkbox"]{
  appearance:none;-webkit-appearance:none;width:17px;height:17px;min-width:17px;margin-top:2px;
  border:1.5px solid var(--line);background:var(--white);cursor:pointer;position:relative;
}
.check-item input[type="checkbox"]:checked{background:var(--forest);border-color:var(--forest);}
.check-item input[type="checkbox"]:checked::after{content:"";position:absolute;left:5px;top:1px;width:4px;height:9px;border:solid var(--white);border-width:0 2px 2px 0;transform:rotate(45deg);}

.details-section{padding:0 0 64px;}
.details-grid{display:grid;grid-template-columns:380px 1fr;gap:40px;}
.details-list{display:flex;flex-direction:column;gap:22px;}
.detail-row{display:flex;align-items:flex-start;gap:16px;}
.detail-icon{width:42px;height:42px;min-width:42px;background:var(--forest-tint);color:var(--forest);display:flex;align-items:center;justify-content:center;}
.detail-label{font-size:11.5px;letter-spacing:.4px;color:var(--muted);text-transform:uppercase;margin-bottom:3px;}
.detail-value{font-size:15.5px;font-weight:600;color:var(--ink);}
.detail-value a:hover{color:var(--forest);}

.service-area{background:var(--ink);color:rgba(255,255,255,.85);padding:36px 0;}
.service-area p{font-size:14px;color:rgba(255,255,255,.6);margin-bottom:18px;max-width:70ch;}
.suburb-pills{display:flex;flex-wrap:wrap;gap:10px;}
.suburb-pills span,.suburb-pills a{
  display:inline-block;border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-pill);
  padding:8px 16px;font-size:12.5px;color:rgba(255,255,255,.82);
  transition:border-color .2s,color .2s;
}
.suburb-pills span.active{border-color:var(--gold);color:var(--gold);}
.suburb-pills a:hover{border-color:var(--gold);color:var(--gold);}

.info-blocks{padding:56px 0;}
.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--line);border:1px solid var(--line);}
.info-card-alt{background:var(--paper);padding:30px 28px;}
.info-icon{width:42px;height:42px;background:var(--forest);color:var(--white);display:flex;align-items:center;justify-content:center;margin-bottom:18px;}
.info-card-alt h3{font-size:1.15rem;margin-bottom:10px;}
.info-card-alt p{font-size:13.5px;color:var(--muted);line-height:1.65;}
.info-card-alt strong{color:var(--ink);}

/* --------------------------------------------------------------------------
   23. FOOTER
   -------------------------------------------------------------------------- */
/* Same rationale as the .site-header comment above - Storefront's own
   <footer id="colophon"> also carries the class ".site-footer". */
.site-footer{
  background:var(--forest-footer);
  color:rgba(255,255,255,.68);
  border-top:1px solid var(--gold);
  margin:0;box-shadow:none;width:100%;
}
.footer-top{padding:76px 0 46px;}
.footer-grid{
  display:grid;
  grid-template-columns:1.6fr 1fr 1fr 1fr 1.3fr;
  gap:40px 36px;
}
.footer-brand img{height:32px;margin-bottom:18px;filter:brightness(0) invert(1);}
.footer-brand p{font-size:13.5px;line-height:1.75;color:rgba(255,255,255,.58);max-width:34ch;}

.footer-col h4{
  color:var(--white);font-size:14.5px;font-weight:600;margin-bottom:20px;
  font-family:var(--font-display);letter-spacing:.01em;
}
.footer-col ul li{margin-bottom:12px;font-size:13.5px;line-height:1.5;}
.footer-col ul li a{color:rgba(255,255,255,.66);transition:color .2s var(--ease);}
.footer-col ul li a:hover{color:var(--gold);}

.footer-contact li{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:rgba(255,255,255,.66);}
.footer-contact li a{color:inherit;transition:color .2s var(--ease);}
.footer-contact li a:hover{color:var(--gold);}
.footer-contact svg{width:16px;height:16px;flex:none;margin-top:2px;color:var(--gold);}

.footer-bottom{border-top:1px solid rgba(255,255,255,.12);padding:24px 0;}
.footer-bottom .container{
  display:flex;justify-content:space-between;align-items:center;
  font-size:12.5px;color:rgba(255,255,255,.5);flex-wrap:wrap;gap:12px;
}
.footer-bottom a{color:inherit;transition:color .2s var(--ease);}
.footer-bottom a:hover{color:var(--gold);}

.footer-social{display:flex;gap:12px;}
.footer-social a{
  width:32px;height:32px;border:1px solid rgba(255,255,255,.18);color:rgba(255,255,255,.7);
  display:flex;align-items:center;justify-content:center;
  transition:border-color .2s var(--ease),color .2s var(--ease),background-color .2s var(--ease);
}
.footer-social svg{width:15px;height:15px;}
.footer-social a:hover{border-color:var(--gold);color:var(--gold);background:rgba(175,131,57,.1);}

/* --------------------------------------------------------------------------
   23B. FOOTER BRAND-COLOR OVERRIDE (hardcoded hex, ignores custom properties)
   --------------------------------------------------------------------------
   The rules above already use var(--forest-footer), which resolves to
   #0b2219 - if that's genuinely not what's rendering live, the value being
   inherited isn't coming from this file at all (a stale cached copy, or a
   var(--ink) reference somewhere outside this stylesheet). This block sidesteps
   that possibility entirely: every color below is a literal hex value, not a
   custom property, so nothing can shadow or redefine it out from under us,
   and !important defeats any non-important rule regardless of its
   specificity or source order - including anything Storefront's own
   stylesheet applies to a same-named .site-footer element.
   Note: footer.php's column headings are <h4> (Navigation, Treatments Menu,
   Information Menu, Contact Us), not <h3> - both are covered below in case
   that ever changes.
   -------------------------------------------------------------------------- */
.site-footer,
.site-footer .footer-top,
.site-footer .footer-bottom{
  background-color:#0b2219 !important;
}
.site-footer{
  color:#c9d2ce !important;
}
.site-footer *{
  border-color:rgba(255,255,255,.14) !important;
}
.site-footer a{
  color:#c9d2ce !important;
  transition:color .2s ease !important;
}
.site-footer a:hover,
.site-footer a:focus{
  color:#af8339 !important;
}
.site-footer h3,
.site-footer h4{
  color:#ffffff !important;
}
.site-footer .footer-brand p{
  color:#a9b6b0 !important;
}
.site-footer .footer-col ul li,
.site-footer .footer-contact li{
  color:#c9d2ce !important;
}
.site-footer .footer-col ul li a,
.site-footer .footer-contact li a{
  color:#c9d2ce !important;
}
.site-footer .footer-col ul li a:hover,
.site-footer .footer-contact li a:hover{
  color:#af8339 !important;
}
.site-footer .footer-contact svg{
  color:#af8339 !important;
}
.site-footer .footer-bottom,
.site-footer .footer-bottom .container{
  color:#8a9992 !important;
}
.site-footer .footer-bottom a:hover{
  color:#af8339 !important;
}
.site-footer .footer-social a{
  color:#c9d2ce !important;
  border-color:rgba(255,255,255,.18) !important;
  background-color:transparent !important;
}
.site-footer .footer-social a:hover{
  color:#af8339 !important;
  border-color:#af8339 !important;
  background-color:rgba(175,131,57,.1) !important;
}

/* --------------------------------------------------------------------------
   24. TREATMENT / SERVICE META (JetEngine: duration + price)
   single-services.php — only rendered when at least one of the two
   get_post_meta() fields ("duration", "price") has a value.
   -------------------------------------------------------------------------- */
.treatment-meta-row{display:flex;flex-wrap:wrap;gap:12px 26px;margin:2px 0 22px;}
.treatment-meta{font-size:14px;color:var(--ink-soft);}
.treatment-meta strong{color:var(--forest);font-weight:700;margin-right:4px;}

/* --------------------------------------------------------------------------
   25. SINGLE BLOG POST — reading view (single.php)
   No static reference existed for this layout; typography here styles
   whatever the_content() outputs from the block/classic editor, so every
   element a post body can reasonably contain is covered.
   -------------------------------------------------------------------------- */
.blog-post-content{max-width:760px;margin:0 auto;}
.blog-post-featured-image{margin-bottom:32px;}
.blog-post-featured-image img{width:100%;aspect-ratio:16/9;object-fit:cover;}

.blog-post-body{font-size:16.5px;color:var(--ink-soft);}
.blog-post-body>*+*{margin-top:22px;}
.blog-post-body h2{font-size:1.6rem;margin-top:44px;margin-bottom:0;}
.blog-post-body h3{font-size:1.25rem;margin-top:36px;margin-bottom:0;}
.blog-post-body h4{font-size:1.05rem;margin-top:28px;margin-bottom:0;}
.blog-post-body p{margin:0;}
.blog-post-body ul,.blog-post-body ol{margin:0;padding-left:22px;}
.blog-post-body ul{list-style:disc;}
.blog-post-body ol{list-style:decimal;}
.blog-post-body li{margin-bottom:8px;}
.blog-post-body li:last-child{margin-bottom:0;}
.blog-post-body a{color:var(--forest);text-decoration:underline;text-underline-offset:2px;}
.blog-post-body a:hover{color:var(--forest-deep);}
.blog-post-body strong{color:var(--ink);}
.blog-post-body blockquote{
  border-left:3px solid var(--gold);padding:4px 0 4px 22px;margin:0;
  font-style:italic;color:var(--ink);font-size:17.5px;
}
.blog-post-body img{width:100%;height:auto;margin:0;}
.blog-post-body figure{margin:0;}
.blog-post-body figcaption{font-size:13px;color:var(--muted);margin-top:8px;}
.blog-post-body hr{border:none;border-top:1px solid var(--line);margin:36px 0;}
.blog-post-body table{width:100%;border-collapse:collapse;font-size:14.5px;}
.blog-post-body th,.blog-post-body td{border:1px solid var(--line);padding:10px 14px;text-align:left;}
.blog-post-body th{background:var(--paper-deep);font-weight:700;color:var(--ink);}

/* Prev/Next post links — the_post_navigation() in single.php */
.post-navigation{max-width:760px;margin:56px auto 0;border-top:1px solid var(--line);padding-top:28px;}
.post-navigation .nav-links{display:flex;justify-content:space-between;gap:24px;}
.post-navigation .nav-previous{max-width:48%;}
.post-navigation .nav-next{max-width:48%;margin-left:auto;text-align:right;}
.post-navigation a{font-size:14px;font-weight:600;color:var(--ink);}
.post-navigation a:hover{color:var(--forest);}
.post-navigation .post-title{display:block;font-family:var(--font-display);font-size:16px;font-weight:500;margin-top:4px;color:var(--ink-soft);}

/* --------------------------------------------------------------------------
   26. WOOCOMMERCE BRAND HARMONIZATION
   Storefront + WooCommerce core CSS already handle the full gallery / tabs /
   variation / cart layout on archive-product.php and single-product.php —
   these are light-touch overrides pulling only the visible bits (buttons,
   price, notices, star rating, tabs, pagination) onto the SKIIN brand
   tokens, not a full re-implementation of WooCommerce's own stylesheet.
   -------------------------------------------------------------------------- */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce .add_to_cart_button,
.woocommerce .single_add_to_cart_button{
  background:var(--forest);color:var(--white)!important;border-radius:var(--radius);border:1px solid var(--forest);
  font-family:var(--font-body);font-weight:600;padding:12px 22px;transition:background .2s var(--ease),border-color .2s var(--ease);
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce .add_to_cart_button:hover,
.woocommerce .single_add_to_cart_button:hover{
  background:var(--forest-deep);border-color:var(--forest-deep);color:var(--white)!important;
}
.product-card-footer .button{padding:9px 16px;font-size:12.5px;}

.woocommerce div.product p.price,
.woocommerce div.product span.price{color:var(--gold-deep);font-family:var(--font-display);}
.woocommerce span.onsale{background:var(--clay);border-radius:var(--radius-pill);font-family:var(--font-body);}
.woocommerce .star-rating span::before,.woocommerce .star-rating::before{color:var(--gold);}

.woocommerce-tabs ul.tabs li{font-family:var(--font-body);}
.woocommerce-tabs ul.tabs li.active,
.woocommerce-tabs ul.tabs li:hover{border-bottom-color:var(--forest);}
.woocommerce-tabs ul.tabs li.active a,
.woocommerce-tabs ul.tabs li:hover a{color:var(--forest);}

.woocommerce-message,.woocommerce-error,.woocommerce-info{
  border-top:3px solid var(--forest);background:var(--forest-tint);
  padding:14px 20px;margin-bottom:26px;font-size:14px;color:var(--ink-soft);list-style:none;
}
.woocommerce-message a,.woocommerce-info a{color:var(--forest);font-weight:600;}
.woocommerce-error{border-top-color:var(--clay);background:var(--clay-tint);}

.related.products h2{font-size:1.6rem;margin-bottom:24px;}

/* --------------------------------------------------------------------------
   27. RESPONSIVE
   -------------------------------------------------------------------------- */
@media (max-width:1080px){
  .service-grid{grid-template-columns:repeat(2,1fr);}
  .product-grid{grid-template-columns:repeat(3,1fr);}
  .location-grid{grid-template-columns:repeat(3,1fr);}
  .testimonial-strip{grid-template-columns:repeat(3,1fr);}
  .footer-grid{grid-template-columns:1fr 1fr 1fr;gap:36px 28px;}
}
@media (max-width:900px){
  /* Header responsive rules live in assets/css/skiin-header.css. */
  .hero .container,.split,.how-it-works,.booking-grid,.featured-post,.details-grid{grid-template-columns:1fr;}
  .hero__image img{min-height:260px;}
  .feature-list{grid-template-columns:1fr;}
  .service-grid{grid-template-columns:repeat(2,1fr);}
  .product-grid{grid-template-columns:repeat(2,1fr);}
  .blog-grid{grid-template-columns:repeat(2,1fr);}
  .location-grid{grid-template-columns:repeat(2,1fr);}
  .testimonial-strip{grid-template-columns:repeat(2,1fr);}
  .procedure-grid{grid-template-columns:repeat(2,1fr);}
  .info-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;gap:34px 24px;}
  .tick-list{grid-template-columns:1fr;}
  .blog-post-content,.post-navigation{max-width:100%;}
}
@media (max-width:600px){
  .page-banner__frame{aspect-ratio:4/3.2;}
  .section{padding:60px 0;}
  .product-grid,.blog-grid,.location-grid,.testimonial-strip{grid-template-columns:1fr;}
  .field-grid,.field-row-2,.procedure-grid{grid-template-columns:1fr;}
  .cta-flat-dark{flex-direction:column;align-items:flex-start;}
  .footer-grid{grid-template-columns:1fr;gap:32px;}
  .footer-bottom .container{flex-direction:column;text-align:center;}
  .cta-banner__content{padding:32px 0;}
  .treatment-meta-row{flex-direction:column;gap:8px;}
  .map-frame__meta{flex-direction:column;gap:6px;}
  .post-navigation .nav-links{flex-direction:column;gap:16px;}
  .post-navigation .nav-previous,.post-navigation .nav-next{max-width:100%;text-align:left;margin-left:0;}
  .blog-post-body{font-size:15.5px;}
}


/* ==========================================================================
   SKIIN - GLOBAL DESIGN TOKENS & SHARED COMPONENTS (reference-site design)
   Paste this block at the VERY END of style.css.
   All new classes use the "sk-" prefix so they never clash with older rules.
   ========================================================================== */
:root {
  --font-main: 'Figtree', -apple-system, BlinkMacSystemFont, sans-serif;

  /* Theme brand tones */
  --color-primary-dark: #14201E;
  --color-heading: #111111;
  --color-body: #404040;
  --color-muted: #767676;
  --color-border: #DDDDDD;

  /* Clinic skin accents */
  --color-rose-accent: #CE9B9B;
  --color-taupe: #8A8177;
  --color-bg-cream: #FBF4EF;
  --color-bg-beige: #EFE4D4;
  --color-bg-blush: #F4E4E4;
  --color-white: #FFFFFF;

  /* Functional accents */
  --color-link-cyan: #00A0D2;
  --color-notice-red: #FF0000;

  /* Extra tokens from the reference palette */
  --sk-dark: #231F20;
  --sk-star: #F6BB06;
  --sk-radius: 12px;
  --sk-radius-lg: 24px;
}

.sk-container {
  width: 100%;
  max-width: 1480px;
  margin: 0 auto;
  padding: 0 clamp(16px, 3vw, 40px);
}

.sk-title {
  font-family: var(--font-main);
  font-size: clamp(28px, 3.1vw, 46px);
  font-weight: 400;
  line-height: 1.18;
  letter-spacing: 0;
  color: var(--sk-dark);
  margin: 0 0 18px;
}
.sk-title span { color: var(--color-rose-accent); }
.sk-title--sm { font-size: clamp(26px, 2.4vw, 36px); text-align: center; margin-bottom: 26px; }

.sk-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 14px 26px; min-height: 48px;
  font-family: var(--font-main); font-size: 14px; font-weight: 600;
  letter-spacing: .02em; text-transform: uppercase; text-align: center; line-height: 1.2;
  color: var(--color-white); background: var(--sk-dark);
  border: 1px solid var(--sk-dark); border-radius: 8px;
  cursor: pointer; text-decoration: none;
  transition: background .25s ease, color .25s ease, border-color .25s ease;
}
.sk-btn:hover, .sk-btn:focus-visible { background: var(--color-rose-accent); border-color: var(--color-rose-accent); color: var(--color-white); }
.sk-btn--outline { background: transparent; color: var(--sk-dark); }
.sk-btn--outline:hover, .sk-btn--outline:focus-visible { background: var(--sk-dark); border-color: var(--sk-dark); color: var(--color-white); }
.sk-btn--light { background: var(--color-white); border-color: var(--color-white); color: var(--sk-dark); }
.sk-btn--light:hover, .sk-btn--light:focus-visible { background: var(--color-rose-accent); border-color: var(--color-rose-accent); color: var(--color-white); }

.sk-field {
  display: block; width: 100%;
  padding: 14px 20px; min-height: 52px;
  font-family: var(--font-main); font-size: 15px; color: var(--color-body);
  background: var(--color-white); border: 1px solid var(--color-border); border-radius: 12px;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.sk-field:focus { outline: none; border-color: var(--color-rose-accent); box-shadow: 0 0 0 3px rgba(206, 155, 155, .25); }
textarea.sk-field { min-height: 110px; resize: vertical; }

@media (min-width: 992px) {
    .sk-page .sk-btn,
    .sk-page .wpcf7-submit,
    .sk-page .tnp-submit {
        width: 230px !important;
        height: 50px !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        text-align: center !important;
        padding: 0 !important;
    }
}