
/* Layout: sticky header → split hero (headline + live ECG "next course" monitor) → town marquee
   → two course cards → live dates list (Amelia feed) → on-site pricing + coverage map → Sizewell C band
   → approvals strip → CPR metronome → booking steps → venue → FAQ → enquiry → company footer */
:root{
  --paper:#F5F8F4; --card:#FFFFFF; --ink:#0E1F17; --muted:#4A5C52; --line:#D3DDD6;
  --green:#00843D; --green-2:#14A653; --green-soft:#E3F2E8; --brick:#B4492A; --brick-soft:#F6E6DF;
  --night:#0A1912; --night-2:#11261C; --night-ink:#E9F3EC; --night-muted:#9FB7A9; --signal:#3DDC84; --sea:#D6E8F1; --sea-edge:#7FA6BC;
  --f-display:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --gut-l:max(16px,env(safe-area-inset-left,0px)); --gut-r:max(16px,env(safe-area-inset-right,0px));
  --wrap:1180px; --r:14px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#0B1510; --card:#122019; --ink:#E6F0EA; --muted:#9BB0A3; --line:#223429;
  --green:#2BBE6A; --green-2:#45D17F; --green-soft:#16301F; --brick:#E2734F; --brick-soft:#2E1A12;
  --night:#060F0B; --night-2:#0E1D16; --sea:#132C3A; --sea-edge:#4F7F99; color-scheme:dark}}
:root[data-theme="dark"]{
  --paper:#0B1510; --card:#122019; --ink:#E6F0EA; --muted:#9BB0A3; --line:#223429;
  --green:#2BBE6A; --green-2:#45D17F; --green-soft:#16301F; --brick:#E2734F; --brick-soft:#2E1A12;
  --night:#060F0B; --night-2:#0E1D16; --sea:#132C3A; --sea-edge:#4F7F99; color-scheme:dark}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:17px;line-height:1.6;overflow-x:hidden}
a{color:inherit}
h1,h2,h3{font-family:var(--f-display);line-height:1.08;letter-spacing:-.015em;margin:0;text-wrap:balance}
h2{font-size:clamp(1.8rem,3.8vw,2.8rem);font-weight:800}
h3{font-size:1.3rem;font-weight:700}
p{margin:0}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-left:var(--gut-l);padding-right:var(--gut-r)}
.eyebrow{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--green);font-weight:700;display:inline-flex;gap:.6em;align-items:center}
.eyebrow::before{content:"";width:11px;height:11px;flex-shrink:0;background:currentColor;clip-path:polygon(33% 0,67% 0,67% 33%,100% 33%,100% 67%,67% 67%,67% 100%,33% 100%,33% 67%,0 67%,0 33%,33% 33%)}
.lede{color:var(--muted);font-size:1.12rem;max-width:58ch}
section{padding-block:clamp(40px,4.5vw,60px)}
.stack{display:grid;gap:16px;align-content:start}
.btn{display:inline-flex;align-items:center;gap:.55em;padding:.85em 1.4em;border-radius:999px;text-decoration:none;border:2px solid transparent;cursor:pointer;font:inherit;font-weight:700;transition:transform .2s,background .2s}
.btn:focus-visible,button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--brick);outline-offset:3px}
.btn-primary{background:var(--green);color:#fff;box-shadow:0 8px 24px -10px var(--green)}
.btn-primary:hover{transform:translateY(-2px);background:var(--green-2)}
.btn-ghost{border-color:currentColor;background:transparent;color:inherit}
.btn-ghost:hover{transform:translateY(-2px)}
.tick{width:18px;height:18px;color:var(--green);flex-shrink:0}

.demo-strip{background:var(--brick);color:#fff;font-size:.8rem;text-align:center;padding-block:7px;line-height:1.4}

/* header */
header.site{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;gap:22px;min-height:72px}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0}
.logo-mark{width:42px;height:42px;flex-shrink:0}
.logo-mark .cross{fill:var(--green);transform-origin:50% 50%;animation:beat .833s infinite}
.logo-word{font-family:var(--f-display);font-weight:800;font-size:1.15rem;line-height:1.05}
.logo-word small{display:block;font-family:var(--f-mono);font-size:.56rem;letter-spacing:.14em;color:var(--muted);font-weight:500;margin-top:5px}
.nav ul{display:flex;gap:20px;list-style:none;margin:0 0 0 auto;padding:0;font-weight:600;font-size:.95rem;white-space:nowrap}
.nav ul a{text-decoration:none;position:relative}
.nav ul a::after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:2px;background:var(--green);transition:right .25s}
.nav ul a:hover::after{right:0}
.nav .phone{font-family:var(--f-mono);font-size:.85rem;font-weight:700;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.nav .phone svg{width:16px;height:16px;flex-shrink:0;color:var(--green)}
.nav .btn{padding:.6em 1.1em;white-space:nowrap;flex-shrink:0}
.q-short{display:none}
.menu-btn{display:none}
.nav ul li.m-only{display:none}
header.site.open .nav ul li.m-only{display:block}
@media (max-width:1140px){
  .menu-btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:42px;height:42px;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);cursor:pointer}
  .menu-btn svg{width:22px;height:22px}
  .menu-btn .m-close,header.site.open .menu-btn .m-open{display:none}
  header.site.open .menu-btn .m-close{display:inline}
  header.site.open .nav ul{display:flex;flex-direction:column;gap:0;position:absolute;left:0;right:0;top:100%;margin:0;padding:6px var(--gut-r) 14px var(--gut-l);background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 18px 30px rgba(0,0,0,.18);font-size:1.05rem;white-space:normal;max-height:calc(100vh - 80px);overflow:auto}
  header.site.open .nav ul a{display:block;padding:13px 2px;border-bottom:1px solid var(--line)}
  header.site.open .nav ul li:last-child a{border-bottom:0}
  header.site.open .nav ul a::after{display:none}
}
@media (max-width:560px){.menu-btn{width:38px;height:38px;border-radius:10px}}

@keyframes beat{0%,100%{transform:scale(1)}12%{transform:scale(1.14)}24%{transform:scale(.98)}36%{transform:scale(1.06)}}
@media (max-width:1140px){.nav ul{display:none}.nav .phone{margin-left:auto}}
@media (max-width:560px){.q-long{display:none}.q-short{display:inline}.nav{gap:8px}.logo{min-width:0;flex:1 1 auto;gap:8px}.logo-mark{width:34px;height:34px}.logo-word small{letter-spacing:.02em;font-size:.5rem;white-space:normal}.nav .phone{width:38px!important;height:38px!important}h2{font-size:1.75rem}.hero h1{font-size:2.2rem}.nav .phone{width:42px;height:42px;border-radius:50%;border:2px solid var(--green);justify-content:center;flex-shrink:0}.nav .phone span{display:none}.nav .phone svg{width:18px;height:18px}.nav .btn{padding:.5em .8em;font-size:.82rem}.logo-word{font-size:1rem}}

