/* Shared quote treatment: brand angles, source-led typography and manual reading. */
.learner-voices{--voice-ink:var(--home-ink,#203e3b);--voice-muted:var(--home-muted,#506b62);--voice-line:#c8d7ca;background:#edf2e9;color:var(--voice-ink);padding:var(--home-section-space,56px) 0;border-block:1px solid #dce5d9}
.learner-voices *{box-sizing:border-box}
.voices-wrap{width:min(1280px,calc(100% - 96px));margin:auto;display:grid;grid-template-columns:minmax(240px,.78fr) minmax(0,1.4fr);gap:clamp(48px,7vw,112px)}
.voices-intro{display:flex;flex-direction:column;align-items:flex-start;padding-top:10px}
.voices-kicker{font-size:15px;font-weight:600;line-height:1.5;margin:0 0 22px;color:var(--voice-muted)}
.voices-intro h2{font-size:var(--home-heading,clamp(38px,4.5vw,60px));font-weight:600;line-height:var(--home-heading-leading,1.04);letter-spacing:-.047em;margin:0 0 26px}
.voices-description{font-size:17px;line-height:1.65;color:var(--voice-muted);margin:0 0 40px;max-width:29ch}
.voices-all{font-size:15px;font-weight:600;display:inline-flex;align-items:center;gap:24px;min-height:44px;color:var(--voice-ink);text-decoration:underline;text-underline-offset:6px;margin-top:auto}
.voices-all span{font-size:24px;font-weight:400;text-decoration:none}
.voices-stage{min-width:0;position:relative;border-left:1px solid var(--voice-line);padding-left:clamp(32px,4vw,56px)}
.voices-mark{display:block;width:76px;height:50px;margin:0 0 20px;fill:#20b79b}
.voices-mark path+path{fill:#89b49a}
.voices-track{display:grid;grid-auto-flow:column;grid-auto-columns:100%;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#89b49a transparent}
[data-voices-enhanced] .voices-track{scrollbar-width:none}
[data-voices-enhanced] .voices-track::-webkit-scrollbar{display:none}
.voices-slide{scroll-snap-align:start;scroll-snap-stop:always;min-width:0;padding:0 6px 6px 0}
.voices-slide figure{margin:0;display:flex;flex-direction:column;height:100%}
.voices-programme{font-size:14px;font-weight:600;line-height:1.5;margin:0 0 17px;color:var(--voice-muted)}
.voices-slide blockquote{padding:0;border:0;margin:0 0 30px;font-style:normal}
.voices-slide blockquote p{font-size:var(--home-quote-size,clamp(25px,2.45vw,33px));line-height:1.4;letter-spacing:-.03em;font-weight:400;margin:0;text-wrap:pretty}
.voices-slide figcaption{margin-top:var(--home-caption-space,auto);font-size:13px;line-height:1.6}
.voices-slide figcaption strong{display:block;font-size:15px;font-weight:600;margin-bottom:6px}
.voices-slide figcaption div{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px;color:var(--voice-muted)}
.voices-slide figcaption a{color:var(--voice-muted);text-decoration:underline;text-underline-offset:4px;display:inline-flex;align-items:center;gap:5px;padding-block:4px}
/* A review's source link reads at the size of the date beside it, like "Post-course feedback", so every name sits the
   same distance above its line (28 Sep 2026). The shared link contract would set it at 15px in a 44px box; the padding
   keeps a 24px target without moving the line. */
.programme-voices .voices-slide figcaption a.brand-link{--ds-font-action:1em;--link-icon-size:14px;--link-gap:5px;min-height:0;padding-block:2px;margin-block:-2px;font-weight:400;line-height:inherit}
.voices-controls{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--voice-line);margin-top:24px;padding-top:19px;gap:24px}
.voices-controls[hidden]{display:none}
.voices-count{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--voice-muted);font-variant-numeric:tabular-nums;margin:0}
.voices-count [data-voices-current]{font-size:20px;font-weight:600;color:var(--voice-ink)}
.voices-count-divider{color:#8b9e91}
.voices-buttons{display:flex;gap:10px}
.voices-buttons button{width:46px;height:46px;border:1px solid #8da599;background:transparent;border-radius:50%;color:var(--voice-ink);font:inherit;font-size:25px;cursor:pointer;display:grid;place-items:center;transition:background-color 180ms,color 180ms,transform 180ms}
.voices-buttons button:disabled{opacity:.32;cursor:default}
@media(hover:hover){.voices-buttons button:not(:disabled):hover{background:var(--voice-ink);border-color:var(--voice-ink);color:#c4fa99}}
.voices-buttons button:not(:disabled):active{transform:scale(.95)}
.learner-voices :focus-visible{outline:2px solid #087b65;outline-offset:4px}
.voices-track:focus-visible{outline-offset:2px}
.voices-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:900px){.voices-wrap{width:calc(100% - 56px);gap:32px;grid-template-columns:minmax(200px,.8fr) minmax(0,1.3fr)}.voices-stage{padding-left:28px}.voices-desktop-break{display:none}.voices-all{gap:14px}}
@media(max-width:650px){.learner-voices{padding:var(--home-section-space,36px) 0 var(--home-section-space,28px)}.voices-wrap{width:calc(100% - 40px);display:grid;grid-template-columns:minmax(0,1fr);gap:24px}.voices-intro{padding:0;display:contents}.voices-kicker{margin:0 0 -14px;font-size:13px}.voices-intro h2{font-size:var(--home-heading,34px);line-height:1.12;letter-spacing:-.04em;margin:0}.voices-intro h2 br{display:none}.voices-description{display:none}.voices-all{grid-row:4;justify-content:space-between;width:100%;font-size:14px;margin:0;border-top:1px solid var(--voice-line);padding-top:12px}.voices-stage{padding:0;border:0;grid-row:3}.voices-mark{position:absolute;right:0;top:-94px;width:44px;height:30px;opacity:.75}.voices-programme{margin:0 0 16px;font-size:13px}.voices-slide{padding-right:4px}.voices-slide blockquote{margin-bottom:24px}.voices-slide blockquote p{font-size:24px;line-height:1.43;font-weight:400;letter-spacing:-.025em}.voices-slide figcaption strong{font-size:14px}.voices-slide figcaption{font-size:12px}.voices-controls{padding-top:16px;margin-top:18px}.voices-count [data-voices-current]{font-size:18px}}
@media(max-width:360px){.voices-intro h2{font-size:var(--home-heading,30px)}.voices-slide blockquote p{font-size:22px}.voices-mark{width:36px;top:-94px}}
@media(prefers-reduced-motion:reduce){.voices-buttons button{transition:none}}
