:root{--red:#E20013;--red-d:#B5000F;--cream:#F6EFE2;--cream-d:#EADFC9;--ink:#1A1414;--gold:#F2B33D;--noodle:#F3D58A;--green:#2E9E5B;
  --font:"Noto Sans TC","Noto Sans CJK TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font)}
button{font-family:inherit;cursor:pointer}
input,textarea{font-family:inherit}
.wavebg{background-color:var(--cream);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='40'%3E%3Cpath d='M0 20 Q15 6 30 20 T60 20 T90 20 T120 20' fill='none' stroke='%23E8DCC4' stroke-width='3'/%3E%3C/svg%3E");}
.mascot{display:block;overflow:visible}
.mascot .bob{animation:bob 2.4s ease-in-out infinite;transform-origin:50% 90%}
.mascot.jump .bob{animation:jump .5s ease-out 3}
.mascot.shake .bob{animation:shake .12s linear 8}
.mascot .arm-l{animation:wave 1.2s ease-in-out infinite;transform-origin:38px 88px}
.mascot .steam path{animation:steam 2.2s ease-in-out infinite;opacity:.0}
.mascot .steam path:nth-child(2){animation-delay:.7s}.mascot .steam path:nth-child(3){animation-delay:1.4s}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}
@keyframes jump{0%,100%{transform:translateY(0)}40%{transform:translateY(-28px) scale(1.04,.96)}}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@keyframes wave{0%,100%{transform:rotate(0)}50%{transform:rotate(-25deg)}}
@keyframes steam{0%{opacity:0;transform:translateY(8px)}40%{opacity:.7}100%{opacity:0;transform:translateY(-16px)}}
.bubble{position:relative;background:#fff;border:3px solid var(--ink);border-radius:22px;padding:.6em .9em;font-weight:800;line-height:1.35;box-shadow:4px 4px 0 var(--ink)}
.bubble:after{content:"";position:absolute;left:-16px;bottom:18px;border:10px solid transparent;border-right:14px solid var(--ink)}
.bubble:before{content:"";position:absolute;left:-9px;bottom:21px;border:7px solid transparent;border-right:10px solid #fff;z-index:1}
.pop{animation:pop .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
.tag{display:inline-block;background:var(--red);color:#fff;font-weight:900;border-radius:999px;padding:.15em .8em}
.qstamp{display:inline-grid;place-items:center;width:1.6em;height:1.6em;border-radius:50%;background:var(--red);color:#fff;font-weight:900;box-shadow:0 0 0 3px #fff,0 0 0 6px var(--red)}
.muted{opacity:.65}
