/* Wizard Training — section styles for Elementor.
   Loaded by the Wizard Motion plugin after wizard.css. */
/* Layout concept: an exhibition walk — alternating dark rooms and porcelain
   galleries, asymmetric 12-col compositions, one dominant motion per view. */
html { scroll-padding-top: 5rem; }
body.wz-site { margin: 0; background: var(--wz-obsidian); color: var(--wz-porcelain); font: 400 var(--wz-fs-body)/1.6 var(--wz-sans); -webkit-font-smoothing: antialiased; }
html.wz-menu-open { overflow: hidden; }
a { color: inherit; }
img, svg, canvas { max-width: 100%; }
.wrap { width: 100%; max-width: var(--wz-max); margin-inline: auto; padding-inline: var(--wz-gutter); box-sizing: border-box; }
section, .band { position: relative; padding-block: var(--wz-section); }
* { box-sizing: border-box; }
p { margin: 0; }
h1, h2, h3, h4 { margin: 0; }
.stack-s > * + * { margin-top: .75rem; }
.stack-m > * + * { margin-top: 1.5rem; }
.stack-l > * + * { margin-top: 2.5rem; }
.grid12 { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(1rem, 2.2vw, 2rem); }
.btn-row { display: flex; flex-wrap: wrap; gap: .75rem; }
.sec-head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: end; margin-bottom: clamp(2.5rem, 6vw, 5rem); }
.sec-head > .wz-label { grid-column: 1 / span 3; align-self: start; padding-top: .9rem; }
.sec-head > .wz-h2 { grid-column: 4 / span 8; }
.sec-head > .wz-lead { grid-column: 4 / span 6; margin-top: 1.5rem; }
@media (max-width: 900px) {
  .sec-head > * { grid-column: 1 / -1 !important; }
  .sec-head > .wz-label { padding-top: 0; margin-bottom: 1.25rem; }
}

/* ---------- Header ---------- */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 50; padding-top: env(safe-area-inset-top, 0px); transition: background-color var(--wz-t-panel) var(--wz-ease-out), color var(--wz-t-panel) var(--wz-ease-out), border-color var(--wz-t-panel); border-bottom: 1px solid transparent; color: var(--wz-porcelain); }
.site-header[data-tone="light"], .site-header[data-tone="sage"] { color: var(--wz-obsidian); }
.site-header.is-compact[data-tone="dark"], .site-header.is-compact[data-tone="forest"] { background: rgba(17,19,16,.72); border-color: rgba(245,242,234,.1); backdrop-filter: blur(14px) saturate(1.2); -webkit-backdrop-filter: blur(14px) saturate(1.2); }
.site-header.is-compact[data-tone="light"] { background: rgba(245,242,234,.82); border-color: rgba(17,19,16,.1); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.site-header.is-compact[data-tone="sage"] { background: rgba(214,223,207,.85); border-color: rgba(17,19,16,.1); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.hdr-inner { display: flex; align-items: center; gap: 2rem; height: 5.25rem; transition: height var(--wz-t-panel) var(--wz-ease-out); }
.site-header.is-compact .hdr-inner { height: 4rem; }
.brand { display: inline-flex; align-items: center; gap: .7rem; text-decoration: none; margin-right: auto; }
.brand svg { width: 34px; height: 22px; color: var(--wz-gold); flex: none; }
.site-header[data-tone="light"] .brand svg, .site-header[data-tone="sage"] .brand svg { color: var(--wz-gold-ink); }
.brand span { font: 400 1.3rem/1 var(--wz-serif); letter-spacing: -.01em; white-space: nowrap; }
.brand em { font-style: italic; }
.nav { display: flex; gap: 2rem; list-style: none; margin: 0; padding: 0; font: 500 .9rem/1 var(--wz-sans); }
.hdr-actions { display: flex; gap: .75rem; align-items: center; }
.site-header .wz-btn { min-height: 2.6rem; font-size: .85rem; }
.site-header .wz-btn .wz-btn__inner { padding: 0 1.1rem; }
.site-header[data-tone="dark"] .wz-btn, .site-header[data-tone="forest"] .wz-btn { --btn-bg: var(--wz-porcelain); --btn-fg: var(--wz-obsidian); --btn-hover: var(--wz-gold); }
.site-header[data-tone="light"] .wz-btn, .site-header[data-tone="sage"] .wz-btn { --btn-bg: var(--wz-obsidian); --btn-fg: var(--wz-porcelain); --btn-hover: var(--wz-forest); }
.site-header[data-tone="light"] .wz-btn:hover, .site-header[data-tone="sage"] .wz-btn:hover { color: var(--wz-porcelain); }
.site-header[data-tone="dark"] .wz-btn:hover, .site-header[data-tone="forest"] .wz-btn:hover { color: var(--wz-obsidian); }
.site-header :focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.menu-btn { display: inline-flex; align-items: center; gap: .7rem; min-height: 2.6rem; padding: 0 .4rem 0 .9rem; background: none; border: 1px solid currentColor; border-color: color-mix(in srgb, currentColor 30%, transparent); color: inherit; font: 500 .85rem/1 var(--wz-sans); border-radius: var(--wz-radius); cursor: pointer; transition: border-color var(--wz-t-fast); }
.menu-btn:hover { border-color: currentColor; }
.menu-btn__icon { position: relative; width: 1.6rem; height: 1.6rem; }
.menu-btn__icon::before, .menu-btn__icon::after { content: ""; position: absolute; left: 20%; right: 20%; height: 1px; background: currentColor; transition: transform var(--wz-t-panel) var(--wz-ease-out), top var(--wz-t-panel) var(--wz-ease-out); }
.menu-btn__icon::before { top: 40%; } .menu-btn__icon::after { top: 60%; }
.menu-btn[aria-expanded="true"] .menu-btn__icon::before { top: 50%; transform: rotate(45deg); }
.menu-btn[aria-expanded="true"] .menu-btn__icon::after { top: 50%; transform: rotate(-45deg); }
@media (max-width: 1023px) { .nav, .hdr-cta { display: none !important; } }
html.wz-menu-open .site-header { color: var(--wz-porcelain) !important; background: transparent !important; border-color: transparent !important; backdrop-filter: none !important; }
html.wz-menu-open .site-header .brand svg { color: var(--wz-gold) !important; }

/* ---------- Expanded menu ---------- */
.wz-menu { position: fixed; inset: 0; z-index: 40; overflow-y: auto; padding-top: calc(6rem + env(safe-area-inset-top, 0px)); padding-bottom: calc(2rem + env(safe-area-inset-bottom, 0px)); }
.menu-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 4fr) minmax(0, 3fr); gap: clamp(2rem, 5vw, 5rem); padding-block: 3rem 2rem; position: relative; z-index: 2; }
.menu-primary { list-style: none; margin: 0; padding: 0; display: grid; gap: .25rem; }
.menu-primary a { display: flex; align-items: baseline; gap: 1.25rem; font: 400 clamp(2.2rem, 4.6vw, 4.25rem)/1.1 var(--wz-serif); letter-spacing: -.02em; text-decoration: none; padding-block: .2rem; }
.menu-primary a .wz-num { width: 1.6rem; }
.menu-primary a span:last-child { background: linear-gradient(var(--wz-gold), var(--wz-gold)) left 92% / 0 1px no-repeat; transition: background-size 420ms var(--wz-ease-out), color 200ms; }
.menu-primary a:hover span:last-child, .menu-primary a:focus-visible span:last-child { background-size: 100% 1px; font-style: italic; }
.menu-group h3 { margin-bottom: 1rem; }
.menu-group ul { list-style: none; margin: 0 0 2.25rem; padding: 0; display: grid; gap: .6rem; font-size: .98rem; color: var(--wz-porcelain-soft); }
.menu-group a { text-decoration: none; }
.menu-feature { border: 1px solid var(--line); padding: 1.5rem; display: grid; gap: 1rem; align-content: start; }
.menu-feature .wz-constellation { color: var(--wz-gold); aspect-ratio: 3/2; }
.menu-foot { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; padding-top: 1.5rem; border-top: 1px solid var(--line); color: var(--wz-porcelain-soft); font-size: .85rem; position: relative; z-index: 2; }
@media (max-width: 900px) { .menu-grid { grid-template-columns: 1fr; } .menu-feature { display: none; } }


/* ---------- Hero ---------- */
.hero { min-height: min(100svh, 1040px); display: flex; align-items: flex-end; padding-block: 8rem clamp(3rem, 7vw, 5.5rem); overflow: hidden; }
.hero .wz-ribbon { left: 46%; right: -8%; top: 0; bottom: 22%; }
.hero .wz-glow { right: -20vmax; top: -18vmax; }
.hero .wz-contours svg { opacity: .09; }
.hero-content { position: relative; z-index: 2; width: 100%; }
.hero-plats { display: flex; flex-wrap: wrap; align-items: center; gap: .9rem 1.25rem; margin-bottom: 2rem; }
.hero-label { display: flex; align-items: center; gap: 1rem; margin: 0; }
.plat-pair { display: inline-flex; align-items: center; gap: .6rem; }
.plat-pair .plus { color: var(--wz-gold); font: 400 1.1rem/1 var(--wz-serif); }
.hero-label::before { content: ""; width: 2.5rem; height: 1px; background: var(--wz-gold); }
.hero h1 { max-width: none; }
.hero h1 .wz-line:last-child .wz-line__inner { font-style: italic; color: var(--wz-sage); }
.hero-bottom { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 5fr) minmax(0, 2fr); gap: 2rem; align-items: end; margin-top: clamp(2rem, 4vw, 3.5rem); }
.hero-bottom .wz-lead { max-width: 30em; }
.hero-cue { justify-self: end; }
@media (max-width: 900px) {
  .hero { align-items: flex-end; min-height: 92svh; }
  .hero .wz-ribbon { left: -35%; right: -45%; top: 2%; bottom: 42%; opacity: .95; }
  .hero-bottom { grid-template-columns: 1fr; }
  .hero-cue { display: none; }
}

/* ---------- Pathways ---------- */
.paths { border-top: 1px solid var(--line); list-style: none; margin: 0; padding: 0; }
.path-row { border-bottom: 1px solid var(--line); }
.path-link { position: relative; display: grid; grid-template-columns: 5rem minmax(0, 6fr) minmax(0, 4fr) 4rem; gap: 2rem; align-items: center; padding: clamp(1.75rem, 3.5vw, 3rem) 1rem; text-decoration: none; isolation: isolate; }
.path-link::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--wz-sage); opacity: 0; transition: opacity 500ms var(--wz-ease-out); }
.path-link::after { content: ""; position: absolute; left: 0; bottom: -1px; height: 1px; width: 100%; background: var(--wz-forest); transform: scaleX(0); transform-origin: left; transition: transform 700ms var(--wz-ease-out); }
.path-link:hover::before, .path-link:focus-visible::before { opacity: .55; }
.path-link:hover::after, .path-link:focus-visible::after { transform: scaleX(1); }
.path-link .wz-num { font-size: 1.15rem; }
.path-title { font: 400 clamp(2rem, 4.4vw, 4rem)/1 var(--wz-serif); letter-spacing: -.02em; }
.path-title em { font-style: italic; }
.path-sub { margin-top: .75rem; color: var(--wz-ink-soft); font-size: 1.05rem; }
.path-art { height: clamp(5rem, 9vw, 8rem); color: var(--wz-forest); }
.path-art svg { width: 100%; height: 100%; overflow: visible; }
.path-arrow { justify-self: end; width: 3rem; height: 3rem; border: 1px solid var(--line); border-radius: 50%; display: grid; place-items: center; transition: transform 500ms var(--wz-ease-out), background-color 300ms, color 300ms, border-color 300ms; }
.path-link:hover .path-arrow, .path-link:focus-visible .path-arrow { transform: translateX(.5rem); background: var(--wz-obsidian); color: var(--wz-porcelain); border-color: var(--wz-obsidian); }
/* mini-art states */
.pa-move { transition: transform 900ms var(--wz-ease-out), opacity 600ms; transform-box: fill-box; transform-origin: center; }
.pa-dash { stroke-dasharray: 4 6; transition: stroke-dashoffset 1200ms var(--wz-ease-out); }
.path-link:hover .pa-dash, .path-link:focus-visible .pa-dash { stroke-dashoffset: -40; }
.path-link:hover .pa-you-dot, .path-link:focus-visible .pa-you-dot { transform: translateX(150px); }
.path-link:hover .pa-team-n, .path-link:focus-visible .pa-team-n { transform: translate(var(--dx, 0), var(--dy, 0)); }
.path-link:hover .pa-team-l, .path-link:focus-visible .pa-team-l { opacity: 1; }
.pa-team-l { opacity: .25; transition: opacity 600ms; }
.path-link:hover .pa-biz-b, .path-link:focus-visible .pa-biz-b { transform: none; opacity: 1; }
.pa-biz-b { opacity: .55; }
@media (max-width: 900px) {
  .path-link { grid-template-columns: 2.5rem minmax(0, 1fr) 3rem; gap: 1rem 1rem; padding-inline: .25rem; }
  .path-art { grid-column: 2 / 3; grid-row: 2; height: 4.5rem; }
  .path-arrow { grid-row: 1; grid-column: 3; width: 2.5rem; height: 2.5rem; }
}

/* ---------- Showcase ---------- */
.tablist { display: flex; flex-wrap: wrap; gap: 0; border-bottom: 1px solid var(--line); margin-bottom: 2.5rem; }
.tab { position: relative; background: none; border: 0; padding: 1rem 1.25rem 1.1rem; font: 500 .95rem/1 var(--wz-sans); color: var(--wz-ink-soft); cursor: pointer; transition: color var(--wz-t-fast); }
.tab::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--wz-forest); transform: scaleX(0); transition: transform 380ms var(--wz-ease-out); }
.tab:hover { color: var(--wz-ink); }
.tab[aria-selected="true"] { color: var(--wz-ink); }
.tab[aria-selected="true"]::after { transform: scaleX(1); }
.tab .wz-num { margin-right: .5rem; }
.stage { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 2fr) minmax(0, 5fr); align-items: center; gap: 0; }
.doc { background: var(--wz-porcelain); color: var(--wz-ink); border: 1px solid rgba(17,19,16,.12); box-shadow: 0 1px 0 rgba(17,19,16,.04), 0 30px 60px -30px rgba(24,63,54,.35); padding: clamp(1.25rem, 2.4vw, 2rem); position: relative; min-width: 0; }
.doc--in { background: transparent; box-shadow: none; border-style: dashed; border-color: rgba(17,19,16,.3); }
.doc-head { display: flex; justify-content: space-between; gap: 1rem; padding-bottom: 1rem; margin-bottom: 1.25rem; border-bottom: 1px solid rgba(17,19,16,.12); }
.doc-head .wz-label { color: var(--wz-forest); }
.doc h4 { font: 400 1.6rem/1.1 var(--wz-serif); margin-bottom: 1rem; }
.doc p, .doc li { font-size: .92rem; line-height: 1.55; color: var(--wz-ink-soft); }
.doc ul { margin: 0; padding-left: 1.1rem; display: grid; gap: .3rem; }
.doc .note-line { font-family: var(--wz-sans); }
.out-grid { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: .65rem 1rem; }
.out-grid dt { font: 500 .7rem/1.6 var(--wz-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--wz-forest); }
.out-grid dd { margin: 0; font-size: .92rem; color: var(--wz-ink); }
.timeline-bar { display: grid; grid-template-columns: repeat(6, 1fr); gap: 3px; margin-top: .35rem; }
.timeline-bar span { height: .5rem; background: var(--wz-sage); }
.timeline-bar span.on { background: var(--wz-forest); }
.connector { height: 220px; color: var(--wz-forest); }
.connector svg { width: 100%; height: 100%; overflow: visible; }
.matrix { position: relative; aspect-ratio: 4/3; border-left: 1px solid rgba(17,19,16,.35); border-bottom: 1px solid rgba(17,19,16,.35); margin: .25rem 0 1.6rem 1.25rem; background: linear-gradient(rgba(17,19,16,.07), rgba(17,19,16,.07)) 50% 0 / 1px 100% no-repeat, linear-gradient(rgba(17,19,16,.07), rgba(17,19,16,.07)) 0 50% / 100% 1px no-repeat; }
.matrix .ax { position: absolute; font: 500 .62rem/1 var(--wz-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--wz-ink-soft); }
.matrix .ax-x { bottom: -1.25rem; right: 0; } .matrix .ax-y { top: 0; left: -1.25rem; writing-mode: vertical-rl; transform: rotate(180deg); }
.matrix .q { position: absolute; font: 500 .62rem/1 var(--wz-sans); letter-spacing: .12em; text-transform: uppercase; color: var(--wz-forest); }
.matrix .pt { position: absolute; transform: translate(-50%, 50%); display: flex; align-items: center; gap: .4rem; font-size: .75rem; color: var(--wz-ink); white-space: nowrap; }
.matrix .pt i { width: .7rem; height: .7rem; border-radius: 50%; background: var(--wz-forest); flex: none; }
.matrix .pt.alt i { background: transparent; border: 1px solid var(--wz-forest); }
.illus { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; align-items: center; margin-top: 1.75rem; font-size: .85rem; color: var(--wz-ink-soft); }
.illus .wz-label { color: var(--wz-forest); border: 1px solid var(--wz-forest); padding: .4rem .6rem; }
@media (max-width: 900px) {
  .stage { grid-template-columns: 1fr; }
  .connector { height: 70px; transform: rotate(90deg); width: 70px; justify-self: center; margin-block: .5rem; }
  .tab { padding-inline: .85rem; }
  .out-grid { grid-template-columns: 1fr; gap: .2rem; }
  .out-grid dd { margin-bottom: .6rem; }
}