/* hero */
.hero{padding-block:clamp(40px,6vw,80px) clamp(48px,7vw,96px);position:relative;isolation:isolate;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse at 70% 30%,#000 10%,transparent 70%);opacity:.55}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(32px,5vw,64px);align-items:center}
.hero-grid>*{min-width:0}
.hero h1{font-size:clamp(2.3rem,5.6vw,4.2rem);font-weight:800;margin-block:16px 20px}
.hero h1 .g{color:var(--green)}
.hero h1 .line{display:block;overflow:hidden}
.hero h1 .line span{display:inline-block;animation:rise .9s cubic-bezier(.2,.8,.2,1) both}
.hero h1 .line:nth-child(2) span{animation-delay:.08s}
.hero h1 .line:nth-child(3) span{animation-delay:.16s}
@keyframes rise{from{transform:translateY(60%)}to{transform:none}}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.trust{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:30px;font-size:.9rem;color:var(--muted)}
.trust span{display:inline-flex;align-items:center;gap:8px}

@media (max-width:900px){.hero-grid{grid-template-columns:1fr}}
.hero-grid{align-items:start}


/* courses */
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:28px}
.sec-head>div{display:grid;gap:14px;min-width:0}
.tna-btn{align-self:center;display:flex;align-items:center;gap:14px;max-width:440px;padding:14px 18px 14px 14px;border-radius:18px;border:2px solid var(--green);background:var(--green-soft);color:var(--ink);text-decoration:none;box-shadow:0 12px 30px -16px var(--green);transition:transform .2s,box-shadow .2s}
.tna-btn:hover{transform:translateY(-2px);box-shadow:0 18px 36px -16px var(--green)}
.tna-ic{position:relative;flex:0 0 auto;width:48px;height:48px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center}
.tna-ic svg{width:24px;height:24px}
.tna-ic::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--green);animation:tnaPulse 2.4s ease-out infinite}
@keyframes tnaPulse{0%{transform:scale(1);opacity:.7}70%,100%{transform:scale(1.6);opacity:0}}
.tna-txt{display:grid;gap:2px;line-height:1.25}
.tna-txt small{font-family:var(--f-mono);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--green)}
.tna-txt b{font-size:1.08rem;font-weight:800}
.tna-txt em{font-style:normal;font-size:.82rem;color:var(--muted)}
.tna-go{flex:0 0 auto;width:22px;height:22px;color:var(--green);margin-left:auto;transition:transform .2s}
.tna-btn:hover .tna-go{transform:translateX(4px)}
@media (max-width:480px){.tna-btn{padding:12px 14px 12px 12px;gap:12px}.tna-ic{width:42px;height:42px}.tna-txt b{font-size:1rem}}
@media (prefers-reduced-motion:reduce){.tna-ic::after{animation:none;opacity:0}.tna-btn,.tna-go{transition:none}}
.course-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.course{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(22px,3vw,34px);display:flex;flex-direction:column;gap:16px;position:relative;overflow:hidden;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s;min-width:0}
.course::after{content:"";position:absolute;left:0;top:0;height:5px;width:0;background:var(--green);transition:width .5s}
.course:hover{transform:translateY(-6px);box-shadow:0 22px 40px -24px rgba(0,60,30,.45)}
.course:hover::after{width:100%}
.course .top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.course .days{font-family:var(--f-display);font-weight:800;font-size:2.6rem;line-height:1.05;color:var(--green);text-align:center}
.course .days small{display:block;font-size:1rem;letter-spacing:.06em}
.course .tag{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.course h3{font-size:clamp(1.4rem,2.4vw,1.75rem)}
.course p{color:var(--muted)}
.course ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;font-size:.93rem}
.course li{display:flex;gap:8px;align-items:flex-start}
.course li .tick{margin-top:3px;width:16px;height:16px}
.course .for{font-size:.88rem;color:var(--muted);padding:10px 12px;background:var(--green-soft);border-radius:10px}
.course .for b{color:var(--ink)}
.prices{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:auto;padding-top:16px;border-top:1px dashed var(--line)}
.prices div{display:grid;gap:2px}
.prices span{font-family:var(--f-mono);font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.prices b{font-family:var(--f-display);font-size:1.7rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.prices small{font-size:.78rem;color:var(--muted)}
.course .actions{display:flex;gap:10px;flex-wrap:wrap}
.course .actions .btn{padding:.7em 1.2em;font-size:.95rem}
.nonacc{margin-top:20px;display:flex;gap:18px;align-items:center;justify-content:space-between;flex-wrap:wrap;border:1.5px dashed var(--line);border-radius:16px;padding:18px 22px}
.nonacc>div{min-width:0;flex:1 1 380px}
.nonacc b{font-family:var(--f-display);font-size:1.4rem;font-weight:800}
.nonacc p{color:var(--muted);font-size:.95rem}
@media (max-width:820px){.course-pair{grid-template-columns:1fr}}
@media (max-width:420px){.course ul{grid-template-columns:1fr}}

/* dates */
.dates-sec{background:var(--green-soft)}
.filters{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:.5em 1em;font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;transition:all .2s}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.date-list{display:grid;gap:10px}
.date-row{display:grid;grid-template-columns:86px 1fr auto auto;gap:18px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 18px;transition:transform .25s,border-color .25s;animation:slidein .5s cubic-bezier(.2,.8,.2,1) both}
.date-row:hover{transform:translateX(4px);border-color:var(--green)}
.date-row>*{min-width:0}
@keyframes slidein{from{transform:translateY(12px)}to{transform:none}}
.cal{text-align:center;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:var(--paper)}
.cal .m{background:var(--green);color:#fff;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;padding:3px 0;font-weight:700}
.cal .d{font-family:var(--f-display);font-size:2.1rem;font-weight:800;line-height:1.05;font-variant-numeric:tabular-nums}
.cal .y{font-family:var(--f-mono);font-size:.65rem;color:var(--muted);padding-bottom:4px}
.cal.faw .m{background:var(--ink)}
.dr-main b{font-size:1.05rem;display:block}
.dr-main span{font-size:.88rem;color:var(--muted);display:block}
.places{display:grid;gap:5px;min-width:130px}
.places span{font-family:var(--f-mono);font-size:.75rem;color:var(--muted)}
.places .bar{height:6px;border-radius:6px;background:var(--line);overflow:hidden}
.places .bar i{display:block;height:100%;background:var(--green);border-radius:6px;transform-origin:left;animation:fill 1.1s cubic-bezier(.2,.8,.2,1) both}
.places.low .bar i{background:var(--brick)}
@keyframes fill{from{transform:scaleX(0)}}
.dr-book{display:flex;align-items:center;gap:14px}
.dr-book .p{font-family:var(--f-display);font-size:1.8rem;font-weight:800;line-height:1;text-align:right}
.dr-book .p small{display:block;font-family:var(--f-mono);font-size:.62rem;color:var(--muted);font-weight:500;letter-spacing:.06em}
.dr-book .btn{padding:.6em 1.1em;font-size:.92rem}
.date-row.full .btn{background:var(--line);color:var(--muted);box-shadow:none;pointer-events:none}
.closure{margin:0 0 20px;padding:14px 18px;border-left:4px solid #e0a200;background:#fff7e0;color:#2b2b2b;border-radius:8px;max-width:80ch;font-size:.95rem;line-height:1.5}.closure a{color:inherit;font-weight:600}
.feed-note{margin-top:16px;font-size:.88rem;color:var(--muted);display:flex;gap:10px;align-items:flex-start;max-width:80ch}
.feed-note svg{margin-top:2px}
.feed-note code{font-family:var(--f-mono);font-size:.78rem;background:var(--card);border:1px solid var(--line);padding:1px 6px;border-radius:5px}
@media (max-width:760px){.date-row{grid-template-columns:70px 1fr;gap:12px 14px}.places{grid-column:1/-1}.dr-book{grid-column:1/-1;justify-content:space-between}}

/* on-site */
.cov-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(28px,5vw,64px);align-items:center}
.cov-grid>*{min-width:0}
.rate-table{width:100%;border-collapse:collapse;margin-top:24px;font-size:.95rem}
.rate-table th,.rate-table td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.rate-table th{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.rate-table td b{font-family:var(--f-display);font-size:1.6rem;font-weight:800;font-variant-numeric:tabular-nums}
.rate-wrap{overflow-x:auto}
.cov-points{display:grid;gap:10px;margin-top:20px}
.cov-points span{display:flex;gap:10px;align-items:flex-start}
.cov-points .tick{margin-top:4px}
.map-card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:14px;position:relative}
#map{width:100%;height:auto;display:block}
#map .sea-fill{fill:var(--sea)}
#map .coast{fill:none;stroke:var(--sea-edge);stroke-width:1;stroke-linejoin:round}
#map .sea{fill:var(--sea-edge);font-family:var(--f-mono);font-size:11px;letter-spacing:.2em}
#map .town circle{fill:var(--ink)}
#map .town text{fill:var(--ink);font-size:11px;font-family:var(--f-body);font-weight:600;paint-order:stroke;stroke:var(--card);stroke-width:3px;stroke-linejoin:round}
#map .town:hover circle,#map .town.on circle{fill:var(--green)}
#map .town{cursor:pointer}
#map .hq circle.core{fill:var(--green)}
#map .hq text{font-weight:800;font-size:12.5px}
#map .pulse{fill:none;stroke-width:2;transform-box:fill-box;transform-origin:center;animation:ping 2.6s cubic-bezier(.2,.6,.3,1) infinite}
#map .pulse.g{stroke:var(--green)}
#map .pulse.b{stroke:var(--brick)}
#map .pulse.d2{animation-delay:1.3s}
@keyframes ping{from{transform:scale(.3);opacity:1}to{transform:scale(3.2);opacity:0}}
#map .route{fill:none;stroke:var(--brick);stroke-width:2.8;stroke-linecap:round}
#map .route.marching{stroke-dasharray:6 6;animation:dash 1.2s linear infinite}
#map .town.on text{fill:var(--brick);font-weight:800}
#map .town.on circle.core{fill:var(--brick)}
@keyframes dash{to{stroke-dashoffset:-24}}
.map-readout{margin:10px 6px 0;background:var(--ink);color:var(--paper);border-radius:10px;padding:10px 14px;font-size:.9rem;line-height:1.4}
.map-readout b{color:inherit}
.map-readout .ro-note{display:block;font-size:.78rem;opacity:.75}
.town-cloud{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.town-cloud button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:.35em .75em;font:inherit;font-size:.86rem;cursor:pointer;transition:all .2s}
.town-cloud button:hover,.town-cloud button.on{background:var(--green);color:#fff;border-color:var(--green)}
@media (max-width:900px){.cov-grid{grid-template-columns:1fr}}

/* sizewell */
.sizewell{background:var(--night);color:var(--night-ink);position:relative;overflow:hidden}
.sizewell .eyebrow{color:var(--signal)}
.sw-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,72px);align-items:center}
.sw-grid>*{min-width:0}
.marquee{background:var(--green);color:#fff;overflow:hidden;padding-block:14px;border-block:2px solid var(--ink)}
.marquee-track{display:flex;width:max-content;animation:scroll 52s linear infinite}
.marquee-track span{font-family:var(--f-display);font-weight:700;font-size:1.15rem;padding-inline:20px;white-space:nowrap;display:inline-flex;align-items:center;gap:40px}
.marquee-track span::after{content:"+";color:var(--ink);font-size:1.4rem}
@keyframes scroll{to{transform:translateX(-50%)}}
.sw-visual{position:relative;aspect-ratio:1;max-width:520px;width:100%;margin-inline:auto}
#swCanvas{width:100%;height:100%;display:block}
.sw-badge{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;font-family:var(--f-display);pointer-events:none}
.sw-badge b{display:block;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;line-height:1;color:#fff}
.sw-badge span{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;color:var(--signal)}
.sizewell h2 em{font-style:normal;color:var(--signal)}
.sizewell .lede{color:var(--night-muted);margin-top:20px}
.sw-list{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:14px}
.sw-list li{display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:start}
.sw-list li svg{width:24px;height:24px;color:var(--signal);margin-top:2px}
.sw-list b{color:#fff}
.sw-list span{color:var(--night-muted);font-size:.95rem}
.disclaimer{margin-top:18px;font-size:.76rem;color:var(--night-muted);opacity:.85;max-width:64ch}
.sizewell .btn-primary{background:var(--signal);color:var(--night)}
@media (max-width:900px){.sw-grid{grid-template-columns:1fr}.sw-visual{max-width:360px}}
@media (max-width:480px){.sw-stats{grid-template-columns:1fr}}

/* approvals */
.approvals{padding-block:44px;border-bottom:1px solid var(--line)}
.approvals .wrap{display:grid;gap:18px}
.approvals p{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-align:center}
.badges{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.badge{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:10px 16px;font-weight:700;font-size:.92rem}
.badge i{min-width:28px;padding-inline:4px;width:auto;height:28px;border-radius:8px;background:var(--green-soft);display:grid;place-items:center;font-style:normal;font-family:var(--f-display);font-weight:800;color:var(--green);font-size:.9rem}
.badge.key{border-color:var(--green)}
.badge.logo{background:#fff;padding:8px 14px;min-height:72px}
.badge.logo img{display:block;width:auto;max-width:200px}

/* CPR */
.cpr{background:var(--green-soft)}
.dates-sec+.cpr{padding-top:0}
.dates-sec+.dates-sec{padding-top:0}
.onsite-viz{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:clamp(16px,3vw,28px)}
.onsite-viz h3{font-size:1.2rem;margin-bottom:8px}
.onsite-viz .journey-steps{grid-template-columns:1fr 1fr;text-align:left;gap:14px 18px}
.viz-note{font-size:.88rem;color:var(--muted);margin-top:14px}
[data-anim]:not(.in-view) *{animation-play-state:paused!important}

.journey{width:100%;height:auto;display:block}
.journey .vb{fill:var(--ink)}.journey .vx{stroke:var(--card)}
.journey .road{stroke:var(--line);stroke-width:10;stroke-linecap:round;fill:none}
.journey .done{stroke:var(--green-2);stroke-width:10;stroke-linecap:round;fill:none;stroke-dasharray:540;stroke-dashoffset:540;animation:drawroad 6s ease-in-out forwards}
@keyframes drawroad{to{stroke-dashoffset:0}}
.journey .van{animation:drive 6s ease-in-out forwards}
@keyframes drive{from{transform:translateX(0)}to{transform:translateX(540px)}}
.journey .stop circle{fill:#fff;stroke:var(--line);stroke-width:4}
.journey .stop .lit{fill:var(--green);stroke:var(--green);opacity:0;animation:lit .3s ease forwards}
@keyframes lit{to{opacity:1}}
.journey-steps{list-style:none;padding:0;margin:6px 0 0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;text-align:center}
.journey-steps b{display:block}
.journey-steps span{color:var(--muted);font-size:.9rem}
@media (max-width:640px){.journey-steps{grid-template-columns:1fr 1fr;text-align:left}}
@media (prefers-reduced-motion:reduce){.journey *{animation:none!important}.journey .done{stroke-dashoffset:0}.journey .lit{opacity:1}.journey .van{transform:translateX(540px)}}
.dates-sec:has(+.cpr){padding-bottom:clamp(32px,4vw,48px)}
.cpr-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,64px);align-items:center}
.cpr-grid>*{min-width:0}
.cpr-pad{background:var(--card);border-radius:24px;padding:28px;border:1px solid var(--line);display:grid;justify-items:center;gap:18px;text-align:center}
.heart-btn{width:min(240px,64vw);aspect-ratio:1;border-radius:50%;border:none;cursor:pointer;background:radial-gradient(circle at 35% 30%,var(--green-2),var(--green));color:#fff;display:grid;place-items:center;position:relative;box-shadow:0 20px 40px -18px var(--green);font:inherit}
.heart-btn .count{font-family:var(--f-display);font-size:5.5rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.heart-btn .lbl{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;position:absolute;bottom:22%}
.heart-btn.push{animation:compress .3s ease-out}
.heart-btn::before{content:"";position:absolute;inset:-10px;border-radius:50%;border:3px solid var(--green);opacity:0}
.heart-btn.push::before{animation:ripple .55s ease-out}
.heart-btn.breath{background:radial-gradient(circle at 35% 30%,#E8835F,var(--brick))}
@keyframes compress{0%{transform:scale(1)}30%{transform:scale(.9)}100%{transform:scale(1)}}
@keyframes ripple{from{opacity:.8;transform:scale(.95)}to{opacity:0;transform:scale(1.25)}}
.cpr-ctrl{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;align-items:center}
.cpr-ctrl label{font-family:var(--f-mono);font-size:.8rem;color:var(--muted);display:flex;gap:8px;align-items:center}
.cpr-title{display:grid;gap:2px}
.cpr-title b{font-family:var(--f-display);font-size:1.4rem;font-weight:800;line-height:1}
.cpr-title span{font-size:.85rem;color:var(--muted)}
.cpr-meta{font-family:var(--f-mono);font-size:.82rem;color:var(--muted)}
.cpr-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:28px}
.cpr-facts div{border-left:3px solid var(--green);padding-left:12px}
.cpr-facts b{font-family:var(--f-display);font-size:1.6rem;font-weight:800;display:block;line-height:1}
.cpr-facts span{font-size:.82rem;color:var(--muted)}
@media (max-width:900px){.cpr-grid{grid-template-columns:1fr}}
@media (max-width:480px){.cpr-facts{grid-template-columns:1fr}}

.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;counter-reset:s;margin-top:36px}
.step{padding-top:20px;border-top:2px solid var(--ink);display:grid;gap:8px;align-content:start}
.step::before{counter-increment:s;content:"0" counter(s);font-family:var(--f-mono);font-size:.8rem;color:var(--green);font-weight:700}
.step h3{font-size:1.45rem}
.step p{color:var(--muted);font-size:.94rem}
@media (max-width:900px){.steps{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.steps{grid-template-columns:1fr}}
.osm-map{background:#EEF2EC}
.m-water{fill:#BFD9E6;stroke:#BFD9E6;stroke-width:6}
.m-park{fill:#E3E6DF;stroke:#C9CEC4;stroke-width:1}
.m-bldg{fill:#DCE1D8;stroke:#C5CCC0;stroke-width:.6}
.m-foot{fill:none;stroke:#C9CEC4;stroke-width:1;stroke-dasharray:2 3}
.m-minor{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round}
.m-road-c{fill:none;stroke:#C5CCC0;stroke-width:8;stroke-linecap:round}
.m-road{fill:none;stroke:#fff;stroke-width:6;stroke-linecap:round}
.m-major-c{fill:none;stroke:#D9A441;stroke-width:11;stroke-linecap:round}
.m-major{fill:none;stroke:#F6D58A;stroke-width:9;stroke-linecap:round}
.m-rail{fill:none;stroke:#6B746E;stroke-width:3;stroke-dasharray:10 5}
.m-faa{fill:#B4492A;stroke:#7E2E18;stroke-width:1.5}
.m-lbl{font:600 11px sans-serif;fill:#35413A;paint-order:stroke;stroke:#fff;stroke-width:3}
.m-pin circle{fill:#00843D;stroke:#fff;stroke-width:3}
.m-pin-lbl{font:800 13px sans-serif;fill:#0E1F17;paint-order:stroke;stroke:#fff;stroke-width:4}
.m-stn rect{fill:#0E1F17}.m-stn text{font:700 12px sans-serif;fill:#0E1F17;paint-order:stroke;stroke:#fff;stroke-width:3}
.m-sea{font:italic 600 13px sans-serif;fill:#4D7F98}
.m-cp{fill:#CFE0F5;stroke:#1F5FA8;stroke-width:2}
.m-p rect{fill:#1F5FA8;stroke:#fff;stroke-width:2}.m-p text{font:800 12px sans-serif;fill:#fff}
.m-attr{font:10px sans-serif;fill:#4A5C52}
.m-wline{fill:none;stroke:#BFD9E6;stroke-width:8}
.m-ping{fill:none!important;stroke:#00843D!important;transform-box:fill-box;transform-origin:center;animation:ping 2.4s ease-out infinite}
.s-sky{fill:#F5F8F4}.s-brick{fill:#C8664A;stroke:#0E1F17;stroke-width:2}.s-roof{fill:#5C6670;stroke:#0E1F17;stroke-width:2}.s-cap{fill:#3E464E;stroke:#0E1F17;stroke-width:2}
.s-louvre{fill:#0E1F17}.s-dorm{fill:#E9EEF0;stroke:#0E1F17;stroke-width:1}.s-dorm-g{fill:#C8664A;stroke:#0E1F17;stroke-width:1.5}
.s-win{fill:#E9EEF0;stroke:#0E1F17;stroke-width:1.5}.s-door{fill:#0E1F17}.s-canopy{fill:#0E1F17}.s-line{stroke:#E9EEF0;stroke-width:1.5}
.s-ground{fill:#B9C2BC}.s-bay{stroke:#fff;stroke-width:2}.s-post{fill:#0E1F17}.s-arm{fill:#fff;stroke:#B4492A;stroke-width:2;stroke-dasharray:8 6}
.s-psign{fill:#1F5FA8}.s-p{font:800 18px sans-serif;fill:#fff}.s-tree{fill:#7FA67A;stroke:#0E1F17;stroke-width:2;fill-opacity:.9}.s-trunk{stroke:#0E1F17;stroke-width:4}
.s-call line{stroke:#00843D;stroke-width:2.5}.s-call circle{fill:#00843D;stroke:#fff;stroke-width:2}.s-call rect{fill:#00843D}.s-call text{font:700 13px sans-serif;fill:#fff}
.s-call.alt line{stroke:#0E1F17}.s-call.alt rect{fill:#0E1F17}
.find-grid{display:grid;grid-template-columns:1fr;gap:20px;margin-top:28px}
.find-grid>*{min-width:0}
.find-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;display:grid;align-content:start}
.find-card svg{display:block;width:100%;height:auto}
.find-card figcaption{padding:12px 16px;font-size:.85rem;color:#4A5C52;background:#fff}
.arrive{display:grid;gap:12px;margin:24px 0 0;padding:0;list-style:none;counter-reset:a;max-width:70ch}
.arrive li{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start}
.arrive li::before{counter-increment:a;content:counter(a);width:30px;height:30px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:800;font-family:var(--f-mono);font-size:.85rem}
@media (max-width:900px){.find-grid{grid-template-columns:1fr}}
.tpl-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:28px}
.tpl{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px;display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start;min-width:0}
.tpl .doc{width:54px;height:68px;border-radius:6px;background:var(--green-soft);border:1.5px solid var(--green);position:relative;display:grid;place-items:end center;padding-bottom:6px;font-family:var(--f-mono);font-size:.62rem;font-weight:700;color:var(--green)}
.tpl .doc::before{content:"";position:absolute;top:8px;left:9px;right:9px;height:24px;background:repeating-linear-gradient(var(--green) 0 2px,transparent 2px 7px);opacity:.45}
.tpl h3{font-size:1.5rem}
.tpl p{color:var(--muted);font-size:.93rem;margin-top:6px}
.tpl .btn{margin-top:12px;padding:.6em 1.1em;font-size:.92rem}
.tpl-note{margin-top:14px;font-size:.82rem;color:var(--muted)}
@media (max-width:820px){.tpl-grid{grid-template-columns:1fr}}

/* v2 */
.hero h1{font-size:clamp(2rem,4.4vw,3.3rem);font-weight:800;margin-block:14px 10px;line-height:1.1}
.hero h1 .g{color:var(--green)}
.slogan{font-size:clamp(1.15rem,2vw,1.4rem);font-weight:700;color:var(--green);margin-bottom:14px}
.next{background:var(--night);color:var(--night-ink);border-radius:22px;padding:18px;box-shadow:0 30px 60px -30px rgba(0,40,20,.6),inset 0 0 0 1px rgba(255,255,255,.06);display:grid;gap:12px;min-width:0}
.next-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.next-head h2{font-size:1.15rem;font-weight:800;color:#fff}
.next-head span{font-size:.8rem;color:var(--night-muted)}
.ecg-wrap{position:relative;border-radius:12px;background:var(--night-2);overflow:hidden;aspect-ratio:16/6;max-width:100%}
.ecg-wrap::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(61,220,132,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(61,220,132,.08) 1px,transparent 1px);background-size:20px 20px}
.next-ecg{position:absolute;inset:0;width:100%;height:100%;display:block}
.next-ecg path{fill:none;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.ecg-base{stroke:rgba(61,220,132,.16);stroke-width:2}
.ecg-pulse{stroke:var(--signal);stroke-width:3;stroke-dasharray:180 820;animation:ecgsweep 2.8s linear infinite;filter:drop-shadow(0 0 6px rgba(61,220,132,.9))}
@keyframes ecgsweep{from{stroke-dashoffset:1000}to{stroke-dashoffset:0}}
.next-cols{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.next-cols li{background:var(--night-2);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px;min-width:0}
.nc-date{font-family:var(--f-mono);font-size:1.25rem;font-weight:700;color:var(--signal);font-variant-numeric:tabular-nums;line-height:1.15}
.nc-course{font-size:.86rem;font-weight:700;color:#fff;line-height:1.25}
.nc-days{font-size:.74rem;color:var(--night-muted)}
.nc-price{font-size:1.05rem;font-weight:800;color:#fff;margin-top:4px}
.nc-places{margin-bottom:8px}
.nc-price small{font-size:.7rem;font-weight:600;color:var(--night-muted)}
.nc-inc{font-size:.72rem;color:var(--night-muted)}
.nc-places{font-size:.72rem;font-weight:700;color:var(--signal)}
.nc-places.low{color:#F2A385}
.nc-book{margin-top:auto;display:inline-flex;justify-content:center;padding:.45em .8em;border-radius:999px;background:var(--signal);color:var(--night);font-weight:800;font-size:.84rem;text-decoration:none}
.nc-book:hover{filter:brightness(1.08)}
@media (max-width:520px){.next-cols{grid-template-columns:1fr}.next-cols li{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"date course book" "date days book" "date price book" "date inc book" "date places book";column-gap:14px;row-gap:1px;align-items:center}.nc-date{grid-area:date;font-size:1.1rem;text-align:center;width:2.6em;line-height:1.2}.nc-course{grid-area:course}.nc-days{grid-area:days}.nc-price{grid-area:price;margin-top:2px}.nc-inc{grid-area:inc}.nc-places{grid-area:places;margin-bottom:0}.nc-book{grid-area:book;margin:0}}
.next-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.82rem;color:var(--night-muted)}
.next-foot a{color:var(--signal);font-weight:700}
.dr-book .p small+small{margin-top:2px}
.town-toggle{border:1px dashed var(--green)!important;color:var(--green)!important;font-weight:700}
.town-more{display:flex;flex-wrap:wrap;gap:8px;padding:8px 6px 6px}
.town-more[hidden]{display:none}
.town-more button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:.35em .75em;font:inherit;font-size:.86rem;cursor:pointer}
.town-more button.on,.town-more button:hover{background:var(--green);color:#fff;border-color:var(--green)}
.sw-list{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:14px}
.trainers{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:16px;margin-top:40px;align-items:stretch}
.trainers>*{min-width:0}
.tr-text h3{font-size:1.3rem;margin-bottom:8px}
.tr-text p{color:var(--muted)}
.tr-card{border:2px dashed var(--line);border-radius:16px;padding:16px;display:grid;grid-template-columns:72px 1fr;gap:14px;align-items:center}
.tr-card b{display:block}
.tr-card span{font-size:.86rem;color:var(--muted)}
.tr-photo{width:72px;height:72px;border-radius:50%;background:var(--green-soft);display:grid;place-items:center;font-size:.75rem;color:var(--muted)}
@media (max-width:900px){.trainers{grid-template-columns:1fr}}
form.enq label.f-check{display:flex;gap:10px;align-items:flex-start;text-transform:none;letter-spacing:0;font-family:var(--f-body);font-size:.88rem;color:var(--night-ink)}
form.enq label.f-check input{width:18px;height:18px;margin-top:2px;flex-shrink:0;accent-color:var(--signal)}
.f-hint{font-size:.82rem;color:var(--night-muted);margin:0}
.cookie{position:fixed;left:0;right:0;bottom:0;z-index:80;padding:0 max(12px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))}
.cookie-in{max-width:var(--wrap);margin:0 auto;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 50px -20px rgba(0,0,0,.35);padding:16px 18px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.cookie-in p{flex:1 1 420px;min-width:0;font-size:.92rem;color:var(--muted);margin:0}
.cookie-in p b{color:var(--ink);display:block;margin-bottom:2px}
.cookie-in a{color:var(--green)}
.cookie-btns{display:flex;gap:8px;flex-wrap:wrap}
.cookie-btns .btn{padding:.6em 1.1em;font-size:.92rem}
@media (max-width:760px){.cookie{bottom:calc(64px + env(safe-area-inset-bottom,0px))}.cookie-in{padding:10px 12px;gap:8px 12px;border-radius:12px}.cookie-in p{font-size:.85rem;line-height:1.35}.cookie-more{display:none}.cookie-btns{width:100%}.cookie-btns .btn{flex:1;padding:.5em .8em}}
.link-btn{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}
footer a{color:inherit}
.actionbar{display:none}
@media (max-width:760px){
  body{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
  .actionbar{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:60;
    padding:8px max(12px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));
    background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(10px);border-top:1px solid var(--line)}
  .actionbar a{display:flex;align-items:center;justify-content:center;gap:6px;min-height:46px;border-radius:12px;border:1.5px solid var(--ink);color:var(--ink);text-decoration:none;font-weight:700;font-size:.95rem}
  .actionbar svg{width:18px;height:18px}
  .actionbar .ab-main{background:var(--green);border-color:var(--green);color:#fff}
}
.m-walk{fill:none;stroke:#00843D;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 7;animation:walk 1.4s linear infinite}
.m-drive{fill:none;stroke:#1F5FA8;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:8 6;opacity:.85;animation:walk 1s linear infinite}
.map-key{display:flex;flex-wrap:wrap;gap:6px 18px;padding:10px 16px 0;font-size:.82rem;color:#4A5C52;background:#fff}
.map-key span{display:inline-flex;align-items:center;gap:8px}
.map-key i{width:22px;height:0;border-top:3px dotted #00843D;display:inline-block}
.map-key i.car{border-top:3px dashed #1F5FA8}
@media (prefers-reduced-motion:reduce){.m-mover,.s-car,.s-walker{display:none}}
.m-walk.off,.m-drive.off,#mvCar.off,#mvPerson.off{display:none}
.m-drive{transition:opacity .6s}
.m-drive.fade{opacity:0}
.route-pick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.route-pick button{font:inherit;font-size:.86rem;font-weight:600;padding:.45em .9em;border-radius:999px;border:1.5px solid #C9D3CC;background:#fff;color:#0E1F17;cursor:pointer}
.route-pick button[aria-pressed="true"]{background:#0E1F17;border-color:#0E1F17;color:#fff}
.route-note{display:block;font-size:.84rem;color:#4A5C52;margin-bottom:6px}
.s-route{fill:none;stroke:#00843D;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2 9;animation:walk 1.4s linear infinite}
@keyframes walk{to{stroke-dashoffset:-22}}
.s-cloud{animation:drift 40s ease-in-out infinite alternate}
.s-cloud.c2{animation-duration:55s}.s-cloud.c3{animation-duration:32s;animation-delay:-8s}
@keyframes drift{to{transform:translateX(60px)}}
.s-sun{animation:glow 5s ease-in-out infinite alternate}
@keyframes glow{to{opacity:.6}}
.s-door-dot{transform-box:fill-box;transform-origin:center;animation:ping 2.4s ease-out infinite}
@media (prefers-reduced-motion:reduce){.s-walker{display:none}}
.reviews-ph{margin-top:28px;border:2px dashed var(--line);border-radius:var(--r);padding:24px;text-align:center;color:var(--muted);font-size:.95rem}

.venue{display:grid;grid-template-columns:1fr 1fr;border-radius:24px;overflow:hidden;border:1px solid var(--line);background:var(--card)}
.venue>*{min-width:0}
.venue-art{position:relative;min-height:0;background:#F5F8F4;display:grid;align-content:center}
.venue-art svg{display:block;width:100%;height:auto}
.venue-art{margin:0}
.venue-art figcaption{padding:8px 14px;font-size:.78rem;color:#4A5C52}
.venue-body{padding:clamp(24px,4vw,48px);display:grid;gap:16px;align-content:center}
.venue-body address{font-style:normal;font-family:var(--f-mono);font-size:.92rem;line-height:1.7;padding:14px 16px;background:var(--brick-soft);border-radius:10px}
.venue-feats{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:.92rem}
.venue-feats span{display:flex;gap:8px;align-items:center}
@media (max-width:900px){.venue{grid-template-columns:1fr}}

.faq{display:grid;gap:10px;margin-top:32px;max-width:860px}
.faq details{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:0 20px}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;align-items:center;padding-block:18px;font-weight:700;font-size:1.05rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--f-display);font-size:1.8rem;color:var(--green);line-height:1;transition:transform .3s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding-bottom:18px;color:var(--muted);max-width:68ch}

.enquire{background:var(--night);color:var(--night-ink)}
.enq-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(28px,5vw,64px)}
.enq-grid>*{min-width:0}
.enquire .eyebrow{color:var(--signal)}
.enquire .lede{color:var(--night-muted);margin-top:18px}
.contact-lines{display:grid;gap:12px;margin-top:28px;font-family:var(--f-mono);font-size:.95rem}
.contact-lines div{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}
.contact-lines span{color:var(--night-muted);min-width:7ch;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em}
.contact-lines address{font-style:normal;line-height:1.6}
form.enq{background:var(--night-2);border-radius:20px;padding:clamp(20px,3vw,32px);display:grid;grid-template-columns:1fr 1fr;gap:14px}
form.enq .full{grid-column:1/-1}
form.enq label{display:grid;gap:6px;font-size:.78rem;font-family:var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--night-muted)}
form.enq input,form.enq select,form.enq textarea{font-family:var(--f-body);font-size:1rem;text-transform:none;letter-spacing:0;color:var(--night-ink);background:var(--night);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:.75em .9em;width:100%;color-scheme:dark}
form.enq textarea{min-height:96px;resize:vertical}
form.enq .btn-primary{background:var(--signal);color:var(--night);justify-content:center}
.form-done{grid-column:1/-1;background:rgba(61,220,132,.12);border:1px solid rgba(61,220,132,.4);border-radius:12px;padding:14px}
@media (max-width:900px){.enq-grid{grid-template-columns:1fr}}
@media (max-width:520px){form.enq{grid-template-columns:1fr}}

footer{background:var(--night);color:var(--night-muted);border-top:1px solid rgba(255,255,255,.08);font-size:.84rem;padding-block:30px}
footer .wrap{display:grid;gap:10px}
footer b{color:var(--night-ink)}
.f-brand{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding-bottom:14px;margin-bottom:4px;border-bottom:1px solid rgba(255,255,255,.08)}
.f-brand>span:last-child{min-width:0;flex:1 1 280px}
.f-logo{background:#fff;border-radius:12px;padding:6px 10px;display:inline-flex}
.f-logo img{display:block;height:56px;width:auto}

.reveal{transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.js .reveal.pending{transform:translateY(28px)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .marquee-track{animation:none}
  html{scroll-behavior:auto}
}

/* sub-pages */
.crumbs{font-size:.84rem;color:var(--muted);margin-bottom:14px}
.crumbs a{color:var(--muted)}
.page-hero{padding-block:clamp(32px,4vw,56px) clamp(32px,4vw,48px)}
.page-hero .hero-grid{align-items:start}
.page-hero h1{font-size:clamp(2rem,4.2vw,3.1rem);font-weight:800;line-height:1.1;margin:12px 0 14px}
.facts{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:20px;display:grid;gap:10px}
.facts h2{font-size:1.15rem}
.facts dl{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:0;font-size:.95rem}
.facts dt{color:var(--muted)}
.facts dd{margin:0;font-weight:600}
.facts .btn{justify-content:center;margin-top:6px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,56px);align-items:start}
.two-col>*{min-width:0}
.ticks{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}
.ticks li{display:flex;gap:10px;align-items:flex-start}
.ticks .tick{margin-top:4px}
.two-col .prose h2{font-size:clamp(1.4rem,2.4vw,1.85rem)}
.prose p{color:var(--muted);margin-top:12px;max-width:66ch}
.prose h2+p{margin-top:14px}
.band{background:var(--green-soft)}
.towns{width:100%;border-collapse:collapse;font-size:.95rem;margin-top:14px}
.towns th,.towns td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line)}
.towns th{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.closure{margin:0 0 20px;padding:14px 18px;border-left:4px solid #e0a200;background:#fff7e0;color:#2b2b2b;border-radius:8px;max-width:80ch;font-size:.95rem;line-height:1.5}.closure a{color:inherit;font-weight:600}
.towns td:nth-child(n+2){font-variant-numeric:tabular-nums}
.related{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:20px}
.related a{display:block;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px;text-decoration:none;color:var(--ink);font-weight:700}
.related a span{display:block;font-weight:400;color:var(--muted);font-size:.9rem;margin-top:4px}
.related a:hover{border-color:var(--green)}
.pv-switch{background:var(--night);color:var(--night-ink);font-size:.86rem}
.pv-switch .wrap{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;padding-block:8px}
.pv-switch a{color:var(--night-ink);text-decoration:none;border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:4px 12px}
.pv-switch a:hover{border-color:var(--signal)}
.pv-switch a[aria-current]{background:var(--signal);border-color:var(--signal);color:var(--night);font-weight:700}
.f-links{display:flex;flex-wrap:wrap;gap:4px 8px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.08)}
.f-links a{color:var(--night-ink);text-decoration:none}
.f-links a:hover{text-decoration:underline}
@media (max-width:860px){.two-col{grid-template-columns:1fr}}

/* ---- shared animation plumbing ---- */
[data-anim]:not(.in-view) *{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){[data-anim] *,.journey *{animation:none!important;transition:none!important}
  .route .line,.journey .done{stroke-dashoffset:0}.journey .lit{opacity:1}.route .dot{offset-distance:100%}.journey .van{transform:translateX(540px)}.port .placed,.port .carried,.port .lorry-rear{opacity:0}}
.viz{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(16px,3vw,28px)}
.viz-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(18px,3vw,40px);align-items:center}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.chips button{font:inherit;font-size:.9rem;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:999px;padding:7px 14px;cursor:pointer}
.chips button[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:#fff;font-weight:700}
.viz-panel h3{font-size:1.25rem}
.viz-note{font-size:.85rem;color:var(--muted);margin-top:12px}
@media (max-width:760px){.viz-grid{grid-template-columns:1fr}}

/* ---- FAW body map ---- */
.body-map{width:100%;max-width:240px;margin-inline:auto;display:block}
.body-map .zone{fill:#DCE7E0;stroke:#fff;stroke-width:3;cursor:pointer;transition:fill .25s}
.body-map .zone:hover{fill:#C5DACC}
.body-map .zone.on{fill:var(--green-2)}
.body-map .ring{fill:none;stroke:var(--green);stroke-width:3;transform-box:fill-box;transform-origin:center;animation:ring 1.6s ease-out infinite}
@keyframes ring{from{transform:scale(.4);opacity:1}to{transform:scale(1.6);opacity:0}}
.topic-list{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:8px}
.topic-list li{display:flex;gap:10px;align-items:flex-start;animation:pop .35s ease both}
.topic-list li:nth-child(2){animation-delay:.05s}.topic-list li:nth-child(3){animation-delay:.1s}.topic-list li:nth-child(4){animation-delay:.15s}.topic-list li:nth-child(5){animation-delay:.2s}.topic-list li:nth-child(6){animation-delay:.25s}
@keyframes pop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---- EFAW DR ABC ---- */
.drabc{display:grid;grid-template-columns:repeat(8,1fr);gap:8px}
.drabc button{font:inherit;cursor:pointer;border:2px solid var(--line);background:var(--paper);border-radius:16px;padding:14px 6px;display:grid;gap:4px;justify-items:center;color:var(--ink);position:relative;overflow:hidden}
.drabc b{font-size:clamp(1.4rem,3vw,2.1rem);line-height:1;font-weight:800;white-space:nowrap}
.drabc span{font-size:.76rem;line-height:1.2;color:var(--muted);text-align:center;max-width:100%}
.drabc .cat b{color:var(--brick)}
.drabc button[aria-pressed="true"]{border-color:var(--green);background:var(--green-soft)}
.drabc button[aria-pressed="true"] b{color:var(--green)}
.drabc button i{position:absolute;left:0;bottom:0;height:4px;width:0;background:var(--green)}
.drabc.auto button[aria-pressed="true"] i{animation:fill 4s linear forwards}
@keyframes fill{to{width:100%}}
@media (max-width:760px){.drabc{grid-template-columns:repeat(4,1fr)}}
@media (max-width:420px){.drabc{gap:6px}.drabc button{padding:10px 3px}.drabc span{font-size:.7rem}}
.drabc-text{margin-top:16px;min-height:3.2em;font-size:1.08rem}
.drabc-text strong{color:var(--green)}

/* ---- on-site journey ---- */
.journey{width:100%;height:auto;display:block}
.journey .vb{fill:var(--ink)}.journey .vx{stroke:var(--card)}
.journey .road{stroke:var(--line);stroke-width:10;stroke-linecap:round;fill:none}
.journey .done{stroke:var(--green-2);stroke-width:10;stroke-linecap:round;fill:none;stroke-dasharray:540;stroke-dashoffset:540;animation:drawroad 6s ease-in-out forwards}
@keyframes drawroad{to{stroke-dashoffset:0}}
.journey .van{animation:drive 6s ease-in-out forwards}
@keyframes drive{from{transform:translateX(0)}to{transform:translateX(540px)}}
.journey .stop circle{fill:#fff;stroke:var(--line);stroke-width:4}
.journey .stop .lit{fill:var(--green);stroke:var(--green);opacity:0;animation:lit .3s ease forwards}
@keyframes lit{to{opacity:1}}
.journey-steps{list-style:none;padding:0;margin:6px 0 0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;text-align:center}
.journey-steps b{display:block}
.journey-steps span{color:var(--muted);font-size:.9rem}
@media (max-width:640px){.journey-steps{grid-template-columns:1fr 1fr;text-align:left}}
.planner label{font-weight:700;display:block}
.planner input[type=range]{width:100%;accent-color:var(--green);margin:10px 0 4px}
.planner .out{font-size:1.15rem;margin-top:8px}
.planner .out b{color:var(--green);font-size:1.5rem}
.planner .out .nw{white-space:nowrap}
.planner .out .days{display:block;margin-top:2px}
.groups{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.group{display:grid;grid-template-columns:repeat(6,12px);gap:4px;padding:8px;border:1px dashed var(--line);border-radius:10px;animation:pop .3s ease both}
.group i{width:12px;height:12px;border-radius:50%;background:var(--green-2)}
.group i.empty{background:var(--line)}

/* ---- Sizewell route ---- */
.route{width:100%;max-width:720px;height:auto;display:block;margin-inline:auto}
@media (max-width:640px){.route .pin text{font-size:24px}.route .pin .sub{font-size:20px}}
.route .line{fill:none;stroke:var(--green-2);stroke-width:5;stroke-linecap:round;stroke-dasharray:620;stroke-dashoffset:620;animation:drawroad 3.5s ease-in-out forwards}
.route .dot{fill:var(--green);offset-path:path("M60 210 C 200 200, 300 120, 420 95 S 560 60, 600 50");animation:along 3.5s ease-in-out forwards}
@keyframes along{from{offset-distance:0%}to{offset-distance:100%}}
.route .pin circle{fill:#fff;stroke:var(--green);stroke-width:4}
.route .pin text{font:700 15px var(--f-body);fill:var(--ink)}
.route .pin .sub{font-weight:400;font-size:13px;fill:var(--muted)}
.route .sea{fill:var(--sea)}
.venues{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:20px}
.venues div{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:16px;animation:pop .5s ease both}
.venues div:nth-child(2){animation-delay:.15s}.venues div:nth-child(3){animation-delay:.3s}
.venues h3{font-size:1.05rem}.venues p{color:var(--muted);font-size:.93rem;margin-top:6px}
@media (max-width:760px){.venues{grid-template-columns:1fr}}

/* ---- Felixstowe crane ----
   12s loop: lorry drives in with a container and stops between the crane legs; the crane lifts it off;
   the lorry turns away from the viewer (side view hands over to a rear view) and drives off into the
   distance, getting smaller; the crane lowers the container onto the ship and returns. */
.port{width:100%;height:auto;display:block;border-radius:14px}
.port .trolley{animation:trolley 12s ease-in-out infinite}
.port .hoist{animation:hoist 12s ease-in-out infinite}
.port .cable{transform-box:fill-box;transform-origin:top;animation:cable 12s ease-in-out infinite}
.port .carried{animation:carried 12s linear infinite}
.port .placed{animation:placed 12s linear infinite}
.port .lorry{transform-box:fill-box;transform-origin:50% 100%;animation:lorry 12s ease-in-out infinite}
.port .lcont{animation:lcont 12s linear infinite}
.port .lorry-rear{transform-box:fill-box;transform-origin:50% 100%;animation:lorryrear 12s ease-in infinite}
.port .wave{animation:wave 4s ease-in-out infinite alternate}
/* side view drives in, then narrows as it turns; the rear view takes over and shrinks as it drives away */
@keyframes lorry{0%{transform:translateX(-270px) scaleX(1);opacity:1}18%,36%{transform:translateX(0) scaleX(1);opacity:1}
  40%{transform:translateX(0) scaleX(.3);opacity:0}40.1%,99.9%{transform:translateX(-270px) scaleX(1);opacity:0}100%{transform:translateX(-270px) scaleX(1);opacity:1}}
@keyframes lorryrear{0%,36.5%{transform:translateY(0) scale(1);opacity:0}40%{transform:translateY(0) scale(1);opacity:1}
  44%{transform:translateY(-3px) scale(.9);opacity:1}60%{transform:translateY(-36px) scale(.16);opacity:0}60.1%,100%{transform:translateY(0) scale(1);opacity:0}}
@keyframes lcont{0%,25.9%{opacity:1}26%,99.9%{opacity:0}100%{opacity:1}}
@keyframes hoist{0%,18%{transform:translateY(0)}26%{transform:translateY(98px)}36%,54%{transform:translateY(0)}62%{transform:translateY(34px)}70%,100%{transform:translateY(0)}}
@keyframes cable{0%,18%{transform:scaleY(1)}26%{transform:scaleY(5.9)}36%,54%{transform:scaleY(1)}62%{transform:scaleY(2.7)}70%,100%{transform:scaleY(1)}}
@keyframes trolley{0%,36%{transform:translateX(0)}54%,70%{transform:translateX(216px)}84%,100%{transform:translateX(0)}}
@keyframes carried{0%,25.9%{opacity:0}26%,61.9%{opacity:1}62%,100%{opacity:0}}
@keyframes placed{0%,61.9%{opacity:0}62%,92%{opacity:1}97%,100%{opacity:0}}
@keyframes wave{to{transform:translateX(-30px)}}
.leg{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;font-weight:600}
.leg span{background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:6px 12px}
.leg em{font-style:normal;color:var(--muted);font-weight:400}
