:root{--page: #e9ecf1;--bg: #f6f7fa;--surface: #ffffff;--surface2: #edf0f5;--text: #171a21;--muted: #66707f;--border: #e1e5ec;--accent: #2456d6;--accent-soft: #e7edfc;--on-accent: #ffffff;--good: #0e7f5b;--good-soft: #e1f3ec;--bad: #c93a3a;--bad-soft: #fbe9e9;--warn: #9a6a00;--warn-soft: #fbf0d8;--star: #e8a200;--bar-prev: #c9cfda;--shadow: 0 10px 30px rgba(23, 26, 33, .1);--r-lg: 18px;--r-md: 13px;--r-sm: 9px}:root[data-theme=dark]{--page: #07080b;--bg: #101318;--surface: #191d25;--surface2: #232834;--text: #edf0f6;--muted: #8f99a9;--border: #2a303c;--accent: #8aaeff;--accent-soft: #1d2a4c;--on-accent: #0a1e4a;--good: #52c79a;--good-soft: #12352a;--bad: #f08a8a;--bad-soft: #3d1f1f;--warn: #e3b341;--warn-soft: #3a2e12;--star: #ffc533;--bar-prev: #3a4150;--shadow: 0 10px 30px rgba(0, 0, 0, .45)}:root[data-accent=green]{--accent: #0e7f5b;--accent-soft: #e1f3ec;--on-accent: #ffffff}:root[data-theme=dark][data-accent=green]{--accent: #5ad3a5;--accent-soft: #12352a;--on-accent: #04281b}:root[data-accent=violet]{--accent: #6d3ae8;--accent-soft: #efe9fc;--on-accent: #ffffff}:root[data-theme=dark][data-accent=violet]{--accent: #b9a0fc;--accent-soft: #2a2150;--on-accent: #1d1140}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,PingFang TC,Noto Sans TC,Segoe UI,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;transition:background .25s,color .25s}svg{display:block}button{font:inherit;color:inherit}.ic{width:20px;height:20px;flex:none}.ic.lg{width:26px;height:26px}.ic.sm{width:16px;height:16px}.shell{max-width:520px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg)}.appbar{height:52px;flex:none;display:flex;align-items:center;gap:6px;padding:0 10px;position:sticky;top:0;background:var(--bg);z-index:10}.appbar h1,.appbar h3{font-size:16px;font-weight:800;letter-spacing:-.01em}.spacer{flex:1}.icon-btn{width:38px;height:38px;flex:none;border-radius:50%;border:none;background:transparent;color:var(--text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.icon-btn.solid{background:var(--surface);border:1px solid var(--border)}.content{flex:1;padding:6px 16px 20px;display:flex;flex-direction:column;gap:12px;min-height:0}.content.has-tabbar{padding-bottom:84px}.bottom{margin-top:auto;flex:none;display:flex;flex-direction:column;gap:10px;padding-top:10px}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:520px;height:calc(60px + env(safe-area-inset-bottom));padding:0 6px env(safe-area-inset-bottom);border-top:1px solid var(--border);background:var(--surface);display:flex;align-items:stretch;z-index:20}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10.5px;font-weight:600;color:var(--muted);text-decoration:none;border:none;background:none;cursor:pointer}.tab.active{color:var(--accent);font-weight:800}.t-title{font-size:21px;font-weight:800;letter-spacing:-.02em;text-wrap:balance}.t-sub{font-size:13px;color:var(--muted)}.t-label{font-size:11.5px;font-weight:800;color:var(--muted);letter-spacing:.05em}.t-big{font-size:19px;font-weight:700;line-height:1.45}.t-en{font-size:20px;font-weight:750;letter-spacing:.005em;line-height:1.4}.phon{font-size:13px;color:var(--muted);font-family:Georgia,serif}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px}.card.flat{background:var(--surface2);border-color:transparent}.card>*+*{margin-top:9px}.card>.list-row+.list-row{margin-top:0}.row{display:flex;align-items:center;gap:10px;min-width:0}.row.between{justify-content:space-between}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.center{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px}.row.center{flex-direction:row}.list-row{display:flex;align-items:center;gap:11px;padding:11px 2px;border-bottom:1px solid var(--border);min-width:0;width:100%;text-align:left;background:none;border-left:none;border-right:none;border-top:none}.list-row:last-child{border-bottom:none}.grow{flex:1;min-width:0}.chev{color:var(--muted);flex:none}.divider{height:1px;background:var(--border);flex:none}.btn{display:flex;align-items:center;justify-content:center;gap:8px;height:50px;border-radius:25px;border:none;background:var(--accent);color:var(--on-accent);font-size:15.5px;font-weight:750;width:100%;cursor:pointer;flex:none;text-decoration:none}.btn:disabled{opacity:.45;cursor:default}.btn.secondary{background:var(--accent-soft);color:var(--accent)}.btn.ghost{background:transparent;border:1.5px solid var(--border);color:var(--text)}.btn.small{height:38px;font-size:13.5px;border-radius:19px;width:auto;padding:0 16px}.mic-btn{width:74px;height:74px;border-radius:50%;border:none;background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center;margin:0 auto;cursor:pointer;flex:none;box-shadow:0 10px 26px color-mix(in srgb,var(--accent) 38%,transparent);touch-action:none;-webkit-user-select:none;user-select:none}.mic-btn .ic{width:30px;height:30px}.mic-btn.recording{background:var(--bad);color:#fff;box-shadow:0 10px 26px color-mix(in srgb,var(--bad) 45%,transparent);animation:pulse 1.2s infinite}@keyframes pulse{50%{transform:scale(1.07)}}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-size:13.5px;font-weight:650;cursor:pointer}.chip.accent{background:var(--accent-soft);color:var(--accent);border-color:transparent}.chip.drag{padding-left:9px;touch-action:none}.chip.drag:before{content:"";width:10px;height:14px;flex:none;background:radial-gradient(circle,currentColor 1.3px,transparent 1.6px) 0 0/5px 5px;opacity:.45}.chip.ghosted{opacity:.35;border-style:dashed;pointer-events:none}.meter{height:7px;border-radius:4px;background:var(--surface2);overflow:hidden;min-width:34px;width:100%}.row .meter{flex:1;width:auto}.card .meter,.card.flat .meter{background:color-mix(in srgb,var(--text) 11%,transparent)}.meter i{display:block;height:100%;border-radius:4px;background:var(--accent);transition:width .3s}.option{display:flex;align-items:center;gap:10px;padding:13px 14px;border-radius:var(--r-md);background:var(--surface);border:1.5px solid var(--border);font-size:15px;font-weight:650;width:100%;text-align:left;cursor:pointer}.option.correct{border-color:var(--good);background:var(--good-soft)}.option.wrong{border-color:var(--bad);background:var(--bad-soft)}.blank{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:34px;margin:0 3px;border-radius:var(--r-sm);background:var(--surface2);border:1.5px dashed var(--muted);vertical-align:middle;cursor:pointer}.blank.filled{border:none;background:var(--accent-soft);color:var(--accent);font-weight:750;font-size:14.5px;padding:0 12px}.blank.hit{border-color:var(--accent);background:var(--accent-soft)}.chat{display:flex;flex-direction:column;gap:9px}.bubble{max-width:82%;padding:10px 13px;background:var(--surface);border:1px solid var(--border);font-size:14px;line-height:1.45;border-radius:16px 16px 16px 6px;align-self:flex-start}.bubble.me{background:var(--accent);color:var(--on-accent);border-color:transparent;align-self:flex-end;border-bottom-left-radius:16px;border-bottom-right-radius:6px}.score-big{font-size:54px;font-weight:850;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.score-big small{font-size:19px;font-weight:700;color:var(--muted);letter-spacing:0}.w-bad{color:var(--bad);text-decoration:underline wavy var(--bad) 1.5px;text-underline-offset:4px}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:21px;height:21px;padding:0 6px;border-radius:11px;background:var(--bad);color:#fff;font-size:11.5px;font-weight:800;flex:none;font-variant-numeric:tabular-nums}.badge.accent{background:var(--accent);color:var(--on-accent)}.banner{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:var(--r-md);background:var(--accent-soft);color:var(--text);font-size:13px;line-height:1.45}.banner .ic{margin-top:1px;color:var(--accent)}.banner.warn{background:var(--warn-soft)}.banner.warn .ic{color:var(--warn)}.banner.good{background:var(--good-soft)}.banner.good .ic{color:var(--good)}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:13px 14px;display:flex;flex-direction:column;gap:2px}.stat .num{font-size:26px;font-weight:850;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.15}.stat .num .row{gap:6px}.delta{font-size:12.5px;font-weight:750}.delta.good{color:var(--good)}.delta.bad{color:var(--bad)}.chart{display:flex;flex-direction:column;gap:8px}.legend{display:flex;gap:10px;font-size:12px;color:var(--muted);font-weight:600}.lg-dot{width:9px;height:9px;border-radius:3px;background:var(--accent);display:inline-block;margin-right:5px;vertical-align:-1px}.lg-dot.prev{background:var(--bar-prev)}.bars{display:flex;align-items:flex-end;justify-content:space-between;height:110px;padding-top:4px}.bargroup{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}.bargroup .pair{display:flex;align-items:flex-end;gap:2px;height:88px}.bar{width:11px;border-radius:4px 4px 0 0;background:var(--accent)}.bar.prev{background:var(--bar-prev)}.lvmap{display:flex;flex-direction:column;gap:14px;padding:4px 6px}.lvrow{display:flex;justify-content:space-around;align-items:center}.level{width:54px;height:54px;border-radius:50%;background:var(--surface);border:2px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:850;font-size:15px;color:var(--text);font-variant-numeric:tabular-nums;cursor:pointer}.level.done{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.level.now{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.level.locked{color:var(--muted);background:var(--surface2);border-style:dashed;cursor:default}.level .ic.sm{width:15px;height:15px}.seg{display:flex;background:var(--surface2);border-radius:999px;padding:3px;gap:2px;flex:none}.seg button,.seg span{flex:1;text-align:center;padding:6px 10px;border-radius:999px;font-size:12.5px;font-weight:700;color:var(--muted);white-space:nowrap;border:none;background:none;cursor:pointer}.seg .on{background:var(--surface);color:var(--text);box-shadow:0 1px 4px #0000001f}.switch{width:46px;height:27px;border-radius:14px;background:var(--surface2);border:1px solid var(--border);position:relative;flex:none;cursor:pointer}.switch:after{content:"";position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;background:var(--surface);box-shadow:0 1px 4px #00000040;transition:left .15s}.switch.on{background:var(--accent);border-color:var(--accent)}.switch.on:after{left:22px;background:var(--on-accent)}.swatch{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center;color:#fff;flex:none}.swatch.sel{border-color:var(--text)}.swatch[data-sw=blue]{background:#2456d6}.swatch[data-sw=green]{background:#0e7f5b}.swatch[data-sw=violet]{background:#6d3ae8}.ph-img{border-radius:var(--r-md);background:var(--surface2);border:1px dashed var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--muted);font-size:12.5px;font-weight:650;min-height:90px;flex:none;overflow:hidden}.ph-img img{max-width:100%;max-height:100%;object-fit:contain}.thumb{width:58px;height:74px;border-radius:var(--r-sm);background:var(--surface2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--muted);flex:none;overflow:hidden}.thumb img{width:100%;height:100%;object-fit:cover}.star{color:var(--star)}.stars-row{display:inline-flex;gap:2px}textarea.edit,select.edit,input.edit{width:100%;border:1.5px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);font:inherit;font-size:15px;padding:10px 12px;resize:vertical}textarea.edit:focus,input.edit:focus{outline:2px solid var(--accent);outline-offset:-1px}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
