/* ============================================================
   HMLC — style.css
   Sunny beach theme · collage cutout · English & Chinese classes
   + self-rotating 3D hero picture
   ============================================================ */

/* ============================================================
   1. TOKENS
   ============================================================ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  /* ——— sunny beach palette ——— */
  --sand:#FDE8C8;
  --sand-2:#F7D9A8;
  --shore:#FFF4E2;
  --ocean:#3FB8D9;
  --ocean-deep:#1E7FA6;
  --sun:#FFC93C;
  --sunset:#FF8A5B;
  --coral-reef:#FF6F61;
  --palm:#2E8B57;
  --shell:#FFF0E0;

  /* ——— legacy aliases ——— */
  --paper:var(--sand);
  --paper-2:var(--sand-2);
  --ink:#1A2E3B;
  --ink-soft:rgba(26,46,59,.68);
  --ink-faint:rgba(26,46,59,.38);

  --red:#FF5B4A;
  --blue:#1E7FA6;
  --yellow:var(--sun);
  --mint:#8DE8C0;
  --pink:#FFB4A2;
  --purple:#B79CFF;
  --coral:#FF8A5B;
  --lime:#D4F26B;
  --dark-green:#1F7A4D;

  --display:"Archivo Black","Arial Black",sans-serif;
  --sans:"Poppins",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --hand:"Caveat",cursive;
  --zh:"Noto Sans SC","PingFang SC",sans-serif;
  --my:"Noto Sans Myanmar","Myanmar Text",sans-serif;

  --shadow-hard:6px 8px 0 var(--ink);
  --shadow-sm:4px 5px 0 var(--ink);
}

html{
  scroll-behavior:smooth;
  scroll-padding-top:96px;      /* fixed nav clearance for anchor jumps */
  -webkit-text-size-adjust:100%;
}

body{
  font-family:var(--sans);
  color:var(--ink);
  line-height:1.55;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;

  background-color:var(--sand);
  background-image:
    radial-gradient(circle at 85% 8%, rgba(255,201,60,.55) 0%, rgba(255,201,60,0) 38%),
    radial-gradient(circle at 12% 6%, rgba(255,138,91,.35) 0%, rgba(255,138,91,0) 42%),
    radial-gradient(ellipse at 50% 100%, rgba(63,184,217,.40) 0%, rgba(63,184,217,0) 60%),
    radial-gradient(circle, rgba(26,46,59,.075) 1.2px, transparent 1.4px),
    radial-gradient(circle, rgba(26,46,59,.04) 1.2px, transparent 1.4px);
  background-size:
    100% 100%,
    100% 100%,
    100% 100%,
    26px 26px,
    52px 52px;
  background-position:
    0 0,
    0 0,
    0 0,
    0 0,
    13px 13px;
  background-attachment:fixed;
}

/* ============================================================
   2. IMAGE SLOT
   ============================================================ */
.img-slot{
  position:relative;
  display:block;
  width:100%;
  background:
    repeating-linear-gradient(45deg, rgba(26,46,59,.06) 0 14px, transparent 14px 28px),
    var(--shore);
  border:4px dashed var(--ink);
  border-radius:10px;
  overflow:hidden;
}
.img-slot::after{
  content:attr(data-label);
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  font-family:var(--sans);
  font-weight:800;
  font-size:10.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  text-align:center;
  padding:8px;
  color:var(--ink-soft);
  pointer-events:none;
  z-index:1;
}
.img-slot img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  z-index:2;
}
.img-slot:has(img){
  border-style:solid;
  border-color:var(--ink);
  background:var(--shore);
}
.img-slot:has(img)::after{ content:none; }

/* scroll progress */
.progress{
  position:fixed;top:0;left:0;right:0;height:4px;
  transform-origin:0 50%;transform:scaleX(0);
  background:linear-gradient(90deg,var(--sunset),var(--sun),var(--mint),var(--ocean));
  z-index:70;pointer-events:none;
}

/* ============================================================
   3. NAVIGATION
   ============================================================ */
nav{
  position:fixed;top:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;
  padding:18px 6vw;
  background:linear-gradient(180deg, var(--shore) 0%, var(--sand) 100%);
  border-bottom:3px solid var(--ink);
  box-shadow:0 4px 0 rgba(30,127,166,.18);
}
.brand{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--display);
  font-size:15px;letter-spacing:.02em;text-transform:uppercase;
  color:var(--ink);text-decoration:none;white-space:nowrap;
}
.brand span{color:var(--sunset);margin:0 .15em}
.brand-mark{
  width:26px;height:26px;flex:none;
  color:var(--sun);
  filter:drop-shadow(1px 1px 0 var(--ink));
  animation:wiggle 4s ease-in-out infinite;
}
@keyframes wiggle{
  0%,100%{transform:rotate(-8deg)}
  50%    {transform:rotate(8deg)}
}

