:root{
  color-scheme:light only;
  --paper:#FDFCFA;
  --paper-2:#F3F1EC;
  --ink:#1C2B36;
  --ink-2:#46596A;
  --mute:#6E7F8D;
  --navy:#123A63;
  --teal:#0E7C7B;
  --rust:#B5502A;
  --line:#DCD7CF;
  --serif:"Source Serif 4",Georgia,"Songti TC",serif;
  --sans:"Inter",system-ui,"Helvetica Neue",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16.5px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:var(--navy);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--rust)}
a:focus-visible,button:focus-visible{outline:2px solid var(--rust);outline-offset:3px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:#fff;padding:8px;z-index:9}
.wrap{max-width:1060px;margin:0 auto;padding:0 26px}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.15;margin:0 0 .45em;letter-spacing:-.005em}
h2{font-size:1.75rem}
h3{font-size:1.3rem}
p{margin:0 0 1.05em;max-width:66ch;text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto}
.small{font-size:.9rem;color:var(--mute);text-align:left}
.narrow{max-width:720px}
.intro{font-size:1.15rem;font-family:var(--serif);line-height:1.55}

header.site{background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.bar{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:70px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--navy);font-family:var(--serif);font-weight:700;font-size:1.35rem}
.brand img{height:24px;width:auto}
nav ul{list-style:none;margin:0;padding:0;display:flex;gap:0 18px;flex-wrap:wrap}
nav a{color:var(--ink-2);text-decoration:none;font-size:.9rem;font-weight:500;padding:6px 0;display:block;border-bottom:2px solid transparent}
nav a:hover{color:var(--rust)}
nav a[aria-current]{color:var(--navy);border-bottom-color:var(--rust)}
.menu{display:none;background:none;border:1px solid var(--line);color:var(--ink);font:inherit;font-size:.9rem;padding:6px 14px;border-radius:2px}
@media(max-width:900px){
  .menu{display:block}
  nav{display:none;width:100%;padding-bottom:10px}
  nav.open{display:block}
  nav ul{flex-direction:column;gap:0}
  nav a{padding:10px 0;border-bottom:1px solid var(--line)}
  nav a[aria-current]{border-bottom-color:var(--rust)}
}

