:root{--bg:#f5eff1;--bg-soft:rgba(255,255,255,.74);--fg:#1f1418;--muted:#5c5156;--accent:#92283e;--accent-2:#6e182a;--stella:#7a1c2e;--ok:#1a7346;--display:"Playfair Display", "Noto Serif SC", Georgia, serif}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;color:var(--fg);-webkit-font-smoothing:antialiased;background-color:transparent;background-image:radial-gradient(1100px 760px at 6% -8%,rgba(150,42,66,.3),transparent 62%),radial-gradient(900px 700px at 104% 4%,rgba(226,170,128,.32),transparent 60%),radial-gradient(1000px 900px at 62% 112%,rgba(150,124,206,.24),transparent 62%),linear-gradient(#f5eff1 0%,#efe8ec 100%);background-position:0 0,0 0,0 0,0 0;background-repeat:repeat,repeat,repeat,repeat;background-size:auto,auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Segoe UI,sans-serif}button{cursor:pointer;font-family:inherit}.app{flex-direction:column;align-items:center;max-width:520px;min-height:100dvh;margin:0 auto;padding:24px 20px 40px;display:flex;position:relative}.name-overlay{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:rgba(245,239,241,.82);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.name-card{background:var(--bg-soft);text-align:center;border:1px solid rgba(60,20,32,.12);border-radius:20px;flex-direction:column;align-items:center;gap:6px;width:100%;max-width:380px;padding:28px 22px;display:flex}.name-avatar{object-fit:cover;border-radius:50%;width:84px;height:84px;margin-bottom:8px}.name-title{font-size:20px;font-weight:700}.name-sub{color:var(--muted);margin-bottom:12px;font-size:14px}.name-card .type-row{max-width:none}.admin-list{flex-direction:column;gap:10px;width:100%;margin-top:12px;display:flex}.admin-stat{color:var(--muted);margin-bottom:4px;font-size:13px}.admin-user{background:var(--bg-soft);color:var(--fg);border:1px solid rgba(60,20,32,.12);border-radius:12px;align-items:center;gap:10px;width:100%;padding:12px 14px;display:flex}.admin-user:hover{border-color:var(--stella)}.admin-user-main{cursor:pointer;text-align:left;flex:1}.admin-user-name{font-size:15px;font-weight:600}.admin-user-meta{color:var(--muted);margin-top:3px;font-size:12px}.admin-del{opacity:.6;background:0 0;border:none;padding:4px 6px;font-size:18px}.admin-del:hover{opacity:1}.settings{z-index:30;position:absolute;top:16px;right:16px}.settings-gear{background:var(--bg-soft);width:52px;height:52px;color:var(--fg);border:1px solid rgba(60,20,32,.12);border-radius:50%;justify-content:center;align-items:center;font-size:26px;line-height:1;display:flex}.settings-gear:hover{color:var(--stella);border-color:var(--stella)}.settings-gear:active{transform:scale(.94)}.settings-backdrop{z-index:20;position:fixed;top:0;bottom:0;left:0;right:0}.settings-menu{z-index:40;background:var(--bg-soft);border:1px solid rgba(60,20,32,.12);border-radius:12px;min-width:140px;padding:8px;position:absolute;top:48px;right:0;box-shadow:0 8px 30px rgba(74,20,36,.18)}.settings-menu-title{color:var(--muted);padding:4px 10px 6px;font-size:12px}.settings-opt{text-align:left;width:100%;color:var(--fg);background:0 0;border:none;border-radius:8px;justify-content:space-between;padding:9px 10px;font-size:14px;display:flex}.settings-opt:hover{background:rgba(122,28,46,.12)}.settings-opt.on{color:var(--stella)}.title{margin-top:8px;font-size:22px;font-weight:700}.subtitle{color:var(--muted);text-align:center;margin-top:4px;font-size:14px}.modes{gap:8px;margin:20px 0 8px;display:flex}.mode-pill{background:var(--bg-soft);color:var(--muted);border:1px solid rgba(60,20,32,.12);border-radius:999px;padding:8px 16px;font-size:14px;transition:all .15s}.mode-pill.active{color:var(--fg);border-color:var(--stella);background:rgba(122,28,46,.12)}.avatar-wrap{margin:32px 0 20px;position:relative}.avatar{background:linear-gradient(145deg, var(--accent), var(--stella));-webkit-user-select:none;user-select:none;touch-action:none;border-radius:50%;justify-content:center;align-items:center;width:168px;height:168px;font-size:64px;transition:transform .12s;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 40px rgba(122,28,46,.35)}.avatar img{z-index:1;object-fit:cover;-webkit-user-drag:none;pointer-events:none;width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0}.avatar-fallback{z-index:0;position:relative}.avatar:active{transform:scale(.96)}.avatar.listening{animation:1.2s infinite pulse}.avatar.speaking{animation:1s infinite bob}@keyframes pulse{0%,to{box-shadow:0 8px 40px rgba(122,28,46,.35)}50%{box-shadow:0 8px 60px rgba(122,28,46,.75)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.hint{color:var(--muted);height:18px;margin-top:8px;font-size:13px}.wave{justify-content:center;align-items:center;gap:5px;height:34px;margin-top:12px;display:flex}.wave-bar{background:linear-gradient(180deg, var(--accent), var(--stella));border-radius:3px;width:5px;height:8px;animation:.9s ease-in-out infinite wave}@keyframes wave{0%,to{opacity:.6;height:8px}50%{opacity:1;height:30px}}.starters{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;margin-top:20px;display:flex}.starter{background:var(--bg-soft);color:var(--fg);text-align:left;border:1px solid rgba(60,20,32,.12);border-radius:14px;padding:10px 14px;font-size:14px;line-height:1.3;transition:all .15s}.starter:hover{border-color:var(--stella);background:rgba(122,28,46,.1)}.transcript{flex-direction:column;flex:1;gap:10px;width:100%;margin-top:24px;display:flex;overflow-y:auto}.bubble{border-radius:14px;max-width:82%;padding:10px 14px;font-size:15px;line-height:1.5}.bubble.user{background:rgba(60,20,32,.12);border-bottom-right-radius:4px;align-self:flex-end}.bubble.stella{background:rgba(122,28,46,.14);border-bottom-left-radius:4px;align-self:flex-start}.bubble .who{color:var(--muted);margin-bottom:2px;font-size:11px}.bubble.stella{max-width:92%}.md{flex-direction:column;gap:10px;display:flex}.md-p{margin:0;line-height:1.6}.md-b{color:var(--stella);font-weight:700}.md-i{color:var(--fg);font-style:italic}.md-code{background:rgba(60,20,32,.08);border-radius:6px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}.md-h{margin:2px 0 -2px;font-weight:700;line-height:1.35}.md-h1{font-size:18px}.md-h2,.md-h3,.md-h4{color:var(--fg);font-size:15.5px}.md-hr{border:none;border-top:1px solid rgba(60,20,32,.12);margin:4px 0}.md-ul{flex-direction:column;gap:6px;margin:0;padding-left:18px;display:flex}.md-li{line-height:1.55}.md-li::marker{color:var(--stella)}.md-ol{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.md-step{background:rgba(60,20,32,.05);border:1px solid rgba(122,28,46,.22);border-radius:12px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.md-step-num{background:linear-gradient(145deg, var(--accent), var(--stella));color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;margin-top:1px;font-size:12px;font-weight:700;display:flex}.md-step-body{flex-direction:column;flex:1;gap:3px;line-height:1.55;display:flex}.md-step-head{font-weight:600}.md-step-sub{color:var(--muted);font-size:13.5px;line-height:1.5}.err{color:var(--accent-2);text-align:center;margin-top:8px;font-size:13px}.heard-live{max-width:460px;min-height:22px;color:var(--fg);text-align:center;background:rgba(60,20,32,.05);border:1px solid rgba(60,20,32,.12);border-radius:12px;margin-top:10px;padding:8px 14px;font-size:15px;line-height:1.5}.answer-card{background:var(--bg-soft);border:1px solid rgba(122,28,46,.35);border-radius:14px;width:100%;max-width:460px;margin-top:14px;padding:12px 14px}.answer-label{color:var(--muted);margin-bottom:4px;font-size:12px}.answer-text{color:var(--fg);font-size:15px;line-height:1.5}.answer-actions{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.cta-sm{padding:8px 18px;font-size:14px}.type-row{gap:8px;width:100%;max-width:440px;margin-top:14px;display:flex}.type-input{background:var(--bg-soft);color:var(--fg);border:1px solid rgba(60,20,32,.12);border-radius:999px;outline:none;flex:1;padding:11px 16px;font-size:15px}.type-input:focus{border-color:var(--stella)}.type-input::-webkit-input-placeholder{color:var(--muted)}.type-input::placeholder{color:var(--muted)}.type-send{background:linear-gradient(145deg, var(--accent), var(--stella));color:#fff;border:none;border-radius:999px;padding:0 18px;font-size:14px;font-weight:600}.diary-link{z-index:30;background:var(--bg-soft);border:1px solid rgba(60,20,32,.12);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;font-size:24px;text-decoration:none;display:flex;position:absolute;top:16px;left:16px}.diary-link:active{transform:scale(.94)}.streak-badge{background:var(--accent);color:#fff;border-radius:999px;padding:1px 5px;font-size:11px;font-weight:700;line-height:1.4;position:absolute;top:-4px;right:-6px}.replay-btn{cursor:pointer;color:var(--stella);vertical-align:middle;background:rgba(122,28,46,.18);border:1px solid rgba(122,28,46,.45);border-radius:8px;justify-content:center;align-items:center;margin-left:8px;padding:4px 7px;display:inline-flex}.replay-btn:hover{background:var(--stella);color:#fff}.conv-actions{gap:8px;margin-top:16px;display:flex}.streak-hero{background:linear-gradient(145deg, var(--accent), var(--stella));color:#fff;border-radius:999px;align-self:center;margin:8px 0 16px;padding:8px 22px;font-size:16px;font-weight:700}.diary-list{flex-direction:column;gap:14px;width:100%;display:flex}.diary-entry{background:var(--bg-soft);border:1px solid rgba(60,20,32,.12);border-radius:14px;padding:14px 16px}.diary-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.diary-date{color:var(--accent);font-size:15px;font-weight:700}.diary-del{color:var(--muted);background:0 0;border:none;font-size:12px}.diary-del:hover{color:var(--accent-2)}.diary-line .replay-btn{font-size:12px}.diary-convo{flex-direction:column;gap:5px;display:flex}.diary-line{color:#3a2c31;font-size:14px;line-height:1.5}.diary-line.user .diary-who{color:var(--muted)}.diary-line.assistant .diary-who{color:var(--stella)}.diary-who{font-weight:600}.diary-mistakes{border-top:1px solid rgba(60,20,32,.07);margin-top:10px;padding-top:10px}.diary-mistakes-title{color:var(--muted);margin-bottom:6px;font-size:13px}.diary-mistake{padding:2px 0;font-size:14px}.chat-toggle{background:var(--bg-soft);color:var(--muted);border:1px solid rgba(60,20,32,.12);border-radius:999px;align-self:center;margin-top:18px;padding:7px 16px;font-size:13px}.chat-toggle:hover{color:var(--fg);border-color:var(--stella)}.pause-btn{background:var(--stella);color:#fff;cursor:pointer;border:none;border-radius:999px;align-self:center;align-items:center;gap:8px;margin-top:12px;padding:11px 30px;font-size:16px;font-weight:600;transition:transform .12s,filter .12s;display:inline-flex;box-shadow:0 4px 16px rgba(74,20,36,.14)}.pause-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}.pause-btn:active{transform:translateY(0)}.turn{flex-direction:column;display:flex}.fb{background:rgba(26,115,70,.08);border:1px solid rgba(26,115,70,.3);border-radius:12px;align-self:flex-end;max-width:88%;margin-top:6px;padding:10px 12px;font-size:14px}.fb-loading,.fb-ok{color:var(--muted);padding:6px 12px;font-size:13px}.fb-ok{color:var(--ok);background:rgba(26,115,70,.08);border:1px solid rgba(26,115,70,.3);border-radius:12px;align-self:flex-end;max-width:88%;margin-top:6px}.fb-item{padding:4px 0}.fb-item+.fb-item{border-top:1px solid rgba(60,20,32,.06);margin-top:4px}.fb-line{margin-bottom:3px;font-size:14px}.fb-wrong{color:var(--accent-2);text-decoration:line-through}.fb-arrow{color:var(--muted);margin:0 4px}.fb-correct{color:var(--ok);font-weight:600}.fb-explain{color:#5c5156;font-size:13px;line-height:1.55}.fb-better{color:#3a2c31;margin-top:8px;font-size:13px}.fb-better-label{color:var(--accent);font-weight:600}a.mode-pill{text-decoration:none;display:inline-block}.topbar{justify-content:space-between;align-items:center;width:100%;margin-bottom:8px;display:flex}.back{color:var(--muted);font-size:14px;text-decoration:none}.title-sm{font-size:16px;font-weight:600}.assess-center{text-align:center;flex-direction:column;align-items:center;gap:14px;width:100%;margin-top:40px;display:flex}.assess-emoji{font-size:56px}.assess-lead{max-width:380px;font-size:17px;line-height:1.6}.progress{color:var(--stella);font-size:14px;font-weight:600}.q-en{max-width:420px;font-size:20px;font-weight:600;line-height:1.5}.q-zh{color:var(--muted);max-width:420px;font-size:15px}.cta{background:linear-gradient(145deg, var(--accent), var(--stella));color:#fff;border:none;border-radius:999px;margin-top:8px;padding:14px 36px;font-size:16px;font-weight:600}.talk-btn{border:2px solid var(--stella);min-width:200px;color:var(--fg);touch-action:none;background:rgba(122,28,46,.12);border-radius:999px;margin-top:12px;padding:16px 28px;font-size:16px}.talk-btn.on{background:var(--stella)}.talk-btn:disabled{opacity:.5;border-color:#444}.skip{color:var(--muted);background:0 0;border:none;font-size:13px;text-decoration:underline}.report{flex-direction:column;align-items:center;gap:16px;width:100%;margin-top:20px;display:flex}.level-badge{background:linear-gradient(145deg, var(--accent), var(--stella));color:#fff;border-radius:16px;align-self:center;padding:10px 28px;font-size:22px;font-weight:700}.report-summary{color:var(--fg);text-align:center;font-size:15px;line-height:1.6}.scores{flex-direction:column;gap:10px;width:100%;display:flex}.score-row{align-items:center;gap:10px;display:flex}.score-label{width:52px;color:var(--muted);font-size:13px}.score-bar{background:rgba(60,20,32,.12);border-radius:999px;flex:1;height:8px;overflow:hidden}.score-fill{background:linear-gradient(90deg, var(--ok), var(--accent));border-radius:999px;height:100%}.score-val{text-align:right;width:28px;font-size:13px}.report-block{background:var(--bg-soft);border-radius:14px;width:100%;padding:14px 16px}.report-block-title{margin-bottom:8px;font-size:14px;font-weight:600}.report-block ul{margin:0;padding-left:18px}.report-block li{color:#3a2c31;margin-bottom:4px;font-size:14px;line-height:1.6}.admin-report{border-bottom:1px solid rgba(60,20,32,.07);flex-direction:column;align-items:center;gap:12px;margin-bottom:12px;padding-bottom:12px;display:flex}.admin-report .scores{width:100%}.admin-fb{align-self:stretch;max-width:none;margin:4px 0 8px 14px}.name-card,.settings-menu,.admin-user{-webkit-backdrop-filter:blur(24px)saturate(160%);backdrop-filter:blur(24px)saturate(160%);border-color:rgba(255,255,255,.6);box-shadow:inset 0 1px rgba(255,255,255,.9),0 12px 32px -12px rgba(74,20,36,.22)}.name-title{font-family:var(--display);font-size:24px;font-weight:600}.settings-gear{color:var(--muted);border-color:rgba(255,255,255,.6);box-shadow:inset 0 1px rgba(255,255,255,.9),0 4px 14px -6px rgba(74,20,36,.25)}.title{font-family:var(--display);letter-spacing:-.01em;font-size:28px;font-weight:600}.modes{background:rgba(60,20,32,.06);border-radius:14px;gap:2px;padding:3px}.mode-pill{white-space:nowrap;color:var(--muted);background:0 0;border-radius:11px;padding:8px 12px;font-size:13.5px;font-weight:500;border:0!important}.mode-pill.active{color:var(--fg);background:#fff;font-weight:600;box-shadow:0 1px 3px rgba(74,20,36,.16),0 0 0 .5px rgba(74,20,36,.08)}.modes{max-width:100%}.mode-pill{padding:7px 10px;font-size:12.5px}
