/* COPIED from erudeon/brand spaceos/look/v3 dist by scripts/design/sync-v3-look.mjs, `:root` rescoped to [data-site="v3"]. Never edit here: change the look there, rebuild it, run the sync again. */
/* GENERATED from erudeon/brand spaceos/look/v3 (sha256 e467184afb33) by build.v3.mjs: the component layer; load after v3-look.css.
   Never edit this copy: change tokens.v3.json or components.src.css there, rebuild, copy again. */
/* V3 components. Mobile first (375), widening at 640, 900 and 1100. Every value reads a --v3-* token
   from v3-look.css, so a skin is one attribute: data-skin="erudeon" or data-skin="pty".
   States: :hover, :active, :focus-visible, :disabled / [aria-disabled], [aria-busy="true"] (loading),
   [aria-pressed] / [aria-selected] / :checked (on), .is-invalid (error). */

/* ---------- base ---------- */
.v3-page{margin:0;background:var(--v3-ground);color:var(--v3-ink);font:400 var(--v3-text-body-small)/var(--v3-leading) var(--v3-font-body);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"cv11","ss01"}
@media (min-width:640px){.v3-page{font-size:var(--v3-text-body)}}
.v3-page *,.v3-page *::before,.v3-page *::after{box-sizing:border-box}
.v3-page :where(h1,h2,h3,h4,p,ul,ol,figure,blockquote){margin:0}
.v3-page :where(button,input,select,textarea){font:inherit;color:inherit}
.v3-page :where(a){color:var(--v3-link)}
.v3-page :where(img,svg){display:block;max-width:100%}
.v3-num{font-variant-numeric:tabular-nums}
.v3-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- type ---------- */
.v3-hero-title,.v3-h1,.v3-h2,.v3-h3{font-family:var(--v3-font-display);font-weight:var(--v3-display-weight);letter-spacing:var(--v3-display-tracking);text-wrap:balance;color:var(--v3-l-900)}
.v3-hero-title{font-size:var(--v3-text-hero);line-height:1}
.v3-h1{font-size:clamp(34px,6vw,60px);line-height:1.02}
.v3-h2{font-size:var(--v3-text-section);line-height:1.04}
.v3-h3{font-size:var(--v3-text-card-title);line-height:1.15;letter-spacing:-.015em}
/* The Apple device instead of an eyebrow: the heading runs on in a quieter colour. */
.v3-quiet{color:var(--v3-faint)}
.v3-accent{color:var(--v3-anchor)}
.v3-lede{font-size:var(--v3-text-lede);line-height:1.45;color:var(--v3-soft);max-width:var(--v3-measure-narrow);text-wrap:pretty}
.v3-body{color:var(--v3-soft);max-width:var(--v3-measure);text-wrap:pretty}
.v3-small{font-size:var(--v3-text-small);color:var(--v3-soft)}
.v3-micro{font-size:var(--v3-text-micro);color:var(--v3-faint)}
/* Display lines balance, body copy is pretty: no orphans, no ragged last lines. */
:where(.v3-page) :where(h1,h2,h3,.v3-card__title,.v3-feature__title,.v3-rail__title,.v3-faq__q,.v3-coach__name){text-wrap:balance}
:where(.v3-page) :where(p,li,blockquote,.v3-lede,.v3-body,.v3-feature__text,.v3-card__text,.v3-faq__a){text-wrap:pretty}

/* ---------- layout: container, section, band ---------- */
.v3-container{width:100%;max-width:var(--v3-size-container);margin-inline:auto;padding-inline:var(--v3-size-gutter)}
@media (min-width:900px){.v3-container{padding-inline:var(--v3-size-gutter-wide)}}
.v3-section{padding-block:64px}
@media (min-width:900px){.v3-section{padding-block:112px}}
.v3-section--tight{padding-block:40px}
@media (min-width:900px){.v3-section--tight{padding-block:64px}}
.v3-section--band{background:var(--v3-band)}
/* The Apple product-page frame: a short, big headline, one lede under it, nothing above it. */
.v3-section__head{display:grid;gap:12px;margin-bottom:36px;max-width:640px;container-type:inline-size}
/* Headline sizes follow their own column, not the viewport (cqi), and a headline longer than about 32
   characters (--long, set by the component from its text) steps down one size: two or three lines on a
   laptop, never four. A display line keeps a measure of about 18ch so its lines stay even. The phone
   sizes stay as they are. */
.v3-section__head .v3-h2{font-size:clamp(32px,8cqi,52px);max-width:18ch}
.v3-section__head .v3-h2--long{font-size:clamp(30px,6.6cqi,44px);max-width:20ch}
.v3-section__head--center .v3-h2{margin-inline:auto}
.v3-section__head .v3-lede{margin-top:4px}
@media (min-width:900px){.v3-section__head{margin-bottom:56px}}
.v3-section__head--center{margin-inline:auto;text-align:center;justify-items:center}
/* The page's opening: the h1, one lede, at most one action. And the closing band: the biggest type on the
   page after the hero, centred, one sentence, the one button, the sign-off. */
.v3-hero{display:grid;gap:14px;align-content:start;container-type:inline-size}
.v3-hero .v3-h1{font-size:clamp(44px,10.5cqi,72px);line-height:.98;max-width:16ch}
.v3-hero .v3-h1--long{font-size:clamp(40px,8.4cqi,60px);line-height:1;max-width:18ch}
@media (max-width:639px){.v3-hero .v3-h1,.v3-hero .v3-h1--long{font-size:44px;line-height:.98}}
.v3-hero .v3-lede{margin-top:6px}
.v3-hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:6px}
.v3-final{display:grid;justify-items:center;gap:20px;text-align:center}
.v3-final{container-type:inline-size}
.v3-final .v3-h2{font-size:clamp(40px,7cqi,72px);line-height:1;max-width:14ch}
.v3-final .v3-h2--long{font-size:clamp(36px,5.6cqi,56px);max-width:18ch}
.v3-final .v3-lede{margin-inline:auto}
.v3-final__action{display:grid;justify-items:center;width:min(100%,360px);margin-top:8px}
.v3-final__action .v3-btn{min-width:240px}
.v3-final__sign{font:500 15px/1.4 var(--v3-font-display);color:var(--v3-faint)}
.v3-section:has(> .v3-container > .v3-final){padding-block:88px 104px}
@media (min-width:900px){.v3-section:has(> .v3-container > .v3-final){padding-block:144px 160px}}
.v3-split{display:grid;gap:40px}
@media (min-width:900px){.v3-split{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:64px;align-items:start}}
.v3-stack{display:grid;gap:16px}
.v3-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}

/* ---------- buttons: one flat pill, no gradient, no glow, no lift ----------
   Primary is the anchor colour (44 px, 56 px in the hero and the card, 32 px in the header). Secondary is a
   tint, not an outline. Tertiary is a text link with a chevron that sits beside a primary, underlined on
   hover. Press is a small squeeze. Loading keeps the width and shows a spinner. */
.v3-btn{--h:44px;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h);padding:0 22px;
  border:0;border-radius:var(--v3-radius-pill);cursor:pointer;text-decoration:none;white-space:nowrap;user-select:none;-webkit-tap-highlight-color:transparent;
  font:600 16px/1 var(--v3-font-body);letter-spacing:-.01em;color:var(--v3-on-anchor);background:var(--v3-anchor);
  transition:background-color .15s ease,color .15s ease,transform .12s var(--v3-ease-out),box-shadow .15s ease}
.v3-btn:hover{background:var(--v3-anchor-deep)}
.v3-btn:active{background:var(--v3-anchor-deep);filter:brightness(.82);transform:scale(.97)}
.v3-btn:focus-visible{outline:2px solid var(--v3-anchor-top);outline-offset:3px}
.v3-btn svg{width:18px;height:18px;flex:none}
.v3-btn--s{--h:32px;padding:0 14px;font-size:14px}
.v3-btn--l{--h:56px;padding:0 34px;font-size:17px}
.v3-btn--block{display:flex;width:100%}
.v3-btn--secondary{color:var(--v3-l-800);background:var(--v3-l-100)}
.v3-btn--secondary:hover{background:var(--v3-l-200)}
.v3-btn--secondary:active{background:var(--v3-l-200);filter:brightness(.93)}
.v3-btn--tertiary{--h:auto;height:auto;padding:4px 0;gap:5px;border-radius:6px;background:none;color:var(--v3-link);font-weight:500}
.v3-btn--tertiary:hover{background:none;color:var(--v3-link-hover);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:4px}
.v3-btn--tertiary:active{transform:none;filter:none;background:none;opacity:.7}
.v3-btn--tertiary.v3-btn--s{font-size:14px;font-weight:600}
.v3-btn--tertiary .v3-arrow{width:7px;height:12px;transition:transform .15s var(--v3-ease-out)}
.v3-btn--tertiary:hover .v3-arrow{transform:translateX(2px)}
.v3-btn:disabled,.v3-btn[aria-disabled="true"]{cursor:not-allowed;transform:none;filter:none;color:var(--v3-disabled);background:var(--v3-l-100)}
.v3-btn--tertiary:disabled,.v3-btn--tertiary[aria-disabled="true"]{background:none;text-decoration:none}
.v3-btn[aria-busy="true"]{cursor:progress;color:transparent;pointer-events:none}
.v3-btn[aria-busy="true"]::after{content:"";position:absolute;inset:0;margin:auto;width:18px;height:18px;border-radius:50%;border:2px solid rgb(255 255 255 / .35);border-top-color:#fff;animation:v3-spin .7s linear infinite}
.v3-btn--secondary[aria-busy="true"]::after,.v3-btn--tertiary[aria-busy="true"]::after{border-color:var(--v3-line-strong);border-top-color:var(--v3-anchor)}
.v3-btn--tertiary[aria-busy="true"]::after{margin:auto auto auto 0}
@keyframes v3-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.v3-btn:active{transform:none}}

