/* 工作台（/chat、/works、/console）：浅色、圆角、柔和阴影。在 ai.css 之后加载，body.app 下的同名类在这里重新定样子。 */
body.app{
  --bg:#F4F5F7;--paper:#FFFFFF;--ink:#0F172A;--ink-2:#334155;--muted:#64748B;--line:#E5E8EE;--line-2:#EEF0F4;--tint:#F1F3F6;
  --blue:#2563EB;--blue-s:#EEF3FF;--r:16px;--r-m:12px;--r-s:10px;
  --sh:0 1px 2px rgba(15,23,42,.04),0 4px 16px rgba(15,23,42,.04);--sh-l:0 12px 40px rgba(15,23,42,.12);
  background:var(--bg);font-feature-settings:normal;height:100dvh;overflow:hidden
}
body.app .ic{width:20px;height:20px;flex:none}
/* 我们自己的图标（views/_icons.php，方向 B · 蓝色双色）：导航和功能图标是蓝色，选中时面更实；按钮里的跟按钮文字同色 */
.ic-b,.ap-tabs .ic,.ap-btabs .ic,.subnav .ic,.ap-top .ic{color:var(--blue)}
.ap-tabs a[aria-current] .ic-f,.ap-btabs a[aria-current] .ic-f,.subnav a[aria-current] .ic-f{fill-opacity:.32}
.ap-tabs a:not([aria-current]) .ic,.ap-btabs a:not([aria-current]) .ic,.subnav a:not([aria-current]) .ic{opacity:.85}
.ap{display:grid;grid-template-columns:296px minmax(0,1fr);height:100dvh}
/* 侧栏 */
.ap-side{display:flex;flex-direction:column;min-height:0;background:var(--paper);border-right:1px solid var(--line)}
.ap-brand{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 12px}
.ap-brand .brand{gap:10px;font-size:16px}
.ap-brand .brand svg{width:34px;height:34px}
.ap-brand .brand span{display:flex;flex-direction:column;line-height:1.15}
.ap-brand .brand small{font:500 12px var(--sans);color:var(--muted);border:0;padding:0;margin-top:2px;letter-spacing:0}
.ap-x{display:none;width:36px;height:36px;border:0;border-radius:var(--r-s);background:none;color:var(--muted);cursor:pointer;align-items:center;justify-content:center}
.ap-x:hover{background:var(--tint);color:var(--ink)}
.ap-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:4px 14px 14px;border-bottom:1px solid var(--line-2)}
.ap-tabs a{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 0 8px;border-radius:var(--r-m);color:var(--muted);text-decoration:none;font:600 12.5px var(--sans)}
.ap-tabs a .ic{width:22px;height:22px}
.ap-tabs a:hover{background:var(--tint);color:var(--ink)}
.ap-tabs a[aria-current]{background:var(--blue-s);color:var(--blue)}
.ap-side-b{flex:1;min-height:0;overflow:auto;padding:12px 14px}
.ap-me{display:flex;gap:8px;align-items:center;padding:12px 14px;border-top:1px solid var(--line-2)}
.ap-who{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--r-m);color:var(--ink);text-decoration:none}
.ap-who:hover{background:var(--tint)}
.ap-who span{display:flex;flex-direction:column;min-width:0}
.ap-who b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-who small{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#DBEAFE,#E0E7FF);color:#1E3A8A;display:grid;place-items:center;font:700 15px var(--sans);flex:none}
.ap-top{display:flex;align-items:center;gap:6px;height:38px;padding:0 12px;border-radius:var(--r-s);background:var(--ink);color:#fff;text-decoration:none;font:600 13.5px var(--sans);white-space:nowrap}
.ap-top .ic{width:17px;height:17px}
.ap-top:hover{background:#1E293B}
.ap-login{width:100%;height:42px}
.ap-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 18px 14px;font-size:12.5px}
.ap-foot a{color:var(--muted);text-decoration:none}
.ap-foot a:hover{color:var(--ink)}
.ap-lang{display:flex;gap:2px;background:var(--tint);border-radius:8px;padding:2px}
.ap-lang a{padding:3px 7px;border-radius:6px;font-weight:600}
.ap-lang a.on{background:var(--paper);color:var(--ink);box-shadow:0 1px 2px rgba(15,23,42,.08)}
.ap-main{min-width:0;min-height:0;overflow:auto;position:relative}
.ap-mbar,.ap-btabs,.ap-scrim{display:none}

/* 模型列表 */
.ms-kinds{display:flex;gap:4px;background:var(--tint);padding:3px;border-radius:var(--r-s);margin-bottom:10px}
.ms-kinds button{flex:1;appearance:none;border:0;background:none;height:32px;border-radius:8px;font:600 13px var(--sans);color:var(--muted);cursor:pointer}
.ms-kinds button[aria-selected=true]{background:var(--paper);color:var(--ink);box-shadow:0 1px 2px rgba(15,23,42,.08)}
.ms-tools{display:flex;gap:8px;margin-bottom:10px}
.ms-q{flex:1;min-width:0;display:flex;align-items:center;gap:6px;height:38px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r-s);background:var(--paper);color:var(--muted)}
.ms-q:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.ms-q .ic{width:17px;height:17px}
.ms-q input{flex:1;min-width:0;border:0;outline:0;background:none;font:500 14px var(--sans);color:var(--ink)}
.ms-q input::-webkit-search-cancel-button{display:none}
.dd{position:relative}
.dd-b{display:flex;align-items:center;gap:4px;height:38px;padding:0 8px 0 12px;border:1px solid var(--line);border-radius:var(--r-s);background:var(--paper);font:600 13px var(--sans);color:var(--ink-2);cursor:pointer;white-space:nowrap}
.dd-b .ic{width:16px;height:16px;color:var(--muted)}
.dd-b:hover{border-color:#CBD2DC}
.dd-l{position:absolute;z-index:20;top:42px;left:0;min-width:170px;max-height:300px;overflow:auto;margin:0;padding:6px;list-style:none;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);box-shadow:var(--sh-l)}
.dd-l li{padding:8px 10px;border-radius:8px;font-size:14px;cursor:pointer;white-space:nowrap}
.dd-l li:hover{background:var(--tint)}
.dd-l li[aria-selected=true]{color:var(--blue);font-weight:600}
.ms-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.mc{width:100%;display:flex;gap:10px;align-items:flex-start;text-align:left;appearance:none;border:1px solid transparent;background:none;padding:10px;border-radius:var(--r-m);cursor:pointer;font:inherit;color:var(--ink)}
.mc:hover{background:var(--tint)}
.mc[aria-pressed=true]{background:var(--blue-s);border-color:#C7D7FE}
.mc-lg{width:34px;height:34px;border-radius:10px;background:var(--paper);border:1px solid var(--line);display:grid;place-items:center;flex:none}
.mc-lg img{display:block}
.mc-t{display:flex;flex-direction:column;min-width:0;gap:1px}
.mc-t b{font-size:14px;font-weight:700}
.mc-t small{font-size:12.5px;color:var(--muted)}
.mc-t .mc-p{font-variant-numeric:tabular-nums;color:var(--ink-2)}
.ms-none{color:var(--muted);font-size:14px;padding:12px 4px}

/* 对话 */
.ch{display:flex;flex-direction:column;height:100%;min-height:0}
.ch-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px}
.ch-model{display:flex;align-items:center;gap:8px;height:42px;padding:0 12px 0 6px;border:1px solid var(--line);border-radius:999px;background:var(--paper);font:inherit;color:var(--ink);cursor:default;box-shadow:var(--sh)}
.ch-model .mc-lg{width:30px;height:30px;border-radius:50%;border:0;background:var(--tint)}
.ch-model b{font-size:14px}
.ch-model .ic{display:none;width:16px;height:16px;color:var(--muted)}
.ch-acts{display:flex;gap:8px}
body.app .ch-acts .btn{height:42px;border-radius:999px;padding:0 16px;gap:6px}
body.app .ch-acts .btn .ic{width:18px;height:18px}
.ch-body{flex:1;min-height:0;overflow:auto;padding:0 24px}
.ch-empty{max-width:640px;margin:7vh auto 0;text-align:center}
.ch-hero{display:inline-grid;place-items:center;width:84px;height:84px;border-radius:24px;background:var(--paper);box-shadow:var(--sh);margin-bottom:18px}
.ch-empty h1{font-size:28px;letter-spacing:-.02em;max-width:none}
.ch-intro{margin:8px auto 0;display:inline-block;padding:8px 14px;border-radius:999px;background:var(--paper);border:1px solid var(--line);font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ch-sug{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:28px}
.chip{appearance:none;border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:9px 14px;font:500 13.5px var(--sans);color:var(--ink-2);cursor:pointer;max-width:100%;text-align:left;box-shadow:var(--sh)}
.chip:hover{border-color:#C7D7FE;color:var(--ink)}
.ch-log{max-width:820px;margin:0 auto;padding:12px 0 24px;display:flex;flex-direction:column;gap:20px}
.msg.me{align-self:flex-end;max-width:80%}
.msg.me .bub{background:var(--ink);color:#fff;padding:11px 15px;border-radius:18px 18px 6px 18px;font-size:15px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.msg.bot{display:flex;gap:12px;align-items:flex-start}
.msg.bot>.mc-lg{width:32px;height:32px;border-radius:50%}
.bot-c{flex:1;min-width:0}
.bot-t{background:var(--paper);border:1px solid var(--line);border-radius:6px 18px 18px 18px;padding:12px 16px;font-size:15px;line-height:1.7;color:var(--ink);overflow-wrap:anywhere;box-shadow:var(--sh)}
.bot-t p{margin:0 0 10px}.bot-t p:last-child{margin:0}
.bot-t h4{font-size:15.5px;margin:12px 0 6px}
.bot-t ul,.bot-t ol{margin:0 0 10px;padding-left:22px}
.bot-t code{font:13.5px var(--mono);background:var(--tint);padding:1px 5px;border-radius:5px}
.bot-t pre{margin:8px 0;background:#0F172A;color:#E2E8F0;padding:12px 14px;border-radius:var(--r-s);overflow-x:auto}
.bot-t pre code{background:none;padding:0;color:inherit;font-size:13px}
.ch-img{display:block;max-width:min(100%,420px);border-radius:var(--r-m);margin:2px 0}
.msg.err .bot-t{border-color:#FECACA;background:#FEF2F2;color:#991B1B}
.bot-m{display:flex;gap:14px;align-items:center;margin-top:6px;padding-left:4px;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;min-height:18px}
.lnk{appearance:none;border:0;background:none;padding:0;font:600 12.5px var(--sans);color:var(--muted);cursor:pointer;text-decoration:none}
.lnk:hover{color:var(--ink)}
.dots{color:var(--muted)}
.dots::after{content:"";display:inline-block;width:1.2em;text-align:left;animation:dots 1.2s steps(4) infinite}
@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}
.ch-comp{padding:8px 24px 18px}
.ch-box{max-width:860px;margin:0 auto;display:flex;align-items:flex-end;gap:10px;background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:10px 10px 10px 18px;box-shadow:var(--sh)}
.ch-box:focus-within{border-color:#B9CCFB;box-shadow:0 0 0 4px rgba(37,99,235,.08),var(--sh)}
.ch-box textarea{flex:1;min-width:0;border:0;outline:0;resize:none;background:none;font:500 15px/1.6 var(--sans);color:var(--ink);padding:7px 0;max-height:220px}
.ch-send{width:42px;height:42px;border-radius:50%;border:0;background:var(--ink);color:#fff;display:grid;place-items:center;cursor:pointer;flex:none}
.ch-send:hover{background:#1E293B}
.ch-send.stop{background:#334155}
.ch-foot{max-width:860px;margin:8px auto 0;display:flex;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--muted);padding:0 8px;font-variant-numeric:tabular-nums}
/* 历史 */
.ch-hist{position:fixed;z-index:30;top:12px;right:12px;bottom:12px;width:320px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-l);display:flex;flex-direction:column}
.ch-hist[hidden]{display:none}
.ch-hist-h{display:flex;align-items:center;justify-content:space-between;padding:14px 14px 10px 18px}
.ch-hist-h .ap-x{display:flex}
.ch-hist-b{flex:1;overflow:auto;padding:0 10px 14px}
.ch-hist-b h5{margin:12px 8px 6px;font:600 12px var(--sans);color:var(--muted)}
.ch-hist-b .muted{color:var(--muted);font-size:14px;padding:8px}
.hi{display:flex;align-items:center;border-radius:var(--r-s)}
.hi:hover,.hi.on{background:var(--tint)}
.hi-t{flex:1;min-width:0;appearance:none;border:0;background:none;text-align:left;padding:10px;font:500 14px var(--sans);color:var(--ink);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hi-d{appearance:none;border:0;background:none;color:var(--muted);font:500 15px var(--sans);padding:0 10px;height:32px;border-radius:8px;cursor:pointer;opacity:0}
.hi:hover .hi-d,.hi-d:focus,.hi-d.arm{opacity:1}
.hi-d.arm{color:#DC2626;font-size:12.5px;font-weight:600}
/* 登录弹窗 */
.gate{position:fixed;inset:0;z-index:50;background:rgba(15,23,42,.38);display:grid;place-items:center;padding:16px}
.gate[hidden]{display:none}
.gate-c{position:relative;width:100%;max-width:400px;background:var(--paper);border-radius:20px;padding:32px 28px 24px;text-align:center;box-shadow:var(--sh-l)}
.gate-x{position:absolute;top:10px;right:10px;display:flex}
.gate-ic svg{width:52px;height:52px}
.gate-c h2{font-size:21px;margin:10px 0 6px}
.gate-c p{font-size:14.5px;color:var(--ink-2);margin:0 0 20px}
body.app .gate-c .btn{width:100%;height:46px;font-size:15px}
.gate-c small{display:block;margin-top:12px;color:var(--muted);font-size:12.5px}

/* 页面通用：控制台、作品 */
.pg{max-width:1180px;margin:0 auto;padding:28px 28px 48px}
.pg-h{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.pg-h h1{font-size:26px;letter-spacing:-.02em;max-width:none}
.pg-h p{margin-top:4px;font-size:14px;color:var(--muted)}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
body.app .btn{border-radius:var(--r-s);height:40px;font-weight:600}
body.app .btn-s{border-color:var(--line);background:var(--paper)}
body.app .btn-s:hover{border-color:#CBD2DC;background:var(--tint)}
body.app .btn-x{height:32px;border-radius:8px}
body.app .in{border-radius:var(--r-s);border-color:var(--line)}
body.app .flash{border-radius:var(--r-m);margin-bottom:16px}
body.app .stats div,body.app table.ct,body.app .copyrow,body.app .empty,body.app .gw,body.app .paybox{border-radius:var(--r);box-shadow:var(--sh);border-color:var(--line)}
body.app .stats small,body.app .ct th{font-family:var(--sans);text-transform:none;letter-spacing:0;font-size:12.5px}
body.app .ct td.p,body.app .ct td small{font-family:var(--sans);font-variant-numeric:tabular-nums}
body.app .stats b{font-family:var(--sans);font-variant-numeric:tabular-nums}
body.app .copyrow code{font-size:14px}
body.app .copy{font-family:var(--sans);font-weight:600;background:var(--ink)}
body.app .st{font-family:var(--sans);text-transform:none;font-size:12px}
body.app .blk-h h2{font-size:17px}
body.app .presets .btn{font-family:var(--sans);border-radius:999px}
body.app .topup{border-top:0;padding-top:0}
body.app .fld{font-family:var(--sans);text-transform:none;letter-spacing:0;font-size:13px}

/* 个人中心 */
.me-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}
.me-bal{padding:24px;display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.me-bal small{display:block;font-size:13px;color:var(--muted)}
.me-bal b{display:block;font:800 38px/1.1 var(--sans);letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}
.me-bal .row{display:flex;gap:20px;margin-top:14px;font-size:13.5px;color:var(--muted)}
.me-bal .row b{display:inline;font-size:13.5px;color:var(--ink);letter-spacing:0;margin:0;font-weight:700}
.me-bal .btn{height:44px;padding:0 22px}
.me-sec{margin-top:20px;padding:20px 22px}
.me-sec h2{font-size:16px;margin:0 0 12px;display:flex;justify-content:space-between;align-items:baseline}
.me-sec h2 a{font:600 13px var(--sans);color:var(--muted);text-decoration:none}
.me-sec h2 a:hover{color:var(--ink)}
.me-list{list-style:none;margin:0;padding:0}
.me-list li a{display:flex;justify-content:space-between;gap:12px;padding:10px 8px;border-radius:var(--r-s);color:var(--ink);text-decoration:none;font-size:14px}
.me-list li a:hover{background:var(--tint)}
.me-list li a span:last-child{color:var(--muted);font-size:12.5px;white-space:nowrap}
.me-list .none{color:var(--muted);font-size:14px;padding:6px 8px}
.me-works{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
.me-works a{aspect-ratio:1;border-radius:var(--r-m);overflow:hidden;background:var(--tint)}
.me-works img{width:100%;height:100%;object-fit:cover;display:block}
.me-prof{padding:22px}
.me-prof .who{display:flex;gap:14px;align-items:center}
.me-prof .av{width:56px;height:56px;font-size:22px}
.me-prof .who b{display:block;font-size:17px}
.me-prof .who small{display:block;color:var(--muted);font-size:13px;margin-top:2px;overflow-wrap:anywhere}
.me-prof .tag{display:inline-block;margin-top:6px;padding:3px 9px;border-radius:999px;background:var(--tint);font-size:12px;color:var(--ink-2);font-weight:600}
.me-prof .acts{display:flex;gap:8px;margin-top:18px}
.me-prof .acts>*{flex:1}
body.app .me-prof .acts .btn{width:100%;height:38px;font-size:13.5px}
.me-prof form{margin:0}
.me-fn{margin-top:20px;padding:18px}
.me-fn h2{font-size:16px;margin:0 0 12px 4px}
.fn{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.fn a{min-width:0}
.fn a{display:flex;gap:10px;align-items:center;padding:12px;border-radius:var(--r-m);border:1px solid var(--line-2);background:#FAFBFC;color:var(--ink);text-decoration:none}
.fn a:hover{border-color:#C7D7FE;background:var(--blue-s)}
.fn .fi{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}
.fn .fi .ic{width:19px;height:19px}
.fn b{display:block;font-size:14px}
.fn small{display:block;font-size:12px;color:var(--muted)}
/* 图标方向 B：功能图标统一科技蓝 */
.fn .fi{background:var(--blue-s);color:var(--blue)}
/* 控制台子页的分页条 */
.subnav{display:flex;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:4px;margin-bottom:20px;width:max-content;max-width:100%;overflow-x:auto;box-shadow:var(--sh)}
.subnav a{display:flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:9px;color:var(--muted);text-decoration:none;font:600 14px var(--sans);white-space:nowrap}
.subnav a .ic{width:17px;height:17px}
.subnav a:hover{color:var(--ink);background:var(--tint)}
.subnav a[aria-current]{background:var(--blue-s);color:var(--blue)}

/* 作品 */
.wk-tabs{display:flex;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:4px;box-shadow:var(--sh)}
.wk-tabs a{height:34px;display:flex;align-items:center;padding:0 14px;border-radius:9px;color:var(--muted);text-decoration:none;font:600 14px var(--sans)}
.wk-tabs a[aria-current]{background:var(--blue-s);color:var(--blue)}
.wk-note{display:flex;gap:8px;align-items:center;padding:10px 14px;border-radius:var(--r-m);background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;font-size:13.5px;margin-bottom:20px}
.wk-day{margin-bottom:28px}
.wk-dh{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.wk-dh h2{font-size:17px;margin:0}
.wk-dh span{font-size:12.5px;padding:3px 10px;border-radius:999px;background:var(--paper);border:1px solid var(--line);color:var(--ink-2);font-variant-numeric:tabular-nums}
.wk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.wk-it{appearance:none;border:0;padding:0;aspect-ratio:3/4;border-radius:var(--r-m);overflow:hidden;background:var(--paper);cursor:zoom-in;box-shadow:var(--sh);position:relative}
.wk-it img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}
.wk-it:hover img{transform:scale(1.03)}
.wk-empty{text-align:center;padding:64px 20px}
.wk-empty .ic{width:44px;height:44px;color:var(--blue)}
.wk-empty b{display:block;font-size:17px;margin:12px 0 6px}
.wk-empty p{color:var(--muted);font-size:14px;margin:0 0 18px}
.wk-view{position:fixed;inset:0;z-index:50;background:rgba(15,23,42,.6);display:grid;place-items:center;padding:20px}
.wk-view[hidden]{display:none}
.wk-vc{display:grid;grid-template-columns:minmax(0,1fr) 300px;max-width:1080px;width:100%;max-height:calc(100dvh - 40px);background:var(--paper);border-radius:20px;overflow:hidden;box-shadow:var(--sh-l)}
.wk-vc>div:first-child{background:#0B1220;display:grid;place-items:center;min-height:0}
.wk-vc img{max-width:100%;max-height:calc(100dvh - 40px);display:block}
.wk-side{padding:20px;display:flex;flex-direction:column;gap:12px;position:relative}
.wk-side .ap-x{display:flex;position:absolute;top:10px;right:10px}
.wk-side h3{font-size:15px;margin:0}
.wk-side p{font-size:14px;color:var(--ink-2);margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.wk-side small{color:var(--muted);font-size:12.5px}
.wk-side .acts{margin-top:auto;display:flex;gap:8px}
.wk-side .acts>*{flex:1}
.wk-side .btn-d.arm{background:#FEF2F2;border-color:#FECACA}

@media (max-width:1100px){
  .me-grid{grid-template-columns:minmax(0,1fr)}
  .ch-hb span{display:none}
}
@media (max-width:900px){
  body.app{overflow:auto;height:auto}
  .ap{grid-template-columns:minmax(0,1fr);height:auto;min-height:100dvh}
  .ap-side{position:fixed;z-index:40;inset:0 auto 0 0;width:min(88vw,340px);transform:translateX(-102%);transition:transform .25s cubic-bezier(.2,.7,.2,1);box-shadow:var(--sh-l)}
  body.side-on .ap-side{transform:none}
  .ap-scrim{display:block;position:fixed;inset:0;z-index:39;background:rgba(15,23,42,.35);opacity:0;pointer-events:none;transition:opacity .2s}
  body.side-on .ap-scrim{opacity:1;pointer-events:auto}
  .ap-x{display:flex}
  body:not(.is-chat) .ap-tabs{display:none}
  .ap-main{overflow:visible;padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .ap-mbar{display:flex;align-items:center;gap:8px;height:56px;padding:0 12px;background:rgba(244,245,247,.92);backdrop-filter:blur(10px);position:sticky;top:0;z-index:20}
  .ap-mbar .brand{flex:1;font-size:15px}
  .ap-mbar .brand svg{width:28px;height:28px}
  .ap-burger{width:40px;height:40px;border:0;border-radius:var(--r-s);background:none;color:var(--ink);display:grid;place-items:center}
  .ap-mav .av{width:34px;height:34px;font-size:14px}
  .ap-mlogin{font:600 14px var(--sans);color:var(--ink);text-decoration:none;padding:8px 12px;border-radius:var(--r-s);background:var(--paper);border:1px solid var(--line)}
  .ap-btabs{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;z-index:25;left:0;right:0;bottom:0;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
  .ap-btabs a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 0;color:var(--muted);text-decoration:none;font:600 11.5px var(--sans);border-radius:10px}
  .ap-btabs a[aria-current]{color:var(--blue)}
  /* 对话页在手机上：顶栏 + 消息 + 固定在底部的输入框 */
  body.is-chat .ap-main{padding-bottom:0}
  body.is-chat .ap-btabs{display:none}
  .ch{height:calc(100dvh - 56px)}
  .ch-top{padding:6px 12px}
  .ch-model{cursor:pointer}
  .ch-model .ic{display:block}
  .ch-acts .btn span{display:none}
  body.app .ch-acts .btn{width:42px;padding:0}
  .ch-body{padding:0 12px}
  .ch-empty{margin-top:4vh}
  .ch-empty h1{font-size:23px}
  .ch-comp{padding:6px 10px calc(10px + env(safe-area-inset-bottom))}
  .ch-foot span:last-child{display:none}
  .msg.me{max-width:88%}
  .msg.bot>.mc-lg{display:none}
  .ch-hist{top:auto;left:8px;right:8px;bottom:8px;width:auto;max-height:75dvh}
  .pg{padding:16px 14px 32px}
  .pg-h h1{font-size:22px}
  .wk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .wk-vc{grid-template-columns:minmax(0,1fr)}
  .wk-vc img{max-height:60dvh}
  .fn{grid-template-columns:repeat(2,minmax(0,1fr))}
  .me-bal b{font-size:32px}
}
@media (prefers-reduced-motion:reduce){.ap-side,.ap-scrim{transition:none}.dots::after{animation:none;content:"..."}.wk-it img{transition:none}}
@media (min-width:1101px){body.hist-on .ch{padding-right:336px}}
/* 侧栏：最近的对话 */
body.app .ap-newchat{width:100%;height:42px;gap:6px}
.ap-newchat .ic{width:18px;height:18px}
.ap-h5{margin:18px 6px 6px;font:600 12px var(--sans);color:var(--muted)}
.ap-none{font-size:13.5px;color:var(--muted);padding:4px 6px}
.ap-recent{list-style:none;margin:0;padding:0}
.ap-recent a{display:flex;align-items:center;gap:8px;padding:9px 8px;border-radius:var(--r-s);color:var(--ink-2);text-decoration:none;font-size:14px}
.ap-recent a:hover{background:var(--tint);color:var(--ink)}
.ap-recent .ic{width:17px;height:17px;color:var(--muted)}
.ap-recent span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fn b,.fn small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fn a>span:last-child{min-width:0}
body.app .topup .in{font:600 19px var(--sans);font-variant-numeric:tabular-nums}
body.app .topup .in::placeholder{font-weight:500;color:#94A3B8}
body.app .gw small{font-family:var(--sans)}
@media (min-width:1101px){.me-grid{grid-template-columns:minmax(0,1fr) 380px}}
.ap-mav{text-decoration:none}

/* ---------- 个人中心概览（docs/ai-saas-style.md 里的 B 类：数字卡 + 余额卡 + API 信息 + 模型状态） ---------- */
.ov{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}
.ov-main>.card+.card,.ov-side>.card+.card{margin-top:20px}
.ov h2{font-size:16px;margin:0 0 16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ov h2>a{margin-left:auto;font:600 13px var(--sans);color:var(--muted);text-decoration:none}
.ov h2>a:hover{color:var(--ink)}
.ov h2>small{font:500 13px var(--sans);color:var(--muted)}
.ov-use,.ov-api,.ov-hl{padding:20px 22px}
.ov-stats{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:12px}
.ov-st{position:relative;overflow:hidden;border:1px solid var(--line-2);border-radius:var(--r-m);padding:16px 16px 14px;background:#FAFBFC;min-width:0}
.ov-st small{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
.ov-st small .ic{width:16px;height:16px;color:var(--blue)}
.ov-st>b{display:block;margin-top:10px;font:700 26px/1.15 var(--sans);letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-sub{display:block;margin-top:4px;font-size:12.5px;color:var(--muted)}
.ov-st-1{background:linear-gradient(180deg,#F3F7FF,#FFFFFF);border-color:#E1E9FB;padding-bottom:58px}
.ov-spark{position:absolute;left:0;right:0;bottom:0;width:100%;height:48px;color:var(--blue)}
.pill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:999px;background:var(--tint);color:var(--ink-2);font:600 12.5px var(--sans);white-space:nowrap}
.pill i{width:7px;height:7px;border-radius:50%;background:currentColor}
.pill.good{background:#ECFDF5;color:#059669}
.pill.warn{background:#FFFBEB;color:#D97706}
.ov-pr{list-style:none;margin:0;padding:0;border:1px solid var(--line-2);border-radius:var(--r-m)}
.ov-pr li{display:grid;grid-template-columns:auto minmax(0,190px) minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 14px}
.ov-pr li+li{border-top:1px solid var(--line-2)}
.ov-dot{width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 4px rgba(37,99,235,.1)}
.ov-dot.oa{background:var(--blue)}
.ov-dot.an{background:#D97757;box-shadow:0 0 0 4px rgba(217,119,87,.12)}
.ov-pn b{display:block;font-size:14px}
.ov-pn small{display:block;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-pr code{font:13px var(--code);color:var(--ink-2);background:var(--tint);padding:7px 10px;border-radius:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-cp{appearance:none;width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink-2);cursor:pointer}
.ov-cp .ic{width:17px;height:17px}
.ov-cp:hover{border-color:#C7D7FE;color:var(--blue)}
.ov-cp.ok{border-color:#A7F3D0;background:#ECFDF5;color:#059669}
.ov-doc{font:600 13px var(--sans);color:var(--blue);text-decoration:none}
.ov-doc:hover{text-decoration:underline}
.ov-keyrow{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;font-size:14px;color:var(--ink-2)}
.ov-keyrow span{display:flex;align-items:center;gap:8px}
.ov-keyrow .ic{width:18px;height:18px;color:var(--blue)}
.ov-keyrow form{margin:0}
body.app .ov-keyrow .btn{height:36px;font-size:13.5px}
.ov-hl h2 .pill{margin-left:auto}
.ov-none{margin:0;padding:18px 16px;border:1px dashed var(--line);border-radius:var(--r-m);color:var(--muted);font-size:14px;text-align:center}
.ov-hlist{list-style:none;margin:0;padding:0}
.ov-hrow{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 84px 64px;align-items:center;gap:14px;padding:10px 4px}
.ov-hlist .ov-hrow+.ov-hrow{border-top:1px solid var(--line-2)}
.ov-hh{padding-top:0;font-size:12.5px;color:var(--muted)}
.ov-hh span:nth-child(n+3),.ov-num{text-align:right}
.ov-hm{display:flex;align-items:center;gap:10px;min-width:0}
.ov-hm .mc-lg{width:30px;height:30px;border-radius:9px;background:var(--tint);display:grid;place-items:center;flex:none}
.ov-hm b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-rate{display:flex;align-items:center;gap:10px}
.ov-rate i{flex:1;height:6px;border-radius:99px;background:var(--line-2);position:relative;overflow:hidden}
.ov-rate i::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--w);border-radius:99px;background:currentColor}
.ov-rate em{font:600 13px var(--sans);font-style:normal;font-variant-numeric:tabular-nums;width:46px;text-align:right}
.ov-rate.good{color:#059669}.ov-rate.warn{color:#D97706}.ov-rate.bad{color:#DC2626}
.ov-num{font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ov-bal{padding:22px;background:linear-gradient(160deg,#F3F7FF 0%,#FFFFFF 70%);border-color:#E1E9FB}
.ov-bal-h{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ov-bal-h small{font-size:13.5px;color:var(--muted)}
.ov-bal>b{display:block;margin-top:12px;font:800 36px/1.1 var(--sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.ov-bal p{margin:6px 0 18px;font-size:13px;color:var(--muted)}
body.app .ov-bal .btn{width:100%;height:46px;justify-content:center;gap:6px}
@media (max-width:1100px){.ov{grid-template-columns:minmax(0,1fr)}.ov-side{display:contents}.ov-side>.card+.card{margin-top:0}.ov-bal{order:-1}}
@media (max-width:760px){
  .ov-stats{grid-template-columns:1fr 1fr}.ov-st-1{grid-column:1/-1}
  .ov-pr li{grid-template-columns:auto minmax(0,1fr) auto;row-gap:8px}
  .ov-pr code{grid-column:2/3;grid-row:2}.ov-cp{grid-row:2;grid-column:3}.ov-doc{grid-row:1;grid-column:3;justify-self:end}
  .ov-hrow{grid-template-columns:minmax(0,1fr) 60px 40px;gap:8px}.ov-rate em{width:auto}.ov-pr code{font-size:12px;padding:6px 8px}.ov-hrow>:nth-child(3){display:none}
  .ov-rate i{display:none}
  .ov-use,.ov-api,.ov-hl{padding:18px}
}
