/* ===== SingHua Elementary School 興華國小 — site styles =====
   SingHua build — crest: a smiling child with a heart at its center, drawn
   in red between the characters 興 and 華, inside a flower-shaped outline.
   A countryside school on the edge of Erlin Township, Changhua.
   Core idea: LOVE — thankfuL, cOnfident, Vigorous, creativE (感恩・自信・活力・創新).
   Palette: crest red (#D42A2A, toned to #A51E24 for text) + a deep navy taken
   from the blue running track and blue columns of the activity center; card
   accents and the wave line borrow the campus track orange, topiary green and gold.
   Type: Playfair Display + Inter  |  20/23 px body  (copied from yangming-jhs)
   Build: real campus photos, wave-edged heroes. Base template: nanjen.
   ================================================================ */
:root{
  --brick:#D42A2A;--brick-deep:#A51E24;--brick-soft:#FDECEC;
  --green:#2F6FC0;--green-deep:#1B3570;--green-soft:#EAF0FA;
  --ink:#232530;--ink-soft:#545967;--line:#ebe4e2;--cream:#FBF7F3;
  --b1:#C7232B;--b2:#2F6FC0;--b3:#142A5C;
  --shadow:0 14px 38px -16px rgba(27,53,112,.30);
  --shadow-sm:0 6px 16px -6px rgba(27,53,112,.20);
  --max:1080px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html{scroll-behavior:smooth;}
body{background:#fff;color:var(--ink);font-family:'Inter','PingFang TC','Apple LiGothic Medium','Microsoft JhengHei',sans-serif;font-size:20px;line-height:1.65;-webkit-font-smoothing:antialiased;}
@media(min-width:720px){body{font-size:23px;}}
img{max-width:100%;display:block;}
a{color:var(--brick-deep);text-decoration:none;transition:color .2s;}
a:hover{color:var(--green-deep);}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px;}
.serif{font-family:'Playfair Display','PingFang TC',serif;}

/* ===== Topbar ===== */
.tb{background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);padding:11px 0;position:sticky;top:0;z-index:50;backdrop-filter:blur(8px);}
.tb__inner{max-width:var(--max);margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between;gap:18px;}
.tb__brand{display:flex;align-items:center;gap:12px;text-decoration:none;}
.tb__logo{width:46px;height:46px;object-fit:contain;flex-shrink:0;display:block;}
.tb__name{font-family:'Playfair Display','PingFang TC',serif;font-size:19px;font-weight:700;color:var(--brick-deep);line-height:1.1;}
.tb__name small{display:block;font-family:'PingFang TC',sans-serif;font-size:14px;font-weight:500;color:var(--ink-soft);margin-top:3px;letter-spacing:.04em;}
.tb__nav{display:flex;gap:22px;flex-wrap:wrap;justify-content:flex-end;}
.tb__nav a{color:var(--ink);font-size:17px;font-weight:500;letter-spacing:.03em;}
.tb__nav a:hover{color:var(--brick);}
.tb__nav a.is-active{color:var(--brick);font-weight:700;}
@media(max-width:640px){.tb__inner{flex-direction:column;align-items:flex-start;gap:10px;}.tb__nav{gap:16px;justify-content:flex-start;}}

/* ===== Color hero (photo) ===== */
.chero{position:relative;overflow:hidden;min-height:300px;display:flex;align-items:flex-end;color:#fff;
  background:linear-gradient(165deg,var(--b1,#C7232B),var(--b2,#2F6FC0) 54%,var(--b3,#142A5C));}
@media(min-width:720px){.chero{min-height:392px;}}
.chero--photo{background:var(--photo) var(--photo-pos,50% 50%)/cover no-repeat;}
/* wave edge: white wave + a line in campus colors (crest red, track orange, gold, topiary green, track blue) */
.chero__wave{position:absolute;left:0;right:0;bottom:-1px;height:64px;z-index:2;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='w' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23D42A2A'/%3E%3Cstop offset='.27' stop-color='%23EB7A2E'/%3E%3Cstop offset='.5' stop-color='%23F2B705'/%3E%3Cstop offset='.74' stop-color='%233C9A4A'/%3E%3Cstop offset='1' stop-color='%232F6FC0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='%23ffffff' d='M0,58 C220,92 470,18 720,40 C970,62 1230,96 1440,52 L1440,90 L0,90 Z'/%3E%3Cpath fill='none' stroke='url(%23w)' stroke-width='7' d='M0,58 C220,92 470,18 720,40 C970,62 1230,96 1440,52'/%3E%3C/svg%3E") bottom/100% 100% no-repeat;}
@media(min-width:720px){.chero__wave{height:92px;}}
/* taller hero on wide screens so a landscape photo keeps its subject, not just sky */
@media(min-width:720px){.chero--photo{min-height:460px;}}
@media(min-width:1000px){.chero--photo{min-height:520px;}}
.chero::before,.chero::after{content:"";position:absolute;border-radius:50%;filter:blur(38px);pointer-events:none;z-index:0;background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.82),transparent 70%);}
.chero::before{width:320px;height:320px;left:-70px;top:-90px;opacity:.5;animation:heroOrb 15s ease-in-out infinite,heroGlow 7s ease-in-out infinite;}
.chero::after{width:240px;height:240px;right:7%;bottom:-30px;opacity:.4;animation:heroOrb 19s ease-in-out infinite reverse,heroGlow 9s ease-in-out infinite;}
/* photo heroes: keep the photo clean — no glow orbs over it */
.chero--photo::before,.chero--photo::after{display:none;}
.chero__fx{position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.18) 50%,transparent 68%);background-size:240% 100%;animation:heroSweep 6.5s linear infinite;}
.chero__inner{position:relative;z-index:3;max-width:var(--max);margin:0 auto;width:100%;padding:0 24px 78px;}
@media(min-width:720px){.chero__inner{padding-bottom:104px;}}
.chero__inner>*{opacity:0;transform:translateY(22px);animation:bandUp .9s cubic-bezier(.2,.7,.2,1) forwards;}
.chero__inner h1{animation-delay:.12s;}
.chero__inner .h1-zh{animation-delay:.26s;}
.chero .eyebrow{display:inline-block;font-size:13px;letter-spacing:.26em;text-transform:uppercase;font-weight:700;color:#fff;background:rgba(0,0,0,.38);border:1px solid rgba(255,255,255,.45);border-radius:99px;padding:5px 14px;margin-bottom:12px;text-shadow:0 1px 3px rgba(0,0,0,.6);}
.chero h1{font-family:'Playfair Display','PingFang TC',serif;font-size:clamp(34px,6vw,58px);font-weight:800;line-height:1.05;text-shadow:0 2px 18px rgba(0,0,0,.7),0 1px 4px rgba(0,0,0,.75);-webkit-text-stroke:3px rgba(0,0,0,.75);paint-order:stroke fill;}
.chero .h1-zh{font-family:'PingFang TC',sans-serif;font-size:clamp(18px,2.2vw,24px);font-weight:600;margin-top:8px;color:rgba(255,255,255,.96);text-shadow:0 2px 18px rgba(0,0,0,.7),0 1px 4px rgba(0,0,0,.75);-webkit-text-stroke:1.6px rgba(0,0,0,.75);paint-order:stroke fill;}
.scrollcue{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);z-index:4;color:var(--green-deep);font-size:26px;opacity:.9;animation:bob 1.8s ease-in-out infinite;}
@keyframes heroOrb{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(34px,-26px) scale(1.18);}}
@keyframes heroGlow{0%,100%{opacity:.36;}50%{opacity:.6;}}
@keyframes heroSweep{0%{background-position:130% 0;}100%{background-position:-130% 0;}}
@keyframes bandUp{to{opacity:1;transform:none;}}
@keyframes bob{0%,100%{transform:translate(-50%,0);}50%{transform:translate(-50%,8px);}}
@media(prefers-reduced-motion:reduce){.chero::before,.chero::after,.chero__fx,.scrollcue{animation:none;}.chero__inner>*{animation:none;opacity:1;transform:none;}}

