:root{--bg:#fffbf4;--bg-dim:#faf3e7;--card:#fff;--ink:#3d3229;--muted:#8a7d70;--line:#efe6d9;--line-strong:#e2d5c3;--vermillion:#e8503a;--vermillion-edge:#c03a28;--vermillion-soft:#fdeae6;--jade:#2e9e6b;--jade-edge:#1f7a50;--jade-soft:#e3f4ec;--gold:#f5b82e;--gold-edge:#d49612;--gold-soft:#fdf3da;--sky:#3e8fd8;--sky-edge:#2c6fad;--sky-soft:#e6f1fb;--error:#d64545;--error-soft:#fbe7e7;--r-card:20px;--r-btn:16px;--btn-depth:4px;--font-ui:"Nunito","Helvetica Neue",sans-serif;--font-cn:"Noto Sans TC","Noto Sans SC","Nunito",sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font-ui);color:var(--ink);font-size:17px;line-height:1.45;-webkit-font-smoothing:antialiased}.hanzi{font-family:var(--font-cn)}a{color:inherit}a,a:hover{text-decoration:none}@keyframes bbSpin{to{transform:rotate(1turn)}}.bb-spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line-strong);border-top:2px solid;border-radius:50%;animation:bbSpin .8s linear infinite}@media (prefers-reduced-motion:reduce){.bb-spin{animation:none}}.bb-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-ui);font-weight:800;font-size:16px;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:var(--vermillion);border:none;border-radius:var(--r-btn);padding:0 24px;height:50px;min-width:44px;cursor:pointer;box-shadow:0 var(--btn-depth) 0 var(--vermillion-edge);transition:transform .06s ease,box-shadow .06s ease,filter .12s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bb-btn:hover{filter:brightness(1.05)}.bb-btn:active{transform:translateY(var(--btn-depth));box-shadow:0 0 0 var(--vermillion-edge)}.bb-btn.jade{background:var(--jade);box-shadow:0 var(--btn-depth) 0 var(--jade-edge)}.bb-btn.jade:active{box-shadow:0 0 0 var(--jade-edge)}.bb-btn.gold{background:var(--gold);box-shadow:0 var(--btn-depth) 0 var(--gold-edge);color:#6b4a05}.bb-btn.gold:active{box-shadow:0 0 0 var(--gold-edge)}.bb-btn.sky{background:var(--sky);box-shadow:0 var(--btn-depth) 0 var(--sky-edge)}.bb-btn.sky:active{box-shadow:0 0 0 var(--sky-edge)}.bb-btn.ghost{background:var(--card);color:var(--sky);box-shadow:0 var(--btn-depth) 0 var(--line-strong);border:2px solid var(--line-strong)}.bb-btn.ghost:active{box-shadow:0 0 0 var(--line-strong)}.bb-btn.danger{background:var(--error);box-shadow:0 var(--btn-depth) 0 #a93333}.bb-btn.danger:active{box-shadow:0 0 0 #a93333}.bb-btn.lg{height:58px;font-size:18px;padding:0 32px;border-radius:18px}.bb-btn.sm{height:42px;font-size:14px;padding:0 16px}.bb-btn:disabled{background:var(--line);color:#b9ab9b;box-shadow:0 var(--btn-depth) 0 var(--line-strong);cursor:not-allowed;filter:none}.bb-btn:disabled:active{transform:none}.bb-card{border:2px solid var(--line);border-radius:var(--r-card);box-shadow:0 2px 0 var(--line)}.bb-card,.bb-choice{background:var(--card)}.bb-choice{border:2px solid var(--line-strong);border-radius:var(--r-btn);box-shadow:0 var(--btn-depth) 0 var(--line-strong);cursor:pointer;transition:transform .06s ease,box-shadow .06s ease,border-color .1s,background .1s;min-height:56px;font-weight:700;color:var(--ink);-webkit-user-select:none;-moz-user-select:none;user-select:none;font-family:var(--font-ui);font-size:17px}.bb-choice:hover{background:var(--bg-dim)}.bb-choice:active{transform:translateY(var(--btn-depth));box-shadow:0 0 0 var(--line-strong)}.bb-choice.selected{border-color:var(--sky);box-shadow:0 var(--btn-depth) 0 var(--sky-edge);background:var(--sky-soft);color:var(--sky-edge)}.bb-choice.correct{border-color:var(--jade);box-shadow:0 var(--btn-depth) 0 var(--jade-edge);background:var(--jade-soft);color:var(--jade-edge)}.bb-choice.wrong{border-color:var(--error);box-shadow:0 var(--btn-depth) 0 #a93333;background:var(--error-soft);color:var(--error)}.bb-choice.faded{opacity:.35;pointer-events:none}.bb-overline{font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.bb-h1{font-size:32px;line-height:1.15}.bb-h1,.bb-h2{font-weight:900;margin:0}.bb-h2{font-size:24px;line-height:1.2}.bb-muted{color:var(--muted)}.bb-progress{height:14px;background:var(--line);border-radius:999px;overflow:hidden;flex:1 1}.bb-progress>div{height:100%;background:var(--jade);border-radius:999px;transition:width .35s cubic-bezier(.22,1,.36,1);position:relative}.bb-progress>div:after{content:"";position:absolute;left:8px;right:8px;top:3px;height:4px;border-radius:999px;background:hsla(0,0%,100%,.35)}.bb-mascot{background:repeating-linear-gradient(45deg,var(--bg-dim),var(--bg-dim) 8px,#f3eadb 8px,#f3eadb 16px);border:2px dashed var(--line-strong);border-radius:24px;justify-content:center;font-family:ui-monospace,Menlo,monospace;font-size:12px;text-align:center;padding:12px}.bb-mascot,.bb-nav-item{display:flex;align-items:center;color:var(--muted)}.bb-nav-item{gap:14px;padding:12px 14px;border-radius:14px;border:2px solid transparent;font-weight:800;font-size:14px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:none;font-family:var(--font-ui);width:100%;text-align:left;transition:background .1s}.bb-nav-item:hover{background:var(--bg-dim)}.bb-nav-item.active{color:var(--vermillion);background:var(--vermillion-soft);border-color:#f6c6bd}.bb-node{width:76px;height:76px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .06s ease,box-shadow .06s ease,filter .1s;position:relative}.bb-node:hover{filter:brightness(1.06)}.bb-node.done{background:var(--jade);box-shadow:0 6px 0 var(--jade-edge)}.bb-node.gold{background:var(--gold);box-shadow:0 6px 0 var(--gold-edge)}.bb-node.active{background:var(--vermillion);box-shadow:0 6px 0 var(--vermillion-edge)}.bb-node.locked{background:#e7ddce;box-shadow:0 6px 0 #d5c8b4;cursor:default}.bb-node.locked:hover{filter:none}.bb-node:not(.locked):active{transform:translateY(6px);box-shadow:0 0 0 transparent}.bb-node-pulse{position:absolute;inset:-10px;border-radius:50%;border:4px solid var(--vermillion);opacity:.35;animation:bbPulse 1.6s ease-out infinite;pointer-events:none}@media (prefers-reduced-motion:reduce){.bb-node-pulse{animation:none}}@keyframes bbPulse{0%{transform:scale(.92);opacity:.4}70%{transform:scale(1.08);opacity:0}to{transform:scale(1.08);opacity:0}}.bb-banner{position:fixed;left:0;right:0;bottom:0;padding:20px 0 28px;z-index:40;border-top:2px solid var(--line);background:var(--card);animation:bbSlideUp .22s cubic-bezier(.22,1,.36,1)}.bb-banner.good{background:var(--jade-soft);border-top-color:#bbe3cf}.bb-banner.bad{background:var(--error-soft);border-top-color:#f0c4c4}@keyframes bbSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion:reduce){.bb-banner{animation:none}}.bb-tile{background:var(--card);border:2px solid var(--line-strong);border-radius:12px;box-shadow:0 3px 0 var(--line-strong);padding:10px 16px;font-size:20px;font-weight:700;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-family:var(--font-cn);color:var(--ink);transition:transform .06s,box-shadow .06s;min-height:44px}.bb-tile:active{transform:translateY(3px);box-shadow:0 0 0 var(--line-strong)}.bb-tile.used{opacity:.25;pointer-events:none}.bb-statpill{display:inline-flex;align-items:center;gap:7px;font-weight:900;font-size:16px}.bb-row{display:flex;align-items:center}::selection{background:var(--gold-soft)}@media (max-width:980px){.bb-sidebar{display:none!important}.bb-mobilebar{display:flex!important}}.bb-video-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);grid-gap:20px;gap:20px;align-items:start}.bb-video-left{position:-webkit-sticky;position:sticky;top:12px}.bb-transcript{max-height:72vh;overflow-y:auto;padding-right:4px}.bb-transcript,.bb-transcript *{overflow-wrap:anywhere}@media (max-width:1100px){.bb-video-grid{grid-template-columns:1fr}.bb-video-left{position:static}.bb-transcript{max-height:none;overflow:visible}}.bb-word{cursor:pointer;border-radius:8px;padding:1px 3px;transition:background .12s}.bb-word:hover{background:var(--sky-soft)}.bb-rl-line{position:relative;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.bb-rl-line.playing{border-color:var(--gold);background:linear-gradient(180deg,var(--gold-soft) 0,var(--card) 70%);box-shadow:0 3px 0 var(--gold-edge)}.bb-rl-sweep{position:absolute;left:0;bottom:0;height:3px;width:0;background:var(--gold);box-shadow:0 0 6px rgba(245,184,46,.6);border-radius:0 999px 999px 0;transition:width .09s linear;pointer-events:none}.bb-rl-words{display:flex;flex-wrap:wrap;align-items:flex-end;column-gap:6px;row-gap:9px}.bb-rl-w{display:inline-grid;justify-items:center;row-gap:1px;line-height:1.06;text-align:center;border-radius:10px;padding:2px 5px;box-shadow:inset 0 0 0 2px transparent;cursor:pointer;transition:background .14s ease,box-shadow .14s ease,color .14s ease}.bb-rl-w:hover{background:var(--gold-soft)}.bb-rl-w:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--sky)}.bb-rl-w.on{background:rgba(245,184,46,.3);box-shadow:inset 0 0 0 2px var(--gold)}.bb-rl-w.punct{cursor:default;padding-left:2px;padding-right:2px}.bb-rl-w.punct:hover{background:transparent}.bb-rl-py{font-size:12.5px;font-weight:700;color:var(--muted);min-height:1.05em;transition:color .14s ease}.bb-rl-w.on .bb-rl-py{color:var(--gold-edge)}.bb-rl-hz{font-family:var(--font-cn);font-size:23px;font-weight:800}@media (prefers-reduced-motion:reduce){.bb-rl-line,.bb-rl-py,.bb-rl-sweep,.bb-rl-w{transition:none}}main.bb-immersive{height:100dvh;display:flex;flex-direction:column;padding:20px 20px 10px;box-sizing:border-box;overflow-y:auto}@media (max-width:980px){main.bb-immersive{padding:calc(16px + env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) calc(64px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))!important}}.bb-roleplay{flex-direction:column;gap:12px}.bb-roleplay,.bb-rp-scroll{display:flex;flex:1 1 auto;min-height:0}.bb-rp-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 2px 8px;flex-direction:column;gap:14px}.bb-rp-bubble{max-width:min(620px,88%);padding:14px 16px;border-radius:18px;border:2px solid var(--line)}.bb-rp-npc{align-self:flex-start;background:var(--card);border-bottom-left-radius:6px}.bb-rp-user{align-self:flex-end;background:var(--vermillion-soft);border-color:transparent;border-bottom-right-radius:6px}.bb-rp-dots span{display:inline-block;width:8px;height:8px;margin:0 2px;border-radius:50%;background:var(--muted);animation:bb-rp-blink 1.2s infinite both}.bb-rp-dots span:nth-child(2){animation-delay:.2s}.bb-rp-dots span:nth-child(3){animation-delay:.4s}@keyframes bb-rp-blink{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.bb-mic-wrap{position:relative;width:76px;height:76px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.bb-mic-ring{position:absolute;inset:0;border-radius:50%;background:var(--vermillion-soft);opacity:0;transform:scale(1);transform-origin:center;pointer-events:none;transition:opacity .18s ease;will-change:transform}.bb-mic-wrap.live .bb-mic-ring{opacity:.6}.bb-mic{position:relative;z-index:1;width:76px;height:76px;border-radius:50%;border:none;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:var(--vermillion);box-shadow:0 5px 0 var(--vermillion-edge);cursor:pointer;transition:transform .08s;flex:0 0 auto}.bb-mic:active{transform:translateY(4px);box-shadow:0 1px 0 var(--vermillion-edge)}.bb-mic.listening{background:var(--vermillion)}.bb-mic.thinking{background:var(--muted);box-shadow:0 5px 0 var(--line-strong);cursor:default}@media (prefers-reduced-motion:reduce){.bb-mic-ring{transition:none}.bb-rp-dots span{animation:none;opacity:.6}}body{margin:0;background:var(--bg)}@media (max-width:1280px){.bb-rail{display:none!important}}.bb-hide-mascot .bb-mascot,.bb-hide-mascot .bb-mascot-img{display:none!important}html{text-size-adjust:100%}body{overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}@media (max-width:980px){input,select,textarea{font-size:16px}main{padding:env(safe-area-inset-top) max(20px,env(safe-area-inset-right)) calc(120px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))!important}}.bb-banner{padding-bottom:calc(28px + env(safe-area-inset-bottom))}.bb-mascot-img{display:block;object-fit:contain}.bb-avatar-stack{position:relative;display:inline-block}.bb-avatar-stack>img{display:block}.bb-avatar-stack .bb-cosmetic{position:absolute;pointer-events:none}.bb-avatar-stack .bb-cosmetic.head{top:0;left:50%;transform:translate(-50%,-8%);width:60%}.bb-avatar-stack .bb-cosmetic.neck{top:52%;left:50%;transform:translateX(-50%);width:72%}@media (prefers-reduced-motion:reduce){.bb-btn,.bb-choice,.bb-node,.bb-progress>div{transition:none!important}}.bb-auth{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:1.04fr 1fr;background:var(--bg);overflow-x:hidden}@media (max-width:900px){.bb-auth{grid-template-columns:1fr}}.bb-auth-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;gap:18px;padding:clamp(40px,4vw,64px);border-right:2px solid var(--line);background:radial-gradient(125% 80% at 0 0,var(--gold-soft) 0,hsla(43,90%,92%,0) 52%),radial-gradient(120% 95% at 100% 100%,var(--jade-soft) 0,rgba(227,244,236,0) 55%),linear-gradient(158deg,#fffdf8 0,var(--bg-dim) 100%)}@media (max-width:900px){.bb-auth-hero{display:none}}.bb-auth-watermark{right:-3%;top:46%;transform:translateY(-50%);font-family:var(--font-cn);font-weight:700;font-size:clamp(260px,34vw,520px);line-height:.74;color:var(--jade);opacity:.06;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bb-auth-lantern,.bb-auth-watermark{position:absolute;pointer-events:none}.bb-auth-lantern{top:-10px;right:14%;left:auto;transform-origin:40% 2px;animation:bbSway 5.5s ease-in-out infinite}@keyframes bbSway{0%,to{transform:rotate(-3.2deg)}50%{transform:rotate(3.2deg)}}.bb-auth-hero-mid,.bb-auth-hero-top{position:relative;z-index:2}.bb-auth-panda{position:relative;z-index:1;align-self:center;width:min(72%,330px);height:auto;margin-top:-8px;animation:bbFloat 6s ease-in-out infinite}@keyframes bbFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes bbStrokeDraw{0%{stroke-dashoffset:100;opacity:.12}12%{opacity:.6}55%{stroke-dashoffset:0;opacity:.6}80%{stroke-dashoffset:0;opacity:.5}to{stroke-dashoffset:0;opacity:0}}@media (prefers-reduced-motion:reduce){[style*=bbStrokeDraw]{animation:none!important;stroke-dashoffset:0!important;opacity:.4!important}}.bb-auth-wordmark{gap:12px}.bb-auth-logo,.bb-auth-wordmark{display:inline-flex;align-items:center}.bb-auth-logo{width:48px;height:48px;border-radius:15px;flex:0 0 auto;background:var(--jade);color:#fff;justify-content:center;box-shadow:0 4px 0 var(--jade-edge)}.bb-auth-wordmark .wm{font-weight:900;font-size:30px;color:var(--jade);letter-spacing:-.015em}.bb-auth-headline{font-weight:900;font-size:clamp(30px,3.3vw,46px);line-height:1.04;color:var(--ink);letter-spacing:-.025em;margin:clamp(20px,3vh,34px) 0 12px}.bb-auth-headline em{color:var(--vermillion);font-style:normal}.bb-auth-sub{font-weight:800;font-size:16.5px;color:var(--muted);max-width:32ch;line-height:1.4}.bb-auth-features{display:grid;grid-gap:13px;gap:13px;margin-top:clamp(20px,3vh,30px)}.bb-auth-feature{display:flex;align-items:center;gap:13px;font-weight:800;font-size:15px;color:var(--ink)}.bb-auth-feature .ic{width:36px;height:36px;border-radius:11px;flex:0 0 auto;display:inline-flex;border:2px solid var(--line);background:var(--card)}.bb-auth-feature .ic,.bb-auth-form{align-items:center;justify-content:center}.bb-auth-form{display:flex;flex-direction:column;padding:clamp(28px,5vw,56px) 22px}.bb-auth-formwrap{width:100%;max-width:416px}.bb-auth-mobilebrand{display:none}@media (max-width:900px){.bb-auth-mobilebrand{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:18px;text-align:center}.bb-auth-mobilebrand img{width:120px;height:auto;-webkit-mask-image:radial-gradient(70% 78% at 50% 44%,#000 60%,transparent 100%);mask-image:radial-gradient(70% 78% at 50% 44%,#000 60%,transparent 100%)}}.bb-reveal{opacity:0;transform:translateY(14px);animation:bbReveal .6s cubic-bezier(.2,.7,.2,1) forwards}@keyframes bbReveal{to{opacity:1;transform:none}}.bb-seg{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;border:2px solid var(--line);border-radius:14px;background:var(--bg-dim)}.bb-seg-thumb{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:10px;background:var(--card);box-shadow:0 2px 0 var(--line-strong);transition:transform .24s cubic-bezier(.2,.7,.2,1)}.bb-seg-thumb.right{transform:translateX(100%)}.bb-seg button{position:relative;z-index:1;border:none;background:none;cursor:pointer;font-family:var(--font-ui);font-weight:800;font-size:14.5px;padding:10px 8px;border-radius:10px;color:var(--muted);transition:color .18s}.bb-seg button.active{color:var(--ink)}@media (prefers-reduced-motion:reduce){.bb-seg-thumb{transition:none}}.bb-field{position:relative}.bb-field>label{display:block;font-weight:800;font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}.bb-input{width:100%;box-sizing:border-box;font-family:var(--font-ui);font-weight:800;font-size:16px;padding:13px 15px;border-radius:14px;border:2px solid var(--line-strong);background:var(--card);color:var(--ink);transition:border-color .15s,box-shadow .15s}.bb-input::placeholder{color:var(--muted);opacity:.6;font-weight:700}.bb-input:focus{outline:none;border-color:var(--jade);box-shadow:0 0 0 4px var(--jade-soft)}.bb-input.has-eye{padding-right:46px}.bb-eye{position:absolute;right:7px;bottom:7px;width:36px;height:36px;border-radius:10px;border:none;background:none;cursor:pointer;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.bb-eye:hover{color:var(--ink);background:var(--bg-dim)}@media (prefers-reduced-motion:reduce){.bb-auth-lantern,.bb-auth-panda{animation:none!important}.bb-reveal{opacity:1;transform:none;animation:none}}.bb-spk .bb-spk-w1,.bb-spk .bb-spk-w2{opacity:.35;transform-origin:12px 12px}.bb-spk.on .bb-spk-w1{animation:bbSpkWave .9s ease-in-out infinite}.bb-spk.on .bb-spk-w2{animation:bbSpkWave .9s ease-in-out .22s infinite}@keyframes bbSpkWave{0%,to{opacity:.25;transform:scale(.92)}45%{opacity:1;transform:scale(1.06)}}@media (prefers-reduced-motion:reduce){.bb-spk.on .bb-spk-w1,.bb-spk.on .bb-spk-w2{animation:none;opacity:1}}