/* ---------- fields ---------- */
.v3-field{display:grid;gap:7px;min-width:0}
.v3-label{font-size:14px;font-weight:600;color:var(--v3-ink);letter-spacing:-.005em}
.v3-label .v3-optional{font-weight:500;color:var(--v3-faint)}
.v3-hint{font-size:13.5px;color:var(--v3-faint);line-height:1.45}
.v3-error{display:none;align-items:center;gap:6px;font-size:13.5px;font-weight:500;color:var(--v3-danger);line-height:1.45}
.v3-error::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:currentColor}
.v3-field.is-invalid .v3-error{display:flex}
.v3-input{width:100%;min-width:0;height:var(--v3-size-input);padding:0 15px;border-radius:var(--v3-radius-button);border:1px solid var(--v3-line-strong);background:var(--v3-card);
  font-size:16px;color:var(--v3-ink);transition:border-color var(--v3-hover) ease,box-shadow var(--v3-hover) ease;appearance:none;-webkit-appearance:none}
.v3-input::placeholder{color:var(--v3-faint);opacity:.85}
.v3-input:hover{border-color:rgb(var(--v3-anchor-rgb) / .38)}
.v3-input:focus,.v3-input:focus-visible{outline:none;border-color:var(--v3-anchor);box-shadow:0 0 0 1px var(--v3-anchor),0 0 0 5px var(--v3-focus-halo)}
.v3-input:disabled{background:var(--v3-l-50);color:var(--v3-disabled);border-color:var(--v3-line);cursor:not-allowed}
.v3-field.is-invalid .v3-input{border-color:var(--v3-danger);box-shadow:0 0 0 1px var(--v3-danger)}
textarea.v3-input{height:auto;min-height:112px;padding:13px 15px;resize:vertical;line-height:1.5}
select.v3-input,.v3-select{padding-right:42px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%23667085' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center}

/* Option cards: a checkbox or radio as a whole tappable card. Markup: label.v3-choice > input + span.v3-choice__body */
.v3-choices{display:grid;gap:10px}
@media (min-width:640px){.v3-choices--2{grid-template-columns:1fr 1fr}.v3-choices--3{grid-template-columns:repeat(3,1fr)}}
.v3-choice{position:relative;display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border-radius:var(--v3-radius-well);background:var(--v3-card);
  box-shadow:inset 0 0 0 1px var(--v3-line-strong);cursor:pointer;transition:box-shadow var(--v3-hover) ease,background-color var(--v3-hover) ease,transform var(--v3-hover) var(--v3-ease-out)}
.v3-choice:hover{box-shadow:inset 0 0 0 1px rgb(var(--v3-anchor-rgb) / .4)}
.v3-choice input{appearance:none;-webkit-appearance:none;flex:none;margin:2px 0 0;width:20px;height:20px;border-radius:6px;border:1.5px solid rgb(var(--v3-anchor-rgb) / .35);background:#fff;display:grid;place-items:center;cursor:pointer;transition:all var(--v3-hover) ease}
.v3-choice input[type="radio"]{border-radius:50%}
.v3-choice input:checked{border-color:var(--v3-anchor);background:var(--v3-anchor)}
.v3-choice input[type="checkbox"]:checked{background:var(--v3-anchor) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' fill='none'%3E%3Cpath d='m1.5 5.2 3 3 6-6.4' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}
.v3-choice input[type="radio"]:checked{background:#fff;border-width:6px}
.v3-choice input:focus-visible{outline:none}
.v3-choice:has(input:focus-visible){outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:var(--v3-focus-offset)}
.v3-choice:has(input:checked){background:var(--v3-l-25);box-shadow:inset 0 0 0 2px var(--v3-anchor)}
.v3-choice:has(input:disabled){cursor:not-allowed;background:var(--v3-l-50);box-shadow:inset 0 0 0 1px var(--v3-line)}
.v3-choice:has(input:disabled) .v3-choice__title{color:var(--v3-disabled)}
.v3-choice__body{display:grid;gap:2px;min-width:0;flex:1}
.v3-choice__title{font-weight:600;color:var(--v3-ink);display:flex;justify-content:space-between;gap:10px}
.v3-choice__meta{font-size:14px;color:var(--v3-faint)}

/* Segmented control. Markup: div.v3-segmented[role=tablist] > button[aria-selected] */
.v3-segmented{display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;padding:3px;border-radius:13px;background:var(--v3-l-50);box-shadow:inset 0 0 0 1px var(--v3-line)}
.v3-segmented--block{display:grid;width:100%}
.v3-segmented button{height:38px;padding:0 16px;border:0;border-radius:10px;background:none;font-weight:600;font-size:14.5px;color:var(--v3-soft);cursor:pointer;white-space:nowrap;
  transition:background-color var(--v3-hover) ease,color var(--v3-hover) ease,box-shadow var(--v3-hover) ease}
.v3-segmented button:hover{color:var(--v3-ink)}
.v3-segmented button[aria-selected="true"]{background:var(--v3-card);color:var(--v3-l-900);box-shadow:0 1px 2px rgb(0 0 0 / .06),0 4px 12px -6px rgb(var(--v3-anchor-rgb) / .35)}
.v3-segmented button:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:var(--v3-focus-offset)}
.v3-segmented button:disabled{color:var(--v3-disabled);cursor:not-allowed}

/* ---------- cards: plain, well, link. One hairline, no shadow, no gradient, no glass. ---------- */
.v3-card{position:relative;padding:22px 24px 24px;border-radius:12px;background:var(--v3-card);box-shadow:inset 0 0 0 1px var(--v3-line-strong)}
.v3-card--well{background:var(--v3-l-50);box-shadow:none}
a.v3-card,.v3-card--link{display:block;text-decoration:none;color:inherit;transition:box-shadow var(--v3-hover) ease,background-color var(--v3-hover) ease}
a.v3-card:hover,.v3-card--link:hover{box-shadow:inset 0 0 0 1px rgb(var(--v3-anchor-rgb) / .45);background:var(--v3-l-25)}
a.v3-card:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:2px}
.v3-card__title{display:flex;align-items:center;gap:8px;font:600 17px/1.3 var(--v3-font-body);letter-spacing:-.01em;color:var(--v3-ink);text-wrap:balance}
.v3-card__title .v3-arrow{width:16px;height:16px;flex:none;color:var(--v3-anchor);transition:transform .2s var(--v3-ease-out)}
a.v3-card:hover .v3-card__title .v3-arrow{transform:translateX(3px)}
.v3-card__text{margin-top:6px;color:var(--v3-soft);font-size:15px;line-height:1.5}
@media (prefers-reduced-motion:reduce){a.v3-card,.v3-card__title .v3-arrow{transition:none}}

/* ---------- chips, status, count: text pills, nothing boxed at rest ----------
   A filter chip has no border until it is hovered or chosen. A status is a small outlined tag and only
   says what nothing else on the card says; only the scarce one (seats at ten or fewer) is filled; sold
   out is plain faint text. A pill never repeats a fact said elsewhere. */
.v3-chips{display:flex;gap:8px;flex-wrap:wrap}
.v3-chips--scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(var(--v3-size-gutter) * -1);padding-inline:var(--v3-size-gutter)}
.v3-chips--scroll::-webkit-scrollbar{display:none}
.v3-chips--scroll > *{flex:none}
.v3-chip{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border:0;border-radius:var(--v3-radius-pill);background:transparent;color:var(--v3-soft);
  font:500 14.5px/1 var(--v3-font-body);cursor:pointer;white-space:nowrap;transition:background-color .15s,color .15s,box-shadow .15s}
.v3-chip:hover{background:var(--v3-l-50);color:var(--v3-ink)}
.v3-chip[aria-pressed="true"]{background:var(--v3-l-100);color:var(--v3-l-900);font-weight:600}
.v3-chip:focus-visible{outline:2px solid var(--v3-anchor-top);outline-offset:1px}
.v3-chip:disabled{color:var(--v3-disabled);cursor:not-allowed;background:none}
.v3-chip .v3-count{min-width:0;height:auto;padding:0;background:none;color:var(--v3-faint);font-size:13px;font-weight:500}
.v3-chip[aria-pressed="true"] .v3-count{background:none;color:var(--v3-l-700)}

.v3-status{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--v3-radius-pill);font:600 12px/1 var(--v3-font-body);white-space:nowrap;
  color:var(--v3-l-800);box-shadow:inset 0 0 0 1px var(--v3-line-strong)}