img.banner{display:block;width:100%;height:auto}
html{background:var(--paper)}
.opening{padding:52px 0 52px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff 0,var(--paper-2) 100%);position:relative;overflow:hidden}
.opening .deco{position:absolute;right:-130px;top:50%;transform:translateY(-50%);width:560px;height:560px;color:var(--navy);opacity:.11;pointer-events:none}
.eyebrow{display:flex;align-items:center;gap:9px;margin:0 0 18px;font-family:var(--serif);font-weight:700;font-size:1.35rem;color:var(--navy)}
.eyebrow img{height:24px;width:auto}
.open-grid{position:relative}
.open-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:56px;align-items:start}
.opening h1{font-size:clamp(1.95rem,3.6vw,2.65rem);max-width:20ch;text-wrap:balance;margin-bottom:.4em}
.lede{font-size:1.15rem;color:var(--ink-2);max-width:46ch;text-align:left;hyphens:none}
.facts{margin:0;border-top:2px solid var(--navy);padding-top:14px}
.facts dt{font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-weight:600}
.facts dd{margin:1px 0 14px;font-family:var(--serif);font-size:1.05rem;line-height:1.4}
.facts.inline{border-top:1px solid var(--line);margin:24px 0}
.facts.inline dd{font-family:var(--sans);font-size:1rem}
.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px;text-align:left}
.btn{display:inline-block;padding:11px 22px;border:1px solid var(--navy);border-radius:2px;text-decoration:none;color:var(--navy);font-weight:600;font-size:.95rem}
.btn:hover{background:var(--navy);color:#fff}
.btn.primary{background:var(--rust);border-color:var(--rust);color:#fff}
.btn.primary:hover{background:#9C4223;border-color:#9C4223;color:#fff}
@media(max-width:900px){.open-grid{grid-template-columns:1fr;gap:30px}.opening{padding:40px 0 40px}.opening .deco{width:340px;height:340px;right:-120px;top:-60px;opacity:.07}}

.band{padding:46px 0}
.tint{background:var(--paper-2);padding:46px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:56px}
.two>div>h2:first-child{margin-top:0}
.band>h2:first-child{margin-top:0}
@media(max-width:900px){.two{grid-template-columns:1fr;gap:28px}}
.more{font-weight:600;font-size:.95rem}
.topics{margin:0;padding-left:1.1em;columns:2;column-gap:28px;font-size:.97rem}
.topics li{break-inside:avoid;padding:2px 0}
@media(max-width:620px){.topics{columns:1}}

.pagehead{padding:38px 0 30px;border-bottom:1px solid var(--line);background:var(--paper-2)}
.pagehead h1{font-size:clamp(2.1rem,5vw,3rem);margin:0}
.pagehead .sub{margin:.5em 0 0;color:var(--ink-2);max-width:56ch;text-align:left}

table.dates{width:100%;border-collapse:collapse;margin:0 0 20px}
.dates th,.dates td{text-align:left;padding:11px 8px;border-bottom:1px solid var(--line);vertical-align:baseline}
.dates th{font-family:var(--serif);font-weight:600;font-size:1.05rem;white-space:nowrap;width:11.5em}
.dates td{color:var(--ink-2)}
.dates tr.hi th{color:var(--rust)}
.dates tr.now th,.dates tr.now td{background:#fff;color:var(--navy);font-weight:600}
.dates tr.now th{box-shadow:inset 3px 0 0 var(--navy)}
.dates.compact th{font-size:1rem}

.steps{list-style:none;counter-reset:s;padding:0;margin:0 0 8px}
.steps li{counter-increment:s;padding:0 0 6px 62px;position:relative;margin-bottom:22px}
.steps li::before{content:counter(s);position:absolute;left:0;top:-2px;width:42px;height:42px;border:1px solid var(--navy);border-radius:50%;color:var(--navy);font-family:var(--serif);font-size:1.25rem;font-weight:600;display:grid;place-items:center}
.steps h2{font-size:1.3rem;margin-bottom:.25em}
.steps p{text-align:justify}

table.fees{width:100%;border-collapse:collapse;margin:0 0 34px;font-size:.97rem}
.fees th,.fees td{padding:13px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.fees thead th{font-family:var(--serif);font-size:1.05rem;border-bottom:2px solid var(--navy)}
.fees thead span{display:block;font-family:var(--sans);font-weight:400;font-size:.78rem;color:var(--mute)}
.fees tbody th{font-weight:400;color:var(--ink)}
.fees td{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink-2)}
.fees td:nth-child(2){color:var(--rust);font-weight:600}
.incl h2{font-size:1.25rem}
.incl ul{padding-left:1.1em;margin:0 0 1em;color:var(--ink-2)}

.jlist{list-style:none;padding:0;margin:0 0 10px;counter-reset:j;columns:2;column-gap:44px}
.jlist.plain{columns:1;max-width:720px}
.jlist>li{break-inside:avoid;padding:9px 0 9px 38px;border-bottom:1px solid var(--line);position:relative;font-size:.95rem}
.jlist:not(.plain)>li{counter-increment:j}
.jlist:not(.plain)>li::before{content:counter(j);position:absolute;left:0;top:11px;font-family:var(--serif);font-weight:600;color:var(--teal)}
.jlist.plain>li{padding-left:0}
.jlist a{font-weight:600;display:block;text-decoration:none}
.jlist a:hover{text-decoration:underline}
.jlist span{color:var(--mute);font-size:.85rem}
.subtopics{list-style:none;margin:8px 0 2px;padding:0 0 0 12px;border-left:2px solid var(--line);font-size:.86rem;color:var(--ink-2)}
.subtopics>li{padding:1px 0;border:0;position:static}
.subtopics>li::before{content:"· ";color:var(--mute);position:static;font-family:inherit;font-weight:400}
@media(max-width:900px){.jlist{columns:1}}

.past{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:22px}
.past a{display:block;text-decoration:none;color:var(--ink)}
.past img,.past .nocover{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:top center;display:block;margin-bottom:10px;background:#fff;border:1px solid var(--line)}
.past .nocover{display:grid;place-items:center;color:var(--mute);font-family:var(--serif)}
.past a:hover img,.past a:hover .nocover{border-color:var(--rust)}
.past strong{display:block;font-family:var(--serif);font-size:1.05rem}
.past span{color:var(--mute);font-size:.85rem}
.proof{margin-top:7px;background:none;border:1px solid var(--line);border-radius:2px;color:var(--navy);font:inherit;font-size:.8rem;font-weight:500;padding:4px 10px;cursor:pointer}
.proof:hover{border-color:var(--navy);background:#fff}
.lightbox{position:fixed;inset:0;z-index:50;background:rgba(20,28,36,.86);display:grid;place-items:center;padding:28px}
.lightbox[hidden]{display:none}
.lightbox figure{margin:0;max-width:1100px;width:100%}
.lightbox img{width:100%;height:auto;max-height:78vh;object-fit:contain;background:#fff;border:1px solid rgba(255,255,255,.2)}
.lightbox figcaption{color:#E7EDF2;font-size:.88rem;margin-top:10px;text-align:center;hyphens:none}
.lb-close{position:absolute;top:14px;right:18px;background:none;border:0;color:#fff;font-size:2.2rem;line-height:1;cursor:pointer;padding:6px 12px}
.lb-close:hover{color:var(--rust)}

.people{list-style:none;padding:0;margin:0 0 10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:0 36px}
.people li{padding:9px 0;border-bottom:1px solid var(--line);font-size:.94rem}
.people strong{display:block;font-weight:600}
.people span{color:var(--mute);font-size:.85rem}

.speaker{display:grid;grid-template-columns:210px 1fr;gap:36px;padding:30px 0;border-bottom:1px solid var(--line);align-items:start}
.speaker:first-child{padding-top:0}
.speaker:last-child{border-bottom:0}
.speaker img{width:100%;aspect-ratio:1;object-fit:cover;background:var(--paper-2);border:1px solid var(--line)}
.speaker .talk{font-family:var(--serif);font-size:1.5rem;line-height:1.25;color:var(--navy);margin:0 0 .4em}
.speaker h2{font-size:1.05rem;font-family:var(--sans);font-weight:600;letter-spacing:.02em;margin:0 0 .2em}
.speaker .aff{color:var(--ink-2);margin-bottom:.6em}
.speaker p:last-child{color:var(--mute);font-size:.92rem;margin:0}
@media(max-width:620px){.speaker{grid-template-columns:1fr}.speaker img{max-width:200px}}

.logos{list-style:none;padding:0;margin:22px 0 34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:26px 34px;align-items:center}
.logos li{display:flex;align-items:center;min-height:56px}
.logos img{max-width:100%;max-height:52px;width:auto;height:auto;display:block}
.logos.big li{min-height:72px}
.logos.big img{max-height:66px}
.logos.strip{display:flex;flex-wrap:wrap;align-items:center;gap:20px 48px;margin:44px 0 0;padding-top:24px;border-top:1px solid var(--line);position:relative}
.logos.strip img{max-height:44px}
@media(max-width:620px){.logos.strip{gap:18px 26px;margin-top:32px}.logos.strip img{max-height:32px}}
.orgs h2{font-size:.82rem;font-family:var(--sans);font-weight:600;color:var(--mute);letter-spacing:.08em;text-transform:uppercase;margin-bottom:0}
.vlogo{max-width:300px;display:block;margin-bottom:22px}
.photo{width:100%;height:auto;display:block;margin:16px 0 22px;border:1px solid var(--line)}
.zh{color:var(--mute)}
.note{background:#fff;border-left:3px solid var(--rust);padding:11px 15px;font-size:.9rem;color:var(--ink-2);text-align:left}

footer.site{background:var(--navy);color:#C9D6E3;margin-top:56px;font-size:.92rem}
footer.site a{color:#fff}
.foot{display:grid;grid-template-columns:1.3fr 1fr 1.3fr;gap:36px;padding:44px 26px 26px}
.fcol h2{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;font-family:var(--sans);font-weight:600;color:#8FA8C0;margin-bottom:.7em}
.fmark{font-family:var(--serif);font-size:1.4rem;color:#fff;margin-bottom:.4em}
.foot p{max-width:none;text-align:left;hyphens:none}
.copy{padding:14px 26px 30px;font-size:.8rem;border-top:1px solid #24507E;color:#8FA8C0}
@media(max-width:900px){.foot{grid-template-columns:1fr;gap:24px}}

/* ---------- Motion ---------- */
/* Hero: one orchestrated entrance — the globe draws itself, then the text settles in. */
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes pop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes orbit{to{transform:rotate(360deg)}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes zoom{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}

.opening h1,.opening .lede,.opening .cta,.opening .facts,.opening .logos.strip{animation:rise .7s cubic-bezier(.2,.7,.2,1) both}
.opening .lede{animation-delay:.1s}
.opening .cta{animation-delay:.2s}
.opening .facts{animation-delay:.15s}
.opening .logos.strip{animation-delay:.45s}
.opening .deco .rings circle,.opening .deco .orbit ellipse{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.6s cubic-bezier(.4,0,.2,1) both}
.opening .deco .rings circle:nth-child(2){animation-delay:.1s}
.opening .deco .rings circle:nth-child(3){animation-delay:.2s}
.opening .deco .rings circle:nth-child(4){animation-delay:.3s}
.opening .deco .orbit ellipse{animation-delay:.35s}
.opening .deco .orbit ellipse:nth-child(2){animation-delay:.5s}
.opening .deco .nodes circle{transform-box:fill-box;transform-origin:center;animation:pop .5s cubic-bezier(.2,.8,.3,1.3) both;animation-delay:calc(1.1s + var(--n,0)*.07s)}
.opening .deco .nodes circle:nth-child(2){--n:1}.opening .deco .nodes circle:nth-child(3){--n:2}
.opening .deco .nodes circle:nth-child(4){--n:3}.opening .deco .nodes circle:nth-child(5){--n:4}
.opening .deco .nodes circle:nth-child(6){--n:5}.opening .deco .nodes circle:nth-child(7){--n:6}
.opening .deco .nodes circle:nth-child(8){--n:7}.opening .deco .nodes circle:nth-child(9){--n:8}
.opening .deco .orbit{transform-box:fill-box;transform-origin:center;animation:orbit 90s linear 1.9s infinite}

/* Inner pages: the heading settles once on load. */
.pagehead h1,.pagehead .sub{animation:rise .6s cubic-bezier(.2,.7,.2,1) both}
.pagehead .sub{animation-delay:.1s}

/* Scroll reveal (added by motion.js; pages without JS show everything at once). */
html.js .rv{opacity:0;transform:translateY(16px)}
html.js .rv.in{opacity:1;transform:none;transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0)*70ms)}
html.js section.rv.in{transition-delay:0s}

/* Answering the user's action */
nav a{position:relative;transition:color .2s}
nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--rust);transform:scaleX(0);transform-origin:left;transition:transform .28s cubic-bezier(.2,.7,.2,1)}
nav a:hover::after,nav a[aria-current]::after{transform:scaleX(1)}
nav a[aria-current]{border-bottom-color:transparent}
.btn{transition:background-color .2s,color .2s,border-color .2s,transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px -8px rgba(18,58,99,.45)}
.btn:active{transform:none;box-shadow:none}
a.more{transition:color .2s}
.jlist a{transition:color .15s}
.past a{transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.past img,.past .nocover{transition:border-color .25s,box-shadow .3s}
.past a:hover{transform:translateY(-4px)}
.past a:hover img,.past a:hover .nocover{box-shadow:0 14px 28px -14px rgba(18,58,99,.4)}
.proof{transition:background-color .2s,border-color .2s}
.lightbox:not([hidden]){animation:fade .22s ease both}
.lightbox:not([hidden]) figure{animation:zoom .3s cubic-bezier(.2,.7,.2,1) both}
.lb-close{transition:color .2s,transform .2s}.lb-close:hover{transform:rotate(90deg)}
.speaker img{transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.speaker:hover img{transform:translateY(-3px)}
.steps li::before{transition:background-color .25s,color .25s}
.steps li:hover::before{background:var(--navy);color:#fff}

/* Mobile menu slides open instead of snapping. */
@media(max-width:900px){
  nav{display:grid;grid-template-rows:0fr;width:100%;padding:0;transition:grid-template-rows .32s cubic-bezier(.2,.7,.2,1)}
  nav.open{display:grid;grid-template-rows:1fr;padding:0}
  nav a[aria-current]{border-bottom-color:var(--line)}
  nav ul{min-height:0;overflow:hidden}
  nav.open ul{padding-bottom:10px}
  nav a::after{left:0;bottom:0}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .opening .deco .rings circle,.opening .deco .orbit ellipse{stroke-dashoffset:0}
  .past a:hover,.speaker:hover img,.btn:hover{transform:none}
}
