:root{
  --bg:#FFFFFF; --bg-2:#EFF5F0; --surface:#FFFFFF; --surface-2:#F7FAF6;
  --ink:#1E3A30; --ink-70:#4A5D53; --ink-50:#78887E; --line:#E4EBE5;
  --brand:#2FB37A; --brand-deep:#1E8F5E; --brand-tint:#E4F5EC; --leaf:#57C99A;
  --accent:#F5A623; --accent-deep:#D98A1A; --accent-tint:#FDEFD3;
  --shadow:0 18px 40px -24px rgba(15,60,50,.4);
  --shadow-sm:0 8px 22px -16px rgba(15,60,50,.45);
  --serif:Georgia,'Times New Roman',serif;
  --sans:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,'PingFang SC','Microsoft YaHei',sans-serif;
  --maxw:1120px; --readw:820px;
  color-scheme:light;
}
/* Auto dark-mode intentionally disabled — site always shows the bright light palette
   on every device, regardless of the phone/OS dark-mode setting. Manual [data-theme="dark"]
   below is kept but never applied (no toggle in the UI). */
:root[data-theme="dark"]{
  --bg:#0E241E; --bg-2:#0A1B16; --surface:#16352B; --surface-2:#1A3B30;
  --ink:#EDEFE4; --ink-70:#B8C6BD; --ink-50:#86988C; --line:#274A3E;
  --brand:#57C99A; --brand-deep:#3E9E77; --brand-tint:#173B30; --leaf:#5FB98C;
  --accent:#F5B24A; --accent-deep:#E29A2E; --accent-tint:#243A2E;
  --shadow:0 20px 44px -24px rgba(0,0,0,.6); --shadow-sm:0 10px 24px -16px rgba(0,0,0,.6);
}
:root[data-theme="light"]{
  --bg:#FFFFFF; --bg-2:#EFF5F0; --surface:#FFFFFF; --surface-2:#F7FAF6;
  --ink:#1E3A30; --ink-70:#4A5D53; --ink-50:#78887E; --line:#E4EBE5;
  --brand:#2FB37A; --brand-deep:#1E8F5E; --brand-tint:#E4F5EC; --leaf:#57C99A;
  --accent:#F5A623; --accent-deep:#D98A1A; --accent-tint:#FDEFD3;
  --shadow:0 18px 40px -24px rgba(15,60,50,.4); --shadow-sm:0 8px 22px -16px rgba(15,60,50,.45);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:19px;line-height:1.72;-webkit-font-smoothing:antialiased;}
.lang.zh{display:none}
[data-lang="zh"] .lang.zh{display:inline}
[data-lang="zh"] .lang.en{display:none}

h1,h2,h3{font-family:var(--serif);font-weight:700;line-height:1.15;
  text-wrap:balance;margin:0;letter-spacing:-.01em}
p{margin:0}
a{color:inherit}
img{max-width:100%;display:block}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px}
.eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.16em;
  font-size:.72rem;font-weight:700;color:var(--brand)}
.lede{color:var(--ink-70);font-size:1.09rem;max-width:var(--readw)}

.btn{display:inline-flex;align-items:center;gap:.55em;font-family:var(--sans);
  font-weight:700;font-size:1.02rem;border:0;cursor:pointer;text-decoration:none;
  padding:.85em 1.4em;border-radius:999px;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}
.btn:focus-visible{outline:3px solid var(--brand);outline-offset:3px}
.btn-wa{background:linear-gradient(180deg,var(--accent),var(--accent-deep));
  color:#3a2400;box-shadow:0 10px 24px -10px rgba(217,138,26,.75)}
.btn-wa:hover{transform:translateY(-2px) scale(1.02);filter:brightness(1.05);box-shadow:0 14px 30px -10px rgba(217,138,26,.85)}
.btn-wa svg{width:1.2em;height:1.2em;flex:none}
.btn-ghost{background:var(--surface);color:var(--brand);border:1.5px solid var(--line)}
.btn-ghost:hover{border-color:var(--brand);transform:translateY(-2px)}

/* header */
header.bar{position:sticky;top:0;z-index:40;background:transparent;border-bottom:0;padding:12px 14px 0}
.bar-in{max-width:var(--maxw);margin:0 auto;padding:13px 24px;display:flex;align-items:center;gap:16px;background:color-mix(in srgb,var(--surface) 95%,transparent);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.logomark{width:50px;height:50px;flex:none}
.brand b{font-family:var(--serif);font-size:1.26rem;font-weight:700;display:block;line-height:1.05}
.brand small{font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;color:var(--brand);font-weight:700}
nav.mainnav{display:none;margin-left:8px;gap:19px}
@media(min-width:1000px){nav.mainnav{display:flex}}
nav.mainnav a{text-decoration:none;color:var(--ink-70);font-weight:600;font-size:.94rem;padding:6px 0;border-bottom:2px solid transparent;white-space:nowrap}
nav.mainnav a:hover{color:var(--brand);border-color:var(--accent)}
nav.mainnav a[aria-current="page"]{color:var(--brand);border-color:var(--accent)}
.bar-tools{margin-left:auto;display:flex;align-items:center;gap:10px}
.langtog{display:inline-flex;border:1.5px solid var(--line);border-radius:999px;overflow:hidden;background:var(--surface)}
.langtog button{font-family:var(--sans);font-weight:700;font-size:.82rem;border:0;background:transparent;
  color:var(--ink-50);padding:.42em .7em;cursor:pointer}
.langtog button[aria-pressed="true"]{background:var(--brand);color:#fff}
.langtog button:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.bar .btn-wa{padding:.55em 1em;font-size:.9rem}
.bar-wa-txt{display:none}
@media(min-width:560px){.bar-wa-txt{display:inline}}

/* status pills */
.pill{display:inline-flex;align-items:center;gap:.45em;font-family:var(--sans);font-weight:800;
  font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;padding:.38em .8em;border-radius:999px}
.pill-open{background:var(--accent-tint);color:var(--accent-deep)}
.pill-open::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent-deep);
  box-shadow:0 0 0 0 rgba(242,164,49,.6);animation:pulse 2.4s infinite}
.pill-soon{background:var(--brand-tint);color:var(--brand-deep)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(242,164,49,.55)}70%{box-shadow:0 0 0 8px rgba(242,164,49,0)}100%{box-shadow:0 0 0 0 rgba(242,164,49,0)}}