.v3-status--brand{color:var(--v3-l-800)}
.v3-status--ok{color:var(--v3-ok);box-shadow:inset 0 0 0 1px currentColor}
.v3-status--pop{background:var(--v3-pop-soft);color:var(--v3-pop-ink);box-shadow:none}
.v3-status--muted{height:auto;padding:0;box-shadow:none;color:var(--v3-faint);font-weight:500;font-size:13px}
.v3-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 7px;border-radius:var(--v3-radius-pill);background:var(--v3-l-100);color:var(--v3-l-800);font:600 12px/1 var(--v3-font-body);font-variant-numeric:tabular-nums}
.v3-count--pop{background:var(--v3-pop);color:#fff}

/* ---------- header: the Linear bar ----------
   Brand then course on the left; the nav, a hairline and "Log in" on the right. Below 1000px the nav moves
   into a whole sheet under the bar with four big links, and the bar (mark, course pill, Log in, menu) stays
   put; the menu's two lines turn into a cross. The glass lives on ::before, so the open sheet (fixed) is
   placed against the screen, not against the bar. */
.v3-header{position:sticky;top:var(--env-strip-height, 0px);z-index:40;isolation:isolate}
.v3-header::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--v3-glass);-webkit-backdrop-filter:var(--v3-glass-filter);backdrop-filter:var(--v3-glass-filter);box-shadow:inset 0 -1px 0 var(--v3-line)}
.v3-header__inner{display:flex;align-items:center;gap:10px;height:var(--v3-size-header)}
.v3-header__brand-group{display:flex;align-items:center;gap:10px;min-width:0}
.v3-header__brand{display:flex;align-items:center;flex:none;color:var(--v3-l-900);text-decoration:none;border-radius:8px}
.v3-header__brand img,.v3-header__brand svg{height:22px;width:auto}
.v3-header__brand:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring)}
.v3-header__mark{display:none}
/* Phones: the mark stands in for the lockup so the course pill, Log in and the menu all fit at 375. */
@media (max-width:479px){.v3-header__lockup{display:none !important}.v3-header__brand .v3-header__mark{display:block;height:28px}}
.v3-header__right{display:flex;align-items:center;gap:2px;margin-left:auto}
.v3-header__nav{display:none}
.v3-header__link{display:inline-block;padding:8px 11px;border-radius:9px;font-size:14.5px;font-weight:500;color:var(--v3-soft);text-decoration:none;white-space:nowrap;
  transition:color var(--v3-hover) ease,background-color var(--v3-hover) ease}
.v3-header__link:hover{color:var(--v3-ink);background:rgb(var(--v3-anchor-rgb) / .05)}
.v3-header__link[aria-current="page"]{color:var(--v3-l-900)}
.v3-header__link:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring)}
.v3-header__sep{width:1px;height:18px;margin-inline:8px;background:var(--v3-line-strong)}
.v3-header__right > .v3-btn{margin-left:6px}
@media (min-width:1000px){
  .v3-header__inner{gap:14px}
  .v3-header__nav{display:flex;align-items:center;gap:2px}
  .v3-header__menu{display:none}
}
@media (max-width:999px){.v3-header__sep{display:none}}
/* The menu button: two lines that become a cross. */
.v3-header__menu > summary{display:grid;place-items:center;width:40px;height:40px;margin-left:2px;border-radius:10px;color:var(--v3-ink);cursor:pointer;list-style:none}
.v3-header__menu > summary::-webkit-details-marker{display:none}
.v3-header__menu > summary:hover{background:var(--v3-l-50)}
.v3-header__menu > summary:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring)}
.v3-header__burger{position:relative;width:18px;height:12px}
.v3-header__burger i{position:absolute;left:0;right:0;height:1.7px;border-radius:2px;background:currentColor;transition:transform .25s var(--v3-ease-out),top .25s var(--v3-ease-out)}
.v3-header__burger i:first-child{top:1px}
.v3-header__burger i:last-child{top:9px}
.v3-header__menu[open] .v3-header__burger i:first-child{top:5px;transform:rotate(45deg)}
.v3-header__menu[open] .v3-header__burger i:last-child{top:5px;transform:rotate(-45deg)}
/* The sheet: the whole screen under the bar. */
.v3-header__sheet{position:fixed;left:0;right:0;top:calc(var(--env-strip-height, 0px) + var(--v3-size-header));bottom:0;overflow:auto;background:var(--v3-ground);box-shadow:inset 0 1px 0 var(--v3-line)}
.v3-header__sheet > .v3-container{padding-block:28px 40px}
.v3-header__big{display:grid;gap:2px}
.v3-header__big a{display:block;width:fit-content;padding:9px 0;border-radius:8px;font:500 26px/1.2 var(--v3-font-body);letter-spacing:-.015em;color:var(--v3-ink);text-decoration:none}
.v3-header__big a:hover{color:var(--v3-l-700)}
.v3-header__big a[aria-current="page"]{color:var(--v3-anchor)}
.v3-header__big a:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:4px}
@media (prefers-reduced-motion:no-preference){
  .v3-header__menu[open] .v3-header__sheet{animation:v3-sheet-in .22s var(--v3-ease-out) both}
  .v3-header__menu[open] .v3-header__big a{animation:v3-sheet-rise .32s var(--v3-ease-out) both}
  .v3-header__menu[open] .v3-header__big a:nth-child(2){animation-delay:.03s}
  .v3-header__menu[open] .v3-header__big a:nth-child(3){animation-delay:.06s}
  .v3-header__menu[open] .v3-header__big a:nth-child(4){animation-delay:.09s}
}
@keyframes v3-sheet-in{from{opacity:.4}}
@keyframes v3-sheet-rise{from{transform:translateY(8px)}}

/* Course pill: the chosen programme, changed in one tap. A control, so it may show its own value. */
.v3-pill{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border:0;border-radius:var(--v3-radius-pill);background:var(--v3-card);
  box-shadow:inset 0 0 0 1px var(--v3-line-strong);color:var(--v3-ink);font:600 14px/1 var(--v3-font-body);cursor:pointer;white-space:nowrap;text-decoration:none;
  transition:background-color .15s,box-shadow .15s}
.v3-pill:hover{background:var(--v3-l-25);box-shadow:inset 0 0 0 1px rgb(var(--v3-anchor-rgb) / .45)}
.v3-pill[aria-expanded="true"]{box-shadow:inset 0 0 0 1.5px var(--v3-anchor)}
.v3-pill:focus-visible{outline:2px solid var(--v3-anchor-top);outline-offset:1px}
.v3-pill svg{width:10px;height:10px;opacity:.65;transition:transform .15s var(--v3-ease-out)}
.v3-pill[aria-expanded="true"] svg{transform:rotate(180deg)}

/* A floating list: the pill's course menu and the selector's open state. */
.v3-menu{list-style:none;margin:0;padding:6px;min-width:240px;border-radius:16px;background:var(--v3-glass);-webkit-backdrop-filter:var(--v3-glass-filter);backdrop-filter:var(--v3-glass-filter);
  box-shadow:inset 0 0 0 1px var(--v3-line),var(--v3-shadow-lift)}