nav ul{display:flex;align-items:center;gap:26px;list-style:none}
nav ul a{
  color:var(--ink);text-decoration:none;
  font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  transition:color .25s;position:relative;
}
nav ul a::after{
  content:"";position:absolute;left:0;right:100%;bottom:-6px;height:3px;
  background:var(--sunset);border-radius:2px;
  transition:right .3s cubic-bezier(.2,.8,.2,1);
}
nav ul a:hover{color:var(--sunset)}
nav ul a:hover::after{right:0}
.nav-cta{
  color:var(--ink) !important;
  background:var(--sun);
  padding:10px 18px;border-radius:100px;
  border:3px solid var(--ink);
  box-shadow:3px 4px 0 var(--ink);
  transition:transform .2s, box-shadow .2s, background .25s;
}
.nav-cta:hover{
  background:var(--mint);
  transform:translate(2px,2px);
  box-shadow:1px 2px 0 var(--ink);
}
.nav-cta::after{display:none}

/* ============================================================
   4. HERO
   ============================================================ */
.hero{
  position:relative;z-index:2;
  min-height:100vh;
  display:grid;place-items:center;
  padding:170px 6vw 150px;
  text-align:center;
  overflow:hidden;
}

.hero-bg{position:absolute;inset:0;pointer-events:none;z-index:0}
.bg-sheet{
  position:absolute;
  top:50%;left:50%;
  width:min(1020px,94vw);
  height:min(680px,74vh);
  background:linear-gradient(160deg, var(--ocean) 0%, var(--ocean-deep) 100%);
  border:8px solid #fff;
  box-shadow:var(--shadow-hard);
  border-radius:6px;
  transform:translate(-50%,-50%) rotate(-2deg);
}
.bg-circle{
  position:absolute;
  top:14%;right:5%;
  width:150px;height:150px;
  background:var(--sun);
  border:6px solid #fff;
  border-radius:50%;
  box-shadow:var(--shadow-sm);
  transform:rotate(9deg);
}
.bg-circle2{
  position:absolute;
  bottom:14%;left:5%;
  width:110px;height:110px;
  background:var(--pink);
  border:6px solid #fff;
  border-radius:50%;
  box-shadow:var(--shadow-sm);
  transform:rotate(-6deg);
}

