*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
:root{
--bg:#f2f4f7;--card:#fff;--fg:#17181c;--dim:#787e8a;--line:#e9ebf0;
--ab:#e0333f;--ab-bg:#fdeef0;--po:#0d8a72;--po-bg:#e9f7f2;
--id:#a06b00;--id-bg:#fdf6e3;--acc:#3b5fd9;--acc-bg:#edf1fc;
--r:14px;
--shadow:0 1px 2px rgba(23,26,35,.04),0 2px 8px rgba(23,26,35,.05);
--shadow-lg:0 12px 40px rgba(23,26,35,.18);
--safe-b:env(safe-area-inset-bottom,0px);
}
@media(prefers-color-scheme:dark){:root{
--bg:#0d0f13;--card:#1a1d24;--fg:#e9eaee;--dim:#8d93a0;--line:#272b34;
--ab:#ff5c66;--ab-bg:#2c161a;--po:#3dd6ad;--po-bg:#0e2620;
--id:#e0b341;--id-bg:#272008;--acc:#7f96f2;--acc-bg:#1a2138;
--shadow:0 1px 2px rgba(0,0,0,.25),0 2px 10px rgba(0,0,0,.28);
--shadow-lg:0 14px 44px rgba(0,0,0,.55);
}}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--fg);font:15px/1.55 -apple-system,BlinkMacSystemFont,
"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased;
padding-bottom:calc(28px + var(--safe-b))}
.wrap{max-width:760px;margin:0 auto;padding:0 16px}
.boot{padding:60px 0;text-align:center;color:var(--dim)}

/* 顶栏：毛玻璃 */
.top{position:sticky;top:0;z-index:20;
background:color-mix(in srgb,var(--bg) 78%,transparent);
-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px);
border-bottom:1px solid color-mix(in srgb,var(--line) 62%,transparent);
padding:13px 16px;display:flex;align-items:center;gap:10px}
.top h1{font-size:17px;font-weight:700;letter-spacing:-.3px;flex:1;white-space:nowrap;
overflow:hidden;text-overflow:ellipsis}
.back{background:none;border:none;color:var(--acc);font-size:15px;cursor:pointer;
padding:6px 4px;font-weight:500;flex-shrink:0}