.v3-menu__item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border-radius:10px;font-size:15px;color:var(--v3-ink);cursor:pointer}
.v3-menu__item:hover,.v3-menu__item.is-active{background:rgb(var(--v3-anchor-rgb) / .06)}
.v3-menu__item[aria-selected="true"]{font-weight:600;color:var(--v3-l-900)}
.v3-menu__item[aria-selected="true"]::after{content:"";width:14px;height:10px;flex:none;background:var(--v3-anchor);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='10' fill='none'%3E%3Cpath d='m1.5 5.2 3.5 3.3 7.5-7' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='10' fill='none'%3E%3Cpath d='m1.5 5.2 3.5 3.3 7.5-7' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.v3-menu__item[aria-disabled="true"]{color:var(--v3-disabled);cursor:default}
.v3-menu__item[aria-disabled="true"]:hover{background:none}
.v3-menu__soon{font-size:12px;font-weight:600;color:var(--v3-faint);background:var(--v3-l-50);padding:4px 8px;border-radius:var(--v3-radius-pill);white-space:nowrap}
.v3-menu__sep{height:1px;margin:6px 10px;background:var(--v3-line)}

/* ---------- selector: university, then programme, then course ---------- */
.v3-selector{display:grid;border-radius:20px;background:var(--v3-card);box-shadow:inset 0 0 0 1px var(--v3-line-strong),var(--v3-shadow);overflow:hidden}
.v3-selector__step{position:relative;display:grid;gap:2px;padding:12px 44px 12px 18px;min-width:0;cursor:pointer;transition:background-color var(--v3-hover) ease}
.v3-selector__step + .v3-selector__step{box-shadow:inset 0 1px 0 var(--v3-line)}
.v3-selector__step:hover{background:var(--v3-l-25)}
.v3-selector__step::after{content:"";position:absolute;right:18px;top:50%;width:12px;height:8px;margin-top:-4px;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%23667085' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.v3-selector__label{font-size:12.5px;font-weight:600;color:var(--v3-faint);letter-spacing:.005em}
.v3-selector__select{appearance:none;-webkit-appearance:none;width:100%;border:0;background:none;padding:0;font-size:16.5px;font-weight:600;color:var(--v3-l-900);cursor:pointer;text-overflow:ellipsis}
.v3-selector__select:focus{outline:none}
.v3-selector__step:has(.v3-selector__select:focus-visible){box-shadow:inset 0 0 0 2px var(--v3-ring);border-radius:inherit}
.v3-selector__step:has(.v3-selector__select:disabled){cursor:not-allowed;background:var(--v3-l-25)}
.v3-selector__step:has(.v3-selector__select:disabled) .v3-selector__select{color:var(--v3-disabled);cursor:not-allowed}
.v3-selector__select option:disabled{color:#9aa3b2}
.v3-selector__go{padding:10px}
.v3-selector__go .v3-btn{width:100%}
@media (min-width:760px){
  .v3-selector{grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:center;border-radius:var(--v3-radius-pill);padding:6px}
  .v3-selector__step{padding:8px 44px 8px 22px;border-radius:var(--v3-radius-pill)}
  .v3-selector__step + .v3-selector__step{box-shadow:none}
  .v3-selector__step + .v3-selector__step::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:1px;background:var(--v3-line)}
  .v3-selector__step:hover::before,.v3-selector__step:hover + .v3-selector__step::before{opacity:0}
  .v3-selector__go{padding:0 0 0 6px}
  .v3-selector__go .v3-btn{border-radius:var(--v3-radius-pill);width:auto}
}

/* ---------- finder: three numbered steps in one bar, and any of them opens ONE panel ----------
   The bar is the selector's shape with the steps numbered 1, 2, 3 and a go button. The panel says how it is
   drawn in data-mode, set by the finder when it opens: "columns" on a laptop (the three steps side by side,
   filling left to right), "sheet" on a phone (a full-screen sheet, the steps stacked as an accordion: the
   current one open, finished ones one line with Change, the next one greyed), "stack" in place inside another
   panel (the header pill's), the accordion again with no bar above it. One line at the bottom asks for a
   missing program; universities opening next sit greyed under a thin rule.
   Markup: div.v3-finder > div.v3-finder__bar > (button.v3-finder__seg > span.v3-finder__label >
   span.v3-finder__n + text, span.v3-finder__val) x3 + div.v3-finder__go; div.v3-finder__panel[data-mode] >
   div.v3-finder__cols > section.v3-finder__stage (.is-now .is-done .is-wait) > button.v3-finder__stage-head +
   ul.v3-finder__list > li > a.v3-finder__row; a.v3-finder__door. */
.v3-finder{position:relative;text-align:left}
.v3-finder__bar{display:grid;border-radius:20px;background:var(--v3-card);box-shadow:inset 0 0 0 1px var(--v3-line-strong),var(--v3-shadow);overflow:hidden}
.v3-finder__seg{position:relative;display:grid;gap:2px;width:100%;min-width:0;padding:12px 44px 12px 18px;border:0;background:none;font:inherit;text-align:left;color:inherit;cursor:pointer;transition:background-color var(--v3-hover) ease}
.v3-finder__seg + .v3-finder__seg{box-shadow:inset 0 1px 0 var(--v3-line)}
.v3-finder__seg:hover{background:var(--v3-l-25)}
.v3-finder__seg:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:-3px}
.v3-finder__seg::after{content:"";position:absolute;right:18px;top:50%;width:12px;height:8px;margin-top:-4px;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%23667085' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.v3-finder__seg.is-off{cursor:not-allowed;background:var(--v3-l-25)}
.v3-finder__label{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--v3-faint)}
.v3-finder__n{display:inline-grid;place-items:center;flex:none;width:18px;height:18px;border-radius:50%;background:var(--v3-l-100);color:var(--v3-l-800);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.v3-finder__val{font-size:16.5px;font-weight:600;color:var(--v3-l-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v3-finder__val.is-empty{font-size:15.5px;font-weight:500;color:var(--v3-soft)}
.v3-finder__seg.is-off .v3-finder__val{color:var(--v3-disabled)}
.v3-finder__go{padding:10px}
.v3-finder__go .v3-btn{width:100%;text-decoration:none}
@media (min-width:760px){
  .v3-finder:not(.v3-finder--stack) .v3-finder__bar{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr) auto;align-items:center;border-radius:var(--v3-radius-pill);padding:6px}
  .v3-finder:not(.v3-finder--stack) .v3-finder__seg{padding:8px 40px 8px 22px;border-radius:var(--v3-radius-pill)}
  .v3-finder:not(.v3-finder--stack) .v3-finder__seg + .v3-finder__seg{box-shadow:none}
  .v3-finder:not(.v3-finder--stack) .v3-finder__seg + .v3-finder__seg::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:1px;background:var(--v3-line)}
  .v3-finder:not(.v3-finder--stack) .v3-finder__seg:hover::before,.v3-finder:not(.v3-finder--stack) .v3-finder__seg:hover + .v3-finder__seg::before{opacity:0}
  .v3-finder:not(.v3-finder--stack) .v3-finder__seg.is-now{background:var(--v3-l-50)}
  .v3-finder:not(.v3-finder--stack) .v3-finder__go{padding:0 0 0 6px}
  .v3-finder:not(.v3-finder--stack) .v3-finder__go .v3-btn{width:auto;border-radius:var(--v3-radius-pill)}
}
/* In another panel the steps stand alone, the button under them. */
.v3-finder--stack .v3-finder__go{padding:12px 0 0}

/* The panel. */
.v3-finder__panel{z-index:40;background:var(--v3-card);animation:v3-finder-in var(--v3-hover) var(--v3-ease-out)}
.v3-finder__sheethead{display:none}
.v3-finder__stage{min-width:0}
.v3-finder__stage-head{display:flex;align-items:center;gap:10px;width:100%;padding:14px 18px 10px;border:0;background:none;font:inherit;text-align:left;color:inherit;cursor:default}
.v3-finder__stage-head .v3-finder__label{flex:none}
.v3-finder__stage-sum{flex:1;min-width:0;font-size:15px;font-weight:600;color:var(--v3-l-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v3-finder__stage-change{display:none;flex:none;font-size:14px;font-weight:600;color:var(--v3-link)}
.v3-finder__list{list-style:none;margin:0;padding:0 8px 8px}
.v3-finder__row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:52px;padding:9px 12px;border:0;border-radius:12px;background:none;font:inherit;text-align:left;color:var(--v3-ink);text-decoration:none;cursor:pointer}
.v3-finder__row:hover,.v3-finder__row:focus-visible{background:rgb(var(--v3-anchor-rgb) / .06);outline:none}
.v3-finder__row:focus-visible{box-shadow:inset 0 0 0 2px var(--v3-ring)}
.v3-finder__main{display:grid;gap:1px;min-width:0}
.v3-finder__name{font-size:16px;font-weight:600;line-height:1.3}
.v3-finder__name span{font-weight:500;color:var(--v3-faint)}
.v3-finder__sub{font-size:13.5px;color:var(--v3-faint)}
.v3-finder__tag{flex:none;font-size:12.5px;font-weight:600;color:var(--v3-ok);background:var(--v3-ok-soft);padding:4px 9px;border-radius:var(--v3-radius-pill);white-space:nowrap}
.v3-finder__chev{flex:none;width:8px;height:13px;color:var(--v3-faint)}
.v3-finder__row[aria-selected="true"]{background:var(--v3-l-100)}
.v3-finder__row[aria-selected="true"] .v3-finder__name{color:var(--v3-l-900)}
/* A university opening next: greyed, still a link to ask for it. */
.v3-finder__row--next .v3-finder__name,.v3-finder__row--next .v3-finder__name span{color:var(--v3-disabled)}
.v3-finder__rule{height:1px;margin:6px 12px;background:var(--v3-line)}
.v3-finder__wait{margin:0;padding:6px 14px 14px;font-size:15px;color:var(--v3-disabled)}
.v3-finder__door{display:block;padding:14px 18px 16px;font-size:15px;font-weight:600;color:var(--v3-link);text-decoration:none}
.v3-finder__door:hover{text-decoration:underline;text-underline-offset:3px}
.v3-finder__door:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:-2px}
@keyframes v3-finder-in{from{opacity:0;transform:translateY(-4px)}}
@keyframes v3-finder-sheet{from{transform:translateY(14px);opacity:0}}

/* Columns: one panel under the bar, the three steps side by side. */
.v3-finder__panel[data-mode="columns"]{position:absolute;left:0;right:0;top:calc(100% + 12px);border-radius:28px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--v3-line-strong),var(--v3-shadow-lift)}
[data-mode="columns"] .v3-finder__cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
[data-mode="columns"] .v3-finder__stage{min-height:360px}
[data-mode="columns"] .v3-finder__stage + .v3-finder__stage{box-shadow:inset 1px 0 0 var(--v3-line)}
[data-mode="columns"] .v3-finder__list{max-height:400px;overflow-y:auto;overscroll-behavior:contain}
[data-mode="columns"] .v3-finder__stage-head{padding-top:18px}
[data-mode="columns"] .v3-finder__stage.is-now .v3-finder__n{background:var(--v3-anchor);color:var(--v3-on-anchor)}
[data-mode="columns"] .v3-finder__stage.is-now .v3-finder__label{color:var(--v3-l-900)}
[data-mode="columns"] .v3-finder__stage-sum{display:none}
[data-mode="columns"] .v3-finder__door{box-shadow:inset 0 1px 0 var(--v3-line);padding:16px 26px 18px}

/* Sheet: the whole screen under the environment strip, a round close, the steps as cards. */
.v3-finder__panel[data-mode="sheet"]{position:fixed;top:var(--env-strip-height, 0px);right:0;bottom:0;left:0;z-index:60;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;background:var(--v3-ground);animation:v3-finder-sheet .28s var(--v3-ease-out)}
html:has(.v3-finder__panel[data-mode="sheet"]){overflow:hidden}
[data-mode="sheet"] .v3-finder__sheethead{/* env-strip-exempt: top 0 of the sheet's own scrollport, which already starts under the strip */position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:max(14px,env(safe-area-inset-top)) 16px 6px 20px;background:var(--v3-ground)}
.v3-finder__title{margin:0;font:var(--v3-display-weight) 24px/1.1 var(--v3-font-display);letter-spacing:-.02em;color:var(--v3-l-900)}
.v3-finder__close{flex:none;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--v3-card);box-shadow:inset 0 0 0 1px var(--v3-line-strong);color:var(--v3-ink);cursor:pointer}
.v3-finder__close:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring)}
.v3-finder__close svg{width:18px;height:18px}

