/* ============================================================
 * 宝盘控制台 · 样式层（由 baopan-user-v2.html 原型移植）
 * 数据/视图/交互分离，样式层仅负责呈现。加载于 baopan-user.css 之后。
 * ============================================================ */

/* ============ 设计令牌（沿用 baopan3） ============ */
:root{
  --paper:#FAF7F2; --paper-2:#F3EDE4;
  --ink:#1B1712; --ink-2:#3A322A; --ink-soft:#6E6459; --ink-faint:#9A9086;
  --amber:#B8874C; --amber-2:#D8B27E; --amber-soft:#F0E2CE;
  --jade:#4E7A64; --jade-soft:#E4EDE7;
  --line:rgba(27,23,18,.10); --line-strong:rgba(27,23,18,.16);
  --r-lg:20px; --r-md:14px; --r-sm:10px;
  --shadow-sm:0 1px 2px rgba(27,23,18,.04), 0 4px 14px rgba(27,23,18,.04);
  --shadow-md:0 2px 6px rgba(27,23,18,.05), 0 18px 44px -12px rgba(27,23,18,.14);
  --surface:#fff;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  --serif:"Songti SC","STSong","Source Han Serif SC","Noto Serif SC",Georgia,serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --side-w:236px; --top-h:60px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{height:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;height:100%;overflow:hidden}
::selection{background:var(--amber-soft)}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
img{display:block}
svg.ic{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.ph{width:100%;height:100%;object-fit:cover;transform:scale(1.15);transform-origin:50% 0}

/* ============ 顶栏 ============ */
.top{position:fixed;top:0;left:0;right:0;height:var(--top-h);z-index:100;display:flex;align-items:center;gap:16px;padding:0 20px;background:rgba(250,247,242,.85);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;flex:none}
.brand .mark{width:30px;height:30px}
.brand b{font-size:15px}
.crumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-faint)}
.crumb b{color:var(--ink);font-weight:600}
.search{margin-left:auto;display:flex;align-items:center;gap:8px;width:300px;height:36px;padding:0 14px;border-radius:100px;background:var(--surface);border:1px solid var(--line);color:var(--ink-faint);font-size:13px;transition:.25s}
.search:focus-within{border-color:var(--amber);box-shadow:0 0 0 3px rgba(184,135,76,.12)}
.search svg{width:15px;height:15px}
.search input{border:0;outline:0;background:none;flex:1;font-size:13px;font-family:inherit;color:var(--ink)}
.search kbd{font-size:10.5px;color:var(--ink-faint);border:1px solid var(--line);border-radius:5px;padding:1px 5px;background:var(--paper)}
.top-acts{display:flex;align-items:center;gap:6px;flex:none}
.icon-btn{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--ink-soft);position:relative;transition:.25s}
.icon-btn:hover{background:rgba(27,23,18,.05)}
.icon-btn .badge{position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:var(--jade);box-shadow:0 0 0 2px var(--paper)}
.me{width:32px;height:32px;border-radius:50%;overflow:hidden;margin-left:6px;background:linear-gradient(140deg,#C89B62,#8E6237);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:600}

/* ============ 侧栏 ============ */
.side{position:fixed;top:var(--top-h);left:0;bottom:0;width:var(--side-w);border-right:1px solid var(--line);background:linear-gradient(180deg,#FBF8F3,#F7F2EA);display:flex;flex-direction:column;padding:18px 12px 14px;z-index:90;overflow-y:auto}
.side-group{font-size:10.5px;letter-spacing:.14em;color:var(--ink-faint);padding:14px 12px 8px;text-transform:uppercase}
.side-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--r-sm);font-size:13.5px;color:var(--ink-soft);transition:.22s;position:relative;width:100%;text-align:left}
.side-item:hover{background:rgba(27,23,18,.04);color:var(--ink)}
.side-item.active{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--shadow-sm)}
.side-item.active::before{content:"";position:absolute;left:-12px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--amber)}
.side-item svg{width:17px;height:17px}
.side-item .cnt{margin-left:auto;font-size:11px;color:var(--ink-faint);background:rgba(27,23,18,.05);border-radius:100px;padding:1px 7px}
.side-item .cnt.amber{background:var(--amber-soft);color:#8A5F2B;font-weight:600}
.side-item.danger{color:#8A5F2B}
.side-item.danger:hover{background:rgba(156,59,46,.07);color:var(--red)}
.side-item.danger.active{background:#FDF4F2;color:var(--red);box-shadow:var(--shadow-sm)}
.side-item.danger.active::before{background:var(--red)}
.side-foot{margin-top:auto;border-top:1px dashed var(--line);padding-top:14px}
.guard-mini{background:var(--jade-soft);border:1px solid rgba(78,122,100,.18);border-radius:var(--r-md);padding:12px 14px}
.guard-mini .row{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--jade);font-weight:600}
.guard-mini .row i{width:7px;height:7px;border-radius:50%;background:var(--jade);box-shadow:0 0 0 3px rgba(78,122,100,.18)}
.guard-mini .row span{margin-left:auto;font-weight:400;font-size:11px;color:var(--jade)}
.guard-mini .links{display:flex;gap:12px;margin-top:9px;font-size:11px;color:var(--ink-soft);flex-wrap:wrap}
.guard-mini .links a:hover{color:var(--ink);text-decoration:underline}

/* ============ 主区 ============ */
.main{position:fixed;top:var(--top-h);left:var(--side-w);right:0;bottom:0;overflow-y:auto;padding:26px 30px 60px;scroll-behavior:smooth}
.view{display:none;max-width:1120px;margin:0 auto;animation:vin .4s var(--ease)}
.view.active{display:block}
@keyframes vin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.vhead{display:flex;align-items:flex-end;gap:14px;margin-bottom:22px;flex-wrap:wrap}
.vhead h1{font-family:var(--serif);font-size:26px;font-weight:500;letter-spacing:.02em}
.vhead p{font-size:13px;color:var(--ink-faint);margin-top:4px}
.vhead .sp{flex:1}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 18px;border-radius:100px;font-size:13px;font-weight:500;border:1px solid transparent;transition:.3s var(--ease);white-space:nowrap}
.btn svg{width:15px;height:15px}
.btn-pri{background:linear-gradient(135deg,#2A231B,#1B1712);color:#FBF7F0;box-shadow:0 8px 20px -8px rgba(27,23,18,.5)}
.btn-pri:hover{transform:translateY(-1px)}
.btn-ghost{border-color:var(--line-strong);color:var(--ink)}
.btn-ghost:hover{border-color:var(--ink);background:rgba(27,23,18,.03)}
.btn-jade{background:linear-gradient(135deg,#5C8E76,#4E7A64);color:#fff;box-shadow:0 8px 20px -8px rgba(78,122,100,.55)}
.btn-jade:hover{transform:translateY(-1px)}
.btn-sm{height:30px;padding:0 13px;font-size:12px}

/* 卡片 */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}

/* ============ 概览 ============ */
.stats{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:16px;margin-bottom:22px}
.stat{border-radius:var(--r-lg);padding:20px 22px;position:relative;overflow:hidden}
.stat.dark{background:linear-gradient(150deg,#2E3629,#1F2620);color:#EFF5EE;border:0}
.stat .lb{font-size:12px;color:var(--ink-faint);display:flex;align-items:center;gap:7px}
.stat.dark .lb{color:rgba(239,245,238,.6)}
.stat .num{font-family:var(--serif);font-size:34px;font-weight:500;line-height:1.2;margin-top:8px}
.stat .sub{font-size:12px;color:var(--ink-faint);margin-top:2px}
.stat.dark .sub{color:rgba(239,245,238,.55)}
.stat .mini-bar{margin-top:16px;display:flex;align-items:center;gap:10px;font-size:11px;color:rgba(239,245,238,.7)}
.stat .mini-bar .bar{flex:1;height:5px;border-radius:100px;background:rgba(255,255,255,.16);overflow:hidden}
.stat .mini-bar .bar i{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,#D8B27E,#7FB08F);width:43%}
.stat .ic-bg{position:absolute;right:14px;top:14px;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.08)}
.stat:not(.dark) .ic-bg{background:var(--paper-2)}
.ov-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start}
.panel{padding:18px 20px}
.panel-h{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.panel-h h3{font-size:14px;font-weight:600}
.panel-h .more{margin-left:auto;font-size:12px;color:var(--ink-faint);display:inline-flex;align-items:center;gap:4px}
.panel-h .more:hover{color:var(--ink)}
.frow{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px dashed var(--line);border-radius:8px;transition:.2s}
.frow:last-child{border-bottom:0}
.frow:hover{background:rgba(243,237,228,.45)}
.frow .fic{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex:none;background:var(--paper-2);color:var(--ink-soft);overflow:hidden}
.frow .fic.jade{background:var(--jade-soft);color:var(--jade)}
.frow .fic.amber{background:var(--amber-soft);color:#8A5F2B}
.frow .fm{flex:1;min-width:0}
.frow .fm b{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.frow .fm span{font-size:11.5px;color:var(--ink-faint)}
.frow .sz{font-size:11.5px;color:var(--ink-faint);width:70px;text-align:right;flex:none}
.frow .tm2{font-size:11.5px;color:var(--ink-faint);width:86px;text-align:right;flex:none}
.frow .ops{display:none;gap:2px;flex:none}
.frow:hover .ops{display:flex}
.op{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--ink-faint)}
.op:hover{background:rgba(27,23,18,.06);color:var(--ink)}
.op svg{width:15px;height:15px}
/* 最近整理 feed */
.mem-item{display:flex;gap:12px;padding:12px 4px;border-bottom:1px dashed var(--line);align-items:flex-start}
.mem-item:last-child{border-bottom:0}
.mem-item .dot{width:8px;height:8px;border-radius:50%;background:var(--jade);margin-top:6px;flex:none;box-shadow:0 0 0 3px rgba(78,122,100,.15)}
.mem-item .mc b{display:block;font-size:13px;font-weight:600}
.mem-item .mc span{font-size:11.5px;color:var(--ink-faint);display:block;margin-top:2px}
.banner{margin-top:18px;background:linear-gradient(120deg,rgba(216,178,126,.14),rgba(78,122,100,.10));border:1px solid rgba(184,135,76,.2);border-radius:var(--r-lg);padding:18px 22px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.banner .bt b{display:block;font-size:14.5px;font-weight:600}
.banner .bt span{font-size:12px;color:var(--ink-soft)}
.banner .btn{margin-left:auto}

/* ============ 全部文件 · 筛选与视图 ============ */
.tabs{display:flex;gap:6px;background:rgba(27,23,18,.04);border-radius:100px;padding:4px;width:fit-content;margin-bottom:18px}
.tab{padding:6px 16px;border-radius:100px;font-size:12.5px;color:var(--ink-soft);transition:.25s}
.tab.active{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--shadow-sm)}
.toolrow{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.toolrow .sp{flex:1}
.viewtoggle{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.viewtoggle button{padding:7px 11px;color:var(--ink-faint);display:grid;place-items:center}
.viewtoggle button.active{background:var(--paper-2);color:var(--ink)}
/* 路径导航 */
.pathnav{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--ink-faint);margin-bottom:16px;flex-wrap:wrap}
.pathnav button{padding:5px 11px;border-radius:9px;transition:.22s}
.pathnav button:hover{background:rgba(27,23,18,.05);color:var(--ink)}
.pathnav button.cur{color:var(--ink);font-weight:600;background:rgba(27,23,18,.05)}
.pathnav .sep{opacity:.45;font-size:11px}
/* 批量选择条 */
.selbar{display:none;align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;background:var(--jade-soft);border:1px solid rgba(78,122,100,.2);border-radius:var(--r-md);flex-wrap:wrap}
.selbar.on{display:flex}
.selbar .sb-n{font-size:12.5px;color:var(--jade)}
.selbar .sb-n b{font-weight:700;font-size:14px}
.selbar .sp{flex:1}
.selbar .sbtn{height:30px;padding:0 12px;border-radius:100px;font-size:12px;display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);transition:.2s}
.selbar .sbtn:hover{border-color:var(--ink)}
.selbar .sbtn svg{width:13px;height:13px}
.selbar .sbtn.del{color:#8A5F2B;border-color:rgba(184,135,76,.3)}
.selbar .sbtn.del:hover{background:var(--amber-soft)}
.selbar select{height:30px;border-radius:100px;border:1px solid var(--line);background:var(--surface);font-size:12px;padding:0 10px;font-family:inherit;outline:none;color:var(--ink-2);max-width:180px}
/* 复选框 */
.ck{width:17px;height:17px;border:1.5px solid var(--line-strong);border-radius:5px;display:grid;place-items:center;flex:none;background:var(--surface);transition:.2s}
.ck:hover{border-color:var(--ink)}
.ck.on{background:var(--ink);border-color:var(--ink);color:#fff}
.ck svg{width:11px;height:11px;opacity:0;stroke-width:3.2}
.ck.on svg{opacity:1}
.gtile .ck{position:absolute;top:8px;left:8px;z-index:2}
.gtile.sel{border-color:var(--jade);box-shadow:0 0 0 2px rgba(78,122,100,.18)}
.gtile.jumped{border-color:var(--amber);box-shadow:0 0 0 3px rgba(184,135,76,.28);animation:jumpIn .9s var(--ease)}
.gtile .vis.gt{left:auto;right:8px;bottom:8px}
.gtile .jt-flag{position:absolute;top:8px;left:8px;z-index:3;height:21px;padding:0 8px;border-radius:100px;font-size:10px;font-weight:600;display:inline-flex;align-items:center;gap:4px;background:var(--amber);color:#fff}
.frow.sel{background:rgba(78,122,100,.07)}
.frow.jumped{background:var(--amber-soft);box-shadow:0 0 0 2px rgba(184,135,76,.18);animation:jumpIn .9s var(--ease)}
@keyframes jumpIn{0%{background:var(--amber-soft);box-shadow:0 0 0 6px rgba(184,135,76,.3)}100%{background:var(--amber-soft);box-shadow:0 0 0 2px rgba(184,135,76,.18)}}
.vis[onclick]{transition:.2s}
.vis[onclick]:hover{filter:brightness(.95);box-shadow:0 0 0 2px rgba(184,135,76,.25)}
.grid3{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.gtile{border-radius:var(--r-md);overflow:hidden;background:var(--surface);border:1px solid var(--line);position:relative;transition:.3s var(--ease);cursor:pointer}
.gtile:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.gtile .img{aspect-ratio:1;background:var(--paper-2);position:relative}
.gtile .img .em{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink-faint)}
.gtile .img .em svg{width:30px;height:30px}
.gtile .cap{padding:10px 12px}
.gtile .cap b{display:block;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gtile .cap span{font-size:10.5px;color:var(--ink-faint)}
.gtile .star{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.85);display:grid;place-items:center;color:var(--ink-faint);opacity:0;transition:.2s}
.gtile:hover .star,.gtile .star.on{opacity:1}
.gtile .star.on{color:var(--amber)}
.gtile .star svg{width:14px;height:14px}
.gtile.folder .img{background:linear-gradient(150deg,#F0E2CE,#E7D5B8);display:grid;place-items:center;color:#8A5F2B}
.gtile.folder .img svg{width:34px;height:34px}
.empty{text-align:center;padding:60px 0;color:var(--ink-faint)}
.empty svg{width:40px;height:40px;margin:0 auto 12px;display:block;color:var(--line-strong)}

/* ============ 长辈故事（保留卡片样式）============ */
.moments{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.mom{border-radius:var(--r-lg);overflow:hidden;background:var(--surface);border:1px solid var(--line);transition:.3s var(--ease)}
.mom:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.mom .img{height:150px;background:var(--paper-2)}
.mom .cap{padding:14px 16px}
.mom .yr{font-family:var(--serif);font-size:12px;color:var(--amber);font-weight:600;letter-spacing:.06em}
.mom h4{font-size:15px;font-weight:600;margin:3px 0 4px}
.mom p{font-size:12px;color:var(--ink-faint)}

/* ============ 家庭成员 ============ */
.mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.mcard{padding:20px;text-align:center;position:relative}
.mcard .av{width:62px;height:62px;border-radius:50%;overflow:hidden;margin:0 auto 10px;background:var(--paper-2);position:relative;box-shadow:0 8px 20px -8px rgba(27,23,18,.35)}
.mcard .av .ini{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(140deg,#C89B62,#8E6237);color:#fff;font-size:20px;font-weight:600}
.mcard h4{font-size:15px;font-weight:600}
.mcard .sub{font-size:11.5px;color:var(--ink-faint);margin:2px 0 12px}
.mcard select{width:100%;height:32px;border-radius:9px;border:1px solid var(--line-strong);background:var(--paper);font-size:12px;color:var(--ink-2);padding:0 10px;font-family:inherit;outline:none}
.mcard select:focus{border-color:var(--amber)}
.mcard .qs{margin-top:10px;font-size:11px;color:var(--jade);display:flex;align-items:center;justify-content:center;gap:5px}
.mcard .qs svg{width:12px;height:12px}

/* ============ 保险箱 ============ */
.safe-wrap{max-width:820px}
.safe-head{background:linear-gradient(150deg,#2E3629,#1F2620);border-radius:var(--r-lg);padding:28px 30px;color:#EFF5EE;position:relative;overflow:hidden;margin-bottom:18px}
.safe-head::after{content:"";position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.18),transparent 70%);top:-120px;right:-60px}
.safe-head .lb{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;letter-spacing:.12em;color:var(--amber-2)}
.safe-head h2{font-family:var(--serif);font-size:24px;font-weight:500;margin-top:12px}
.safe-head p{font-size:13px;color:rgba(239,245,238,.62);margin-top:8px;max-width:34em}
.safe-lock{display:flex;align-items:center;gap:14px;margin-top:20px;position:relative;z-index:2}
.lockdots{display:flex;gap:8px}
.lockdots i{width:12px;height:12px;border-radius:50%;border:1.5px solid rgba(239,245,238,.4);transition:.25s}
.lockdots i.f{background:var(--amber-2);border-color:var(--amber-2)}
.safe-state{font-size:12px;color:rgba(239,245,238,.7);display:flex;align-items:center;gap:6px}
.safe-state i{width:7px;height:7px;border-radius:50%;background:var(--amber-2)}
.safe-state.open-i i{background:#8FBF9E;box-shadow:0 0 0 3px rgba(143,191,158,.2)}
.regions{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.region{padding:16px}
.region .rnm{font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px}
.region .rnm svg{width:15px;height:15px;color:var(--ink-soft)}
.region .rsub{font-size:11px;color:var(--ink-faint);margin-top:2px}
.region .rlamp{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:11.5px;font-weight:600}
.region .rlamp i{width:8px;height:8px;border-radius:50%;background:var(--jade);box-shadow:0 0 0 3px rgba(78,122,100,.16)}
.region.warn .rlamp i{background:var(--amber-2);box-shadow:0 0 0 3px rgba(216,178,126,.2)}
.region.warn .rlamp b{color:var(--amber)}
.safe-list .frow .lockchip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;color:var(--jade);background:var(--jade-soft);border-radius:100px;padding:2px 8px;flex:none}
.export-row{margin-top:18px;display:flex;align-items:center;gap:16px;padding:18px 22px;background:linear-gradient(120deg,rgba(216,178,126,.12),rgba(78,122,100,.08));border:1px solid rgba(184,135,76,.2);border-radius:var(--r-lg);flex-wrap:wrap}
.export-row .t{flex:1;min-width:220px}
.export-row .t b{display:block;font-size:14px;font-weight:600}
.export-row .t span{font-size:12px;color:var(--ink-soft)}
.keynote{margin-top:14px;display:flex;gap:10px;font-size:12px;color:var(--ink-soft);align-items:flex-start;padding:0 4px}
.keynote svg{width:14px;height:14px;color:var(--jade);margin-top:2px}

/* ============ 数字传承 ============ */
.inh-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:start}
.step{display:flex;gap:14px;padding:16px 0;border-bottom:1px dashed var(--line)}
.step:last-child{border-bottom:0}
.step .n{width:28px;height:28px;border-radius:50%;background:var(--amber-soft);color:#8A5F2B;font-family:var(--serif);font-weight:600;display:grid;place-items:center;font-size:13px;flex:none}
.step .sc{flex:1}
.step .sc b{display:block;font-size:14px;font-weight:600}
.step .sc p{font-size:12px;color:var(--ink-faint);margin:3px 0 10px}
.heir-pick{display:flex;gap:10px;flex-wrap:wrap}
.hp{display:flex;align-items:center;gap:8px;padding:7px 14px 7px 8px;border-radius:100px;border:1px solid var(--line-strong);font-size:12.5px;transition:.25s;background:var(--surface)}
.hp .a{width:26px;height:26px;border-radius:50%;overflow:hidden;background:var(--paper-2)}
.hp.sel{border-color:var(--jade);background:var(--jade-soft);color:var(--jade);font-weight:600}
.hp:hover{border-color:var(--ink)}
.hp svg{width:13px;height:13px;display:none}
.hp.sel svg{display:block}
.seg{display:inline-flex;background:rgba(27,23,18,.04);border-radius:100px;padding:3px}
.seg button{padding:6px 14px;border-radius:100px;font-size:12px;color:var(--ink-soft)}
.seg button.active{background:var(--surface);font-weight:600;color:var(--ink);box-shadow:var(--shadow-sm)}
.inh-card{padding:22px}
.inh-card .tt{font-size:11px;letter-spacing:.14em;color:var(--ink-faint);text-transform:uppercase}
.heir-row{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--line);margin-top:14px}
.heir-row .a{width:40px;height:40px;border-radius:50%;overflow:hidden;background:var(--paper-2);flex:none}
.heir-row .hm b{display:block;font-size:13.5px;font-weight:600}
.heir-row .hm span{font-size:11.5px;color:var(--ink-faint)}
.heir-row .when{margin-left:auto;text-align:right;font-size:11px;color:var(--amber);font-weight:600}
.heir-row .when span{display:block;font-weight:400;color:var(--ink-faint)}
.inh-note{display:flex;gap:8px;font-size:11.5px;color:var(--ink-soft);margin-top:14px;line-height:1.7}
.inh-note svg{width:14px;height:14px;color:var(--jade);flex:none;margin-top:2px}

/* 守护记录分组标题 */
.log-grp{font-size:10.5px;letter-spacing:.14em;color:var(--ink-faint);text-transform:uppercase;padding:16px 0 6px;border-bottom:1px solid var(--line)}
.log-grp:first-child{padding-top:8px;border-top:0}
.lk-chip{display:inline-flex;align-items:center;gap:4px;font-size:10px;padding:1px 8px;border-radius:100px;background:rgba(27,23,18,.05);color:var(--ink-faint);font-weight:600;margin-left:8px;vertical-align:1px}
.lk-chip.time{background:var(--amber-soft);color:#8A5F2B}
.lk-chip.inherit{background:var(--jade-soft);color:var(--jade)}
.lk-chip.oral{background:var(--amber-soft);color:#8A5F2B}
/* 转写校对 */
.tx-edit{width:100%;min-height:96px;border:1px solid var(--amber);border-radius:var(--r-sm);padding:10px 12px;font-size:12.5px;line-height:1.8;font-family:var(--serif);color:var(--ink-2);background:var(--surface);outline:none;resize:vertical;margin-top:8px}
.tx-acts{display:flex;gap:10px;margin-top:8px;align-items:center}
.tx-acts button{font-size:11.5px;font-weight:600;color:var(--amber);padding:5px 12px;border-radius:100px;border:1px solid rgba(184,135,76,.3)}
.tx-acts button:hover{background:var(--amber-soft)}
.tx-acts .cancel{color:var(--ink-faint);border-color:var(--line)}
.tx-acts .cancel:hover{background:rgba(27,23,18,.04)}
.conf{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;color:var(--ink-faint);margin-left:8px}
.conf.ok{color:var(--jade)}
.conf svg{width:11px;height:11px}
/* 主题切换 */
.theme-btn{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--ink-soft);transition:.25s}
.theme-btn:hover{background:rgba(27,23,18,.05)}
.theme-btn svg{width:17px;height:17px}

/* ============ 守护记录 ============ */
.log{padding:6px 20px}
.log-item{display:flex;gap:14px;padding:14px 0;border-bottom:1px dashed var(--line);align-items:flex-start}
.log-item:last-child{border-bottom:0}
.log-item .lic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--jade-soft);color:var(--jade)}
.log-item .lic.amber{background:var(--amber-soft);color:#8A5F2B}
.log-item .lc{flex:1;min-width:0}
.log-item .lc b{font-size:13px;font-weight:600;display:block}
.log-item .lc span{font-size:11.5px;color:var(--ink-faint)}
.log-item .lt{font-size:11.5px;color:var(--ink-faint);white-space:nowrap}
.log-item .undo{font-size:11.5px;color:var(--amber);font-weight:600;padding:4px 10px;border-radius:100px;border:1px solid rgba(184,135,76,.3)}
.log-item .undo:hover{background:var(--amber-soft)}

/* ============ AI 浮窗 ============ */
.fab{position:fixed;right:26px;bottom:26px;z-index:300;display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.fab-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#2A231B,#1B1712);color:#F7F0E5;display:grid;place-items:center;box-shadow:0 16px 36px -12px rgba(27,23,18,.5);transition:.3s var(--ease);position:relative}
.fab-btn:hover{transform:translateY(-3px)}
.fab-btn .ai-orb{width:28px;height:28px;border-radius:50%;position:relative;background:conic-gradient(from 0deg,#C89B62,#E9D3B4,#8E6237,#C89B62);animation:spin 9s linear infinite}
.fab-btn .ai-orb::after{content:"";position:absolute;inset:6px;border-radius:50%;background:#1B1712}
@keyframes spin{to{transform:rotate(360deg)}}
.fab-panel{width:340px;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-md);overflow:hidden;transform-origin:bottom right;transform:translateY(10px) scale(.94);opacity:0;pointer-events:none;transition:.35s var(--ease);position:absolute;bottom:70px;right:0}
.fab-panel.open{transform:none;opacity:1;pointer-events:auto}
.fp-top{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;background:linear-gradient(160deg,#FBF6EE,#fff)}
.fp-top .ai-orb{width:30px;height:30px;border-radius:50%;position:relative;background:conic-gradient(from 0deg,#C89B62,#E9D3B4,#8E6237,#C89B62);animation:spin 9s linear infinite;flex:none}
.fp-top .ai-orb::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--surface)}
.fp-top .nm{font-size:13px;font-weight:600}
.fp-top .mt{font-size:10.5px;color:var(--ink-faint)}
.fp-top .cls{margin-left:auto;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:rgba(27,23,18,.05);color:var(--ink-soft)}
.fp-top .cls svg{width:13px;height:13px}
.fp-body{padding:16px;display:flex;flex-direction:column;gap:11px;background:linear-gradient(180deg,#FFFDF9,#FBF6EE);max-height:280px;overflow:auto}
.msg{max-width:86%;padding:10px 13px;border-radius:14px;font-size:12.5px;line-height:1.65}
.msg.me{align-self:flex-end;background:linear-gradient(135deg,#2A231B,#1B1712);color:#F7F1E7;border-bottom-right-radius:4px}
.msg.ai{align-self:flex-start;background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:4px}
.msg.ai .lk{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:11px;color:var(--amber);font-weight:600;cursor:pointer}
.msg.ai .lk:hover{text-decoration:underline}
.fab-sugg{display:flex;flex-wrap:wrap;gap:7px;padding:0 16px 12px;background:var(--surface)}
.fab-sugg span{font-size:11px;padding:6px 11px;border-radius:100px;background:rgba(27,23,18,.04);border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;transition:.2s}
.fab-sugg span:hover{background:var(--amber-soft);color:#8A5F2B}
.fp-in{padding:11px 16px;border-top:1px solid var(--line);display:flex;gap:9px;background:var(--surface)}
.fp-in input{flex:1;height:34px;border-radius:100px;border:1px solid var(--line-strong);padding:0 14px;font-size:12px;font-family:inherit;outline:none;background:var(--paper)}
.fp-in input:focus{border-color:var(--amber)}
.fp-in button{width:34px;height:34px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;flex:none}
.fp-in button svg{width:14px;height:14px}

/* ============ 筛选器 ============ */
.filterbar{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.filterbar select{height:32px;border-radius:100px;border:1px solid var(--line);background:var(--surface);font-size:12px;padding:0 10px;font-family:inherit;color:var(--ink-2);outline:none;transition:.2s}
.filterbar select:focus{border-color:var(--amber)}
.filterbar select.on{border-color:var(--amber);background:var(--amber-soft);color:#8A5F2B}
.filterbar .fb-clear{font-size:11.5px;color:var(--ink-faint);padding:6px 10px;border-radius:100px}
.filterbar .fb-clear:hover{background:rgba(27,23,18,.05);color:var(--ink)}
/* 搜索命中理由 */
.hit{display:inline-flex;align-items:center;gap:4px;font-size:10px;padding:2px 8px;border-radius:100px;background:var(--amber-soft);color:#8A5F2B;font-weight:600;margin-left:6px}
.hit svg{width:9px;height:9px}
/* 可见范围徽标 */
.vis{display:inline-flex;align-items:center;gap:4px;font-size:10px;padding:2px 8px;border-radius:100px;font-weight:600;flex:none}
.vis svg{width:9px;height:9px}
.vis.self{background:rgba(27,23,18,.06);color:var(--ink-soft)}
.vis.couple{background:var(--amber-soft);color:#8A5F2B}
.vis.family{background:var(--jade-soft);color:var(--jade)}
.vis.custom{background:rgba(184,135,76,.12);color:var(--amber)}
.gtile .vis{position:absolute;bottom:8px;left:8px;z-index:2;background:rgba(255,255,255,.92)}

/* ============ 详情抽屉 ============ */
.drawer{position:fixed;inset:0;z-index:500;pointer-events:none}
.drawer.open{pointer-events:auto}
.dr-mask{position:absolute;inset:0;background:rgba(27,23,18,.32);backdrop-filter:blur(2px);opacity:0;transition:.4s var(--ease)}
.drawer.open .dr-mask{opacity:1}
.dr-panel{position:absolute;top:0;right:0;bottom:0;width:min(460px,100vw);background:var(--paper);border-left:1px solid var(--line);box-shadow:-30px 0 80px -30px rgba(27,23,18,.35);transform:translateX(100%);transition:.45s var(--ease);display:flex;flex-direction:column;overflow:hidden}
.drawer.open .dr-panel{transform:none}
.dr-top{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line);background:var(--surface)}
.dr-top b{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dr-top .dr-x{margin-left:auto;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(27,23,18,.05);color:var(--ink-soft);flex:none}
.dr-top .dr-x:hover{background:rgba(27,23,18,.1)}
.dr-body{flex:1;overflow-y:auto;padding:20px}
.dr-hero{aspect-ratio:4/3;border-radius:var(--r-md);overflow:hidden;background:var(--paper-2);position:relative;box-shadow:var(--shadow-sm)}
.dr-hero .em{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink-faint)}
.dr-hero .em svg{width:44px;height:44px}
.dr-desc{font-family:var(--serif);font-size:14.5px;line-height:1.8;color:var(--ink-2);margin-top:16px;letter-spacing:.02em}
.dr-sec{font-size:10.5px;letter-spacing:.14em;color:var(--ink-faint);text-transform:uppercase;margin:22px 0 12px}
.dr-meta{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.dr-meta div{background:var(--surface);padding:12px 14px}
.dr-meta span{display:block;font-size:10.5px;color:var(--ink-faint)}
.dr-meta b{font-size:13px;font-weight:600;display:block;margin-top:2px}
.dr-meta div.wide{grid-column:1/-1}
.dr-vis-row{display:flex;align-items:center;gap:10px;padding:14px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line)}
.dr-vis-row select{flex:1;height:34px;border-radius:9px;border:1px solid var(--line-strong);background:var(--paper);font-size:12.5px;padding:0 10px;font-family:inherit;outline:none}
.dr-vers{border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--surface)}
.dr-v{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px dashed var(--line)}
.dr-v:last-child{border-bottom:0}
.dr-v .vi{width:28px;height:28px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--paper-2);color:var(--ink-soft)}
.dr-v.cur .vi{background:var(--jade-soft);color:var(--jade)}
.dr-v .vc b{font-size:12.5px;font-weight:600;display:block}
.dr-v .vc span{font-size:11px;color:var(--ink-faint)}
.dr-v .vb{margin-left:auto;font-size:11.5px;color:var(--amber);font-weight:600}
.dr-v .vb:hover{text-decoration:underline}
.dr-rel{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.dr-rel div{aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--paper-2);cursor:pointer;transition:.25s}
.dr-rel div:hover{transform:scale(1.04)}
.dr-acts{display:flex;gap:8px;margin-top:22px;flex-wrap:wrap}

/* ============ 口述历史 ============ */
.oral-hero{background:linear-gradient(150deg,#2E3629,#1F2620);border-radius:var(--r-lg);padding:26px 28px;color:#EFF5EE;position:relative;overflow:hidden;margin-bottom:18px}
.oral-hero::after{content:"";position:absolute;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.18),transparent 70%);top:-130px;right:-70px}
.oral-hero .lb{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;letter-spacing:.12em;color:var(--amber-2)}
.oral-hero h3{font-family:var(--serif);font-size:22px;font-weight:500;margin-top:12px;line-height:1.5}
.oral-hero p{font-size:13px;color:rgba(239,245,238,.62);margin-top:8px;max-width:36em;line-height:1.8}
.rec-row{display:flex;align-items:center;gap:14px;margin-top:20px;position:relative;z-index:2;flex-wrap:wrap}
.rec-btn{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#5C8E76,#4E7A64);color:#fff;display:grid;place-items:center;box-shadow:0 10px 24px -10px rgba(78,122,100,.6);transition:.3s;flex:none}
.rec-btn:hover{transform:scale(1.05)}
.rec-btn.rec{background:linear-gradient(135deg,#C89B62,#8E6237);animation:pulse2 1.4s infinite}
@keyframes pulse2{0%,100%{box-shadow:0 0 0 0 rgba(184,135,76,.45)}50%{box-shadow:0 0 0 12px rgba(184,135,76,0)}}
.rec-btn svg{width:20px;height:20px}
.wave{display:flex;align-items:center;gap:3px;height:34px}
.wave i{width:3px;border-radius:2px;background:rgba(239,245,238,.35);height:8px;transition:.3s}
.wave.on i{background:var(--amber-2);animation:wv .9s ease-in-out infinite}
.wave.on i:nth-child(2){animation-delay:.1s}.wave.on i:nth-child(3){animation-delay:.2s}
.wave.on i:nth-child(4){animation-delay:.3s}.wave.on i:nth-child(5){animation-delay:.15s}
.wave.on i:nth-child(6){animation-delay:.25s}.wave.on i:nth-child(7){animation-delay:.35s}
.wave.on i:nth-child(8){animation-delay:.05s}.wave.on i:nth-child(9){animation-delay:.3s}
@keyframes wv{0%,100%{height:8px}50%{height:28px}}
.rec-t{font-family:var(--serif);font-size:20px;color:#EFF5EE;min-width:64px}
.prompts{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:16px}
.prompt{padding:16px 18px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);transition:.3s var(--ease);text-align:left;width:100%}
.prompt:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:var(--line-strong)}
.prompt.sel{border-color:var(--amber);background:var(--amber-soft)}
.prompt .era{font-family:var(--serif);font-size:11.5px;color:var(--amber);font-weight:600;letter-spacing:.06em}
.prompt .q{font-size:13.5px;font-weight:600;margin-top:5px;line-height:1.6}
.oral-item{display:flex;gap:14px;padding:16px 0;border-bottom:1px dashed var(--line)}
.oral-item:last-child{border-bottom:0}
.oral-item .oi-av{width:42px;height:42px;border-radius:50%;overflow:hidden;flex:none;background:var(--paper-2)}
.oral-item .oc{flex:1;min-width:0}
.oral-item .oc b{font-size:13.5px;font-weight:600}
.oral-item .oc .qt{font-family:var(--serif);font-size:12.5px;color:var(--amber);margin-top:2px}
.oral-item .oc .tx{font-size:12.5px;color:var(--ink-soft);line-height:1.8;margin-top:8px;border-left:2px solid var(--amber);padding-left:12px}
.oral-item .oc .mt2{margin-top:10px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.oral-item .oc .mt2 span{font-size:11px;color:var(--ink-faint)}
.oral-item .oc .mt2 button{font-size:11.5px;color:var(--amber);font-weight:600}
.oral-item .oc .mt2 button:hover{text-decoration:underline}

/* ============ 守护体检报告 ============ */
.rep-hero{background:linear-gradient(150deg,#2E3629,#1F2620);border-radius:var(--r-lg);padding:28px 30px;color:#EFF5EE;position:relative;overflow:hidden;display:flex;gap:32px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
.rep-hero::after{content:"";position:absolute;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.18),transparent 70%);top:-140px;right:-80px}
.rep-ring{position:relative;width:132px;height:132px;flex:none}
.rep-ring svg{transform:rotate(-90deg)}
.rep-ring .rv2{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.rep-ring .rv2 b{font-family:var(--serif);font-size:38px;font-weight:500;line-height:1}
.rep-ring .rv2 span{font-size:10.5px;color:rgba(239,245,238,.6);margin-top:4px;letter-spacing:.1em}
.rep-txt{flex:1;min-width:240px;position:relative;z-index:2}
.rep-txt .lb{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;letter-spacing:.12em;color:var(--amber-2)}
.rep-txt h3{font-family:var(--serif);font-size:23px;font-weight:500;margin-top:12px;line-height:1.5}
.rep-txt p{font-size:13px;color:rgba(239,245,238,.62);margin-top:8px;line-height:1.8;max-width:34em}
.rep-metrics{border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--surface)}
.rm{display:flex;align-items:center;gap:14px;padding:15px 18px;border-bottom:1px dashed var(--line)}
.rm:last-child{border-bottom:0}
.rm .ri{width:32px;height:32px;border-radius:10px;flex:none;display:grid;place-items:center;background:var(--jade-soft);color:var(--jade)}
.rm.warn .ri{background:var(--amber-soft);color:#8A5F2B}
.rm .rc{flex:1;min-width:0}
.rm .rc b{font-size:13.5px;font-weight:600;display:block}
.rm .rc span{font-size:11.5px;color:var(--ink-faint)}
.rm .rbar{width:90px;height:5px;border-radius:100px;background:rgba(27,23,18,.08);overflow:hidden;flex:none}
.rm .rbar i{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,#D8B27E,#4E7A64);width:0;transition:width .9s var(--ease)}
.rm .rv3{font-size:12px;font-weight:600;color:var(--jade);flex:none;width:56px;text-align:right}
.rm.warn .rv3{color:var(--amber)}
.rep-advice{margin-top:16px;border:1px solid rgba(184,135,76,.25);background:linear-gradient(120deg,rgba(216,178,126,.12),rgba(78,122,100,.08));border-radius:var(--r-md);padding:18px 20px}
.rep-advice h4{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;margin-bottom:12px}
.rep-advice h4 svg{width:15px;height:15px;color:var(--amber)}
.rep-advice li{list-style:none;display:flex;align-items:flex-start;gap:9px;font-size:13px;color:var(--ink-2);padding:6px 0;line-height:1.7}
.rep-advice li svg{width:14px;height:14px;color:var(--jade);flex:none;margin-top:3px}
.rep-advice li b{font-weight:600}
.rep-hist{margin-top:16px}
.rh{display:flex;align-items:center;gap:14px;padding:13px 16px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);margin-bottom:10px;transition:.3s}
.rh:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm)}
.rh .rm2{font-family:var(--serif);font-size:14px;font-weight:600;width:110px;flex:none}
.rh .rn{font-size:12.5px;color:var(--ink-soft);flex:1;min-width:0}
.rh .rs{font-family:var(--serif);font-size:19px;font-weight:500;color:var(--jade);flex:none}

/* ============ 时间胶囊 ============ */
.cap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.cap{border-radius:var(--r-lg);padding:22px;background:linear-gradient(160deg,#FFFDF8,#F7F0E4);border:1px solid rgba(184,135,76,.28);position:relative;overflow:hidden;transition:.35s var(--ease)}
.cap:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.cap::before{content:"";position:absolute;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.22),transparent 70%);top:-70px;right:-50px}
.cap .wax{position:absolute;top:16px;right:18px;width:42px;height:42px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#C0453A,#8E2F27);display:grid;place-items:center;color:#F7E6D8;box-shadow:0 6px 16px -6px rgba(142,47,39,.6);font-size:10px;font-weight:600;letter-spacing:.08em}
.cap h4{font-size:16px;font-weight:600;margin-bottom:4px;position:relative;z-index:2}
.cap .cw{font-size:11.5px;color:var(--amber);font-weight:600;position:relative;z-index:2}
.cap .cb{font-family:var(--serif);font-size:13.5px;color:var(--ink-2);line-height:1.85;margin-top:12px;border-left:2px solid var(--amber);padding-left:12px;position:relative;z-index:2}
.cap .cf{display:flex;align-items:center;gap:10px;margin-top:16px;padding-top:14px;border-top:1px dashed rgba(184,135,76,.3);position:relative;z-index:2;flex-wrap:wrap}
.cap .cd{font-size:12px;color:var(--ink-soft);display:flex;align-items:center;gap:6px}
.cap .cd svg{width:13px;height:13px;color:var(--amber)}
.cap .cbtn{margin-left:auto;font-size:11.5px;color:var(--amber);font-weight:600;padding:5px 12px;border-radius:100px;border:1px solid rgba(184,135,76,.3)}
.cap .cbtn:hover{background:var(--amber-soft)}
.cap.new{animation:capIn .7s var(--ease)}
@keyframes capIn{from{opacity:0;transform:scale(.94) translateY(14px)}to{opacity:1;transform:none}}
.cap-form{padding:20px 22px}
.cap-form h3{font-size:15px;font-weight:600;margin-bottom:14px}
.cap-form input,.cap-form textarea{width:100%;border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:10px 14px;font-size:13px;font-family:inherit;color:var(--ink);background:var(--paper);outline:none;transition:.25s}
.cap-form input:focus,.cap-form textarea:focus{border-color:var(--amber);background:var(--surface)}
.cap-form textarea{min-height:84px;resize:vertical;line-height:1.7;margin-top:10px}
.cap-form .cfr{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;align-items:center}
.cap-form .cfr select{height:38px;border-radius:100px;border:1px solid var(--line-strong);background:var(--paper);font-size:12.5px;padding:0 12px;font-family:inherit;outline:none}

/* ============ 注册登录 ============ */
.auth-wrap{display:grid;grid-template-columns:1fr 1fr;min-height:calc(100vh - var(--top-h));margin:-26px -30px -60px}
.auth-l{padding:60px 54px;background:linear-gradient(155deg,#2E3629,#1F2620);color:#EFF5EE;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}
.auth-l::after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.2),transparent 70%);top:-160px;right:-120px}
.auth-l .lb{font-size:11.5px;letter-spacing:.2em;color:var(--amber-2);display:inline-flex;align-items:center;gap:8px}
.auth-l h2{font-family:var(--serif);font-size:32px;font-weight:500;margin-top:18px;line-height:1.45;position:relative;z-index:2}
.auth-l p{font-size:13.5px;color:rgba(239,245,238,.62);margin-top:14px;line-height:1.9;max-width:26em;position:relative;z-index:2}
.auth-l .trust{margin-top:32px;position:relative;z-index:2}
.auth-l .trust div{display:flex;align-items:flex-start;gap:10px;padding:11px 0;font-size:12.5px;color:rgba(239,245,238,.78);line-height:1.7}
.auth-l .trust svg{width:15px;height:15px;color:var(--amber-2);flex:none;margin-top:2px}
.auth-r{padding:60px 54px;display:flex;flex-direction:column;justify-content:center;background:var(--paper)}
.auth-r h3{font-family:var(--serif);font-size:24px;font-weight:500;margin-bottom:6px}
.auth-r .sub{font-size:13px;color:var(--ink-faint);margin-bottom:26px}
.fld{margin-bottom:16px}
.fld label{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:7px;font-weight:600}
.fld-in{position:relative;display:flex;align-items:center}
.fld-in svg{position:absolute;left:15px;width:16px;height:16px;color:var(--ink-faint);pointer-events:none}
.fld input{width:100%;height:46px;border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--surface);padding:0 15px 0 42px;font-size:14px;font-family:inherit;color:var(--ink);outline:none;transition:.25s}
.fld input:focus{border-color:var(--amber);box-shadow:0 0 0 3px rgba(184,135,76,.12)}
.fld .code{position:absolute;right:6px;height:34px;padding:0 12px;border-radius:100px;font-size:12px;font-weight:600;color:#8A5F2B;background:var(--amber-soft);transition:.2s}
.fld .code:hover{background:#E8D6B8}
.fld .code:disabled{color:var(--ink-faint);background:rgba(27,23,18,.05);cursor:default}
.auth-btn{width:100%;height:46px;border-radius:var(--r-md);background:linear-gradient(135deg,#2A231B,#1B1712);color:#FBF7F0;font-size:14.5px;font-weight:600;display:grid;place-items:center;margin-top:6px;transition:.25s}
.auth-btn:hover{transform:translateY(-1px);box-shadow:0 10px 24px -10px rgba(27,23,18,.5)}
.auth-alt{margin-top:20px;text-align:center;font-size:12.5px;color:var(--ink-faint)}
.auth-alt a{color:var(--amber);font-weight:600}
.auth-alt a:hover{text-decoration:underline}
.invite-box{margin-top:20px;padding:14px 16px;background:var(--amber-soft);border:1px dashed rgba(184,135,76,.45);border-radius:var(--r-md)}
.invite-box .t{font-size:12px;color:#8A5F2B;font-weight:600;display:flex;align-items:center;gap:7px}
.invite-box .t svg{width:14px;height:14px}
.invite-box p{font-size:11.5px;color:#8A5F2B;margin-top:5px;line-height:1.7;opacity:.85}
.auth-agree{display:flex;align-items:flex-start;gap:8px;margin-top:16px;font-size:11.5px;color:var(--ink-faint);line-height:1.7}

/* ============ 备份任务中心 ============ */
.bk-hero{background:linear-gradient(150deg,#2E3629,#1F2620);border-radius:var(--r-lg);padding:26px 28px;color:#EFF5EE;display:flex;gap:28px;align-items:center;flex-wrap:wrap;margin-bottom:18px;position:relative;overflow:hidden}
.bk-hero::after{content:"";position:absolute;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.18),transparent 70%);top:-140px;right:-80px}
.bk-ring{position:relative;width:120px;height:120px;flex:none}
.bk-ring svg{transform:rotate(-90deg)}
.bk-ring .bv{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.bk-ring .bv b{font-family:var(--serif);font-size:30px;font-weight:500;line-height:1}
.bk-ring .bv span{font-size:10.5px;color:rgba(239,245,238,.6);margin-top:4px;letter-spacing:.08em}
.bk-txt{flex:1;min-width:240px;position:relative;z-index:2}
.bk-txt .lb{font-size:11.5px;letter-spacing:.14em;color:var(--amber-2);display:inline-flex;align-items:center;gap:7px}
.bk-txt h3{font-family:var(--serif);font-size:22px;font-weight:500;margin-top:10px;line-height:1.5}
.bk-txt p{font-size:13px;color:rgba(239,245,238,.62);margin-top:7px;line-height:1.8;max-width:36em}
.bk-btns{display:flex;gap:9px;margin-top:16px;flex-wrap:wrap}
.bk-btns .btn{height:34px;font-size:12.5px}
.dev-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.dev{padding:16px 18px}
.dev .dv{display:flex;align-items:center;gap:10px}
.dev .dv svg{width:17px;height:17px;color:var(--ink-soft);flex:none}
.dev .dv b{font-size:13.5px;font-weight:600}
.dev .dsub{font-size:11px;color:var(--ink-faint);margin-top:3px}
.dev .dbar{height:5px;border-radius:100px;background:rgba(27,23,18,.08);overflow:hidden;margin-top:12px}
.dev .dbar i{display:block;height:100%;border-radius:100px;transition:width .8s var(--ease)}
.dev.on .dbar i{background:linear-gradient(90deg,#7FB08F,#4E7A64)}
.dev.wait .dbar i{background:linear-gradient(90deg,#EF9F27,#BA7517)}
.dev.off .dbar i{background:rgba(27,23,18,.12)}
.dev .dl{font-size:11px;color:var(--ink-faint);margin-top:6px;display:flex;align-items:center;gap:6px}
.dev .dl b{color:var(--ink-2);font-weight:600}
.q-item{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px dashed var(--line)}
.q-item:last-child{border-bottom:0}
.q-item .qi{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--paper-2);color:var(--ink-soft)}
.q-item .qi.run{background:var(--amber-soft);color:#8A5F2B}
.q-item .qi.ok{background:var(--jade-soft);color:var(--jade)}
.q-item .qi.err{background:#F7E8E4;color:var(--red)}
.q-item .qm{flex:1;min-width:0}
.q-item .qm b{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-item .qm span{font-size:11px;color:var(--ink-faint);display:block;margin-top:1px}
.q-item .qs{font-size:11px;padding:2px 9px;border-radius:100px;flex:none;font-weight:600}
.q-item .qs.run{background:var(--amber-soft);color:#8A5F2B}
.q-item .qs.ok{background:var(--jade-soft);color:var(--jade)}
.q-item .qs.err{background:#F7E8E4;color:var(--red)}
.q-item .qs.wait{background:rgba(27,23,18,.06);color:var(--ink-faint)}
.q-item .qp{width:110px;flex:none}
.q-item .qp .bar{height:5px;border-radius:100px;background:rgba(27,23,18,.08);overflow:hidden}
.q-item .qp .bar i{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,#D8B27E,#B8874C);transition:width .8s var(--ease)}
.q-item .qp span{font-size:10.5px;color:var(--ink-faint);display:block;margin-top:3px;text-align:right}
.bk-opt{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px dashed var(--line)}
.bk-opt:last-child{border-bottom:0}
.bk-opt .bt{flex:1;min-width:0}
.bk-opt .bt b{display:block;font-size:13.5px;font-weight:600}
.bk-opt .bt span{font-size:11.5px;color:var(--ink-faint);display:block;margin-top:2px}
.tgl{width:42px;height:24px;border-radius:100px;background:rgba(27,23,18,.16);position:relative;flex:none;transition:.28s var(--ease)}
.tgl::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.28s var(--ease);box-shadow:0 1px 3px rgba(0,0,0,.2)}
.tgl.on{background:var(--jade)}
.tgl.on::after{transform:translateX(18px)}

/* ============ 订阅与配额 ============ */
.sub-hero{background:linear-gradient(150deg,#2E3629,#1F2620);border-radius:var(--r-lg);padding:26px 28px;color:#EFF5EE;display:flex;gap:26px;align-items:center;flex-wrap:wrap;margin-bottom:18px;position:relative;overflow:hidden}
.sub-hero::after{content:"";position:absolute;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.18),transparent 70%);top:-130px;right:-70px}
.sub-hero .lb{font-size:11.5px;letter-spacing:.16em;color:var(--amber-2);display:inline-flex;align-items:center;gap:7px}
.sub-hero h3{font-family:var(--serif);font-size:26px;font-weight:500;margin-top:10px}
.sub-hero .sp{font-size:12.5px;color:rgba(239,245,238,.62);margin-top:6px}
.sub-hero .sp b{color:var(--amber-2)}
.quota{margin-top:18px;min-width:220px;position:relative;z-index:2}
.quota .qt{font-size:11.5px;color:rgba(239,245,238,.6)}
.quota .qn{font-family:var(--serif);font-size:32px;margin-top:4px}
.quota .qn span{font-size:13px;font-family:var(--sans);opacity:.6}
.quota .qb{height:7px;border-radius:100px;background:rgba(255,255,255,.16);overflow:hidden;margin-top:11px}
.quota .qb i{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,#D8B27E,#7FB08F)}
.quota .qs{font-size:11px;color:rgba(239,245,238,.6);margin-top:6px}
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}
.plan{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;display:flex;flex-direction:column;position:relative;transition:.3s var(--ease)}
.plan:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.plan.cur{border-color:var(--amber);box-shadow:0 0 0 2px rgba(184,135,76,.14)}
.plan .pt{font-size:12.5px;letter-spacing:.1em;color:var(--ink-faint);font-weight:600}
.plan .pn{font-family:var(--serif);font-size:16px;font-weight:600;margin-top:7px}
.plan .pp{font-family:var(--serif);font-size:32px;font-weight:500;margin-top:12px}
.plan .pp span{font-size:12.5px;font-family:var(--sans);color:var(--ink-faint)}
.plan .pd{font-size:11.5px;color:var(--ink-faint);margin-top:3px}
.plan .pf{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line);flex:1}
.plan .pf div{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--ink-2);padding:5px 0;line-height:1.65}
.plan .pf svg{width:13px;height:13px;color:var(--jade);flex:none;margin-top:3px}
.plan .pf div.no{color:var(--ink-faint)}
.plan .pf div.no svg{color:var(--ink-faint);opacity:.55}
.plan .pbtn{margin-top:18px}
.plan .tagc{position:absolute;top:16px;right:16px;font-size:10.5px;font-weight:600;padding:3px 10px;border-radius:100px;background:var(--amber-soft);color:#8A5F2B}
.pay-item{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px dashed var(--line)}
.pay-item:last-child{border-bottom:0}
.pay-item .pi{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--paper-2);color:var(--ink-soft)}
.pay-item .pm{flex:1;min-width:0}
.pay-item .pm b{display:block;font-size:13.5px;font-weight:600}
.pay-item .pm span{font-size:11.5px;color:var(--ink-faint)}
.pay-item .pa{font-size:14px;font-weight:600;flex:none}

/* ============ 家庭解散 ============ */
.risk{padding:24px 26px}
.risk-h{display:flex;align-items:flex-start;gap:11px;margin-bottom:16px}
.risk-h .ri{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#F7E8E4;color:var(--red);flex:none}
.risk-h h3{font-size:16px;font-weight:600}
.risk-h p{font-size:12px;color:var(--ink-faint);margin-top:3px;line-height:1.7}
.diss-steps{display:flex;align-items:flex-start;margin:8px 0 22px}
.ds{flex:1;text-align:center;position:relative;padding:0 6px}
.ds .dn{width:28px;height:28px;border-radius:50%;background:var(--paper-2);color:var(--ink-faint);font-size:12px;font-weight:600;display:grid;place-items:center;margin:0 auto 8px;position:relative;z-index:2;transition:.3s}
.ds .dl2{font-size:11.5px;color:var(--ink-faint);line-height:1.5}
.ds:not(:last-child)::before{content:"";position:absolute;top:14px;left:50%;width:100%;height:2px;background:var(--line);z-index:1}
.ds.done .dn{background:var(--jade);color:#fff}
.ds.done .dl2{color:var(--ink-2)}
.ds.done:not(:last-child)::before{background:var(--jade)}
.ds.cur .dn{background:var(--amber);color:#fff;box-shadow:0 0 0 4px rgba(184,135,76,.18)}
.ds.cur .dl2{color:var(--ink);font-weight:600}
.opt-list{display:grid;gap:10px;margin-top:6px}
.opt{display:flex;align-items:flex-start;gap:12px;padding:15px 17px;border:1px solid var(--line-strong);border-radius:var(--r-md);cursor:pointer;transition:.25s;background:var(--surface)}
.opt:hover{border-color:var(--ink)}
.opt.sel{border-color:var(--amber);background:var(--amber-soft);box-shadow:0 0 0 2px rgba(184,135,76,.14)}
.opt input{margin-top:3px;flex:none;accent-color:var(--amber);width:15px;height:15px}
.opt .ot b{display:block;font-size:13.5px;font-weight:600}
.opt .ot span{display:block;font-size:11.5px;color:var(--ink-soft);margin-top:3px;line-height:1.7}
.opt.dis{opacity:.5;cursor:not-allowed}
.diss-preview{margin-top:18px;padding:18px 20px;background:var(--paper-2);border-radius:var(--r-md);border:1px solid var(--line)}
.diss-preview .dp-h{font-size:11px;letter-spacing:.14em;color:var(--ink-faint);margin-bottom:12px;text-transform:uppercase}
.diss-preview .drow{display:flex;align-items:center;gap:10px;padding:9px 0;font-size:13px;border-bottom:1px dashed var(--line)}
.diss-preview .drow:last-child{border-bottom:0}
.diss-preview .drow .sp{margin-left:auto;font-weight:600}
.warn-note{margin-top:16px;display:flex;gap:10px;font-size:12px;color:var(--red);line-height:1.75;padding:13px 15px;background:#F7E8E4;border-radius:var(--r-md);border:1px solid rgba(156,59,46,.2)}
.warn-note svg{width:15px;height:15px;flex:none;margin-top:2px}
.confirm-box{margin-top:18px;padding:18px 20px;border:1px solid rgba(156,59,46,.3);background:#FDF4F2;border-radius:var(--r-md)}
.confirm-box p{font-size:12.5px;color:var(--red);line-height:1.8;margin-bottom:12px}
.confirm-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.confirm-row input{flex:1;min-width:200px;height:40px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:#fff;padding:0 14px;font-size:13px;font-family:inherit;outline:none}
.confirm-row input:focus{border-color:var(--red)}
.danger-btn{background:linear-gradient(135deg,#A8342A,#7E2018);color:#fff;box-shadow:0 8px 20px -8px rgba(168,52,42,.5)}
.danger-btn:hover{transform:translateY(-1px)}
.danger-btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}

/* ============ 家庭记忆 · AI 成片层 ============ */
.mem-hero{background:linear-gradient(150deg,#2E3629,#1F2620);border-radius:var(--r-lg);padding:28px 30px;color:#EFF5EE;display:flex;gap:32px;align-items:center;flex-wrap:wrap;margin-bottom:18px;position:relative;overflow:hidden}
.mem-hero::after{content:"";position:absolute;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.2),transparent 70%);top:-160px;right:-90px}
.mem-hero-txt{flex:1;min-width:260px;position:relative;z-index:2}
.mem-hero-txt .lb{font-size:11.5px;letter-spacing:.14em;color:var(--amber-2);display:inline-flex;align-items:center;gap:7px}
.mem-hero-txt h2{font-family:var(--serif);font-size:26px;font-weight:500;margin-top:12px;line-height:1.5}
.mem-hero-txt p{font-size:13px;color:rgba(239,245,238,.62);margin-top:9px;line-height:1.8;max-width:34em}
.mem-hero-stat{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:rgba(239,245,238,.14);border-radius:var(--r-md);overflow:hidden;flex:none;position:relative;z-index:2}
.mem-hero-stat div{background:#25302A;padding:16px 22px;text-align:center}
.mem-hero-stat b{font-family:var(--serif);font-size:28px;font-weight:500;display:block;line-height:1}
.mem-hero-stat span{font-size:11px;color:rgba(239,245,238,.6);display:block;margin-top:4px}
.mem-tools{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.mem-tools .sp{flex:1}

.tl-year{display:flex;align-items:center;gap:14px;margin:30px 0 16px}
.tl-year:first-child{margin-top:0}
.tl-year .yl{font-family:var(--serif);font-size:22px;font-weight:500;color:var(--ink);letter-spacing:.04em;flex:none}
.tl-year .yln{font-size:11.5px;color:var(--ink-faint)}
.tl-year .ylb{flex:1;height:1px;background:var(--line)}
.tl-year .ylc{font-size:11px;color:var(--ink-faint);padding:2px 10px;border-radius:100px;background:var(--paper-2);flex:none}

.tl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:16px}
.tl-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:.3s var(--ease);cursor:pointer;position:relative;display:flex;flex-direction:column}
.tl-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.tl-card .img{height:130px;background:var(--paper-2);position:relative;overflow:hidden}
.tl-card .img .em{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink-faint)}
.tl-card .img .em svg{width:28px;height:28px}
.tl-card .img .ph{transform:scale(1.12)}
.tl-badge{position:absolute;top:9px;left:9px;z-index:2;height:21px;padding:0 9px;border-radius:100px;font-size:10.5px;font-weight:600;display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.92)}
.tl-badge.ai{color:#8A5F2B}
.tl-badge.oral{color:var(--jade)}
.tl-pin{position:absolute;top:9px;right:9px;z-index:2;width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.92);display:grid;place-items:center;color:var(--amber)}
.tl-pin svg{width:13px;height:13px}
.tl-cap{padding:13px 15px;flex:1;display:flex;flex-direction:column}
.tl-cap h4{font-size:14px;font-weight:600;line-height:1.55;margin-bottom:5px}
.tl-cap p{font-size:11.5px;color:var(--ink-faint);line-height:1.7}
.tl-faces{display:flex;align-items:center;gap:5px;margin-top:11px;padding-top:11px;border-top:1px dashed var(--line)}
.tl-faces i{width:20px;height:20px;border-radius:50%;background:var(--paper-2);border:1.5px solid #fff;display:block;font-size:9px;font-style:normal;color:var(--ink-soft);text-align:center;line-height:17px;font-weight:600}
.tl-faces span{font-size:10.5px;color:var(--ink-faint);margin-left:3px}
.tl-oral{margin-top:11px;padding:10px 12px;background:var(--jade-soft);border-radius:var(--r-sm);border-left:2px solid var(--jade)}
.tl-oral b{display:block;font-size:11.5px;color:var(--jade);font-weight:600}
.tl-oral span{display:block;font-size:11px;color:var(--ink-soft);margin-top:3px;line-height:1.65;font-family:var(--serif)}

.person-row{display:flex;align-items:center;gap:14px;padding:14px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);margin-bottom:10px;transition:.25s}
.person-row:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm)}
.person-row .pa{width:46px;height:46px;border-radius:50%;overflow:hidden;background:var(--paper-2);flex:none;display:grid;place-items:center;font-family:var(--serif);font-size:17px;font-weight:600;color:#fff}
.person-row .pm{flex:1;min-width:0}
.person-row .pm b{display:block;font-size:14px;font-weight:600}
.person-row .pm span{font-size:11.5px;color:var(--ink-faint)}
.person-row .pq{text-align:right;flex:none}
.person-row .pq b{font-family:var(--serif);font-size:19px;font-weight:500;display:block;color:var(--jade)}
.person-row .pq span{font-size:10.5px;color:var(--ink-faint)}

/* ============ 家庭资产卡包 ============ */
.wallet-hero{background:linear-gradient(150deg,#2E3629,#1F2620);border-radius:var(--r-lg);padding:26px 28px;color:#EFF5EE;display:flex;gap:30px;align-items:center;flex-wrap:wrap;margin-bottom:18px;position:relative;overflow:hidden}
.wallet-hero::after{content:"";position:absolute;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(216,178,126,.2),transparent 70%);top:-170px;right:-100px}
.wallet-l{flex:1;min-width:260px;position:relative;z-index:2}
.wallet-l .lb{font-size:11.5px;letter-spacing:.16em;color:var(--amber-2);display:inline-flex;align-items:center;gap:7px}
.wallet-l h2{font-family:var(--serif);font-size:23px;font-weight:500;margin-top:11px;line-height:1.5}
.wallet-l p{font-size:13px;color:rgba(239,245,238,.62);margin-top:8px;line-height:1.8;max-width:32em}
.wallet-st{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(239,245,238,.14);border-radius:var(--r-md);overflow:hidden;flex:none;position:relative;z-index:2}
.wallet-st div{background:#25302A;padding:14px 18px;text-align:center}
.wallet-st b{font-family:var(--serif);font-size:24px;font-weight:500;display:block;line-height:1}
.wallet-st span{font-size:10.5px;color:rgba(239,245,238,.6);display:block;margin-top:4px}
.wallet-st .warn b{color:var(--amber-2)}
.wallet-st .bad b{color:#E89A8C}

.filters2{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.status-f{display:flex;gap:13px;font-size:11.5px;flex-wrap:wrap}
.sf{display:inline-flex;align-items:center;gap:5px;color:var(--ink-faint)}
.sf i{width:7px;height:7px;border-radius:50%;flex:none}

.wcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:15px}
.wcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;transition:.3s var(--ease);cursor:pointer;position:relative;display:flex;flex-direction:column;box-shadow:var(--shadow-sm)}
.wcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.wcard::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;z-index:2}
.wcard.st-active::before{background:linear-gradient(90deg,#7FB08F,#4E7A64)}
.wcard.st-warn::before{background:linear-gradient(90deg,#E7CBA0,#BA7517)}
.wcard.st-expired::before{background:linear-gradient(90deg,#D98878,#9C3B2E)}
.wcard.st-pending::before{background:linear-gradient(90deg,#9AB8CC,#3D6E8F)}
.wc-top{display:flex;align-items:flex-start;gap:10px;padding:15px 15px 12px}
.wc-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none}
.wc-ic svg{width:18px;height:18px}
.wc-ic.amber{background:var(--amber-soft);color:#8A5F2B}
.wc-ic.jade{background:var(--jade-soft);color:var(--jade)}
.wc-ic.blue{background:#E4EDF3;color:#3D6E8F}
.wc-ic.red{background:var(--red-soft);color:var(--red)}
.wc-hd{flex:1;min-width:0}
.wc-hd h4{font-size:13.5px;font-weight:600;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wc-hd .sub{font-size:11px;color:var(--ink-faint);margin-top:2px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.st-chip{display:inline-flex;align-items:center;gap:4px;height:18px;padding:0 7px;border-radius:100px;font-size:10px;font-weight:600;flex:none}
.st-chip.active{background:var(--jade-soft);color:var(--jade)}
.st-chip.warn{background:var(--amber-soft);color:#8A5F2B}
.st-chip.expired{background:var(--red-soft);color:var(--red)}
.st-chip.pending{background:#E4EDF3;color:#3D6E8F}
.wc-amt{padding:0 15px 12px}
.wc-amt .n{font-family:var(--serif);font-size:23px;font-weight:500;line-height:1}
.wc-amt .n span{font-size:11px;font-family:var(--sans);color:var(--ink-faint)}
.wc-amt .l{font-size:10.5px;color:var(--ink-faint);margin-top:3px}
.wc-meta{padding:0 15px 12px;flex:1}
.wc-meta .row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:11.5px}
.wc-meta .row .sp{margin-left:auto;color:var(--ink-2);font-weight:600;text-align:right}
.wc-bar{padding:0 15px 13px}
.wc-bar .t{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--ink-faint);margin-bottom:5px}
.wc-bar .t .sp{margin-left:auto;font-weight:600}
.wc-bar .b{height:4px;border-radius:100px;background:rgba(27,23,18,.08);overflow:hidden}
.wc-bar .b i{display:block;height:100%;border-radius:100px}
.wc-bar .b i.active{background:linear-gradient(90deg,#7FB08F,#4E7A64)}
.wc-bar .b i.warn{background:linear-gradient(90deg,#EF9F27,#BA7517)}
.wc-bar .b i.expired{background:linear-gradient(90deg,#E24B4A,#9C3B2E)}
.wc-foot{padding:10px 15px;border-top:1px dashed var(--line);display:flex;align-items:center;gap:8px}
.wc-foot span{font-size:10.5px;color:var(--ink-faint)}
.wc-foot .sp{margin-left:auto}
.cbtn{height:27px;padding:0 10px;border-radius:100px;font-size:11px;font-weight:600;border:1px solid var(--line);background:var(--surface);display:inline-flex;align-items:center;gap:4px;transition:.2s}
.cbtn:hover{border-color:var(--ink)}
.cbtn svg{width:11px;height:11px}
.cbtn.pri{background:var(--ink);color:#F7F0E5;border-color:var(--ink)}

/* 识别置信度 */
.conf-note{display:flex;align-items:flex-start;gap:11px;padding:14px 16px;background:#E4EDF3;border:1px solid rgba(61,110,143,.2);border-radius:var(--r-md);margin-bottom:16px}
.conf-note svg{width:16px;height:16px;color:#3D6E8F;flex:none;margin-top:2px}
.conf-note b{display:block;font-size:12.5px;font-weight:600;color:#3D6E8F;margin-bottom:3px}
.conf-note p{font-size:12px;color:var(--ink-soft);line-height:1.75}
.conf-bar{padding:14px 16px;border-radius:var(--r-md);background:var(--paper-2);border:1px solid var(--line);margin-bottom:16px}
.conf-bar .ct{display:flex;align-items:center;gap:10px;font-size:12px;margin-bottom:8px}
.conf-bar .ct .sp{margin-left:auto;font-weight:600}
.conf-bar .cb{height:6px;border-radius:100px;background:rgba(27,23,18,.08);overflow:hidden;display:flex}
.conf-bar .cb i{display:block;height:100%}
.conf-legend{display:flex;gap:16px;margin-top:10px;flex-wrap:wrap;font-size:11px;color:var(--ink-faint)}
.conf-legend span{display:inline-flex;align-items:center;gap:5px}
.conf-legend i{width:9px;height:9px;border-radius:3px}
.ai-warn{display:flex;gap:9px;padding:10px 12px;background:var(--red-soft);border-radius:var(--r-sm);border-left:2px solid var(--red);margin:0 15px 12px}
.ai-warn svg{width:14px;height:14px;color:var(--red);flex:none;margin-top:2px}
.ai-warn p{font-size:11.5px;color:var(--red);line-height:1.65}

/* 到期时间轴 */
.tlx{position:relative;padding-left:26px}
.tlx::before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:2px;background:var(--line)}
.tlx-i{position:relative;padding-bottom:20px}
.tlx-i:last-child{padding-bottom:0}
.tlx-i::before{content:"";position:absolute;left:-24px;top:5px;width:11px;height:11px;border-radius:50%;background:var(--surface);border:2px solid var(--line-strong)}
.tlx-i.urgent::before{border-color:var(--red);background:var(--red-soft)}
.tlx-i.soon::before{border-color:var(--amber);background:var(--amber-soft)}
.tlx-i.done::before{border-color:var(--jade);background:var(--jade-soft)}
.tlx-d{font-size:11px;color:var(--ink-faint)}
.tlx-t{font-size:14px;font-weight:600;margin-top:2px}
.tlx-s{font-size:12px;color:var(--ink-soft);margin-top:4px;line-height:1.7}
.tlx-c{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:600;padding:2px 9px;border-radius:100px;margin-top:6px}
.tlx-c.urgent{background:var(--red-soft);color:var(--red)}
.tlx-c.soon{background:var(--amber-soft);color:#8A5F2B}
.tlx-c.done{background:var(--jade-soft);color:var(--jade)}

/* 应急理赔 */
.sos-box{background:linear-gradient(150deg,#3A2620,#241A16);border-radius:var(--r-lg);padding:26px 28px;color:#F5EAE4;display:flex;gap:30px;flex-wrap:wrap;position:relative;overflow:hidden}
.sos-box::after{content:"";position:absolute;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(216,140,126,.16),transparent 70%);top:-150px;right:-90px}
.sos-l{flex:1;min-width:260px;position:relative;z-index:2}
.sos-l .lb{font-size:11.5px;letter-spacing:.16em;color:#E8A99C;display:inline-flex;align-items:center;gap:7px}
.sos-l h2{font-family:var(--serif);font-size:22px;font-weight:500;margin-top:11px;line-height:1.5}
.sos-l p{font-size:12.5px;color:rgba(245,234,228,.66);margin-top:9px;line-height:1.8;max-width:30em}
.sos-steps{margin-top:18px;display:grid;gap:9px}
.sos-step{display:flex;align-items:flex-start;gap:11px;padding:12px 14px;background:rgba(255,255,255,.06);border-radius:var(--r-sm);border:1px solid rgba(255,255,255,.09)}
.sos-step .sn{width:22px;height:22px;border-radius:50%;background:#E8A99C;color:#241A16;font-size:11px;font-weight:700;display:grid;place-items:center;flex:none}
.sos-step b{display:block;font-size:12.5px;font-weight:600}
.sos-step span{display:block;font-size:11px;color:rgba(245,234,228,.62);margin-top:2px;line-height:1.7}
.sos-panel{margin-top:18px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.11);border-radius:var(--r-md);padding:18px;max-width:380px;position:relative;z-index:2}
.sos-panel .sh{font-size:10.5px;letter-spacing:.14em;color:rgba(245,234,228,.5);text-transform:uppercase;margin-bottom:12px}
.sos-line{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:12px}
.sos-line:last-of-type{border-bottom:0}
.sos-line svg{width:14px;height:14px;flex:none;color:#E8A99C}
.sos-line .sp{margin-left:auto;font-weight:600;text-align:right}
.sos-total{margin-top:14px;padding-top:13px;border-top:1px solid rgba(255,255,255,.1)}
.sos-total .l{font-size:10.5px;letter-spacing:.12em;color:rgba(245,234,228,.5);text-transform:uppercase;margin-bottom:6px}
.sos-total .n{font-family:var(--serif);font-size:28px}
.sos-total .n span{font-size:13px;opacity:.7}
.sos-cta{margin-top:15px;display:flex;gap:9px;flex-wrap:wrap}
.btn-sos{height:40px;padding:0 17px;border-radius:100px;background:#E8A99C;color:#241A16;font-size:13px;font-weight:700;display:inline-flex;align-items:center;gap:7px;transition:.25s}
.btn-sos:hover{transform:translateY(-1px)}
.btn-sos svg{width:15px;height:15px}
.btn-sos.ghost{background:transparent;border:1px solid rgba(255,255,255,.22);color:#F5EAE4;font-weight:500}

/* 抽屉内保单块 */
.dr-sos{margin-top:16px;padding:16px 18px;background:var(--red-soft);border:1px solid rgba(156,59,46,.2);border-radius:var(--r-md)}
.dr-sos b{display:block;font-size:12.5px;color:var(--red);margin-bottom:8px}
.dr-sos ol{margin-left:17px;font-size:12px;color:var(--ink-2);line-height:1.9}
.dr-sos li strong{color:var(--ink);font-weight:600}
.dr-grid .low b{color:var(--red)}
.dr-grid .low::after{content:"待核对";font-size:9.5px;color:var(--red);background:var(--red-soft);padding:1px 6px;border-radius:100px;margin-left:6px}

/* Toast */
.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#F7F0E5;padding:11px 20px;border-radius:100px;font-size:13px;display:flex;align-items:center;gap:9px;box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:.4s var(--ease);z-index:400}
.toast.show{opacity:1;transform:translateX(-50%)}
.toast svg{width:15px;height:15px;color:#8FBF9E}

@media (max-width:1080px){
  .stats,.ov-grid{grid-template-columns:1fr 1fr}
  .mgrid,.moments,.inh-grid{grid-template-columns:1fr 1fr}
  .regions{grid-template-columns:repeat(2,1fr)}
  .dev-grid{grid-template-columns:repeat(2,1fr)}
  .plans{grid-template-columns:1fr}
  .auth-wrap{grid-template-columns:1fr}
  .auth-l{display:none}
  .wallet-st{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:820px){
  .side{display:none}
  .main{left:0}
  .stats,.ov-grid,.mgrid,.moments,.inh-grid,.regions,.cap-grid,.prompts,.dev-grid,.plans{grid-template-columns:1fr}
  .search{width:180px}
  .search kbd{display:none}
  .rep-hero{gap:20px}
  .diss-steps{flex-wrap:wrap;gap:14px}
  .ds{flex:1 1 40%}
  .auth-r{padding:40px 26px}
  .auth-wrap{margin:-26px -30px -60px}
  .wallet-hero,.sos-box{padding:22px 20px}
  .wcards{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.01ms!important}
}

/* ============ 深色模式 ============ */
[data-theme="dark"]{
  --paper:#151311; --paper-2:#201C18;
  --ink:#EFE7DC; --ink-2:#D9D0C5; --ink-soft:#A79C90; --ink-faint:#7C7267;
  --line:rgba(239,231,220,.12); --line-strong:rgba(239,231,220,.22);
  --amber:#D8B27E; --amber-2:#E7CBA0; --amber-soft:#3B2E1F;
  --jade:#7FB08F; --jade-soft:#1D2C25;
  --surface:#201C18;
  --shadow-sm:0 1px 2px rgba(0,0,0,.30), 0 4px 14px rgba(0,0,0,.28);
  --shadow-md:0 2px 6px rgba(0,0,0,.32), 0 18px 44px -12px rgba(0,0,0,.5);
}
[data-theme="dark"] .grain{opacity:.16;mix-blend-mode:screen}
[data-theme="dark"] .top{background:rgba(21,19,17,.88)}
[data-theme="dark"] .side{background:linear-gradient(180deg,#1A1714,#151311)}
[data-theme="dark"] footer{background:#191614}
[data-theme="dark"] .tabs,[data-theme="dark"] .seg{background:rgba(239,231,220,.06)}
[data-theme="dark"] .frow:hover{background:rgba(239,231,220,.04)}
[data-theme="dark"] .lk-chip{background:rgba(239,231,220,.08);color:var(--ink-soft)}
[data-theme="dark"] .vis.self{background:rgba(239,231,220,.08);color:var(--ink-soft)}
[data-theme="dark"] .op:hover,[data-theme="dark"] .icon-btn:hover,[data-theme="dark"] .theme-btn:hover{background:rgba(239,231,220,.08)}
[data-theme="dark"] .ck{border-color:rgba(239,231,220,.28)}
[data-theme="dark"] .ck.on{color:#151311}
[data-theme="dark"] .gtile .star{background:rgba(32,28,24,.9)}
[data-theme="dark"] .banner{background:linear-gradient(120deg,rgba(216,178,126,.16),rgba(127,176,143,.10));border-color:rgba(216,178,126,.28)}
[data-theme="dark"] .export-row,[data-theme="dark"] .rep-advice{background:linear-gradient(120deg,rgba(216,178,126,.14),rgba(127,176,143,.08));border-color:rgba(216,178,126,.26)}
[data-theme="dark"] .cap{background:linear-gradient(160deg,#262019,#1D1913);border-color:rgba(216,178,126,.3)}
[data-theme="dark"] .toast{background:#2E2823;color:#EFE7DC}
[data-theme="dark"] .empty svg{color:rgba(239,231,220,.22)}
[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea{color:var(--ink)}
[data-theme="dark"] .search{background:var(--surface)}
[data-theme="dark"] .dr-panel{background:#1A1714}
[data-theme="dark"] .fab-panel{background:#201C18}
[data-theme="dark"] .fp-body{background:linear-gradient(180deg,#1C1916,#181512)}
[data-theme="dark"] .fp-top{background:linear-gradient(160deg,#221D18,#1C1916)}
[data-theme="dark"] .stat.dark .mini-bar .bar{background:rgba(255,255,255,.14)}
[data-theme="dark"] .guard-mini{background:#1D2C25}
[data-theme="dark"] .side-item.active{box-shadow:var(--shadow-sm)}
[data-theme="dark"] .fld input{background:var(--surface)}
[data-theme="dark"] .tgl::after{background:#EFE7DC}
[data-theme="dark"] .tgl.on::after{background:#fff}
[data-theme="dark"] .dev .dbar i{background:rgba(239,231,220,.12)}
[data-theme="dark"] .dev.on .dbar i{background:linear-gradient(90deg,#7FB08F,#0F6E56)}
[data-theme="dark"] .dev.wait .dbar i{background:linear-gradient(90deg,#E7CBA0,#BA7517)}
[data-theme="dark"] .q-item .qi.err{background:#3A211C;color:#F09595}
[data-theme="dark"] .q-item .qs.err{background:#3A211C;color:#F09595}
[data-theme="dark"] .risk-h .ri{background:#3A211C;color:#F09595}
[data-theme="dark"] .warn-note{background:#3A211C;border-color:rgba(240,149,149,.28);color:#F09595}
[data-theme="dark"] .confirm-box{background:#2E1C18;border-color:rgba(240,149,149,.32)}
[data-theme="dark"] .confirm-box p{color:#F09595}
[data-theme="dark"] .confirm-row input{background:var(--surface)}
[data-theme="dark"] .invite-box{background:#332617;border-color:rgba(216,178,126,.4)}
[data-theme="dark"] .invite-box .t,[data-theme="dark"] .invite-box p{color:var(--amber-2)}
[data-theme="dark"] .diss-preview{background:var(--paper-2)}
[data-theme="dark"] .danger-btn{background:linear-gradient(135deg,#8E2A21,#631912)}
[data-theme="dark"] .wc-ic.blue{background:#1E2A33;color:#85B4D6}
[data-theme="dark"] .st-chip.pending{background:#1E2A33;color:#85B4D6}
[data-theme="dark"] .conf-note{background:#1E2A33;border-color:rgba(133,180,214,.24)}
[data-theme="dark"] .conf-note b{color:#85B4D6}
[data-theme="dark"] .ai-warn{background:#3A211C}
[data-theme="dark"] .dr-sos{background:#2E1C18;border-color:rgba(240,149,149,.24)}
[data-theme="dark"] .dr-sos b{color:#F09595}
[data-theme="dark"] .wallet-st .bad b{color:#F09595}

/* ===== 重做首页：AI 记忆管家主页 ===== */
.ov-actions{display:flex;gap:10px;flex-wrap:wrap}
.ov-status{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-soft);margin-bottom:12px;flex-wrap:wrap}
.ov-status .ov-dot{width:7px;height:7px;border-radius:50%;background:var(--jade);box-shadow:0 0 0 3px rgba(78,122,100,.16)}
.ov-status b{color:var(--ink);font-weight:600}
.ov-status .ov-ok{color:#2f6b51;font-weight:600}
.ov-status .ov-sep{color:var(--ink-faint)}

.ov-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:6px 0 26px}
.ov-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;display:flex;flex-direction:column;min-height:160px;transition:.25s}
.ov-stat:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}
.ov-stat.ai{background:linear-gradient(160deg,#FBF4EA,#F4EADC);border-color:rgba(184,135,76,.28)}
.ov-stat-lb{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-faint);font-weight:600;letter-spacing:.02em}
.ov-stat-lb svg{width:17px;height:17px;color:var(--amber)}
.ov-stat-num{font-family:var(--serif);font-size:30px;font-weight:500;line-height:1.15;margin-top:14px;color:var(--ink)}
.ov-stat-num span{font-family:var(--sans);font-size:13px;font-weight:400;color:var(--ink-faint);margin-left:4px}
.ov-stat-sub{font-size:12px;color:var(--ink-faint);margin-top:6px;line-height:1.5}
.ov-stat-foot{margin-top:auto;padding-top:12px;display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ink-soft);font-weight:600;border-top:1px solid var(--line)}
.ov-stat-foot .d{width:7px;height:7px;border-radius:50%;background:var(--jade)}
.ov-stat-foot.ai{color:#9A6A2E;border-color:rgba(184,135,76,.25)}
.ov-stat-foot.ai .d{background:var(--amber);animation:pulse 1.6s infinite}
.ov-stat-foot.ok{color:#2f6b51;border-color:rgba(78,122,100,.2)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

.ov-ai{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px 26px;margin-bottom:30px;position:relative;overflow:hidden}
.ov-ai::before{content:"";position:absolute;top:-60px;right:-40px;width:280px;height:280px;background:radial-gradient(circle,rgba(184,135,76,.10),transparent 70%);pointer-events:none}
.ov-ai-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;position:relative}
.ov-ai-id{display:flex;gap:14px;align-items:center}
.ov-ai-orb{width:46px;height:46px;border-radius:14px;flex:none;display:grid;place-items:center;color:#fff;background:linear-gradient(150deg,#C89B62,#8E6237);box-shadow:0 6px 18px rgba(142,98,55,.32)}
.ov-ai-orb svg{width:25px;height:25px}
.ov-ai-title{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:19px;font-weight:500;color:var(--ink)}
.ov-ai-badge{font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.08em;color:var(--amber);background:var(--amber-soft);padding:2px 8px;border-radius:100px}
.ov-ai-id p{font-size:12.5px;color:var(--ink-faint);margin-top:5px;max-width:46em;line-height:1.6}
.ov-ai-tools{display:flex;gap:10px;flex:none}
.ov-ai-search{display:flex;align-items:center;gap:12px;margin-top:20px;background:var(--paper-2);border:1px solid var(--line);border-radius:14px;padding:6px 6px 6px 16px;transition:.25s}
.ov-ai-search:focus-within{border-color:var(--amber);box-shadow:0 0 0 3px rgba(184,135,76,.12);background:var(--surface)}
.ov-ai-search svg{width:21px;height:21px;color:var(--amber);flex:none}
.ov-ai-search input{flex:1;border:0;outline:0;background:none;font-size:14px;font-family:inherit;color:var(--ink);min-width:0}
.ov-ai-search input::placeholder{color:var(--ink-faint)}
.ov-ai-tags{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
.ov-tag-lb{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-weight:600}
.ov-tag{font-size:12.5px;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--line);padding:5px 12px;border-radius:100px;cursor:pointer;transition:.2s}
.ov-tag:hover{background:var(--amber-soft);border-color:rgba(184,135,76,.3);color:#8A5F2B}
.ov-ai-caps{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}
.ov-cap{display:flex;flex-direction:column;gap:12px;background:var(--paper-2);border:1px solid var(--line);border-radius:14px;padding:16px}
.ov-cap-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--amber-soft);color:var(--amber);flex:none}
.ov-cap-ic.ok{background:var(--jade-soft);color:var(--jade)}
.ov-cap-ic svg{width:19px;height:19px}
.ov-cap-body{flex:1}
.ov-cap-h{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--ink)}
.ov-cap-tag{font-size:10.5px;font-weight:600;color:var(--amber);background:var(--amber-soft);padding:2px 8px;border-radius:100px}
.ov-cap-tag.ok{color:var(--jade);background:var(--jade-soft)}
.ov-cap-body p{font-size:12.5px;color:var(--ink-soft);margin-top:6px;line-height:1.6}
.ov-cap-actions{display:flex;align-items:center;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.ov-cap-hash{font-size:11px;color:var(--ink-faint);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-right:auto}

.ov-section{margin-bottom:30px}
.ov-sec-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:16px;flex-wrap:wrap}
.ov-sec-head h2{font-family:var(--serif);font-size:21px;font-weight:500;color:var(--ink)}
.ov-sec-head p{font-size:12.5px;color:var(--ink-faint);margin-bottom:2px}
.ov-sec-head .sp{margin-left:auto}

.ov-mem-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.ov-mem{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;display:flex;flex-direction:column;transition:.25s}
.ov-mem:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}
.ov-mem .ph{position:relative;height:160px;border-radius:12px;overflow:hidden;margin-bottom:14px}
.ov-mem .ph.m-photo{background:linear-gradient(135deg,#e9d6bd,#c6a173)}
.ov-mem .ph.m-audio{background:linear-gradient(135deg,#cdd9d2,#84a994)}
.ov-mem .ph.m-capsule{background:linear-gradient(135deg,#e7d2b3,#b8945f)}
.ov-mem .ph .badge{position:absolute;top:10px;left:10px;display:inline-flex;align-items:center;gap:6px;background:rgba(27,23,18,.78);color:#cfe9d8;font-size:10.5px;font-weight:600;letter-spacing:.02em;padding:4px 10px;border-radius:100px;backdrop-filter:blur(4px)}
.ov-mem .ph .badge svg{width:13px;height:13px}
.ov-mem .ph .spec{position:absolute;bottom:10px;right:10px;background:rgba(27,23,18,.78);color:#fff;font-size:10.5px;padding:3px 8px;border-radius:8px;backdrop-filter:blur(4px)}
.ov-mem .meta{font-size:11px;color:var(--ink-faint);display:flex;justify-content:space-between;gap:8px;margin-bottom:6px}
.ov-mem h3{font-family:var(--serif);font-size:16px;font-weight:500;color:var(--ink);line-height:1.35}
.ov-mem p{font-size:12px;color:var(--ink-soft);margin-top:8px;line-height:1.65}
.ov-mem .foot{margin-top:12px;padding-top:11px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px}
.ov-mem .foot .av{display:flex}
.ov-mem .foot .av span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:10px;color:#fff;margin-left:-6px;border:2px solid var(--surface)}
.ov-mem .foot .av span:first-child{margin-left:0}
.ov-mem .foot a{font-size:12.5px;color:var(--amber);font-weight:600;display:inline-flex;align-items:center;gap:3px}
.ov-mem .foot a svg{width:13px;height:13px}

.ov-pillar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.ov-pillar{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;display:flex;flex-direction:column;transition:.25s}
.ov-pillar:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}
.ov-pillar .pic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:var(--paper-2);color:var(--amber);margin-bottom:14px;transition:.25s}
.ov-pillar:hover .pic{background:var(--amber);color:#fff}
.ov-pillar .pic svg{width:24px;height:24px}
.ov-pillar h3{font-family:var(--serif);font-size:17px;font-weight:500;color:var(--ink);line-height:1.3}
.ov-pillar p{font-size:12px;color:var(--ink-soft);margin-top:8px;line-height:1.6;flex:1}
.ov-pillar .pfoot{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.ov-pillar .prow{display:flex;align-items:center;justify-content:space-between;font-size:12px}
.ov-pillar .prow .k{color:var(--ink-faint)}
.ov-pillar .prow .v{font-weight:600;color:var(--ink);font-family:var(--serif);font-size:14px}
.ov-pillar .prow .s{display:inline-flex;align-items:center;gap:6px;color:#2f6b51;font-weight:600}
.ov-pillar .prow .s.amber{color:#9A6A2E}
.ov-pillar .prow .s .d{width:7px;height:7px;border-radius:50%;background:var(--jade)}
.ov-pillar .prow .s.amber .d{background:var(--amber)}

.ov-inherit{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px 26px}
.ov-inherit-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-bottom:18px;border-bottom:1px solid var(--line)}
.ov-inherit-top h3{font-family:var(--serif);font-size:19px;font-weight:500;color:var(--ink);display:flex;align-items:center;gap:9px}
.ov-inherit-top p{font-size:12.5px;color:var(--ink-faint);margin-top:5px;max-width:42em}
.ov-inherit-probe{display:flex;align-items:center;gap:11px;background:var(--paper-2);padding:10px 14px;border-radius:12px;flex:none}
.ov-inherit-probe svg{width:21px;height:21px;color:var(--amber)}
.ov-inherit-probe .t{font-size:12px;font-weight:600;color:var(--ink)}
.ov-inherit-probe .s{font-size:11px;color:var(--ink-faint)}
.ov-personas{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}
.ov-persona{background:var(--paper-2);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px}
.ov-persona .ph-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ov-persona .av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:15px;font-weight:600;background:var(--amber)}
.ov-persona .av.j{background:var(--jade)}
.ov-persona .av.k{background:var(--ink-2)}
.ov-persona .av.ka{background:#9A7B53}
.ov-persona .ptag{font-size:10px;font-weight:700;letter-spacing:.06em;padding:3px 9px;border-radius:100px;white-space:nowrap}
.ov-persona .ptag.amber{background:var(--amber-soft);color:#8A5F2B}
.ov-persona .ptag.jade{background:var(--jade-soft);color:#2f6b51}
.ov-persona .ptag.ink{background:var(--surface);color:var(--ink-soft);border:1px solid var(--line)}
.ov-persona .pn{font-size:14px;font-weight:600;color:var(--ink)}
.ov-persona .pr{font-size:11.5px;color:var(--ink-faint)}
.ov-persona .pinfo{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:6px}
.ov-persona .pinfo .row{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;gap:8px}
.ov-persona .pinfo .row .k{color:var(--ink-faint)}
.ov-persona .pinfo .row .v{color:var(--ink);font-weight:500;text-align:right}
.ov-emergency{margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:var(--paper-2);border-radius:12px;padding:14px 16px}
.ov-emergency .e-l{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-soft)}
.ov-emergency .e-l svg{width:19px;height:19px;color:var(--amber);flex:none}
.ov-emergency .e-l b{color:var(--ink);font-weight:600}
.ov-emergency a{font-size:12.5px;color:var(--amber);font-weight:600;display:inline-flex;align-items:center;gap:4px;flex:none}
.ov-emergency a svg{width:14px;height:14px}

@media(max-width:1080px){
  .ov-stats{grid-template-columns:repeat(2,1fr)}
  .ov-ai-caps{grid-template-columns:1fr}
  .ov-mem-grid{grid-template-columns:1fr}
  .ov-pillar-grid{grid-template-columns:repeat(2,1fr)}
  .ov-personas{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:560px){
  .ov-stats{grid-template-columns:1fr}
  .ov-pillar-grid{grid-template-columns:1fr}
  .ov-personas{grid-template-columns:1fr}
}

/* ============ 账户菜单（顶栏头像下拉）============
   挂在 .top-acts 内，top-acts 是 flex 容器，
   这里用 absolute 相对 .me-wrap 定位，不影响顶栏原有布局。 */
.me-wrap{position:relative;flex:none}
.me-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:300;min-width:216px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:0 16px 44px -12px rgba(27,23,18,.24);overflow:hidden;
  animation:bpPop .18s var(--ease) forwards}
.me-menu[hidden]{display:none}
.me-menu-hd{padding:12px 14px}
.me-menu-hd b{display:block;font-size:13.5px;color:var(--ink);font-weight:600}
.me-menu-hd span{display:block;font-size:11.5px;color:var(--ink-faint);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me-menu-sep{height:1px;background:var(--line)}
.me-menu-it{display:flex;align-items:center;gap:9px;width:100%;padding:10px 14px;
  font-size:13px;color:var(--ink-2);background:none;border:0;cursor:pointer;
  font-family:inherit;text-align:left;transition:background .16s}
.me-menu-it:hover{background:var(--surface);color:var(--ink)}
.me-menu-it .ic{width:16px;height:16px;color:var(--ink-soft);flex:none}
.me-menu-it:hover .ic{color:var(--amber)}
/* 退出登录是危险动作，用红色与其它项区分 */
.me-menu-it.danger:hover{background:var(--red-soft);color:var(--red)}
.me-menu-it.danger .ic{color:var(--red)}

/* ============ 通用弹窗（bp- 前缀，注入 body，全局定位）============
   .main 是 position:fixed 且内部有 transform 过渡，若弹窗挂在 .main 里
   会被牵连定位，因此统一挂在 body 上自成一套，不复用 .dr-* 抽屉体系。 */
/* 注意：遮罩动画必须带 forwards（fill-mode）。
   否则元素在动画首帧按 opacity:0 渲染，会出现遮罩「没生效」的闪烁窗口
   （实测：低帧率/虚拟时间下截图能直接抓到 opacity:0 那一帧）。 */
.bp-mask{position:fixed;inset:0;z-index:800;background:rgba(27,23,18,.34);
  backdrop-filter:blur(3px);display:grid;place-items:center;padding:20px;opacity:1;
  animation:bpFade .22s var(--ease) forwards}
@keyframes bpFade{from{opacity:0}to{opacity:1}}
.bp-dlg{width:100%;max-width:400px;background:var(--paper);border-radius:var(--r-lg);
  box-shadow:0 24px 70px -18px rgba(27,23,18,.42);overflow:hidden;
  animation:bpPop .26s var(--ease) forwards}
@keyframes bpPop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.bp-dlg-hd{display:flex;align-items:center;gap:10px;padding:17px 20px;
  border-bottom:1px solid var(--line);background:var(--surface)}
.bp-dlg-hd b{font-size:15px;font-weight:600}
.bp-dlg-x{margin-left:auto;width:30px;height:30px;border-radius:50%;display:grid;
  place-items:center;background:rgba(27,23,18,.05);color:var(--ink-soft);transition:.2s;
  font-size:20px;line-height:1}
.bp-dlg-x:hover{background:rgba(27,23,18,.1);color:var(--ink)}
.bp-dlg-bd{padding:20px}
.bp-fld{display:block}
.bp-fld span{display:block;font-size:12px;color:var(--ink-faint);margin-bottom:7px}
.bp-fld input{width:100%;height:40px;padding:0 13px;border-radius:var(--r-sm);
  border:1px solid var(--line-strong);background:var(--surface);font-family:inherit;
  font-size:14px;color:var(--ink);outline:none;transition:.2s}
.bp-fld input:focus{border-color:var(--amber);
  box-shadow:0 0 0 3px rgba(184,135,76,.16)}
.bp-fld input::placeholder{color:var(--ink-faint)}
.bp-tip{font-size:11.5px;color:var(--ink-faint);margin-top:10px}
.bp-dlg-ft{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;
  border-top:1px solid var(--line);background:var(--surface)}

/* ============ 条目操作菜单（重命名 / 移动到 / 删除）============ */
.bp-dlg-menu{max-width:380px}
.bp-menu-bd{padding:10px 12px;display:flex;flex-direction:column;gap:3px}
.bp-menu-it{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;
  border-radius:var(--r-sm);font-size:13.5px;color:var(--ink-2);text-align:left;transition:.18s}
.bp-menu-it:hover{background:var(--paper-2);color:var(--ink)}
.bp-menu-it .ic{width:16px;height:16px;color:var(--ink-faint);flex:none}
.bp-menu-it:hover .ic{color:var(--amber)}
.bp-menu-it.danger{color:var(--red)}
.bp-menu-it.danger:hover{background:var(--red-soft)}
.bp-menu-it.danger .ic{color:var(--red)}
.bp-menu-it.danger:hover .ic{color:var(--red)}
.bp-menu-it[disabled],.bp-menu-it.is-off{opacity:.5;cursor:not-allowed}
.bp-menu-tip{margin-left:auto;font-size:10.5px;color:var(--ink-faint);
  background:var(--paper-2);border-radius:100px;padding:2px 8px;white-space:nowrap}
.bp-menu-row{display:flex;align-items:center;gap:10px;padding:8px 12px}
.bp-menu-lb{font-size:12.5px;color:var(--ink-faint);flex:none}
.bp-menu-sel{flex:1;min-width:0;height:34px;padding:0 10px;border-radius:var(--r-sm);
  border:1px solid var(--line-strong);background:var(--surface);font-family:inherit;
  font-size:12.5px;color:var(--ink);outline:none;transition:.2s}
.bp-menu-sel:focus{border-color:var(--amber);box-shadow:0 0 0 3px rgba(184,135,76,.16)}
.bp-menu-sel:disabled{background:var(--paper-2);color:var(--ink-faint);cursor:not-allowed}

/* 网格卡片右上角按钮组：收藏 + 更多 */
.gtile-ops{position:absolute;top:8px;right:8px;z-index:4;display:flex;gap:5px}
.gtile-ops .star{position:static;opacity:0}
.gtile:hover .gtile-ops .star,.gtile-ops .star.on{opacity:1}
.gtile-ops .star:nth-child(2):hover{color:var(--amber);background:#fff}
.gtile.folder .gtile-ops .star{background:rgba(255,255,255,.92)}

/* ---- 悬浮操作条：hover 卡片即浮出，移出即隐藏 ----
   菜单是 .gtile 的子元素（不是 body 浮层），鼠标从卡片移进菜单时 :hover 仍成立，
   不会出现「菜单刚出现就消失」。显隐纯 CSS 控制，JS 只做点击分发。 */
.gtile-hover{position:absolute;inset:auto 6px 6px;z-index:5;display:flex;gap:4px;
  opacity:0;visibility:hidden;transform:translateY(6px);
  transition:opacity .18s var(--ease),transform .18s var(--ease),visibility .18s}
.gtile:hover .gtile-hover,.gtile:focus-within .gtile-hover{opacity:1;visibility:visible;transform:none}
/* 卡片宽度有限，操作项**只显图标** + 悬浮气泡说明。
   早期版本图标+文字并排，在三列网格里被挤成一团糊字（实拍截图确认）。 */
.hb-item{flex:1;min-width:0;height:28px;padding:0;border-radius:var(--r-sm);
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.95);border:1px solid var(--line);
  color:var(--ink-2);transition:.15s;position:relative}
.hb-item .ic{width:15px;height:15px;color:var(--ink-faint)}
.hb-item span{display:none}
.hb-item:hover{background:var(--paper);border-color:var(--amber);color:var(--amber)}
.hb-item:hover .ic{color:var(--amber)}
.hb-item.danger:hover{background:var(--red-soft);border-color:var(--red);color:var(--red)}
.hb-item.danger:hover .ic{color:var(--red)}
.hb-item.is-off{opacity:.42;cursor:not-allowed}
.hb-item.is-off:hover{background:rgba(255,255,255,.95);border-color:var(--line);color:var(--ink-2)}
.hb-item.is-off:hover .ic{color:var(--ink-faint)}
/* 图标太窄，用 ::after 气泡补足语义（悬停才出现，不占布局） */
.hb-item::after{content:attr(title);position:absolute;bottom:calc(100% + 6px);left:50%;
  transform:translateX(-50%);white-space:nowrap;font-size:11px;line-height:1;
  padding:5px 8px;border-radius:var(--r-sm);background:rgba(27,23,18,.88);color:#fff;
  opacity:0;pointer-events:none;transition:.15s;z-index:6}
.hb-item:hover::after{opacity:1}
[data-theme="dark"] .hb-item{background:rgba(32,28,24,.94);border-color:var(--line)}

/* ============ 目录选择器（懒加载真实目录树）============ */
.bp-dlg-dir{max-width:420px}
.bp-dir-bd{padding:8px 12px;max-height:380px;overflow-y:auto}
.bp-dir-tree{min-height:70px}
.bp-dir-row{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:var(--r-sm);
  font-size:13px;color:var(--ink-2);cursor:pointer;transition:.15s}
.bp-dir-row:hover{background:var(--paper-2);color:var(--ink)}
.bp-dir-row.sel{background:var(--amber-soft);color:var(--ink);box-shadow:inset 0 0 0 1px rgba(184,135,76,.3)}
.bp-dir-row.ex{opacity:.5}
.bp-dir-tw{width:18px;height:18px;flex:none;display:grid;place-items:center;color:var(--ink-faint)}
.bp-dir-tw svg{width:12px;height:12px;transform:rotate(-90deg);transition:.22s var(--ease)}
.bp-dir-tw.open svg{transform:rotate(90deg)}
.bp-dir-tw.ph{visibility:hidden}
.bp-dir-ic{width:16px;height:16px;flex:none;color:var(--amber)}
.bp-dir-nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bp-dir-kids{display:block}
.bp-dir-kids .bp-dir-row{margin-top:1px}
.bp-dir-load{padding:8px 10px 8px 46px;font-size:11.5px;color:var(--ink-faint)}

/* ============ 上传浮层 ============ */
.up-mask{position:fixed;inset:0;z-index:820;background:rgba(27,23,18,.34);
  backdrop-filter:blur(3px);display:grid;place-items:center;padding:20px;opacity:1;
  animation:bpFade .22s var(--ease) forwards}
.up-box{width:100%;max-width:460px;background:var(--paper);border-radius:var(--r-lg);
  box-shadow:0 24px 70px -18px rgba(27,23,18,.42);overflow:hidden;
  animation:bpPop .26s var(--ease) forwards}
.up-drop{margin:20px;border:1.5px dashed var(--line-strong);border-radius:var(--r-md);
  padding:38px 20px;text-align:center;cursor:pointer;transition:.25s;background:var(--surface)}
.up-drop:hover,.up-drop.over{border-color:var(--amber);background:var(--amber-soft)}
.up-drop svg{width:34px;height:34px;color:var(--ink-faint);margin-bottom:10px}
.up-drop.over svg{color:var(--amber)}
.up-drop b{display:block;font-size:14.5px;font-weight:600;color:var(--ink-2)}
.up-drop span{display:block;font-size:12px;color:var(--ink-faint);margin-top:5px;line-height:1.6}
.up-list{border-top:1px solid var(--line);max-height:240px;overflow-y:auto;background:var(--surface)}
.up-item{display:flex;align-items:center;gap:11px;padding:11px 20px;border-bottom:1px solid var(--line)}
.up-item:last-child{border-bottom:0}
.up-item .nm{flex:1;min-width:0}
.up-item .nm b{display:block;font-size:13px;font-weight:500;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.up-item .nm span{display:block;font-size:11px;color:var(--ink-faint);margin-top:2px}
.up-bar{height:4px;border-radius:100px;background:rgba(27,23,18,.08);margin-top:6px;overflow:hidden}
.up-bar i{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,var(--amber-2),var(--jade));
  transition:width .3s var(--ease)}
.up-item.done .up-bar i{background:var(--jade)}
.up-item.err .up-bar{background:rgba(156,59,46,.16)}
.up-item.err .up-bar i{background:var(--red)}
.up-st{font-size:11.5px;font-weight:600;flex:none;color:var(--ink-faint);white-space:nowrap}
.up-item.done .up-st{color:var(--jade)}
.up-item.err .up-st{color:var(--red)}
.up-ft{display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:14px 20px;border-top:1px solid var(--line);background:var(--surface)}
.up-ft .sum{font-size:12px;color:var(--ink-faint)}