/* ---------- Courses ---------- */
.filters { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: 3rem; }
.chip { display: inline-flex; align-items: center; gap: .45rem; background: transparent; border: 1px solid var(--line); color: var(--fg); min-height: 2.6rem; padding: 0 1.1rem; font: 500 .88rem/1 var(--wz-sans); border-radius: 99px; cursor: pointer; transition: background-color var(--wz-t-fast), color var(--wz-t-fast), border-color var(--wz-t-fast); }
.chip:hover { border-color: var(--fg); }
.chip[aria-pressed="true"] { background: var(--fg); color: var(--wz-porcelain); border-color: var(--fg); }
.filters .count { margin-left: auto; font-size: .85rem; color: var(--fg-soft); font-variant-numeric: tabular-nums; }
.courses { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 3rem) clamp(1.25rem, 2.4vw, 2.25rem); align-items: start; }
.course { display: grid; gap: 1.1rem; text-decoration: none; color: var(--wz-ink); }
.course.is-offset { margin-top: clamp(0rem, 6vw, 5rem); }
.course-art { position: relative; aspect-ratio: 4/5; overflow: hidden; }
.course-art svg { position: absolute; inset: 0; width: 100%; height: 100%; transition: transform 1100ms var(--wz-ease-out); }
.course-art .ca-plat { position: absolute; left: 1rem; top: 1rem; z-index: 1; font: 500 .68rem/1 var(--wz-sans); letter-spacing: .18em; text-transform: uppercase; padding: .45rem .6rem; background: rgba(17,19,16,.55); color: var(--wz-porcelain); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.course:hover .course-art svg, .course:focus-within .course-art svg { transform: scale(1.06) rotate(-1deg); }
.art-chatgpt { background: var(--wz-forest); color: var(--wz-sage); }
.art-claude { background: var(--wz-obsidian); color: var(--wz-gold); }
.art-cross { background: #1E2A24; color: var(--wz-porcelain); }
.course h3 { font: 400 clamp(1.45rem, 2vw, 1.85rem)/1.1 var(--wz-serif); letter-spacing: -.01em; }
.course .outcome { color: var(--wz-ink-soft); font-size: .98rem; }
.meta { display: flex; flex-wrap: wrap; gap: .4rem 1.25rem; font-size: .82rem; color: var(--wz-ink-soft); font-variant-numeric: tabular-nums; }
.meta b { font-weight: 500; color: var(--wz-ink); }
.course-actions { display: flex; flex-wrap: wrap; gap: 1.5rem; font: 500 .9rem/1 var(--wz-sans); padding-top: .25rem; }
::view-transition-group(*) { animation-duration: 520ms; animation-timing-function: cubic-bezier(.22,1,.36,1); }
@media (max-width: 1023px) { .courses { grid-template-columns: repeat(2, minmax(0, 1fr)); } .course.is-offset { margin-top: 0; } }
@media (max-width: 640px) { .courses { grid-template-columns: 1fr; } .course-art { aspect-ratio: 16/10; } .filters .count { width: 100%; margin-left: 0; } }

/* ---------- Services journey ---------- */
.services-band { overflow: hidden; }
.services-band .wz-contours svg { opacity: .07; }
.journey { position: relative; display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: 2rem; }
.wz-journey-track { position: absolute; left: 0; top: 0; bottom: 0; width: 25%; }
.wz-journey-track svg { width: 100%; height: 100%; overflow: visible; }
.wz-draw-base { stroke: rgba(245,242,234,.14); stroke-width: 1; fill: none; }
.wz-draw { stroke: var(--wz-gold); stroke-width: 1.5; fill: none; }
.stages { grid-column: 2; list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(3rem, 7vw, 6rem); }
.wz-stage { position: relative; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 4fr); gap: 2rem; align-items: start; }
.stage-node { position: absolute; left: calc(-100% / 3 - 2rem + 12%); top: .55rem; width: 1rem; height: 1rem; }
.stage-node::before { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 1px solid var(--wz-gold); background: var(--wz-forest-deep); transition: background-color 600ms, transform 600ms var(--wz-ease-out); }
.wz-stage.is-active .stage-node::before { background: var(--wz-gold); transform: scale(1.25); }
.stage-copy h3 { font: 400 clamp(2rem, 4vw, 3.5rem)/1 var(--wz-serif); letter-spacing: -.02em; margin: .5rem 0 1rem; }
.stage-copy p { color: var(--wz-porcelain-soft); max-width: 30em; }
.deliv { border: 1px solid rgba(245,242,234,.16); padding: 1.25rem; background: rgba(245,242,234,.03); opacity: .5; transform: translateY(10px); transition: opacity 800ms var(--wz-ease-out), transform 800ms var(--wz-ease-out), border-color 800ms; }
.wz-stage.is-active .deliv { opacity: 1; transform: none; border-color: rgba(190,164,119,.45); }
.deliv .wz-label { display: block; margin-bottom: .9rem; }
.deliv table { width: 100%; border-collapse: collapse; font-size: .85rem; font-variant-numeric: tabular-nums; }
.deliv td, .deliv th { text-align: left; padding: .45rem 0; border-bottom: 1px solid rgba(245,242,234,.1); font-weight: 400; color: var(--wz-porcelain-soft); }
.deliv th { color: var(--wz-porcelain); font-weight: 500; }
.bars { display: grid; gap: .6rem; font-size: .82rem; }
.bars div { display: grid; grid-template-columns: 5.5rem 1fr; gap: .75rem; align-items: center; color: var(--wz-porcelain-soft); }
.bars i { display: block; height: .4rem; background: rgba(245,242,234,.12); position: relative; }
.bars i::after { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--v); background: var(--wz-sage); transform-origin: left; transform: scaleX(0); transition: transform 1100ms var(--wz-ease-out) 200ms; }
.wz-stage.is-active .bars i::after { transform: scaleX(1); }
.journey-cta { margin-top: clamp(3rem, 7vw, 6rem); }
@media (max-width: 900px) {
  .journey { grid-template-columns: 2.5rem minmax(0, 1fr); gap: 1rem; }
  .wz-journey-track { width: 2.5rem; }
  .wz-stage { grid-template-columns: 1fr; gap: 1.25rem; }
  .stage-node { left: calc(-2.5rem - 1rem + .75rem); }
}

/* ---------- Gallery ---------- */
.gallery { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(1.25rem, 2.4vw, 2.25rem); }
.g-item { position: relative; display: block; width: 100%; text-align: left; background: none; border: 0; padding: 0; cursor: pointer; color: var(--wz-ink); font: inherit; }
.g-item:nth-child(1) { grid-column: 1 / span 7; }
.g-item:nth-child(2) { grid-column: 9 / span 4; margin-top: 6rem; }
.g-item:nth-child(3) { grid-column: 2 / span 4; margin-top: -2rem; }
.g-item:nth-child(4) { grid-column: 7 / span 6; margin-top: 3rem; }
.sheet-stack { position: relative; padding: 1.25rem 1.25rem 0 0; }
.sheet-stack::before { content: ""; position: absolute; inset: 0 0 1.25rem 1.25rem; background: var(--wz-sage); transition: transform 700ms var(--wz-ease-out); }
.g-item:hover .sheet-stack::before, .g-item:focus-visible .sheet-stack::before { transform: translate(.6rem, -.6rem); }
.sheet { position: relative; background: #FBF9F4; border: 1px solid rgba(17,19,16,.1); box-shadow: 0 30px 50px -35px rgba(17,19,16,.45); padding: clamp(1.25rem, 2.2vw, 2rem); transition: transform 700ms var(--wz-ease-out), box-shadow 700ms; }
.g-item:hover .sheet, .g-item:focus-visible .sheet { transform: translateY(-.4rem); box-shadow: 0 40px 60px -35px rgba(17,19,16,.55); }
.sheet .wz-label { color: var(--wz-forest); }
.sheet h4 { font: 400 clamp(1.4rem, 2.2vw, 2rem)/1.05 var(--wz-serif); margin: .75rem 0 1rem; }
.sheet .ln { height: .45rem; background: rgba(17,19,16,.1); margin-top: .5rem; }
.sheet .ln.s { width: 62%; } .sheet .ln.m { width: 82%; }
.sheet .row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 1rem; }
.sheet .box { border: 1px solid rgba(17,19,16,.12); padding: .75rem; font-size: .75rem; color: var(--wz-ink-soft); }
.sheet .box b { display: block; font-weight: 500; color: var(--wz-ink); margin-bottom: .35rem; }
.flow { display: flex; align-items: center; gap: .35rem; margin-top: 1rem; flex-wrap: wrap; }
.flow span { font-size: .72rem; padding: .35rem .5rem; border: 1px solid rgba(24,63,54,.35); color: var(--wz-forest); }
.flow i { width: 1rem; height: 1px; background: rgba(24,63,54,.5); }
.g-caption { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1rem; font-size: .9rem; }
.g-caption span:last-child { color: var(--wz-gold-ink); font-weight: 500; }
@media (max-width: 900px) { .g-item { grid-column: 1 / -1 !important; margin-top: 0 !important; } }

/* Dialog */
.wz-dialog { width: min(52rem, calc(100% - 2rem)); max-height: calc(100svh - 3rem); padding: 0; border: 0; background: var(--wz-porcelain); color: var(--wz-ink); border-radius: var(--wz-radius); overflow: auto; }
.wz-dialog::backdrop { background: rgba(17,19,16,.72); backdrop-filter: blur(4px); }
.dlg-inner { padding: clamp(1.5rem, 4vw, 3rem); display: grid; gap: 1.5rem; }
.dlg-top { display: flex; justify-content: space-between; align-items: start; gap: 1rem; }
.dlg-close { width: 2.75rem; height: 2.75rem; border-radius: 50%; border: 1px solid rgba(17,19,16,.2); background: none; cursor: pointer; font-size: 1.1rem; color: var(--wz-ink); flex: none; }
.dlg-close:hover { background: var(--wz-obsidian); color: var(--wz-porcelain); }
.dlg-cols { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 2rem; }
.dlg-cols h3 { font: 500 .72rem/1.4 var(--wz-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--wz-gold-ink); margin-bottom: .75rem; }
.dlg-cols ul { margin: 0; padding-left: 1.1rem; display: grid; gap: .4rem; color: var(--wz-ink-soft); }
@media (max-width: 700px) { .dlg-cols { grid-template-columns: 1fr; } }

/* ---------- About ---------- */
.about-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2rem, 7vw, 7rem); }
.principles { margin: 0; display: grid; gap: 0; border-top: 1px solid var(--line); }
.principles div { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 1.5rem; padding-block: 1.5rem; border-bottom: 1px solid var(--line); }
.principles dt { font: 400 1.45rem/1.15 var(--wz-serif); }
.principles dd { margin: 0; color: var(--wz-ink-soft); }
.photo-note { margin-top: 2rem; aspect-ratio: 4/3; border: 1px dashed rgba(17,19,16,.3); display: grid; place-items: center; text-align: center; padding: 1.5rem; color: var(--wz-ink-soft); font-size: .85rem; position: relative; overflow: hidden; }
.photo-note .wz-contours svg { opacity: .18; animation: none; }
.photo-note p { position: relative; max-width: 22em; }
@media (max-width: 900px) { .about-grid, .principles div { grid-template-columns: 1fr; } .principles div { gap: .4rem; } }

/* ---------- Final + footer ---------- */
.final { text-align: left; overflow: hidden; padding-block: clamp(7rem, 16vw, 14rem); }
.final h2 { font-size: clamp(3rem, 9vw, 9.5rem); line-height: .96; letter-spacing: -.03em; }
.final h2 em { color: var(--wz-gold); }
.final .wz-contours svg { opacity: .16; }
.final-row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 2rem; margin-top: 3rem; position: relative; z-index: 2; }
.site-footer { padding-block: 4.5rem 2.5rem; border-top: 1px solid rgba(245,242,234,.1); }
.foot-grid { display: grid; grid-template-columns: minmax(0, 4fr) repeat(3, minmax(0, 2fr)); gap: 2rem; }
.foot-grid h3 { margin-bottom: 1.1rem; }
.foot-grid ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; color: var(--wz-porcelain-soft); font-size: .95rem; }
.foot-grid a { text-decoration: none; }
.foot-brand p { margin-top: 1.25rem; max-width: 26em; color: var(--wz-porcelain-soft); }
.foot-legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-top: 4rem; padding-top: 1.5rem; border-top: 1px solid rgba(245,242,234,.1); color: var(--wz-porcelain-soft); font-size: .8rem; }
.foot-legal p { max-width: 60em; }
@media (max-width: 900px) { .foot-grid { grid-template-columns: 1fr 1fr; } .foot-brand { grid-column: 1 / -1; } }

/* ---------- Inner page heroes ---------- */
.page-hero { padding-block: clamp(9rem, 15vw, 13rem) clamp(3.5rem, 7vw, 6rem); overflow: hidden; }
.page-hero .wz-h1 { max-width: 14ch; }
.page-hero .wz-lead { margin-top: 1.75rem; }
.crumbs { display: flex; gap: .6rem; font-size: .82rem; margin-bottom: 2rem; color: var(--fg-soft); }
.crumbs a { text-decoration: none; }

/* Catalogue */
.cat-controls { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 5fr) minmax(0, 2fr) minmax(0, 2fr); gap: 1rem; align-items: end; padding-bottom: 2rem; border-bottom: 1px solid var(--line); }
.seg { display: flex; flex-wrap: wrap; gap: .4rem; }
.seg legend { margin-bottom: .45rem; font: 500 .8rem/1.3 var(--wz-sans); letter-spacing: .04em; padding: 0; }
fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
select.wz-input { appearance: none; background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%); background-position: calc(100% - 1.1rem) 52%, calc(100% - .8rem) 52%; background-size: .3rem .3rem; background-repeat: no-repeat; padding-right: 2.2rem; }
.cat-summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-block: 1.25rem; font-size: .9rem; color: var(--fg-soft); }
.cat-list { list-style: none; margin: 0; padding: 0; }
.cat-row { display: grid; grid-template-columns: 7rem minmax(0, 5fr) minmax(0, 2fr) minmax(0, 2fr) auto; gap: 1.5rem; align-items: center; padding-block: 1.5rem; border-bottom: 1px solid var(--line); }
.cat-thumb { width: 7rem; aspect-ratio: 4/3; position: relative; overflow: hidden; }
.cat-thumb svg { position: absolute; inset: 0; width: 100%; height: 100%; transition: transform 900ms var(--wz-ease-out); }
.cat-row:hover .cat-thumb svg { transform: scale(1.08); }
.cat-row h3 { font: 400 1.6rem/1.1 var(--wz-serif); }
.cat-row .plat { font: 500 .68rem/1 var(--wz-sans); letter-spacing: .18em; text-transform: uppercase; color: var(--wz-gold-ink); margin-bottom: .5rem; display: block; }
.cat-row p { color: var(--wz-ink-soft); font-size: .95rem; margin-top: .4rem; }
.cat-row dl { margin: 0; display: grid; gap: .2rem; font-size: .85rem; font-variant-numeric: tabular-nums; }
.cat-row dt { font: 500 .66rem/1.4 var(--wz-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--wz-ink-soft); }
.cat-row dd { margin: 0 0 .4rem; }
.cat-row .acts { display: grid; gap: .6rem; justify-items: end; font-size: .9rem; font-weight: 500; }
.empty { padding: 3rem 0; color: var(--wz-ink-soft); }
@media (max-width: 1023px) {
  .cat-controls { grid-template-columns: 1fr 1fr; }
  .cat-controls > :first-child, .cat-controls > :nth-child(2) { grid-column: 1 / -1; }
  .cat-row { grid-template-columns: 5rem minmax(0, 1fr); }
  .cat-thumb { width: 5rem; }
  .cat-row dl, .cat-row .acts { grid-column: 2; }
  .cat-row dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cat-row .acts { justify-items: start; display: flex; gap: 1.5rem; }
}

/* Course detail */
.cd-hero { padding-block: clamp(9rem, 14vw, 12rem) clamp(3rem, 6vw, 5rem); overflow: hidden; }
.cd-hero-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; position: relative; z-index: 2; }
.cd-art { aspect-ratio: 1; position: relative; overflow: hidden; }
.cd-art svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.facts { display: flex; flex-wrap: wrap; gap: 0; margin-top: 2.5rem; border-top: 1px solid var(--line); }
.facts div { padding: 1rem 2rem 0 0; margin-right: 2rem; }
.facts dt { font: 500 .66rem/1.4 var(--wz-sans); letter-spacing: .18em; text-transform: uppercase; color: var(--label); }
.facts dd { margin: .3rem 0 0; font-size: 1rem; }
.cd-body { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.cd-main > section { padding-block: 0 clamp(3.5rem, 7vw, 6rem); }
.creates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; margin-top: 2rem; }
.create { display: grid; gap: .9rem; }
.create .sheet { padding: 1rem; min-height: 15rem; overflow: hidden; }
.create .sheet h4 { font-size: 1.15rem; margin: .5rem 0 .75rem; }
.create p { font-size: .9rem; color: var(--wz-ink-soft); }
.outcomes { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0 2rem; }
.outcomes li { padding: 1rem 0; border-top: 1px solid var(--line); display: grid; grid-template-columns: 1.5rem 1fr; gap: .75rem; color: var(--wz-ink-soft); }
.outcomes li::before { content: ""; width: .55rem; height: .55rem; border: 1px solid var(--wz-forest); border-radius: 50%; margin-top: .5rem; }
.agenda { margin-top: 2rem; }
.agenda summary h3 { font: 400 1.5rem/1.15 var(--wz-serif); display: flex; gap: 1rem; align-items: baseline; }
.agenda .wz-acc__body { padding-bottom: 1.5rem; color: var(--wz-ink-soft); }
.agenda .wz-acc__body ul { margin: 0; padding-left: 1.1rem; display: grid; gap: .35rem; }
div.req { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem 2rem; margin-top: 2rem; }
div.req h3 { font: 500 .72rem/1.4 var(--wz-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--wz-gold-ink); margin-bottom: .5rem; }
div.req p { color: var(--wz-ink-soft); font-size: 1rem; }
.enquiry { position: sticky; top: 6rem; border: 1px solid var(--line); padding: 1.75rem; background: #FBF9F4; }
.enquiry h3 { font: 400 1.75rem/1.1 var(--wz-serif); margin-bottom: .5rem; }
.enquiry > p { color: var(--wz-ink-soft); font-size: .92rem; margin-bottom: 1.5rem; }
.mobile-bar { display: none; }
@media (max-width: 1023px) {
  .cd-hero-grid, .cd-body { grid-template-columns: 1fr; }
  .cd-art { aspect-ratio: 16/9; order: -1; }
  .creates { grid-template-columns: 1fr; }
  .create .sheet { aspect-ratio: auto; }
  .outcomes, div.req { grid-template-columns: 1fr; }
  .enquiry { position: static; }
  .mobile-bar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; justify-content: space-between; align-items: center; gap: 1rem; padding: .75rem var(--wz-gutter) calc(.75rem + env(safe-area-inset-bottom, 0px)); background: rgba(17,19,16,.92); color: var(--wz-porcelain); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); transform: translateY(110%); transition: transform var(--wz-t-panel) var(--wz-ease-out); }
  .mobile-bar.is-on { transform: none; }
  .mobile-bar span { font: 400 1rem/1.2 var(--wz-serif); }
  .mobile-bar .wz-btn { min-height: 2.75rem; --btn-bg: var(--wz-porcelain); --btn-fg: var(--wz-obsidian); --btn-hover: var(--wz-gold); }
}