/* The accordion, in the sheet and in place: the current step open, finished ones a line with Change. */
.v3-finder__panel[data-mode="stack"]{background:none;animation:none}
[data-mode="sheet"] .v3-finder__cols,[data-mode="stack"] .v3-finder__cols{display:grid;gap:10px}
[data-mode="sheet"] .v3-finder__cols{padding:10px 12px 12px}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage{border-radius:20px;background:var(--v3-card);box-shadow:inset 0 0 0 1px var(--v3-line)}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage.is-now{box-shadow:inset 0 0 0 1.5px var(--v3-anchor),var(--v3-shadow-soft)}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage-head{min-height:60px;padding-block:12px;cursor:pointer}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage.is-wait .v3-finder__stage-head{cursor:not-allowed;opacity:.6}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage.is-now .v3-finder__stage-sum{display:none}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage.is-done:not(.is-now) .v3-finder__stage-change{display:block}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage:not(.is-now) :is(.v3-finder__list,.v3-finder__rule,.v3-finder__wait,.v3-finder__door){display:none}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage.is-now .v3-finder__n{background:var(--v3-anchor);color:var(--v3-on-anchor)}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__stage.is-done:not(.is-now) .v3-finder__n{background:var(--v3-l-900);color:var(--v3-on-anchor)}
:is([data-mode="sheet"],[data-mode="stack"]) .v3-finder__list{padding-bottom:4px}
[data-mode="sheet"] .v3-finder__row{min-height:58px}
[data-mode="stack"] .v3-finder__stage-head{min-height:52px;padding:10px 14px}
[data-mode="stack"] .v3-finder__list{padding-inline:6px}
@media (prefers-reduced-motion:reduce){.v3-finder__panel{animation:none}.v3-finder__seg{transition:none}}

/* ---------- price: one figure, the list price struck small beside it, VAT said quietly ---------- */
.v3-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0}
.v3-price__now{font:700 44px/1 var(--v3-font-display);letter-spacing:-.03em;color:var(--v3-l-900);font-variant-numeric:tabular-nums}
.v3-price__was{font:500 18px/1 var(--v3-font-body);color:var(--v3-faint);text-decoration:line-through;text-decoration-thickness:1.5px;text-decoration-color:rgb(var(--v3-anchor-rgb) / .4);font-variant-numeric:tabular-nums}
.v3-price__vat{font-size:var(--v3-text-small);color:var(--v3-faint);white-space:nowrap}
.v3-price--s .v3-price__now{font-size:34px}
.v3-price--s .v3-price__was{font-size:16px}

/* ---------- clock: one line in the page's own type. A plain date until the last 3 days, then the time
   left in tabular figures, seconds only in the last 24 hours. No red, no boxes, no pulse. ---------- */
.v3-clock{font-variant-numeric:tabular-nums}
.v3-clock__left{font-weight:600;color:var(--v3-ink);white-space:nowrap}

/* ---------- rating: Airbnb's laurel lockup, once, beside the price ----------
   The figure held between two laurel sprigs, the count beside it, no star row. */
.v3-stars{display:inline-flex;gap:1px;color:var(--v3-anchor)}
.v3-stars svg{width:14px;height:14px}
.v3-rating{display:inline-flex;align-items:center;gap:12px;color:var(--v3-soft);text-decoration:none;font-size:13px;line-height:1.25;white-space:nowrap}
.v3-rating__mark{display:inline-flex;align-items:center;gap:2px;color:var(--v3-l-900)}
.v3-rating__mark svg{width:20px;height:36px;fill:currentColor}
.v3-rating__mark svg:last-child{transform:scaleX(-1)}
.v3-rating__fig{font:600 26px/1 var(--v3-font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.v3-rating__count{display:grid;text-align:left}
.v3-rating__count b{font-weight:600;color:var(--v3-ink);font-size:14px}
a.v3-rating:hover .v3-rating__count span{text-decoration:underline;text-underline-offset:3px}
a.v3-rating:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:4px;border-radius:8px}
@media (max-width:479px){.v3-rating{gap:8px}.v3-rating__mark svg{width:15px;height:28px}.v3-rating__fig{font-size:21px}.v3-rating__count{font-size:12px}.v3-rating__count b{font-size:13px}}

/* ---------- payment marks: one colour, small, one row ---------- */
.v3-pay{display:inline-flex;align-items:center;gap:10px;color:oklch(.5 .015 var(--v3-hue))}
.v3-pay svg{display:block;height:15px;width:auto}
.v3-pay .v3-pay__ideal{height:18px}

/* ---------- offer: the seat for sale, one data object in three renderings ----------
   Card (beside the story, sticky on desktop): the price block with its one note line, the button, the
   guarantee and the payment marks as one row under it, the member link last. Plain type on white.
   Compact (a card in a list): the price, the note line, the button. Bar (phones): price, note, button,
   shown only while the card's own button is off screen. */
.v3-offer{--pad-x:24px;--pad-b:24px;display:grid;grid-template-columns:minmax(0,1fr);padding:26px var(--pad-x) var(--pad-b);border-radius:var(--v3-radius-card);background:var(--v3-card);box-shadow:inset 0 0 0 1px var(--v3-line),var(--v3-shadow-soft);overflow:hidden}
@media (min-width:900px){.v3-offer{--pad-x:32px;--pad-b:0px;padding-top:32px}}
.v3-offer__head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px 12px}
.v3-offer__head .v3-price{flex:1 1 0;min-width:0}
.v3-offer__head .v3-rating{flex:none}
.v3-offer__head .v3-price{column-gap:8px}
.v3-offer__head .v3-price__now{font-size:40px}
.v3-offer__head .v3-price__vat{flex-basis:100%}
.v3-offer__note{margin-top:10px;font-size:15px;line-height:1.4;color:var(--v3-soft);text-wrap:balance}
.v3-offer__note--seats{color:var(--v3-ink);font-weight:600}
/* When it runs: Commerce's calm field, the first day and the exam, each on its own line with a small icon. */
.v3-offer__when{display:grid;gap:10px;margin-top:22px;padding:14px 16px;border-radius:var(--v3-radius-well);background:var(--v3-l-50);font-size:15px;line-height:1.4;color:var(--v3-soft)}
.v3-offer__when p{display:flex;align-items:flex-start;gap:10px}
.v3-offer__when svg{width:18px;height:18px;flex:none;margin-top:1px;color:var(--v3-anchor)}
.v3-offer__when b{font-weight:600;color:var(--v3-ink)}
.v3-offer > .v3-btn{margin-top:24px}
.v3-offer__pay{display:flex;justify-content:center;margin-top:14px}
/* What the seat holds: Maven's three short lines with a tick. */
.v3-offer__points{display:grid;gap:10px;margin:26px 0 0;padding:0;list-style:none;font-size:15px;line-height:1.4;color:var(--v3-ink)}
.v3-offer__points li{display:flex;gap:10px;align-items:flex-start}
.v3-offer__points svg{width:18px;height:18px;flex:none;margin-top:1px;color:var(--v3-anchor)}
/* The guarantee closes the card, on its own quiet band with the shield, so it reads as a promise. */
.v3-offer__foot .v3-btn--tertiary{margin-left:26px}
.v3-offer__foot{display:grid;justify-items:start;gap:6px;margin:28px calc(var(--pad-x) * -1) calc(var(--pad-b) * -1);padding:16px var(--pad-x);background:var(--v3-l-50);box-shadow:inset 0 1px 0 var(--v3-line)}
@media (min-width:900px){.v3-offer__foot .v3-btn--tertiary{margin-left:26px}
.v3-offer__foot{padding-block:18px}}
.v3-offer__trust{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 14px;margin-top:14px}
.v3-offer__guarantee{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:14.5px;font-weight:600;color:var(--v3-ink)}
.v3-offer__guarantee svg{width:18px;height:18px;flex:none;color:var(--v3-anchor)}
.v3-offer__member{margin-top:22px;padding-top:18px;box-shadow:inset 0 1px 0 var(--v3-line);font-size:14.5px}
.v3-offer__member a{font-weight:600;text-decoration:none}
.v3-offer__member a:hover{text-decoration:underline;text-underline-offset:3px}
.v3-offer--compact{padding:0;border-radius:0;background:none;box-shadow:none;overflow:visible}
.v3-offer--compact > .v3-btn{margin-top:16px}

