:root{
  --bg1:#e9f3ff; --bg2:#fff6df; --ink:#23264a; --muted:#6b6f93; --card:#fff;
  --pri:#5b6cff; --pri-d:#3f4fe0; --ok:#22b573; --ok-l:#dcf7ea; --bad:#ff5a6e; --bad-l:#ffe3e7;
  --sun:#ffc531; --pink:#ff7ab6; --teal:#20c3c3; --orange:#ff9a3c; --purple:#9b6bff;
  --r:22px; --shadow:0 6px 0 rgba(35,38,74,.08), 0 10px 24px rgba(35,38,74,.08);
  font-family: "Nunito","Segoe UI Rounded","SF Pro Rounded",system-ui,-apple-system,"PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Noto Sans SC",sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{background:var(--bg2)}
html,body{margin:0;min-height:100%;color:var(--ink)}
body{min-height:100vh;background:linear-gradient(160deg,var(--bg1),var(--bg2)) fixed}
body{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
body.no-tabs{padding-bottom:20px}
a{color:var(--pri);text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
input{font:inherit}
.hidden{display:none!important}
.app{max-width:900px;margin:0 auto;padding:14px 14px 24px}
.loading{text-align:center;font-size:24px;padding:80px 0;color:var(--muted)}

/* top bar */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));background:rgba(255,255,255,.85);backdrop-filter:blur(8px);border-bottom:2px solid #eef0ff}
.brand{font-weight:900;font-size:20px;color:var(--ink);white-space:nowrap}
.top-right{display:flex;align-items:center;gap:8px}
.icon-btn{width:44px;height:44px;border-radius:14px;background:#f1f3ff;font-size:22px}
.me-chip{display:flex;align-items:center;gap:6px;background:#f1f3ff;border-radius:16px;padding:4px 10px 4px 4px;color:var(--ink);font-weight:800;max-width:160px}
.me-chip .av{font-size:26px;width:36px;height:36px;display:grid;place-items:center;background:#fff;border-radius:12px}
.me-chip .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:999px;font-weight:800;font-size:14px;background:#fff3d6;color:#a35b00}
.chip.streak:empty{display:none}

/* tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:space-around;background:#fff;border-top:2px solid #eef0ff;
  padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
.tabbar a{flex:1;max-width:220px;display:flex;flex-direction:column;align-items:center;font-size:13px;font-weight:800;color:var(--muted);padding:6px;border-radius:16px}
.tabbar a span{font-size:26px;line-height:1.1}
.tabbar a.active{color:var(--pri);background:#eef0ff}

/* generic */
h1{font-size:28px;margin:8px 0 12px} h2{font-size:22px;margin:18px 0 10px} h3{font-size:18px;margin:12px 0 8px}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;margin:12px 0}
.muted{color:var(--muted)} .small{font-size:14px} .center{text-align:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:56px;padding:12px 22px;border-radius:18px;font-weight:900;font-size:19px;
  background:var(--pri);color:#fff;box-shadow:0 5px 0 var(--pri-d);transition:transform .08s, box-shadow .08s;user-select:none}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--pri-d)}
.btn[disabled]{opacity:.45;pointer-events:none}
.btn.big{width:100%;font-size:22px;min-height:64px}
.btn.ok{background:var(--ok);box-shadow:0 5px 0 #168a56}
.btn.sun{background:var(--sun);color:#4a3500;box-shadow:0 5px 0 #d69c00}
.btn.ghost{background:#fff;color:var(--ink);box-shadow:0 5px 0 #dfe2f5;border:2px solid #e6e8fa}
.btn.small{min-height:44px;font-size:16px;padding:8px 14px;border-radius:14px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row.stretch>*{flex:1}
.field{width:100%;font-size:22px;padding:16px 18px;border-radius:18px;border:3px solid #dfe3ff;background:#fff;outline:none;color:var(--ink)}
.field:focus{border-color:var(--pri)}
label.lbl{display:block;font-weight:800;margin:14px 0 6px}
.err{color:var(--bad);font-weight:800;min-height:1.4em;margin-top:8px}

/* login */
.hero{text-align:center;padding:24px 0 6px}
.hero .owl{font-size:84px;line-height:1;animation:bob 2.4s ease-in-out infinite}
.hero h1{font-size:34px;margin:8px 0 4px}
@keyframes bob{50%{transform:translateY(-8px) rotate(-4deg)}}
.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:10px}
.avatar-grid button{font-size:38px;height:68px;border-radius:18px;background:#f4f5ff;border:3px solid transparent}
.avatar-grid button.sel{border-color:var(--pri);background:#e7e9ff;transform:scale(1.06)}
.grade-pick{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.grade-pick button{height:56px;border-radius:16px;background:#f4f5ff;font-weight:900;font-size:20px;border:3px solid transparent}
.grade-pick button.sel{border-color:var(--pri);background:#e7e9ff}

/* home */
.hello{display:flex;align-items:center;gap:14px}
.hello .av{font-size:52px;width:72px;height:72px;display:grid;place-items:center;background:#fff;border-radius:22px;box-shadow:var(--shadow)}
.lvl{flex:1}
.bar{height:16px;border-radius:99px;background:#e9ebff;overflow:hidden}
.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--sun),var(--orange));border-radius:99px;transition:width 1s}
.tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{flex:none;min-height:48px;padding:8px 16px;border-radius:999px;background:#fff;font-weight:900;font-size:16px;box-shadow:0 3px 0 #e3e6fb;white-space:nowrap}
.tabs button.sel{background:var(--pri);color:#fff;box-shadow:0 3px 0 var(--pri-d)}
.quiz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.quiz-card{display:flex;gap:14px;align-items:center;background:#fff;border-radius:var(--r);padding:16px;box-shadow:var(--shadow);text-align:left;width:100%;border:3px solid transparent}
.quiz-card:active{transform:scale(.98)}
.quiz-card .ico{font-size:34px;width:62px;height:62px;flex:none;display:grid;place-items:center;border-radius:18px}
.quiz-card .t{font-weight:900;font-size:18px;line-height:1.25}
.quiz-card .m{font-size:13px;color:var(--muted);margin-top:4px}
.stars{letter-spacing:2px;font-size:16px}
.tag{display:inline-block;font-size:12px;font-weight:900;padding:2px 8px;border-radius:99px;background:#fff0c2;color:#8a5a00;margin-right:4px}
.subj-math{background:#e5f0ff}.subj-chinese{background:#ffe6e6}.subj-malay{background:#fff3cc}.subj-english{background:#e6fff4}.subj-science{background:#efe6ff}.subj-history{background:#ffeedd}
.empty{text-align:center;color:var(--muted);padding:30px 10px}

/* quiz */
.quiz-top{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.quiz-top .x{width:48px;height:48px;border-radius:14px;background:#fff;font-size:22px;box-shadow:0 3px 0 #e3e6fb}
.progress{flex:1;height:18px;border-radius:99px;background:#fff;overflow:hidden;box-shadow:inset 0 0 0 2px #e3e6fb}
.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--ok));transition:width .3s}
.timer{font-weight:900;min-width:64px;text-align:right;font-variant-numeric:tabular-nums}
.timer.warn{color:var(--bad);animation:pulse 1s infinite}
@keyframes pulse{50%{transform:scale(1.12)}}
.qcard{background:#fff;border-radius:28px;box-shadow:var(--shadow);padding:22px 18px;animation:pop .25s ease-out}
@keyframes pop{from{transform:scale(.96);opacity:.3}}
.qnum{font-weight:900;color:var(--pri);font-size:15px}
.qtype{float:right;font-size:12px;font-weight:900;color:var(--muted);background:#f1f3ff;border-radius:99px;padding:3px 10px}
.qtext{font-size:26px;font-weight:900;line-height:1.35;margin:10px 0 18px;word-break:break-word}
.opts{display:grid;gap:12px}
.opt{display:flex;align-items:center;gap:12px;min-height:64px;padding:12px 16px;border-radius:20px;background:#f5f6ff;border:3px solid #e3e6fb;font-size:22px;font-weight:800;text-align:left;width:100%}
.opt .k{flex:none;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#fff;font-size:18px;font-weight:900;color:var(--pri)}
.opt.sel{background:#e7e9ff;border-color:var(--pri)}
.opt.sel .k{background:var(--pri);color:#fff}
.opts.two{grid-template-columns:1fr 1fr}
.opt.tf{flex-direction:column;justify-content:center;min-height:120px;font-size:24px;text-align:center}
.opt.tf .e{font-size:44px}
.img-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.img-opt{min-height:120px;border-radius:22px;background:#f5f6ff;border:3px solid #e3e6fb;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px;gap:4px}
.img-opt .e{font-size:34px;line-height:1.2;word-break:break-all;text-align:center}
.img-opt .l{font-weight:900;color:var(--muted)}
.img-opt.sel{border-color:var(--pri);background:#e7e9ff}
.unit{font-size:20px;font-weight:900;color:var(--muted)}
.match{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.match .col{display:grid;gap:10px;align-content:start}
.mitem{min-height:60px;border-radius:18px;background:#f5f6ff;border:3px solid #e3e6fb;font-size:19px;font-weight:800;padding:10px;position:relative}
.mitem.active{border-color:var(--pri);background:#e7e9ff;transform:scale(1.03)}
.mitem .dot{position:absolute;top:-8px;right:-8px;width:26px;height:26px;border-radius:50%;color:#fff;font-size:14px;display:grid;place-items:center;font-weight:900}
.order-slots{display:grid;gap:10px;margin-bottom:14px}
.slot{min-height:58px;border-radius:18px;border:3px dashed #cfd4fb;display:flex;align-items:center;gap:10px;padding:8px 12px;font-size:20px;font-weight:800;color:var(--muted)}
.slot.filled{border-style:solid;border-color:var(--pri);background:#e7e9ff;color:var(--ink)}
.slot .n{width:32px;height:32px;border-radius:10px;background:#fff;display:grid;place-items:center;font-weight:900;color:var(--pri);flex:none}
.pool{display:flex;flex-wrap:wrap;gap:10px}
.pool button{min-height:56px;padding:8px 18px;border-radius:18px;background:#fff6d6;border:3px solid #ffe08a;font-size:20px;font-weight:900}
.pool button.used{visibility:hidden}
.hint-box{margin-top:14px;padding:12px 14px;border-radius:16px;background:#fff6d6;font-weight:700}
.quiz-nav{display:flex;gap:10px;margin-top:16px}
.quiz-nav .btn{flex:1}
.dots{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-top:14px}
.dots button{width:34px;height:34px;border-radius:50%;background:#fff;font-weight:900;font-size:14px;box-shadow:0 2px 0 #e3e6fb}
.dots button.done{background:var(--teal);color:#fff}
.dots button.cur{outline:3px solid var(--pri)}

/* result */
.reveal{text-align:center;padding:26px 16px}
.big-stars{font-size:62px;letter-spacing:6px;min-height:80px}
.big-stars span{display:inline-block;transform:scale(0);filter:grayscale(1);opacity:.35}
.big-stars span.on{animation:starIn .5s cubic-bezier(.2,1.6,.4,1) forwards;filter:none;opacity:1}
.big-stars span.off{animation:starIn .5s forwards}
@keyframes starIn{to{transform:scale(1)}}
.score-num{font-size:68px;font-weight:900;line-height:1;margin:6px 0}
.score-num small{font-size:30px;color:var(--muted)}
.cheer{font-size:24px;font-weight:900}
.pills{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.pill{background:#f1f3ff;border-radius:99px;padding:8px 14px;font-weight:900}
.pill.xp{background:#fff0c2;color:#8a5a00}
.badge-new{display:flex;align-items:center;gap:12px;background:linear-gradient(90deg,#fff3c4,#ffe0f0);border-radius:18px;padding:12px;margin:8px 0;animation:pop .5s}
.badge-new .e{font-size:40px}
.rev{border-radius:18px;padding:14px;margin:10px 0;border:3px solid}
.rev.ok{background:var(--ok-l);border-color:#a6e9c9}
.rev.bad{background:var(--bad-l);border-color:#ffc2ca}
.rev .q{font-weight:900;font-size:18px}
.rev .a{margin-top:6px}
.rev .ex{margin-top:6px;color:#3c4066;font-size:15px}
.lb{display:grid;gap:8px}
.lb-row{display:flex;align-items:center;gap:10px;background:#fff;border-radius:16px;padding:10px 12px;box-shadow:0 3px 0 #eceefc;color:var(--ink)}
.lb-row.me{background:#fff6d6;box-shadow:0 3px 0 #ffe08a}
.lb-row .rk{width:36px;font-weight:900;font-size:20px;text-align:center}
.lb-row .av{font-size:28px}
.lb-row .nm{flex:1;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-row .sc{font-weight:900;text-align:right}
.lb-row .sc small{display:block;color:var(--muted);font-weight:700}
.podium{display:flex;justify-content:center;align-items:flex-end;gap:10px;margin:10px 0 16px}
.podium>div{text-align:center;background:#fff;border-radius:18px 18px 8px 8px;padding:8px;width:31%;max-width:150px;box-shadow:var(--shadow)}
.podium .av{font-size:30px;margin:4px auto}.podium .nm{font-weight:900;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.podium .p1{height:180px;background:#fff3c4}.podium .p2{height:156px}.podium .p3{height:140px}

/* profile */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.stat{background:#fff;border-radius:18px;padding:14px;box-shadow:0 3px 0 #eceefc;text-align:center}
.stat b{display:block;font-size:28px}
.stat span{font-size:13px;color:var(--muted);font-weight:800}
.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.bdg{text-align:center;background:#fff;border-radius:18px;padding:10px 6px;box-shadow:0 3px 0 #eceefc;font-size:12px;font-weight:800}
.bdg .e{font-size:36px;display:block}
.bdg.locked{filter:grayscale(1);opacity:.4}
.chart{width:100%;height:auto;display:block}
table{width:100%;border-collapse:collapse;font-size:15px}
th,td{padding:9px 8px;text-align:left;border-bottom:1px solid #eef0fb;vertical-align:top}
th{font-size:13px;color:var(--muted);text-transform:uppercase}
tr.click{cursor:pointer} tr.click:hover{background:#f7f8ff}
.tbl-wrap{overflow-x:auto}
.pct{font-weight:900}
.pct.lo{color:var(--bad)} .pct.mid{color:#d68a00} .pct.hi{color:var(--ok)}

/* misc */
.toast{position:fixed;left:50%;bottom:110px;transform:translateX(-50%) translateY(30px);background:var(--ink);color:#fff;padding:12px 18px;border-radius:14px;font-weight:800;opacity:0;pointer-events:none;transition:.25s;z-index:50;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%)}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:40;width:100%;height:100%}
.levelup{font-size:22px;font-weight:900;color:var(--purple);animation:pulse 1s 3}

@media (min-width:700px){
  .qtext{font-size:30px}
  .img-grid{grid-template-columns:repeat(4,1fr)}
  .app{padding:20px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===== engagement additions ===== */
/* themes */
body[data-theme="ocean"]{--bg1:#dff7ff;--bg2:#e3fff4;--pri:#1f8fff;--pri-d:#0b6fd6}
body[data-theme="candy"]{--bg1:#ffe6f4;--bg2:#fff3d9;--pri:#ff4fa3;--pri-d:#d92f82}
body[data-theme="forest"]{--bg1:#e4f8e0;--bg2:#fbf6dc;--pri:#2aa55a;--pri-d:#1b7f42}
body[data-theme="night"]{--bg1:#d9dcff;--bg2:#efe2ff;--pri:#6b4dff;--pri-d:#4d31d9}
.swatch{display:block;width:100%;height:34px;border-radius:12px;margin-bottom:6px}
.sw-sky{background:linear-gradient(135deg,#e9f3ff,#fff6df)}.sw-ocean{background:linear-gradient(135deg,#9fe3ff,#b6ffe0)}
.sw-candy{background:linear-gradient(135deg,#ffb3dc,#ffe7a8)}.sw-forest{background:linear-gradient(135deg,#a8e6a0,#f3e9a6)}.sw-night{background:linear-gradient(135deg,#6b4dff,#c9a8ff)}

/* avatar frames */
.av{position:relative}
.av.big{font-size:52px;width:76px;height:76px;display:grid;place-items:center;background:#fff;border-radius:22px;box-shadow:var(--shadow);flex:none}
.hello>.av{font-size:52px;width:76px;height:76px;display:grid;place-items:center;background:#fff;border-radius:22px;box-shadow:var(--shadow);flex:none}
.frame-sun{box-shadow:0 0 0 4px #ffc531,0 0 14px 4px #ffe48a!important}
.frame-star{box-shadow:0 0 0 4px #ff9a3c,0 0 0 8px #ffe08a!important}
.frame-star::after{content:'⭐';position:absolute;top:-10px;right:-10px;font-size:20px}
.frame-fire{box-shadow:0 0 0 4px #ff5a3c,0 0 16px 5px #ffb36b!important}
.frame-fire::after{content:'🔥';position:absolute;bottom:-8px;right:-8px;font-size:20px}
.frame-rainbow{box-shadow:0 0 0 3px #ff5a6e,0 0 0 6px #ffc531,0 0 0 9px #22b573,0 0 0 12px #5b6cff!important}
.frame-galaxy{background:radial-gradient(circle,#4b2bbf,#1a1050)!important;box-shadow:0 0 0 4px #9b6bff,0 0 18px 6px #b59bff!important}
.frame-crown{box-shadow:0 0 0 4px #e0a800!important}
.frame-crown::after{content:'👑';position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-size:22px}
.lb-row .av,.podium .av{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#f6f7ff;font-size:26px}
.lb-row .av[class*="frame-"]:not(.frame-none),.podium .av[class*="frame-"]:not(.frame-none){box-shadow:0 0 0 3px #ffc531}
.me-chip .av{font-size:24px;width:36px;height:36px;display:grid;place-items:center;background:#fff;border-radius:12px}
.unlock-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px}
.unlock-grid button{background:#f4f5ff;border:3px solid transparent;border-radius:18px;padding:12px 6px;font-weight:800;font-size:13px;display:flex;flex-direction:column;align-items:center;gap:6px}
.unlock-grid button .av{font-size:28px;width:48px;height:48px;display:grid;place-items:center;background:#fff;border-radius:14px}
.unlock-grid button.sel{border-color:var(--pri);background:#e7e9ff}
.unlock-grid button.locked{opacity:.5;filter:grayscale(.8)}
.unlock-grid small{font-size:11px;color:var(--muted)}

/* pet */
.pet-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px}
.pet-pick button{background:#f4f5ff;border:3px solid transparent;border-radius:18px;padding:10px 4px;font-weight:800;font-size:13px}
.pet-pick button .e{display:block;font-size:38px}
.pet-pick button.sel{border-color:var(--pri);background:#e7e9ff}
.home-hello{position:relative;flex-wrap:wrap}
.pet-box{display:flex;flex-direction:column;align-items:center;gap:2px;flex:none;width:112px;background:none}
.pet-cap{font-size:11px;font-weight:800;text-align:center;line-height:1.25}
.pet{position:relative;display:flex;flex-direction:column;align-items:center;padding-top:30px}
.pet-body{font-size:54px;line-height:1;animation:idle 2.6s ease-in-out infinite;transform-origin:50% 100%}
.pet-sm .pet-body{font-size:40px}.pet-sm{padding-top:0}
.pet-lg .pet-body{font-size:76px}
.pet-shadow{width:46px;height:8px;border-radius:50%;background:rgba(35,38,74,.12);margin-top:2px;animation:shadow 2.6s ease-in-out infinite}
.stage-0 .pet-body{animation:wobble 2s ease-in-out infinite}
.stage-4 .pet-body{filter:drop-shadow(0 0 10px #ffd84d) drop-shadow(0 0 4px #ff9be0)}
.stage-4::before{content:'✨';position:absolute;top:24px;left:-6px;font-size:18px;animation:twinkle 1.6s infinite}
.bubble{position:absolute;top:-6px;right:-4px;left:-30px;background:#fff;border-radius:14px;padding:4px 8px;font-size:11px;font-weight:800;box-shadow:0 3px 8px rgba(35,38,74,.12);text-align:center;line-height:1.2;z-index:2}
.pet-lg .bubble{position:static;margin-bottom:8px;font-size:15px;padding:8px 14px}
.pet.hop .pet-body,.pet.happy .pet-body{animation:hop .5s ease-out 3}
.heart{position:absolute;font-size:22px;opacity:0;animation:float 1.6s ease-out .4s 2}
.h1{left:10%;top:40%}.h2{right:10%;top:30%;animation-delay:.7s}.h3{left:45%;top:20%;animation-delay:1s}
.pet-react{margin:12px auto 4px;display:flex;justify-content:center}
@keyframes idle{0%,100%{transform:translateY(0) scaleY(1)}50%{transform:translateY(-6px) scaleY(1.03)}}
@keyframes shadow{50%{transform:scaleX(.8);opacity:.7}}
@keyframes wobble{0%,100%{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}
@keyframes hop{0%,100%{transform:translateY(0)}40%{transform:translateY(-22px) rotate(-6deg)}70%{transform:translateY(0) scale(1.08,.92)}}
@keyframes float{0%{opacity:0;transform:translateY(10px)}30%{opacity:1}100%{opacity:0;transform:translateY(-40px)}}
@keyframes twinkle{50%{opacity:.2;transform:scale(.7)}}
@media (max-width:420px){.home-hello .lvl{min-width:0;flex:1 1 120px}.pet-box{width:96px}}

/* nudges */
.nudges{display:grid;gap:10px;margin:12px 0}
.nudge{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:20px;background:#fff;box-shadow:var(--shadow);color:var(--ink);font-size:15px;line-height:1.35}
.nudge .ne{font-size:34px;flex:none}
.nudge .nt{flex:1}
.nudge .go{flex:none;background:var(--pri);color:#fff;font-weight:900;border-radius:14px;padding:10px 14px;box-shadow:0 3px 0 var(--pri-d)}
.nudge.daily{background:linear-gradient(100deg,#fff2b8,#ffd9ec)}
.nudge.daily .go{background:#ff9a3c;box-shadow:0 3px 0 #d6741c}
.nudge.done{background:#e6fff4}
.nudge.streak.warn{background:#fff3e0}
.nudge.fix{background:#eaf4ff}
.nudge.beat{background:#f3ecff}

/* chapter map */
.maps{display:grid;gap:14px}

.map-card{padding:16px 14px;margin:0;border-top:8px solid var(--sc)}
.map-head{display:flex;align-items:center;gap:10px}
.map-ico{font-size:30px;width:50px;height:50px;border-radius:16px;display:grid;place-items:center;background:color-mix(in srgb,var(--sc) 15%,white)}
.map{position:relative;margin-top:6px}
.map-path{position:absolute;inset:0;width:100%;height:100%}
.node{position:absolute;transform:translate(-50%,-38px);display:flex;flex-direction:column;align-items:center;width:150px;background:none}
.node .disc{width:76px;height:76px;border-radius:50%;display:grid;place-items:center;font-weight:900;font-size:22px;color:#fff;background:var(--sc);box-shadow:0 6px 0 color-mix(in srgb,var(--sc) 70%,black);border:4px solid #fff}
.node.fresh .disc{background:color-mix(in srgb,var(--sc) 45%,white)}
.node.gold .disc{background:linear-gradient(135deg,#ffd84d,#ff9a3c);box-shadow:0 6px 0 #c77b00}
.node.next .disc{animation:pulseRing 1.6s infinite}
.node:active .disc{transform:translateY(4px);box-shadow:0 2px 0 color-mix(in srgb,var(--sc) 70%,black)}
.node .nstars{font-size:15px;letter-spacing:1px;margin-top:4px}
.node .nlabel{font-size:13px;font-weight:800;text-align:center;line-height:1.2;max-width:150px}
.next-tag{position:absolute;top:-26px;background:#ff9a3c;color:#fff;font-weight:900;font-size:12px;padding:3px 10px;border-radius:99px;white-space:nowrap;animation:bob 1.6s ease-in-out infinite}
@keyframes pulseRing{0%{box-shadow:0 6px 0 color-mix(in srgb,var(--sc) 70%,black),0 0 0 0 color-mix(in srgb,var(--sc) 60%,transparent)}70%{box-shadow:0 6px 0 color-mix(in srgb,var(--sc) 70%,black),0 0 0 16px transparent}}

/* runner: combo + feedback */
.combo-chip{font-weight:900;font-size:16px;padding:6px 10px;border-radius:99px;background:#fff;color:#c2410c;opacity:0;transform:scale(.6);transition:.2s}
.combo-chip.on{opacity:1;transform:scale(1);background:linear-gradient(90deg,#ffd84d,#ff9a3c);color:#5a2400;box-shadow:0 3px 0 #d6741c}
.combo-chip.bump{animation:bump .5s}
@keyframes bump{40%{transform:scale(1.5) rotate(-6deg)}}
.combo-pop{display:inline-block;background:linear-gradient(90deg,#ff9a3c,#ff5a6e);color:#fff;border-radius:99px;padding:2px 10px;font-size:16px;animation:bump .6s}
.run-banner{text-align:center;font-weight:900;border-radius:16px;padding:8px;margin-bottom:10px}
.run-banner.daily{background:linear-gradient(100deg,#fff2b8,#ffd9ec)}
.run-banner.fix{background:#eaf4ff}
.src{font-size:13px;font-weight:800;color:var(--muted);margin-top:6px}
.locked .opt,.locked .img-opt,.locked .mitem,.locked .slot,.locked .field{pointer-events:none}
.locked .opt:not(.sel),.locked .img-opt:not(.sel){opacity:.55}
button[disabled].opt,button[disabled].img-opt,button[disabled].mitem,button[disabled].slot{color:inherit}
.feedback{margin-top:16px;padding:14px 16px;border-radius:18px;font-size:16px;animation:pop .3s}
.feedback.ok{background:var(--ok-l);border:3px solid #a6e9c9}
.feedback.try{background:#fff4dc;border:3px solid #ffd98a}
.fb-msg{font-size:20px;font-weight:900;margin-bottom:4px}
.feedback .ex{margin-top:6px;color:#3c4066}
.dots button.right{background:var(--ok);color:#fff}
.dots button.tried{background:#ffc531;color:#5a3d00}
.dots button[disabled]{opacity:.5}
.rev.try{background:#fff7e6;border-color:#ffd98a}
.rev .enc{font-weight:900;color:#a35b00;margin-top:4px}

.podium .av{display:grid;width:48px;height:48px}
.pet-card{display:flex;align-items:center;gap:14px;padding:12px 16px}
.pet-card .pet{padding-top:0}
.pet-btn{background:none;flex:none;width:86px}
.pet-talk{flex:1;min-width:0}
.say{position:relative;background:#f4f5ff;border-radius:16px;padding:10px 12px;font-weight:800;font-size:15px;line-height:1.3}
.say::before{content:'';position:absolute;left:-8px;top:18px;border:8px solid transparent;border-right-color:#f4f5ff;border-left:0}
.pet-meta{font-size:12px;font-weight:800;color:var(--muted);margin-top:6px}
.bar.thin{height:8px;margin-top:4px}
.bar.thin>i{background:linear-gradient(90deg,#9b6bff,#ff7ab6)}

.subj-tabs button{font-size:15px;min-height:44px;padding:6px 14px}
.subj-tabs button.sel{background:var(--sc);box-shadow:0 3px 0 rgba(0,0,0,.18)}
.subj-tabs .small{opacity:.8;font-weight:700}

/* Standard picker in the hello card */
.home-hello{z-index:5}
.home-hello .lvl{min-width:0}
.hello-top{display:flex;align-items:flex-start;gap:8px;margin-bottom:2px}
.hi-name{flex:1 1 auto;min-width:0;font-size:22px;font-weight:900;line-height:1.2;overflow-wrap:break-word}
.std-pick{position:relative;flex:none;margin-top:-2px}
.std-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:15px;font-weight:900;color:#fff;background:var(--pri);border:0;border-radius:999px;min-height:44px;padding:8px 14px;box-shadow:0 3px 0 var(--pri-d);cursor:pointer;white-space:nowrap;transition:transform .12s,box-shadow .12s}
.std-btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--pri-d)}
.std-btn:focus-visible{outline:3px solid var(--pri-d);outline-offset:3px}
.std-btn .caret{display:inline-block;transition:transform .2s ease}
.std-pick.open .std-btn .caret{transform:rotate(180deg)}
.std-pick.solo .std-btn{cursor:default}.std-pick.solo .caret{display:none}
.std-pop{position:absolute;right:0;top:calc(100% + 10px);z-index:60;list-style:none;margin:0;padding:8px;width:max-content;min-width:250px;max-width:calc(100vw - 28px);background:var(--card);border-radius:20px;box-shadow:0 14px 34px rgba(35,38,74,.22),0 2px 0 #e3e6fb;transform-origin:top right;opacity:0;transform:scale(.9) translateY(-6px);transition:opacity .16s ease,transform .18s cubic-bezier(.2,.9,.3,1.3);outline:none}
.std-pop::before{content:'';position:absolute;top:-7px;right:26px;width:14px;height:14px;background:var(--card);transform:rotate(45deg);border-radius:3px;box-shadow:-2px -2px 3px rgba(35,38,74,.06)}
.std-pop.show{opacity:1;transform:none}
.std-pop li{position:relative;display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 12px;border-radius:14px;cursor:pointer;color:var(--ink);font-size:16px;border:2px solid transparent}
.std-pop li+li{margin-top:4px}
.std-pop li .ge{font-size:26px;width:40px;height:40px;display:grid;place-items:center;background:#f4f5ff;border-radius:12px;flex:none}
.std-pop li .gl{flex:1;display:flex;flex-direction:column;line-height:1.25}
.std-pop li .gl b{font-weight:900;white-space:nowrap}.std-pop li .gl small{white-space:nowrap}
.std-pop li .gl small{font-size:12px;font-weight:800;color:var(--muted);margin-top:2px}
.std-pop li .gk{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:900;flex:none}
.std-pop li.active{background:#f4f5ff}
.std-pop li.sel{border-color:var(--pri);background:color-mix(in srgb,var(--pri) 10%,#fff)}
.std-pop li.sel .gl b{color:var(--pri-d)}
.std-pop li.sel .gk{background:var(--pri);color:#fff;box-shadow:0 2px 0 var(--pri-d)}
.std-pop li.sel .ge{background:#fff}
@media (prefers-reduced-motion:reduce){.std-pop,.std-btn .caret{transition:none}}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:420px){
 .home-hello{gap:10px}.home-hello>.av{width:58px;height:58px;font-size:40px;border-radius:18px}
 .hi-name{font-size:19px}.std-btn{font-size:13.5px;padding:8px 11px;gap:6px}
}
/* passcode pad */
.pc-wrap{position:relative}
.pc-field{letter-spacing:.35em;font-weight:900;text-align:center;padding-right:64px}
.pc-field::placeholder{letter-spacing:.2em}
.pc-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:14px;font-size:24px;background:#f1f3ff}
.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0 4px}
.pad button{min-height:60px;border-radius:18px;font-size:28px;font-weight:900;background:#fff;color:var(--ink);border:3px solid #e6e8fa;box-shadow:0 4px 0 #dfe2f5;transition:transform .06s}
.pad button:active{transform:translateY(3px);box-shadow:0 1px 0 #dfe2f5}
.pad .pad-fn{font-size:18px;background:#f4f5ff;color:var(--muted)}
.wrong-box{margin-top:14px;padding:12px;border-radius:18px;background:var(--bad-l);display:flex;flex-direction:column;gap:10px}
.wrong-box .btn{width:100%;white-space:normal;text-align:center}
.tip{background:#fff6df;border-radius:14px;padding:10px 12px;margin:8px 0 12px;font-weight:700}
/* header chip: never overflow; keep the duplicate-name tag visible */
.topbar{min-width:0}
.top-right{min-width:0;flex-shrink:1}
.me-chip{min-width:0}
.me-chip .nm{min-width:0}
.me-chip .tg{flex-shrink:0;font-size:13px;color:var(--muted)}
@media (max-width:380px){.topbar.tight .brand span{display:none}}
/* ---- home: subject tiles ---- */
.home-h,.me-h{margin:18px 4px 10px;font-size:22px}
.subj-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}
@media (min-width:600px){.subj-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:900px){.subj-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.subj-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;min-width:0;
  padding:12px 12px 10px;border-radius:20px;background:color-mix(in srgb,var(--sc) 13%,#fff);border:3px solid color-mix(in srgb,var(--sc) 35%,#fff);
  box-shadow:0 4px 0 color-mix(in srgb,var(--sc) 30%,#fff);color:var(--ink);transition:transform .12s,box-shadow .12s,background .12s}
.subj-tile:active{transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,var(--sc) 30%,#fff)}
.subj-tile:focus-visible{outline:4px solid color-mix(in srgb,var(--sc) 55%,#fff);outline-offset:2px}
.st-ico{font-size:34px;line-height:1;width:52px;height:52px;display:grid;place-items:center;border-radius:16px;background:#fff;box-shadow:0 2px 0 color-mix(in srgb,var(--sc) 25%,#fff)}
.st-name{font-size:17px;font-weight:800;line-height:1.2;overflow-wrap:anywhere;margin-top:4px}
.st-name b{font-weight:900;color:color-mix(in srgb,var(--sc) 75%,#000)}
.st-hint{font-size:12px;line-height:1.3;color:var(--muted);font-weight:700;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-stars{display:flex;align-items:center;gap:6px;width:100%;font-size:13px;font-weight:900;margin-top:4px;white-space:nowrap}
.st-stars small{font-weight:700;opacity:.75}
.st-bar{flex:1;min-width:24px;height:8px;border-radius:8px;background:#fff;overflow:hidden}
.st-bar i{display:block;height:100%;background:var(--sc);border-radius:8px}
.subj-tile.sel{background:var(--sc);border-color:color-mix(in srgb,var(--sc) 70%,#000);border-width:4px;color:#fff;
  transform:translateY(-3px);box-shadow:0 7px 0 color-mix(in srgb,var(--sc) 65%,#000),0 10px 18px color-mix(in srgb,var(--sc) 35%,transparent)}
.subj-tile.sel .st-name b,.subj-tile.sel .st-hint{color:#fff}
.subj-tile.sel .st-hint{opacity:.92}
.subj-tile.sel .st-bar{background:rgba(255,255,255,.35)} .subj-tile.sel .st-bar i{background:#fff}
.subj-tile.sel::after{content:'✓';position:absolute;top:8px;right:10px;width:26px;height:26px;border-radius:50%;background:#fff;color:var(--sc);display:grid;place-items:center;font-weight:900;font-size:15px}
.subj-grid.compact{gap:10px}
.subj-grid.compact .subj-tile{padding:9px 10px 8px}
.subj-grid.compact .st-ico{font-size:26px;width:40px;height:40px;border-radius:12px}
.subj-grid.compact .st-name{font-size:15px}
.subj-grid.compact .st-hint{font-size:11px}
#mapAnchor{scroll-margin-top:72px}
/* ---- Me tab dot ---- */
.tabbar a{position:relative}
.tab-dot{position:absolute;top:2px;left:calc(50% + 8px);min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--bad);color:#fff;font-size:12px;font-style:normal;font-weight:900;display:grid;place-items:center;box-shadow:0 0 0 2px #fff;animation:dotpop .5s ease-out}
@keyframes dotpop{0%{transform:scale(0)}70%{transform:scale(1.2)}100%{transform:scale(1)}}
@media (prefers-reduced-motion: reduce){.tab-dot{animation:none}.subj-tile{transition:none}}
/* XP scale chips (lower / higher Standard) */
.xp-chip{display:inline-block;margin-top:4px;padding:3px 10px;border-radius:12px;font-size:13px;font-weight:900;white-space:nowrap}
.xp-chip.revision{background:#fff1cc;color:#8a5a00}
.xp-chip.practice{background:#eceef5;color:#555a7a}
.xp-chip.challenge{background:#e3f7ec;color:#137a45}
.node-xp{display:block;margin:2px auto 0;width:max-content;padding:1px 7px;border-radius:10px;font-size:11px;font-weight:900}
.node-xp.revision{background:#fff1cc;color:#8a5a00} .node-xp.practice{background:#eceef5;color:#555a7a} .node-xp.challenge{background:#e3f7ec;color:#137a45}
.run-banner.xp{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:#fff;border:2px dashed #e6e8fa}
.xp-tip{font-weight:800;color:var(--pri)}
/* ---- compact sign-in / sign-up (fits a 360×640 phone; nothing moves while typing a passcode) ---- */
body.is-login{padding-bottom:0}
body.is-login .app{padding:8px 12px 10px}
.login-hero{display:flex;align-items:center;justify-content:center;gap:10px;padding:2px 0 0;text-align:left}
.login-hero .owl{font-size:42px}
.login-hero h1{font-size:24px;margin:0;line-height:1.15}
.login-hero .sub{font-size:13.5px;font-weight:800}
.login-card{max-width:560px;margin:8px auto;padding:12px 14px}
.login-card label.lbl{margin:6px 0 4px;font-size:15.5px}
.login-card .field{font-size:20px;padding:0 14px;height:50px;border-width:3px}
.login-card .pc-field{padding-right:56px}
.login-card .pc-eye{width:40px;height:40px;font-size:20px;right:5px}
.pc-hint{font-size:12.5px;height:18px;line-height:18px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.login-card .pad{gap:6px;margin:6px 0 0}
.login-card .pad button{min-height:0;height:44px;border-radius:14px;font-size:22px;border-width:2px;box-shadow:0 3px 0 #dfe2f5;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.login-card .pad button:active{transform:translateY(2px);box-shadow:0 1px 0 #dfe2f5}
.login-card .pad .pad-fn{font-size:15px}
.login-card .err{font-size:14px;line-height:1.3;min-height:2.6em;margin:4px 0 2px}
.login-card .btn{min-height:52px;font-size:19px}
.login-card .btn.big{min-height:52px;font-size:20px}
.login-card .pad button,.login-card .btn{-webkit-touch-callout:none}
.login-foot{margin:6px 0 0;font-size:12.5px}
.login-h{margin:0 0 2px;font-size:20px}
.login-p{margin:0;font-size:13.5px;line-height:1.35}
.login-admin{margin:4px 0 0}
.login-card .wrong-box{margin-top:8px}
.login-card .grade-note{min-height:2.6em;margin-top:6px;line-height:1.3}
.grade-pick.need{border-radius:18px;outline:3px dashed var(--bad);outline-offset:4px;animation:needShake .4s}
.grade-pick.need button{background:var(--bad-l)}
@keyframes needShake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
@media (max-height:600px){.login-hero .owl{font-size:32px}.login-card .pad button{height:40px}}
.login-card .row .btn{padding:10px 12px;font-size:17px;white-space:nowrap}

/* ---------- pet collection: hats, effects, shiny, shelf, egg modal ---------- */
.pet-stage{position:relative;display:flex;justify-content:center}
.pet-body{position:relative;display:inline-block}
.pet-e{display:inline-block}
.pet-hat{position:absolute;left:50%;top:-.42em;font-size:.5em;transform:translateX(-50%) rotate(-12deg);filter:drop-shadow(0 2px 1px rgba(0,0,0,.18));pointer-events:none}
.pet-hat.hat-crown,.pet-hat.hat-grad{top:-.46em;transform:translateX(-50%) rotate(-6deg)}
.pet-hat.hat-bow,.pet-hat.hat-flower{left:72%;top:-.2em;font-size:.42em}
.fx-aura{position:absolute;inset:-18% -14%;border-radius:50%;background:radial-gradient(circle,rgba(255,216,77,.75) 0%,rgba(255,190,60,.35) 45%,transparent 70%);animation:aura 2.4s ease-in-out infinite;z-index:0}
.pet-stage>.pet-body{z-index:1}
@keyframes aura{50%{transform:scale(1.15);opacity:.65}}
.fx-i{position:absolute;font-size:.3em;animation:twinkle 1.6s ease-in-out infinite;pointer-events:none;z-index:2}
.pet-md .fx-i{font-size:16px}.pet-lg .fx-i{font-size:22px}.pet-sm .fx-i{font-size:12px}
.fx-i.s1,.fx-i.h1{left:-14%;top:10%}.fx-i.s2,.fx-i.h2{right:-16%;top:-4%;animation-delay:.5s}.fx-i.s3,.fx-i.h3{right:-10%;bottom:8%;animation-delay:1s}
.fx-hearts .fx-i{animation:floatUp 2.4s ease-in-out infinite}
@keyframes floatUp{0%{opacity:0;transform:translateY(8px) scale(.7)}40%{opacity:1}100%{opacity:0;transform:translateY(-22px) scale(1.1)}}
.pet.shiny .pet-e{animation:shinyHue 3s linear infinite;filter:drop-shadow(0 0 6px #fff6a8) drop-shadow(0 0 10px #ff9be0)}
@keyframes shinyHue{0%{filter:drop-shadow(0 0 6px #fff6a8) drop-shadow(0 0 10px #ff9be0) saturate(1.3)}50%{filter:drop-shadow(0 0 10px #a8f0ff) drop-shadow(0 0 14px #c9a8ff) saturate(1.6) brightness(1.08)}100%{filter:drop-shadow(0 0 6px #fff6a8) drop-shadow(0 0 10px #ff9be0) saturate(1.3)}}
.sparkle{position:absolute;color:#ffcf33;font-size:14px;animation:twinkle 1.2s ease-in-out infinite;text-shadow:0 0 6px #fff;z-index:2;pointer-events:none}
.pet-lg .sparkle{font-size:20px}
.sparkle.k1{left:-6%;top:-6%}.sparkle.k2{right:-8%;top:30%;animation-delay:.4s}.sparkle.k3{left:6%;bottom:-2%;animation-delay:.8s}
.shiny-badge{position:absolute;right:-12%;bottom:-6%;font-size:15px;background:#fff;border-radius:50%;width:22px;height:22px;display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.15);z-index:3}
.pet-sm .shiny-badge{width:18px;height:18px;font-size:11px}
.shiny-tag{display:inline-block;background:linear-gradient(90deg,#fff1a8,#ffd1f0,#c8f0ff);color:#7a4b00;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:900}
.shiny-bar i{background:linear-gradient(90deg,#ffd84d,#ff9be0,#7fd8ff)!important}
.egg-cta{margin-top:8px}
@media (prefers-reduced-motion:reduce){.fx-aura,.fx-i,.sparkle,.pet.shiny .pet-e{animation:none}}
/* mini pet (leaderboards, admin) */
.mini-pet{position:relative;display:inline-flex;align-items:flex-end;font-size:22px;line-height:1;margin-left:4px;flex:none}
.mini-pet .mp-hat{position:absolute;left:50%;top:-9px;font-size:11px;transform:translateX(-50%) rotate(-10deg)}
.mini-pet .mp-s{font-size:10px;margin-left:-4px}
.mini-pet.shiny .mp-e{filter:drop-shadow(0 0 4px #ffd84d)}
.mini-shelf{display:flex;flex-wrap:wrap;gap:14px}.ms-pet{display:flex;flex-direction:column;align-items:center;gap:2px;padding-top:8px}.ms-pet small{font-size:10px;font-weight:800;color:var(--muted)}
/* shelf + wardrobe */
.shelf-card h3{margin-bottom:8px}
.shelf{display:flex;gap:10px;overflow-x:auto;padding:6px 2px 10px;scroll-snap-type:x mandatory}
.shelf-pet{flex:none;width:104px;scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;gap:2px;background:#f4f5ff;border:3px solid transparent;border-radius:18px;padding:16px 4px 8px;font-weight:800;font-size:12px;color:var(--ink);text-align:center}
.shelf-pet.sel{border-color:var(--pri);background:#e7e9ff}
.shelf-pet.legend{background:linear-gradient(160deg,#fff7d6,#ffe8f4)}
.shelf-pet.legend.sel{border-color:#ffb800}
.shelf-pet .pet{padding-top:0}
.sp-name{font-size:12px}.sp-stage{font-size:11px;color:var(--muted)}
.sp-active{font-size:10px;background:#dcf7ea;color:#168a56;border-radius:999px;padding:1px 6px}
.egg-slot{border:3px dashed #cfd3f5;background:#fafbff;justify-content:center;min-height:120px}
.egg-slot .egg-e{font-size:34px;opacity:.45}
.egg-slot.ready{border-color:#ffb800;background:#fff7d6;animation:pulse 1.4s infinite}
.egg-slot.ready .egg-e{opacity:1;animation:wobble 1.2s ease-in-out infinite}
.wardrobe{border-top:2px dashed #e6e8fa;margin-top:6px;padding-top:10px}
.wd-head{display:flex;align-items:center;gap:14px}
.wd-head .pet{padding-top:14px;width:86px;flex:none}
.wd-head .btn{margin-top:6px}
.acc-grid button .e{display:block;font-size:26px}
/* results */
.pet-pill{background:#fff1d6}
.pet-prog{margin:2px 0 6px}
.pet-event{display:flex;align-items:center;gap:12px;background:linear-gradient(90deg,#e8f6ff,#efe7ff);border-radius:18px;padding:12px;margin:8px 0;animation:pop .5s;text-align:left}
.pet-event .e{font-size:38px;flex:none}.pet-event>div{flex:1}
.pet-event.legend{background:linear-gradient(90deg,#fff3c4,#ffe0a8)}
.pet-event.shiny-ev{background:linear-gradient(90deg,#fff1a8,#ffd1f0,#c8f0ff)}
.pet-event.egg-ev{background:linear-gradient(90deg,#fff7d6,#ffe8f4);border:2px solid #ffcf33}
.pet-event.acc-ev{background:linear-gradient(90deg,#ffe0f0,#f3e8ff)}
/* modal */
body.modal-open{overflow:hidden}
.modal-back{position:fixed;inset:0;background:rgba(35,38,74,.55);display:flex;align-items:center;justify-content:center;padding:16px;z-index:60;animation:fadeIn .2s}
.modal{width:100%;max-width:420px;max-height:calc(100vh - 32px);overflow:auto;animation:pop .35s;margin:0}
@keyframes fadeIn{from{opacity:0}}
.egg-hero{position:relative;display:flex;justify-content:center;padding-top:6px}
.egg-big{font-size:72px;animation:wobble 1.2s ease-in-out infinite;display:inline-block}
.egg-burst{position:absolute;right:28%;top:0;font-size:30px;animation:twinkle 1.4s infinite}
.egg-pick{grid-template-columns:repeat(3,1fr)}
.hatch-reveal{display:flex;justify-content:center;padding-top:6px}
.hatch-reveal .pet-body{animation:hop .6s ease-out 3}
.modal .row.stretch .btn{font-size:16px;padding-left:10px;padding-right:10px;white-space:nowrap}
.acc-grid{grid-template-columns:repeat(3,1fr)!important;gap:8px}
.acc-grid button{padding:8px 4px;font-size:11px}
.acc-grid button .e{font-size:24px}
.acc-grid button small{font-size:9.5px;line-height:1.2}
/* rush nudge, second chance, comeback */
.rush-nudge{display:flex;align-items:center;gap:10px;background:#fff7d6;border:2px solid #ffcf33;border-radius:18px;padding:8px 12px;margin:0 0 10px}
.rush-nudge.pop{animation:pop .5s,needShake .4s .5s 2}
.rn-pet{font-size:34px;animation:wobble 1.4s ease-in-out infinite;flex:none}
.rn-say{font-weight:900;font-size:15px;line-height:1.3}.rn-say small{display:block;font-weight:700;color:var(--muted);font-size:12px}
.sc-chip{float:right;font-size:12px;font-weight:900;background:#fff1d6;color:#9a6200;border-radius:999px;padding:2px 8px;margin-left:6px}
.sc-chip.used{background:#eef0fb;color:#9aa0c8}
.feedback.retry{background:#fff7d6;border:2px solid #ffcf33}
.half-pop{display:inline-block;background:#ffcf33;color:#5a3a00;border-radius:999px;padding:0 8px;font-size:13px;margin-left:4px}
.quiz-nav #reveal,.quiz-nav #retry{flex:1}
.comeback-pill{background:#dff3ff}.great-pill{background:#fff1d6}.rush-pill{background:#ffe9d6}
.pet-event.comeback-ev{background:linear-gradient(90deg,#d9f5ff,#e5ffe9)}
.pet-event.great-ev{background:linear-gradient(90deg,#fff3c4,#fff)}
.pet-event.rush-ev{background:#fff7e6;border:2px dashed #ffb347}
.quiz-nav.pend #prev{display:none}
.quiz-top .sc-chip{float:none;margin:0;flex:none}