/* Team / services / contact */
.process { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--line); counter-reset: p; }
.process li { list-style: none; padding: 2rem 1.5rem 2rem 0; border-right: 1px solid var(--line); position: relative; }
.process li:last-child { border-right: 0; }
.process li + li { padding-left: 1.5rem; }
.process h3 { font: 400 1.9rem/1.05 var(--wz-serif); margin: .75rem 0 .75rem; }
.process p { color: var(--fg-soft); font-size: .95rem; }
.process .pg { height: 4rem; margin-top: 1.5rem; color: var(--accent); }
.process .pg svg { width: 100%; height: 100%; overflow: visible; }
.process .pg .grow { transform-origin: left; transform: scaleX(.15); transition: transform 1200ms var(--wz-ease-out); }
.process li:hover .pg .grow { transform: scaleX(1); }
@media (max-width: 900px) { .process { grid-template-columns: 1fr; } .process li { border-right: 0; border-bottom: 1px solid var(--line); padding-inline: 0 !important; } }
.form-split { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.form-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.form-2 .full { grid-column: 1 / -1; }
.checks { display: flex; flex-wrap: wrap; gap: .5rem; }
.check { position: relative; }
.check input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.check span { display: inline-flex; align-items: center; min-height: 2.6rem; padding: 0 1rem; border: 1px solid var(--line); border-radius: 99px; font-size: .88rem; transition: background-color var(--wz-t-fast), color var(--wz-t-fast), border-color var(--wz-t-fast); }
.check input:checked + span { background: var(--fg); color: var(--wz-porcelain); border-color: var(--fg); }
.wz-tone-dark .check input:checked + span, .wz-tone-forest .check input:checked + span { color: var(--wz-obsidian); }
.check input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 2px; }
textarea.wz-input { min-height: 8rem; resize: vertical; }
@media (max-width: 900px) { .form-split, .form-2 { grid-template-columns: 1fr; } }
.svc-diagram { margin-top: 1rem; overflow-x: auto; }
.svc-diagram svg { width: 100%; min-width: 640px; height: auto; color: var(--wz-porcelain); }
.svc-diagram .flowline { stroke: var(--wz-gold); stroke-width: 1.5; fill: none; stroke-dasharray: 6 10; animation: wz-flow 2.8s linear infinite; }
@keyframes wz-flow { to { stroke-dashoffset: -64; } }
html.wz-reduced .svc-diagram .flowline { animation: none; }
@media (prefers-reduced-motion: reduce) { .svc-diagram .flowline { animation: none; } }
.scope { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; }
.scope h3 { font: 400 1.6rem/1.1 var(--wz-serif); margin: .75rem 0; }
.scope ul { margin: 0; padding-left: 1.1rem; color: var(--wz-ink-soft); display: grid; gap: .35rem; }
@media (max-width: 900px) { .scope { grid-template-columns: 1fr; } }
.contact-band { min-height: 100svh; overflow: hidden; padding-block: clamp(9rem, 14vw, 12rem) 6rem; }
.contact-card { position: relative; z-index: 2; background: rgba(17,19,16,.55); border: 1px solid rgba(245,242,234,.14); padding: clamp(1.5rem, 4vw, 3rem); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }

/* System page */
.swatches { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1rem; }
.swatch { border: 1px solid var(--line); }
.swatch div { aspect-ratio: 4/3; }
.swatch p { padding: .75rem; font-size: .82rem; display: grid; gap: .15rem; font-variant-numeric: tabular-nums; }
.swatch b { font-weight: 500; }
.tbl-wrap { overflow-x: auto; margin-top: 1.5rem; }
.tbl { width: 100%; border-collapse: collapse; font-size: .88rem; min-width: 640px; }
.tbl th, .tbl td { text-align: left; vertical-align: top; padding: .75rem .9rem .75rem 0; border-bottom: 1px solid var(--line); }
.tbl th { font: 500 .68rem/1.4 var(--wz-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--wz-gold-ink); }
.tbl td { color: var(--wz-ink-soft); }
.tbl td:first-child { color: var(--wz-ink); font-weight: 500; }
.ratio { font-variant-numeric: tabular-nums; }
.ratio.pass { color: var(--wz-forest); } .ratio.fail { color: #9A3A28; }
.specimen { display: grid; gap: 1.25rem; border-top: 1px solid var(--line); padding-top: 1.5rem; }
.specimen div { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 1.5rem; align-items: baseline; }
.specimen code { font-size: .78rem; color: var(--wz-ink-soft); }
.sys-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; }
@media (max-width: 900px) { .swatches { grid-template-columns: repeat(2, minmax(0, 1fr)); } .sys-cols { grid-template-columns: 1fr; } .specimen div { grid-template-columns: 1fr; gap: .25rem; } }
.toggle-row { display: flex; align-items: center; gap: .75rem; font-size: .9rem; }
.switch { position: relative; width: 3rem; height: 1.6rem; border-radius: 99px; border: 1px solid var(--line); background: transparent; cursor: pointer; }
.switch::after { content: ""; position: absolute; top: .2rem; left: .25rem; width: 1.1rem; height: 1.1rem; border-radius: 50%; background: var(--fg); transition: transform var(--wz-t-fast) var(--wz-ease-out); }
.switch[aria-checked="true"] { background: var(--wz-forest); border-color: var(--wz-forest); }
.switch[aria-checked="true"]::after { transform: translateX(1.35rem); background: var(--wz-porcelain); }

/* ---------- Platform strip ---------- */
.plat-strip { padding-block: clamp(3.5rem, 7vw, 6rem); border-top: 1px solid rgba(245,242,234,.1); }
.plat-head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: baseline; margin-bottom: 2.5rem; }
.plat-head .wz-label { grid-column: 1 / span 3; }
.plat-head .wz-h3 { grid-column: 4 / span 9; font-weight: 400; }
.plat-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: 1px solid var(--line); }
.plat-tile { position: relative; display: grid; grid-template-columns: auto 1fr; grid-template-areas: "logo name" "logo by" "desc desc" "go go"; column-gap: 1.25rem; row-gap: .25rem; align-items: center; padding: 2.25rem 2rem 2rem 0; text-decoration: none; isolation: isolate; }
.plat-tile + .plat-tile { padding-left: 2rem; border-left: 1px solid var(--line); }
.plat-tile::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(245,242,234,.04); opacity: 0; transition: opacity 400ms var(--wz-ease-out); }
.plat-tile:hover::before, .plat-tile:focus-visible::before { opacity: 1; }
.plat-tile .wz-logo { grid-area: logo; }
.plat-name { grid-area: name; font: 400 clamp(2rem, 3.4vw, 3rem)/1 var(--wz-serif); color: var(--wz-porcelain); }
.plat-by { grid-area: by; font-size: .85rem; color: var(--wz-porcelain-soft); }
.plat-desc { grid-area: desc; margin-top: 1.25rem; color: var(--wz-porcelain-soft); max-width: 30em; }
.plat-go { grid-area: go; margin-top: 1.25rem; font-weight: 500; font-size: .92rem; color: var(--wz-gold); }
.plat-go span { display: inline-block; transition: transform 300ms var(--wz-ease-out); }
.plat-tile:hover .plat-go span, .plat-tile:focus-visible .plat-go span { transform: translateX(.35rem); }
@media (max-width: 760px) {
  .plat-head > * { grid-column: 1 / -1 !important; }
  .plat-head .wz-label { margin-bottom: .75rem; }
  .plat-tiles { grid-template-columns: 1fr; }
  .plat-tile + .plat-tile { padding-left: 0; border-left: 0; border-top: 1px solid var(--line); }
}

/* Smaller serif sizes read better at 500 */
.course h3, .cat-row h3, .principles dt, .doc h4, .sheet h4, .enquiry h3, .process h3, .scope h3, .agenda summary h3, .stage-copy h3, .path-title, .menu-primary a { font-weight: 500; }
.course-art .ca-plat { all: unset; }
.course-art .wz-plat { position: absolute; left: 1rem; top: 1rem; z-index: 1; }
.cat-row .plats { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .6rem; }
.cat-row .wz-plat { min-height: 1.75rem; font-size: .78rem; }


/* ---------- WordPress context ---------- */
/* Neutralise theme link/button defaults without out-ranking component classes */
:where(.wz-site) a, :where(.wz-site) a:hover, :where(.wz-site) a:active, :where(.wz-site) a:focus { color: inherit; }
:where(.wz-site) button { font-family: inherit; line-height: inherit; text-transform: none; box-shadow: none; }
:where(.wz-site) :is(h1, h2, h3, h4) { color: inherit; }
/* Elementor wrappers carrying the sections stay invisible */
.wz-site .e-con.wz-sec { --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px; --gap: 0px; --row-gap: 0px; --column-gap: 0px; padding: 0; gap: 0; max-width: none; }
.wz-site .e-con.wz-sec > .e-con-inner { padding: 0; max-width: none; }
.wz-site .wz-sec .elementor-widget-html { width: 100%; margin: 0; }
/* Artwork delivered as images */
.course-art img, .cat-thumb img, .cd-art img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1100ms var(--wz-ease-out); }
.course:hover .course-art img, .course:focus-within .course-art img { transform: scale(1.06) rotate(-1deg); }
.cat-row:hover .cat-thumb img { transform: scale(1.08); }
.course-art, .cat-thumb { display: block; }

/* ---------- Generated media ---------- */
.hero .wz-hero-media { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.wz-hero-media picture, .wz-hero-media img, .wz-hero-media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 80% 50%; }
.wz-hero-media video { opacity: 0; transition: opacity 1200ms var(--wz-ease-out); }
.wz-hero-media.is-playing video { opacity: 1; }
.wz-hero-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(17,19,16,.92) 0%, rgba(17,19,16,.55) 34%, rgba(17,19,16,0) 62%), linear-gradient(0deg, rgba(17,19,16,.85) 0%, rgba(17,19,16,0) 30%); pointer-events: none; }
.hero .wz-contours { z-index: 1; }
.hero .wz-glow { z-index: 1; }
@media (max-width: 767px) {
  .wz-hero-media picture, .wz-hero-media img, .wz-hero-media video { object-position: 50% 0%; }
  .wz-hero-media::after { background: linear-gradient(0deg, rgba(17,19,16,.96) 0%, rgba(17,19,16,.75) 42%, rgba(17,19,16,0) 70%); }
}
.stage-art { margin: 0 0 1.25rem; aspect-ratio: 4 / 3; max-width: 26rem; overflow: hidden; border-radius: var(--wz-radius); opacity: .55; transform: scale(.98); transition: opacity 900ms var(--wz-ease-out), transform 900ms var(--wz-ease-out); }
.wz-stage.is-active .stage-art { opacity: 1; transform: none; }
.stage-art img, .scope-art img { width: 100%; height: 100%; object-fit: cover; display: block; }
.scope-art { margin: 0 0 1.25rem; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--wz-radius); }
.wz-layer { position: absolute; pointer-events: none; z-index: 1; height: auto; filter: drop-shadow(0 30px 60px rgba(0,0,0,.45)); animation: wz-float 18s var(--wz-ease-inout) infinite alternate; }
.wz-layer--knot { right: 4%; top: 10%; width: clamp(9rem, 20vw, 20rem); opacity: .92; }
.wz-layer--ring { right: 3%; top: 22%; width: clamp(12rem, 26vw, 26rem); opacity: .9; }
@keyframes wz-float { from { transform: translate3d(0, -8px, 0) rotate(-2deg); } to { transform: translate3d(0, 10px, 0) rotate(2deg); } }
@media (max-width: 900px) { .wz-layer--knot { top: 4%; right: -6%; width: 8.5rem; opacity: .6; } .wz-layer--ring { top: 6rem; right: -12%; width: 11rem; opacity: .5; } }
@media (prefers-reduced-motion: reduce) { .wz-layer { animation: none; } .stage-art { opacity: 1; transform: none; } }
html.wz-reduced .wz-layer { animation: none; }
.wz-ambient-dark { background-image: url("../img/ambient-dark-1920.webp"); background-size: cover; background-position: center; }
.wz-ambient-light { background-image: url("../img/ambient-light-1920.webp"); background-size: cover; background-position: center; }

/* Phones: the hero still drifts gently until the loop starts */
@media (max-width: 767px) {
  .wz-hero-media:not(.is-playing) img { animation: wz-still-drift 26s var(--wz-ease-inout) infinite alternate; will-change: transform; }
}
@keyframes wz-still-drift { from { transform: scale(1.06) translate3d(0, 0, 0); } to { transform: scale(1) translate3d(0, 1.5%, 0); } }
@media (prefers-reduced-motion: reduce) { .wz-hero-media img { animation: none !important; } }
html.wz-reduced .wz-hero-media img { animation: none !important; }
.doc .doc-title { font: 400 1.6rem/1.1 var(--wz-serif); margin: 0 0 1rem; font-weight: 500; }
.sheet .sheet-title { display: block; font: 500 clamp(1.4rem, 2.2vw, 2rem)/1.05 var(--wz-serif); margin: .75rem 0 1rem; }
.create .sheet .sheet-title { font-size: 1.15rem; margin: .5rem 0 .75rem; }

/* Keep the moving ribbon clear of the headline */
@media (min-width: 768px) {
  .hero .wz-hero-media { left: 30%; }
  .hero .wz-hero-media picture, .hero .wz-hero-media img, .hero .wz-hero-media video { object-position: 65% 50%; }
  .hero .wz-hero-media::after { background: linear-gradient(90deg, rgba(17,19,16,1) 0%, rgba(17,19,16,.7) 14%, rgba(17,19,16,0) 38%), linear-gradient(0deg, rgba(17,19,16,.85) 0%, rgba(17,19,16,0) 30%); }
}
@media (max-width: 767px) {
  .hero .wz-hero-media::after { background: linear-gradient(0deg, rgba(17,19,16,1) 0%, rgba(17,19,16,.92) 46%, rgba(17,19,16,.55) 60%, rgba(17,19,16,0) 76%); }
}
@media (max-width: 767px) {
  .hero { min-height: 100svh; }
  .hero .wz-hero-media { bottom: 44%; }
  .hero .wz-hero-media::after { background: linear-gradient(0deg, rgba(17,19,16,1) 0%, rgba(17,19,16,.9) 30%, rgba(17,19,16,0) 62%); }
}

/* =====================================================================
   v2 components
   ===================================================================== */
.wz-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.linkbtn { background: none; border: 0; padding: 0; cursor: pointer; font: inherit; color: inherit; font-weight: 500; }
span.req, .opt { font-weight: 400; color: var(--fg-soft); font-size: .78rem; letter-spacing: 0; }
.wz-legend { font: 500 .8rem/1.3 var(--wz-sans); letter-spacing: .04em; margin-bottom: .45rem; padding: 0; color: var(--fg); }

/* ---------- Enquiry forms ---------- */
.wz-hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.wz-context { display: flex; flex-wrap: wrap; gap: .25rem .75rem; align-items: baseline; padding: .8rem 1rem; border: 1px solid var(--line); border-left: 2px solid var(--accent); margin: 0; }
.wz-context strong { font-weight: 500; color: var(--fg); }
.form-2 .wz-context { grid-column: 1 / -1; }
.wz-consent { display: grid; grid-template-columns: 1.25rem 1fr; gap: .6rem; align-items: start; font: 400 .9rem/1.45 var(--wz-sans); color: var(--fg); cursor: pointer; }
.wz-consent input { width: 1.1rem; height: 1.1rem; margin-top: .15rem; accent-color: var(--accent); }
.wz-form-note { margin: 0; font-size: .82rem; line-height: 1.5; color: var(--fg-soft); }
.wz-status { padding: .9rem 1rem; border: 1px solid var(--line); font-size: .92rem; line-height: 1.5; color: var(--fg); }
.wz-status[data-state="success"] { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); }
.wz-status[data-state="error"] { border-color: #A3412F; }
.wz-tone-dark .wz-status[data-state="error"], .wz-tone-forest .wz-status[data-state="error"] { border-color: #E59A85; }
.wz-status[data-state="sending"] { border-style: dashed; }
.wz-form button[disabled] { opacity: .65; cursor: progress; }
.enquiry .enq-h { font: 500 1.75rem/1.1 var(--wz-serif); margin-bottom: .5rem; }
.enquiry .wz-form { gap: 1rem; }
.contact-points { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; color: var(--fg-soft); }
.contact-points li { padding-left: 1.25rem; position: relative; }
.contact-points li::before { content: ""; position: absolute; left: 0; top: .65em; width: .5rem; height: 1px; background: var(--wz-gold); }

/* ---------- Showcase (signature interaction) ---------- */
.sc-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1rem; border-bottom: 1px solid var(--line); margin-bottom: 2.5rem; }
.sc-bar .tablist { border-bottom: 0; margin: 0; }
.sc-controls { display: flex; gap: .5rem; padding-bottom: .6rem; }
.sc-controls .chip { min-height: 2.75rem; }
.sc-stage { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 2fr) minmax(0, 5fr); align-items: center; }
.sc-lines-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.sc-line { font-size: .95rem; line-height: 1.5; color: var(--wz-ink-soft); }
.sc-line mark { background: linear-gradient(transparent 58%, color-mix(in srgb, var(--wz-gold) 55%, transparent) 58%) no-repeat 0 0 / 100% 100%; color: var(--wz-ink); padding: 0 .1em; }
.sc-muted { color: var(--wz-ink-soft) !important; }
.sc-link { height: 220px; color: var(--wz-forest); }
.sc-link svg { width: 100%; height: 100%; overflow: visible; }
.sc-path { fill: none; stroke: currentColor; stroke-width: 1.3; stroke-dasharray: 260; stroke-dashoffset: 0; vector-effect: non-scaling-stroke; }
.sc-link circle { fill: currentColor; }
.sc-rows { display: grid; gap: 0; margin: 0; }
.sc-row { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: 1rem; padding: .55rem 0; border-top: 1px solid rgba(17,19,16,.08); }
.sc-row dt { font: 500 .7rem/1.6 var(--wz-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--wz-forest); }
.sc-row dd { margin: 0; font-size: .92rem; color: var(--wz-ink); }
.sc-learn { display: inline-block; margin-top: 1.1rem; font-weight: 500; color: var(--wz-forest); }
/* the sequence (only while .is-run) */
.sc-panel.is-run .sc-line { animation: sc-in .45s var(--wz-ease-out) backwards; }
.sc-panel.is-run .sc-line:nth-child(2) { animation-delay: .08s; } .sc-panel.is-run .sc-line:nth-child(3) { animation-delay: .16s; } .sc-panel.is-run .sc-line:nth-child(4) { animation-delay: .24s; }
.sc-panel.is-run .sc-line mark { animation: sc-mark .5s var(--wz-ease-out) .45s backwards; }
.sc-panel.is-run .sc-path { animation: sc-draw .7s var(--wz-ease-inout) .9s backwards; }
.sc-panel.is-run .sc-link circle { animation: sc-in .3s var(--wz-ease-out) 1.5s backwards; }
.sc-panel.is-run .sc-out { animation: sc-out .5s var(--wz-ease-out) 1.35s backwards; }
.sc-panel.is-run .sc-row { animation: sc-row .4s var(--wz-ease-out) backwards; }
.sc-panel.is-run .sc-row:nth-child(1) { animation-delay: 1.6s; } .sc-panel.is-run .sc-row:nth-child(2) { animation-delay: 1.72s; } .sc-panel.is-run .sc-row:nth-child(3) { animation-delay: 1.84s; }
.sc-panel.is-run .sc-row:nth-child(4) { animation-delay: 1.96s; } .sc-panel.is-run .sc-row:nth-child(5) { animation-delay: 2.08s; }
.sc-panel.is-run .sc-learn { animation: sc-in .4s var(--wz-ease-out) 2.3s backwards; }
.sc-panel.is-done * { animation: none !important; }
@keyframes sc-in { from { opacity: 0; transform: translateY(6px); } }
@keyframes sc-mark { from { background-size: 0 100%; } }
@keyframes sc-draw { from { stroke-dashoffset: 260; } }
@keyframes sc-out { from { opacity: 0; transform: translateY(10px); filter: blur(2px); } }
@keyframes sc-row { from { opacity: 0; transform: translateX(-6px); } }
@media (prefers-reduced-motion: reduce) { .sc-panel * { animation: none !important; } }
html.wz-reduced .sc-panel * { animation: none !important; }
@media (max-width: 900px) {
  .sc-stage { grid-template-columns: 1fr; }
  .sc-link { height: 64px; width: 64px; justify-self: center; transform: rotate(90deg); margin-block: .25rem; }
  .sc-row { grid-template-columns: 1fr; gap: .15rem; }
  .sc-bar { align-items: stretch; }
  .sc-controls { width: 100%; }
}

