@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-CmcxpzmF.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-yqk7_qG0.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-BtGHVI3Q.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-N1TV9ACq.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-CevHOlzG.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-QhwQXayn.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-Dn-cqWhb.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-BhDX_RLI.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-C_OblDzq.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-zoSM89R3.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-6-AWF9yE.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-BZFL66GJ.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-DqTcxLwU.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-C8N-B5AP.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D7hk9wLv.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-BifMsNUA.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-5raxGPWx.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-C5zKQMXr.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-rgB1DpUr.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DeXYNBV7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #eef1f4;--surface: #ffffff;--surface-2: #f5f7f9;--fg: #131820;--muted: #5a6473;--line: #d9dee5;--yue: #d0213a;--yue-soft: #fbe6e9;--en: #1d5fd0;--en-soft: #e3ecfb;--pu: #6b7380;--pu-soft: #eceef1;--ink: #131820;--ink-fg: #ffffff;--good: #1a8a55;--good-soft: #def3e8;--warn: #b8660b;--warn-soft: #fbefdc;--bad: #c42b2b;--f-display: "Noto Sans SC", -apple-system, "PingFang SC", sans-serif;--f-hk: "Noto Sans HK", "PingFang HK", "Noto Sans SC", sans-serif;--f-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--f-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--r: 12px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0f1217;--surface: #181c23;--surface-2: #1f242d;--fg: #eef1f5;--muted: #9aa3b2;--line: #2b313b;--yue: #ff5d70;--yue-soft: #3a1c22;--en: #6a9dff;--en-soft: #18263f;--pu: #a3abb8;--pu-soft: #262b33;--ink: #eef1f5;--ink-fg: #0f1217;--good: #4cc98a;--good-soft: #15301f;--warn: #f0a648;--warn-soft: #33260f;--bad: #ff6b6b;color-scheme:dark}}:root[data-theme=dark]{--bg: #0f1217;--surface: #181c23;--surface-2: #1f242d;--fg: #eef1f5;--muted: #9aa3b2;--line: #2b313b;--yue: #ff5d70;--yue-soft: #3a1c22;--en: #6a9dff;--en-soft: #18263f;--pu: #a3abb8;--pu-soft: #262b33;--ink: #eef1f5;--ink-fg: #0f1217;--good: #4cc98a;--good-soft: #15301f;--warn: #f0a648;--warn-soft: #33260f;--bad: #ff6b6b;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.6}body:before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:30;background:var(--bg)}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}:focus-visible{outline:2px solid var(--en);outline-offset:2px}.wrap{max-width:480px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:12px 96px;display:flex;flex-direction:column;gap:16px}.top{display:flex;align-items:center;justify-content:space-between;gap:10px}.brand{font-family:var(--f-display);font-weight:700;font-size:20px;letter-spacing:.02em;display:flex;align-items:center;gap:8px}.brand .bars{display:inline-flex;gap:3px}.brand .bars i{width:5px;height:18px;border-radius:2px;display:block}.status{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.pill{font-size:12px;padding:3px 9px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--muted);white-space:nowrap;display:inline-flex;align-items:center;gap:5px}.pill .dot{width:7px;height:7px;border-radius:50%;background:var(--good)}.pill.off .dot{background:var(--warn)}h1,h2,h3{font-family:var(--f-display);margin:0;text-wrap:balance}h2{font-size:13px;letter-spacing:.08em;color:var(--muted);font-weight:500}.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.hero h1{font-size:26px;line-height:1.25}.streak{text-align:right;font-family:var(--f-mono)}.streak b{font-size:28px;display:block;line-height:1}.streak span{font-size:12px;color:var(--muted);font-family:var(--f-body)}.route{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:4px 0}.stop{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:12px 14px 12px 8px;width:100%;text-align:left;position:relative}.stop+.stop{border-top:1px solid var(--line)}.stop{grid-template-columns:44px 1fr auto;padding:12px 14px}.stop .node{width:44px;height:44px;border-radius:12px;background:var(--soft);color:var(--c);display:grid;place-items:center}.stop .node svg{width:24px;height:24px}.stop.done .node{background:var(--good-soft);color:var(--good)}.stop.done .t{color:var(--muted)}.stop .min b{display:block;font-family:var(--f-body);font-size:13px;color:var(--c)}.stop .t{font-weight:600}.stop .s{font-size:13px;color:var(--muted)}.stop .min{font-family:var(--f-mono);font-size:13px;color:var(--muted)}.stop:hover{background:var(--surface-2)}.meters{display:grid;grid-template-columns:1fr 1fr;gap:10px}.meter{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;min-width:0}.meter .k{font-size:12px;color:var(--muted)}.meter .v{font-family:var(--f-mono);font-size:15px;font-weight:600}.bar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden;margin-top:6px}.bar i{display:block;height:100%;background:var(--ink);border-radius:3px}.lang{font-size:11px;font-weight:700;padding:1px 6px;border-radius:4px;color:#fff;flex:none;line-height:1.6}.lang.yue{background:var(--yue)}.lang.en{background:var(--en)}.lang.pu{background:var(--pu)}:root .lang{color:var(--ink-fg)}.tri{display:flex;flex-direction:column;gap:6px}.tri .row{display:flex;gap:8px;align-items:flex-start}.tri .row>div{min-width:0}.hk{font-family:var(--f-hk)}.jp{font-family:var(--f-mono);font-size:12px;color:var(--yue);display:block}.say{margin-left:auto;flex:none;font-size:13px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 9px;background:var(--surface)}.list{display:flex;flex-direction:column;gap:8px}.item{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;display:flex;gap:10px;align-items:center;text-align:left;width:100%}.item .main{flex:1;min-width:0}.item .sub{font-size:13px;color:var(--muted)}.tag{font-size:11px;border-radius:4px;padding:0 6px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line);white-space:nowrap}.seg{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px;gap:3px}.seg button{flex:1;padding:6px 0;border-radius:999px;font-size:14px;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--ink);color:var(--ink-fg)}.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:max(8px,env(safe-area-inset-left,0px));padding-right:max(8px,env(safe-area-inset-right,0px))}.tabs-in{max-width:480px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr)}.tabs button{padding:10px 0 8px;font-size:13px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px}.tabs button svg{width:22px;height:22px}.tabs button[aria-current=page]{color:var(--fg);font-weight:600}.panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:var(--bg);overflow-y:auto}.panel-head{position:sticky;top:0;z-index:2;background:var(--bg);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top,0px)}.panel-head-in{max-width:480px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:10px max(16px,env(safe-area-inset-right,0px)) 10px max(16px,env(safe-area-inset-left,0px))}.back{font-size:15px;padding:4px 8px 4px 0;color:var(--muted)}.panel-head h3{font-size:16px;flex:1;min-width:0}.panel .wrap{padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:12px}.card.edge-yue{border-top:4px solid var(--yue)}.card.edge-en{border-top:4px solid var(--en)}.card.edge-mix{border-top:4px solid;border-image:linear-gradient(90deg,var(--yue) 50%,var(--en) 50%) 1}.eyebrow{font-size:12px;color:var(--muted);letter-spacing:.06em}.prompt{font-family:var(--f-display);font-size:19px;font-weight:600;line-height:1.45}.btn{white-space:nowrap;border-radius:10px;padding:11px 16px;font-weight:600;background:var(--surface-2);border:1px solid var(--line)}.btn.primary{background:var(--ink);color:var(--ink-fg);border-color:var(--ink)}.row-btns{display:flex;gap:8px;flex-wrap:wrap}.row-btns .btn{flex:1;min-width:0}textarea,input[type=text]{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;resize:vertical}.mic{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px;border-radius:12px;border:2px dashed var(--line);color:var(--muted);font-weight:600}.mic.rec{border-style:solid;border-color:var(--bad);color:var(--bad)}.wave{display:inline-flex;gap:3px;align-items:center;height:18px}.wave i{width:3px;background:currentColor;border-radius:2px;height:30%;animation:w .8s ease-in-out infinite}.wave i:nth-child(2){animation-delay:.1s}.wave i:nth-child(3){animation-delay:.2s}.wave i:nth-child(4){animation-delay:.3s}.wave i:nth-child(5){animation-delay:.4s}@keyframes w{50%{height:100%}}@media (prefers-reduced-motion: reduce){.wave i{animation:none;height:60%}}.fix{border-left:3px solid var(--warn);background:var(--warn-soft);border-radius:0 8px 8px 0;padding:8px 12px;font-size:14px}.fix .from{text-decoration:line-through;color:var(--muted)}.fix .to{font-weight:600}.fix .why{color:var(--muted);font-size:13px;display:block}.ok{border-left:3px solid var(--good);background:var(--good-soft);border-radius:0 8px 8px 0;padding:8px 12px;font-size:14px}.flip-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.flip-actions button{border-radius:10px;padding:10px 4px;border:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;align-items:center}.flip-actions small{font-family:var(--f-mono);color:var(--muted);font-size:11px}.progress{font-family:var(--f-mono);font-size:13px;color:var(--muted)}.chat{display:flex;flex-direction:column;gap:10px}.msg{max-width:88%;border-radius:14px;padding:9px 12px;background:var(--surface);border:1px solid var(--line);text-align:left}.msg.me{align-self:flex-end;background:var(--surface-2)}.msg .who{font-size:12px;color:var(--muted)}.msg .more{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);font-size:13px}.msg .hint{font-size:11px;color:var(--muted)}.scores{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}.scores div{background:var(--surface-2);border-radius:8px;padding:6px}.scores b{font-family:var(--f-mono);font-size:18px;display:block}.scores span{font-size:12px;color:var(--muted)}.w-low{text-decoration:underline wavy var(--warn);text-underline-offset:3px}.email{white-space:pre-wrap;font-size:14px;background:var(--surface-2);border-radius:8px;padding:10px 12px}.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:60;background:var(--surface);color:var(--fg);border:1px solid var(--line);box-shadow:0 6px 24px #00000026;border-radius:12px;padding:9px 14px;font-size:14px;max-width:min(420px,calc(100vw - 32px))}.sheet-note{font-size:14px;color:var(--muted)}.sec{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:-6px}.link{color:var(--en);font-size:14px;font-weight:600;padding:4px 0;text-align:left;align-self:flex-start}.stop-txt{display:flex;flex-direction:column;min-width:0}.stop-txt .t{display:inline}.stop .s.mono{font-family:var(--f-mono);font-size:12px}.chev{color:var(--muted);display:grid;place-items:center;flex:none}.chev svg{width:18px;height:18px}.kind{font-size:12px;font-weight:600;border-radius:999px;padding:1px 8px;align-self:flex-start;white-space:nowrap}.kind.life{background:var(--good-soft);color:var(--good)}.kind.work{background:var(--pu-soft);color:var(--fg)}.kind.mine{background:var(--warn-soft);color:var(--warn)}.stop-txt .kind{margin:0;font-size:11px;padding:0 7px}.stop{padding:8px 12px;gap:10px;grid-template-columns:34px 1fr auto}.stop .node{width:34px;height:34px;border-radius:10px}.stop .node svg{width:19px;height:19px}.stop-line{display:flex;align-items:center;gap:6px}.stop .t{font-size:15px;line-height:1.4}.stop .s.one{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.stop .min{white-space:nowrap;font-size:12px;font-family:var(--f-body)}.chips{display:flex;gap:8px;align-items:center;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px}.chips::-webkit-scrollbar{display:none}.chip{flex:none;white-space:nowrap;font-size:14px;padding:5px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted)}.chip[aria-pressed=true]{background:var(--ink);color:var(--ink-fg);border-color:var(--ink)}.chip.add{margin-left:auto;color:var(--en);border-style:dashed}.meter .v small{font-size:12px;color:var(--muted);font-weight:500}.meter .link,.meter .sheet-note{display:block;margin-top:6px;font-size:13px}.rate-0{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))!important;color:var(--bad)}.rate-1{border-color:color-mix(in srgb,var(--warn) 45%,var(--line))!important;color:var(--warn)}.rate-2{border-color:color-mix(in srgb,var(--good) 45%,var(--line))!important;color:var(--good)}.pbar{height:4px;border-radius:2px;background:var(--line);overflow:hidden}.pbar i{display:block;height:100%;background:var(--ink)}.icon-btn{width:32px;height:32px;display:grid;place-items:center;color:var(--muted);border-radius:50%}.icon-btn svg{width:20px;height:20px}.item>.main{text-align:left;padding:0;min-height:24px}.item .x{font-size:20px;color:var(--muted);padding:0 4px;line-height:1}.confirm{margin-top:6px;background:color-mix(in srgb,var(--bad) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--bad) 40%,var(--line));border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;font-size:14px}.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn:disabled,.mic:disabled{opacity:.6;cursor:default}a.btn{text-decoration:none;display:inline-block;text-align:center}.link.muted{color:var(--muted);font-weight:500;font-size:13px;padding:0}.hint-box{border-left-color:var(--en);background:var(--en-soft)}.page-title{font-size:22px}.mine{align-self:flex-end;max-width:88%;display:flex;flex-direction:column;gap:6px}.mine .msg{max-width:100%;align-self:flex-end}.msg.open{max-width:100%}.msg-actions{display:flex;gap:8px;margin-top:8px}.msg-actions .say{margin-left:0;padding:2px 12px}.say:disabled{opacity:.6}.row-btns .mic{flex:1;width:auto;padding:11px;border-width:1px}.setting{display:flex;justify-content:space-between;gap:12px;align-items:center}.setting+.setting{border-top:1px solid var(--line);padding-top:12px}.setting p{margin:2px 0 0;font-size:13px;color:var(--muted)}.setting>.btn,.setting>.row-btns{flex:none}.lock{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.lock form{width:min(320px,100%);display:grid;gap:14px}.lock .brand{justify-content:center;font-size:24px;margin-bottom:8px}.lock input{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:11px 12px}.err{color:var(--bad);font-size:14px;min-height:1.4em;text-align:center}.toast{cursor:pointer}.toast[hidden]{display:none}