.hero-deco{position:absolute;inset:0;pointer-events:none;z-index:3}
.hero-deco svg{
  position:absolute;display:block;
  filter:
    drop-shadow(2px 0 0 #fff)
    drop-shadow(-2px 0 0 #fff)
    drop-shadow(0 2px 0 #fff)
    drop-shadow(0 -2px 0 #fff)
    drop-shadow(0 6px 0 rgba(26,46,59,.2));
  animation:float 12s ease-in-out infinite;
}
@keyframes float{
  0%,100%{translate:0 0;rotate:0deg}
  50%    {translate:0 -14px;rotate:6deg}
}

.handnote{
  position:absolute;
  font-family:var(--hand);
  font-weight:700;
  color:var(--ink);
  line-height:.9;
  z-index:4;
  pointer-events:none;
  white-space:nowrap;
}
.handnote.small{font-size:22px;transform:rotate(-6deg)}
.handnote.big{font-size:32px;transform:rotate(-4deg)}

/* the little arrow next to "let's go!" */
.hero-arrow{
  position:absolute;
  bottom:36%;right:18%;
  width:70px;height:70px;
  color:var(--ink);
  pointer-events:none;
  z-index:4;
  transform:rotate(24deg);
}

.scene{
  position:relative;z-index:2;
  width:100%;max-width:1000px;
}

/* ------------------------------------------------------------
   ★ MAIN HERO TITLE — bold, bright gradient, cursive-style skew
   ------------------------------------------------------------ */
.title-en{
  font-family:var(--my);
  font-weight:900;
  font-size:clamp(32px,6.6vw,84px);
  letter-spacing:.01em;
  line-height:1.24;
  color:#FF5B4A;                          /* fallback */
  background:linear-gradient(135deg,
    #FF3D2E 0%,
    #FF6F61 28%,
    #FF8A5B 48%,
    #FFC93C 74%,
    #FF6F61 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  -webkit-text-stroke:2.5px var(--ink);
  paint-order:stroke fill;
  filter:drop-shadow(5px 6px 0 rgba(26,46,59,.9));
  transform:rotate(-1.2deg) skewX(-3deg);
  max-width:100%;
  overflow-wrap:break-word;
  padding:0 .12em;
}

/* ------------------------------------------------------------
   ★ SECONDARY HERO TITLE — bright, clear, high-contrast card
   ------------------------------------------------------------ */
.title-zh{
  font-family:var(--my);
  font-weight:800;
  font-size:clamp(14px,2.2vw,24px);
  line-height:1.65;
  color:var(--ink);
  margin-top:32px;
  display:inline-block;
  max-width:94vw;
  overflow-wrap:break-word;
  padding:12px 26px;
  background:linear-gradient(90deg,
    #FFF4C2 0%,
    #FFE9A6 50%,
    #FFD6B0 100%);
  border:3px solid var(--ink);
  border-radius:18px;
  box-shadow:5px 6px 0 var(--sunset);
  transform:rotate(-.6deg);
}

.title-my{
  font-family:var(--my);
  font-weight:700;
  font-size:clamp(14px,2.2vw,22px);
  color:var(--ocean-deep);
  margin-top:24px;
  display:inline-block;
  padding:7px 18px;
  border:3px dashed var(--ocean-deep);
  border-radius:22px;
  background:rgba(30,127,166,.10);
  line-height:1.55;
  max-width:92vw;
  white-space:normal;
  overflow-wrap:break-word;
}

.tagline{
  margin-top:34px;
  font-size:12px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;
  color:var(--shore);
  display:inline-block;
  padding:8px 18px;
  background:var(--ink);
  border-radius:4px;
  transform:rotate(-.6deg);
  box-shadow:3px 4px 0 rgba(26,46,59,.25);
}
.tagline b{color:var(--sun);font-weight:900}

/* ============================================================
   4b. ★ HERO PICTURE — the ONE image, spinning in 3D by itself
   ============================================================ */
.hero-3d{
  position:relative;
  width:min(720px,88vw);
  margin:56px auto 26px;
  perspective:2000px;
  perspective-origin:50% 46%;
}

/* layer 1 — follows the mouse (subtle) */
.hero-3d-tilt{
  transform-style:preserve-3d;
  transform:
    rotateX(var(--hy,0deg))
    rotateY(var(--hx,0deg));
  will-change:transform;
}

/* layer 2 — gentle vertical float */
.hero-3d-float{
  transform-style:preserve-3d;
  animation:heroFloat 7s ease-in-out infinite;
}
@keyframes heroFloat{
  0%,100%{transform:translateY(-8px)}
  50%    {transform:translateY(10px)}
}

/* layer 3 — the actual endless 3D spin */
.hero-3d-spin{
  position:relative;
  width:100%;
  aspect-ratio:16/9;
  transform-style:preserve-3d;
  animation:heroSpin 24s linear infinite;
}
@keyframes heroSpin{
  from{transform:rotateY(0deg)}
  to  {transform:rotateY(360deg)}
}

/* pause everything while the hero is off-screen */
.hero-3d.paused .hero-3d-float,
.hero-3d.paused .hero-3d-spin,
.hero-3d.paused .hero-3d-shadow{animation-play-state:paused}

/* the two faces of the spinning photo card */
.hero-3d .hero-3d-face{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:7px solid #fff;
  border-radius:16px;
  background:var(--shore);
  box-shadow:
    0 0 0 4px var(--ink),
    0 26px 48px -22px rgba(26,46,59,.65);
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  overflow:hidden;
}
.hero-3d-back{
  transform:translateZ(-1px) rotateY(180deg);
}

/* glossy sheen over the front side */
.hero-3d-front::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
  background:linear-gradient(115deg,
    rgba(255,255,255,.42) 0%,
    rgba(255,255,255,.10) 26%,
    rgba(255,255,255,0)   46%,
    rgba(255,255,255,0)   62%,
    rgba(255,255,255,.26) 100%);
}

/* soft shadow on the ground */
.hero-3d-shadow{
  position:absolute;
  left:50%;
  bottom:-38px;
  width:min(540px,78%);
  height:44px;
  translate:-50% 0;
  border-radius:50%;
  background:radial-gradient(ellipse at center,
    rgba(26,46,59,.34) 0%,
    rgba(26,46,59,.14) 45%,
    rgba(26,46,59,0) 72%);
  filter:blur(10px);
  pointer-events:none;
  animation:heroShadow 7s ease-in-out infinite;
}
@keyframes heroShadow{
  0%,100%{transform:scaleX(.9);opacity:.7}
  50%    {transform:scaleX(1.08);opacity:1}
}

.note{
  position:relative;
  display:inline-block;
  margin-top:34px;
  padding:24px 30px 22px;
  max-width:680px;
  background:var(--shell);
  border:3px solid var(--ink);
  box-shadow:6px 7px 0 var(--ink);
  transform:rotate(.8deg);
  text-align:left;
}
.note::before{
  content:"";
  position:absolute;
  top:-12px;left:50%;
  width:90px;height:24px;
  transform:translateX(-50%) rotate(-4deg);
  background:rgba(255,201,60,.92);
  clip-path:polygon(3% 6%,97% 0%,100% 94%,0% 100%);
  box-shadow:0 2px 6px rgba(26,46,59,.15);
}
.note .my{
  font-family:var(--my);
  font-weight:700;
  font-size:15px;
  color:var(--ink);
  line-height:1.75;
}
.note .en{
  font-family:var(--hand);
  font-weight:700;
  font-size:23px;
  color:var(--ocean-deep);
  margin-top:8px;
  line-height:1.2;
}

.hero-cta{
  display:flex;flex-wrap:wrap;gap:18px;justify-content:center;
  margin-top:44px;
}

/* ============================================================
   5. CUTOUT STICKER BUTTONS
   ============================================================ */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:16px 32px;border-radius:100px;
  font-family:var(--sans);
  font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  text-decoration:none;cursor:pointer;
  border:4px solid var(--ink);
  box-shadow:5px 6px 0 var(--ink);
  transition:transform .2s cubic-bezier(.2,.8,.2,1), box-shadow .2s, background .25s, color .25s;
  transform:rotate(-1deg);
}
.btn-primary{
  color:var(--ink);
  background:var(--sun);
}
.btn-primary:hover{
  background:var(--sunset);
  color:#fff;
  transform:translate(3px,3px) rotate(-1deg);
  box-shadow:1px 2px 0 var(--ink);
}
.btn-ghost{
  color:var(--ink);
  background:var(--shore);
  transform:rotate(1deg);
}
.btn-ghost:hover{
  background:var(--ocean);
  color:#fff;
  transform:translate(3px,3px) rotate(1deg);
  box-shadow:1px 2px 0 var(--ink);
}

.scroll-cue{
  position:absolute;bottom:56px;left:50%;translate:-50% 0;z-index:4;
  display:grid;justify-items:center;gap:8px;
  font-size:10px;font-weight:900;letter-spacing:.34em;text-transform:uppercase;
  color:var(--ink);
}
.scroll-cue i{
  display:block;width:3px;height:44px;border-radius:2px;
  background:var(--ink);
  animation:cue 1.8s ease-in-out infinite;
}
@keyframes cue{0%,100%{opacity:.3;transform:scaleY(.5)}50%{opacity:1;transform:scaleY(1)}}

/* ============================================================
   6. SECTIONS
   ============================================================ */
.section{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:100px 6vw 110px}

.sec-head{text-align:center;margin-bottom:56px}
.kicker{
  display:inline-block;
  font-size:11px;font-weight:900;letter-spacing:.32em;text-transform:uppercase;
  background:var(--ink);color:var(--shore);
  padding:6px 14px;border-radius:4px;
  transform:rotate(-1.5deg);
  margin-bottom:22px;
  box-shadow:3px 3px 0 rgba(26,46,59,.2);
}
h2{
  font-family:var(--display);font-weight:400;
  font-size:clamp(34px,5.6vw,64px);
  letter-spacing:-.02em;line-height:.98;
  color:var(--ink);
  text-shadow:6px 7px 0 var(--sun);
}
h2 .zh{
  display:block;font-family:var(--zh);font-weight:900;
  font-size:.36em;letter-spacing:.3em;text-indent:.3em;
  color:var(--dark-green);margin-top:18px;
  text-shadow:none;
}
h2 .my{
  display:block;font-family:var(--my);font-weight:700;
  font-size:.26em;letter-spacing:.02em;
  color:var(--ocean-deep);margin-top:12px;
  text-shadow:none;
  line-height:1.5;
}
.sec-head p{
  margin-top:22px;color:var(--ink-soft);
  font-size:14px;font-weight:600;letter-spacing:.02em;
}

/* #courses main heading is now Burmese — use Myanmar font */
#courses h2{
  font-family:var(--my);
  font-weight:900;
  font-size:clamp(22px,3.6vw,42px);
  line-height:1.4;
  letter-spacing:0;
  text-shadow:4px 5px 0 var(--sunset);
}
#teachers h2{text-shadow:6px 7px 0 var(--ocean)}
#showcase h2{text-shadow:6px 7px 0 var(--mint)}
#enroll h2{text-shadow:6px 7px 0 var(--purple)}

/* tighten gap between "Class Moments" and the finale poster */
#showcase{padding-bottom:8px}
#showcase .sec-head{margin-bottom:0}

/* reveal only hides content when JS is actually running */
.reveal{transition:opacity 1s ease, transform 1s cubic-bezier(.2,.8,.2,1)}
html.js .reveal{opacity:0;transform:translateY(36px)}
html.js .reveal.in{opacity:1;transform:none}

/* ============================================================
   7. PHOTO ALBUM CAROUSEL
   ============================================================ */
.stage{
  position:relative;
  height:min(80vh,700px);
  display:grid;place-items:center;
  perspective:1500px;
  perspective-origin:50% 48%;
  touch-action:pan-y;
  cursor:grab;
  user-select:none;
  -webkit-user-select:none;
}
.stage.grabbing{cursor:grabbing}
.stage::after{
  content:"";position:absolute;bottom:2%;left:50%;translate:-50% 0;
  width:min(500px,82vw);height:70px;border-radius:50%;
  background:radial-gradient(ellipse,rgba(26,46,59,.18),transparent 72%);
  filter:blur(22px);pointer-events:none;
}

.ring{
  --cw:300px; --ch:470px; --radius:460px;
  position:relative;
  width:var(--cw);height:var(--ch);
  transform-style:preserve-3d;
  transition:transform 1s cubic-bezier(.22,.85,.24,1);
  will-change:transform;
}
.ring.drag{transition:none}

/* ——— CUTE ROUNDED PHOTO CARD ——— */
.card{
  position:absolute;inset:0;
  display:flex;flex-direction:column;
  padding:16px 16px 18px;
  border-radius:22px;
  overflow:hidden;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  color:var(--ink);
  background:#FFFDF7;
  border:4px solid #fff;
  box-shadow:
    0 2px 0 rgba(255,255,255,.9) inset,
    8px 10px 0 var(--ink),
    0 30px 50px -28px rgba(26,46,59,.55);
}

.card::before,
.card::after{
  content:"";
  position:absolute;
  border-radius:50%;
  z-index:0;
  pointer-events:none;
}
.card::before{
  width:36px;height:36px;
  top:-10px;left:-10px;
  background:var(--sun);
  border:3px solid #fff;
  box-shadow:0 3px 0 rgba(26,46,59,.15);
}
.card::after{
  width:26px;height:26px;
  top:-6px;right:-6px;
  background:var(--pink);
  border:3px solid #fff;
  box-shadow:0 3px 0 rgba(26,46,59,.15);
}

.card .card-img{
  height:200px;
  margin-top:6px;
  border:4px solid #fff;
  border-radius:18px;
  box-shadow:
    0 0 0 3px var(--card-accent, var(--sun)),
    0 6px 14px rgba(26,46,59,.15);
  flex:none;
  background:#F4F0E6;
  position:relative;
  z-index:1;
}

.card .w{
  margin:16px 4px 0;
  padding-top:14px;
  border-top:2px dashed rgba(26,46,59,.20);
  position:relative;
  z-index:1;
}
.card .w::before{
  content:"";
  position:absolute;
  top:-9px;left:50%;
  transform:translateX(-50%) rotate(-3deg);
  width:64px;height:16px;
  background:var(--card-tape, rgba(255,201,60,.85));
  clip-path:polygon(3% 6%,97% 0%,100% 94%,0% 100%);
  box-shadow:0 1px 3px rgba(26,46,59,.12);
}

.card .idx{
  display:inline-block;
  align-self:flex-start;
  font-size:9px;font-weight:900;letter-spacing:.20em;text-transform:uppercase;
  color:#fff;
  background:var(--card-accent, var(--sun));
  padding:5px 11px;
  border-radius:100px;
  border:2px solid #fff;
  box-shadow:0 2px 0 rgba(26,46,59,.15);
  margin:4px 0 2px;
  position:relative;
  z-index:1;
}

.card .en{
  display:block;
  font-family:var(--hand);
  font-weight:700;
  font-size:clamp(22px,2.3vw,27px);
  line-height:1.05;
  color:var(--ink);
  margin-top:6px;
  position:relative;
  z-index:1;
}
.card .zh{
  display:block;margin-top:6px;
  font-family:var(--zh);font-weight:900;
  font-size:15px;letter-spacing:.08em;
  color:var(--dark-green);
  position:relative;
  z-index:1;
}
.card .my{
  display:block;margin-top:6px;
  font-family:var(--my);font-weight:600;
  font-size:11px;line-height:1.65;
  color:var(--ink-soft);
  position:relative;
  z-index:1;
}
.card .bottom-bar{
  height:6px;border-radius:100px;
  background:var(--card-accent, var(--sun));
  margin-top:auto;
  position:relative;
  z-index:1;
}

/* ——— per-card candy palette ——— */
.ring .card:nth-child(1){
  --card-accent:#FFC93C;
  --card-tape:rgba(255,201,60,.85);
  background:linear-gradient(165deg,#FFFDF5 0%,#FFF3CC 100%);
}
.ring .card:nth-child(2){
  --card-accent:#FF8A5B;
  --card-tape:rgba(255,138,91,.82);
  background:linear-gradient(165deg,#FFFDF5 0%,#FFE3D3 100%);
}
.ring .card:nth-child(3){
  --card-accent:#FF9A8B;
  --card-tape:rgba(255,154,139,.82);
  background:linear-gradient(165deg,#FFFDF5 0%,#FFDCD6 100%);
}
.ring .card:nth-child(4){
  --card-accent:#3FB8D9;
  --card-tape:rgba(63,184,217,.80);
  background:linear-gradient(165deg,#FFFDF5 0%,#D6F1F8 100%);
}
.ring .card:nth-child(5){
  --card-accent:#7BE0B0;
  --card-tape:rgba(123,224,176,.82);
  background:linear-gradient(165deg,#FFFDF5 0%,#DEF7EB 100%);
}
.ring .card:nth-child(6){
  --card-accent:#FFD27A;
  --card-tape:rgba(255,210,122,.85);
  background:linear-gradient(165deg,#FFFDF5 0%,#FFEFD6 100%);
}
.ring .card:nth-child(7){
  --card-accent:#8DE8C0;
  --card-tape:rgba(141,232,192,.82);
  background:linear-gradient(165deg,#FFFDF5 0%,#E3F8F0 100%);
}
.ring .card:nth-child(8){
  --card-accent:#B79CFF;
  --card-tape:rgba(183,156,255,.82);
  background:linear-gradient(165deg,#FFFDF5 0%,#EEE7FF 100%);
}

.controls{
  display:flex;align-items:center;justify-content:center;gap:26px;
  margin-top:18px;
}
.controls button{
  width:56px;height:56px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--sun);color:var(--ink);
  border:4px solid var(--ink);
  box-shadow:4px 5px 0 var(--ink);
  font-size:24px;font-weight:900;line-height:1;cursor:pointer;
  transition:transform .2s, box-shadow .2s, background .25s, color .25s;
}
.controls button:hover{
  background:var(--sunset);color:#fff;
  transform:translate(2px,2px);
  box-shadow:1px 2px 0 var(--ink);
}
#counter{
  display:inline-block;
  padding:10px 18px;
  background:var(--ink);color:var(--shore);
  border-radius:100px;
  font-size:11px;font-weight:900;letter-spacing:.24em;
  min-width:110px;text-align:center;
  transform:rotate(-1deg);
}

/* ============================================================
   8. TEACHER FLIP CARDS
   ============================================================ */
.flipgrid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(224px,1fr));
  gap:26px;
  max-width:1060px;margin:0 auto;
  perspective:1300px;
}
.flip{
  position:relative;
  height:224px;
  perspective:1000px;
  cursor:pointer;
  overflow:visible;
}
.flip::before{
  content:"";
  position:absolute;
  top:-12px;left:50%;
  transform:translateX(-50%) rotate(-4deg);
  width:76px;height:24px;
  background:rgba(255,201,60,.92);
  clip-path:polygon(3% 6%,97% 0%,100% 94%,0% 100%);
  box-shadow:0 2px 6px rgba(26,46,59,.18);
  z-index:5;
}
.flipgrid > .flip:nth-child(odd){transform:rotate(-1.6deg)}
.flipgrid > .flip:nth-child(even){transform:rotate(1.6deg) translateY(8px)}

.flip-inner{
  position:relative;width:100%;height:100%;
  transform-style:preserve-3d;
  transition:transform .85s cubic-bezier(.2,.8,.2,1);
}
.flip:hover .flip-inner,
.flip:focus-visible .flip-inner,
.flip.on .flip-inner{transform:rotateY(180deg)}

.face{
  position:absolute;inset:0;
  display:grid;place-content:center;gap:8px;text-align:center;
  border-radius:8px;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  border:5px solid #fff;
  box-shadow:7px 9px 0 var(--ink), 0 24px 44px -26px rgba(26,46,59,.5);
  padding:16px;
}
.face.front{background:var(--shore);position:relative}
.face.back{transform:rotateY(180deg);background:var(--mint)}

.face-avatar{
  position:absolute;
  top:-14px;right:-14px;
  width:58px;height:58px;
  border-radius:50%;
  border-width:3px;
  box-shadow:3px 3px 0 var(--ink);
  transform:rotate(6deg);
  z-index:6;
  font-size:8px !important;
  letter-spacing:.08em !important;
}

.face .word{
  font-family:var(--display);font-weight:400;
  font-size:22px;letter-spacing:-.01em;
  color:var(--ink);
  line-height:1.05;
}
.face .tag{
  font-size:10px;font-weight:900;letter-spacing:.26em;text-transform:uppercase;
  color:var(--ink-soft);
  background:rgba(26,46,59,.08);
  padding:4px 10px;border-radius:100px;
  display:inline-block;
  justify-self:center;
}
.face .ico{
  width:40px;height:40px;margin:0 auto 2px;
  color:var(--ink);
}
.face.back .desc{
  font-family:var(--my);
  font-size:12.5px;font-weight:600;
  line-height:1.75;
  color:var(--ink);
  padding:0 4px;
}
.face.back .tag{
  background:var(--ink);color:var(--shore);
}

.flipgrid > .flip:nth-child(1) .front{background:var(--sun)}
.flipgrid > .flip:nth-child(1) .back {background:var(--pink)}
.flipgrid > .flip:nth-child(2) .front{background:var(--pink)}
.flipgrid > .flip:nth-child(2) .back {background:var(--ocean)}
.flipgrid > .flip:nth-child(3) .front{background:var(--ocean)}
.flipgrid > .flip:nth-child(3) .back {background:var(--purple)}
.flipgrid > .flip:nth-child(4) .front{background:var(--purple)}
.flipgrid > .flip:nth-child(4) .back {background:var(--sunset)}
.flipgrid > .flip:nth-child(5) .front{background:var(--sunset)}
.flipgrid > .flip:nth-child(5) .back {background:var(--lime)}
.flipgrid > .flip:nth-child(6) .front{background:var(--lime)}
.flipgrid > .flip:nth-child(6) .back {background:var(--sun)}

.flipgrid > .flip:nth-child(2) .front .word,
.flipgrid > .flip:nth-child(2) .front .tag,
.flipgrid > .flip:nth-child(3) .front .word,
.flipgrid > .flip:nth-child(3) .front .tag,
.flipgrid > .flip:nth-child(4) .front .word,
.flipgrid > .flip:nth-child(4) .front .tag{
  color:#fff;
}
.flipgrid > .flip:nth-child(2) .front .ico,
.flipgrid > .flip:nth-child(3) .front .ico,
.flipgrid > .flip:nth-child(4) .front .ico{
  color:#fff;
}
.flipgrid > .flip:nth-child(2) .front .tag,
.flipgrid > .flip:nth-child(3) .front .tag,
.flipgrid > .flip:nth-child(4) .front .tag{
  background:rgba(255,255,255,.22);
  color:#fff;
}

.rule-note{
  margin-top:46px;text-align:center;
  font-size:14px;font-weight:700;letter-spacing:.02em;
  color:var(--ink-soft);
}
.rule-note b{
  color:var(--ink);
  background:var(--sun);
  padding:2px 8px;border-radius:3px;
}

/* ============================================================
   9. FINALE
   ============================================================ */
.finale{
  position:relative;z-index:2;
  min-height:92vh;
  display:grid;place-items:center;
  text-align:center;
  padding:40px 6vw 220px;
  overflow:hidden;
}

.finale-bg{position:absolute;inset:0;pointer-events:none;z-index:0}
.fb-sheet{
  position:absolute;
  top:50%;left:50%;
  width:min(980px,94vw);
  height:min(820px,86vh);
  background:linear-gradient(170deg, var(--sun) 0%, #FFD96B 60%, var(--sunset) 100%);
  border:8px solid #fff;
  box-shadow:var(--shadow-hard);
  border-radius:8px;
  transform:translate(-50%,-50%) rotate(1.8deg);
}
.fb-star{
  position:absolute;
  top:12%;right:8%;
  width:90px;height:90px;
  color:var(--red);
  transform:rotate(12deg);
  filter:
    drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff)
    drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff)
    drop-shadow(0 6px 0 rgba(26,46,59,.25));
}
.fb-heart{
  position:absolute;
  bottom:18%;left:7%;
  width:70px;height:70px;
  color:var(--purple);
  transform:rotate(-14deg);
  filter:
    drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff)
    drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff)
    drop-shadow(0 6px 0 rgba(26,46,59,.25));
}

.finale-inner{position:relative;z-index:2;max-width:820px}

.finale-visual{
  width:min(780px,92vw);
  aspect-ratio:16/9;
  margin:0 auto 30px;
  transform:rotate(.8deg);
  box-shadow:var(--shadow-sm);
}

.finale h2{
  font-size:clamp(36px,6.6vw,82px);
  line-height:.98;
  text-shadow:8px 9px 0 var(--ink);
}
.finale h2 em{
  font-style:normal;
  background:var(--shore);
  padding:0 .06em;
  border:5px solid var(--ink);
  box-shadow:6px 7px 0 var(--ink);
  display:inline-block;
  transform:rotate(-1.5deg);
  text-shadow:none;
}

/* zh-line is now Burmese — use Myanmar font */
.finale .zh-line{
  font-family:var(--my);
  font-weight:800;
  font-size:clamp(15px,2.2vw,22px);
  letter-spacing:0;
  text-indent:0;
  color:var(--ink);
  margin-top:28px;
  background:var(--shore);
  display:inline-block;
  padding:8px 22px;
  border:3px solid var(--ink);
  box-shadow:4px 4px 0 var(--ink);
  border-radius:14px;
  line-height:1.55;
}
.finale .my-line{
  font-family:var(--my);font-weight:700;
  font-size:clamp(14px,2vw,19px);
  color:var(--ink);
  margin-top:18px;
  display:inline-block;
  padding:5px 16px;
  border:3px dashed var(--ink);
  border-radius:100px;
  background:rgba(26,46,59,.06);
  line-height:1.55;
}
.finale p.lead{
  margin-top:22px;color:var(--ink);font-weight:600;
  font-size:14.5px;letter-spacing:.02em;
}
.finale .hero-cta{margin-top:40px}

.steps{
  list-style:none;text-align:left;
  max-width:660px;margin:38px auto 0;
  counter-reset:step;
}
.steps li{
  position:relative;
  padding:18px 22px 18px 62px;
  margin-bottom:14px;
  background:var(--shell);
  border:3px solid var(--ink);
  box-shadow:5px 6px 0 var(--ink);
  font-size:13.5px;font-weight:700;
  color:var(--ink);
  counter-increment:step;
  transform:rotate(-.4deg);
}
.steps li:nth-child(even){transform:rotate(.5deg) translateX(4px)}
.steps li::before{
  content:counter(step);
  position:absolute;left:16px;top:50%;
  transform:translateY(-50%);
  width:34px;height:34px;
  display:grid;place-items:center;
  border-radius:50%;
  background:var(--sun);
  border:3px solid var(--ink);
  color:var(--ink);
  font-size:14px;font-weight:900;
  font-family:var(--sans);
}
.steps li:nth-child(2)::before{background:var(--pink)}
.steps li:nth-child(3)::before{background:var(--mint)}
.steps li:nth-child(4)::before{background:var(--ocean);color:#fff}
.steps li:nth-child(5)::before{background:var(--purple);color:#fff}

.steps li .my{
  display:block;margin-top:6px;
  font-size:12.5px;font-weight:600;
  color:var(--ink-soft);
  font-family:var(--my);
  line-height:1.75;
}

.tiny{
  margin-top:26px;font-size:11px;font-weight:800;letter-spacing:.24em;
  text-transform:uppercase;color:var(--ink-soft);
  display:inline-block;
  padding:6px 14px;
  background:rgba(26,46,59,.08);
  border-radius:100px;
}

.finale-garden{
  position:absolute;left:0;right:0;bottom:-6px;height:180px;
  pointer-events:none;z-index:1;
}
.finale-garden svg{
  position:absolute;bottom:0;display:block;
  filter:
    drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff)
    drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff)
    drop-shadow(0 6px 0 rgba(26,46,59,.2));
}
.fg-1{left:2%;width:150px;height:150px;color:var(--mint)}
.fg-2{left:18%;width:96px;height:96px;color:var(--red)}
.fg-3{left:32%;width:64px;height:64px;color:var(--ocean)}
.fg-4{left:46%;width:110px;height:110px;color:var(--sunset)}
.fg-5{right:18%;width:88px;height:88px;color:var(--purple)}
.fg-6{right:3%;width:140px;height:140px;color:var(--lime)}
.fg-7{right:34%;width:58px;height:58px;color:var(--pink)}

/* ============================================================
   10. FOOTER
   ============================================================ */
footer{
  position:relative;z-index:2;
  max-width:1200px;margin:0 auto;
  padding:36px 6vw 70px;
  border-top:3px solid var(--ink);
  text-align:center;
  font-size:11px;font-weight:800;letter-spacing:.24em;text-transform:uppercase;
  color:var(--ink-soft);
  background:linear-gradient(180deg, transparent 0%, rgba(63,184,217,.18) 100%);
}
footer span{
  color:var(--ink);
  background:var(--sun);
  padding:2px 8px;
  border:2px solid var(--ink);
  border-radius:3px;
  display:inline-block;
  transform:rotate(-1deg);
}

/* ============================================================
   11. FOCUS / ACCESSIBILITY
   ============================================================ */
a:focus-visible,
button:focus-visible,
.flip:focus-visible{
  outline:3px solid var(--ocean-deep);
  outline-offset:3px;
  border-radius:6px;
}
.controls button:focus-visible{outline-offset:4px}

/* ============================================================
   12. RESPONSIVE
   ============================================================ */
@media (max-width:900px){
  .bg-sheet{height:min(640px,76vh)}
  .handnote.big{font-size:26px}
  .handnote.small{font-size:18px}
}

@media (max-width:820px){
  nav ul{gap:16px}
  nav ul li:not(:last-child){display:none}
  .ring{--cw:256px;--ch:440px;--radius:350px}
  .stage{height:min(76vh,600px)}
  .card{padding:12px 12px 14px;border-radius:18px}
  .card .card-img{height:170px;border-radius:14px}
  .card .en{font-size:22px}
  .card .zh{font-size:14px}
  .card .my{font-size:10.5px}
  .section{padding:80px 6vw}
  .scroll-cue{display:none}
  .flip{height:206px}
  .flipgrid > .flip:nth-child(even){transform:rotate(1.2deg) translateY(6px)}
  .face-avatar{width:48px;height:48px;top:-10px;right:-10px}
  .finale{padding-bottom:180px}
  .finale-garden{height:140px}
  .fg-2,.fg-3,.fg-5{display:none}
  .bg-circle,.bg-circle2{width:90px;height:90px}
  .note{padding:20px 20px 18px}
  .note .en{font-size:20px}
  .hero{padding:150px 6vw 130px}
  .hero-3d{width:min(640px,90vw);margin-top:40px}
  .hero-3d .hero-3d-face{border-width:6px;border-radius:14px}
  .hero-arrow{display:none}
}

@media (max-width:520px){
  .title-en{
    font-size:clamp(26px,7.4vw,46px);
    line-height:1.26;
    -webkit-text-stroke:1.6px var(--ink);
    filter:drop-shadow(3px 4px 0 rgba(26,46,59,.9));
    transform:rotate(-1deg) skewX(-2.4deg);
  }
  .title-zh{
    font-size:clamp(13px,3.4vw,18px);
    margin-top:24px;
    padding:10px 18px;
    border-radius:14px;
    box-shadow:4px 5px 0 var(--sunset);
  }
  .title-my{font-size:clamp(12px,3.2vw,16px);padding:6px 14px}
  .tagline{font-size:10px;letter-spacing:.16em;padding:7px 14px}
  .handnote{display:none}
  .steps li{padding:16px 16px 16px 56px;font-size:12.5px}
  .steps li::before{left:12px;width:30px;height:30px;font-size:12px}
  .note .my{font-size:13px}
  .note .en{font-size:18px}
  .img-slot{border-width:3px}
  .hero-3d{margin-top:34px}
  .hero-3d .hero-3d-face{border-width:5px;border-radius:12px}
  .hero-3d-shadow{bottom:-26px;height:32px}
}

@media (max-width:480px){
  .ring{--cw:220px;--ch:410px;--radius:300px}
  .card{padding:10px 10px 12px;border-radius:16px}
  .card .card-img{height:150px;border-radius:12px}
  .card .en{font-size:20px}
  .card .zh{font-size:13px}
  .card .my{font-size:10px}
  .flip{height:196px}
  .face .word{font-size:20px}
  .face.back .desc{font-size:11.5px}
  .face-avatar{width:42px;height:42px;top:-8px;right:-8px}
  #counter{font-size:10px;padding:8px 12px;min-width:92px}
  .controls button{width:48px;height:48px;font-size:20px}
}

@media (prefers-reduced-motion:reduce){
  *{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  .hero-3d-tilt{transform:none !important}
}