/* ---------- Services stages ---------- */
.svx { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 1rem; }
.svx-track { position: absolute; left: 0; right: 0; top: 1.05rem; width: 100%; height: 8px; overflow: visible; pointer-events: none; }
.svx-base { stroke: rgba(245,242,234,.18); stroke-width: 1; vector-effect: non-scaling-stroke; }
.svx-draw { stroke: var(--wz-gold); stroke-width: 2; vector-effect: non-scaling-stroke; stroke-dasharray: 1000; stroke-dashoffset: 0; transition: stroke-dashoffset 700ms var(--wz-ease-inout); }
.svx-item { display: contents; }
.svx-h { margin: 0; grid-row: 1; }
.svx-tab { width: 100%; display: grid; grid-template-columns: auto 1fr; grid-template-areas: "node num" "node name" "node sub"; column-gap: .9rem; text-align: left; background: none; border: 0; color: var(--wz-porcelain); padding: .3rem .25rem 1.4rem 0; cursor: pointer; font: inherit; min-height: 44px; }
.svx-node { grid-area: node; width: 1.1rem; height: 1.1rem; margin-top: .5rem; border-radius: 50%; border: 1px solid var(--wz-gold); background: var(--wz-forest-deep); position: relative; z-index: 1; transition: background-color 300ms, transform 300ms var(--wz-ease-out); }
.svx-tab .wz-num { grid-area: num; }
.svx-name { grid-area: name; font: 400 clamp(1.6rem, 2.6vw, 2.4rem)/1.05 var(--wz-serif); letter-spacing: -.01em; }
.svx-sub { grid-area: sub; margin-top: .35rem; font-size: .88rem; color: var(--wz-porcelain-soft); }
.svx-tab:hover .svx-name { font-style: italic; }
.svx-tab[aria-expanded="true"] .svx-node { background: var(--wz-gold); transform: scale(1.2); }
.svx-tab[aria-expanded="true"] .svx-name { color: var(--wz-porcelain); font-style: italic; }
.svx-tab[aria-expanded="false"] .svx-name { color: var(--wz-porcelain-soft); }
.svx-tab:focus-visible { outline: 2px solid var(--wz-gold); outline-offset: 4px; }
.svx-panel { grid-column: 1 / -1; grid-row: 2; border-top: 1px solid rgba(245,242,234,.14); padding-top: 2rem; }
.svx:not(.is-ready) .svx-panel { grid-row: auto; }
.svx-cols { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: start; }
.svx-copy { display: grid; gap: 1.4rem; justify-items: start; }
.svx-block p:not(.wz-label), .svx-block li { color: var(--wz-porcelain-soft); }
.svx-block .wz-label { margin-bottom: .45rem; }
.svx-block ul { margin: 0; padding-left: 1.1rem; display: grid; gap: .3rem; }
.svx-sample { margin: 0; opacity: 1 !important; transform: none !important; border-color: rgba(190,164,119,.45) !important; }
.svx-sample figcaption { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: .9rem; }
.svx-ill { color: var(--wz-porcelain-soft); letter-spacing: .12em; }
.tbl-scroll { overflow-x: auto; }
.svx-sample table { min-width: 22rem; }
@media (max-width: 900px) {
  .svx { grid-template-columns: minmax(0, 1fr); }
  .svx-item, .svx-panel, .svx-copy, .svx-sample { min-width: 0; }
  .svx-track { display: none; }
  .svx-item { display: block; border-top: 1px solid rgba(245,242,234,.14); }
  .svx-item:last-of-type { border-bottom: 1px solid rgba(245,242,234,.14); }
  .svx-h, .svx-panel { grid-row: auto; }
  .svx-tab { padding: 1.1rem 0; grid-template-columns: auto 1fr auto; grid-template-areas: "node num chev" "node name chev" "node sub chev"; }
  .svx-tab::after { content: "+"; grid-area: chev; align-self: center; font-size: 1.4rem; color: var(--wz-gold); transition: transform 300ms var(--wz-ease-out); }
  .svx-tab[aria-expanded="true"]::after { transform: rotate(45deg); }
  .svx-panel { border-top: 0; padding: 0 0 1.75rem; }
  .svx-cols { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- About / approach ---------- */
.ap-quote { margin: 1rem 0 0; padding-left: 1.25rem; border-left: 1px solid var(--wz-forest); }
.ap-quote p { font: 400 clamp(1.4rem, 2.2vw, 1.85rem)/1.25 var(--wz-serif); font-style: italic; color: var(--wz-ink); }
.ap-indep { font-size: .92rem; }
.ap-steps { list-style: none; margin: 1rem 0 0; padding: 0; border-top: 1px solid var(--line); }
.ap-steps li { display: grid; grid-template-columns: 2.5rem minmax(0, 9rem) minmax(0, 1fr); gap: 1rem; align-items: baseline; padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
.ap-step { font: 500 1.5rem/1.1 var(--wz-serif); }
.ap-desc { color: var(--wz-ink-soft); }
@media (max-width: 640px) { .ap-steps li { grid-template-columns: 2rem 1fr; } .ap-desc { grid-column: 2; } }

/* ---------- Catalogue: featured + selector + resource ---------- */
.rel-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem 1.5rem; margin-bottom: 2rem; }
.rel-head .wz-h3 { margin: 0; }
.rel-head .wz-link { margin-left: auto; font-weight: 500; }
.feat-band { padding-block: clamp(3rem, 6vw, 5rem); }
.feats { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.25rem, 3vw, 2.5rem); }
.feat { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); background: #FBF9F4; border: 1px solid var(--line); min-width: 0; }
.feat-art { position: relative; overflow: hidden; min-height: 100%; }
.feat-art img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1100ms var(--wz-ease-out); }
.feat:hover .feat-art img { transform: scale(1.05); }
.feat-body { padding: clamp(1.25rem, 2.5vw, 2rem); display: grid; gap: .9rem; align-content: start; }
.feat-top { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; }
.feat-title { font: 500 clamp(1.6rem, 2.4vw, 2.2rem)/1.08 var(--wz-serif); margin: 0; }
.feat-title a { text-decoration: none; }
.feat-lead { color: var(--wz-ink-soft); }
.feat-for { font-size: .9rem; color: var(--wz-ink-soft); }
.feat-for .wz-label { display: block; margin-bottom: .25rem; }
.feat-facts { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin: 0; font-size: .88rem; }
.feat-facts dt { font: 500 .66rem/1.4 var(--wz-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--wz-gold-ink); }
.feat-facts dd { margin: .15rem 0 0; }
@media (max-width: 1100px) { .feats { grid-template-columns: 1fr; } }
@media (max-width: 640px) { .feat { grid-template-columns: 1fr; } .feat-art { aspect-ratio: 16 / 9; min-height: 0; } }
.sel-grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 6fr); gap: clamp(2rem, 6vw, 5rem); align-items: start; }
@media (max-width: 900px) { .sel-grid { grid-template-columns: 1fr; } }
.wz-selector { background: #FBF9F4; border: 1px solid var(--line); padding: clamp(1.25rem, 3vw, 2.25rem); min-width: 0; }
.sel-help { font-size: .9rem; color: var(--wz-ink-soft); margin-bottom: 1.25rem; }
.sel-step { border: 0; margin: 0; padding: 0; min-width: 0; }
.sel-q { display: grid; gap: .4rem; font: 500 clamp(1.3rem, 2vw, 1.6rem)/1.15 var(--wz-serif); color: var(--wz-ink); padding: 0; margin-bottom: 1rem; }
.sel-opts { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: .6rem; }
.sel-opt { position: relative; display: block; cursor: pointer; }
.sel-opt input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.sel-opt > span { display: grid; gap: .2rem; min-height: 3.25rem; padding: .8rem 1rem; border: 1px solid var(--line); border-radius: var(--wz-radius); transition: border-color var(--wz-t-fast), background-color var(--wz-t-fast); }
.sel-opt b { font-weight: 500; }
.sel-opt small { color: var(--wz-ink-soft); font-size: .82rem; }
.sel-opt:hover > span { border-color: var(--wz-ink); }
.sel-opt input:checked + span { border-color: var(--wz-forest); background: color-mix(in srgb, var(--wz-sage) 55%, transparent); box-shadow: inset 3px 0 0 var(--wz-forest); }
.sel-opt input:focus-visible + span { outline: 2px solid var(--wz-forest); outline-offset: 2px; }
.sel-error { color: #9A3A28; font-size: .88rem; margin-top: .75rem; }
.sel-nav { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-top: 1.5rem; }
.sel-skip { margin-left: auto; font-size: .9rem; }
.sel-results:focus { outline: none; }
.sel-why { font-size: .88rem; color: var(--wz-ink-soft); margin: .4rem 0 1rem; }
.sel-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; }
.sel-card { border: 1px solid var(--line); padding: 1.1rem 1.25rem; display: grid; gap: .45rem; }
.sel-card:first-child { border-color: var(--wz-forest); box-shadow: inset 3px 0 0 var(--wz-forest); }
.sel-card h3 { font: 500 1.4rem/1.15 var(--wz-serif); margin: 0; }
.sel-card h3 a { text-decoration: none; }
.sel-card p { color: var(--wz-ink-soft); font-size: .95rem; }
.sel-acts, .sel-again { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; font-weight: 500; }
.sel-again { margin-top: 1.25rem; }
.sel-note { margin-top: 1rem; font-size: .9rem; color: var(--wz-ink-soft); }
.home-sel { margin-top: 2.5rem; font-weight: 500; }
.res-band { padding-block: clamp(3rem, 6vw, 5rem); }
.res-grid { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1.5rem; }
.res-grid .wz-body { margin-top: .75rem; }

/* ---------- Course pages ---------- */
.courses--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 640px) { .courses--2 { grid-template-columns: 1fr; } }
.related-band { padding-top: 0; }
.sample-note { margin-top: .75rem; font: 500 .72rem/1.4 var(--wz-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--wz-gold-ink); }
.sheet-rows { margin: 0; display: grid; gap: 0; font-size: .8rem; }
.sheet-rows div { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: .6rem; padding: .4rem 0; border-top: 1px solid rgba(17,19,16,.08); }
.sheet-rows dt { font-weight: 500; color: var(--wz-forest); }
.sheet-rows dd { margin: 0; color: var(--wz-ink-soft); }
.create .sheet { min-height: 0; }
div.req h3 { font: 500 .72rem/1.4 var(--wz-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--wz-gold-ink); margin-bottom: .5rem; }
.cd-main > section + section { padding-top: 0; }
.cd-hero .btn-row .wz-btn--ghost { color: var(--wz-porcelain); }