/* ===== Sections ===== */
section{padding:52px 0;border-bottom:1px solid var(--line);}
@media(min-width:720px){section{padding:76px 0;}}
section:last-of-type{border-bottom:none;}
.sec__no{font-family:'Playfair Display',serif;color:var(--brick);font-size:21px;font-weight:700;letter-spacing:5px;}
@media(min-width:720px){.sec__no{font-size:24px;}}
.sec__title{font-family:'Playfair Display',serif;font-size:40px;font-weight:700;color:var(--green-deep);line-height:1.15;margin-top:6px;letter-spacing:.5px;}
@media(min-width:720px){.sec__title{font-size:56px;}}
.sec__title-zh{font-size:20px;color:var(--ink-soft);font-weight:500;margin-top:10px;letter-spacing:1px;}
@media(min-width:720px){.sec__title-zh{font-size:24px;}}
.sec__rule{width:92px;height:6px;background:var(--brick);border-radius:3px;margin:20px 0 34px;}

/* ===== lead / body / quote ===== */
.lead{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;color:var(--green-deep);line-height:1.4;}
@media(min-width:720px){.lead{font-size:34px;}}
.lead-zh{margin-top:14px;font-size:19px;color:var(--ink-soft);font-weight:500;line-height:1.65;}
@media(min-width:720px){.lead-zh{font-size:22px;}}
.body p{margin-top:16px;font-size:20px;line-height:1.78;}
@media(min-width:720px){.body p{font-size:22px;}}
.body .zh{color:var(--ink-soft);font-size:18px;line-height:1.7;}
@media(min-width:720px){.body .zh{font-size:20px;}}
.body strong{color:var(--brick-deep);font-weight:700;}
.quote{margin-top:32px;background:var(--brick-soft);border-left:6px solid var(--brick);padding:24px 28px;border-radius:0 12px 12px 0;}
.quote__text{font-family:'Playfair Display',serif;font-size:25px;font-weight:700;color:var(--green-deep);line-height:1.4;font-style:italic;}
@media(min-width:720px){.quote__text{font-size:30px;}}
.quote__zh{font-size:17px;color:var(--ink-soft);margin-top:10px;line-height:1.6;}
@media(min-width:720px){.quote__zh{font-size:20px;}}

