/* ===== appletree-hue-correction 2026-09-14 ================================
   The greens were hue 139 (blue-green); the real logo is hue 84 (yellow-green),
   so the two clashed and the site read grey beside the logo. Every green has been
   rotated to hue ~95 at the SAME lightness and saturation, so the palette keeps the
   soft, muted character Conor signed off and only stops fighting the brand mark.
   White-on-green contrast improves as a side effect: mid 3.06 -> 4.26, deep 4.61 -> 6.62.
   Gold, terracotta, cream and ink are untouched.
   Old -> new: #6F9E7E->#618547  #557E63->#466534  #E7EFE8->#EAF1E4
               #CFE0D4->#D6E0CF  #EEF1E8->#ECF1E8  #9BB8A4->#A7B89B
   The logo's own #AACB7A is NOT used for surfaces: white text on it is 1.82:1. */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500;1,600&family=Manrope:wght@400;500;600;700&display=swap');
/* Appletree homepage section styles
 * Loaded by appletree-core plugin. Hooks onto className= values added in the block content.
 * Variables are inlined here so the CSS works even if Customizer Additional CSS isn't set.
 */

/* ===== Hide the default "Home" page title on the front page ===== */
/* The homepage opens cinematically with the hero — no page title above it. */
.home .entry-header,
.home .page-title,
.home .entry-title,
.home header.entry-header{
  display:none !important;
}
/* Belt & braces — some Kadence layouts wrap the title differently */
body.home .site-main > article > header{display:none !important;}

:root{
  --apple-sage:#618547;
  --apple-sage-deep:#466534;
  --apple-sage-tint:#EAF1E4;
  --apple-cream:#FAF6EF;
  --apple-cream-2:#F2EBDD;
  --apple-gold:#C2A14D;
  --apple-gold-soft:#D8C58A;
  --apple-terracotta:#C36B4E;
  --apple-ink:#2B3A30;
  --apple-ink-soft:#5C6B61;
  --apple-line:#E2DACB;
}

/* ===== HERO ===== */
.apple-hero{
  position:relative;
  padding:clamp(80px,10vw,140px) 24px !important;
  background:linear-gradient(120deg,#D6E0CF,#ECF1E8 50%,#f3ead9);
  overflow:hidden;
}
.apple-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle at 22% 35%,rgba(97,133,71,.30),transparent 55%),
             radial-gradient(circle at 80% 75%,rgba(194,161,77,.18),transparent 50%);
}
.apple-hero > *{position:relative;z-index:1;}
.apple-hero .anniv-chip{
  display:inline-block;padding:7px 15px;border-radius:40px;
  background:rgba(255,255,255,.75);border:1px solid var(--apple-gold-soft);
  color:var(--apple-sage-deep);font-family:Manrope,system-ui,sans-serif;
  font-weight:600;font-size:.8rem;margin-bottom:18px;letter-spacing:.02em;
}
.apple-hero h1{
  max-width:14ch;line-height:1.05;color:var(--apple-ink);
  font-family:"Cormorant Garamond",Georgia,serif;
  font-size:clamp(2.6rem,6vw,4.6rem);font-weight:600;letter-spacing:-0.01em;
  margin:0 0 22px;
}
.apple-hero h1 em{font-style:italic;color:var(--apple-sage-deep);}
.apple-hero .hero-lead{
  font-size:1.15rem;color:var(--apple-ink-soft);max-width:46ch;
  margin:0 0 30px;line-height:1.6;
}

/* ===== WELCOME + VALUES (one cream band) ===== */
.apple-welcome{
  padding:clamp(64px,9vw,120px) 24px !important;
  background:var(--apple-cream);
}
.apple-welcome .eyebrow,
.apple-treatments .eyebrow{
  font-family:Manrope,sans-serif;font-weight:600;font-size:.76rem;
  text-transform:uppercase;letter-spacing:.18em;color:var(--apple-gold);
  display:inline-block;margin-bottom:14px;
}
.apple-welcome h2,
.apple-treatments h2,
.apple-values h3{
  font-family:"Cormorant Garamond",serif;font-weight:600;letter-spacing:-0.01em;
}
.apple-welcome h2,
.apple-treatments h2{
  font-size:clamp(2rem,4vw,3.1rem);line-height:1.1;color:var(--apple-ink);margin:0 0 18px;
}
.apple-welcome p,
.apple-treatments p{color:var(--apple-ink-soft);line-height:1.7;}

.apple-values{
  padding:48px 24px clamp(64px,9vw,120px) !important;
  background:var(--apple-cream);
}
.apple-value{text-align:center;padding:0 8px;}
.apple-value h3{font-size:1.2rem;color:var(--apple-ink);margin:14px 0 6px;}
.apple-value p{font-size:.95rem;color:var(--apple-ink-soft);}

/* ===== TREATMENTS ===== */
.apple-treatments{
  padding:clamp(64px,9vw,120px) 24px !important;
  background:var(--apple-cream-2);
  text-align:center;
}
.apple-treatments .lead{
  max-width:48ch;margin:0 auto 48px;font-size:1.05rem;color:var(--apple-ink-soft);
}
.apple-tcard{
  position:relative;
  aspect-ratio:3/4;
  border-radius:4px;overflow:hidden;
  background:linear-gradient(160deg,var(--apple-sage),var(--apple-sage-deep));
  color:#fff;display:flex;align-items:flex-end;
  text-align:left;text-decoration:none;
  transition:transform .25s ease;
}
.apple-tcard:hover{transform:translateY(-4px);}
.apple-tcard.alt{background:linear-gradient(160deg,#A7B89B,var(--apple-sage-deep));}
.apple-tcard::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(43,58,48,.72),transparent 62%);
}
.apple-tcard .body{position:relative;padding:24px;width:100%;z-index:1;}
.apple-tcard h3{
  color:#fff;font-family:"Cormorant Garamond",serif;font-weight:600;
  font-size:1.5rem;margin:0;line-height:1.15;
}
.apple-tcard .meta{
  display:block;font-size:.84rem;color:rgba(255,255,255,.82);margin-top:4px;
  font-family:Manrope,sans-serif;
}

