*{box-sizing:border-box}body{margin:0;font:var(--weight-body) var(--type-body)/var(--leading-body) var(--font-body);background:var(--color-bg-page);color:var(--color-text-primary);-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}button,input,select,textarea{font:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:disabled{cursor:not-allowed}img,video{display:block;max-width:100%}button{color:inherit}svg{flex-shrink:0}h1,h2,h3,p{margin:0}button,a{ -webkit-tap-highlight-color:transparent}
:is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--color-focus);outline-offset:4px}
.container{max-width:var(--container-max);width:calc(100% - var(--gutter)*2);margin-inline:auto}
.display,.heading,.title{font-family:var(--font-display);font-weight:var(--weight-display);line-height:var(--leading-display);letter-spacing:-.018em}
.display{font-size:var(--type-display)}.heading{font-size:var(--type-heading)}.title{font-size:var(--type-title)}
.muted{color:var(--color-text-secondary)}.accent{color:var(--color-text-accent)}.small{font-size:var(--type-small)}.caption{font-size:var(--type-caption)}.eyebrow{display:flex;align-items:center;gap:12px;font-size:14px;letter-spacing:.045em;color:var(--color-text-accent)}.eyebrow:before{content:'';width:24px;height:2px;background:currentColor;flex-shrink:0}
.btn{display:inline-flex;gap:16px;align-items:center;justify-content:center;min-height:var(--control-height);padding:12px 22px;border:1px solid transparent;border-radius:var(--radius-control);background:transparent;color:var(--color-text-primary);font-size:14px;font-weight:500;text-decoration:none;line-height:1.4;transition:background var(--motion-fast),border-color var(--motion-fast),color var(--motion-fast)}
.btn-primary{background:var(--color-action-primary);color:var(--color-on-action)}.btn-primary:hover,.btn-primary.is-hover{background:var(--color-action-hover)}.btn-primary:active,.btn-primary.is-active{background:var(--color-action-pressed)}
.btn-secondary{border-color:var(--color-text-primary)}.btn-secondary:hover{background:var(--color-bg-subtle)}.btn-quiet{color:var(--color-text-accent);text-decoration:underline;text-underline-offset:5px;padding-inline:0}.btn-quiet:hover{text-decoration-thickness:2px}
.btn-sm{min-height:44px;padding:10px 16px}.btn:disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:transparent}
.btn.is-focus{outline:3px solid var(--color-focus);outline-offset:4px}.btn[aria-busy=true]{cursor:wait}
.icon-btn{width:44px;height:44px;display:inline-grid;place-items:center;border:1px solid var(--color-border-control);border-radius:50%;background:transparent;font-size:22px}.icon-btn:hover{background:var(--color-bg-subtle)}
.badge{display:inline-flex;gap:8px;align-items:center;border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);padding:5px 11px;font-size:14px}.badge-selected{background:var(--color-text-primary);color:var(--color-bg-page);border-color:transparent}
.field{display:grid;gap:8px;align-content:start}.field label,.field-label{font-size:14px;font-weight:500}.input{width:100%;min-width:0;min-height:var(--control-height);border:1px solid var(--color-border-control);border-radius:var(--radius-control);background:var(--color-bg-surface);color:var(--color-text-primary);padding:12px 16px;font-size:16px;line-height:1.4}.input::placeholder{color:var(--color-text-secondary);opacity:1}.input:hover:not(:disabled){border-color:var(--color-text-primary)}.input[aria-invalid=true]{border:2px solid var(--color-error);padding:11px 15px}.input:disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text)}.hint,.field-error{font-size:14px;line-height:1.5}.hint{color:var(--color-text-secondary)}.field-error{color:var(--color-error)}
.check{display:flex;align-items:center;gap:12px;min-height:44px;font-size:14px;cursor:pointer}.check input{width:20px;height:20px;margin:0;accent-color:var(--color-action-primary);flex-shrink:0}
.notice{padding:20px 24px;border-radius:var(--radius-control);border:1px solid currentColor;font-size:14px;line-height:1.6}.notice strong{display:block;margin-bottom:4px}.notice-info{color:var(--color-info);background:var(--color-info-bg)}.notice-success{color:var(--color-success);background:var(--color-success-bg)}.notice-error{color:var(--color-error);background:var(--color-error-bg)}.notice-warning{color:var(--color-warning);background:var(--color-warning-bg)}
.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab{min-height:44px;border:1px solid var(--color-border-control);border-radius:var(--radius-pill);padding:10px 16px;background:transparent;font-size:14px;line-height:1.4}.tab[aria-selected=true]{background:var(--color-text-primary);color:var(--color-bg-page);border-color:var(--color-text-primary)}.tab:hover:not([aria-selected=true]){background:var(--color-bg-subtle)}
.rail{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x proximity;padding:8px 5px 20px;margin-inline:-5px}.rail>*{flex:1 0 245px;scroll-snap-align:start;min-width:0}.card{background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-card);padding:24px}.card.is-selected{border:2px solid var(--color-text-accent);padding:23px}.card h3{margin-block:16px 8px}.card p{font-size:14px}.card .btn{margin-top:20px}
.class-card{display:flex;flex-direction:column}.class-card .btn{margin-top:auto}.class-card p{padding-bottom:20px}.class-placeholder{display:grid;place-items:center;aspect-ratio:1.8;background:var(--color-bg-subtle);border-radius:12px;color:var(--color-text-secondary);font-size:14px;border:1px dashed var(--color-border-control)}
.disclosure{border-top:2px solid var(--color-text-accent);background:var(--color-bg-surface);border-radius:0 0 var(--radius-card) var(--radius-card);padding:28px;margin-top:12px}.disclosure-head{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:16px}.review-card{display:flex;flex-direction:column;min-height:340px}.review-card .quote{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;font-size:16px;line-height:1.6;margin:16px 0}.review-card .btn{margin-top:auto;align-self:start}.stars{letter-spacing:3px;color:var(--color-text-accent)}
.faq{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:0 40px;position:relative}.faq h3{grid-column:1;font:inherit}.faq-question{display:flex;gap:16px;justify-content:space-between;align-items:center;text-align:left;width:100%;min-height:72px;padding:20px 0;border:0;border-bottom:1px solid var(--color-border-subtle);background:transparent;font-size:16px}.faq-question[aria-expanded=true]{color:var(--color-text-accent);font-weight:500}.faq-answer{grid-column:2;grid-row:1 / span 3;background:var(--color-bg-subtle);padding:32px;border-radius:var(--radius-card);align-self:stretch}.faq-answer p{margin-top:16px;max-width:52ch}
.media-frame{position:relative;border-radius:var(--radius-media);overflow:hidden;border:4px solid var(--color-bg-surface);box-shadow:var(--shadow-raised)}.media-frame video{width:100%;aspect-ratio:16/9;object-fit:cover}.media-frame figcaption{padding:16px;background:var(--color-bg-surface);font-size:14px;color:var(--color-text-secondary)}
dialog{max-width:min(760px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:24px;border:1px solid var(--color-border-control);border-radius:var(--radius-card);background:var(--color-bg-page);color:var(--color-text-primary);box-shadow:var(--shadow-modal)}dialog::backdrop{background:#000a}dialog .disclosure-head{align-items:center}dialog img{border-radius:12px;margin-block:16px}
.spinner{display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:700px){.rail>*{flex-basis:255px;max-width:85vw}.card{padding:20px}.card.is-selected{padding:19px}.disclosure{padding:20px}.faq{display:block}.faq-answer{margin-top:8px;padding:24px}.faq-question{min-height:64px}.notice{padding:16px}.btn{padding-inline:18px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}

/* Accepted text roles: body/actions/introductions 16px, metadata/helpers 14px. */
.eyebrow{font-size:var(--type-small)}
.btn,.field label,.field-label,.field-input,.field-select,.field-textarea{font-size:var(--type-body)}