/* ===== Signature colorful cards (shared hover fx) ===== */
.lcard,.pillar,.factcard{position:relative;transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease;}
:where(.lcard,.pillar,.factcard,.club,.topic):nth-child(6n+1){--accent:#D42A2A;}
:where(.lcard,.pillar,.factcard,.club,.topic):nth-child(6n+2){--accent:#2F6FC0;}
:where(.lcard,.pillar,.factcard,.club,.topic):nth-child(6n+3){--accent:#E06A1B;}
:where(.lcard,.pillar,.factcard,.club,.topic):nth-child(6n+4){--accent:#2E8A43;}
:where(.lcard,.pillar,.factcard,.club,.topic):nth-child(6n+5){--accent:#1B3570;}
:where(.lcard,.pillar,.factcard,.club,.topic):nth-child(6n+6){--accent:#B87D06;}
.lcard::after,.pillar::after,.factcard::after{
  content:"";position:absolute;right:-55px;top:-55px;width:160px;height:160px;border-radius:50%;
  background:radial-gradient(circle at 32% 32%,var(--accent,#2F6FC0),transparent 70%);
  opacity:.09;pointer-events:none;z-index:0;transition:opacity .35s ease,transform .6s cubic-bezier(.22,.61,.36,1);}
.lcard>*,.pillar>*,.factcard>*{position:relative;z-index:1;}
.lcard:hover,.pillar:hover,.factcard:hover{
  transform:translateY(-8px);border-color:var(--accent);
  box-shadow:0 26px 52px -18px var(--accent),0 8px 18px rgba(20,24,31,.08);}
.lcard:hover::after,.pillar:hover::after,.factcard:hover::after{opacity:.2;transform:scale(1.35);}
@media(prefers-reduced-motion:reduce){
  .lcard,.pillar,.factcard{transition:none;}
  .lcard:hover,.pillar:hover,.factcard:hover{transform:none;}
}

/* ===== Explore cards (home) ===== */
.cards{display:grid;grid-template-columns:1fr;gap:24px;}
@media(min-width:680px){.cards{grid-template-columns:repeat(2,1fr);}}
@media(min-width:980px){.cards.three{grid-template-columns:repeat(3,1fr);}}
.lcard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-top:8px solid var(--accent,var(--brick));border-radius:20px;overflow:hidden;box-shadow:var(--shadow-sm);color:inherit;}
.lcard .cover{aspect-ratio:16/9;overflow:hidden;}
.lcard .cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s;}
.lcard:hover .cover img{transform:scale(1.06);}
.lcard .body{padding:22px 24px 26px;}
.lcard h3{font-family:'Playfair Display',serif;font-size:30px;color:var(--green-deep);font-weight:700;line-height:1.15;}
.lcard .zh{font-family:'PingFang TC',sans-serif;font-size:21px;color:var(--ink);font-weight:600;margin-top:6px;}
.lcard .meta{margin-top:12px;font-size:17px;font-weight:700;letter-spacing:.06em;color:var(--accent,var(--brick-deep));text-transform:uppercase;line-height:1.45;}

/* ===== Pillars ===== */
.pillars{display:grid;grid-template-columns:1fr;gap:22px;}
@media(min-width:720px){.pillars{grid-template-columns:1fr 1fr;gap:26px;}}
.pillar{background:#fff;border:1px solid var(--line);border-top:8px solid var(--accent,var(--brick));border-radius:20px;box-shadow:var(--shadow-sm);overflow:hidden;}
.pillar__photo{aspect-ratio:16/9;}
.pillar__photo img{width:100%;height:100%;object-fit:cover;display:block;}
.pillar__body{padding:24px 28px 30px;}
.pillar__no{font:700 14px/1 'Inter';letter-spacing:.14em;text-transform:uppercase;color:var(--accent,var(--brick-deep));margin-bottom:10px;}
.pillar__t{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;color:var(--green-deep);line-height:1.15;}
@media(min-width:720px){.pillar__t{font-size:30px;}}
.pillar__zh{font-family:'PingFang TC',sans-serif;font-size:20px;color:var(--ink);font-weight:600;margin-top:6px;}
.pillar__b{font-size:18px;color:var(--ink-soft);margin-top:12px;line-height:1.65;}
@media(min-width:720px){.pillar__b{font-size:20px;}}
.pillar__b.zh{font-family:'PingFang TC',sans-serif;font-size:17px;line-height:1.75;}
@media(min-width:720px){.pillar__b.zh{font-size:19px;}}

/* ===== Photo feature band (no border, full photos) ===== */
.pf__photos{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
@media(min-width:640px){.pf__photos{gap:16px;}}
.pf__photos img{width:100%;height:130px;object-fit:cover;border-radius:10px;display:block;}
@media(min-width:480px){.pf__photos img{height:190px;border-radius:14px;}}
@media(min-width:640px){.pf__photos img{height:320px;border-radius:16px;}}
.pf__text{max-width:720px;margin:32px auto 0;text-align:center;}
.pf__t{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;color:var(--green-deep);}
@media(min-width:720px){.pf__t{font-size:38px;}}
.pf__zh-t{font-size:19px;color:var(--ink);font-weight:600;margin-top:8px;}
@media(min-width:720px){.pf__zh-t{font-size:21px;}}
.pf__b{font-size:19px;color:var(--ink-soft);margin-top:22px;line-height:1.8;}
@media(min-width:720px){.pf__b{font-size:21px;}}
.pf__zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);margin-top:16px;line-height:1.85;}
@media(min-width:720px){.pf__zh{font-size:19px;}}

/* ===== Fact cards ===== */
.facts{display:grid;grid-template-columns:1fr;gap:18px;}
@media(min-width:680px){.facts{grid-template-columns:repeat(3,1fr);}}
.factcard{background:#fff;border:1px solid var(--line);border-left:6px solid var(--accent,var(--brick));border-radius:16px;padding:24px 24px 26px;box-shadow:var(--shadow-sm);overflow:hidden;}
.factcard__k{font:700 14px/1.3 'Inter','PingFang TC',sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--accent,var(--brick-deep));}
.factcard__v{font-family:'Playfair Display',serif;font-size:24px;color:var(--green-deep);font-weight:700;margin-top:10px;line-height:1.2;}
.factcard__b{font-size:18px;color:var(--ink);margin-top:10px;line-height:1.6;}
@media(min-width:720px){.factcard__b{font-size:19px;}}
.factcard__zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);margin-top:8px;line-height:1.6;}
@media(min-width:720px){.factcard__zh{font-size:19px;}}

/* ===== Plaque ===== */
.plaque{margin-top:28px;text-align:center;background:linear-gradient(160deg,var(--green-deep) 0%,#10224D 100%);border:1px solid var(--green-deep);border-radius:20px;padding:36px 24px;box-shadow:var(--shadow-sm);}
.plaque__sub{font-family:'Inter','PingFang TC',sans-serif;font-size:15px;letter-spacing:.2em;text-transform:uppercase;color:#FFD27A;font-weight:700;margin-bottom:10px;}
.plaque__poem{font-family:'Playfair Display','PingFang TC',serif;font-size:24px;color:#fff;font-weight:700;letter-spacing:.06em;line-height:1.8;}
@media(min-width:720px){.plaque__poem{font-size:30px;}}
.plaque__poem b{color:#FFD27A;}
.plaque__note{font-family:'Inter','PingFang TC',sans-serif;font-size:17px;color:rgba(255,255,255,.9);margin-top:16px;line-height:1.7;max-width:640px;margin-left:auto;margin-right:auto;}
@media(min-width:720px){.plaque__note{font-size:19px;}}
.plaque__note b{color:#FFD27A;font-weight:700;}

.accent-block{border-left:3px solid var(--green);padding-left:20px;}
.accent-block__kicker{font:700 17px/1.4 'Inter','PingFang TC',sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--brick-deep);margin-bottom:12px;}
.accent-block p{font-size:19px;line-height:1.75;color:var(--ink);}
@media(min-width:720px){.accent-block p{font-size:21px;}}
.accent-block p.zh{margin-top:10px;color:var(--ink-soft);font-size:17px;line-height:1.7;}
@media(min-width:720px){.accent-block p.zh{font-size:19px;}}

/* ===== Video player ===== */
.player{margin-top:30px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:var(--shadow);}
@media(min-width:720px){.player{padding:18px;}}
.player__ratio{position:relative;width:100%;padding-top:56.25%;border-radius:10px;overflow:hidden;background:#000;}
.player__ratio iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.player__cap{margin-top:12px;font-size:17px;color:var(--ink-soft);text-align:center;line-height:1.6;}
@media(min-width:720px){.player__cap{font-size:19px;}}

/* ===== Photo gallery grid ===== */
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.gallery-grid.four{grid-template-columns:repeat(4,1fr);}
@media(max-width:880px){.gallery-grid,.gallery-grid.four{grid-template-columns:repeat(2,1fr);gap:12px;}}
.g-photo{position:relative;border-radius:16px;overflow:hidden;box-shadow:var(--shadow-sm);aspect-ratio:4/3;}
.gallery-grid.four .g-photo{aspect-ratio:1/1;}
.g-photo img{width:100%;height:100%;object-fit:cover;transition:transform .4s;}
.g-photo:hover img{transform:scale(1.06);}
.g-photo .g-cap{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(16,30,64,.86) 0%,transparent 100%);color:#fff;padding:30px 14px 12px;font-family:'Inter','PingFang TC',sans-serif;font-size:17px;font-weight:600;line-height:1.35;letter-spacing:.01em;}
@media(min-width:720px){.g-photo .g-cap{font-size:19px;}}
.g-photo .g-cap small{display:block;font-family:'PingFang TC',sans-serif;font-size:17px;font-weight:500;opacity:.95;}
@media(min-width:720px){.g-photo .g-cap small{font-size:18px;}}

/* single wide photo with caption */
.wide-photo{margin-top:30px;border-radius:18px;overflow:hidden;box-shadow:var(--shadow);position:relative;}
.wide-photo img{width:100%;aspect-ratio:5/2;object-fit:cover;display:block;}
@media(max-width:640px){.wide-photo img{aspect-ratio:3/2;}}
.wide-photo figcaption{position:absolute;left:0;right:0;bottom:0;padding:36px 20px 14px;background:linear-gradient(0deg,rgba(16,30,64,.82) 0%,transparent 100%);color:#fff;font-family:'Inter','PingFang TC',sans-serif;font-size:17px;font-weight:600;}
@media(min-width:720px){.wide-photo figcaption{font-size:19px;}}

/* ===== Principal portrait (landscape office photo) ===== */
.pportrait{margin:6px auto 2px;max-width:860px;}
.pportrait img{width:100%;aspect-ratio:3/2;object-fit:cover;object-position:50% 40%;border-radius:20px;box-shadow:var(--shadow);display:block;border:1px solid var(--line);}
.pportrait figcaption{margin-top:14px;font-family:'Playfair Display','PingFang TC',serif;font-size:21px;color:var(--green-deep);font-weight:700;text-align:center;}
.pportrait figcaption small{display:block;font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);font-weight:500;margin-top:3px;}
@media(min-width:720px){.pportrait figcaption small{font-size:19px;}}

/* ===== Alternating section tints ===== */
.sec-tint-a{background:var(--cream);}
.sec-tint-b{background:linear-gradient(180deg,var(--green-soft) 0%,#fff 100%);}

/* ===== Video player link (back-link / external playlist link) ===== */
.player-link{margin-top:14px;display:flex;align-items:center;gap:14px;padding:16px 22px;background:#fff;border:1.5px solid var(--line);border-radius:14px;color:var(--green-deep);transition:transform .2s,box-shadow .2s,border-color .2s;}
.player-link:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:var(--brick);color:var(--green-deep);}
.player-link__icon{flex-shrink:0;width:42px;height:30px;border-radius:6px;background:#FF0000;color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;}
.player-link__text{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0;}
.player-link__text strong{font-family:'Playfair Display',serif;font-size:19px;color:var(--green-deep);font-weight:700;line-height:1.3;}
.player-link__text span{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);line-height:1.45;}
.player-link__arrow{font-size:22px;color:var(--brick);flex-shrink:0;}

/* ===== Course cards (Lessons hub) ===== */
.course-list{display:flex;flex-direction:column;gap:26px;}
.course{display:grid;grid-template-columns:1fr;background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:var(--shadow-sm);text-decoration:none;color:inherit;transition:transform .2s,box-shadow .2s;}
.course:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
@media(min-width:720px){.course{grid-template-columns:280px 1fr;}}
.course__art{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 24px;background:linear-gradient(135deg,var(--brick) 0%,var(--brick-deep) 100%);}
.course__art--photo{background-size:cover;background-position:center;min-height:240px;justify-content:flex-end;padding-bottom:18px;}
.course__badge{font-size:14px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#fff;background:rgba(255,255,255,.2);padding:6px 16px;border-radius:99px;}
.course__art--photo .course__badge{background:rgba(0,0,0,.58);white-space:nowrap;}
/* phones: show the square cover from the bottom so the badge sits in its plain color band, not over the thumbnail text */
@media(max-width:719px){.course__art--photo{background-position:50% 100%;}.course__art--photo .course__badge{font-size:13px;letter-spacing:1px;}}
/* wide screens: the image column is taller than wide — fit the whole square cover; the card's inline background-color matches the cover's own solid band */
@media(min-width:720px){.course__art--photo{background-size:contain;background-repeat:no-repeat;background-position:center;}}
.course__body{padding:26px 28px 30px;display:flex;flex-direction:column;justify-content:center;}
.course__no{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--brick);}
.course__t{font-family:'Playfair Display',serif;font-size:30px;font-weight:800;color:var(--green-deep);line-height:1.15;margin-top:6px;}
.course__zh{font-size:19px;color:var(--ink);font-weight:600;margin-top:4px;}
@media(min-width:720px){.course__zh{font-size:21px;}}
.course__desc{font-size:18px;color:var(--ink-soft);margin-top:12px;line-height:1.6;}
@media(min-width:720px){.course__desc{font-size:19px;}}
.course__desc .zh{display:block;margin-top:8px;font-family:'PingFang TC',sans-serif;}
.course__cta{margin-top:18px;display:inline-flex;align-items:center;gap:8px;align-self:flex-start;font-family:'Playfair Display',serif;font-size:18px;font-weight:700;color:#fff;background:var(--brick);padding:11px 22px;border-radius:12px;}
.course:hover .course__cta{background:var(--brick-deep);}

/* ===== Category heads (Announcements) ===== */
.cat-head{display:flex;align-items:center;gap:14px;margin:38px 0 18px;}
.cat-head__icon{font-size:36px;line-height:1;}
.cat-head__title{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;color:var(--green-deep);}
@media(min-width:720px){.cat-head__title{font-size:34px;}}
.cat-head__zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);font-weight:600;margin-top:3px;}
@media(min-width:720px){.cat-head__zh{font-size:19px;}}

/* ===== Module credits (instructor/producer/audience) ===== */
.credits{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px;}
.credits__cell{flex:1 1 190px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 16px;}
.credits__label{font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--brick-deep);}
.credits__value{font-size:17px;font-weight:600;color:var(--ink);margin-top:3px;line-height:1.4;}
@media(min-width:720px){.credits__value{font-size:19px;}}

/* ===== Topics grid (category overview cards) ===== */
.topics{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:32px;}
@media(min-width:720px){.topics{grid-template-columns:repeat(3,1fr);gap:16px;}}
.topic{background:#fff;border:1px solid var(--line);border-top:4px solid var(--accent,var(--brick));border-radius:12px;padding:14px 16px;box-shadow:var(--shadow-sm);}
.topic__no{font-family:'Playfair Display',serif;color:var(--accent,var(--green-deep));font-weight:800;font-size:15px;letter-spacing:2px;}
.topic__en{margin-top:4px;font-size:18px;font-weight:700;color:var(--green-deep);line-height:1.35;}
@media(min-width:720px){.topic__en{font-size:19px;}}
.topic__zh{margin-top:4px;font-size:17px;color:var(--ink-soft);line-height:1.45;}

/* ===== Club cards (with photo) ===== */
.club-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:34px;}
@media(min-width:640px){.club-grid{grid-template-columns:repeat(3,1fr);gap:18px;}}
@media(min-width:980px){.club-grid{grid-template-columns:repeat(4,1fr);}}
.club{position:relative;background:#fff;border:1px solid var(--line);border-top:4px solid var(--accent,var(--brick));border-radius:14px;overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;}
.club:hover{transform:translateY(-5px);border-color:var(--accent);box-shadow:0 22px 40px -18px var(--accent),0 8px 18px rgba(20,24,31,.08);}
.club__img{aspect-ratio:4/3;overflow:hidden;background:var(--green-soft);}
.club__img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s ease;}
.club:hover .club__img img{transform:scale(1.06);}
.club__b{padding:12px 15px 16px;}
.club__en{font-size:19px;font-weight:700;color:var(--green-deep);line-height:1.3;}
@media(min-width:720px){.club__en{font-size:20px;}}
.club__zh{margin-top:3px;font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);}
@media(min-width:720px){.club__zh{font-size:19px;}}

/* ===== Coming soon (unbuilt page placeholder) ===== */
.soon{max-width:680px;margin:0 auto;text-align:center;background:#fff;border:1.5px dashed var(--brick);border-radius:20px;padding:48px 32px;box-shadow:var(--shadow-sm);}
.soon__icon{font-size:52px;line-height:1;margin-bottom:18px;}
.soon__t{font-family:'Playfair Display',serif;font-size:30px;font-weight:700;color:var(--green-deep);}
.soon__zh{font-size:20px;color:var(--ink);font-weight:600;margin-top:8px;}
.soon__b{font-size:18px;color:var(--ink-soft);margin-top:16px;line-height:1.75;}
@media(min-width:720px){.soon__b{font-size:19px;}}

/* ===== LOVE letters (home) ===== */
.love{display:grid;grid-template-columns:1fr;gap:18px;margin-top:34px;}
@media(min-width:600px){.love{grid-template-columns:1fr 1fr;}}
@media(min-width:1000px){.love{grid-template-columns:repeat(4,1fr);}}
.love__card{position:relative;background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px 22px 26px;box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .28s ease,box-shadow .28s ease;}
.love__card:hover{transform:translateY(-6px);box-shadow:0 24px 46px -18px var(--accent);}
.love__card:nth-child(1){--accent:#D42A2A;}
.love__card:nth-child(2){--accent:#E06A1B;}
.love__card:nth-child(3){--accent:#2E8A43;}
.love__card:nth-child(4){--accent:#2F6FC0;}
.love__letter{font-family:'Playfair Display',serif;font-size:88px;font-weight:800;line-height:.9;color:var(--accent);}
.love__word{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;color:var(--green-deep);margin-top:12px;letter-spacing:.02em;}
.love__word b{color:var(--accent);font-size:1.18em;}
.love__zh{font-family:'PingFang TC',sans-serif;font-size:22px;font-weight:700;color:var(--ink);margin-top:2px;}
.love__b{font-size:18px;color:var(--ink-soft);margin-top:10px;line-height:1.6;}
@media(min-width:720px){.love__b{font-size:19px;}}
.love__b.zh{font-family:'PingFang TC',sans-serif;font-size:17px;margin-top:6px;}
/* phones: big letter on the left, words on the right — keeps four cards short */
@media(max-width:599px){
  .love__card{display:grid;grid-template-columns:62px 1fr;column-gap:14px;align-items:start;padding:20px 20px 22px;}
  .love__letter{grid-row:1/span 5;font-size:72px;}
  .love__card>*:not(.love__letter){grid-column:2;}
  .love__word{margin-top:2px;}
}
@media(min-width:720px){.love__b.zh{font-size:19px;}}

/* crest + text row */
.crest-row{display:grid;grid-template-columns:1fr;gap:22px;align-items:center;margin-top:34px;background:var(--brick-soft);border-radius:22px;padding:26px;}
@media(min-width:720px){.crest-row{grid-template-columns:200px 1fr;gap:34px;padding:32px 36px;}}
.crest-row img{width:160px;height:160px;object-fit:contain;margin:0 auto;}
@media(min-width:720px){.crest-row img{width:200px;height:200px;}}
.crest-row__t{font-family:'Playfair Display',serif;font-size:26px;font-weight:700;color:var(--green-deep);line-height:1.3;}
@media(min-width:720px){.crest-row__t{font-size:30px;}}
.crest-row p{font-size:19px;color:var(--ink);margin-top:10px;line-height:1.7;}
@media(min-width:720px){.crest-row p{font-size:21px;}}
.crest-row p.zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);margin-top:8px;}
@media(min-width:720px){.crest-row p.zh{font-size:19px;}}

/* photo with caption (framed) */
.photo-fig{margin-top:30px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px;box-shadow:var(--shadow);}
.photo-fig img{width:100%;border-radius:10px;display:block;}
.photo-fig figcaption{margin-top:12px;text-align:center;font-size:17px;color:var(--ink-soft);line-height:1.55;padding:0 6px 4px;}
@media(min-width:720px){.photo-fig figcaption{font-size:19px;}}
.photo-fig figcaption b{color:var(--green-deep);}

/* ===== Career timeline (principal) ===== */
.tl{list-style:none;margin-top:30px;position:relative;padding-left:30px;}
.tl::before{content:"";position:absolute;left:9px;top:8px;bottom:8px;width:4px;border-radius:2px;background:linear-gradient(180deg,var(--brick),var(--green));}
.tl__item{position:relative;padding:0 0 26px;}
.tl__item:last-child{padding-bottom:0;}
.tl__item::before{content:"";position:absolute;left:-28px;top:6px;width:16px;height:16px;border-radius:50%;background:#fff;border:4px solid var(--brick);}
.tl__item.is-now::before{background:var(--brick);box-shadow:0 0 0 6px var(--brick-soft);}
.tl__yr{font:700 17px/1.35 'Inter','PingFang TC',sans-serif;letter-spacing:.05em;color:var(--brick-deep);}
@media(min-width:720px){.tl__yr{font-size:18px;}}
.tl__role{font-family:'Playfair Display','PingFang TC',serif;font-size:21px;font-weight:700;color:var(--green-deep);line-height:1.3;margin-top:3px;}
@media(min-width:720px){.tl__role{font-size:24px;}}
.tl__zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);margin-top:3px;line-height:1.55;}
@media(min-width:720px){.tl__zh{font-size:19px;}}

/* ===== CTA buttons (footer) ===== */
.ft-ctas{display:flex;flex-direction:column;gap:12px;margin-top:2px;}
.ft-ctas .cta-btn{background:#FDECEC;color:var(--green-deep);border-radius:12px;padding:13px 18px;display:flex;align-items:center;gap:12px;box-shadow:0 6px 16px -8px rgba(0,0,0,.4);transition:transform .18s,background .18s,color .18s,box-shadow .18s;}
.ft-ctas .cta-btn:hover{background:#fff;color:var(--green-deep);transform:translateY(-4px);box-shadow:var(--shadow);}
.ft-ctas .cta-btn--fb{background:#E6EEFA;}
.ft-ctas .cta-btn--fb:hover{background:#fff;}
.cta-btn__ico{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:#fff;color:var(--green-deep);display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800;transition:background .18s;}
.cta-btn--fb .cta-btn__ico{background:#1877F2;color:#fff;font-family:Arial,sans-serif;}
.cta-btn__tx{flex:1;min-width:0;}
.cta-btn__t{display:block;font-family:'Playfair Display',serif;font-size:18px;font-weight:700;line-height:1.2;}
.cta-btn__zh{display:block;font-family:'PingFang TC',sans-serif;font-size:17px;margin-top:3px;font-weight:600;opacity:.94;}
.cta-btn__arrow{font-size:20px;font-weight:700;flex-shrink:0;transition:transform .18s;}
.cta-btn:hover .cta-btn__arrow{transform:translate(3px,-3px);}

/* ===== Footer ===== */
.ft{background:var(--green-deep);color:rgba(255,255,255,.82);padding:44px 0 34px;}
.ft__inner{max-width:var(--max);margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1fr;gap:26px;}
@media(min-width:760px){.ft__inner{grid-template-columns:1.6fr 1fr 1.15fr;gap:40px;}}
.ft__brand{display:flex;gap:14px;align-items:flex-start;}
.ft__brand .ft__logo{width:58px;height:58px;object-fit:contain;flex-shrink:0;display:block;background:#fff;border-radius:14px;padding:4px;}
.ft__brand h4{font-family:'Playfair Display',serif;font-size:22px;color:#fff;font-weight:700;line-height:1.15;}
.ft__brand .zh{font-size:17px;color:rgba(255,255,255,.82);margin-top:4px;}
.ft__addr{margin-top:10px;font-size:17px;color:rgba(255,255,255,.78);line-height:1.7;}
.ft__addr a{color:#FFD27A;border-bottom:1px dashed rgba(255,210,122,.5);}
.ft__addr a:hover{color:#fff;}
.ft__col h5{font-family:'Playfair Display',serif;font-size:14px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#FFD27A;margin-bottom:12px;}
.ft__col ul{list-style:none;}
.ft__col li{margin-bottom:9px;font-size:17px;color:rgba(255,255,255,.88);}
.ft__col a{color:rgba(255,255,255,.9);border-bottom:1px dashed rgba(220,234,245,.5);}
.ft__col a:hover{color:#FFD27A;}
.ft__bottom{max-width:var(--max);margin:30px auto 0;padding:18px 24px 0;border-top:1px solid rgba(255,255,255,.16);font-size:15px;color:rgba(255,255,255,.7);text-align:center;line-height:1.75;}
.ft__bottom a{color:#e6c179;border-bottom:1px dashed rgba(230,193,121,.5);}
.ft__bottom a:hover{color:#fff;}

/* ===== reveal-fx ===== */
.rvl{opacity:0;transform:translateY(24px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1);}
.rvl.in{opacity:1;transform:none;}
@media(prefers-reduced-motion:reduce){.rvl{opacity:1!important;transform:none!important;}}
.lcard.rvl.in:hover,.pillar.rvl.in:hover,.factcard.rvl.in:hover{transform:translateY(-8px);transition:transform .28s cubic-bezier(.2,.7,.2,1),box-shadow .28s ease,border-color .28s ease;transition-delay:0s!important;}
.love__card.rvl.in:hover{transform:translateY(-6px);transition-delay:0s!important;}
.course.rvl.in:hover{transform:translateY(-4px);transition-delay:0s!important;}
@media(min-width:980px){.pillars.four{grid-template-columns:1fr 1fr;}}
@media(min-width:880px){.gallery-grid.three-col{grid-template-columns:repeat(3,1fr);}}
@media(max-width:480px){.chero .eyebrow{font-size:12px;letter-spacing:.14em;padding:5px 12px;}}

/* ===================================================================
   Clubs (Lessons → Our Clubs): hub cards + per-club learning zone
   Hub grid follows the Dajuang .units/.unit pattern (1→2→3 columns,
   each club its own gradient), with a real club photo as the hero.
   =================================================================== */
.units{display:grid;grid-template-columns:1fr;gap:24px;margin-top:36px;}
@media(min-width:720px){.units{grid-template-columns:repeat(2,1fr);gap:28px;}}
@media(min-width:1080px){.units{grid-template-columns:repeat(3,1fr);}}
.unit{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-top:8px solid var(--c1);border-radius:22px;overflow:hidden;box-shadow:var(--shadow-sm);color:inherit;transition:transform .25s,box-shadow .25s;}
.unit:hover{transform:translateY(-6px) scale(1.01);box-shadow:0 28px 50px -18px var(--c2);color:inherit;}
.unit__hero{position:relative;height:200px;overflow:hidden;background:linear-gradient(135deg,var(--c1),var(--c2));}
@media(min-width:720px){.unit__hero{height:210px;}}
.unit__hero img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s;}
.unit:hover .unit__hero img{transform:scale(1.06);}
.unit__chip{position:absolute;left:20px;top:-36px;width:68px;height:68px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2));border:4px solid #fff;display:flex;align-items:center;justify-content:center;font-size:34px;box-shadow:0 8px 18px -6px rgba(0,0,0,.35);z-index:2;transition:transform .3s;}
.unit:hover .unit__chip{transform:scale(1.1) rotate(-6deg);}
.unit__body{position:relative;padding:22px 24px 26px;flex:1;display:flex;flex-direction:column;}
.unit__no{margin-top:22px;font:700 15px/1.3 'Inter','PingFang TC',sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--c2);}
.unit__title{font-family:'Playfair Display',serif;font-size:30px;font-weight:700;color:var(--green-deep);line-height:1.15;margin-top:6px;}
.unit__title-zh{font-family:'PingFang TC',sans-serif;font-size:20px;color:var(--ink);font-weight:600;margin-top:4px;}
.unit__desc{font-size:18px;color:var(--ink-soft);margin-top:12px;line-height:1.6;flex:1;}
@media(min-width:720px){.unit__desc{font-size:19px;}}
.unit__desc .zh{display:block;font-family:'PingFang TC',sans-serif;font-size:17px;margin-top:6px;}
@media(min-width:720px){.unit__desc .zh{font-size:18px;}}
.unit__cta{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line);display:flex;justify-content:flex-end;align-items:center;gap:6px;font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:var(--c2);}
.unit__cta .arrow{transition:transform .2s;}
.unit:hover .unit__cta .arrow{transform:translateX(4px);}
.unit.rvl.in:hover{transform:translateY(-6px) scale(1.01);transition-delay:0s!important;}

/* home: club tiles that link to their pages */
a.club{display:block;color:inherit;}
a.club:hover{color:inherit;}
.more-link{margin-top:28px;display:flex;justify-content:center;}
.more-link a{display:inline-flex;align-items:center;gap:10px;font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:#fff;background:var(--brick);padding:13px 26px;border-radius:14px;box-shadow:var(--shadow-sm);transition:background .2s,transform .2s;}
.more-link a:hover{background:var(--brick-deep);color:#fff;transform:translateY(-2px);}
.more-link a small{font-family:'PingFang TC',sans-serif;font-size:17px;font-weight:600;opacity:.92;}

/* club page: photo row */
.cphotos{display:grid;grid-template-columns:1fr;gap:14px;margin-top:30px;}
@media(min-width:600px){.cphotos{grid-template-columns:repeat(2,1fr);}}
@media(min-width:900px){.cphotos.three{grid-template-columns:repeat(3,1fr);gap:18px;}}
.cphotos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:16px;box-shadow:var(--shadow-sm);display:block;}

/* club page: learning zone */
.lz{max-width:900px;margin:0 auto;}
.lz__part{margin-top:46px;}
.lz__part:first-child{margin-top:0;}
.lz__label{display:flex;align-items:center;gap:12px;font-family:'Playfair Display',serif;font-size:28px;font-weight:700;color:var(--green-deep);line-height:1.2;}
@media(min-width:720px){.lz__label{font-size:34px;}}
.lz__label .num{flex-shrink:0;width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2));color:#fff;font:700 19px/1 'Inter',sans-serif;display:inline-flex;align-items:center;justify-content:center;}
.lz__label-zh{font-family:'PingFang TC',sans-serif;font-size:18px;color:var(--ink-soft);font-weight:600;margin:6px 0 18px 50px;}
@media(min-width:720px){.lz__label-zh{font-size:20px;}}

.speak{flex-shrink:0;border:0;cursor:pointer;background:var(--brick-soft);color:var(--brick-deep);border-radius:50%;width:44px;height:44px;font-size:20px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:transform .15s,background .15s;}
.speak:hover{background:#FFE7B8;transform:scale(1.08);}
.speak.is-speaking{background:var(--c1,var(--brick));color:#fff;animation:spk 1s infinite;}
.speak--sm{width:38px;height:38px;font-size:17px;}
@keyframes spk{0%,100%{box-shadow:0 0 0 0 rgba(212,42,42,.35);}50%{box-shadow:0 0 0 8px rgba(212,42,42,0);}}

/* vocab cards (.vc) — 9 per club */
.vcs{display:grid;grid-template-columns:1fr;gap:16px;}
@media(min-width:640px){.vcs{grid-template-columns:1fr 1fr;}}
@media(min-width:1000px){.vcs{grid-template-columns:repeat(3,1fr);}}
.vc{background:#fff;border:1px solid var(--line);border-top:6px solid var(--c1);border-radius:16px;padding:16px 18px 18px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;}
.vc:nth-child(even){border-top-color:var(--c2);}
.vc__top{display:flex;align-items:center;gap:12px;}
.vc__num{flex-shrink:0;width:30px;height:30px;border-radius:50%;background:var(--c2);color:#fff;font:700 15px/1 'Inter',sans-serif;display:inline-flex;align-items:center;justify-content:center;}
.vc__word{flex:1;min-width:0;}
.vc__en{font-family:'Playfair Display',serif;font-size:26px;font-weight:700;color:var(--green-deep);line-height:1.15;}
.vc__pos{font:italic 500 17px 'Inter',sans-serif;color:var(--ink-soft);margin-left:6px;}
.vc__zh{font-family:'PingFang TC',sans-serif;font-size:19px;font-weight:700;color:var(--c2);margin-top:2px;}
.vc__eg{display:flex;align-items:flex-start;gap:10px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);}
.vc__eg-txt{flex:1;}
.vc__eg-en{font-size:18px;color:var(--ink);line-height:1.5;}
@media(min-width:720px){.vc__eg-en{font-size:19px;}}
.vc__eg-en b{color:var(--c2);}
.vc__eg-zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);margin-top:3px;line-height:1.5;}

/* dialogue */
.dlg-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px;}
.dlg-scene{flex:1 1 300px;background:#FFF6E0;border:1px solid #F2DFAE;border-radius:12px;padding:12px 16px;font-size:17px;color:var(--ink);line-height:1.6;}
@media(min-width:720px){.dlg-scene{font-size:18px;}}
.playall{border:0;background:var(--green-deep);color:#fff;font:700 17px 'Inter','PingFang TC',sans-serif;padding:12px 22px;border-radius:99px;cursor:pointer;transition:background .15s,transform .15s;}
.playall:hover{background:var(--brick);transform:translateY(-1px);}
.dlg{display:flex;flex-direction:column;gap:12px;}
.line{display:flex;gap:12px;align-items:flex-start;background:var(--green-soft);border-radius:14px;padding:14px 16px;border-left:5px solid var(--c1);}
.line.b{background:#FFF1F1;border-left-color:var(--c2);}
.line.is-speaking{outline:3px solid #F2B705;outline-offset:2px;}
.line__who{flex-shrink:0;width:28px;font-family:'Playfair Display',serif;font-size:24px;font-weight:700;color:var(--c1);}
.line.b .line__who{color:var(--c2);}
.line__txt{flex:1;}
.line__en{font-size:19px;font-weight:600;color:var(--ink);line-height:1.45;}
@media(min-width:720px){.line__en{font-size:21px;}}
.line__zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);margin-top:4px;line-height:1.55;}
@media(min-width:720px){.line__zh{font-size:18px;}}

/* matching game */
.vgame{background:#fff;border:1px solid var(--line);border-radius:20px;padding:24px 18px 26px;box-shadow:var(--shadow-sm);}
@media(min-width:720px){.vgame{padding:30px 30px 32px;}}
.game-score{text-align:center;font-family:'PingFang TC',sans-serif;font-size:18px;color:var(--ink-soft);margin-bottom:16px;}
.game-score b{color:var(--brick);font-size:22px;}
.game-board{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;}
.gcol{display:flex;flex-direction:column;gap:10px;}
.gtile{font-family:'Inter','PingFang TC',sans-serif;font-size:18px;font-weight:700;color:var(--ink);background:#fff;border:2px solid var(--line);border-radius:12px;padding:13px 8px;cursor:pointer;transition:transform .12s,background .15s,border-color .15s,color .15s;text-align:center;line-height:1.3;}
@media(min-width:720px){.gtile{font-size:20px;}}
.gtile.zh{font-family:'PingFang TC',sans-serif;}
.gtile:hover{border-color:var(--c1);}
.gtile.sel{border-color:var(--c1);background:var(--brick-soft);color:var(--brick-deep);}
.gtile.done{background:#e9f7ec;border-color:#5cb274;color:#2f8049;cursor:default;}
.gtile.pop{animation:gpop .5s;}
@keyframes gpop{0%{transform:scale(1)}40%{transform:scale(1.13)}100%{transform:scale(1)}}
.gtile.shake{animation:gshake .36s;background:#fdecec;border-color:#e29a9a;}
@keyframes gshake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
.game-reset{display:block;margin:20px auto 0;font:700 17px 'Inter','PingFang TC',sans-serif;color:var(--brick-deep);background:#fff;border:2px solid var(--line);border-radius:10px;padding:11px 22px;cursor:pointer;}
.game-reset:hover{background:var(--green-soft);border-color:var(--green);}
.game-done{display:none;text-align:center;margin-top:20px;font-family:'PingFang TC',sans-serif;font-size:22px;font-weight:700;color:var(--brick-deep);}
.game-done.show{display:block;animation:gpop .55s;}
.confetti{position:fixed;top:-16px;width:11px;height:15px;border-radius:2px;z-index:9999;pointer-events:none;animation:cfall linear forwards;}
@keyframes cfall{0%{transform:translateY(0) rotate(0);opacity:1;}100%{transform:translateY(112vh) rotate(560deg);opacity:.85;}}

/* quiz */
.quiz{display:flex;flex-direction:column;gap:14px;}
.qz{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 18px 20px;box-shadow:var(--shadow-sm);}
.qz__q{display:flex;align-items:flex-start;gap:10px;font-size:19px;font-weight:700;color:var(--ink);line-height:1.5;}
@media(min-width:720px){.qz__q{font-size:21px;}}
.qz__q .num{flex-shrink:0;color:var(--c2);}
.qz__q .qz__text{flex:1;}
.qz__zh{font-family:'PingFang TC',sans-serif;font-size:17px;color:var(--ink-soft);margin:4px 0 14px;}
.qz__opts{display:grid;grid-template-columns:1fr;gap:9px;}
@media(min-width:560px){.qz__opts{grid-template-columns:1fr 1fr;}}
.opt{display:flex;align-items:center;gap:10px;text-align:left;font-family:'Inter',sans-serif;font-size:18px;color:var(--ink);background:var(--cream);border:2px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:border-color .15s,background .15s;}
@media(min-width:720px){.opt{font-size:19px;}}
.opt:hover:not(:disabled){border-color:var(--c1);background:#fff;}
.opt .key{flex-shrink:0;width:28px;height:28px;border-radius:7px;background:#fff;border:1px solid var(--line);font:700 15px/1 'Inter',sans-serif;color:var(--green-deep);display:inline-flex;align-items:center;justify-content:center;}
.opt.is-correct{border-color:#2f8c5a;background:#e3f5ea;color:#1c6b40;}
.opt.is-correct .key{background:#2f8c5a;color:#fff;border-color:#2f8c5a;}
.opt.is-wrong{border-color:#c2493a;background:#fbe4e1;color:#8a2f24;}
.opt.is-wrong .key{background:#c2493a;color:#fff;border-color:#c2493a;}
.opt:disabled{cursor:default;}
.qz__fb{display:none;margin-top:12px;font-family:'Inter','PingFang TC',sans-serif;font-size:17px;line-height:1.6;border-radius:10px;padding:11px 14px;}
@media(min-width:720px){.qz__fb{font-size:18px;}}
.qz__fb.show{display:block;}
.qz__fb.ok{background:#e3f5ea;color:#1c6b40;}
.qz__fb.no{background:#fbe4e1;color:#8a2f24;}
.qz__score{margin-top:18px;text-align:center;font-family:'Playfair Display','PingFang TC',serif;font-size:24px;font-weight:700;color:var(--green-deep);min-height:32px;}

/* prev / all / next */
.lnav{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:44px;flex-wrap:wrap;}
.lnav a{padding:11px 18px;border-radius:12px;border:2px solid var(--line);font-weight:700;font-size:17px;color:var(--brick-deep);background:#fff;}
.lnav a:hover{background:var(--green-soft);border-color:var(--green);color:var(--green-deep);}
.lnav a.center{background:var(--green-deep);color:#fff;border-color:var(--green-deep);}
@media(max-width:560px){.lnav{justify-content:center;}.lnav a.center{order:-1;flex-basis:100%;text-align:center;}}

/* ===================================================================
   News: list page (featured card + story grid) and 純圖文 article pages
   =================================================================== */
.feat{display:grid;grid-template-columns:1fr;background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:var(--shadow);margin-bottom:36px;color:inherit;transition:transform .22s,box-shadow .22s;}
.feat:hover{transform:translateY(-4px);box-shadow:0 26px 50px -18px rgba(27,53,112,.34);color:inherit;}
@media(min-width:820px){.feat{grid-template-columns:1.05fr 1fr;}}
.feat__img{aspect-ratio:16/11;background:var(--green-soft);overflow:hidden;}
@media(min-width:820px){.feat__img{aspect-ratio:auto;min-height:100%;}}
.feat__img img{width:100%;height:100%;object-fit:cover;}
.feat__b{padding:30px 30px 34px;display:flex;flex-direction:column;justify-content:center;}
.feat__badge{align-self:flex-start;font:700 14px 'Inter',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--brick);border-radius:99px;padding:5px 14px;margin-bottom:14px;}
.feat__t{font-family:'Playfair Display','PingFang TC',serif;font-size:clamp(26px,3.4vw,34px);font-weight:800;color:var(--green-deep);line-height:1.2;}
.feat__t small{display:block;font-family:'PingFang TC',sans-serif;font-size:20px;color:var(--ink);font-weight:600;margin-top:8px;line-height:1.45;}
.feat__date{font:700 17px 'Inter',sans-serif;letter-spacing:.04em;color:var(--brick-deep);margin-top:14px;}
.feat__p{font-size:18px;color:var(--ink-soft);margin-top:12px;line-height:1.7;}
@media(min-width:720px){.feat__p{font-size:19px;}}
.feat__cta{margin-top:18px;font-family:'Playfair Display',serif;font-weight:700;color:var(--brick);font-size:20px;}

.news-grid{display:grid;grid-template-columns:1fr;gap:26px;}
@media(min-width:680px){.news-grid{grid-template-columns:1fr 1fr;}}
@media(min-width:1000px){.news-grid{grid-template-columns:repeat(3,1fr);}}
a.nstory{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-top:6px solid var(--accent,var(--brick));border-radius:18px;overflow:hidden;box-shadow:var(--shadow-sm);color:inherit;transition:transform .22s,box-shadow .22s;}
a.nstory:hover{transform:translateY(-6px);box-shadow:0 24px 44px -18px var(--accent,rgba(27,53,112,.4));color:inherit;}
.news-grid>a:nth-child(6n+1){--accent:#D42A2A;}
.news-grid>a:nth-child(6n+2){--accent:#2F6FC0;}
.news-grid>a:nth-child(6n+3){--accent:#E06A1B;}
.news-grid>a:nth-child(6n+4){--accent:#2E8A43;}
.news-grid>a:nth-child(6n+5){--accent:#1B3570;}
.news-grid>a:nth-child(6n+6){--accent:#B87D06;}
.nstory__img{aspect-ratio:16/10;overflow:hidden;background:var(--green-soft);}
.nstory__img img{width:100%;height:100%;object-fit:cover;transition:transform .4s;}
a.nstory:hover .nstory__img img{transform:scale(1.05);}
.nstory__b{padding:18px 20px 22px;display:flex;flex-direction:column;flex:1;}
.nstory__tag{font:700 14px/1.3 'Inter','PingFang TC',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--accent,var(--brick-deep));}
.nstory h3{font-family:'Playfair Display',serif;font-size:23px;font-weight:700;color:var(--green-deep);line-height:1.25;margin-top:8px;}
.nstory h3 .zh{display:block;font-family:'PingFang TC',sans-serif;font-size:18px;color:var(--ink);font-weight:600;margin-top:6px;line-height:1.45;}
.nstory__date{font:600 17px 'Inter',sans-serif;color:var(--ink-soft);margin-top:10px;}
.nstory__more{margin-top:auto;padding-top:14px;font-family:'Playfair Display',serif;font-size:18px;font-weight:700;color:var(--accent,var(--brick));}

/* article page */
.story-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;}
.story-tag{font:700 15px/1.3 'Inter','PingFang TC',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:var(--brick);border-radius:99px;padding:6px 14px;}
.story-date{font:700 18px 'Inter',sans-serif;color:var(--brick-deep);letter-spacing:.03em;}
.story-title{font-family:'Playfair Display',serif;font-size:34px;font-weight:700;color:var(--green-deep);line-height:1.2;margin-top:16px;}
@media(min-width:720px){.story-title{font-size:46px;}}
.story-title-zh{font-family:'PingFang TC',sans-serif;font-size:20px;color:var(--ink);font-weight:600;margin-top:12px;line-height:1.55;}
@media(min-width:720px){.story-title-zh{font-size:23px;}}
.story .body p:first-child{margin-top:0;}
.story .wide-photo{margin-top:34px;}
.story .wide-photo img{aspect-ratio:auto;max-height:640px;}
.story .gallery-grid{margin-top:30px;}
.story .gallery-grid.two{grid-template-columns:1fr 1fr;}
@media(max-width:600px){.story .gallery-grid.two{grid-template-columns:1fr;}}
.story .body{margin-top:28px;}
