@import"https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700;800&family=Nunito:wght@600;700;800&display=swap";:root{--bg1: #eaf7ff;--bg2: #fff5e6;--bg3: #ffe9f2;--ink: #3b3024;--muted: #94826e;--line: rgba(120, 90, 50, .14);--card: #ffffff}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100vh;background:radial-gradient(60% 55% at 12% 8%,rgba(255,214,165,.55),transparent 60%),radial-gradient(55% 50% at 88% 6%,rgba(174,224,255,.6),transparent 62%),radial-gradient(60% 55% at 50% 105%,rgba(255,190,214,.55),transparent 60%),linear-gradient(160deg,var(--bg1) 0%,var(--bg2) 46%,var(--bg3) 100%);background-attachment:fixed;color:var(--ink);font-family:Nunito,PingFang SC,Hiragino Sans GB,Microsoft YaHei,ui-rounded,system-ui,sans-serif;display:flex;justify-content:center;padding:clamp(18px,3vw,40px) clamp(12px,3vw,32px) 48px;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;display:flex;justify-content:center}.app{position:relative;z-index:1;width:100%;max-width:1040px;display:flex;flex-direction:column;gap:clamp(12px,2vw,18px)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px}.brand-emoji{font-size:clamp(26px,3.4vw,34px);line-height:1;filter:drop-shadow(0 4px 6px rgba(120,80,30,.2));animation:bob 3.4s ease-in-out infinite}.brand-text h1{font-family:"Baloo 2",PingFang SC,sans-serif;font-size:clamp(24px,3.2vw,34px);font-weight:800;letter-spacing:.01em;line-height:1;color:var(--ink)}.brand-sub{display:block;margin-top:4px;font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--muted)}.mode-switch{display:inline-flex;gap:4px;padding:5px;border-radius:999px;background:#ffffffb8;border:1px solid var(--line);box-shadow:0 8px 22px -14px #78501e80}.mode-btn{border:none;background:transparent;font-family:inherit;font-weight:800;font-size:14px;color:var(--muted);padding:8px 15px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:color .18s,background .2s,box-shadow .2s,transform .1s}.mode-btn:hover{color:#7a5a3a}.mode-btn.active{color:#fff;background:linear-gradient(180deg,#ffb457,#ff7a59);box-shadow:0 8px 16px -6px #ff7a59b3}.mode-btn:active{transform:scale(.97)}.toggles{display:flex;gap:8px}.toggle{width:44px;height:44px;border-radius:15px;border:1px solid var(--line);background:#ffffffc7;font-size:19px;cursor:pointer;display:grid;place-items:center;transition:transform .1s,box-shadow .2s,opacity .2s;box-shadow:0 8px 18px -14px #78501e99}.toggle:hover{transform:translateY(-2px)}.toggle:active{transform:scale(.94)}.toggle:not(.on){opacity:.45;filter:grayscale(.6)}.stage{position:relative;display:flex;align-items:center;gap:clamp(6px,2vw,26px);min-height:clamp(230px,30vw,300px);padding:clamp(14px,2.4vw,26px) clamp(16px,3vw,34px);border-radius:32px;background:radial-gradient(120% 140% at 50% -20%,#fffffff2,#fffbf3e6),#fffaf2;border:2px solid rgba(255,255,255,.9);box-shadow:0 26px 50px -28px #96642880,inset 0 1px #fff}.mascot{flex:0 0 auto;width:clamp(104px,15vw,150px)}.mascot svg{width:100%;height:auto;display:block;animation:bob 3.2s ease-in-out infinite;transform-origin:center bottom}.mascot .face{fill:#ffe4c2}.mascot .ear{fill:#ffcf9a}.mascot .ear-in{fill:#ffb3c1}.mascot .eye{fill:#463122}.mascot .glint{fill:#fff}.mascot .eye-line{fill:none;stroke:#463122;stroke-width:4;stroke-linecap:round}.mascot .blush{fill:#ffb3c1;opacity:.7}.mascot .nose{fill:#ff8fa3}.mascot .mouth{fill:none;stroke:#6b4f3a;stroke-width:3;stroke-linecap:round}.mascot--happy svg{animation:hop .7s ease}.mascot--oops svg{animation:shake .5s ease}.bubble{flex:1 1 auto;min-width:0;display:grid;place-items:center;text-align:center}.char-card{display:flex;flex-direction:column;align-items:center;gap:4px;animation:popIn .4s cubic-bezier(.2,1.3,.4,1)}.char-big{font-family:"Baloo 2",PingFang SC,sans-serif;font-weight:800;font-size:clamp(88px,17vw,148px);line-height:.86;color:var(--k, #ff7a59);text-shadow:0 8px 0 rgba(0,0,0,.05)}.char-big--text{font-size:clamp(40px,8.5vw,78px);line-height:1.02;letter-spacing:.02em}.char-sub{font-weight:800;font-size:clamp(16px,2.4vw,23px);color:var(--ink);display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center}.sub-emoji{font-size:1.25em;vertical-align:-.1em}.sub-digit{display:inline-flex;align-items:center;gap:12px}.dots{letter-spacing:4px;color:var(--k, #ff7a59);font-size:1.1em}.sub-cn{color:var(--muted);font-weight:800}.empty-hint{display:flex;flex-direction:column;align-items:center;gap:8px;animation:cardIn .5s ease}.empty-title{font-family:"Baloo 2",PingFang SC,sans-serif;font-weight:800;font-size:clamp(22px,3.4vw,30px);color:var(--ink)}.empty-sub{font-size:14px;font-weight:700;color:var(--muted)}.empty-sub b{color:#ff7a59}.empty-arrow{font-size:clamp(38px,6vw,52px);line-height:1;animation:bob 1.8s ease-in-out infinite}.find-card{display:flex;flex-direction:column;align-items:center;gap:4px;animation:cardIn .4s ease}.find-ask{font-size:13px;font-weight:800;letter-spacing:.06em;color:var(--muted)}.find-char{font-family:"Baloo 2",PingFang SC,sans-serif;font-weight:800;font-size:clamp(80px,15vw,126px);line-height:.86;color:var(--k, #4dabf7);animation:pulseChar 1.8s ease-in-out infinite;text-shadow:0 8px 0 rgba(0,0,0,.05)}.find-kind{font-size:15px;font-weight:800;color:var(--muted)}.find-kind b{color:var(--ink);font-size:1.15em}.find-good{margin-top:2px;font-family:"Baloo 2",PingFang SC,sans-serif;font-weight:800;font-size:22px;color:#2f9e44;animation:popIn .4s ease}.find-bad{margin-top:2px;font-weight:800;font-size:17px;color:#f76707}.find-stars{margin-top:6px;display:inline-flex;align-items:center;gap:6px;padding:4px 14px;border-radius:999px;background:#fff4cf;border:2px solid #ffe08a;font-weight:800;color:#b07d0a;font-size:15px}.star-icon{font-size:15px}.shake{animation:shake .5s ease}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;overflow:visible;z-index:6}.confetti-piece{position:absolute;left:50%;top:42%;background:var(--clr);border-radius:2px;animation:confettiFly 1.05s cubic-bezier(.18,.8,.3,1) forwards;animation-delay:var(--delay)}.confetti-piece.round{border-radius:50%}.controls{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.ctrl-btn{font-family:inherit;font-weight:800;font-size:14px;color:#7a5a3a;padding:8px 16px;border-radius:999px;border:2px dashed rgba(150,110,60,.35);background:#ffffffb3;cursor:pointer;transition:background .2s,transform .1s,border-color .2s}.ctrl-btn:hover{background:#fff;border-color:#966e3c99}.ctrl-btn:active{transform:scale(.96)}.keyboard{display:flex;flex-direction:column;gap:clamp(6px,1vw,10px);padding:clamp(10px,1.8vw,18px);border-radius:28px;background:linear-gradient(180deg,#ffffffd9,#fff6e8eb);border:2px solid #fff;box-shadow:0 24px 44px -30px #9664288c,inset 0 1px #fff}.key-row{display:flex;justify-content:center;gap:clamp(5px,.85vw,10px);width:100%}.key{position:relative;flex:1 1 0;max-width:64px;height:clamp(46px,6.4vw,66px);border-radius:14px;display:grid;place-items:center;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;background:linear-gradient(180deg,#fff,color-mix(in srgb,var(--k) 22%,#ffffff));border:2px solid color-mix(in srgb,var(--k) 30%,#ffffff);border-bottom:6px solid color-mix(in srgb,var(--k) 62%,#7a5230);box-shadow:0 8px 16px -10px #78501e99,inset 0 1px #ffffffe6;transition:transform .06s ease,box-shadow .12s ease,background .12s ease,border-color .12s ease,color .1s}.key-cap{font-family:"Baloo 2",PingFang SC,sans-serif;font-weight:800;font-size:clamp(17px,2.1vw,24px);line-height:1;color:var(--ink, #3b3024)}.key:hover{transform:translateY(-2px);box-shadow:0 12px 20px -10px #78501ea6,inset 0 1px #ffffffe6}.key.is-pressed{transform:translateY(4px);background:var(--k);color:#fff;border-color:color-mix(in srgb,var(--k) 72%,#000);border-bottom-width:2px;box-shadow:0 0 0 4px color-mix(in srgb,var(--k) 32%,transparent),0 6px 16px -6px var(--k)}.key.is-pressed .key-cap{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.22)}.key.is-hint{animation:hintPulse 1s ease-in-out infinite;border-color:var(--k);box-shadow:0 0 0 4px color-mix(in srgb,var(--k) 38%,transparent)}.key--wide{flex:0 0 auto;width:min(46%,360px);max-width:none;height:clamp(40px,5.2vw,54px)}.key--wide .key-cap{font-size:15px;letter-spacing:.28em;padding-left:.28em}.footer{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;font-size:12.5px;font-weight:700;color:var(--muted);padding-top:2px}.footer a{color:inherit;text-decoration:none;border-bottom:1.5px dotted rgba(148,130,110,.6)}.footer a:hover{color:#ff7a59}.footer-dot{width:4px;height:4px;border-radius:50%;background:#94826e80}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes hop{0%,to{transform:translateY(0) rotate(0)}30%{transform:translateY(-16px) rotate(-4deg)}60%{transform:translateY(-5px) rotate(4deg)}}@keyframes popIn{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes cardIn{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}@keyframes pulseChar{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}@keyframes hintPulse{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes confettiFly{0%{opacity:1;transform:translate(-50%,-50%) rotate(0)}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) rotate(var(--rot))}}@media(max-width:720px){.stage{flex-direction:column;gap:6px;min-height:250px}.mascot{width:96px}.topbar{justify-content:center}.brand{width:100%;justify-content:center}}@media(max-width:460px){.key{border-radius:11px;border-bottom-width:5px;height:clamp(42px,11vw,54px)}.key-row{gap:4px}.mode-btn{padding:8px 12px;font-size:13px}.toggle{width:40px;height:40px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
