@font-face{font-family:'Public Sans';src:url('assets/public-sans-regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Public Sans';src:url('assets/public-sans-semibold.woff2') format('woff2');font-weight:600 800;font-display:swap}
@font-face{font-family:Manrope;src:url('assets/manrope-bold.woff2') format('woff2');font-weight:700;font-display:swap}
:root{
 --canvas:#f7f8fc;--surface:#fff;--ink:#192942;--muted:#53637a;--line:#d7dfed;--blue:#254eca;--blue-soft:#e7edff;
 --hero:#e8efff;--s1:#294db5;--s1-bg:#e7edff;--s2:#13625a;--s2-bg:#d8f3e8;--s3:#8a4819;--s3-bg:#ffead3;--s4:#71408b;--s4-bg:#f1e3fa;
 --benchmark:#4a586f;--benchmark-bg:#e9edf4;--ai:#245c78;--ai-bg:#dff0f8;--review:#176157;--reassess:#e2f1e9;
 --body:'Public Sans','PingFang TC','Noto Sans TC','Microsoft JhengHei',sans-serif;--display:Manrope,var(--body);--cjk:'PingFang TC','Noto Sans TC','Microsoft JhengHei',sans-serif;
 --nav-height:96px;--radius:20px;--shadow:0 8px 28px #233b6110;color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-padding-top:calc(var(--nav-height) + 24px)}
body{margin:0;background:var(--canvas);color:var(--ink);font:400 16px/1.7 var(--body);-webkit-font-smoothing:antialiased}
body,button,a,summary{-webkit-tap-highlight-color:transparent}
h1,h2,h3,h4,p,blockquote,figure{margin:0}
h1,h2,h3,h4{font-family:var(--display);font-weight:700;text-wrap:balance}
h1{font-size:clamp(38px,6.6vw,76px);line-height:1.12;letter-spacing:-.04em}
h2{font-size:clamp(28px,3.7vw,42px);line-height:1.2;letter-spacing:-.03em}
h3{font-size:21px;line-height:1.3;letter-spacing:-.025em}
h4{font-size:18px;line-height:1.45;margin:28px 0 12px}
p+p{margin-top:1em}
a{color:var(--blue);text-underline-offset:4px}
a:hover{text-decoration-thickness:2px}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:5px}
button,summary{cursor:pointer;font:inherit;color:inherit}
button{min-height:44px}
summary{list-style:none}
summary::-webkit-details-marker{display:none}
main,footer{width:min(1120px,calc(100% - 32px));margin-inline:auto}
.skip-link{position:fixed;top:-80px;left:16px;background:var(--surface);padding:12px;z-index:20}
.skip-link:focus{top:8px}
.masthead{display:flex;align-items:center;justify-content:space-between;width:min(1120px,calc(100% - 40px));min-height:76px;margin:auto;gap:12px}
.wordmark{font-family:var(--display);font-weight:700;font-size:25px;color:var(--ink);text-decoration:none;letter-spacing:-.04em}
.wordmark span{display:none}
.masthead nav{display:flex;gap:4px}
.masthead nav a{font-size:13px;display:grid;place-items:center;min-width:44px;min-height:44px;padding-inline:7px;text-decoration:none;color:var(--muted)}
.masthead nav a:hover{color:var(--blue);background:var(--blue-soft);border-radius:12px}
.hero{position:relative;text-align:center;padding:38px 12px 24px;background:var(--hero);border-radius:28px;margin:4px 0 48px;overflow:hidden}
.hero-date{font-size:12px;font-weight:600;letter-spacing:.015em;margin-bottom:20px;color:var(--blue)}
.hero-date span{padding:0 12px;font-weight:400}
.hero h1{max-width:880px;margin-inline:auto}
.hero h1 span{color:var(--blue)}
.hero-lede{font-size:16px;color:var(--muted);line-height:1.65;margin:22px auto 24px;max-width:520px}
.primary-link{display:inline-flex;align-items:center;justify-content:center;gap:28px;text-decoration:none;background:var(--blue);color:#fff;border-radius:12px;padding:15px 22px;font-size:14px;font-weight:600;min-height:52px;box-shadow:0 6px 16px #294db525}
.primary-link span{font-size:22px;line-height:1}
.primary-link:hover{background:#183ba7}
.interview-formats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:34px auto 0;max-width:820px;text-align:left}
.interview-formats a{display:flex;align-items:center;gap:8px;border-radius:12px;padding:12px 10px;min-height:56px;text-decoration:none;background:var(--track-bg);color:var(--track);font-size:11px;font-weight:600}
.interview-formats a span{font-size:13px;opacity:1}
.s1{--track:var(--s1);--track-bg:var(--s1-bg)}
.s2{--track:var(--s2);--track-bg:var(--s2-bg)}
.s3{--track:var(--s3);--track-bg:var(--s3-bg)}
.s4{--track:var(--s4);--track-bg:var(--s4-bg)}
.benchmark{--track:var(--benchmark);--track-bg:var(--benchmark-bg)}
.ai,.practice{--track:var(--ai);--track-bg:var(--ai-bg)}
.review{--track:var(--review);--track-bg:var(--reassess)}
.introduction{max-width:820px;margin:0 auto 24px}
.introduction h2{text-align:center;margin-bottom:24px}
.source{margin:24px 0}
.source blockquote{font-family:var(--cjk);font-size:19px;line-height:1.9;font-weight:500;overflow-wrap:anywhere;color:var(--ink)}
.translation{font-size:15px;line-height:1.7;color:var(--muted);margin-top:16px}
.introduction>.source{background:var(--surface);padding:26px 24px;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px}
.introduction>.source blockquote{font-size:20px;line-height:1.85;color:var(--s1)}
.intro-response>summary{padding:14px 20px;display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:600;color:var(--blue);border-radius:12px;background:var(--blue-soft)}
.reading-body{padding:24px 8px 16px;max-width:74ch;margin:auto}
.reading-body>p{margin-bottom:18px}
.expand-icon{font-size:25px;font-weight:400;font-family:var(--body);line-height:1;width:24px;height:24px;text-align:center;flex-shrink:0}
details[open]>summary .expand-icon{transform:rotate(45deg)}
.parallel-note{display:grid;gap:12px;max-width:820px;margin:0 auto 64px}
.parallel-note>details{border:1px solid var(--line);border-radius:var(--radius);padding:4px 20px}
.parallel-note>details>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:16px}
.parallel-note strong{font-size:16px;line-height:1.4}
.summary-description{display:block;font-size:13px;line-height:1.5;font-weight:400;margin-top:8px}
.parallel-note .summary-description{color:var(--muted)}
.parallel-note aside{padding:20px 24px;background:var(--reassess);border-radius:var(--radius)}
.parallel-note aside>p{font-size:13px;margin-top:10px;color:var(--muted)}
.parallel-note aside>strong{color:var(--review)}
.placeholder{padding-top:12px;border-top:1px solid #bacec6}
.timeline-opening{text-align:center;max-width:780px;margin:0 auto 28px}
.timeline-opening>.source{margin:20px auto;max-width:500px}
.timeline-opening>.source blockquote{font-size:18px}
.timeline-opening>.source .translation{font-size:13px;margin-top:4px}
.timeline-opening>p{color:var(--muted);font-size:15px}
.month-nav{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:var(--canvas);border-bottom:1px solid var(--line);padding:4px 0;margin-top:20px}
.month-nav a{min-height:44px;display:grid;place-items:center;font-size:12px;font-weight:600;text-decoration:none;border-radius:10px;color:var(--muted)}
.month-nav a[aria-current],.month-nav a:hover{background:var(--blue);color:#fff}
.track-nav{display:flex;flex-wrap:wrap;gap:5px 14px;align-items:center;padding:16px 0 24px}
.track-nav>span{width:100%;font-size:12px;color:var(--muted)}
.track-nav a{font-size:12px;min-height:44px;display:flex;align-items:center;text-decoration:none;border-bottom:1px solid var(--line)}
.month{padding:28px 0 32px;position:relative;border-top:1px solid var(--line)}
.month-header{margin-bottom:20px}
.date{display:flex;align-items:baseline;gap:12px}
.date>span{order:2;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.month-name{font-size:30px}
.month-header>p{font-size:15px;color:var(--muted);margin-top:12px;line-height:1.55;max-width:390px}
.active-tracks{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.active-tracks span{font-size:10px;line-height:1.5;font-weight:600;padding:4px 8px;border-radius:6px;background:var(--track-bg,var(--reassess));color:var(--track,var(--review))}
.month-layout,.sessions{display:grid;gap:12px;min-width:0;align-items:start}
.lesson,.practice{border-radius:var(--radius);background:var(--track-bg);color:var(--track);min-width:0;box-shadow:0 4px 12px #20324d04;overflow:clip}
.lesson>summary,.practice>summary{display:flex;align-items:center;gap:12px;padding:22px 18px;min-height:130px;position:relative}
.stage-symbol{font-family:var(--display);font-weight:700;font-size:17px;line-height:1;flex-shrink:0;width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:var(--track);color:var(--track-bg)}
.summary-copy{flex:1;min-width:0;display:block}
.track-name{display:block;font-size:11px;font-weight:600;line-height:1.4;margin-bottom:6px}
.lesson h3{font-size:19px}
.lesson .summary-description{color:var(--track)}
.lesson .expand-icon,.practice .expand-icon{margin-left:auto;opacity:.8}
.lesson[open],.practice[open]{background:var(--surface);box-shadow:var(--shadow)}
.lesson[open]>summary,.practice[open]>summary{background:var(--track-bg)}
.lesson-body{padding:26px 22px 30px;color:var(--ink);max-width:78ch;margin:auto}
.lesson-body>.source:first-child{margin-top:0}
.lesson-body>.source{padding-bottom:20px;border-bottom:1px solid var(--line)}
.lesson-body>p{font-size:16px;line-height:1.8;margin:0 0 20px}
.lesson-body>p:last-child{margin-bottom:0}
.lesson-body>.source .translation{font-size:15px}
.lesson-body>.source blockquote{font-size:19px}
.practice>summary{min-height:94px}
.practice h3{font-size:18px}
.practice .stage-symbol{font-size:13px}
.practice .summary-description{font-size:12px}
.loop-diagram{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0}
.loop-diagram span{font-size:12px;font-weight:600;padding:8px 12px;border-radius:8px;background:var(--ai-bg);color:var(--ai)}
.practice-status{font-size:14px;font-weight:600}
.loop-reminder{font-size:13px!important;color:var(--muted)}
.continuation{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:14px;font-weight:600;min-height:48px;margin-top:28px;padding-top:16px;border-top:1px solid var(--line)}
.footnotes{padding-top:8px;border-top:1px solid var(--line);margin-top:24px}
.footnotes h4{font-size:14px;margin:16px 0 8px}
.footnotes ol{padding-left:18px;margin:0}
.footnotes li{font-size:12px;line-height:1.5;padding:7px 0}
.footnotes p{font-size:12px;color:var(--muted);margin-top:12px}
.citations{white-space:nowrap}
.citations a{padding:5px;font-size:12px}
.milestone{padding:16px 20px;margin:24px 0;background:var(--track-bg);border-radius:12px;color:var(--track)}
.milestone h4{margin:0;font-size:17px}
.milestone p{margin-top:6px;font-size:14px}
.schedule-note{font-weight:600;color:var(--s3)}
.reassessment{background:var(--reassess);border-radius:24px;padding:30px 20px 8px;margin:24px -4px 0}
.reassessment-intro{margin-bottom:28px;text-align:center}
.reassessment-intro h2{font-size:29px;color:var(--review)}
.reassessment-intro>p{font-size:15px;margin:18px auto 0;max-width:650px}
.reassessment-intro>p:first-of-type{display:inline-block;font-size:12px;font-weight:600;color:var(--review);margin-top:14px;background:var(--surface);padding:5px 12px;border-radius:7px}
.reassessment .month{border-color:#b9d2c5}
.reassessment .lesson:not(details){padding:24px;background:var(--surface);color:var(--ink)}
.reassessment .lesson:not(details) h3{color:var(--review);margin-bottom:14px}
.review-questions{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;color:var(--review);font-size:14px;font-weight:600}
.review-questions p+p{margin:0}
.open-plan h3{font-size:21px;color:var(--review)}
.open-plan>p{font-size:15px;margin-top:10px}
.open-label{display:inline-block;font-size:11px;color:var(--review);margin-top:16px;border:1px dashed #84aa99;padding:5px 10px;border-radius:7px}
.reviews{padding:64px 0}
.reviews>header{text-align:center;max-width:650px;margin:auto}
.reviews>header p{margin:20px 0 12px;font-size:15px;color:var(--muted)}
.reviews>header>a{font-size:14px;display:inline-block;min-height:44px;padding-block:10px}
.review-list{display:grid;gap:12px;margin-top:28px}
.review{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:clip;min-width:0}
.review-disclosure>summary{display:flex;align-items:center;gap:14px;padding:22px;min-height:110px}
.review-index{font-family:var(--display);color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}
.review-title{font-family:var(--display);font-size:18px;line-height:1.5;font-weight:700;display:block}
.review .track-name{color:var(--muted)}
.featured{background:var(--blue);color:white}
.featured .review-title{font-size:23px}
.featured .review-index,.featured .track-name{color:#d7e4ff}
.featured .review-text{color:var(--ink);background:var(--surface)}
.review-text{font-family:var(--cjk);font-size:18px;line-height:1.95;padding:26px;overflow-wrap:anywhere}
.review-text p+p{margin-top:1em}
.qualifications{padding:36px 0 56px;border-top:1px solid var(--line)}
.qualifications>header{text-align:center}
.qualifications>header p{font-size:15px;color:var(--muted);margin-top:18px}
.qualifications dl{display:grid;grid-template-columns:1fr 1fr;gap:24px 20px;margin:32px 0 44px}
.qualifications dt{font-size:12px;color:var(--muted);margin-bottom:8px}
.qualifications dd{margin:0;font-size:14px;font-weight:600;line-height:1.6}
.cv-intro{max-width:780px;margin:0 auto 24px;text-align:center}
.cv-intro h3{font-size:25px}
.cv-intro p{margin-top:14px;color:var(--muted);font-size:14px}
.cv-disclosure{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:clip;max-width:1000px;margin:auto}
.cv-disclosure>summary{padding:22px;display:flex;align-items:center;gap:16px}
.cv-disclosure .summary-description{font-size:12px;color:var(--muted)}
#master-cv{padding:24px 20px 32px;border-top:1px solid var(--line);font:400 16px/1.85 'SF Mono',Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;max-width:100%}
#master-cv .cv-prose{white-space:normal}
footer{display:flex;flex-direction:column;gap:8px;padding:24px 0 40px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
footer a{display:flex;align-items:center;min-height:44px}
@media(min-width:700px){
 :root{--nav-height:60px}
 main,footer{width:min(1120px,calc(100% - 64px))}
 .masthead{width:min(1120px,calc(100% - 64px));min-height:88px}
 .wordmark span{display:inline;font:400 12px var(--body);letter-spacing:0;margin-left:16px;color:var(--muted)}
 .masthead nav{gap:16px}
 .hero{padding:52px 32px 28px;border-radius:32px;margin-bottom:64px}
 .hero-date{font-size:13px;margin-bottom:22px}
 .hero-lede{font-size:18px}
 .interview-formats{grid-template-columns:repeat(4,1fr);gap:10px;margin-top:40px}
 .interview-formats a{min-height:66px;padding:14px;font-size:12px;gap:10px}
 .interview-formats a span{font-size:17px}
 .introduction>.source{padding:32px 40px}
 .introduction>.source blockquote{font-size:22px}
 .parallel-note{grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:16px;margin-bottom:76px}
 .timeline-opening{margin-bottom:32px}
 .month-nav{grid-template-columns:repeat(9,minmax(0,1fr));padding:8px 0}
 .month-nav a{min-height:44px;font-size:14px}
 .track-nav{gap:8px 20px;justify-content:center;margin-bottom:12px}
 .track-nav>span{width:auto;margin-right:4px}
 .track-nav a{min-height:44px}
 .month-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
 .sessions{display:contents}
 .practice{grid-column:1/-1}
 .lesson>summary{min-height:158px;padding:24px}
 .lesson[open]{grid-column:1/-1}
 .lesson-body{padding:32px 40px 40px}
 .lesson-body>.source blockquote{font-size:21px}
 .practice>summary{min-height:90px;padding:20px 24px}
 .practice .summary-copy{display:flex;align-items:center;justify-content:space-between;gap:20px}
 .practice .summary-description{margin:0}
 .reassessment{padding:40px 32px 12px;margin-inline:0;border-radius:28px}
 .reassessment-intro{margin-bottom:32px}
 .reassessment-intro h2{font-size:36px}
 .reassessment .lesson:not(details){grid-column:1/-1}
 .reassessment .open-plan{grid-column:1/-1}
 .review-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
 .featured,.review:has(details[open]){grid-column:1/-1}
 .featured .review-disclosure>summary{padding:30px 36px}
 .featured .review-title{font-size:27px}
 .review-text{max-width:82ch;margin:auto;padding:32px 40px}
 .featured .review-text{max-width:none}
 .qualifications dl{grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;margin-block:40px 56px}
 #master-cv{padding:32px 40px}
 footer{flex-direction:row;justify-content:space-between;align-items:center}
}
@media(min-width:1000px){
 .hero{padding:54px 40px 32px}
 .hero h1{font-size:76px}
 .hero-lede br{display:none}
 .hero-lede{max-width:590px}
 .month{display:grid;grid-template-columns:170px minmax(0,1fr);gap:28px;padding:36px 0}
 .month-header{margin:0}
 .date{display:block}
 .date>span{display:block;font-size:12px;margin-bottom:8px}
 .month-name{font-size:27px}
 .month-header>p{font-size:14px;margin-top:16px}
 .month-header .active-tracks{gap:6px}
 .month-layout{gap:16px}
 .lesson:not([open]).s1{grid-column:2}
 .lesson:not([open]).s2{grid-column:1;grid-row:1}
 .lesson:not([open]).s3:not(:only-child){grid-column:2}
 .lesson:only-child{grid-column:1/-1}
 .lesson h3{font-size:21px}
 .lesson-body{max-width:76ch}
 .reassessment .month{grid-template-columns:150px minmax(0,1fr)}
 .reassessment .month-layout:has(.open-plan){align-items:center}
 .reassessment .month:has(.open-plan){padding-block:28px}
 .reassessment-intro h2{font-size:40px}
 .reviews{padding-block:80px}
}
@media(prefers-reduced-motion:no-preference){
 html{scroll-behavior:smooth}
 a,button,summary,.expand-icon{transition:background-color 180ms ease,color 180ms ease,transform 180ms ease,box-shadow 180ms ease}
 .primary-link:hover,.interview-formats a:hover{transform:translateY(-2px)}
 details>summary:hover{filter:brightness(.985)}
 details[open]>.lesson-body,details[open]>.reading-body{animation:open-reading 200ms ease-out}
 @keyframes open-reading{from{opacity:.4;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
}
@media(prefers-color-scheme:dark){
 :root{--canvas:#111f32;--surface:#1a2b41;--ink:#ecf2fc;--muted:#b6c4d8;--line:#3d4e66;--blue:#adc7ff;--blue-soft:#2a4067;--hero:#1d3358;--s1:#b7ccff;--s1-bg:#2a4274;--s2:#a3e6cc;--s2-bg:#214e49;--s3:#ffd09c;--s3-bg:#593e2c;--s4:#e0bff3;--s4-bg:#4c375e;--benchmark:#cad6e7;--benchmark-bg:#2c3d54;--ai:#b1dff3;--ai-bg:#254658;--review:#a3e6cc;--reassess:#223f3b;--shadow:0 8px 28px #07122225;color-scheme:dark}
 .primary-link{background:#3b69d9;color:white}.primary-link:hover{background:#2d58c3}
 .month-nav a[aria-current],.month-nav a:hover{background:#3b69d9;color:white}
 .featured{background:#3158b5}
 .placeholder{border-color:#49685f}
 .reassessment .month{border-color:#49685f}
}
@media print{
 :root{--ink:#172b3e;--canvas:white;--surface:white}
 .masthead nav,.month-nav,.track-nav, main{width:100%}.hero{padding:20px;margin-bottom:30px}.month{break-before:page;display:block}
 .month-layout{display:block}.lesson,.practice{margin-block:16px}.lesson-body{display:block!important}
 details>summary{list-style:none}.review-list{display:block}.review{margin-bottom:24px}
 .review-text,.source{break-inside:avoid}#master-cv{font-size:12px}.reassessment{background:transparent}
}

/* ---- Hero: his sentence, then the offer ---- */
.hero-quote{font-family:var(--cjk);font-size:clamp(20px,3.4vw,30px);line-height:1.7;font-weight:500;color:var(--s1);max-width:760px;margin:0 auto}
.hero-translation{margin:12px auto 26px;max-width:600px;font-size:14px}
.hero-actions{display:flex;flex-direction:column;align-items:center;gap:12px}
.secondary-link{display:inline-flex;align-items:center;gap:10px;font-size:14px;font-weight:600;min-height:44px;text-decoration:none;color:var(--blue)}
.secondary-link:hover{text-decoration:underline}
.hero .interview-formats{margin-top:30px}
/* ---- Proof + first question ---- */
.proof{display:grid;gap:12px;max-width:820px;margin:0 auto 40px}
.proof-card,.first-question{border-radius:var(--radius);padding:24px 22px;background:var(--surface);box-shadow:var(--shadow)}
.proof-kicker{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:12px}
.proof-card blockquote{font-family:var(--cjk);font-size:19px;line-height:1.85;font-weight:500;color:var(--ink)}
.proof-card .translation{margin-top:10px;font-size:14px}
.proof-card>a,.first-question>a{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:14px;font-weight:600;text-decoration:none;margin-top:8px}
.first-question{background:var(--track-bg);color:var(--track)}
.first-question .proof-kicker{color:var(--track)}
.first-question .question{font-family:var(--display);font-size:21px;line-height:1.4;letter-spacing:-.02em;color:var(--track)}
.first-question>p+p{margin-top:12px;font-size:15px;color:var(--ink)}
.first-question>a{color:var(--track)}
/* ---- Closing CTA ---- */
.closing{text-align:center;padding:56px 16px 64px;margin-top:16px;border-top:1px solid var(--line)}
.closing h2{font-size:clamp(26px,4vw,38px)}
.closing p{max-width:520px;margin:16px auto 26px;color:var(--muted);font-size:15px}
@media(min-width:700px){
 .hero{padding:56px 32px 40px}
 .hero-actions{flex-direction:row;justify-content:center;gap:24px}
 .proof{grid-template-columns:1fr 1fr;gap:16px;max-width:1120px;margin-bottom:56px}
 .proof-card,.first-question{padding:30px 32px}
}