/* ---------- Worksheet ---------- */
.ws-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.ws-note { font-size: .88rem; color: var(--wz-ink-soft); margin-top: .75rem; }
.ws-list { display: grid; gap: 0; margin-top: 1.5rem; border-top: 1px solid var(--line); }
.ws-item { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 1rem; padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
.ws-copy h3 { font: 500 1.35rem/1.15 var(--wz-serif); margin: 0 0 .3rem; }
.ws-copy p { color: var(--wz-ink-soft); font-size: .95rem; margin-bottom: .6rem; }
.ws-copy textarea { min-height: 4.5rem; }
.ws-assemble { margin-top: 2rem; padding: 1.5rem; background: var(--wz-sage); }
.ws-template { margin-top: .6rem; font: 400 1.15rem/1.6 var(--wz-serif); }
.ws-template b { font-weight: 500; color: var(--wz-forest); }
.ws-side { position: sticky; top: 6rem; border: 1px solid var(--line); padding: 1.5rem; background: #FBF9F4; }
.ws-check { list-style: none; margin: 1.25rem 0 0; padding: 0; display: grid; gap: .25rem; }
.ws-check label { display: grid; grid-template-columns: 1.4rem 1fr; gap: .6rem; padding: .45rem 0; cursor: pointer; align-items: start; }
.ws-check input { width: 1.1rem; height: 1.1rem; margin-top: .2rem; accent-color: var(--wz-forest); }
.ws-cta { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--line); display: grid; gap: .5rem; font-size: .92rem; }
.ws-cta .wz-link { font-weight: 500; }
@media (max-width: 900px) { .ws-grid { grid-template-columns: 1fr; } .ws-side { position: static; } }
@media print {
  .site-header, .site-footer, .wz-menu, .mobile-bar, .page-hero .btn-row, .wz-skip { display: none !important; }
  body.wz-site { background: #fff !important; color: #111 !important; }
}

/* ---------- Mobile polish ---------- */
.menu-group ul { font-size: 1.02rem; color: var(--wz-porcelain); gap: 0; }
.menu-group ul a { display: block; padding: .55rem 0; }
.chip { min-height: 2.75rem; }
.tab { min-height: 2.75rem; }
.site-footer .foot-grid a { display: inline-block; padding: .3rem 0; }
.course-actions a, .cat-row .acts a { padding: .4rem 0; }
@media (max-width: 767px) {
  .hero h1, .hero .wz-lead, .hero-label { text-shadow: 0 1px 18px rgba(17,19,16,.9), 0 0 2px rgba(17,19,16,.6); }
  .hero .wz-contours svg { opacity: .04; }
  .hero .wz-glow { display: none; }
  .hero-content { padding-top: 0; }
  .hero .btn-row .wz-btn { flex: 1 1 100%; justify-content: center; }
  .hero .btn-row .wz-btn__inner { justify-content: center; width: 100%; }
  .menu-primary a { font-size: clamp(2rem, 9vw, 2.6rem); }
  .menu-group h3 { margin-top: .5rem; }
  .cd-hero .facts div { padding-right: 1rem; margin-right: 1rem; }
  body.wz-site:has(.mobile-bar.is-on) .site-footer { padding-bottom: 6rem; }
  .sc-controls .chip { flex: 1 1 auto; justify-content: center; }
}
/* 12-column heads: at phone widths eleven 2rem gaps alone exceed the screen */
@media (max-width: 900px) {
  .sec-head, .plat-head { display: block; }
  .sec-head > .wz-label, .plat-head > .wz-label { display: block; margin-bottom: 1rem; }
  .sec-head > .wz-lead { margin-top: 1.25rem; }
}

/* Course detail v3 — page strip, problems, modules, exercises, platform, booking */
.cd-toc { background: var(--wz-porcelain); border-bottom: 1px solid rgba(17,19,16,.12); }
.cd-toc ul { list-style: none; margin: 0; padding: 0; display: flex; gap: .25rem 1.75rem; overflow-x: auto; scrollbar-width: none; }
.cd-toc ul::-webkit-scrollbar { display: none; }
.cd-toc a { display: inline-flex; align-items: center; min-height: 3.25rem; white-space: nowrap; font: 500 .72rem/1 var(--wz-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--wz-ink-soft); text-decoration: none; border-bottom: 1px solid transparent; transition: color .2s, border-color .2s; }
.cd-toc a:hover, .cd-toc a:focus-visible { color: var(--wz-forest); border-bottom-color: var(--wz-gold); }
.cd-main [id], #enquire { scroll-margin-top: 6.5rem; }
.cd-sub { margin-top: 1rem; color: var(--wz-ink-soft); max-width: 60ch; }
.cd-probs { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.cd-probs li { position: relative; padding: 1.25rem 1.25rem 1.25rem 3rem; background: #FBF9F4; border: 1px solid var(--line); font: 400 1.1rem/1.35 var(--wz-serif); color: var(--wz-obsidian); }
.cd-prob-mark { position: absolute; left: 1.25rem; top: 1.6rem; width: .9rem; height: 1px; background: var(--wz-gold); }
.cd-modstrip { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); counter-reset: none; }
.cd-modstrip li { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.cd-modstrip a { display: grid; gap: .6rem; height: 100%; padding: 1rem 1.1rem 1.2rem; text-decoration: none; color: var(--wz-obsidian); font: 400 1.05rem/1.25 var(--wz-serif); transition: background .25s; }
.cd-modstrip a:hover, .cd-modstrip a:focus-visible { background: var(--wz-sage); }
.cd-modstrip .wz-num { color: var(--wz-gold-ink); }
.cd-mod summary { display: flex; align-items: center; gap: 1rem; }
.cd-mod summary h3 { flex: 1; }
.cd-mod-count { font: 500 .66rem/1 var(--wz-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--wz-ink-soft); white-space: nowrap; }
.cd-exs { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.cd-ex { background: var(--wz-porcelain); padding: 1.5rem; display: grid; gap: .6rem; align-content: start; }
.cd-ex-n { font: 500 .66rem/1 var(--wz-sans); letter-spacing: .18em; text-transform: uppercase; color: var(--wz-gold-ink); }
.cd-ex h3 { font: 500 1.3rem/1.2 var(--wz-serif); }
.cd-ex p { color: var(--wz-ink-soft); font-size: .95rem; }
.cd-take-h { margin-top: 2.5rem; font: 500 .72rem/1.4 var(--wz-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--wz-gold-ink); }
.cd-take { margin-top: .75rem; }
.cd-plat { margin-top: 2rem; display: grid; grid-template-columns: auto 1fr; gap: 1.5rem; align-items: start; padding: 1.5rem; border: 1px solid var(--line); background: #FBF9F4; }
.cd-plat-logos { display: flex; gap: .5rem; }
.cd-plat-logos .wz-logo { width: 2.5rem; height: 2.5rem; }
.cd-plat h3 { font: 500 1.3rem/1.2 var(--wz-serif); margin-bottom: .4rem; }
.cd-plat p { color: var(--wz-ink-soft); }
.cd-book { margin-top: 2rem; display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.cd-book > div { background: var(--wz-porcelain); padding: 1.5rem; display: grid; gap: .75rem; align-content: start; }
.cd-book h3 { font: 500 1.3rem/1.2 var(--wz-serif); }
.cd-book p { color: var(--wz-ink-soft); }
.enq-h { font: 400 1.75rem/1.1 var(--wz-serif); margin-bottom: .5rem; }
@media (max-width: 1023px) {
  .cd-probs, .cd-exs, .cd-book { grid-template-columns: 1fr; }
  .cd-modstrip { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .cd-modstrip { display: none; }
  .cd-plat { grid-template-columns: 1fr; }
  .cd-mod-count { display: none; }
}

/* =====================================================================
   THE LIVING INTELLIGENCE — v3
   One motion language: pulse (heartbeat), signals (circulation),
   responsive connections (nervous system), breathing artwork,
   nodes that light and stay lit (memory). Tiers on <html>:
   .wz-m-full (desktop, capable) · .wz-m-light (phones, low power) · .wz-m-reduced
   ===================================================================== */
:root { --wz-champ: #E9D6A6; --wz-signal: #F4E4B6; }

/* ---------- Hero: AI core ---------- */
.hero .wz-hero-media, .hero .wz-core { position: absolute; inset: 0; }
.hero .wz-hero-media picture, .hero .wz-hero-media img, .hero .wz-hero-media video { object-position: 100% 50%; }
.hero .wz-hero-media::after { background: linear-gradient(90deg, rgba(17,19,16,.88) 0%, rgba(17,19,16,.5) 30%, rgba(17,19,16,0) 55%), linear-gradient(0deg, rgba(17,19,16,.8) 0%, rgba(17,19,16,0) 28%); }
.wz-core { z-index: 1; pointer-events: none; }
.cr-svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.cr-tall { display: none; }
.cr-path { fill: none; stroke: var(--wz-champ); stroke-opacity: .14; stroke-width: 1; vector-effect: non-scaling-stroke; }
.cr-sig { fill: none; stroke: var(--wz-signal); stroke-width: 2.4; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 1.4 200; stroke-dashoffset: 2; opacity: 0; }
.cr-glow { transform-box: fill-box; transform-origin: center; opacity: calc(.42 + var(--prox, 0) * .3); mix-blend-mode: screen; }
.cr-pulse { fill: none; stroke: var(--wz-champ); stroke-width: 1.2; vector-effect: non-scaling-stroke; opacity: 0; transform-box: fill-box; transform-origin: center; }
.cr-near { opacity: calc(var(--prox, 0) * .45); mix-blend-mode: screen; transition: opacity .4s; }
.cr-btn-path { fill: none; stroke: var(--wz-champ); stroke-opacity: 0; stroke-width: 1; vector-effect: non-scaling-stroke; }
.cr-btn-sig { fill: none; stroke: var(--wz-signal); stroke-width: 2.6; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 2 200; stroke-dashoffset: 2; opacity: 0; }
.wz-core.is-firing .cr-btn-path { animation: cr-trace 1.1s var(--wz-ease-out) forwards; }
.wz-core.is-firing .cr-btn-sig { animation: cr-fire .85s cubic-bezier(.5,0,.2,1) forwards; }
@keyframes cr-trace { 0% { stroke-opacity: 0; } 30% { stroke-opacity: .32; } 100% { stroke-opacity: 0; } }
@keyframes cr-fire { 0% { stroke-dashoffset: 2; opacity: 0; } 10% { opacity: 1; } 92% { opacity: 1; } 100% { stroke-dashoffset: -100; opacity: 0; } }

html.wz-js:not(.wz-m-reduced) .cr-sig { animation: cr-flow var(--dur, 7s) linear infinite; animation-delay: var(--delay, 0s); }
.cr-sig:nth-child(1) { --dur: 6.5s; --delay: -.4s; } .cr-sig:nth-child(2) { --dur: 8s; --delay: -3.1s; }
.cr-sig:nth-child(3) { --dur: 7.2s; --delay: -5.2s; } .cr-sig:nth-child(4) { --dur: 9s; --delay: -1.7s; animation-direction: reverse; }
.cr-sig:nth-child(5) { --dur: 7.8s; --delay: -6.4s; } .cr-sig:nth-child(6) { --dur: 10s; --delay: -2.6s; animation-direction: reverse; }
.cr-sig:nth-child(7) { --dur: 8.6s; --delay: -4.4s; }
@keyframes cr-flow { 0% { stroke-dashoffset: 2; opacity: 0; } 8% { opacity: .95; } 80% { opacity: .8; } 100% { stroke-dashoffset: -100; opacity: 0; } }
html.wz-js:not(.wz-m-reduced) .cr-pulse { animation: cr-beat 6.4s var(--wz-ease-out) infinite 1.2s; }
@keyframes cr-beat { 0% { transform: scale(.6); opacity: 0; } 5% { opacity: .55; } 45% { transform: scale(3.4); opacity: 0; } 100% { transform: scale(3.4); opacity: 0; } }
html.wz-js:not(.wz-m-reduced) .cr-glow { animation: cr-breathe 9s var(--wz-ease-inout) infinite alternate; }
@keyframes cr-breathe { from { transform: scale(.9); } to { transform: scale(1.08); } }
html.wz-m-light .cr-sig:nth-child(n+4) { display: none; }
html.wz-m-light .cr-sig { --dur: 11s !important; }

.hero .btn-row .wz-btn.is-signalled { box-shadow: 0 0 0 1px rgba(233,214,166,.55), 0 0 28px rgba(233,214,166,.28); transition: box-shadow .5s var(--wz-ease-out); }

@media (max-width: 767px) {
  .hero .wz-hero-media, .hero .wz-core { bottom: 40%; }
  .hero .wz-hero-media picture, .hero .wz-hero-media img, .hero .wz-hero-media video { object-position: 50% 0%; }
  .hero .wz-hero-media::after { background: linear-gradient(0deg, rgba(17,19,16,1) 0%, rgba(17,19,16,.6) 22%, rgba(17,19,16,0) 48%); }
  .cr-wide { display: none; } .cr-tall { display: block; }
  .hero .wz-contours { opacity: .5; }
}

/* ---------- Click acknowledgement + passing highlight (all buttons) ---------- */
.wz-btn { isolation: isolate; }
.wz-btn::after { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 2; border-radius: inherit;
  background: linear-gradient(105deg, transparent 30%, rgba(255,247,224,.38) 48%, transparent 66%); transform: translateX(-120%); opacity: 0; }
.wz-btn:hover::after, .wz-btn:focus-visible::after { animation: wz-pass .9s var(--wz-ease-out) 1; }
@keyframes wz-pass { 0% { transform: translateX(-120%); opacity: 1; } 100% { transform: translateX(120%); opacity: 1; } }
.wz-btn.is-ack { animation: wz-ack .45s var(--wz-ease-out); }
@keyframes wz-ack { 0% { box-shadow: 0 0 0 0 rgba(190,164,119,.55); } 100% { box-shadow: 0 0 0 10px rgba(190,164,119,0); } }
.chip.is-ack, .tab.is-ack, .svx-tab.is-ack { animation: wz-ack .45s var(--wz-ease-out); }

/* ---------- Tab light: active light transfers between tabs ---------- */
.tablist { position: relative; }
.tab-light { position: absolute; left: 0; bottom: -1px; height: 2px; width: var(--w, 0); transform: translateX(var(--x, 0)); background: linear-gradient(90deg, var(--wz-forest), var(--wz-gold)); box-shadow: 0 0 12px rgba(190,164,119,.6); transition: transform .5s var(--wz-ease-out), width .5s var(--wz-ease-out); pointer-events: none; }
.tablist.has-light .tab::after { display: none; }
.wz-tone-dark .tab-light, .wz-tone-forest .tab-light { background: linear-gradient(90deg, var(--wz-sage), var(--wz-gold)); }

/* ---------- Homepage pathway: conduit + node per section ---------- */
.wz-conduit { display: none; }
html.wz-js [data-wz-node] { position: relative; }
html.wz-js .wz-conduit { display: block; position: absolute; left: var(--cx, 2rem); top: 0; height: var(--h, 6rem); width: 1px; z-index: 3; pointer-events: none; color: var(--wz-gold-ink); }
.wz-tone-dark .wz-conduit, .wz-tone-forest .wz-conduit { color: var(--wz-gold); }
.cd-line { position: absolute; inset: 0; background: linear-gradient(currentColor, currentColor) no-repeat 0 0 / 1px 100%; opacity: .35; transform: scaleY(0); transform-origin: top; transition: transform .9s var(--wz-ease-out); }
.cd-sig { position: absolute; left: -2px; top: 0; width: 5px; height: 5px; border-radius: 50%; background: var(--wz-signal); box-shadow: 0 0 10px 2px rgba(233,214,166,.7); opacity: 0; }
.cd-node { position: absolute; left: -4px; bottom: -4px; width: 9px; height: 9px; border-radius: 50%; border: 1px solid currentColor; background: transparent; transition: background .5s, box-shadow .6s; }
[data-wz-node].is-live .cd-line { transform: none; }
[data-wz-node].is-live .cd-node { background: currentColor; box-shadow: 0 0 0 5px color-mix(in srgb, currentColor 18%, transparent), 0 0 18px color-mix(in srgb, currentColor 60%, transparent); }
html:not(.wz-m-reduced) [data-wz-node].is-arriving .cd-sig { animation: cd-travel .9s cubic-bezier(.5,0,.2,1) forwards; }
@keyframes cd-travel { 0% { transform: translateY(0); opacity: 0; } 15% { opacity: 1; } 100% { transform: translateY(calc(var(--h, 6rem) - 4px)); opacity: 0; } }
html:not(.wz-m-reduced) [data-wz-node].is-live .cd-node { animation: cd-beat 7s var(--wz-ease-out) infinite 1.4s; }
@keyframes cd-beat { 0%, 100% { box-shadow: 0 0 0 5px color-mix(in srgb, currentColor 18%, transparent), 0 0 18px color-mix(in srgb, currentColor 60%, transparent); } 8% { box-shadow: 0 0 0 9px color-mix(in srgb, currentColor 0%, transparent), 0 0 24px color-mix(in srgb, currentColor 70%, transparent); } }
html.wz-m-light .wz-conduit .cd-line { opacity: .25; }

/* ---------- Platforms: two assistants join one learning structure ---------- */
.plat-join { position: relative; height: 7rem; margin-top: -1px; }
.plat-join svg { width: 100%; height: 100%; overflow: visible; }
.plat-join path { fill: none; vector-effect: non-scaling-stroke; }
.pj-l, .pj-b { stroke: var(--wz-gold); stroke-opacity: .45; stroke-width: 1; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1.2s var(--wz-ease-out); }
.pj-b { stroke-opacity: .3; transition-delay: .9s; }
.pj-s { stroke: var(--wz-signal); stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 2 200; stroke-dashoffset: 2; opacity: 0; }
.pj-node { position: absolute; left: 50%; top: 68%; width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; border-radius: 50%; background: var(--wz-gold); opacity: 0; transform: scale(.4); transition: opacity .5s .8s, transform .6s .8s var(--wz-ease-out); box-shadow: 0 0 0 6px rgba(190,164,119,.14), 0 0 22px rgba(190,164,119,.6); }
[data-wz-node].is-live .pj-l, [data-wz-node].is-live .pj-b { stroke-dashoffset: 0; }
[data-wz-node].is-live .pj-node { opacity: 1; transform: none; }
html:not(.wz-m-reduced) [data-wz-node].is-live .pj-s { animation: cr-flow 5.5s linear infinite 1.4s; }
html:not(.wz-m-reduced) [data-wz-node].is-live .pj-s2 { animation-delay: 4.1s; }
.plat-tile:hover ~ .plat-join .pj-l { stroke-opacity: .8; }
@media (max-width: 900px) { .plat-join { display: none; } }

/* ---------- Pathways: rows draw their branches in sequence; hover sends a signal ---------- */
[data-node="pathways"] .path-art svg path, [data-node="pathways"] .path-art svg g { transition: opacity .8s var(--wz-ease-out); }
html.wz-js:not(.wz-m-reduced) [data-node="pathways"]:not(.is-live) .path-art { opacity: .15; }
[data-node="pathways"] .path-art { transition: opacity .8s var(--wz-ease-out); }
[data-node="pathways"].is-live .path-row:nth-child(2) .path-art { transition-delay: .2s; }
[data-node="pathways"].is-live .path-row:nth-child(3) .path-art { transition-delay: .4s; }

/* ---------- Showcase: signals carry the highlighted details across ---------- */
.sc-sig { fill: none; stroke: var(--wz-gold); stroke-width: 2.6; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 3 200; stroke-dashoffset: 3; opacity: 0; }
.sc-panel.is-run .sc-sig { animation: sc-sig 1s cubic-bezier(.5,0,.2,1) 1.05s backwards; }
.sc-panel.is-run .sc-sig:nth-of-type(2) { animation-delay: 1.15s; } .sc-panel.is-run .sc-sig:nth-of-type(3) { animation-delay: 1.25s; }
@keyframes sc-sig { 0% { stroke-dashoffset: 3; opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { stroke-dashoffset: -100; opacity: 0; } }
.sc-panel.is-run .sc-line mark { box-shadow: 0 0 0 0 rgba(190,164,119,0); animation: sc-mark .5s var(--wz-ease-out) .45s backwards, sc-glint 1.2s var(--wz-ease-out) .9s 1; }
@keyframes sc-glint { 30% { box-shadow: 0 0 0 3px rgba(190,164,119,.25); } 100% { box-shadow: 0 0 0 0 rgba(190,164,119,0); } }
.sc-panel.is-run .sc-out { position: relative; }
.sc-panel.is-run .sc-out::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--wz-gold), transparent); opacity: 0; animation: sc-scan 1.1s var(--wz-ease-inout) 1.55s 1; pointer-events: none; }
@keyframes sc-scan { 0% { transform: translateY(0); opacity: 0; } 15% { opacity: .9; } 100% { transform: translateY(var(--scan, 260px)); opacity: 0; } }
.sc-panel.is-done .sc-out::after { display: none; }

/* ---------- Courses: coordinated artwork, restrained response ---------- */
.course-art { position: relative; overflow: hidden; }
.course-art::after { content: ""; position: absolute; inset: -20%; pointer-events: none; background: linear-gradient(115deg, transparent 42%, rgba(244,228,182,.22) 50%, transparent 58%); transform: translateX(-60%); opacity: 0; }
.course:hover .course-art::after, .course:focus-within .course-art::after { animation: wz-sweep 1.1s var(--wz-ease-out) 1; }
@keyframes wz-sweep { 0% { transform: translateX(-60%); opacity: 1; } 100% { transform: translateX(60%); opacity: 1; } }
.course-art img { transition: transform 1.2s var(--wz-ease-out), filter 1.2s; }
.course:hover .course-art img, .course:focus-within .course-art img { transform: scale(1.035); filter: brightness(1.08); }

/* ---------- Services: each stage has its own behaviour ---------- */
.svx-motif { display: block; width: 9rem; height: 4.5rem; margin: 0 0 1.25rem; overflow: visible; color: var(--wz-gold); }
.svx-motif * { vector-effect: non-scaling-stroke; }
.sm-dot, .sm-leaf { fill: currentColor; opacity: .55; transform-box: fill-box; transition: transform 1.1s var(--wz-ease-out) var(--d, 0ms), opacity .8s var(--d, 0ms); }
.sm-hub, .sm-end { fill: currentColor; }
.sm-end { opacity: .35; transition: opacity .6s .9s; }
.sm-alt { fill: none; stroke: currentColor; stroke-opacity: .25; stroke-dasharray: 3 4; }
.sm-run, .sm-out { fill: none; stroke: currentColor; stroke-width: 1.4; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1s var(--wz-ease-out) var(--d, 0ms); }
.svx-item.is-open .sm-discover .sm-dot { transform: translate(var(--tx), var(--ty)); opacity: .9; }
.svx-item.is-open .sm-prepare .sm-dot { transform: translate(var(--tx), var(--ty)); opacity: .9; }
.svx-item.is-open .sm-run, .svx-item.is-open .sm-out { stroke-dashoffset: 0; }
.svx-item.is-open .sm-end { opacity: 1; }
.sm-leaf { opacity: .2; } .svx-item.is-open .sm-leaf { opacity: .9; transition-delay: calc(var(--d, 0ms) + .5s); }

/* ---------- Closing: pathways converge into a calm core ---------- */
.fin-net { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.fin-net svg { width: 100%; height: 100%; }
.fn-l { fill: none; stroke: var(--wz-gold); stroke-opacity: .42; stroke-width: 1; vector-effect: non-scaling-stroke; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1.6s var(--wz-ease-out); }
.fn-s { fill: none; stroke: var(--wz-signal); stroke-width: 2.4; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 2 200; stroke-dashoffset: 2; opacity: 0; }
.fn-glow { transform-box: fill-box; transform-origin: center; opacity: 0; transition: opacity 1.4s 1s; }
.fn-core { fill: var(--wz-champ); opacity: 0; transition: opacity 1s 1.2s; }
[data-wz-node].is-live .fn-l { stroke-dashoffset: 0; }
[data-wz-node].is-live .fn-glow { opacity: 1; } [data-wz-node].is-live .fn-core { opacity: .9; }
html:not(.wz-m-reduced) [data-wz-node].is-live .fn-s { animation: cr-flow 8s linear infinite; }
html:not(.wz-m-reduced) [data-wz-node].is-live .fn-s:nth-of-type(2n) { animation-delay: 2.5s; }
html:not(.wz-m-reduced) [data-wz-node].is-live .fn-glow { animation: cr-breathe 10s var(--wz-ease-inout) infinite alternate 2s; }
@media (max-width: 767px) { .fin-net { opacity: .55; } }

/* ---------- Course hero motifs ---------- */
.cd-art { position: relative; }
.cd-motif { position: absolute; left: 6%; bottom: 6%; width: min(46%, 15rem); height: auto; overflow: visible; color: var(--wz-champ); filter: drop-shadow(0 0 6px rgba(0,0,0,.6)); }
.cd-motif * { vector-effect: non-scaling-stroke; }
.cm-l, .cm-doc { fill: none; stroke: currentColor; stroke-opacity: .45; stroke-width: 1; }
.cm-doc { stroke-opacity: .55; stroke-linecap: round; }
.cm-chosen { stroke-opacity: .9; stroke-width: 1.4; }
.cm-loop { stroke-dasharray: 3 4; }
.cm-s { fill: none; stroke: var(--wz-signal); stroke-width: 2.6; stroke-linecap: round; stroke-dasharray: 3 200; stroke-dashoffset: 3; opacity: 0; }
.cm-n { fill: rgba(17,19,16,.75); stroke: currentColor; stroke-width: 1.2; }
.cm-hub { fill: currentColor; }
.cm-step { fill: rgba(17,19,16,.7); stroke: currentColor; stroke-width: 1; }
.cm-tick { fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 100; stroke-dashoffset: 0; }
.cm-scan { fill: currentColor; opacity: .14; }
html.wz-js:not(.wz-m-reduced) .cd-motif .cm-s { animation: cr-flow 4.8s linear infinite; animation-delay: var(--d, 0s); }
html.wz-js:not(.wz-m-reduced) .cd-motif .cm-s2 { animation-delay: 2.4s; }
html.wz-js:not(.wz-m-reduced) .cm-claude-foundations .cm-scan { animation: cm-read 7s var(--wz-ease-inout) infinite; }
@keyframes cm-read { 0% { transform: translateY(0); } 85% { transform: translateY(84px); opacity: .14; } 100% { transform: translateY(84px); opacity: 0; } }
html.wz-js:not(.wz-m-reduced) .cd-motif .cm-hub { animation: cm-pulse 5s var(--wz-ease-out) infinite; transform-box: fill-box; transform-origin: center; }
@keyframes cm-pulse { 0%, 100% { opacity: .85; } 10% { opacity: 1; filter: drop-shadow(0 0 6px var(--wz-champ)); } }
html.wz-js:not(.wz-m-reduced) .cm-ai-operations .cm-tick { animation: cm-check 6s var(--wz-ease-out) infinite; }
.cm-ai-operations .cm-t1 { animation-delay: .5s !important; } .cm-ai-operations .cm-t2 { animation-delay: 1s !important; }
.cm-ai-operations .cm-t3 { animation-delay: 1.5s !important; } .cm-ai-operations .cm-t4 { animation-delay: 2s !important; }
@keyframes cm-check { 0% { stroke-dashoffset: 100; } 20%, 85% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 0; opacity: 0; } }
html.wz-js:not(.wz-m-reduced) .cm-chatgpt-foundations .cm-tick { animation: cm-check 4.8s var(--wz-ease-out) infinite 2s; }

/* ---------- Form success (only ever set after the server confirms) ---------- */
.wz-status[data-state="success"] { position: relative; padding-left: 2.6rem; }
.wz-status[data-state="success"]::before { content: ""; position: absolute; left: .9rem; top: 1.05rem; width: .9rem; height: .45rem; border-left: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(-45deg) scale(0); transform-origin: left bottom; animation: wz-tick .5s var(--wz-ease-out) .1s forwards; }
@keyframes wz-tick { to { transform: rotate(-45deg) scale(1); } }

/* ---------- Sound toggle ---------- */
.snd-btn { display: inline-flex; align-items: center; gap: .5rem; min-height: 2.6rem; padding: 0 .9rem; border: 1px solid var(--line); border-radius: var(--wz-radius); background: transparent; color: inherit; font: 500 .78rem/1 var(--wz-sans); letter-spacing: .04em; cursor: pointer; }
.snd-btn:hover, .snd-btn:focus-visible { border-color: currentColor; }
.snd-ico { display: inline-flex; align-items: flex-end; gap: 2px; height: 12px; }
.snd-ico i { display: block; width: 2px; height: 3px; background: currentColor; border-radius: 1px; transition: height .3s; }
.snd-btn[aria-pressed="true"] .snd-ico i:nth-child(1) { height: 7px; } .snd-btn[aria-pressed="true"] .snd-ico i:nth-child(2) { height: 12px; } .snd-btn[aria-pressed="true"] .snd-ico i:nth-child(3) { height: 9px; }
html:not(.wz-m-reduced) .snd-btn[aria-pressed="true"] .snd-ico i { animation: snd-eq 1.6s var(--wz-ease-inout) infinite alternate; }
.snd-btn[aria-pressed="true"] .snd-ico i:nth-child(2) { animation-delay: -.5s; } .snd-btn[aria-pressed="true"] .snd-ico i:nth-child(3) { animation-delay: -1s; }
@keyframes snd-eq { from { transform: scaleY(.5); } to { transform: scaleY(1); } }
.snd-ico i { transform-origin: bottom; }
.hdr-actions { gap: .6rem; }
@media (max-width: 767px) { .snd-btn { padding: 0 .7rem; } .snd-label { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } }

/* ---------- Reduced: no continuous motion anywhere ---------- */
html.wz-m-reduced .cr-sig, html.wz-m-reduced .pj-s, html.wz-m-reduced .fn-s, html.wz-m-reduced .cm-s, html.wz-m-reduced .sc-sig, html.wz-m-reduced .cd-sig { display: none; }
html.wz-m-reduced .wz-btn::after, html.wz-m-reduced .course-art::after { display: none; }
html.wz-m-reduced .cd-line, html.wz-m-reduced .pj-l, html.wz-m-reduced .pj-b, html.wz-m-reduced .fn-l, html.wz-m-reduced .sm-run, html.wz-m-reduced .sm-out { transition: none !important; }
html.wz-m-reduced .sm-dot, html.wz-m-reduced .sm-leaf, html.wz-m-reduced .tab-light, html.wz-m-reduced .course-art img { transition: none !important; }
@media (prefers-reduced-motion: reduce) { .wz-btn.is-ack, .chip.is-ack, .tab.is-ack { animation: none; } }

/* Hero core placement (desktop/tablet): a fixed-ratio stage anchored right, sized so
   the headline always keeps clear space; edges fade into the obsidian background. */
@media (min-width: 768px) {
  .hero .wz-hero-media, .hero .wz-core { inset: auto; right: 0; top: 50%; left: auto; bottom: auto; height: min(80%, 46vw); width: auto; aspect-ratio: 1344 / 752; transform: translateY(-46%); }
  .hero .wz-hero-media { -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 26%), linear-gradient(0deg, transparent 0%, #000 14%, #000 86%, transparent 100%); -webkit-mask-composite: source-in; mask-image: linear-gradient(90deg, transparent 0%, #000 26%), linear-gradient(0deg, transparent 0%, #000 14%, #000 86%, transparent 100%); mask-composite: intersect; }
  .hero .wz-hero-media picture, .hero .wz-hero-media img, .hero .wz-hero-media video { object-position: 50% 50%; }
  .hero .wz-hero-media::after { background: none; }
  .cr-svg { overflow: visible; }
}
@media (max-width: 767px) {
  .hdr-actions { gap: .4rem; }
  .snd-btn { width: 2.6rem; padding: 0; justify-content: center; }
}
@media (max-width: 1023px) { .hdr-inner > nav { display: none; } }
@media (max-width: 420px) { .hdr-inner { gap: .5rem; } .hdr-actions .menu-btn { padding-left: .7rem; gap: .5rem; } }
.fn-ring { fill: none; stroke: var(--wz-champ); stroke-width: 1; vector-effect: non-scaling-stroke; opacity: 0; transform-box: fill-box; transform-origin: center; transition: opacity 1s 1.4s; }
[data-wz-node].is-live .fn-ring { opacity: .45; }
html:not(.wz-m-reduced) [data-wz-node].is-live .fn-ring { animation: cr-beat 8s var(--wz-ease-out) infinite 2.5s; }

/* ---------- Course visual story: before → after ---------- */
.cd-story { padding-block: clamp(3.5rem, 7vw, 6rem); }
.st-grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.st-title { margin-top: 1rem; color: var(--wz-porcelain); }
.st-title em { color: var(--wz-sage); }
.st-desc { margin-top: 1rem; color: rgba(245,242,234,.72); max-width: 34ch; }
.st-replay { margin-top: 1.5rem; }
.st-stage { position: relative; }
.st-svg { width: 100%; height: auto; overflow: visible; color: var(--wz-champ); }
.st-svg * { vector-effect: non-scaling-stroke; }
.st-i { fill: rgba(214,223,207,.32); transform-box: fill-box; transform-origin: center; transition: transform 1.25s cubic-bezier(.22,1,.36,1) var(--d, 0ms), opacity .9s var(--d, 0ms), fill .9s; }
.st-strong { fill: var(--wz-champ); }
.st-gold { fill: var(--wz-gold); }
.st-page { fill: rgba(214,223,207,.1); stroke: rgba(214,223,207,.5); stroke-width: 1; }
.st-step { fill: rgba(24,63,54,.7); stroke: rgba(214,223,207,.55); stroke-width: 1; }
.st-chip { fill: rgba(214,223,207,.18); stroke: rgba(214,223,207,.45); stroke-width: 1; }
.st-node { fill: rgba(17,19,16,.9); stroke: var(--wz-champ); stroke-width: 1.3; }
.st-node.st-strong { fill: var(--wz-champ); }
.st-leaf { stroke-width: 1; }
.st-frame { fill: rgba(245,242,234,.03); stroke: rgba(214,223,207,.35); stroke-width: 1; opacity: 0; transition: opacity 1s .9s; }
.st-link { fill: none; stroke: var(--wz-gold); stroke-opacity: .6; stroke-width: 1.2; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1s var(--wz-ease-out) var(--d, 0ms); }
.st-thin { stroke-opacity: .3; stroke-width: 1; }
.st-loop { stroke-dasharray: 3 5; stroke-dashoffset: 0; opacity: 0; transition: opacity 1s var(--d, 0ms); }
.st-axis { stroke: rgba(214,223,207,.5); }
.st-tick { fill: none; stroke: var(--wz-sage); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset .6s var(--wz-ease-out) var(--d, 1500ms); }
.st-grow { transform: scale(.4); }
/* Scattered state only exists when JS is running and motion is allowed */
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .st-i { transform: translate(var(--dx), var(--dy)) rotate(var(--r)); opacity: .55; }
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .st-grow { transform: scale(.4); }
[data-wz-story].is-live .st-grow, html:not(.wz-js) .st-grow, html.wz-m-reduced .st-grow { transform: none; }
[data-wz-story].is-live .st-frame, html:not(.wz-js) .st-frame, html.wz-m-reduced .st-frame { opacity: 1; }
[data-wz-story].is-live .st-link, html:not(.wz-js) .st-link, html.wz-m-reduced .st-link { stroke-dashoffset: 0; }
[data-wz-story].is-live .st-loop, html:not(.wz-js) .st-loop, html.wz-m-reduced .st-loop { opacity: 1; }
[data-wz-story].is-live .st-tick, html:not(.wz-js) .st-tick, html.wz-m-reduced .st-tick { stroke-dashoffset: 0; }
html.wz-m-reduced .st-i, html.wz-m-reduced .st-link, html.wz-m-reduced .st-tick, html.wz-m-reduced .st-frame { transition: none !important; }
html.wz-m-reduced .st-replay { display: none; }
html:not(.wz-js) .st-replay { display: none; }
@media (max-width: 900px) { .st-grid { grid-template-columns: 1fr; } }
/* Course hero artwork breathes gently */
html.wz-js:not(.wz-m-reduced) .cd-art img { animation: cd-breathe 14s var(--wz-ease-inout) infinite alternate; }
@keyframes cd-breathe { from { transform: scale(1); } to { transform: scale(1.045) translateY(-1%); } }

/* =====================================================================
   v3 — site-wide treatments
   ===================================================================== */
/* ---------- Platform pages ---------- */
.pf-hero { position: relative; overflow: hidden; min-height: min(92svh, 860px); display: flex; align-items: center; padding-block: 8rem 5rem; }
.pf-art { position: absolute; right: 0; top: 0; bottom: 0; width: 62%; margin: 0; z-index: 0; -webkit-mask-image: linear-gradient(90deg, transparent, #000 30%); mask-image: linear-gradient(90deg, transparent, #000 30%); }
.pf-art img { width: 100%; height: 100%; object-fit: cover; }
html.wz-js:not(.wz-m-reduced) .pf-art img { animation: cd-breathe 16s var(--wz-ease-inout) infinite alternate; }
.pf-copy { position: relative; z-index: 2; }
.pf-copy .wz-h1, .pf-copy .wz-lead { max-width: 15ch; } .pf-copy .wz-lead { max-width: 34rem; }
.pf-hero .hero-plats { display: flex; gap: 1rem; align-items: center; margin: 1.5rem 0 1.25rem; }
@media (max-width: 900px) { .pf-art { position: relative; width: 100%; height: 46vh; -webkit-mask-image: linear-gradient(0deg, transparent, #000 35%); mask-image: linear-gradient(0deg, transparent, #000 35%); } .pf-hero { flex-direction: column; align-items: stretch; padding-top: 5rem; } .pf-copy { margin-top: -4rem; } }
.caps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; margin-top: 2.5rem; }
.cap { border: 1px solid var(--line); background: #FBF9F4; padding: 1.5rem; display: grid; gap: .6rem; align-content: start; }
.cap h3 { font: 500 1.45rem/1.15 var(--wz-serif); }
.cap-d { color: var(--wz-ink-soft); }
.cap-demo { margin-top: .75rem; display: grid; grid-template-columns: minmax(0, 1fr) 2.5rem minmax(0, 1fr); align-items: center; gap: .5rem; }
.cap-demo ul { list-style: none; margin: .5rem 0 0; padding: 0; display: grid; gap: .35rem; font-size: .86rem; }
.cap-in li { color: var(--wz-ink-soft); font-style: italic; }
.cap-out li { color: var(--wz-ink); padding-left: .8rem; position: relative; }
.cap-out li::before { content: ""; position: absolute; left: 0; top: .55em; width: .35rem; height: .35rem; border-radius: 50%; background: var(--wz-gold); }
.cap-flow { position: relative; height: 1px; background: color-mix(in srgb, var(--wz-forest) 35%, transparent); }
.cap-flow i { position: absolute; left: 0; top: -2px; width: 5px; height: 5px; border-radius: 50%; background: var(--wz-gold); box-shadow: 0 0 8px var(--wz-gold); opacity: 0; }
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .cap-out li { opacity: 0; transform: translateX(-6px); }
.cap-out li { transition: opacity .5s var(--wz-ease-out), transform .5s var(--wz-ease-out); transition-delay: calc(var(--d, 0ms) + 500ms + var(--i, 0) * 140ms); }
[data-wz-story].is-live .cap-flow i { animation: cap-go 1s cubic-bezier(.5,0,.2,1) calc(var(--d, 0ms) + 150ms) 1; }
.cap { --d: 0ms; }
@keyframes cap-go { 0% { left: 0; opacity: 0; } 15% { opacity: 1; } 100% { left: calc(100% - 5px); opacity: 0; } }
.caps + .st-replay { margin-top: 1.5rem; }
@media (max-width: 900px) { .caps { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .cap-demo { grid-template-columns: 1fr; } .cap-flow { width: 1px; height: 1.5rem; justify-self: start; margin-left: .2rem; } }
.pf-acct { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 2rem 4rem; padding-block: clamp(3rem, 6vw, 5rem); }
.pf-indep { margin-top: 1rem; font-size: .85rem; color: var(--wz-ink-soft); }
@media (max-width: 900px) { .pf-acct { grid-template-columns: 1fr; } }
.pw { list-style: none; margin: 2.5rem 0 0; padding: 0 0 0 2.5rem; position: relative; display: grid; gap: 0; }
.pw::before { content: ""; position: absolute; left: .55rem; top: .6rem; bottom: .6rem; width: 1px; background: var(--wz-gold); transform-origin: top; transition: transform 1.6s var(--wz-ease-out) .2s; }
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .pw::before { transform: scaleY(0); }
.pw-step { position: relative; padding: 1.25rem 0 1.5rem; border-top: 1px solid var(--line); display: grid; gap: .35rem; transition: opacity .7s var(--d, 0ms), transform .7s var(--wz-ease-out) var(--d, 0ms); }
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .pw-step { opacity: .25; transform: translateX(-8px); }
.pw-node { position: absolute; left: calc(-2.5rem + .2rem); top: 1.55rem; width: .75rem; height: .75rem; border-radius: 50%; border: 1px solid var(--wz-gold-ink); background: var(--wz-porcelain); }
.pw-first .pw-node { background: var(--wz-gold); box-shadow: 0 0 0 5px rgba(190,164,119,.18); }
.pw-step h3 { font: 500 1.5rem/1.15 var(--wz-serif); } .pw-step h3 a { text-decoration: none; }
.pw-step h3 a:hover { text-decoration: underline; text-underline-offset: .2em; }
.pw-step > p { color: var(--wz-ink-soft); max-width: 60ch; }
.pw-step .meta { display: flex; gap: 1.25rem; font-size: .8rem; color: var(--wz-ink-soft); }
.pw-more { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 1rem 2rem; }

/* ---------- Individual service pages ---------- */
.sv-hero { position: relative; overflow: hidden; padding-block: 8rem clamp(3rem, 6vw, 5rem); }
.sv-grid { position: relative; z-index: 2; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 3rem; align-items: center; }
.sv-art { position: relative; margin: 0; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--wz-radius); }
.sv-art img { width: 100%; height: 100%; object-fit: cover; }
html.wz-js:not(.wz-m-reduced) .sv-art img { animation: cd-breathe 15s var(--wz-ease-inout) infinite alternate; }
.sv-motif { position: absolute; left: 1.25rem; bottom: 1.25rem; width: 10rem; height: 5rem; margin: 0; color: var(--wz-champ); filter: drop-shadow(0 0 6px rgba(0,0,0,.7)); }
html.wz-js:not(.wz-m-reduced) .sv-hero .sv-motif .sm-dot { animation: sm-cycle 6s var(--wz-ease-inout) infinite; animation-delay: var(--d, 0ms); }
@keyframes sm-cycle { 0%, 15% { transform: none; opacity: .5; } 45%, 75% { transform: translate(var(--tx), var(--ty)); opacity: 1; } 100% { transform: none; opacity: .5; } }
.sv-hero .sv-motif .sm-run, .sv-hero .sv-motif .sm-out { stroke-dashoffset: 0; }
html.wz-js:not(.wz-m-reduced) .sv-hero .sv-motif .sm-run, html.wz-js:not(.wz-m-reduced) .sv-hero .sv-motif .sm-out { animation: sm-draw 5s var(--wz-ease-out) infinite; animation-delay: var(--d, 0ms); }
@keyframes sm-draw { 0% { stroke-dashoffset: 100; } 40%, 85% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 0; opacity: 0; } }
.sv-hero .sm-leaf, .sv-hero .sm-end { opacity: .9; }
@media (max-width: 900px) { .sv-grid { grid-template-columns: 1fr; } .sv-art { order: -1; } }
.sv-strip { background: var(--wz-porcelain); border-bottom: 1px solid rgba(17,19,16,.12); }
.sv-strip ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sv-strip a { position: relative; display: flex; gap: .6rem; align-items: baseline; padding: 1.1rem .5rem 1.1rem 0; text-decoration: none; color: var(--wz-ink-soft); font: 500 .95rem/1.2 var(--wz-sans); }
.sv-strip a::after { content: ""; position: absolute; left: 0; right: 1rem; bottom: -1px; height: 2px; background: var(--wz-gold); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--wz-ease-out); }
.sv-strip a:hover, .sv-strip [aria-current] a { color: var(--wz-ink); }
.sv-strip a:hover::after, .sv-strip [aria-current] a::after { transform: none; }
.sv-proc { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 2rem 4rem; padding-block: clamp(3.5rem, 7vw, 6rem); }
.sv-problem { margin-top: 1rem; font: 400 clamp(1.5rem, 2.4vw, 2.1rem)/1.2 var(--wz-serif); }
.sv-steps { list-style: none; margin: 2rem 0 0; padding: 0 0 0 2.25rem; position: relative; }
.sv-steps::before { content: ""; position: absolute; left: .45rem; top: .5rem; bottom: .5rem; width: 1px; background: var(--wz-gold); transform-origin: top; transition: transform 1.2s var(--wz-ease-out); }
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .sv-steps::before { transform: scaleY(0); }
.sv-steps li { position: relative; padding: .85rem 0; border-top: 1px solid var(--line); transition: opacity .6s var(--d), transform .6s var(--wz-ease-out) var(--d); }
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .sv-steps li { opacity: .2; transform: translateX(-6px); }
.sv-node { position: absolute; left: -2.25rem; top: 1.2rem; width: .7rem; height: .7rem; margin-left: .1rem; border-radius: 50%; background: var(--wz-gold); box-shadow: 0 0 0 4px rgba(190,164,119,.18); }
@media (max-width: 900px) { .sv-proc { grid-template-columns: 1fr; } }
.sv-del { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 2rem 4rem; align-items: start; padding-block: clamp(3.5rem, 7vw, 6rem); }
.sv-del .st-replay { margin-top: 1.5rem; }
.sv-sheet { background: #FBF9F4; padding: 1.5rem; box-shadow: 0 30px 60px -30px rgba(17,19,16,.35); }
.sv-sheet tbody tr { transition: opacity .5s var(--d), transform .5s var(--wz-ease-out) var(--d); }
html.wz-js:not(.wz-m-reduced) [data-wz-story]:not(.is-live) .sv-sheet tbody tr { opacity: 0; transform: translateY(6px); }
@media (max-width: 900px) { .sv-del { grid-template-columns: 1fr; } }
.sv-start { list-style: none; margin: 2.5rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; }
.sv-start li { border-top: 1px solid var(--line); padding-top: 1.25rem; display: grid; gap: .5rem; }
.sv-start h3 { font: 500 1.4rem/1.2 var(--wz-serif); } .sv-start p { color: rgba(245,242,234,.72); }
@media (max-width: 900px) { .sv-start { grid-template-columns: 1fr; } }
.svx-more { align-self: center; font-weight: 500; }
.svx-copy .btn-row { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; }

/* ---------- Team training ---------- */
.tm-hero { position: relative; overflow: hidden; min-height: min(80svh, 760px); display: flex; align-items: flex-end; }
.tm-art { position: absolute; inset: 0 0 0 28%; margin: 0; z-index: 1; -webkit-mask-image: linear-gradient(90deg, transparent, #000 30%); mask-image: linear-gradient(90deg, transparent, #000 30%); }
.tm-art img { width: 100%; height: 100%; object-fit: cover; object-position: 70% 50%; }
html.wz-js:not(.wz-m-reduced) .tm-art img { animation: cd-breathe 16s var(--wz-ease-inout) infinite alternate; }
@media (max-width: 900px) { .tm-art { inset: 0; -webkit-mask-image: linear-gradient(0deg, transparent 20%, #000 75%); mask-image: linear-gradient(0deg, transparent 20%, #000 75%); opacity: .7; } }
.tm-net { padding-block: clamp(3.5rem, 7vw, 6rem); }
.pj-label { margin-bottom: 1.5rem; }
.process[data-wz-journey-steps] { position: relative; }
.pj-btn { display: inline-flex; gap: .6rem; align-items: baseline; background: none; border: 0; padding: .35rem 0; font: inherit; color: inherit; cursor: pointer; text-align: left; }
.pj-btn .wz-num { color: var(--wz-gold); }
.pj-item { transition: opacity .5s var(--wz-ease-out); position: relative; }
.process.is-ready .pj-item:not(.is-current) { opacity: .55; }
.process.is-ready .pj-item:hover, .process.is-ready .pj-item:focus-within { opacity: 1; }
.pj-item::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; height: 2px; background: linear-gradient(90deg, var(--wz-gold), transparent); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--wz-ease-out); }
.pj-item.is-current::before { transform: none; }
.pj-item.is-current .grow { stroke: var(--wz-gold); }
.pj-btn[aria-pressed="true"] { text-decoration: underline; text-decoration-color: var(--wz-gold); text-underline-offset: .3em; }

/* ---------- Catalogue ---------- */
.cat-hero { position: relative; overflow: hidden; }
.cat-seed { position: absolute; right: clamp(-4rem, 2vw, 4rem); top: 50%; width: clamp(12rem, 30vw, 26rem); aspect-ratio: 1; margin: 0; transform: translateY(-46%); z-index: 1; pointer-events: none; }
.cat-seed img { position: absolute; inset: 14%; width: 72%; height: 72%; object-fit: contain; filter: drop-shadow(0 20px 40px rgba(24,63,54,.35)); }
html.wz-js:not(.wz-m-reduced) .cat-seed img { animation: wz-float 14s var(--wz-ease-inout) infinite alternate; }
.cat-orbit { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.co-ring { fill: none; stroke: var(--wz-gold-ink); stroke-opacity: .25; stroke-dasharray: 2 6; vector-effect: non-scaling-stroke; }
.co-dot { fill: var(--wz-gold); transform-origin: 200px 200px; transform: rotate(var(--a)); }
html.wz-js:not(.wz-m-reduced) .co-dot { animation: co-orbit var(--t) linear infinite; }
@keyframes co-orbit { from { transform: rotate(var(--a)); } to { transform: rotate(calc(var(--a) + 360deg)); } }
.cat-hero .wrap { z-index: 2; }
.cat-guides { margin-top: 2rem; display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.5rem; }
.cat-guides .wz-link { display: inline-flex; align-items: center; gap: .45rem; font-weight: 500; }
@media (max-width: 900px) { .cat-seed { opacity: .35; right: -5rem; } }
#cat-count.is-pulse, #course-count.is-pulse { animation: cnt-pulse .6s var(--wz-ease-out); }
@keyframes cnt-pulse { 0% { color: var(--wz-gold-ink); transform: translateY(-2px); } 100% { color: inherit; transform: none; } }
#cat-count, #course-count { display: inline-block; }
.cat-row { position: relative; }
.cat-row::after { content: ""; position: absolute; left: 0; bottom: -1px; height: 1px; width: 100%; background: var(--wz-gold); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--wz-ease-out); pointer-events: none; }
.cat-row:hover::after, .cat-row:focus-within::after { transform: none; }
.chip[aria-pressed="true"] { box-shadow: 0 0 0 1px var(--wz-gold), 0 0 14px rgba(190,164,119,.3); }

/* ---------- Contact ---------- */
.contact-band { position: relative; overflow: hidden; }
.ct-bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.ct-bg img { width: 100%; height: 100%; object-fit: cover; opacity: .9; }
.ct-glow { position: absolute; inset: 0; background: radial-gradient(28rem 22rem at var(--gx, 78%) var(--gy, 40%), rgba(233,214,166,.10), transparent 70%); transition: background-position 1s; }
html.wz-js:not(.wz-m-reduced) .ct-bg img { animation: cd-breathe 20s var(--wz-ease-inout) infinite alternate; }
.contact-band .wz-contours { z-index: 1; opacity: .5; }

/* ---------- Worksheet ---------- */
.ws-live { color: var(--wz-ink-soft); letter-spacing: .08em; }
.ws-template b { transition: color .4s, background-color .6s; border-radius: 2px; }
.ws-template b.is-filled { color: var(--wz-forest); background: color-mix(in srgb, var(--wz-gold) 18%, transparent); }
.ws-template b.is-pulse { animation: ws-pulse .7s var(--wz-ease-out); }
@keyframes ws-pulse { 0% { background-color: color-mix(in srgb, var(--wz-gold) 45%, transparent); } 100% { background-color: color-mix(in srgb, var(--wz-gold) 18%, transparent); } }
[data-ws-copy] { margin-top: 1rem; }
.ws-copied { margin-left: .75rem; font-size: .85rem; color: var(--wz-forest); }

/* ---------- Footer motif ---------- */
.site-footer { position: relative; }
.ft-motif { position: absolute; left: 0; right: 0; top: 0; height: 1px; pointer-events: none; color: var(--wz-gold); }
.ft-line { position: absolute; inset: 0; background: linear-gradient(90deg, transparent, currentColor 20%, currentColor 80%, transparent); opacity: .35; transform: scaleX(0); transition: transform 1.6s var(--wz-ease-out); }
.ft-sig { position: absolute; top: -2px; left: 0; width: 5px; height: 5px; border-radius: 50%; background: var(--wz-signal); box-shadow: 0 0 10px 2px rgba(233,214,166,.6); opacity: 0; }
.ft-node { position: absolute; left: 50%; top: -4px; width: 9px; height: 9px; margin-left: -4.5px; border-radius: 50%; background: currentColor; opacity: 0; transition: opacity .6s 1.2s; box-shadow: 0 0 14px currentColor; }
.site-footer.is-live .ft-line { transform: none; } .site-footer.is-live .ft-node { opacity: .9; }
html:not(.wz-m-reduced) .site-footer.is-live .ft-sig { animation: ft-run 9s linear infinite 1.6s; }
@keyframes ft-run { 0% { left: 0; opacity: 0; } 8% { opacity: 1; } 46% { left: 50%; opacity: 0; } 54% { left: 50%; opacity: 0; } 58% { opacity: 1; } 100% { left: 100%; opacity: 0; } }

/* ---------- About: editorial transition ---------- */
.ap-steps li { transition: opacity .7s var(--wz-ease-out), transform .7s var(--wz-ease-out); }
html.wz-js:not(.wz-m-reduced) .about-grid:not(.is-live) .ap-steps li { opacity: .2; transform: translateY(6px); }
.about-grid.is-live .ap-steps li:nth-child(2) { transition-delay: .12s; } .about-grid.is-live .ap-steps li:nth-child(3) { transition-delay: .24s; }
.about-grid.is-live .ap-steps li:nth-child(4) { transition-delay: .36s; } .about-grid.is-live .ap-steps li:nth-child(5) { transition-delay: .48s; }

/* ---------- Course module progression + enquiry focus ---------- */
.cd-modstrip a.is-current { background: var(--wz-sage); }
.cd-modstrip a.is-current .wz-num { color: var(--wz-forest); }
#enquire:target, .enquiry.is-target { animation: enq-glow 1.6s var(--wz-ease-out); }
@keyframes enq-glow { 0% { box-shadow: 0 0 0 0 rgba(190,164,119,.6); } 40% { box-shadow: 0 0 0 8px rgba(190,164,119,.18); } 100% { box-shadow: 0 0 0 0 rgba(190,164,119,0); } }
.wz-input:focus-visible, .wz-input:focus { outline: none; border-color: var(--wz-forest); box-shadow: 0 0 0 3px color-mix(in srgb, var(--wz-gold) 40%, transparent); transition: box-shadow .25s, border-color .25s; }
.wz-input[aria-invalid="true"] { border-color: #9B3B2E; box-shadow: 0 0 0 3px rgba(155,59,46,.15); }

/* Reduced: everything above settles into its final state */
html.wz-m-reduced .pf-art img, html.wz-m-reduced .sv-art img, html.wz-m-reduced .tm-art img, html.wz-m-reduced .ct-bg img, html.wz-m-reduced .cat-seed img, html.wz-m-reduced .cd-art img { animation: none !important; }
html.wz-m-reduced .co-dot, html.wz-m-reduced .ft-sig, html.wz-m-reduced .sv-motif * { animation: none !important; }
html.wz-m-reduced .ft-line { transform: none; transition: none; } html.wz-m-reduced .ft-node { opacity: .9; }
.sv-sheet { margin: 0; opacity: 1; transform: none; border-color: rgba(17,19,16,.14); }
.sv-sheet figcaption { display: flex; justify-content: space-between; gap: 1rem; color: var(--wz-gold-ink); }
.sv-sheet .svx-ill { color: var(--wz-ink-soft); }
.sv-sheet td, .sv-sheet th { color: var(--wz-ink-soft); border-bottom-color: rgba(17,19,16,.1); }
.sv-sheet th { color: var(--wz-ink); }
.pf-acct { padding-block: clamp(2.5rem, 5vw, 4rem); }
.contact-points { margin-top: 1.25rem; }
.snd-btn { border-color: color-mix(in srgb, currentColor 30%, transparent); }
/* Platform badges on artwork: logos keep their own size (not the artwork rules) */
.course-art .wz-logo img, .cat-thumb .wz-logo img, .cd-art .wz-logo img, .feat-art .wz-logo img { position: static !important; inset: auto; width: 100% !important; height: 100% !important; object-fit: contain; transform: none !important; filter: none !important; animation: none !important; transition: none; }
.wz-plat--on-art { position: absolute; z-index: 2; }

/* =====================================================================
   v3.1 — launch refinements
   ===================================================================== */
/* Sound control: speaker icon, clear on/off state */
.snd-ico { width: 18px; height: 18px; display: block; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.snd-ico .snd-spk { fill: currentColor; stroke: none; }
.snd-ico i { display: none; }
.snd-btn .snd-w1, .snd-btn .snd-w2 { opacity: 0; transition: opacity .25s; }
.snd-btn .snd-x { opacity: 1; transition: opacity .25s; }
.snd-btn[aria-pressed="true"] .snd-w1, .snd-btn[aria-pressed="true"] .snd-w2 { opacity: 1; }
.snd-btn[aria-pressed="true"] .snd-x { opacity: 0; }
.snd-btn[aria-pressed="true"] { border-color: var(--wz-gold); color: inherit; }
html:not(.wz-m-reduced) .snd-btn[aria-pressed="true"] .snd-w2 { animation: snd-wave 2.4s var(--wz-ease-inout) infinite; }
@keyframes snd-wave { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
.snd-btn[aria-pressed="true"] .snd-ico i { animation: none; }

/* Services: a signal travels to the selected stage */
.svx-sig { position: absolute; top: calc(1.05rem - 3px); left: var(--sx, 12.5%); width: 10px; height: 10px; margin-left: -5px; border-radius: 50%; background: var(--wz-signal); box-shadow: 0 0 0 4px rgba(190,164,119,.2), 0 0 16px rgba(233,214,166,.8); pointer-events: none; transition: left .9s cubic-bezier(.5,0,.2,1); z-index: 1; }
@media (max-width: 900px) { .svx-sig { display: none; } }
html.wz-m-reduced .svx-sig { transition: none; }

/* Quieter contour lines behind copy and forms */
.cd-hero .wz-contours, .page-hero .wz-contours, .sv-hero .wz-contours, .pf-hero .wz-contours, .contact-band .wz-contours, .services-band .wz-contours, .tm-hero .wz-contours { opacity: .4; }
.contact-band .wz-contours { opacity: .22; }
@media (max-width: 767px) { .cd-hero .wz-contours, .contact-band .wz-contours, .page-hero .wz-contours { opacity: .2; } }

/* Course hero artwork blends into the forest section (feathered edges, no hard rectangle) */
.cd-art { background: transparent; -webkit-mask-image: radial-gradient(120% 120% at 50% 50%, #000 52%, transparent 74%); mask-image: radial-gradient(120% 120% at 50% 50%, #000 52%, transparent 74%); }
.sv-art { border-radius: 0; -webkit-mask-image: radial-gradient(115% 115% at 50% 50%, #000 50%, transparent 74%); mask-image: radial-gradient(115% 115% at 50% 50%, #000 50%, transparent 74%); }
.sv-art .sv-motif { left: 12%; bottom: 14%; }

/* Mobile course hero: title → value → details → action → artwork */
@media (max-width: 1023px) {
  .cd-hero { padding-block: 6.75rem 2.5rem; }
  .cd-hero-grid { gap: 1.5rem; }
  .cd-art { order: 2; aspect-ratio: 16 / 9; max-height: 34vh; width: 100%; }
  .cd-hero .wz-h1 { font-size: clamp(2.2rem, 8.6vw, 3.4rem); overflow-wrap: break-word; hyphens: manual; }
  .cd-hero .wz-lead { margin-top: 1rem !important; font-size: 1.05rem; }
  .cd-hero .facts { display: grid; grid-template-columns: 1fr 1fr; margin-top: 1.5rem; }
  .cd-hero .facts div { padding: .75rem 1rem 0 0; margin: 0; }
  .cd-hero .facts div:last-child { grid-column: 1 / -1; }
  .cd-hero .btn-row { margin-top: 1.5rem !important; }
  .cd-hero .btn-row .wz-btn:first-child { flex: 1 1 100%; justify-content: center; }
  .cd-hero .btn-row .wz-btn:first-child .wz-btn__inner { width: 100%; justify-content: center; }
  .cd-hero .hero-plats { margin-bottom: 1rem; }
  .crumbs { margin-bottom: 1rem; }
}
@media (max-width: 1023px) { body.wz-bar-on { padding-bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px)); } }
.mobile-bar span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

/* Form consent and collection notice */
.wz-form-note { font-size: .82rem; line-height: 1.5; }
.wz-consent { align-items: flex-start; }
.cd-next { font-weight: 500; color: var(--wz-forest); }
/* Feathered edges (replaces the radial mask): fade every side into the section */
.cd-art, .sv-art {
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16%, #000 90%, transparent 100%), linear-gradient(0deg, transparent 0, #000 14%, #000 86%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(90deg, transparent 0, #000 16%, #000 90%, transparent 100%), linear-gradient(0deg, transparent 0, #000 14%, #000 86%, transparent 100%);
  mask-composite: intersect;
}
@media (max-width: 1023px) {
  .cd-art { -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 90%, transparent 100%), linear-gradient(0deg, transparent 0, #000 22%, #000 78%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 90%, transparent 100%), linear-gradient(0deg, transparent 0, #000 22%, #000 78%, transparent 100%); }
}
/* Privacy policy */
.pv { padding-block: 0 clamp(4rem, 8vw, 7rem); }
.pv-grid { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 7fr); gap: 3rem; align-items: start; }
.pv-toc { position: sticky; top: 6.5rem; }
.pv-toc ol { margin: 1rem 0 0; padding-left: 1.1rem; display: grid; gap: .5rem; font-size: .92rem; }
.pv-body { max-width: 44rem; }
.pv-sec { padding-block: 1.75rem; border-top: 1px solid var(--line); scroll-margin-top: 6.5rem; }
.pv-sec h2 { margin-bottom: .75rem; }
.pv-sec p { color: var(--wz-ink-soft); line-height: 1.65; }
.pv-sec p + p { margin-top: .75rem; }
.pv-date { margin-top: 2rem; font-size: .85rem; color: var(--wz-ink-soft); }
@media (max-width: 900px) { .pv-grid { grid-template-columns: 1fr; } .pv-toc { position: static; } }

/* =====================================================================
   v3.2 — Labelled transformation flows (input → transformation → outcome)
   ===================================================================== */
.fl-sec { padding-block: clamp(3.5rem, 7vw, 6rem); }
.fl-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1.5rem 3rem; align-items: end; margin-bottom: 2.75rem; }
.fl-h { margin-top: .9rem; color: var(--fg); } .fl-h em { color: var(--wz-sage); }
.wz-tone-light .fl-h em, .wz-tone-sage .fl-h em { color: var(--wz-forest); }
.fl-desc { margin-top: .9rem; max-width: 52ch; color: var(--fg-soft, rgba(245,242,234,.74)); }
.fl-ctrl { display: flex; flex-wrap: wrap; gap: .5rem; }
.fl-ctrl .chip { min-height: 2.75rem; }
.fl-ctrl .chip[disabled] { opacity: .45; cursor: default; }
.fl { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: 2.75rem; counter-reset: none; }
.fl-step { position: relative; display: grid; grid-template-rows: auto 1fr; gap: .8rem; transition: opacity .6s var(--wz-ease-out), transform .6s var(--wz-ease-out); }
.fl-label { display: flex; align-items: center; gap: .6rem; font: 500 .74rem/1.2 var(--wz-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--wz-champ); }
.wz-tone-light .fl-label, .wz-tone-sage .fl-label { color: var(--wz-gold-ink); }
.fl-n { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; border: 1px solid currentColor; font: 500 .75rem/1 var(--wz-sans); letter-spacing: 0; transition: background .4s, color .4s; }
.fl-card { position: relative; background: #F7F4EC; color: var(--wz-obsidian); border-radius: 6px; padding: 1rem 1rem 1.1rem; box-shadow: 0 18px 40px -22px rgba(0,0,0,.6); font-size: .84rem; line-height: 1.45; transition: box-shadow .5s, outline-color .5s; outline: 1px solid transparent; outline-offset: 3px; }
.fl-card ul, .fl-card ol { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.fl-title { font: 500 1rem/1.25 var(--wz-serif); margin: 0 0 .65rem; padding-bottom: .55rem; border-bottom: 1px solid rgba(17,19,16,.1); }
.fl-lines li { padding-left: .9rem; position: relative; }
.fl-lines li::before { content: ""; position: absolute; left: 0; top: .6em; width: .35rem; height: 1px; background: var(--wz-gold-ink); }
.fl-card mark { background: linear-gradient(transparent 55%, rgba(190,164,119,.55) 55%) no-repeat 0 0 / 100% 100%; color: inherit; padding: 0 .1em; }
.fl-tags ul { display: flex; flex-wrap: wrap; gap: .4rem; }
.fl-tags li { border: 1px solid rgba(17,19,16,.18); border-radius: 99px; padding: .25rem .6rem; background: #fff; }
.fl-steps ol { counter-reset: fls; }
.fl-steps li { counter-increment: fls; display: grid; grid-template-columns: 1.3rem 1fr; gap: .4rem; }
.fl-steps li::before { content: counter(fls); font: 500 .72rem/1.6 var(--wz-sans); color: var(--wz-gold-ink); }
.fl-checks li { display: grid; grid-template-columns: 1.1rem 1fr; gap: .45rem; align-items: start; }
.fl-mark { width: 1rem; height: 1rem; border-radius: 50%; margin-top: .1rem; position: relative; background: var(--wz-forest); }
.fl-mark::after { content: ""; position: absolute; left: .3rem; top: .2rem; width: .3rem; height: .5rem; border: solid #fff; border-width: 0 1.6px 1.6px 0; transform: rotate(45deg); }
.fl-checks li.is-fix .fl-mark { background: #B4874A; }
.fl-checks li.is-fix .fl-mark::after { left: .44rem; top: .18rem; width: 0; height: .4rem; border-width: 0 1.6px 0 0; transform: none; box-shadow: 0 .52rem 0 -.02rem #fff; }
.fl-rank li { display: grid; gap: .1rem; padding-bottom: .4rem; border-bottom: 1px solid rgba(17,19,16,.08); }
.fl-rk { font-weight: 500; } .fl-tag { font-size: .76rem; color: #5b5d55; }
.fl-cal table { width: 100%; border-collapse: collapse; font-size: .76rem; }
.fl-cal th, .fl-cal td { text-align: left; padding: .3rem .25rem; border-bottom: 1px solid rgba(17,19,16,.08); font-weight: 400; }
.fl-cal thead th { font-weight: 500; color: var(--wz-forest); }
.fl-cal tbody th { color: var(--wz-gold-ink); font-weight: 500; }
/* connectors with a travelling signal */
.fl-link { position: absolute; top: calc(1.6rem + .8rem + 2.5rem); right: -2.75rem; width: 2.75rem; height: 2px; pointer-events: none; }
.fl-link::before { content: ""; position: absolute; inset: 0 .35rem; background: linear-gradient(90deg, var(--wz-gold), var(--wz-champ)); transform-origin: left; transition: transform .7s var(--wz-ease-out); }
.fl-link::after { content: ""; position: absolute; right: .1rem; top: -4px; border: 5px solid transparent; border-left-color: var(--wz-champ); border-right: 0; }
.fl-link i { position: absolute; left: .35rem; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: #fff7df; box-shadow: 0 0 10px 2px rgba(233,214,166,.9); opacity: 0; }
.fl-note { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: .4rem 1rem; align-items: baseline; font-size: .85rem; color: var(--fg-soft, rgba(245,242,234,.7)); }
/* states (only when JS runs and motion is allowed) */
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) { opacity: .32; transform: translateY(6px); }
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-card li, html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-card tr { opacity: .4; }
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-sent) .fl-link::before { transform: scaleX(0); }
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) mark { background-size: 0 100%; }
.fl-card li, .fl-card tr { transition: opacity .45s var(--wz-ease-out) calc(var(--j, 0) * 140ms + 150ms); }
.fl-card mark { transition: background-size .7s var(--wz-ease-out) .7s; }
.fl-step.is-cur .fl-card { outline-color: var(--wz-gold); box-shadow: 0 0 0 6px rgba(190,164,119,.14), 0 18px 40px -22px rgba(0,0,0,.6); }
.fl-step.is-on .fl-n, [data-wz-flow].is-done .fl-n { background: var(--wz-champ); color: var(--wz-obsidian); border-color: var(--wz-champ); }
.wz-tone-light .fl-step.is-on .fl-n { background: var(--wz-forest); color: #fff; border-color: var(--wz-forest); }
html:not(.wz-m-reduced) .fl-step.is-sending .fl-link i { animation: fl-go .75s cubic-bezier(.5,0,.2,1) 1 forwards; }
@keyframes fl-go { 0% { left: .35rem; opacity: 0; } 15% { opacity: 1; } 90% { opacity: 1; } 100% { left: calc(100% - .9rem); opacity: 0; } }
[data-wz-flow].is-paused *, html.wz-hold [data-wz-flow] * { animation-play-state: paused !important; }
html.wz-m-reduced .fl-step, html.wz-m-reduced .fl-card li, html.wz-m-reduced .fl-card tr, html.wz-m-reduced .fl-link::before, html.wz-m-reduced .fl-card mark { transition: none !important; }
html.wz-m-reduced [data-fl-play], html.wz-m-reduced [data-fl-replay], html.wz-m-reduced [data-fl-skip], html:not(.wz-js) .fl-ctrl { display: none; }
/* five steps: slightly tighter cards on laptops */
@media (max-width: 1280px) { .fl { gap: 2.25rem; } .fl-link { right: -2.25rem; width: 2.25rem; } .fl-card { font-size: .8rem; padding: .85rem; } }
/* Mobile / tablet: a purpose-built vertical sequence with larger cards */
@media (max-width: 900px) {
  .fl-head { grid-template-columns: 1fr; }
  .fl { grid-template-columns: 1fr; gap: 2.75rem; }
  .fl-step { grid-template-columns: 2.25rem minmax(0, 1fr); grid-template-rows: auto auto; column-gap: .75rem; }
  .fl-label { grid-column: 1 / -1; font-size: .8rem; }
  .fl-card { grid-column: 2; font-size: .95rem; padding: 1.1rem; }
  .fl-title { font-size: 1.1rem; }
  .fl-cal table { font-size: .85rem; }
  .fl-link { top: auto; bottom: -2.75rem; right: auto; left: .8rem; width: 2px; height: 2.75rem; }
  .fl-link::before { inset: .3rem 0; background: linear-gradient(180deg, var(--wz-gold), var(--wz-champ)); transform-origin: top; }
  .fl-link::after { right: auto; left: -4px; top: auto; bottom: .05rem; border: 5px solid transparent; border-top-color: var(--wz-champ); border-bottom: 0; }
  html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-sent) .fl-link::before { transform: scaleY(0); }
  .fl-link i { left: -3px; top: .3rem; }
  @keyframes fl-go { 0% { top: .3rem; opacity: 0; } 15% { opacity: 1; } 90% { opacity: 1; } 100% { top: calc(100% - .9rem); opacity: 0; } }
  .fl-step:not(:last-child)::before { content: ""; grid-column: 1; grid-row: 2; justify-self: center; width: 1px; background: rgba(233,214,166,.25); }
}
.fl-cal tbody th { white-space: nowrap; } .fl-cal td, .fl-cal th { vertical-align: top; }

/* ---------- v3.2 Hero integration: artwork shares the section's colour ---------- */
/* Dark artwork backgrounds are replaced by the section colour (lighten blend), so no rectangle remains;
   luminous filaments stay crisp. A very light edge mask only hides anti-aliasing at the border. */
.cd-art, .sv-art { -webkit-mask-image: none; mask-image: none; background: var(--wz-forest); border-radius: 0; }
.cd-art img, .cd-art video, .sv-art img, .sv-art video { mix-blend-mode: lighten; -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent), linear-gradient(0deg, transparent, #000 4%, #000 96%, transparent); -webkit-mask-composite: source-in; mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent), linear-gradient(0deg, transparent, #000 4%, #000 96%, transparent); mask-composite: intersect; }
.cd-art video, .sv-art video, .pf-art video, .tm-art video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.2s var(--wz-ease-out); }
.pf-art video { object-position: 50% 50%; } .tm-art video { object-position: 70% 50%; }
[data-wz-loop].is-playing video { opacity: 1; }
[data-wz-loop].is-playing img { animation: none !important; }
.pf-art, .tm-art { position: absolute; }
/* Filament pathways enter and leave the artwork (never behind the text column) */
.cd-hero, .sv-hero { position: relative; }
.hx-paths { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; overflow: visible; }
.hx-p { fill: none; stroke: var(--wz-champ); stroke-opacity: .16; stroke-width: 1; vector-effect: non-scaling-stroke; }
.hx-s { fill: none; stroke: var(--wz-signal); stroke-width: 2.2; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 1.6 200; stroke-dashoffset: 2; opacity: 0; }
html.wz-js:not(.wz-m-reduced) .hx-s { animation: cr-flow 7.5s linear infinite; animation-delay: var(--d, 0s); }
@media (max-width: 1023px) { .hx-paths { display: none; } }

/* ---------- Mobile recomposition: copy and action first, artwork second ---------- */
@media (max-width: 900px) {
  .pf-hero { padding-top: 6.5rem; }
  .pf-art { position: relative; order: 2; height: 30vh; margin-top: 1.5rem; }
  .pf-copy { margin-top: 0; order: 1; }
  .sv-art { order: 2; max-height: 34vh; aspect-ratio: 16 / 9; }
  .sv-hero { padding-top: 6.5rem; }
}
.mobile-bar > span { font: 400 1rem/1.2 var(--wz-serif); }
.mobile-bar .wz-btn span { font: inherit; }
.mobile-bar span:not(:first-child) { font-family: var(--wz-sans); }

/* ---------- Catalogue: the learning path responds to the platform you choose ---------- */
.cat-path { margin: 1.5rem 0 .5rem; padding: 1rem 1.25rem; border: 1px solid var(--line); background: #FBF9F4; border-radius: 6px; }
.cp-h { margin-bottom: .6rem; }
.cp { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem 2.5rem; position: relative; }
.cp-node { position: relative; display: grid; gap: .25rem; animation: cp-in .5s var(--wz-ease-out) backwards; }
.cp-node:nth-child(2) { animation-delay: .1s; } .cp-node:nth-child(3) { animation-delay: .2s; }
.cp-node:not(:last-child)::after { content: "→"; position: absolute; right: -1.75rem; top: 1.1rem; color: var(--wz-gold-ink); }
.cp-t { font-size: .95rem; }
@keyframes cp-in { from { opacity: 0; transform: translateY(4px); } }
html.wz-m-reduced .cp-node { animation: none; }
@media (max-width: 760px) { .cp { grid-template-columns: 1fr; } .cp-node:not(:last-child)::after { content: "↓"; right: auto; left: 0; top: auto; bottom: -1.1rem; } .cp { gap: 1.4rem; } }

/* ---------- Global "pause motion" (WCAG 2.2.2) ---------- */
html.wz-hold *, html.wz-hold *::before, html.wz-hold *::after { animation-play-state: paused !important; }
.wz-holdbtn { display: inline-flex; align-items: center; gap: .45rem; background: none; border: 0; padding: .35rem 0; color: inherit; font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: .25em; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); }
.hero .wz-holdbtn { position: absolute; right: var(--wz-gutter); bottom: 1.25rem; z-index: 3; font-size: .8rem; color: rgba(245,242,234,.75); }
@media (max-width: 767px) { .hero .wz-holdbtn { bottom: .75rem; } }
.cd-art, .sv-art { background: var(--wz-forest-deep); }
.tm-art, .pf-art { -webkit-mask-image: linear-gradient(90deg, transparent, #000 30%), linear-gradient(0deg, transparent, #000 18%, #000 88%, transparent); -webkit-mask-composite: source-in; mask-image: linear-gradient(90deg, transparent, #000 30%), linear-gradient(0deg, transparent, #000 18%, #000 88%, transparent); mask-composite: intersect; }
@media (max-width: 900px) {
  .tm-art { -webkit-mask-image: linear-gradient(0deg, transparent 20%, #000 75%); mask-image: linear-gradient(0deg, transparent 20%, #000 75%); }
  .pf-art { -webkit-mask-image: linear-gradient(0deg, transparent, #000 25%, #000 80%, transparent); mask-image: linear-gradient(0deg, transparent, #000 25%, #000 80%, transparent); }
}

/* =====================================================================
   v3.3 — consistency pass
   ===================================================================== */
/* Contour lines stay out from behind headings, copy and forms */
.cd-hero .wz-contours, .sv-hero .wz-contours, .pf-hero .wz-contours, .tm-hero .wz-contours, .page-hero .wz-contours {
  -webkit-mask-image: linear-gradient(90deg, transparent 0, transparent 48%, #000 82%); mask-image: linear-gradient(90deg, transparent 0, transparent 48%, #000 82%); opacity: .5; }
.contact-band .wz-contours { opacity: .12; -webkit-mask-image: linear-gradient(180deg, #000, transparent 70%); mask-image: linear-gradient(180deg, #000, transparent 70%); }
@media (max-width: 900px) { .cd-hero .wz-contours, .sv-hero .wz-contours, .pf-hero .wz-contours, .tm-hero .wz-contours, .page-hero .wz-contours, .contact-band .wz-contours { display: none; } }
html.wz-m-light .wz-contours svg { animation: none !important; }

/* Motion language in the flows: pulse = processing, branches = options, settled glow = complete */
html:not(.wz-m-reduced) .fl-step.is-cur .fl-n { animation: fl-pulse 1.6s var(--wz-ease-out) infinite; }
@keyframes fl-pulse { 0% { box-shadow: 0 0 0 0 rgba(233,214,166,.55); } 100% { box-shadow: 0 0 0 9px rgba(233,214,166,0); } }
.fl-branch { padding-left: 1.6rem; }
.fl-root { position: absolute; left: .9rem; top: 1.1rem; bottom: 1.35rem; width: 1px; background: var(--wz-gold-ink); }
.fl-branch ul { gap: .55rem; }
.fl-branch li { position: relative; padding: .3rem .55rem; border: 1px solid rgba(17,19,16,.16); border-radius: 4px; background: #fff; }
.fl-branch li::before { content: ""; position: absolute; left: -.72rem; top: 50%; width: .7rem; height: 1px; background: var(--wz-gold-ink); }
.fl-branch li:first-child { border-color: var(--wz-forest); }
[data-wz-flow].is-done .fl-step:last-child .fl-card { outline-color: rgba(233,214,166,.55); box-shadow: 0 0 0 1px rgba(233,214,166,.25), 0 0 40px -6px rgba(233,214,166,.25), 0 18px 40px -22px rgba(0,0,0,.6); transition: box-shadow 1.2s var(--wz-ease-out), outline-color 1.2s; }
.fl-status { flex-basis: 100%; margin: .25rem 0 0; font-size: .82rem; color: var(--wz-champ); min-height: 1.2em; text-align: right; }
.wz-tone-light .fl-status { color: var(--wz-forest); }
@media (max-width: 900px) { .fl-status { text-align: left; } }

/* v3.4 — cookie notice (only rendered when a GA4 ID is set) */
.wz-cookie { position: fixed; z-index: 60; left: var(--wz-gutter, 1.25rem); bottom: 1.25rem; max-width: 26rem; padding: 1.25rem 1.25rem 1.1rem; border-radius: 14px; background: var(--wz-obsidian, #111310); color: var(--wz-porcelain, #F4F1EA); box-shadow: 0 18px 50px rgba(0,0,0,.28); border: 1px solid rgba(244,241,234,.12); opacity: 0; transform: translateY(12px); transition: opacity .35s ease, transform .35s ease; }
.wz-cookie.is-in { opacity: 1; transform: none; }
.wz-cookie__t { font: 600 1rem/1.3 var(--wz-sans, system-ui); margin: 0 0 .4rem; color: inherit; }
.wz-cookie p { margin: 0 0 1rem; font-size: .9rem; line-height: 1.5; color: rgba(244,241,234,.82); }
.wz-cookie .wz-link { color: var(--wz-porcelain, #F4F1EA); }
.wz-cookie__acts { display: flex; gap: .6rem; }
.wz-cookie .wz-btn { flex: 1; min-height: 2.6rem; font-size: .9rem; --btn-bg: var(--wz-porcelain); --btn-fg: var(--wz-obsidian); --btn-hover: var(--wz-gold); justify-content: center; }
@media (max-width: 767px) { .wz-cookie { left: .75rem; right: .75rem; bottom: calc(.75rem + env(safe-area-inset-bottom, 0px)); max-width: none; } }
html.wz-m-reduced .wz-cookie { transition: none; transform: none; }

/* ===================== v3.5 polish ===================== */
/* Home hero: Scroll and Pause are separate, labelled, 44px targets */
.hero-ctl { justify-self: end; display: flex; flex-direction: column; align-items: flex-end; gap: .9rem; }
.hero-ctl .wz-scroll-cue { min-height: 2.75rem; padding: .2rem 0; color: rgba(245,242,234,.8); }
.hero-ctl .hero-hold { position: static; min-height: 2.75rem; padding: .55rem 1rem .55rem .9rem; border: 1px solid rgba(245,242,234,.38); border-radius: 999px; text-decoration: none; font: 500 .8rem/1 var(--wz-sans); letter-spacing: .03em; color: var(--wz-porcelain); background: rgba(17,19,16,.35); transition: border-color .3s, background .3s; }
.hero-ctl .hero-hold:hover { border-color: var(--wz-champ); background: rgba(17,19,16,.55); }
.wz-holdbtn::before { content: ""; flex: none; width: .6rem; height: .7rem; box-sizing: border-box; border-left: 2px solid currentColor; border-right: 2px solid currentColor; }
html.wz-hold .wz-holdbtn::before { width: 0; height: 0; border-right: 0; border-left: .55rem solid currentColor; border-top: .35rem solid transparent; border-bottom: .35rem solid transparent; }
@media (max-width: 900px) {
  .hero-ctl { justify-self: start; flex-direction: row; align-items: center; }
}

/* Demonstrations: pending steps stay secondary but readable; spent controls are removed */
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) { opacity: .62; }
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-card li,
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-card tr { opacity: .88; }
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-card { box-shadow: none; }
.fl-ctrl [hidden] { display: none !important; }

/* Journey steps not in focus stay readable on dark */
.process.is-ready .pj-item:not(.is-current) { opacity: .8; }

/* Labels on sage panels use forest ink for contrast */
.ws-assemble { --label: var(--wz-forest); }

/* Footer column headings are h2 for a valid outline; same look as before */
.foot-grid h2.foot-h { margin: 1em 0 1.1rem; }

/* Keyboard-reachable scroll regions */
.tbl-scroll:focus-visible { outline: 2px solid var(--wz-gold); outline-offset: 3px; }
.wz-arr { white-space: pre; }
.fl-tag { color: var(--wz-ink-soft); }
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-card li,
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-card tr { opacity: .94; }
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) :is(.fl-cal tbody th, .fl-steps li)::before,
html.wz-js:not(.wz-m-reduced) [data-wz-flow]:not(.is-done) .fl-step:not(.is-on) .fl-cal tbody th { color: var(--wz-ink-soft); }
.fl-cal tbody th, .fl-steps li::before { transition: color .5s var(--wz-ease-out); }
