:root{--bg: #f7f9fc;--card: #ffffff;--card-soft: #f1f5f9;--border: #e4e8ef;--border-strong: #d6dbe4;--text: #3c4043;--text-dim: #7c8598;--green: #58cc02;--green-press: #46a302;--blue: #1cb0f6;--blue-press: #1391cf;--yellow: #ffc800;--yellow-press: #e0a800;--red: #ff4b4b;--purple: #ce82ff;--radius: 18px;--radius-sm: 14px;--font: "Nunito", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app-shell{max-width:1080px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding:16px 20px;gap:16px}.stack{max-width:680px;width:100%;margin-inline:auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{font-weight:900;font-size:22px;letter-spacing:.3px;color:var(--green)}.brand span{color:var(--blue)}.kc-badge{background:#fff8e1;border:2px solid #ffe9a8;border-radius:999px;padding:6px 14px;font-weight:800;color:#e0a800;font-size:15px}.card{background:var(--card);border:2px solid var(--border);border-radius:var(--radius);padding:20px}h1{font-size:24px;font-weight:900;margin:0 0 6px}h2{font-size:19px;font-weight:800;margin:0 0 12px}.muted{color:var(--text-dim);font-size:14px;line-height:1.55;font-weight:600}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:var(--radius-sm);padding:14px 20px;font-family:var(--font);font-weight:800;font-size:15px;letter-spacing:.6px;text-transform:uppercase;cursor:pointer;color:#fff;background:var(--green);box-shadow:0 4px 0 var(--green-press);transition:filter .12s ease,transform .04s ease,box-shadow .04s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{filter:brightness(1.03)}.btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--green-press)}.btn.secondary{background:var(--blue);box-shadow:0 4px 0 var(--blue-press)}.btn.secondary:active{box-shadow:0 0 0 var(--blue-press)}.btn.ghost{background:#fff;color:var(--text-dim);border:2px solid var(--border-strong);box-shadow:0 4px 0 var(--border)}.btn.ghost:active{box-shadow:0 0 0 var(--border)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.speaker{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:2px solid var(--border);background:#eaf6ff;color:var(--blue);width:44px;height:44px;border-radius:50%;font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;box-shadow:0 3px 0 var(--border)}.speaker:active{transform:translateY(3px);box-shadow:none}.hero{text-align:center}.hero .avatar{font-size:64px;line-height:1;margin:4px 0}.path{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0 24px}.path-node{display:flex;flex-direction:column;align-items:center;text-decoration:none;color:var(--text)}.path-connector{width:5px;height:22px;border-radius:3px;background:var(--border-strong)}.node-btn{width:92px;height:92px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:44px;border:none;background:var(--green);box-shadow:0 7px 0 var(--green-press);color:#fff}.node-btn.blue{background:var(--blue);box-shadow:0 6px 0 var(--blue-press)}.node-btn.purple{background:var(--purple);box-shadow:0 6px #a95fd6}.path-node:active .node-btn{transform:translateY(6px);box-shadow:none}.path-node.locked .node-btn{background:#e0e5ec;box-shadow:0 6px #c9d0da;color:#aab2bf}.node-label{font-weight:800;font-size:13px;margin-top:6px;color:var(--text-dim)}.node-phase{font-size:11px;color:var(--text-dim);font-weight:700;margin-top:8px;text-transform:uppercase;letter-spacing:.5px}.snake{position:relative;width:100%}.snake-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;width:120px;z-index:1}.snake-node .path-node{width:100%}.snake-conn{position:absolute;background:var(--border-strong);border-radius:6px;z-index:0}.snake-conn.h{height:10px;transform:translateY(-50%)}.snake-conn.v{width:10px;transform:translate(-50%)}@media (max-width: 420px){.snake-node{width:96px}.node-btn{width:80px;height:80px;font-size:38px}}.home{display:grid;grid-template-columns:1fr 320px;gap:24px;align-items:start}.home-main{display:grid;gap:16px}.pet-panel{position:sticky;top:16px;text-align:center}.pet-avatar-big{font-size:90px;line-height:1;margin-top:4px}.pet-picker-label{margin-top:16px;font-weight:800}.pet-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}.pet-choice{font-size:28px;padding:10px 0;border-radius:14px;border:2px solid var(--border);background:var(--card-soft);cursor:pointer;box-shadow:0 3px 0 var(--border);transition:transform .04s ease}.pet-choice.active{border-color:var(--green);background:#eefbe3;box-shadow:0 3px 0 var(--green-press)}.pet-choice:active{transform:translateY(3px);box-shadow:none}@media (max-width: 820px){.home{grid-template-columns:1fr}.pet-panel{position:static}}.vp-idle{transform-box:fill-box;transform-origin:50% 92%;animation:vp-breathe 2.4s ease-in-out infinite}@keyframes vp-breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.05)}}.player-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:999px;background:var(--card);border:2px solid var(--border);text-decoration:none;color:var(--text);font-weight:800;font-size:14px}.player-chip-avatar{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:15px}.child-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}.child-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 12px;border:3px solid var(--border);border-radius:var(--radius);background:var(--card);cursor:pointer;box-shadow:0 4px 0 var(--border)}.child-card:active{transform:translateY(3px);box-shadow:none}.child-card.active{box-shadow:0 0 0 3px #58cc0233}.child-avatar{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;font-size:40px;color:#fff}.child-avatar.sm{width:40px;height:40px;font-size:22px}.child-name{font-weight:800;font-size:16px}.avatar-picker{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.avatar-choice{font-size:22px;width:40px;height:40px;border-radius:12px;border:2px solid var(--border);background:var(--card-soft);cursor:pointer}.avatar-choice.active{border-color:var(--green);background:#eefbe3}.assign-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.assign-chip{padding:8px 12px;border-radius:999px;border:2px solid var(--border);background:var(--card);font-weight:700;font-size:13px;cursor:pointer}.assign-chip.on{font-weight:800}.activity-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.activity-card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:16px 12px;border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--card-soft);color:var(--text);text-decoration:none;box-shadow:0 3px 0 var(--border);transition:transform .05s ease}.activity-card:active{transform:translateY(3px);box-shadow:none}.activity-card.done{border-color:var(--green);background:#f2fbe8;box-shadow:0 3px 0 var(--green-press)}.activity-icon{font-size:40px;line-height:1}.activity-title{font-weight:800}.activity-sub{font-size:12px}.activity-check{position:absolute;top:8px;right:10px;color:var(--green-press);font-weight:900;font-size:18px}.week-complete{margin-top:12px;padding:12px;border-radius:var(--radius-sm);background:#f2fbe8;border:2px solid var(--green);font-weight:800;text-align:center}.pet-list{display:grid;gap:12px;margin-top:6px}.pet-page-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.pet-card{position:relative;text-align:center;padding:14px 12px;border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--card-soft)}.pet-card.active{border-color:var(--green);background:#f2fbe8;box-shadow:0 0 0 3px #58cc0226}.pet-card-avatar{font-size:56px;line-height:1}.pet-card-name{font-weight:800;margin-top:2px}.buddy-badge{position:absolute;top:8px;right:8px;background:var(--green);color:#fff;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px}.feed-row{display:flex;gap:8px;justify-content:center;margin-top:10px}.btn.tiny{padding:8px 12px;font-size:14px;flex:1}.add-pet-btn{width:100%;margin-top:12px}.pet-card-tools{display:flex;gap:12px;justify-content:center;margin-top:10px}.link-btn{background:none;border:none;color:var(--blue);font-weight:700;font-size:13px;cursor:pointer;padding:2px 4px}.link-btn.danger{color:var(--text-dim)}.link-btn:hover{text-decoration:underline}.roadmap{display:grid;gap:10px}.roadmap-item{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--card);border:2px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;color:var(--text)}.roadmap-item.locked{opacity:.55}.roadmap-item .phase-tag{font-size:12px;color:var(--text-dim);font-weight:700}.roadmap-item .lock{margin-left:auto;font-size:16px}.word-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:2px solid var(--border)}.word-row:last-child{border-bottom:none}.word-row .word{font-size:19px;font-weight:800}.word-row .def{font-size:13px;color:var(--text-dim);font-weight:600}.trainer-prompt{text-align:center;padding:20px 0}.trainer-input{width:100%;font-family:var(--font);font-size:22px;font-weight:700;text-align:center;padding:16px;border-radius:var(--radius-sm);border:2px solid var(--border-strong);background:#fff;color:var(--text);letter-spacing:2px}.trainer-input:focus{outline:none;border-color:var(--blue)}.feedback{min-height:24px;font-weight:800;text-align:center;margin:12px 0}.feedback.good{color:var(--green-press)}.feedback.bad{color:var(--red)}.progress-bar{height:14px;background:var(--card-soft);border-radius:999px;overflow:hidden;margin:10px 0;border:1px solid var(--border)}.progress-bar>div{height:100%;background:var(--green);border-radius:999px;transition:width .3s ease}.pet{text-align:center}.pet .avatar{font-size:80px;margin:8px 0;line-height:1}.tray{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.slot{width:34px;height:44px;border-radius:10px;background:var(--card-soft);border:2px solid var(--border);border-bottom:4px solid var(--border-strong);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:var(--text);text-transform:lowercase}.slot.filled{background:var(--blue);border-color:var(--blue-press);color:#fff}.stack{display:grid;gap:14px}.center{text-align:center}.canvas-host{display:flex;justify-content:center}.canvas-host canvas{border-radius:var(--radius-sm);border:2px solid var(--border)}a{color:var(--blue)}.node-check{position:absolute;top:-4px;right:50%;margin-right:-50px;width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;font-weight:900;font-size:15px;display:flex;align-items:center;justify-content:center;border:2px solid #fff}.path-node{position:relative}.group-pick{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;font:inherit;cursor:pointer}.pet-roam{position:fixed;z-index:60;pointer-events:none;text-align:center;transition-property:left,top;transition-timing-function:linear;will-change:left,top}.pet-roam-face{filter:drop-shadow(0 6px 6px rgba(0,0,0,.18))}.pet-roam-inner.walking{animation:petWalk .45s ease-in-out infinite;transform-origin:50% 90%}.pet-roam-inner.cheer{animation:petCheer .6s ease}.pet-roam-inner.wobble{animation:petWobble .5s ease}@keyframes petWalk{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}.fox-tail{transform-box:fill-box;transform-origin:100% 50%;animation:foxTailSway 2.6s ease-in-out infinite}@keyframes foxTailSway{0%,to{transform:rotate(-6deg)}50%{transform:rotate(9deg)}}.fox-legs-front,.fox-legs-back{transform-box:fill-box;transform-origin:50% 0%}.pet-roam-inner.walking .fox-legs-front{animation:foxTrotA .42s ease-in-out infinite}.pet-roam-inner.walking .fox-legs-back{animation:foxTrotB .42s ease-in-out infinite}@keyframes foxTrotA{0%,to{transform:translate(2px) rotate(6deg)}50%{transform:translate(-2px) rotate(-6deg)}}@keyframes foxTrotB{0%,to{transform:translate(-2px) rotate(-6deg)}50%{transform:translate(2px) rotate(6deg)}}.pet-corner3d{position:fixed;left:6px;bottom:2px;z-index:60;pointer-events:none}.pet-corner3d canvas{display:block;width:100%!important;height:100%!important;overflow:visible}.pet-corner3d .pet-bubble{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:2}.pet-roam3d{position:fixed;z-index:60;pointer-events:none;transition-property:left,top;transition-timing-function:linear;will-change:left,top}.pet-roam3d canvas{display:block;width:100%!important;height:100%!important;overflow:visible}.pet-roam3d .pet-bubble{position:absolute;top:-6px;left:50%;transform:translate(-50%);z-index:2}.pet-buddy{position:fixed;left:16px;bottom:16px;z-index:50;pointer-events:none;text-align:center}.pet-buddy-avatar{font-size:60px;line-height:1;filter:drop-shadow(0 5px 6px rgba(0,0,0,.18))}.pet-buddy-avatar.cheer{animation:petCheer .6s ease}.pet-buddy-avatar.wobble{animation:petWobble .5s ease}.pet-buddy-spark{position:absolute;top:-8px;left:50%;transform:translate(-50%);font-size:24px;animation:sparkPop .6s ease forwards}.pet-bubble{position:absolute;bottom:66px;left:50%;transform:translate(-50%);white-space:nowrap;background:#fff;border:2px solid var(--border-strong);border-radius:14px;padding:6px 12px;font-weight:800;font-size:15px;color:var(--text);box-shadow:0 4px 10px #0000001f;animation:bubblePop 1.1s ease forwards}.pet-bubble.cheer{border-color:var(--green);color:var(--green-press)}.pet-bubble.wobble{border-color:var(--red);color:var(--red)}@keyframes bubblePop{0%{opacity:0;transform:translate(-50%,8px) scale(.7)}18%{opacity:1;transform:translate(-50%) scale(1.06)}32%{transform:translate(-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-6px) scale(1)}}@keyframes petCheer{0%{transform:translateY(0) scale(1) rotate(0)}30%{transform:translateY(-18px) scale(1.18) rotate(-8deg)}55%{transform:translateY(0) scale(1) rotate(0)}75%{transform:translateY(-8px) scale(1.06)}to{transform:translateY(0) scale(1)}}@keyframes petWobble{0%,to{transform:rotate(0)}25%{transform:rotate(-14deg)}75%{transform:rotate(14deg)}}@keyframes sparkPop{0%{opacity:0;transform:translate(-50%,6px) scale(.5)}40%{opacity:1;transform:translate(-50%,-12px) scale(1.15)}to{opacity:0;transform:translate(-50%,-28px) scale(.8)}}.builder-area{width:100%;font-family:var(--font);font-size:15px;line-height:1.5;padding:10px 12px;border-radius:var(--radius-sm);border:2px dashed var(--border-strong);background:#fff;color:var(--text);resize:vertical}.builder-area:focus{outline:none;border-style:solid;border-color:var(--blue)}.keypad{display:grid;gap:8px}.keypad-row{display:flex;gap:6px;justify-content:center}.key{flex:1 1 0;max-width:44px;height:48px;border-radius:10px;border:none;background:var(--card-soft);box-shadow:0 3px 0 var(--border-strong);font-family:var(--font);font-size:18px;font-weight:800;text-transform:uppercase;color:var(--text);cursor:pointer}.key:active{transform:translateY(3px);box-shadow:none}.key-wide{max-width:64px;background:var(--blue);color:#fff;box-shadow:0 3px 0 var(--blue-press)}.study-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.study-word{border:2px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;background:var(--card-soft)}.study-word-head{display:flex;align-items:center;gap:10px}.word-btn{flex:1;text-align:left;background:none;border:none;font-family:var(--font);font-size:19px;font-weight:800;color:var(--text);cursor:pointer;padding:0}.word-btn:active{color:var(--blue)}.info-btn{background:none;border:none;font-size:18px;cursor:pointer;line-height:1}.study-def{margin-top:8px;padding-top:8px;border-top:2px solid var(--border);font-size:14px;color:var(--text);font-weight:600}.arena{position:relative;border-radius:var(--radius-sm);background:radial-gradient(120% 80% at 50% 12%,#5a4bd6,#3a2f9e 45%,#241a6b);padding:16px 14px 14px;overflow:hidden;box-shadow:inset 0 0 40px #0a06288c;transition:background .25s ease}.arena.enraged{background:radial-gradient(120% 80% at 50% 12%,#ff6a6a,#c62828 45%,#7a1414)}.arena .muted{color:#ffffffbf}.arena-floor{position:absolute;left:8%;right:8%;bottom:96px;height:26px;border-radius:50%;background:radial-gradient(closest-side,#8cc8ff8c,#8cc8ff00);filter:blur(2px)}.arena.enraged .arena-floor{background:radial-gradient(closest-side,#ffb47899,#ff785000)}.arena-embers span{position:absolute;bottom:10px;width:5px;height:5px;border-radius:50%;background:#ffe14d;box-shadow:0 0 8px #ffd84d;opacity:0;animation:ember 3.2s linear infinite}.arena.enraged .arena-embers span{background:#ffb060;box-shadow:0 0 8px #ff7a3c}@keyframes ember{0%{opacity:0;transform:translateY(0) scale(.6)}20%{opacity:.9}to{opacity:0;transform:translateY(-190px) scale(1)}}.boss-top{position:relative;text-align:center;z-index:2}.boss-figure{display:inline-block;position:relative;filter:drop-shadow(0 10px 10px rgba(0,0,0,.35));animation:bossFloat 2.8s ease-in-out infinite;transition:opacity .15s ease}.boss-figure.hit{opacity:.55}.boss-figure.enraged{animation:bossFloat 1.4s ease-in-out infinite}@keyframes bossFloat{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-8px) scale(1.02)}}.boss-impact{position:absolute;left:50%;top:55%;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;background:radial-gradient(closest-side,#fff,#ffe14d 55%,#ffe14d00);animation:impactPop .36s ease-out forwards;pointer-events:none}@keyframes impactPop{0%{opacity:1;transform:scale(.3)}to{opacity:0;transform:scale(3.4)}}.enraged-banner{position:absolute;top:8px;left:50%;transform:translate(-50%);background:var(--red);color:#fff;font-weight:900;padding:4px 14px;border-radius:999px;letter-spacing:1px;animation:enrageBlink .5s steps(2,jump-none) infinite;z-index:3}@keyframes enrageBlink{0%{opacity:1}to{opacity:.55}}.battlefield{position:relative;height:90px}.boss-bolt{position:absolute;left:50%;bottom:0;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:radial-gradient(closest-side,#fff,#7fe0ff 55%,#1cb0f6);box-shadow:0 0 16px #6fd0ff,0 0 30px #1cb0f6;animation:boltFly .3s ease-in forwards}@keyframes boltFly{0%{bottom:0;opacity:1;transform:scale(.7)}85%{opacity:1}to{bottom:92px;opacity:0;transform:scale(1.3)}}.boss-bottom{position:relative;text-align:center;z-index:2}.pet-shooter{display:inline-block;line-height:1;filter:drop-shadow(0 6px 6px rgba(0,0,0,.28))}.pet-shooter.fire{animation:petFire .3s ease}@keyframes petFire{0%{transform:translateY(0) scale(1)}40%{transform:translateY(6px) scale(1.12,.9)}to{transform:translateY(0) scale(1)}}.hp-row{display:flex;align-items:center;gap:10px;margin:6px 0}.hp-row .progress-bar{flex:1;margin:0}.boss-hp>div{background:var(--red)}.shield-hp>div{background:var(--blue)}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-7px)}75%{transform:translate(7px)}}.arena.shake{animation:shake .26s ease}