/* hero */
.hero{position:relative;overflow:hidden;color:var(--ink);background:linear-gradient(165deg,#E7F6EE 0%,#F2FBF6 46%,#FFFFFF 100%)}
.hero-bg{display:none}
.hero-bg img{position:absolute;object-fit:cover;opacity:.16;filter:saturate(.9)}
.hero-bg .hb1{top:-4%;left:-3%;width:32%;height:44%;border-radius:26px;transform:rotate(-4deg)}
.hero-bg .hb2{bottom:-6%;left:6%;width:28%;height:46%;border-radius:26px;transform:rotate(3deg)}
.hero-bg .hb3{top:8%;right:-4%;width:30%;height:50%;border-radius:26px;transform:rotate(4deg)}
.hero-bg .hb4{bottom:-8%;right:8%;width:24%;height:40%;border-radius:26px;transform:rotate(-3deg)}
.hero-overlay{display:none}
.stars{display:none}
.stars i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;opacity:.5;
  animation:tw 4s ease-in-out infinite}
@keyframes tw{0%,100%{opacity:.2;transform:scale(.7)}50%{opacity:.9;transform:scale(1.15)}}
.hero-in{max-width:var(--maxw);margin:0 auto;padding:56px 22px 68px;position:relative;z-index:2;
  display:grid;gap:36px;grid-template-columns:1fr}
@media(min-width:860px){.hero-in{grid-template-columns:1.15fr .85fr;align-items:center;padding:72px 22px 84px}}
.hero .pill{margin-bottom:1.1rem}
.hero h1{font-size:clamp(2.5rem,6.6vw,4rem);color:var(--ink);margin:0}
.hero h1 em{font-style:italic;color:var(--accent)}
.hero .lede{color:var(--ink-70);margin-top:1.15rem;font-size:1.22rem}
.hero .eyebrow{color:var(--brand-deep)}
.feature-card{margin-top:1.9rem;max-width:490px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px 22px;box-shadow:var(--shadow)}
.fc-top{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.fc-pill{font-size:.63rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
  background:var(--accent);color:#3a2400;padding:.34em .7em;border-radius:999px}
.fc-title{font-family:var(--serif);font-weight:700;font-size:1.3rem;color:var(--ink)}
.fc-meta{color:var(--ink-70);font-size:.96rem;margin:.6rem 0 0}
.fc-cta{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center;margin-top:1rem}
.fc-link{color:var(--accent);font-weight:700;font-size:.92rem;text-decoration:none;white-space:nowrap}
.fc-link:hover{text-decoration:underline}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin:1.6rem 0 0;padding:0;list-style:none}
.chips li{display:inline-flex;align-items:center;gap:.4em;font-size:.92rem;font-weight:600;background:var(--brand-tint);color:var(--ink);border:1px solid var(--line);padding:.5em .9em;border-radius:999px}
.chips b{color:var(--accent);font-weight:800}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:1.9rem}
.hero-note{font-size:.9rem;color:var(--ink-50);margin-top:.9rem;display:flex;align-items:center;gap:.5em}
.dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none;animation:pulse 2.4s infinite}

.scene{position:relative;justify-self:center;width:100%;max-width:360px;aspect-ratio:1/1}
.scene svg{width:100%;height:100%;overflow:visible}
.float{animation:float 5s ease-in-out infinite}
.float.b{animation-duration:6.5s;animation-delay:-1.5s}
.float.c{animation-duration:5.8s;animation-delay:-3s}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-11px)}}
@keyframes spin{to{transform:rotate(360deg)}}
.scene .spin{transform-box:view-box;transform-origin:150px 150px;animation:spin 52s linear infinite}
@keyframes spinr{to{transform:rotate(-360deg)}}
.scene .spin2{transform-box:view-box;transform-origin:150px 150px;animation:spinr 68s linear infinite}
.steam-tips{position:absolute;inset:0;z-index:4}
.stip{position:absolute;width:23%;aspect-ratio:1;transform:translate(-50%,-50%);
  background:transparent;border:0;border-radius:50%;padding:0;cursor:help}
.stip:focus-visible{outline:2px solid #fff;outline-offset:2px}
.tipcard{position:absolute;left:50%;bottom:112%;transform:translateX(-50%) translateY(6px);
  width:174px;max-width:46vw;background:var(--surface);color:var(--ink);border:1px solid var(--line);
  border-radius:12px;padding:9px 12px;box-shadow:var(--shadow);font-size:.78rem;line-height:1.45;text-align:left;
  opacity:0;visibility:hidden;transition:opacity .16s ease,transform .16s ease;pointer-events:none;z-index:6}
.tipcard b{display:block;font-family:var(--serif);font-size:.92rem;color:var(--brand);margin-bottom:1px}
.tipcard::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:6px solid transparent;border-top-color:var(--surface)}
.stip.down .tipcard{bottom:auto;top:112%;transform:translateX(-50%) translateY(-6px)}
.stip.down .tipcard::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--surface)}
.stip:hover .tipcard,.stip:focus .tipcard,.stip.on .tipcard{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}

/* subpage hero */
.subhero{position:relative;overflow:hidden;color:var(--ink);background:linear-gradient(165deg,#E7F6EE,#FFFFFF)}
.subhero-in{max-width:var(--maxw);margin:0 auto;padding:44px 22px 46px;position:relative;z-index:2}
.crumb{display:flex;flex-wrap:wrap;gap:.4em;align-items:center;font-size:.86rem;color:var(--ink-50);margin-bottom:1rem}
.crumb a{color:var(--brand-deep);text-decoration:none;font-weight:700}
.crumb a:hover{color:var(--brand)}
.crumb span{opacity:.6}
.subhero h1{font-size:clamp(2.2rem,5.4vw,3.3rem);color:var(--ink)}
.subhero .lede{color:var(--ink-70);margin-top:1rem;font-size:1.2rem}
.subhero .eyebrow{color:var(--brand-deep)}
.subhero .pill{margin-bottom:1rem}
.subhero-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:1.7rem}

/* sections */
section{padding:60px 0}
.sec-head{max-width:var(--readw)}
.sec-head h2{font-size:clamp(1.95rem,4.6vw,2.75rem);margin:.5rem 0 0}
.sec-head p{margin-top:.9rem;color:var(--ink-70)}
.band{background:var(--bg-2)}
.center{text-align:center;margin-left:auto;margin-right:auto}

.cards{display:grid;gap:20px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:720px){.cards{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;
  padding:26px 24px;box-shadow:var(--shadow-sm)}
.card .ic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;
  background:var(--brand-tint);color:var(--brand);margin-bottom:16px;font-size:1.5rem}
.card .ic svg{width:26px;height:26px}
.card h3{font-size:1.32rem}
.card p{margin-top:.55rem;color:var(--ink-70);font-size:1.04rem}

/* split cards — two age lines */
.splitcards{display:grid;gap:20px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:760px){.splitcards{grid-template-columns:1fr 1fr}}
.splitcard{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:22px;
  overflow:hidden;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.splitcard:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}
.splitcard .sc-img{position:relative;aspect-ratio:16/9;overflow:hidden}
.splitcard .sc-img img{width:100%;height:100%;object-fit:cover}
.splitcard .sc-age{position:absolute;left:14px;top:14px;font-family:var(--serif);font-weight:700;
  font-size:1rem;background:color-mix(in srgb,var(--surface) 90%,transparent);backdrop-filter:blur(4px);
  color:var(--brand-deep);padding:.3em .8em;border-radius:999px;box-shadow:var(--shadow-sm)}
.splitcard .sc-body{padding:22px 24px;display:flex;flex-direction:column;gap:10px;flex:1}
.splitcard h3{font-size:1.35rem}
.splitcard .sc-body>p{color:var(--ink-70);font-size:.97rem}
.splitcard .sc-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:2px}
.splitcard .sc-tags span{font-size:.78rem;font-weight:600;background:var(--brand-tint);color:var(--brand-deep);
  padding:.32em .7em;border-radius:999px}
