:root{--bg: #f5f5f7;--card: #ffffff;--card2: #fbfbfd;--fill: #efeff1;--tx: #1d1d1f;--tx2: #6e6e73;--tx3: #8e8e93;--line: rgba(0, 0, 0, .07);--line2: rgba(0, 0, 0, .12);--blue: #0071e3;--blue2: #0077ed;--blue-d: #0062c4;--blue-soft: rgba(0, 113, 227, .1);--green: #34c759;--danger: #d70015;--sh: 0 6px 24px rgba(0, 0, 0, .06), 0 1px 3px rgba(0, 0, 0, .05);--rc: 20px;--r: 12px;--pill: 980px;--sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--mono: "SF Mono", ui-monospace, "JetBrains Mono", "Cascadia Code", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--tx);font-family:var(--sans);line-height:1.5;letter-spacing:-.011em;-webkit-font-smoothing:antialiased}.mono{font-family:var(--mono);letter-spacing:0}.app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;border-bottom:1px solid var(--line);background:#ffffffb8;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px)}.brand{display:flex;align-items:center;gap:11px}.mark{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--blue);color:#fff;box-shadow:0 2px 8px #0071e359}.mark i{font-size:18px}.wordmark{font-size:17px;font-weight:600;letter-spacing:-.02em}.status{display:flex;align-items:center;gap:8px;height:30px;padding:0 13px;border-radius:var(--pill);background:var(--fill);font-size:12px;color:var(--tx2)}.status .dot{width:7px;height:7px;border-radius:50%;background:var(--green)}.shell{flex:1;display:flex;min-height:0}.rail{width:220px;flex-shrink:0;padding:16px 12px;display:flex;flex-direction:column;gap:2px}.rail .cap{font-size:12px;font-weight:600;color:var(--tx3);padding:12px 12px 6px}.nav{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:10px;cursor:pointer;color:var(--tx);font-size:14px;transition:.14s;border:none;background:none;width:100%;text-align:left;font-family:inherit}.nav i{font-size:20px;color:var(--tx2);transition:.14s}.nav:hover{background:#0000000a}.nav.on{background:var(--blue-soft);color:var(--blue-d);font-weight:500}.nav.on i{color:var(--blue)}.rail .foot{margin-top:auto;padding:12px;font-size:12px;color:var(--tx3);display:flex;align-items:center;gap:8px}.rail .foot .dot{width:7px;height:7px;border-radius:50%;background:var(--green)}.stage{flex:1;min-width:0;overflow:auto;padding:28px 34px 48px}.page{max-width:720px;margin:0 auto}.phead{margin-bottom:24px}.phead h1{font-size:28px;font-weight:600;letter-spacing:-.028em}.phead p{font-size:14px;color:var(--tx2);margin-top:4px}.lab{font-size:13px;font-weight:600;color:var(--tx3);margin:0 0 11px 4px}.card{background:var(--card);border-radius:var(--rc);box-shadow:var(--sh)}.upload{display:flex;align-items:center;gap:15px;padding:16px 18px;cursor:pointer;border:none;width:100%;text-align:left;font-family:inherit;background:var(--card);border-radius:var(--rc);box-shadow:var(--sh)}.upload .ava{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:20px;flex-shrink:0;background:var(--blue-soft);color:var(--blue-d)}.upload .nm{font-size:16px;font-weight:600;letter-spacing:-.02em}.upload .sub{font-size:13px;color:var(--tx2);margin-top:2px}textarea.ta{width:100%;background:var(--card);border-radius:var(--rc);box-shadow:var(--sh);padding:16px 17px;font-size:16px;line-height:1.65;color:var(--tx);font-family:inherit;border:none;resize:vertical;min-height:120px;outline:none}.meta{display:flex;justify-content:flex-end;gap:14px;margin-top:8px;font-size:12px;color:var(--tx3);font-family:var(--mono)}.seg{display:flex;gap:3px;padding:3px;background:var(--fill);border-radius:13px}.seg button{flex:1;text-align:center;padding:8px 6px;border-radius:10px;font-size:13px;font-weight:500;color:var(--tx2);cursor:pointer;transition:.15s;border:none;background:none;font-family:inherit}.seg button.on{background:#fff;color:var(--tx);box-shadow:0 1px 4px #0000001a}.field{width:100%;height:44px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:0 15px;color:var(--tx);font-family:inherit;font-size:15px;box-shadow:0 1px 2px #00000008;outline:none}.field:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}.field::placeholder{color:var(--tx3)}.btn{height:38px;padding:0 17px;border-radius:var(--pill);background:var(--fill);color:var(--tx);font-size:14px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:7px;font-family:inherit;border:none;transition:.15s}.btn:hover{background:#e5e5e9}.btn i{font-size:17px}.btn.blue{background:var(--blue);color:#fff}.btn.blue:hover{background:var(--blue2)}.btn.blue:disabled{opacity:.5;cursor:default}.btn.block{width:100%;height:50px;justify-content:center;font-size:16px;box-shadow:0 6px 18px #0071e347}.result{padding:16px 18px;display:flex;align-items:center;gap:16px;margin-top:16px}.result audio{flex:1;height:40px}.readout{font-family:var(--mono);font-size:12px;color:var(--tx2);white-space:nowrap}.err{color:var(--danger);font-size:14px;margin-top:12px}.placeholder{display:grid;place-items:center;min-height:60vh;color:var(--tx3);text-align:center}.placeholder i{font-size:44px;margin-bottom:12px;display:block}.placeholder .t{font-size:18px;font-weight:500;color:var(--tx2)}.placeholder .s{font-size:14px;margin-top:6px}.phead.row{display:flex;align-items:flex-end;justify-content:space-between}.btn.danger{background:#d700151a;color:var(--danger)}.btn.danger:hover{background:#d7001529}.select{width:100%;height:44px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:0 15px;color:var(--tx);font-family:inherit;font-size:15px;box-shadow:0 1px 2px #00000008;outline:none;cursor:pointer}.select:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}.linkbtn{background:none;border:none;color:var(--blue);font-family:inherit;font-size:13px;cursor:pointer;padding:0}.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:15px}.vcard{padding:17px}.vcard .top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.vcard .ava{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:16px;font-weight:500;background:var(--blue-soft);color:var(--blue-d)}.vcard .nm{font-size:15px;font-weight:600;letter-spacing:-.02em}.tag{display:inline-block;font-size:12px;padding:3px 11px;border-radius:var(--pill);font-weight:500;background:var(--blue-soft);color:var(--blue-d);margin-top:8px}.vcard .bot{display:flex;align-items:center;gap:8px;margin-top:14px}.iconbtn{width:34px;height:34px;border-radius:50%;background:var(--fill);color:var(--tx2);display:grid;place-items:center;cursor:pointer;border:none;transition:.15s}.iconbtn:hover{background:#e5e5e9;color:var(--tx)}.iconbtn.d:hover{background:#d700151f;color:var(--danger)}.iconbtn i{font-size:17px}.empty{grid-column:1 / -1;color:var(--tx3);text-align:center;padding:48px 0;font-size:14px}.newvoice{padding:18px;margin-bottom:18px;display:flex;flex-direction:column;gap:12px}.newvoice .rowflex{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.chosen{font-size:13px;color:var(--tx2)}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.logincard{width:100%;max-width:360px;padding:32px 28px;display:flex;flex-direction:column;gap:14px;text-align:center}.logincard .mark{width:52px;height:52px;border-radius:16px;margin:2px auto 4px}.logincard .mark i{font-size:28px}.logincard h1{font-size:22px;font-weight:600}.logincard p{font-size:14px;color:var(--tx2);margin-top:-8px}.tb-right{display:flex;align-items:center;gap:10px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip{padding:6px 14px;border-radius:var(--pill);border:1px solid var(--line2);background:var(--card);font-size:13px;color:var(--tx);cursor:pointer;font-family:inherit;transition:.15s}.chip:hover{border-color:var(--blue);color:var(--blue)}.vecgrid{display:grid;grid-template-columns:1fr 1fr;gap:11px 22px}.vecrow{display:flex;align-items:center;gap:11px;font-size:14px;color:var(--tx)}.vecrow>span:first-child{width:44px;flex:none;color:var(--tx2)}.vecrow input[type=range]{flex:1;accent-color:var(--blue)}.vecval{width:40px;flex:none;text-align:right;font-family:var(--mono);font-size:12px;color:var(--tx2)}.check{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--tx);cursor:pointer}.check input{accent-color:var(--blue);width:16px;height:16px}.hlist{display:flex;flex-direction:column;gap:14px}.hcard{padding:16px 18px}.htext{font-size:15px;line-height:1.6;color:var(--tx);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.hmeta{display:flex;align-items:center;gap:12px;margin-top:10px;font-size:13px;color:var(--tx2)}.hbot{display:flex;align-items:center;gap:14px;margin-top:14px}.hbot audio{flex:1;height:40px}.hacts{display:flex;gap:8px}a.iconbtn{text-decoration:none}.preview{padding:14px 16px;margin-top:10px}.pvhead{font-size:13px;color:var(--tx2);margin-bottom:8px}.pvnote{color:var(--tx3)}.pvlist{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--tx)}.pvlist li{line-height:1.5}.dlist{display:flex;flex-direction:column;gap:12px}.drow{padding:14px 16px}.drow-top{display:flex;align-items:center;gap:10px}.didx{width:24px;height:24px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:600;background:var(--blue-soft);color:var(--blue-d)}.drow-top .select{flex:1}.drow-acts{display:flex;gap:6px}.dseg{margin-top:10px;max-width:280px}a.btn{text-decoration:none}:root[data-theme=dark]{--bg: #1c1c1e;--card: #2c2c2e;--card2: #262628;--fill: #3a3a3c;--tx: #f5f5f7;--tx2: #aeaeb2;--tx3: #8e8e93;--line: rgba(255, 255, 255, .1);--line2: rgba(255, 255, 255, .16);--blue: #0a84ff;--blue2: #409cff;--blue-d: #64a9ff;--blue-soft: rgba(10, 132, 255, .18);--green: #30d158;--danger: #ff453a;--sh: 0 6px 24px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .3)}:root[data-theme=dark] .topbar{background:#1c1c1eb8}:root[data-theme=dark] .seg button.on{background:#48484a;color:var(--tx)}:root[data-theme=dark] .btn:hover{background:#48484a}:root[data-theme=dark] .iconbtn:hover{background:#48484a}:root[data-theme=dark] .nav:hover{background:#ffffff0f}
