/* HeartWise "wow layer": a few signature touches shared by every page. Loaded last. Everything calm, fully off with prefers-reduced-motion. */
h1,h2,h3{text-wrap:balance}
p,li{text-wrap:pretty}

/* 1. scroll progress: a thin line that ends in a little heart */
.wow-progress{position:fixed;left:0;top:0;right:0;height:4px;z-index:120;pointer-events:none}
.wow-progress i{position:absolute;left:0;top:0;height:4px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,#5FA06A,#F2B632,#E4694A,#D4678A,#7A58A6)}
.wow-progress b{position:absolute;top:-1px;left:0;width:14px;height:14px;margin-left:-7px;opacity:0;transition:opacity .3s}
.wow-progress.on b{opacity:1}
.wow-progress b svg{width:14px;height:14px;display:block;animation:wow-beat 1.4s ease-in-out infinite}
@keyframes wow-beat{0%,100%{transform:scale(1)}50%{transform:scale(1.3)}}

/* 2. ambient floating hearts, leaves and sparkles behind every page top */
.wow-amb{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.wow-amb span{position:absolute;display:block;opacity:0;animation:wow-float var(--t,16s) ease-in-out var(--d,0s) infinite;will-change:transform}
.wow-amb svg{display:block;width:100%;height:100%}
@keyframes wow-float{0%{opacity:0;transform:translate3d(0,20px,0) rotate(0)}15%{opacity:var(--o,.55)}50%{transform:translate3d(var(--x,14px),-34px,0) rotate(var(--r,12deg))}85%{opacity:var(--o,.55)}100%{opacity:0;transform:translate3d(calc(var(--x,14px) * -1),-80px,0) rotate(calc(var(--r,12deg) * -1))}}
main>section:first-child{isolation:isolate}
main>section:first-child>.wrap{position:relative;z-index:2}

/* 3. hand-drawn underline that draws itself under the serif accent words */
h1 .serif,h2 .serif{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 C 14 2, 24 12, 36 6 S 58 2, 70 7 S 96 11, 118 4' fill='none' stroke='%23E4694A' stroke-opacity='.55' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 0 100%/0 .32em;padding-bottom:.12em;transition:background-size 1.1s cubic-bezier(.22,.8,.24,1) .25s}
h1 .serif.wow-in,h2 .serif.wow-in{background-size:100% .32em}
.dark h2 .serif,.wp-hero h1 .serif,.wp-journey h2 .serif{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 C 14 2, 24 12, 36 6 S 58 2, 70 7 S 96 11, 118 4' fill='none' stroke='%23F2B632' stroke-opacity='.7' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E")}

/* 4. soft 3D tilt on covers and picture cards (set by wow.js) */
.wow-tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateZ(0);transition:transform .25s ease-out;will-change:transform}
.wow-tilt.tilting{transition:transform .06s linear}
.wow-glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.38),transparent 55%);opacity:0;transition:opacity .25s}
.wow-tilt.tilting .wow-glare{opacity:1}

/* 5. little hearts burst from a main button */
.wow-burst{position:fixed;width:16px;height:16px;pointer-events:none;z-index:200;animation:wow-burst .9s cubic-bezier(.2,.8,.3,1) forwards}
@keyframes wow-burst{from{opacity:1;transform:translate(0,0) scale(.4)}to{opacity:0;transform:translate(var(--bx),var(--by)) scale(1.1) rotate(var(--br))}}

/* 6. the footer garden: seeds that grow into little trees with heart fruit */
.wow-garden{position:relative;height:170px;margin-bottom:-2px;background:linear-gradient(180deg,var(--paper) 0,var(--paper) 100%);overflow:hidden}
.wow-garden svg{position:absolute;left:0;bottom:0;width:100%;height:100%;display:block}
.wow-garden .pl{transform-box:fill-box;transform-origin:50% 100%;transform:scale(0);transition:transform 1.3s cubic-bezier(.3,1.4,.4,1) var(--d,0s)}
.wow-garden.in .pl{transform:scale(1)}
.wow-garden .hr{transform-box:fill-box;transform-origin:50% 50%;animation:wow-beat 2.6s ease-in-out infinite;animation-delay:var(--d,0s)}
@media (max-width:640px){.wow-garden{height:120px}}

@media (prefers-reduced-motion:reduce){
  .wow-amb span{animation:none;opacity:.35}
  h1 .serif,h2 .serif{background-size:100% .32em;transition:none}
  .wow-tilt{transform:none!important;transition:none}
  .wow-garden .pl{transform:scale(1);transition:none}.wow-garden .hr,.wow-progress b svg{animation:none}
  .wow-burst{display:none}
}

/* library: a slowly drifting shelf of every cover */
.lib-marq{margin:34px -24px 0;display:grid;gap:14px;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.lib-row{overflow:hidden}
.lib-track{display:flex;gap:14px;width:max-content;animation:lib-slide 90s linear infinite}
.lib-row.rev .lib-track{animation-direction:reverse;animation-duration:110s}
.lib-marq:hover .lib-track{animation-play-state:paused}
.lib-track img{height:150px;width:auto;border-radius:3px 8px 8px 3px;box-shadow:-2px 4px 0 -1px rgba(0,0,0,.08),0 10px 22px rgba(43,33,64,.22);flex:none}
@keyframes lib-slide{to{transform:translateX(-50%)}}
@media (max-width:640px){.lib-track img{height:110px}.lib-marq{margin:24px -16px 0}}
@media (prefers-reduced-motion:reduce){.lib-track{animation:none}.lib-row{overflow-x:auto}}

/* the HeartWise name stays one word even if a server re-indents the page code */
.brand>span{display:inline-flex;align-items:baseline}

/* ---- final audit fixes (lead) ---- */
/* decor never paints over text */
.wow-amb{z-index:-1}
.wow-amb span{--o:.42}
/* progress heart sits fully inside the viewport, hanging under the bar */
.wow-progress b{top:3px}
/* underline gold on dark headings (class added by wow.js) */
h1 .serif.wow-lt,h2 .serif.wow-lt{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 C 14 2, 24 12, 36 6 S 58 2, 70 7 S 96 11, 118 4' fill='none' stroke='%23F4C26B' stroke-opacity='.75' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E")}
/* footer garden keeps several trees on phones */
.wow-garden svg{min-width:960px;left:50%;transform:translateX(-50%)}
/* contrast: pillar tags, home programme tags and text over pictures */
.pillar .tag{background:color-mix(in srgb,var(--pc) 58%,#14203a);font-size:.8rem}
.prog .tagp:not([style]){background:var(--coral-btn)}
.prog::before{background:linear-gradient(180deg,rgba(20,14,36,0) 18%,rgba(20,14,36,.9) 72%,rgba(20,14,36,.95) 100%)}
.prog .in{text-shadow:0 1px 14px rgba(20,12,40,.6)}
/* readable microcopy */
.eyebrow{font-size:max(.8rem,12.5px)}
@media (max-width:640px){.ftr a{padding:11px 0}}
.crumbs a{display:inline-block;padding:12px 2px;margin:-12px 0}

.h3like{font-size:1.35rem}