.splitcard .plink{margin-top:auto;font-weight:700;font-size:.94rem;color:var(--brand);text-decoration:none;padding-top:6px}
.splitcard .plink:hover{text-decoration:underline}

/* programs cards */
.progs{display:grid;gap:18px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:640px){.progs{grid-template-columns:1fr 1fr}}
@media(min-width:960px){.progs.p3{grid-template-columns:repeat(3,1fr)}}
.prog{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:22px 22px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px;position:relative}
.prog.feat{border-color:var(--accent);box-shadow:0 14px 34px -22px rgba(217,138,26,.7)}
.prog .ph{display:flex;align-items:center;justify-content:space-between;gap:10px}
.prog .emoji{font-size:1.7rem;line-height:1}
.prog h3{font-size:1.2rem}
.prog p{color:var(--ink-70);font-size:.95rem}
.prog .plink{margin-top:auto;font-weight:700;font-size:.9rem;color:var(--brand);text-decoration:none}
.prog .plink:hover{text-decoration:underline}
.prog .soonnote{font-size:.85rem;color:var(--ink-50)}

/* continuous skill path 4 -> 12 */
.pathrail{display:flex;align-items:center;gap:.6em;margin-top:34px;font-family:var(--serif);
  font-weight:700;color:var(--brand-deep);font-size:.95rem}
.pathrail .line{flex:1;height:3px;border-radius:3px;
  background:linear-gradient(90deg,var(--brand-tint),var(--accent))}
.pathline{display:grid;gap:16px;margin-top:16px;grid-template-columns:1fr}
@media(min-width:680px){.pathline{grid-template-columns:1fr 1fr}}
@media(min-width:980px){.pathline{grid-template-columns:repeat(4,1fr)}}
.pnode{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:20px;
  padding:22px 20px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px;
  transition:transform .2s ease,box-shadow .2s ease}
.pnode:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.pnode .page{display:inline-flex;align-items:center;gap:.4em;font-family:var(--serif);font-weight:700;
  color:var(--brand-deep);font-size:1.05rem}
.pnode .page .num{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--brand);color:#fff;font-size:.82rem}
.pnode .pstage{font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep)}
.pnode h3{font-size:1.12rem}
.pnode .pskills{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;padding:0;list-style:none}
.pnode .pskills li{font-size:.78rem;font-weight:600;background:var(--brand-tint);color:var(--brand-deep);
  padding:.3em .66em;border-radius:999px}
.laddernote{margin-top:22px;text-align:center;font-size:.92rem;color:var(--ink-70)}
.laddernote b{color:var(--brand-deep)}

/* class rhythm timeline */
.flow{margin-top:38px;display:grid;gap:0;max-width:760px}
.step{display:grid;grid-template-columns:auto 1fr;gap:20px;padding:20px 0;border-top:1px solid var(--line)}
.step:first-child{border-top:0}
.step .n{width:46px;height:46px;border-radius:50%;flex:none;display:grid;place-items:center;
  font-family:var(--serif);font-weight:700;font-size:1.15rem;background:var(--brand-tint);color:var(--brand-deep)}
.step .t{font-size:.72rem;font-weight:800;letter-spacing:.08em;color:var(--accent-deep);text-transform:uppercase}
.step h3{font-size:1.16rem;margin-top:.15rem}
.step p{color:var(--ink-70);margin-top:.3rem;font-size:.98rem}

/* details at a glance */
.glance{margin-top:36px;display:grid;gap:14px;grid-template-columns:repeat(2,1fr)}
@media(min-width:640px){.glance{grid-template-columns:repeat(4,1fr)}}
.gtile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px 16px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:3px}
.gtile .gi{font-size:1.5rem;line-height:1}
.gtile .gl{font-family:var(--sans);text-transform:uppercase;letter-spacing:.08em;font-size:.64rem;font-weight:800;color:var(--ink-50);margin-top:8px}
.gtile .gv{font-weight:700;color:var(--ink);font-size:.96rem;line-height:1.3}
.glance-cta{margin-top:28px;display:flex;flex-wrap:wrap;gap:14px 18px;align-items:center}
.glance-cta .note{font-size:.9rem;color:var(--ink-70);display:flex;align-items:center;gap:.5em}
.glance-cta .note .dot{background:var(--accent-deep)}

/* kit figure + labels */
.kitwrap{display:grid;gap:28px;grid-template-columns:1fr;align-items:center;margin-top:36px}
@media(min-width:820px){.kitwrap{grid-template-columns:.85fr 1.15fr}}
.kit-fig{border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow-sm);padding:0;overflow:hidden;
  background:radial-gradient(130% 120% at 35% 12%,var(--brand-tint),var(--surface))}
.kit-fig img{width:100%;height:auto;display:block}
.kit-list{list-style:none;padding:0;margin:0;display:grid;gap:16px}
.kit-list li{display:flex;gap:14px;align-items:flex-start}
.kit-list .kn{width:44px;height:44px;flex:none;border-radius:13px;display:grid;place-items:center;
  background:var(--accent-tint);font-size:1.35rem}
.kit-list h3{font-size:1.08rem}
.kit-list p{color:var(--ink-70);font-size:.95rem;margin-top:.2rem}
.kit-note{margin-top:24px;font-size:.9rem;color:var(--ink-70);display:flex;align-items:center;gap:.5em}
.kit-note .dot{background:var(--brand)}

/* gallery collage */
.gallery{display:grid;gap:14px;margin-top:36px;grid-template-columns:1fr 1fr}
@media(min-width:760px){.gallery{grid-template-columns:2fr 1fr 1fr;grid-auto-rows:1fr}}
.gcell{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--line);
  box-shadow:var(--shadow-sm);min-height:152px;
  transition:transform .2s ease,box-shadow .2s ease}
.gcell:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.gcell.big{grid-column:1 / -1;min-height:210px}
@media(min-width:760px){.gcell.big{grid-column:1;grid-row:1 / span 2;min-height:0}}
.gcell img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.gcell .cap{position:absolute;left:12px;bottom:11px;font-weight:700;font-size:.84rem;color:var(--ink);
  background:color-mix(in srgb,var(--surface) 84%,transparent);backdrop-filter:blur(4px);
  padding:.28em .72em;border-radius:999px;box-shadow:var(--shadow-sm)}

/* photo + caption cards */
.photocards{display:grid;gap:20px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:720px){.photocards{grid-template-columns:repeat(3,1fr)}}
.pcard{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease}
.pcard:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.pcard img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.pcard figcaption{padding:20px 22px}
.pcard figcaption h3{font-size:1.16rem}
.pcard figcaption p{margin-top:.5rem;color:var(--ink-70);font-size:.95rem}