/* ===== Generic placeholder panel (for unshot photography) ===== */
.apple-ph{
  position:relative;border-radius:4px;overflow:hidden;
  aspect-ratio:4/5;
  background:linear-gradient(135deg,var(--apple-sage-tint),#fff 55%,var(--apple-cream-2));
  display:flex;align-items:flex-end;color:var(--apple-sage-deep);
}
.apple-ph::before{
  content:"";position:absolute;inset:0;
  background-image:radial-gradient(circle at 30% 30%,rgba(97,133,71,.18),transparent 60%),
                   radial-gradient(circle at 75% 70%,rgba(194,161,77,.14),transparent 55%);
}
.apple-ph span{
  position:relative;font-size:.72rem;font-weight:600;letter-spacing:.04em;
  background:rgba(255,255,255,.85);color:var(--apple-ink-soft);
  padding:6px 11px;margin:12px;border-radius:3px;border:1px solid var(--apple-line);
  font-family:Manrope,sans-serif;
}

/* Button polish — sage primary, scoped to Appletree sections so we don't
 * accidentally restyle every button on the site. Targets default-style
 * buttons (no class) AND explicit is-style-fill, but NOT is-style-outline.
 */
.apple-hero .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.apple-welcome .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.apple-treatments .wp-block-button:not(.is-style-outline) .wp-block-button__link{
  background:var(--apple-sage) !important;color:#fff !important;
  border:none !important;border-radius:4px !important;
  font-family:Manrope,sans-serif;font-weight:600;
  padding:14px 28px !important;
}
.apple-hero .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.apple-welcome .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.apple-treatments .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover{
  background:var(--apple-sage-deep) !important;
}
.apple-hero .wp-block-button.is-style-outline .wp-block-button__link,
.apple-welcome .wp-block-button.is-style-outline .wp-block-button__link,
.apple-treatments .wp-block-button.is-style-outline .wp-block-button__link{
  border:1.5px solid var(--apple-sage) !important;
  color:var(--apple-sage-deep) !important;
  background:transparent !important;
  border-radius:4px !important;
  font-family:Manrope,sans-serif;font-weight:600;
  padding:14px 28px !important;
}
.apple-hero .wp-block-button.is-style-outline .wp-block-button__link:hover,
.apple-welcome .wp-block-button.is-style-outline .wp-block-button__link:hover,
.apple-treatments .wp-block-button.is-style-outline .wp-block-button__link:hover{
  background:var(--apple-sage-tint) !important;
}

/* Cards: at very wide screens 3:4 gets gigantic. Cap them. */
@media (min-width:1024px){
  .apple-tcard{ max-height:480px; }
}

/* ============================================================
   TEAM STRIP — pulled from the team_member CPT via shortcode.
   ============================================================ */
.apple-team-strip{
  padding:clamp(64px,9vw,120px) 24px !important;
  background:var(--apple-sage-tint);
  text-align:center;
}
.apple-team-strip .eyebrow{
  font-family:Manrope,sans-serif;font-weight:600;font-size:.76rem;
  text-transform:uppercase;letter-spacing:.18em;color:var(--apple-gold);
  display:inline-block;margin-bottom:14px;
}
.apple-team-strip h2{
  font-family:"Cormorant Garamond",serif;font-weight:600;
  font-size:clamp(2rem,4vw,3.1rem);line-height:1.1;color:var(--apple-ink);
  margin:0 0 14px;
}
.apple-team-strip .lead{
  max-width:48ch;margin:0 auto 48px;color:var(--apple-ink-soft);
  font-size:1.05rem;
}
.apple-team-grid{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:22px;
  text-align:left;
  max-width:1200px;
  margin:0 auto;
}
.apple-member{
  text-decoration:none;color:inherit;display:block;
  transition: transform .35s cubic-bezier(.2,.7,.2,1);
}
.apple-member:hover{transform:translateY(-4px);}
.apple-member-photo{
  aspect-ratio:3/4;
  border-radius:4px;
  background-color:#fff;
  background-size:cover;background-position:center;
  margin-bottom:14px;
  overflow:hidden;
  border:1px solid var(--apple-line);
}
.apple-member-photo.apple-ph{
  background:linear-gradient(135deg,var(--apple-sage-tint),#fff 55%,var(--apple-cream-2));
  display:flex;align-items:flex-end;
  border:none;
}
.apple-member-photo.apple-ph span{
  position:relative;font-size:.72rem;font-weight:600;letter-spacing:.04em;
  background:rgba(255,255,255,.85);color:var(--apple-ink-soft);
  padding:6px 11px;margin:12px;border-radius:3px;border:1px solid var(--apple-line);
  font-family:Manrope,sans-serif;
}
.apple-member h3{
  font-family:"Cormorant Garamond",serif;font-weight:600;
  font-size:1.2rem;color:var(--apple-ink);
  margin:0 0 4px;line-height:1.2;
}
.apple-member .role{
  font-family:Manrope,sans-serif;font-size:.74rem;font-weight:600;
  color:var(--apple-gold);text-transform:uppercase;letter-spacing:.08em;
  display:block;margin-bottom:6px;
}
.apple-member p{
  font-size:.85rem;color:var(--apple-ink-soft);margin:0;line-height:1.45;
}
@media (max-width:1100px){
  .apple-team-grid{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:640px){
  .apple-team-grid{grid-template-columns:repeat(2,1fr);}
}

/* ============================================================
   FOOTER
   Hide Kadence's default footer widget areas + render our own.
   ============================================================ */
.site-footer .site-top-footer-wrap,
.site-footer .site-middle-footer-wrap,
.site-footer .site-bottom-footer-wrap{
  display:none !important;
}

.apple-footer{
  background:var(--apple-ink);
  color:rgba(255,255,255,.78);
  font-family:Manrope,system-ui,sans-serif;
  font-size:.92rem;
  line-height:1.65;
  padding:64px 24px 28px;
  margin-top:0;
}
.apple-footer-inner{
  max-width:1200px;margin:0 auto;
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr;
  gap:36px;
}
.apple-footer-col strong{
  display:block;color:#fff;font-weight:600;
  margin-bottom:14px;font-size:.95rem;letter-spacing:.02em;
}
.apple-footer h4{
  font-family:"Cormorant Garamond",serif;color:#fff;
  font-size:1.7rem;font-weight:600;margin:0 0 12px;letter-spacing:-0.01em;
}
.apple-footer h4 span{color:var(--apple-sage);}
.apple-footer-brand p{max-width:34ch;color:rgba(255,255,255,.78);margin:0;}
.apple-footer-col ul{list-style:none;margin:0;padding:0;}
.apple-footer-col li{margin-bottom:9px;color:rgba(255,255,255,.78);}
.apple-footer a{color:rgba(255,255,255,.78);text-decoration:none;transition:color .15s;}
.apple-footer a:hover{color:var(--apple-gold-soft);}
.apple-footer-cta{
  display:inline-flex;align-items:center;gap:9px;
  background:var(--apple-sage);color:#fff !important;
  padding:11px 22px;border-radius:4px;
  font-weight:600;font-size:.95rem;
}
.apple-footer-cta:hover{background:var(--apple-sage-deep);color:#fff !important;}
.apple-footer-bottom{
  max-width:1200px;margin:44px auto 0;padding-top:22px;
  border-top:1px solid rgba(255,255,255,.14);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;
  font-size:.82rem;color:rgba(255,255,255,.55);
}
@media (max-width:900px){
  .apple-footer-inner{grid-template-columns:1fr 1fr;}
}
@media (max-width:560px){
  .apple-footer-inner{grid-template-columns:1fr;}
}


/* =============================================
   Sections 7-12 additions (Airflow spotlight,
   Reviews, Referral band, Fees CTA, Find Us)
   ============================================= */

/* ---- Shared section rhythm ---- */
.apple-spot,.apple-reviews,.apple-findus{background:var(--apple-cream);padding:120px 24px;}
.apple-fees-cta{background:var(--apple-cream-2);padding:120px 24px;}
.apple-referral{background:var(--apple-sage-deep);padding:120px 24px;color:#fff;}
@media (max-width:900px){
  .apple-spot,.apple-reviews,.apple-findus,.apple-fees-cta,.apple-referral{padding:72px 20px;}
}

/* ---- Airflow spotlight ---- */
.apple-spot ul{list-style:none;padding:0;margin:18px 0 0;}
.apple-spot li{position:relative;padding-left:30px;margin-bottom:12px;color:var(--apple-ink-soft);}
.apple-spot li::before{content:"";position:absolute;left:0;top:.32em;width:14px;height:14px;border-radius:50%;background:var(--apple-sage-tint);border:2px solid var(--apple-sage);}
.apple-spot .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.apple-findus .wp-block-button:not(.is-style-outline) .wp-block-button__link{
  background:var(--apple-sage);color:#fff;border-radius:4px;
  font-family:Manrope,sans-serif;font-weight:600;padding:14px 26px;
}
.apple-spot .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.apple-findus .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover{background:var(--apple-sage-deep);}

/* ---- Reviews ---- */
.apple-review{background:#fff;border:1px solid var(--apple-line);border-radius:4px;padding:28px;height:100%;}
.apple-stars{color:var(--apple-gold);letter-spacing:3px;margin-bottom:14px;font-size:.95rem;}
.apple-review .apple-quote{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.2rem;line-height:1.45;color:var(--apple-ink);margin:0 0 16px;}
.apple-review .apple-who{font-family:Manrope,sans-serif;font-weight:600;font-size:.85rem;color:var(--apple-ink-soft);margin:0;}
.apple-reviews .placeholder-note{text-align:center;font-size:.85rem;color:var(--apple-ink-soft);opacity:.8;}

/* ---- Referral band ---- */
.apple-referral h2{color:#fff;}
.apple-referral p{color:rgba(255,255,255,.88);}
.apple-referral .eyebrow{color:var(--apple-gold-soft);}
.apple-referral .wp-block-button .wp-block-button__link,
.apple-btn-cream{
  background:#fff;color:var(--apple-sage-deep);border-radius:4px;
  font-family:Manrope,sans-serif;font-weight:600;padding:14px 26px;
  text-decoration:none;display:inline-block;
}
.apple-referral .wp-block-button .wp-block-button__link:hover,
.apple-btn-cream:hover{background:var(--apple-cream-2);color:var(--apple-sage-deep);}

/* ---- Fees CTA ---- */
.apple-fees-card{
  max-width:1200px;margin:0 auto;
  background:linear-gradient(120deg,var(--apple-sage),var(--apple-sage-deep));
  border-radius:8px;padding:68px 32px;text-align:center;color:#fff;
}
@media (max-width:700px){.apple-fees-card{padding:40px 20px;}}
.apple-fees-card h2{color:#fff;margin:6px 0 0;}
.apple-fees-card .eyebrow{color:var(--apple-gold-soft);}
.apple-fees-card p{color:rgba(255,255,255,.9);max-width:52ch;margin:14px auto 28px;}

/* ---- Find Us strip ---- */
.apple-findus .findus-row{display:flex;gap:14px;margin-bottom:18px;align-items:flex-start;}
.apple-findus .findus-row .ico{flex:0 0 auto;width:22px;color:var(--apple-sage);}
.apple-findus .findus-row strong{
  display:block;font-family:Manrope,sans-serif;font-weight:600;font-size:.78rem;
  text-transform:uppercase;letter-spacing:.1em;color:var(--apple-ink-soft);margin-bottom:2px;
}
.apple-findus iframe{width:100%;aspect-ratio:16/11;border:0;border-radius:4px;display:block;}


/* ---- Typography parity for sections 7-12 ---- */
.apple-spot .eyebrow,.apple-reviews .eyebrow,.apple-findus .eyebrow{
  font-family:Manrope,sans-serif;font-weight:600;font-size:.76rem;
  text-transform:uppercase;letter-spacing:.18em;color:var(--apple-gold);
  display:inline-block;margin-bottom:14px;
}
.apple-referral .eyebrow,.apple-fees-card .eyebrow{
  font-family:Manrope,sans-serif;font-weight:600;font-size:.76rem;
  text-transform:uppercase;letter-spacing:.18em;color:var(--apple-gold-soft);
  display:inline-block;margin-bottom:14px;
}
.apple-spot h2,.apple-reviews h2,.apple-referral h2,.apple-findus h2,.apple-fees-card h2{
  font-family:"Cormorant Garamond",serif;font-weight:600;letter-spacing:-0.01em;
  font-size:clamp(2rem,4vw,3.1rem);line-height:1.1;margin:0 0 18px;
}
.apple-spot h2,.apple-reviews h2,.apple-findus h2{color:var(--apple-ink);}
.apple-referral h2,.apple-fees-card h2{color:#fff;}
.apple-spot p,.apple-findus p{color:var(--apple-ink-soft);}


/* ---- Hero layout fix: single left-aligned column (matches mockup .hero-inner.wrap) ---- */
.apple-hero .hero-inner{max-width:1200px;margin:0 auto;position:relative;z-index:1;}
.apple-hero .hero-inner > *{margin-left:0 !important;margin-right:0 !important;}
.apple-hero .hero-inner h1{margin-bottom:22px !important;}
.apple-hero .reassure{margin-top:22px;font-size:.86rem;color:var(--apple-ink-soft);}
.apple-hero .wp-block-buttons{display:flex;gap:14px;flex-wrap:wrap;}


/* ---- Real photos in section slots ---- */
.apple-welcome .wp-block-image img,.apple-spot .wp-block-image img,.apple-referral .wp-block-image img{width:100%;height:auto;border-radius:4px;display:block;}


/* ===== appletree-global-type-v1: GLOBAL TYPOGRAPHY + SUBPAGE STYLING (2026-06-16) ===== */
body,button,input,select,textarea,.entry-content,.entry-content p,.entry-content li,.entry-content td,.entry-content th{font-family:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;}
h1,h2,h3,h4,h5,h6,.entry-title,.site-title{font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;letter-spacing:-0.01em;color:var(--apple-ink);}
body{color:var(--apple-ink);}
.header-navigation .menu-item a,.site-header{font-family:"Manrope",sans-serif;}
/* --- Subpage content (non-home) --- */
body:not(.home) .entry-content{font-size:1.0625rem;line-height:1.75;color:var(--apple-ink);}
body:not(.home) .entry-content > :is(h1,h2,h3,h4,h5,h6,p,ul,ol,hr,blockquote,figure):not(.alignfull):not(.alignwide){max-width:760px;margin-left:auto;margin-right:auto;}
body:not(.home) .entry-content > h2{font-size:clamp(1.7rem,3vw,2.4rem);line-height:1.15;margin:2.2em auto .45em;color:var(--apple-ink);}
body:not(.home) .entry-content > h2:first-child{margin-top:.2em;}
body:not(.home) .entry-content > h3{font-size:clamp(1.3rem,2.2vw,1.55rem);margin:1.7em auto .4em;color:var(--apple-ink);}
body:not(.home) .entry-content > p{margin:0 auto 1.1em;color:var(--apple-ink-soft);}
body:not(.home) .entry-content a{color:var(--apple-sage-deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;}
body:not(.home) .entry-content a:hover{color:var(--apple-sage);}
body:not(.home) .entry-content strong{color:var(--apple-ink);font-weight:600;}
body:not(.home) .entry-content ul{list-style:none;padding-left:0;}
body:not(.home) .entry-content ul > li{position:relative;padding-left:26px;margin-bottom:10px;color:var(--apple-ink-soft);}
body:not(.home) .entry-content ul > li::before{content:"";position:absolute;left:2px;top:.6em;width:8px;height:8px;border-radius:50%;background:var(--apple-sage-tint);border:2px solid var(--apple-sage);}
body:not(.home) .entry-content ol{padding-left:1.3em;}
body:not(.home) .entry-content ol > li{margin-bottom:10px;color:var(--apple-ink-soft);}
body:not(.home) .entry-content li > strong{color:var(--apple-ink);}
body:not(.home) .entry-content .wp-block-table{max-width:760px;margin:1.4em auto 2em;}
body:not(.home) .entry-content table{width:100%;border-collapse:collapse;font-size:1rem;}
body:not(.home) .entry-content table th{background:var(--apple-cream-2);color:var(--apple-ink);font-family:"Cormorant Garamond",serif;font-weight:600;font-size:1.15rem;text-align:left;padding:12px 16px;border-bottom:1px solid var(--apple-line);}
body:not(.home) .entry-content table td{padding:12px 16px;border-bottom:1px solid var(--apple-line);color:var(--apple-ink);}
body:not(.home) .entry-content table tr:hover td{background:var(--apple-sage-tint);}
body:not(.home) .entry-content hr{border:none;height:1px;background:var(--apple-line);margin:2.2em auto;max-width:760px;}
/* --- Homepage: remove 32px inter-section block gap --- */
.home .entry-content > .wp-block-group.alignfull{margin-top:0 !important;margin-bottom:0 !important;}


/* appletree-heading-font-override: force Cormorant on all headings over Kadence */
h1,h2,h3,h4,h5,h6,.entry-title,.entry-content h1,.entry-content h2,.entry-content h3,.entry-content h4{font-family:"Cormorant Garamond",Georgia,serif !important;}
.menu-item a,.header-navigation a,.site-title{font-family:"Manrope",sans-serif !important;}


/* appletree-page-hero: branded subpage title header (Kadence entry-hero) */
.page-hero-section .entry-hero-container-inner{background:linear-gradient(120deg,var(--apple-sage-tint),var(--apple-cream-2)) !important;border-bottom:1px solid var(--apple-line);}
.page-hero-section .hero-section-overlay{display:none !important;}
.page-hero-section .entry-header{padding:60px 0 !important;text-align:center;}
.page-hero-section .entry-title{font-family:"Cormorant Garamond",Georgia,serif !important;font-size:clamp(2.4rem,5vw,3.6rem) !important;font-weight:600;color:var(--apple-ink) !important;margin:0 !important;line-height:1.08;}
.page-hero-section .entry-title::after{content:"";display:block;width:54px;height:3px;background:var(--apple-sage);margin:18px auto 0;border-radius:2px;}


/* ===== appletree-consistency-v2: consistent type scale, header, gaps, archive hero ===== */
/* unified subpage heading scale (descendant: catches nested headings too) */
body:not(.home) .entry-content h2{font-size:clamp(1.7rem,2.4vw,2.15rem) !important;line-height:1.16;margin:2em auto .45em;}
body:not(.home) .entry-content h2:first-child{margin-top:.2em;}
body:not(.home) .entry-content h3{font-size:1.4rem !important;line-height:1.25;margin:1.6em auto .4em;}
body:not(.home) .entry-content h4{font-size:1.15rem !important;line-height:1.3;margin:1.4em auto .35em;}
body:not(.home) .entry-content p,body:not(.home) .entry-content li{font-size:1.0625rem;}
/* header logo in Cormorant brand display font */
.site-title,.site-title a{font-family:"Cormorant Garamond",Georgia,serif !important;font-weight:600 !important;font-size:1.95rem !important;color:var(--apple-ink) !important;letter-spacing:0;line-height:1;}
/* homepage: remove content-area padding/margin that gaps the footer */
.home .entry-content-wrap{padding-top:0 !important;padding-bottom:0 !important;}
.home .content-area{margin-bottom:0 !important;}
/* branded hero for ALL subpage + archive heroes (Team archive included) */
body:not(.home) .entry-hero .entry-hero-container-inner{background:linear-gradient(120deg,var(--apple-sage-tint),var(--apple-cream-2)) !important;border-bottom:1px solid var(--apple-line);}
body:not(.home) .entry-hero .hero-section-overlay{display:none !important;}
body:not(.home) .entry-hero .entry-header{padding:58px 0 !important;text-align:center;}
body:not(.home) .entry-hero .entry-title{font-family:"Cormorant Garamond",Georgia,serif !important;font-size:clamp(2.1rem,3.6vw,2.9rem) !important;font-weight:600;color:var(--apple-ink) !important;margin:0 !important;line-height:1.08;}
body:not(.home) .entry-hero .entry-title::after{content:"";display:block;width:54px;height:3px;background:var(--apple-sage);margin:18px auto 0;border-radius:2px;}


/* appletree-treatment-photos: practice photos behind treatment cards + Find Us page map */
.apple-tcard[href*="general-dentistry"]{background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/06/appletree-waiting-area.jpg) !important;background-size:cover !important;background-position:center !important;}
.apple-tcard[href*="dental-implants"]{background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/06/appletree-clinical-imaging.jpg) !important;background-size:cover !important;background-position:center !important;}
.apple-tcard[href*="airflow"]{background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/06/appletree-airflow-treatment.jpg) !important;background-size:cover !important;background-position:center !important;}
.findus-map{max-width:760px;margin:1.4em auto 2em;}
.findus-map iframe{width:100%;aspect-ratio:16/10;border:0;border-radius:4px;display:block;}


/* appletree-cards2-teamfix: cosmetic card photos (stand-ins) + team archive head-crop fix */
.apple-tcard[href*="bioclear"]{background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/06/card-bioclear.jpg) !important;background-size:cover !important;background-position:center !important;}
.apple-tcard[href$="/teeth-whitening/"]{background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/06/card-whitening.jpg) !important;background-size:cover !important;background-position:center !important;}
.apple-tcard[href$="/cosmetic-dentistry/"]{background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/06/card-cosmetic.jpg) !important;background-size:cover !important;background-position:center !important;}
.team_member-archive .post-thumbnail{aspect-ratio:3/4 !important;height:auto !important;}
.team_member-archive .post-thumbnail img{width:100% !important;height:100% !important;object-fit:cover !important;object-position:center 14% !important;}


/* appletree-header-cta: Call-the-practice nav button */
.menu-cta > a{background:var(--apple-sage) !important;color:#fff !important;border-radius:6px;padding:9px 16px !important;font-weight:600;margin-left:8px;transition:background-color .2s ease, transform .2s ease, box-shadow .2s ease;}
.menu-cta > a:hover{background:var(--apple-sage-deep) !important;color:#fff !important;transform:translateY(-1px);box-shadow:0 6px 14px rgba(43,58,48,.18);}
.menu-cta > a::after{display:none !important;}
.menu-cta > a::before{content:"\260E";margin-right:7px;font-size:.95em;}


/* appletree-utilbar-style: top utility bar */
.site-header-row-container:has(.site-top-header-inner-wrap){background:var(--apple-sage-deep) !important;}
.site-top-header-inner-wrap{padding-top:7px !important;padding-bottom:7px !important;}
.site-header-top-section-left{flex:1 1 100% !important;width:100% !important;max-width:100% !important;}
.at-ub{display:flex;justify-content:space-between;align-items:center;width:100%;gap:24px;flex-wrap:wrap;font-size:12.5px;font-family:"Manrope",sans-serif;line-height:1.3;}
.at-ub,.at-ub a{color:#fff !important;}
.at-ub a{text-decoration:none;}
.at-ub-right{display:flex;gap:20px;align-items:center;flex-wrap:wrap;}
.at-ub-right a:hover{color:var(--apple-gold-soft) !important;}
.at-ub-phone{font-weight:700;}
@media (max-width:900px){.site-header-row-container:has(.site-top-header-inner-wrap){display:none !important;}}

/* at-ub-nounderline */
.at-ub a{text-decoration:none !important;}
.at-ub-right a:hover{text-decoration:underline !important;text-underline-offset:3px;}


/* appletree-feature-img: subpage feature images + placeholders */
body:not(.home) .entry-content .at-feature-img{max-width:760px;margin:1.7em auto 2.1em;}
.at-feature-img img{border-radius:4px;display:block;width:100%;}
.at-feature-ph{max-width:760px;margin:1.7em auto 2.1em;aspect-ratio:16/9;border-radius:4px;background:linear-gradient(135deg,var(--apple-sage-tint),#fff 55%,var(--apple-cream-2));border:1px solid var(--apple-line);display:flex;align-items:flex-end;padding:14px 16px;font-family:"Manrope",sans-serif;font-size:.8rem;font-weight:600;color:var(--apple-ink-soft);}


/* =====================================================================
   appletree-polish-v1 (2026-09-03)
   Fixes: too many near-identical colour bands, uniform section padding,
   whole-section slide-in, card treatment, text measure.
   This block is appended last so it overrides everything above it.
   ===================================================================== */

/* --- 1. MOTION: sections fade only; content does the moving -----------
   The reveal class was applied to the coloured section itself, so the
   whole band slid up — that's what read as "a colour sliding over a
   colour". Sections now fade in place; inner content lifts. */
.apple-welcome.reveal,
.apple-values.reveal,
.apple-treatments.reveal,
.apple-spotlight.reveal,
.apple-spot.reveal,
.apple-team-strip.reveal,
.apple-reviews.reveal,
.apple-referral.reveal,
.apple-fees-cta.reveal,
.apple-find-us.reveal,
.apple-findus.reveal,
.apple-footer.reveal{
  transform:none !important;
  opacity:1;
  transition:none;
}
/* inner content gets the gentle lift instead */
.apple-welcome.reveal > *,
.apple-treatments.reveal > *,
.apple-team-strip.reveal > *,
.apple-reviews.reveal > *,
.apple-referral.reveal > *,
.apple-fees-cta.reveal > *{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);
}
.apple-welcome.is-revealed > *,
.apple-treatments.is-revealed > *,
.apple-team-strip.is-revealed > *,
.apple-reviews.is-revealed > *,
.apple-referral.is-revealed > *,
.apple-fees-cta.is-revealed > *{
  opacity:1;
  transform:none;
}
@media (prefers-reduced-motion:reduce){
  .reveal,.reveal > *{opacity:1 !important;transform:none !important;transition:none !important;}
}

/* --- 2. GROUNDS: nine bands down to three ----------------------------
   Cream is now the page ground. White is used once (team) to lift the
   portraits. Sage-deep is the single dark moment. */
.apple-welcome,
.apple-treatments,
.apple-spot,
.apple-reviews,
.apple-fees-cta,
.apple-findus{
  background:var(--apple-cream) !important;
}
.apple-team-strip{
  background:#fff !important;
  border-top:1px solid var(--apple-line);
  border-bottom:1px solid var(--apple-line);
}
.apple-referral{background:var(--apple-sage-deep) !important;}

/* --- 3. RHYTHM: vary the vertical spacing ---------------------------- */
.apple-welcome   {padding:clamp(80px,9vw,128px) 24px !important;}
.apple-treatments{padding:clamp(72px,8vw,112px) 24px !important;}
.apple-team-strip{padding:clamp(64px,7vw,96px)  24px !important;}
.apple-spot      {padding:clamp(80px,9vw,128px) 24px !important;}
.apple-reviews   {padding:clamp(64px,7vw,96px)  24px !important;}
.apple-referral  {padding:clamp(80px,9vw,128px) 24px clamp(120px,14vw,184px) !important;}
.apple-fees-cta  {padding:0 24px clamp(80px,9vw,128px) !important;}
.apple-findus    {padding:clamp(72px,8vw,112px) 24px !important;}

/* --- 4. OVERLAP: the fees card straddles the dark band ---------------
   One element crossing a section boundary is what stops a page reading
   as stacked strips. */
.apple-fees-card{
  margin-top:clamp(-136px,-11vw,-88px) !important;
  position:relative;
  z-index:2;
  background:#fff !important;
  color:var(--apple-ink) !important;
  border-radius:3px !important;
  border:1px solid var(--apple-line);
  box-shadow:0 18px 48px rgba(43,58,48,.14);
  padding:clamp(40px,5vw,64px) clamp(24px,4vw,48px) !important;
}
.apple-fees-card h2{color:var(--apple-ink) !important;}
.apple-fees-card p{color:var(--apple-ink-soft) !important;}
.apple-fees-card .eyebrow{color:var(--apple-gold) !important;}
.apple-fees-card .wp-block-button .wp-block-button__link,
.apple-fees-card .apple-btn-cream{
  background:var(--apple-sage) !important;
  color:#fff !important;
}
.apple-fees-card .wp-block-button .wp-block-button__link:hover,
.apple-fees-card .apple-btn-cream:hover{background:var(--apple-sage-deep) !important;}

/* --- 5. CARDS: hairline or shadow, never both; consistent radius ----- */
.apple-review{
  border-radius:3px;
  border:1px solid var(--apple-line);
  box-shadow:none;
  padding:32px;
}
.apple-tcard{border-radius:3px;}
.apple-findus iframe{border-radius:3px;}

/* --- 6. MEASURE: stop long lines running the full column ------------- */
.apple-welcome p,
.apple-spot p,
.apple-findus p,
.apple-treatments .lead,
.apple-team-strip .lead{max-width:62ch;}
.apple-welcome > .wp-block-group,
.apple-treatments > .wp-block-group{margin-inline:auto;}

/* --- 7. Section heads: a touch more air under the eyebrow ------------ */
.apple-spot .eyebrow,.apple-reviews .eyebrow,.apple-findus .eyebrow,
.apple-welcome .eyebrow,.apple-treatments .eyebrow,
.apple-referral .eyebrow,.apple-fees-card .eyebrow{margin-bottom:16px;}

/* --- 8. TIGHTEN (appletree-polish-v1.1) ------------------------------
   Overall vertical scale pulled in ~30%; no dead space above the hero. */
.home .site-main,
.home .content-area,
.home .entry-content{padding-top:0 !important;margin-top:0 !important;}
.home .entry-hero-container-inner,
.home .page-hero-section{display:none !important;}
.home .content-container,
.home .site-container{padding-top:0 !important;}

.apple-hero{padding:clamp(48px,6vw,88px) 24px !important;min-height:0 !important;}

.apple-welcome   {padding:clamp(56px,6vw,88px) 24px !important;}
.apple-treatments{padding:clamp(52px,5.5vw,80px) 24px !important;}
.apple-team-strip{padding:clamp(44px,4.5vw,68px) 24px !important;}
.apple-spot      {padding:clamp(56px,6vw,88px) 24px !important;}
.apple-reviews   {padding:clamp(44px,4.5vw,68px) 24px !important;}
.apple-referral  {padding:clamp(56px,6vw,88px) 24px clamp(88px,10vw,128px) !important;}
.apple-fees-cta  {padding:0 24px clamp(56px,6vw,88px) !important;}
.apple-findus    {padding:clamp(52px,5.5vw,80px) 24px !important;}

.apple-fees-card{margin-top:clamp(-96px,-8vw,-64px) !important;}

/* headings sit a little closer to their sections */
.apple-spot h2,.apple-reviews h2,.apple-referral h2,.apple-findus h2,
.apple-welcome h2,.apple-treatments h2,.apple-fees-card h2{margin-bottom:14px !important;}

/* --- 9. PREVIEW-ONLY: drone footage placeholder label ----------------
   Marks the hero as an intentional placeholder for the client preview.
   DELETE THIS RULE once the real drone footage is in. */
.apple-hero{position:relative;}
.apple-hero::after{
  content:"\2726  Drone footage of the practice \2014 filming soon";
  position:absolute;left:50%;bottom:16px;transform:translateX(-50%);
  z-index:3;pointer-events:none;white-space:nowrap;
  font-family:Manrope,system-ui,sans-serif;font-size:.78rem;font-weight:600;
  letter-spacing:.04em;color:var(--apple-sage-deep);
  background:rgba(255,255,255,.78);
  border:1px solid var(--apple-gold-soft);border-radius:40px;
  padding:7px 16px;
  backdrop-filter:blur(2px);
}
@media (max-width:700px){
  .apple-hero::after{font-size:.66rem;padding:6px 12px;bottom:10px;letter-spacing:.02em;}
}


/* ===== appletree-card-standins-removed 2026-09-11 =====
   Bioclear, Whitening and Cosmetic were showing stand-in photos whose subject
   did not match the treatment (the Cosmetic card was a team group shot at reception).
   Reverted to the base sage gradient until real before/after images arrive. */
.apple-tcard[href*="bioclear"],
.apple-tcard[href$="/teeth-whitening/"],
.apple-tcard[href$="/cosmetic-dentistry/"]{
  background-image:none !important;
  background:linear-gradient(160deg,var(--apple-sage),var(--apple-sage-deep)) !important;
}


/* ===== appletree-hero-video 2026-09-14 =====================================
   Real drone footage replaces the gradient placeholder. The scrim is CREAM, not
   black: a dark overlay would read heavy and fight the spa-clean brief, and the
   headline is dark ink. If the video fails, the poster shows; if that fails, the
   original sage gradient underneath still shows. */
.apple-hero{position:relative;overflow:hidden;isolation:isolate;}
.apple-hero-video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 55%;
  z-index:0;pointer-events:none;
}
.apple-hero::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(100deg,
    rgba(250,246,239,.95) 0%,
    rgba(250,246,239,.88) 34%,
    rgba(250,246,239,.46) 60%,
    rgba(250,246,239,.12) 100%);
}
.apple-hero .hero-inner{position:relative;z-index:2;}

/* the preview-only "filming soon" label is retired — the footage is in */
.apple-hero::after{content:none !important;}

@media (max-width:900px){
  .apple-hero::before{
    background:linear-gradient(180deg,
      rgba(250,246,239,.93) 0%,
      rgba(250,246,239,.86) 52%,
      rgba(250,246,239,.60) 100%);
  }
  .apple-hero-video{object-position:center 45%;}
}


/* ===== appletree-hero-video-fix 2026-09-14 =================================
   1. Absolutely-positioned children resolve inset:0 against the PADDING box, so
      the video and scrim were sitting inside the hero's own padding instead of
      bleeding to its edges. Cancel it with a matching negative margin — the
      clamp() re-evaluates, so this stays exact at every viewport width.
   2. The first scrim was far too weak: the headline sat over the dark fascia
      sign and was unreadable. The left side is now effectively solid cream and
      the footage reads through on the right. */
.apple-hero-video,
.apple-hero::before{
  margin: calc(-1 * clamp(48px,6vw,88px)) -24px;
}
.apple-hero::before{
  background:
    linear-gradient(100deg,
      rgba(250,246,239,.975) 0%,
      rgba(250,246,239,.95)  30%,
      rgba(250,246,239,.72)  48%,
      rgba(250,246,239,.30)  70%,
      rgba(250,246,239,.06) 100%),
    linear-gradient(180deg, rgba(250,246,239,.22), rgba(250,246,239,.08));
}
@media (max-width:900px){
  .apple-hero::before{
    background:
      linear-gradient(180deg,
        rgba(250,246,239,.95) 0%,
        rgba(250,246,239,.90) 55%,
        rgba(250,246,239,.66) 100%);
  }
}


/* ===== appletree-hero-video-geometry 2026-09-14 ============================
   The video is reparented to .apple-hero by the inline script in the hero block,
   so its containing block is the hero's PADDING box. Pull it back out over the
   padding explicitly — width/height percentages on a replaced element won't grow
   from negative margins, so the offsets are stated rather than inherited.
   clamp() matches the hero's own padding rule, so this holds at every width. */
.apple-hero-video{
  margin:0;
  top:calc(-1 * clamp(48px,6vw,88px));
  left:-24px;
  width:calc(100% + 48px);
  height:calc(100% + 2 * clamp(48px,6vw,88px));
}


/* ===== appletree-hero-video-final 2026-09-14 ==============================
   Supersedes the two attempts above. An absolutely positioned element resolves
   against the nearest positioned ancestor's PADDING box, and the padding box
   already INCLUDES the padding — so once the script reparents the video to
   .apple-hero, plain inset:0 covers the hero exactly and the earlier negative
   offsets were double-counting. The scrim (::before) is a child of .apple-hero
   too, so it needs the same reset. */
.apple-hero-video,
.apple-hero::before{
  margin:0;
  top:0; right:0; bottom:0; left:0;
  width:100%; height:100%;
}


/* ===== appletree-header-logo 2026-09-14 ===================================
   The real logo is now the site logo. Kadence was rendering the logo AND the
   site title side by side, which read as a duplicate and pushed the nav onto a
   second row — so the text title is hidden and the logo is height-capped to keep
   the header on one line. The strapline variant of the logo is unreadable below
   about 400px wide, so the header uses the strapline-free file. */
.site-header .site-title,
.site-branding .site-title{ display:none !important; }

.site-header .custom-logo,
.site-branding img.custom-logo{
  max-height:58px; width:auto; height:auto;
}
@media (max-width:1100px){
  .site-header .custom-logo,
  .site-branding img.custom-logo{ max-height:46px; }
}
@media (max-width:900px){
  .site-header .custom-logo,
  .site-branding img.custom-logo{ max-height:40px; }
}


/* ===== appletree-hero-topfade 2026-09-14 ==================================
   A soft cream fade across the top of the hero. Two reasons: it gives the white
   sticky header a clean edge to sit against instead of cutting straight into
   video, and it knocks back the neighbouring tenant's signage across the gable,
   which was reading as the most legible text on the page. Subtle on purpose —
   heavier than this and it eats the sky. */
.apple-hero::before{
  background:
    linear-gradient(180deg,
      rgba(250,246,239,.62) 0%,
      rgba(250,246,239,.22) 16%,
      rgba(250,246,239,0)   42%),
    linear-gradient(100deg,
      rgba(250,246,239,.975) 0%,
      rgba(250,246,239,.95)  30%,
      rgba(250,246,239,.72)  48%,
      rgba(250,246,239,.30)  70%,
      rgba(250,246,239,.06) 100%),
    linear-gradient(180deg, rgba(250,246,239,.22), rgba(250,246,239,.08));
}

/* appletree-atglance 2026-09-14 ------------------------------------------
   Replaces the dashed "Photo to come" boxes on the nine treatment pages.
   No clinical photography exists yet (the 4 Sept shoot was exterior, team and
   drone only), and an empty grey box reads as an unfinished site to a client
   reviewing it. This is a three-fact strip built only from figures already
   published in the copy on the same page, and it puts the terracotta and gold
   accents to work — the palette was using them almost nowhere. */
.at-glance{
  max-width:820px;margin:2.1em auto 2.4em;
  background:linear-gradient(180deg,#fff,var(--apple-cream));
  border:1px solid var(--apple-line);
  border-top:3px solid var(--apple-terracotta);
  border-radius:5px;
  padding:22px 26px 24px;
}
.at-glance-h{
  font-family:"Manrope",system-ui,sans-serif;font-size:.68rem;font-weight:700;
  letter-spacing:.17em;text-transform:uppercase;color:var(--apple-gold);
  margin:0 0 16px;
}
.at-glance ul{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:22px 30px;
}
.at-glance li{margin:0;padding:0;}
.at-glance li + li{border-left:1px solid var(--apple-line);padding-left:30px;}
.at-glance .lab{
  display:block;font-family:"Manrope",system-ui,sans-serif;font-size:.7rem;
  font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--apple-ink-soft);margin-bottom:5px;
}
.at-glance .val{
  display:block;font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;
  font-size:clamp(1.45rem,2.3vw,1.95rem);line-height:1.12;
  color:var(--apple-sage-deep);margin-bottom:7px;
}
.at-glance .note{
  display:block;font-family:"Manrope",system-ui,sans-serif;font-size:.82rem;
  line-height:1.5;color:var(--apple-ink-soft);
}
@media (max-width:800px){
  .at-glance ul{grid-template-columns:1fr;gap:18px;}
  .at-glance li + li{border-left:0;padding-left:0;border-top:1px solid var(--apple-line);padding-top:18px;}
}
/* The site's list styling paints a sage dot via li::before on every list item
   inside the content; the glance strip is a list only for semantics, so kill it. */
.at-glance ul li::before{content:none !important;display:none !important;}
.at-glance ul li{padding-left:0;}
.at-glance li + li{padding-left:30px;}
@media (max-width:800px){.at-glance li + li{padding-left:0;}}
.at-glance .val a{color:inherit;text-decoration:none;border-bottom:1px solid var(--apple-gold-soft);}
.at-glance .val a:hover{border-bottom-color:var(--apple-terracotta);}



/* appletree-forms 2026-09-14 ---------------------------------------------
   Fluent Forms ships a generic blue-ish default. These rules put the enquiry
   and referral forms into the site's own palette and type so they don't read
   as a bolted-on plugin. Scoped to .frm-fluent-form so nothing else moves. */
.frm-fluent-form{
  max-width:820px;margin:1.6em 0 0;
  font-family:"Manrope",system-ui,sans-serif;
}
.frm-fluent-form .ff-el-input--label label{
  font-family:"Manrope",system-ui,sans-serif;font-weight:600;font-size:.86rem;
  color:var(--apple-ink);letter-spacing:.01em;
}
.frm-fluent-form .ff-el-is-required.asterisk-right label:after{color:var(--apple-terracotta);}
.frm-fluent-form .ff-el-form-control{
  font-family:"Manrope",system-ui,sans-serif;font-size:.92rem;color:var(--apple-ink);
  background:#fff;border:1px solid var(--apple-line);border-radius:4px;
  padding:11px 13px;box-shadow:none;transition:border-color .15s ease,box-shadow .15s ease;
}
.frm-fluent-form .ff-el-form-control:focus{
  border-color:var(--apple-sage);
  box-shadow:0 0 0 3px rgba(97,133,71,.14);outline:none;
}
.frm-fluent-form .ff-el-form-control::placeholder{color:#9aa79f;}
.frm-fluent-form textarea.ff-el-form-control{min-height:132px;line-height:1.55;}
.frm-fluent-form .ff-el-help-message{
  font-size:.79rem;color:var(--apple-ink-soft);margin-top:5px;
}
/* Section breaks become quiet dividers with a Cormorant heading */
.frm-fluent-form .ff-el-section-break{
  border:0;border-top:1px solid var(--apple-line);
  margin:26px 0 4px;padding-top:20px;
}
.frm-fluent-form .ff-el-section-break h3,
.frm-fluent-form .ff-el-section-break .ff-el-section-title{
  font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;
  font-size:1.45rem;color:var(--apple-ink);margin:0 0 4px;
}
.frm-fluent-form .ff-section-break-desc{
  font-size:.85rem;color:var(--apple-ink-soft);line-height:1.5;
}
/* Consent checkbox reads as a note, not a field */
.frm-fluent-form .ff_t_c label,
.frm-fluent-form .ff-el-tc label{
  font-weight:400;font-size:.84rem;line-height:1.55;color:var(--apple-ink-soft);
}
.frm-fluent-form .ff_t_c a{color:var(--apple-sage-deep);}
/* Buttons */
.frm-fluent-form .ff-btn-submit{
  font-family:"Manrope",system-ui,sans-serif;font-weight:700;font-size:.92rem;
  letter-spacing:.01em;padding:13px 26px;border-radius:4px;border:0;
  background:var(--apple-sage-deep);color:#fff;cursor:pointer;
  transition:background .15s ease;
}
.frm-fluent-form .ff-btn-submit:hover{background:var(--apple-sage);}
.frm-fluent-form .ff-el-group{margin-bottom:18px;}
/* File upload button */
.frm-fluent-form .ff_upload_btn.ff-btn{
  background:transparent;border:1px dashed var(--apple-line);color:var(--apple-sage-deep);
  font-family:"Manrope",system-ui,sans-serif;font-weight:600;border-radius:4px;padding:11px 18px;
}
.frm-fluent-form .ff_upload_btn.ff-btn:hover{border-color:var(--apple-sage);}
/* Success + error states in the palette */
.ff-message-success{
  background:var(--apple-cream);border:1px solid var(--apple-line);
  border-left:3px solid var(--apple-sage);border-radius:4px;
  padding:18px 20px;color:var(--apple-ink);font-family:"Manrope",system-ui,sans-serif;
}
.frm-fluent-form .error.text-danger,
.frm-fluent-form .ff-el-is-error .text-danger{color:var(--apple-terracotta);font-size:.8rem;}
/* Fluent Forms draws its own <hr> under a section break; we already draw the
   rule as a border-top on the group, so the second line was doubling up. */
.frm-fluent-form .ff-el-section-break hr{display:none;}
.frm-fluent-form .ff-section_break_desk{
  font-size:.85rem;color:var(--apple-ink-soft);line-height:1.5;margin:0;
}
.frm-fluent-form .ff-el-section-break{margin-bottom:22px;}

/* appletree-rhythm-v2 2026-09-14 -----------------------------------------
   Fionn: "too much space in these areas, makes the site feel bland and basic."
   Measured it rather than guessed: the gap between the bottom of one homepage
   section's content and the top of the next ran 163–239px. Two earlier passes
   had already trimmed the scale, but the stack (section padding-bottom + next
   section's padding-top + the eyebrow's own margin) still added up. Every
   inter-section gap is now ~120–150px. Section padding is roughly halved from
   the original and cut ~30% again from the v1.1 tighten.
   Worst offender was .apple-values: 87px of text carrying 120px of padding
   beneath it. ------------------------------------------------------------ */
.apple-hero      {padding:clamp(40px,5vw,72px) 24px !important;}
.apple-welcome   {padding:clamp(40px,4.4vw,60px) 24px !important;}
.apple-values    {padding:clamp(26px,2.8vw,38px) 24px clamp(38px,4vw,54px) !important;}
.apple-treatments{padding:clamp(36px,4vw,56px) 24px !important;}
.apple-team-strip{padding:clamp(32px,3.4vw,48px) 24px !important;}
.apple-spot      {padding:clamp(40px,4.4vw,60px) 24px !important;}
.apple-reviews   {padding:clamp(32px,3.4vw,48px) 24px !important;}
.apple-referral  {padding:clamp(40px,4.4vw,60px) 24px clamp(72px,8vw,104px) !important;}
.apple-fees-cta  {padding:0 24px clamp(40px,4.4vw,60px) !important;}
.apple-findus    {padding:clamp(36px,4vw,56px) 24px !important;}
/* The fees card pulls up into the referral band's bottom padding; that padding
   shrank, so the pull has to shrink with it or the card overhangs the band. */
.apple-fees-card {margin-top:clamp(-72px,-6vw,-52px) !important;}

/* The treatment cards were 3:4 — 480px tall at desktop — and three of the six
   are flat gradient with no photo behind them, so the grid read as six tall
   blocks of colour. 4:5 takes ~90px off each row without cropping the three
   that do have photography. */
.apple-tcard{aspect-ratio:4/5 !important;}

/* Interior pages: 2em above every H2 is ~68px at this type size, which on a
   long page like Fees or About reads as the same airiness. */
body:not(.home) .entry-content h2{margin-top:1.45em !important;}
body:not(.home) .entry-content h3{margin-top:1.25em !important;}
/* Subpage title band: 58–60px of padding around a single line of type. */
.page-hero-section .entry-header,
body:not(.home) .entry-hero .entry-header{padding:42px 0 !important;}
body:not(.home) .entry-content-wrap{padding-top:24px !important;}
/* The real culprit behind the remaining gaps: every homepage section H2 was
   carrying the browser default 0.83em top margin — 74px at this display size —
   stacked on top of the section's own padding. The section padding is the
   spacing; the heading shouldn't add a second helping of it. */
.apple-welcome > * > h2:first-child,
.apple-treatments > * > h2:first-child,
.apple-team-strip h2,
.apple-spot h2,
.apple-reviews h2,
.apple-referral h2,
.apple-findus h2,
.apple-fees-card h2{margin-top:0 !important;}
.apple-welcome h2,.apple-treatments h2{margin-top:0 !important;}
/* Cards sit in a stretch row, so aspect-ratio was being overridden by the
   row height. Let them size themselves. */
.apple-tcard{align-self:start !important;}

/* appletree-values-band 2026-09-15 ---------------------------------------
   Fionn: "something feels off about the 3 brief points — I like them but
   they're boring compared to the rest of the homepage." He was right: they
   were three blocks of centred text floating in cream with nothing around
   them, sandwiched between a photo section and a card grid. They now read as
   a deliberate band: its own two-tone ground, hairline rules top and bottom,
   an icon disc per point, and hairline dividers between the three. Cards were
   deliberately avoided — the treatments grid directly below is already cards,
   and a second card row would flatten the page rather than lift it. -------- */
.apple-values{
  background:linear-gradient(180deg,#FFFFFF 0%,var(--apple-cream) 100%) !important;
  border-top:1px solid var(--apple-line);
  border-bottom:1px solid var(--apple-line);
}
.apple-values .wp-block-columns{max-width:1120px;margin-inline:auto;gap:0 !important;}
.apple-value{
  text-align:center;
  padding:6px 34px 2px !important;
  position:relative;
}
/* Hairline between the three, drawn on the element so it can't outlive a
   single-column stack on mobile. */
.apple-value + .apple-value::after{
  content:"";position:absolute;left:0;top:12%;bottom:12%;width:1px;
  background:var(--apple-line);
}
/* Icon disc. Three simple line marks drawn here rather than uploaded, so the
   colour comes from the palette token and follows any future hue change. */
.apple-value::before{
  content:"";display:block;width:54px;height:54px;margin:0 auto 18px;
  border-radius:50%;
  background-color:var(--apple-sage-tint);
  background-repeat:no-repeat;
  background-position:center;
  background-size:26px 26px;
  border:1px solid var(--apple-line);
}
.apple-value:nth-of-type(1)::before{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23466534' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v5.5c0 4.2-2.9 7.6-7 8.5-4.1-.9-7-4.3-7-8.5V6l7-3z'/%3E%3Cpath d='M9 12.2l2.1 2.1 4.1-4.3'/%3E%3C/svg%3E");
}
.apple-value:nth-of-type(2)::before{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23466534' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 2.8c.8 3.6 2.9 5.7 6.5 6.5-3.6.8-5.7 2.9-6.5 6.5-.8-3.6-2.9-5.7-6.5-6.5 3.6-.8 5.7-2.9 6.5-6.5z'/%3E%3Cpath d='M18 15c.35 1.25 1.05 1.95 2.3 2.3-1.25.35-1.95 1.05-2.3 2.3-.35-1.25-1.05-1.95-2.3-2.3 1.25-.35 1.95-1.05 2.3-2.3z'/%3E%3C/svg%3E");
}
.apple-value:nth-of-type(3)::before{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23466534' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9.5' cy='8.2' r='3.1'/%3E%3Cpath d='M3.6 19.4c0-3.3 2.6-5.4 5.9-5.4s5.9 2.1 5.9 5.4'/%3E%3Cpath d='M16.4 6.1a3.1 3.1 0 0 1 0 5.4'/%3E%3Cpath d='M17.9 14.3c1.9.6 3.5 2.3 3.5 5.1'/%3E%3C/svg%3E");
}
.apple-value h3{
  font-family:"Cormorant Garamond",Georgia,serif !important;
  font-size:1.45rem !important;font-weight:600;color:var(--apple-ink);
  margin:0 0 10px !important;line-height:1.2;
}
.apple-value h3::after{
  content:"";display:block;width:26px;height:2px;border-radius:2px;
  background:var(--apple-gold);margin:12px auto 0;
}
.apple-value p{
  font-size:.94rem;line-height:1.62;color:var(--apple-ink-soft);
  max-width:34ch;margin:12px auto 0;
}
@media (max-width:781px){
  .apple-value{padding:22px 10px !important;}
  .apple-value + .apple-value::after{
    left:12%;right:12%;top:0;bottom:auto;width:auto;height:1px;
  }
}

/* appletree-map 2026-09-15 -----------------------------------------------
   Both the homepage "Find the practice" band and the Find Us page had the
   container for a map and no map in it — .findus-map was an empty div and the
   homepage had a bare <!-- wp:html /--> block. Embedded from OpenStreetMap
   rather than Google: no API key, no billing account in Conor's name, and no
   consent banner, which matters on a fixed-fee handover.
   Pin: 54.16857, -6.33563 (cross-checked against two directory listings). */
.findus-map iframe,
.apple-findus iframe{
  width:100%;aspect-ratio:16/11;border:1px solid var(--apple-line);
  border-radius:3px;display:block;background:var(--apple-cream-2);
}
.findus-maplink{
  margin:10px 0 0;text-align:right;
  font-family:"Manrope",system-ui,sans-serif;font-size:.8rem;
}
.findus-maplink a{color:var(--apple-sage-deep);text-decoration:none;
  border-bottom:1px solid var(--apple-gold-soft);}
.findus-maplink a:hover{border-bottom-color:var(--apple-sage);}

/* appletree-reviews-hidden 2026-09-15 ------------------------------------
   The "Loved by Newry" band is three placeholder cards that say "Your real
   Google reviews will appear here". Honest, but it is a promise panel on the
   homepage of a site being shown to the client with an invoice, and it reads
   as unfinished. Hidden until real reviews exist.
   REMOVED 2026-10-10: the three placeholder cards were deleted from page 16
   outright, because the text was invisible to readers but still visible to a
   crawler. The hide-rule below is therefore gone too.
   TO BRING IT BACK: restore the block from the page 16 revision history
   (or app/sql/local.sql, 23 Sept dump) - no CSS change is needed. -------- */
/* (hide-rule removed - the block no longer exists) */

/* appletree-hero-texture 2026-09-15 --------------------------------------
   The hero footage is 720p and the SD-card originals are gone, so the job is
   to stop the eye reading "soft" rather than to pretend it's sharp.
   Three things do that, and they are cheap:
   1. GRAIN. A fine noise layer over the video. Compression mush and softness
      both read as "missing detail"; grain puts high-frequency texture back, and
      the eye reads it as film rather than as a bad upload. This is the single
      most effective trick available.
   2. VIGNETTE. Darkens the frame edges, where upscaling artefacts are worst
      and where there is nothing to look at anyway, and pulls the eye to the
      centre, which is the sharpest part of any lens.
   3. A very slow drift. Motion masks softness — a still frame invites study,
      a moving one doesn't. 44s per cycle, so it never reads as a zoom.
   The video is also now served at its NATIVE 1280x720 instead of a 1600x900
   upscale: pre-upscaling spent bitrate on interpolated pixels and made it
   softer than letting the browser scale at display time. ------------------ */
.apple-hero-video{z-index:0;}
.apple-hero::before{z-index:1;}
.apple-hero > *:not(.apple-hero-video){z-index:3 !important;}
/* animations.css targets `.apple-hero > *` and the inline script moves the
   <video> to be a direct child of the hero — so the entrance animation was
   landing on the video too, overwriting the drift transform AND lifting the
   video above the grain and the headline. Exclude it, and win the specificity
   fight explicitly. */
.apple-hero > video.apple-hero-video{
  z-index:0 !important;
  animation:apple-hero-drift 44s ease-in-out infinite alternate !important;
  opacity:1 !important;
}
@media (prefers-reduced-motion: reduce){
  .apple-hero > video.apple-hero-video{animation:none !important;}
}

.apple-hero::after{
  content:"" !important;
  position:absolute;inset:0;z-index:2;pointer-events:none;
  /* grain, then vignette. The SVG is generated here so there is no image to
     download and nothing else to keep in sync. */
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.42'/%3E%3C/svg%3E"),
    radial-gradient(ellipse 78% 68% at 50% 46%, transparent 42%, rgba(43,58,48,.10) 74%, rgba(43,58,48,.26) 100%);
  background-size:160px 160px, cover;
  background-repeat:repeat, no-repeat;
  opacity:.34;
  mix-blend-mode:multiply;
  /* undo the old preview-label styling that used to live on this pseudo */
  left:0;right:0;top:0;bottom:0;transform:none;white-space:normal;
  border:0;border-radius:0;padding:0;backdrop-filter:none;
}
@keyframes apple-hero-drift{
  from{transform:scale(1.02) translate3d(0,0,0);}
  to  {transform:scale(1.075) translate3d(-1.1%,-0.8%,0);}
}
.apple-hero-video{
  transform:scale(1.02);
  animation:apple-hero-drift 44s ease-in-out infinite alternate;
  will-change:transform;
}
@media (prefers-reduced-motion: reduce){
  .apple-hero-video{animation:none;transform:scale(1.02);}
}
@media (max-width:700px){
  .apple-hero::after{opacity:.30;}
}


/* appletree-split-align 2026-09-15 ---------------------------------------
   The two image+text split sections (Airflow, Refer a patient) had columns
   that did not agree with each other: in Airflow the photo started 144px
   below the heading and ended 143px above the button, so the button appeared
   to hang off the bottom of nothing. Same fault, smaller, in the referral
   band. The photo column now fills the row height and the text column centres
   against it, so the two sides start and finish together whichever side the
   photo is on. --------------------------------------------------------- */
.apple-spot .wp-block-columns,
.apple-referral .wp-block-columns{align-items:stretch !important;}
.apple-spot .wp-block-column,
.apple-referral .wp-block-column{
  display:flex;flex-direction:column;justify-content:center;
}
.apple-spot .wp-block-image,
.apple-referral .wp-block-image{
  margin:0 !important;flex:1 1 auto;display:flex;min-height:0;
}
.apple-spot .wp-block-image img,
.apple-referral .wp-block-image img{
  width:100%;height:100%;object-fit:cover;border-radius:4px;display:block;
}
/* Nothing inside the text column should add a trailing margin that reopens
   the gap the alignment just closed. */
.apple-spot .wp-block-column > *:last-child,
.apple-referral .wp-block-column > *:last-child{margin-bottom:0;}

/* appletree-fees-overlap 2026-09-15 --------------------------------------
   "Something doesn't feel right with the fee and referral section" — my
   fault. The fees card is meant to ride UP into the bottom of the green
   referral band; when the vertical rhythm was tightened I cut the band's
   bottom padding and the card's negative margin together, which left a 53px
   overlap on a 538px band. That reads as a mistake rather than a device.
   Restored to a deliberate overlap: the card sits ~100px into the green with
   a clear margin of band showing beneath it. ----------------------------- */
.apple-referral{padding-bottom:clamp(104px,11vw,150px) !important;}
.apple-fees-card{margin-top:clamp(-116px,-9.5vw,-84px) !important;}
/* Both split sections carry `is-vertically-aligned-center` on their columns,
   which sets align-self:center and beats the row's align-items:stretch — so
   the row stretched and the columns didn't. Override the column directly. */
.apple-spot .wp-block-column.is-vertically-aligned-center,
.apple-referral .wp-block-column.is-vertically-aligned-center{
  align-self:stretch !important;
}

/* appletree-tcard-stock 2026-09-15 ---------------------------------------
   Bioclear, Whitening and Cosmetic had no honest practice photography, so
   they ran as typographic cards while the other three carried photos — which
   read as a designed choice but left the grid lopsided. They now carry
   licensed stock (Pexels licence: free commercial use, no attribution
   required; ids recorded in each attachment's description in the media
   library). Chosen so no two say the same thing and none of them implies a
   before/after produced by this practice:
     Bioclear   - a clinician working in a modern surgery
     Whitening  - a shade guide held against a patient's teeth
     Cosmetic   - a digital smile design on screen
   Swap any of these for Conor's own case photography when it exists — the
   rules below are the only place the URLs appear. ------------------------ */
.apple-tcard[href*="bioclear"]{
  background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/09/stock-card-bioclear.jpg) !important;
  background-size:cover !important;background-position:center !important;
}
.apple-tcard[href$="/teeth-whitening/"]{
  background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/09/stock-card-whitening.jpg) !important;
  background-size:cover !important;background-position:center !important;
}
.apple-tcard[href$="/cosmetic-dentistry/"]{
  background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/09/stock-card-cosmetic.jpg) !important;
  background-size:cover !important;background-position:center !important;
}
/* All six cards are photographic again, so they share one shape. */
.apple-tcard{aspect-ratio:4/5 !important;align-items:flex-end !important;border:0 !important;}
.apple-tcard h3{color:#fff !important;}
.apple-tcard .meta{color:rgba(255,255,255,.82) !important;}

/* appletree-implants-card 2026-09-15 -------------------------------------
   The practice's own clinical-imaging photograph has moved to the "Refer a
   patient" band, where it belongs — it shows CBCT planning, which is exactly
   what a referring dentist sends a patient for, and it cannot read as stock.
   The Dental Implants card takes the stock clinic shot that vacated that
   band, so no image appears twice on the homepage. */
.apple-tcard[href*="dental-implants"]{
  background-image:linear-gradient(180deg,rgba(70,101,52,.14) 0%,rgba(70,101,52,.38) 44%,rgba(43,58,48,.9) 100%),url(/wp-content/uploads/2026/09/stock-referral-review.jpg) !important;
  background-size:cover !important;background-position:center !important;
}

/* appletree-tcard-flat REVERTED 2026-09-17 ------------------------------
   The block that stripped the photographs off the six homepage treatment
   cards has been removed. Fionn meant the individual treatment pages, not
   the homepage grid, so the cards go back to the photography set by
   appletree-treatment-photos, appletree-tcard-stock and
   appletree-implants-card above. Nothing replaces it here on purpose - the
   earlier rules are the single source of truth for those backgrounds
   again. -------------------------------------------------------------- */

/* appletree-voices 2026-09-15 --------------------------------------------
   The three talking-head videos (Conor, Katrina, Zara), shot by the practice
   and subtitled in-camera, sit in their own band between the team strip and
   the Airflow spotlight. This is the section that answers "the site feels a
   bit basic" - it is the only place on the page where the actual people
   speak. Native controls rather than a custom player so keyboard and screen
   reader users get the browser's own, and preload="metadata" so the page
   weight is three posters, not 27MB of video.

   The three source files have different aspect ratios (Conor 16:9, Katrina
   and Zara roughly 3:2), so the frame is fixed at 16:9 and object-fit:cover
   trims the sides of the two 3:2 clips. Both are centre-framed talking
   heads, so nothing important is lost. If a fourth video arrives in another
   ratio, check it against this frame before adding it. ------------------ */
.apple-voices{
  padding:clamp(36px,4vw,56px) 24px !important;
  background:var(--apple-cream-2);
  text-align:center;
}
.apple-voices h2{margin-top:0 !important;}
.apple-voices .lead{max-width:52ch;margin:0 auto 40px;color:var(--apple-ink-soft);}
.at-voices-grid{
  display:grid;gap:28px;
  grid-template-columns:repeat(3,1fr);
  max-width:1200px;margin:0 auto;
  text-align:left;
}
.at-voice{margin:0;}
.at-voice-v{
  display:block;width:100%;aspect-ratio:3/2;
  object-fit:cover;background:#1D2821;
  border-radius:3px;
  box-shadow:0 1px 2px rgba(43,58,48,.10),0 10px 26px -14px rgba(43,58,48,.45);
}
.at-voice-cap{
  display:block;padding:14px 2px 0;position:relative;
}
.at-voice-cap::before{
  content:"";display:block;width:28px;height:1px;
  background:var(--apple-gold);margin-bottom:10px;
}
.at-voice-cap .nm{
  display:block;font-family:"Cormorant Garamond",Georgia,serif;
  font-weight:600;font-size:1.28rem;line-height:1.2;color:var(--apple-ink);
}
.at-voice-cap .rl{
  display:block;margin-top:3px;font-family:Manrope,system-ui,sans-serif;
  font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--apple-ink-soft);
}
@media (max-width:900px){
  .at-voices-grid{grid-template-columns:1fr;max-width:560px;gap:32px;}
}
/* Katrina's video also sits in the About page's "20 years" section, where it
   is the piece of content that section was always missing. Same card, single
   column, capped so it doesn't outgrow the measure of the text around it. */
.at-voice-solo{max-width:720px;margin:1.9em auto 2.4em;}
.at-voice-solo .at-voice-cap{text-align:left;}

/* appletree-voice-ratio 2026-09-17 ---------------------------------------
   The frame was 16:9 while Katrina's and Zara's clips are 1616x1080 and
   1624x1080 - both a hair under 3:2. object-fit:cover was therefore scaling
   them to the 16:9 width and cropping top and bottom, which ate the bottom
   line of their burned-in subtitles. The frame is 3:2 above instead, so
   those two now sit in it almost exactly and nothing is lost. Conor's is a
   true 16:9, so he is trimmed at the sides instead - his framing is wide and
   his subtitles are centred, so neither he nor the text is touched. If a
   future clip is shot in another ratio, check it against this frame before
   it goes in. ---------------------------------------------------------- */

/* appletree-utilbar-links 2026-09-17 -------------------------------------
   Fionn's dad read the bold phone number in the top bar as "just a different
   font" rather than a link, and the two text links beside it carried no
   affordance at all. Weight is a poor signal on a 12.5px line over a dark
   ground; an underline is unambiguous. All three now underline, and the bold
   comes off the phone number. */
.site-top-header-wrap a,
.site-top-header-wrap .at-ub-phone{
  font-weight:400 !important;
  text-decoration:underline !important;
  text-decoration-thickness:1px !important;
  text-underline-offset:3px !important;
  text-decoration-color:rgba(255,255,255,.55) !important;
}
.site-top-header-wrap a:hover,
.site-top-header-wrap a:focus-visible{
  text-decoration-color:#fff !important;
}

/* appletree-footer-legal 2026-09-17 --------------------------------------
   The privacy policy, cookies, terms and complaints pages were all written
   and published but nothing on the site linked to them, so in practice they
   did not exist. A dental practice has to be able to point a patient at its
   privacy notice, so they get their own row above the copyright line. */
.apple-footer-legal{
  max-width:1200px;margin:0 auto;padding:22px 24px 0;
  display:flex;flex-wrap:wrap;gap:8px 26px;
  border-top:1px solid rgba(255,255,255,.12);
}
.apple-footer-legal a{
  font-family:Manrope,system-ui,sans-serif;
  font-size:.82rem;color:rgba(255,255,255,.72);
  text-decoration:underline;text-decoration-thickness:1px;
  text-underline-offset:3px;text-decoration-color:rgba(255,255,255,.3);
}
.apple-footer-legal a:hover,
.apple-footer-legal a:focus-visible{
  color:#fff;text-decoration-color:rgba(255,255,255,.75);
}
@media (max-width:600px){
  .apple-footer-legal{gap:8px 18px;padding-top:18px;}
}
/* appletree-href-selectors 2026-09-18 -----------------------------------
   The Whitening and Cosmetic card rules used an exact attribute match,
   [href="/treatments/teeth-whitening/"]. That works on WordPress, where the
   card href is a root-relative path, but Simply Static rewrites every href
   to an absolute URL on export - so on the static build the attribute value
   became https://<host>/treatments/teeth-whitening/ and the selector stopped
   matching. Both cards lost their photograph and fell back to the base sage
   gradient; Bioclear kept its one only because that rule happens to use a
   substring match.

   They are ends-with matches now, which hold for both the relative and the
   absolute form, and will keep holding when the site moves to its real
   domain. Bioclear is unaffected: its href ends /bioclear/, not
   /cosmetic-dentistry/, so the cosmetic rule cannot catch it.

   Rule of thumb for this file: never match an href exactly. ------------ */

/* appletree-launch-1022 2026-10-22 ---------------------------------------
   Launch-eve fixes.
   1. Forms: the Fluent Forms wrapper filled the full 1178px content box
      while every paragraph sits in the 760px centred reading column, so the
      referral form hung off the left edge. Centre the wrapper at 720px.
   2. Before/after galleries imported from the old site. The source files are
      only ~190-220px wide, so they are shown at (or below) their natural
      size and never stretched; pairs flow two-up where the column allows.
   3. Bioclear logo + certificates on Dr Joanne Redpath's profile. Bioclear's
      guide requires original proportions, no crop, no recolour: width only,
      height auto, no object-fit, no filters, no shadows on the artwork.
   4. Homepage voices band now holds Zara's video alone. -------------------- */
body:not(.home) .entry-content .fluentform{
  max-width:720px;margin-inline:auto;
}
body:not(.home) .entry-content .fluentform .frm-fluent-form{
  max-width:none;margin-left:0;margin-right:0;
}

.at-ba{max-width:760px;margin:2.4em auto 2.6em;}
.at-ba > h2,
.at-ba > .wp-block-group__inner-container > h2{margin-bottom:.4em;}
.at-ba-grid,
.at-ba-grid > .wp-block-group__inner-container{
  display:grid;gap:26px 32px;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
}
.at-ba-grid:has(> .wp-block-group__inner-container){display:block;}
.at-ba-item{margin:0 !important;}
.at-ba-item .at-ba-label{
  margin:0 0 8px !important;font-family:Manrope,system-ui,sans-serif;
  font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--apple-ink-soft);
}
.at-ba-pair{gap:10px !important;margin:0 !important;}
.at-ba-pair .wp-block-column{flex:1 1 0 !important;min-width:0;}
.at-ba-pair figure.wp-block-image{margin:0;}
.at-ba-pair img{
  display:block;width:100%;max-width:230px;height:auto;
  border-radius:3px;background:#1D2821;
}
.at-ba-pair figcaption{
  margin:6px 0 0 !important;font-size:.78rem;text-align:left;
  color:var(--apple-ink-soft);font-family:Manrope,system-ui,sans-serif;
}

.at-bioclear-badges{max-width:760px;margin:1.6em auto 2em;}
.at-bioclear-badges p{margin:0 0 14px;}
.at-bioclear-badges .at-bc-certs{display:flex;flex-wrap:wrap;gap:16px;margin:0 0 14px;}
.at-bioclear-badges .at-bc-certs p{margin:0;}
.at-bioclear-badges img{
  display:block;max-width:100%;height:auto;
  border-radius:0;box-shadow:none;filter:none;object-fit:initial;
}
.at-bioclear-badges .at-bc-logo{width:360px;}
.at-bioclear-badges .at-bc-cert{width:240px;}

.apple-voices .at-voice.at-voice-solo{max-width:760px !important;margin:0 auto !important;}

/* appletree-hero-compositing 2026-10-22 ----------------------------------
   Fionn saw a full-width band across the headline rows where the video
   showed through with no scrim or grain, out of step with the frame around
   it. Not reproducible on demand: it is a GPU compositing fault, and the hero
   was stacking three of the usual triggers on top of a playing video:
   a mix-blend-mode layer (the grain), a permanently promoted, transform-
   animated video (will-change), and transform-animated content layers.
   Plain alpha blending for the grain and no forced promotion on the video
   keeps the stack simple enough that Chrome composites it in one pass. The
   drift animation still runs; it just isn't pinned to its own layer. */
.apple-hero::after{mix-blend-mode:normal !important;opacity:.2 !important;}
.apple-hero > video.apple-hero-video,
.apple-hero-video{will-change:auto !important;backface-visibility:hidden;}
.apple-hero > *:not(.apple-hero-video){will-change:auto;}
@media (max-width:700px){ .apple-hero::after{opacity:.18 !important;} }

/* appletree-voice-block 2026-10-22 ---------------------------------------
   Zara's video is now a core Video block (not raw HTML) so Caroline can swap
   it with the editor's Replace button. Same look as the old .at-voice card:
   3:2 frame, gold rule, name in Cormorant, role in small caps. The caption is
   "<strong>Name</strong><br>Role", so the strong becomes the name line. */
.apple-voices .wp-block-video.at-voice{max-width:760px !important;margin:0 auto !important;text-align:left;}
.apple-voices .wp-block-video.at-voice video{
  display:block;width:100%;aspect-ratio:3/2;object-fit:cover;background:#1D2821;
  border-radius:3px;
  box-shadow:0 1px 2px rgba(43,58,48,.10),0 10px 26px -14px rgba(43,58,48,.45);
}
.apple-voices .wp-block-video.at-voice figcaption{
  margin:0 !important;padding:14px 2px 0;text-align:left;
  font-family:Manrope,system-ui,sans-serif;font-size:.74rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--apple-ink-soft);
}
.apple-voices .wp-block-video.at-voice figcaption::before{
  content:"";display:block;width:28px;height:1px;background:var(--apple-gold);margin-bottom:10px;
}
.apple-voices .wp-block-video.at-voice figcaption strong{
  display:block;margin-bottom:3px;font-family:"Cormorant Garamond",Georgia,serif;
  font-weight:600;font-size:1.28rem;line-height:1.2;letter-spacing:0;text-transform:none;
  color:var(--apple-ink);
}
.apple-voices .wp-block-video.at-voice figcaption br{display:none;}
