/* ============================================================
   私人助理 · 科技感设计系统（深空蓝黑 / 青蓝电光 / 玻璃拟态）
   ============================================================ */
:root{
  /* 安全区：默认取 env；Android WebView 由壳注入真实系统栏高度覆盖 */
  --safe-top:env(safe-area-inset-top, 0px);
  --safe-bottom:env(safe-area-inset-bottom, 0px);
  --safe-left:env(safe-area-inset-left, 0px);
  --safe-right:env(safe-area-inset-right, 0px);
  --bg0:#000000; --bg1:#0b0b0d; --bg2:#1c1c1e;
  --panel:rgba(255,255,255,.072);
  --panel-2:rgba(255,255,255,.11);
  --line:rgba(255,255,255,.10);
  --line-2:rgba(255,255,255,.18);
  --tx:#f5f5f7; --tx2:#a1a1a6; --tx3:#6e6e73;
  --cy:#64d2ff; --blue:#0a84ff; --indigo:#5e5ce6; --violet:#bf5af2;
  --ok:#30d158; --warn:#ff9f0a; --danger:#ff453a;
  /* 苹果系统蓝实色主按钮，去掉紫靛渐变 */
  --grad:#0a84ff;
  --glow:0 10px 28px rgba(10,132,255,.22);
  --radius:18px; --radius-s:12px;
  --shadow:0 18px 48px rgba(0,0,0,.42);
  --mono:ui-monospace,"SF Mono","Cascadia Code",Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI Variable","PingFang SC","Microsoft YaHei UI",sans-serif;
  /* v5 语义面（皮肤系统，:root 默认=曜石黑） */
  --pink:#ff6b85;
  --field:rgba(255,255,255,.075); --field-2:rgba(255,255,255,.12); --track:rgba(255,255,255,.09);
  --elev:rgba(28,28,30,.78); --elev-solid:#1c1c1e; --card:rgba(28,28,30,.72); --bar:rgba(22,22,24,.62);
  --scrim:rgba(0,0,0,.48); --on-accent:#ffffff; --scroll:rgba(255,255,255,.18);
  --cy-rgb:100,210,255; --blue-rgb:10,132,255; --indigo-rgb:94,92,230; --violet-rgb:191,90,242;
  --ok-rgb:48,209,88; --warn-rgb:255,159,10; --danger-rgb:255,69,58; --pink-rgb:255,107,133;
  --glass-blur:28px; --glass-sat:190%;
  /* 1% of layout viewport; compat.js overwrites on iOS/H5 for address-bar correctness */
  --app-vh:1vh;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;height:calc(var(--app-vh) * 100)}
html{overscroll-behavior:none}
body{
  font-family:var(--sans); color:var(--tx); background:var(--bg0);
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  overflow:hidden; font-size:14px;
  overscroll-behavior:none;
  -webkit-text-size-adjust:100%; text-size-adjust:100%;
}
/* Firefox scrollbar (Chromium 仍走 ::-webkit-scrollbar) */
*{scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}
[hidden]{display:none !important}
/* v1.23.5 网页首帧品牌加载屏动画（容器布局/底色已内联，CSS 到达后补上动效；与安卓开机动画统一） */
#webBoot.wb-out{opacity:0;pointer-events:none}
.wb-logo{animation:wbpop .7s cubic-bezier(.2,1.3,.4,1) both}
.wb-glow{animation:wbglow 1.7s ease-in-out infinite alternate}
.wb-spin{animation:wbspin .8s linear infinite}
@keyframes wbspin{to{transform:rotate(360deg)}}
@keyframes wbglow{from{transform:scale(.92);opacity:.6}to{transform:scale(1.1);opacity:1}}
@keyframes wbpop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.wb-glow,.wb-logo{animation:none}.wb-spin{animation:wbspin 1.4s linear infinite}}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit;color:var(--tx)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:8px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.28);background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}
.num{font-variant-numeric:tabular-nums}

/* 背景：纯净深色 + 顶部一抹极淡蓝（苹果风，去网格霓虹） */
.bg-grid{display:none}
.bg-glow{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(900px 520px at 50% -18%,rgba(10,132,255,.14),transparent 62%),
    radial-gradient(640px 420px at 100% 0%,rgba(100,210,255,.06),transparent 55%);}

/* ============ 初始化 / 解锁屏 ============ */
.gate{position:relative;z-index:2;height:100%;display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto}
.gate-card{width:420px;max-width:100%;background:rgba(28,28,30,.72);
  border:1px solid rgba(255,255,255,.12);border-radius:24px;padding:38px 34px 30px;box-shadow:var(--shadow);
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));position:relative;overflow:hidden}
.gate-card::before{content:"";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);opacity:.9}
.gate-logo{width:64px;height:64px;margin:4px auto 16px;display:block;filter:drop-shadow(0 6px 18px rgba(10,132,255,.35))}
.gate h1{text-align:center;font-size:23px;letter-spacing:.5px;color:var(--tx);font-weight:700}
.gate .sub{text-align:center;color:var(--tx3);font-size:12px;letter-spacing:3px;margin:6px 0 26px}
.gate .field{margin-bottom:14px}
.gate-hint{font-size:12px;color:var(--tx3);line-height:1.7;margin:14px 0 4px}
.gate-hint b{color:var(--cy)}
.strength{height:6px;border-radius:6px;background:rgba(255,255,255,.07);overflow:hidden;margin-top:8px}
.strength i{display:block;height:100%;width:0;border-radius:6px;transition:width .3s,background .3s}
.gate-foot{text-align:center;margin-top:18px;font-size:12px;color:var(--tx3)}
.lock-badge{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--ok);font-size:12px;margin-top:16px}

/* ============ 输入控件 ============ */
label.lbl{display:block;font-size:12px;color:var(--tx2);margin:0 2px 9px;letter-spacing:.5px}
.input,.select,textarea.input{
  width:100%;background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:var(--radius-s);
  padding:11px 13px;color:var(--tx);font-size:14px;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}
.input::placeholder,textarea.input::placeholder{color:var(--tx3)}
.input:focus,.select:focus,textarea.input:focus{border-color:rgba(10,132,255,.6);box-shadow:0 0 0 3px rgba(10,132,255,.16);background:rgba(255,255,255,.08)}
.input:disabled{opacity:.55}
textarea.input{resize:vertical;line-height:1.6}
.select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--tx3) 50%),linear-gradient(135deg,var(--tx3) 50%,transparent 50%);background-position:calc(100% - 18px) 52%,calc(100% - 13px) 52%;background-size:5px 5px;background-repeat:no-repeat;padding-right:32px}
.pw-wrap{position:relative}
.pw-wrap .input{padding-right:44px}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:8px;color:var(--tx3);display:flex;align-items:center;justify-content:center}
.pw-eye:hover{color:var(--blue);background:rgba(10,132,255,.14)}
.field-row{display:flex;gap:10px}.field-row>*{flex:1}

/* ============ 按钮（iOS 实色系统蓝） ============ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:11px 18px;border-radius:980px;
  font-size:14px;font-weight:600;letter-spacing:.2px;color:#fff;background:var(--blue);
  box-shadow:0 8px 20px -10px rgba(var(--blue-rgb),.55);transition:transform .12s,filter .15s,box-shadow .15s,background .15s;white-space:nowrap}
.btn svg{width:17px;height:17px;flex:none}
.btn.sm svg{width:15px;height:15px}
.btn:hover{filter:brightness(1.06)}
.btn:active{transform:translateY(1px) scale(.985)}
.btn:disabled{opacity:.5;cursor:not-allowed;filter:none;box-shadow:none}
.btn.block{width:100%;padding:13px;border-radius:14px}
.btn.ghost{background:rgba(255,255,255,.08);color:var(--tx);border:1px solid var(--line);box-shadow:none;border-radius:12px}
.btn.ghost:hover{background:rgba(255,255,255,.14)}
.btn.danger{background:var(--danger);color:#fff;box-shadow:0 8px 20px -10px rgba(var(--danger-rgb),.45)}
.btn.sm{padding:7px 14px;font-size:12.5px;border-radius:980px}
.btn.tiny{padding:4px 10px;font-size:12px;border-radius:980px}
.icon-btn{width:38px;height:38px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;color:var(--tx2);border:1px solid transparent;
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.icon-btn:hover{color:var(--blue);background:rgba(var(--blue-rgb),.12)}
.icon-btn svg{width:19px;height:19px}

/* ============ 布局 ============ */
.app{position:relative;z-index:1;display:flex;height:100%}
.sidebar{width:178px;flex:none;display:flex;flex-direction:column;padding:14px 10px 14px 8px;
  background:var(--bar);
  border-right:1px solid var(--line);
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  transition:width .28s ease,padding .28s ease,opacity .22s ease,border-color .28s ease}
.brand{display:flex;align-items:center;gap:9px;padding:4px 6px 16px}
.brand-mark{width:36px;height:36px;flex:none;cursor:pointer;filter:drop-shadow(0 4px 12px rgba(10,132,255,.28));
  transition:transform .35s cubic-bezier(.34,1.56,.64,1),filter .35s ease}
.brand:hover .brand-mark{transform:scale(1.12) rotate(-4deg);filter:drop-shadow(0 6px 18px rgba(10,132,255,.45))}
.brand-mark:active{transform:scale(1.04) rotate(0)}
.brand-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.brand-text strong{font-size:15px;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}
.brand-text small{font-size:9px;letter-spacing:1.4px;color:var(--tx3);margin-top:3px;white-space:nowrap}
.nav{flex:1;display:flex;flex-direction:column;gap:3px;overflow-y:auto;margin:0 -4px;padding:0 4px}
.nav-item{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;border-radius:12px;color:var(--tx2);
  font-size:13.5px;font-weight:500;text-align:left;transition:background .16s,color .16s,box-shadow .16s;position:relative}
.nav-item svg{width:18px;height:18px;flex:none}
.nav-item:hover{background:rgba(255,255,255,.07);color:var(--tx)}
.nav-item.active{color:#fff;background:rgba(var(--blue-rgb),.22);font-weight:600;
  box-shadow:inset 0 0 0 1px rgba(var(--blue-rgb),.28)}
.nav-item .tag-soon{margin-left:auto;font-size:9px;padding:2px 6px;border-radius:6px;background:rgba(251,191,36,.18);color:var(--warn);border:1px solid rgba(251,191,36,.3)}
.nav-item:not(.active) .tag-soon{background:rgba(251,191,36,.1)}
.sidebar-foot{margin-top:10px;border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:row;gap:8px}
.sf-btn{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 6px;
  border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--tx2);
  font-size:12.5px;font-weight:600;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.sf-btn svg{width:16px;height:16px;flex:none}
.sf-logout{color:#ff7a72;border-color:rgba(255,59,48,.22)}
.sf-logout:hover{background:rgba(255,59,48,.10);color:#ff453a;border-color:rgba(255,59,48,.34)}
.sf-lock{color:var(--warn);border-color:rgba(251,191,36,.30);background:rgba(251,191,36,.08)}
.sf-lock:hover{background:rgba(251,191,36,.18)}

.main{flex:1;display:flex;flex-direction:column;min-width:0;background:transparent}
.topbar{height:62px;flex:none;display:flex;align-items:center;gap:14px;padding:0 24px;
  position:relative;z-index:40;
  border-bottom:1px solid var(--line);background:var(--bar);
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat))}
.page-title{display:flex;flex-direction:column}
.page-title h1{font-size:19px;font-weight:700;letter-spacing:.2px}
.page-sub{font-size:12px;color:var(--tx3);margin-top:2px}
.top-right{margin-left:auto;display:flex;align-items:center;gap:2px;
  padding:3px 4px 3px 12px;border-radius:999px;background:var(--field);border:1px solid var(--line)}
.top-right .shot-wrap{display:contents}
.clock{font-family:var(--mono);font-size:12.5px;color:var(--tx2);letter-spacing:.3px;
  white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;transition:opacity .18s;
  padding-right:10px;margin-right:4px;border-right:1px solid var(--line);line-height:1}
.top-right .icon-btn{width:34px;height:34px;border-radius:11px;color:var(--tx2);background:transparent}
.top-right .icon-btn svg{width:18px;height:18px}
.top-right .icon-btn:hover{color:var(--blue);background:color-mix(in srgb,var(--blue) 12%,transparent)}
.top-right #logoutBtn{color:#e11d48;background:rgba(255,59,48,.08)}
.top-right #logoutBtn:hover{color:#ff3b30;background:rgba(255,59,48,.16)}
body.clock-hidden .clock{display:none}
/* 顶栏天气（仅仪表盘显示） */
.hdr-weather{display:flex;align-items:center;gap:7px;border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(56,140,255,.14),rgba(56,140,255,.06));
  border-radius:999px;padding:6px 13px;cursor:pointer;color:var(--tx1);
  font-size:13px;line-height:1;white-space:nowrap;transition:border-color .18s,background .18s}
.hdr-weather:hover{border-color:rgba(56,140,255,.5);background:linear-gradient(180deg,rgba(56,140,255,.22),rgba(56,140,255,.1))}
.hdr-weather .hw-ic{display:flex;align-items:center;justify-content:center;flex:none;
  width:26px;height:26px;border-radius:9px;color:#fff;
  background:linear-gradient(180deg,#7ec8ff,#3b82f6);
  box-shadow:0 4px 8px -4px rgba(37,99,235,.65)}
.hdr-weather .hw-ic svg{width:15px;height:15px}
.hdr-weather[data-sky="clear"] .hw-ic{background:linear-gradient(180deg,#fde68a,#f59e0b);box-shadow:0 4px 8px -4px rgba(217,119,6,.6)}
.hdr-weather[data-sky="cloudy"] .hw-ic{background:linear-gradient(180deg,#7dd3fc,#0284c7)}
.hdr-weather[data-sky="rain"] .hw-ic,.hdr-weather[data-sky="storm"] .hw-ic{background:linear-gradient(180deg,#93c5fd,#1d4ed8)}
.hdr-weather[data-sky="snow"] .hw-ic{background:linear-gradient(180deg,#e0f2fe,#38bdf8)}
.hdr-weather[data-sky="fog"] .hw-ic{background:linear-gradient(180deg,#cbd5e1,#64748b)}
.hdr-weather[data-sky="night"] .hw-ic{background:linear-gradient(180deg,#a5b4fc,#4338ca)}
.hdr-weather .hw-temp{font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.2px}
.hdr-weather .hw-text{color:var(--tx2)}
.hdr-weather .hw-city{color:var(--tx3);max-width:96px;overflow:hidden;text-overflow:ellipsis}
.hdr-weather .hw-city::before{content:"·";margin:0 3px;color:var(--tx3)}
@media(max-width:760px){
  .hdr-weather{height:34px;min-height:34px;padding:0 10px 0 4px;gap:5px;font-size:12.5px;border:0;
    background:linear-gradient(180deg,rgba(56,140,255,.16),rgba(56,140,255,.05));
    box-shadow:inset 0 0 0 1px rgba(56,140,255,.22);
    border-radius:999px}
  .hdr-weather:active{background:linear-gradient(180deg,rgba(56,140,255,.26),rgba(56,140,255,.1))}
  .hdr-weather .hw-text,.hdr-weather .hw-city{display:none}
  .hdr-weather .hw-ic{width:25px;height:25px;border-radius:8px}
  .hdr-weather .hw-ic svg{width:14px;height:14px}
  .hdr-weather .hw-temp{font-size:13px}
}
.view{flex:1;overflow-y:auto;padding:24px;position:relative}

/* ============ 通用卡片 / 网格 ============ */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;
  -webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset,0 10px 30px -22px rgba(0,0,0,.45);position:relative}
.card.hover:hover{border-color:var(--line-2);background:var(--panel-2)}
.card-title{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;margin-bottom:16px;color:var(--tx)}
.card-title svg{width:17px;height:17px;color:var(--cy)}
.card-title .more{margin-left:auto}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.section-head{display:flex;align-items:center;gap:10px;margin:22px 0 13px}
.section-head h2{font-size:15px;font-weight:600;letter-spacing:.5px}
.section-head .line{flex:1;height:1px;background:linear-gradient(90deg,var(--line),transparent)}

/* 统计卡 */
.stat{padding:18px 18px 16px;overflow:hidden}
.stat .k{font-size:12px;color:var(--tx2);display:flex;align-items:center;gap:7px}
.stat .k svg{width:15px;height:15px;color:var(--cy)}
.stat .v{font-size:27px;font-weight:700;margin-top:9px;font-family:var(--mono);letter-spacing:.5px}
.stat .v small{font-size:13px;color:var(--tx3);font-weight:500;margin-left:3px}
.stat .delta{font-size:11.5px;margin-top:6px;color:var(--tx3)}
.stat .ico{position:absolute;right:14px;top:14px;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:rgba(34,211,238,.1);color:var(--cy)}
.stat .ico svg{width:18px;height:18px}
.stat.accent-cy{background:linear-gradient(160deg,rgba(34,211,238,.1),rgba(34,211,238,.02))}
.stat.accent-vi{background:linear-gradient(160deg,rgba(139,92,246,.13),rgba(139,92,246,.02))}
.stat.accent-ok{background:linear-gradient(160deg,rgba(52,211,153,.12),rgba(52,211,153,.02))}
.stat.accent-warn{background:linear-gradient(160deg,rgba(251,191,36,.12),rgba(251,191,36,.02))}

/* ============ 列表 / 表格 ============ */
.list{display:flex;flex-direction:column;gap:8px}
.row-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;background:var(--panel);
  border:1px solid var(--line);transition:background .15s,border-color .15s}
.row-item:hover{background:var(--panel-2);border-color:var(--line-2)}
.row-item .grow{flex:1;min-width:0}
.row-item .t{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-item .s{font-size:12px;color:var(--tx3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.avatar,.fi-ico{width:38px;height:38px;flex:none;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:rgba(56,189,248,.1);color:var(--blue)}
.fi-ico svg,.avatar svg{width:19px;height:19px}
.act{display:flex;align-items:center;gap:4px;flex:none}
.act .icon-btn{width:32px;height:32px}
.act .icon-btn svg{width:16px;height:16px}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:3px 9px;border-radius:20px;
  background:rgba(148,180,255,.1);color:var(--tx2);border:1px solid var(--line);white-space:nowrap}
.tag.cy{background:rgba(34,211,238,.12);color:var(--cy);border-color:rgba(34,211,238,.25)}
.tag.ok{background:rgba(52,211,153,.12);color:var(--ok);border-color:rgba(52,211,153,.25)}
.tag.warn{background:rgba(251,191,36,.12);color:var(--warn)}
.tag.danger{background:rgba(251,119,133,.12);color:var(--danger)}
.tag.vi{background:rgba(139,92,246,.14);color:#c4b5fd}

/* ============ 表单 / 工具条 ============ */
.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.search{position:relative;flex:1;min-width:200px;max-width:380px}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--tx3)}
.search .input{padding-left:36px}
.spacer{flex:1}
.empty{text-align:center;padding:54px 20px;color:var(--tx3)}
.empty .e-ico{width:60px;height:60px;margin:0 auto 14px;opacity:.5}
.empty .e-ico svg{width:100%;height:100%}
.empty p{font-size:13px}
.muted{color:var(--tx3);font-size:12px}
.about-row{display:flex;flex-direction:column;gap:6px;line-height:1.7}
.about-prod{font-weight:700;color:var(--tx2)}
.about-ver{font-weight:600;color:var(--tx3)}
.about-copy{min-width:0}
@media (min-width:720px){
  .about-row{flex-direction:row;flex-wrap:wrap;align-items:center}
  .about-row span+span{margin-left:16px;padding-left:16px;border-left:1px solid var(--line)}
}
.mr8{margin-right:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt20{margin-top:20px}
.tx-c{text-align:center}.fl{display:flex;align-items:center;gap:8px}.flb{display:flex;align-items:center;gap:8px}.flb>*{flex:1}
.money{font-family:var(--mono);font-weight:700}
.money.in{color:var(--ok)} .money.out{color:var(--danger)}

/* ============ 密码本 ============ */
.vault-grid{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start;height:100%}
.cat-col{max-height:calc(100vh - 170px);overflow-y:auto;padding-right:4px}
.cat-item{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:10px;cursor:pointer;color:var(--tx2);font-size:13px}
.cat-item:hover{background:rgba(148,180,255,.07)}
.cat-item.active{background:rgba(34,211,238,.12);color:var(--cy)}
.cat-item .n{margin-left:auto;font-size:11px;color:var(--tx3);font-family:var(--mono)}
.cat-split{height:1px;margin:8px 12px;background:var(--line)}
.vault-grid .cat-col .cat-split,.vault-grid .cat-col .cat-keys{grid-column:1 / -1}
.secret-box{position:relative}
.secret-box textarea{padding:10px 76px 10px 12px;min-height:128px;resize:vertical;line-height:1.55;
  font-family:var(--mono,ui-monospace,monospace)}
.secret-box textarea.masked{-webkit-text-security:disc}
.secret-box .pw-eye{top:8px;transform:none}
.secret-box .pw-eye.eye{right:42px}
.secret-box .pw-eye.copy{right:8px}
/* 密钥编辑器深化：字段带复制、类型分段、大模型测连、到期徽标 */
.copy-field{position:relative}
.copy-field>.input{padding-right:44px}
.copy-field .cf-copy{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:8px;color:var(--tx3);display:flex;align-items:center;justify-content:center}
.copy-field .cf-copy:hover{color:var(--blue);background:rgba(10,132,255,.14)}
.copy-field textarea.input{padding-right:44px}
.kseg{display:flex;flex-wrap:wrap;gap:6px}
.kseg-item{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:9px;font-size:12.5px;color:var(--tx2);background:rgba(255,255,255,.05);border:1px solid var(--line);cursor:pointer;user-select:none;white-space:nowrap}
.kseg-item svg{width:14px;height:14px}
.kseg-item:hover{color:var(--tx);border-color:var(--line-2)}
.kseg-item.active{color:#fff;background:rgba(var(--blue-rgb),.2);border-color:rgba(var(--blue-rgb),.45)}
.secret-box.with-meta textarea{padding-right:12px}
.kmeta{display:flex;align-items:center;gap:10px;margin-top:7px;font-size:11.5px;color:var(--tx3);flex-wrap:wrap}
.kmeta .kcount{font-family:var(--mono,ui-monospace,monospace)}
.kmeta .kwarn{color:var(--warn);display:inline-flex;align-items:center;gap:4px}
.kmeta .kwarn svg{width:13px;height:13px}
.kmeta .sp{margin-left:auto;display:inline-flex;gap:6px}
.kmeta .kmini{height:26px;padding:0 10px;border-radius:8px;font-size:11.5px;display:inline-flex;align-items:center;gap:5px;color:var(--tx2);background:rgba(255,255,255,.06);border:1px solid var(--line)}
.kmeta .kmini:hover{color:var(--blue)}
.kmeta .kmini svg{width:13px;height:13px}
.ktest{margin-top:10px;border:1px solid var(--line);border-radius:12px;padding:11px;background:rgba(255,255,255,.03)}
.ktest-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.ktest-presets .kp{height:25px;padding:0 10px;border-radius:8px;font-size:11.5px;color:var(--tx2);background:rgba(255,255,255,.05);border:1px solid var(--line)}
.ktest-presets .kp:hover{color:var(--cy);border-color:rgba(var(--cy-rgb),.4)}
.ktest-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ktest-btn{height:34px;padding:0 15px;border-radius:10px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px;color:#fff;background:var(--blue);border:none;cursor:pointer}
.ktest-btn:hover{filter:brightness(1.08)}
.ktest-btn:disabled{opacity:.6;cursor:default}
.ktest-btn.ok{background:var(--ok);box-shadow:0 8px 20px -10px rgba(var(--ok-rgb),.6)}
.ktest-btn.bad{background:var(--danger);box-shadow:0 8px 20px -10px rgba(var(--danger-rgb),.6)}
.ktest-btn.testing{background:var(--tx3)}
.ktest-btn .spin{border-color:rgba(255,255,255,.3);border-top-color:#fff}
.ktest-btn svg{width:15px;height:15px}
@keyframes kspin{to{transform:rotate(360deg)}}
.exp-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line)}
.exp-badge svg{width:11px;height:11px}
.exp-badge.soon{color:var(--warn);border-color:rgba(var(--warn-rgb),.4);background:rgba(var(--warn-rgb),.12)}
.exp-badge.expired{color:var(--danger);border-color:rgba(var(--danger-rgb),.4);background:rgba(var(--danger-rgb),.12)}
.exp-badge.ok{color:var(--ok);border-color:rgba(var(--ok-rgb),.35);background:rgba(var(--ok-rgb),.1)}
.pw-line{font-family:var(--mono);letter-spacing:1px;background:rgba(6,12,26,.7);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13px}
.kv{display:grid;grid-template-columns:84px 1fr;gap:11px 12px;align-items:center}
.kv .k{color:var(--tx3);font-size:12.5px}
.kv .v{font-size:13.5px;word-break:break-all}
.pw-strength{height:5px;border-radius:5px;background:rgba(255,255,255,.07);overflow:hidden;margin-top:6px}
.pw-strength i{display:block;height:100%;border-radius:5px;transition:.3s}

/* ============ 系统导航 ============ */
.p-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:9px;margin-bottom:14px}
.p-chip{display:flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 8px;border-radius:11px;font-size:12.5px;white-space:nowrap;overflow:hidden;
  color:var(--tx2);background:var(--panel);border:1px solid var(--line);cursor:pointer;transition:.15s}
.p-chip:hover{border-color:var(--line-2);color:var(--tx)}
.p-chip.on{background:rgba(34,211,238,.14);color:var(--cy);border-color:rgba(34,211,238,.4)}
.p-chip .n{font-size:11px;color:var(--tx3);font-family:var(--mono)}
.p-chip.on .n{color:var(--cy)}
.p-chip-grip{display:inline-flex;align-items:center;justify-content:center;width:16px;height:20px;margin-left:-2px;margin-right:1px;color:var(--tx3);opacity:.35;cursor:grab;touch-action:none}
.p-chip-grip svg{width:13px;height:13px;pointer-events:none}
.p-chip:hover .p-chip-grip{opacity:.95;color:var(--cy)}
.p-chip-grip:active{cursor:grabbing}
@media(max-width:760px){ .p-chip-grip{opacity:.7;width:20px;height:24px} }
.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;align-items:start}
.sys-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;
  display:flex;flex-direction:column;gap:11px;backdrop-filter:blur(10px);transition:border-color .15s,background .15s,box-shadow .15s}
.sys-card:hover{border-color:var(--line-2);background:var(--panel-2);box-shadow:0 10px 30px rgba(0,0,0,.28)}
.sc-top{display:flex;align-items:center;gap:11px}
.sc-fav{width:30px;height:30px;flex:none;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--tx3)}
.sc-fav svg{width:17px;height:17px}.sc-fav:hover{color:var(--warn);background:rgba(251,191,36,.1)}
.sc-fav.on{color:var(--warn)}
.sc-avatar{width:42px;height:42px;border-radius:12px;flex:none;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px}
.sc-head{flex:1;min-width:0}
.sc-name{font-size:15px;font-weight:700;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-desc{font-size:11.5px;color:var(--tx3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-url{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--cy);font-family:var(--mono);
  background:rgba(6,12,26,.55);border:1px solid var(--line);border-radius:9px;padding:8px 10px}
.sc-url svg{width:13px;height:13px;flex:none}
.sc-url span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-kv{display:flex;align-items:center;gap:9px;font-size:12.5px}
.sc-kv .k{color:var(--tx3);width:34px;flex:none;font-size:12px}
.sc-kv .v{flex:1;min-width:0;font-family:var(--mono);color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-kv .v.empty{color:var(--tx3);font-family:var(--sans)}
.sc-kv .icon-btn{width:28px;height:28px}.sc-kv .icon-btn svg{width:15px;height:15px}
.sc-actions{display:flex;align-items:center;gap:8px;margin-top:2px}
.sc-open{flex:1;padding:11px 14px}
.sc-spacer{flex:1}
.sc-note{display:flex;gap:7px;align-items:flex-start;font-size:11px;line-height:1.6;color:var(--tx3);
  background:rgba(251,191,36,.06);border:1px solid rgba(251,191,36,.18);border-radius:9px;padding:8px 10px}
.sc-note svg{width:13px;height:13px;flex:none;margin-top:2px;color:var(--warn)}
@media(max-width:680px){.portal-grid{grid-template-columns:1fr}}

/* ============ 记账 ============ */
.ledger-wrap{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
.donut-wrap{display:flex;align-items:center;gap:18px}
.legend{display:flex;flex-direction:column;gap:8px;font-size:12.5px;flex:1}
.legend .li{display:flex;align-items:center;gap:8px}
.legend .dot{width:9px;height:9px;border-radius:3px;flex:none}
.legend .lv{margin-left:auto;font-family:var(--mono);color:var(--tx2)}
.bars{display:flex;align-items:flex-end;gap:8px;height:150px;padding-top:10px}
.bars .bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.bars .bar i{width:60%;max-width:26px;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,var(--cy),var(--indigo));min-height:2px;opacity:.85}
.bars .bar span{font-size:10px;color:var(--tx3)}
.seg{display:inline-flex;background:rgba(6,12,26,.7);border:1px solid var(--line);border-radius:10px;padding:3px}
.seg button{padding:7px 16px;border-radius:8px;font-size:13px;color:var(--tx2);font-weight:600}
.seg button.on{background:var(--grad);color:#04121d}
.seg button.on.exp{background:linear-gradient(135deg,#fb7185,#f43f5e);color:#fff}

/* ============ 待办 ============ */
.todo-item{display:flex;align-items:flex-start;gap:12px;padding:13px 14px}
.check{width:21px;height:21px;flex:none;border-radius:7px;border:1.5px solid var(--line-2);margin-top:1px;display:flex;align-items:center;justify-content:center;color:transparent;transition:.15s;cursor:pointer;background:rgba(6,12,26,.5)}
.check:hover{border-color:var(--cy)}
.check.done{background:var(--grad);border-color:transparent;color:#04121d}
.check.done svg{width:13px;height:13px}
.todo-item.done .t{text-decoration:line-through;color:var(--tx3)}
.prio{width:7px;height:7px;border-radius:50%;flex:none;margin-top:7px}
.prio.high{background:var(--danger);box-shadow:0 0 8px var(--danger)}
.prio.mid{background:var(--warn)} .prio.low{background:var(--ok)}

/* ============ 记事 ============ */
.notes-grid{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:start;height:100%}
.note-list{max-height:calc(100vh - 170px);overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:4px}
.note-card{padding:13px 14px;border-radius:12px;background:var(--panel);border:1px solid var(--line);cursor:pointer;text-align:left;width:100%}
.note-card:hover{background:var(--panel-2)}
.note-card.on{border-color:rgba(34,211,238,.5);box-shadow:0 0 0 2px rgba(34,211,238,.12)}
.note-card .nt{font-size:13.5px;font-weight:600;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.note-card .nb{font-size:12px;color:var(--tx3);height:32px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.note-card .nd{font-size:10.5px;color:var(--tx3);margin-top:7px}
.note-editor{height:calc(100vh - 200px);display:flex;flex-direction:column}
.note-editor .input{font-size:16px;font-weight:600}
.note-editor textarea{flex:1;font-size:14px;line-height:1.8;margin-top:10px}

/* ============ 文件管理 ============ */
.crumbs{display:flex;align-items:center;gap:2px;flex-wrap:wrap;margin-bottom:14px;font-size:13px}
.crumbs button{display:inline-flex;align-items:center;gap:5px;color:var(--cy);padding:4px 7px;border-radius:8px;line-height:1}
.crumbs button:hover{background:rgba(34,211,238,.1)}
.crumbs span{display:inline-flex;align-items:center;color:var(--tx3)}
.crumbs svg{width:16px;height:16px;flex:none;display:block}
.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:12px}
.file-cell{padding:12px 10px 8px;border-radius:13px;background:var(--panel);border:1px solid var(--line);text-align:center;cursor:pointer;position:relative;transition:.15s;
  display:flex;flex-direction:column;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.file-cell:hover{background:var(--panel-2);border-color:var(--line-2);transform:translateY(-2px)}
.file-cell .fi{width:46px;height:46px;margin:2px auto 9px;display:flex;align-items:center;justify-content:center;flex:none}
.file-cell .fi svg{width:100%;height:100%}
/* 图片缩略图：图片卡顶部铺满、懒加载；加载失败回落占位图标 */
.file-cell .thumb{width:calc(100% + 20px);margin:-12px -10px 8px;height:108px;flex:none;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line)}
.file-cell .thumb .t-ico{width:42px;height:42px;color:var(--cy)}
.file-cell .thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.file-cell .thumb.has-img{background:var(--field)}
.file-cell .thumb.has-img .t-ico{display:none}
.file-cell.image .fi{display:none}
.file-cell .fn{width:100%;font-size:12px;word-break:break-all;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:32px}
.file-cell .fs{font-size:10.5px;color:var(--tx3);margin-top:4px;font-family:var(--mono)}
.file-cell .sel{position:absolute;top:7px;right:7px;width:20px;height:20px}
/* 底部常驻操作条：下载 / 重命名 / 删除（触屏无 hover 也始终可见，浅色清晰、不遮挡内容） */
.file-cell .fact{position:static;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin-top:auto;
  padding-top:8px;border-top:1px solid var(--line);opacity:1;visibility:visible}
.file-cell .fact .icon-btn{width:32px;height:30px;background:transparent;border:none;border-radius:8px;color:var(--tx2)}
.file-cell .fact .icon-btn svg{width:16px;height:16px}
.file-cell .fact .icon-btn:active{background:var(--field-2)}
.file-cell .fact [data-dl]{color:var(--cy)}
.file-cell .fact [data-rn]{color:var(--tx2)}
.file-cell .fact [data-rm]{color:var(--danger)}
.dropzone{border:1.5px dashed var(--line-2);border-radius:var(--radius);padding:34px;text-align:center;color:var(--tx3);
  transition:.15s;margin-bottom:14px}
.dropzone.drag{border-color:var(--cy);background:rgba(34,211,238,.07);color:var(--cy)}
.upload-prog{height:5px;border-radius:5px;background:rgba(255,255,255,.07);overflow:hidden;margin-top:8px}
.upload-prog i{display:block;height:100%;background:var(--grad);width:0;transition:width .2s}
.preview-mask{position:fixed;inset:0;z-index:60;background:rgba(3,6,12,.86);backdrop-filter:blur(6px);display:flex;flex-direction:column}
.preview-mask .pv-bar{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line)}
.preview-mask .pv-bar .fname{font-size:13px;color:var(--tx2);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.preview-body{flex:1;overflow:auto;display:flex;align-items:center;justify-content:center;padding:20px}
.preview-body img,.preview-body video{max-width:100%;max-height:100%;border-radius:8px}
.preview-body iframe{width:100%;height:100%;border:none;background:#fff;border-radius:8px}
.preview-body pre{white-space:pre-wrap;word-break:break-word;color:var(--tx);font-size:13px;line-height:1.7;width:100%}

/* ============ 模态 / Toast ============ */
.modal-root{position:fixed;inset:0;z-index:120;
  background:rgba(3,6,12,.7);backdrop-filter:blur(5px)}
.modal-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:22px}
.modal{width:480px;max-width:100%;max-height:88vh;overflow:hidden;display:flex;flex-direction:column;background:linear-gradient(180deg,rgba(20,30,58,.96),rgba(10,16,32,.98));
  border:1px solid var(--line-2);border-radius:18px;box-shadow:var(--shadow)}
.modal-head{display:flex;align-items:center;padding:18px 20px 8px;border-bottom:0;flex:none}
.modal-head h3{font-size:15.5px;flex:1}
.modal-body{padding:20px 22px;min-width:0;flex:1 1 auto;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}
/* v1.23.24 弹窗表单统一行距、"输入框 + 按钮"同行布局、打开弹窗时锁定背景滚动（消除手机端双滚动条） */
.modal-body .mt12{margin-top:16px}
.modal-body .mt8{margin-top:12px}
.modal-body .chk{display:flex;align-items:flex-start;gap:8px;margin-top:18px;line-height:1.55;font-size:13.5px;color:var(--tx)}
.modal-body .chk input{width:18px;height:18px;margin:2px 0 0;flex:none}
.modal-body .chk + .lbl{margin-top:20px}
.fld-inline{display:flex;gap:10px;align-items:stretch}
.fld-inline>.input,.fld-inline>.select{flex:1 1 auto;min-width:0;width:auto}
.fld-inline>.btn{flex:0 0 auto}
.fld-gear{width:42px;height:42px;flex:0 0 auto;padding:0;display:inline-flex;align-items:center;justify-content:center}
.fld-gear svg{width:18px;height:18px}
body.modal-open #app .page-scroll,body.modal-open #app .cat-col,body.modal-open #app .note-list,
body.modal-open #app .nav,body.modal-open #app .audit-box,body.modal-open #app .pick-list{overflow:hidden!important}
.modal-foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:15px 20px;border-top:1px solid var(--line);flex:none}
.modal-foot .btn{min-width:0}
.modal-foot-stack{flex-direction:column;align-items:stretch}
.modal-foot-stack .btn{width:100%;min-height:46px;flex:none}
.toast-root{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:130;display:flex;flex-direction:column;gap:10px;align-items:center;width:max-content;max-width:calc(100vw - 32px);pointer-events:none}
.toast{padding:12px 16px;border-radius:11px;background:rgba(16,25,50,.96);border:1px solid var(--line-2);font-size:13px;
  box-shadow:var(--shadow);display:flex;align-items:center;gap:9px;min-width:200px;animation:toastIn .25s ease;border-left:3px solid var(--cy)}
.toast.ok{border-left-color:var(--ok)} .toast.err{border-left-color:var(--danger)} .toast.warn{border-left-color:var(--warn)}
@keyframes toastIn{from{transform:translateY(10px) scale(.97);opacity:0}to{transform:none;opacity:1}}

/* AI 占位 */
.ai-hero{text-align:center;padding:60px 20px}
.ai-orb{width:96px;height:96px;margin:0 auto 22px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#67e8f9,#38bdf8 40%,#6366f1 80%);
  box-shadow:0 0 60px rgba(56,189,248,.5);animation:float 4s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
.ai-chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:20px}

/* 设置 */
.settings-list{display:flex;flex-direction:column;gap:14px;max-width:1080px;margin-inline:auto}
/* 标签化设置：顶部标签条 + 单类面板 */
.set-tabs{display:flex;gap:6px;max-width:1080px;margin:0 auto 14px;overflow-x:auto;scrollbar-width:none;
  padding:4px;border-radius:13px;background:var(--gs);border:1px solid var(--line)}
.set-tabs::-webkit-scrollbar{display:none}
.set-tab{flex:none;border:none;background:transparent;color:var(--tx3);font-size:14px;font-weight:600;
  padding:8px 20px;border-radius:10px;cursor:pointer;transition:background .18s,color .18s}
.set-tab.on{background:linear-gradient(140deg,var(--accent,#3b82f6),var(--accent2,#5e5ce6));color:#fff;
  box-shadow:0 6px 14px -6px rgba(59,130,246,.6)}
.set-pane{display:flex;flex-direction:column;gap:14px;max-width:1080px;margin-inline:auto}
/* 主题皮肤选择器 · 迷你界面预览 */
.skin-lead{margin:-4px 0 16px;font-size:12.5px;line-height:1.55;color:var(--tx3);letter-spacing:.02em}
.skin-dots{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px}
.skin-dot{
  position:relative;display:flex;flex-direction:column;align-items:stretch;gap:10px;
  padding:8px 8px 11px;border:1px solid rgba(255,255,255,.06);border-radius:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.015));
  cursor:pointer;color:inherit;font:inherit;text-align:left;
  box-shadow:0 10px 28px -22px rgba(0,0,0,.55);
  transition:transform .16s ease,border-color .18s,box-shadow .18s,background .18s;
}
:root[data-theme="light"] .skin-dot{
  background:linear-gradient(180deg,#fff,rgba(255,255,255,.86));
  border-color:rgba(15,40,80,.08);box-shadow:0 12px 28px -20px rgba(20,40,80,.18);
}
.skin-dot:hover{border-color:rgba(var(--blue-rgb),.35);transform:translateY(-2px);
  box-shadow:0 16px 36px -20px rgba(var(--blue-rgb),.35)}
.skin-dot:active{transform:translateY(0) scale(.985)}
.sd-preview{
  position:relative;display:block;height:84px;border-radius:14px;overflow:hidden;
  border:1px solid rgba(255,255,255,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12);
}
.sd-preview > i{position:absolute;display:block;border-radius:999px;pointer-events:none}
.sd-preview .sd-bar{left:10px;right:28px;top:12px;height:8px;opacity:.92}
.sd-preview .sd-card{left:10px;top:30px;width:42%;height:28px;border-radius:8px;opacity:.55}
.sd-preview .sd-pill{left:10px;bottom:12px;width:36%;height:8px;opacity:.35}
.sd-preview .sd-dot{right:12px;top:11px;width:10px;height:10px;opacity:.9;
  box-shadow:0 0 0 3px rgba(255,255,255,.08)}
.sd-preview[data-sd="midnight"]{background:linear-gradient(155deg,#2a2b32 0%,#12131a 48%,#07080c 100%)}
.sd-preview[data-sd="midnight"] .sd-bar{background:linear-gradient(90deg,#5aa8ff,#0a84ff)}
.sd-preview[data-sd="midnight"] .sd-card,.sd-preview[data-sd="midnight"] .sd-pill{background:rgba(255,255,255,.14)}
.sd-preview[data-sd="midnight"] .sd-dot{background:#0a84ff}
.sd-preview[data-sd="ocean"]{background:linear-gradient(155deg,#1a3a68 0%,#0b1a33 50%,#040a14 100%)}
.sd-preview[data-sd="ocean"] .sd-bar{background:linear-gradient(90deg,#67e8f9,#22d3ee)}
.sd-preview[data-sd="ocean"] .sd-card,.sd-preview[data-sd="ocean"] .sd-pill{background:rgba(160,210,255,.18)}
.sd-preview[data-sd="ocean"] .sd-dot{background:#22d3ee}
.sd-preview[data-sd="techblue"]{background:linear-gradient(155deg,#1a2436 0%,#0e1218 52%,#07090d 100%)}
.sd-preview[data-sd="techblue"] .sd-bar{background:linear-gradient(90deg,#8ec5ff,#3b82f6)}
.sd-preview[data-sd="techblue"] .sd-card,.sd-preview[data-sd="techblue"] .sd-pill{background:rgba(255,255,255,.10)}
.sd-preview[data-sd="techblue"] .sd-dot{background:#3b82f6;box-shadow:0 0 8px rgba(59,130,246,.7)}
.sd-preview[data-sd="forest"]{background:linear-gradient(155deg,#1e3a2e 0%,#0d1812 50%,#050906 100%)}
.sd-preview[data-sd="forest"] .sd-bar{background:linear-gradient(90deg,#6ee7b7,#34d399)}
.sd-preview[data-sd="forest"] .sd-card,.sd-preview[data-sd="forest"] .sd-pill{background:rgba(160,230,190,.16)}
.sd-preview[data-sd="forest"] .sd-dot{background:#34d399}
.sd-preview[data-sd="light"]{background:linear-gradient(160deg,#ffffff 0%,#eef0f5 55%,#dfe3ea 100%);
  border-color:rgba(15,40,80,.08);box-shadow:inset 0 1px 0 #fff}
.sd-preview[data-sd="light"] .sd-bar{background:linear-gradient(90deg,#5aa8ff,#0a84ff)}
.sd-preview[data-sd="light"] .sd-card,.sd-preview[data-sd="light"] .sd-pill{background:rgba(15,40,80,.08)}
.sd-preview[data-sd="light"] .sd-dot{background:#0a84ff;box-shadow:0 0 0 3px rgba(10,132,255,.12)}
.sd-meta{display:flex;flex-direction:column;gap:2px;padding:0 2px;min-width:0}
.sd-name{font-size:13px;font-weight:700;color:var(--tx);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sd-desc{font-size:10.5px;line-height:1.35;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sd-check{
  position:absolute;top:14px;right:14px;width:22px;height:22px;border-radius:50%;
  background:linear-gradient(140deg,var(--accent,#3b82f6),var(--accent2,#5e5ce6));color:#fff;
  display:none;align-items:center;justify-content:center;
  box-shadow:0 6px 14px -4px rgba(var(--blue-rgb),.65);z-index:2;
}
.sd-check svg{width:13px;height:13px}
.skin-dot.on{
  border-color:rgba(var(--blue-rgb),.55);
  background:linear-gradient(180deg,rgba(var(--blue-rgb),.12),rgba(var(--cy-rgb),.04));
  box-shadow:0 0 0 3px rgba(var(--blue-rgb),.16),0 16px 36px -22px rgba(var(--blue-rgb),.45);
}
:root[data-theme="light"] .skin-dot.on{
  background:linear-gradient(180deg,rgba(var(--blue-rgb),.08),#fff);
  border-color:rgba(var(--blue-rgb),.45);
}
.skin-dot.on .sd-check{display:flex}
.skin-dot.on .sd-name{color:var(--blue)}
.skin-dot.on .sd-preview{border-color:rgba(var(--blue-rgb),.35)}
@media(max-width:560px){
  .skin-dots{gap:9px;grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}
  .sd-preview{height:74px}
  .sd-name{font-size:12px}.sd-desc{font-size:10px}
  .set-tab{padding:7px 16px;font-size:13px}
}
@media(prefers-reduced-motion:reduce){.skin-dot,.skin-dot:hover,.skin-dot:active{transition:none;transform:none}}
.set-nav-row{display:flex;align-items:center;gap:12px;width:100%;margin-top:10px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--field);color:var(--tx);cursor:pointer;text-align:left;transition:background .15s,border-color .15s}
.set-nav-row:hover{border-color:rgba(var(--blue-rgb),.4);background:var(--elev)}
.set-nav-ico{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:rgba(var(--blue-rgb),.12);color:var(--blue)}
.set-nav-ico svg{width:20px;height:20px}
.set-nav-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.set-nav-txt b{font-size:14.5px;font-weight:700}
.set-nav-txt small{font-size:11.5px;color:var(--tx3)}
.set-nav-row>svg{width:18px;height:18px;color:var(--tx3);flex:none}
.audit-box{max-height:300px;overflow:auto;font-family:var(--mono);font-size:11.5px;line-height:1.9}
.audit-box .a-row{display:flex;gap:12px;padding:3px 2px;border-bottom:1px dashed rgba(148,180,255,.07)}
.audit-box .a-t{color:var(--tx3);flex:none}
.audit-box .a-a{color:var(--cy);flex:none;min-width:110px}

/* 响应式 */
@media (max-width:1080px){
  .g4{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(2,1fr)}
  .ledger-wrap,.vault-grid,.notes-grid{grid-template-columns:1fr}
  .cat-col,.note-list{max-height:none}
}
@media (max-width:760px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:50;transform:translateX(-100%);transition:transform .25s;box-shadow:var(--shadow)}
  .sidebar.open{transform:none}
  .menu-btn{display:inline-flex !important}
  .view{padding:16px}
  .g4,.g3,.g2{grid-template-columns:1fr}
  .topbar{padding:0 14px}
}

/* ===== 还款提醒 ===== */
.debt-hero{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
.dh-card{border-radius:16px;padding:20px;position:relative;overflow:hidden}
.dh-card.month{background:linear-gradient(135deg,rgba(244,114,182,.16),rgba(99,102,241,.14));border:1px solid rgba(244,114,182,.3)}
.dh-card.total{background:linear-gradient(135deg,rgba(34,211,238,.14),rgba(16,185,129,.12));border:1px solid rgba(34,211,238,.28)}
.dh-label{font-size:12.5px;color:var(--tx3);display:flex;align-items:center;gap:7px}
.dh-amount{font-size:32px;font-weight:800;letter-spacing:.5px;margin:8px 0 4px;font-family:var(--mono)}
.dh-card.month .dh-amount{color:#fda4af}
.dh-card.total .dh-amount{color:var(--cy)}
.dh-sub{font-size:12px;color:var(--tx3);line-height:1.8}
.debt-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:12px}
.debt-card.overdue{border-color:rgba(248,113,113,.5);box-shadow:0 0 0 1px rgba(248,113,113,.15)}
.debt-top{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.debt-top .grow{flex:1;min-width:0}
.debt-name{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.debt-meta{font-size:12px;color:var(--tx3);margin-top:3px}
.debt-amounts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.debt-amounts .da{background:var(--panel-2);border-radius:10px;padding:9px 10px;text-align:center}
.debt-amounts .da .l{font-size:11px;color:var(--tx3)}
.debt-amounts .da .v{font-size:14.5px;font-weight:700;font-family:var(--mono);margin-top:2px}
.debt-bar{height:7px;border-radius:6px;background:rgba(148,180,255,.12);overflow:hidden;margin:8px 0}
.debt-bar>i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--cy),#818cf8)}
.debt-badge{font-size:11px;padding:3px 9px;border-radius:20px;font-weight:600;white-space:nowrap}
.debt-badge.overdue{background:rgba(248,113,113,.16);color:#fca5a5}
.debt-badge.dueToday{background:rgba(251,191,36,.18);color:#fcd34d}
.debt-badge.soon{background:rgba(251,146,60,.16);color:#fdba74}
.debt-badge.done{background:rgba(16,185,129,.16);color:#6ee7b7}
.debt-badge.normal{background:rgba(148,180,255,.12);color:var(--tx3)}
.debt-badge.awaiting{background:rgba(148,180,255,.1);color:var(--tx3)}
.pay-list{margin:10px 0 4px;border-top:1px dashed var(--line);padding-top:8px}
.pay-row{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:5px 2px;color:var(--tx2)}
.pay-row .grow{flex:1;min-width:0}
.pay-row .amt{font-family:var(--mono);font-weight:700;color:#6ee7b7}
.debt-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.debt-payinfo{font-size:12px;color:var(--tx3);margin-top:8px;line-height:1.8}
/* 分期计算器 */
.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.calc-out{margin-top:16px;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:16px}
.calc-main{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.calc-main .big{font-size:26px;font-weight:800;color:var(--cy);font-family:var(--mono)}
.calc-apr{font-size:13px;line-height:1.9}
.calc-apr b{font-family:var(--mono)}
.calc-apr .real{color:#fca5a5;font-weight:700}
@media(max-width:680px){.debt-hero{grid-template-columns:1fr}.debt-amounts{grid-template-columns:repeat(2,1fr)}.calc-grid{grid-template-columns:1fr}}
/* 待办：已完成折叠归类 */
.done-zone{border-top:1px dashed var(--line-2);padding-top:6px;margin-top:6px}
.done-head{width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent;border:0;color:var(--tx3);
  font-size:13px;padding:10px 6px;cursor:pointer;border-radius:8px}
.done-head:hover{color:var(--tx);background:var(--panel-2)}
.done-clear{font-size:12px;color:#fca5a5;opacity:.85;background:none;border:0;cursor:pointer;padding:0}
.done-clear:hover{opacity:1;text-decoration:underline}
.done-list{opacity:.72}
.done-list .todo-item.done .t{text-decoration:line-through;color:var(--tx3)}
.todo-item.done .t{text-decoration:line-through}

/* ============================================================
   v3 · 商业级外壳：彩色图标系统 / 跟手横滑分页 / 底部 Tab / 更多面板
   ============================================================ */

/* ---- 模块品牌色板（g1/g2 实心渐变，gs 淡底，gc 亮色 glyph） ---- */
[data-c="cy"]{--g1:#22d3ee;--g2:#0ea5e9;--gs:rgba(34,211,238,.16);--gc:#67e8f9}
[data-c="blue"]{--g1:#38bdf8;--g2:#6366f1;--gs:rgba(56,189,248,.17);--gc:#7dd3fc}
[data-c="amber"]{--g1:#fbbf24;--g2:#fb923c;--gs:rgba(251,191,36,.17);--gc:#fcd34d}
[data-c="emerald"]{--g1:#34d399;--g2:#14b8a6;--gs:rgba(52,211,153,.17);--gc:#6ee7b7}
[data-c="pink"]{--g1:#f472b6;--g2:#fb7185;--gs:rgba(244,114,182,.17);--gc:#f9a8d4}
[data-c="green"]{--g1:#34d399;--g2:#22c55e;--gs:rgba(52,211,153,.17);--gc:#86efac}
[data-c="violet"]{--g1:#a78bfa;--g2:#8b5cf6;--gs:rgba(167,139,250,.18);--gc:#c4b5fd}
[data-c="sky"]{--g1:#38bdf8;--g2:#0284c7;--gs:rgba(56,189,248,.17);--gc:#7dd3fc}
[data-c="indigo"]{--g1:#818cf8;--g2:#6366f1;--gs:rgba(129,140,248,.18);--gc:#a5b4fc}
[data-c="slate"]{--g1:#94a3b8;--g2:#64748b;--gs:rgba(148,163,184,.17);--gc:#cbd5e1}

/* ---- 彩色渐变图标瓦片（统一图标语言，告别黑白） ---- */
.tile-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:30px;height:30px;border-radius:10px;color:#fff;overflow:hidden;
  background:linear-gradient(140deg,var(--g1,#22d3ee),var(--g2,#38bdf8));
  box-shadow:0 6px 14px -6px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.32),0 0 0 1px rgba(255,255,255,.05);
  transition:transform .18s cubic-bezier(.22,.61,.36,1),box-shadow .18s,filter .18s}
.tile-icon svg{width:17px;height:17px;stroke-width:1.9;position:relative;z-index:1}
.tile-icon.xs{width:26px;height:26px;border-radius:9px}
.tile-icon.xs svg{width:15px;height:15px}
.tile-icon.lg{width:52px;height:52px;border-radius:17px}
.tile-icon.lg svg{width:25px;height:25px}
.tile-icon::after{content:"";position:absolute;inset:0;z-index:0;border-radius:inherit;
  background:linear-gradient(180deg,rgba(255,255,255,.24),rgba(255,255,255,0) 46%);pointer-events:none}

/* ---- 侧边栏导航（桌面）彩色化 + 选中指示条 ---- */
.nav-item{gap:11px;padding:9px 11px}
.nav-item .nlabel{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-item .tile-icon{opacity:.94}
.nav-item:hover .tile-icon{opacity:1;transform:translateY(-1px)}
.nav-item.active{color:var(--tx);
  background:linear-gradient(90deg,rgba(56,189,248,.15),rgba(99,102,241,.05));
  box-shadow:inset 0 0 0 1px rgba(120,170,255,.18)}
.nav-item.active .nlabel{font-weight:700}
.nav-item.active .tile-icon{transform:scale(1.07);filter:brightness(1.08) saturate(1.1)}
.nav-item.active::before{content:"";position:absolute;left:-4px;top:50%;transform:translateY(-50%);
  width:3.5px;height:20px;border-radius:0 4px 4px 0;background:var(--grad);box-shadow:var(--glow)}

/* ---- 跟手横滑分页轨道 ---- */
.pages{flex:1;min-height:0;overflow:hidden;position:relative}
.pages-track{display:flex;height:100%;width:100%;will-change:transform}
.page{flex:0 0 100%;height:100%;min-width:0;position:relative}
.page-scroll{height:100%;overflow-y:auto;overflow-x:hidden;padding:26px 26px 32px;touch-action:pan-y;
  -webkit-overflow-scrolling:touch;scrollbar-gutter:stable;overscroll-behavior:contain}
/* 防横向溢出：任何页根块 / 工具条都不得把横滑页撑宽（窄屏长 URL、多按钮兜底，保证左右居中对称） */
.page-scroll>*{min-width:0;max-width:100%}
.toolbar{min-width:0}
.toolbar .btn{flex:none;white-space:nowrap}
.page.pg-in .page-scroll{animation:pgIn .42s cubic-bezier(.22,.61,.36,1) both}
@keyframes pgIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.page-loading{display:flex;align-items:center;justify-content:center;gap:10px;height:60vh;color:var(--tx3);font-size:13px}
.lp-spin{width:20px;height:20px;border-radius:50%;border:2.5px solid rgba(148,180,255,.18);
  border-top-color:var(--cy);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* 顶栏锁定按钮：仅手机显示（桌面在侧边栏） */
#topLock{display:none}
#topLock svg{width:18px;height:18px}

/* ---- 首页仪表盘 v3 ---- */
.s-hero{position:relative;overflow:hidden;border-radius:var(--radius);padding:24px 24px 22px;
  border:1px solid rgba(56,189,248,.22);
  background:linear-gradient(150deg,rgba(34,211,238,.14),rgba(56,189,248,.06) 42%,rgba(99,102,241,.13));
  backdrop-filter:blur(12px);box-shadow:0 16px 44px -22px rgba(34,211,238,.4)}
.s-hero::before{content:"";position:absolute;right:-50px;top:-70px;width:220px;height:220px;border-radius:50%;
  background:radial-gradient(circle,rgba(34,211,238,.32),transparent 70%);pointer-events:none}
.s-hello{display:flex;align-items:center;justify-content:space-between;gap:10px;position:relative;z-index:1}
.s-hello .hi{font-size:14px;color:var(--tx2);letter-spacing:.5px}
.s-hello .date{font-size:12px;color:var(--tx3)}
.s-hero .big{position:relative;z-index:1;font-size:33px;font-weight:800;letter-spacing:.5px;margin:16px 0 6px;
  font-family:var(--mono);background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.s-hero .big small{font-size:13px;font-weight:600;margin-left:8px;-webkit-text-fill-color:var(--tx2);font-family:var(--sans)}
.s-hero .tip{position:relative;z-index:1;display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--tx2)}
.s-hero .tip svg{width:15px;height:15px;color:var(--cy);flex:none}
.stat{position:relative;border-radius:var(--radius);padding:18px;border:1px solid var(--line);
  background:var(--panel);backdrop-filter:blur(10px);overflow:hidden}
.stat .s-top{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--tx2)}
.stat .s-ico{margin-left:auto;width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center}
.stat .s-ico svg{width:17px;height:17px}
.stat .s-value{font-size:25px;font-weight:800;font-family:var(--mono);letter-spacing:.5px;margin-top:12px}
.stat .s-value small{font-size:12px;color:var(--tx3);font-weight:500;margin-left:5px}
.stat .s-sub{font-size:11px;color:var(--tx3);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat.green{background:linear-gradient(160deg,rgba(52,211,153,.13),rgba(52,211,153,.02));border-color:rgba(52,211,153,.22)}
.stat.green .s-ico{background:rgba(52,211,153,.15);color:#34d399}
.stat.cyan{background:linear-gradient(160deg,rgba(34,211,238,.13),rgba(34,211,238,.02));border-color:rgba(34,211,238,.22)}
.stat.cyan .s-ico{background:rgba(34,211,238,.15);color:#22d3ee}
.stat.violet{background:linear-gradient(160deg,rgba(139,92,246,.15),rgba(139,92,246,.02));border-color:rgba(139,92,246,.24)}
.stat.violet .s-ico{background:rgba(139,92,246,.17);color:#c4b5fd}
.stat.amber{background:linear-gradient(160deg,rgba(251,191,36,.14),rgba(251,191,36,.02));border-color:rgba(251,191,36,.24)}
.stat.amber .s-ico{background:rgba(251,191,36,.16);color:#fbbf24}
.stat.blue{background:linear-gradient(160deg,rgba(56,189,248,.14),rgba(56,189,248,.02));border-color:rgba(56,189,248,.22)}
.stat.blue .s-ico{background:rgba(56,189,248,.16);color:#38bdf8}
.stat.clickable{cursor:pointer;transition:transform .15s,box-shadow .15s}
.stat.clickable:active{transform:scale(.98)}
.quick-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.q-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:15px 4px 13px;
  border-radius:14px;background:var(--panel);border:1px solid var(--line);color:var(--tx2);
  font-size:11.5px;text-align:center;transition:transform .14s,background .15s,border-color .15s}
.q-item:hover{background:var(--panel-2);border-color:var(--line-2)}
.q-item:active{transform:scale(.93)}
.q-item .tile-icon{width:46px;height:46px;border-radius:15px}
.q-item .tile-icon svg{width:23px;height:23px}
.section-title{display:flex;align-items:baseline;gap:10px;margin:24px 2px 13px}
.section-title h2{font-size:15px;font-weight:700;letter-spacing:.5px}
.section-title .muted{font-size:11.5px}

/* ---- 底部 Tab（桌面隐藏，手机显示） ---- */
.tabbar{display:none}

/* ---- 「全部功能」上滑面板 ---- */
.sheet-mask{position:fixed;inset:0;z-index:70;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(3,6,12,.62);backdrop-filter:blur(5px);opacity:0;transition:opacity .26s;pointer-events:none}
.sheet-mask.open{opacity:1;pointer-events:auto}
.sheet{width:100%;max-width:540px;max-height:84vh;overflow-y:auto;
  background:linear-gradient(180deg,rgba(20,29,56,.98),rgba(9,14,30,.99));
  border:1px solid var(--line-2);border-bottom:none;border-radius:24px 24px 0 0;
  padding:8px 18px calc(24px + env(safe-area-inset-bottom));
  transform:translateY(102%);transition:transform .36s cubic-bezier(.22,.61,.36,1);
  box-shadow:0 -22px 60px rgba(0,0,0,.55)}
.sheet-mask.open .sheet{transform:translateY(0)}
.sheet-grab{width:42px;height:4px;border-radius:4px;background:var(--line-2);margin:8px auto 14px}
.sheet-title{font-size:15px;font-weight:700;letter-spacing:1px;margin:0 4px 18px;color:var(--tx)}
.more-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px 8px}
.more-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:9px;padding:6px 2px;
  color:var(--tx2);font-size:11.5px;border-radius:14px;transition:transform .12s}
.more-item:active{transform:scale(.9)}
.more-item .tile-icon{width:52px;height:52px;border-radius:17px}
.more-item .tile-icon svg{width:25px;height:25px}
.soon-dot{position:absolute;top:-2px;right:12%;font-style:normal;font-size:9px;padding:1px 5px;border-radius:6px;
  background:rgba(251,191,36,.18);color:var(--warn);border:1px solid rgba(251,191,36,.3)}

/* ============ 移动端：底部 Tab + 全屏横滑 ============ */
@media(max-width:760px){
  .sidebar{display:none !important}
  .menu-btn{display:none !important}
  #topLock{display:inline-flex}
  .clock{display:none}
  .topbar{height:56px;padding:0 14px}
  .page-scroll{padding:14px 14px calc(92px + env(safe-area-inset-bottom))}
  .search{min-width:0;flex-basis:100%;max-width:none}
  .s-hero{padding:20px 18px}
  .s-hero .big{font-size:27px}
  .quick-grid{grid-template-columns:repeat(3,1fr);gap:10px}
  .g4,.g3{grid-template-columns:1fr}
  .g2{grid-template-columns:1fr}

  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:var(--kb-inset,0px);z-index:80;gap:2px;
    padding:7px 6px calc(7px + env(safe-area-inset-bottom));
    background:var(--elev-solid);
    border-top:1px solid var(--line-2);
    -webkit-backdrop-filter:none;backdrop-filter:none}
  .titem{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    padding:4px 2px 3px;color:var(--tx3);font-size:10.5px;border-radius:14px;min-width:0;
    transition:color .2s}
  .titem .tile-icon{width:48px;height:31px;border-radius:11px;background:var(--gs);color:var(--gc);
    box-shadow:none;transition:transform .22s cubic-bezier(.22,.61,.36,1),background .22s,color .22s}
  .titem .tile-icon::after{display:none}
  .titem .tile-icon svg{width:21px;height:21px}
  .titem.active{color:var(--tx)}
  .titem.active .tlabel{font-weight:700}
  .titem.active .tile-icon{background:linear-gradient(140deg,var(--g1),var(--g2));color:#fff;
    box-shadow:0 9px 17px -8px rgba(0,0,0,.62),inset 0 1px 0 rgba(255,255,255,.3);
    transform:translateY(-2px) scale(1.05)}
  .titem.active .tile-icon::after{display:block}
  .titem:active .tile-icon{transform:scale(.88)}
  .sub-back{display:none}
  body.sub-page .sub-back{display:inline-flex}
  /* tabbar 常驻：横滑到二级页也不隐藏；二级页底部同样为 tabbar 留出空间 */
}

/* ============================================================
   v4 · 苹果风（iOS Dark）精修覆盖
   系统色板 / 中性 grouped 卡片 / 毛玻璃抽屉 / 更克制的尺寸
   （在 v3 之后定义，同特异性后者生效，便于回退）
   ============================================================ */

/* ---- 图标瓦片：iOS 连续圆角 + 柔和投影 + 系统色 ---- */
.tile-icon{border-radius:23%;
  box-shadow:0 5px 12px -6px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.22)}
.tile-icon::after{background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0) 48%)}
[data-c="cy"]{--g1:#64d2ff;--g2:#0a84ff;--gs:rgba(100,210,255,.16);--gc:#64d2ff}
[data-c="blue"]{--g1:#0a84ff;--g2:#5e5ce6;--gs:rgba(10,132,255,.16);--gc:#0a84ff}
[data-c="amber"]{--g1:#ffb340;--g2:#ff8f0a;--gs:rgba(255,159,10,.16);--gc:#ffb340}
[data-c="emerald"]{--g1:#46e27a;--g2:#1fb34c;--gs:rgba(48,209,88,.16);--gc:#46e27a}
[data-c="pink"]{--g1:#ff7e96;--g2:#ff2d55;--gs:rgba(255,55,95,.16);--gc:#ff6b85}
[data-c="green"]{--g1:#5be586;--g2:#28c24f;--gs:rgba(48,209,88,.16);--gc:#5be586}
[data-c="violet"]{--g1:#d08cff;--g2:#a050f0;--gs:rgba(191,90,242,.16);--gc:#d08cff}
[data-c="sky"]{--g1:#7dd3fc;--g2:#1490ff;--gs:rgba(100,210,255,.16);--gc:#7dd3fc}
[data-c="indigo"]{--g1:#8583ff;--g2:#5e5ce6;--gs:rgba(94,92,230,.18);--gc:#8583ff}
[data-c="slate"]{--g1:#c8c8cc;--g2:#8e8e93;--gs:rgba(142,142,147,.18);--gc:#c0c0c6}
.tile-icon.lg{width:46px;height:46px}
.tile-icon.lg svg{width:23px;height:23px}

/* ---- 桌面侧栏选中：iOS 淡蓝高亮，克制不放大 ---- */
.nav-item.active{background:rgba(10,132,255,.16);box-shadow:inset 0 0 0 1px rgba(10,132,255,.22)}
.nav-item.active::before{background:var(--blue);box-shadow:none}
.nav-item.active .tile-icon{transform:none;filter:none}

/* ---- 首页 hero：iOS 大标题 grouped 卡（去霓虹光斑，数字纯白） ---- */
.s-hero{border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.035));
  backdrop-filter:blur(20px) saturate(180%);box-shadow:0 12px 34px -20px rgba(0,0,0,.7)}
.s-hero::before{display:none}
.s-hero .big{background:none;-webkit-background-clip:initial;background-clip:initial;
  -webkit-text-fill-color:#fff;color:#fff;font-weight:800}
.s-hero .tip svg{color:var(--blue)}

/* ---- 统计卡：统一中性材质，仅右上角小图标点缀模块色 ---- */
.stat{background:var(--panel);border:1px solid var(--line);border-radius:18px;
  backdrop-filter:blur(20px) saturate(180%)}
.stat.green,.stat.cyan,.stat.violet,.stat.amber,.stat.blue,.stat.pink{background:var(--panel);border-color:var(--line)}
.stat .s-value{font-weight:700}
.stat.green .s-ico{background:rgba(48,209,88,.16);color:#30d158}
.stat.amber .s-ico{background:rgba(255,159,10,.16);color:#ff9f0a}
.stat.violet .s-ico{background:rgba(191,90,242,.16);color:#bf5af2}
.stat.pink .s-ico{background:rgba(255,55,95,.16);color:#ff6b85}
.stat.blue .s-ico{background:rgba(10,132,255,.16);color:#0a84ff}
.stat.cyan .s-ico{background:rgba(100,210,255,.16);color:#64d2ff}

/* ---- 快捷入口图标收紧 ---- */
.q-item{padding:12px 4px 11px;border-radius:16px}
.q-item .tile-icon{width:40px;height:40px}
.q-item .tile-icon svg{width:20px;height:20px}

/* ---- 「全部功能」上滑面板：iOS 抽屉材质 + 图标缩小 ---- */
.sheet-mask{background:rgba(0,0,0,.5);backdrop-filter:blur(8px)}
.sheet{background:rgba(22,22,24,.92);border:1px solid var(--line);border-bottom:none;
  backdrop-filter:blur(28px) saturate(180%);border-radius:26px 26px 0 0;
  box-shadow:0 -20px 60px rgba(0,0,0,.6)}
.sheet-grab{width:38px;height:5px;background:var(--line-2)}
.more-grid{gap:16px 6px}
.more-item{gap:8px}
.more-item .tile-icon{width:46px;height:46px}
.more-item .tile-icon svg{width:23px;height:23px}

/* ---- 全部功能底部：返回 + 立即锁定 同排双按钮 ---- */
.lock-actions{display:flex;align-items:stretch;gap:12px;width:100%;margin-top:18px}
.la-btn{display:flex;align-items:center;justify-content:center;gap:8px;height:52px;
  border-radius:16px;font-size:15px;font-weight:600;
  transition:transform .12s,background .15s}
.la-btn:active{transform:scale(.98)}
.la-btn .ls-ico{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:9px;flex:none}
.la-btn .ls-ico svg{width:16px;height:16px}
.la-back{flex:1;color:var(--tx2);background:var(--field);border:1px solid var(--line)}
.la-back .ls-ico{background:var(--field-2);color:var(--tx2)}
.la-back:active{background:var(--field-2)}
.la-lock{flex:1.35;color:#ff8b97;background:rgba(255,69,58,.12);border:1px solid rgba(255,69,58,.22)}
.la-lock .ls-ico{background:rgba(255,69,58,.18);color:#ff8b97}
.la-lock:active{background:rgba(255,69,58,.18)}
@media(max-width:380px){.la-btn{font-size:14px;gap:6px}.la-btn .ls-ico{width:23px;height:23px}}

/* ---- 加载圈中性化 ---- */
.lp-spin{border-color:rgba(255,255,255,.14);border-top-color:var(--blue)}

/* ---- 移动端 Tab：iOS 毛玻璃 + 胶囊缩小 + 页面留白回收 ---- */
@media(max-width:760px){
  .tabbar{padding:6px 6px calc(6px + env(safe-area-inset-bottom));
    background:rgba(12,12,14,.82);border-top:1px solid var(--line);
    backdrop-filter:blur(22px) saturate(180%)}
  .titem{gap:3px;font-size:10px;border-radius:12px}
  .titem .tile-icon{width:44px;height:27px;border-radius:9px}
  .titem .tile-icon svg{width:19px;height:19px}
  .titem.active .tile-icon{box-shadow:0 6px 14px -8px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.28);
    transform:translateY(-1px) scale(1.03)}
  .page-scroll{padding:14px 14px calc(84px + env(safe-area-inset-bottom))}
}

/* ============================================================
   v5 · 皮肤系统 + 全站语义化
   :root 默认「曜石黑」；其余主题块面/彩色全部走变量随皮肤切换
   ============================================================ */

/* ---- 皮肤二：深海蓝（蓝黑科技） ---- */
:root[data-theme="ocean"]{
  --bg0:#060d19; --bg1:#0a1424; --bg2:#11203a;
  --panel:rgba(146,184,255,.06); --panel-2:rgba(146,184,255,.11);
  --line:rgba(146,184,255,.13); --line-2:rgba(146,184,255,.24);
  --tx:#eaf2ff; --tx2:#9db2d6; --tx3:#63789c;
  --cy:#67e8f9; --blue:#38bdf8; --indigo:#818cf8; --violet:#a78bfa; --pink:#f472b6;
  --ok:#34d399; --warn:#fbbf24; --danger:#fb7185;
  --grad:linear-gradient(135deg,#22d3ee 0%,#3b82f6 100%);
  --glow:0 8px 22px rgba(34,211,238,.28); --shadow:0 16px 44px rgba(2,8,20,.6);
  --field:rgba(140,180,255,.08); --field-2:rgba(140,180,255,.14); --track:rgba(140,180,255,.14);
  --elev:rgba(13,24,44,.92); --elev-solid:#0d182c; --card:#0d182c; --bar:rgba(9,17,32,.82);
  --scrim:rgba(2,8,20,.62); --scroll:rgba(146,184,255,.22);
  --cy-rgb:103,232,249; --blue-rgb:56,189,248; --indigo-rgb:129,140,248; --violet-rgb:167,139,250;
  --ok-rgb:52,211,153; --warn-rgb:251,191,36; --danger-rgb:251,113,133; --pink-rgb:244,114,182;
}
/* ---- 皮肤三：科技蓝（墨色底，电光蓝只作按钮和高光） ---- */
:root[data-theme="techblue"]{
  --bg0:#0b0e14; --bg1:#10141c; --bg2:#181d28;
  --panel:rgba(255,255,255,.045); --panel-2:rgba(255,255,255,.08);
  --line:rgba(150,186,255,.14); --line-2:rgba(150,186,255,.26);
  --tx:#f4f7fb; --tx2:#b7c0ce; --tx3:#7d8796;
  --cy:#8ebfff; --blue:#3b82f6; --indigo:#818cf8; --violet:#a78bfa; --pink:#f472b6;
  --ok:#34d399; --warn:#fbbf24; --danger:#fb7185;
  --grad:linear-gradient(135deg,#60a5fa 0%,#2563eb 100%);
  --glow:0 8px 22px rgba(59,130,246,.32); --shadow:0 16px 44px rgba(0,0,0,.55);
  --field:rgba(255,255,255,.06); --field-2:rgba(255,255,255,.10); --track:rgba(255,255,255,.10);
  --elev:rgba(16,20,28,.94); --elev-solid:#12161e; --card:#141820; --bar:rgba(12,15,22,.86);
  --scrim:rgba(4,6,10,.62); --scroll:rgba(150,186,255,.28);
  --cy-rgb:142,191,255; --blue-rgb:59,130,246; --indigo-rgb:129,140,248; --violet-rgb:167,139,250;
  --ok-rgb:52,211,153; --warn-rgb:251,191,36; --danger-rgb:251,113,133; --pink-rgb:244,114,182;
}
:root[data-theme="techblue"] .bg-glow{
  background:radial-gradient(520px 280px at 78% -8%,rgba(59,130,246,.16),transparent 70%);
}
:root[data-theme="techblue"] .nav-item.active{color:var(--cy)}
/* ---- 皮肤四：黛绿护眼 ---- */
:root[data-theme="forest"]{
  --bg0:#070c0a; --bg1:#0b1310; --bg2:#14201b;
  --panel:rgba(163,226,196,.055); --panel-2:rgba(163,226,196,.10);
  --line:rgba(150,214,182,.12); --line-2:rgba(150,214,182,.22);
  --tx:#eaf6ef; --tx2:#9cb9aa; --tx3:#678174;
  --cy:#5eead4; --blue:#34d399; --indigo:#2dd4bf; --violet:#a7f3d0; --pink:#f0a8c8;
  --ok:#4ade80; --warn:#fbbf24; --danger:#fb7185;
  --grad:linear-gradient(135deg,#34d399 0%,#0ea5a4 100%);
  --glow:0 8px 22px rgba(52,211,153,.26); --shadow:0 16px 44px rgba(0,10,6,.6);
  --field:rgba(150,214,182,.08); --field-2:rgba(150,214,182,.14); --track:rgba(150,214,182,.13);
  --elev:rgba(13,22,18,.92); --elev-solid:#0e1714; --card:#0e1714; --bar:rgba(9,16,13,.82);
  --scrim:rgba(2,10,7,.60); --scroll:rgba(150,214,182,.22);
  --cy-rgb:94,234,212; --blue-rgb:52,211,153; --indigo-rgb:45,212,191; --violet-rgb:167,243,208;
  --ok-rgb:74,222,128; --warn-rgb:251,191,36; --danger-rgb:251,113,133; --pink-rgb:240,168,200;
}
/* ---- 皮肤五：云雾白（iOS 浅色，明亮） ---- */
:root[data-theme="light"]{
  --bg0:#f2f2f7; --bg1:#f2f2f7; --bg2:#ffffff;
  --panel:#ffffff; --panel-2:#f2f2f7;
  --line:rgba(0,0,0,.08); --line-2:rgba(0,0,0,.16);
  --tx:#1c1c1e; --tx2:#3c3c43; --tx3:#86868b;
  --cy:#0284c7; --blue:#007aff; --indigo:#5856d6; --violet:#af52de; --pink:#ff2d55;
  --ok:#248a3d; --warn:#c9760a; --danger:#ff3b30;
  --grad:linear-gradient(135deg,#0a84ff 0%,#5856d6 100%);
  --glow:0 10px 26px rgba(10,132,255,.16); --shadow:0 14px 38px rgba(15,23,42,.12);
  --field:rgba(15,23,42,.05); --field-2:rgba(15,23,42,.08); --track:rgba(15,23,42,.08);
  --elev:rgba(255,255,255,.92); --elev-solid:#ffffff; --card:#ffffff; --bar:rgba(255,255,255,.82);
  --scrim:rgba(15,23,42,.40); --scroll:rgba(0,0,0,.18);
  --cy-rgb:2,132,199; --blue-rgb:0,122,255; --indigo-rgb:88,86,214; --violet-rgb:175,82,222;
  --ok-rgb:36,138,61; --warn-rgb:201,118,10; --danger-rgb:255,59,48; --pink-rgb:255,45,85;
}

/* ---- 块面语义化：输入 / 浮层 / 遮罩 / 栏，全站随皮肤 ---- */
.input{background:var(--field)}
.input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(var(--blue-rgb),.18)}
.pw-line,.sc-url,.seg{background:var(--field)}
.check{background:var(--field)}
.pw-strength,.upload-prog,.lp-spin{background:var(--track)}
.modal{background:var(--elev);backdrop-filter:blur(26px) saturate(180%)}
.toast{background:var(--elev);color:var(--tx);backdrop-filter:blur(22px) saturate(180%)}
.modal-root,.preview-mask{background:var(--scrim)}
.gate-card,.sheet{background:var(--elev)}
.sheet-mask{background:var(--scrim)}
.sidebar,.topbar{background:var(--bar)}
@media(max-width:760px){.tabbar{background:var(--elev-solid);-webkit-backdrop-filter:none;backdrop-filter:none;z-index:80}}
::-webkit-scrollbar-thumb{background:var(--scroll);background-clip:content-box;border:2px solid transparent}
.seg button.on{color:#fff}
.check.done{color:#fff}
.s-hero{background:var(--panel)}

/* ---- 彩色淡底统一走 RGB 通道，随功能色与皮肤自适应（含浅皮下的可读性） ---- */
.stat .ico{background:rgba(var(--cy-rgb),.12)}
.stat.accent-cy{background:linear-gradient(160deg,rgba(var(--cy-rgb),.12),rgba(var(--cy-rgb),.02))}
.stat.accent-vi{background:linear-gradient(160deg,rgba(var(--violet-rgb),.14),rgba(var(--violet-rgb),.02))}
.stat.accent-ok{background:linear-gradient(160deg,rgba(var(--ok-rgb),.13),rgba(var(--ok-rgb),.02))}
.stat.accent-warn{background:linear-gradient(160deg,rgba(var(--warn-rgb),.13),rgba(var(--warn-rgb),.02))}
.avatar,.fi-ico{background:rgba(var(--blue-rgb),.12)}
.cat-item:hover{background:rgba(var(--indigo-rgb),.09)}
.cat-item.active{background:rgba(var(--cy-rgb),.14);color:var(--cy)}
.tag{background:rgba(var(--indigo-rgb),.10)}
.tag.cy{background:rgba(var(--cy-rgb),.14);color:var(--cy);border-color:rgba(var(--cy-rgb),.28)}
.tag.ok{background:rgba(var(--ok-rgb),.14);color:var(--ok);border-color:rgba(var(--ok-rgb),.28)}
.tag.warn{background:rgba(var(--warn-rgb),.14);color:var(--warn)}
.tag.danger{background:rgba(var(--danger-rgb),.14);color:var(--danger)}
.tag.vi{background:rgba(var(--violet-rgb),.16);color:var(--violet)}
.p-chip.on{background:rgba(var(--cy-rgb),.14);color:var(--cy);border-color:rgba(var(--cy-rgb),.4)}
.note-card.on{border-color:rgba(var(--cy-rgb),.5);box-shadow:0 0 0 2px rgba(var(--cy-rgb),.12)}
.crumbs button:hover{background:rgba(var(--cy-rgb),.1)}
.dropzone.drag{border-color:var(--cy);background:rgba(var(--cy-rgb),.07);color:var(--cy)}
.sc-fav:hover{background:rgba(var(--warn-rgb),.1)}
.sc-note{background:rgba(var(--warn-rgb),.07);border-color:rgba(var(--warn-rgb),.2)}
.audit-box .a-row{border-bottom:1px dashed rgba(var(--indigo-rgb),.12)}
.audit-box .a-a{color:var(--cy)}
.debt-bar{background:rgba(var(--indigo-rgb),.14)}
.debt-bar>i{background:linear-gradient(90deg,var(--cy),var(--indigo))}
.stat.green .s-ico{background:rgba(var(--ok-rgb),.16);color:var(--ok)}
.stat.amber .s-ico{background:rgba(var(--warn-rgb),.16);color:var(--warn)}
.stat.violet .s-ico{background:rgba(var(--violet-rgb),.16);color:var(--violet)}
.stat.pink .s-ico{background:rgba(var(--pink-rgb),.16);color:var(--pink)}
.stat.blue .s-ico{background:rgba(var(--blue-rgb),.16);color:var(--blue)}
.stat.cyan .s-ico{background:rgba(var(--cy-rgb),.16);color:var(--cy)}
.debt-badge.overdue{background:rgba(var(--danger-rgb),.16);color:var(--danger)}
.debt-badge.dueToday{background:rgba(var(--warn-rgb),.20);color:var(--warn)}
.debt-badge.soon{background:rgba(var(--warn-rgb),.16);color:var(--warn)}
.debt-badge.done{background:rgba(var(--ok-rgb),.16);color:var(--ok)}
.debt-badge.normal,.debt-badge.awaiting{background:rgba(var(--indigo-rgb),.12);color:var(--tx2)}
.debt-card.overdue{border-color:rgba(var(--danger-rgb),.5);box-shadow:0 0 0 1px rgba(var(--danger-rgb),.15)}
.pay-row .amt{color:var(--ok)}
.done-clear{color:var(--danger)}
.calc-apr .real{color:var(--danger)}
.dh-card.month{background:linear-gradient(135deg,rgba(var(--pink-rgb),.16),rgba(var(--indigo-rgb),.14));border-color:rgba(var(--pink-rgb),.3)}
.dh-card.total{background:linear-gradient(135deg,rgba(var(--cy-rgb),.14),rgba(var(--ok-rgb),.12));border-color:rgba(var(--cy-rgb),.28)}
.dh-card.month .dh-amount{color:var(--pink)}
.dh-card.total .dh-amount{color:var(--cy)}
.lock-strip{color:var(--danger);background:rgba(var(--danger-rgb),.12);border-color:rgba(var(--danger-rgb),.22)}
.lock-strip:active{background:rgba(var(--danger-rgb),.20)}
.lock-strip .ls-ico{background:rgba(var(--danger-rgb),.18);color:var(--danger)}
.nav-item.active{background:rgba(var(--blue-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--blue-rgb),.22)}
::selection{background:rgba(var(--blue-rgb),.28)}

/* ---- 云雾白（浅色）专属反转与微调 ---- */
:root[data-theme="light"] .s-hero .big{color:var(--tx);-webkit-text-fill-color:var(--tx)}
:root[data-theme="light"] .nav-item.active{color:var(--blue)}
:root[data-theme="light"] .bg-glow{background:radial-gradient(760px 440px at 50% -12%,rgba(0,122,255,.06),transparent 64%)}
:root[data-theme="light"] .card{border-color:rgba(0,0,0,.06)}
:root[data-theme="light"] .modal,:root[data-theme="light"] .toast,:root[data-theme="light"] .sheet{border-color:rgba(0,0,0,.06)}
:root[data-theme="light"] .sheet{box-shadow:0 -18px 50px rgba(15,23,42,.18)}
:root[data-theme="light"] .gate-card::before{opacity:.55}
:root[data-theme="light"] .tile-icon{box-shadow:0 6px 14px -8px rgba(15,23,42,.40),inset 0 1px 0 rgba(255,255,255,.28)}
:root[data-theme="light"] .ai-orb{box-shadow:0 0 50px rgba(0,122,255,.28)}

/* ---- 「全部功能」面板：头部横条可点 + 右上角 ×，三种方式都能收起 ---- */
.sheet-head{position:relative;padding-top:2px}
button.sheet-grab{display:block;position:relative;width:104px;height:22px;margin:0 auto 10px;padding:0;
  background:transparent;border:0;cursor:pointer}
button.sheet-grab::after{content:"";position:absolute;left:50%;top:8px;transform:translateX(-50%);
  width:40px;height:5px;border-radius:5px;background:var(--line-2);transition:background .15s}
button.sheet-grab:active::after{background:var(--tx3)}
.sheet-close{position:absolute;right:6px;top:-2px;width:32px;height:32px;border-radius:50%;
  background:var(--field);color:var(--tx2);display:flex;align-items:center;justify-content:center;
  border:0;cursor:pointer;transition:background .15s,color .15s,transform .12s}
.sheet-close svg{width:17px;height:17px}
.sheet-close:hover{background:var(--field-2);color:var(--tx)}
.sheet-close:active{transform:scale(.9)}

/* ---- 设置：主题皮肤选择器 ---- */
.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px}
.theme-sw{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:4px 2px;
  background:none;border:0;cursor:pointer;color:var(--tx2)}
.ts-preview{display:block;width:100%;height:92px;border-radius:16px;border:2px solid var(--line);overflow:hidden;
  position:relative;transition:transform .15s,border-color .15s,box-shadow .15s}
.theme-sw:active .ts-preview{transform:scale(.96)}
.ts-preview .ts-bar{position:absolute;left:10px;right:10px;top:12px;height:13px;border-radius:7px}
.ts-preview .ts-card{position:absolute;left:10px;top:33px;width:40px;height:26px;border-radius:7px}
.ts-preview .ts-dot{position:absolute;left:10px;top:66px;width:14px;height:14px;border-radius:50%}
.ts-preview[data-tp="midnight"]{background:linear-gradient(160deg,#2c2c2e,#000)}
.ts-preview[data-tp="ocean"]{background:linear-gradient(160deg,#16294a,#060d19)}
.ts-preview[data-tp="techblue"]{background:linear-gradient(160deg,#1a2436,#0b0e14)}
.ts-preview[data-tp="forest"]{background:linear-gradient(160deg,#1d2d25,#070c0a)}
.ts-preview[data-tp="light"]{background:linear-gradient(160deg,#ffffff,#d9dce2)}
.ts-preview[data-tp="midnight"] .ts-bar{background:#0a84ff}
.ts-preview[data-tp="ocean"] .ts-bar{background:#22d3ee}
.ts-preview[data-tp="techblue"] .ts-bar{background:linear-gradient(90deg,#8ec5ff,#3b82f6)}
.ts-preview[data-tp="forest"] .ts-bar{background:#34d399}
.ts-preview[data-tp="light"] .ts-bar{background:#0a84ff}
.ts-preview[data-tp="midnight"] .ts-card,.ts-preview[data-tp="midnight"] .ts-dot{background:rgba(255,255,255,.16)}
.ts-preview[data-tp="ocean"] .ts-card,.ts-preview[data-tp="ocean"] .ts-dot{background:rgba(160,200,255,.18)}
.ts-preview[data-tp="techblue"] .ts-card{background:rgba(255,255,255,.10)}
.ts-preview[data-tp="techblue"] .ts-dot{background:#3b82f6}
.ts-preview[data-tp="forest"] .ts-card,.ts-preview[data-tp="forest"] .ts-dot{background:rgba(160,230,190,.18)}
.ts-preview[data-tp="light"] .ts-card,.ts-preview[data-tp="light"] .ts-dot{background:rgba(0,0,0,.10)}
.ts-name{font-size:12px;font-weight:600;color:var(--tx)}
.theme-sw.on .ts-name{color:var(--blue)}
.ts-check{position:absolute;top:6px;right:6px;width:20px;height:20px;border-radius:50%;
  background:var(--blue);color:#fff;display:none;align-items:center;justify-content:center;
  box-shadow:0 3px 8px -2px rgba(var(--blue-rgb),.6)}
.ts-check svg{width:12px;height:12px}
.theme-sw.on .ts-check{display:flex}
.theme-sw.on .ts-preview{border-color:var(--blue);box-shadow:0 0 0 3px rgba(var(--blue-rgb),.20)}
@media(max-width:560px){.ts-preview{height:82px}.theme-grid{gap:9px}.ts-name{font-size:11px}}

/* ---- v5 全站质感精修（克制，不改布局） ---- */
.card{border-radius:18px}
.row-item{border-radius:14px;transition:background .15s,border-color .15s,transform .1s}
.row-item:active{transform:scale(.997)}
.sys-card{border-radius:18px}
.sys-card:active{transform:scale(.997)}
.file-cell:active{transform:scale(.97)}
.debt-card{border-radius:16px}
.btn{transition:transform .12s,box-shadow .15s,background .15s,border-color .15s,opacity .15s}
.btn:active{transform:scale(.975)}
.btn.ghost:active{background:var(--field-2)}
.input{transition:border-color .15s,box-shadow .15s,background .15s}
.modal{border-radius:22px;animation:modalIn .22s cubic-bezier(.22,.61,.36,1)}
.modal-root{animation:fadeIn .18s ease}
@keyframes modalIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.sheet-mask{transition:opacity .25s}
.tag,.p-chip{font-weight:600}
.empty .e-ico{color:var(--tx3)}

/* ================= v6 ================= */
/* —— 图标尺寸兜底：业务容器里的裸 svg 一律给合理尺寸，根治巨型图标 —— */
.cat-item svg{width:18px;height:18px;flex:none}
.dh-label svg{width:15px;height:15px;flex:none}
.lock-badge svg{width:15px;height:15px;flex:none}
.pay-row svg{width:14px;height:14px;flex:none}
.debt-ico svg{width:18px;height:18px;flex:none}
.dropzone .dz-ico{display:flex;justify-content:center;margin-bottom:6px}
.dropzone .dz-ico svg{width:46px;height:46px;color:var(--cy);opacity:.85;transition:opacity .2s,transform .2s}
.dropzone.drag .dz-ico svg{opacity:1;transform:translateY(-3px)}

/* —— 高科技登录 / 解锁页 —— */
.bg-glow{animation:glowDrift 26s ease-in-out infinite}
.gate-card{width:428px;padding:40px 36px 30px;background:var(--elev-solid);
  border:1px solid var(--line);border-radius:26px;
  box-shadow:0 26px 70px -20px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.06);
  animation:gateIn .6s cubic-bezier(.22,.61,.36,1) both}
.gate-card::before{left:20%;width:60%;height:2px;
  background:linear-gradient(90deg,transparent,var(--cy) 45%,var(--blue) 55%,transparent);
  animation:gateScan 3.6s ease-in-out infinite}
.gate-logo{width:68px;height:68px;margin:2px auto 16px;animation:logoFloat 5s ease-in-out infinite;
  filter:drop-shadow(0 10px 26px rgba(10,132,255,.45))}
.gate h1{font-size:25px;letter-spacing:3px;margin-top:2px}
.gate .sub{letter-spacing:5px;margin-bottom:28px}
.gate .input{padding:14px 15px;font-size:15px;border-radius:13px;background:var(--field)}
.gate .input:focus{box-shadow:0 0 0 4px rgba(var(--blue-rgb),.15),0 0 24px -8px rgba(var(--blue-rgb),.55)}
.gate .btn.block{padding:15px;border-radius:13px;font-size:15px;letter-spacing:2px;margin-top:6px;
  position:relative;overflow:hidden}
.gate .btn.block::after{content:"";position:absolute;top:0;left:-60%;width:42%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);
  transform:skewX(-20deg);animation:btnSheen 4s ease-in-out infinite}
.gate-safe{display:flex;align-items:center;justify-content:center;gap:7px;margin:18px auto 2px;
  padding:7px 15px;border-radius:999px;background:var(--field);border:1px solid var(--line);
  color:var(--tx2);font-size:11.5px;letter-spacing:.5px;width:fit-content}
.gate-safe svg{width:14px;height:14px;color:var(--ok);flex:none}
@keyframes gateIn{from{opacity:0;transform:translateY(22px) scale(.97)}to{opacity:1;transform:none}}
@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes gateScan{0%,100%{opacity:.25;transform:translateX(-34%)}50%{opacity:1;transform:translateX(34%)}}
@keyframes btnSheen{0%,55%{left:-60%}100%{left:132%}}
@keyframes glowDrift{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(2%,-2%,0) scale(1.06)}}
:root[data-theme="light"] .gate-card{box-shadow:0 28px 70px -22px rgba(20,40,80,.28),inset 0 1px 0 rgba(255,255,255,.85)}
:root[data-theme="light"] .gate .input:focus{box-shadow:0 0 0 4px rgba(0,122,255,.12)}

/* —— 功能分区小标题（侧栏 + 更多面板）—— */
.nav-glabel{font-size:10.5px;letter-spacing:2px;color:var(--tx3);padding:15px 12px 5px;font-weight:600;opacity:.85}
.nav-glabel:first-child{padding-top:2px}
.nav-group{display:flex;flex-direction:column;gap:4px}
.more-glabel{font-size:11.5px;letter-spacing:2px;color:var(--tx3);font-weight:700;margin:17px 4px 10px;
  display:flex;align-items:center;gap:9px}
.more-glabel::before,.more-glabel::after{content:"";flex:1;height:1px;background:var(--line)}
.more-glabel:first-of-type{margin-top:6px}

/* —— 系统导航：清爽列表（替代大卡片）—— */
.portal-list{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-content:start;min-width:0}
@media (min-width:1080px){.portal-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}}
.sys-row{background:var(--elev);border:1px solid var(--line);border-radius:15px;padding:12px 14px;min-width:0;max-width:100%;
  transition:transform .14s,border-color .14s,box-shadow .14s}
.sys-row:hover{border-color:rgba(var(--blue-rgb),.35);box-shadow:0 12px 32px -18px rgba(0,0,0,.5);transform:translateY(-1px)}
.sr-head{display:flex;align-items:center;gap:11px;min-width:0}
.sr-fav{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--tx3);flex:none}
.sr-fav svg{width:17px;height:17px}
.sr-fav.on{color:var(--warn)}
.sr-fav:hover{background:var(--field-2);color:var(--warn)}
.sr-avatar{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:17px;flex:none}
.sr-id{flex:1;min-width:0}
.sr-name{font-size:14.5px;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:8px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-name .tag{font-size:10px;font-weight:600;padding:2px 7px;border-radius:6px;background:var(--field-2);
  color:var(--tx2);border:1px solid var(--line);flex:none}
.has-pw{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:7px;flex:0 0 auto;
  color:#fff;background:linear-gradient(135deg,#fbbf24,#f59e0b);border:1px solid rgba(217,119,6,.55);
  box-shadow:0 3px 9px -3px rgba(245,158,11,.85),inset 0 1px 0 rgba(255,255,255,.4)}
.has-pw svg{width:11.5px;height:11.5px;stroke-width:2}
.has-pw.sm{width:17px;height:17px;border-radius:6px;margin-left:2px}
.has-pw.sm svg{width:10px;height:10px}
.sr-url{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--tx3);font-family:var(--mono);
  margin-top:3px;white-space:nowrap;overflow:hidden}
.sr-url svg{width:12.5px;height:12.5px;flex:none}
.sr-url span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-url.none{font-family:var(--font);font-style:italic}
.sr-open{flex:none;padding:8px 14px}
.sr-cred{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}
.sr-cred .icon-btn{width:30px;height:30px;border-radius:8px}
.sr-cred .icon-btn svg{width:15px;height:15px}
.src-k{font-size:11px;color:var(--tx3);margin-left:2px}
.src-v{font-size:12.5px;color:var(--tx);font-family:var(--mono);max-width:180px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.src-v.empty{color:var(--tx3);font-family:var(--font);font-style:italic;font-size:11.5px;max-width:none}
.src-sep{width:1px;height:16px;background:var(--line);margin:0 6px}
.sr-spacer{flex:1}
.sr-note{display:flex;gap:7px;align-items:flex-start;margin-top:9px;font-size:11.5px;color:var(--tx3);
  line-height:1.6;background:var(--field);border-radius:9px;padding:8px 10px}
.sr-note svg{width:14px;height:14px;flex:none;margin-top:1px}

/* —— PC 超宽屏：内容居中限宽，避免右侧大片失衡留白 —— */
@media (min-width:1560px){
  .vault-grid,.ledger-wrap,.notes-grid,.settings-list,.portal-list{max-width:1380px;margin-inline:auto}
}

/* —— 尊重系统“减少动态效果” —— */
@media (prefers-reduced-motion:reduce){
  .bg-glow,.gate-logo,.gate-card::before,.gate .btn.block::after{animation:none}
}

/* ============================================================
   v7：仪表盘粘连修复 / 菜单拖拽 / 常用入口 / 记事本富文本 / 图片查看器
   ============================================================ */

/* ---- 仪表盘：统计卡真正成网格 + 纵向节奏，根治上下粘连 ---- */
.dash{display:flex;flex-direction:column;gap:16px}
.stat-grid{display:grid;gap:14px}
.stat-grid.s4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1200px){.stat-grid.s4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.stat-grid.s4{grid-template-columns:repeat(2,1fr);gap:10px}.dash{gap:12px}}
@media(min-width:1560px){.dash{max-width:1380;margin-inline:auto}}
/* 浅色皮肤：白卡之间补柔和描边与阴影，消除“白叠白糊成一片” */
:root[data-theme="light"] .stat{background:#fff;border-color:rgba(15,40,80,.08);box-shadow:0 10px 26px -18px rgba(20,40,80,.4)}
:root[data-theme="light"] .q-item,
:root[data-theme="light"] .note-tile,
:root[data-theme="light"] .note-row{box-shadow:0 8px 22px -16px rgba(20,40,80,.35)}

/* ---- 通用拖拽手柄 ---- */
.nav-item{position:relative}
.grip{display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:var(--tx3);
  opacity:0;cursor:grab;touch-action:none;flex:none;transition:opacity .15s,background .15s}
.grip svg{width:16px;height:16px}
.grip:active{cursor:grabbing}
.nav-item:hover .grip{opacity:.75}
.nav-item .grip{position:static;transform:none;width:18px;height:24px;margin-left:auto;flex:none;opacity:.3}
.nav-item:hover .grip{opacity:.85}
.more-item .grip{position:absolute;left:2px;top:-1px;width:20px;height:18px}
.more-item:hover .grip{opacity:.75}
@media(hover:none){.grip{opacity:.38}}
body.is-dragging{user-select:none;-webkit-user-select:none;cursor:grabbing}
body.is-dragging *{cursor:grabbing !important}
.sort-src{opacity:.4;transform:scale(.97);border-style:dashed !important}
.sort-src .grip{opacity:1;color:var(--cy)}

/* ---- 主页：常用入口 ---- */
.quick-sec{display:flex;flex-direction:column;gap:12px}
.quick-head{display:flex;align-items:center;justify-content:space-between}
.quick-tip{font-size:11px;margin-top:-2px;line-height:1.5}
.q-item{position:relative}
.q-grip{position:absolute;left:1px;top:1px;width:21px;height:21px;color:var(--cy);opacity:.9;z-index:3;
  touch-action:none;cursor:grab;display:flex}
.q-grip svg{width:15px;height:15px}
.q-x{position:absolute;right:-5px;top:-5px;width:20px;height:20px;border-radius:50%;background:var(--danger);color:#fff;
  display:flex;align-items:center;justify-content:center;z-index:3;box-shadow:0 3px 9px rgba(0,0,0,.35)}
.q-x svg{width:11px;height:11px}
.q-add{border-style:dashed !important;color:var(--tx3);background:transparent}
.q-add .tile-icon{background:var(--field);border:1.5px dashed var(--line-2)}
.q-site .q-avatar{width:46px;height:46px;border-radius:15px;display:flex;align-items:center;justify-content:center;
  font-size:21px;font-weight:800}
/* 添加候选弹层 */
.pick-mask{position:fixed;inset:0;z-index:90;background:var(--scrim);backdrop-filter:blur(4px);
  display:flex;align-items:flex-end;justify-content:center;animation:pickFade .2s}
.pick-sheet{width:100%;max-width:520px;max-height:72vh;display:flex;flex-direction:column;
  background:var(--elev-solid);border:1px solid var(--line-2);border-radius:22px 22px 0 0;
  padding:10px 16px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -22px 60px rgba(0,0,0,.5);
  animation:pickUp .32s cubic-bezier(.22,.61,.36,1)}
@keyframes pickFade{from{opacity:0}to{opacity:1}}
@keyframes pickUp{from{transform:translateY(100%)}to{transform:none}}
.pick-head{display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:700;padding:6px 4px 12px}
.pick-list{overflow-y:auto;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding-bottom:6px}
.pick-row{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:13px;background:var(--panel);
  border:1px solid var(--line);font-size:13px;color:var(--tx);text-align:left}
.pick-row:active{background:var(--panel-2)}
.pick-row .tile-icon{width:36px;height:36px;border-radius:11px;flex:none}
.pick-row .tile-icon svg{width:19px;height:19px}
@media(min-width:760px){.pick-mask{align-items:center}.pick-sheet{border-radius:22px;max-height:70vh}}

/* ---- 记事本：双栏 + 卡片/列表 ---- */
.notes-grid{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:stretch}
.notes-pane{padding:14px;display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 170px)}
.np-head{display:flex;gap:9px;align-items:center}
.note-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.nchip{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:999px;font-size:12px;
  color:var(--tx2);background:var(--field);border:1px solid var(--line)}
.nchip i{width:9px;height:9px;border-radius:50%}
.nchip.on{background:rgba(var(--blue-rgb),.18);border-color:rgba(var(--blue-rgb),.5);color:var(--tx)}
.note-list{overflow-y:auto;min-height:0;flex:1;padding-right:2px}
.note-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:11px;align-content:start}
.note-tile{position:relative;display:block;text-align:left;width:100%;background:var(--panel);border:1px solid var(--line);
  border-radius:14px;padding:13px 13px 11px 16px;overflow:hidden;transition:transform .14s,border-color .14s,box-shadow .14s}
.note-tile:hover{border-color:var(--line-2);transform:translateY(-1px)}
.note-tile.on{border-color:rgba(var(--blue-rgb),.55);box-shadow:0 0 0 1px rgba(var(--blue-rgb),.3)}
.nt-bar{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--nc)}
.nt-pin{position:absolute;right:9px;top:10px;color:var(--warn);display:flex}
.nt-pin svg{width:13px;height:13px}
.nt-title{font-size:13.5px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:18px}
.nt-sum{font-size:12px;color:var(--tx2);line-height:1.55;margin-top:5px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.nt-foot{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:10.5px;color:var(--tx3)}
.nt-tag{background:var(--field);color:var(--nc);font-weight:600;padding:1px 9px;border-radius:999px}
.note-rows{display:flex;flex-direction:column;gap:7px}
.note-row{position:relative;display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:11px 13px;overflow:hidden;
  transition:border-color .14s,background .14s}
.note-row:hover{background:var(--panel-2)}
.note-row.on{border-color:rgba(var(--blue-rgb),.55)}
.nr-dot{width:9px;height:9px;border-radius:50%;flex:none}
.nr-pin{color:var(--warn);display:flex;flex:none}.nr-pin svg{width:13px;height:13px}
.nr-title{font-size:13px;font-weight:700;color:var(--tx);white-space:nowrap;max-width:150px;overflow:hidden;text-overflow:ellipsis;flex:none}
.nr-sum{flex:1;min-width:0;font-size:12px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nr-time{font-size:10.5px;color:var(--tx3);flex:none}

/* ---- 记事本：富文本编辑器 ---- */
#nEditor{min-width:0}
.note-editor{position:relative;display:flex;flex-direction:column;height:calc(100vh - 170px);min-height:0;padding:0;overflow:hidden}
.note-empty{align-items:center;justify-content:center}
.ne-top{display:flex;align-items:center;gap:7px;padding:13px 15px 5px}
.ne-back{display:none}
.ne-title{flex:1;min-width:0;font-size:18px;font-weight:800;letter-spacing:.3px;background:transparent;border:none;outline:none;color:var(--tx)}
#neColorBtn{position:relative}
.ne-color-dot{position:absolute;right:0;bottom:0;width:9px;height:9px;border-radius:50%;border:1.5px solid var(--elev-solid)}
.ne-meta{display:flex;align-items:center;gap:12px;padding:0 16px 8px;font-size:11px}
.ne-taglabel{display:inline-flex;align-items:center;gap:5px;color:var(--tx2)}
.ne-taglabel i{width:8px;height:8px;border-radius:50%;display:inline-block}
.rtb{display:flex;align-items:center;gap:2px;overflow-x:auto;padding:6px 11px;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);background:var(--field);scrollbar-width:none}
.rtb::-webkit-scrollbar{display:none}
.rtb-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:32px;border-radius:9px;
  color:var(--tx2);font-size:15px;font-style:normal}
.rtb-btn:hover{background:var(--field-2);color:var(--tx)}
.rtb-btn:active{background:rgba(var(--blue-rgb),.22)}
.rtb-btn svg{width:18px;height:18px}
.rtb-sep{flex:none;width:1px;height:18px;background:var(--line-2);margin:0 5px}
.rtb-pop{position:absolute;z-index:20;top:116px;right:16px;display:flex;flex-wrap:wrap;gap:6px;width:224px;
  padding:11px;border-radius:14px;background:var(--elev-solid);border:1px solid var(--line-2);box-shadow:var(--shadow)}
.tag-pop{width:250px;flex-direction:column;flex-wrap:nowrap}
.pop-label{font-size:11px;color:var(--tx3);letter-spacing:1px}
.pop-colors{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px}
.rtb-swatch{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  background:var(--field);border:1px solid var(--line)}
.rtb-swatch:hover{border-color:var(--line-2)}
.sw-a{font-size:17px;font-weight:800}.sw-default{font-size:16px;font-weight:700;color:var(--tx)}
.sw-none{width:12px;height:12px;border-radius:50%;border:2px dashed var(--tx3)}
.sw-dot{width:16px;height:16px;border-radius:50%;display:block}
.tag-pop .input{margin-top:7px;padding:9px 11px;font-size:13px}
.ne-body{flex:1;min-height:0;overflow-y:auto;padding:16px 18px 44px;font-size:15px;line-height:1.85;outline:none;color:var(--tx)}
.ne-body:empty::before{content:attr(data-placeholder);color:var(--tx3)}
.ne-body h3{font-size:17px;margin:12px 0 4px}
.ne-body ul,.ne-body ol{padding-left:24px;margin:6px 0}
.ne-body a{color:var(--blue)}
.ne-body img{max-width:100%;border-radius:10px}

/* ---- 记事本：手机单栏 + 编辑器全屏 ---- */
@media(max-width:860px){
  .notes-grid{grid-template-columns:1fr}
  .notes-pane{max-height:none}
  #nEditor{display:none}
  .notes-grid.editing #nEditor{display:block;position:fixed;inset:0;z-index:60;background:var(--bg1)}
  .notes-grid.editing .note-editor{height:100%;border-radius:0;border:none}
  .note-editor{height:100%}
  /* 进入编辑：隐藏全局顶栏与底部 Tab，由记事本自带顶栏 + 编辑工具栏独占（仿华为备忘录） */
  body.note-editing .topbar{display:none!important}
  body.note-editing #tabbar{display:none!important}
  .ne-back{display:inline-flex}
  .note-cards{grid-template-columns:minmax(0,1fr)}
  .notes-grid,.notes-pane,.note-list{min-width:0;max-width:100%;overflow-x:hidden}
  .note-tile,.note-row{min-width:0;max-width:100%}
  .note-tile .nt-title,.note-tile .nt-sum,.note-row .nr-title,.note-row .nr-sum{
    max-width:100%;min-width:0;overflow:hidden;white-space:normal;
    overflow-wrap:anywhere;word-break:break-all;
  }
  .nr-title{max-width:none}
  .rtb-pop{top:104px;right:10px;left:10px;width:auto}
}

/* ---- 个人网盘：图片查看器 lightbox ---- */
.lb{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.96);display:flex;flex-direction:column;animation:pickFade .18s}
.lb-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;color:#f2f2f7;
  background:linear-gradient(180deg,rgba(0,0,0,.72),transparent);z-index:2}
.lb-name{flex:1;min-width:0;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-tools{display:flex;align-items:center;gap:5px}
.lb-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;
  color:#f2f2f7;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);text-decoration:none;flex:none}
.lb-btn:hover{background:rgba(255,255,255,.22)}
.lb-btn svg{width:19px;height:19px}
.lb-scale{font-size:12px;color:#d1d1d6;min-width:48px;text-align:center;flex:none}
.lb-stage{flex:1;min-height:0;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;touch-action:none}
.lb-stage img{max-width:100%;max-height:100%;transform-origin:center center;user-select:none;-webkit-user-drag:none;touch-action:none;
  will-change:transform;cursor:grab}
@media(max-width:760px){
  .lb-bar{padding:10px 12px;gap:7px}
  .lb-btn{width:35px;height:35px;border-radius:10px}
  .lb-name{font-size:12.5px}
}

/* ===== v8 首页：工作协调中枢（弱化财务、无金额 hero） ===== */
.hub{display:flex;flex-direction:column;gap:15px}
.hub-hello{padding:18px 20px;display:flex;flex-direction:column;gap:11px;border-radius:18px;
  background:linear-gradient(135deg,rgba(100,210,255,.10),rgba(94,92,230,.10)),var(--panel);border:1px solid var(--line)}
.hh-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}
.hh-greet{font-size:21px;font-weight:700;letter-spacing:.3px}
.hh-date{font-size:13px;color:var(--tx3);margin-top:3px}
.hh-sum{font-size:13px;color:var(--tx2);text-align:right;max-width:56%;line-height:1.5}
.hh-sec{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tx3)}
.hh-sec svg{width:13px;height:13px;flex:none}
.focus-row{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:none}
.focus-row::-webkit-scrollbar{display:none}
.fchip{display:inline-flex;align-items:center;gap:6px;flex:none;padding:7px 13px;border-radius:999px;
  font-size:12.5px;color:var(--tx2);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;font-family:inherit}
.fchip svg{width:15px;height:15px;flex:none}
.fchip.danger{color:var(--danger);background:rgba(255,69,58,.12);border-color:rgba(255,69,58,.32)}
.fchip.warn{color:var(--warn);background:rgba(255,159,10,.12);border-color:rgba(255,159,10,.32)}
.fchip.pink{color:var(--pink);background:rgba(255,107,129,.12);border-color:rgba(255,107,129,.32)}
.fchip.ok{color:var(--ok);background:rgba(48,209,88,.10);border-color:rgba(48,209,88,.28)}
.fchip.static{cursor:default}
.hub-sec-title{display:flex;align-items:baseline;gap:10px;margin:4px 2px -4px}
.hub-sec-title h2{font-size:15px;font-weight:700;letter-spacing:.5px}
.hub-sec-title .muted{font-size:12px}
.hub-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.hub-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:14px;min-width:0;
  display:flex;flex-direction:column;gap:10px;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}
.hub-card:hover{transform:translateY(-2px);border-color:var(--line-2);box-shadow:0 12px 28px rgba(0,0,0,.18)}
.hc-head{display:flex;align-items:center;gap:9px;min-width:0}
.hub-card>*{min-width:0}
.hc-ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none}
.hc-ico svg{width:18px;height:18px}
.hc-ico.amber{background:rgba(255,159,10,.16);color:#ff9f0a}
.hc-ico.pink{background:rgba(255,107,129,.16);color:var(--pink)}
.hc-ico.green{background:rgba(48,209,88,.15);color:#30d158}
.hc-ico.cyan{background:rgba(100,210,255,.15);color:#64d2ff}
.hc-name{font-size:14px;font-weight:600;white-space:nowrap;flex:none}
.hc-badge{margin-left:auto;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:var(--field);
  color:var(--tx2);font-size:12px;display:inline-flex;align-items:center;justify-content:center;font-weight:600}
.hc-badge.danger{background:rgba(255,69,58,.16);color:var(--danger)}
.hc-badge.warn{background:rgba(255,159,10,.16);color:var(--warn)}
.hc-go{color:var(--tx3);display:inline-flex}
.hc-go svg{width:16px;height:16px}
.hc-list{display:flex;flex-direction:column}
.hc-todo{display:flex;align-items:flex-start;gap:9px;padding:7px 0;border-top:1px solid var(--line)}
.hc-todo:first-child{border-top:none;padding-top:2px}
.hc-check{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-2);background:transparent;
  display:grid;place-items:center;flex:none;margin-top:1px;color:transparent;cursor:pointer;transition:all .12s}
.hc-check svg{width:12px;height:12px}
.hc-check:hover{border-color:var(--ok);color:var(--ok)}
.hc-todo-t{font-size:13px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hc-todo-d{font-size:11px;color:var(--tx3);margin-top:2px}
.hc-line{display:flex;align-items:center;justify-content:space-between;gap:10px}
.hc-line-t{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hc-line.hot .hc-line-t{color:var(--danger)}
.hc-line-r{text-align:right;flex:none}
.hc-amt{font-size:16px;font-weight:700;white-space:nowrap}
.hc-line-s{font-size:11px;color:var(--tx3)}
.hc-sub2{font-size:11.5px;color:var(--tx3);line-height:1.5}
.hc-note-t{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-note-s{font-size:12px;color:var(--tx3);margin-top:4px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hc-empty{display:flex;align-items:center;gap:8px;color:var(--tx3);font-size:12.5px;padding:4px 0;line-height:1.5}
.hc-empty svg{width:16px;height:16px;flex:none}
.hc-more{align-self:stretch;margin-top:2px;padding:7px 8px;border-radius:9px;border:1px dashed var(--line-2);
  background:transparent;color:var(--tx2);font-size:12px;cursor:pointer;transition:background .15s,color .15s}
.hc-more:hover{background:var(--chip);color:var(--accent)}
@media(min-width:1100px){.hub-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}}
@media(max-width:560px){
  .hub-hello{padding:15px 16px;border-radius:16px}
  .hh-greet{font-size:19px}.hh-sum{font-size:12px;max-width:100%;text-align:left}
  .hh-top{flex-direction:column;gap:6px}
  .hub-grid{gap:10px}.hub-card{padding:12px;border-radius:14px}.hc-amt{font-size:15px}
}

/* ===== v8 个人网盘：备份专区 + HTML 沙箱预览 + 录音播放 ===== */
.zones{margin:2px 0 4px}
.zones-title{font-size:14px;font-weight:700;margin:0 2px 11px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.zones-title .muted{font-size:11.5px;font-weight:400;color:var(--tx3)}
.zones-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.zone-card{display:flex;align-items:center;gap:12px;text-align:left;padding:14px;border-radius:15px;font-family:inherit;
  background:var(--panel);border:1px solid var(--line);cursor:pointer;color:inherit;
  transition:transform .15s,border-color .15s,box-shadow .15s}
.zone-card:hover{transform:translateY(-2px);border-color:var(--line-2);box-shadow:0 12px 26px rgba(0,0,0,.16)}
.z-ico,.ze-ico{display:grid;place-items:center;flex:none}
.z-ico{width:42px;height:42px;border-radius:12px}
.z-ico svg{width:21px;height:21px}
.z-ico.c-ok,.ze-ico.c-ok{background:rgba(48,209,88,.15);color:#30d158}
.z-ico.c-cy,.ze-ico.c-cy{background:rgba(100,210,255,.15);color:#64d2ff}
.z-ico.c-violet,.ze-ico.c-violet{background:rgba(191,90,242,.15);color:#bf5af2}
.z-ico.c-amber,.ze-ico.c-amber{background:rgba(255,159,10,.15);color:#ff9f0a}
.z-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.z-title{font-size:14px;font-weight:700}
.z-desc{font-size:11.5px;color:var(--tx3);line-height:1.4}
.z-fmts{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.z-fmts i{font-style:normal;font-size:10px;color:var(--tx2);background:var(--field);border-radius:5px;padding:1px 6px}
.zone-card>svg{width:17px;height:17px;color:var(--tx3);flex:none}
.zone-empty{max-width:580px;margin:6px auto 0;text-align:center;padding:30px 22px}
.zone-empty .ze-ico{width:54px;height:54px;border-radius:16px;margin:0 auto 13px}
.zone-empty .ze-ico svg{width:27px;height:27px}
.zone-empty h3{font-size:15px;margin:0 0 8px}
.zone-empty p{font-size:12.5px;color:var(--tx3);line-height:1.7;margin:0 auto 15px;max-width:440px}
.pv-html-wrap{width:100%;height:100%;display:flex;flex-direction:column}
.pv-html-note{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--warn);flex:none;
  background:rgba(255,159,10,.1);border:1px solid rgba(255,159,10,.26);border-radius:9px;padding:8px 12px;margin:0 0 10px}
.pv-html-note svg{width:15px;height:15px;flex:none}
.pv-html{flex:1;min-height:0;width:100%;height:auto!important;border:0;background:#fff;border-radius:10px}
.pv-audio{display:flex;flex-direction:column;align-items:center;gap:14px;padding:30px 22px;max-width:560px;text-align:center}
.pv-audio-ico{width:74px;height:74px;border-radius:20px;display:grid;place-items:center;background:rgba(48,209,88,.13);color:#30d158}
.pv-audio-ico svg{width:36px;height:36px}
.pv-audio-name{font-size:14px;font-weight:600;word-break:break-all;line-height:1.5}
.pv-audio audio{width:100%;max-width:440px}
.pv-audio-err{font-size:12.5px;color:var(--warn);line-height:1.8}
.pv-audio-err .btn{margin-top:10px}
@media(max-width:560px){.zones-grid{grid-template-columns:1fr;gap:10px}.z-ico{width:40px;height:40px}}

/* ===== v8 浅色皮肤适配 ===== */
:root[data-theme="light"] .hub-hello,
:root[data-theme="light"] .hub-card,
:root[data-theme="light"] .zone-card{background:#fff;border-color:rgba(15,40,80,.08);box-shadow:0 10px 26px -18px rgba(20,40,80,.4)}
:root[data-theme="light"] .fchip{background:#fff}
:root[data-theme="light"] .hub-hello{background:linear-gradient(135deg,rgba(0,122,255,.05),rgba(94,92,230,.05)),#fff}
:root[data-theme="light"] .zone-empty{background:#fff}

/* ===================== v9：生日提醒 · 温馨首页 · 网盘新分区 ===================== */

/* 玫瑰色功能磁贴（生日），全局各皮肤通用 */
[data-c="rose"]{--g1:#fb7185;--g2:#f43f5e;--gs:rgba(251,113,133,.17);--gc:#fda4af}

/* 网盘「常用软件 / AI个人RAG」分区配色与分组间距 */
.z-ico.c-blue,.ze-ico.c-blue{background:rgba(var(--blue-rgb),.15);color:var(--blue)}
.z-ico.c-indigo,.ze-ico.c-indigo{background:rgba(var(--indigo-rgb),.16);color:var(--indigo)}
.zones+.zones{margin-top:20px}
.zones-ai .zone-card{border-color:rgba(var(--indigo-rgb),.28)}

/* 首页问候卡：温馨语 / 节日标签 */
.hh-line{display:flex;align-items:flex-start;gap:7px;font-size:12.5px;line-height:1.55;color:var(--tx2)}
.hh-line svg{width:15px;height:15px;flex:none;margin-top:1px;color:var(--warn)}
.hh-line.fest svg{color:var(--pink)}
.hh-festtag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;color:var(--pink);background:rgba(255,107,133,.14);border:1px solid rgba(255,107,133,.28)}
.hub-hello.is-festival{border-color:rgba(255,159,10,.35)}

/* 温馨提醒行：朋友生日（暖玫）/ 临近节日（金），与紧急事项分开，只添温暖 */
.warm-row{display:none;gap:8px;overflow-x:auto;padding:0 2px 4px;scrollbar-width:none}
.warm-row.has{display:flex}
.warm-row::-webkit-scrollbar{display:none}
.wchip{display:inline-flex;align-items:center;gap:6px;flex:none;padding:7px 13px;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:500;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--tx2)}
.wchip svg{width:15px;height:15px;flex:none}
.wchip.static{cursor:default}
.wchip.w-birth{color:#e05c86;background:rgba(251,113,133,.12);border-color:rgba(251,113,133,.30)}
.wchip.w-birth svg{color:var(--pink)}
.wchip.w-birth.today{color:#fff;background:linear-gradient(135deg,#fb7185,#f43f5e);border-color:transparent;font-weight:600;box-shadow:0 6px 16px -8px rgba(244,63,94,.6)}
.wchip.w-birth.today svg{color:#fff}
.wchip.w-fest{color:#b7791f;background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.30)}
.wchip.w-fest svg{color:var(--warn)}

/* 生日页工具条 */
.list-toolbar{display:flex;align-items:center;gap:10px;margin:2px 2px 12px}
.list-toolbar .grow{flex:1}
.title-count{font-size:12.5px;color:var(--tx3);font-weight:500}

/* 生日页：近期温馨提醒横幅 */
.bd-warm{margin:0 0 14px;padding:13px 15px;border-radius:15px;background:linear-gradient(140deg,rgba(251,113,133,.10),rgba(255,159,10,.06));border:1px solid rgba(251,113,133,.22)}
.bw-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#e05c86;margin-bottom:9px}
.bw-title svg{width:16px;height:16px}
.bw-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 10px;border-radius:11px;background:var(--card);border:1px solid var(--line);margin-bottom:7px;font-family:inherit;cursor:pointer}
.bw-item:last-child{margin-bottom:0}
.bw-item.is-today{border-color:rgba(244,63,94,.5);background:linear-gradient(135deg,rgba(251,113,133,.14),rgba(244,63,94,.06))}
.bw-ico{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;background:rgba(251,113,133,.16);color:var(--pink)}
.bw-ico svg{width:17px;height:17px}
.bw-main{flex:1;min-width:0}
.bw-t{font-size:13.5px;font-weight:600;color:var(--tx)}
.bw-d{font-size:11.5px;color:var(--tx3);margin-top:2px}
.bw-go{color:var(--tx3);flex:none}
.bw-go svg{width:16px;height:16px}

/* 生日页：朋友卡片网格 */
.bd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:12px}
.bd-card{padding:11px 12px;border-radius:15px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px;transition:transform .18s ease,box-shadow .18s ease}
.bd-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px -16px rgba(0,0,0,.35)}
.bd-top{display:flex;align-items:center;gap:10px}
.bd-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:15px;font-weight:700;flex:none}
.bd-id{flex:1;min-width:0}
.bd-name{font-size:15px;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.bd-cal{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:999px}
.bd-cal.solar{background:rgba(var(--blue-rgb),.14);color:var(--blue)}
.bd-cal.lunar{background:rgba(var(--violet-rgb),.16);color:var(--violet)}
.bd-benming{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:999px;background:rgba(255,69,58,.14);color:var(--danger)}
.bd-birth{font-size:13px;font-weight:600;color:var(--tx);white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word;line-height:1.45}
.bd-this{font-size:11px;font-weight:400;color:var(--tx3);margin-top:0;line-height:1.5}
.bd-this b{font-weight:400;color:var(--tx2)}
.bd-badge{display:inline-flex;align-items:center;align-self:flex-start;font-size:10.5px;font-weight:600;padding:2.5px 9px;border-radius:999px;white-space:nowrap;flex:0 0 auto}
.bd-badge.today{background:linear-gradient(135deg,#fb7185,#f43f5e);color:#fff}
.bd-badge.soon{background:rgba(255,159,10,.15);color:var(--warn)}
.bd-badge.far{background:rgba(var(--indigo-rgb),.14);color:var(--indigo)}
.bd-sub{font-size:11.5px;color:var(--tx3);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bd-actions{display:flex;gap:7px;margin-top:auto;padding-top:2px}
.bd-actions .btn{flex:1}
.danger-txt{color:var(--danger)}

/* 生日页空态 */
.bd-empty{padding:42px 20px;text-align:center;color:var(--tx3)}
.bd-empty .e-ico{margin-bottom:10px}
.bd-empty .e-ico svg{width:42px;height:42px;opacity:.5}
.bd-empty p{font-size:13px;margin-bottom:6px}

/* 生日表单：iOS 分段控件 / 紧凑字段 / 提醒时机胶囊 */
.bd-form{display:flex;flex-direction:column;gap:12px}
.bd-form>.lbl{margin-bottom:0}
.bd-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.segmented{display:flex;background:var(--field);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.segmented button{flex:1;padding:7px 0;text-align:center;font-size:13px;font-weight:600;border-radius:8px;color:var(--tx3);cursor:pointer;border:none;background:transparent;font-family:inherit}
.segmented button.on{background:var(--card);color:var(--tx);box-shadow:0 2px 6px rgba(0,0,0,.18)}
.bd-leads{display:flex;gap:8px;flex-wrap:wrap}
.bd-chk{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);font-size:12.5px;color:var(--tx3);cursor:pointer;user-select:none;background:var(--card)}
.bd-chk input{accent-color:var(--pink);margin:0}
.bd-chk.on{border-color:rgba(251,113,133,.4);color:var(--pink);background:rgba(251,113,133,.10)}

@media(max-width:560px){
  .bd-grid{grid-template-columns:1fr;gap:10px}
  .bd-row{grid-template-columns:1fr}
}

/* 生日关系分组：筛选胶囊 + 卡片标签 + 管理弹窗 */
.bd-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:2px 0 6px}
.bd-filter{padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--tx3);font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:.15s}
.bd-filter:hover{color:var(--tx)}
.bd-filter.on{border-color:rgba(34,211,238,.55);color:var(--cy);background:rgba(34,211,238,.12)}
.bd-filter-manage{margin-left:2px;width:32px;height:32px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--tx3);display:inline-grid;place-items:center;cursor:pointer;flex:0 0 auto}
.bd-filter-manage svg{width:16px;height:16px}
.bd-filter-manage:hover{color:var(--cy);border-color:rgba(34,211,238,.5)}
.bd-grp{font-size:10.5px;font-weight:600;line-height:1;padding:3px 8px;border-radius:999px;background:rgba(34,211,238,.14);color:var(--cy);white-space:nowrap}
.bd-filter-empty{grid-column:1/-1;padding:36px 16px;text-align:center;color:var(--tx3);font-size:13.5px;border:1px dashed var(--line);border-radius:14px;background:var(--card)}
.bd-grp-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.bd-grp-row{display:flex;gap:8px;align-items:center}
.bd-grp-row .bd-grp-in{flex:1;min-width:0}
.bd-grp-row.is-del .bd-grp-in{opacity:.45;text-decoration:line-through}
.bd-grp-add{display:flex;gap:8px;align-items:center}
.bd-grp-add .input{flex:1;min-width:0}
.bd-grp-add .btn{flex:0 0 auto}
:root[data-theme="light"] .bd-filter,
:root[data-theme="light"] .bd-filter-empty{background:#fff}

/* 记账 / 密码本分类管理弹窗（手柄拖拽 + 改名 + 删除） */
.cat-mgr-list{display:flex;flex-direction:column;gap:8px;max-height:48vh;overflow:auto}
.cat-row{display:flex;align-items:center;gap:8px;background:var(--field);border:1px solid var(--line);border-radius:10px;padding:5px 8px}
.cat-row .grip{flex:0 0 auto;display:grid;place-items:center;color:var(--tx3);cursor:grab;touch-action:none}
.cat-row .grip svg{width:16px;height:16px;pointer-events:none}
.cat-row .cat-in{flex:1;min-width:0;background:transparent;border:none;box-shadow:none;padding:5px 6px;font-size:13.5px}
.cat-row .cat-del{flex:0 0 auto}
body.is-dragging .cat-row{cursor:grabbing}
.cat-manage{margin-top:6px;padding-top:10px;border-top:1px solid var(--line);border-radius:0;color:var(--tx3);font-size:13px}
.cat-manage:hover{color:var(--cy);background:transparent}

/* 记事本标签选择 + 管理 */
.tag-pick{display:flex;flex-wrap:wrap;gap:6px;max-height:140px;overflow:auto}
.tag-opt{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--field);font-size:12.5px;color:var(--tx2);cursor:pointer}
.tag-opt i{width:9px;height:9px;border-radius:50%;display:inline-block}
.tag-opt.on{border-color:var(--cy);background:rgba(34,211,238,.12);color:var(--cy)}
.lb-color{flex:0 0 auto;width:24px;height:24px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);cursor:pointer;padding:0}
.nchip-mgr{flex:0 0 auto}

/* ===== v9 浅色皮肤适配 ===== */
:root[data-theme="light"] .wchip,
:root[data-theme="light"] .bd-card,
:root[data-theme="light"] .bw-item,
:root[data-theme="light"] .bd-chk{background:#fff}
:root[data-theme="light"] .bd-card{border-color:rgba(15,40,80,.08);box-shadow:0 10px 26px -18px rgba(20,40,80,.4)}
:root[data-theme="light"] .wchip.w-birth:not(.today){background:rgba(255,45,85,.08);color:#d6336c}
:root[data-theme="light"] .wchip.w-fest{background:rgba(201,118,10,.10);color:#9a6a08}
:root[data-theme="light"] .bd-warm{background:linear-gradient(140deg,rgba(255,45,85,.06),rgba(201,118,10,.05))}
:root[data-theme="light"] .segmented button.on{background:#fff;box-shadow:0 1px 4px rgba(20,40,80,.15)}
:root[data-theme="light"] .zones-ai .zone-card{border-color:rgba(88,86,214,.22)}

/* ============================================================
   v10  个人财务（攒零钱计划）· 待办日历（公历/农历）· 图标精细化
   ============================================================ */

/* —— 个人财务顶部分段 —— */
.fin-tabs{margin:0 0 16px;padding:5px;gap:6px;border-radius:13px}
.fin-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 10px;white-space:nowrap;border-radius:9px;color:var(--tx2);background:rgba(127,127,127,.08);transition:background .16s,box-shadow .16s,color .16s,transform .12s}
.fin-tabs button svg{width:17px;height:17px;flex:none;display:block;stroke-width:1.9}
.fin-tabs button:hover{background:var(--hover);color:var(--tx1)}
.fin-tabs button:active{transform:scale(.97)}
.fin-tabs button.on{background:linear-gradient(135deg,#34c759,#28c24f);color:#fff;box-shadow:0 4px 12px -5px rgba(40,194,79,.6)}
.fin-tabs button.on svg{stroke:#fff}

/* —— 迷你分段（列表/日历、公历/农历）与小图标钮 —— */
.seg.mini{padding:2px;border-radius:9px}
.seg.mini button{padding:6px 11px;font-size:12px;display:inline-flex;align-items:center;gap:5px}
.seg.mini button svg{width:14px;height:14px;stroke-width:1.9}
.icon-btn.sm{width:31px;height:31px;border-radius:8px}
.icon-btn.sm svg{width:16px;height:16px}

/* —— 攒零钱：汇总 hero —— */
.sv-hero{display:flex;align-items:center;justify-content:space-between;gap:14px;
  background:linear-gradient(135deg,rgba(52,199,89,.15),rgba(10,132,255,.07));
  border:1px solid rgba(52,199,89,.24)}
.sv-hero-l{min-width:0}
.sv-hero .dh-amount{color:#34c759}
.sv-tpl{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:14px}

/* —— 攒零钱：目标卡 —— */
.sv-card{margin-top:14px;padding:16px}
.sv-card.is-done{border-color:rgba(255,214,10,.5);
  background:linear-gradient(135deg,rgba(255,214,10,.10),var(--panel))}
.sv-top{display:flex;gap:16px;align-items:center}
.sv-ring-wrap{flex:none;filter:drop-shadow(0 4px 12px rgba(0,0,0,.28))}
.sv-ring{display:block}
.sv-main{flex:1;min-width:0}
.sv-name{font-size:15px;font-weight:700;display:flex;align-items:center;flex-wrap:wrap}
.sv-amounts{font-size:20px;font-weight:800;font-family:var(--mono);margin:3px 0 7px}
.sv-amounts .muted{font-size:12px;font-weight:600;font-family:var(--sans)}
.sv-bar{height:7px;border-radius:6px;background:var(--track);overflow:hidden}
.sv-bar i{display:block;height:100%;border-radius:6px;transition:width .6s cubic-bezier(.22,.61,.36,1)}
.sv-rhythm{font-size:11.5px;color:var(--tx3);margin-top:7px;line-height:1.7}
.sv-rhythm b{color:var(--tx2);font-weight:700}
.sv-done-badge{display:inline-flex;align-items:center;gap:5px;color:#ffd60a;font-weight:700;font-size:12.5px}
.sv-done-badge svg{width:14px;height:14px}
.sv-actions{display:flex;align-items:center;gap:8px;margin-top:13px;flex-wrap:wrap}
.sv-actions .spacer{flex:1}
.sv-actions .btn.sm[style*="--btn"]{background:var(--btn);border-color:transparent;color:#fff;
  box-shadow:0 6px 15px -8px var(--btn)}
.sv-colors{display:flex;gap:9px;margin-top:2px}
.sv-color{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff;
  border:2px solid transparent;transition:transform .12s}
.sv-color svg{width:15px;height:15px;stroke-width:2.6}
.sv-color.on{border-color:var(--tx);transform:scale(1.08)}
.sv-live{margin-top:11px}
.sv-live-in{background:var(--field);border:1px solid var(--line);border-radius:11px;padding:9px 12px;
  font-size:12px;color:var(--tx2);line-height:1.9}
.sv-live-in b{color:var(--cy)}
.sv-log{max-height:240px;overflow-y:auto}
.sv-log .pay-row{justify-content:space-between}
.sv-log .pay-row>span{display:flex;align-items:center;gap:6px;min-width:0}
.sv-log .pay-row svg{color:var(--ok)}

/* —— 待办日历 —— */
.cal-wrap{margin-top:2px}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.cal-nav{display:flex;align-items:center;gap:6px}
.cal-title{font-size:16px;font-weight:800;letter-spacing:.5px;min-width:118px;text-align:center;font-variant-numeric:tabular-nums}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-wd{text-align:center;font-size:11px;color:var(--tx3);padding:4px 0;font-weight:600}
.cal-cell{position:relative;min-height:62px;border:1px solid var(--line);border-radius:12px;padding:6px 6px 5px;
  background:var(--panel);display:flex;flex-direction:column;gap:2px;cursor:pointer;overflow:hidden;
  transition:border-color .12s,background .12s,transform .1s}
.cal-cell:hover{border-color:var(--line-2);background:var(--panel-2)}
.cal-cell:active{transform:scale(.97)}
.cal-cell.muted{opacity:.32;cursor:default;background:transparent}
.cal-cell.muted:hover{background:transparent;border-color:var(--line)}
.cal-cell.today{border-color:rgba(10,132,255,.6);box-shadow:inset 0 0 0 1px rgba(10,132,255,.35)}
.cal-cell.today .cal-num{color:var(--cy)}
.cal-cell.selected{border-color:var(--blue);background:rgba(10,132,255,.14);box-shadow:inset 0 0 0 1px var(--blue)}
.cal-cell.overdue{border-color:rgba(255,69,58,.38)}
.cal-num{font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
.cal-lunar{font-size:9.5px;color:var(--tx3);line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-lunar.fest{color:#ff7eb0;font-weight:700}
.cal-lunar.jieqi{color:#7ee0b0;font-weight:600}
.cal-lunar.mstart{color:var(--cy);font-weight:700}
.cal-dots{display:flex;align-items:center;gap:3px;margin-top:auto;flex-wrap:wrap}
.cal-dot{width:6px;height:6px;border-radius:50%;background:var(--tx3);display:inline-block}
.cal-dot.high{background:var(--danger)}
.cal-dot.mid{background:var(--warn)}
.cal-dot.low{background:var(--cy)}
.cal-dot.done{background:var(--ok)}
.cal-more{font-style:normal;font-size:9px;color:var(--tx3);font-weight:700;margin-left:1px}
.cal-day-panel{margin-top:14px;border-top:1px solid var(--line);padding-top:13px}
.cal-day-empty{text-align:center;font-size:12.5px;padding:20px 0}
.cal-day-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.cal-day-title{font-size:14px;font-weight:700}
.cal-day-title b{color:var(--cy)}
.cal-day-list .row-item{margin-bottom:8px}

/* —— 首页协调卡：个人财务（emerald） —— */
.hc-ico.emerald{background:rgba(52,199,89,.16);color:#34c759}

/* —— #47 图标精细化：磁贴 glyph 细微高光（不放大、不改尺寸） —— */
.tile-icon svg{filter:drop-shadow(0 1px 1px rgba(0,0,0,.22))}

/* —— v10 浅色皮肤适配 —— */
:root[data-theme="light"] .fin-tabs button.on{background:linear-gradient(135deg,#34c759,#28c24f);color:#fff;box-shadow:0 3px 10px -5px rgba(28,155,71,.55)}
:root[data-theme="light"] .sv-hero{background:linear-gradient(135deg,rgba(52,199,89,.12),rgba(0,122,255,.06));border-color:rgba(52,199,89,.26)}
:root[data-theme="light"] .sv-hero .dh-amount{color:#1c9b47}
:root[data-theme="light"] .sv-card.is-done{background:linear-gradient(135deg,rgba(214,168,15,.10),#fff)}
:root[data-theme="light"] .cal-cell{background:#fff;border-color:rgba(15,40,80,.10)}
:root[data-theme="light"] .cal-cell:hover{background:#f4f7fb}
:root[data-theme="light"] .cal-cell.muted{background:transparent;opacity:.4}
:root[data-theme="light"] .cal-lunar{color:#94a3b8}
:root[data-theme="light"] .hc-ico.emerald{background:rgba(52,199,89,.14);color:#1c9b47}
:root[data-theme="light"] .tile-icon svg{filter:drop-shadow(0 1px 1px rgba(255,255,255,.3))}

/* —— v10 移动端：月历更紧凑、攒钱 hero 竖排 —— */
@media(max-width:640px){
  .cal-cell{min-height:52px;padding:5px 4px 4px;border-radius:10px}
  .cal-num{font-size:12.5px}
  .cal-lunar{font-size:9px}
  .cal-head{gap:8px}
  .sv-top{gap:12px}
  .sv-hero{flex-direction:column;align-items:flex-start;gap:10px}
  .sv-hero .btn{width:100%}
}

/* ============================================================
   v11 通知信箱 + 个人资产
   ============================================================ */

/* —— 顶部铃铛 / 未读角标 —— */
/* 顶栏快速截图 */
.shot-wrap{position:relative;display:inline-flex;align-items:center}
.shot-menu{
  position:fixed;width:248px;z-index:140;
  padding:8px;border-radius:16px;border:1px solid rgba(var(--cy-rgb),.18);
  background:var(--elev-solid);box-shadow:0 18px 44px -16px rgba(0,0,0,.5);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
}
.shot-menu[hidden]{display:none}
.shot-menu-h{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--tx3);padding:8px 10px 6px}
.shot-mi{
  display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;
  border:none;background:transparent;color:var(--tx);padding:10px 11px;border-radius:12px;cursor:pointer;
}
.shot-mi:hover{background:rgba(var(--blue-rgb),.10)}
.shot-mi-ic{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:rgba(var(--blue-rgb),.12);color:var(--blue)}
.shot-mi-ic svg{width:18px;height:18px}
.shot-mi-t{display:flex;flex-direction:column;gap:2px;min-width:0;padding-top:1px}
.shot-mi-name{font-size:13.5px;font-weight:700}
.shot-mi-sub{font-size:11.5px;color:var(--tx3);line-height:1.4}
body.ss-ghost .bg-grid,body.ss-ghost .bg-glow,body.ss-ghost #app,body.ss-ghost #gate,
body.ss-ghost .toast-root,body.ss-ghost .modal-root,body.ss-ghost .sheet-mask{
  opacity:0!important;pointer-events:none!important;visibility:hidden!important;
}
.ss-tip{
  position:fixed;left:50%;top:18%;transform:translateX(-50%);z-index:100000;
  padding:12px 18px;border-radius:999px;font-size:13.5px;font-weight:600;color:#fff;
  background:rgba(10,20,40,.78);border:1px solid rgba(120,220,255,.35);
  box-shadow:0 16px 40px -18px rgba(0,0,0,.55);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  pointer-events:none;white-space:nowrap;max-width:92vw;overflow:hidden;text-overflow:ellipsis;
}
.ss-tip[hidden]{display:none}

/* —— 微信式截图编辑器 —— */
body.ss-editing{overflow:hidden!important}
.ss-editor{position:fixed;inset:0;z-index:150;background:#0a0c10}
.ss-stage{position:absolute;inset:0;cursor:crosshair;user-select:none;touch-action:none}
.ss-bg,.ss-layer{position:absolute;display:block;image-rendering:auto}
.ss-layer{z-index:2}
.ss-veil{position:absolute;inset:0;z-index:3;background:rgba(0,0,0,.52);pointer-events:none}
.ss-box{
  position:absolute;z-index:4;box-sizing:border-box;border:2px solid #07c160;
  box-shadow:0 0 0 1px rgba(0,0,0,.25);pointer-events:none;
}
.ss-box .ss-edge{
  position:absolute;pointer-events:auto;z-index:1;
}
.ss-box .ss-edge.n{left:8px;right:8px;top:-6px;height:12px;cursor:move}
.ss-box .ss-edge.s{left:8px;right:8px;bottom:-6px;height:12px;cursor:move}
.ss-box .ss-edge.w{top:8px;bottom:8px;left:-6px;width:12px;cursor:move}
.ss-box .ss-edge.e{top:8px;bottom:8px;right:-6px;width:12px;cursor:move}
.ss-box .ss-h{
  position:absolute;width:12px;height:12px;background:#07c160;border:2px solid #fff;border-radius:2px;
  pointer-events:auto;z-index:2;box-shadow:0 1px 4px rgba(0,0,0,.35);
}
.ss-box .ss-h.tl{left:-6px;top:-6px;cursor:nwse-resize}
.ss-box .ss-h.t{left:50%;top:-6px;margin-left:-6px;cursor:ns-resize}
.ss-box .ss-h.tr{right:-6px;top:-6px;cursor:nesw-resize}
.ss-box .ss-h.l{left:-6px;top:50%;margin-top:-6px;cursor:ew-resize}
.ss-box .ss-h.r{right:-6px;top:50%;margin-top:-6px;cursor:ew-resize}
.ss-box .ss-h.bl{left:-6px;bottom:-6px;cursor:nesw-resize}
.ss-box .ss-h.b{left:50%;bottom:-6px;margin-left:-6px;cursor:ns-resize}
.ss-box .ss-h.br{right:-6px;bottom:-6px;cursor:nwse-resize}
.ss-box .ss-h:hover{transform:scale(1.15);background:#1aad19}
.ss-size{
  position:absolute;left:0;top:-22px;padding:1px 6px;border-radius:4px;font-size:11px;
  background:rgba(0,0,0,.72);color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums;
}
.ss-bar{
  position:fixed;z-index:160;display:flex;flex-wrap:wrap;align-items:center;gap:4px;
  padding:6px 10px 6px 4px;border-radius:10px;background:#fff;color:#1a1a1a;
  box-shadow:0 8px 28px rgba(0,0,0,.28),0 0 0 1px rgba(0,0,0,.06);max-width:calc(100vw - 16px);
  cursor:default;user-select:none;touch-action:none;
}
.ss-bar.dragging{opacity:.92;box-shadow:0 14px 36px rgba(0,0,0,.38),0 0 0 1px rgba(0,0,0,.08);cursor:grabbing}
.ss-drag{
  width:28px;height:34px;border:0;border-radius:8px;background:transparent;color:inherit;opacity:.45;
  display:inline-flex;align-items:center;justify-content:center;cursor:grab;padding:0;flex:none;
}
.ss-drag:hover{opacity:.85;background:rgba(127,127,127,.12)}
.ss-drag:active,.ss-bar.dragging .ss-drag{cursor:grabbing;opacity:1}
.ss-drag svg{width:16px;height:16px}
:root[data-theme="midnight"] .ss-bar,:root[data-theme="ocean"] .ss-bar,
:root[data-theme="techblue"] .ss-bar,:root[data-theme="forest"] .ss-bar{
  background:#2c2c2e;color:#f2f2f7;box-shadow:0 8px 28px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.08);
}
.ss-bar-tools{display:inline-flex;align-items:center;gap:2px}
.ss-sep{width:1px;height:22px;background:rgba(127,127,127,.28);margin:0 4px;flex:none}
.ss-tool{
  width:34px;height:34px;border:0;border-radius:8px;background:transparent;color:inherit;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;
}
.ss-tool svg{width:18px;height:18px}
.ss-tool:hover{background:rgba(127,127,127,.14)}
.ss-tool.on{background:rgba(7,193,96,.18);color:#07c160}
.ss-tool.ok{background:#07c160;color:#fff}
.ss-tool.ok:hover{filter:brightness(1.05)}
.ss-tool.danger{color:#fa5151}
.ss-tool.danger:hover{background:rgba(250,81,81,.14)}
.ss-tool.muted{opacity:.42}
.ss-colors{display:inline-flex;gap:5px;margin-left:6px;align-items:center}
.ss-swatch{
  width:16px;height:16px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;
  background:var(--c);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);
}
.ss-swatch.on{border-color:#07c160;box-shadow:0 0 0 1px #07c160}
.ss-emoji{
  position:absolute;left:8px;bottom:calc(100% + 6px);display:flex;flex-wrap:wrap;gap:4px;
  width:220px;padding:8px;border-radius:10px;background:inherit;box-shadow:inherit;
}
.ss-emoji[hidden]{display:none}
.ss-em{width:32px;height:32px;border:0;border-radius:8px;background:transparent;font-size:18px;cursor:pointer;line-height:1}
.ss-em:hover,.ss-em.on{background:rgba(7,193,96,.16)}
.ss-pin{
  position:fixed;z-index:145;max-width:min(420px,70vw);border-radius:10px;overflow:hidden;
  box-shadow:0 16px 40px rgba(0,0,0,.45);border:2px solid #07c160;cursor:grab;touch-action:none;
}
.ss-pin:active{cursor:grabbing}
.ss-pin img{display:block;max-width:100%;height:auto;pointer-events:none}
.ss-pin-x{
  position:absolute;top:6px;right:6px;width:28px;height:28px;border:0;border-radius:50%;
  background:rgba(0,0,0,.55);color:#fff;display:grid;place-items:center;cursor:pointer;
}
.ss-pin-x svg{width:14px;height:14px}
@media(max-width:560px){
  .ss-tool{width:30px;height:30px}
  .ss-bar{padding:6px 8px;gap:2px}
  .ss-colors{display:none}
}

#bellBtn{position:relative}
.bell-badge{position:absolute;top:1px;right:1px;min-width:15px;height:15px;padding:0 3px;border-radius:9px;
  background:var(--danger);color:#fff;font-size:9.5px;font-weight:800;line-height:15px;text-align:center;
  border:2px solid var(--bar);box-sizing:content-box;pointer-events:none;letter-spacing:.2px}
.bell-badge.hot{animation:bellPulse 1.8s ease-in-out infinite}
#bellBtn.has{color:var(--tx)}
@keyframes bellPulse{0%,100%{box-shadow:0 0 0 0 rgba(var(--danger-rgb),.5)}55%{box-shadow:0 0 0 6px rgba(var(--danger-rgb),0)}}

/* —— 通知信箱 —— */
.nx-sec{position:relative;margin-bottom:16px}
.nx-sec:last-child{margin-bottom:0}
.nx-sec-h{display:flex;align-items:center;gap:8px;margin:2px 2px 10px}
.nx-sec-t{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--tx)}
.nx-sec-t svg{width:15px;height:15px}
.nx-sec-n{font-size:10.5px;font-weight:700;background:var(--field-2);color:var(--tx2);border-radius:20px;
  padding:1px 8px;min-width:20px;text-align:center}
.nx-all{position:absolute;top:-3px;right:2px}
.nx-list{display:flex;flex-direction:column;gap:8px}
.nx-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;cursor:pointer;
  background:var(--field);border:1px solid var(--line);border-radius:13px;padding:11px 13px;
  transition:background .15s,border-color .15s,transform .1s}
.nx-item:hover{background:var(--field-2)}
.nx-item:active{transform:scale(.99)}
.nx-item.nx-danger{border-color:rgba(var(--danger-rgb),.34)}
.nx-item.nx-warn{border-color:rgba(var(--warn-rgb),.3)}
.nx-ic{width:34px;height:34px;flex:none;border-radius:10px;display:flex;align-items:center;justify-content:center}
.nx-ic svg{width:18px;height:18px}
.nx-danger .nx-ic{background:rgba(var(--danger-rgb),.16);color:var(--danger)}
.nx-warn .nx-ic{background:rgba(var(--warn-rgb),.17);color:var(--warn)}
.nx-info .nx-ic{background:rgba(var(--blue-rgb),.16);color:var(--cy)}
.nx-bd .nx-ic{background:rgba(var(--pink-rgb),.17);color:var(--pink)}
.nx-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.nx-title{font-size:13.5px;font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nx-sub{font-size:12px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nx-danger .nx-sub{color:rgba(var(--danger-rgb),.92)}
.nx-warn .nx-sub{color:var(--warn)}
.nx-go{color:var(--tx3);flex:none;display:flex}
.nx-go svg{width:17px;height:17px}
.nx-ok{flex:none;font-size:12px;color:var(--tx2);background:var(--field-2);border:1px solid var(--line);
  border-radius:8px;padding:5px 11px;transition:color .15s,background .15s}
.nx-ok:hover{color:var(--tx);background:var(--panel-2)}
.nx-empty .e-ico{color:var(--ok)}

/* —— 个人资产 —— */
.as-hero{background:linear-gradient(135deg,rgba(10,132,255,.16),rgba(94,92,230,.12));
  border:1px solid rgba(var(--blue-rgb),.28)}
.as-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.as-hero-l{min-width:0}
.as-net{font-size:32px;font-weight:800;letter-spacing:.5px;margin-top:5px;color:var(--cy);
  font-variant-numeric:tabular-nums;line-height:1.1}
.as-net.neg{color:var(--danger)}
.as-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}
.as-mini>div{background:var(--field);border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  display:flex;flex-direction:column;gap:4px}
.as-mini span{font-size:11.5px;color:var(--tx2)}
.as-mini b{font-size:15.5px;font-weight:700;font-variant-numeric:tabular-nums}
.as-pos{color:var(--ok)}
.as-neg{color:var(--danger)}
.as-cats{display:flex;flex-direction:column;gap:11px}
.as-catrow{display:flex;align-items:center;gap:10px}
.as-cat-ic{width:26px;height:26px;flex:none;display:flex;align-items:center;justify-content:center}
.as-cat-ic svg{width:18px;height:18px}
.as-cat-name{font-size:13px;color:var(--tx2);width:104px;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-cat-bar{flex:1;height:7px;border-radius:6px;background:var(--track);overflow:hidden;min-width:28px}
.as-cat-bar i{display:block;height:100%;border-radius:6px;opacity:.92;transition:width .5s cubic-bezier(.22,.61,.36,1)}
.as-catrow b{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;min-width:92px;text-align:right}
.as-list{display:flex;flex-direction:column;gap:9px}
.as-item{display:flex;align-items:center;gap:11px;background:var(--field);border:1px solid var(--line);
  border-radius:13px;padding:10px 12px;transition:opacity .15s,background .15s}
.as-item:has(input:not(:checked)){opacity:.6}
.as-it-ic{width:34px;height:34px;flex:none;border-radius:10px;background:var(--field-2);
  display:flex;align-items:center;justify-content:center}
.as-it-ic svg{width:18px;height:18px}
.as-it-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.as-it-name{font-size:13.5px;font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;display:flex;align-items:center}
.as-it-sub{font-size:11.5px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-it-val{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;flex:none;color:var(--tx2)}
.as-it-val.as-pos{color:var(--tx)}
.as-switch{position:relative;flex:none;width:40px;height:23px;display:inline-block}
.as-switch input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer;z-index:2}
.as-switch i{position:absolute;inset:0;background:var(--track);border-radius:20px;transition:background .2s}
.as-switch i::after{content:"";position:absolute;top:2.5px;left:2.5px;width:18px;height:18px;border-radius:50%;background:#fff;
  box-shadow:0 2px 5px rgba(0,0,0,.3);transition:transform .2s}
.as-switch input:checked + i{background:linear-gradient(135deg,#34c759,#28c24f)}
.as-switch input:checked + i::after{transform:translateX(17px)}
.as-it-ops{display:flex;gap:2px;flex:none}

/* —— v11 浅色皮肤适配 —— */
:root[data-theme="light"] .as-hero{background:linear-gradient(135deg,rgba(0,122,255,.12),rgba(94,92,230,.08));border-color:rgba(0,122,255,.24)}
:root[data-theme="light"] .as-net{color:#0a84ff}
:root[data-theme="light"] .as-net.neg{color:#e02d3d}
:root[data-theme="light"] .nx-empty .e-ico{color:#1c9b47}

/* —— v11 移动端 —— */
@media(max-width:640px){
  .as-hero-top{flex-direction:column;align-items:flex-start;gap:10px}
  .as-hero-top .btn{width:100%}
  .as-net{font-size:28px}
  .as-mini{gap:8px}
  .as-mini b{font-size:14px}
  .as-cat-name{width:88px}
  .as-catrow b{min-width:78px}
  .as-item{gap:8px;padding:9px 10px}
  .as-it-ic{display:none}
  .as-it-val{font-size:13.5px}
  .as-switch{transform:scale(.92);transform-origin:right center}
}

/* ===== v11.1 hotfix（2026-10-06）：个人财务头部、密码本窄屏布局、空状态收紧 ===== */
.vault-list{min-height:300px}
.sec-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.sec-head .card-title{margin:0;display:flex;align-items:center;gap:7px;white-space:nowrap;flex:0 0 auto}
.sec-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.sec-actions .btn{white-space:nowrap}
@media(max-width:1080px){
  .vault-grid{display:flex;flex-direction:column;height:auto;gap:12px}
  .cat-col{max-height:none;overflow:visible;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}
  .cat-col .cat-manage{grid-column:1 / -1}
  .cat-col .cat-item{width:auto;min-width:0;flex:none;padding:10px 12px;border:0}
  .cat-col .cat-item .n{margin-left:auto}
  .vault-list{min-height:auto}
}
@media(max-width:760px){
  .sec-head .card-title{flex:1 1 auto;min-width:0}
  .sec-actions{margin-left:0;width:100%}
  .sec-actions .btn{flex:1 1 0;min-width:0;justify-content:center;padding-inline:10px}
  .empty{padding:34px 16px}
  .empty .e-ico{width:48px;height:48px;margin-bottom:10px}
}

/* ===== v12（2026-10-06）：恢复码 Recovery Kit、恢复码登录、打印 ===== */
.gate-link{display:block;width:100%;margin-top:10px;background:transparent;border:none;
  color:var(--cy);font-size:13px;padding:8px;cursor:pointer;text-align:center;border-radius:10px}
.gate-link:hover{text-decoration:underline;background:rgba(var(--cy-rgb),.06)}
.rk-textarea{width:100%;resize:vertical;line-height:1.8;font-family:var(--mono);font-size:13.5px;letter-spacing:.3px}

.rk-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:20px;background:rgba(0,0,0,.72);backdrop-filter:blur(18px) saturate(160%);overflow:auto}
.rk-card{width:100%;max-width:560px;max-height:92vh;overflow:auto;margin:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:26px 24px;box-shadow:var(--shadow)}
.rk-badge{display:inline-flex;align-items:center;gap:7px;font-size:11px;letter-spacing:2px;color:var(--cy);
  background:rgba(var(--cy-rgb),.1);border:1px solid rgba(var(--cy-rgb),.25);padding:5px 11px;border-radius:999px}
.rk-badge svg{width:14px;height:14px}
.rk-title{font-size:20px;margin:14px 0 8px;letter-spacing:.5px}
.rk-context{font-size:13px;color:var(--tx2);line-height:1.8;margin:0 0 16px}
.rk-context b{color:var(--tx)}
.rk-words{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.rk-word{display:flex;align-items:center;gap:7px;background:rgba(127,127,127,.10);
  border:1px solid var(--line);border-radius:10px;padding:8px 9px}
.rk-word .rk-n{font-size:11px;color:var(--tx3);flex:0 0 16px;width:16px;font-variant-numeric:tabular-nums}
.rk-word .rk-w{font-family:var(--mono);font-size:13.5px;font-weight:600;color:var(--tx);letter-spacing:.3px;word-break:break-all}
.rk-tools{display:flex;gap:10px;margin-bottom:14px}
.rk-tools .btn{flex:1 1 0;min-width:0}
.rk-ack{display:flex;align-items:flex-start;gap:9px;font-size:13px;color:var(--tx2);line-height:1.6;
  cursor:pointer;margin:0 0 14px}
.rk-ack input{margin-top:2px;width:16px;height:16px;flex:0 0 auto;accent-color:var(--blue)}
.rk-done{width:100%}
.rk-done:disabled{opacity:.45;cursor:not-allowed}
.rk-warn{font-size:12px;color:var(--danger);margin-top:10px;min-height:16px;text-align:center}
@media(min-width:600px){ .rk-words{grid-template-columns:repeat(4,1fr)} }
@media(max-width:480px){
  .rk-overlay{padding:12px}
  .rk-card{padding:22px 16px;border-radius:18px}
  .rk-words{gap:6px}
  .rk-word{padding:7px 7px;gap:5px}
  .rk-word .rk-w{font-size:12.5px}
  .rk-tools{flex-direction:column;gap:8px}
}

/* 恢复码打印纸（屏幕上隐藏，仅 window.print 时显示） */
.print-area{display:none}
.rk-paper{font-family:var(--sans);color:#111;padding:6px 4px}
.rk-paper h2{font-size:20px;margin:0 0 6px}
.rk-paper .rp-meta{font-size:12px;color:#333;margin:0 0 14px;line-height:1.6}
.rk-paper .rp-list{column-count:3;column-gap:18px}
.rk-paper .rp-item{break-inside:avoid;display:flex;align-items:baseline;gap:8px;
  padding:5px 0;border-bottom:1px dashed #bbb;font-size:15px}
.rk-paper .rp-item .n{color:#777;flex:0 0 20px;width:20px;font-variant-numeric:tabular-nums}
.rk-paper .rp-item .w{font-family:var(--mono);font-weight:700}
.rk-paper-warn{margin-top:16px;font-size:12px;color:#b00020;line-height:1.7}
@media print{
  body{background:#fff !important}
  body > *{visibility:hidden !important}
  .print-area{display:block !important;visibility:visible !important;position:absolute;left:0;top:0;width:100%}
  .print-area *{visibility:visible}
}

/* ===== v12.1 操作审计默认折叠（双击标题 / 点箭头展开，手机可点箭头） ===== */
.audit-head{display:flex;align-items:center;gap:8px;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.audit-head-label{display:inline-flex;align-items:center;gap:8px}
.audit-head-actions{margin-left:auto;display:inline-flex;align-items:center;gap:2px}
.audit-caret{display:inline-flex;align-items:center;justify-content:center;transition:transform .22s ease;transform:rotate(-90deg)}
.audit-head.open .audit-caret{transform:rotate(0deg)}
.audit-box[hidden],.audit-head #sAuditRefresh[hidden]{display:none !important}
.audit-card .audit-box{margin-top:6px}

/* ===== v13 本机快速解锁（人脸 / 指纹 / PIN） ===== */
.qk-hero{width:62px;height:62px;margin:6px auto 14px;border-radius:18px;display:flex;align-items:center;justify-content:center;
  color:var(--cy);background:rgba(var(--cy-rgb),.12);border:1px solid rgba(var(--cy-rgb),.28);
  box-shadow:0 12px 28px -14px rgba(var(--cy-rgb),.8)}
.qk-hero svg{width:30px;height:30px}
.qk-title{text-align:center;font-size:17px;font-weight:600;margin:0 0 18px;color:var(--tx)}
.qk-bio-btn{background:linear-gradient(135deg,var(--blue),var(--cy));color:#fff;box-shadow:0 12px 26px -14px rgba(var(--blue-rgb),.85)}
.qk-pin{letter-spacing:4px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
.qk-links{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:12px;flex-wrap:wrap}
.qk-links .gate-link{width:auto;margin-top:0;padding:4px 6px}
.gate-or{display:flex;align-items:center;gap:10px;margin:14px 0 4px;color:var(--tx3);font-size:11.5px}
.gate-or::before,.gate-or::after{content:"";flex:1;height:1px;background:var(--line)}
.qk-gate-btn{background:rgba(var(--cy-rgb),.14);color:var(--cy);border:1px solid rgba(var(--cy-rgb),.32);box-shadow:none}
.qk-gate-btn:hover{background:rgba(var(--cy-rgb),.22)}
.qk-status{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:14px;background:var(--panel-2);border:1px solid var(--line)}
.qk-status .t{font-size:14px;font-weight:600;color:var(--tx)}
.qk-status .s{font-size:12px;color:var(--tx3);line-height:1.6;margin-top:2px}
.qk-dot{width:10px;height:10px;border-radius:50%;flex:none;background:#30d158;animation:qkPulse 2.2s ease-in-out infinite}
@keyframes qkPulse{0%,100%{box-shadow:0 0 0 0 rgba(48,209,88,.35)}50%{box-shadow:0 0 0 6px rgba(48,209,88,0)}}
.qk-enroll .btn{white-space:normal}
@media (max-width:560px){ .qk-links{flex-direction:column;gap:6px} }

/* ===== AI 小助理 · 高端对话壳（流式 / 模型 / 长期记忆） ===== */
.aic{
  --aic-a:rgba(var(--cy-rgb),.55);
  --aic-b:rgba(var(--blue-rgb),.5);
  --aic-c:rgba(56,220,180,.42);
  position:absolute;inset:18px;display:flex;flex-direction:column;gap:12px;
  width:auto;height:auto;min-width:0;min-height:0;margin:0;padding:16px 18px 14px;
  border-radius:22px;border:1px solid transparent;
  background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    linear-gradient(125deg,var(--aic-a),var(--aic-b),var(--aic-c),var(--aic-a)) border-box;
  background-size:100% 100%,280% 280%;
  animation:aicBorderShift 14s ease-in-out infinite;
  -webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%);
  box-shadow:0 24px 60px -28px rgba(0,0,0,.55),0 0 40px -18px rgba(var(--cy-rgb),.28),inset 0 1px 0 rgba(255,255,255,.06);
  overflow:hidden;isolation:isolate;
}
@keyframes aicBorderShift{
  0%{background-position:0 0,0% 40%;box-shadow:0 24px 60px -28px rgba(0,0,0,.55),0 0 36px -16px rgba(var(--cy-rgb),.3),inset 0 1px 0 rgba(255,255,255,.06)}
  33%{background-position:0 0,55% 20%;box-shadow:0 24px 60px -28px rgba(0,0,0,.55),0 0 42px -14px rgba(var(--blue-rgb),.32),inset 0 1px 0 rgba(255,255,255,.06)}
  66%{background-position:0 0,85% 70%;box-shadow:0 24px 60px -28px rgba(0,0,0,.55),0 0 40px -15px rgba(56,220,180,.28),inset 0 1px 0 rgba(255,255,255,.06)}
  100%{background-position:0 0,0% 40%;box-shadow:0 24px 60px -28px rgba(0,0,0,.55),0 0 36px -16px rgba(var(--cy-rgb),.3),inset 0 1px 0 rgba(255,255,255,.06)}
}
.aic-ambient{
  position:absolute;inset:-20%;pointer-events:none;z-index:0;
  background:
    radial-gradient(42% 36% at 18% 12%,rgba(var(--cy-rgb),.32),transparent 62%),
    radial-gradient(38% 34% at 88% 18%,rgba(var(--blue-rgb),.26),transparent 60%),
    radial-gradient(44% 38% at 62% 88%,rgba(56,220,180,.18),transparent 58%),
    radial-gradient(36% 30% at 28% 72%,rgba(var(--indigo-rgb),.12),transparent 55%);
  opacity:.95;filter:saturate(1.15);
  animation:aicAurora 16s ease-in-out infinite alternate;
  transform-origin:50% 45%;
}
.aic-ambient::before{
  content:"";position:absolute;inset:18% 12%;border-radius:50%;
  background:conic-gradient(from 0deg,rgba(var(--cy-rgb),.0),rgba(var(--cy-rgb),.16),rgba(var(--blue-rgb),.12),rgba(56,220,180,.14),rgba(var(--cy-rgb),.0));
  filter:blur(42px);opacity:.55;
  animation:aicHueSpin 22s linear infinite;
}
.aic-ambient::after{
  content:"";position:absolute;inset:0;opacity:.2;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:48px 48px;mask-image:radial-gradient(ellipse at 50% 30%,#000 18%,transparent 72%);
  animation:aicGridDrift 28s linear infinite;
}
@keyframes aicAurora{
  0%{transform:translate3d(-2%,-1%,0) scale(1) rotate(0deg)}
  50%{transform:translate3d(3%,2%,0) scale(1.06) rotate(2deg)}
  100%{transform:translate3d(-1%,3%,0) scale(1.03) rotate(-1.5deg)}
}
@keyframes aicHueSpin{to{transform:rotate(360deg)}}
@keyframes aicGridDrift{to{background-position:48px 24px}}
.aic > *:not(.aic-ambient){position:relative;z-index:1}
/* 顶栏菜单要盖住消息气泡：两者同为 z-index:1 时，后绘制的消息会压住下拉菜单 */
.aic > .aic-top{z-index:6}
/* 三通道 segmented control + 克制色相 */
.aic-seg{
  position:relative;display:inline-flex;align-items:center;gap:0;margin:0 10px;flex:0 1 auto;
  padding:3px;border-radius:999px;max-width:min(100%,440px);
  background:color-mix(in srgb,var(--panel) 70%,transparent);
  border:1px solid color-mix(in srgb,var(--line) 85%,transparent);
  box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 6%,transparent);
}
.aic-seg-pill{
  position:absolute;top:3px;left:0;height:calc(100% - 6px);border-radius:999px;z-index:0;
  background:color-mix(in srgb,var(--blue) 18%,var(--panel));
  border:1px solid color-mix(in srgb,var(--blue) 35%,transparent);
  transition:left .28s cubic-bezier(.22,.9,.28,1),width .28s cubic-bezier(.22,.9,.28,1),background .25s ease,border-color .25s ease;
  pointer-events:none;box-sizing:border-box;
}
.aic[data-ch="openclaw"] .aic-seg-pill{
  background:color-mix(in srgb,#2f9e7a 20%,var(--panel));
  border-color:color-mix(in srgb,#2f9e7a 42%,transparent);
}
.aic[data-ch="cursor"] .aic-seg-pill{
  background:color-mix(in srgb,#c9853a 18%,var(--panel));
  border-color:color-mix(in srgb,#c9853a 40%,transparent);
}
.aic[data-ch="codex"] .aic-seg-pill{
  background:color-mix(in srgb,#6d5efc 18%,var(--panel));
  border-color:color-mix(in srgb,#6d5efc 40%,transparent);
}
.aic-ch{
  appearance:none;border:0;background:transparent;position:relative;z-index:1;
  color:var(--tx3);font-size:12.5px;font-weight:600;letter-spacing:.02em;
  padding:6px 14px;border-radius:999px;cursor:pointer;white-space:nowrap;
  transition:color .2s ease;
}
.aic-ch:hover{color:var(--tx)}
.aic-ch.on{color:var(--blue)}
.aic[data-ch="openclaw"] .aic-ch.on{color:#2f9e7a}
.aic[data-ch="cursor"] .aic-ch.on{color:#c9853a}
.aic[data-ch="codex"] .aic-ch.on{color:#6d5efc}
:root[data-theme="light"] .aic-seg{
  background:color-mix(in srgb,#fff 78%,var(--panel));
  box-shadow:inset 0 1px 0 #fff,0 1px 2px color-mix(in srgb,#000 4%,transparent);
}
:root[data-theme="light"] .aic-seg-pill{background:color-mix(in srgb,var(--blue) 12%,#fff)}
@media(max-width:720px){
  .aic-seg{order:3;width:100%;max-width:none;margin:6px 0 0;justify-content:stretch}
  .aic-ch{flex:1 1 0;min-width:0;padding:0 8px;font-size:12px;text-align:center;height:34px;min-height:34px;max-height:34px;line-height:34px}
}
.aic[data-ch="openclaw"] .aic-live{border-color:color-mix(in srgb,#2f9e7a 28%,var(--line))}
.aic[data-ch="openclaw"] .aic-live-dot{background:#2f9e7a}
.aic[data-ch="cursor"] .aic-live{border-color:color-mix(in srgb,#c9853a 28%,var(--line))}
.aic[data-ch="cursor"] .aic-live-dot{background:#c9853a}
.aic[data-ch="codex"] .aic-live{border-color:color-mix(in srgb,#6d5efc 28%,var(--line))}
.aic[data-ch="codex"] .aic-live-dot{background:#6d5efc}
.aic-ch-tag{
  display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;padding:2px 7px;border-radius:999px;margin-bottom:6px;
  color:var(--blue);background:color-mix(in srgb,var(--blue) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--blue) 22%,transparent);
}
.aic-ch-tag[data-ch="openclaw"]{color:#2f9e7a;background:color-mix(in srgb,#2f9e7a 12%,transparent);border-color:color-mix(in srgb,#2f9e7a 24%,transparent)}
.aic-ch-tag[data-ch="cursor"]{color:#c9853a;background:color-mix(in srgb,#c9853a 12%,transparent);border-color:color-mix(in srgb,#c9853a 24%,transparent)}
.aic-ch-tag[data-ch="codex"]{color:#6d5efc;background:color-mix(in srgb,#6d5efc 12%,transparent);border-color:color-mix(in srgb,#6d5efc 24%,transparent)}
.aic-msg.me .aic-ch-tag{align-self:flex-end}
/* 蓝气泡上的通道名：白底实色字，避免绿/橙贴在蓝底上看不见 */
.bubble.me .aic-ch-tag{
  color:#0a4ed6;background:#fff;border-color:#fff;
  box-shadow:0 1px 2px rgba(0,40,120,.18);
}
.bubble.me .aic-ch-tag[data-ch="openclaw"]{color:#087a4e;background:#fff;border-color:#fff}
.bubble.me .aic-ch-tag[data-ch="cursor"]{color:#9a5410;background:#fff;border-color:#fff}
.bubble.me .aic-ch-tag[data-ch="codex"]{color:#3f34b8;background:#fff;border-color:#fff}
.aic-suggest{
  display:flex;align-items:center;gap:10px;margin:0 16px 8px;padding:8px 12px;border-radius:12px;
  background:color-mix(in srgb,var(--panel) 88%,transparent);
  border:1px solid color-mix(in srgb,var(--line) 90%,transparent);
  animation:aicSugIn .22s ease;
}
.aic-sug-msg{flex:1;font-size:12.5px;color:var(--tx2);line-height:1.35}
.aic-sug-go{
  appearance:none;border:0;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;
  color:#fff;background:var(--blue);
}
.aic-sug-x{appearance:none;border:0;background:transparent;color:var(--tx3);font-size:16px;cursor:pointer;padding:2px 6px}
@keyframes aicSugIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.aic-switch-tip{margin:6px 0 0;font-size:12px;color:var(--tx3)}
.aic-empty[data-ch="openclaw"] .aic-eyebrow{color:#2f9e7a}
.aic-empty[data-ch="cursor"] .aic-eyebrow{color:#c9853a}
.aic-busy .aic-send{transform:scale(.96);opacity:.85}
.aic-send{transition:transform .18s ease,opacity .18s ease,background .2s ease}
.aic-live-dot{animation:aicPulse 1.4s ease-in-out infinite}
@keyframes aicPulse{0%,100%{opacity:.45;transform:scale(.9)}50%{opacity:1;transform:scale(1.08)}}
.aic-channels{display:none}
.aic-top{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex:0 0 auto;
  padding:8px 10px 8px 8px;border-radius:16px;
  background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);
}
:root[data-theme="light"] .aic{
  --aic-a:rgba(var(--blue-rgb),.45);
  --aic-b:rgba(var(--cy-rgb),.4);
  --aic-c:rgba(14,165,160,.35);
  background:
    linear-gradient(#fff,#f7f9fc) padding-box,
    linear-gradient(125deg,var(--aic-a),var(--aic-b),var(--aic-c),var(--aic-a)) border-box;
  background-size:100% 100%,280% 280%;
  box-shadow:0 20px 50px -28px rgba(20,40,80,.2),0 0 28px -14px rgba(var(--blue-rgb),.22),inset 0 1px 0 rgba(255,255,255,.9);
}
:root[data-theme="light"] .aic-ambient{opacity:.48;filter:saturate(1.05)}
:root[data-theme="light"] .aic-ambient::before{opacity:.35;filter:blur(48px)}
:root[data-theme="light"] .aic-ambient::after{opacity:.1;background-image:linear-gradient(rgba(15,40,80,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(15,40,80,.045) 1px,transparent 1px)}
:root[data-theme="light"] .aic-top{background:rgba(255,255,255,.72);border-color:rgba(15,40,80,.06)}
.aic-brand{display:flex;align-items:center;gap:11px;min-width:0}
.aic-orb-mini{
  width:40px;height:40px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#04121d;flex:none;
  background:radial-gradient(circle at 32% 28%,#9af0ff 0%,var(--cy) 38%,var(--blue) 78%);
  background-size:140% 140%;
  box-shadow:0 10px 24px -12px rgba(var(--cy-rgb),.95),0 0 0 1px rgba(255,255,255,.18) inset;
  animation:aicOrbGlow 5.5s ease-in-out infinite;
}
@keyframes aicOrbGlow{
  0%,100%{background-position:28% 22%;filter:hue-rotate(0deg);box-shadow:0 10px 24px -12px rgba(var(--cy-rgb),.95),0 0 18px -6px rgba(var(--cy-rgb),.55)}
  50%{background-position:62% 48%;filter:hue-rotate(18deg);box-shadow:0 10px 26px -10px rgba(var(--blue-rgb),.9),0 0 22px -4px rgba(56,220,180,.45)}
}
.aic-orb-mini svg{width:20px;height:20px}
.aic-brand .t{
  font-size:16px;font-weight:750;color:var(--tx);letter-spacing:.4px;
  background:linear-gradient(110deg,var(--tx) 20%,var(--cy) 90%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
:root[data-theme="light"] .aic-brand .t{background:none;-webkit-background-clip:unset;background-clip:unset;color:var(--tx)}
.aic-brand .s{font-size:11.5px;color:var(--tx3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw}
.aic-topbtns{display:flex;gap:6px}
.aic-modelwrap{position:relative;flex:0 0 auto}
.aic-modelbtn{
  display:inline-flex;align-items:center;gap:8px;max-width:52vw;padding:8px 14px;border-radius:999px;
  border:1px solid rgba(var(--cy-rgb),.22);background:rgba(var(--blue-rgb),.08);color:var(--tx);
  font-size:13px;font-weight:600;cursor:pointer;
  box-shadow:0 8px 22px -16px rgba(var(--blue-rgb),.55);
  transition:border-color .16s,background .16s,transform .12s;
}
.aic-modelbtn:hover{border-color:rgba(var(--cy-rgb),.45);background:rgba(var(--blue-rgb),.14)}
.aic-modelbtn:active{transform:scale(.97)}
.aic-modelname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw}
.aic-caret{color:var(--tx3);font-size:11px;line-height:1;opacity:.85}
.aic-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;background:#34c759;box-shadow:0 0 0 3px rgba(52,199,89,.18)}
.aic-dot.off{background:#b7b7bd;box-shadow:0 0 0 3px rgba(160,160,170,.16)}
.aic-menu{
  position:absolute;top:calc(100% + 8px);right:0;width:320px;max-width:86vw;max-height:72vh;overflow-y:auto;
  background:var(--elev-solid);border:1px solid rgba(var(--cy-rgb),.18);border-radius:18px;
  box-shadow:0 22px 56px -16px rgba(0,0,0,.5);padding:8px;z-index:60;
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
}
/* 挂到 body 后才能盖住对话气泡和居中提示（页面轨道有 will-change，内部 z-index 出不去） */
body > .aic-menu{
  position:fixed;z-index:200;margin:0;
  background:var(--elev-solid);
  -webkit-backdrop-filter:none;backdrop-filter:none;
  box-shadow:0 24px 60px -18px rgba(20,40,80,.45),0 0 0 1px rgba(15,40,80,.06);
}
.aic-menu-mask{position:fixed;inset:0;z-index:190;border:0;padding:0;margin:0;background:rgba(15,23,42,.45);cursor:pointer}
.aic-menu.ses{width:min(420px,calc(100vw - 24px));max-height:min(78vh,640px);overflow:auto}
.aic-menu-hbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 4px 6px}
.aic-menu-hbar span{font-size:15px;font-weight:700;color:var(--tx)}
.aic-menu-x{flex:none;height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--field);color:var(--tx);font-size:13px;font-weight:650}
@media(max-width:760px){
  body > .aic-menu.ses{z-index:210;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
  .aic-menu-hbar{position:sticky;top:0;z-index:2;background:var(--elev-solid);margin:-8px -8px 4px;padding:12px 12px 8px}
}
.aic-ses{display:flex;flex-direction:column;gap:8px;padding:2px 8px 8px}
.aic-ses label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--tx2)}
.aic-ses input{height:36px;border-radius:10px}
.aic-ses-sec{margin:4px 2px 0;font-size:12px;font-weight:650;color:var(--tx)}
.aic-ses-secret{display:flex;gap:6px;align-items:center}
.aic-ses-secret input{flex:1;min-width:0}
.aic-ses-eye{flex:none;height:36px;padding:0 10px}
.aic-ses-lock{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 2px 4px}
.aic-ses-lock-note{font-size:12px;line-height:1.4;color:var(--tx2)}
.aic-ses-lock-btns{display:flex;flex:none;gap:6px}
.aic-ses.is-locked input{color:var(--tx2);background:rgba(15,40,80,.04)}
.aic-ses-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}
.aic-menu-h{font-size:11px;color:var(--tx3);font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:10px 12px 6px}
.aic-menu-empty{font-size:12.5px;line-height:1.7;color:var(--tx2);padding:6px 10px 10px}
.aic-menu-sep{height:1px;background:var(--line);margin:6px 8px}
.aic-mi{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;background:transparent;color:var(--tx);padding:10px 11px;border-radius:12px;cursor:pointer}
.aic-mi:hover{background:rgba(var(--blue-rgb),.10)}
.aic-mi.on{background:rgba(var(--cy-rgb),.12)}
.aic-mi-t{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.aic-mi-name{font-size:13.5px;font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aic-mi-sub{font-size:11.5px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aic-mi-ic{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:22px;color:var(--tx2)}
.aic-mi-ic svg{width:17px;height:17px}
.aic-mi-ok{flex:0 0 auto;color:var(--cy);font-weight:800}
.aic-mi .aic-dot{width:8px;height:8px;box-shadow:none;background:#c4c4cc}
.aic-mi .aic-dot.is-on,.aic-mi.on .aic-dot{background:#34c759;box-shadow:0 0 0 3px rgba(52,199,89,.18)}
.aic-presets{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 2px}
.aic-presets .tag{cursor:pointer}
.aic-range{width:100%;accent-color:var(--blue)}
.aic-switchrow{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--tx);cursor:pointer;user-select:none}
.aic-switchrow input{width:18px;height:18px;accent-color:var(--blue)}
.aic-warn{margin-top:8px;font-size:12px;line-height:1.7;padding:9px 11px;border-radius:10px;
  background:rgba(var(--warn-rgb),.1);border:1px solid rgba(var(--warn-rgb),.28);color:var(--tx2)}
.aic-cfgbtns{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.aic-msgs{
  display:flex;flex-direction:column;gap:16px;padding:8px 6px 4px;flex:1 1 auto;min-height:0;
  overflow-y:auto;overscroll-behavior:contain;width:100%;max-width:920px;margin:0 auto;align-self:center;
  scrollbar-gutter:stable;
}
.aic-empty{
  margin:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  padding:36px 20px 28px;color:var(--tx2);max-width:760px;width:100%;
}
.aic-hero{position:relative;width:124px;height:124px;margin:0 auto 18px;display:grid;place-items:center}
.aic-hero-rings{position:absolute;inset:0;pointer-events:none}
.aic-hero-rings i{
  position:absolute;inset:0;border-radius:50%;border:1px solid rgba(var(--cy-rgb),.28);
  animation:aicRing 4.8s ease-out infinite;
}
.aic-hero-rings i:nth-child(2){animation-delay:1.2s;border-color:rgba(var(--blue-rgb),.22)}
.aic-hero-rings i:nth-child(3){animation-delay:2.4s;border-color:rgba(var(--cy-rgb),.14)}
@keyframes aicRing{0%{transform:scale(.72);opacity:.7}100%{transform:scale(1.28);opacity:0}}
.aic-orb{
  position:relative;z-index:1;width:86px;height:86px;display:flex;align-items:center;justify-content:center;border-radius:50%;
  background:radial-gradient(circle at 32% 28%,#b8f7ff 0%,var(--cy) 36%,var(--blue) 78%);
  color:rgba(255,255,255,.98);
  box-shadow:0 20px 48px -16px rgba(var(--cy-rgb),.85),0 0 0 10px rgba(var(--cy-rgb),.08),0 0 40px rgba(var(--blue-rgb),.25);
  animation:aicFloat 5.2s ease-in-out infinite;
}
.aic-orb svg{width:38px;height:38px}
@keyframes aicFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.aic-eyebrow{
  font-size:11px;font-weight:700;letter-spacing:.22em;color:var(--cy);opacity:.9;margin-bottom:8px;
}
.aic-empty h2{
  font-size:28px;font-weight:800;letter-spacing:.2px;color:var(--tx);margin:0 0 8px;
  text-shadow:0 10px 40px rgba(var(--cy-rgb),.18);
}
.aic-empty p{font-size:13.5px;line-height:1.9;color:var(--tx2);margin:0}
.aic-oneline{white-space:normal;font-size:14.5px;color:var(--tx3);margin:4px 0 0;max-width:28em}
.aic-sugs{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;justify-content:center;
  margin-top:28px;width:100%;max-width:560px;
}
.aic-sug{
  display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;
  padding:14px 16px;border-radius:16px;border:1px solid rgba(var(--cy-rgb),.16);
  background:linear-gradient(160deg,rgba(var(--blue-rgb),.10),rgba(255,255,255,.02));
  color:var(--tx);cursor:pointer;
  box-shadow:0 12px 28px -20px rgba(0,0,0,.55);
  transition:transform .16s,border-color .16s,background .16s,box-shadow .16s;
}
.aic-sug-t{font-size:13.5px;font-weight:700;color:var(--tx)}
.aic-sug-d{font-size:12px;line-height:1.45;color:var(--tx3)}
.aic-sug:hover{
  border-color:rgba(var(--cy-rgb),.45);background:linear-gradient(160deg,rgba(var(--cy-rgb),.14),rgba(var(--blue-rgb),.08));
  transform:translateY(-2px);box-shadow:0 16px 34px -18px rgba(var(--cy-rgb),.45);
}
.aic-setup{
  margin-top:22px;padding:12px 20px;border-radius:999px;border:0;font-weight:700;
  background:var(--grad);color:#fff;box-shadow:0 14px 32px -14px rgba(var(--blue-rgb),.75);
}
.aic-msg{display:flex;gap:10px;align-items:flex-end}
.aic-msg.me{justify-content:flex-end}
.aic-msg.ai{align-items:flex-start}
.aic-ava{
  position:relative;width:36px;height:36px;border-radius:13px;flex:none;
  display:flex;align-items:center;justify-content:center;color:#fff;margin-top:1px;
  background:
    radial-gradient(circle at 28% 22%,rgba(255,255,255,.95) 0 1.5px,rgba(255,255,255,.55) 2px,rgba(255,255,255,0) 46%),
    linear-gradient(152deg,#8fd8ff 0%,#3aa4ff 38%,#0a6bff 72%,#0846c8 100%);
  box-shadow:
    0 10px 18px -10px rgba(10,110,255,.8),
    0 0 0 1px rgba(255,255,255,.55),
    inset 0 1px 0 rgba(255,255,255,.7),
    inset 0 -10px 14px rgba(0,40,130,.22);
}
.aic-ava::after{
  content:"";position:absolute;inset:1px;border-radius:12px;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.38),rgba(255,255,255,0) 46%);
}
.aic-ava svg{position:relative;z-index:1;width:18px;height:18px;stroke-width:2.05;filter:drop-shadow(0 1px 1px rgba(0,36,110,.28))}
.aic-msg.ai:has(.bubble.streaming) .aic-ava{animation:aicAvaPulse 1.8s ease-in-out infinite}
@keyframes aicAvaPulse{
  0%,100%{box-shadow:0 10px 18px -10px rgba(10,110,255,.8),0 0 0 1px rgba(255,255,255,.55),inset 0 1px 0 rgba(255,255,255,.7),inset 0 -10px 14px rgba(0,40,130,.22)}
  50%{box-shadow:0 12px 22px -8px rgba(10,132,255,.95),0 0 0 4px rgba(10,132,255,.16),inset 0 1px 0 rgba(255,255,255,.75),inset 0 -10px 14px rgba(0,40,130,.22)}
}
.aic-ava[data-ch="openclaw"]{
  background:
    radial-gradient(circle at 28% 22%,rgba(255,255,255,.95) 0 1.5px,rgba(255,255,255,.5) 2px,rgba(255,255,255,0) 46%),
    linear-gradient(152deg,#b8ffe8 0%,#3ddeb0 40%,#0e9a72 74%,#075c48 100%);
  box-shadow:
    0 10px 18px -10px rgba(14,154,114,.8),
    0 0 0 1px rgba(255,255,255,.55),
    inset 0 1px 0 rgba(255,255,255,.7),
    inset 0 -10px 14px rgba(0,70,50,.22);
}
.aic-ava[data-ch="cursor"]{
  background:
    radial-gradient(circle at 28% 22%,rgba(255,255,255,.95) 0 1.5px,rgba(255,255,255,.5) 2px,rgba(255,255,255,0) 46%),
    linear-gradient(152deg,#ffe7a8 0%,#ffb03a 38%,#ef6a16 72%,#c2410c 100%);
  box-shadow:
    0 10px 18px -10px rgba(226,110,20,.8),
    0 0 0 1px rgba(255,255,255,.55),
    inset 0 1px 0 rgba(255,255,255,.7),
    inset 0 -10px 14px rgba(120,40,0,.22);
}
.aic-msg.ai:has(.bubble.streaming) .aic-ava[data-ch="openclaw"]{animation-name:aicAvaPulseTeal}
.aic-msg.ai:has(.bubble.streaming) .aic-ava[data-ch="cursor"]{animation-name:aicAvaPulseAmber}
@keyframes aicAvaPulseTeal{
  0%,100%{box-shadow:0 10px 18px -10px rgba(14,154,114,.8),0 0 0 1px rgba(255,255,255,.55),inset 0 1px 0 rgba(255,255,255,.7),inset 0 -10px 14px rgba(0,70,50,.22)}
  50%{box-shadow:0 12px 22px -8px rgba(20,180,130,.95),0 0 0 4px rgba(20,180,130,.16),inset 0 1px 0 rgba(255,255,255,.75),inset 0 -10px 14px rgba(0,70,50,.22)}
}
@keyframes aicAvaPulseAmber{
  0%,100%{box-shadow:0 10px 18px -10px rgba(226,110,20,.8),0 0 0 1px rgba(255,255,255,.55),inset 0 1px 0 rgba(255,255,255,.7),inset 0 -10px 14px rgba(120,40,0,.22)}
  50%{box-shadow:0 12px 22px -8px rgba(240,130,30,.95),0 0 0 4px rgba(240,130,30,.16),inset 0 1px 0 rgba(255,255,255,.75),inset 0 -10px 14px rgba(120,40,0,.22)}
}
.aic-orb[data-ch="openclaw"]{
  background:radial-gradient(circle at 32% 28%,#e7fff6 0%,#5eebc4 36%,#0e9a72 78%);
  box-shadow:0 20px 48px -16px rgba(14,154,114,.8),0 0 0 10px rgba(14,154,114,.1),0 0 40px rgba(14,154,114,.22);
}
.aic-orb[data-ch="cursor"]{
  background:radial-gradient(circle at 32% 28%,#fff6dc 0%,#ffc15a 36%,#ef6a16 78%);
  box-shadow:0 20px 48px -16px rgba(226,110,20,.8),0 0 0 10px rgba(226,110,20,.1),0 0 40px rgba(226,110,20,.22);
}
:root[data-theme="light"] .aic-ava{
  box-shadow:
    0 10px 16px -10px rgba(10,110,255,.55),
    0 0 0 1px rgba(255,255,255,.9),
    inset 0 1px 0 rgba(255,255,255,.75),
    inset 0 -10px 14px rgba(0,40,130,.16);
}
@media (prefers-reduced-motion:reduce){.aic-ava{animation:none}}
.bubble{max-width:min(78%,720px);padding:13px 16px;border-radius:18px;font-size:14.5px;line-height:1.72;word-break:break-word}
.bubble.me{
  background:var(--grad);color:#fff;border-bottom-right-radius:7px;
  box-shadow:0 14px 32px -16px rgba(var(--blue-rgb),.85);
}
.bubble.ai{
  background:linear-gradient(165deg,rgba(255,255,255,.06),rgba(var(--blue-rgb),.05));
  border:1px solid rgba(var(--cy-rgb),.14);color:var(--tx);border-bottom-left-radius:7px;
  box-shadow:0 12px 28px -20px rgba(0,0,0,.4);
}
:root[data-theme="light"] .bubble.ai{background:#fff;border-color:rgba(15,40,80,.08);box-shadow:0 10px 26px -18px rgba(20,40,80,.28)}
.bubble.ai.streaming{
  border-color:transparent;
  background:
    linear-gradient(165deg,rgba(12,18,32,.92),rgba(var(--blue-rgb),.12)) padding-box,
    linear-gradient(110deg,rgba(var(--cy-rgb),.85),rgba(var(--blue-rgb),.7),rgba(56,220,180,.75),rgba(var(--cy-rgb),.85)) border-box;
  background-size:100% 100%,220% 220%;
  animation:aicStreamBorder 2.8s linear infinite;
}
:root[data-theme="light"] .bubble.ai.streaming{
  background:
    linear-gradient(#fff,#f4f8ff) padding-box,
    linear-gradient(110deg,rgba(var(--cy-rgb),.9),rgba(var(--blue-rgb),.75),rgba(14,165,160,.7),rgba(var(--cy-rgb),.9)) border-box;
  background-size:100% 100%,220% 220%;
}
@keyframes aicStreamBorder{to{background-position:0 0,220% 0}}
.bubble.ai.streaming .md::after{content:"▍";color:var(--cy);animation:aicBlink 1s steps(1) infinite;margin-left:1px}
@keyframes aicBlink{50%{opacity:0}}
.md>*:first-child{margin-top:0}.md>*:last-child{margin-bottom:0}
.md p{margin:7px 0}
.md h2,.md h3,.md h4{margin:12px 0 6px;line-height:1.4}
.md h2{font-size:16.5px}.md h3{font-size:15.5px}.md h4{font-size:14.5px}
.md ul,.md ol{margin:7px 0;padding-left:20px}.md li{margin:3px 0}
.md blockquote{margin:8px 0;padding:6px 12px;border-left:3px solid var(--cy);background:rgba(var(--cy-rgb),.08);border-radius:0 8px 8px 0;color:var(--tx2)}
.md hr{border:none;border-top:1px solid var(--line);margin:12px 0}
.md a{color:var(--cy);text-decoration:none;border-bottom:1px solid rgba(var(--cy-rgb),.4)}
.md code{font-family:var(--mono);font-size:12.5px;background:rgba(255,255,255,.1);padding:1.5px 5px;border-radius:6px}
.md pre{background:#070d18;border:1px solid rgba(var(--cy-rgb),.16);border-radius:12px;padding:12px 13px;overflow-x:auto;margin:9px 0}
.md pre code{background:none;padding:0;font-size:12.5px;color:#c8e1ff;line-height:1.6}
:root[data-theme="light"] .md pre{background:#0f1830}
:root[data-theme="light"] .md code{background:rgba(15,40,80,.08);color:#0a4ed6}
.aic-typing{display:inline-flex;gap:4px;align-items:center;vertical-align:middle}
.aic-typing i{width:6px;height:6px;border-radius:50%;background:var(--cy);animation:aicDot 1.2s infinite ease-in-out}
.aic-typing i:nth-child(2){animation-delay:.18s}.aic-typing i:nth-child(3){animation-delay:.36s}
.aic-wait{margin-left:10px;font-size:13px;color:var(--tx3);letter-spacing:.02em;vertical-align:middle}
@keyframes aicDot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.aic-live{
  flex:0 0 auto;display:flex;align-items:center;gap:8px;margin:0 auto;width:100%;max-width:920px;
  padding:7px 14px;border-radius:12px;border:1px solid color-mix(in srgb,var(--cy) 28%,var(--line));
  background:color-mix(in srgb,var(--blue) 10%,transparent);color:var(--tx2);font-size:12.5px;line-height:1.4;
}
.aic-live[hidden]{display:none !important}
.aic-live-dot{
  width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--cy);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--cy) 22%,transparent);animation:aicLivePulse 1.4s ease-in-out infinite;
}
@keyframes aicLivePulse{0%,100%{opacity:.55;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}
.aic-live-t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--tx)}
.aic-live-sec{flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--tx3);font-size:11.5px;letter-spacing:.04em}
.aic.aic-busy .aic-brand .s{color:var(--cy)}
.aic-composer{flex:0 0 auto;position:static;padding:4px 0 0;margin:0 auto;z-index:5;width:100%;max-width:920px;align-self:center}
.aic-hint{margin-top:8px;text-align:center;font-size:11px;letter-spacing:.04em;color:var(--tx3);opacity:.78}
.aic-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:9px}
.aic-chips .tag{cursor:pointer;font-size:12px;padding:6px 11px}
.aic-inputbar{
  display:flex;gap:10px;align-items:flex-end;
  background:rgba(255,255,255,.04);border:1px solid rgba(var(--cy-rgb),.22);
  border-radius:24px;padding:10px 10px 10px 18px;
  box-shadow:0 16px 40px -22px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06);
  transition:border-color .18s,box-shadow .18s,background .18s;
}
:root[data-theme="light"] .aic-inputbar{background:rgba(255,255,255,.92);border-color:rgba(15,40,80,.08)}
.aic-inputbar:focus-within{
  border-color:transparent;
  background:
    linear-gradient(rgba(var(--blue-rgb),.1),rgba(var(--blue-rgb),.06)) padding-box,
    linear-gradient(120deg,rgba(var(--cy-rgb),.85),rgba(var(--blue-rgb),.7),rgba(56,220,180,.75),rgba(var(--cy-rgb),.85)) border-box;
  background-size:100% 100%,200% 200%;
  animation:aicInputAura 4.5s ease-in-out infinite;
  box-shadow:0 18px 48px -20px rgba(var(--cy-rgb),.45),0 0 0 3px rgba(var(--cy-rgb),.10);
}
@keyframes aicInputAura{
  0%,100%{background-position:0 0,0% 50%}
  50%{background-position:0 0,100% 50%}
}
.aic-inputbar textarea.input{border:none;background:transparent;box-shadow:none;resize:none;max-height:132px;
  padding:7px 0;flex:1;font-size:15px;line-height:1.55}
.aic-inputbar textarea.input:focus{box-shadow:none;border:none;background:transparent}
.aic-send{
  width:44px;height:44px;flex:none;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;
  color:#fff;background:var(--grad);cursor:pointer;
  box-shadow:0 10px 22px -8px rgba(var(--blue-rgb),.95),0 0 0 1px rgba(255,255,255,.12) inset;
  transition:transform .12s,box-shadow .16s;
}
.aic-send svg{width:18px;height:18px}
.aic-send.stop{background:linear-gradient(135deg,#ff453a,#ff375f);box-shadow:0 8px 18px -8px rgba(var(--danger-rgb),.8)}
.aic-send:hover{box-shadow:0 14px 28px -10px rgba(var(--cy-rgb),.85)}
.aic-send:active{transform:scale(.94)}
.aic-msg.ai .aic-acts{display:flex;gap:6px;margin-top:8px;opacity:0;transition:opacity .18s ease}
.aic-msg.ai:hover .aic-acts,.aic-msg.ai .aic-acts:focus-within,.aic-msg.ai .aic-acts:active{opacity:1}
@media (hover:none){.aic-msg.ai .aic-acts{opacity:.9}}
.aic-act{
  display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;
  border:1px solid rgba(var(--cy-rgb),.18);background:rgba(255,255,255,.03);color:var(--tx3);cursor:pointer;padding:0;
}
.aic-act svg{width:14px;height:14px;stroke-width:2}
.aic-act:hover{color:var(--cy);border-color:var(--cy);background:rgba(var(--cy-rgb),.10)}
.aic-act:disabled{opacity:.5;cursor:default}
.aic-fb{font-size:12px;line-height:1.6;color:var(--warn,#f0a020);margin-bottom:6px;opacity:.92}
.ai-badge{font-size:11.5px;font-weight:500;padding:3px 10px;border-radius:999px;border:1px solid var(--line);color:var(--tx3);white-space:nowrap;max-width:56%;overflow:hidden;text-overflow:ellipsis}
.ai-badge.on{color:var(--ok,#30d158);border-color:rgba(48,209,88,.4);background:rgba(48,209,88,.1)}
@media (max-width:760px){
  .aic{inset:10px;padding:12px;gap:10px;border-radius:18px}
  .aic-sugs{grid-template-columns:1fr;max-width:100%}
  .aic-empty h2{font-size:22px}
  .aic-hero{width:108px;height:108px}
  .aic-orb{width:76px;height:76px}
  .bubble{max-width:88%;font-size:14px}
  .aic-hint{font-size:10.5px}
  .aic-brand .s{max-width:34vw}
}
@media (prefers-reduced-motion:reduce){
  .aic,.aic-ambient,.aic-ambient::before,.aic-ambient::after,
  .aic-orb,.aic-orb-mini,.aic-hero-rings i,
  .bubble.ai.streaming,.aic-inputbar:focus-within{animation:none}
}
/* 手机触屏：关掉 AI 页持续动画，减轻卡顿感 */
@media (hover:none),(max-width:760px){
  .aic{animation:none}
  .aic-ambient,.aic-ambient::before,.aic-ambient::after,
  .aic-orb,.aic-orb-mini,.aic-hero-rings i{animation:none}
  .bubble.ai.streaming,.aic-inputbar:focus-within{animation:none}
}
html.sw .aic{animation:none;border:1px solid var(--line);background:var(--elev-solid);box-shadow:var(--shadow)}
html.sw .aic-ambient::before,html.sw .aic-orb-mini{animation:none;filter:none}
html.sw .bubble.ai.streaming,html.sw .aic-inputbar:focus-within{animation:none;border:1px solid rgba(var(--cy-rgb),.35);background:var(--field)}

/* 天气数据源分段选择 */
.wx-seg{display:flex;gap:8px}
.wx-opt{flex:1;padding:11px 8px;border-radius:12px;border:1px solid var(--line);background:var(--field);color:var(--tx2);font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;transition:border-color .15s,box-shadow .15s}
.wx-opt:hover{border-color:var(--cy,#38bdf8)}
.wx-opt.on{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(56,130,246,.28)}
@media (max-width:560px){.wx-seg{flex-direction:column;gap:8px}.wx-opt{padding:12px}}
.ai-model{border:1px solid var(--line);border-radius:14px;padding:12px;margin-top:12px;background:rgba(127,127,150,.06)}
.ai-model.main{border-color:rgba(48,209,255,.35)}
.ai-model .input{margin-top:8px}
.ai-model.collapsed{padding-bottom:10px}
.ai-mcaret{display:inline-flex;align-items:center;margin-right:5px;color:var(--tx3)}
.ai-mcaret svg{width:13px;height:13px}
.ai-mhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;cursor:pointer}
.ai-model .ai-mbody{display:block}
.ai-model .ai-mbody[hidden]{display:none}
.ai-mname{font-size:13.5px;font-weight:600;color:var(--tx);margin-right:auto;display:inline-flex;align-items:center}
.ai-mpresets{display:flex;gap:6px;flex-wrap:wrap}
.ai-mpresets .tag{font-size:11px;padding:3px 9px}
.ai-mdel{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--tx3);cursor:pointer}
.ai-mdel svg{width:13px;height:13px}
.ai-mdel:hover{color:var(--danger,#ff453a);border-color:var(--danger,#ff453a)}
.ai-mactions{display:inline-flex;align-items:center;gap:6px}
.ai-medit{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:3px 10px;border-radius:999px;
  border:1px solid var(--line);background:var(--field);color:var(--tx2);cursor:pointer}
.ai-medit svg{width:12px;height:12px}
.ai-medit:hover{color:var(--tx);border-color:var(--tx3)}
.ai-msave{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:3px 10px;border-radius:999px;
  border:1px solid transparent;background:#0a84ff;color:#fff;cursor:pointer}
.ai-msave svg{width:12px;height:12px}
.ai-msave:hover{background:#0a78e8}
.ai-mlock{display:inline-block;margin-left:7px;font-size:10px;font-weight:500;color:var(--tx3);
  background:var(--field);border:1px solid var(--line);border-radius:6px;padding:1px 6px}
.ai-model input.ai-locked{background:var(--field);color:var(--tx2);cursor:default;opacity:.92}
.ai-model input.ai-locked:focus{outline:none;border-color:var(--line)}
.ai-preset[disabled]{opacity:.38;cursor:not-allowed;pointer-events:none}
@keyframes aiFlash{0%{box-shadow:0 0 0 0 rgba(48,209,255,.55)}100%{box-shadow:0 0 0 8px rgba(48,209,255,0)}}
.ai-card-flash{animation:aiFlash 1.3s ease-out 2;border-color:rgba(48,209,255,.6)}
@media (max-width:760px){.aic-msg.ai .aic-acts{opacity:.9}.ai-badge{max-width:46%}}
/* ===== v15 AI个人RAG 记忆库管理卡 ===== */
.rag-box{margin-top:14px;padding:14px 16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel)}
.rag-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.rag-title{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:600;color:var(--tx)}
.rag-title svg{width:16px;height:16px;color:var(--cy)}
.rag-state{font-size:12px;color:var(--tx2);text-align:right;line-height:1.4}
.rag-state.working{color:var(--cy)}
.rag-desc{font-size:12.5px;line-height:1.75;margin:2px 0 12px;color:var(--tx2)}
.rag-desc b{font-weight:600;color:var(--tx)}
.rag-btns{display:flex;flex-wrap:wrap;gap:8px}
.rag-btns .btn{text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.rag-btns .btn svg{width:14px;height:14px}
@media (max-width:760px){.rag-head{flex-direction:column;align-items:flex-start;gap:3px}.rag-state{text-align:left}}

/* 火山引擎账户余额 */
.volc-balance{margin-top:14px;padding:14px 16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel)}
.vb-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.vb-title{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:600;color:var(--tx)}
.vb-title svg{width:16px;height:16px;color:var(--amber)}
.vb-head .btn{display:inline-flex;align-items:center;gap:5px}
.vb-head .btn svg{width:13px;height:13px}
.vb-amount{font-size:30px;font-weight:700;letter-spacing:.5px;color:var(--tx);margin:10px 0 12px;line-height:1.1}
.vb-amount.low{color:var(--warn)}
.vb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}
.vb-cell{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:rgba(127,127,150,.05)}
.vb-cell span{display:block;font-size:11.5px;color:var(--tx2);margin-bottom:2px}
.vb-cell b{font-size:14px;font-weight:600;color:var(--tx)}
.vb-cred{border-top:1px dashed var(--line);padding-top:12px}
.vb-cred .input{margin-top:6px}
.vb-cred .aic-cfgbtns .btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.vb-cred .aic-cfgbtns .btn svg{width:14px;height:14px}
.cred-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cred-head .ai-medit{flex:none}
input.cred-locked{background:var(--field);color:var(--tx2);cursor:default;opacity:.92}
input.cred-locked:focus{outline:none;border-color:var(--line)}
#vbMsg.err{color:var(--danger)}
#vbMsg.warn{color:var(--warn)}
#vbMsg.ok{color:var(--ok)}
@media (max-width:560px){.vb-grid{grid-template-columns:1fr 1fr}}
/* ===== Wanli brand raster logo: 透明单盾，无圆角方板/矩形阴影，辉光跟随盾形 alpha ===== */
.brand-img{display:block;object-fit:contain;border-radius:0;background:transparent;flex:none;box-shadow:none}
.brand-mark .brand-img{border-radius:0;box-shadow:none}
.gate-logo .brand-img{width:100%;height:100%;border-radius:0;box-shadow:none;position:relative;z-index:1;
  filter:drop-shadow(0 0 8px rgba(96,206,255,.78)) drop-shadow(0 0 20px rgba(10,132,255,.50)) drop-shadow(0 8px 22px rgba(10,132,255,.35))}
/* 登录/网关页盾牌：背后科幻光晕（径向光斑呼吸）+ 盾缘多层青蓝辉光；尺寸收在盾周，卡片内不被裁切 */
.gate-logo{position:relative;filter:none;cursor:pointer;transition:transform .28s cubic-bezier(.34,1.56,.64,1),filter .28s ease}
.gate-logo:hover{animation-play-state:paused;transform:scale(1.15);filter:drop-shadow(0 10px 30px rgba(10,132,255,.55))}
.gate-logo:active{transform:scale(1.06)}
.gate-logo::before{content:"";position:absolute;z-index:0;left:50%;top:50%;width:134%;height:134%;
  transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(96,206,255,.55) 0%,rgba(10,132,255,.32) 42%,rgba(10,132,255,0) 68%);
  filter:blur(8px);animation:logoHalo 3.4s ease-in-out infinite}
@keyframes logoHalo{0%,100%{opacity:.65;transform:translate(-50%,-50%) scale(.96)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}}
@media (prefers-reduced-motion:reduce){.gate-logo::before{animation:none;opacity:.9}}
/* ===== Todo quick-add: 输入+添加一行 / 分类+齿轮一行 / 优先级+日期一行 ===== */
.todo-add{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.todo-add #tIn{flex:1 1 220px;min-width:0;order:1}
.todo-add #tAdd{flex:0 0 auto;order:2}
.todo-add #tTag{flex:0 1 170px;min-width:0;order:3}
.todo-add #tTagMgr{flex:0 0 auto;order:4}
.todo-add #tPrio{flex:0 1 120px;min-width:0;order:5}
.todo-add #tDue{flex:0 1 180px;min-width:0;order:6}
@media(max-width:760px){
  .todo-add #tIn{flex:1 1 0}
  .todo-add #tAdd{flex:0 0 auto}
  .todo-add #tTag{flex:1 1 0}
  .todo-add #tTagMgr{flex:0 0 auto}
  .todo-add #tPrio{flex:1 1 0}
  .todo-add #tDue{flex:1 1 0}
}
/* ===== Mobile scroll perf: remove blur from in-flow cards; fixed bars/overlays keep blur ===== */
@media(max-width:760px){
  .card,.sys-card,.s-hero,.note-card,.dh-card{
    -webkit-backdrop-filter:none !important;backdrop-filter:none !important}
}

/* ============================================================
   v1.17 组件：九宫格 / 待办标签 / 网络导航(精简卡片·列表·分类·回收站·书签) / 财务页签
   ============================================================ */
/* 浏览器密码管理器需要的用户名桩字段：视觉隐藏但不用 display:none，便于识别与自动填充 */
.gate-user{position:absolute!important;left:-9999px!important;top:0;width:1px;height:1px;opacity:0;border:0;padding:0}

/* 九宫格图案解锁（触摸 + 鼠标） */
.pt-wrap{position:relative;width:min(72vw,280px);aspect-ratio:1/1;margin:16px auto 4px;touch-action:none;overscroll-behavior:contain;
  user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.pt-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);place-items:center}
.pt-dot{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;z-index:2;touch-action:none}
.pt-dot>i{width:20px;height:20px;border-radius:50%;border:2px solid var(--tx3);background:transparent;display:block;
  transition:background .12s,border-color .12s,box-shadow .12s}
.pt-dot.on>i{border-color:var(--cy);
  background:radial-gradient(circle,var(--cy) 0 28%,rgba(100,210,255,.22) 30% 56%,transparent 58%);
  box-shadow:0 0 12px rgba(100,210,255,.55)}
.pt-svg{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:visible}
.pt-svg line{stroke:var(--cy);stroke-width:4;stroke-linecap:round;filter:drop-shadow(0 0 5px rgba(100,210,255,.6))}
.pt-svg line.pt-tmp{opacity:.45}
.pt-wrap.err .pt-svg line{stroke:var(--danger);filter:none}
.pt-wrap.err .pt-dot.on>i{border-color:var(--danger);
  background:radial-gradient(circle,var(--danger) 0 28%,rgba(255,69,58,.22) 30% 56%,transparent 58%);
  box-shadow:0 0 12px rgba(255,69,58,.5)}
@media(max-width:480px){.pt-wrap{width:min(78vw,260px)}.pt-dot{width:52px;height:52px}}

/* 快速解锁三入口：PC 三列、窄屏堆叠 */
.qk-enroll{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:600px){.qk-enroll{grid-template-columns:1fr!important}}

/* 危险描边图标按钮（退出登录 / 删除） */
.icon-btn.danger{color:var(--danger)}
.icon-btn.danger:hover{background:rgba(255,69,58,.12);border-color:rgba(255,69,58,.35)}

/* 待办：彩色分类标签 + 标签管理弹窗 + 日历双历标记 */
.t-tagchip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;
  border:1px solid var(--line);background:var(--elev);color:var(--tx2);white-space:nowrap}
.t-tagchip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.tm-list{display:flex;flex-direction:column;gap:8px;max-height:54vh;overflow:auto}
.tm-row{display:flex;align-items:center;gap:8px}
.tm-color{width:32px;height:32px;border-radius:50%;border:0;flex:0 0 auto;cursor:pointer;padding:0}
.tm-name{flex:1;min-width:0}
.tm-row .btn.tiny,.tm-row .icon-btn.sm{flex:0 0 auto}
.cal-dual-tag{font-size:11px;color:var(--tx3);text-align:center;margin:2px 0 8px}

/* 网络导航：卡片视图 + 精简底栏（未录入账号密码时不再占整行） */
.p-cards{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-content:start;min-width:0}
@media(min-width:1080px){.p-cards{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}}
.p-cdot{width:7px;height:7px;border-radius:50%;display:inline-block}
.sr-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}
.sr-foot .sr-cred{margin:0;padding:0;border:0;flex:1 1 auto;min-width:0}
.sr-spacer{flex:1 1 auto}
.sr-foot .icon-btn.sm{flex:0 0 auto}
.sr-foot .btn.tiny{flex:0 0 auto}

/* 网络导航：列表视图 */
.p-lines{display:flex;flex-direction:column;gap:8px;min-width:0}
.sys-line{display:flex;align-items:center;gap:10px;background:var(--elev);border:1px solid var(--line);border-radius:13px;padding:9px 12px;min-width:0}
.sys-line:hover{border-color:rgba(var(--blue-rgb),.35)}
.sys-line .sr-fav{flex:0 0 auto}
.sr-avatar.sm{width:34px;height:34px;border-radius:9px;font-size:15px;flex:0 0 auto}
.sl-main{display:flex;align-items:center;gap:8px;flex:1 1 auto;min-width:0;background:none;border:0;text-align:left;cursor:pointer;padding:4px;color:inherit}
.sl-name{font-weight:700;font-size:14px;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.sl-url{font-size:12px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:60px;font-family:var(--mono);margin-left:2px}
.sys-line>.btn.sm,.sys-line>.icon-btn.sm{flex:0 0 auto}
@media(max-width:820px){.sl-url{display:none}}
@media(max-width:560px){.sys-line{gap:8px;padding:8px 10px}}

/* 分类管理 / 回收站 / 浏览器书签勾选 */
.cm-list{display:flex;flex-direction:column;gap:8px;max-height:44vh;overflow:auto}
.cm-row{display:flex;align-items:center;gap:8px}
.cm-row .cm-name{flex:1;min-width:0}
.cm-row .btn.tiny{flex:0 0 auto;min-width:38px}
.tr-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto}
.tr-row{display:flex;align-items:center;gap:10px;background:var(--elev);border:1px solid var(--line);border-radius:12px;padding:9px 12px}
.tr-row .t{font-weight:700;font-size:14px}
.tr-row .s{font-size:12px;color:var(--tx3);margin-top:2px}
.tr-row .btn,.tr-row .icon-btn{flex:0 0 auto}
.bm-list{display:flex;flex-direction:column;gap:4px;max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:8px}
.bm-row{display:flex;align-items:center;gap:10px;padding:7px 9px;border-radius:9px;cursor:pointer;min-width:0}
.bm-row:hover{background:var(--elev)}
.bm-row input[type=checkbox]{flex:0 0 auto;width:18px;height:18px}
.bm-name{font-size:13.5px;font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto;max-width:46%}
.bm-row .tag{flex:0 0 auto}
.bm-url{font-size:11.5px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0;font-family:var(--mono)}
@media(max-width:560px){.bm-name{max-width:62%}.bm-url,.bm-row .tag{display:none}}

/* 财务页签：4 个入口（还款 / 记账 / 攒钱 / 资产）放宽，避免挤压 */
.fin-tabs{max-width:560px}

/* ============================================================
   v1.17 PC 宽屏全屏适配（1080 / 2K / 4K）+ AI 小助理大气布局
   手机端（<=760px）沿用单列与底部 Tab，不受本段影响
   ============================================================ */
/* AI 对话：放宽列宽、消息区占满高度、气泡限可读宽度、输入栏加高常驻底部 */
.aic{width:min(100%,1180px);max-width:1180px}
.aic-msgs{min-height:calc(100vh - 282px)}
.aic-msg .bubble{max-width:min(780px,84%)}
.aic-inputbar{padding:10px 12px 10px 16px;border-radius:20px}
.aic-inputbar textarea.input{min-height:60px;max-height:240px;font-size:15px;line-height:1.6;padding:9px 6px}
.aic-send{width:46px;height:46px}
.aic-send svg{width:20px;height:20px}
@media(min-width:2000px){.aic{max-width:1380px}.aic-msg .bubble{max-width:min(880px,84%)}}

/* 网络导航卡片：宽屏随宽自适应多列（覆盖固定两列） */
@media(min-width:1080px){.p-cards{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}}

/* 2K 档：解除 1380 居中上限，双栏与网格铺满，消除两侧大白边 */
@media(min-width:1560px){
  .vault-grid,.ledger-wrap,.notes-grid,.portal-list,.p-cards,.p-lines,.dash{max-width:1680px;margin-inline:auto}
  .notes-grid{grid-template-columns:440px 1fr}
  .vault-grid{grid-template-columns:320px 1fr}
  .ledger-wrap{grid-template-columns:1fr 380px}
  .notes-grid .note-cards{grid-template-columns:repeat(auto-fill,minmax(175px,1fr))}
}
/* 4K 档：卡片网格进一步铺满，双栏维持可读宽度 */
@media(min-width:2200px){
  .p-cards,.p-lines,.dash{max-width:2240px;margin-inline:auto}
  .vault-grid,.ledger-wrap,.notes-grid,.portal-list{max-width:1880px;margin-inline:auto}
  .notes-grid{grid-template-columns:500px 1fr}
  .vault-grid{grid-template-columns:360px 1fr}
  .ledger-wrap{grid-template-columns:1fr 420px}
  .notes-grid .note-cards{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
}

/* 设置页：宽屏放宽为更舒展的阅读宽度，不再是 720 窄长条 */
@media(min-width:1200px){.settings-list,.set-pane,.set-tabs{max-width:1080px}}
@media(min-width:1700px){.settings-list,.set-pane,.set-tabs{max-width:1280px}}

/* 手机端 AI：输入框略加高、消息区留足高度 */
@media(max-width:760px){
  .aic-msgs{min-height:calc(100vh - 300px)}
  .aic-inputbar textarea.input{min-height:54px}
}

/* ------------------------------------------------------------
   v1.23.3 PC 宽屏深化（1080p / 2K / 4K）
   AI 对话与设置在大屏居中且舒展、不再两侧大片留白；
   卡片网格在 4K 进一步铺满；手机端(<=760)单列布局不受影响
   ------------------------------------------------------------ */
@media(min-width:1600px){
  .aic{width:min(100%,1320px);max-width:1320px}
  .aic-msg .bubble{max-width:min(840px,84%)}
}
@media(min-width:2400px){
  .aic{width:min(100%,1680px);max-width:1680px}
  .aic-msg .bubble{max-width:min(1000px,84%)}
  .settings-list,.set-pane,.set-tabs{max-width:1500px}
}
@media(min-width:3000px){
  .aic{width:min(100%,2000px);max-width:2000px}
  .aic-msg .bubble{max-width:min(1140px,82%)}
  .settings-list,.set-pane,.set-tabs{max-width:1700px}
  .p-cards,.p-lines,.dash{max-width:2600px;margin-inline:auto}
  .vault-grid,.ledger-wrap,.notes-grid,.portal-list{max-width:2200px;margin-inline:auto}
  .notes-grid{grid-template-columns:560px 1fr}
  .vault-grid{grid-template-columns:400px 1fr}
  .ledger-wrap{grid-template-columns:1fr 460px}
}

/* ============================================================
   v1.17.1 网络导航：极简列表行（名称 + 打开，双击名称进详情）
   ============================================================ */
.sys-line{padding:5px 8px 5px 14px;gap:12px;border-radius:14px}
.sl-namebtn{display:flex;align-items:center;gap:11px;flex:1 1 auto;min-width:0;background:none;border:0;text-align:left;
  cursor:pointer;padding:9px 4px;color:inherit;-webkit-tap-highlight-color:transparent;border-radius:10px}
.sl-namebtn:active{background:var(--field)}
.sl-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%}
.sl-label{font-size:15.5px;font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.sl-fav{flex:0 0 auto;display:inline-flex;color:#ffd60a}
.sl-fav svg{width:15px;height:15px;fill:currentColor}
.sl-open{flex:0 0 auto}
@media(max-width:560px){.sys-line{padding:4px 6px 4px 10px;gap:8px}.sl-namebtn{gap:9px;padding:8px 2px}.sl-label{font-size:15px}}

/* 网站详情弹窗 */
.dt-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.dt-desc{margin-top:12px;font-size:14px;color:var(--tx2);line-height:1.7}
.dt-rows{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.dt-row{display:flex;align-items:center;gap:10px;background:var(--field);border:1px solid var(--line);border-radius:11px;padding:10px 12px;min-width:0}
.dt-k{flex:0 0 44px;font-size:12.5px;color:var(--tx3)}
.dt-v{flex:1 1 auto;min-width:0;font-size:14px;color:var(--tx);word-break:break-all}
.dt-mono{font-family:var(--mono);letter-spacing:.5px}
.dt-url{font-family:var(--mono);font-size:13px}
.dt-row .icon-btn.sm{flex:0 0 auto}
.dt-tip{margin-top:12px;font-size:12.5px;line-height:1.7}
.dt-time{margin-top:12px;font-size:12px}

/* ============================================================
   v1.17.2 记事本华为风：极简编辑器 / 底部停靠工具栏 / 拍照录音视频 / 列表缩略图
   ============================================================ */
.note-editor .ne-bar{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--line)}
.note-editor .ne-bar .icon-btn{width:38px;height:38px}
.note-editor .ne-bar .icon-btn svg{width:21px;height:21px}
.ne-done{color:var(--cy)}

/* 标题 + 元信息 + 正文统一成一条滚动区，大留白 */
.note-editor .ne-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column}
.note-editor .ne-title{flex:none;width:100%;min-width:0;font-size:25px;font-weight:800;letter-spacing:.3px;padding:18px 20px 2px;background:transparent;border:none;outline:none;color:var(--tx)}
.note-editor .ne-meta{flex:none;display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 20px 4px;font-size:12px}
.ne-date{color:var(--tx3);font-size:12.5px;white-space:nowrap}
.ne-cat{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;border:1px solid var(--line);background:var(--field);
  color:var(--tx2);font-size:12.5px;font-weight:500;cursor:pointer;font-family:inherit;transition:border-color .15s,color .15s}
.ne-cat svg{width:13px;height:13px;opacity:.7}
.ne-cat.on{border-color:rgba(var(--blue-rgb),.55);color:var(--tx)}
.ne-cat-dot{width:8px;height:8px;border-radius:50%;flex:none}
.note-editor .ne-body{flex:1 1 auto;min-height:56vh;overflow:visible;padding:6px 20px 32px;font-size:16px;line-height:1.85;outline:none;color:var(--tx)}
.note-editor .ne-body:empty::before{content:attr(data-placeholder);color:var(--tx3)}
.ne-body img{max-width:100%;border-radius:12px;margin:8px 0;display:block}

/* 正文多媒体卡片（音频内嵌 / 视频网盘引用，原子块可整体选中删除） */
.ne-media{position:relative;margin:10px 0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--field);user-select:none;-webkit-user-select:none}
.ne-media[contenteditable="false"]{cursor:default}
.ne-video video{display:block;width:100%;max-height:360px;background:#000;object-fit:contain}
.ne-audio{padding:10px 12px 8px}
.ne-audio audio{width:100%;height:40px;display:block}
.nem-cap{display:flex;align-items:center;gap:7px;padding:7px 11px;font-size:12px;color:var(--tx2)}
.nem-ico{flex:none;display:inline-flex;color:var(--cy)}
.nem-ico svg{width:15px;height:15px}
.nem-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 文字样式面板（横滑） */
.note-editor .ne-fmt{flex:0 0 auto;display:flex;align-items:center;gap:2px;overflow-x:auto;padding:7px 10px;border-top:1px solid var(--line);background:var(--panel)}
.note-editor .ne-fmt::-webkit-scrollbar{display:none}
.ne-fmt[hidden],.ne-rec[hidden],.tag-pop[hidden]{display:none !important}

/* 录音中浮条 */
.ne-rec{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:9px 14px;border-top:1px solid rgba(255,69,58,.3);background:rgba(255,69,58,.08)}
.ner-dot{width:10px;height:10px;border-radius:50%;background:var(--danger);flex:none;animation:nerPulse 1s infinite}
.ner-time{font-variant-numeric:tabular-nums;font-weight:700;color:var(--danger);font-size:14px}
@keyframes nerPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.82)}}

/* 底部停靠工具栏 */
.note-editor .ne-dock{flex:0 0 auto;display:flex;align-items:center;gap:2px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--panel)}
.dock-btn{flex:0 0 auto;width:46px;height:42px;display:inline-flex;align-items:center;justify-content:center;border:0;background:none;border-radius:11px;color:var(--tx2);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s,color .15s}
.dock-btn svg{width:22px;height:22px}
.dock-btn:hover{background:var(--field-2);color:var(--tx)}
.dock-btn:active{background:rgba(var(--blue-rgb),.2)}
.dock-btn.recording{color:var(--danger);background:rgba(255,69,58,.14);animation:nerPulse 1.4s infinite}

/* 列表缩略图 */
.nt-thumb{margin-top:9px;border-radius:9px;overflow:hidden;aspect-ratio:16/10;background:var(--field)}
.nt-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.note-row .nr-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:left}
.note-row .nr-main .nr-title{max-width:none;flex:none}
.note-row .nr-main .nr-sum{flex:none}
.nr-thumb{flex:0 0 auto;width:54px;height:54px;border-radius:10px;object-fit:cover;background:var(--field)}

@media(max-width:760px){
  .note-editor .ne-title{font-size:22px;padding:14px 16px 2px}
  .note-editor .ne-meta{padding:7px 16px 2px;gap:7px}
  .note-editor .ne-body{padding:6px 16px 26px}
  .dock-btn{width:44px}
  .ne-video video{max-height:240px}
}

/* ============================================================
   v1.17.2 热修：编辑网站弹窗 —— 名称整行、分类下拉 + 紧凑齿轮按钮
   ============================================================ */
.fld-inline .p-catbtn{height:42px;padding:0 14px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.fld-inline .p-catbtn svg{width:16px;height:16px;flex:none}
@media(max-width:560px){
  .fld-inline .p-catbtn{padding:0 12px}
  .fld-inline .p-catbtn span{display:none}
}
/* 卡片视图精简：只留收藏 / 名称地址 / 打开，名称区双击进详情 */
.sr-detail{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:11px;background:none;border:0;text-align:left;
  cursor:pointer;padding:4px 6px;border-radius:11px;color:inherit;-webkit-tap-highlight-color:transparent}
.sr-detail:active{background:var(--field)}

/* ============================================================
   v1.17.2 热修②：待办统计紧凑 / 攒钱弹窗手机降列 / 上传浮层常驻
   ============================================================ */
/* 待办统计：手机 2 列、宽屏 4 列，左图标 + 右侧标签/数字矮卡 */
#tStats{grid-template-columns:repeat(2,1fr);gap:10px}
#tStats .stat{display:grid;grid-template-columns:34px 1fr;grid-template-areas:"ico k" "ico v";
  align-items:center;column-gap:10px;row-gap:1px;padding:10px 12px;border-radius:14px;min-width:0}
#tStats .stat .ico{grid-area:ico;position:static;width:34px;height:34px;margin:0}
#tStats .stat .k{grid-area:k;margin:0;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#tStats .stat .v{grid-area:v;margin:0;font-size:20px;line-height:1.2}
#tStats .stat .v small{font-size:11px}
@media(min-width:820px){#tStats{grid-template-columns:repeat(4,1fr)}}
/* 攒钱目标弹窗：手机端 频率+每期 一行，期望达成日独占整行，避免三列拥挤、标签换行 */
@media(max-width:760px){
  .sv-freq-row{flex-wrap:wrap}
  .sv-freq-row>div:nth-child(1),.sv-freq-row>div:nth-child(2){flex:0 0 calc(50% - 5px);min-width:0}
  .sv-freq-row>div:nth-child(3){flex:0 0 100%;min-width:0}
}
.sv-colors{margin:8px 0 2px}
.sv-colors+.lbl{margin-top:14px}
/* 上传悬浮队列：独立合成层，横滑切页的 transform 不会把它带走或隐藏 */
.up-queue{transform:translateZ(0);-webkit-transform:translateZ(0);will-change:transform}

/* ============================================================
   v1.17.2 热修③：网络导航卡片/列表极简（去头像·收藏，只留名称与新窗口访问图标，压低卡高）
   ============================================================ */
.sys-row{padding:9px 12px}
.sr-head{gap:8px}
.sr-nm{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-name .tag{flex:0 0 auto}
.sr-go{width:34px;height:34px;flex:0 0 auto;border-radius:9px;color:var(--blue);
  background:rgba(var(--blue-rgb),.10);border:1px solid transparent}
.sr-go:active{background:rgba(var(--blue-rgb),.2)}
.sr-go svg{width:17px;height:17px}
.sl-go{color:var(--blue);background:rgba(var(--blue-rgb),.08)}
@media(max-width:560px){.sys-row{padding:8px 10px}.sr-go{width:32px;height:32px}}

/* ============================================================
   v1.17.2 热修④：网络导航「新增网站」并入工具排，与视图切换/回收站/导入等高、置末、紧凑同排
   ============================================================ */
.p-toolbar #pNew{flex:0 0 auto;white-space:nowrap}
@media(max-width:560px){
  .p-toolbar{gap:6px}
  .p-toolbar .search{flex:1 1 100%}
  .p-toolbar .spacer{display:none}
  .p-toolbar .seg.mini{flex:0 0 auto}
  .p-toolbar .btn.sm{padding:6px 10px;font-size:12px;gap:5px}
  .p-toolbar .btn.sm svg{width:14px;height:14px}
}

/* ============================================================
   v1.17.2 热修⑤：网络导航分类等宽网格 + 待办本极简改版 + 底部凸起加号
   ============================================================ */
@media(max-width:560px){
  .p-chips{grid-template-columns:repeat(3,1fr);gap:8px}
  .p-chip{height:34px}
  .p-toolbar #pTrash{margin-left:auto}
}

/* 待办：顶部「未完成/已完成/全部 + 列表/卡片」一行；数量做进筛选标签 */
.todo-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;min-width:0}
.todo-bar #tSeg,.todo-bar #tViewSeg{flex:0 0 auto}
.seg-c{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;margin-left:5px;
  border-radius:9px;background:var(--field);color:var(--tx3);font-size:10.5px;font-family:var(--mono);line-height:1}
.seg button.on .seg-c{background:rgba(34,211,238,.2);color:var(--cy)}
/* 单条工具条：状态/视图 + 分类筛选（左）｜搜索/日历/生日/分类管理/添加（右）；宽屏一排，窄屏自动换行；高度统一 */
.todo-barsp{flex:1 1 auto;min-width:4px}
.todo-bar .seg,.todo-bar .seg.mini{height:38px;box-sizing:border-box;padding:3px}
.todo-bar .seg button{height:100%;display:inline-flex;align-items:center;justify-content:center}
.todo-bar .seg.mini button{height:100%;padding:0 12px}
.todo-bar #tTagFilter{flex:0 1 156px;width:156px;min-width:128px;max-width:182px;height:38px;box-sizing:border-box;
  font-size:13px;font-weight:600;color:var(--tx);-webkit-text-fill-color:var(--tx);background:var(--field);
  border:1px solid var(--line);border-radius:10px;padding:0 32px 0 13px}
.todo-bar #tTagFilter option{color:#1c1c1e;background:#ffffff;-webkit-text-fill-color:#1c1c1e}
.todo-bar .icon-btn{width:38px;height:38px;flex:0 0 auto}
.todo-bar .icon-btn.on{color:var(--cy);background:rgba(34,211,238,.14);border-color:rgba(34,211,238,.35)}
.todo-bar #tAddBtn{flex:0 0 auto;height:38px}
.todo-search{margin-bottom:12px}
.todo-search .search{max-width:none}
/* 卡片视图 */
.todo-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;align-items:start}
.todo-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 13px;
  display:flex;flex-direction:column;gap:9px;cursor:pointer;transition:border-color .15s,background .15s,transform .1s}
.todo-card:hover{border-color:var(--line-2);background:var(--panel-2)}
.todo-card:active{transform:scale(.995)}
.todo-card.done .tc-title{text-decoration:line-through;color:var(--tx3)}
.tc-top{display:flex;align-items:flex-start;gap:10px}
.tc-top .check{margin-top:1px}
.tc-title{flex:1 1 auto;min-width:0;font-size:14px;font-weight:600;line-height:1.4;word-break:break-word;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tc-del{flex:0 0 auto;width:30px;height:30px}
.tc-note{font-size:12px;color:var(--tx3);line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tc-tags{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.tc-tags .prio{margin-top:0}
.tc-tags .tag{font-size:11px}
@media(max-width:760px){.todo-bar #tAddBtn{display:none}}
@media(max-width:560px){
  .todo-bar{gap:8px;flex-wrap:wrap;align-items:center}
  .todo-bar .seg{height:40px;box-sizing:border-box}
  .todo-bar #tSeg{display:flex;flex:1 1 auto;min-width:0;order:1}
  .todo-bar #tSeg button{flex:1 1 0;min-width:0;padding:0 3px;display:flex;align-items:center;justify-content:center;gap:3px;white-space:nowrap;flex-wrap:nowrap;font-size:12.5px}
  .todo-bar #tSeg .seg-c{min-width:15px;height:15px;padding:0 4px;margin-left:2px;font-size:10px}
  .todo-bar #tViewSeg{flex:0 0 auto;display:flex;order:2}
  .todo-bar #tViewSeg button{flex:0 0 auto;width:40px;padding:0;display:flex;align-items:center;justify-content:center}
  .todo-bar .seg,.todo-bar .seg.mini{height:40px}
  .todo-bar #tTagFilter{order:3;flex:1 1 auto;width:auto;min-width:0;max-width:none;height:40px}
  .todo-barsp{display:none}
  .todo-bar .icon-btn{width:40px;height:40px;order:4}
  .todo-cards{grid-template-columns:1fr;gap:9px}
}

/* 底部「待办」Tab 在待办页变为凸起的圆形「+」快速添加钮 */
@media(max-width:760px){
  .titem.as-add,.titem.as-add .tile-icon{-webkit-tap-highlight-color:transparent}
  .titem.as-add .tile-icon,.titem.as-add.active .tile-icon{width:48px;height:48px;border-radius:50%;
    background:linear-gradient(140deg,#ffb23a,#f97316);color:#fff;transform:translateY(-12px);
    box-shadow:0 8px 16px -8px rgba(249,115,22,.5),inset 0 1px 0 rgba(255,255,255,.35)}
  .titem.as-add .tile-icon::after{display:block;border-radius:50%}
  .titem.as-add .tile-icon svg{width:25px;height:25px;color:#fff;stroke-width:2.2}
  .titem.as-add:active .tile-icon{transform:translateY(-12px) scale(.92);
    box-shadow:0 3px 7px -5px rgba(249,115,22,.32),inset 0 1px 0 rgba(255,255,255,.35)}
  .titem.as-add .tlabel{color:#f97316;font-weight:700}
}

/* ============================================================
   v1.17.2 热修⑥：网盘工具条统一美化 + 手机紧凑 + 生日/资产空态行距
   ============================================================ */
.files-toolbar{align-items:center}
.files-toolbar .btn{height:38px}
.files-toolbar .btn:disabled{opacity:.45;pointer-events:none}
.files-toolbar #fRefresh{flex:0 0 auto;width:42px;height:38px;padding:0;border:1px solid var(--line);background:var(--field);
  border-radius:11px;display:inline-flex;align-items:center;justify-content:center;color:var(--tx2)}
.files-toolbar #fRefresh:hover{border-color:var(--cy);color:var(--cy)}
.files-toolbar #fRefresh svg{width:17px;height:17px}
/* 回收站激活：柔和浅红描边，不再刺眼红实心 */
.files-toolbar #fTrashBtn.danger{background:rgba(244,63,94,.10);color:#f43f5e;border:1px solid rgba(244,63,94,.38);box-shadow:none}
.files-toolbar #fTrashBtn.danger:hover{background:rgba(244,63,94,.16)}
@media(max-width:760px){
  .files-toolbar{flex-wrap:wrap;gap:8px;margin-bottom:12px}
  .files-toolbar .btn{flex:1 1 0;min-width:0;padding:0 8px;gap:5px;font-size:13px;justify-content:center}
  .files-toolbar .btn svg{width:15px;height:15px;flex:none}
  .files-toolbar #fRefresh{width:40px}
  .files-toolbar .spacer{display:none}
  .files-toolbar #fStat{flex:1 1 100%;justify-content:center;text-align:center}
  #fDrop{padding:16px 14px}
  #fDrop .dz-ico{margin-bottom:2px}
  #fDrop .dz-ico svg{width:30px;height:30px}
  #fDrop .mt12{font-size:12.5px;line-height:1.55}
}
.bd-empty .muted{display:block;max-width:440px;margin:8px auto 0;line-height:1.75}
.bd-empty .btn{margin-top:20px}
#asList .empty .sv-tpl{margin-top:18px}
#asList .empty .muted{display:block;max-width:460px;margin:14px auto 0;line-height:1.75}

/* ============================================================
   v1.17.2 热修⑦：记事本搜索图标归位 + 生日卡片整卡可点 + 解锁页手机全屏
   ============================================================ */
/* 记事本左栏搜索框固定整行，避免绝对定位的放大镜在手机单栏漂出 */
.notes-pane .search.n-search{flex:0 0 auto;width:100%;min-width:0;max-width:none}
/* 生日卡片改为 button 整卡可点：重置按钮默认样式 */
.bd-card{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.bd-card:active{transform:scale(.995)}
@media(max-width:600px){
  .gate{padding:0;align-items:stretch}
  .gate-card{width:100%;max-width:100%;min-height:100%;border-radius:0;border:none;
    padding:max(34px,9vh) 22px calc(26px + env(safe-area-inset-bottom))}
}

/* ============================================================
   v1.18 资金账户：彩色徽章 / 账户管理器弹窗 / 资产页账户总览
   ============================================================ */
.ac-badge{flex:0 0 auto;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.28)}
.ac-badge svg{width:56%;height:56%;stroke-width:1.9}
.ac-badge.sm{width:26px;height:26px}
.ac-badge.sm svg{width:15px;height:15px}

/* 账户管理器（单层 Modal 内 列表/表单 切换） */
.acm-hero{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.acm-hero>div{background:var(--field);border:1px solid var(--line);border-radius:12px;padding:9px 11px;
  display:flex;flex-direction:column;gap:3px;min-width:0}
.acm-hero span{font-size:11px;color:var(--tx2)}
.acm-hero b{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.acm-group{margin-bottom:13px;border:1px solid var(--line);border-radius:14px;padding:11px 12px;background:var(--elev)}
.acm-gtitle{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;color:var(--tx);margin-bottom:9px;flex-wrap:wrap}
.acm-gtitle .muted{font-weight:400;font-size:11.5px}
.acm-gtitle .dot{width:8px;height:8px;border-radius:50%;flex:none}
.acm-rows{display:flex;flex-direction:column;gap:7px}
.acm-empty{font-size:12.5px;color:var(--tx3);padding:6px 2px}
.acm-row{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.acm-row.is-archived{opacity:.5}
.acm-name{font-size:14px;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.acm-sub{font-size:11.5px;color:var(--tx3);margin-top:2px;font-variant-numeric:tabular-nums}
.acm-row .icon-btn{flex:0 0 auto;width:32px;height:32px}
.acm-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}
.acm-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;padding:5px 11px 5px 5px;border-radius:999px;
  border:1px dashed var(--line);background:transparent;color:var(--tx2);cursor:pointer;font-family:inherit}
.acm-chip:active{background:var(--field)}
.acm-chip:disabled,.acm-chip.is-added{opacity:.5;cursor:default;border-style:solid}
.acm-chip.custom{border-style:solid;color:var(--cy);border-color:rgba(var(--blue-rgb),.4)}
.acm-form-head{display:flex;align-items:center;gap:12px;margin-top:12px}
#acMgr{max-height:72vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:2px}
@media(max-width:560px){
  .acm-hero{gap:6px}.acm-hero>div{padding:8px}.acm-hero b{font-size:13px}
  #acMgr{max-height:78vh}
}

/* 资产页：资金账户总览 */
.acctov-sum{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.acctov-sum>div{background:var(--field);border:1px solid var(--line);border-radius:11px;padding:8px 10px;
  display:flex;flex-direction:column;gap:2px;min-width:0}
.acctov-sum span{font-size:11px;color:var(--tx2)}
.acctov-sum b{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.acctov-list{display:flex;flex-direction:column;gap:2px}
.acctov-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid var(--line)}
.acctov-row:last-child{border-bottom:0}
.acctov-name{font-size:13.5px;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.acctov-name .muted{font-weight:400;font-size:11.5px}
.acctov-row>b{font-size:13.5px;font-variant-numeric:tabular-nums;white-space:nowrap;flex:0 0 auto}
@media(max-width:560px){.acctov-sum{grid-template-columns:repeat(2,1fr)}}

/* ============================================================
   v1.19 资产深化：彩色实心账户图标 / 账户表单字段 / 一木风资产页
   ============================================================ */
.ac-badge.ac-glyph{background:transparent!important;box-shadow:none;border-radius:24%;padding:0}
.ac-badge.ac-glyph svg{width:100%!important;height:100%!important;display:block}
.mt8{margin-top:8px}
.af-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.af-grid2 .lbl{margin-bottom:6px}

/* 净资产大卡（一木风浅青绿插画感） */
.as-hero2{position:relative;overflow:hidden;border-radius:18px;padding:16px 18px 18px;margin-bottom:14px;
  border:1px solid rgba(70,214,184,.22);
  background:linear-gradient(135deg,rgba(42,157,143,.20),rgba(10,132,255,.12));
  box-shadow:0 10px 30px rgba(0,0,0,.28)}
.as-hero2::before{content:"";position:absolute;right:-60px;top:-70px;width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle,rgba(70,214,184,.20),transparent 70%);pointer-events:none}
.as-hero2::after{content:"";position:absolute;left:-50px;bottom:-90px;width:180px;height:180px;border-radius:50%;
  background:radial-gradient(circle,rgba(10,132,255,.14),transparent 70%);pointer-events:none}
.as-h2-top{position:relative;display:flex;align-items:center;gap:7px}
.as-h2-label{font-size:12.5px;color:var(--tx2);letter-spacing:.5px}
.as-eye{flex:0 0 auto;width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--tx2)}
.as-eye svg{width:17px;height:17px}
.as-eye:active{background:rgba(255,255,255,.10)}
.as-h2-cfg{position:relative;margin-left:auto;font-size:12.5px;padding:6px 13px;border-radius:999px;
  border:1px solid var(--line-2);color:var(--tx);background:rgba(255,255,255,.06)}
.as-h2-cfg svg{width:14px;height:14px;vertical-align:-2px;margin-right:3px}
.as-h2-main{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-top:12px}
.as-h2-net{font-size:32px;font-weight:800;letter-spacing:-.5px;color:#46d6b8;font-variant-numeric:tabular-nums;line-height:1.1;word-break:break-all}
.as-h2-net.neg{color:var(--danger)}
.as-h2-cells{display:flex;flex-direction:column;gap:7px;text-align:right;flex:0 0 auto}
.as-h2-cell{display:flex;align-items:baseline;gap:8px;justify-content:flex-end}
.as-h2-cell span{font-size:11.5px;color:var(--tx2)}
.as-h2-cell b{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}

/* 三小卡：活钱 / 投资 / 负债 */
.as-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:2px}
.as-trio-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:11px 12px;min-width:0}
.as-trio-t{font-size:12.5px;color:var(--tx2)}
.as-trio-v{font-size:19px;font-weight:800;margin-top:5px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-trio-v.as-neg{color:var(--danger)}
.as-trio-s{font-size:10.5px;color:var(--tx3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-trio-s.as-pos{color:var(--ok)}.as-trio-s.as-neg{color:var(--danger)}

/* 资产分布环形图 */
.as-donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.as-donut{position:relative;width:168px;height:168px;flex:0 0 auto;margin:0 auto}
.as-donut svg{display:block}
.as-donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.as-donut-center span{font-size:10.5px;color:var(--tx2)}
.as-donut-center b{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;max-width:104px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-lg{flex:1;min-width:150px;display:flex;flex-direction:column;gap:9px}
.as-lg-row{display:flex;align-items:center;gap:8px;font-size:13px}
.as-lg-dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto}
.as-lg-name{color:var(--tx)}
.as-lg-pct{font-size:11px;color:var(--tx3);width:40px;text-align:right;font-variant-numeric:tabular-nums}
.as-lg-row b{font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.as-donut-empty{text-align:center;padding:26px 16px;color:var(--tx3)}
.as-donut-ph{width:56px;height:56px;border-radius:50%;background:var(--field);border:1px dashed var(--line-2);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.as-donut-ph svg{width:26px;height:26px}
.as-donut-empty p{font-size:13.5px;color:var(--tx2);margin-bottom:5px}

/* 分组资金账户 */
.as-ag{margin-bottom:11px}
.as-ag:last-child{margin-bottom:0}
.as-ag-head{display:flex;align-items:center;gap:8px;padding:0 2px 7px}
.as-ag-name{font-size:13.5px;font-weight:700;color:var(--tx2)}
.as-ag-head b{font-size:13.5px;font-variant-numeric:tabular-nums}
.as-ag-rows{background:var(--field);border:1px solid var(--line);border-radius:14px;padding:2px 10px}
.as-ag-row{display:flex;align-items:center;gap:11px;padding:9px 2px;border-bottom:1px solid var(--line)}
.as-ag-row:last-child{border-bottom:0}
.as-ag-rname{font-size:14px;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.as-ag-rsub{display:block;font-size:11px;color:var(--tx3);margin-top:2px;font-variant-numeric:tabular-nums}
.as-ag-row>b{font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap;flex:0 0 auto}
.as-acct-empty{text-align:center;padding:22px 16px;color:var(--tx3)}
.as-acct-empty .e-ico{width:50px;height:50px;margin:0 auto 10px}
.as-acct-empty p{font-size:13.5px;color:var(--tx2);margin-bottom:5px}
.as-outside{margin-top:11px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12.5px;
  background:var(--field);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.as-outside svg{width:16px;height:16px;color:var(--warn);flex:0 0 auto}
.as-outside .muted{font-size:11px;width:100%;padding-left:23px}

@media(max-width:560px){
  .af-grid2{gap:8px}
  .as-hero2{padding:14px 15px 16px;border-radius:16px}
  .as-h2-net{font-size:27px}
  .as-h2-cell b{font-size:14.5px}
  .as-trio{gap:7px}.as-trio-card{padding:9px 10px;border-radius:12px}
  .as-trio-v{font-size:16px}.as-trio-t{font-size:12px}.as-trio-s{font-size:10px}
  .as-donut-wrap{gap:14px}.as-donut{width:148px;height:148px}
  .as-lg{min-width:100%}
}
:root[data-theme="light"] .as-hero2{background:linear-gradient(135deg,#dff4ee,#e9f3ff);border-color:rgba(42,157,143,.30)}
:root[data-theme="light"] .as-h2-net{color:#1e9e88}
:root[data-theme="light"] .as-h2-net.neg{color:#e02d3d}
:root[data-theme="light"] .as-h2-cfg{background:rgba(0,0,0,.04)}
:root[data-theme="light"] .as-eye:active{background:rgba(0,0,0,.06)}

/* ============ v1.20 量尺神器 ============ */
.ms-wrap{max-width:840px;margin:0 auto;padding-bottom:22px}
@media(min-width:980px){
  .ms-wrap{width:100%;max-width:none;margin:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:18px;align-items:start}
  .ms-hero{grid-column:1/-1;padding:42px 28px 36px}
  .ms-hero-ic{width:88px;height:88px;border-radius:24px}
  .ms-hero-ic svg{width:46px;height:46px}
  .ms-hero-t{font-size:25px}
  .ms-hero-s{font-size:14.5px;max-width:580px}
  .ms-hero-btns .btn{min-width:196px;height:46px;font-size:15px}
  .ms-dbox{grid-column:1;grid-row:2;margin-top:0}
  .ms-rec{grid-column:2;grid-row:2;margin-top:0}
  .ms-wrap:not(:has(.ms-dbox)) .ms-rec{grid-column:1/-1}
  .ms-rec-thumb{width:66px;height:66px}
  .ms-rec-item{padding:11px 6px}
}
.ms-hero{padding:32px 20px 28px;text-align:center}
.ms-hero-ic{width:78px;height:78px;margin:0 auto 14px;border-radius:22px;display:grid;place-items:center;
  background:linear-gradient(135deg,#ffb320,#ff8200);color:#fff;box-shadow:0 12px 28px rgba(255,150,0,.32)}
.ms-hero-ic svg{width:40px;height:40px}
.ms-hero-t{font-size:21px;font-weight:800;color:var(--tx)}
.ms-hero-s{font-size:13.5px;color:var(--tx2);margin:8px auto 18px;max-width:430px;line-height:1.65}
.ms-hero-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.ms-hero-btns .btn{min-width:150px}
.ms-hero-row{display:flex;align-items:center;gap:12px}
.ms-hero:has(.ms-hero-row){padding:14px 16px;text-align:left}
.ms-hero-row .ms-hero-ic{width:48px;height:48px;margin:0;border-radius:14px;flex:none}
.ms-hero-row .ms-hero-ic svg{width:26px;height:26px}
.ms-hero-row .ms-hero-btns{flex:1;justify-content:flex-start;margin:0}
@media(min-width:980px){
  .ms-hero:has(.ms-hero-row){padding:16px 18px}
  .ms-hero-row .ms-hero-ic{width:48px;height:48px;border-radius:14px}
  .ms-hero-row .ms-hero-ic svg{width:26px;height:26px}
}
@media(max-width:560px){
  .ms-hero-row{flex-wrap:wrap}
  .ms-hero-row .ms-hero-btns{flex:1 1 200px}
  .ms-hero-row .ms-hero-btns .btn{min-width:0;flex:1}
}
.ms-steps{margin:10px 0 0;padding-left:20px;color:var(--tx2);font-size:13.5px;line-height:1.9}
.ms-steps b{color:var(--tx)}
.ms-stage-card{padding:8px}
.ms-stage{position:relative;background:#0c0d10;border-radius:14px;min-height:220px;display:flex;align-items:center;justify-content:center;overflow:hidden}
#msCanvas{display:block;touch-action:none;border-radius:8px;max-width:100%;height:auto;background:#0c0d10}
#msLoupe{position:absolute;width:120px;height:120px;border-radius:50%;display:none;pointer-events:none;z-index:6;background:#0c0d10;box-shadow:0 8px 26px rgba(0,0,0,.5)}
.ms-hint{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:2;max-width:94%;
  background:rgba(0,0,0,.62);color:#fff;font-size:12.5px;line-height:1.4;padding:7px 13px;border-radius:999px;text-align:center;pointer-events:none}
.ms-seg{display:flex;background:var(--field);border:1px solid var(--line);border-radius:12px;padding:3px;gap:3px}
.ms-seg button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:40px;
  border:0;border-radius:9px;background:transparent;color:var(--tx2);font-size:13.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.ms-seg button svg{width:17px;height:17px}
.ms-seg button.on{background:#2f6bff;color:#fff;box-shadow:0 3px 10px rgba(47,107,255,.32)}
.ms-modes button.on{background:linear-gradient(135deg,#ffb320,#ff8200);color:#fff;box-shadow:0 3px 10px rgba(255,138,0,.30)}
.ms-units{margin-top:8px}
.ms-tool-row{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.ms-wrap .spacer{flex:1}
.ms-r-empty{font-size:13.5px;color:var(--tx2);background:var(--field);border:1px dashed var(--line);border-radius:12px;padding:15px;text-align:center;line-height:1.65}
.ms-r-row{display:flex;align-items:center;gap:10px;padding:10px 6px;border-bottom:1px solid var(--line)}
.ms-r-row:last-child{border-bottom:0}
.ms-r-no{flex:0 0 auto;min-width:34px;text-align:center;font-size:12.5px;font-weight:700;color:#fff;background:#ff3b30;border-radius:8px;padding:4px 9px}
.ms-r-idx{font-size:11.5px}
.ms-r-val{font-size:16px;font-weight:800;color:var(--tx);font-variant-numeric:tabular-nums}
.ms-r-row .btn{padding:6px 9px;min-height:34px}
.ms-r-row .btn svg{width:16px;height:16px}
.ms-actions .block{width:100%;justify-content:center;min-height:48px;font-size:15px}
.ms-act-row{display:flex;gap:10px;margin-top:10px}
.ms-act-row .btn{flex:1;justify-content:center;min-height:46px}
.ms-cal-row{display:flex;gap:8px;margin:12px 0 10px}
.ms-cal-row .input{flex:1}
.ms-cal-pre{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.ms-cal-pre .btn{min-height:34px;font-size:12.5px}
.ms-hist{display:flex;flex-direction:column}
.ms-hi-row{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line);font-size:12.5px}
.ms-hi-row:last-child{border-bottom:0}
.ms-hi-name{font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46%}
.ms-hi-row .muted{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(min-width:761px){.ms-stage{min-height:360px}.ms-hero-btns .btn{min-width:172px}}

/* ===== 量尺沉浸式全屏编辑器 ===== */
.ms-editor{position:fixed;inset:0;z-index:100;background:#0c0d10;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.mse-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:10px 14px;background:#15161b;color:#fff}
.mse-x{flex:0 0 auto;width:38px;height:38px;border-radius:50%;border:0;background:rgba(255,255,255,.1);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mse-x svg{width:20px;height:20px}
.mse-x:active{background:rgba(255,255,255,.22)}
.mse-status{flex:1 1 auto;min-width:0;text-align:center;font-size:13px;color:rgba(255,255,255,.82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mse-done{flex:0 0 auto;border:0;cursor:pointer;color:#fff;font-size:15px;font-weight:700;padding:9px 22px;border-radius:19px;background:linear-gradient(135deg,#3b82f6,#2f6bff);box-shadow:0 4px 14px rgba(47,107,255,.4)}
.mse-done:active{filter:brightness(.92)}
.mse-stage{flex:1 1 auto;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:8px;min-height:0;background:#0c0d10}
.mse-stage #msCanvas{background:#0c0d10}
.mse-chips{position:absolute;left:0;right:0;bottom:10px;display:none;gap:8px;overflow-x:auto;padding:0 12px;pointer-events:none;scrollbar-width:none;z-index:5}
.mse-chips::-webkit-scrollbar{display:none}
.mse-chip{flex:0 0 auto;background:rgba(20,20,24,.8);border:1px solid rgba(255,59,48,.55);color:#fff;font-size:13px;padding:6px 12px;border-radius:16px}
.mse-chip b{color:#ff6b62;margin-right:4px}
.mse-selbar{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:20;display:flex;align-items:center;gap:8px;max-width:calc(100% - 20px);background:rgba(20,22,28,.94);backdrop-filter:blur(6px);border:1px solid rgba(255,214,10,.45);border-radius:999px;padding:5px 6px 5px 14px;box-shadow:0 6px 20px rgba(0,0,0,.4)}
.mse-selbar[hidden]{display:none}
.mse-sel-info{color:#fff;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:34vw}
.mse-sb{appearance:none;border:none;border-radius:999px;height:36px;padding:0 15px;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-size:13px;font-weight:700;line-height:1;background:rgba(255,255,255,.16);color:#fff;white-space:nowrap;cursor:pointer;transition:background .15s,transform .1s}
.mse-sb svg{width:16px;height:16px;flex:0 0 auto;display:block}
.mse-sb:active{transform:scale(.95);background:rgba(255,255,255,.3)}
.mse-sb.danger{background:linear-gradient(135deg,#ff5a4d,#ff3028);box-shadow:0 5px 14px -5px rgba(255,59,48,.75)}
.mse-sb.danger:active{background:linear-gradient(135deg,#ff6a5e,#ff4038)}
.mse-sel-x{appearance:none;border:none;width:32px;height:32px;border-radius:50%;background:transparent;color:rgba(255,255,255,.75);display:grid;place-items:center;flex:0 0 auto;cursor:pointer}
.mse-sel-x svg{width:17px;height:17px}
.mse-bar{flex:0 0 auto;background:#15161b;border-top:1px solid rgba(255,255,255,.08);padding:10px 12px 12px;display:flex;flex-direction:column;gap:9px}
.mse-line{display:flex;align-items:center;gap:9px}
.mse-grow{flex:1 1 auto;display:flex;min-width:0}
.mse-bar .ms-seg{flex:1;display:flex;background:rgba(255,255,255,.09);border-radius:10px;padding:3px;gap:2px}
.mse-bar .ms-seg button{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;background:transparent;color:rgba(255,255,255,.68);border:0;box-shadow:none;border-radius:8px;padding:9px 2px;font-size:13.5px;font-weight:600;white-space:nowrap}
.mse-bar .ms-seg button svg{width:16px;height:16px}
.mse-bar .ms-units button.on{background:#2f6bff;color:#fff;box-shadow:0 3px 10px rgba(47,107,255,.35)}
.mse-bar .ms-modes button.on{background:linear-gradient(135deg,#ffb320,#ff8200);color:#fff;box-shadow:0 3px 10px rgba(255,138,0,.35)}
.mse-ibtn{flex:0 0 auto;width:42px;height:40px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);color:rgba(255,255,255,.85);display:flex;align-items:center;justify-content:center;cursor:pointer}
.mse-ibtn svg{width:19px;height:19px}
.mse-ibtn:active{background:rgba(255,255,255,.18)}
@media(min-width:761px){.mse-bar{padding-left:max(12px,calc(50% - 360px));padding-right:max(12px,calc(50% - 360px))}.mse-top{padding-left:max(14px,calc(50% - 360px));padding-right:max(14px,calc(50% - 360px))}}

/* ===== 量尺空态：精简 hero + 帮助 + 最近保存记录 ===== */
.ms-hero-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.ms-hero-top .ms-hero-ic{width:56px;height:56px;border-radius:16px;margin:0}
.ms-hero-top .ms-hero-ic svg{width:30px;height:30px}
.ms-help-btn{flex:0 0 auto;width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--field);color:var(--tx2);display:flex;align-items:center;justify-content:center;cursor:pointer}
.ms-help-btn svg{width:19px;height:19px}
.ms-help-btn:active{background:var(--line)}
.ms-rec-list{display:flex;flex-direction:column}
.ms-rec-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);padding:9px 4px;cursor:pointer;border-radius:8px}
.ms-rec-item:last-child{border-bottom:0}
.ms-rec-item:active{background:var(--field)}
.ms-rec-thumb{flex:0 0 auto;width:58px;height:58px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#0c0d10}
.ms-rec-meta{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.ms-rec-dims{font-size:14px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ms-rec-meta .muted{font-size:12px}
.ms-rec-go{flex:0 0 auto;color:var(--tx2);display:flex}
.ms-rec-go svg{width:20px;height:20px}
.ms-rec-empty{font-size:13px;color:var(--tx2);border:1px dashed var(--line);border-radius:12px;background:var(--field);padding:18px;text-align:center;line-height:1.6}

/* ===== 编辑器：撤销/重做禁用态、文字缩放钮 ===== */
.mse-ibtn:disabled{opacity:.32;pointer-events:none}
.mse-ab{font-size:14px;font-weight:800;letter-spacing:-.5px}

/* ===== 标注样式面板 ===== */
.mst-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 14px}
.mst-row>span{font-size:14px;font-weight:700;color:var(--tx)}
.mst-ctl{display:flex;align-items:center;gap:8px}
.mst-ctl .btn{min-height:38px;padding:0 14px;font-size:14px}
.mst-pct{min-width:54px;text-align:center;font-size:15px;font-variant-numeric:tabular-nums;color:var(--tx)}
.mst-block{margin-bottom:14px}
.mst-block:last-child{margin-bottom:2px}
.mst-label{font-size:13px;color:var(--tx2);margin-bottom:7px}
.mst-arrow{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:transparent;border:0;padding:0}
.mst-arrow button{flex:none;min-height:38px}

/* ===== v1.20.7 草稿箱 + 手机窄屏工具条收紧 ===== */
.mse-bar{gap:7px}
.mse-line{gap:7px}
.mse-ibtn{width:40px;height:38px;border-radius:9px}
.mse-ibtn.mse-ab{width:42px}
.ms-dbox .card-title{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ms-dbox-item{position:relative}
.ms-dbox-del{flex:0 0 auto;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--field);color:var(--tx2);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.ms-dbox-del svg{width:17px;height:17px}
.ms-dbox-del:active{background:rgba(255,59,48,.14);color:var(--danger);border-color:var(--danger)}
@media(max-width:420px){
  .mse-bar{padding:8px 8px 10px}
  .mse-ibtn{width:38px;height:38px}
  .mse-bar .ms-seg button{font-size:12.5px;padding:9px 1px;gap:3px}
  .mse-bar .ms-seg button svg{width:15px;height:15px}
}

/* ===== 列表行向左滑露出操作（量尺草稿/记录；手机手势，PC 常显） ===== */
.swipe-row{position:relative;overflow:hidden}
.swipe-row.ms-rec-item{padding:0}
.swipe-content{position:relative;z-index:1;flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:12px;padding:9px 4px;background:var(--panel);border-radius:8px;touch-action:pan-y}
.swipe-actions{position:absolute;top:0;right:0;height:100%;display:flex;z-index:0}
.swa{flex:0 0 auto;width:74px;border:0;border-radius:0;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:12px;font-weight:600;cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent}
.swa svg{width:20px;height:20px}
.swa-del{background:#ff3b30}
.swa-share{background:#2f6bff}
.swa:active{filter:brightness(1.1)}
/* 宽屏（PC / 触屏一体机，不依赖 hover）：操作钮常显并固定到每行右侧，小巧低饱和、只留图标；窄屏仍走左滑实色块 */
@media(min-width:721px){
  .swipe-row{overflow:visible}
  .swipe-content{order:1;flex:1 1 auto}
  .swipe-actions{position:static;order:2;flex:0 0 auto;height:auto;align-self:center;gap:8px;margin-right:2px;background:transparent}
  .swa{position:static;width:36px;height:36px;border-radius:10px;flex-direction:row;gap:0;background:transparent;border:1px solid var(--line);color:var(--tx3)}
  .swa span{display:none}
  .swa svg{width:17px;height:17px}
  .swa-share{color:#3d74ff;background:rgba(47,107,255,.10);border-color:rgba(47,107,255,.22)}
  .swa-del{color:#ff7a72;background:rgba(255,59,48,.08);border-color:rgba(255,59,48,.18)}
  .swa-share:hover{background:rgba(47,107,255,.18);color:#2f6bff}
  .swa-del:hover{background:rgba(255,59,48,.16);color:#ff3b30}
}

/* ===== 网络导航：卡片/列表拖拽排序手柄 ===== */
.sys-row .sr-grip,.sys-line .sl-grip{flex:0 0 auto;opacity:.45;touch-action:none;cursor:grab}
.sys-row .sr-grip svg,.sys-line .sl-grip svg{width:16px;height:16px}
.sys-row:hover .sr-grip,.sys-line:hover .sl-grip{opacity:.95;color:var(--cy)}
.sys-row .sr-grip:active,.sys-line .sl-grip:active{cursor:grabbing;color:var(--cy)}
@media(hover:none){
  .sys-row .sr-grip,.sys-line .sl-grip{opacity:.5}
}

/* ===== 仪表盘「常用工具」 + 工具弹窗（计算器 / 大写 / 拼音） ===== */
.tools-rest-head{margin-top:18px}
.tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px}
.tool-tile{display:flex;flex-direction:column;align-items:center;gap:9px;padding:15px 8px;border-radius:14px;border:1px solid var(--line);
  background:var(--card);color:var(--tx);font-size:12.5px;font-weight:600;cursor:pointer;
  transition:transform .15s,border-color .15s,box-shadow .15s}
.tool-tile:hover{transform:translateY(-2px);border-color:var(--line-2);box-shadow:0 12px 26px -18px rgba(0,0,0,.45)}
.tool-tile .tile-icon{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center}
.tool-tile .tile-icon svg{width:23px;height:23px}
.calc{user-select:none}
.calc-screen{background:var(--field);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:12px;text-align:right;
  min-height:76px;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}
.calc-ex{font-size:12px;color:var(--tx3);min-height:16px;font-family:var(--mono);word-break:break-all;line-height:1.4}
.calc-val{font-size:30px;font-weight:700;color:var(--tx);font-family:var(--mono);line-height:1.2;word-break:break-all}
.calc-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.calc-keys button{height:50px;border-radius:13px;border:1px solid var(--line);background:var(--card);color:var(--tx);font-size:19px;font-weight:600;
  cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .08s,background .15s}
.calc-keys button svg{width:19px;height:19px}
.calc-keys button:active{transform:scale(.94)}
.calc-keys button.op{background:rgba(var(--blue-rgb),.12);color:var(--blue);border-color:rgba(var(--blue-rgb),.3);font-size:22px}
.calc-keys button.fn{background:var(--field);color:var(--tx2)}
.calc-keys button.eq{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 8px 18px -10px rgba(var(--blue-rgb),.9)}
.calc-keys button.zero{grid-column:span 2}
.rmb-out{margin-top:8px;min-height:48px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--field);
  font-size:17px;font-weight:700;color:var(--tx);line-height:1.6;word-break:break-all;display:flex;align-items:center}
.rmb-tool .btn{margin-top:12px}
.py-out{margin-top:8px;padding:11px 13px;border-radius:12px;border:1px solid var(--line);background:var(--field);
  font-size:14px;font-weight:600;color:var(--tx);font-family:var(--mono);line-height:1.7;word-break:break-all;white-space:pre-wrap}
.py-btns{display:flex;gap:10px;margin-top:12px}
@media(max-width:560px){
  .tools-grid{grid-template-columns:repeat(4,1fr)}
  .calc-keys button{height:46px}
}

/* ===== 工具：显示框内复制钮 ===== */
.copy-field{position:relative;display:flex;align-items:stretch;margin-top:8px}
.copy-field .rmb-out,.copy-field .py-out{margin-top:0;flex:1;min-width:0;padding-right:46px}
.field-copy{position:absolute;right:8px;top:8px;width:32px;height:32px;border-radius:9px;border:1px solid var(--line);
  background:var(--card);color:var(--tx2);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;transition:.12s}
.field-copy svg{width:16px;height:16px}
.field-copy:hover{color:var(--blue);border-color:rgba(var(--blue-rgb),.45)}
.field-copy:active{transform:scale(.92)}

/* ===== 计算器：历史分组 + 勾选合计 ===== */
.calc-hist-wrap{margin-top:14px;padding-top:11px;border-top:1px solid var(--line)}
.calc-hist-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.calc-hist-head .h-title{font-size:13px;font-weight:700;color:var(--tx2);display:flex;align-items:center;gap:6px}
.calc-hist-head .h-title svg{width:15px;height:15px}
.calc-hist-acts{display:flex;gap:4px;flex:none}
.calc-hist-acts button{font-size:12px;color:var(--blue);background:none;border:none;cursor:pointer;padding:3px 8px;border-radius:7px}
.calc-hist-acts button:hover{background:rgba(var(--blue-rgb),.1)}
.calc-hist{max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.calc-hrow{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:11px;border:1px solid var(--line);
  background:var(--field);cursor:pointer;transition:border-color .12s,background .12s}
.calc-hrow.on{border-color:rgba(var(--blue-rgb),.55);background:rgba(var(--blue-rgb),.09)}
.calc-hcheck{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-2);flex:none;display:flex;align-items:center;justify-content:center;background:transparent}
.calc-hcheck svg{width:12px;height:12px;opacity:0;color:#fff}
.calc-hrow.on .calc-hcheck{background:var(--grad);border-color:transparent}
.calc-hrow.on .calc-hcheck svg{opacity:1}
.calc-hno{width:34px;flex:none;font-size:11px;color:var(--tx3);font-family:var(--mono)}
.calc-hex{flex:1;min-width:0;font-size:12.5px;color:var(--tx3);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calc-hres{font-size:15px;font-weight:700;color:var(--tx);font-family:var(--mono);flex:none}
.calc-hist-empty{font-size:12px;color:var(--tx3);text-align:center;padding:18px 12px;line-height:1.8;border:1px dashed var(--line);border-radius:11px}
.calc-sum{margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:11px 15px;border-radius:13px;background:var(--grad);color:#fff}
.calc-sum .cs-l{font-size:13px;opacity:.94}
.calc-sum .cs-l b{font-weight:800}
.calc-sum .cs-r{display:flex;align-items:center;gap:10px}
.calc-sum .cs-v{font-size:21px;font-weight:800;font-family:var(--mono)}
.calc-sum .cs-copy{background:rgba(255,255,255,.2);border:none;color:#fff;width:30px;height:30px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.calc-sum .cs-copy svg{width:15px;height:15px}
.calc-sum .cs-copy:active{transform:scale(.92)}

/* ===== 主页倒计时显示牌（未到事项按目标时间先后成牌，最近一张高亮） ===== */
.cd-sec{margin-top:14px}
.cd-board-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:10px}
.cd-board-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;color:var(--tx)}
.cd-board-title svg{width:19px;height:19px;color:#fb923c}
.cd-board-n{min-width:20px;height:20px;padding:0 7px;border-radius:10px;background:linear-gradient(140deg,#fbbf24,#fb923c);
  color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center}
.cd-board-manage{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--tx2);
  border:1px solid var(--line);background:var(--field);border-radius:10px;padding:6px 11px;cursor:pointer;transition:.12s}
.cd-board-manage svg{width:15px;height:15px}
.cd-board-manage:hover{color:var(--tx);border-color:rgba(251,146,60,.5)}
.cd-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:11px}
.cdc{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:15px;padding:13px 14px 12px;
  background:var(--field);display:flex;flex-direction:column;align-items:center;gap:7px;transition:transform .12s,box-shadow .12s}
.cdc-name{font-size:13px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  width:100%;text-align:center}
.cdc-fig{display:flex;align-items:baseline;justify-content:center;gap:6px;width:100%}
.cdc-num{font-size:38px;font-weight:800;line-height:1;letter-spacing:-1px;color:#ea580c;font-family:var(--mono)}
.cdc-unit{font-size:13px;font-weight:700;color:var(--tx2)}
.cdc-sub{font-size:11.5px;color:var(--tx3);font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  width:100%;text-align:center}
.cdc.hot{background:linear-gradient(140deg,#fbbf24,#fb923c);border-color:transparent;
  box-shadow:0 12px 26px -14px rgba(251,146,60,.85)}
.cdc.hot .cdc-num{color:#fff}
.cdc.hot .cdc-name{color:#fff}
.cdc.hot .cdc-unit{color:rgba(255,255,255,.9)}
.cdc.hot .cdc-sub{color:rgba(255,255,255,.85)}
.cdc.is-due{border-color:rgba(239,68,68,.55);background:linear-gradient(135deg,rgba(239,68,68,.14),rgba(251,146,60,.10));animation:cdpulse 1.4s ease-in-out infinite}
.cdc.is-due .cdc-num{font-size:26px;color:#dc2626}
.cdc.is-today .cdc-num{font-size:25px}
/* 卡片末尾的“添加”小卡：虚线边框、与倒计时卡等高，点击快速新增 */
.cdc-add{border:1.5px dashed var(--line-2);background:transparent;color:var(--tx3);cursor:pointer;
  width:100%;justify-content:center;gap:8px}
.cdc-add .cdc-add-ic{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(140deg,#fbbf24,#fb923c);color:#fff;transition:transform .12s}
.cdc-add .cdc-add-ic svg{width:18px;height:18px}
.cdc-add .cdc-add-tx{font-size:12.5px;font-weight:700;color:var(--tx2)}
.cdc-add:hover{border-color:rgba(251,146,60,.6)}
.cdc-add:hover .cdc-add-ic{transform:scale(1.08)}
@keyframes cdpulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}50%{box-shadow:0 0 0 4px rgba(239,68,68,.12)}}
.cd-addcard{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:26px 18px;
  border:1.5px dashed var(--line-2);border-radius:15px;background:transparent;color:var(--tx2);cursor:pointer;transition:.12s}
.cd-add-ic{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(140deg,#fbbf24,#fb923c);color:#fff}
.cd-add-ic svg{width:20px;height:20px}
.cd-add-tx{font-size:14px;font-weight:700;color:var(--tx)}
.cd-addcard small{font-size:11.5px;color:var(--tx3)}
.cd-addcard:hover{border-color:rgba(251,146,60,.5)}
/* 倒计时管理容器：全屏弹窗 modal-body 内边距为 0，由本盒统一留白，内容不贴边 */
.cd-mgrbox{padding:16px 18px;box-sizing:border-box;min-width:0}
/* 倒计时全屏管理页：内边距随安全区，列表高度放开随页面滚动 */
.cd-page .cd-mgrbox{padding:14px 14px calc(14px + env(safe-area-inset-bottom,0px))}
.cd-page .cd-mgrbox .cdm-list{max-height:none}
@media(max-width:560px){
  .cd-cards{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:9px}
  .cdc-num{font-size:32px}
}

/* ===== 倒计时管理面板 ===== */
.cdm-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.cdm-count{font-size:12.5px;color:var(--tx3)}
.cdm-count b{color:var(--tx2)}
.cdm-spacer{flex:1}
#cdmSound.off{color:var(--tx3)}
.cdm-list{display:flex;flex-direction:column;gap:9px;max-height:56vh;overflow-y:auto;padding-right:2px}
.cdm-item{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:13px;padding:11px 13px;background:var(--field);position:relative;overflow:hidden}
.cdm-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(#fbbf24,#fb923c)}
.cdm-item.is-due{border-color:rgba(239,68,68,.5);background:linear-gradient(135deg,rgba(239,68,68,.10),rgba(251,146,60,.06))}
.cdm-item.is-due::before{background:linear-gradient(#ef4444,#f97316)}
.cdm-item.is-past{opacity:.55}
.cdm-item.is-past::before{background:var(--line-2)}
.cdm-info{flex:1;min-width:0}
.cdm-name{font-size:14.5px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cdm-when{font-size:12px;color:var(--tx3);margin-top:2px;font-family:var(--mono)}
.cdm-eta{flex:none;display:flex;align-items:baseline;gap:3px;font-family:var(--mono)}
.cdm-eta b{font-size:24px;font-weight:800;color:#ea580c;line-height:1}
.cdm-eta i{font-style:normal;font-size:12px;color:var(--tx2);margin-right:5px}
.cdm-eta em{font-style:normal;font-size:13px;color:var(--tx2);font-weight:600}
.cdm-eta .cdm-now{font-size:17px;color:#dc2626;font-weight:800}
.cdm-pasttxt{font-size:13px;color:var(--tx3)}
.cdm-del{flex:none;width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--tx3);
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.12s}
.cdm-del svg{width:16px;height:16px}
.cdm-del:hover{color:#fff;background:#ef4444;border-color:#ef4444}
.cdm-edit{flex:none;width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--tx3);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.12s}
.cdm-edit svg{width:16px;height:16px}
.cdm-edit:hover{color:#fff;background:var(--cy);border-color:var(--cy)}
.cdm-eta .cdm-hms{font-size:19px;letter-spacing:.5px;white-space:nowrap}
.cdm-empty{display:flex;align-items:center;gap:13px;padding:30px 18px;border:1px dashed var(--line-2);border-radius:14px;color:var(--tx3);font-size:14px;text-align:left}
.cdm-empty svg{width:30px;height:30px;flex:none;color:#fb923c}
.cdm-empty small{color:var(--tx3);font-size:12px;line-height:1.7}
.cdm-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.cdm-hint{margin-top:10px;font-size:12.5px;color:var(--blue);background:rgba(var(--blue-rgb),.08);border-radius:10px;padding:8px 11px;min-height:16px}
/* 表单内嵌（列表 / 表单同面板切换，不叠弹窗） */
.cd-add .lbl{display:block;margin-bottom:6px}
.cd-add .input{width:100%;box-sizing:border-box}
.cd-form-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.cd-form-foot .btn{min-width:96px}
.cdm-del.confirm{background:#ef4444;border-color:#ef4444;color:#fff}

/* ===== 到点提醒弹窗 ===== */
.cd-fire{display:flex;flex-direction:column;gap:10px}
.cd-fire-item{display:flex;align-items:center;gap:13px;padding:14px;border-radius:14px;
  background:linear-gradient(135deg,rgba(239,68,68,.10),rgba(251,146,60,.08));border:1px solid rgba(239,68,68,.3)}
.cd-fire-ic{width:44px;height:44px;border-radius:13px;flex:none;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(140deg,#ef4444,#f97316);color:#fff;animation:cdshake 1s ease-in-out infinite}
.cd-fire-ic svg{width:23px;height:23px}
@keyframes cdshake{0%,100%{transform:rotate(0)}20%{transform:rotate(-10deg)}40%{transform:rotate(9deg)}60%{transform:rotate(-6deg)}80%{transform:rotate(4deg)}}
.cd-fire-name{font-size:16px;font-weight:800;color:var(--tx)}
.cd-fire-time{font-size:12.5px;color:var(--tx2);margin-top:3px;font-family:var(--mono)}
@media(max-width:560px){
  .cdm-list{max-height:52vh}
  .cdm-eta b{font-size:20px}
  .cdm-eta .cdm-hms{font-size:15px}
  .cdm-name{font-size:13.5px}
}

/* ===== 老黄历 ===== */
.alm-nav{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.alm-nav-btn{width:38px;height:38px;border-radius:11px;border:1px solid #e5e7eb;background:#fff;color:#4b5563;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.alm-nav-btn svg{width:18px;height:18px}
.alm-nav-btn:active{transform:scale(.94)}
.alm-date{flex:1;min-width:0}
.alm-today{flex:none}
.alm-hero{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-radius:16px;
  background:linear-gradient(135deg,#b91c1c,#dc2626 55%,#ea580c);color:#fff;box-shadow:0 12px 26px -14px rgba(220,38,38,.7)}
.alm-solar{font-size:26px;font-weight:800;line-height:1.1}
.alm-solar small{font-size:14px;font-weight:600;opacity:.9}
.alm-week{font-size:13px;opacity:.95;margin-top:5px}
.alm-hero-r{text-align:right}
.alm-gz{font-size:17px;font-weight:800;letter-spacing:1px}
.alm-gz-sub{font-size:12px;opacity:.92;margin-top:4px}
.alm-tags{display:flex;flex-wrap:wrap;gap:6px;margin:11px 0 4px}
.alm-tag{font-size:11.5px;padding:3px 10px;border-radius:20px;background:#f3f0e9;color:#6b6255;border:1px solid #e7e0d3}
.alm-yj{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.alm-col{border:1px solid #e7e0d3;border-radius:14px;padding:12px 13px;background:#fff}
.alm-col h4{margin:0 0 9px;font-size:13.5px;display:flex;align-items:center;gap:6px}
.alm-yi h4{color:#16a34a}.alm-ji h4{color:#dc2626}
.alm-col h4 svg{width:16px;height:16px}
.alm-chips{display:flex;flex-wrap:wrap;gap:6px}
.alm-chip{font-size:12.5px;padding:4px 10px;border-radius:9px;line-height:1.3}
.alm-chip.g{background:rgba(22,163,74,.12);color:#15803d}
.alm-chip.b{background:rgba(220,38,38,.10);color:#b91c1c}
.alm-chip.gg{background:rgba(22,163,74,.08);color:#15803d}
.alm-chip.bb{background:rgba(220,38,38,.07);color:#b91c1c}
.alm-none{font-size:12.5px;color:#8a8175}
.alm-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.alm-card{border:1px solid #e7e0d3;border-radius:14px;padding:11px 13px;background:#fff}
.alm-card label{font-size:11.5px;color:#8a8175}
.alm-card small{display:block;font-size:11.5px;color:#8a8175;margin-top:5px;line-height:1.5}
.alm-zx{display:flex;align-items:baseline;gap:7px;margin-top:3px}
.alm-zx b{font-size:22px;font-weight:800}
.alm-zx.g b{color:#16a34a}.alm-zx.b b{color:#dc2626}
.alm-zx span{font-size:12px;font-weight:700;padding:1px 8px;border-radius:6px}
.alm-zx.g span{background:rgba(22,163,74,.14);color:#15803d}
.alm-zx.b span{background:rgba(220,38,38,.12);color:#b91c1c}
.alm-cs{font-size:14px;font-weight:700;color:#2b2620;margin-top:3px;font-family:ui-monospace,"SF Mono","Cascadia Code",Consolas,monospace}
.alm-pos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px}
.alm-pos-item{border:1px solid #e7e0d3;border-radius:14px;padding:12px 8px;text-align:center;background:#fff}
.alm-pos-item .pi{display:inline-flex;width:30px;height:30px;border-radius:50%;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:15px;margin-bottom:6px}
.pi.xi{background:linear-gradient(140deg,#f59e0b,#ea580c)}
.pi.fu{background:linear-gradient(140deg,#10b981,#059669)}
.pi.cai{background:linear-gradient(140deg,#eab308,#ca8a04)}
.alm-pos-item label{display:block;font-size:11.5px;color:#8a8175}
.alm-pos-item b{display:block;font-size:15px;font-weight:800;color:#2b2620;margin-top:2px}
.alm-shenbox{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.alm-shen{display:flex;align-items:flex-start;gap:8px;border:1px solid #e7e0d3;border-radius:12px;padding:9px 11px;background:#fff}
.als{flex:none;font-size:12px;font-weight:700;padding:3px 9px;border-radius:8px;margin-top:2px}
.als.g{background:rgba(22,163,74,.14);color:#15803d}.als.b{background:rgba(220,38,38,.12);color:#b91c1c}
.alm-shen .alm-chips{flex:1}
.alm-pengzu{margin-top:10px;font-size:12.5px;color:#5f574c;line-height:1.7;background:#f3f0e9;border:1px solid #e7e0d3;border-radius:12px;padding:10px 12px}
.apz{display:inline-block;font-weight:700;color:#2b2620;margin-right:8px}
.alm-jieqi{margin-top:10px;font-size:12.5px;color:#b45309;background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.3);border-radius:12px;padding:9px 12px;display:flex;align-items:center;gap:7px}
.alm-jieqi svg{width:15px;height:15px;flex:none}
.alm-sc-toggle{width:100%;margin-top:12px;padding:11px;border:1px dashed #d9d2c2;background:transparent;border-radius:12px;color:#5f574c;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px}
.alm-sc-toggle svg{width:16px;height:16px;transition:transform .2s}
.alm-sc-toggle.on svg{transform:rotate(180deg)}
.alm-sc-wrap{margin-top:9px;display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow-y:auto;padding:2px 2px 6px;box-sizing:border-box}
.alm-sc{position:relative;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;background:#fff;box-sizing:border-box;flex:none}
.alm-sc::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#d1d5db}
.alm-sc.is-good::before{background:#16a34a}
.alm-sc.is-bad::before{background:#dc2626}
.alm-sc-h{display:grid;grid-template-columns:60px minmax(0,1fr) auto;align-items:center;column-gap:12px;padding:12px 14px 12px 20px;background:#eef0f3;min-height:54px;box-sizing:border-box}
.alm-sc-z{font-weight:800;font-size:15px;line-height:1.2;letter-spacing:.5px;color:#1f2937;display:flex;align-items:center;white-space:nowrap}
.alm-sc-r{font-size:12.5px;color:#4b5563;font-family:ui-monospace,"SF Mono","Cascadia Code",Consolas,monospace;letter-spacing:.2px;display:flex;align-items:center;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}
.almsc-luck{justify-self:end;align-self:center;flex:none;font-size:12px;font-weight:700;padding:5px 12px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:1;white-space:nowrap;box-sizing:border-box}
.almsc-luck.g{background:rgba(22,163,74,.14);color:#15803d}
.almsc-luck.b{background:rgba(220,38,38,.12);color:#b91c1c}
.alm-sc-b{padding:9px 14px 11px 18px;display:flex;flex-direction:column;gap:5px;box-sizing:border-box}
.alm-sc-gz{font-size:11.5px;color:#6b7280;font-family:ui-monospace,"SF Mono","Cascadia Code",Consolas,monospace;line-height:1.5}
.alm-sc-yj{font-size:12px;color:#374151;line-height:1.6}
.alm-sc-yj b{font-style:normal;margin-right:5px;font-weight:800}
.alm-sc-yj b.g{color:#16a34a}.alm-sc-yj b.b{color:#dc2626}
.alm-err{padding:30px 16px;text-align:center;color:#c0392b;font-size:13.5px}
@media(max-width:560px){
  .alm-yj,.alm-card-grid{grid-template-columns:1fr}
  .alm-solar{font-size:22px}
  .alm-pos{gap:8px}
  .alm-sc-h{grid-template-columns:54px minmax(0,1fr) auto;column-gap:8px;padding:11px 12px 11px 18px;min-height:52px}
  .alm-sc-z{font-size:14.5px;letter-spacing:.2px}
  .alm-sc-r{font-size:11.5px}
  .almsc-luck{padding:4px 9px;font-size:11px;border-radius:7px}
  .alm-sc-b{padding:9px 12px 10px 18px}
  .alm-sc-wrap{max-height:52vh;padding-bottom:calc(92px + env(safe-area-inset-bottom,0px))}
}

/* ===== 在线鲁班尺 ===== */
.lb-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;width:100%;max-width:100%;min-width:0}
.lb-seg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--field);border:1px solid var(--line);border-radius:12px;padding:4px;gap:4px;min-width:0}
.lb-unit{grid-template-columns:repeat(4,minmax(0,1fr))}
.lb-seg button{border:none;background:transparent;color:var(--tx2);font-size:13px;padding:8px 4px;border-radius:9px;cursor:pointer;font-weight:600;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.lb-seg button.on{background:var(--card);color:var(--blue);box-shadow:0 2px 8px -3px rgba(0,0,0,.25)}
.lb-inputs{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-bottom:12px;min-width:0}
.lb-card{border:1px solid var(--line);border-radius:15px;padding:13px 14px;margin-bottom:11px;background:var(--card);width:100%;max-width:100%;box-sizing:border-box;min-width:0}
.lb-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px}
.lb-card-t{font-size:14.5px;font-weight:800;color:var(--tx);display:flex;align-items:center;gap:7px;min-width:0}
.lb-card-t svg{width:18px;height:18px;color:var(--blue);flex:none}
.lb-card-t em{font-style:normal;font-size:12.5px;color:var(--tx3);font-weight:600;font-family:var(--mono)}
.lb-badge{flex:none;width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800;color:#fff}
.lb-badge.g{background:linear-gradient(140deg,#16a34a,#15803d)}
.lb-badge.b{background:linear-gradient(140deg,#ef4444,#b91c1c)}
.lb-ruler{position:relative;display:flex;height:54px;border-radius:10px;overflow:hidden;border:1px solid var(--line);width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.lb-dl{height:46px}
.lb-cell{position:relative;flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:0 2px;text-align:center;min-width:0;overflow:hidden}
.lb-cell b{font-size:16px;font-weight:800;line-height:1}
.lb-cell small{font-size:8.5px;line-height:1.1;color:var(--tx2);opacity:.85;white-space:nowrap;transform:scale(.9)}
.lb-cell.g{background:linear-gradient(180deg,rgba(22,163,74,.22),rgba(22,163,74,.10));color:#15803d}
.lb-cell.b{background:linear-gradient(180deg,rgba(239,68,68,.15),rgba(239,68,66,.06));color:#b91c1c}
.lb-cursor{position:absolute;top:-2px;bottom:-2px;width:2px;background:#111827;z-index:2;transform:translateX(-1px)}
.lb-cursor span{position:absolute;top:-2px;left:50%;transform:translateX(-50%);font-size:9px;color:#111827;line-height:1}
.lb-land{margin-top:10px;font-size:13.5px;font-weight:700;padding:8px 12px;border-radius:10px;text-align:center}
.lb-land.g{background:rgba(22,163,74,.12);color:#15803d}
.lb-land.b{background:rgba(239,68,68,.10);color:#b91c1c}
.lb-land b{font-size:15px}
.lb-desc{margin:9px 2px 0;font-size:12.5px;color:var(--tx2);line-height:1.7}
.lb-rec{margin-top:11px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;min-width:0}
.lbr label{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--tx2);margin-bottom:6px}
.lbr label svg{width:14px;height:14px}
.lbi{display:block;font-size:12px;color:#15803d;background:rgba(22,163,74,.08);border:1px solid rgba(22,163,74,.2);border-radius:9px;padding:6px 9px;margin-bottom:5px;font-family:var(--mono);line-height:1.4}
.lb-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:34px 18px;border:1px dashed var(--line-2);border-radius:14px;color:var(--tx2);font-size:14px}
.lb-empty svg{width:34px;height:34px;color:var(--blue)}
.lb-empty small{color:var(--tx3);font-size:12px;line-height:1.7}
.lb-foot{margin-top:6px;font-size:11.5px;color:var(--tx3);line-height:1.7;background:var(--field);border-radius:10px;padding:9px 11px}
@media(max-width:560px){
  .lb-inputs,.lb-rec{grid-template-columns:minmax(0,1fr)}
  .lb-cell small{display:none}
}

/* ===== 图片压缩与格式转换 ===== */
.im-privacy{display:flex;align-items:center;gap:7px;font-size:12px;color:#0369a1;background:rgba(14,165,233,.1);border:1px solid rgba(14,165,233,.25);border-radius:10px;padding:8px 11px;margin-bottom:11px}
.im-privacy svg{width:15px;height:15px;flex:none}
.im-bar{display:grid;grid-template-columns:1.4fr 1fr 1.2fr;gap:10px;margin-bottom:11px}
.im-field{background:var(--field);border:1px solid var(--line);border-radius:12px;padding:9px 10px}
.im-field>label{display:block;font-size:11.5px;color:var(--tx2);font-weight:700;margin-bottom:7px}
.im-field label b{color:var(--blue)}
.im-seg{display:flex;flex-wrap:wrap;gap:4px}
.im-seg button{flex:1;min-width:44px;border:1px solid var(--line);background:var(--card);color:var(--tx2);font-size:12px;font-weight:600;padding:6px 4px;border-radius:8px;cursor:pointer}
.im-seg button.on{background:var(--blue);border-color:var(--blue);color:#fff}
.im-seg button:disabled{opacity:.4;cursor:not-allowed}
.im-field input[type=range]{width:100%;accent-color:var(--blue)}
.im-maxw{margin-top:8px}
.im-drop{display:flex;align-items:center;justify-content:center;gap:10px;border:2px dashed var(--line-2);border-radius:14px;padding:26px 14px;color:var(--tx2);font-size:13.5px;cursor:pointer;text-align:center;transition:.15s}
.im-drop svg{width:26px;height:26px;color:var(--blue);flex:none}
.im-drop.over{border-color:var(--blue);background:rgba(59,130,246,.07)}
.im-drop b{color:var(--blue)}
.im-list{margin-top:11px;display:flex;flex-direction:column;gap:8px;max-height:42vh;overflow:auto;padding-right:2px}
.im-empty{font-size:12.5px;color:var(--tx3);text-align:center;padding:18px;border:1px dashed var(--line-2);border-radius:12px}
.it-row{display:flex;align-items:center;gap:11px;border:1px solid var(--line);border-radius:13px;padding:8px 10px;background:var(--card)}
.it-thumb{width:52px;height:52px;object-fit:cover;border-radius:9px;background:var(--field);flex:none;border:1px solid var(--line)}
.it-info{flex:1;min-width:0}
.it-name{font-size:13px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.it-meta{font-size:11.5px;color:var(--tx2);margin-top:3px}
.it-meta b{color:var(--tx)}
.it-fmt{font-size:10.5px;color:var(--tx3);margin-top:2px}
.it-pct{font-weight:800;margin-left:4px}
.it-pct.g{color:#16a34a}
.it-pct.r{color:#dc2626}
.it-acts{display:flex;gap:6px;flex:none}
.it-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--field);color:var(--tx2);display:flex;align-items:center;justify-content:center;cursor:pointer}
.it-btn svg{width:17px;height:17px}
.it-btn.dl{color:var(--blue)}
.it-btn.rm{color:#ef4444}
.im-foot{display:flex;align-items:center;gap:9px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}
.im-sum{font-size:12.5px;color:var(--tx2)}
.im-sum b{color:var(--tx)}
.im-spacer{flex:1}
.im-foot-btn{border:none;border-radius:10px;padding:9px 14px;font-size:13px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.im-foot-btn svg{width:16px;height:16px}
.im-foot-btn.ghost{background:var(--field);color:var(--tx2);border:1px solid var(--line)}
.im-foot-btn.primary{background:var(--blue);color:#fff}
@media(max-width:560px){
  .im-bar{grid-template-columns:1fr}
  .it-thumb{width:44px;height:44px}
}

/* ===== IP 归属地查询 ===== */
.ip-mine{display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(135deg,rgba(14,165,233,.12),rgba(59,130,246,.06));border:1px solid rgba(14,165,233,.25);border-radius:13px;padding:12px 14px;flex-wrap:wrap}
.ip-mine-spin{display:inline-block;width:13px;height:13px;border:2px solid rgba(14,165,233,.3);border-top-color:#0ea5e9;border-radius:50%;animation:ipspin .7s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes ipspin{to{transform:rotate(360deg)}}
.ip-mine-label{display:block;font-size:11px;color:var(--tx3);font-weight:700;margin-bottom:2px}
.ip-mine-l b{font-size:17px;font-family:var(--mono);letter-spacing:.3px;color:var(--tx)}
.ip-mine-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
.ip-loc{font-weight:700;color:var(--tx)}
.ip-isp{font-size:12px;color:var(--tx2);background:var(--card);border:1px solid var(--line);padding:3px 9px;border-radius:8px}
.ip-tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:7px;background:rgba(245,158,11,.15);color:#b45309}
.ip-ta{font-family:var(--mono);resize:vertical}
.ip-actions{display:flex;align-items:center;gap:8px;margin-top:9px;flex-wrap:wrap}
.ip-spacer{flex:1}
.ip-results{margin-top:12px}
.ip-table{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ip-tr{display:grid;grid-template-columns:1.3fr 1.4fr .9fr;gap:8px;padding:10px 12px;font-size:12.5px;border-top:1px solid var(--line);align-items:center}
.ip-tr:first-child{border-top:none}
.ip-head{background:var(--field);font-weight:800;color:var(--tx2);font-size:11.5px}
.ip-tr.bad .ip-td-loc{color:#dc2626}
.ip-td-ip{font-family:var(--mono);font-weight:700;color:var(--tx);display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ip-td-ip em{font-style:normal}
.ip-td-loc{color:var(--tx2)}
.ip-td-isp{color:var(--tx2);font-size:12px}
.ip-note{margin-top:11px;font-size:11.5px;color:var(--tx3);line-height:1.7;display:flex;gap:7px;align-items:flex-start;background:var(--field);border-radius:10px;padding:9px 11px}
.ip-note svg{width:15px;height:15px;flex:none;margin-top:1px}
@media(max-width:560px){
  .ip-tr{grid-template-columns:1fr 1fr;gap:4px 8px}
  .ip-td-isp{grid-column:1/-1}
  .ip-mine{flex-direction:column;align-items:flex-start}
}

/* ============================ 报销（对标一木记账） ============================ */
.tag.slate{background:rgba(148,163,184,.16);color:var(--tx3);border-color:rgba(148,163,184,.32)}
.rb-hero{border-radius:18px;padding:18px;color:#fff;background:linear-gradient(135deg,#22b8c9 0%,#15a3b6 55%,#0f8fa2 100%);box-shadow:0 12px 26px rgba(21,163,182,.28)}
.rb-hero-row{display:flex;gap:10px;flex-wrap:wrap}
.rb-h-cell{flex:1 1 0;min-width:150px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.22);border-radius:13px;padding:12px 14px}
.rb-h-cell span{display:block;font-size:12px;opacity:.92;margin-bottom:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rb-h-cell b{font-size:23px;font-weight:800;letter-spacing:.4px}
.rb-h-cell b.ok{color:#eafffc}
.rb-acctchips{display:flex;gap:8px;flex-wrap:wrap}
.rb-chip{appearance:none;border:1px solid var(--line);background:var(--field);color:var(--tx2);font-size:12.5px;font-weight:700;padding:7px 13px;border-radius:999px;cursor:pointer;transition:.15s;white-space:nowrap}
.rb-chip:hover{border-color:var(--cy);color:var(--cy)}
.rb-chip.on{background:linear-gradient(135deg,#22b8c9,#15a3b6);border-color:transparent;color:#fff;box-shadow:0 5px 13px rgba(21,163,182,.3)}
.rb-item{display:flex;align-items:center;gap:12px;padding:13px 6px;border-bottom:1px solid var(--line)}
.rb-item:last-child{border-bottom:none}
.rb-it-ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:rgba(251,113,133,.12);color:var(--danger)}
.rb-it-ic svg{width:19px;height:19px}
.rb-it-main{flex:1 1 auto;min-width:0}
.rb-it-t{font-size:14.5px;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.rb-it-acct{font-size:11px;font-weight:700;color:#0f8fa2;background:rgba(34,184,201,.12);border:1px solid rgba(34,184,201,.25);padding:1px 8px;border-radius:999px}
.rb-it-s{font-size:12px;color:var(--tx3);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rb-it-prog{font-size:12px;color:var(--tx2);margin-top:4px}
.rb-it-right{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.rb-it-amt{font-size:16px;font-weight:800;color:var(--danger);font-family:var(--mono)}
.rb-it-ops{display:flex;gap:6px}
.rb-it-ops .btn{padding:6px 11px}
.rb-d-head{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--field);border:1px solid var(--line);border-radius:13px;padding:13px 15px;margin-bottom:12px}
.rb-d-cat{font-size:15px;font-weight:800;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rb-d-amt{font-size:19px;font-weight:800;color:var(--danger);font-family:var(--mono)}
.rb-d-rows{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:14px}
.rb-d-rows>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;font-size:13.5px;border-top:1px solid var(--line)}
.rb-d-rows>div:first-child{border-top:none}
.rb-d-rows span{color:var(--tx3)}
.rb-d-rows b{font-weight:700;color:var(--tx);text-align:right}
.rb-d-logtitle{font-size:13px;font-weight:800;color:var(--tx2);margin:4px 0 8px}
.rb-log{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:10px 13px;margin-bottom:8px;background:var(--card)}
.rb-log>div:first-child{flex:1 1 auto;min-width:0}
.rb-log b{font-size:14px}
.rb-log .ok{font-family:var(--mono)}
.rb-d-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.ra-row{display:flex;align-items:center;gap:10px;padding:11px 6px;border-bottom:1px solid var(--line)}
.ra-row:last-child{border-bottom:none}
.ra-name{font-weight:700;font-size:14.5px;display:flex;align-items:center}
.as-reimb svg{color:var(--cy)!important}
.as-reimb .as-pos{color:var(--ok)}
@media(max-width:560px){
  .rb-item{flex-wrap:wrap;padding:12px 2px}
  .rb-it-right{flex-direction:row;align-items:center;width:100%;justify-content:space-between}
  .rb-it-amt{font-size:15px}
  .rb-h-cell{min-width:calc(50% - 5px)}
  .rb-d-actions .btn{flex:1 1 0;justify-content:center}
}

/* ============================ 手机端 AI 小助理：豆包式沉浸对话 ============================ */
.aic-home{display:none}
@media(max-width:760px){
  body.ai-focus #tabbar{display:none!important}
  body.ai-focus .topbar{display:none}
  body.ai-focus .page-scroll{padding:0!important;overflow:hidden}
  body.ai-focus .aic{inset:0;gap:0;padding:0;border-radius:0;border:none;box-shadow:none}
  body.ai-focus .aic-top{flex:0 0 auto;gap:8px;margin:0;max-width:100%;align-items:center;border-radius:0;
    padding:calc(10px + env(safe-area-inset-top)) 12px 9px;border:0;border-bottom:1px solid rgba(var(--cy-rgb),.14);
    background:rgba(0,0,0,.22);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
  body.ai-focus .aic-home{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:0 0 auto;
    border:1px solid rgba(var(--cy-rgb),.22);background:rgba(var(--blue-rgb),.10);color:var(--tx);border-radius:50%;cursor:pointer}
  body.ai-focus .aic-home svg{width:20px;height:20px}
  body.ai-focus .aic-home:active{background:rgba(var(--cy-rgb),.16)}
  body.ai-focus .aic-composer{padding:8px 12px calc(10px + env(safe-area-inset-bottom))}
  body.ai-focus .aic-brand{min-width:0;flex:1 1 auto}
  body.ai-focus .aic-brand .aic-orb-mini{display:none}
  body.ai-focus .aic-brand .s{display:none}
  body.ai-focus .aic.aic-busy .aic-brand .s{display:block;max-width:48vw;font-size:11px;color:var(--cy)}
  body.ai-focus .aic-live{margin:0 12px;width:auto;max-width:none;border-radius:10px;padding:6px 12px}
  body.ai-focus .aic-brand .t{font-size:16px}
  body.ai-focus .aic-modelwrap{flex:0 0 auto}
  body.ai-focus .aic-modelbtn{padding:7px 10px}
  body.ai-focus .aic-modelname{max-width:92px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  body.ai-focus .aic-msgs{padding:12px;gap:12px}
  body.ai-focus .aic-composer{margin:0;padding:8px 12px calc(10px + env(safe-area-inset-bottom));
    border-top:1px solid var(--line);background:var(--panel)}
  body.ai-focus .aic-inputbar{border-radius:22px;padding:8px 10px 8px 14px;gap:8px;align-items:flex-end}
  body.ai-focus .aic-inputbar textarea.input{min-height:46px;max-height:120px;font-size:15px;line-height:1.5;padding:5px 4px}
  body.ai-focus .aic-send{width:40px;height:40px}
}

/* ============================ PC 侧栏折叠：边缘吸附把手 ============================ */
#sbRail{position:fixed;top:50%;left:174px;transform:translate(0,-50%);z-index:60;
  width:16px;height:62px;padding:0;display:none;align-items:center;justify-content:center;
  border:1px solid rgba(255,255,255,.22);border-left:none;border-radius:0 999px 999px 0;cursor:pointer;
  background:linear-gradient(180deg,#1c9bff,#0a84ff);color:#fff;
  box-shadow:0 4px 14px rgba(10,132,255,.4);
  transition:left .28s ease,background .18s ease,box-shadow .18s ease}
#sbRail svg{width:14px;height:14px;stroke-width:2.4}
#sbRail:hover{background:linear-gradient(180deg,#2aa6ff,#1190ff);box-shadow:0 6px 18px rgba(10,132,255,.58)}
@media(min-width:761px){ #sbRail{display:inline-flex} }
body.sb-collapsed #sbRail{left:0;transform:translate(0,-50%);border-radius:0 999px 999px 0;border-left:none}
body.sb-collapsed .sidebar{width:0!important;padding-left:0!important;padding-right:0!important;opacity:0;
  border-right-color:transparent;overflow:hidden;pointer-events:none}
@media(max-width:760px){ #sbRail{display:none!important} }

/* ============================ PC 折叠侧栏后：顶栏横排菜单（水平居中、可横滑、悬停动效） ============================ */
#topNav{display:none;align-items:center;gap:6px;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
#topNav::-webkit-scrollbar{display:none}
@media(min-width:761px){
  body.sb-collapsed .topbar{position:relative}
  body.sb-collapsed .page-title{flex:0 1 auto;min-width:0}
  body.sb-collapsed .page-title h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  body.sb-collapsed .top-right{flex:none;margin-left:0}
  /* 窗口不满屏时菜单占中间剩余宽度，超出可左右拖、滚轮横滑 */
  body.sb-collapsed #topNav{display:flex;position:relative;left:auto;top:auto;transform:none;
    flex:1 1 auto;min-width:0;max-width:none;max-height:100%;
    overflow-x:auto;overflow-y:hidden;justify-content:safe center;
    padding:3px 6px;touch-action:pan-x;cursor:grab;
    scrollbar-width:thin;scrollbar-color:rgba(120,140,170,.45) transparent}
  body.sb-collapsed #topNav::-webkit-scrollbar{display:block;height:6px}
  body.sb-collapsed #topNav::-webkit-scrollbar-thumb{background:rgba(120,140,170,.45);border-radius:99px}
  body.sb-collapsed #topNav.dragging{cursor:grabbing;user-select:none}
  body.sb-collapsed #topNav.dragging .tn-item{pointer-events:none}
  body.sb-collapsed.clock-hidden #topNav{max-width:none}
}
@media(max-width:760px){ #topNav{display:none!important} }
.tn-item{display:inline-flex;align-items:center;gap:6px;flex:none;padding:5px 11px;border-radius:999px;
  border:1px solid transparent;background:transparent;color:var(--tx2);font-size:12.5px;font-weight:500;
  cursor:pointer;transition:transform .18s cubic-bezier(.34,1.56,.64,1),background .16s ease,color .16s ease,
  border-color .16s ease,box-shadow .18s ease}
.tn-item .tile-icon{width:24px;height:24px;border-radius:8px;
  transition:transform .22s cubic-bezier(.34,1.56,.64,1),filter .22s ease}
.tn-item .tile-icon.xs svg{width:14px;height:14px}
.tn-item:hover{background:rgba(255,255,255,.09);color:var(--tx);transform:translateY(-2px) scale(1.06);
  border-color:rgba(10,132,255,.30);box-shadow:0 8px 18px -10px rgba(10,132,255,.6)}
.tn-item:hover .tile-icon{transform:scale(1.12) rotate(-5deg);filter:brightness(1.1) saturate(1.15)}
.tn-item:active{transform:translateY(0) scale(.96)}
.tn-item.active{background:rgba(10,132,255,.20);color:#fff;font-weight:700;border-color:rgba(10,132,255,.34)}
.tn-item.active:hover{transform:none;box-shadow:none;border-color:rgba(10,132,255,.34)}
/* 设置页在宽屏铺满：普通宽屏 1080，超宽屏 1480 */
/* 软件设置页：宽度自适应铺满（取消一切固定上限，仅靠页面 padding 留白） */
.settings-list,.set-pane,.set-tabs{width:100%;max-width:none!important;margin-inline:0!important}
/* 手机端长弹窗：底部留出安全区，头尾固定、内容滚动，按钮始终可见可点 */
@media(max-width:760px){
  .modal-layer{padding:12px}
  .modal{max-height:calc(100dvh - 24px - env(safe-area-inset-bottom))}
  .modal-foot{padding-bottom:calc(15px + env(safe-area-inset-bottom))}
}

/* ============================ 手机端：常用工具弹窗全屏 + 横滑退出 ============================ */
.modal-full .mf-back{display:none}
.pg-reload{margin-top:14px}
@media(max-width:760px){
  .modal.modal-full{position:fixed;inset:0;width:100%!important;max-width:100%;height:100%;max-height:100%;
    border-radius:0;margin:0;overflow:hidden;display:flex;flex-direction:column}
  .modal.modal-full .modal-head{flex:none;align-items:center;padding:calc(10px + env(safe-area-inset-top)) 10px 12px}
  .modal.modal-full .modal-head h3{font-size:16px}
  .modal.modal-full .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
    overflow-x:hidden;padding:16px 14px calc(16px + env(safe-area-inset-bottom))}
  .modal.modal-full .modal-foot{flex:none;padding:10px 14px calc(10px + env(safe-area-inset-bottom))}
  .modal.modal-full .mf-back{display:inline-flex;margin-right:2px}
  .modal.modal-full .modal-head [data-x]{display:none}
}
/* 量尺弹窗：长/宽/高维度分段更醒目 */
.ms-dimseg button{min-height:42px;font-size:16px;font-weight:700}

/* ============================ v1.23.0 记账：转账 / 筛选 / 编辑态 / 预算 ============================ */
/* 三类型分段：转账蓝色态 */
.seg button.on.tr{background:linear-gradient(135deg,#38bdf8,#3b82f6);color:#fff}
.l-seg button{display:inline-flex;align-items:center;justify-content:center;gap:5px}
.l-seg button svg{width:15px;height:15px}
/* 转账：转出 → 转入 双账户 */
@media(max-width:760px){
  /* 手机端表单两列改竖排，避免下拉（如账户名）被相邻按钮挤压、文字截断显示不全 */
  .field-row{flex-direction:column;gap:16px}
  .modal-body .field-row + .chk{margin-top:20px}
  .modal-head{padding:16px 16px 6px}
  .modal-body{padding:18px 16px}
  .fl{gap:6px}
  .fl select,.fl .select{min-width:0;flex:1 1 0}
}
.l-swap{display:flex;align-items:center;gap:8px}
.l-swap select{flex:1 1 0;min-width:0}
.l-swap-ic{flex:none;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  color:#fff;background:linear-gradient(135deg,#22d3ee,#3b82f6);box-shadow:0 3px 10px rgba(59,130,246,.32)}
.l-swap-ic svg{width:18px;height:18px}
/* 编辑 / 复制态表单高亮 */
#lFormCard.is-editing{border-color:var(--brand,#3b82f6);box-shadow:0 0 0 2px rgba(59,130,246,.18)}
#lFormCard.is-editing #lFormTitle{color:var(--brand,#3b82f6)}
/* 明细：转账金额中性蓝、操作按钮紧凑（放下 编辑/复制/删除 三个） */
.money.tf{color:var(--brand,#3b82f6)!important;font-weight:700}
.row-item .grow{min-width:0;flex:1}
.row-item .t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-item .act{display:flex;align-items:center;gap:1px;flex:none;margin-left:4px}
.row-item .act .icon-btn{width:30px;height:30px}
/* 搜索 + 筛选条 */
.l-filters{display:grid;grid-template-columns:2fr 1fr 1.2fr 1.2fr;gap:8px;margin-top:12px}
.l-search{position:relative;display:flex;align-items:center}
.l-search svg{position:absolute;left:10px;width:16px;height:16px;color:var(--tx2);pointer-events:none}
.l-search input{padding-left:32px;width:100%}
.l-filters .select,.l-filters .input{font-size:13px;padding:8px 10px;height:auto}
/* 预算 */
.bud-top{margin-bottom:8px}
.bud-line{display:flex;align-items:baseline;gap:8px;font-size:13px}
.bud-line b{margin-left:auto;font-size:15px}
.bud-sub{font-size:12px;color:var(--tx2);margin-top:3px}
.bud-sub.over,.bud-line b.over{color:var(--danger)}
.bud-bar{height:10px;border-radius:99px;background:rgba(128,140,160,.22);overflow:hidden;margin:8px 0 4px}
.bud-bar.sm{height:7px;margin:5px 0 0}
.bud-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#22d3ee,#3b82f6);transition:width .3s}
.bud-bar i.over{background:linear-gradient(90deg,#fb7185,#f43f5e)}
.bud-cats{display:flex;flex-direction:column;gap:10px;margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.bud-cat .bud-line{font-size:12.5px}
.bud-edit-cats{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.bud-edit-row{display:flex;align-items:center;gap:10px}
.bud-edit-row span{flex:1;font-size:13px}
.bud-edit-row input{width:130px;flex:none}
@media(max-width:640px){
  .l-filters{grid-template-columns:1fr 1fr}
  .l-search{grid-column:1/-1}
  .row-item .act .icon-btn{width:34px;height:34px}
  .row-item .money{font-size:13px;white-space:nowrap}
  .bud-edit-row input{width:110px}
}

/* ============================================================
   v1.23.17 AI 对话宽屏布局重做 + 量尺数值醒目
   容器随内容区铺满（宽屏不偏左、不空右）；消息流/空态/输入框居中成一条可读列（ChatGPT 式）
   ============================================================ */
.aic{width:auto!important;max-width:none!important}
.aic-top{width:100%;max-width:none}
.aic-msgs{width:100%;max-width:none}
.aic-msg{width:100%;max-width:min(100%,900px);margin-left:auto;margin-right:auto}
.aic-empty{max-width:min(100%,900px)}
.aic-composer{width:100%;max-width:min(100%,900px);margin-left:auto;margin-right:auto}
@media(min-width:2000px){.aic-msg,.aic-composer,.aic-empty{max-width:min(100%,1040px)}}
/* 量尺：测量数值输入框加粗、主题蓝、加大居中，读数一眼可见 */
#msLenInput{font-weight:800!important;color:var(--blue,#0a84ff)!important;font-size:27px!important;
  text-align:center;letter-spacing:.5px;padding-block:10px}
#msLenInput::placeholder{color:var(--tx3);font-weight:600}
/* 企业/信用查询工具：入口按钮网格 */
.qc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:11px;margin-top:14px}
.qc-card{display:flex;align-items:center;gap:12px;text-align:left;padding:14px 15px;border-radius:15px;
  border:1px solid var(--line);background:var(--panel);color:var(--tx);cursor:pointer;
  box-shadow:var(--shadow);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.qc-card:hover{transform:translateY(-2px);border-color:rgba(var(--blue-rgb),.5);box-shadow:0 14px 30px -16px rgba(var(--blue-rgb),.6)}
.qc-card:active{transform:scale(.985)}
.qc-ic{flex:none;width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  color:#fff;background:linear-gradient(135deg,#22d3ee,#0a84ff)}
.qc-ic.warn{background:linear-gradient(135deg,#fb923c,#f43f5e)}
.qc-ic.ok{background:linear-gradient(135deg,#34c759,#0a84ff)}
.qc-ic svg{width:21px;height:21px}
.qc-t{min-width:0}
.qc-t .n{display:block;font-size:14.5px;font-weight:700;color:var(--tx);line-height:1.3}
.qc-t .d{display:block;font-size:12px;color:var(--tx3);margin-top:3px;line-height:1.4;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qc-sec{font-size:13px;font-weight:700;color:var(--tx2);margin:18px 0 2px;display:flex;align-items:center;gap:7px}
.qc-sec:first-child{margin-top:4px}
.qc-tip{margin-top:14px;font-size:12.5px;line-height:1.8;color:var(--tx3);
  background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:11px 13px}

/* ============================================================
   v1.23.18 AI 推理模型「深度思考」过程展示（reasoning_content）
   思考中实时展开、图标旋转；正文开始后自动折叠，可手动点开/收起
   ============================================================ */
.aic-rs{margin:0 0 8px;border:1px solid var(--line);background:var(--panel-2);
  border-radius:12px;overflow:hidden}
.aic-rs[hidden]{display:none}
.aic-rs-h{display:flex;align-items:center;gap:7px;width:100%;border:0;background:transparent;
  padding:8px 11px;cursor:pointer;color:var(--tx2);font-size:12.5px;font-weight:600;text-align:left}
.aic-rs-h:hover{color:var(--tx)}
.aic-rs-ico{flex:none;width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--blue,#0a84ff)}
.aic-rs-ico svg{width:15px;height:15px}
.aic-rs:not(.collapsed) .aic-rs-ico{animation:aicRsSpin 1.1s linear infinite}
.aic-rs-t{flex:1;min-width:0}
.aic-rs-c{flex:none;color:var(--blue,#0a84ff);font-size:12px;font-weight:500}
.aic-rs-b{padding:0 11px 9px 33px;font-size:12.5px;line-height:1.7;color:var(--tx3);
  white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto}
.aic-rs.collapsed .aic-rs-b{display:none}
@keyframes aicRsSpin{to{transform:rotate(360deg)}}
@media(max-width:640px){
  .aic-rs-b{max-height:180px;padding-left:30px}
}

/* ============================================================
   v1.23.19 个人财务对标一木：极速记账层 / 报表中心 / 周期记账
   手机全屏快记、PC 居中卡片；触控友好、不依赖 hover；1080~4K 自适应
   ============================================================ */
.ledger2{min-height:100%}
.l-subtabs{margin:14px 0}
/* 顶部「记一笔」+ 本月简况（财务专用类 qk-bar；切勿改回 qk-hero，那是 v13 快速解锁 62px 图标盒，撞名会把整条压成竖条） */
.qk-bar{display:flex;align-items:center;gap:16px;margin:0 0 14px;width:100%;height:auto;box-sizing:border-box}
.qk-big{flex:none;width:172px;height:64px;border:0;border-radius:18px;cursor:pointer;
  background:var(--grad);color:#fff;font-size:19px;font-weight:800;letter-spacing:1px;
  display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:var(--glow);
  transition:transform .14s,box-shadow .14s;-webkit-tap-highlight-color:transparent}
.qk-big:hover{box-shadow:0 12px 30px rgba(var(--blue-rgb),.42)}
.qk-big:active{transform:scale(.97)}
.qk-plus{font-size:26px;line-height:1;font-weight:700}
/* 底部主操作条：PC 端不用（主按钮在顶部横向排列），手机端在媒体查询里启用 */
.qk-dock{display:none}
.qk-fab{display:none}
.qk-hstats{flex:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.qk-hstats>div{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 16px;display:flex;flex-direction:column;gap:4px;min-width:0}
.qk-hstats label{font-size:12px;color:var(--tx3)}
.qk-hstats b{font-size:21px;font-weight:800;font-family:var(--mono);white-space:nowrap}
.qk-hstats b.out{color:#fb7185}.qk-hstats b.in{color:var(--ok)}
.qk-hbtn{width:auto;height:auto;min-height:70px;border-radius:14px;font-size:17px;letter-spacing:.5px;gap:7px}
.qk-hbtn .qk-plus{font-size:22px}

/* 快记层外壳：手机全屏、PC 居中 */
.qk-mask{position:fixed;inset:0;z-index:100;background:var(--scrim);backdrop-filter:blur(6px);
  display:flex;align-items:stretch;justify-content:center;animation:pickFade .2s}
.qk-sheet{width:100%;height:100%;display:flex;flex-direction:column;
  background:linear-gradient(180deg,#171b29 0%,#0d1017 100%);
  border:0;overflow:hidden;animation:qkUp .28s cubic-bezier(.22,.61,.36,1)}
@keyframes qkUp{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
.qk-head{flex:none;display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.07)}
.qk-x,.qk-tpl-save{flex:none;width:38px;height:38px;border-radius:11px;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.08);color:rgba(255,255,255,.82);display:flex;align-items:center;justify-content:center;cursor:pointer}
.qk-x svg,.qk-tpl-save svg{width:18px;height:18px}
.qk-x:hover,.qk-tpl-save:hover{background:rgba(255,255,255,.16)}
.qk-tpl-save{color:#fcd34d;border-color:rgba(252,211,77,.35);background:rgba(252,211,77,.14)}
.qk-seg{flex:1;justify-content:center}
/* 深色快记层：分段按钮未选中态提亮，避免收入 / 转账在深色背景上看不清 */
.qk-head .seg{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.10)}
.qk-head .seg button{color:rgba(255,255,255,.76)}
.qk-head .seg button.on{color:#fff}
.qk-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px 16px;min-height:0}
.qk-title{text-align:center;font-size:13px;color:var(--tx3);margin-bottom:6px}
.qk-amount{display:flex;align-items:baseline;justify-content:center;gap:3px;padding:6px 0 14px;
  font-family:var(--mono);font-weight:800;font-size:42px;line-height:1.1;word-break:break-all}
.qk-amount .qk-cur{font-size:22px;font-weight:700;margin-right:2px}
.qk-amount.out{color:#fb7185}.qk-amount.in{color:var(--ok)}.qk-amount.tf{color:var(--cy)}
.qk-lbl{display:block;font-size:12.5px;font-weight:600;color:var(--tx2);margin:12px 0 8px}
.qk-lbl.mt6{margin-top:14px}
/* 常用模板横滑条 */
.qk-tplbar{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;-webkit-overflow-scrolling:touch}
.qk-tpl{position:relative;flex:none;display:flex;align-items:center;gap:7px;padding:6px 14px 6px 7px;
  border-radius:999px;border:1px solid var(--line-2);background:var(--panel-2);color:var(--tx);
  font-size:12.5px;cursor:pointer;white-space:nowrap}
.qk-tpl:active{transform:scale(.96)}
.qk-tpl>i{position:absolute;top:-6px;right:-6px;width:17px;height:17px;border-radius:50%;background:var(--danger);
  color:#fff;display:flex;align-items:center;justify-content:center;font-style:normal}
.qk-tpl>i svg{width:9px;height:9px}
/* 彩色分类图标网格 */
.qk-cats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.qk-cat{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 2px;border:1px solid transparent;
  border-radius:14px;background:transparent;color:var(--tx2);cursor:pointer;transition:transform .12s,background .12s;
  -webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
.qk-cat:active{transform:scale(.93)}
.qk-cat>span{font-size:11.5px;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qk-cat.on{background:var(--panel-2);border-color:var(--line-2)}
.qk-cat.on .qk-catic{box-shadow:0 0 0 2px var(--elev-solid),0 0 0 4px var(--cc),0 6px 16px -4px var(--cc)}
.qk-cat-mgr{color:var(--tx3)}
.qk-cat-mgr .qk-catic{background:var(--field-2);color:var(--tx3)}
.qk-catic{display:flex;align-items:center;justify-content:center;border-radius:12px;background:var(--cc);color:#fff;flex:none}
.qk-catic svg{width:58%;height:58%}
.qk-nocat{font-size:13px;padding:14px}
.qk-link{border:0;background:transparent;color:var(--cy);cursor:pointer;font-size:13px;padding:0}
/* 账户横滑点选 */
.qk-accbar{display:flex;gap:8px;overflow-x:auto;padding:2px 0 4px;-webkit-overflow-scrolling:touch}
.qk-acc{flex:none;display:flex;align-items:center;gap:7px;padding:6px 12px 6px 7px;border-radius:12px;
  border:1px solid var(--line);background:var(--panel);color:var(--tx);font-size:13px;cursor:pointer;white-space:nowrap}
.qk-acc.on{border-color:var(--cy);background:rgba(var(--cy-rgb),.12);box-shadow:0 0 0 1px rgba(var(--cy-rgb),.3)}
.qk-acc .ac-badge{flex:none}
.qk-acc-no{width:30px;height:30px;border-radius:9px;background:var(--field-2);color:var(--tx3);
  display:flex;align-items:center;justify-content:center;font-size:12px}
.qk-reimb{flex-wrap:wrap}
.qk-mini{flex:none;padding:7px 13px;border-radius:999px;border:1px solid var(--line);
  background:var(--panel);color:var(--tx2);font-size:12.5px;cursor:pointer}
.qk-mini.on{border-color:var(--blue);background:rgba(var(--blue-rgb),.16);color:var(--tx)}
.qk-swap-mid{display:flex;justify-content:center;color:var(--tx3);padding:2px 0}
.qk-swap-mid svg{width:18px;height:18px}
.qk-meta{display:flex;gap:10px;margin-top:16px}
.qk-date{flex:none;width:150px;background:var(--field);border:1px solid var(--line);border-radius:11px;
  color:var(--tx);padding:11px 12px;font-size:13px;color-scheme:dark}
.qk-note{flex:1;min-width:0;background:var(--field);border:1px solid var(--line);border-radius:11px;
  color:var(--tx);padding:11px 12px;font-size:13px}
/* 自定义数字键盘 */
.qk-pad{flex:none;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px 14px calc(14px + env(safe-area-inset-bottom));
  border-top:1px solid var(--line);background:rgba(0,0,0,.25)}
.qk-key{height:52px;border:1px solid var(--line);border-radius:13px;background:var(--field-2);color:var(--tx);
  font-size:21px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;
  user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:background .1s,transform .08s;
  -webkit-tap-highlight-color:transparent}
.qk-key:active{background:var(--track);transform:scale(.96)}
.qk-key.qk-back{color:var(--tx2)}
.qk-key.qk-back svg{width:22px;height:22px}
.qk-pad .qk-key:last-child{font-size:18px;color:var(--tx2)}
.qk-ok{flex-direction:column;gap:3px;background:var(--grad)!important;border-color:transparent!important;color:#fff!important;
  grid-row:span 2;height:auto;align-self:stretch}
.qk-key[data-k="00"]{font-size:19px}
.qk-ok svg{width:24px;height:24px}
.qk-ok span{font-size:14px;font-weight:700}
/* 数字键盘收起/展开（v1.23.27）：键盘顶边点“收起键盘”，收起后底部蓝条“展开数字键盘” */
.qk-pad-bar{flex:none;display:flex;align-items:center;justify-content:center;gap:6px;height:34px;border:0;border-top:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.04);color:rgba(255,255,255,.72);font-size:12.5px;font-weight:600;letter-spacing:.02em;cursor:pointer;-webkit-tap-highlight-color:transparent}
.qk-pad-bar svg{width:16px;height:16px}
.qk-pad-bar:active{background:rgba(255,255,255,.1)}
.qk-pad-reopen{display:none;flex:none;align-items:center;justify-content:center;gap:8px;height:54px;border:0;border-top:1px solid rgba(255,255,255,.12);background:linear-gradient(135deg,#2f7bff,#1f63e0);color:#fff;font-size:15px;font-weight:800;letter-spacing:.03em;cursor:pointer;padding-bottom:env(safe-area-inset-bottom);-webkit-tap-highlight-color:transparent}
.qk-pad-reopen svg{width:20px;height:20px}
.qk-sheet.pad-off .qk-pad-bar{display:none}
.qk-sheet.pad-off .qk-pad{display:none}
.qk-sheet.pad-off .qk-pad-reopen{display:flex}
/* v1.23.25 快记层固定深色主题：正文 / 控件不跟随网页浅色主题，深色底上一律清晰 */
.qk-sheet{color:#eef1f8}
.qk-title{color:rgba(255,255,255,.55)}
.qk-lbl{color:rgba(255,255,255,.74)}
.qk-sheet .muted{color:rgba(255,255,255,.52)}
.qk-cat{color:rgba(255,255,255,.82)}
.qk-cat.on{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.16)}
.qk-acc{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.9)}
.qk-acc-none{padding-left:14px;padding-right:14px}
.qk-acc.on{border-color:var(--cy);background:rgba(34,211,238,.16);box-shadow:0 0 0 1px rgba(34,211,238,.35)}
.qk-mini{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.78)}
.qk-mini.on{border-color:#60a5fa;background:rgba(59,130,246,.24);color:#fff}
.qk-swap-mid{color:rgba(255,255,255,.6)}
.qk-date,.qk-note{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:#fff}
.qk-note::placeholder{color:rgba(255,255,255,.42)}
.qk-date::-webkit-calendar-picker-indicator{filter:invert(1) opacity(.7)}
.qk-tpl{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.10);color:rgba(255,255,255,.86)}
.qk-nocat{color:rgba(255,255,255,.62)}
.qk-link{color:var(--cy)}
.qk-pad{border-top-color:rgba(255,255,255,.08);background:rgba(0,0,0,.28)}
.qk-key{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.10);color:#fff}
.qk-key.qk-back,.qk-pad .qk-key:last-child{color:rgba(255,255,255,.78)}
@media(min-width:760px){
  .qk-mask{align-items:center;padding:24px}
  .qk-sheet{width:480px;max-width:100%;height:auto;max-height:92vh;border-radius:22px;border:1px solid var(--line-2);box-shadow:var(--shadow)}
  .qk-cats{grid-template-columns:repeat(5,1fr)}
  .qk-amount{font-size:40px}
}
@media(max-width:760px){
  /* 手机快记层全屏：遮罩实色、不做背景模糊，避免安卓 WebView 合成异常透出离屏空态图标 */
  .qk-mask{background:#0d1017;backdrop-filter:none;-webkit-backdrop-filter:none;overflow:hidden}
  /* v1.23.26 锁死全屏高度：sheet 不被内容撑高、整层不整体滚动，仅中间分类区滚动，数字键盘常驻底部可见 */
  .qk-sheet{height:100%;max-height:100%;height:100dvh;max-height:100dvh;min-height:0;border-radius:0}
  .qk-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
  /* 分类网格：图标饱满，同时加大行距、收敛选中发光，避免选中块与下一行图标文字粘连 */
  .qk-cats{gap:14px 6px}
  .qk-cat{padding:7px 2px;gap:4px;border-radius:12px}
  .qk-cat .qk-catic{width:46px!important;height:46px!important;border-radius:13px}
  .qk-cat.on .qk-catic{box-shadow:0 0 0 2px var(--elev-solid),0 0 0 3px var(--cc),0 2px 8px -3px var(--cc)}
  .qk-cat>span{font-size:11px}
  .qk-pad-bar{height:36px}
  .qk-pad{padding:10px 12px calc(12px + env(safe-area-inset-bottom));gap:7px}
  .qk-bar{flex-direction:column;align-items:stretch;gap:12px}
  /* “记一笔”主按钮手机端从顶部移到底部拇指热区（sticky 吸附在全局 Tab 栏正上方），PC 端仍在顶部 */
  .qk-big-top{display:none}
  .ledger2{display:flex;flex-direction:column;padding-bottom:calc(104px + env(safe-area-inset-bottom))}
  .qk-fab{display:none;align-items:center;justify-content:center;position:fixed;
    right:16px;bottom:calc(76px + env(safe-area-inset-bottom));width:56px;height:56px;padding:0;
    border-radius:50%;border:none;z-index:30;cursor:pointer;color:#fff;
    background:linear-gradient(140deg,#2f6bff,#4f46e5);
    box-shadow:0 14px 28px -8px rgba(37,99,235,.78),inset 0 1px 0 rgba(255,255,255,.35);
    transition:transform .18s cubic-bezier(.22,.61,.36,1)}
  .qk-fab:active{transform:scale(.88)}
  .qk-fab .qk-plus{display:inline-flex;align-items:center;justify-content:center;line-height:1}
  .qk-fab .qk-plus svg{width:27px;height:27px;stroke-width:2.3;display:block}
  .qk-fab.show{display:flex}
  .qk-hstats{width:100%;grid-template-columns:repeat(3,1fr);gap:8px}
  .qk-hstats>div{padding:12px 4px;align-items:center;text-align:center}
  .qk-hstats label{font-size:10.5px;white-space:nowrap}
  .qk-hstats b{font-size:15px;letter-spacing:-.01em;white-space:nowrap}
  .fin-tabs{max-width:none;padding:4px;gap:4px}
  .fin-tabs button{gap:5px;font-size:12px;padding:8px 4px}
  .fin-tabs button svg{width:15px;height:15px}
  .qk-key:not(.qk-ok){height:46px}
}

/* 报表中心 */
#rpBody,#cyBody{max-width:1180px;margin-inline:auto}
.rp-monthbar{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:14px}
.rp-monthbar b{font-size:16px;min-width:150px;text-align:center}
.rp-sum .k{font-size:12.5px;color:var(--tx3)}
.rp-sum .v{font-size:25px;font-weight:800;font-family:var(--mono);margin-top:6px}
.rp-sum.out .v{color:#fb7185}.rp-sum.in .v{color:var(--ok)}.rp-sum.neg .v{color:var(--danger)}
.rp-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
.rp-scroll svg{display:block;min-width:100%}
.rp-legend{margin-left:auto;font-size:11.5px;color:var(--tx3);font-weight:500;display:inline-flex;align-items:center;gap:6px}
.rp-legend i{width:9px;height:9px;border-radius:3px;display:inline-block}
.rp-legend .d-out{background:#fb7185}.rp-legend .d-in{background:#30d158}
.rp-rankseg{font-weight:600}
.rp-rank{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line)}
.rp-rank:last-child{border-bottom:0}
.rp-rank-mid{flex:1;min-width:0}
.rp-rank-t{display:flex;align-items:baseline;gap:10px;margin-bottom:7px}
.rp-rank-t b{font-size:14px}
.rp-rank-t span{font-size:11.5px}
.rp-rank-bar{height:7px;border-radius:6px;background:var(--track);overflow:hidden}
.rp-rank-bar i{display:block;height:100%;border-radius:6px;min-width:2px}
.rp-rank-v{font-family:var(--mono);font-weight:700;font-size:14px;flex:none}
.rp-cal-week,.rp-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.rp-cal-week{margin-bottom:6px}
.rp-cal-week span{text-align:center;font-size:11.5px;color:var(--tx3);padding:2px 0}
.rp-cal-cell{position:relative;aspect-ratio:1.25/1;border:1px solid var(--line);border-radius:10px;background:transparent;
  color:var(--tx);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  padding:2px;transition:transform .1s,border-color .1s;-webkit-tap-highlight-color:transparent}
.rp-cal-cell:active{transform:scale(.94)}
.rp-cal-cell b{font-size:14px;font-weight:700}
.rp-cal-cell small{font-size:9.5px;color:#ffd0c8;line-height:1;max-width:100%;overflow:hidden}
.rp-cal-cell.mute{border:0;background:transparent;cursor:default}
.rp-cal-cell.today{border-color:var(--cy);box-shadow:0 0 0 1px rgba(var(--cy-rgb),.4)}
.rp-cal-cell.sel{border-color:var(--blue);box-shadow:0 0 0 2px rgba(var(--blue-rgb),.5)}
.rp-daycard{margin-top:14px;border:1px solid var(--line-2);border-radius:14px;padding:10px 12px;background:var(--panel)}
.rp-day-head{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:700;margin-bottom:6px}
.rp-day-head .muted{font-weight:400}
.rp-day-head .icon-btn{margin-left:auto}
.rp-months{display:flex;align-items:flex-end;gap:10px;height:168px;padding-top:8px}
.rp-m{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;min-width:0}
.rp-mbars{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px}
.rp-mbars i{flex:1;max-width:22px;border-radius:4px 4px 0 0;min-height:0}
.rp-mbars i.in{background:linear-gradient(180deg,#4ade80,#22c55e)}
.rp-mbars i.out{background:linear-gradient(180deg,#fb7185,#f43f5e)}
.rp-m>span{font-size:11px;color:var(--tx3)}
@media(max-width:760px){
  .rp-cal-cell{aspect-ratio:1/1.05;gap:1px}
  .rp-cal-cell b{font-size:13px}
  .rp-months{gap:5px;height:140px}
  .rp-sum .v{font-size:21px}
}

/* 周期记账 + 常用模板 */
.sec-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.cy-card{display:flex;align-items:center;gap:13px;background:var(--panel);border:1px solid var(--line);
  border-radius:15px;padding:14px 15px;margin-bottom:10px}
.cy-card.off{opacity:.55}
.cy-mid{flex:1;min-width:0}
.cy-t{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:14.5px}
.cy-s{font-size:12px;color:var(--tx3);margin-top:4px;line-height:1.5;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cy-next{font-size:11.5px;color:var(--cy);margin-top:3px}
.cy-amt{flex:none;font-family:var(--mono);font-weight:800;font-size:16px;white-space:nowrap}
.cy-amt.in{color:var(--ok)}.cy-amt.out{color:#fb7185}
.cy-acts{flex:none;display:flex;gap:2px}
.cy-tpls{display:flex;flex-wrap:wrap;gap:9px;margin-top:6px}
.cy-tpl{padding-right:20px}
@media(max-width:760px){
  .cy-card{flex-wrap:wrap}
  .cy-mid{flex-basis:calc(100% - 56px)}
  .cy-amt{margin-left:56px}
  .cy-acts{flex-basis:100%;justify-content:flex-end;border-top:1px solid var(--line);padding-top:8px;margin-top:2px}
}

/* ============================================================
   思维导图（XMind 类）
   ============================================================ */
.mm-app{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--bg1)}
.mm-toolbar{display:flex;align-items:center;gap:14px;padding:9px 12px;
  background:var(--bar);border-bottom:1px solid var(--line);
  backdrop-filter:blur(18px) saturate(160%);flex:none}
.mm-tb-group{display:flex;align-items:center;gap:6px;flex:none}
.mm-tb-right{margin-left:auto}
.mm-sep{width:1px;height:22px;background:var(--line);flex:none}

.mm-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:9px;
  font-size:13.5px;font-weight:600;color:var(--tx);background:var(--field);
  border:1px solid var(--line);white-space:nowrap;
  transition:background .14s,transform .1s,filter .14s,border-color .14s}
.mm-btn svg{width:15px;height:15px;flex:none}
.mm-btn:hover{background:var(--field-2)}
.mm-btn:active{transform:scale(.96)}
.mm-btn.primary{background:var(--grad);border-color:transparent;color:#fff;
  box-shadow:0 6px 16px -6px rgba(10,132,255,.55)}
.mm-btn.primary:hover{filter:brightness(1.08)}
.mm-btn.danger{color:#ff8a85}
.mm-iconbtn{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;
  padding:0 7px;border-radius:8px;color:var(--tx2);background:var(--field);font-size:15px;
  transition:background .14s,color .14s,transform .1s}
.mm-iconbtn:hover{background:var(--field-2);color:var(--tx)}
.mm-iconbtn:active{transform:scale(.94)}
.mm-iconbtn.danger:hover{color:var(--danger);background:rgba(255,69,58,.14)}

.mm-mapswitch{display:flex;align-items:center;background:var(--field);border:1px solid var(--line);
  border-radius:9px;overflow:hidden}
.mm-mapname{padding:6px 11px;font-weight:600;font-size:13.5px;min-width:96px;max-width:200px;
  text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:text}
.mm-rename{background:var(--field);border:1px solid var(--blue);border-radius:6px;
  padding:3px 7px;font-size:13.5px;color:var(--tx);outline:none;min-width:120px}
.mm-zoomlabel{min-width:54px;text-align:center;padding:6px 4px;border-radius:8px;
  font-family:var(--mono);font-size:13px;color:var(--tx2);background:var(--field)}
.mm-zoomlabel:hover{color:var(--tx);background:var(--field-2)}

.mm-body{flex:1;min-height:0;display:flex;position:relative}
.mm-viewport{flex:1;position:relative;overflow:hidden;touch-action:none;cursor:grab;
  background-color:var(--bg1);
  background-image:radial-gradient(rgba(255,255,255,.055) 1px,transparent 1px);
  background-size:26px 26px}
.mm-viewport:active{cursor:grabbing}
.mm-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
/* 帮助问号按钮：点击才弹出操作说明，不长期占用画布 */
.mm-helpbtn{
  position:absolute;top:10px;right:10px;z-index:5;width:30px;height:30px;border-radius:50%;
  border:1px solid var(--line);background:var(--bar);color:var(--tx2);
  font-size:15px;font-weight:700;cursor:pointer;line-height:1;
}
.mm-helpbtn:hover{color:var(--blue);border-color:var(--blue)}
/* 右侧浮动「居中」按钮：平移后找不到导图时，点一下回到全屏居中 */
.mm-centerbtn{
  position:absolute;right:16px;bottom:26px;z-index:5;
  width:44px;height:44px;border-radius:50%;border:1px solid var(--line);
  background:var(--bar);color:var(--blue);cursor:pointer;display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 16px -6px rgba(0,0,0,.4);transition:background .14s,color .14s}
.mm-centerbtn svg{width:22px;height:22px}
.mm-centerbtn:hover{background:var(--blue);color:#fff}
.mm-centerbtn:active{transform:scale(.92)}
/* 操作说明弹层（默认 hidden，点问号显示） */
.mm-quickhint{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  z-index:6;pointer-events:auto;
}
.mm-qh-card{position:relative;
  background:var(--elev);border:1px solid var(--line);border-radius:16px;
  padding:15px 16px 13px;font-size:12.5px;line-height:1.85;color:var(--tx2);
  box-shadow:0 22px 56px -18px rgba(0,0,0,.6);white-space:normal;
  width:min(380px,88vw);max-height:min(72vh,560px);display:flex;flex-direction:column}
.mm-qh-title{font-size:15px;font-weight:800;color:var(--tx);letter-spacing:.5px}
.mm-qh-x{position:absolute;top:10px;right:10px;width:26px;height:26px;padding:0;border:none;border-radius:9px;
  background:var(--track);color:var(--tx2);font-size:12px;line-height:1;text-align:center;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .14s,color .14s,transform .2s}
.mm-qh-x:hover{background:var(--hover);color:var(--tx1);transform:rotate(90deg)}
.mm-qh-body{overflow-y:auto;margin-top:8px;padding-right:4px;display:flex;flex-direction:column;gap:9px}
.mm-qh-sec{display:flex;flex-direction:column;gap:1px}
.mm-qh-h{font-size:11.5px;font-weight:800;color:var(--blue);letter-spacing:.6px;margin-bottom:2px;
  border-bottom:1px solid var(--line);padding-bottom:2px}
.mm-qh-keys{color:var(--tx);font-weight:600;font-size:12px}
/* 节点颜色选择网格 */
.mm-colorgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;padding:4px}
.mm-colorgrid button{height:42px;border-radius:12px;border:2px solid transparent;cursor:pointer;padding:0}
.mm-colorgrid button:hover{transform:scale(1.06)}
.mm-colorgrid button.on{border-color:var(--tx)}

.mm-link{fill:none;stroke-linecap:round;opacity:.92;transition:opacity .15s}
.mm-node{cursor:pointer}
.mm-rect{transition:fill .14s,stroke-width .12s,filter .14s}
.mm-nt{width:100%;height:100%;position:relative;display:flex;flex-direction:row;align-items:center;justify-content:center;
  font:14px/20px "Segoe UI","Microsoft YaHei",system-ui,sans-serif;color:var(--tx);
  overflow:hidden;overflow-wrap:anywhere;text-align:center}
.mm-ntt{flex:none;min-width:0}
.mm-prefix{flex:none;display:inline-flex;align-items:center;justify-content:center;width:16px;color:inherit;opacity:.96}
.mm-pfxnum{width:18px;height:18px;min-width:0;padding:0;border-radius:50%;border:1.6px solid currentColor;font-size:11px;font-weight:700;line-height:1}
/* 节点标记：内联在文字同一行前面，不另起行；组内小图标间距 3px */
.mm-mkers{flex:none;display:inline-flex;flex-direction:row;align-items:center;gap:2px}
.mm-mkers svg{display:block;flex:none}
.mm-noteic{flex:none;display:inline-flex;align-items:center}
/* emoji 标记盒：固定 14 宽，与矢量图标同口径 */
.mm-mke{width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;font-size:11.5px;line-height:1;flex:none}
/* 标记面板：分类网格，可连续点选 */
.mm-pop.mm-mkpanel{width:min(560px,94vw);max-width:94vw;max-height:min(86vh,700px);overflow-x:hidden;overflow-y:auto;
  padding:20px 20px 16px;border-radius:18px;box-shadow:0 22px 56px rgba(20,30,60,.26)}
.mm-mkp-head{display:flex;align-items:center;font-size:15.5px;font-weight:800;padding:2px 46px 14px 6px;
  margin-bottom:14px;border-bottom:1px solid var(--line)}
.mm-mkp-head span{white-space:nowrap;letter-spacing:.2px}
.mm-mkpanel .mm-mkp-x{position:absolute;top:14px;right:14px;width:30px;height:30px;padding:0;border:none;border-radius:10px;background:var(--track);color:var(--tx2);
  font-size:14px;line-height:1;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .14s,color .14s,transform .2s}
.mm-mkpanel .mm-mkp-x:hover{background:var(--hover);color:var(--tx1);transform:rotate(90deg)}
.mm-mkp-cat{margin-bottom:12px;background:var(--track);border:1px solid var(--line);border-radius:14px;padding:12px 12px 13px}
.mm-mkp-name{font-size:11px;font-weight:700;color:var(--tx2);padding:0 2px 10px;letter-spacing:.5px}
.mm-mkpanel .mm-mkp-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.mm-mkpanel .mm-mkp-cell{flex:none;display:flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:0;margin:0;padding:0;border:1px solid transparent;border-radius:11px;background:transparent;cursor:pointer;transition:background .14s,border-color .14s,transform .14s}
.mm-mkpanel .mm-mkp-cell svg{width:22px;height:22px}
.mm-mkpanel .mm-mke{width:22px;height:22px;font-size:20px;display:flex;align-items:center;justify-content:center}
.mm-mkp-cell:hover{background:var(--hover);transform:translateY(-1px)}
.mm-mkp-cell.on{background:rgba(var(--blue-rgb),.16);border-color:rgba(var(--blue-rgb),.5)}
/* 节点备注悬停气泡 */
.mm-notetip{
  position:absolute;z-index:20;max-width:260px;transform:translate(-50%,-100%);
  background:rgba(26,26,30,.97);color:#fff;font-size:12.5px;line-height:1.55;
  padding:8px 11px;border-radius:9px;box-shadow:0 10px 28px -10px rgba(0,0,0,.6);
  pointer-events:none;white-space:pre-wrap;text-align:left;
}
.mm-notetip::after{content:"";position:absolute;left:50%;bottom:-5px;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:rgba(26,26,30,.97);border-bottom:0}
.mm-nt-root{color:#fff;font-weight:700}
.mm-node.selected .mm-rect{stroke:var(--sel,#ffffff);stroke-width:3}
.mm-node.selected{animation:mmSelPulse 1.6s ease-in-out infinite}
@keyframes mmSelPulse{0%,100%{filter:drop-shadow(0 0 6px rgba(10,132,255,.55))}50%{filter:drop-shadow(0 0 13px rgba(10,132,255,.95))}}
.mm-fold circle{transition:transform .12s;transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 1px 2px rgba(15,30,60,.28))}
.mm-fold:hover circle{transform:scale(1.14)}
.mm-rel-bend{cursor:crosshair}
body.rel-bending,body.rel-bending *{cursor:crosshair !important}
.mm-node.dragging-source{opacity:.32}
.mm-node.drop-target .mm-rect{fill:rgba(10,132,255,.16);stroke:#0a84ff;stroke-width:3}
.mm-node.drop-target{filter:drop-shadow(0 0 11px rgba(10,132,255,.55));animation:mmDropPulse 1s ease-in-out infinite}
@keyframes mmDropPulse{0%,100%{filter:drop-shadow(0 0 8px rgba(10,132,255,.4))}50%{filter:drop-shadow(0 0 15px rgba(10,132,255,.78))}}

.mm-edit{position:fixed;border:0;border-radius:9px;padding:8px 14px;font-size:14px;line-height:20px;color:var(--tx);
  resize:none;outline:none;box-shadow:none;z-index:40;overflow:hidden;box-sizing:border-box;text-align:center}

/* AI 面板 */
.mm-ai{width:388px;flex:none;display:flex;flex-direction:column;
  background:var(--bg1);border-left:1px solid var(--line)}
.mm-ai-head{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--line);flex:none}
.mm-ai-tabs{display:flex;gap:4px;flex:1;min-width:0;overflow-x:auto}
.mm-ai-tab{padding:6px 11px;border-radius:8px;font-size:13px;color:var(--tx2);white-space:nowrap;
  transition:background .14s,color .14s}
.mm-ai-tab:hover{background:var(--field)}
.mm-ai-tab.active{background:var(--grad);color:#fff;font-weight:600}
.mm-ai-tools{display:flex;gap:4px;flex:none}
.mm-ai-body{flex:1;overflow:auto;padding:16px 17px;line-height:1.72;font-size:14px}
.mm-md h2{font-size:16px;margin:16px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.mm-md h2:first-child{margin-top:0}
.mm-md h3{font-size:14.5px;margin:13px 0 6px;color:var(--cy)}
.mm-md h4{font-size:13.5px;margin:10px 0 5px;color:var(--tx2)}
.mm-md p{margin:5px 0}
.mm-md ul,.mm-md ol{margin:5px 0 5px 4px;padding-left:18px}
.mm-md li{margin:3px 0}
.mm-md code{font-family:var(--mono);font-size:12.5px;background:var(--field);
  padding:1.5px 5px;border-radius:5px}
.mm-md hr{border:none;border-top:1px solid var(--line);margin:12px 0}
.mm-check{list-style:none;padding-left:0 !important}
.mm-check label{display:flex;gap:8px;align-items:flex-start}
.mm-check input{margin-top:4px;accent-color:var(--blue)}
.mm-ai-loading{display:flex;align-items:center;gap:10px;color:var(--tx2);font-size:13.5px}
.mm-ai-err{color:var(--danger);font-size:13.5px;line-height:1.7}
.mm-pre{font-family:var(--mono);font-size:12.5px;white-space:pre-wrap;word-break:break-word;color:var(--tx2)}

/* 导出下拉 */
.mm-pop{z-index:9000;background:var(--elev-solid);border:1px solid var(--line-2);
  border-radius:12px;box-shadow:var(--shadow);padding:5px;min-width:190px}
.mm-pop button{display:block;width:100%;text-align:left;padding:9px 11px;border-radius:8px;
  font-size:13.5px;color:var(--tx);transition:background .13s}
.mm-pop button:hover{background:var(--field-2)}

/* 窄屏：AI 面板覆盖整个画布 */
@media(max-width:1100px){
  .mm-ai{position:absolute;top:0;right:0;bottom:0;width:min(420px,88%);z-index:40;
    box-shadow:-12px 0 40px rgba(0,0,0,.5)}
}
/* 手机：工具栏横向滚动，AI 面板全屏，提示更精简 */
@media(max-width:760px){
  .mm-toolbar{gap:9px;padding:8px 9px;overflow-x:auto;flex-wrap:nowrap}
  .mm-tb-group{gap:5px}
  .mm-btn{padding:7px 9px;font-size:13px}
  .mm-mapname{min-width:72px;padding:6px 8px}
  .mm-helpbtn{top:8px;right:8px;width:28px;height:28px;font-size:14px}
  .mm-centerbtn{right:14px;bottom:calc(20px + env(safe-area-inset-bottom,0px))}
  .mm-ai{width:100%;height:100%}
  .mm-ai-body{padding:14px}
}

/* ============================================================
   思维导图 v1.24.1：屏幕 / 导图文件库 / 卡片 / 右键 / 悬停细节
   ============================================================ */
.mm-screen{flex:1;min-height:0;display:flex;flex-direction:column}
.mm-libscreen{overflow:auto;background:var(--bg1)}
.mm-lib-head{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;
  margin:8px 26px 8px;padding:0;min-width:0}
.mm-lib-count{display:flex;align-items:baseline;gap:4px;color:var(--tx2);font-size:13px;white-space:nowrap}
.mm-lib-count b{font-size:15px;font-weight:700;color:var(--tx)}
.mm-lib-actions{display:flex;gap:8px;margin-left:auto;flex:none}
.mm-lib-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(282px,1fr));
  gap:14px;padding:8px 26px 32px;align-content:start}
.mm-lib-grid[data-view="small"]{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
.mm-lib-grid[data-view="small"] .mm-card-body{padding:10px 12px 6px}
.mm-lib-grid[data-view="small"] .mm-card-title{font-size:13.5px}
.mm-lib-grid[data-view="small"] .mm-card-acts{padding:4px 8px 8px}
.mm-lib-grid[data-view="small"] .mm-card-btn{padding:5px 2px;font-size:11.5px}
.mm-lib-grid[data-view="list"]{display:flex;flex-direction:column;gap:8px}
.mm-lib-grid[data-view="list"] .mm-card{flex-direction:row;align-items:center}
.mm-lib-grid[data-view="list"] .mm-card:hover{transform:none}
.mm-lib-grid[data-view="list"] .mm-card-bar{width:5px;height:auto;align-self:stretch}
.mm-lib-grid[data-view="list"] .mm-card-body{flex:1;padding:10px 12px}
.mm-lib-grid[data-view="list"] .mm-card-meta{margin-top:2px}
.mm-lib-grid[data-view="list"] .mm-card-acts{flex:none;padding:8px 10px}
.mm-lib-grid[data-view="list"] .mm-card-btn{flex:none;padding:7px 10px}
.mm-lib-empty{grid-column:1/-1;text-align:center;color:var(--tx3);padding:72px 20px;
  font-size:14px;line-height:2}

.mm-card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);
  border-radius:14px;overflow:hidden;cursor:pointer;
  transition:transform .15s,border-color .15s,background .15s,box-shadow .15s}
.mm-card:hover{transform:translateY(-2px);border-color:var(--line-2);background:var(--panel-2);
  box-shadow:0 16px 32px -18px rgba(0,0,0,.75)}
.mm-card-bar{height:6px;flex:none}
.mm-card-body{padding:14px 15px 14px;min-width:0}
.mm-card.on{border-color:rgba(var(--blue-rgb),.72);box-shadow:0 0 0 2px rgba(var(--blue-rgb),.22)}
.mm-card-title{display:flex;align-items:center;gap:6px;min-width:0;font-size:15.5px;font-weight:700}
.mm-card-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-card-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tx3);margin-top:6px;min-width:0}
.mm-card-meta > span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-card-acts{display:flex;gap:6px;padding:4px 12px 12px}
.mm-card-btn{flex:1;padding:7px 4px;border-radius:8px;background:var(--field);
  font-size:12.5px;color:var(--tx2);transition:background .14s,color .14s}
.mm-card-btn:hover{background:var(--field-2);color:var(--tx)}
.mm-card-btn.danger:hover{color:var(--danger);background:rgba(255,69,58,.13)}
.mm-card{position:relative}
.mm-card-lock{position:static;z-index:3;display:inline-flex;align-items:center;justify-content:center;flex:none;margin-left:auto;width:16px;height:16px;padding:0;border:0;border-radius:4px;color:var(--tx3);background:transparent;cursor:pointer;opacity:1}
.mm-card-lock svg{width:16px;height:16px;display:block}
.mm-card-lock:hover{opacity:1;background:var(--hover)}
.mm-card-lock:active{transform:scale(.92)}
.mm-card-lock.is-locked{opacity:1;filter:drop-shadow(0 3px 5px rgba(0,0,0,.22))}
.mm-card-lock.is-locked:hover{background:var(--hover)}
.mm-vpw{display:flex;flex-direction:column;gap:10px}
.mm-vpw-tip{margin:0;color:var(--tx2);font-size:13px;line-height:1.7}
.mm-vpw .inp{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:15px;background:var(--bg)}
.mm-vpw .inp:focus{outline:none;border-color:var(--brand,#0a84ff)}
.mm-vpw-err{color:var(--danger,#ef4444);font-size:13px;min-height:16px}
/* 导图密码弹窗（美化版：主题色徽章 + 统一输入框） */
.mm-pw-hero{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:14px;
  background:var(--track);border:1px solid var(--line);margin-bottom:15px}
.mm-pw-badge{flex:none;width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 16px -8px rgba(0,0,0,.45)}
.mm-pw-hero-txt{min-width:0}
.mm-pw-hero-txt b{font-size:14.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-pw-hero-txt p{margin:3px 0 0;font-size:12.5px;line-height:1.6;color:var(--tx3)}
.mm-pw-err{color:var(--danger,#ef4444);font-size:13px;min-height:18px;margin-top:9px}
.mm-card-archtag{display:inline-block;flex:none;margin-left:2px;padding:1px 7px;border-radius:9px;font-size:11px;font-weight:600;
  background:var(--field);color:var(--tx3);vertical-align:middle}
.mm-card.archived{opacity:.6}
.mm-card.archived .mm-card-bar{filter:grayscale(.7)}

/* ============================================================
   思维导图 v1.34：思维导图 / 大纲 切换 + 大纲编辑 / 打印
   ============================================================ */
.mm-viewseg{display:inline-flex;align-items:center;background:var(--field);border:1px solid var(--line);
  border-radius:9px;padding:2px;gap:2px}
.mm-viewseg button{border:0;background:transparent;color:var(--tx2);font-size:13px;font-weight:600;
  padding:5px 12px;border-radius:7px;cursor:pointer;white-space:nowrap;
  transition:background .14s,color .14s}
.mm-viewseg button:hover{color:var(--tx)}
.mm-viewseg button.on{background:var(--grad);color:#fff;box-shadow:0 3px 9px -3px rgba(10,132,255,.6)}

.mm-outline{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg1)}
.mm-ol-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;flex:none;
  background:var(--bar);border-bottom:1px solid var(--line);
  backdrop-filter:blur(18px) saturate(160%)}
.mm-ol-tb{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:10px;
  border:1px solid var(--line);background:var(--field);color:var(--tx);font-size:13px;font-weight:600;
  cursor:pointer;white-space:nowrap;transition:background .15s,transform .1s,border-color .15s,box-shadow .15s}
.mm-ol-tb:hover{background:var(--field-2);border-color:rgba(var(--blue-rgb),.4)}
.mm-ol-tb:active{transform:scale(.96)}
.mm-ol-ic{display:inline-flex;align-items:center;color:var(--blue)}
.mm-ol-tb svg{width:16px;height:16px}
.mm-ol-sep{width:1px;height:22px;background:var(--line);margin:0 3px}
.mm-ol-print{margin-left:auto}
.mm-ol-body{flex:1;min-height:0;overflow:auto;padding:22px 18px 80px;
  max-width:900px;width:100%;margin:0 auto;box-sizing:border-box}
.mm-ol-row{position:relative;display:flex;align-items:center;gap:8px;padding:2px 10px 2px 0;min-height:34px;
  border-radius:9px;border:1px solid transparent;
  --ol-guide:rgba(var(--tx3-rgb,134,134,139),.22);
  transition:background .13s,border-color .13s}
.mm-ol-row:hover{background:var(--field);--ol-guide:rgba(var(--blue-rgb),.45)}
.mm-ol-row.sel{background:rgba(var(--blue-rgb),.11);border-color:rgba(var(--blue-rgb),.45);--ol-guide:rgba(var(--blue-rgb),.55)}
.mm-ol-fold{position:absolute;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:7px;
  border:0;background:transparent;color:var(--tx2);cursor:pointer;display:inline-flex;align-items:center;
  justify-content:center;padding:0}
.mm-ol-fold svg{transition:transform .18s ease}
.mm-ol-fold.open svg{transform:rotate(90deg)}
.mm-ol-fold:hover:not(:disabled){background:rgba(var(--blue-rgb),.16);color:var(--blue)}
.mm-ol-fold:disabled{opacity:0;cursor:default}
.mm-ol-title{flex:1;min-width:0;border:0;background:transparent;color:var(--tx);font-size:14.5px;
  font-weight:500;padding:7px 6px;border-radius:7px;outline:none;font-family:inherit}
.mm-ol-title:focus{background:var(--field)}
.mm-ol-row.root{margin:2px 0 10px;min-height:46px}
.mm-ol-row.root .mm-ol-title{font-size:22px;font-weight:800;letter-spacing:.2px;padding:9px 6px}
.mm-ol-notemark{flex:none;display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;
  border-radius:8px;border:1px solid rgba(var(--blue-rgb),.35);
  background:rgba(var(--blue-rgb),.12);color:var(--blue);cursor:pointer;
  transition:background .14s,color .14s,box-shadow .14s,transform .1s}
.mm-ol-notemark:hover{background:rgba(var(--blue-rgb),.22)}
.mm-ol-notemark.on{background:var(--blue);color:#fff;box-shadow:0 5px 13px -5px var(--blue)}
.mm-ol-note{padding:1px 0 8px}
.mm-ol-notecard textarea{width:100%;box-sizing:border-box;min-height:78px;border:1px solid var(--line);
  border-radius:11px;background:var(--field);color:var(--tx);font-size:13px;line-height:1.6;
  padding:11px 13px;resize:vertical;outline:none;font-family:inherit;
  border-left:3px solid var(--blue);box-shadow:0 8px 20px -14px rgba(0,0,0,.7)}
.mm-ol-notecard textarea:focus{border-color:var(--blue);border-left-color:var(--blue)}
@media(max-width:760px){
  .mm-ol-bar{gap:6px;padding:9px 10px;overflow-x:auto;flex-wrap:nowrap}
  .mm-ol-tb{padding:7px 10px}
  .mm-ol-body{padding:14px 10px 60px}
  .mm-ol-row.root .mm-ol-title{font-size:19px}
  .mm-viewseg button{padding:5px 9px}
}
/* 大纲打印预览（应用内居中、白纸 A4 风格） */
.mm-pv-scroll{max-height:min(66vh,620px);overflow:auto;background:rgba(0,0,0,.28);
  border-radius:12px;padding:24px;margin:0}
.mm-pv-page{background:#fff;color:#1c1c1e;border-radius:6px;padding:36px 40px;
  width:100%;max-width:560px;margin:0 auto;box-sizing:border-box;
  box-shadow:0 20px 44px -12px rgba(0,0,0,.75);
  font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.mm-pv-h1{font-size:21px;font-weight:800;margin:0 0 14px;padding-bottom:10px;border-bottom:2px solid #1c1c1e}
.mm-pv-item{display:flex;align-items:baseline;gap:9px;font-size:13.5px;margin:4px 0;line-height:1.5}
.mm-pv-bullet{flex:none;width:6px;height:6px;border-radius:50%;background:#0a84ff;transform:translateY(-2px)}
.mm-pv-note{font-size:12px;color:#6b7280;margin:3px 0 8px;line-height:1.55;white-space:pre-wrap;
  border-left:2.5px solid #d1d5db;padding-left:9px}

/* 解密失败 / 会话过期提示屏 */
.mm-libscreen{position:relative}
.mm-unlockfail{position:absolute;inset:0;z-index:30;display:flex;align-items:center;
  justify-content:center;padding:24px;background:var(--bg1)}
.mm-uf-card{max-width:420px;width:100%;text-align:center;background:var(--card);
  border:1px solid var(--line);border-radius:18px;padding:34px 28px;
  box-shadow:0 24px 60px -24px rgba(0,0,0,.5)}
.mm-uf-ic{display:inline-flex;color:var(--blue);margin-bottom:14px}
.mm-uf-title{font-size:18px;font-weight:800;color:var(--tx);margin-bottom:9px}
.mm-uf-desc{font-size:13.5px;line-height:1.7;color:var(--tx3);margin-bottom:22px}
.mm-uf-btn{width:100%;padding:11px;border:0;border-radius:11px;background:var(--grad);
  color:#fff;font-size:14.5px;font-weight:700;cursor:pointer;
  box-shadow:0 10px 22px -10px rgba(10,132,255,.7)}
.mm-uf-btn:hover{filter:brightness(1.07)}
.mm-uf-btn:active{transform:scale(.98)}

.mm-canvasscreen{background:var(--bg1)}

/* ===================== 思维导图 · 沉浸式全屏编辑 ===================== */
.mm-canvasscreen.mm-immersive{
  position:fixed !important; inset:0; z-index:8500; display:flex; flex-direction:column;
  max-width:none; width:100%; height:100%; margin:0; border-radius:0; background:var(--bg1);
}
.mm-canvasscreen.mm-immersive .mm-toolbar,
.mm-canvasscreen.mm-immersive .mm-quickhint{ display:none; }
.mm-canvasscreen.mm-immersive .mm-body{ flex:1; height:auto; }

/* 浮动操作条：默认隐藏，沉浸时显示；朝向由响应式决定（PC 右侧竖向 / 手机底部横向） */
.mm-immbar{
  display:none; position:fixed; z-index:8600; padding:9px; gap:8px;
  background:var(--elev); border:1px solid var(--line); border-radius:18px;
  box-shadow:0 18px 48px -18px rgba(0,0,0,.55);
  -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px);
}
.mm-immbar.active{ display:flex; }
.mm-immbar .mm-ib{
  display:flex; align-items:center; justify-content:center; text-align:center;
  border:1px solid var(--line); background:var(--bg2); color:var(--tx);
  border-radius:13px; cursor:pointer; font-size:14px; font-weight:600; line-height:1.1;
  padding:0 6px; user-select:none; -webkit-tap-highlight-color:transparent;
}
.mm-immbar .mm-ib svg{ width:21px; height:21px; }
.mm-immbar .mm-ib:hover{ border-color:var(--blue); color:var(--blue); }
.mm-immbar .mm-ib-main{
  background:linear-gradient(135deg,var(--blue),var(--indigo));
  border-color:transparent; color:#fff; font-size:16px;
}
.mm-immbar .mm-ib-main:hover{ color:#fff; opacity:.94; }
/* PC / 宽屏：贴右侧竖向、垂直居中 */
@media (min-width:761px){
  .mm-immbar{ right:18px; top:50%; flex-direction:column; transform:translateY(-50%); }
  .mm-immbar .mm-ib{ width:50px; height:50px; }
}
/* 手机 / 窄屏：贴底部横向、拇指热区 */
@media (max-width:760px){
  .mm-immbar{
    left:10px; right:10px; bottom:calc(10px + env(safe-area-inset-bottom));
    flex-direction:row; justify-content:space-between; overflow-x:auto;
  }
  .mm-immbar .mm-ib{ flex:1 1 0; min-width:46px; height:48px; white-space:nowrap; }
}
.mm-node{transition:filter .14s}
.mm-node:hover{filter:drop-shadow(0 4px 9px rgba(0,0,0,.3))}
.mm-node.selected:hover{filter:drop-shadow(0 0 9px rgba(100,210,255,.42))}
.mm-pop button.danger{color:#ff8a85}
.mm-pop button.danger:hover{background:rgba(255,69,58,.14)}
#mmBackLib{font-size:20px;font-weight:700;line-height:1}

@media(max-width:760px){
  .mm-lib-head{margin:8px 14px;padding:0;flex-wrap:nowrap}
  .mm-lib-grid{grid-template-columns:1fr;gap:11px;padding:4px 14px 24px}
  .mm-lib-actions{width:auto;margin-left:auto}
  .mm-lib-actions .mm-btn{flex:none;justify-content:center}
}

/* ============================================================
   思维导图 v1.24.3：标记 / 备注 / 关系线 / 外框
   ============================================================ */
.mm-note-ta{width:100%;min-height:170px;resize:vertical;box-sizing:border-box;
  background:var(--field);border:1px solid var(--line);border-radius:10px;
  padding:11px 12px;font:inherit;color:var(--tx);line-height:1.7}
.mm-note-ta:focus{outline:none;border-color:#0a84ff}

.mm-rel-hit{fill:none;stroke:transparent;cursor:pointer}
.mm-rel{fill:none;cursor:pointer}
.mm-rel.sel{filter:drop-shadow(0 0 5px rgba(10,132,255,.6))}
.mm-rel-t{cursor:pointer}
.mm-rel-t rect{transition:stroke .13s}
.mm-rel-t:hover rect{stroke:#0a84ff}
.mm-bound{cursor:pointer}
.mm-btitle{cursor:pointer}
.mm-btitle:hover rect{stroke-width:2}
.mm-sum-brace{cursor:pointer}
.mm-sum{cursor:pointer}
.mm-sum rect{transition:stroke-width .13s}
.mm-sum:hover rect{stroke-width:2.4}
.mm-sum-brace:hover{stroke-width:2.6}
@keyframes mpulse{0%,100%{opacity:1}50%{opacity:.25}}
.mm-ins-link{cursor:pointer}
.mm-ins-img{cursor:zoom-in}
.mm-att{cursor:pointer}
.mm-att:hover{background:rgba(127,127,127,.26)!important}
.mm-notebadge{cursor:pointer}
.mm-mkbg{pointer-events:none}
/* 手绘关系线：连接手柄 / 拖拽虚线 / 目标高亮 */
.mm-rel-handle{opacity:0;pointer-events:none;transition:opacity .14s;cursor:crosshair}
.mm-node:hover .mm-rel-handle,.mm-node.selected .mm-rel-handle{opacity:1;pointer-events:auto}
.mm-rel-handle circle{filter:drop-shadow(0 2px 4px rgba(20,30,60,.2))}
.mm-reldrag{fill:none;stroke:#0a84ff;stroke-width:1.8;stroke-dasharray:7 5;stroke-linecap:round;pointer-events:none}
.mm-node.rel-target .mm-rect{stroke:#0a84ff;stroke-width:2.4;filter:drop-shadow(0 0 6px rgba(10,132,255,.55))}

/* ===== 多媒体：媒体容器 / 折叠钮 / 折叠占位胶囊 ===== */
.mm-media-wrap{position:relative;margin-top:6px;display:flex;flex-direction:column;gap:4px;align-items:center}
.mm-media-fold{cursor:pointer}
.mm-media-fold circle{transition:transform .12s;transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 1px 2px rgba(15,30,60,.28))}
.mm-media-fold:hover circle{transform:scale(1.14)}
.mm-media-chip{display:inline-flex;align-items:center;gap:4px;padding:0;margin:0 0 0 6px;cursor:pointer;flex:none;
  background:rgba(10,132,255,.12);border:1px solid rgba(10,132,255,.32);border-radius:999px;
  color:inherit;font:inherit;line-height:1;overflow:visible}
.mm-mc-seg{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;font-size:11.5px;font-weight:600;white-space:nowrap;flex:none}
.mm-mc-seg+.mm-mc-seg{border-left:1px solid rgba(10,132,255,.25)}
.mm-mc-ic{width:13px;height:13px;flex:none;display:inline-flex;align-items:center;justify-content:center;color:#0a84ff}
.mm-media-chip:hover{background:rgba(10,132,255,.2);border-color:rgba(10,132,255,.5)}
.mm-media-chip:active{transform:scale(.96)}
.mm-vidbox{position:relative;border-radius:8px;overflow:hidden;background:#0b0f19;cursor:pointer;flex:none}
.mm-vidthumb{display:block;width:100%;height:100%;object-fit:cover}
.mm-vid-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.3))}
.mm-vidbox:hover .mm-vid-play{background:linear-gradient(180deg,rgba(10,132,255,.08),rgba(10,132,255,.24))}
.mm-vlb{position:fixed;inset:0;z-index:100001;background:rgba(15,18,28,.88);backdrop-filter:blur(6px);
  display:flex;flex-direction:column;animation:mm-lb-in .14s ease}
.mm-vlb-bar{height:52px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 14px;color:#e8ecf5}
.mm-vlb-t{font-size:14px;font-weight:600;letter-spacing:.3px}
.mm-vlb-x{width:36px;height:36px;border-radius:50%;border:none;background:rgba(255,255,255,.1);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s}
.mm-vlb-x:hover{background:rgba(255,80,80,.85)}
.mm-vlb-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:14px}
.mm-vlb-v{max-width:100%;max-height:100%;border-radius:10px;box-shadow:0 14px 50px rgba(0,0,0,.55);background:#000}

/* ===== 专业图片查看器 ===== */
.mm-lb{position:fixed;inset:0;z-index:100000;background:rgba(8,10,16,.94);
  display:flex;flex-direction:column;animation:mmlbIn .14s ease}
@keyframes mmlbIn{from{opacity:0}to{opacity:1}}
.mm-lb-stage{flex:1;position:relative;overflow:hidden;touch-action:none}
.mm-lb-img{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform;user-select:none;-webkit-user-drag:none}
.mm-lb-bar{position:relative;z-index:2;display:flex;align-items:center;gap:4px;align-self:center;
  margin:14px auto 0;padding:6px;border-radius:999px;
  background:rgba(30,34,46,.72);border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(16px) saturate(160%);box-shadow:0 8px 26px rgba(0,0,0,.4)}
.mm-lb-btn{min-width:36px;height:34px;padding:0 8px;border:none;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  background:transparent;color:#e8ebf2;font-size:17px;font-weight:600;cursor:pointer;transition:background .12s}
.mm-lb-btn:hover{background:rgba(255,255,255,.14)}
.mm-lb-btn:active{background:rgba(255,255,255,.24)}
.mm-lb-pct{min-width:56px;text-align:center;height:34px;display:inline-flex;align-items:center;justify-content:center;
  color:#fff;font-size:13px;font-weight:600;border-radius:999px;cursor:pointer}
.mm-lb-pct:hover{background:rgba(255,255,255,.14)}
.mm-lb-sep{width:1px;height:20px;background:rgba(255,255,255,.18);margin:0 4px}
.mm-lb-x{color:#ff6b6b}
.mm-lb-x:hover{background:rgba(255,80,80,.25)}

@media(max-width:760px){
  .mm-rel-hit{stroke-width:28}
  .mm-btitle rect,.mm-rel-t rect{stroke-width:1.7}
}

/* ============================================================
   思维导图 v1.24.4：手机底部操作条 + 顶部工具栏精简
   ============================================================ */
.mm-bottombar{display:none}
@media(max-width:760px){
  .mm-bottombar{display:flex;align-items:center;gap:10px;
    position:fixed;left:0;right:0;bottom:0;z-index:900;
    padding:7px 14px calc(8px + env(safe-area-inset-bottom));
    background:var(--bar);border-top:1px solid var(--line);
    backdrop-filter:blur(18px) saturate(160%)}
  .mm-bb{flex:1;min-height:46px;border-radius:12px;background:var(--field);
    border:1px solid var(--line);color:var(--tx);font-size:14px;font-weight:600;
    display:inline-flex;align-items:center;justify-content:center;
    transition:background .14s,transform .1s}
  .mm-bb:active{transform:scale(.94)}
  .mm-bb-main{flex:none;width:62px;height:62px;margin-top:-24px;border-radius:50%;
    background:var(--grad);border:3px solid var(--bg1);color:#fff;
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 10px 22px -8px rgba(10,132,255,.7);padding:0}
  .mm-bb-main svg{width:27px;height:27px;stroke-width:2.4;display:block}
  .mm-bb-main:active{transform:scale(.92)}
  /* 节点编辑组、插入组已移到底部条 / 更多 / 长按菜单，顶部隐藏避免拥挤 */
  .mm-tb-node,.mm-tb-insert{display:none}
  .mm-qh-card{min-width:0;width:min(86vw,320px);font-size:12.5px}
}

/* ============================================================
   思维导图 v1.25.0：拖拽平移/改结构时禁止选中文本
   （编辑框 .mm-edit 单独放开，编辑时仍可正常选字）
   ============================================================ */
.mm-canvasscreen,.mm-svg,#mmWorld,.mm-node,.mm-toolbar,
.mm-bottombar,.mm-bb{
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.mm-edit{-webkit-user-select:text;user-select:text}

/* =====================================================================
   PDF 工作台（图片合成 PDF + PDF 在线编辑），全程本机处理、不上传
   ===================================================================== */
.modal-full .modal-body:has(.ps-app){padding:0;overflow:hidden}
.ps-app{height:100%;min-height:0;display:flex;flex-direction:column;min-width:0}
[data-c="red"]{--g1:#f87171;--g2:#ef4444;--gs:rgba(239,68,68,.16);--gc:#fca5a5}

/* 隐私说明条 */
.ps-privacy{display:flex;align-items:center;gap:8px;margin:14px auto 2px;padding:9px 15px;border-radius:999px;
  font-size:12.5px;color:var(--tx2);background:var(--track);border:1px solid var(--line);max-width:92%;line-height:1.5}
.ps-privacy{background:color-mix(in srgb,var(--blue) 8%,var(--card));border-color:color-mix(in srgb,var(--blue) 18%,var(--line))}
.ps-privacy svg{width:16px;height:16px;flex:none;color:var(--blue)}

/* ---------- 首页入口 ---------- */
.ps-home{overflow-y:auto;display:flex;flex-direction:column;min-height:0;
  background:
    radial-gradient(1200px 480px at 18% -10%, color-mix(in srgb, var(--blue) 18%, transparent), transparent 60%),
    radial-gradient(900px 420px at 92% 8%, color-mix(in srgb, #e11d48 12%, transparent), transparent 55%),
    var(--bg, var(--track))}
.ps-entry{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;
  padding:32px 22px calc(26px + env(safe-area-inset-bottom));align-content:center;max-width:920px;margin:0 auto;width:100%}
.ps-entry-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:36px 22px;border-radius:22px;
  background:color-mix(in srgb, var(--card) 88%, transparent);border:1px solid color-mix(in srgb, var(--line) 80%, transparent);
  cursor:pointer;color:var(--tx1);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:0 18px 40px -26px rgba(0,0,0,.55);transition:transform .18s ease,box-shadow .18s ease,border-color .18s}
.ps-entry-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--blue) 42%,var(--line));
  box-shadow:0 26px 48px -22px rgba(0,0,0,.62)}
.ps-entry-card:active{transform:translateY(-1px)}
.ps-entry-ic{width:68px;height:68px;border-radius:20px;display:flex;align-items:center;justify-content:center;
  background:var(--track);color:var(--tx2);margin-bottom:4px;flex:none}
.ps-entry-ic[data-c="blue"]{background:linear-gradient(145deg,#5b9bff,#2563eb);color:#fff;box-shadow:0 14px 26px -12px rgba(37,99,235,.85)}
.ps-entry-ic[data-c="rose"]{background:linear-gradient(145deg,#fb7185,#e11d48);color:#fff;box-shadow:0 14px 26px -12px rgba(225,29,72,.85)}
.ps-entry-ic svg{width:34px;height:34px}
.ps-entry-card b{font-size:17.5px;letter-spacing:.01em}
.ps-entry-card small{font-size:12.5px;color:var(--tx3);text-align:center;line-height:1.6}
.ps-etxt{display:flex;flex-direction:column;gap:4px;min-width:0;align-items:center;text-align:center}
.ps-entry-go{display:none;align-items:center;justify-content:center;color:var(--tx3);flex:none}
.ps-entry-go svg{width:20px;height:20px}
.ps-home-foot{display:flex;justify-content:center;flex-wrap:wrap;padding:4px 20px calc(16px + env(safe-area-inset-bottom));
  color:var(--tx3);font-size:11.5px;margin-top:auto}
.ps-home-foot span+span::before{content:"·";margin:0 12px}
@media (max-width:640px){
  .ps-entry{grid-template-columns:1fr;padding-top:18px}
}

/* ---------- 图片清单 ---------- */
.ps-imglist{overflow:hidden}
.ps-il-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px 12px;flex:none}
.ps-il-ti b{font-size:15.5px;display:block}
.ps-il-ti small{font-size:12px;color:var(--tx3)}
.ps-il-actions{display:flex;gap:8px;flex:none;align-items:center}
.ps-paper-seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;flex:none}
.ps-paper-seg button{height:30px;padding:0 14px;border:none;background:transparent;color:var(--tx2);
  font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.ps-paper-seg button.on{background:var(--blue);color:#fff}
.ps-il-grid{flex:1;min-height:0;overflow-y:auto;padding:6px 18px;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:13px;align-content:start}
.ps-il-empty{grid-column:1/-1;text-align:center;color:var(--tx3);font-size:13px;padding:60px 0}
.ps-il-cell{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--track);
  aspect-ratio:1/1}
.ps-il-cell img{width:100%;height:100%;object-fit:cover;display:block}
.ps-il-num{position:absolute;left:7px;top:7px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;
  background:rgba(10,16,32,.72);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ps-il-orient{position:absolute;left:38px;top:7px;width:22px;height:22px;border-radius:999px;
  background:rgba(10,16,32,.72);color:#fff;display:flex;align-items:center;justify-content:center}
.ps-il-orient svg{width:13px;height:13px}
.ps-il-acts{position:absolute;right:6px;bottom:6px;display:flex;gap:5px}
.ps-il-acts button{width:30px;height:30px;border-radius:9px;border:1px solid rgba(255,255,255,.2);
  background:rgba(10,16,32,.7);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.ps-il-acts button svg{width:15px;height:15px}
.ps-il-acts button:hover{background:rgba(10,16,32,.9)}
.ps-il-foot{flex:none;display:flex;gap:9px;align-items:center;padding:12px 18px calc(12px + env(safe-area-inset-bottom));
  border-top:1px solid var(--line)}
.ps-il-foot .btn{flex:0 1 auto}
.ps-il-foot #psIlBack{margin-right:auto}
/* 图片清单：勾选 / 单击选中 / 整卡拖动 */
.ps-il-cell{user-select:none;cursor:grab}
@media (hover:hover) and (pointer:fine){.ps-il-cell{touch-action:none}}
.ps-il-cell:active{cursor:grabbing}
.ps-il-check{position:absolute;right:6px;bottom:6px;width:30px;height:30px;border-radius:9px;
  background:rgba(10,16,32,.7);display:flex;align-items:center;justify-content:center;cursor:pointer}
.ps-il-check input{width:19px;height:19px;accent-color:#34c759;cursor:pointer;margin:0}
.ps-il-cell.on{border-color:#34c759;box-shadow:0 0 0 2px rgba(52,199,89,.55)}
.ps-il-cell.cur{outline:2px solid var(--blue);outline-offset:2px}
/* 图片查看器：顶层 + 多图导航 + 计数 */
.lb-top{z-index:100002}
.lb-nav{position:absolute;top:50%;left:10px;transform:translateY(-50%);z-index:3;
  width:46px;height:46px;border-radius:50%;border:none;background:rgba(20,24,38,.55);color:#fff;
  font-size:30px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}
.lb-nav-r{left:auto;right:10px}
.lb-nav:active{background:rgba(20,24,38,.85)}
.lb-count{position:absolute;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);
  z-index:3;background:rgba(10,16,32,.7);color:#fff;font-size:12.5px;font-weight:700;padding:5px 13px;border-radius:999px}

/* ---------- 编辑器骨架（画板同款浮层玻璃工具栏） ---------- */
.ps-editor{overflow:hidden;position:relative;background:var(--track)}
.ps-chrome{position:absolute;inset:0;z-index:12;pointer-events:none}
.ps-chrome .ps-top,.ps-chrome .ps-tools{pointer-events:auto}
.ps-top{
  position:absolute;left:12px;right:12px;top:10px;display:flex;align-items:center;gap:8px;
  padding:8px 10px;border-radius:14px;min-width:0;
  background:rgba(20,22,28,.72);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.08);color:#f5f5f7;
}
.ps-docname{flex:1 1 auto;min-width:0;font-size:13.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.92}
.ps-tools{
  position:absolute;left:50%;transform:translateX(-50%);bottom:58px;display:flex;align-items:center;gap:6px;
  padding:8px;border-radius:16px;max-width:calc(100% - 24px);overflow-x:auto;scrollbar-width:none;
  background:rgba(20,22,28,.72);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.08);
}
.ps-tools::-webkit-scrollbar{height:0}
.ps-tools-sep{width:1px;height:22px;background:rgba(255,255,255,.16);margin:0 2px;flex:none}
.ps-hist{display:inline-flex;gap:4px;align-items:center;padding:2px;border-radius:12px;background:rgba(255,255,255,.06)}
.ps-hist button.off,.ps-hist button:disabled{opacity:.35;cursor:default}
.ps-hist em{font-style:normal;font-size:11px;margin-left:2px}
.ps-tb-group{display:flex;align-items:center;gap:4px;flex:none}
.ps-tb-zoom,.ps-tb-go{flex:none}
.ps-chrome button{
  height:36px;min-width:36px;padding:0 8px;border-radius:10px;border:1px solid transparent;
  background:rgba(255,255,255,.06);color:#e8e8ed;display:inline-flex;align-items:center;justify-content:center;gap:5px;
  cursor:pointer;font-family:inherit;font-size:12.5px;font-weight:600;transition:background .14s,color .14s,border-color .14s
}
.ps-chrome button svg{width:18px;height:18px}
.ps-chrome button:hover{background:rgba(255,255,255,.14);color:#fff}
.ps-chrome button.on{background:rgba(10,132,255,.28);border-color:rgba(10,132,255,.45);color:#fff}
.ps-chrome button.danger:hover{background:rgba(239,68,68,.22);color:#ff8a80}
.ps-chrome button.primary{color:#7db7ff}
.ps-chrome button.primary.solid{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;padding:0 12px;border-color:transparent}
.ps-chrome button.primary.solid:hover{filter:brightness(1.07);color:#fff}
.ps-tb-zoom #psZoomPct{min-width:42px;text-align:center;font-size:12px;color:rgba(255,255,255,.55);font-weight:600}
@media (max-width:760px){
  .ps-tools{left:8px;right:8px;transform:none;bottom:72px;justify-content:flex-start}
  .ps-hist em{display:none}
  .ps-docname{display:none}
  .ps-top{left:8px;right:8px;top:8px;padding:6px 8px}
}

.ps-body{flex:1;min-height:0;display:flex;min-width:0;position:relative}
/* 缩略图：宽屏竖列 */
.ps-thumbs{flex:none;width:132px;overflow-y:auto;overflow-x:hidden;padding:12px 10px;display:flex;flex-direction:column;
  gap:10px;border-right:1px solid var(--line);background:var(--elev)}
.ps-thumb{position:relative;flex:none;border-radius:9px;overflow:hidden;border:2px solid transparent;cursor:pointer;
  background:var(--track)}
.ps-thumb canvas{display:block;width:100%;height:auto}
.ps-thumb.on{border-color:var(--blue)}
.ps-thumb-num{position:absolute;left:4px;top:4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;
  background:rgba(10,16,32,.7);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ps-thumb-acts{position:absolute;right:3px;bottom:3px;display:none;gap:3px}
.ps-thumb:hover .ps-thumb-acts{display:flex}
.ps-thumb-acts button{width:24px;height:24px;border-radius:7px;border:0;background:rgba(10,16,32,.78);color:#fff;
  display:flex;align-items:center;justify-content:center;cursor:pointer}
.ps-thumb-acts button svg{width:13px;height:13px}
.ps-thumbs{position:relative}
.ps-thumb{touch-action:none}
.ps-thumb.ps-dragging{opacity:.92;border-color:var(--blue);z-index:20;box-shadow:0 10px 24px rgba(13,40,90,.32)}
/* 图片清单实时让位：拖动时其它格子平滑移动，被拖格零延迟跟随 */
.ps-il-cell.ps-dragging{opacity:.97;border-color:var(--blue);box-shadow:0 20px 40px rgba(13,40,90,.4);transition:none}
.ps-il-dragging .ps-il-cell:not(.ps-dragging){transition:transform .16s cubic-bezier(.2,.8,.2,1)}

/* 缩略图折叠把手（宽屏：竖条） */
.ps-thumbtoggle{flex:none;width:18px;align-self:stretch;border:none;border-right:1px solid var(--line);
  background:var(--field);color:var(--tx2);cursor:pointer;font-size:13px;line-height:1;padding:0}
.ps-thumbtoggle:hover{color:var(--tx)}
.ps-body.thumbs-off .ps-thumbs{width:0;padding:0;overflow:hidden}
/* 页码导航（悬浮底部，不随画布滚动） */
.ps-pagenav{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);z-index:9;
  display:flex;align-items:center;gap:2px;padding:4px;border-radius:12px;
  background:var(--card);border:1px solid var(--line-2);box-shadow:0 8px 24px -8px rgba(0,0,0,.55)}
.ps-pagenav button{min-width:34px;height:30px;border:none;background:transparent;color:var(--tx);
  border-radius:8px;font-size:16px;cursor:pointer;padding:0 8px}
.ps-pagenav button:hover{background:var(--field)}
.ps-pagenav #psPageNo{font-size:13px;font-weight:600;min-width:62px}
.ps-pagenav #psPageNo input{width:54px;height:26px;text-align:center;border:1px solid var(--brand);
  border-radius:7px;background:var(--field);color:var(--tx);font-size:13px;font-weight:600;padding:0}
/* PC：PDF 工作台桌面窗口态（标题栏可拖动、可最大化） */
.modal.modal-full.ps-float{position:fixed;inset:auto;width:1120px!important;max-width:calc(100vw - 48px);
  height:min(88vh,940px);max-height:calc(100vh - 48px);border-radius:18px;
  box-shadow:0 32px 90px -20px rgba(0,0,0,.65)}
.modal.modal-full.ps-float .modal-head{cursor:move;user-select:none}
.modal.modal-full.ps-float .modal-head button{cursor:pointer}
.modal.modal-full.ps-float.ps-max{inset:0!important;left:0;top:0;width:100%!important;max-width:100%;
  height:100%!important;max-height:100%;transform:none;border-radius:0}

/* 主舞台：block+inline-block 居中，溢出时可向两侧滚动，不裁左上；上下留白避开浮层工具栏 */
.ps-stagewrap{flex:1;min-width:0;min-height:0;overflow:auto;padding:72px 26px 110px;text-align:center;
  background:var(--track);-webkit-overflow-scrolling:touch}
.ps-stage{position:relative;display:inline-block;vertical-align:top;text-align:left;flex:none;
  box-shadow:0 18px 44px -18px rgba(0,0,0,.55);border-radius:6px;overflow:hidden}
#psCanvas{display:block;background:#fff}
#psOverlay{position:absolute;inset:0;width:100%;height:100%;touch-action:none}

/* 底部拇指操作条（仅窄屏） */
.ps-footbar{display:none;flex:none;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  border-top:1px solid var(--line);background:var(--elev)}
.ps-footbar .btn{flex:1;min-height:44px}

/* ---------- 打印预览层（全屏，带关闭/打印） ---------- */
.ps-print-layer{position:fixed;inset:0;z-index:100003;display:none;flex-direction:column;
  background:#4b4f58}
.ps-print-bar{display:flex;align-items:center;gap:12px;padding:10px 16px;flex:none;
  background:var(--elev);border-bottom:1px solid var(--line)}
.ps-print-ti{flex:1;text-align:center;font-size:15px;font-weight:700;color:var(--tx1)}
.ps-print-close,.ps-print-go{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 16px;
  border-radius:10px;border:1px solid var(--line);background:var(--track);color:var(--tx1);
  font-family:inherit;font-size:13.5px;font-weight:700;cursor:pointer}
.ps-print-go{border-color:transparent;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}
.ps-print-close svg{width:17px;height:17px}
.ps-print-go svg{width:18px;height:18px}
.ps-print-frame{flex:1;width:100%;border:0;background:#4b4f58}

/* ---------- 文字弹窗 ---------- */
.ps-textpop{position:absolute;inset:0;z-index:40;background:var(--scrim);
  display:flex;align-items:center;justify-content:center;padding:16px}
.ps-tp-card{width:min(340px,92%);display:flex;flex-direction:column;border-radius:18px;
  background:var(--card);border:1px solid var(--line-2);
  box-shadow:0 24px 60px -20px rgba(0,0,0,.75);padding:14px;gap:11px}
.ps-tp-ti{display:flex;align-items:center;justify-content:space-between}
.ps-tp-ti b{font-size:14.5px}
.ps-tp-ti button{width:30px;height:30px;border-radius:9px;border:0;background:transparent;color:var(--tx2);
  display:flex;align-items:center;justify-content:center;cursor:pointer}
.ps-tp-ti button svg{width:17px;height:17px}
.ps-textpop textarea{width:100%;min-height:74px;resize:vertical;border-radius:11px;border:1px solid var(--line);
  background:var(--track);color:var(--tx1);padding:10px 12px;font-family:inherit;font-size:14px;line-height:1.5}
.ps-textpop textarea:focus{outline:none;border-color:color-mix(in srgb,var(--blue) 50%,var(--line))}
.ps-tp-row{display:flex;align-items:center;gap:10px}
.ps-tp-row>span{font-size:12.5px;color:var(--tx3);flex:none;width:34px}
.ps-tp-seg{display:flex;gap:5px;flex:1}
.ps-tp-seg button{flex:1;height:32px;border-radius:9px;border:1px solid var(--line);background:var(--track);
  color:var(--tx2);font-size:12.5px;font-weight:600;cursor:pointer}
.ps-tp-seg button.on{border-color:var(--blue);color:var(--blue);background:color-mix(in srgb,var(--blue) 14%,transparent)}
.ps-tp-cols{display:flex;gap:8px}
.ps-tp-cols button{width:30px;height:30px;border-radius:50%;border:2px solid var(--line);cursor:pointer}
.ps-tp-cols button.on{border-color:var(--tx1);box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--blue)}
.ps-tp-foot{display:flex;gap:9px;justify-content:flex-end}
.ps-tp-foot .btn{min-width:78px}

/* ---------- 选中 sprite 浮动条 ---------- */
.ps-spract{position:absolute;z-index:28;display:flex;gap:4px;padding:4px;border-radius:11px;
  background:var(--card);border:1px solid var(--line);box-shadow:0 14px 34px -14px rgba(0,0,0,.6)}
.ps-spract button{width:32px;height:32px;border-radius:8px;border:0;background:transparent;color:var(--tx2);
  display:flex;align-items:center;justify-content:center;cursor:pointer}
.ps-spract button svg{width:17px;height:17px}
.ps-spract button:hover{background:var(--track);color:var(--tx1)}
.ps-spract button.danger:hover{background:rgba(239,68,68,.14);color:#ef4444}

/* ---------- busy 遮罩 ---------- */
.ps-busy{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;
  background:color-mix(in srgb,var(--elev) 55%,transparent)}
.ps-busy-box{display:flex;align-items:center;gap:11px;padding:13px 20px;border-radius:14px;background:var(--card);
  border:1px solid var(--line);box-shadow:0 18px 44px -16px rgba(0,0,0,.6);font-size:13.5px;color:var(--tx2)}
.ps-busy .lp-spin{width:19px;height:19px;border-width:2.5px}

/* =====================================================================
   响应式：≤760px 手机 / H5
   ===================================================================== */
@media(max-width:760px){
  .ps-privacy{margin:12px auto 4px}
  .ps-entry{grid-template-columns:1fr;gap:13px;padding:14px 16px 10px;align-content:start;flex:none}
  .ps-entry-card{flex-direction:row;align-items:center;gap:15px;padding:18px;text-align:left}
  .ps-entry-ic{width:56px;height:56px;border-radius:16px;margin:0}
  .ps-entry-ic svg{width:28px;height:28px}
  .ps-etxt{flex:1;align-items:flex-start;text-align:left}
  .ps-entry-card b{font-size:16px}
  .ps-entry-card small{font-size:12px;text-align:left}
  .ps-entry-go{display:flex}
  .ps-home-foot{padding-bottom:calc(14px + env(safe-area-inset-bottom))}

  /* 工具条横向滚动，隐藏不常用分组（操作走底部条） */
  .ps-toolbar{gap:6px;padding:8px 9px;overflow-x:auto;scrollbar-width:none}
  .ps-toolbar::-webkit-scrollbar{display:none}
  .ps-tb-sep,.ps-tb-mini,.ps-tb-zoom,.ps-tb-go{display:none}
  .ps-tb-left{flex:none;overflow:visible;gap:6px}
  .ps-toolbar button{height:38px;min-width:38px}

  .ps-body{flex-direction:column}
  /* 缩略图改顶部横条 */
  .ps-thumbs{width:100%;height:112px;flex:none;flex-direction:row;overflow-x:auto;overflow-y:hidden;
    border-right:0;border-bottom:1px solid var(--line);padding:9px 11px;gap:9px}
  .ps-thumb{height:100%;width:auto;flex:none}
  .ps-thumb canvas{height:100%;width:auto}
  .ps-thumb-acts{display:flex}
  .ps-thumb-acts button{width:22px;height:22px}

  .ps-stagewrap{padding:14px}
  .ps-footbar{display:flex}
  .ps-thumbtoggle{width:100%;height:22px;border-right:none;border-bottom:1px solid var(--line);font-size:12px}
  .ps-body.thumbs-off .ps-thumbs{width:100%;height:0;padding:0}
  .ps-pagenav{bottom:8px;padding:3px}
  .ps-pagenav button{min-width:30px;height:28px;font-size:15px;padding:0 6px}
  .ps-pagenav #psPageNo{min-width:54px;font-size:12px}

  .ps-il-head{flex-wrap:wrap;padding:12px 14px 10px}
  .ps-il-grid{padding:4px 14px;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
  .ps-il-foot{padding:10px 14px calc(10px + env(safe-area-inset-bottom));flex-wrap:wrap}
  .ps-il-foot .btn{flex:1 1 auto}
}

/* ===== QAFIX:shell:BEGIN ===== */
/* 手机端基础输入控件统一 16px：低于 16px 时 iOS Safari/WebView 聚焦会自动放大页面、
   失焦后又错位。只抬字号，padding/边框/聚焦光环不动；桌面端仍 14px 紧凑排版 */
@media (max-width:760px){
  .input,.select,textarea.input{font-size:16px}
}
/* 手机端顶栏避让刘海/灵动岛：viewport-fit=cover 下标题与时钟可能顶到状态栏。
   env() 在不支持的浏览器或 Android WebView 下为 0，无副作用 */
@media (max-width:760px){
  .topbar{height:calc(56px + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px)}
}
/* ===== QAFIX:shell:END ===== */

/* ===== QAFIX:ledger-core:BEGIN ===== */
/* —— 一句话记账（可展开智能输入框）—— */
.qk-smart{margin:2px 0 4px}
.qk-smart-toggle{display:flex;align-items:center;gap:6px;margin:0 auto;border:0;background:transparent;
  color:var(--cy,#22d3ee);font-size:12.5px;font-weight:600;cursor:pointer;padding:4px 10px}
.qk-smart-ic{font-style:normal;font-weight:800;border:1px solid currentColor;border-radius:6px;padding:0 5px;font-size:12px;line-height:1.5}
.qk-smart-caret svg{width:14px;height:14px}
.qk-smart-box{display:flex;gap:8px;margin-top:8px}
.qk-smart-input{flex:1;min-width:0;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);
  border-radius:11px;color:#fff;padding:10px 12px;font-size:16px;line-height:1.4}
.qk-smart-input::placeholder{color:rgba(255,255,255,.4)}
.qk-smart-go{flex:none;border:0;border-radius:11px;background:var(--grad,linear-gradient(135deg,#2f7bff,#1f63e0));
  color:#fff;font-size:13.5px;font-weight:700;padding:0 16px;cursor:pointer}
.qk-smart-res{margin-top:10px;background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.25);border-radius:12px;padding:10px 12px}
.qk-smart-res-t{font-size:12px;font-weight:700;color:#7dd3fc;margin-bottom:7px}
.qk-smart-chips{display:flex;flex-wrap:wrap;gap:6px}
.qk-smart-chip{font-size:12px;color:#eaf6ff;background:rgba(255,255,255,.08);border-radius:999px;padding:4px 10px}
.qk-smart-warn{margin-top:7px;font-size:12px;color:#fcd34d;line-height:1.5}
/* —— 二级分类子分类行 —— */
.qk-subbar{display:flex;flex-wrap:wrap;gap:8px}
.tag.sub{background:rgba(251,191,36,.16);color:#fcd34d;border:0;font-size:11px}
.qk-tpltf{display:flex;align-items:center;color:var(--cy,#22d3ee)}
.qk-tpltf svg{width:18px;height:18px}
/* —— 备注多行自动增高 —— */
textarea.qk-note{resize:none;overflow:hidden;line-height:1.5;min-height:44px;max-height:88px;font-family:inherit}
/* —— 周期转账图标 —— */
.cy-tfic{flex:none;width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:rgba(34,211,238,.16);color:#22d3ee}
/* —— 年报：月报/年报切换 + 热力图 + 折线 —— */
.rp-mode button{font-size:12px;padding:4px 12px}
.hp-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding:4px 2px}
.hp-grid{display:grid;grid-auto-rows:11px;gap:2px;min-width:max-content}
.hp-cell{width:11px;height:11px;border-radius:2px;background:rgba(128,140,160,.18)}
.hp-cell.today{box-shadow:0 0 0 1.5px var(--tx,#888)}
/* —— 账户管理拖拽手柄 —— */
.acm-grip{flex:none;width:22px;display:flex;align-items:center;justify-content:center;color:var(--tx3,#888);cursor:grab;touch-action:none}
.acm-grip svg{width:16px;height:16px}
/* ===== QAFIX:ledger-core:END ===== */

/* ===== QAFIX:finance:BEGIN ===== */
/* 财务模块静态审查加固：仅作用于财务各页容器，不触碰全局基础规则。
   目标：窄屏/横竖屏无横向溢出；flex/grid 子项 min-width:0 防内容撑破；子 tab 横滑不挤压。 */

/* 五个子 tab：极窄屏允许横向滚动而非压缩换行，图标保持原尺寸不放大 */
#finTabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#finTabs::-webkit-scrollbar{display:none}
#finTabs button{flex:0 0 auto}

/* grid/flex 子项兜底 min-width:0（.g2 用 repeat(1fr)=minmax(auto,1fr) 的补偿），
   防止长金额/长备注把卡片撑出容器 */
#debtPane .grid>*,#debtPane .field-row>*:not([style]),
#savingsPane .field-row>*:not([style]),#assetsPane .field-row>*:not([style]),
#reimbPane .field-row>*:not([style]){min-width:0}
#debtPane .debt-amounts>*{min-width:0}

/* 还款卡标题区：长账户名截断，状态徽标不被挤出 */
#debtPane .debt-top{gap:8px}
#debtPane .debt-name{flex:1 1 auto;min-width:0}
#debtPane .debt-name>div{min-width:0}
#debtPane .debt-name .t,#debtPane .debt-name .s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
#debtPane .debt-badge{flex:0 0 auto}

/* 还款明细行：长备注截断不换行撑高 */
#debtPane .pay-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis}

/* 资产页三卡金额：窄屏不溢出（兜底） */
#assetsPane .as-trio-card{min-width:0}
/* ===== QAFIX:finance:END ===== */

/* ===== QAFIX:dashboard:BEGIN ===== */
/* 手机端工具弹窗输入框提到 16px，避免 iOS 聚焦时自动放大页面；按各工具根 class 作用域 */
@media (max-width: 760px) {
  .rmb-tool .input, .py-tool .input, .cd-add .input, .alm-nav .input,
  .lb-inputs .input, .ip-ta, .qc-tool .input, .im-maxw, .ps-textpop textarea {
    font-size: 16px;
  }
  .ps-pagenav #psPageNo input { text-align: center; }
}
/* 工具内滚动区只纵向滚动、不横向溢出 */
.calc-hist, .cdm-list, .alm-sc-wrap, .im-list, .ip-results { overflow-x: hidden; }
/* 首页快捷/工具入口：图标不放大，长标题省略不撑破网格 */
.quick-grid .q-item, .tools-grid .tool-tile { min-width: 0; }
.quick-grid .q-item > span:last-child, .tools-grid .tool-tile > span:last-child {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
}
/* ===== QAFIX:dashboard:END ===== */

/* ===== QAFIX:todo-notes:BEGIN ===== */
/* 待办/生日/记事本 收尾修复：仅作用域覆盖，不改全局基础规则 */

/* (1) 记事本移动端编辑全屏校正。
   #pagesTrack 带 will-change:transform 且被横滑位移，其内部 position:fixed
   会相对 track 而非视口，随路由横滑错位。改为相对当前 .page(relative) 的
   absolute inset:0，使全屏编辑始终贴合当前活动页。 */
@media (max-width:860px){
  .notes-grid.editing #nEditor{position:absolute;inset:0;z-index:60;background:var(--bg1)}
}

/* (2) iOS 防自动放大：窄屏下模态与本页输入/下拉字号≥16px（桌面保持原 14px 密度） */
@media (max-width:860px){
  .modal-body .input,
  .modal-body .select{font-size:16px}
  .tag-pop .input{font-size:16px}
  .n-search .input,
  .todo-search .input{font-size:16px}
}

/* (3) 防横向溢出：flex/grid 子项允许收缩，长文本断行，日历导航窄屏可换行 */
.todo-item .grow{min-width:0}
.todo-item .t,
.todo-card .tc-title{min-width:0;overflow-wrap:anywhere}
.cal-nav{flex-wrap:wrap;justify-content:center;row-gap:6px}
.cal-nav>*{min-width:0}
.bd-id{min-width:0}
.bd-name{min-width:0}
.note-row .nr-main{min-width:0}
.note-row .nr-sum,
.note-tile .nt-sum{overflow-wrap:anywhere}
/* ===== QAFIX:todo-notes:END ===== */

/* ===== QAFIX:canvas:BEGIN ===== */
/* 思维导图 + 量尺：画布手势隔离 / 手机输入框字号 / 无横向溢出。仅追加，不改全局基础规则。 */

/* 量尺画布：拖线、拖端点全程接管指针。touch-action:none 杜绝浏览器把拖线当成
   页面滚动/缩放手势而吞掉 pointermove；#msLoupe 为放大镜浮层同样禁止手势。 */
.ms-editor #msCanvas,
.ms-editor #msLoupe{touch-action:none;}

/* 导图画布已是 touch-action:none（见既有 .mm-viewport），此处仅加固：
   库卡片在窄屏单列，杜绝 min-width:auto 撑出横向滚动条。 */
.mm-lib-grid{grid-template-columns:repeat(auto-fill,minmax(min(282px,100%),1fr));}

/* 手机（≤760px）：弹窗内文字输入框字号提到 ≥16px，
   避免 iOS Safari 聚焦 <16px 输入框时自动整页放大导致模态框错位。
   （画布上的就地编辑框 .mm-edit 保持 14px 以与节点排版逐像素对齐，不受此处影响。） */
@media (max-width:760px){
  #mmRenameInput,
  #mmAiGenInput,
  .mm-note-ta{font-size:16px;}
  /* 量尺长度输入框已是内联 20px 居中，这里补一条最小字号兜底并保持不溢出 */
  #msLenInput{font-size:20px;width:100%;box-sizing:border-box;}
}
/* ===== QAFIX:canvas:END ===== */

/* ===== QAFIX:portal-files:BEGIN ===== */
/* 收尾修复：仅作用域覆盖，不改全局基础规则。
   输入框≥16px 防 iOS 自动放大（shell 块已全局覆盖 .input/.select/textarea.input）、
   grid minmax(0,1fr)/min-width:0 防撑宽（p-cards/files-grid/vault-grid 已内置）、
   长名截断（.sr-url span/.fn 两行 clamp/.z-meta/.sl-url）均已就绪；
   本块只补 portal/vault/files 仍缺的窄屏收缩与安全区细节。未使用 color-mix，无需 fallback。 */

/* 窄屏：顶部分类标签与工具栏搜索可收缩，长名省略，不横向溢出 */
@media (max-width:760px){
  .p-chips{min-width:0}
  .p-chip{min-width:0}
  .p-chip>*{min-width:0}
  .p-toolbar .search{flex:1 1 120px;min-width:0}
  .p-toolbar .search .input{width:100%}
}

/* 预览文档底部工具条 / 图片查看条避让 iOS home 指示条（env 不支持时为 0，无副作用） */
.preview-mask .pv-docbar{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}
.lb-bar{padding-bottom:env(safe-area-inset-bottom,0px)}
.lb-stage{padding-bottom:env(safe-area-inset-bottom,0px)}
/* ===== QAFIX:portal-files:END ===== */

/* ===== QAFIX:settings-ai:BEGIN ===== */
/* 设置 & AI 小助理收尾：仅作用域覆盖，不改全局基础规则。
   目标：手机输入≥16px 防 iOS 聚焦自动放大；消息气泡/代码块不撑宽出屏；
   设置长表单窄屏单列自适应；发送钮拇指热区与 home 指示条安全区。 */

/* (1) 手机端 AI 输入框字号补到 16px。
   QAFIX:shell 已把全局 .input/textarea.input 抬到 16px，但其优先级低于
   既有的 .aic-inputbar textarea.input(15px)，AI 输入框在 iOS 聚焦时仍会
   触发整页放大、失焦错位。这里按同一路径补回，桌面端保持不变。 */
@media (max-width:760px){
  .aic .aic-inputbar textarea.input,
  body.ai-focus .aic-inputbar textarea.input{font-size:16px}
}

/* (2) 消息气泡防撑宽：.aic-msg 是 flex 行，flex 子项默认 min-width:auto，
   一段无空格长代码/长 URL 会把气泡顶出视口。允许气泡收缩到容器内，
   <pre> 走自身横向滚动；md 内长词允许断行。 */
.aic-msg{min-width:0}
.aic-msg .bubble{min-width:0}
.aic-msg .bubble .md{min-width:0;overflow-wrap:anywhere;word-break:break-word}

/* (3) 设置「修改主密码」双卡（新密码 / 确认新密码）窄屏改单列，
   避免 360px 屏上两列被挤成窄条；其余设置项不受影响。 */
@media (max-width:760px){
  .settings-list .field-row{flex-wrap:wrap}
  .set-pane .field-row{flex-wrap:wrap}
  .settings-list .field-row>*{flex:1 1 100%;min-width:0}
  .set-pane .field-row>*{flex:1 1 100%;min-width:0}
}

/* (4) AI 底栏：发送钮保持 ≥42px 拇指热区；底部补 safe-area 兜底，
   避免被 home 指示条/手势条遮挡（env 不支持时回退 0，无副作用）。 */
.aic-composer{padding-bottom:calc(4px + env(safe-area-inset-bottom,0px))}
.aic-send{min-width:42px;min-height:42px}
/* ===== QAFIX:settings-ai:END ===== */

/* =====================================================================
   邮箱聚合（多邮箱统一收件箱，手动刷新；账号编辑/删除需主密码复核）
   ===================================================================== */
.mail-view{height:100%;display:flex;flex-direction:column;min-height:0}

/* 顶部头部卡 */
.mail-head{flex:none;display:flex;align-items:center;gap:12px;margin:12px 14px 4px;padding:13px 15px;
  border-radius:16px;background:var(--card);border:1px solid var(--line);
  box-shadow:0 8px 22px -16px rgba(15,23,42,.55)}
.mail-head-l{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.mail-head-ic{flex:none;width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 6px 14px -6px rgba(37,99,235,.75)}
.mail-head-ic svg{width:22px;height:22px}
.mail-head-tx{display:flex;flex-direction:column;min-width:0}
.mail-head-tx b{font-size:15.5px;color:var(--tx1);line-height:1.25}
.mail-head-sub{font-size:12px;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-head-r{display:flex;gap:8px;flex:none}
.icon-tool{width:40px;height:40px;border-radius:11px;border:1px solid var(--line);background:var(--track);
  color:var(--tx2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.icon-tool svg{width:19px;height:19px}
.icon-tool:hover{color:#2563eb;border-color:#2563eb;background:color-mix(in srgb,#2563eb 8%,var(--card))}
.icon-tool.spinning svg{animation:mailspin 1s linear infinite}
@keyframes mailspin{to{transform:rotate(360deg)}}

/* 筛选 chips */
.mail-filter{flex:none;display:flex;gap:8px;overflow-x:auto;padding:8px 14px 10px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch}
.mail-filter::-webkit-scrollbar{display:none}
.fchip{flex:none;display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 15px;border-radius:999px;
  border:1px solid var(--line);background:var(--card);color:var(--tx2);font-size:13px;font-weight:600;
  cursor:pointer;white-space:nowrap;transition:.14s}
.fchip .dot{width:9px;height:9px;border-radius:50%}
.fchip:hover{border-color:color-mix(in srgb,var(--blue) 40%,var(--line));color:var(--tx1)}
.mail-filter .fchip.on{background:linear-gradient(135deg,#3b82f6,#2563eb);border-color:transparent;color:#fff;
  box-shadow:0 6px 14px -6px rgba(37,99,235,.75)}
.mail-filter .fchip.on .dot{box-shadow:0 0 0 2px rgba(255,255,255,.55)}

/* 列表 */
.mail-list{flex:1;min-height:0;overflow-y:auto;padding:2px 12px calc(16px + env(safe-area-inset-bottom))}
.mail-item{position:relative;width:100%;display:flex;align-items:flex-start;gap:12px;text-align:left;
  padding:13px 14px;margin-bottom:9px;border-radius:14px;border:1px solid var(--line);background:var(--card);
  box-shadow:0 1px 2px rgba(16,24,40,.05);
  cursor:pointer;transition:background .14s,border-color .14s,box-shadow .14s}
.mail-item:hover{border-color:color-mix(in srgb,var(--blue) 35%,var(--line));box-shadow:0 4px 14px -8px rgba(37,99,235,.35)}
.mi-avatar{flex:none;width:42px;height:42px;border-radius:12px;color:#fff;font-size:16px;font-weight:700;
  display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px -5px rgba(15,23,42,.5)}
.mi-avatar.sm{width:34px;height:34px;border-radius:10px;font-size:14px}
.mi-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.mi-top{display:flex;align-items:baseline;gap:8px}
.mi-from{font-size:14px;color:var(--tx1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-item.unread::before{content:"";position:absolute;left:0;top:11px;bottom:11px;width:3.5px;border-radius:0 3px 3px 0;background:#3b82f6}
.mail-item.unread .mi-from{font-weight:800}
.mi-udot{flex:none;width:8px;height:8px;border-radius:50%;background:#3b82f6;align-self:center;margin-top:1px;
  box-shadow:0 0 0 3px rgba(59,130,246,.15)}
.mi-udot.none{background:transparent;border:1.6px solid #c3c8d2;box-shadow:none}
.mi-time{margin-left:auto;flex:none;font-size:11.5px;color:var(--tx3);font-weight:600}
.mi-sub{font-size:13.5px;color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-item.unread .mi-sub{color:var(--tx1);font-weight:700}
.mi-snip{font-size:12.5px;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mi-acc{flex:none;font-size:11px;font-weight:600;color:var(--tx3);padding:3px 9px;border-radius:8px;
  background:var(--track);max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px}
@media (max-width:760px){.mi-acc{display:none}}

/* 空态 */
.mail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  padding:70px 30px;text-align:center}
.me-ic{width:84px;height:84px;border-radius:26px;background:var(--track);color:var(--tx3);
  display:flex;align-items:center;justify-content:center}
.me-ic svg{width:40px;height:40px}
.mail-empty p{font-size:13.5px;color:var(--tx3);line-height:1.7;max-width:300px;margin:0}

/* 详情 */
.md-card{display:flex;flex-direction:column}
.md-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.md-meta{display:flex;align-items:center;gap:12px;min-width:0}
.md-who{min-width:0}
.md-who b{font-size:14.5px;display:block;color:var(--tx1)}
.md-who .tx3{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:380px}
.md-actions{display:flex;gap:7px;flex:none}
.md-act{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--card);
  color:var(--tx2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.14s}
.md-act svg{width:17px;height:17px}
.md-act:hover{color:var(--blue);border-color:color-mix(in srgb,var(--blue) 45%,var(--line));background:color-mix(in srgb,var(--blue) 7%,transparent)}
.md-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.md-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--tx2);
  background:var(--track);border:1px solid var(--line);border-radius:999px;padding:4px 11px}
.md-pill .dot{width:8px;height:8px;border-radius:50%}
.md-divider{height:1px;background:var(--line);margin:14px 0}
.md-body{font-size:13.5px;line-height:1.8;color:var(--tx1);white-space:pre-wrap;word-break:break-word;
  margin:0;max-height:56vh;overflow-y:auto}
.md-vcode-wrap{display:inline-flex;align-items:center;gap:8px;margin:0 4px;vertical-align:middle;
  white-space:nowrap;max-width:100%}
.md-vcode{display:inline-flex;align-items:center;margin:0;padding:1px 8px;border-radius:8px;
  font-size:26px;font-weight:800;letter-spacing:3px;line-height:1.2;
  font-variant-numeric:tabular-nums;color:var(--blue);
  background:color-mix(in srgb,var(--blue) 12%,transparent)}
.md-vcode-copy,.mi-vcode-copy{display:inline-flex;align-items:center;justify-content:center;flex:none;
  height:28px;margin:0;padding:0 12px;border-radius:999px;border:0;cursor:pointer;
  background:var(--blue);color:#fff;font-size:12.5px;font-weight:700;line-height:1}
.md-vcode-copy:hover,.mi-vcode-copy:hover{filter:brightness(1.06)}
.mi-vcode{display:inline-flex;align-items:center;align-self:flex-start;gap:8px;margin-top:4px;white-space:nowrap}
.mi-vcode b{font-size:18px;font-weight:800;letter-spacing:1.5px;line-height:1;color:var(--blue);font-variant-numeric:tabular-nums}

/* 账号管理 */
.acc-admin{display:flex;flex-direction:column;gap:9px;margin-bottom:12px}
.acc-row{display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:13px;
  background:var(--track);border:1px solid var(--line)}
.acc-avatar{flex:none;width:40px;height:40px;border-radius:11px;color:#fff;font-weight:700;font-size:15px;
  display:flex;align-items:center;justify-content:center}
.acc-info{flex:1;min-width:0}
.acc-info b{font-size:14px;display:block}
.acc-info .tx3{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acc-guard{flex:none;color:var(--blue);display:flex;opacity:.85}
.acc-row .icon-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--card);
  color:var(--tx2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.14s}
.acc-row .icon-btn svg{width:17px;height:17px}
.acc-row .icon-btn:hover{color:var(--tx1);border-color:var(--tx3)}
.acc-row .icon-btn.danger:hover{color:#ef4444;border-color:#ef4444;background:#fef2f2}
.acc-none{font-size:13px;padding:14px;text-align:center}
.acc-new{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;height:50px;border-radius:13px;
  border:1.5px dashed color-mix(in srgb,var(--blue) 45%,var(--line));
  background:color-mix(in srgb,var(--blue) 5%,transparent);
  color:var(--blue);font-size:14px;font-weight:700;cursor:pointer;transition:.14s}
.acc-new:hover{background:color-mix(in srgb,var(--blue) 10%,transparent)}
.acc-new-ic{display:flex}
.acc-new-ic svg{width:18px;height:18px}
.manage-hint{font-size:12px;color:var(--tx3);line-height:1.65;margin:11px 2px 0}
.field-row{display:flex;gap:10px}
.field-row .field{flex:1;min-width:0}
.field-row .field.small{flex:0 0 88px}
@media (max-width:560px){
  .mail-head{margin:10px 10px 4px;padding:11px 12px}
  .mail-list{padding:2px 10px calc(14px + env(safe-area-inset-bottom))}
  .acc-guard{display:none}
}

/* 收藏夹 chip（金色） */
.mail-filter .fav-chip svg{width:15px;height:15px}
.mail-filter .fav-chip.on{background:linear-gradient(135deg,#f59e0b,#f97316);border-color:transparent;color:#fff;
  box-shadow:0 6px 14px -6px rgba(245,158,11,.7)}

/* 工具按钮：多选 / 全部已读 / 删除已读（并入筛选行、收藏夹之后、向右对齐） */
.mail-filter .mf-tool{height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--line);
  background:var(--card);color:var(--tx2);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;
  display:inline-flex;align-items:center;gap:6px;flex:none;
  transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease,color .16s ease}
.mail-filter .mf-tool svg{width:15px;height:15px;transition:transform .16s ease}
.mail-filter #toolSelect{margin-left:auto}
.mail-filter .mf-tool:hover{transform:translateY(-2px);color:var(--blue);
  border-color:color-mix(in srgb,var(--blue) 45%,var(--line));
  background:color-mix(in srgb,var(--blue) 8%,var(--card));
  box-shadow:0 6px 14px -6px rgba(37,99,235,.5)}
.mail-filter .mf-tool:hover svg{transform:scale(1.12)}
.mail-filter .mf-tool:active{transform:translateY(0);box-shadow:0 2px 6px -3px rgba(37,99,235,.4)}
.mail-filter .mf-tool.danger:hover{color:#dc2626;border-color:color-mix(in srgb,#ef4444 50%,var(--line));
  background:color-mix(in srgb,#ef4444 9%,var(--card));box-shadow:0 6px 14px -6px rgba(239,68,68,.5)}
/* 工具行：多选 / 全部已读 / 删除已读，三等分 */
.mail-tools{flex:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;
  padding:0 14px 10px;min-width:0}
.mtool{display:inline-flex;align-items:center;justify-content:center;gap:5px;
  width:100%;height:36px;min-height:36px;max-height:36px;padding:0 8px;border-radius:999px;
  border:1px solid var(--line);background:var(--card);color:var(--tx2);font-size:13px;font-weight:600;
  cursor:pointer;white-space:nowrap;box-sizing:border-box;min-width:0;transition:.14s}
.mtool svg{width:15px;height:15px}
.mtool:hover{color:var(--blue);border-color:color-mix(in srgb,var(--blue) 45%,var(--line))}
.mtool.danger:hover{color:#ef4444;border-color:#ef4444;background:#fef2f2}

/* 多选状态条 */
.mail-selbar{flex:none;display:flex;align-items:center;justify-content:space-between;margin:0 14px 8px;
  padding:9px 14px;border-radius:11px;background:color-mix(in srgb,var(--blue) 10%,var(--card));
  border:1px solid color-mix(in srgb,var(--blue) 30%,var(--line))}
.mail-selbar b{font-size:13.5px;color:var(--blue)}
.sel-exit{border:none;background:transparent;color:var(--tx2);font-size:12.5px;font-weight:700;cursor:pointer}
.sel-exit:hover{color:var(--blue)}

/* 多选勾选圆 */
.mi-check{flex:none;width:22px;height:22px;border-radius:50%;border:1.8px solid #c3c8d2;color:transparent;
  display:flex;align-items:center;justify-content:center;margin-top:10px;transition:.14s}
.mi-check svg{width:13px;height:13px}
.mi-check.on{background:#3b82f6;border-color:#3b82f6;color:#fff}

/* 列表星标 */
.mi-star{flex:none;width:34px;height:34px;border-radius:10px;border:1px solid transparent;background:transparent;
  color:var(--tx3);display:flex;align-items:center;justify-content:center;cursor:pointer;margin-top:4px;transition:.14s}
.mi-star:hover{color:#f59e0b;background:color-mix(in srgb,#f59e0b 12%,transparent)}
.mi-star.on{color:#ffb300}

/* 列表内账号小标签（仅“全部”视图显示） */
.mi-acc-pill{display:none;align-self:flex-start;font-size:10.5px;font-weight:700;color:var(--tx3);
  background:var(--track);border-radius:7px;padding:2px 8px;margin-top:2px}
.mail-view[data-filter="all"] .mi-acc-pill{display:inline-flex}

/* 多选选中的邮件项 */
.mail-item.checked{border-color:#3b82f6;background:color-mix(in srgb,var(--blue) 7%,var(--card))}

/* 底部批量操作条 */
.mail-bulkbar{flex:none;display:flex;gap:8px;padding:9px 12px calc(10px + env(safe-area-inset-bottom));
  border-top:1px solid var(--line);background:var(--bg1)}
.bulk{flex:1;height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card);
  color:var(--tx2);font-size:13.5px;font-weight:700;cursor:pointer;transition:.14s}
.bulk:hover{color:var(--blue);border-color:color-mix(in srgb,var(--blue) 45%,var(--line))}
.bulk.danger{color:#ef4444}
.bulk.danger:hover{border-color:#ef4444;background:#fef2f2}

/* 详情页星标 */
.md-star{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--card);
  color:var(--tx3);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.14s}
.md-star:hover,.md-star.on{color:#ffb300;border-color:color-mix(in srgb,#f59e0b 45%,var(--line));
  background:color-mix(in srgb,#f59e0b 8%,transparent)}
.md-star-slot{width:36px;height:36px;display:flex;align-items:center;justify-content:center}

/* ============================================================
   软件 / 基础GPU渲染自动降级（html.sw 由 /js/sw-detect.js 首绘前判定）
   在 Microsoft Basic Render Driver / SwiftShader / llvmpipe 等软件光栅化下，
   backdrop-filter 与常驻 will-change 合成层可能不被光栅化（主区空白）。
   统一降级为普通绘制以保证内容可见；硬件 GPU 环境完全不受影响。
   ============================================================ */
/* 毛玻璃在软件渲染下要么无效要么导致整层空白，统一关闭（视觉退化为纯色面板） */
html.sw *,
html.sw *::before,
html.sw *::after{
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}
/* 轨道不常驻提升为超大合成层；翻页 transform 仍可用，浏览器按需临时提升 */
html.sw .pages-track{will-change:auto}
/* 分页入场动画只用透明度，避免 translateY 合成层在软件渲染下残留空白纹理 */
html.sw .page.pg-in .page-scroll{animation:pgInSw .34s ease both}
@keyframes pgInSw{from{opacity:0}to{opacity:1}}
/* 悬停浮起改用边框/阴影表达，不产生额外 transform 合成层 */
html.sw .tool-tile:hover,
html.sw .q-item:hover{transform:none}
html.sw .aic{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--elev-solid)}
html.sw .aic-ambient{display:none}
html.sw .aic-orb,html.sw .aic-hero-rings i,html.sw .aic-ava{animation:none}
/* 减少非必要的常驻合成提升（功能性 transform 缩放/平移不受影响） */
html.sw .up-queue{will-change:auto}

/* ============================================================
   v1.36.0 移动端 UI/交互批次
   设置 / 量尺 / 密码本 / 邮箱 / 记事本 / 网络导航 /
   仪表盘倒计时 / 待办 / 财务：统一铺满、留白、对齐
   ============================================================ */

/* ---- #275 设置页：卡片防横向溢出，长文本与下拉自适应 ---- */
@media(max-width:760px){
  .settings-list{min-width:0}
  .set-pane{min-width:0}
  .settings-list .card{min-width:0;max-width:100%}
  .set-pane .card{min-width:0;max-width:100%}
  .settings-list .row-item{flex-wrap:wrap;gap:8px 10px;min-width:0}
  .set-pane .row-item{flex-wrap:wrap;gap:8px 10px;min-width:0}
  .settings-list .row-item .grow{min-width:0;flex:1 1 180px;overflow-wrap:anywhere}
  .set-pane .row-item .grow{min-width:0;flex:1 1 180px;overflow-wrap:anywhere}
  .settings-list .row-item select,
  .set-pane .row-item select,
  .settings-list .row-item input:not([type=checkbox]):not([type=radio]){width:100%;max-width:100%}
  .set-pane .row-item input:not([type=checkbox]):not([type=radio]){width:100%;max-width:100%}
  .settings-list .card-title{overflow-wrap:anywhere}
  .set-pane .card-title{overflow-wrap:anywhere}
}

/* ---- #277 量尺：空态记录框与标题留出行距 ---- */
.ms-rec .ms-rec-empty{margin-top:12px}

/* ---- #278 密码本：分类两列等宽铺满，条目操作图标不贴边 ---- */
@media(max-width:760px){
  .vault-grid{display:flex;flex-direction:column}
  .vault-grid .cat-col{width:100%;box-sizing:border-box;align-self:stretch;
    display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}
  .vault-grid .cat-col .cat-manage{grid-column:1/-1}
  .vault-grid .vault-list{width:100%;box-sizing:border-box;padding:12px}
  .vault-list .row-item{flex-wrap:wrap;gap:8px;padding:12px}
  .vault-list .row-item .grow{flex:1 1 140px;min-width:0}
  .vault-list .row-item .act{margin-left:auto;flex:0 0 auto}
}

/* ---- #279 邮箱：外层 .page-scroll 不滚动，去掉其 padding 与滚动条槽，
   真正滚动在内部 .mail-list；手机端隐藏内部滚动条，卡片左右对称 12px 铺满 ---- */
.page-scroll.ps-mail{overflow:hidden;scrollbar-gutter:auto}
@media(max-width:760px){
  .page-scroll.ps-mail{padding:0}
  .mail-view{padding:0}
  .mail-head{margin:10px 12px 4px}
  .mail-filter{padding:8px 12px 10px}
  .mail-list{padding:2px 12px calc(12px + env(safe-area-inset-bottom));scrollbar-width:none}
  .mail-list::-webkit-scrollbar{display:none}
}

/* ---- #280 记事本：底部停靠工具条六钮等宽铺满（PC/手机通用） ---- */
.note-editor .ne-dock{justify-content:space-between;gap:4px}
.note-editor .ne-dock .grow{display:none}
.note-editor .ne-dock .dock-btn{flex:1 1 0;min-width:0;width:auto}

/* ---- #281 网络导航：搜索独占一行，第二排按钮按内容收紧，不再等分撑满 ---- */
@media(max-width:760px){
  .p-toolbar{flex-wrap:wrap;gap:8px;align-items:center}
  .p-toolbar .search{flex:1 1 100%!important;min-width:0;max-width:none}
  .p-toolbar .spacer{display:none}
  .p-toolbar .seg.mini{flex:0 0 auto;height:32px;min-height:32px;max-height:32px;padding:3px;border-radius:10px;overflow:hidden;align-items:stretch}
  .p-toolbar .seg.mini button{min-height:0;height:auto;align-self:stretch;padding:0 9px;border-radius:8px}
  .p-toolbar .seg.mini button svg{width:15px;height:15px}
  .p-toolbar #pTrash,.p-toolbar #pImport,.p-toolbar #pNew{
    flex:0 0 auto;height:32px;min-height:32px;padding:0 11px;font-size:12.5px;border-radius:10px;gap:4px;
  }
  .p-toolbar #pNew{margin-left:auto}
  .p-chips{grid-template-columns:repeat(3,1fr)}
}

/* ---- #282 仪表盘倒计时：小卡全部同一排等宽，空态卡缩成横条 ---- */
@media(max-width:760px){
  .cd-cards{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;
    scrollbar-width:none;-ms-overflow-style:none;padding-bottom:2px}
  .cd-cards::-webkit-scrollbar{display:none}
  .cdc{flex:0 0 auto;min-width:0;scroll-snap-align:start;padding:9px 8px;gap:4px;border-radius:12px}
  .cdc-name{font-size:11.5px}
  .cdc-num{font-size:22px}
  .cdc-unit{font-size:10px}
  .cdc-sub{display:none}
  .cd-addcard{flex:1 1 100%;flex-direction:row;align-items:center;justify-content:flex-start;
    gap:11px;padding:11px 14px;text-align:left}
  .cd-add-ic{width:32px;height:32px;flex:0 0 auto;border-radius:10px}
  .cd-add-tx{font-size:13px}
  .cd-addcard small{display:none}
}

/* ---- #283 待办：PC 行包裹 contents 还原一排；手机分三排整齐铺满 ---- */
@media(min-width:761px){
  .todo-bar{flex-direction:row;flex-wrap:wrap;align-items:center}
  .todo-bar .tbar-row{display:contents}
}
@media(max-width:760px){
  .todo-bar{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:8px}
  .todo-bar .tbar-row{display:flex;align-items:center;gap:8px;min-width:0;width:100%}
  .todo-bar .tbar-main #tSeg{flex:1 1 auto;display:flex;min-width:0;order:0}
  .todo-bar .tbar-main #tSeg button{flex:1 1 0;min-width:0;justify-content:center}
  .todo-bar .tbar-mid #tViewSeg{flex:0 0 auto;order:0}
  .todo-bar .tbar-mid #tTagFilter{flex:1 1 auto;width:auto;min-width:0;max-width:none;height:40px;order:0}
  .todo-bar .tbar-mid #tAddBtn{display:none}
  .todo-bar .tbar-icons .icon-btn{flex:1 1 0;min-width:0;width:auto;height:40px;order:0;padding:0}
}

/* ---- #284 财务：五标签图标在上、文字在下，等分铺满不拥挤 ---- */
@media(max-width:760px){
  #finTabs.segmented{gap:4px;flex-wrap:nowrap;overflow:visible}
  #finTabs button{flex:1 1 0;flex-direction:column;gap:3px;padding:8px 2px;
    font-size:11.5px;line-height:1.1;min-width:0}
  #finTabs button svg{width:18px;height:18px}
}

/* =====================================================================
   v1.36.1  浅色版面规整：财务标签去重底 / 记账筛选单列 / 邮箱精修
   ===================================================================== */
/* 财务标签：未选中项透明，消除“容器灰底＋按钮灰底”双层灰；选中绿胶囊保留 */
.fin-tabs button{background:transparent}
.fin-tabs button:hover{background:var(--hover);color:var(--tx1)}

@media(max-width:760px){
  /* 明细卡：禁止整卡横向溢出，金额/操作钮不被挤出屏幕 */
  #lpList .card{overflow-x:hidden}
  #lpList .row-item{flex-wrap:nowrap;gap:9px;min-width:0}
  #lpList .row-item .grow{flex:1 1 auto;min-width:0}
  #lpList .row-item .money{flex:none;font-size:13.5px}
  #lpList .row-item .act{gap:2px}
  #lpList .row-item .act .icon-btn{width:30px;height:30px}
  #lpList .row-item .fi-ico{width:32px;height:32px;flex:none}

  /* 明细卡标题行：操作钮尺寸统一、与月份对齐 */
  #lpList .card-title .more.fl{gap:4px}
  #lpList .card-title .more .icon-btn{width:34px;height:34px;border-radius:9px}
  #lpList #lYm{height:34px}

  /* 筛选区：搜索与三个下拉全部单列满宽，整齐、触控友好 */
  .l-filters{grid-template-columns:1fr;gap:9px;margin-top:13px}
  .l-search{grid-column:1/-1}
  .l-filters .l-search input{height:42px}
  .l-filters .select{width:100%;height:42px;padding:9px 12px;font-size:13.5px}

  /* 邮箱：过滤行末尾留足、邮件卡更透气、头像与星标对齐 */
  .mail-filter{gap:7px;padding:8px 20px 10px}
  .fchip{height:36px}
  .mail-list{padding:2px 12px calc(18px + env(safe-area-inset-bottom))}
  .mail-item{padding:14px;gap:11px;margin-bottom:10px;border-radius:15px}
  .mi-avatar{width:44px;height:44px;border-radius:13px}
  .mi-main{gap:4px}
  .mi-star{margin-top:-1px}
  .mail-item.unread::before{top:12px;bottom:12px}
}

/* 倒计时全屏标题栏右侧操作区：声音/添加与“倒计时”标题并成一行 */
.cd-head-acts{margin-left:auto;flex:none;display:flex;align-items:center;gap:8px}
@media(max-width:600px){
  .cd-head-acts{gap:6px}
  .cd-head-acts .btn.sm{padding:7px 10px;font-size:12.5px}
  .cd-head-acts #cdmSound{font-size:0;gap:0;padding:7px 9px}
  .cd-head-acts #cdmSound svg{width:17px;height:17px}
}

/* ===================== 在线扫描 ===================== */
/* ============ 在线扫描工作台（Finder 式：PC 双栏铺满、手机单列） ============ */
.scn-wrap{max-width:1600px;margin:0 auto}
/* 拖拽上传区：手机无页大框、有页紧凑横条；PC 双栏下恢复大框占左栏 */
.scn-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;
  min-height:clamp(320px,52vh,520px);padding:34px 24px;border:2px dashed var(--line);border-radius:20px;
  background:var(--panel-2);text-align:center;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.scn-dropzone:hover{border-color:#93c0ff;background:rgba(37,99,235,.05)}
.scn-dropzone.drag{border-color:#2563eb;background:rgba(37,99,235,.1);box-shadow:0 0 0 4px rgba(37,99,235,.14)}
.scn-dropzone .scn-dz-ic{display:inline-flex;align-items:center;justify-content:center;width:78px;height:78px;border-radius:22px;
  background:linear-gradient(140deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 18px 34px -14px rgba(37,99,235,.7)}
.scn-dropzone .scn-dz-ic svg{width:38px;height:38px}
.scn-dropzone .scn-dz-t{font-size:19px;font-weight:800;color:var(--tx)}
.scn-dropzone .scn-dz-s{max-width:460px;margin:0;font-size:13px;color:var(--tx2);line-height:1.7}
.scn-dropzone .scn-dz-btns{display:flex;gap:11px;margin-top:8px}
.scn-dropzone .scn-dz-btns .btn{min-width:150px}
.scn-dropzone .scn-dz-note{margin:6px 0 0;font-size:12px;color:var(--tx3)}
.scn-dropzone.scn-dz-compact{flex-direction:row;align-items:center;justify-content:flex-start;min-height:0;padding:12px 16px;gap:12px;
  border-width:1.5px;border-radius:14px;text-align:left}
.scn-dropzone.scn-dz-compact .scn-dz-ic{width:38px;height:38px;border-radius:11px;box-shadow:none}
.scn-dropzone.scn-dz-compact .scn-dz-ic svg{width:19px;height:19px}
.scn-dropzone.scn-dz-compact .scn-dz-t{font-size:14px;font-weight:700;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scn-dropzone.scn-dz-compact .scn-dz-s,
.scn-dropzone.scn-dz-compact .scn-dz-note{display:none}
.scn-dropzone.scn-dz-compact .scn-dz-btns{display:flex;gap:8px;margin:0 0 0 auto;flex:none}
.scn-dropzone.scn-dz-compact .scn-dz-btns .btn{min-width:0;padding:8px 13px;font-size:13px;gap:5px}

/* 批量扫描卡 */
.scn-batch{margin-top:16px}
.scn-batch.is-empty .scn-batch-head{display:none}
.scn-batch-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.scn-batch-head b{font-size:15px;color:var(--tx)}
.scn-batch-head .muted{font-size:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scn-check-all{display:inline-flex;cursor:pointer}
/* 单列卡片（手机默认） */
.scn-list{display:flex;flex-direction:column}
.scn-item{position:relative;display:flex;gap:13px;align-items:center;padding:11px 10px;border-radius:12px}
.scn-item.scn-draggable{touch-action:pan-x;cursor:grab;user-select:none;-webkit-user-select:none}
.scn-thumb{width:64px;height:86px;flex:none;object-fit:cover;border-radius:10px;border:1px solid var(--line-2);background:#f3f4f6}
.scn-meta{flex:1;min-width:0;display:flex;align-items:center;gap:9px}
.scn-idx{font-size:14px;font-weight:700;color:var(--tx)}
.scn-mode{font-size:11.5px;color:var(--blue);background:rgba(var(--blue-rgb),.1);border-radius:7px;padding:2px 8px}
.scn-item.selected{background:rgba(var(--blue-rgb),.12)}
.scn-item.selected .scn-idx{color:var(--blue)}
/* macOS 风格圆角复选框 */
.scn-check{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;cursor:pointer}
.scn-check input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.scn-cb{width:20px;height:20px;border-radius:6px;border:1.5px solid #c4c8d2;background:#fff;box-sizing:border-box;
  display:inline-flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}
.scn-cb::after{content:"";width:10px;height:6px;border-left:2px solid #fff;border-bottom:2px solid #fff;
  transform:rotate(-45deg) scale(0);margin-top:-2px;transition:transform .12s}
.scn-check input:checked + .scn-cb{background:var(--blue);border-color:var(--blue)}
.scn-check input:checked + .scn-cb::after{transform:rotate(-45deg) scale(1)}
.scn-check input:indeterminate + .scn-cb{background:var(--blue);border-color:var(--blue)}
.scn-check input:indeterminate + .scn-cb::before{content:"";width:10px;height:2px;background:#fff;border-radius:1px}
/* 拖拽：原位卡片淡化、跟随浮层（由 JS 内联定位），指示线由 JS 生成 */
.scn-item.scn-dragging{opacity:.4}
.scn-drag-ghost{border-radius:14px;overflow:hidden;opacity:.94;transform:scale(1.03) rotate(1deg);
  box-shadow:0 22px 56px rgba(0,0,0,.34)}
/* 底部操作条 */
.scn-bar{display:flex;margin-top:14px}
.scn-bar .btn{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 空状态 */
.scn-empty{padding:52px 20px;text-align:center}
.scn-empty-ic{display:inline-flex;align-items:center;justify-content:center;width:70px;height:70px;border-radius:20px;
  background:rgba(var(--blue-rgb),.1);color:var(--blue);margin-bottom:14px}
.scn-empty-ic svg{width:34px;height:34px}
.scn-empty-t{font-size:16px;font-weight:800;color:var(--tx)}
.scn-empty-s{margin-top:6px;font-size:13px;color:var(--tx2)}

.scn-busy{position:fixed;inset:0;background:rgba(15,23,42,.46);z-index:9400;display:none;align-items:center;justify-content:center}
.scn-busy-box{background:#fff;border-radius:15px;padding:16px 22px;display:flex;align-items:center;gap:12px;font-size:14px;color:var(--tx);box-shadow:0 24px 60px -20px rgba(0,0,0,.4)}
.scn-busy-box .lp-spin{width:22px;height:22px;flex:none}

.scn-ed{position:fixed;inset:0;z-index:9200;background:#0f172a;display:flex;flex-direction:column}
.scn-ed-top{flex:none;display:flex;align-items:center;gap:10px;padding:10px 12px;background:#111827;flex-wrap:wrap}
.scn-ed-top #edCancel{background:transparent;border:none;color:#9ca3af;font-size:14px;cursor:pointer;padding:6px 8px}
.scn-ed-seg{display:flex;background:#1f2937;border-radius:10px;padding:3px;gap:2px}
.scn-ed-seg button{border:none;background:transparent;color:#9ca3af;font-size:13px;padding:7px 14px;border-radius:8px;cursor:pointer}
.scn-ed-seg button.on{background:#3b82f6;color:#fff}
.scn-ed-top .spacer{flex:1}
.scn-ed-contrast{display:flex;align-items:center;gap:7px;color:#9ca3af;font-size:12.5px}
.scn-ed-contrast input[type="range"]{width:96px;accent-color:#3b82f6;cursor:pointer}
.scn-ed-contrast b{color:#e5e7eb;font-size:12.5px;min-width:34px;text-align:right;font-variant-numeric:tabular-nums}
.scn-ed-stage{flex:1;position:relative;overflow:hidden}
.scn-ed-stage img{position:absolute}
.scn-ed-lines{pointer-events:none}
.scn-handle{width:28px;height:28px;border-radius:50%;background:#3b82f6;border:3px solid #fff;
  box-shadow:0 3px 10px rgba(0,0,0,.4);cursor:grab;touch-action:none;z-index:6}
.scn-handle:active{cursor:grabbing}

@media(max-width:560px){
  .scn-dropzone{min-height:300px;padding:28px 18px}
  .scn-dropzone .scn-dz-btns{flex-direction:column;width:100%}
  .scn-dropzone .scn-dz-btns .btn{min-width:0}
  .scn-dropzone.scn-dz-compact{flex-wrap:nowrap;padding:10px 12px;gap:10px}
  .scn-dropzone.scn-dz-compact .scn-dz-btns{gap:7px}
  .scn-dropzone.scn-dz-compact .scn-dz-btns .btn{padding:9px 11px;gap:0}
  .scn-dropzone.scn-dz-compact .scn-dz-btns .dz-bt{display:none}
  .scn-bar{gap:7px}
  .scn-ed-seg button{padding:7px 10px;font-size:12.5px}
  .scn-ed-top{gap:7px;padding:9px}
}

/* ===== 平板起：扫描页改为网格卡片（顶部仍是紧凑添加条） ===== */
@media(min-width:640px){
  .scn-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:14px}
  .scn-item{flex-direction:column;align-items:stretch;padding:13px;gap:0;border:1px solid var(--line);
    border-radius:15px;background:var(--panel-2)}
  .scn-thumb{width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;background:#fff;border-radius:10px}
  .scn-meta{margin-top:11px;justify-content:center}
  .scn-item .scn-check{position:absolute;top:9px;left:9px;z-index:3}
  .scn-item.scn-draggable{touch-action:pan-y}
  .scn-item.selected{border-color:var(--blue);background:rgba(var(--blue-rgb),.12);
    box-shadow:0 0 0 1px rgba(var(--blue-rgb),.45)}
}

/* ===== PC 宽屏：左右双栏铺满（左=大拖放区常驻，右=扫描页网格），不再空旷 ===== */
@media(min-width:1024px){
  .scn-wrap{display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:18px;align-items:stretch}
  .scn-batch{margin-top:0}
  /* 左侧拖拽区恢复为大框（覆盖 compact 横条），高度填满左栏 */
  .scn-dropzone,
  .scn-dropzone.scn-dz-compact{flex-direction:column;justify-content:center;min-height:100%;height:100%;
    padding:34px 26px;gap:13px;border-width:2px;border-radius:20px;text-align:center}
  .scn-dropzone.scn-dz-compact .scn-dz-ic{width:78px;height:78px;border-radius:22px;
    box-shadow:0 18px 34px -14px rgba(37,99,235,.7)}
  .scn-dropzone.scn-dz-compact .scn-dz-ic svg{width:38px;height:38px}
  .scn-dropzone.scn-dz-compact .scn-dz-t{font-size:19px;font-weight:800}
  .scn-dropzone.scn-dz-compact .scn-dz-s{display:block;margin:0;max-width:460px;font-size:13px;line-height:1.7}
  .scn-dropzone.scn-dz-compact .scn-dz-btns{display:flex;flex-direction:column;width:100%;gap:11px}
  .scn-dropzone.scn-dz-compact .scn-dz-btns .btn{min-width:0}
  .scn-dropzone.scn-dz-compact .scn-dz-note{display:block}
  .scn-empty{padding:80px 20px}
}

/* ===== PC 在线扫描：独立浮动窗口（内容少则弹窗、避免空旷） ===== */
/* z-index 110 < modalRoot(120)：内部再弹 PDF 工作台(openModal) 能叠在扫描窗口之上，关闭后扫描仍在 */
.scn-win-mask{position:fixed;inset:0;z-index:110;background:var(--scrim);display:flex;align-items:center;justify-content:center}
.modal.modal-full.scn-win.ps-float{height:auto;max-height:calc(100vh - 48px)}
.scn-inwin{max-width:none}
.scn-inwin .scn-batch{margin-top:16px}
/* PC 顶部说明块 */
.scn-float-hero{border:1px solid var(--line);border-radius:16px;background:var(--panel-2);padding:18px 20px}
.scn-float-hero .scn-float-s{margin:0 0 14px;font-size:13.5px;color:var(--tx2);line-height:1.7}
.scn-float-hero .scn-float-btns{display:flex;gap:12px}
.scn-float-hero .scn-float-btns .btn{flex:1}
.scn-float-hero .scn-float-note{margin:12px 0 0;font-size:12px;color:var(--tx3);text-align:center}
/* PC 扫描页：网格卡片自然铺满，不宽行空旷 */
.scn-inwin .scn-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:13px}
.scn-inwin .scn-item{flex-direction:column;align-items:stretch;padding:12px;gap:0;border:1px solid var(--line);
  border-bottom:1px solid var(--line);border-radius:15px;background:var(--panel-2)}
.scn-inwin .scn-thumb{width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;background:#fff;border-radius:10px}
.scn-inwin .scn-meta{margin-top:11px;justify-content:center}
.scn-inwin .scn-draggable{touch-action:pan-y}
.scn-inwin .scn-item.selected{border-color:var(--blue);background:rgba(var(--blue-rgb),.12);
  box-shadow:0 0 0 1px rgba(var(--blue-rgb),.45)}
.scn-inwin .scn-bar{flex-wrap:wrap}
/* 独立“扫描成功”对话框（不占用 openModal，避免覆盖扫描窗口） */
.scn-ask{position:fixed;inset:0;z-index:10000;background:var(--scrim);display:flex;align-items:center;justify-content:center;padding:24px}
.scn-ask-box{width:380px;max-width:100%;background:var(--elev);border:1px solid var(--line);border-radius:20px;
  padding:26px 24px 22px;text-align:center;box-shadow:0 32px 90px -20px rgba(0,0,0,.6)}
.scn-ask-ic{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;
  background:rgba(16,185,129,.14);color:var(--ok)}
.scn-ask-ic svg{width:26px;height:26px}
.scn-ask-warn{background:rgba(245,158,11,.15);color:#d97706}
.scn-ask-t{margin:13px 0 4px;font-size:17px;font-weight:800;color:var(--tx)}
.scn-ask-s{margin:0 0 18px;font-size:13.5px;color:var(--tx2);line-height:1.7}
.scn-ask-btns{display:flex;gap:10px}
.scn-ask-btns .btn{flex:1}

/* ============ 本地天气（大气实况主视觉） ============ */
.wx-wrap{
  --wx-display:"Avenir Next","Segoe UI Variable Display","DIN Alternate","Helvetica Neue","Microsoft YaHei UI",sans-serif;
  display:flex;flex-direction:column;gap:16px;max-width:920px;margin:0 auto;padding-bottom:8px;
}
.wx-loading{display:flex;align-items:center;gap:12px;justify-content:center;min-height:220px;color:rgba(255,255,255,.78)}
.wx-loading .lp-spin{width:20px;height:20px;border-color:rgba(255,255,255,.22);border-top-color:#fff}
.wx-hero{
  position:relative;overflow:hidden;border-radius:28px;padding:22px 22px 18px;color:#f7fbff;
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 28px 60px -28px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.14);
  isolation:isolate;
}
.wx-hero-bg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.wx-orb,.wx-haze,.wx-sheen{position:absolute;border-radius:50%;filter:blur(2px)}
.wx-orb{
  width:min(52vw,340px);height:min(52vw,340px);right:-8%;top:-28%;
  background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.55),rgba(255,214,120,.35) 38%,transparent 68%);
  animation:wxOrb 10s ease-in-out infinite alternate;
}
.wx-haze{
  width:120%;height:70%;left:-10%;bottom:-28%;
  background:radial-gradient(ellipse at 50% 0%,rgba(255,255,255,.18),transparent 70%);
  animation:wxHaze 14s ease-in-out infinite alternate;
}
.wx-sheen{
  inset:auto auto -40% -20%;width:80%;height:80%;border-radius:40%;
  background:linear-gradient(120deg,rgba(255,255,255,.08),transparent 55%);
  animation:wxSheen 12s linear infinite;
}
@keyframes wxOrb{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(-18px,14px,0) scale(1.06)}}
@keyframes wxHaze{from{transform:translate3d(0,0,0)}to{transform:translate3d(12px,-8px,0)}}
@keyframes wxSheen{from{transform:translate3d(0,0,0) rotate(0)}to{transform:translate3d(8%,-4%,0) rotate(8deg)}}
.wx-hero[data-sky="clear"]{background:linear-gradient(155deg,#1a6fd4 0%,#3aa0ef 42%,#7ec8f5 100%)}
.wx-hero[data-sky="cloudy"]{background:linear-gradient(155deg,#3d5a80 0%,#5c7fa3 45%,#8eabc8 100%)}
.wx-hero[data-sky="rain"]{background:linear-gradient(155deg,#1c334d 0%,#2f5678 48%,#4d7ea3 100%)}
.wx-hero[data-sky="storm"]{background:linear-gradient(155deg,#141c2c 0%,#243656 50%,#3a5278 100%)}
.wx-hero[data-sky="snow"]{background:linear-gradient(155deg,#5b738c 0%,#8ea4b8 48%,#d5e3ee 100%);color:#123047}
.wx-hero[data-sky="fog"]{background:linear-gradient(155deg,#6b7580 0%,#8f99a3 50%,#b8c0c8 100%);color:#1c2430}
.wx-hero[data-sky="night"]{background:linear-gradient(155deg,#07101f 0%,#122744 48%,#1d3f66 100%)}
.wx-hero[data-sky="snow"] .wx-orb,.wx-hero[data-sky="fog"] .wx-orb{background:radial-gradient(circle at 35% 35%,rgba(255,255,255,.7),rgba(255,255,255,.2) 42%,transparent 70%)}
.wx-hero[data-sky="night"] .wx-orb{background:radial-gradient(circle at 40% 40%,rgba(180,210,255,.35),rgba(80,140,220,.12) 40%,transparent 68%);right:4%;top:-18%;width:220px;height:220px}
.wx-hero[data-sky="rain"] .wx-haze,.wx-hero[data-sky="storm"] .wx-haze{opacity:.55}
.wx-hero-top,.wx-hero-main,.wx-metrics{position:relative;z-index:1}
.wx-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}
.wx-place{display:flex;align-items:center;gap:10px;min-width:0}
.wx-place-pin{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.16);flex:none}
.wx-place-pin svg{width:17px;height:17px}
.wx-place-txt{min-width:0;display:flex;flex-direction:column;gap:2px}
.wx-place-city{font-family:var(--wx-display);font-size:22px;font-weight:700;letter-spacing:.3px;line-height:1.15}
.wx-place-sub{font-size:12px;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wx-hero .wx-icon-btn{
  width:40px;height:40px;border-radius:14px;border:1px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.12);color:inherit;display:grid;place-items:center;cursor:pointer;
  transition:background .18s,transform .18s;
}
.wx-hero .wx-icon-btn:hover{background:rgba(255,255,255,.22);transform:rotate(35deg)}
.wx-hero .wx-icon-btn svg{width:18px;height:18px}
.wx-hero-main{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:6px 0 18px}
.wx-hero-temp{
  font-family:var(--wx-display);font-size:clamp(72px,14vw,108px);font-weight:200;line-height:.88;
  letter-spacing:-3px;font-variant-numeric:tabular-nums;text-shadow:0 10px 30px rgba(0,0,0,.18);
}
.wx-hero-temp small{font-size:.42em;font-weight:300;margin-left:2px;letter-spacing:0;vertical-align:super}
.wx-hero-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px;padding-bottom:10px}
.wx-hero-ic{display:grid;place-items:center;width:64px;height:64px;border-radius:22px;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.18);
  box-shadow:0 12px 28px rgba(0,0,0,.16);animation:wxIcon 5.5s ease-in-out infinite alternate}
.wx-hero-ic svg{width:34px;height:34px}
@keyframes wxIcon{from{transform:translateY(0)}to{transform:translateY(-5px)}}
.wx-hero-cond{font-size:16px;font-weight:600;letter-spacing:.4px;opacity:.95}
.wx-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.wx-metric{
  display:flex;flex-direction:column;gap:4px;min-width:0;padding:10px 11px;border-radius:14px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.wx-metric-k{font-size:11px;opacity:.72}
.wx-metric-v{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.wx-ng-ext{display:none}
.wx-panel{
  position:relative;padding:18px 18px 16px;border-radius:22px;
  background:color-mix(in srgb, var(--card) 88%, transparent);
  border:1px solid var(--line);
  box-shadow:0 16px 36px -28px rgba(0,0,0,.45);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
}
.wx-sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px}
.wx-sec-title{font-family:var(--wx-display);font-size:16px;font-weight:700;letter-spacing:.2px;color:var(--tx)}
.wx-sec-sub{font-size:12px;color:var(--tx3)}
.wx-region{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.wx-region select{background:var(--field);border:1px solid var(--line);border-radius:12px;
  padding:11px 12px;color:var(--tx);font-size:14px;cursor:pointer;min-width:0}
.wx-region select:disabled{opacity:.55;cursor:not-allowed}
.wx-search{display:flex;align-items:center;gap:10px;background:var(--field);
  border:1px solid var(--line);border-radius:14px;padding:6px 12px}
.wx-search-ic{display:flex;flex:none;color:var(--tx3)}
.wx-search-ic svg{width:17px;height:17px}
.wx-search input{flex:1;min-width:0;background:transparent;border:0;outline:none;color:var(--tx);font-size:14px;padding:8px 0}
.wx-search input::placeholder{color:var(--tx3)}
.wx-geo-btn{flex:none;display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;
  border:1px solid rgba(56,140,255,.4);background:rgba(56,140,255,.14);color:#6eb4ff;
  cursor:pointer;font-size:13px;font-weight:600;transition:background .18s}
.wx-geo-btn:hover{background:rgba(56,140,255,.24)}
.wx-geo-btn svg{width:16px;height:16px}
.wx-search-results{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.wx-sr{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;
  padding:11px 12px;border-radius:12px;border:1px solid transparent;background:transparent;
  cursor:pointer;transition:background .15s,border-color .15s}
.wx-sr:hover{background:var(--panel-2);border-color:var(--line)}
.wx-sr-name{font-size:14px;color:var(--tx)}
.wx-sr-ad{font-size:11.5px;color:var(--tx3)}
.wx-sr-empty{font-size:12.5px;color:var(--tx3);padding:8px 12px}
.wx-auto{display:flex;align-items:center;gap:7px;margin-top:10px;background:transparent;border:0;
  color:#6eb4ff;font-size:12.5px;cursor:pointer;padding:6px 4px}
.wx-auto svg{width:15px;height:15px}
.wx-auto:hover{text-decoration:underline}
.wx-hours{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.wx-hours::-webkit-scrollbar{height:4px}
.wx-hours::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}
.wx-hour{flex:none;display:flex;flex-direction:column;align-items:center;gap:7px;min-width:62px;
  padding:12px 8px;border-radius:16px;background:var(--field);border:1px solid transparent;transition:border-color .15s,background .15s}
.wx-hour.on{border-color:rgba(56,140,255,.45);background:rgba(56,140,255,.12)}
.wx-hour-h{font-size:11.5px;color:var(--tx3)}
.wx-hour-ic{display:flex;color:#4ea1ff}
.wx-hour-ic svg{width:22px;height:22px}
.wx-hour-pop{font-size:10.5px;color:#5aa9ff;min-height:14px}
.wx-hour-pop-empty{visibility:hidden}
.wx-hour-t{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.wx-days{display:flex;flex-direction:column}
.wx-day{display:flex;align-items:center;gap:12px;padding:12px 6px;border-bottom:1px solid var(--line)}
.wx-day:last-child{border-bottom:0}
.wx-day.on .wx-day-w{color:#6eb4ff;font-weight:700}
.wx-day-w{flex:none;width:44px;font-size:13.5px;color:var(--tx)}
.wx-day-ic{flex:none;display:flex;color:#4ea1ff}
.wx-day-ic svg{width:23px;height:23px}
.wx-day-pop{flex:none;width:36px;font-size:11.5px;color:#5aa9ff;text-align:right}
.wx-day-temp{flex:1;min-width:0;display:flex;align-items:center;gap:10px;font-size:13.5px;font-variant-numeric:tabular-nums}
.wx-day-temp em{color:var(--tx2);font-style:normal;width:34px;text-align:right;flex:none}
.wx-day-temp b{color:var(--tx);font-weight:700;width:34px;flex:none}
.wx-day-bar{position:relative;flex:1;height:6px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
html[data-theme="light"] .wx-day-bar,[data-theme="mist"] .wx-day-bar{background:rgba(0,0,0,.08)}
.wx-day-bar i{position:absolute;top:0;bottom:0;border-radius:999px;background:linear-gradient(90deg,#64d2ff,#0a84ff)}
@media(max-width:760px){
  .wx-wrap{gap:12px}
  .wx-hero{padding:18px 16px 14px;border-radius:22px}
  .wx-place-city{font-size:19px}
  .wx-hero-temp{font-size:76px;letter-spacing:-2px}
  .wx-hero-ic{width:54px;height:54px;border-radius:18px}
  .wx-hero-ic svg{width:28px;height:28px}
  .wx-hero-cond{font-size:14.5px}
  .wx-metrics{grid-template-columns:repeat(2,1fr);gap:8px}
  .wx-geo-btn{padding:8px 11px}
  .wx-geo-btn .label{display:none}
  .wx-day-bar{display:none}
}
@media(min-width:1100px){
  .wx-wrap{
    width:100%;max-width:min(1480px, calc(100% - 24px));
    display:grid;grid-template-columns:1.7fr 1fr;gap:18px;align-items:stretch;
    grid-template-areas:"hero hero" "hours days" "city city";
  }
  .wx-hero{grid-area:hero;padding:28px 32px 22px;min-height:300px}
  .wx-place-city{font-size:26px}
  .wx-hero-temp{font-size:118px}
  .wx-hero-ic{width:76px;height:76px;border-radius:24px}
  .wx-hero-ic svg{width:40px;height:40px}
  .wx-metrics{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
  .wx-ng-ext{display:flex}
  .wx-hours-card{grid-area:hours}
  .wx-days-card{grid-area:days}
  .wx-city-card{grid-area:city}
  .wx-hours{overflow-x:hidden;gap:8px}
  .wx-hour{flex:1;min-width:0}
  .wx-days{gap:2px}
}
@media (prefers-reduced-motion:reduce){
  .wx-orb,.wx-haze,.wx-sheen,.wx-hero-ic,.wx-hero .wx-icon-btn:hover{animation:none;transform:none}
}

/* ===== 全局 Finder 式右键菜单（网盘 #fmMenu 与扫描 #scnCardMenu 共用；原仅在 files.js 内联，提取为全局，确保扫描页也能显示） ===== */
.fm-menu{position:fixed;z-index:9999;min-width:196px;display:none;flex-direction:column;padding:5px;
  background:rgba(252,252,254,.92);border:1px solid rgba(0,0,0,.12);border-radius:10px;
  box-shadow:0 10px 38px rgba(0,0,0,.22),0 0 0 .5px rgba(0,0,0,.05);
  backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%)}
.fm-menu.open{display:flex}
.fm-menu-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:6px;border:none;background:transparent;
  color:#1d1d22;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;text-align:left;width:100%}
.fm-menu-item svg{width:15px;height:15px;color:#5a5a62}
.fm-menu-item:hover:not(:disabled){background:#0a84ff;color:#fff}
.fm-menu-item:hover:not(:disabled) svg{color:#fff}
.fm-menu-item.danger{color:#e0463c} .fm-menu-item.danger svg{color:#e0463c}
.fm-menu-item:disabled{opacity:.34;cursor:default}
.fm-menu-sep{height:1px;margin:5px 8px;background:rgba(0,0,0,.1)}

/* ===== v3.0 沉浸式画板 / 看图 / 我的方案 ===== */
.sch-entry-sec{margin:0 0 18px}
.sch-entry-grid,.sch-entry-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:820px){.sch-entry-grid,.sch-entry-row{grid-template-columns:1fr}}
.sch-lib .sch-lib-count{font-size:13px;padding:4px 2px}
.sch-lib .sch-toolbar{align-items:center}
.sch-entry{
  display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:16px;text-align:left;
  background:var(--panel);border:1px solid var(--line);transition:border-color .15s,background .15s,transform .15s;
}
.sch-entry:hover{border-color:rgba(var(--blue-rgb),.45);background:var(--panel-2);transform:translateY(-1px)}
.sch-entry strong{display:block;font-size:15px;margin-bottom:2px}
.sch-entry .muted, .sch-entry small{display:block;font-size:12px;color:var(--tx2);line-height:1.35}
.sch-entry.slim{opacity:.95}
.sch-entry.board,.sch-entry.cad{flex:1}
.sch-page{padding:2px 2px 28px}
.sch-bar{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;margin:0 0 12px;padding:0;min-width:0}
.sch-count{flex:none;display:flex;align-items:baseline;gap:4px;color:var(--tx2);font-size:13px;white-space:nowrap}
.sch-count b{font-size:15px;font-weight:700;color:var(--tx)}
.sch-bar .sch-search{flex:0 1 280px;min-width:0;margin:0 0 0 auto;padding:6px 10px}
.sch-bar .btn{flex:none;white-space:nowrap}
.lib-view{display:flex;gap:2px;flex:none;padding:2px;border-radius:10px;background:var(--field);border:1px solid var(--line)}
.sv-btn{width:32px;height:30px;border:0;border-radius:8px;background:transparent;color:var(--tx2);
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.sv-btn svg{width:16px;height:16px}
.sv-btn.on{background:var(--panel);color:var(--blue);box-shadow:0 1px 3px rgba(0,0,0,.16)}
.sch-grid[data-view="small"]{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}
.sch-grid[data-view="small"] .sch-thumb{height:72px}
.sch-grid[data-view="small"] .sch-glyph{width:32px;height:32px;border-radius:10px}
.sch-grid[data-view="small"] .sch-glyph svg{width:16px;height:16px}
.sch-grid[data-view="small"] .sch-meta{padding:8px 10px 2px}
.sch-grid[data-view="small"] .sch-name{font-size:13px;margin-bottom:2px}
.sch-grid[data-view="small"] .sch-time{display:none}
.sch-grid[data-view="small"] .sch-foot{margin-top:0}
.sch-grid[data-view="small"] .sch-card.locked .sch-foot{margin-top:4px}
.sch-grid[data-view="small"] .sch-ops{padding:4px 8px 8px}
.sch-grid[data-view="small"] .sch-ops button{width:28px;height:28px}
.sch-grid[data-view="list"]{display:flex;flex-direction:column;gap:8px}
.sch-grid[data-view="list"] .sch-card{flex-direction:row;align-items:center}
.sch-grid[data-view="list"] .sch-card:hover{transform:none}
.sch-grid[data-view="list"] .sch-thumb{width:64px;height:48px;flex:none}
.sch-grid[data-view="list"] .sch-glyph{width:28px;height:28px;border-radius:8px}
.sch-grid[data-view="list"] .sch-glyph svg{width:15px;height:15px}
.sch-grid[data-view="list"] .sch-meta{flex:1;min-width:0;padding:8px 12px}
.sch-grid[data-view="list"] .sch-name{margin-bottom:2px}
.sch-grid[data-view="list"] .sch-time{margin-top:0}
.sch-grid[data-view="list"] .sch-ops{flex:none;padding:8px 10px}
.sch-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.sch-hero h2,.sch-title{font-size:22px;font-weight:700;letter-spacing:.2px}
.sch-hero-actions,.sch-actions{display:flex;gap:8px;flex-wrap:wrap}
.sch-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:8px 0 14px;flex-wrap:wrap}
.sch-filters{display:flex;gap:6px}
.sch-filters button{
  padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-size:12.5px;color:var(--tx2);
}
.sch-filters button.on{background:rgba(var(--blue-rgb),.18);border-color:rgba(var(--blue-rgb),.45);color:var(--tx)}
.sch-search{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:12px;background:var(--field);border:1px solid var(--line);min-width:220px}
.sch-search input{border:0;background:transparent;outline:none;width:100%;color:var(--tx)}
.sch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(188px,1fr));gap:12px}
.sch-card{
  display:flex;flex-direction:column;border-radius:14px;overflow:hidden;background:var(--panel);
  border:1px solid var(--line);cursor:pointer;transition:border-color .15s,transform .15s,background .15s;
  box-shadow:0 1px 2px rgba(0,0,0,.05);
}
.sch-card:hover{border-color:rgba(var(--blue-rgb),.4);transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,0,0,.08)}
.sch-thumb{
  height:92px;display:flex;align-items:center;justify-content:center;position:relative;
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(255,255,255,.16), transparent 58%),
    linear-gradient(160deg, rgba(59,130,246,.16), rgba(15,23,42,.04));
  color:var(--tx2);
}
.sch-thumb img{width:calc(100% - 16px);height:calc(100% - 16px);object-fit:cover;border-radius:9px;box-shadow:0 1px 4px rgba(0,0,0,.16)}
.sch-thumb.board{background:
  radial-gradient(120% 90% at 50% 0%, rgba(255,255,255,.16), transparent 58%),
  linear-gradient(160deg, rgba(167,139,250,.22), rgba(15,23,42,.04));}
.sch-thumb.cad{background:
  radial-gradient(120% 90% at 50% 0%, rgba(255,255,255,.14), transparent 58%),
  linear-gradient(160deg, rgba(56,189,248,.22), rgba(15,23,42,.05));}
.sch-glyph{
  width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  color:var(--blue);background:var(--panel);background:color-mix(in srgb, var(--panel) 78%, transparent);
  border:1px solid var(--line);box-shadow:0 4px 12px rgba(0,0,0,.08);
}
.sch-glyph svg{width:20px;height:20px}
.sch-thumb.cad .sch-glyph{color:#38bdf8}
.sch-thumb.board .sch-glyph{color:#a78bfa}
.sch-meta{padding:9px 11px 11px;background:var(--panel);transition:background .15s}
.sch-card.on .sch-meta{background:rgba(var(--blue-rgb),.2)}
.sch-card.sch-hold{cursor:grabbing}
.sch-card{user-select:none;touch-action:pan-y}
.sch-card.dragging,.sch-card.dragging:hover{opacity:.42;z-index:2;transform:none}
.sch-card.drop-before{box-shadow:inset 0 3px 0 var(--blue)}
.sch-card.drop-after{box-shadow:inset 0 -3px 0 var(--blue)}
.sch-grid[data-view="list"] .sch-card.drop-before{box-shadow:inset 3px 0 0 var(--blue)}
.sch-grid[data-view="list"] .sch-card.drop-after{box-shadow:inset -3px 0 0 var(--blue)}
.sch-bulk{display:flex;align-items:center;flex:none}
.sch-bulk .sch-del{color:#ff5a5f;border-color:rgba(255,90,95,.45)}
.sch-name{display:flex;align-items:center;gap:4px;font-weight:650;font-size:13.5px;margin-bottom:3px;min-width:0}
.sch-name span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sch-foot{display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:6px}
.sch-lock{flex:none;margin-left:auto;width:16px;height:16px;padding:0;border:0;background:transparent;color:#a78bfa;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.sch-card:has(.sch-thumb.cad) .sch-lock{color:#38bdf8}
.sch-lock svg{width:14px;height:14px}
.sch-sub{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tx2)}
.sch-tag{font-size:11px;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.08);border:1px solid var(--line)}
.sch-tag.board{color:#ffd60a}.sch-tag.cad{color:#64d2ff}
.sch-time{font-size:11.5px;margin-top:0}
.sch-ops{display:flex;gap:4px;padding:8px 10px 12px}
.sch-ops button{
  width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--tx2);background:var(--field);
}
.sch-ops button:hover{color:var(--tx);background:var(--field-2)}
.sch-empty{grid-column:1/-1;padding:48px 20px;text-align:center;color:var(--tx2)}
.sch-empty svg{width:36px;height:36px;margin-bottom:10px;opacity:.55}

.ib-root{
  position:relative;width:100%;
  height:calc(100vh - 108px);
  height:calc(var(--app-vh) * 100 - 108px);
  min-height:420px;border-radius:18px;overflow:hidden;
  background:#0b0f14;border:1px solid var(--line);isolation:isolate;
  overscroll-behavior:none;touch-action:none;color:#f2f2f7;
}
.ib-root.cad,.ib-root.paper{background:#f4f5f7;color:#1d1d22}
/* :has 供现代浏览器；.ib-host 由 board/cad-viewer JS 写入，兼容无 :has 的 Firefox 旧版 */
.page-scroll:has(.ib-root),.page-scroll.ib-host{padding:0!important;overflow:hidden}
@media (max-width:720px){
  .ib-root{
    height:calc(100vh - 118px);
    height:calc(var(--app-vh) * 100 - 118px - env(safe-area-inset-bottom,0px));
    min-height:0;border-radius:0;border-left:0;border-right:0;
  }
}
.ib-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.ib-chrome{
  position:absolute;inset:0;pointer-events:none;z-index:5;
  transition:opacity .28s ease;
}
.ib-chrome.fade{opacity:.18}
.ib-chrome.fade:hover,.ib-root:not(.immersed) .ib-chrome{opacity:1}
.ib-top,.ib-tools,.ib-colors,.ib-more,.ib-nav,.ib-pages,.ib-calc,.ib-ph,.ib-pactions,.ib-plist,.ib-pitem,.ib-btn,.ib-tool,.ib-swatch{
  pointer-events:auto;
}
.ib-top{
  position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:8px;border-radius:14px;background:rgba(20,22,28,.72);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.08);
}
.ib-root.cad .ib-top,.ib-root.cad .ib-tools,.ib-root.cad .ib-colors,.ib-root.cad .ib-pages,
.ib-root.paper .ib-top,.ib-root.paper .ib-tools,.ib-root.paper .ib-colors,.ib-root.paper .ib-pages,
.ib-root.paper .ib-more,.ib-root.paper .ib-calc{
  background:rgba(252,252,254,.92);border-color:rgba(0,0,0,.1);color:#1d1d22;
  box-shadow:0 8px 24px rgba(20,40,80,.08);
}
.ib-root.paper .ib-btn,.ib-root.paper .ib-tool,
.ib-root.cad .ib-btn,.ib-root.cad .ib-tool{background:rgba(0,0,0,.04)}
.ib-root.paper .ib-btn:hover,.ib-root.paper .ib-tool:hover,
.ib-root.cad .ib-btn:hover,.ib-root.cad .ib-tool:hover{background:rgba(0,0,0,.08)}
.ib-root.paper .ib-more button{background:rgba(0,0,0,.05);color:#1d1d22}
.ib-root.paper .ib-nav{
  background:rgba(255,255,255,.82);border-color:rgba(0,0,0,.1);color:#1d1d22;
  box-shadow:0 6px 16px rgba(20,40,80,.1);
}
.ib-root.paper .ib-nav:hover{background:#fff}
.ib-root.paper .ib-save{color:#6e6e73}
.ib-root.paper .ib-width{color:#6e6e73}
.ib-root.paper .ib-swatch{box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.ib-root.paper .ib-swatch.on{border-color:#0a84ff;box-shadow:0 0 0 2px rgba(10,132,255,.28)}
.ib-title{
  flex:1;min-width:120px;max-width:280px;border:0;background:transparent;color:inherit;font-weight:650;font-size:14.5px;outline:none;
}
.ib-save{font-size:11.5px;color:var(--tx3);padding:0 4px}
.ib-btn,.ib-tool{
  display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border-radius:11px;font-size:12.5px;
  background:rgba(255,255,255,.06);color:inherit;border:1px solid transparent;
}
.ib-btn:hover,.ib-tool:hover{background:rgba(255,255,255,.12)}
.ib-btn.primary,.ib-btn.on,.ib-tool.on,.ib-tool.smart.on{
  background:rgba(10,132,255,.22);border-color:rgba(10,132,255,.4);color:#fff;
}
.ib-root.cad .ib-btn.primary,.ib-root.cad .ib-btn.on,.ib-root.cad .ib-tool.on,
.ib-root.paper .ib-btn.primary,.ib-root.paper .ib-btn.on,.ib-root.paper .ib-tool.on,.ib-root.paper .ib-tool.smart.on{color:#0a84ff}
.ib-file{position:relative;overflow:hidden;cursor:pointer}
.ib-tools{
  position:absolute;left:50%;transform:translateX(-50%);bottom:72px;display:flex;gap:6px;padding:8px;
  border-radius:16px;background:rgba(20,22,28,.72);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.08);
  align-items:center;
}
.ib-tools-sep{width:1px;height:22px;background:rgba(255,255,255,.16);margin:0 2px;flex:none}
.ib-root.paper .ib-tools-sep{background:rgba(0,0,0,.12)}
.ib-hist{display:inline-flex;gap:4px;align-items:center;padding:2px;border-radius:12px;background:rgba(255,255,255,.06)}
.ib-root.paper .ib-hist{background:rgba(0,0,0,.05)}
.ib-hist .ib-tool.off,.ib-hist .ib-tool:disabled{opacity:.35;cursor:default}
.ib-tool em{font-style:normal;font-size:11px}
.ib-tool.smart em{margin-left:2px}
.ib-colors{
  position:absolute;left:10px;bottom:12px;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:14px;
  background:rgba(20,22,28,.72);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.08);flex-wrap:wrap;
}
.ib-colors.cv-print label{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--tx2)}
.ib-colors.cv-print select{
  border-radius:8px;border:1px solid var(--line);background:var(--field);color:inherit;padding:4px 6px;font-size:12px;
}
.ib-swatch{width:22px;height:22px;border-radius:50%;background:var(--c);border:2px solid transparent;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.ib-swatch.on{border-color:#64d2ff;box-shadow:0 0 0 2px rgba(100,210,255,.35)}
.ib-width{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--tx2)}
.ib-width input{width:90px}
.ib-more{
  position:absolute;left:50%;bottom:128px;transform:translateX(-50%);display:flex;flex-wrap:wrap;gap:6px;max-width:min(92vw,520px);
  padding:10px;border-radius:14px;background:rgba(20,22,28,.9);border:1px solid rgba(255,255,255,.1);
}
.ib-more button{padding:8px 12px;border-radius:10px;background:rgba(255,255,255,.08);font-size:12.5px}
.ib-nav{
  position:absolute;top:50%;transform:translateY(-50%);width:42px;height:64px;border-radius:12px;
  background:rgba(20,22,28,.45);border:1px solid rgba(255,255,255,.08);display:grid;place-items:center;color:#fff;
}
.ib-nav.prev{left:8px}.ib-nav.next{right:8px}
.ib-nav:hover{background:rgba(20,22,28,.75)}
.ib-dimbar{
  position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:6;
  display:flex;align-items:center;gap:8px;max-width:calc(100% - 24px);
  padding:6px 8px 6px 14px;border-radius:14px;
  background:rgba(22,24,30,.92);color:#fff;border:1px solid rgba(255,255,255,.14);
  box-shadow:0 12px 28px -16px rgba(0,0,0,.7);
}
.ib-dimbar[hidden]{display:none}
.ib-dimbar span{font-size:13.5px;font-weight:700;white-space:nowrap}
.ib-dimbar button{
  min-height:34px;padding:0 12px;border-radius:10px;border:0;cursor:pointer;
  background:#ff3b30;color:#fff;font-size:13px;font-weight:700;
}
.ib-dimbar #ibDimClear{background:rgba(255,255,255,.12);color:#fff}
.ib-root.paper .ib-dimbar,.ib-root.cad .ib-dimbar{
  background:#fff;color:#1d1d22;border-color:rgba(0,0,0,.08);
}
.ib-root.paper .ib-dimbar #ibDimClear,.ib-root.cad .ib-dimbar #ibDimClear{
  background:rgba(0,0,0,.06);color:#1d1d22;
}
.ib-pages,.ib-calc{
  position:absolute;top:64px;width:min(340px,92vw);z-index:8;
  background:rgba(18,20,26,.94);border:1px solid rgba(255,255,255,.1);border-radius:18px;
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  box-shadow:0 22px 56px rgba(0,0,0,.38);color:var(--tx);
}
.ib-pages{left:10px;bottom:12px;overflow:auto}
.ib-pages.wide,.ib-calc{right:10px;left:auto}
.ib-calc{
  bottom:auto;max-height:calc(100% - 76px);overflow:hidden;
  display:flex;flex-direction:column;padding:0;
}
.ib-root.cad .ib-pages,.ib-root.paper .ib-pages,.ib-root.paper .ib-calc{
  background:rgba(252,252,254,.97);color:#1d1d22;border-color:rgba(0,0,0,.1);
}
.ib-root.paper .ib-pitem{background:#f2f2f7}
.ib-root.paper .ib-pthumb{background:rgba(0,0,0,.06);color:#6e6e73}
.ib-panel-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.08);font-size:14px}
.ib-root.paper .ib-panel-head{border-bottom-color:rgba(0,0,0,.08)}
.ib-panel-head strong{font-size:15px;font-weight:700}
.ib-panel-head button{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;color:inherit;opacity:.7}
.ib-panel-head button:hover{opacity:1;background:rgba(255,255,255,.08)}
.ib-root.paper .ib-panel-head button:hover{background:rgba(0,0,0,.06)}
.ib-ph{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);font-size:14px}
.ib-pactions{display:flex;gap:6px;padding:10px 12px;flex-wrap:wrap}
.ib-pactions button{padding:6px 10px;border-radius:8px;background:var(--field);font-size:12px;border:1px solid var(--line)}
.ib-plist{padding:0 8px 12px;display:flex;flex-direction:column;gap:6px}
.ib-pitem{
  display:flex;align-items:center;gap:10px;padding:8px;border-radius:12px;background:var(--panel);border:1px solid transparent;
}
.ib-pitem.on,.ib-pitem:hover{border-color:rgba(var(--blue-rgb),.35)}
.ib-pitem.dragging{opacity:.55}
.ib-pthumb{
  width:56px;height:40px;border-radius:8px;background:rgba(255,255,255,.06);background-size:cover;background-position:center;
  display:grid;place-items:center;font-size:12px;color:var(--tx3);flex:none;
}
.ib-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--tx2)}

/* 核算报价面板 */
.ibc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:16px 16px 10px;flex:none}
.ibc-head-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.ibc-head-txt strong{font-size:16px;font-weight:700;letter-spacing:.2px}
.ibc-head-txt small{font-size:12px;color:rgba(255,255,255,.55)}
.ib-root.paper .ibc-head-txt small{color:#6e6e73}
.ibc-x{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;flex:none;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);color:inherit;cursor:pointer}
.ib-root.paper .ibc-x{background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.08)}
.ibc-x:hover{background:rgba(255,255,255,.12)}
.ibc-x svg{width:16px;height:16px}
.ibc-hero{
  margin:0 14px;padding:14px 16px;border-radius:16px;flex:none;
  background:linear-gradient(145deg,#0a84ff 0%,#2f6fed 55%,#1b4fbf 100%);
  color:#fff;box-shadow:0 14px 28px -14px rgba(10,132,255,.65);
}
.ibc-hero-k{display:block;font-size:11.5px;opacity:.82;letter-spacing:.3px}
.ibc-hero-v{display:block;margin-top:4px;font-size:28px;font-weight:700;letter-spacing:-.5px;
  font-variant-numeric:tabular-nums;font-family:"Avenir Next","Segoe UI Variable Display","DIN Alternate","Helvetica Neue",sans-serif}
.ibc-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 14px;flex:none}
.ibc-m{display:flex;flex-direction:column;gap:3px;padding:10px 10px 9px;border-radius:12px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.07);min-width:0}
.ib-root.paper .ibc-m{background:rgba(0,0,0,.035);border-color:rgba(0,0,0,.06)}
.ibc-m label{font-size:11px;color:rgba(255,255,255,.5)}
.ib-root.paper .ibc-m label{color:#6e6e73}
.ibc-m b{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.ibc-m em{font-style:normal;font-size:10.5px;color:rgba(255,255,255,.42)}
.ib-root.paper .ibc-m em{color:#8e8e93}
.ibc-list{flex:1 1 auto;min-height:0;overflow:auto;padding:0 10px 6px;display:flex;flex-direction:column;gap:8px}
.ibc-row{
  display:flex;align-items:flex-start;gap:10px;padding:11px 11px;border-radius:14px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);
}
.ib-root.paper .ibc-row{background:#f4f5f7;border-color:rgba(0,0,0,.06)}
.ibc-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.ibc-row-ti{display:flex;align-items:center;gap:7px;min-width:0}
.ibc-row-ti b{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ibc-tag{flex:none;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:999px;
  background:rgba(10,132,255,.18);color:#64d2ff}
.ib-root.paper .ibc-tag{background:rgba(10,132,255,.12);color:#0a84ff}
.ibc-row-main small{font-size:11.5px;color:rgba(255,255,255,.5);line-height:1.4}
.ib-root.paper .ibc-row-main small{color:#6e6e73}
.ibc-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.ibc-amt{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;color:#64d2ff}
.ib-root.paper .ibc-amt{color:#0a84ff}
.ibc-row-side button{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;
  color:rgba(255,255,255,.45);background:transparent;border:0;cursor:pointer}
.ib-root.paper .ibc-row-side button{color:#8e8e93}
.ibc-row-side button:hover{color:#ff453a;background:rgba(255,69,58,.12)}
.ibc-row-side button svg{width:14px;height:14px}
.ibc-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;
  padding:22px 18px;border-radius:16px;border:1px dashed rgba(255,255,255,.14);
  background:rgba(255,255,255,.03);color:rgba(255,255,255,.7)}
.ib-root.paper .ibc-empty{border-color:rgba(0,0,0,.12);background:rgba(0,0,0,.02);color:#3a3a3c}
.ibc-empty-ic{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;
  background:rgba(10,132,255,.16);color:#64d2ff}
.ib-root.paper .ibc-empty-ic{background:rgba(10,132,255,.1);color:#0a84ff}
.ibc-empty-ic svg{width:22px;height:22px}
.ibc-empty b{font-size:14px}
.ibc-empty p{font-size:12px;line-height:1.55;color:rgba(255,255,255,.48);max-width:240px}
.ib-root.paper .ibc-empty p{color:#6e6e73}
.ibc-foot{flex:none;padding:10px 14px 14px}
.ibc-copy{
  width:100%;height:42px;border:0;border-radius:13px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:#0a84ff;color:#fff;font-size:13.5px;font-weight:700;font-family:inherit;
  box-shadow:0 10px 22px -12px rgba(10,132,255,.8);transition:filter .15s,transform .12s;
}
.ibc-copy:hover{filter:brightness(1.06)}
.ibc-copy:active{transform:translateY(1px)}
.ibc-copy svg{width:16px;height:16px}
@media (max-width:720px){
  .ib-tools{bottom:88px;left:8px;right:8px;transform:none;justify-content:center;flex-wrap:wrap}
  .ib-tool em{display:none}
  .ib-colors{left:8px;right:8px;bottom:8px}
  .ib-nav{display:none}
}

/* ============================================================
   PC / H5 / 浏览器兼容加固（v1.80.3）
   ============================================================ */
/* 触摸设备：去掉默认高亮与长按呼出菜单干扰画板/按钮 */
button,a,.ib-btn,.ib-tool,.nav-item,.more-item,.tabbar button{
  -webkit-tap-highlight-color:transparent;
  -webkit-touch-callout:none;
}
/* iOS Safari：表单字号 <16px 会强制缩放页面；窄屏统一 16px */
@media (max-width:760px){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
  textarea,select{font-size:16px}
  /* 微信/QQ 内置浏览器：减少下拉穿透 */
  html.ua-wechat body,html.ua-qq body{overscroll-behavior-y:none}
  .page-scroll{overscroll-behavior-y:contain}
}
/* 无 backdrop-filter 时用更实的底，避免半透明发灰发空 */
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .gate,.sidebar,.topbar,.tabbar,.modal,.toast,.ib-top,.ib-tools,.ib-colors,.ib-pages,.ib-calc,
  .sheet,.pick-sheet,.preview-mask{
    -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
    background:var(--elev-solid,#1c1c1e)!important;
  }
}
/* Safari：sticky/fixed 与 100vh 组合时，主壳用 app-vh */
@media (max-width:760px){
  .app{min-height:calc(var(--app-vh) * 100);min-height:-webkit-fill-available}
  .qk-sheet{
    height:calc(var(--app-vh) * 100);
    max-height:calc(var(--app-vh) * 100);
  }
  .modal{max-height:calc(var(--app-vh) * 100 - 24px - env(safe-area-inset-bottom,0px))}
}
/* 仅触控（无 hover）：沉浸条不要依赖 :hover 才显现 */
@media (hover:none){
  .ib-chrome.fade{opacity:.42}
  .ib-root.immersed .ib-chrome.fade:active{opacity:1}
}
/* Firefox：隐藏滚动条工具条已用 webkit；补 padding 稳定布局 */
html.ua-firefox .page-scroll{scrollbar-gutter:auto}

/* ============================================================
   商业级手机验收加固（v1.80.27）
   安全区 / 375·390·414 / 横竖屏 / Tab≥44 / AI 三通道 / 输入法顶起 /
   overflow / 字体缩放 / ai-focus 沉浸
   ============================================================ */
@media (max-width:760px){
  html,body{overflow-x:hidden;max-width:100vw}
  .app,.main,.pages,.pages-track,.page-scroll{max-width:100%;min-width:0}
  img,video,canvas,svg{max-width:100%;height:auto}

  /* 登录门：刘海 + 底部指示条 */
  .gate{
    padding:max(20px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px))
      max(20px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));
    -webkit-overflow-scrolling:touch}
  .gate-card{width:100%;max-width:420px;padding:28px 20px 22px;border-radius:20px}
  .gate .btn.block{min-height:48px}
  .gate-link{min-height:44px;display:inline-flex;align-items:center;justify-content:center;
    padding:10px 8px;box-sizing:border-box}
  .pw-eye{width:44px;height:44px;right:2px}

  /* 顶栏 / 通用图标钮：拇指热区 ≥44 */
  .icon-btn,.sub-back{min-width:44px;min-height:44px;width:44px;height:44px}
  .topbar{padding-left:max(12px,env(safe-area-inset-left,0px));
    padding-right:max(12px,env(safe-area-inset-right,0px))}

  /* 底部 Tab：整项 ≥44，左右安全区，避让 Home 条 */
  .tabbar{
    min-height:calc(52px + env(safe-area-inset-bottom,0px));
    padding:6px max(6px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px))
      max(6px,env(safe-area-inset-left,0px))}
  .titem{min-height:44px;padding:6px 2px 4px;gap:2px;-webkit-tap-highlight-color:transparent}
  .titem .tile-icon{width:44px;height:28px}
  .titem .tlabel{line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .page-scroll{padding-left:max(14px,env(safe-area-inset-left,0px));
    padding-right:max(14px,env(safe-area-inset-right,0px));
    padding-bottom:calc(92px + env(safe-area-inset-bottom,0px))}

  /* AI 三通道顶栏：窄屏折行，不挤出视口 */
  .aic-top{flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
  .aic-seg{min-width:0}
  .aic-ch{min-height:34px;height:34px;padding:0 10px;line-height:34px;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  .aic-seg{min-height:40px;align-items:stretch}
  .aic-seg-pill{top:3px;height:calc(100% - 6px)}
  .aic-modelbtn{min-height:40px}
  .aic-send{width:44px;height:44px;min-width:44px;min-height:44px}
  .aic-composer{padding-left:max(0px,env(safe-area-inset-left,0px));
    padding-right:max(0px,env(safe-area-inset-right,0px))}

  /* ai-focus：固定视口 + 键盘顶起（--vv-* / --kb-inset 由 compat.js 写入） */
  body.ai-focus .aic{
    position:fixed;left:0;right:0;top:0;bottom:auto;
    width:100%;height:calc(var(--app-vh) * 100);max-height:100dvh;
    padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);
    box-sizing:border-box}
  body.ai-focus.kb-open .aic{
    top:var(--vv-offset,0px);height:var(--vv-height,100%);max-height:var(--vv-height,100%);
    /* 键盘打开时不再叠 home 指示条留白，避免底栏悬空 */
  }
  body.ai-focus .aic-home{width:44px;height:44px;min-width:44px;min-height:44px}
  body.ai-focus .aic-composer{
    padding:8px 12px calc(10px + env(safe-area-inset-bottom,0px))}
  body.ai-focus.kb-open .aic-composer{padding-bottom:10px}
  body.ai-focus .aic-msgs{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
    overscroll-behavior:contain}
  body.ai-focus .aic-inputbar textarea.input{font-size:16px;min-height:44px}

  /* 弹层/抽屉避让横屏左右安全区 */
  .sheet{padding-left:max(18px,env(safe-area-inset-left,0px));
    padding-right:max(18px,env(safe-area-inset-right,0px))}
  .modal-layer{padding-left:max(12px,env(safe-area-inset-left,0px));
    padding-right:max(12px,env(safe-area-inset-right,0px))}
}

/* 375 及以下：通道文案与顶栏再收一档，防横向溢出 */
@media (max-width:380px){
  .aic-ch{padding:0 4px;font-size:11px;letter-spacing:0;height:34px;min-height:34px;max-height:34px;line-height:34px}
  body.ai-focus .aic-brand .t{font-size:15px}
  body.ai-focus .aic-modelname{max-width:68px}
  .titem .tlabel{font-size:9.5px}
  .gate-card{padding:24px 16px 20px}
  .gate h1{font-size:21px}
}

/* 414 宽：略放大 Tab 点击区，仍守 44px 底线 */
@media (min-width:400px) and (max-width:760px){
  .titem{min-height:48px}
  .aic-ch{padding:0 12px;font-size:12.5px;height:34px;min-height:34px;max-height:34px;line-height:34px}
}

/* 横屏手机：压缩 chrome，保留安全区与可点区域 */
@media (max-width:900px) and (orientation:landscape){
  .topbar{height:calc(48px + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px)}
  .tabbar{min-height:calc(46px + env(safe-area-inset-bottom,0px));
    padding-top:4px;padding-bottom:calc(4px + env(safe-area-inset-bottom,0px))}
  .titem{min-height:44px;gap:1px}
  .titem .tile-icon{height:24px}
  .page-scroll{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
  body.ai-focus .aic-top{padding:calc(6px + env(safe-area-inset-top,0px)) 10px 6px}
  body.ai-focus .aic-composer{padding:6px 10px calc(8px + env(safe-area-inset-bottom,0px))}
  body.ai-focus.kb-open .aic-composer{padding-bottom:6px}
  .gate{align-items:flex-start;padding-top:max(12px,env(safe-area-inset-top,0px))}
  .gate-card{margin:8px 0;padding:18px 18px 16px}
  .gate-logo{width:48px;height:48px;margin-bottom:8px}
}

/* 系统字体放大（无障碍）：关键壳防止撑破；长词断行 */
@media (max-width:760px){
  .tlabel,.aic-brand .t,.aic-modelname,.aic-live-t{overflow-wrap:anywhere}
  .stat .s-value,.s-hero .big{overflow-wrap:anywhere;word-break:break-word}
}

/* WebView / 安卓壳：状态栏沉浸时与安全区一致 */
html.ua-webview body,html.ua-android body{
  /* 变量已由系统 inset 提供；此处仅保证背景铺满刘海区 */
}
html.ua-webview .app,html.ua-android .app{min-height:100%;min-height:calc(var(--app-vh) * 100)}

/* ============================================================
   商业级手机验收加固（v1.80.29）
   触控≥44 / 减拥挤与叠框 / 顶栏分段可滑 / AI 状态不挡消息 /
   首页·待办·设置·笔记·画板·天气 窄屏可读
   ============================================================ */
@media (max-width:760px){
  /* —— 通用触控热区 —— */
  .hdr-weather{box-sizing:border-box}
  .fchip{min-height:44px;padding:10px 14px;box-sizing:border-box}
  .mail-filter .fchip,.mail-filter .fav-chip{
    height:36px;min-height:36px;max-height:36px;padding:0 14px;font-size:13px;line-height:1;
  }
  .mail-tools{padding:0 14px 10px}
  .mail-tools .mtool{height:36px;min-height:36px;max-height:36px;padding:0 6px;font-size:13px}
  .set-tab{min-height:44px;padding:10px 16px;box-sizing:border-box}
  .set-tabs{gap:4px;padding:4px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .seg{min-height:44px;align-items:stretch}
  .seg button{min-height:44px;padding:8px 14px;box-sizing:border-box}
  .rp-monthbar{display:grid;grid-template-columns:32px minmax(0,1fr) 32px auto;align-items:center;gap:6px;margin-bottom:12px}
  .rp-monthbar b{min-width:0;font-size:15px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .rp-monthbar .icon-btn{width:32px;height:32px;min-width:32px;min-height:32px}
  .rp-monthbar .rp-mode{margin-left:0;height:32px;min-height:32px;max-height:32px;padding:3px;overflow:hidden;align-items:center;border-radius:10px}
  .rp-monthbar .rp-mode button{height:26px;min-height:26px;max-height:26px;padding:0 10px;font-size:12px;line-height:1;border-radius:8px}
  .btn.sm{min-height:44px;padding:10px 14px;box-sizing:border-box}
  .p-toolbar .btn.sm{min-height:32px;height:32px;padding:0 11px}
  .act .icon-btn,.sc-kv .icon-btn,.sr-cred .icon-btn,
  .field-copy,.tc-del,.sheet-close{min-width:44px;min-height:44px;width:44px;height:44px}
  .more-item{padding:10px 4px;min-height:72px;gap:8px}
  .dock-btn{width:44px;height:44px;min-width:44px;min-height:44px}
  .note-editor .ne-bar .icon-btn{width:44px;height:44px}
  .aic-act{width:44px;height:44px;min-width:44px;min-height:44px}
  .aic-ch{min-height:34px;height:34px;max-height:34px;padding:0 10px;font-size:13px;line-height:34px;box-sizing:border-box}
  .aic-chips .tag{min-height:36px;padding:8px 12px;display:inline-flex;align-items:center}
  .p-chip{min-height:44px;height:auto;padding:10px 8px;box-sizing:border-box}
  .wx-opt{min-height:44px;box-sizing:border-box}
  .sch-ops button{width:44px;height:44px;min-width:44px;min-height:44px}
  .ib-btn,.ib-tool{min-height:44px;padding:10px 12px;box-sizing:border-box}
  .ib-tools{gap:8px;padding:10px;bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  .ib-top{top:max(8px,env(safe-area-inset-top,0px));left:max(8px,env(safe-area-inset-left,0px));
    right:max(8px,env(safe-area-inset-right,0px));gap:6px}

  /* —— 待办顶栏：固定高度，选中块不再顶出底托 —— */
  .todo-bar{flex-direction:column;flex-wrap:nowrap;overflow:visible;gap:8px;padding-bottom:0}
  .todo-bar .tbar-row{align-items:center;gap:8px;min-height:0}
  .todo-bar .seg,.todo-bar .seg.mini{
    display:flex;align-items:center;height:34px;min-height:34px;max-height:34px;
    padding:3px;box-sizing:border-box;overflow:hidden;border-radius:12px;
  }
  .todo-bar .seg button,
  .todo-bar #tSeg button,
  .todo-bar #tViewSeg button{
    flex:1 1 0;align-self:center;height:28px;min-height:28px;max-height:28px;
    margin:0;padding:0 8px;line-height:1;border-radius:9px;box-sizing:border-box;
  }
  .todo-bar #tViewSeg button{flex:0 0 30px;width:30px;min-width:30px;padding:0}
  .todo-bar #tViewSeg button svg{width:16px;height:16px}
  .todo-bar #tSeg .seg-c{min-width:16px;height:16px;margin-left:4px;font-size:10px}
  .todo-bar #tSeg button.on .seg-c{background:rgba(255,255,255,.24);color:#fff}
  .todo-bar #tTagFilter,
  .todo-bar .tbar-mid #tTagFilter{
    height:34px;min-height:34px;max-height:34px;flex:1 1 auto;width:auto;min-width:0;max-width:none;
    border-radius:12px;padding-top:0;padding-bottom:0;
  }
  .todo-bar .tbar-icons{
    gap:4px;padding:3px;border-radius:12px;background:var(--field);border:1px solid var(--line);
  }
  .todo-bar .tbar-icons .icon-btn{
    flex:1 1 0;width:auto;min-width:0;height:30px;min-height:30px;max-height:30px;border-radius:9px;
  }
  .todo-bar .tbar-icons .icon-btn svg{width:17px;height:17px}

  /* —— 首页：减叠框、加间距、窄屏模块单列 —— */
  .hub{gap:18px}
  .hub-hello{border:0;box-shadow:none;background:linear-gradient(135deg,rgba(100,210,255,.08),rgba(94,92,230,.08)),var(--panel)}
  .hub-card{padding:14px;gap:8px}
  .hub-card .hc-todo{padding:9px 0}
  .hc-check{width:24px;height:24px;min-width:24px}
  .quick-grid{gap:12px}
  .q-item{padding:14px 4px 12px;min-height:88px}
  .tools-grid{grid-template-columns:repeat(4,1fr);gap:10px}
  .tool-tile{padding:14px 6px;gap:10px;border-color:transparent;background:var(--panel-2)}
  .tool-tile:active{background:var(--field)}
  .sch-entry{padding:14px;gap:12px}
  .sch-entry .muted{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

  /* —— AI：状态条占位不挡消息；顶栏通道可读 —— */
  .aic-top{gap:10px}
  .aic-seg{width:100%;max-width:none;margin:0;order:3}
  .aic-live{flex:0 0 auto;position:relative;z-index:2;margin:0 0 4px;width:100%;max-width:none;
    border-radius:10px;padding:8px 12px}
  .aic-msgs{padding-top:4px}
  body.ai-focus .aic-live{margin:0 12px 6px;flex:0 0 auto;position:relative;z-index:3}
  body.ai-focus .aic-msgs{padding-top:8px}
  body.ai-focus .aic-top{flex-wrap:wrap}
  body.ai-focus .aic-seg{order:3;width:100%;margin-top:4px}
  body.ai-focus .aic-ch{min-height:34px;height:34px;max-height:34px;flex:1 1 0;min-width:0}

  /* —— 卡片去多层边框：弹层/列表行保持单线 —— */
  .card .card,.hub-card .stat,.mail-head{box-shadow:none}
  .row-item,.todo-item,.todo-card,.note-card,.note-tile{padding:14px}
  .list{gap:10px}

  /* —— 设置 / 天气 / 网盘壳间距 —— */
  .set-pane{gap:16px}
  .set-nav-row{min-height:56px;padding:14px}
  .rag-btns .btn,.rag-btns .btn.sm{min-height:44px}
  .wx-seg{gap:10px}
}

/* 390 及更窄：首页模块卡改单列，避免两列挤成乱码块 */
@media (max-width:400px){
  .hub-grid{grid-template-columns:1fr;gap:12px}
  .quick-grid{grid-template-columns:repeat(3,1fr);gap:8px}
  .tools-grid{grid-template-columns:repeat(4,1fr);gap:8px}
  .hh-greet{font-size:18px}
  .aic-ch{font-size:12px;padding:0 6px;letter-spacing:0;height:34px;min-height:34px;max-height:34px;line-height:34px}
  .titem .tlabel{font-size:10px}
  .debt-hero{grid-template-columns:1fr;gap:10px}
  .dh-amount{font-size:26px}
}

/* 414 宽：略舒展，仍守触控底线 */
@media (min-width:401px) and (max-width:760px){
  .hub-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .fchip{padding:10px 16px}
  .aic-ch{font-size:13px;padding:0 14px;height:34px;min-height:34px;max-height:34px;line-height:34px}
}

/* App 底栏：视口变宽（横屏 / WebView 布局宽度漂移）时不再被 display:none 收掉。
   安卓 WebView 上 backdrop-filter 合成层用一会儿会整层不绘制，底栏改实色。
   bottom 跟 --kb-inset，键盘把可视区顶起后仍贴在屏幕底。AI / 笔记全屏仍由各自规则隐藏。 */
@media (max-width:960px) and (orientation:landscape) and (pointer:coarse){
  .sidebar,#sbRail,#topNav{display:none !important}
  #tabbar{display:flex;position:fixed;left:0;right:0;bottom:var(--kb-inset,0px);z-index:45}
}
html.ua-webview .sidebar,
html.ua-webview #sbRail,
html.ua-webview #topNav{display:none !important}
html.ua-webview #tabbar,
html.ua-mobile #tabbar,
html.form-narrow #tabbar{
  display:flex !important;position:fixed;left:0;right:0;bottom:var(--kb-inset,0px);z-index:80;gap:2px;
  min-height:calc(52px + var(--safe-bottom));
  padding:6px max(6px,var(--safe-right)) calc(6px + var(--safe-bottom)) max(6px,var(--safe-left));
  background:var(--elev-solid);border-top:1px solid var(--line);
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important;
  visibility:visible !important;opacity:1 !important;pointer-events:auto !important}
html.ua-webview body.ai-focus #tabbar,
html.ua-webview body.note-editing #tabbar,
html.ua-mobile body.ai-focus #tabbar,
html.ua-mobile body.note-editing #tabbar,
html.form-narrow body.ai-focus #tabbar,
html.form-narrow body.note-editing #tabbar{display:none !important}
html.ua-webview #tabbar .titem.as-add .tlabel{color:#fb923c}
html.ua-webview .page-scroll{padding-bottom:calc(92px + var(--safe-bottom))}

/* PC：三通道始终占中间一列，不随模型名/副标题变长被挤出或盖住 */
@media (min-width:761px){
  .aic-top{
    display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
    align-items:center;gap:12px;
  }
  .aic-brand{display:none}
  .aic-seg{
    grid-column:2;justify-self:center;margin:0;flex:none;
    width:auto;max-width:none;min-width:max-content;z-index:4;
  }
  .aic-ch{flex:none}
  .aic-modelwrap{grid-column:3;justify-self:end;min-width:0;max-width:100%}
  .aic-modelbtn{max-width:min(240px,100%)}
  .aic-modelname{max-width:150px}
}

/* PC：AI 铺满内容区，不再「页面框里再套一张圆角卡片」 */
@media (min-width:761px){
  .page-scroll:has(.aic){padding:0;overflow:hidden}
  .aic,
  :root[data-theme="light"] .aic{
    inset:0;gap:0;padding:0;border:none;border-radius:0;
    animation:none;box-shadow:none;background:var(--bg0);
    -webkit-backdrop-filter:none;backdrop-filter:none;
  }
  :root[data-theme="light"] .aic{background:#f6f8fb}
  .aic-ambient{display:none}
  .aic-top,
  :root[data-theme="light"] .aic-top{
    border:none;border-radius:0;border-bottom:1px solid var(--line);
    background:transparent;box-shadow:none;padding:12px 22px;
  }
  .aic-msgs{
    width:min(860px,calc(100% - 48px));max-width:860px;
    margin-left:auto;margin-right:auto;align-self:center;
    padding:18px 0 8px;
  }
  .aic-msg,.aic-empty{max-width:none;width:100%;margin-left:0;margin-right:0}
  .aic-live,.aic-suggest,.aic-composer{
    width:min(860px,calc(100% - 48px));max-width:860px;
    margin-left:auto;margin-right:auto;align-self:center;
  }
  .aic .bubble.me{max-width:min(78%,640px)}
  .aic-msg.ai .bubble,
  :root[data-theme="light"] .aic-msg.ai .bubble{
    flex:1 1 auto;min-width:0;max-width:none;width:auto;
    background:transparent;border:none;box-shadow:none;padding:2px 0 8px;
  }
  .aic .md pre,
  :root[data-theme="light"] .aic .md pre{
    display:block;width:100%;max-width:100%;box-sizing:border-box;
    background:rgba(15,40,80,.045);border:1px solid var(--line);color:var(--tx);
  }
  .aic .md pre code,
  :root[data-theme="light"] .aic .md pre code{color:var(--tx);background:none}
  .aic-composer{padding:8px 0 16px}
}

/* 手机 / App：登录铺满屏幕，不再在四周留一圈卡片空白 */
@media (max-width:760px), (max-width:960px) and (orientation:landscape) and (pointer:coarse){
  .gate{
    height:100%;min-height:100%;padding:0;margin:0;
    align-items:stretch;justify-content:stretch;
    background:var(--bg0);
  }
  .gate-card,
  :root[data-theme="light"] .gate-card{
    width:100%;max-width:none;min-height:100%;margin:0;
    border:0;border-radius:0;box-shadow:none;
    display:flex;flex-direction:column;justify-content:center;
    background:
      radial-gradient(88% 36% at 50% -8%, rgba(var(--blue-rgb),.22), transparent 68%),
      var(--bg0);
    padding:
      max(56px, calc(env(safe-area-inset-top, 0px) + 28px))
      max(28px, calc(env(safe-area-inset-right, 0px) + 10px))
      max(32px, calc(env(safe-area-inset-bottom, 0px) + 16px))
      max(28px, calc(env(safe-area-inset-left, 0px) + 10px));
  }
  :root[data-theme="light"] .gate,
  :root[data-theme="light"] .gate-card{
    background:
      radial-gradient(92% 38% at 50% -6%, rgba(0,122,255,.20), transparent 70%),
      linear-gradient(180deg, #f3f7ff 0%, #ffffff 46%);
  }
  .gate-card::before{display:none}
  .gate-logo{width:96px;height:96px;margin:0 auto 18px}
  .gate h1{font-size:30px;letter-spacing:1px}
  .gate .sub{margin:8px 0 34px;letter-spacing:4px;font-size:12px}
  .gate .lbl{font-size:13px;margin-bottom:8px}
  .gate .field{margin-bottom:16px}
  .gate .input{min-height:54px;border-radius:16px;padding:14px 16px}
  .gate .btn.block{min-height:54px;border-radius:16px;font-size:16px;letter-spacing:1px;margin-top:8px;
    box-shadow:0 14px 28px -14px rgba(var(--blue-rgb),.8)}
  .gate-link{margin-top:8px;font-size:14px}
  .gate-safe{margin-top:28px;background:transparent;border-color:transparent}
}
@media (max-width:960px) and (orientation:landscape) and (pointer:coarse){
  .gate-card,
  :root[data-theme="light"] .gate-card{
    justify-content:center;
    padding:
      max(12px, env(safe-area-inset-top, 0px))
      max(28px, env(safe-area-inset-right, 0px))
      max(12px, env(safe-area-inset-bottom, 0px))
      max(28px, env(safe-area-inset-left, 0px));
  }
  .gate-logo{width:52px;height:52px;margin-bottom:6px}
  .gate h1{font-size:22px}
  .gate .sub{margin:2px 0 12px}
  .gate-safe{margin-top:10px}
}

/* 手机顶栏：标题保持一行，不再被右侧图标挤成竖排拆字 */
@media (max-width:760px){
  .topbar{
    height:calc(56px + var(--safe-top));
    min-height:calc(56px + var(--safe-top));
    align-items:center;gap:6px;overflow:hidden;
    padding-top:var(--safe-top);
    padding-left:max(10px,var(--safe-left));
    padding-right:max(10px,var(--safe-right));
  }
  .page-title{flex:1 1 auto;min-width:96px;overflow:hidden}
  .page-title h1,.page-sub{
    display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    overflow-wrap:normal;word-break:keep-all;line-height:1.25;
  }
  .page-title h1{font-size:17px}
  .page-sub{margin-top:1px}
  .top-right{flex:none;margin-left:auto;align-items:center;gap:1px;
    padding:3px;border-radius:16px;
    background:var(--field);border:1px solid var(--line)}
  .top-right .clock{border:0;padding:0;margin:0}
  .topbar .sub-back{width:40px;min-width:40px;height:40px;min-height:40px}
  .topbar .top-right .icon-btn{
    width:36px;min-width:36px;height:36px;min-height:36px;border-radius:12px;
  }
  .top-right #logoutBtn{border-radius:12px;background:rgba(255,59,48,.1)}
  .hdr-weather{flex:none;min-width:0;max-width:none}
  .mm-app,.mm-libscreen{min-width:0;max-width:100%;overflow-x:hidden}
  .mm-lib-head{
    display:grid;grid-template-columns:minmax(0,1fr) auto;
    align-items:center;column-gap:10px;row-gap:10px;
    margin:8px 14px 10px;padding:0;min-width:0;
  }
  .mm-lib-count{grid-column:1;grid-row:1;min-width:0}
  .mm-lib-head .lib-view{grid-column:2;grid-row:1;height:36px;align-items:center;padding:3px}
  .mm-lib-head .sv-btn{width:34px;height:30px}
  .mm-lib-actions{
    grid-column:1 / -1;grid-row:2;
    display:grid;grid-template-columns:1fr 1fr;gap:10px;
    margin:0;width:100%;min-width:0;
  }
  .mm-lib-actions .mm-btn{
    width:100%;height:40px;min-height:40px;max-height:40px;
    padding:0 8px;border-radius:12px;font-size:14px;line-height:1;
    justify-content:center;box-shadow:none;flex:none;
  }
  .mm-lib-grid{width:100%;min-width:0;max-width:100%;padding-left:14px;padding-right:14px}
}

/* 画板标尺寸：小弹窗，压过全局按钮/分段的 40px 最小高度 */
.modal.modal-dim{width:min(248px,calc(100vw - 64px))!important;border-radius:16px}
.modal.modal-dim .modal-head{padding:12px 14px 2px}
.modal.modal-dim .modal-head h3{font-size:15px}
.modal.modal-dim .modal-head .icon-btn{width:30px;height:30px;min-width:30px;min-height:30px}
.modal.modal-dim .modal-body{padding:8px 14px 12px}
.modal.modal-dim .modal-body .input{font-size:18px;padding:8px 10px;min-height:38px;height:38px;text-align:center}
.modal.modal-dim .ms-unit-sm{margin-top:8px;padding:2px;border-radius:10px}
.modal.modal-dim .ms-unit-sm button{min-height:30px;height:30px;max-height:30px;padding:0 8px;font-size:13px;border-radius:8px}
.modal.modal-dim .modal-foot{padding:8px 12px 12px;gap:8px}
.modal.modal-dim .modal-foot .btn{min-height:32px;height:32px;padding:0 14px;font-size:13px}

/* ===== 记事本列表统一收口：卡片 / 紧凑共用同一套视觉规范 ===== */
.note-list.note-cards{gap:12px}
.note-list.note-rows{gap:8px}
.note-tile,.note-row{
  border:1px solid var(--line);border-radius:14px;background:var(--panel);
  transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;
}
.note-tile{padding:13px 13px 11px 16px}
.note-row{padding:11px 13px}
.note-tile.on,.note-row.on{border-color:rgba(var(--blue-rgb),.55);box-shadow:0 0 0 1px rgba(var(--blue-rgb),.28)}

/* 卡片：标题一行、摘要最多三行、缩略图统一比例 */
.note-tile .nt-title{font-size:14px;line-height:1.35}
.note-tile .nt-sum{
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;
  overflow:hidden;white-space:normal;overflow-wrap:anywhere;
}
.note-tile .nt-thumb{margin-top:10px}
.note-tile .nt-foot{margin-top:10px}

/* 紧凑行：左侧色点 + 纵向主信息(标题/摘要/时间) + 右侧缩略图 */
.note-row{align-items:center;gap:11px}
.note-row .nr-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.note-row .nr-main{
  flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:left;
}
.note-row .nr-title{
  max-width:none;flex:none;width:100%;font-size:13.5px;line-height:1.35;
  display:flex;align-items:center;gap:4px;
}
.note-row .nr-title svg{width:12px;height:12px;color:var(--warn);flex:none}
.note-row .nr-sum{
  flex:none;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.note-row .nr-time{flex:none;font-size:11px}
.note-row .nr-thumb{flex:0 0 auto;width:52px;height:52px;border-radius:10px}

@media(max-width:760px){
  .note-list.note-cards{grid-template-columns:minmax(0,1fr);gap:10px}
  .note-tile{padding:13px 13px 11px 16px}
  .note-row{padding:12px 13px}
}

/* ===== 设置页 AI 大卡片整卡折叠 ===== */
.ai-card-toggle{cursor:pointer;user-select:none}
.ai-card-toggle .ai-tt-l{display:flex;align-items:center;gap:7px;min-width:0}
.ai-card-toggle .ai-caret{display:inline-flex;color:var(--tx2);transition:transform .15s ease}
.ai-card-toggle .ai-caret svg{width:16px;height:16px}
.ai-card-body{padding-top:2px}

/* ===== WireGuard 安全通道（v3 仪表盘：卡片 + 曲线 + 数据格） ===== */
.wg-dash{padding:14px;display:flex;flex-direction:column;gap:12px;background:transparent;border:none}
.wg-top{display:grid;grid-template-columns:1fr 1fr;gap:12px}

.wg-card{background:var(--card, var(--field));border:1px solid var(--line);border-radius:16px;
  padding:14px 15px 15px;display:flex;flex-direction:column;gap:11px;min-width:0}
.wg-ch{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:800;color:var(--tx)}
.wg-ch svg{width:100%;height:100%}
.wg-ic{width:34px;height:34px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;padding:8px}
.wg-ic.ic-blue{background:rgba(var(--blue-rgb),.14);color:var(--blue)}
.wg-ic.ic-violet{background:rgba(124,102,255,.15);color:#6f5cff}
.wg-ic.ic-teal{background:rgba(22,170,140,.15);color:#12a58a}

/* 连接行 */
.wg-connrow{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:13px;
  background:var(--field);border:1px solid var(--line);transition:border-color .25s,background .25s}
.wg-connrow.on{border-color:rgba(var(--blue-rgb),.4);background:rgba(var(--blue-rgb),.07)}
.wg-connico{width:28px;height:28px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  padding:6px;background:var(--field);color:var(--tx2)}
.wg-connrow.on .wg-connico{background:var(--blue);color:#fff}
.wg-connico svg{width:100%;height:100%}
.wg-connrow.busy .wg-connico{animation:wgPulse 1.1s ease-in-out infinite}
@keyframes wgPulse{0%,100%{opacity:1}50%{opacity:.4}}
.wg-connTxt{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.wg-connTxt b{font-size:14.5px;font-weight:800;color:var(--tx);line-height:1.2}
.wg-connTxt span{font-size:11.5px;color:var(--tx2);line-height:1.3}

.wg-switch{position:relative;flex:none;width:54px;height:31px;border-radius:999px;border:none;cursor:pointer;
  background:var(--line-2, var(--line));transition:background .22s ease}
.wg-switch i{position:absolute;top:3px;left:3px;width:25px;height:25px;border-radius:50%;background:#fff;
  box-shadow:0 2px 6px rgba(0,0,0,.22);transition:transform .22s cubic-bezier(.4,.9,.3,1.2)}
.wg-switch.on{background:var(--blue)}
.wg-switch.on i{transform:translateX(23px)}
.wg-switch.busy{opacity:.6}

.wg-hint{font-size:12px;line-height:1.6;color:var(--tx2);background:rgba(var(--blue-rgb),.06);
  border:1px solid rgba(var(--blue-rgb),.16);border-radius:11px;padding:9px 11px}

/* 公网/内网两行共用网格，IP 右端严格对齐 */
.wg-netrow{display:grid;grid-template-columns:82px minmax(0,1fr) 22px;align-items:center;
  column-gap:6px;font-size:12.5px;color:var(--tx2);padding:7px 2px;border-top:1px dashed var(--line)}
.wg-netrow>span{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap}
.wg-netrow svg{width:14px;height:14px;flex:none}
.wg-netrow b{font-family:var(--mono);font-size:12.5px;font-weight:700;color:var(--tx);
  text-align:left;word-break:break-all;justify-self:start}
.wg-refr{width:22px;height:22px;flex:none;justify-self:end}
.wg-switch:disabled{opacity:.45;cursor:not-allowed}
.wg-guide{margin-top:11px}
.wg-refr svg{width:12px;height:12px}

/* 出站模式分段 */
.wg-tabs{display:flex;gap:8px}
.wg-tabs button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  border:1px solid var(--line);background:transparent;border-radius:12px;padding:11px 4px;cursor:pointer;
  font-size:12.5px;font-weight:700;color:var(--tx2);font-family:inherit;transition:all .16s ease}
.wg-tabs button svg{width:17px;height:17px}
.wg-tabs button.on{background:var(--blue);border-color:var(--blue);color:#fff;
  box-shadow:0 6px 14px -6px rgba(var(--blue-rgb),.6)}

/* 流量统计 */
.wg-traffic{gap:12px}
.wg-legend{margin-left:auto;display:flex;gap:12px;font-size:12px;color:var(--tx2)}
.wg-legend span{display:flex;align-items:center;gap:5px}
.wg-legend span::before{content:"";width:9px;height:9px;border-radius:50%}
.wg-legend [data-k=down]::before{background:var(--blue)}
.wg-legend [data-k=up]::before{background:#f0913a}

.wg-chart-wrap{position:relative;padding-left:34px}
.wg-chart{width:100%;height:132px;display:block;overflow:visible}
.wg-chart .wg-grid line{stroke:var(--line);stroke-width:1;stroke-dasharray:3 5;vector-effect:non-scaling-stroke}
.wg-chart .wg-line{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.wg-chart .wg-line.down{stroke:var(--blue)}
.wg-chart .wg-line.up{stroke:#f0913a}
.wg-chart-y{position:absolute;left:0;top:0;height:132px;width:30px;display:flex;flex-direction:column;
  justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--tx2);opacity:.8;
  align-items:flex-end;padding:2px 0}
.wg-chart-x{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;
  color:var(--tx2);opacity:.7;margin-top:4px}
.wg-chart-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--tx2);opacity:.8}
.wg-chip2{margin-left:auto;font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;
  background:var(--field);color:var(--tx2);border:1px solid var(--line)}

.wg-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.wg-mc{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:13px;
  padding:11px 12px;background:transparent;min-width:0}
.wg-mc>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.wg-mc>div>span{font-size:11.5px;color:var(--tx2);line-height:1.2}
.wg-mc b{font-size:16px;font-weight:800;line-height:1.15;color:var(--tx);
  font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wg-mi{width:34px;height:34px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;padding:8px}
.wg-mi svg{width:100%;height:100%}
.mi-orange{background:rgba(240,145,58,.15);color:#e5842f}
.mi-blue{background:rgba(var(--blue-rgb),.13);color:var(--blue)}
.mi-green{background:rgba(22,170,140,.14);color:#12a58a}
.mi-red{background:rgba(255,77,79,.13);color:#f5544f}

/* 页头 / 网页端引导 */
.wg-headacts{display:flex;align-items:center;gap:8px}
.wg-chip.off{background:var(--field);color:var(--tx2)}
.wg-guide{display:flex;flex-direction:column;gap:11px}
.wg-guide-t{font-size:12.5px;line-height:1.7;color:var(--tx2);margin:0}
.wg-guide-row{display:flex;align-items:center;gap:8px;font-size:12.5px;line-height:1.5;
  border:1px solid var(--line);border-radius:11px;padding:10px 12px;color:var(--tx2);background:var(--field)}
.wg-guide-row svg{width:15px;height:15px;flex:none}
.wg-guide-row.ok{color:#2ea043;border-color:rgba(46,160,67,.3);background:rgba(46,160,67,.08)}
.wg-guide-row.warn{color:#c08a1e;border-color:rgba(210,153,34,.3);background:rgba(210,153,34,.08)}

/* 隧道配置 */
.wg-cfg{border:1px solid var(--line);border-radius:16px;background:var(--card, var(--field));overflow:hidden}
.wg-cfg-head{display:flex;align-items:center;gap:8px;padding:13px 15px;flex-wrap:wrap}
.wg-cfg-l{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:800;color:var(--tx);min-width:0}
.wg-cfg-l svg{width:15px;height:15px;color:var(--tx2)}
.wg-cfg-r{margin-left:auto;display:flex;gap:7px}
.wg-chip{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;
  background:rgba(0,0,0,.06);color:var(--tx2);white-space:nowrap}
.wg-chip.on{background:rgba(var(--blue-rgb),.14);color:var(--blue)}
.wg-chip.ok{background:rgba(46,160,67,.16);color:#2ea043}
.wg-chip.warn{background:rgba(210,153,34,.18);color:#c08a1e}
.wg-cfg-pane{padding:12px 15px 13px;display:flex;flex-direction:column;gap:9px;border-top:1px solid var(--line)}
.wg-cfg-pane textarea{font-family:var(--mono);font-size:11.5px;line-height:1.5}
.wg-chk{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--tx2);cursor:pointer}
.wg-chk input{position:absolute;opacity:0;pointer-events:none}
.wg-chk i{width:17px;height:17px;border-radius:5px;border:2px solid var(--line-2);flex:none;position:relative}
.wg-chk input:checked+i{border-color:var(--blue);background:var(--blue)}
.wg-chk input:checked+i::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.wg-cfg-btns{display:flex;gap:7px;flex-wrap:wrap}
.wg-msg{font-size:12px;min-height:15px;padding:0 15px 12px;color:var(--tx2);line-height:1.45}

@media(max-width:760px){
  .wg-top{grid-template-columns:1fr;gap:10px}
  .wg-dash{padding:12px}
  .wg-card{padding:12px 13px 13px;border-radius:14px}
  .wg-cards{grid-template-columns:1fr 1fr;gap:9px}
  .wg-mc b{font-size:15px}
  .wg-chart{height:118px}
  .wg-chart-y{height:118px}
  .wg-tabs button{padding:9px 2px;font-size:12px}
}

/* ===== 网页版极简浏览器起始页（Via 风格） ===== */
.wbw-page{display:flex;justify-content:center;padding-top:5vh;min-height:100%}
.wbw-wrap{width:100%;max-width:720px;display:flex;flex-direction:column;align-items:center;padding:0 22px}
.wbw-brand{margin-bottom:clamp(20px,3.2vh,40px);display:flex;justify-content:center}
.wbw-logo-img{width:clamp(180px,24vw,300px);max-width:60%;height:auto;display:block;margin:0 auto}
.wbw-search{width:100%;max-width:680px;margin:0 auto;display:flex;gap:8px;background:var(--field,#f3f4f6);border:1px solid var(--line,#e5e7eb);
  border-radius:28px;padding:6px 6px 6px 20px;align-items:center}
.wbw-search input{flex:1;min-width:0;border:0;background:transparent;outline:0;font-size:16px;color:var(--tx,#111827);height:42px}
.wbw-search button{flex:none;border:0;border-radius:22px;height:42px;padding:0 22px;font-size:15px;font-weight:600;
  color:#fff;background:linear-gradient(140deg,#64d2ff,#0a84ff);cursor:pointer}
.wbw-favs{width:100%;margin-top:40px;display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:20px 10px}
.wbw-fav{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;padding:4px}
.wbw-fav-ic{width:52px;height:52px;border-radius:15px;color:#fff;font-size:20px;font-weight:700;
  display:flex;align-items:center;justify-content:center;box-shadow:0 8px 16px -8px rgba(0,0,0,.4)}
.wbw-fav-nm{font-size:12px;color:var(--tx2,#4b5563);max-width:84px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbw-loading,.wbw-empty{grid-column:1/-1;text-align:center;color:var(--tx3,#9ca3af);font-size:13px;padding:20px}
@media(max-width:760px){.wbw-page{padding-top:4vh}.wbw-favs{gap:18px 8px;margin-top:32px}}

/* ===== PC 浏览器门户（Via 风格增强） ===== */
.wbw-inner{width:100%;max-width:860px;display:flex;flex-direction:column;align-items:center;padding:0 22px 40px}
.wbw-tools{width:100%;display:flex;align-items:center;justify-content:space-between;margin-bottom:3.4vh;gap:10px;flex-wrap:wrap}
.wbw-engines{display:flex;gap:6px;background:#f1f3f6;border-radius:20px;padding:3px}
.wbw-engines button{border:0;background:transparent;padding:6px 16px;border-radius:18px;font-size:13px;color:#6b7280;cursor:pointer}
.wbw-engines button.on{background:#0a84ff;color:#fff;font-weight:600}
.wbw-toolbtns{display:flex;gap:8px}
.wbw-tbtn{border:1px solid #e5e7eb;background:#fff;color:#4b5563;font-size:13px;padding:7px 14px;border-radius:18px;cursor:pointer}
.wbw-tbtn.on{background:#1f2937;color:#fff;border-color:#1f2937}
.wbw-seg{display:flex;gap:8px;margin:clamp(24px,4vh,44px) 0 20px}
.wbw-seg button{border:1px solid #e5e7eb;background:#fff;color:#4b5563;font-size:13.5px;padding:8px 22px;border-radius:20px;cursor:pointer;transition:all .15s}
.wbw-seg button:hover{border-color:#0a84ff;color:#0a84ff}
.wbw-seg button.on{background:#0a84ff;color:#fff;border-color:#0a84ff;font-weight:600}
.wbw-grid{width:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:clamp(18px,3vh,34px) 14px}
.wbw-cell{position:relative;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:10px;cursor:pointer;padding:4px;border-radius:14px;transition:background .15s}
.wbw-cell:hover{background:rgba(10,132,255,.07)}
.wbw-cell-ic{width:clamp(52px,5vw,64px);height:clamp(52px,5vw,64px);border-radius:16px;color:#fff;font-size:21px;font-weight:700;display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 18px -10px rgba(0,0,0,.35)}
.wbw-cell-nm{font-size:13px;color:#374151;max-width:96px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbw-cell-del{position:absolute;top:-2px;right:8px;width:20px;height:20px;line-height:18px;border-radius:50%;
  background:#ff3b30;color:#fff;font-size:13px;text-align:center}
.wbw-addbm{width:100%;display:flex;gap:8px;margin-top:18px;flex-wrap:wrap}
.wbw-addbm input{flex:1;min-width:140px;border:1px solid #e5e7eb;border-radius:10px;height:42px;padding:0 14px;font-size:14px}
.wbw-addbm button{flex:none;border:0;border-radius:10px;height:42px;padding:0 22px;background:#0a84ff;color:#fff;font-weight:600;cursor:pointer}

/* 历史弹层 */
.wbw-sheet{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:200}
.wbw-sheet-card{width:min(560px,92vw);max-height:80vh;display:flex;flex-direction:column;background:#fff;border-radius:16px;overflow:hidden}
.wbw-sheet-h{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid #eee}
.wbw-sheet-h b{font-size:16px}
.wbw-sheet-h span{display:flex;gap:8px}
.wbw-sheet-h button{border:1px solid #e5e7eb;background:#fff;color:#4b5563;font-size:13px;padding:6px 12px;border-radius:14px;cursor:pointer}
.wbw-sheet-h #wbwHistClear{color:#ff3b30;border-color:#ffd7d4}
.wbw-sheet-list{overflow-y:auto;padding:10px 14px 16px}
.wbw-hrow{width:100%;text-align:left;border:0;background:#f7f7f8;border-radius:12px;padding:11px 14px;margin-bottom:8px;cursor:pointer;display:flex;flex-direction:column;gap:3px}
.wbw-hrow span{font-size:14px;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbw-hrow small{font-size:11.5px;color:#9ca3af;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 门户夜间模式 */
.wbw-night .wbw-inner,html:has(.wbw-night) .wbw-page{background:#121212}
.wbw-page.wbw-night{background:#121212}
.wbw-night .wbw-engines{background:#26262c}
.wbw-night .wbw-engines button{color:#9ca3af}
.wbw-night .wbw-engines button.on{background:#0a84ff;color:#fff}
.wbw-night .wbw-tbtn,.wbw-night .wbw-seg button,.wbw-night .wbw-addbm input{background:#1f1f24;border-color:#333;color:#d1d5db}
.wbw-night .wbw-tbtn.on{background:#0a84ff;border-color:#0a84ff;color:#fff}
.wbw-night .wbw-seg button.on{background:#0a84ff;border-color:#0a84ff;color:#fff}
.wbw-night .wbw-search{background:#1f1f24;border-color:#333}
.wbw-night .wbw-search input{color:#f3f4f6}
.wbw-night .wbw-cell-nm{color:#d1d5db}
.wbw-night .wbw-cell:hover{background:rgba(10,132,255,.18)}

/* ===== 大屏适配：1080P / 2K / 4K ===== */
/* 1080P（≥1600px 高）：略放大内容 */
@media (min-height:900px){
  .wbw-page{padding-top:7vh}
  .wbw-inner{max-width:960px}
}
/* 2K（2560 宽级）：等比放大、加宽容器 */
@media (min-width:2200px){
  .wbw-page{padding-top:9vh}
  .wbw-inner{max-width:1280px}
  .wbw-search{max-width:820px}
  .wbw-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:40px 20px}
  .wbw-cell-ic{width:76px;height:76px;font-size:26px;border-radius:20px}
  .wbw-cell-nm{font-size:15px;max-width:120px}
  .wbw-logo-img{width:400px;max-width:70%}
  .wbw-seg button{font-size:15px;padding:10px 28px}
  .wbw-tbtn{font-size:14px;padding:9px 18px}
  .wbw-engines button{font-size:14px;padding:8px 22px}
}
/* 4K（3840 宽级）：再次等比放大 */
@media (min-width:3400px){
  .wbw-page{padding-top:10vh}
  .wbw-inner{max-width:1900px}
  .wbw-search{max-width:1180px}
  .wbw-grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:56px 28px}
  .wbw-cell-ic{width:108px;height:108px;font-size:36px;border-radius:26px}
  .wbw-cell-nm{font-size:20px;max-width:168px}
  .wbw-logo-img{width:560px;max-width:72%}
  .wbw-search input{height:54px;font-size:22px}
  .wbw-search button{height:54px;font-size:21px;padding:0 40px;border-radius:30px}
  .wbw-seg{margin:72px 0 32px}
  .wbw-seg button{font-size:20px;padding:14px 40px;border-radius:28px}
  .wbw-tbtn{font-size:19px;padding:12px 26px;border-radius:26px}
  .wbw-engines button{font-size:19px;padding:12px 30px;border-radius:26px}
  .wbw-sheet-card{width:min(820px,92vw)}
  .wbw-hrow span{font-size:19px}.wbw-hrow small{font-size:16px}
}
/* 平板及小屏：收紧 */
/* 快捷访问 */
.wbw-quick{width:100%;margin-top:clamp(28px,5vh,56px)}
.wbw-quick-btn{width:100%;border:1px solid #e5e7eb;background:#fff;color:#0a84ff;font-size:15px;font-weight:600;
  padding:14px;border-radius:16px;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .15s}
.wbw-quick-btn:hover{border-color:#0a84ff;background:#f0f7ff}
.wbw-quick-btn #wbwQuickCaret{font-size:13px}
.wbw-quick-panel{margin-top:12px;display:flex;flex-wrap:wrap;gap:10px}
.wbw-qlink{flex:1 1 200px;border:1px solid #eef0f3;background:#fafbfc;border-radius:12px;padding:11px 14px;
  display:flex;align-items:center;gap:10px;font-size:14px;color:#1f2937;transition:all .15s;text-align:left}
.wbw-qlink:hover{border-color:#0a84ff;color:#0a84ff;background:#f5f9ff}
.wbw-qdot{flex:none;width:30px;height:30px;border-radius:9px;color:#fff;font-size:13px;font-weight:700;
  display:flex;align-items:center;justify-content:center}
.wbw-qlink span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbw-night .wbw-quick-btn{background:#1f1f24;border-color:#333;color:#5aa9ff}
.wbw-night .wbw-qlink{background:#1a1a1f;border-color:#2c2c32;color:#d1d5db}
.wbw-night .wbw-qlink:hover{border-color:#0a84ff;color:#5aa9ff;background:#20242c}

@media (max-width:760px){
  .wbw-page{padding-top:4vh}
  .wbw-grid{gap:20px 8px}
  .wbw-logo-img{width:clamp(92px,24vw,130px);max-width:60%}
  .wbw-tools{margin-bottom:3vh}
}