/* exit banner (to competitions) */
.exitbanner{margin-top:38px;border-radius:22px;overflow:hidden;position:relative;
  background:linear-gradient(135deg,#F7B23E,#FBD07A);color:#3a2400;box-shadow:var(--shadow)}
.exitbanner .eb-in{padding:30px 28px;display:grid;gap:16px;align-items:center;grid-template-columns:1fr}
@media(min-width:760px){.exitbanner .eb-in{grid-template-columns:1fr auto}}
.exitbanner .tag{text-transform:uppercase;letter-spacing:.14em;font-size:.66rem;font-weight:800;color:#5a3800}
.exitbanner h3{font-family:var(--serif);font-size:1.4rem;color:#2b1c00;margin-top:.35rem}
.exitbanner p{color:#4a3000;font-size:.96rem;margin-top:.4rem;max-width:52ch}
.exitbanner .btn{background:#241a00;color:#FCE9C4}
.exitbanner .btn:hover{transform:translateY(-2px)}

/* prose blocks */
.prose{max-width:var(--readw);margin-top:22px}
.prose p{color:var(--ink-70);font-size:1.02rem}
.prose p+p{margin-top:1rem}
.callout{margin-top:22px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--brand);
  border-radius:14px;padding:16px 18px;box-shadow:var(--shadow-sm);color:var(--ink-70);font-size:.96rem;max-width:var(--readw)}
.callout b{color:var(--ink)}

/* competitions */
.comp-note{max-width:var(--readw);margin-top:20px;background:var(--surface);border:1px solid var(--line);
  border-radius:14px;padding:16px 18px;box-shadow:var(--shadow-sm);color:var(--ink-70);font-size:.95rem}
.comp-note b{color:var(--ink)}
.tablewrap{overflow-x:auto;margin-top:34px;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-sm)}
table.cal{border-collapse:collapse;width:100%;min-width:720px;font-size:.9rem;background:var(--surface)}
table.cal th,table.cal td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
table.cal thead th{background:var(--surface-2);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-50);font-weight:800;white-space:nowrap}
table.cal tbody tr:last-child td{border-bottom:0}
table.cal td.nm{font-weight:800;color:var(--brand-deep);white-space:nowrap}
table.cal td.nm small{display:block;font-weight:600;color:var(--ink-50);font-size:.78rem;white-space:normal}
.comp-cards{display:grid;gap:20px;margin-top:34px;grid-template-columns:1fr}
@media(min-width:760px){.comp-cards{grid-template-columns:1fr 1fr}}
.comp-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:24px 24px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px}
.comp-card .cc-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.comp-card h3{font-size:1.22rem;color:var(--brand-deep)}
.comp-card .cc-org{font-size:.8rem;color:var(--ink-50);font-weight:600}
.comp-card .cc-meta{display:grid;gap:8px;margin-top:4px}
.comp-card .cc-meta div{display:grid;grid-template-columns:96px 1fr;gap:10px;font-size:.9rem}
.comp-card .cc-meta dt{color:var(--ink-50);font-weight:700}
.comp-card .cc-meta dd{margin:0;color:var(--ink-70)}
.comp-card p.cc-desc{color:var(--ink-70);font-size:.94rem}
.comp-card a.cc-link{font-weight:700;font-size:.86rem;color:var(--brand);text-decoration:none;margin-top:auto}
.comp-card a.cc-link:hover{text-decoration:underline}

/* coming soon cards */
.soon-cards{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;margin-top:38px}
.soon-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:26px 24px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px;flex:1 1 300px;max-width:360px}
@media(max-width:759px){.soon-card{flex-basis:100%;max-width:none}}
.soon-card .se{font-size:2.1rem;line-height:1}
.soon-card h3{font-size:1.2rem;margin-top:6px}
.soon-card p{color:var(--ink-70);font-size:.95rem}
.soon-card .slabel{margin-top:auto;padding-top:12px;font-size:.8rem;font-weight:700;color:var(--accent-deep)}

/* responsive youtube embed */
.videoframe{position:relative;margin-top:22px;border-radius:18px;overflow:hidden;border:1px solid var(--line);
  box-shadow:var(--shadow-sm);aspect-ratio:16/9;background:#0b0b0b;max-width:820px}
.videoframe iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* named teaching method */
.method{display:grid;gap:16px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:600px){.method{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.method{grid-template-columns:repeat(5,1fr)}}
.mstep{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px 18px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:6px;transition:transform .2s ease,box-shadow .2s ease}
.mstep:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.mstep .mn{font-family:var(--serif);font-weight:700;color:var(--accent-deep);font-size:.78rem;letter-spacing:.1em}
.mstep .me{font-size:1.8rem;line-height:1}
.mstep h3{font-size:1.06rem;color:var(--brand-deep)}
.mstep p{color:var(--ink-70);font-size:.87rem}

/* benefits grid */
.benefits{display:grid;gap:14px;margin-top:36px;grid-template-columns:1fr 1fr}
@media(min-width:760px){.benefits{grid-template-columns:repeat(4,1fr)}}
.benefit{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 16px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:5px;transition:transform .2s ease,box-shadow .2s ease}
.benefit:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.benefit .be{font-size:1.5rem;line-height:1}
.benefit b{font-size:.97rem;color:var(--ink)}
.benefit span{color:var(--ink-70);font-size:.84rem}

/* tools strip */
.toolstrip{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.toolchip{display:inline-flex;align-items:center;gap:.5em;background:var(--surface);border:1px solid var(--line);
  border-radius:999px;padding:.6em 1.1em;font-weight:700;font-size:.9rem;color:var(--ink-70);box-shadow:var(--shadow-sm);
  transition:transform .2s ease,border-color .2s ease}
.toolchip:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}
.toolchip .te{font-size:1.15rem}
.toolnote{margin-top:16px;font-size:.84rem;color:var(--ink-50);max-width:var(--readw)}

/* hero rotating word */
.hero-rotate{margin-top:1.1rem;font-size:1.22rem;font-weight:600;color:var(--ink-70)}
.hero-rotate .rw{position:relative;display:inline-block;vertical-align:bottom;min-height:1.4em}
.hero-rotate .rw>span{position:absolute;left:0;top:0;opacity:0;white-space:nowrap;color:var(--accent);
  font-weight:800;font-style:italic;transition:opacity .45s ease}
.hero-rotate .rw>span.on{position:relative;opacity:1}

/* competition detail facts */
.factgrid{display:grid;gap:12px;margin-top:26px;grid-template-columns:1fr}
@media(min-width:620px){.factgrid{grid-template-columns:1fr 1fr}}
.fact{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-sm)}
.fact dt{font-size:.64rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-50)}
.fact dd{margin:4px 0 0;color:var(--ink);font-weight:600;font-size:.96rem}
.fact dd a{color:var(--brand);text-decoration:none;font-weight:700}
.fact dd a:hover{text-decoration:underline}
.regbadge{display:inline-flex;align-items:center;gap:.4em;font-size:.72rem;font-weight:800;letter-spacing:.05em;
  text-transform:uppercase;padding:.34em .8em;border-radius:999px;margin-top:2px}
.regbadge.open{background:var(--accent-tint);color:var(--accent-deep)}
.regbadge.soon{background:var(--brand-tint);color:var(--brand-deep)}
.regbadge.closed{background:color-mix(in srgb,var(--stop,#C0492F) 14%,var(--surface));color:#b0492f}
.complist{display:grid;gap:16px;margin-top:34px;grid-template-columns:1fr}
@media(min-width:720px){.complist{grid-template-columns:1fr 1fr}}
.compentry{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:22px 22px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px;transition:transform .2s ease,box-shadow .2s ease}
.compentry:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}
.compentry .ce-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.compentry h3{font-size:1.24rem;color:var(--brand-deep)}
.compentry .ce-org{font-size:.8rem;color:var(--ink-50);font-weight:600}
.compentry p{color:var(--ink-70);font-size:.92rem}
.compentry .ce-link{margin-top:auto;font-weight:700;font-size:.9rem;color:var(--brand);text-decoration:none;padding-top:6px}
.compentry .ce-link:hover{text-decoration:underline}

/* faq */
.faq{margin-top:34px;max-width:760px;display:grid;gap:12px}
details.q{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:4px 6px;box-shadow:var(--shadow-sm)}
details.q summary{cursor:pointer;list-style:none;padding:16px 18px;font-weight:700;font-size:1.04rem;
  display:flex;align-items:center;gap:12px}
details.q summary::-webkit-details-marker{display:none}
details.q summary .pl{margin-left:auto;color:var(--brand);font-size:1.4rem;line-height:1;transition:transform .2s;font-family:var(--sans)}
details.q[open] summary .pl{transform:rotate(45deg)}
details.q .a{padding:0 18px 18px;color:var(--ink-70);font-size:.98rem}

/* about */
.about-in{display:grid;gap:30px;grid-template-columns:1fr}
@media(min-width:820px){.about-in{grid-template-columns:1.1fr .9fr;align-items:center}}
.about-copy p+p{margin-top:1rem}
.about-copy .vlist{list-style:none;padding:0;margin:1.3rem 0 0;display:grid;gap:12px}
.about-copy .vlist li{display:flex;gap:12px;align-items:flex-start;color:var(--ink-70);font-size:.98rem}
.about-copy .vlist svg{width:22px;height:22px;flex:none;color:var(--brand);margin-top:1px}
.about-badge{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:32px 30px;
  box-shadow:var(--shadow-sm);text-align:center}
.about-badge .biglogo{width:230px;max-width:80%;height:auto;margin:0 auto 6px}
.about-badge b{font-family:var(--serif);font-size:1.2rem;display:block;margin-top:8px}
.about-badge span{font-size:.85rem;color:var(--ink-50);display:block;margin-top:2px}
.about-badge .ssm{margin-top:16px;font-size:.78rem;color:var(--ink-50);border-top:1px solid var(--line);padding-top:14px}

/* contact */
.contact-grid{display:grid;gap:24px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:820px){.contact-grid{grid-template-columns:1fr 1fr}}
.contact-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px 26px;
  box-shadow:var(--shadow-sm)}
.contact-card h3{font-size:1.2rem}
.contact-list{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:14px}
.contact-list li{display:flex;gap:12px;align-items:flex-start;color:var(--ink-70);font-size:.98rem}
.contact-list .ci{font-size:1.3rem;line-height:1.2;flex:none}
.contact-list b{color:var(--ink);display:block;font-weight:700}
.mapbox{margin-top:18px;border-radius:16px;overflow:hidden;border:1px solid var(--line);
  aspect-ratio:16/10;display:grid;place-items:center;text-align:center;padding:20px;
  background:radial-gradient(120% 120% at 30% 18%,var(--brand-tint),var(--surface));color:var(--ink-70)}
.mapbox .pin{font-size:2.4rem}

/* contact / final */
.final{text-align:center;background:linear-gradient(150deg,#33BC81 0%,#1E8F5E 100%)}
.final,.final h2{color:#F3EFE2}
.final h2{font-size:clamp(1.9rem,5vw,2.8rem);color:#FCF8EE;max-width:18ch;margin:0 auto}
.final p{color:#CBDBD0;margin:1rem auto 0;max-width:46ch}
.final .btn-wa{margin-top:1.9rem;font-size:1.12rem;padding:1em 1.8em}
.final .cways{margin-top:1.6rem;display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:center;
  font-size:.92rem;color:#CBDBD0}
.final .cways a{color:#F3EFE2;text-decoration:none;font-weight:600}
.final .cways b{color:var(--accent)}

footer{background:var(--bg-2);color:var(--ink-70);font-size:.9rem;padding:40px 0}
.foot-in{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:700px){.foot-in{grid-template-columns:1.4fr 1fr 1fr}}
.foot-brand{display:flex;gap:12px;align-items:center}
.foot-brand .logomark{width:42px;height:42px}
.foot-brand b{font-family:var(--serif);color:var(--ink);font-size:1.1rem;display:block;line-height:1.1}
.foot-brand small{color:var(--ink-50);font-size:.78rem}
footer h4{font-family:var(--sans);text-transform:uppercase;letter-spacing:.12em;font-size:.7rem;
  color:var(--ink-50);margin:0 0 10px}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:7px}
footer a{color:var(--ink-70);text-decoration:none}
footer a:hover{color:var(--brand)}
.foot-copy{border-top:1px solid var(--line);margin-top:26px;padding-top:18px;font-size:.8rem;color:var(--ink-50)}

/* micro-interactions */
.brand .logomark{transition:transform .25s ease}
.brand:hover .logomark{transform:scale(1.08) rotate(-5deg)}
.card{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}
.card .ic{transition:transform .25s ease,background .25s ease,color .25s ease}
.card:hover .ic{transform:scale(1.08) rotate(-4deg);background:var(--brand);color:#fff}
.prog{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.prog:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.prog:not(.feat):hover{border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}
.prog .emoji{transition:transform .25s ease;display:inline-block}
.prog:hover .emoji{transform:scale(1.18) rotate(-6deg)}
.plink{transition:color .2s ease,transform .2s ease}
.plink:hover{color:var(--brand-deep);transform:translateX(3px)}
.chips li{transition:background .2s ease,border-color .2s ease,transform .2s ease}
.chips li:hover{background:#fff;border-color:var(--brand);transform:translateY(-2px)}
details.q summary{transition:color .2s ease}
details.q summary:hover{color:var(--brand)}
.langtog button{transition:color .15s ease,background .15s ease}
.langtog button:not([aria-pressed="true"]):hover{color:var(--brand)}
nav.mainnav a{transition:color .18s ease,border-color .18s ease}
footer a{transition:color .18s ease}

.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important}
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  .card:hover,.prog:hover,.btn-wa:hover,.brand:hover .logomark,.card:hover .ic,.prog:hover .emoji,.chips li:hover,.plink:hover{transform:none}
}

/* ============ v3: photo frames ============ */
.frames{display:grid;gap:20px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:560px){.frames{grid-template-columns:1fr 1fr}}
@media(min-width:940px){.frames{grid-template-columns:repeat(4,1fr)}}
.frame{margin:0;background:#fff;border:1px solid var(--line);border-radius:20px;padding:12px 12px 14px;
  box-shadow:var(--shadow-sm);position:relative;transition:transform .25s ease,box-shadow .25s ease}
.frame::before{content:"";position:absolute;top:9px;left:9px;right:9px;bottom:9px;border:1px solid var(--brand-tint);
  border-radius:14px;pointer-events:none;z-index:1}
.frame img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:13px;display:block}
.frame.tall img{aspect-ratio:3/4}
.frame figcaption{margin-top:10px;text-align:center;font-weight:700;font-size:.92rem;color:var(--ink)}
.frame figcaption span{display:block;font-weight:600;font-size:.78rem;color:var(--ink-50)}
.frame:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:var(--shadow)}
.frame .tape{position:absolute;top:-9px;left:50%;transform:translateX(-50%) rotate(-3deg);width:74px;height:20px;
  background:color-mix(in srgb,var(--accent) 55%,#fff);opacity:.85;border-radius:3px;z-index:2;
  box-shadow:0 2px 6px -3px rgba(0,0,0,.3)}
.framecap{margin-top:16px;text-align:center;font-size:.86rem;color:var(--ink-50)}

/* ============ v3: richer motion ============ */
@keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-13px)}}
@keyframes floatyB{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-9px) rotate(5deg)}}
@keyframes heroshift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes sheen{to{background-position:200% 0}}
.stagger-child{opacity:0}
.stagger-child.in{animation:rise .62s cubic-bezier(.22,.9,.3,1) both}
.feature-card{animation:floaty 6.5s ease-in-out infinite}
.scene{animation:floaty 8s ease-in-out infinite}
.hero{background-size:180% 180%;animation:heroshift 18s ease-in-out infinite}
.final{background-size:180% 180%;animation:heroshift 16s ease-in-out infinite}
/* stronger hovers */
.card:hover{transform:translateY(-7px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--brand) 45%,var(--line))}
.prog:hover,.splitcard:hover,.pnode:hover,.tier:hover,.benefit:hover,.mstep:hover,.soon-card:hover,.compentry:hover,.pcard:hover,.comp-card:hover{transform:translateY(-7px)}
.card:hover .ic{transform:scale(1.12) rotate(-6deg)}
.btn-wa:hover{transform:translateY(-3px) scale(1.04)}
/* animated accent underline on section headings */
.sec-head h2{position:relative}
/* decorative floating dots layer */
.floaties{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.floaties i{position:absolute;border-radius:50%;opacity:.5;animation:floaty 7s ease-in-out infinite}
.floaties i:nth-child(2){animation:floatyB 9s ease-in-out infinite}
.floaties i:nth-child(3){animation:floaty 8s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){
  .stagger-child{opacity:1;animation:none}
  .feature-card,.scene,.hero,.final,.floaties i{animation:none}
}
/* ============ v3: growth roadmap ============ */
.roadmap{margin-top:36px;position:relative}
.roadmap-svg{display:none}
@media(min-width:760px){
  .roadmap-svg{display:block;width:100%;height:auto;overflow:visible}
  .roadmap-stack{display:none}
}
.roadmap-svg .rlabel{font-family:var(--serif);font-weight:700;fill:var(--brand-deep)}
.roadmap-svg .rnum{font-family:var(--serif);font-weight:800;fill:#fff}
.roadmap-svg .rsmall{font-family:var(--sans);font-weight:800;fill:var(--ink-50);letter-spacing:.04em}
@keyframes cardrive{0%,100%{transform:translateX(0) translateY(0)}50%{transform:translateX(10px) translateY(-2px)}}
.roadmap-svg .car{animation:cardrive 2.4s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.roadmap-svg .cloud{animation:bob 6s ease-in-out infinite}
.roadmap-stack{list-style:none;margin:26px 0 0;padding:0;position:relative;display:grid;gap:18px}
.roadmap-stack::before{content:"";position:absolute;left:26px;top:14px;bottom:14px;width:4px;border-radius:4px;
  background:repeating-linear-gradient(var(--brand) 0 11px,transparent 11px 20px)}
.rstop{position:relative;padding-left:66px}
.rstop .rp{position:absolute;left:8px;top:0;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;
  color:#fff;font-weight:800;font-family:var(--serif);border:3px solid var(--bg);z-index:1;box-shadow:var(--shadow-sm)}
.rstop h3{font-size:1.14rem;color:var(--brand-deep)}
.rstop h3 .re{margin-right:.35em}
.rstop p{font-size:.94rem;color:var(--ink-70);margin-top:2px}
.rstop.c1 .rp{background:#43B77E}.rstop.c2 .rp{background:#4C86D6}.rstop.c3 .rp{background:#A585E0}
.rstop.c4 .rp{background:#E8894F}.rstop.c5 .rp{background:#F5A623}
.roadnote{margin-top:24px;text-align:center;font-size:.94rem;color:var(--ink-70)}
.roadnote b{color:var(--brand-deep)}
/* ============ v3: mobile nav (hamburger) ============ */
.navtoggle{display:none;order:3;margin-left:2px;background:transparent;border:1.5px solid var(--line);
  border-radius:12px;width:44px;height:40px;align-items:center;justify-content:center;cursor:pointer;color:var(--ink)}
.navtoggle svg{width:22px;height:22px}
.navtoggle:hover{border-color:var(--brand);color:var(--brand)}
@media(max-width:999px){
  .navtoggle{display:inline-flex}
  header.bar.open nav.mainnav{display:flex;flex-direction:column;position:absolute;top:100%;left:0;right:0;
    margin:0;padding:10px 22px 16px;gap:2px;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow)}
  header.bar.open nav.mainnav a{padding:13px 6px;border-bottom:1px solid var(--line);font-size:1.05rem;border-radius:0}
  header.bar.open nav.mainnav a:last-child{border-bottom:0}
}
/* fix: hide roadmap stack on desktop (override later base rule) */
@media(min-width:760px){.roadmap-stack{display:none}}

/* ============ v4: image-led sections ============ */
/* Kunoa Loop as big-number process */
.loop{display:grid;gap:26px;margin-top:42px;grid-template-columns:1fr}
@media(min-width:600px){.loop{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.loop{grid-template-columns:repeat(5,1fr)}}
.lstep{position:relative;text-align:center;padding:0 8px}
.lstep .bignum{font-family:var(--serif);font-weight:800;font-size:3.6rem;line-height:.9;color:var(--brand);opacity:.16;display:block}
.lstep .lic{font-size:2.1rem;display:block;margin-top:-16px;position:relative;z-index:1}
.lstep h3{font-size:1.16rem;margin-top:10px;color:var(--brand-deep)}
.lstep p{font-size:.9rem;color:var(--ink-70);margin-top:4px}
@media(min-width:1000px){.lstep:not(:last-child)::after{content:"\2192";position:absolute;top:40px;right:-12px;color:var(--accent);font-weight:800;font-size:1.3rem}}
/* benefits over photo */
.benefitband{position:relative;border-radius:24px;overflow:hidden;margin-top:40px;box-shadow:var(--shadow);isolation:isolate}
.benefitband>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.benefitband::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(155deg,rgba(18,84,64,.85),rgba(12,58,48,.92))}
.bgrid{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:30px 16px;padding:38px 22px}
@media(min-width:760px){.bgrid{grid-template-columns:repeat(4,1fr);padding:50px 42px;gap:44px 24px}}
.bitem{text-align:center;color:#fff}
.bitem svg{width:46px;height:46px;stroke:#fff;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s ease}
.bitem:hover svg{transform:translateY(-4px) scale(1.08)}
.bitem b{display:block;margin-top:12px;font-size:1rem;color:#fff;font-weight:700}
.bitem span{display:block;font-size:.82rem;color:rgba(255,255,255,.82);margin-top:2px}
/* photo-led lab cards */
.labgrid{display:grid;gap:20px;margin-top:38px;grid-template-columns:1fr}
@media(min-width:720px){.labgrid{grid-template-columns:repeat(3,1fr)}}
.labcard{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease}
.labcard:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.labcard.feat{border-color:var(--accent)}
.labcard .lc-img{position:relative;aspect-ratio:16/10;overflow:hidden}
.labcard .lc-img img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.labcard:hover .lc-img img{transform:scale(1.05)}
.labcard.soon .lc-img img{filter:saturate(.65) brightness(.95)}
.labcard .lc-pill{position:absolute;top:12px;left:12px;z-index:2}
.labcard .lc-body{padding:20px 22px;display:flex;flex-direction:column;gap:8px;flex:1}
.labcard h3{font-size:1.3rem}
.labcard p{color:var(--ink-70);font-size:.96rem}
.labcard .plink{margin-top:auto;font-weight:700;color:var(--brand);text-decoration:none;padding-top:4px}
.labcard .plink:hover{text-decoration:underline}
/* ============ v4: Why Kunoa (3 image-led cards) ============ */
.whygrid{display:grid;gap:20px;margin-top:42px;grid-template-columns:1fr}
@media(min-width:720px){.whygrid{grid-template-columns:repeat(3,1fr)}}
.whycard{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:34px 26px;text-align:center;box-shadow:var(--shadow-sm);transition:transform .2s ease,box-shadow .2s ease}
.whycard:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.whycard .wic{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;margin:0 auto 18px;color:#fff;box-shadow:var(--shadow-sm);transition:transform .25s ease}
.whycard:hover .wic{transform:scale(1.08) rotate(-5deg)}
.whycard .wic svg{width:40px;height:40px;stroke:#fff;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.whycard.w1 .wic{background:#2FB37A}.whycard.w2 .wic{background:#4C86D6}.whycard.w3 .wic{background:#E8894F}
.whycard h3{font-size:1.34rem}
.whycard p{color:var(--ink-70);margin-top:10px;font-size:1.02rem}
/* ============ v4: course detail (banner + thumbs) ============ */
.coursebanner{position:relative;border-radius:24px;overflow:hidden;margin-top:8px;box-shadow:var(--shadow)}
.coursebanner>img{width:100%;aspect-ratio:2/1;object-fit:cover;display:block}
@media(min-width:760px){.coursebanner>img{aspect-ratio:21/9}}
.coursebanner .cb-badge{position:absolute;left:18px;top:16px;font-family:var(--serif);font-weight:800;font-size:1.05rem;color:#fff;background:rgba(20,80,60,.72);backdrop-filter:blur(4px);padding:.32em .95em;border-radius:999px}
.thumbs{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:14px}
@media(min-width:560px){.thumbs{grid-template-columns:repeat(4,1fr)}}
.thumbs img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px;border:1px solid var(--line);box-shadow:var(--shadow-sm);transition:transform .2s ease}
.thumbs img:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.learnlist{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:12px;max-width:var(--readw)}
.learnlist li{display:flex;gap:12px;align-items:flex-start;color:var(--ink-70);font-size:1rem}
.learnlist li::before{content:"";flex:none;width:10px;height:10px;margin-top:9px;border-radius:50%;background:var(--brand)}
.learnlist b{color:var(--ink)}
/* --- Footer contact mini-map (v8) --- */
.foot-map{
  margin-top:14px;
  max-width:260px;
  border-radius:12px;
  overflow:hidden;
  border:1px solid color-mix(in srgb,#ffffff 16%,transparent);
}
.foot-map iframe{
  display:block;
  width:100%;
  height:150px;
  border:0;
}
/* --- Contact-page embedded map (v11) --- */
.contact-map{border-radius:14px;overflow:hidden;border:1px solid var(--line);margin-bottom:16px}
.contact-map iframe{display:block;width:100%;height:300px;border:0}
/* competition entry emoji badge */
.ce-emoji{font-size:1.5rem;line-height:1;margin-right:.1rem}
/* --- Careers role modes (part-time / full-time) v11 --- */
.role-modes{display:grid;gap:14px;margin-top:18px;grid-template-columns:1fr}
@media(min-width:640px){.role-modes{grid-template-columns:1fr 1fr}}
.rmode{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow-sm)}
.rmode .rm-tag{display:inline-block;font-family:var(--sans);font-weight:800;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;background:var(--brand-tint);color:var(--brand-deep);padding:.32em .72em;border-radius:999px;margin-bottom:.5rem}
.rmode p{color:var(--ink-70);font-size:.95rem}
/* --- Competition card banners (v12) --- */
.compentry{overflow:hidden}
.ce-banner{margin:-22px -22px 16px;height:130px;position:relative;background:var(--bg-2)}
.ce-banner img{width:100%;height:100%;object-fit:cover;display:block}
.ce-banner::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,60,50,0) 40%,rgba(15,60,50,.28))}
.ce-badge{position:absolute;left:14px;bottom:12px;z-index:2;width:46px;height:46px;border-radius:13px;background:var(--surface);display:grid;place-items:center;font-size:1.55rem;box-shadow:var(--shadow-sm)}
/* --- Course tier cards (v13) --- */
.tiergrid{display:grid;gap:20px;margin-top:34px;grid-template-columns:1fr}
@media(min-width:560px){.tiergrid{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.tiergrid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:560px) and (max-width:999px){.tiergrid>*:last-child:nth-child(odd){grid-column:span 2;justify-self:center;width:calc(50% - 10px)}}
.tiercard{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--tier);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-sm);text-decoration:none;color:var(--ink);transition:transform .15s ease,box-shadow .15s ease}
.tiercard:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.tc-img{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--bg-2)}
.tc-img img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.tiercard:hover .tc-img img{transform:scale(1.05)}
.tc-age{position:absolute;left:12px;top:12px;background:var(--tier);color:#fff;font-family:var(--sans);font-weight:800;font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;padding:.34em .72em;border-radius:999px;box-shadow:0 4px 10px -4px rgba(0,0,0,.35)}
.tc-body{padding:15px 17px 17px;display:flex;flex-direction:column;flex:1}
.tc-name{font-family:var(--serif);line-height:1.02;color:var(--tier)}
.tc-name .rob{display:block;font-size:.92rem;letter-spacing:.16em;font-weight:700;opacity:.9}
.tc-name .suf{display:block;font-size:1.5rem;letter-spacing:.01em;font-weight:700}
.tc-zh{font-size:.92rem;color:var(--ink-70);margin-top:3px}
.tc-tag{font-size:.9rem;color:var(--ink);margin-top:9px;line-height:1.5}
.tc-meta{font-size:.79rem;color:var(--ink-50);margin-top:9px;line-height:1.5}
.tc-link{margin-top:auto;padding-top:11px;font-weight:700;font-size:.87rem;color:var(--tier)}
/* --- Course sub-page bits (v13) --- */
.ctags{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.ctags span{background:var(--brand-tint);color:var(--brand-deep);font-size:.82rem;font-weight:600;padding:.34em .82em;border-radius:999px}
.outcomes{list-style:none;padding:0;margin:12px 0;display:grid;gap:11px}
.outcomes li{position:relative;padding-left:30px;color:var(--ink-70)}
.outcomes li::before{content:"\2713";position:absolute;left:0;top:0;color:var(--brand);font-weight:800}
.tiernav{display:flex;justify-content:space-between;gap:14px;margin-top:34px;flex-wrap:wrap}
.tiernav a{text-decoration:none;color:var(--brand-deep);font-weight:700;font-size:.92rem;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 16px}
.tiernav a:hover{border-color:var(--brand)}
/* tier-card Chinese name: hide on English UI, show only on Chinese UI (v14) */
.tc-zh{display:none;font-size:.92rem;color:var(--ink-70);margin-top:3px}
:root[data-lang="zh"] .tc-zh,[data-lang="zh"] .tc-zh{display:block}
/* --- Product kit showcase (v15) --- */
.kitgrid{display:grid;gap:18px;margin-top:28px;grid-template-columns:1fr;max-width:860px;margin-left:auto;margin-right:auto}
@media(min-width:640px){.kitgrid{grid-template-columns:1fr 1fr}}
.kititem{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-sm);display:flex;flex-direction:column}
.kititem .ki-img{flex:0 0 190px;height:190px;overflow:hidden;background:#fff;display:flex;align-items:center;justify-content:center;padding:12px;border-bottom:1px solid var(--line)}
.kititem .ki-img img{max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain}
.kititem .ki-body{padding:14px 16px 16px;display:flex;flex-direction:column;flex:1}
.kititem h3{font-size:1.1rem}
.kititem .ki-sub{font-size:.85rem;color:var(--ink-50);margin-top:2px}
.kititem .ki-price{font-weight:800;color:var(--brand-deep);margin-top:8px;font-size:1.05rem}
.kititem .ki-price small{font-weight:600;color:var(--ink-50);font-size:.72rem}
.kititem p{color:var(--ink-70);font-size:.92rem;margin-top:9px}
.kititem .ki-note{font-size:.78rem;color:var(--ink-50);margin-top:auto;padding-top:12px}
/* small kit image strip on course pages */
.kitstrip{display:flex;gap:14px;flex-wrap:wrap;margin:16px 0 2px}
.kitstrip figure{margin:0;width:140px;text-align:center}
.kitstrip img{width:140px;height:108px;object-fit:contain;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px}
.kitstrip figcaption{font-size:.78rem;color:var(--ink-70);margin-top:6px}
/* --- Robo Master module cards (v17) --- */
.modgrid{display:grid;gap:16px;margin-top:22px;grid-template-columns:1fr}
@media(min-width:640px){.modgrid{grid-template-columns:1fr 1fr}}
.modcard{background:var(--surface);border:1px solid var(--line);border-left:4px solid #EE9F22;border-radius:14px;padding:18px 20px;box-shadow:var(--shadow-sm)}
.modcard .me{font-size:1.7rem;line-height:1}
.modcard h3{font-size:1.12rem;margin-top:8px}
.modcard p{color:var(--ink-70);font-size:.92rem;margin-top:8px;line-height:1.55}
/* --- Growth roadmap car interaction (v19) --- */
#rmcar{transition:transform .7s cubic-bezier(.34,.08,.2,1)}
.roadmap-svg .rmstop{cursor:pointer}
.roadmap-svg .rmstop:focus{outline:none}
.roadmap-svg .rmstop:hover circle:not(.rmhit),.roadmap-svg .rmstop:focus circle:not(.rmhit){filter:drop-shadow(0 3px 7px rgba(15,60,50,.35))}
.roadmap-svg .rmstop:hover .rlabel,.roadmap-svg .rmstop:focus .rlabel{fill:var(--accent-deep)}
.rm-pop{position:absolute;left:0;top:0;z-index:5;transform:translate(-50%,-124%) scale(.96);transform-origin:bottom center;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);
  padding:12px 15px;width:220px;max-width:72vw;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.rm-pop.on{opacity:1;transform:translate(-50%,-134%) scale(1)}
.rm-pop .rp-e{font-size:1.45rem;line-height:1;display:block;margin-bottom:4px}
.rm-pop b{display:block;font-family:var(--serif);color:var(--brand-deep);font-size:1.03rem;line-height:1.2}
.rm-pop span:last-child{display:block;color:var(--ink-70);font-size:.85rem;margin-top:4px;line-height:1.5}
.rm-pop::after{content:"";position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);border:9px solid transparent;border-top-color:var(--surface)}
/* --- Home four-level tier cards (v20) --- */
.htiers{display:grid;gap:14px;margin-top:32px;grid-template-columns:1fr}
@media(min-width:560px){.htiers{grid-template-columns:1fr 1fr}}
@media(min-width:980px){.htiers{grid-template-columns:repeat(4,1fr)}}
.htier{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--tier);border-radius:16px;padding:16px 18px 17px;box-shadow:var(--shadow-sm);transition:transform .15s ease,box-shadow .15s ease}
.htier:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.htier .ht-badge{display:inline-block;background:var(--tier);color:#fff;font-family:var(--sans);font-weight:800;font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;padding:.32em .62em;border-radius:999px}
.htier .ht-name{display:block;font-family:var(--serif);color:var(--tier);margin-top:11px;line-height:1.04}
.htier .ht-name .rob{display:block;font-size:.76rem;letter-spacing:.16em;font-weight:700;opacity:.9}
.htier .ht-name .suf{display:block;font-size:1.24rem;font-weight:700}
.htier .tc-zh{margin-top:3px}
.htier .ht-tag{display:block;color:var(--ink-70);font-size:.85rem;margin-top:9px;line-height:1.5}
.htier .ht-more{display:block;margin-top:auto;padding-top:11px;color:var(--tier);font-weight:700;font-size:.83rem}
/* hero: 两张课程卡并排，跨满整个 hero 栅格 */
.fc-row{grid-column:1/-1;display:grid;gap:18px;grid-template-columns:1fr;margin-top:.6rem}
@media(min-width:760px){.fc-row{grid-template-columns:1fr 1fr;gap:22px}}
.fc-row .feature-card{margin-top:0;max-width:none;display:flex;flex-direction:column}
.fc-row .feature-card .fc-cta{margin-top:auto;padding-top:1rem}
.fc-row .feature-card:nth-child(2){animation-delay:-3.2s}