/* 通用 */
h2{font-size:14px;font-weight:700;margin:26px 0 10px;letter-spacing:.2px;color:var(--fg)}
h2 .cnt{display:inline-block;min-width:19px;padding:1.5px 7px;margin-left:7px;background:var(--ab);
color:#fff;border-radius:10px;font-size:11px;font-weight:700;vertical-align:2px}
.note{color:var(--dim);font-size:12.5px;margin:-3px 0 10px;line-height:1.6}
.card{background:var(--card);border-radius:var(--r);padding:15px;margin-bottom:10px;
box-shadow:var(--shadow)}
.row-link{display:flex;align-items:center;gap:12px;cursor:pointer}
.row-link:active{opacity:.55}
.grow{flex:1;min-width:0}
.chev{color:var(--dim);font-size:19px;opacity:.7}
.muted{color:var(--dim);font-size:12.5px}
.pill{display:inline-block;padding:2.5px 9px;border-radius:9px;font-size:11px;font-weight:600;
background:var(--acc-bg);color:var(--acc)}
.pill.warn{background:var(--id-bg);color:var(--id)}
.pill.ab{background:var(--ab-bg);color:var(--ab)}

/* 表单 */
label{display:block;font-size:12.5px;color:var(--dim);margin:12px 0 5px;font-weight:500}
input,select{width:100%;padding:12px 13px;border:1.5px solid var(--line);border-radius:11px;
background:var(--card);color:var(--fg);font-size:16px;transition:border-color .15s}
input:focus,select:focus{outline:none;border-color:var(--acc)}
button.primary{width:100%;padding:14px;border:none;border-radius:12px;
background:linear-gradient(180deg,color-mix(in srgb,var(--acc) 88%,#fff),var(--acc));
color:#fff;font-size:16px;font-weight:600;cursor:pointer;margin-top:16px;
box-shadow:0 2px 10px color-mix(in srgb,var(--acc) 32%,transparent)}
button.primary:active{transform:translateY(1px)}
button.primary:disabled{opacity:.5}
button.ghost{padding:9px 15px;border:1.5px solid var(--line);border-radius:10px;
background:var(--card);color:var(--fg);font-size:14px;cursor:pointer;font-weight:500}
button.ghost:active{background:var(--bg)}
.err{color:var(--ab);font-size:13px;margin-top:10px}
.ok{color:var(--po);font-size:13px;margin-top:10px}

/* 指标行：白卡，状态只落在圆点与数值色上 */
.m{background:var(--card);border-radius:12px;padding:12px 14px;margin-bottom:8px;
box-shadow:var(--shadow)}
.m .nm{font-weight:600;font-size:14px}
.m .nm::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
background:var(--line);margin-right:7px;vertical-align:1.5px}
.m.ab .nm::before{background:var(--ab)}
.m.po .nm::before{background:var(--po)}
.m.id .nm::before,.m.er .nm::before{background:var(--id)}
.m .v{font-size:21px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.4px}
.m.ab .v{color:var(--ab)} .m.po .v{color:var(--po)}
.m .u{font-size:12px;color:var(--dim);margin-left:5px}
.m .rr{font-size:11.5px;color:var(--dim);margin-top:3px;font-variant-numeric:tabular-nums}
.bar{position:relative;height:5px;background:var(--line);border-radius:3px;margin:10px 0 6px}
.bar .okz{position:absolute;top:0;height:5px;background:var(--acc);opacity:.26;border-radius:3px}
.bar .pin{position:absolute;top:-3px;width:3px;height:11px;background:var(--fg);border-radius:2px}
.m.ab .pin{background:var(--ab)}
.tag{font-size:10.5px;padding:1.5px 7px;border-radius:6px;background:var(--id-bg);color:var(--id);
font-weight:600;margin-left:6px}

details{background:var(--card);border-radius:12px;margin-bottom:9px;overflow:hidden;
box-shadow:var(--shadow)}
summary{padding:13px 14px;cursor:pointer;font-weight:600;font-size:14px;display:flex;
align-items:center;list-style:none}
summary::-webkit-details-marker{display:none}
summary::after{content:"›";margin-left:auto;color:var(--dim);font-size:19px;transform:rotate(90deg);
transition:transform .18s}
details[open] summary::after{transform:rotate(-90deg)}
summary i{font-style:normal;color:var(--dim);font-size:12px;margin-left:8px;font-weight:400}
details .in{padding:2px 10px 10px;background:var(--bg)}
details .in .m{box-shadow:none;border:1px solid var(--line)}

/* 上传 / 进度 */
.drop{border:2px dashed var(--line);border-radius:12px;padding:26px 14px;text-align:center;
color:var(--dim);font-size:14px}
.prog{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin:10px 0 6px}
.prog>i{display:block;height:6px;border-radius:3px;transition:width .3s;
background:linear-gradient(90deg,var(--acc),color-mix(in srgb,var(--acc) 60%,#7ec3f2))}

/* 横幅：含未核对项时常驻 */
.banner{background:var(--id-bg);color:var(--id);border-radius:12px;
padding:12px 14px;font-size:13px;line-height:1.6;margin-bottom:12px;box-shadow:var(--shadow)}

/* AI 正文（markdown 渲染后）*/
.ai{font-size:14.5px;line-height:1.75}
.ai p{margin:0 0 9px}
.ai h3{font-size:15.5px;font-weight:700;margin:18px 0 7px;letter-spacing:-.2px}
.ai h4{font-size:14.5px;font-weight:700;margin:14px 0 5px;color:var(--acc)}
.ai h5,.ai h6{font-size:14px;font-weight:600;margin:12px 0 4px}
.ai ul,.ai ol{margin:0 0 10px;padding-left:20px}
.ai li{margin:3px 0}
.ai b{font-weight:700}
.ai code{background:var(--acc-bg);color:var(--acc);padding:1px 5px;border-radius:5px;
font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.ai hr{border:none;border-top:1px solid var(--line);margin:16px 0}
.ai blockquote{border-left:3px solid var(--line);padding-left:11px;color:var(--dim);margin:0 0 9px}
.ai h3:first-child,.ai h4:first-child,.ai p:first-child{margin-top:0}

/* 原图裁切区：核对时对照用 */
.cropbox{margin-top:10px}
.crop{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:8px;
background:#fff}
.crop img{position:absolute;max-width:none;image-rendering:auto}
.crop .hl{position:absolute;border:2px solid var(--ab);border-radius:3px;
box-shadow:0 0 0 9999px rgba(0,0,0,.06)}

/* ── 移动端产品化组件 ─────────────────────────────────── */
/* 右上角用户菜单 */
.userbtn{display:flex;align-items:center;gap:5px;background:none;border:none;color:var(--fg);
font-size:13px;cursor:pointer;padding:4px 0;flex-shrink:0}
.userbtn .avatar{width:30px;height:30px;font-size:13px}
.menu{position:absolute;right:14px;top:54px;background:var(--card);border-radius:13px;
box-shadow:var(--shadow-lg);min-width:158px;z-index:40;overflow:hidden;
border:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
.menu button{display:block;width:100%;padding:13px 16px;background:none;border:none;
text-align:left;font-size:14px;color:var(--fg);cursor:pointer}
.menu button:active{background:var(--acc-bg)}
.menu .mi-danger{color:var(--ab)}

/* 成员卡 */
.avatar{width:42px;height:42px;border-radius:50%;
background:linear-gradient(135deg,color-mix(in srgb,var(--acc) 18%,var(--card)),var(--acc-bg));
color:var(--acc);display:flex;align-items:center;justify-content:center;font-weight:700;
font-size:16px;flex-shrink:0}
.rel{font-size:10.5px;padding:1.5px 7px;border-radius:6px;background:var(--acc-bg);
color:var(--acc);font-weight:600;margin-left:7px;vertical-align:1.5px}

/* 底部弹层 */
.mask{position:fixed;inset:0;background:rgba(10,12,18,.45);z-index:60;opacity:0;
transition:opacity .18s;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.mask.on{opacity:1}
.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--card);z-index:61;
border-radius:20px 20px 0 0;padding:8px 18px calc(20px + var(--safe-b));
max-height:86vh;overflow-y:auto;transform:translateY(100%);transition:transform .22s;
box-shadow:var(--shadow-lg)}
.sheet.on{transform:none}
.sheet .grip{width:38px;height:4.5px;border-radius:3px;background:var(--line);margin:5px auto 14px}
.sheet h3{font-size:16.5px;font-weight:700;margin:2px 0 12px;letter-spacing:-.2px}
.opt{display:flex;align-items:center;gap:13px;padding:15px 13px;border-radius:13px;
margin-bottom:9px;cursor:pointer;background:var(--bg)}
.opt:active{opacity:.6}
.opt .ic{font-size:22px;width:36px;text-align:center;flex-shrink:0}
.opt b{font-size:14.5px}
.opt .muted{margin-top:1px}

/* 并排小操作卡 */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.acard{background:var(--card);border-radius:var(--r);padding:15px 13px;text-align:center;
cursor:pointer;font-size:13.5px;font-weight:600;box-shadow:var(--shadow)}
.acard:active{opacity:.55}
.acard .ic{font-size:21px;display:block;margin-bottom:5px}

/* 关注小卡：白卡 + 状态徽标（无左侧色条）*/
.mgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.mcard{background:var(--card);border-radius:var(--r);padding:12px 13px;cursor:pointer;
min-width:0;box-shadow:var(--shadow)}
.mcard:active{opacity:.6}
.mcard .hd{display:flex;align-items:center;justify-content:space-between;gap:6px}
.mcard .nm{font-size:12.5px;font-weight:600;color:var(--dim);white-space:nowrap;
overflow:hidden;text-overflow:ellipsis}
.mcard .dir{flex-shrink:0;width:20px;height:20px;border-radius:50%;display:flex;
align-items:center;justify-content:center;font-size:12px;font-weight:800;
background:var(--ab-bg);color:var(--ab)}
.mcard .v{font-size:20px;font-weight:700;color:var(--ab);font-variant-numeric:tabular-nums;
letter-spacing:-.4px;margin-top:5px}
.mcard .u{font-size:11px;color:var(--dim);margin-left:3px;font-weight:400}
.mcard .rr{font-size:10.5px;color:var(--dim);margin-top:3px;white-space:nowrap;
overflow:hidden;text-overflow:ellipsis}
.mcard.nar .sec{font-size:11px;color:var(--id);font-weight:700}
.mcard.nar .dir{background:var(--id-bg);color:var(--id)}
.mcard.nar .tx{font-size:12.5px;margin-top:6px;line-height:1.55;display:-webkit-box;
-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* AI 定性摘要条 */
.sumline{display:flex;gap:11px;background:var(--card);border-radius:var(--r);
padding:13px 14px;margin-bottom:12px;font-size:13.5px;line-height:1.65;
box-shadow:var(--shadow)}
.sumline .ic{flex-shrink:0}
.sumline.loading{color:var(--dim)}

/* 空状态 */
.empty{text-align:center;padding:30px 14px;color:var(--dim);font-size:13.5px;line-height:1.7}
.empty .big{font-size:36px;margin-bottom:8px}

/* 密码可见切换 */
.pwrow{position:relative}
.pwrow input{padding-right:44px}
.pwrow .eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;
border:none;font-size:17px;cursor:pointer;padding:8px;color:var(--dim)}

.disc{color:var(--dim);font-size:11.5px;text-align:center;margin:28px 0 6px;line-height:1.6;
opacity:.85}