.v3-offerbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;align-items:center;gap:14px;padding:12px var(--v3-size-gutter) calc(12px + env(safe-area-inset-bottom));
  background:var(--v3-glass);-webkit-backdrop-filter:var(--v3-glass-filter);backdrop-filter:var(--v3-glass-filter);box-shadow:inset 0 1px 0 var(--v3-line),0 -12px 30px -20px rgb(var(--v3-anchor-rgb) / .35);
  transform:translateY(110%);transition:transform .35s var(--v3-ease-out)}
.v3-offerbar.is-on{transform:none}
.v3-offerbar--static{position:relative;z-index:auto;transform:none;border-radius:var(--v3-radius-card-small);box-shadow:inset 0 0 0 1px var(--v3-line),var(--v3-shadow-soft)}
.v3-offerbar__info{display:grid;gap:3px;min-width:0;flex:1}
.v3-offerbar__price{font:700 22px/1 var(--v3-font-display);letter-spacing:-.02em;color:var(--v3-l-900);font-variant-numeric:tabular-nums}
.v3-offerbar__note{font-size:13px;color:var(--v3-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v3-offerbar .v3-btn{flex:none}
@media (min-width:900px){.v3-offerbar:not(.v3-offerbar--static){display:none}}

/* ---------- ticket: the accelerator as a paddock pass. Four pieces of text (the brand, the course, Day 1,
   the exam) on restrained carbon, the day count as a foil outline numeral. Drawn on a 320 unit credential
   so it scales whole with its width. Still: no sheen, no motion. ---------- */
.v3-ticket{--u:calc(100cqw / 320);container-type:inline-size;position:relative;width:100%;
  filter:drop-shadow(0 1px 1.5px oklch(.2 .02 var(--v3-hue) / .25)) drop-shadow(0 20px 24px rgb(var(--v3-anchor-rgb) / .3))}
.v3-ticket__strap{position:absolute;z-index:0;left:50%;top:0;width:calc(var(--u) * 28);height:calc(var(--u) * 76);transform:translateX(-50%);border-radius:calc(var(--u) * 2) calc(var(--u) * 2) 0 0;
  background:repeating-linear-gradient(0deg,oklch(0 0 0 / .14) 0 calc(var(--u) * 1),#0000 0 calc(var(--u) * 3)),
    linear-gradient(90deg,oklch(1 0 0 / .18),#0000 14%,#0000 86%,oklch(0 0 0 / .18)),
    conic-gradient(var(--v3-anchor-deep) 25%,var(--v3-anchor-top) 0 50%,var(--v3-anchor-deep) 0 75%,var(--v3-anchor-top) 0) 0 0 / calc(var(--u) * 14) calc(var(--u) * 14)}
.v3-ticket__card{position:relative;z-index:1;margin-top:calc(var(--u) * 56);width:100%;aspect-ratio:320 / 470;overflow:hidden;display:grid;grid-template-rows:calc(var(--u) * 74) 1fr calc(var(--u) * 112);
  color:#fff;border-radius:calc(var(--u) * 14);font-family:var(--v3-font-body);
  background:repeating-linear-gradient(45deg,oklch(1 0 0 / .045) 0 calc(var(--u) * 1.5),#0000 0 calc(var(--u) * 4)),
    repeating-linear-gradient(-45deg,oklch(0 0 0 / .22) 0 calc(var(--u) * 1.5),#0000 0 calc(var(--u) * 4)),
    radial-gradient(120% 70% at 0 0,oklch(.3 .05 var(--v3-hue)),#0000 70%),
    oklch(.17 .03 var(--v3-hue));
  box-shadow:inset 0 0 0 calc(var(--u) * .75) oklch(1 0 0 / .14)}
.v3-ticket__slot{position:absolute;z-index:2;left:50%;top:calc(var(--u) * 12);width:calc(var(--u) * 66);height:calc(var(--u) * 12);transform:translateX(-50%);border-radius:99px;
  background:oklch(.08 .02 var(--v3-hue));box-shadow:inset 0 calc(var(--u) * 1.5) calc(var(--u) * 2) #000,0 calc(var(--u) * .75) 0 oklch(1 0 0 / .16)}
.v3-ticket__label{font:600 calc(var(--u) * 12)/1 var(--v3-font-body);letter-spacing:.1em;text-transform:uppercase;color:oklch(1 0 0 / .62)}
.v3-ticket__band{position:relative;z-index:1;align-self:end;display:flex;align-items:center;justify-content:space-between;height:calc(var(--u) * 34);padding-left:calc(var(--u) * 20);background:var(--v3-anchor)}
.v3-ticket__band .v3-ticket__label{color:#fff;letter-spacing:.16em;text-transform:none;font-size:calc(var(--u) * 13)}
.v3-ticket__chk{align-self:stretch;width:calc(var(--u) * 68);opacity:.9;background:conic-gradient(#fff 25%,#0000 0 50%,#fff 0 75%,#0000 0) 0 0 / calc(var(--u) * 17) calc(var(--u) * 17)}
.v3-ticket__mid{position:relative;z-index:1;padding:calc(var(--u) * 26) calc(var(--u) * 20) 0}
.v3-ticket__num{position:absolute;z-index:0;right:calc(var(--u) * 16);bottom:calc(var(--u) * 84);font:700 calc(var(--u) * 190)/.74 var(--v3-font-display);letter-spacing:-.04em;color:transparent;
  -webkit-text-stroke:calc(var(--u) * 1.5) oklch(1 0 0 / .4);
  background-image:linear-gradient(112deg,oklch(.8 .06 var(--v3-hue) / .05) 0%,oklch(.95 .04 var(--v3-hue) / .34) 18%,oklch(.7 .08 var(--v3-hue) / .08) 34%,oklch(.9 .05 calc(var(--v3-hue) + 33) / .3) 50%,oklch(.7 .08 var(--v3-hue) / .06) 66%,oklch(.95 .04 var(--v3-hue) / .3) 82%,oklch(.8 .06 var(--v3-hue) / .05) 100%);
  background-size:260% 100%;background-position:35% 0;-webkit-background-clip:text;background-clip:text;user-select:none}
.v3-ticket__title{position:relative;z-index:1;margin:0;max-width:calc(var(--u) * 232);font:600 calc(var(--u) * 36.6)/1 var(--v3-font-display);letter-spacing:-.03em;text-wrap:balance;color:#fff}
.v3-ticket__fields{position:absolute;z-index:1;left:calc(var(--u) * 20);right:calc(var(--u) * 20);bottom:calc(var(--u) * 18);display:grid;grid-template-columns:1fr 1fr;padding-top:calc(var(--u) * 14);border-top:calc(var(--u) * .75) solid oklch(1 0 0 / .22)}
.v3-ticket__fields > span{display:grid;gap:calc(var(--u) * 6);min-width:0}
.v3-ticket__fields > span + span{padding-left:calc(var(--u) * 16);border-left:calc(var(--u) * .75) solid oklch(1 0 0 / .22)}
.v3-ticket__fields b{font:600 calc(var(--u) * 18.75)/1 var(--v3-font-display);letter-spacing:-.01em;white-space:nowrap;font-variant-numeric:tabular-nums}
.v3-ticket__foot{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:0 calc(var(--u) * 20);background:oklch(.12 .025 var(--v3-hue) / .7);border-top:calc(var(--u) * .75) solid oklch(1 0 0 / .14)}
.v3-ticket__code{width:calc(var(--u) * 76);height:calc(var(--u) * 76);padding:calc(var(--u) * 6);box-sizing:content-box;background:#fff;border-radius:calc(var(--u) * 6);color:oklch(.17 .03 var(--v3-hue))}
.v3-ticket__code svg{width:100%;height:100%}
.v3-ticket__mark{width:calc(var(--u) * 38);height:auto;fill:#fff}
/* A long course name steps down a size and keeps clear of the numeral (set from the title's length). */
.v3-ticket--long .v3-ticket__title{font-size:calc(var(--u) * 29);max-width:calc(var(--u) * 182)}
.v3-ticket--longer .v3-ticket__title{font-size:calc(var(--u) * 25);max-width:calc(var(--u) * 176)}

/* ---------- coach: Apple's quiet portrait tile ----------
   A portrait on a light ground that dissolves into the page, the name in the F1 pairing (first name light,
   SURNAME bold), one role line, and the real markers as one line of type. A tile among other things, not
   the hero of the page. `open` is the slot before a coach is announced. */
.v3-coach{display:grid;gap:16px;align-content:start;width:100%;max-width:320px;color:inherit;text-decoration:none;border-radius:var(--v3-radius-well)}
.v3-coach__img{position:relative;display:block;aspect-ratio:1/1;overflow:hidden;isolation:isolate;border-radius:var(--v3-radius-well);
  background:linear-gradient(180deg,var(--v3-l-100) 0%,var(--v3-l-50) 62%,var(--v3-ground) 100%)}
@media (min-width:760px){.v3-coach__img{aspect-ratio:4/5}}
.v3-coach__photo{position:absolute;left:50%;bottom:0;width:86%;height:auto;max-height:100%;object-fit:contain;object-position:center bottom;translate:-50% 0;transition:scale .5s var(--v3-ease-out);transform-origin:50% 100%}
.v3-coach__name{display:grid;gap:1px;color:var(--v3-link)}
.v3-coach__first{font:400 19px/1.1 var(--v3-font-display);letter-spacing:-.01em}
.v3-coach__last{font:700 26px/1 var(--v3-font-display);letter-spacing:-.015em;text-transform:uppercase;text-decoration-thickness:2px;text-underline-offset:5px}
.v3-coach__role{font-size:16px;line-height:1.35;color:var(--v3-ink)}
.v3-coach__marks{display:flex;flex-wrap:wrap;gap:2px 16px;margin:0;font-size:14px;line-height:1.5;color:var(--v3-soft)}
.v3-coach__marks > span{white-space:nowrap}
.v3-coach__marks b{font-weight:600;color:var(--v3-ink);font-variant-numeric:tabular-nums}
a.v3-coach:hover .v3-coach__photo{scale:1.03}
a.v3-coach:hover .v3-coach__last{text-decoration:underline}
a.v3-coach:hover .v3-coach__first{color:var(--v3-link-hover)}
a.v3-coach:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:6px}
.v3-coach--open .v3-coach__name{color:var(--v3-l-900)}
.v3-coach--open .v3-coach__img{background:linear-gradient(180deg,var(--v3-l-50),var(--v3-ground));box-shadow:inset 0 0 0 1px var(--v3-line)}
.v3-coach__silhouette{color:var(--v3-l-700);opacity:.22}
.v3-coach--open .v3-coach__silhouette{opacity:.12}
.v3-coaches{display:grid;gap:36px;align-items:start;margin:0;padding:0;list-style:none}
@media (min-width:760px){.v3-coaches{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:32px}}
@media (prefers-reduced-motion:reduce){.v3-coach__photo{transition:none}a.v3-coach:hover .v3-coach__photo{scale:1}}

/* ---------- rail: the schedule and numbered steps, one component ----------
   A thin rail runs down the page and each day is a stop on it, the last stop (the exam) bigger and filled.
   With dates, the date stands in its own column on a wide screen. As numbered steps the stops carry the
   numerals. States: .is-done (filled), .is-now (marked). */
.v3-rail{list-style:none;margin:0;padding:0;display:grid}
.v3-rail__item{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);grid-template-areas:"node date" "node body";column-gap:16px}
.v3-rail__node{grid-area:node;position:relative;align-self:stretch;display:flex;justify-content:center}
.v3-rail__node::before{content:"";position:absolute;top:2px;width:16px;height:16px;border-radius:50%;background:var(--v3-card);box-shadow:inset 0 0 0 2px var(--v3-l-300);transition:box-shadow var(--v3-hover) ease,background-color var(--v3-hover) ease}
.v3-rail__node::after{content:"";position:absolute;top:22px;bottom:2px;width:2px;border-radius:1px;background:var(--v3-line-strong)}
.v3-rail__item:last-child .v3-rail__node::after{display:none}
.v3-rail__date{grid-area:date;display:flex;gap:6px;align-items:baseline;font-size:15px;font-weight:600;color:var(--v3-soft)}
.v3-rail__body{grid-area:body;display:grid;gap:4px;padding:2px 0 34px;min-width:0}
.v3-rail:not(.v3-rail--dated) .v3-rail__item{grid-template-areas:"node body"}
.v3-rail__label{display:flex;align-items:center;gap:10px;font:600 15px/1.2 var(--v3-font-display);color:var(--v3-anchor)}
.v3-rail__title{margin:0;font:var(--v3-display-weight) 21px/1.25 var(--v3-font-display);letter-spacing:-.012em;color:var(--v3-l-900);text-wrap:balance;max-width:40ch}
.v3-rail__time{font-size:15px;color:var(--v3-faint);font-variant-numeric:tabular-nums}
.v3-rail__tag{font-size:var(--v3-text-small);color:var(--v3-faint);white-space:nowrap}
.v3-rail__item:hover .v3-rail__node::before{box-shadow:inset 0 0 0 2px var(--v3-anchor)}
.v3-rail__item--end .v3-rail__label{color:var(--v3-l-900)}
.v3-rail__item--end .v3-rail__node::before{width:20px;height:20px;top:0;background:var(--v3-anchor);box-shadow:0 0 0 5px var(--v3-l-100)}
.v3-rail__item--end .v3-rail__body{padding-bottom:6px}
.v3-rail__item--end .v3-rail__title{font-size:24px}
.v3-rail__item.is-done .v3-rail__node::before{background:var(--v3-anchor);box-shadow:none}
.v3-rail__item.is-done .v3-rail__node::after{background:var(--v3-anchor)}
.v3-rail__item.is-done :is(.v3-rail__title,.v3-rail__time,.v3-rail__date){color:var(--v3-faint)}
.v3-rail__item.is-now .v3-rail__node::before{background:var(--v3-card);box-shadow:inset 0 0 0 5px var(--v3-anchor)}
.v3-rail__item.is-now .v3-rail__date{color:var(--v3-l-900)}
/* Numbered steps on the same rail: the numeral sits on the stop. */
.v3-rail--steps .v3-rail__node{font:600 14px/28px var(--v3-font-body);color:var(--v3-anchor);font-variant-numeric:tabular-nums}
.v3-rail--steps .v3-rail__node::before{top:0;width:28px;height:28px;z-index:-1;box-shadow:inset 0 0 0 2px var(--v3-anchor)}
.v3-rail--steps .v3-rail__node{isolation:isolate}
.v3-rail--steps .v3-rail__node::after{top:34px}
.v3-rail--steps .v3-rail__body{padding:3px 0 30px}
.v3-rail--steps .v3-rail__title{font-size:20px}
.v3-rail--steps .v3-rail__time{font-size:16px;color:var(--v3-soft)}
.v3-rail--steps .v3-rail__item:last-child .v3-rail__body{padding-bottom:0}
@media (min-width:760px){
  .v3-rail--dated .v3-rail__item{grid-template-columns:96px 28px minmax(0,1fr);grid-template-areas:"date node body";column-gap:20px}
  .v3-rail--dated .v3-rail__date{display:grid;justify-items:end;align-content:start;gap:2px;text-align:right;padding-top:2px;line-height:1.1}
  .v3-rail__date .v3-rail__wd,.v3-rail__date .v3-rail__mo{font-size:13.5px;font-weight:600;color:var(--v3-faint)}
  .v3-rail__date .v3-rail__d{font:var(--v3-display-weight) 38px/1 var(--v3-font-display);letter-spacing:-.025em;color:var(--v3-l-900)}
  .v3-rail__item.is-done .v3-rail__d{color:var(--v3-faint)}
  .v3-rail--dated .v3-rail__body{padding-top:6px}
  .v3-rail--dated .v3-rail__node::before{top:9px}
  .v3-rail--dated .v3-rail__node::after{top:29px}
  .v3-rail--dated .v3-rail__item--end .v3-rail__node::before{top:7px}
  .v3-rail--steps .v3-rail__item{column-gap:20px}
}
@media (prefers-reduced-motion:reduce){.v3-rail__node::before{transition:none}}

/* ---------- feature tile: a drawing of the thing itself, a title, one sentence ----------
   The drawing replaces the icon: one line weight, deep green, the brand green as the only accent, no
   square, no tint behind it. One hairline, no shadow. One tile per row on a phone. */
.v3-features{display:grid;gap:12px;margin:0;padding:0;list-style:none}
@media (min-width:640px){.v3-features{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.v3-features--3{grid-template-columns:repeat(3,minmax(0,1fr))}.v3-features--4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.v3-feature{display:grid;align-content:start;border-radius:12px;background:var(--v3-card);box-shadow:inset 0 0 0 1px var(--v3-line-strong);overflow:hidden}
.v3-feature__body{display:grid;gap:6px;padding:22px 24px 26px}
.v3-feature__art + .v3-feature__body{padding-top:4px}
.v3-feature__art{display:block;width:100%;height:auto;aspect-ratio:16/9}
.v3-feature__art .s{fill:none;stroke:var(--v3-l-700);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.v3-feature__art .t{fill:none;stroke:var(--v3-l-300);stroke-width:1.4;stroke-linecap:round}
.v3-feature__art .a{fill:none;stroke:var(--v3-anchor);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.v3-feature__art .af{fill:var(--v3-anchor)}
.v3-feature__art .w{fill:var(--v3-card)}
.v3-feature__art .tint{fill:var(--v3-l-50)}
.v3-feature__figure{font:600 clamp(40px,5vw,56px)/.95 var(--v3-font-display);letter-spacing:-.035em;color:var(--v3-l-900);font-variant-numeric:tabular-nums;margin-bottom:6px}
.v3-feature__figure small{font-size:.42em;letter-spacing:-.01em;color:var(--v3-anchor);margin-left:4px}
.v3-feature__title{font:600 17px/1.3 var(--v3-font-body);letter-spacing:-.01em;color:var(--v3-ink)}
.v3-feature__text{font-size:15px;line-height:1.5;color:var(--v3-soft);text-wrap:pretty}

/* ---------- showcase: one product, shown the same way as its sibling ----------
   The section head, three tiles with drawings, the product itself (cards, a price), and one action. Two
   showcases on a page (the accelerators and Turbo) read as equals because they are the same shape. */
.v3-showcase__product{margin-top:28px}
.v3-showcase__action{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:24px}
@media (min-width:900px){.v3-showcase__product{margin-top:40px}}

/* ---------- facts: no row, one sentence ----------
   A few proof numbers said as one sentence, the numbers in the display face and ink, the rest quiet, a
   hairline above like a caption. Each fact once: never a number already in the headline, the ticket, the
   price or the offer card. */
.v3-facts{margin:6px 0 0;padding-top:20px;box-shadow:inset 0 1px 0 var(--v3-line);font-size:clamp(18px,2.2vw,21px);line-height:1.5;color:var(--v3-soft);max-width:44ch;text-wrap:pretty}
.v3-facts b{font-family:var(--v3-font-display);font-weight:600;letter-spacing:-.02em;color:var(--v3-l-900);font-variant-numeric:tabular-nums}

/* ---------- testimonial: the person first, then their words. No box, no ring, no stars (the rating is
   said once, beside the price). Whitespace and one hairline above the set do the grouping. ---------- */
.v3-quote{display:grid;gap:14px;margin:0;align-content:start}
.v3-quote__by{display:flex;align-items:center;gap:14px}
.v3-quote__name{display:block;font-weight:600;font-size:16px;color:var(--v3-ink);line-height:1.3}
.v3-quote__meta{display:block;font-size:14px;color:var(--v3-faint);line-height:1.3}
.v3-quote__text{margin:0;font-size:17px;line-height:1.55;color:var(--v3-ink);text-wrap:pretty;max-width:52ch}
.v3-avatar{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:50%;background:var(--v3-l-100);color:var(--v3-l-800);font:600 15px/1 var(--v3-font-display);letter-spacing:.01em;object-fit:cover}
.v3-quotes{display:grid;margin:0;padding:0;list-style:none}
.v3-quotes > li{padding-block:32px;box-shadow:inset 0 1px 0 var(--v3-line)}
.v3-quotes > li:first-child{padding-top:28px;box-shadow:inset 0 1px 0 var(--v3-line-strong)}
.v3-quotes > li:last-child{padding-bottom:0}
@media (min-width:760px){.v3-quotes > li{padding-block:36px}.v3-quotes .v3-quote{grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start}}

/* ---------- FAQ: Apple's questions. Large questions in the display face, a bare plus that turns into a
   cross, plain body answers, one hairline between. Native details/summary. ---------- */
.v3-page{interpolate-size:allow-keywords}
.v3-faq{display:grid;max-width:820px}
.v3-faq__item{box-shadow:inset 0 -1px 0 var(--v3-line-strong)}
.v3-faq__item:first-child{box-shadow:inset 0 1px 0 var(--v3-line-strong),inset 0 -1px 0 var(--v3-line-strong)}
.v3-faq__q{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:24px 0;list-style:none;cursor:pointer;
  font:var(--v3-display-weight) 21px/1.25 var(--v3-font-display);letter-spacing:-.018em;color:var(--v3-l-900);transition:color var(--v3-hover) ease}
@media (min-width:900px){.v3-faq__q{font-size:24px;padding:28px 0}}
.v3-faq__q::-webkit-details-marker{display:none}
.v3-faq__q::after{content:"";flex:none;width:20px;height:20px;margin-top:3px;background:var(--v3-l-900);transition:transform .3s var(--v3-ease-out);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none'%3E%3Cpath d='M10 3v14M3 10h14' stroke='%23000' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center/20px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none'%3E%3Cpath d='M10 3v14M3 10h14' stroke='%23000' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center/20px no-repeat}
.v3-faq__item[open] .v3-faq__q::after{transform:rotate(45deg)}
.v3-faq__q:hover{color:var(--v3-anchor)}
.v3-faq__q:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:4px;border-radius:6px}
.v3-faq__a{padding:0 44px 28px 0;max-width:60ch;font-size:17px;line-height:1.55;color:var(--v3-soft)}
@media (min-width:900px){.v3-faq__a{padding-bottom:32px;font-size:18px}}
.v3-faq__item::details-content{block-size:0;overflow:hidden;transition:block-size .3s var(--v3-ease-out),content-visibility .3s allow-discrete}
.v3-faq__item[open]::details-content{block-size:auto}
@media (prefers-reduced-motion:reduce){.v3-faq__q,.v3-faq__q::after,.v3-faq__item::details-content{transition:none}}

/* ---------- footer: Apple's. The page's fine print first, a short directory, one sentence for help, and
   the legal links in a row beside the copyright. On the page ground behind one hairline. ---------- */
.v3-footer{padding-block:28px 40px;font-size:14px;line-height:1.5;color:var(--v3-soft);box-shadow:inset 0 1px 0 var(--v3-line)}
.v3-footer a{color:inherit;text-decoration:none;border-radius:4px}
.v3-footer a:hover{color:var(--v3-ink);text-decoration:underline;text-underline-offset:3px}
.v3-footer a:focus-visible{outline:var(--v3-focus-ring) solid var(--v3-ring);outline-offset:2px}
.v3-footer__fine{display:grid;gap:8px;max-width:72ch;padding-bottom:22px;font-size:13px;color:var(--v3-faint)}
.v3-footer__fine a{color:var(--v3-soft);text-decoration:underline;text-underline-offset:3px}
.v3-footer__dir{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
/* One hairline between the fine print and the directory; without fine print the footer's own top line is the only one. */
.v3-footer__fine + .v3-footer__dir{padding-top:22px;box-shadow:inset 0 1px 0 var(--v3-line)}
.v3-footer__group h2{margin:0 0 8px;font:500 14px/1.4 var(--v3-font-body);color:var(--v3-ink)}
.v3-footer__links{display:grid;gap:2px}
.v3-footer__links a{width:fit-content;padding:6px 0}
.v3-footer__help{margin-top:22px;padding-top:22px;max-width:72ch;box-shadow:inset 0 1px 0 var(--v3-line)}
.v3-footer .v3-footer__help a{color:var(--v3-link);text-decoration:underline;text-underline-offset:3px}
.v3-footer__base{display:grid;gap:10px;margin-top:22px;font-size:13px;color:var(--v3-faint)}
.v3-footer__brand{width:fit-content}
.v3-footer__brand img,.v3-footer__brand svg{height:20px;width:auto}
.v3-footer__legal{display:flex;flex-wrap:wrap;gap:4px 0}
.v3-footer__legal a{color:var(--v3-soft);padding:2px 0}
.v3-footer__legal a:not(:last-child)::after{content:"|";display:inline-block;margin-inline:10px;color:var(--v3-line-strong)}
@media (min-width:760px){
  .v3-footer{padding-block:36px 40px}
  .v3-footer__dir{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;padding-block:28px 6px}
  .v3-footer__group h2{margin-bottom:10px}
  .v3-footer__links{gap:6px}
  .v3-footer__links a{padding:0}
  .v3-footer__base{grid-template-columns:auto 1fr;align-items:center;column-gap:24px}
  .v3-footer__brand{grid-row:span 2}
}

/* ---------- motion ---------- */
/* One gentle entrance per section: a 12px rise. It starts visible: a page at rest, or a section the
   scroll-driven timeline has not reached yet, never shows an empty space. */
.v3-reveal{animation:v3-enter var(--v3-enter) var(--v3-ease-out) both}
@supports (animation-timeline:view()){
  .v3-reveal{animation:v3-enter linear both;animation-timeline:view();animation-range:entry 0% entry 55%}
}
@keyframes v3-enter{from{transform:translateY(var(--v3-enter-rise))}}
/* The flagship deal-in: children rise from 40px low, staggered, visible throughout. Put .v3-deal on the parent. */
.v3-deal > *{animation:v3-deal var(--v3-deal) var(--v3-ease-pop) both}
.v3-deal > :nth-child(1){animation-delay:.05s}
.v3-deal > :nth-child(2){animation-delay:.14s}
.v3-deal > :nth-child(3){animation-delay:.23s}
.v3-deal > :nth-child(4){animation-delay:.32s}
@keyframes v3-deal{from{translate:0 var(--v3-deal-rise);rotate:var(--v3-deal-from-rotate,0deg)}}
/* A fanned hero line-up of three cards. */
.v3-fan{position:relative;display:grid;grid-template-columns:1fr;justify-items:center;padding-block:10px 24px}
.v3-fan > *{grid-area:1/1;width:min(52%,300px);transform-origin:50% 120%}
.v3-fan > :nth-child(1){rotate:-6deg;translate:-29% 3%;--v3-deal-from-rotate:0deg}
.v3-fan > :nth-child(2){z-index:2}
.v3-fan > :nth-child(3){rotate:6deg;translate:29% 3%;--v3-deal-from-rotate:0deg}
@media (min-width:640px){.v3-fan > *{width:min(62%,300px)}.v3-fan > :nth-child(1){rotate:-8deg;translate:-34% 3%}.v3-fan > :nth-child(3){rotate:8deg;translate:34% 3%}}
.v3-fan.v3-deal > :nth-child(1){animation-name:v3-deal-l}
.v3-fan.v3-deal > :nth-child(3){animation-name:v3-deal-r}
@keyframes v3-deal-l{from{translate:0 var(--v3-deal-rise);rotate:0deg}}
@keyframes v3-deal-r{from{translate:0 var(--v3-deal-rise);rotate:0deg}}

@media (prefers-reduced-motion:reduce){
  .v3-page *,.v3-page *::before,.v3-page *::after{animation:none !important;transition:none !important;scroll-behavior:auto !important}
}
