/* 董家骨科商学院 · 线上模拟实训系统  淡黄主题 */
:root{
  --brand:#C08A2E; --brand-deep:#8A5E14; --brand-2:#E0A93A; --brand-soft:#FDF3DF; --brand-line:#F0DFB8;
  --gold:#E8B04B; --gold-soft:#FDF6E9;
  --bg:#FBF7EE; --card:#FFFFFF; --card-2:#FFFDF8;
  --line:#EFE6D4; --line-2:#E5DAC4;
  --txt:#38312A; --sub:#7B6E5C; --mute:#A79B87;
  --ok:#2E9E6B; --ok-soft:#E7F6EE;
  --warn:#D98A0B; --warn-soft:#FDF3E2;
  --danger:#D9534F; --danger-soft:#FCEDEB;
  --info:#3D7CB5; --info-soft:#EAF3FB;
  --r:16px; --r-sm:10px; --r-lg:22px;
  --sh:0 1px 2px rgba(90,70,30,.05),0 8px 22px rgba(120,95,45,.07);
  --sh-lg:0 2px 6px rgba(90,70,30,.06),0 18px 44px rgba(150,115,45,.14);
  --grad-brand:linear-gradient(135deg,#F7DCA0 0%,#E9BE66 55%,#C08A2E 100%);
  --grad-hd:linear-gradient(160deg,#FFFAF0 0%,#FDEEC9 52%,#F8DFA8 100%);
  --ease:cubic-bezier(.22,.85,.32,1);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--txt);
  font-family:"MiSans","HarmonyOS Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font-family:inherit;font-size:14px;color:inherit}
button{cursor:pointer;border:0;background:none}
a{color:var(--brand);text-decoration:none}
.hide{display:none !important}
.num{font-variant-numeric:tabular-nums;letter-spacing:-.5px}
svg{display:block}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(560px 360px at 90% -6%, rgba(224,169,58,.10), transparent 62%),
    radial-gradient(480px 320px at -8% 22%, rgba(192,138,46,.07), transparent 60%),
    radial-gradient(640px 420px at 50% 108%, rgba(232,176,75,.08), transparent 65%);}

/* ============ 登录 ============ */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;position:relative;z-index:1;
  background:linear-gradient(168deg,#FFFDF6 0%,#FBF3E2 34%,#F7E6C4 62%,#F2D9A4 82%,#EBCD8C 100%)}
.login-wrap::before,.login-wrap::after{content:"";position:absolute;border-radius:50%;pointer-events:none;border:1px solid rgba(192,138,46,.18)}
.login-wrap::before{width:520px;height:520px;top:-180px;right:-140px;background:radial-gradient(circle at 30% 40%,rgba(232,176,75,.26),transparent 65%)}
.login-wrap::after{width:380px;height:380px;bottom:-140px;left:-110px;background:radial-gradient(circle at 60% 50%,rgba(247,220,160,.35),transparent 62%)}
.login-card{width:100%;max-width:396px;background:rgba(255,255,255,.97);backdrop-filter:blur(18px);
  border-radius:26px;box-shadow:0 30px 80px rgba(120,90,35,.22),0 1px 0 rgba(255,255,255,.7) inset;
  padding:32px 28px 26px;position:relative;overflow:hidden;animation:rise .55s var(--ease) both}
@keyframes rise{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
.login-card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#F2D9A4 0%,#E0A93A 55%,#8A5E14 100%)}
.login-logo{display:flex;align-items:center;gap:11px;margin-bottom:4px}
.login-logo .dot{width:44px;height:44px;border-radius:14px;background:var(--grad-brand);display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 16px rgba(192,138,46,.32);color:#fff}
.login-logo .dot svg{width:24px;height:24px}
.login-logo b{font-size:19px;color:var(--brand-deep);letter-spacing:1px;font-weight:700}
.login-sub{color:var(--sub);font-size:12.5px;margin-bottom:22px;letter-spacing:.3px}
.login-tabs{display:flex;background:#F6EFE0;border-radius:12px;padding:4px;margin-bottom:20px}
.login-tabs button{flex:1;padding:9px 0;border-radius:9px;font-size:13.5px;color:var(--sub);transition:all .25s var(--ease)}
.login-tabs button.on{background:#fff;color:var(--brand-deep);font-weight:700;box-shadow:0 2px 8px rgba(120,90,35,.14)}
.fld{margin-bottom:13px}
.fld label{display:block;font-size:12.5px;color:var(--sub);margin-bottom:6px;font-weight:500}
.inp{width:100%;height:46px;border:1.5px solid var(--line);border-radius:13px;padding:0 13px;background:#FFFDF8;outline:none;transition:all .2s var(--ease)}
.inp:focus{border-color:var(--brand-2);background:#fff;box-shadow:0 0 0 4px rgba(224,169,58,.14)}
textarea.inp{height:auto;padding:11px 13px;resize:vertical;line-height:1.6}
select.inp{appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' stroke='%237B6E5C' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;background-position:right 13px center;padding-right:34px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:48px;padding:0 18px;border-radius:13px;
  background:var(--grad-brand);color:#4A3A1C;font-size:15px;font-weight:600;width:100%;
  box-shadow:0 8px 20px rgba(192,138,46,.30),0 1px 0 rgba(255,255,255,.3) inset;transition:all .2s var(--ease);letter-spacing:.5px}
.btn:active{transform:translateY(1px)}
.btn.ghost{background:#fff;color:var(--brand-deep);border:1.5px solid rgba(192,138,46,.45);box-shadow:none}
.btn.gray{background:#F4EEDF;color:var(--txt);font-weight:500;box-shadow:none}
.btn.gold{background:linear-gradient(135deg,#F2C268,#D99A2B);color:#5C3D05;box-shadow:0 8px 18px rgba(217,154,43,.28)}
.btn.sm{height:34px;padding:0 13px;font-size:13px;border-radius:10px;width:auto;font-weight:500;box-shadow:none}
.btn.danger{background:linear-gradient(135deg,#EF5A4E,#D2382C);color:#fff;box-shadow:0 6px 16px rgba(217,83,79,.26)}
.btn.ok{background:linear-gradient(135deg,#3FC08A,#1E8A5A);color:#fff;box-shadow:0 6px 16px rgba(46,158,107,.26)}
.btn[disabled]{opacity:.5;pointer-events:none}
.row{display:flex;gap:8px}.row>*{flex:1}
.login-tip{margin-top:14px;font-size:12px;color:var(--mute);text-align:center;line-height:1.7}
.login-tip code{background:#F6EFE0;padding:2px 6px;border-radius:5px;color:var(--brand-deep);font-size:11.5px}

/* ============ App 壳 ============ */
.app{max-width:480px;margin:0 auto;min-height:100vh;position:relative;padding-bottom:104px;z-index:1}
.app-hd{position:sticky;top:0;z-index:30;padding:16px 18px 58px;overflow:hidden;color:#4A3A1C;background:var(--grad-hd)}
.app-hd::before{content:"";position:absolute;width:230px;height:230px;border-radius:50%;top:-120px;right:-60px;
  background:radial-gradient(circle,rgba(232,176,75,.34),transparent 65%)}
.app-hd::after{content:"";position:absolute;width:200px;height:200px;border-radius:50%;bottom:-130px;left:-40px;
  border:1.5px solid rgba(192,138,46,.16);background:radial-gradient(circle,rgba(247,220,160,.4),transparent 60%)}
.app-hd .t1{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2}
.app-hd .who{font-size:15px;font-weight:600;letter-spacing:.4px}
.app-hd .chain{font-size:12px;opacity:.72;margin-top:3px}
.app-hd .pt{display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.62);
  border:1px solid rgba(192,138,46,.34);border-radius:22px;padding:5px 12px;font-size:13px;font-weight:700;color:var(--brand-deep)}
.app-hd .pt svg{width:14px;height:14px;color:var(--brand)}
.avatar{width:38px;height:38px;border-radius:13px;background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(253,240,214,.7));
  border:1px solid rgba(192,138,46,.3);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:var(--brand-deep);backdrop-filter:blur(6px)}
.app-bd{padding:0 14px 8px;margin-top:-42px;position:relative;z-index:2}

/* 悬浮胶囊底栏 */
.tabbar{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);width:min(440px,calc(100% - 28px));
  background:rgba(255,255,255,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-radius:22px;display:flex;z-index:40;padding:7px 8px;
  box-shadow:0 12px 36px rgba(120,90,35,.20),0 1px 0 rgba(255,255,255,.9) inset}
.tabbar button{flex:1;padding:7px 0 6px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--mute);font-size:10.5px;font-weight:500;border-radius:16px;transition:all .25s var(--ease)}
.tabbar button svg{width:21px;height:21px;stroke-width:1.8}
.tabbar button.on{color:var(--brand-deep);background:var(--brand-soft);font-weight:700}
.tabbar button.on svg{stroke-width:2.2}

/* ============ 卡片 / 列表 ============ */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:15px;margin-bottom:12px;border:1px solid rgba(239,230,212,.8)}
.card.tight{padding:12px}
.card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}
.card-hd h3{margin:0;font-size:14.5px;font-weight:600;letter-spacing:.3px}
.card-hd .more{font-size:12px;color:var(--sub)}
.sec-title{display:flex;align-items:center;gap:7px;margin:18px 2px 10px;font-size:13px;color:var(--sub);font-weight:600;letter-spacing:.5px}
.sec-title::after{content:"";flex:1;height:1px;background:var(--line)}
.list{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden;border:1px solid rgba(239,230,212,.8)}
.item{display:flex;align-items:center;gap:11px;padding:13px 14px;border-bottom:1px solid var(--line);transition:background .18s}
.item:last-child{border-bottom:0}
.item:active{background:var(--card-2)}
.item .ic{width:38px;height:38px;border-radius:11px;background:var(--brand-soft);display:flex;align-items:center;justify-content:center;color:var(--brand);flex:0 0 auto}
.item .ic svg{width:19px;height:19px}
.item .tx{flex:1;min-width:0}
.item .tx b{display:block;font-size:14px;font-weight:600;margin-bottom:2px}
.item .tx span{display:block;font-size:12px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .rt{color:var(--mute);flex:0 0 auto}
.item .rt svg{width:16px;height:16px}

/* ============ 标签 / chip ============ */
.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:8px;font-size:11.5px;font-weight:500;background:var(--brand-soft);color:var(--brand-deep)}
.chip.ok{background:var(--ok-soft);color:var(--ok)}
.chip.warn{background:var(--warn-soft);color:var(--warn)}
.chip.danger{background:var(--danger-soft);color:var(--danger)}
.chip.info{background:var(--info-soft);color:var(--info)}
.chip.gray{background:#F4EEDF;color:var(--sub)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.tag-audit{background:#F4EEDF;color:#8A7A62;border:1px dashed var(--line-2);border-radius:6px;padding:1px 6px;font-size:10.5px}

/* ============ 网格入口 ============ */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.grid.g3{grid-template-columns:repeat(3,1fr)}
.grid.g2{grid-template-columns:repeat(2,1fr)}
.tile{background:var(--card);border-radius:14px;box-shadow:var(--sh);padding:13px 6px;text-align:center;border:1px solid rgba(239,230,212,.8);transition:all .2s var(--ease)}
.tile:active{transform:scale(.96)}
.tile .ic{width:40px;height:40px;margin:0 auto 7px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:var(--grad-brand);color:#4A3A1C;box-shadow:0 4px 12px rgba(192,138,46,.24)}
.tile .ic svg{width:21px;height:21px}
.tile b{display:block;font-size:12px;font-weight:600;line-height:1.35}
.tile span{display:block;font-size:10px;color:var(--mute);margin-top:2px}

/* ============ 统计 / KPI ============ */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.kpi{background:var(--card);border-radius:14px;padding:12px 10px;text-align:center;box-shadow:var(--sh);border:1px solid rgba(239,230,212,.8)}
.kpi .n{font-size:21px;font-weight:700;color:var(--brand-deep);line-height:1.2}
.kpi .l{font-size:11px;color:var(--sub);margin-top:3px}
.bar{height:7px;border-radius:4px;background:#F2EADC;overflow:hidden}
.bar i{display:block;height:100%;border-radius:4px;background:var(--grad-brand);transition:width .6s var(--ease)}
.bar i.ok{background:linear-gradient(90deg,#3FC08A,#1E8A5A)}
.bar i.warn{background:linear-gradient(90deg,#F0B24A,#D98A0B)}
.bar i.danger{background:linear-gradient(90deg,#EF5A4E,#D2382C)}

/* ============ 搜索 ============ */
.search{position:relative;margin-bottom:12px}
.search .inp{padding-left:38px}
.search svg{position:absolute;left:13px;top:15px;width:16px;height:16px;color:var(--mute)}
.segs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:12px;-webkit-overflow-scrolling:touch}
.segs::-webkit-scrollbar{display:none}
.seg{flex:0 0 auto;padding:6px 13px;border-radius:20px;background:var(--card);border:1px solid var(--line);font-size:12.5px;color:var(--sub);white-space:nowrap;transition:all .2s}
.seg.on{background:var(--brand-deep);border-color:var(--brand-deep);color:#fff;font-weight:600}

/* ============ 聊天 / 对话 ============ */
.chat{display:flex;flex-direction:column;gap:10px;padding:4px 0}
.bubble{max-width:84%;padding:11px 13px;border-radius:16px;font-size:13.5px;line-height:1.65;position:relative;word-break:break-word}
.bubble.ai{align-self:flex-start;background:var(--card);border:1px solid var(--line);border-top-left-radius:5px;box-shadow:var(--sh)}
.bubble.me{align-self:flex-end;background:var(--grad-brand);color:#4A3A1C;border-top-right-radius:5px;box-shadow:0 6px 16px rgba(192,138,46,.22)}
.bubble .who{font-size:10.5px;color:var(--mute);margin-bottom:4px;display:flex;align-items:center;gap:4px}
.bubble.me .who{color:rgba(74,58,28,.6);justify-content:flex-end}
.bubble.sys{align-self:center;background:#F6EFE0;color:var(--sub);font-size:11.5px;border-radius:10px;padding:5px 11px;max-width:92%;text-align:center}
.chat-bar{position:fixed;bottom:0;left:0;right:0;margin:0 auto;max-width:480px;width:100%;background:rgba(255,255,255,.96);backdrop-filter:blur(18px);
  border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));display:flex;gap:8px;align-items:flex-end;z-index:45}
.chat-bar textarea{flex:1;min-height:42px;max-height:120px;resize:none;border:1.5px solid var(--line);border-radius:14px;padding:10px 13px;background:#FFFDF8;outline:none;line-height:1.5}
.chat-bar textarea:focus{border-color:var(--brand-2)}
.icon-btn{width:42px;height:42px;border-radius:14px;background:var(--grad-brand);display:flex;align-items:center;justify-content:center;color:#4A3A1C;flex:0 0 auto;box-shadow:0 4px 12px rgba(192,138,46,.24)}
.icon-btn svg{width:20px;height:20px}
.icon-btn.rec{background:linear-gradient(135deg,#EF5A4E,#D2382C);color:#fff}
.icon-btn.rec.on{animation:pulse 1.1s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(217,83,79,.45)}50%{box-shadow:0 0 0 9px rgba(217,83,79,0)}}

/* ============ 风险预警 ============ */
.alert{display:flex;gap:9px;padding:11px 12px;border-radius:12px;font-size:12.5px;line-height:1.6;margin-bottom:10px}
.alert.danger{background:var(--danger-soft);border:1px solid rgba(217,83,79,.28);color:#A32D2D}
.alert.warn{background:var(--warn-soft);border:1px solid rgba(217,138,11,.28);color:#8A5A05}
.alert.ok{background:var(--ok-soft);border:1px solid rgba(46,158,107,.28);color:#1B6B47}
.alert.info{background:var(--info-soft);border:1px solid rgba(61,124,181,.28);color:#245A87}
.alert svg{width:16px;height:16px;flex:0 0 auto;margin-top:2px}
.risk-mark{background:#FCE4E1;border-bottom:2px solid var(--danger);padding:0 2px;border-radius:2px;color:#A32D2D;font-weight:600}

/* ============ 评分报告 ============ */
.score-ring{width:118px;height:118px;margin:0 auto;position:relative}
.score-ring .v{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.score-ring .v b{font-size:30px;font-weight:700;color:var(--brand-deep);line-height:1}
.score-ring .v span{font-size:11px;color:var(--sub);margin-top:3px}
.dim{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line)}
.dim:last-child{border-bottom:0}
.dim .nm{width:74px;flex:0 0 auto;font-size:12.5px;color:var(--sub)}
.dim .bar{flex:1}
.dim .sv{width:52px;text-align:right;font-size:12.5px;font-weight:600;color:var(--brand-deep)}

/* ============ 表格 / 排名 ============ */
.tb{width:100%;border-collapse:collapse;font-size:12.5px}
.tb th{background:#F8F2E6;color:var(--sub);font-weight:600;text-align:left;padding:9px 10px;font-size:11.5px;white-space:nowrap}
.tb td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tb tr:last-child td{border-bottom:0}
.rank-1{color:#C08A2E;font-weight:700}
.rank-medal{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff}
.m1{background:linear-gradient(135deg,#F2C268,#D99A2B)}
.m2{background:linear-gradient(135deg,#C9CDD4,#98A0AB)}
.m3{background:linear-gradient(135deg,#D9A172,#B57A45)}

/* ============ 进度步骤 ============ */
.steps{display:flex;align-items:center;gap:0;margin-bottom:14px}
.steps .s{flex:1;text-align:center;position:relative}
.steps .s i{width:24px;height:24px;border-radius:50%;background:#F2EADC;color:var(--mute);display:flex;align-items:center;justify-content:center;margin:0 auto 5px;font-size:11.5px;font-style:normal;font-weight:700;transition:all .3s}
.steps .s.on i{background:var(--grad-brand);color:#4A3A1C;box-shadow:0 3px 10px rgba(192,138,46,.3)}
.steps .s.done i{background:var(--ok);color:#fff}
.steps .s span{font-size:10.5px;color:var(--mute);display:block;line-height:1.3}
.steps .s.on span{color:var(--brand-deep);font-weight:600}
.steps .s::after{content:"";position:absolute;top:12px;left:50%;width:100%;height:2px;background:#F2EADC;z-index:-1}
.steps .s:last-child::after{display:none}

/* ============ 弹层 ============ */
.mask{position:fixed;inset:0;background:rgba(50,38,18,.44);backdrop-filter:blur(3px);z-index:90;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s both}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{width:min(480px,100%);background:var(--bg);border-radius:22px 22px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));max-height:86vh;overflow-y:auto;animation:up .28s var(--ease) both}
@keyframes up{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
.sheet-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.sheet-hd h3{margin:0;font-size:16px;font-weight:600}
.sheet-hd .x{width:30px;height:30px;border-radius:50%;background:#F2EADC;display:flex;align-items:center;justify-content:center;color:var(--sub)}
.sheet-hd .x svg{width:15px;height:15px}
.toast{position:fixed;left:50%;top:22%;transform:translateX(-50%);background:rgba(56,49,42,.94);color:#fff;padding:11px 18px;border-radius:12px;font-size:13px;z-index:120;animation:fade .2s both;max-width:80%;text-align:center;box-shadow:0 10px 30px rgba(50,38,18,.3)}
.toast.ok{background:rgba(30,138,90,.95)}
.toast.danger{background:rgba(194,50,44,.95)}

/* ============ 空态 / 加载 ============ */
.empty{text-align:center;padding:44px 20px;color:var(--mute)}
.empty svg{width:52px;height:52px;margin:0 auto 12px;opacity:.35}
.empty p{margin:0;font-size:13px}
.typing{display:inline-flex;gap:3px;align-items:center;padding:3px 0}
.typing i{width:5px;height:5px;border-radius:50%;background:var(--brand);animation:bl 1.2s infinite}
.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}
@keyframes bl{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}

/* ============ 图表库 ============ */
.ch-wrap{margin:2px 0}
.ch-empty{text-align:center;padding:22px 10px;font-size:12px;color:var(--mute)}
.ch-legend{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:8px;font-size:11.5px;color:var(--sub)}
.ch-legend span{display:inline-flex;align-items:center;gap:5px}
.ch-legend i{width:14px;height:3px;border-radius:2px;display:inline-block}
.ch-ring-tx{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.ch-ring-tx b{font-size:27px;font-weight:700;color:var(--brand-deep);line-height:1.02;letter-spacing:-1px}
.ch-ring-tx span{font-size:10.5px;color:var(--sub);margin-top:3px;letter-spacing:.3px}
.ch-arc{transition:stroke-dashoffset 1.05s cubic-bezier(.22,.9,.3,1)}
.ch-grow{transform-origin:center;animation:chGrow .62s cubic-bezier(.22,.85,.32,1) both}
@keyframes chGrow{from{transform:scale(.24);opacity:0}to{transform:scale(1);opacity:1}}
.ch-fade{animation:chFade .8s ease both .1s}
@keyframes chFade{from{opacity:0}to{opacity:1}}
.ch-draw{stroke-dasharray:1400;stroke-dashoffset:1400;animation:chDraw 1.15s cubic-bezier(.3,.85,.35,1) both .12s}
@keyframes chDraw{to{stroke-dashoffset:0}}
.ch-bars{display:flex;flex-direction:column;gap:11px}
.ch-bar .cb-hd{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.ch-bar .cb-n{font-size:12.5px;color:var(--txt);font-weight:500;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-bar .cb-tag{font-size:10px;color:var(--mute);background:#F6EFE0;border-radius:5px;padding:1px 5px;flex:0 0 auto}
.ch-bar .cb-v{margin-left:auto;font-size:12.5px;font-weight:700;color:var(--brand-deep);flex:0 0 auto}
.ch-bar .cb-tr{height:8px;border-radius:5px;background:#F4ECDC;overflow:hidden}
.ch-bar .cb-tr i{display:block;height:100%;border-radius:5px;transition:width .85s cubic-bezier(.22,.85,.32,1)}
.ch-heat{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ch-heat table{border-collapse:separate;border-spacing:3px;font-size:11.5px;width:100%}
.ch-heat th{font-size:10.5px;color:var(--sub);font-weight:600;padding:0 2px 5px;text-align:center;white-space:nowrap}
.ch-heat td.rn{color:var(--txt);font-weight:500;white-space:nowrap;padding-right:8px;text-align:right;font-size:11.5px}
.ch-heat td.hc{border-radius:7px;text-align:center;padding:7px 4px;font-weight:700;font-variant-numeric:tabular-nums;min-width:34px;transition:transform .2s}
.ch-heat td.hc:active{transform:scale(.94)}

/* ============ 视觉精修 v2 ============ */
.card{animation:cIn .42s cubic-bezier(.22,.85,.32,1) both}
.card:nth-child(1){animation-delay:.02s}
.card:nth-child(2){animation-delay:.07s}
.card:nth-child(3){animation-delay:.12s}
.card:nth-child(4){animation-delay:.17s}
.card:nth-child(5){animation-delay:.22s}
.card:nth-child(6){animation-delay:.27s}
.card:nth-child(n+7){animation-delay:.32s}
@keyframes cIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.card,.ch-grow,.ch-draw,.ch-fade{animation:none!important}}

/* Hero 头部 */
.hero{position:relative;overflow:hidden;border-radius:20px;padding:17px 18px 15px;margin-bottom:12px;color:#4A3A1C;
  background:linear-gradient(148deg,#FFFBF0 0%,#FDF0D6 42%,#F8DFA8 78%,#F2CE86 100%);
  box-shadow:0 10px 30px rgba(150,115,45,.20),0 1px 0 rgba(255,255,255,.75) inset;border:1px solid rgba(240,216,160,.9)}
.hero::before{content:"";position:absolute;width:220px;height:220px;border-radius:50%;top:-120px;right:-70px;
  background:radial-gradient(circle,rgba(255,236,190,.72),transparent 66%)}
.hero::after{content:"";position:absolute;width:170px;height:170px;border-radius:50%;bottom:-110px;left:-56px;
  border:1.5px solid rgba(192,138,46,.16);background:radial-gradient(circle,rgba(255,246,220,.55),transparent 62%)}
.hero>*{position:relative;z-index:2}
.hero .h-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.hero .h-hi{font-size:17px;font-weight:700;letter-spacing:.4px;line-height:1.35}
.hero .h-sub{font-size:11.5px;opacity:.72;margin-top:4px;letter-spacing:.2px}
.hero .h-pt{text-align:right;flex:0 0 auto}
.hero .h-pt b{display:block;font-size:24px;font-weight:700;line-height:1;letter-spacing:-.8px}
.hero .h-pt span{font-size:10.5px;opacity:.7;margin-top:3px;display:block}
.hero .h-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:13px}
.hero .h-chip{display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.66);border:1px solid rgba(192,138,46,.28);
  border-radius:20px;padding:4px 10px;font-size:11.5px;font-weight:600;color:var(--brand-deep)}
.hero .h-chip svg{width:13px;height:13px}

/* 段位条 */
.rankbar{display:flex;align-items:center;gap:9px;margin-top:12px;background:rgba(255,255,255,.52);
  border:1px solid rgba(192,138,46,.2);border-radius:13px;padding:8px 11px}
.rankbar .rb-ic{width:30px;height:30px;border-radius:10px;background:var(--grad-brand);display:flex;align-items:center;
  justify-content:center;color:#5C3D05;flex:0 0 auto;box-shadow:0 4px 10px rgba(192,138,46,.28)}
.rankbar .rb-ic svg{width:16px;height:16px}
.rankbar .rb-tx{flex:1;min-width:0}
.rankbar .rb-tx b{font-size:12.5px;font-weight:700;color:var(--brand-deep);display:block}
.rankbar .rb-tr{height:5px;border-radius:3px;background:rgba(192,138,46,.2);margin-top:5px;overflow:hidden}
.rankbar .rb-tr i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#E8B04B,#8A5E14);transition:width .9s var(--ease)}
.rankbar .rb-n{font-size:11px;color:var(--sub);flex:0 0 auto}

/* 今日待办 */
.todo{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:13px;background:var(--card-2);
  border:1px solid var(--line);margin-bottom:8px;transition:all .2s var(--ease)}
.todo:last-child{margin-bottom:0}
.todo:active{transform:scale(.985);background:var(--brand-soft)}
.todo .tk{width:22px;height:22px;border-radius:50%;border:1.8px solid var(--line-2);flex:0 0 auto;display:flex;
  align-items:center;justify-content:center;color:transparent;transition:all .25s}
.todo.done .tk{background:var(--ok);border-color:var(--ok);color:#fff}
.todo .tk svg{width:13px;height:13px}
.todo .tt{flex:1;min-width:0}
.todo .tt b{display:block;font-size:13.5px;font-weight:600;line-height:1.4}
.todo .tt span{display:block;font-size:11.5px;color:var(--sub);margin-top:2px}
.todo.done .tt b{color:var(--mute);text-decoration:line-through}
.todo .tgo{font-size:11.5px;font-weight:600;color:var(--brand-deep);flex:0 0 auto;display:flex;align-items:center;gap:2px}
.todo .tgo svg{width:14px;height:14px}

/* 强化 KPI */
.kpi.v2{position:relative;overflow:hidden;text-align:left;padding:13px 12px;border-radius:15px}
.kpi.v2 .n{font-size:24px;letter-spacing:-1px;line-height:1.05}
.kpi.v2 .l{font-size:11px;margin-top:4px}
.kpi.v2 .d{font-size:10.5px;margin-top:5px;color:var(--mute);display:flex;align-items:center;gap:3px}
.kpi.v2 .up{color:var(--ok)}.kpi.v2 .dn{color:var(--danger)}
.kpi.v2::after{content:"";position:absolute;width:60px;height:60px;border-radius:50%;right:-18px;top:-22px;
  background:radial-gradient(circle,rgba(232,176,75,.20),transparent 68%)}

/* 分节标题 v2 */
.sec-title{font-size:12.5px;color:var(--brand-deep);letter-spacing:.6px;margin:16px 2px 9px}
.sec-title::before{content:"";width:3px;height:13px;border-radius:2px;background:var(--grad-brand);display:block}
.sec-title::after{background:linear-gradient(90deg,var(--line),transparent)}

/* 骨架屏 */
.skl{background:linear-gradient(90deg,#F6EFE0 25%,#FBF6EA 37%,#F6EFE0 63%);background-size:400% 100%;
  animation:skl 1.3s ease infinite;border-radius:7px}
@keyframes skl{0%{background-position:100% 50%}100%{background-position:0 50%}}
.skl-l{height:13px;margin-bottom:9px}.skl-l.w7{width:70%}.skl-l.w5{width:50%}.skl-l.w9{width:90%}

/* 卡片悬浮态（PC 后台） */
@media(hover:hover){
  .admin .card:hover{box-shadow:var(--sh-lg);transform:translateY(-1px)}
  .admin .card{transition:box-shadow .25s var(--ease),transform .25s var(--ease)}
  .tile:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(120,95,45,.13)}
  .tile{transition:transform .22s var(--ease),box-shadow .22s var(--ease)}
}

/* 底栏胶囊精修 */
.tabbar{border:1px solid rgba(255,255,255,.8);box-shadow:0 14px 40px rgba(120,90,35,.22),0 1px 0 rgba(255,255,255,.9) inset}
.tabbar button.on{position:relative}
.tabbar button.on::before{content:"";position:absolute;top:2px;left:50%;transform:translateX(-50%);width:18px;height:2.5px;
  border-radius:2px;background:var(--brand);animation:tabIn .3s var(--ease) both}
@keyframes tabIn{from{width:0;opacity:0}to{width:18px;opacity:1}}
.tabbar button.on svg{animation:pop .34s var(--ease) both}
@keyframes pop{0%{transform:scale(.8)}55%{transform:scale(1.18)}100%{transform:scale(1)}}

/* 数字滚动强调 */
.bignum{font-variant-numeric:tabular-nums;letter-spacing:-1.2px;font-weight:700;color:var(--brand-deep)}

/* 状态灯 */
.dot-led{width:7px;height:7px;border-radius:50%;display:inline-block;flex:0 0 auto}
.dot-led.ok{background:var(--ok);box-shadow:0 0 0 3px rgba(46,158,107,.16)}
.dot-led.warn{background:var(--warn);box-shadow:0 0 0 3px rgba(217,138,11,.16)}
.dot-led.danger{background:var(--danger);box-shadow:0 0 0 3px rgba(217,83,79,.16)}
.dot-led.info{background:var(--info);box-shadow:0 0 0 3px rgba(61,124,181,.16)}
.dot-led.live{animation:blink 1.6s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}

/* 报告：证据引用 / 建议卡 */
.evq{border-left:2.5px solid var(--brand);background:var(--brand-soft);border-radius:0 9px 9px 0;
  padding:8px 11px;font-size:12.5px;line-height:1.65;color:var(--txt);margin:6px 0}
.evq .who{display:block;font-size:10.5px;color:var(--sub);margin-bottom:3px}
.evq.bad{border-left-color:var(--danger);background:var(--danger-soft)}
.evq.good{border-left-color:var(--ok);background:var(--ok-soft)}
.nxt{border:1px dashed var(--brand-2);background:linear-gradient(180deg,#FFFDF7,#FDF6E8);border-radius:12px;padding:11px 12px;margin-top:8px}
.nxt .nh{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--brand-deep);margin-bottom:6px}
.nxt .nh svg{width:15px;height:15px}
.nxt .nb{font-size:13px;line-height:1.7;color:var(--txt)}
.fix-item{display:flex;gap:9px;padding:9px 0;border-bottom:1px dashed var(--line)}
.fix-item:last-child{border-bottom:0}
.fix-item .fp{width:20px;height:20px;border-radius:6px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-size:10.5px;font-weight:700;color:#fff;background:var(--danger);margin-top:1px}
.fix-item.p2 .fp{background:var(--warn)}
.fix-item.p3 .fp{background:var(--info)}
.fix-item .ft{flex:1;min-width:0}
.fix-item .ft b{display:block;font-size:12.5px;font-weight:600;margin-bottom:2px}
.fix-item .ft span{display:block;font-size:11.5px;color:var(--sub);line-height:1.6}

/* ============ 后台 PC 布局 ============ */
.admin{display:flex;min-height:100vh}
.admin .side{width:216px;flex:0 0 auto;background:linear-gradient(178deg,#FFFDF6,#F7E9CE);border-right:1px solid var(--line);padding:18px 12px;position:sticky;top:0;height:100vh;overflow-y:auto}
.admin .side .logo{display:flex;align-items:center;gap:9px;padding:0 6px 16px;border-bottom:1px solid var(--line);margin-bottom:12px}
.admin .side .logo b{font-size:14.5px;color:var(--brand-deep);letter-spacing:.5px}
.admin .side .logo .dot{width:34px;height:34px;border-radius:11px;background:var(--grad-brand);display:flex;align-items:center;justify-content:center;color:#fff}
.admin .side .logo .dot svg{width:19px;height:19px}
.admin .side button{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;border-radius:10px;color:var(--sub);font-size:13px;margin-bottom:2px;transition:all .2s}
.admin .side button svg{width:17px;height:17px}
.admin .side button:hover{background:rgba(255,255,255,.6)}
.admin .side button.on{background:var(--brand-deep);color:#fff;font-weight:600;box-shadow:0 4px 12px rgba(192,138,46,.26)}
.admin .side .grp{font-size:10.5px;color:var(--mute);padding:12px 11px 5px;letter-spacing:1px}
.admin .main{flex:1;min-width:0;padding:20px 24px;background:var(--bg)}
.admin .main h2{margin:0 0 4px;font-size:19px;font-weight:600;letter-spacing:.5px}
.admin .main .sub{color:var(--sub);font-size:12.5px;margin-bottom:18px}
.admin .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-bottom:16px}
.admin .card{margin-bottom:0}
@media(max-width:820px){
  .admin{flex-direction:column}
  .admin .side{width:100%;height:auto;position:static;padding:12px;display:flex;gap:6px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}
  .admin .side .logo,.admin .side .grp{display:none}
  .admin .side button{width:auto;flex:0 0 auto;margin-bottom:0}
  .admin .main{padding:14px}
}

/* ================================================================
   V3 视觉层 · 中性底 + 品牌金点睛 + 细节克制
   ================================================================ */
:root{
  --ink:#221B12; --ink-2:#5F5546; --ink-3:#9A8F7D;
  --paper:#FBF9F4; --surface:#FFFFFF;
  --line-0:#F3EFE6; --line-1:#EAE4D8;
  --brass:#B0803A; --brass-dk:#7A5518; --brass-lt:#FAF3E4;
  --sh-1:0 1px 2px rgba(58,42,18,.04),0 4px 14px rgba(58,42,18,.04);
  --sh-2:0 2px 6px rgba(58,42,18,.05),0 14px 34px rgba(58,42,18,.07);
  --sh-3:0 4px 12px rgba(58,42,18,.06),0 30px 64px rgba(58,42,18,.12);
  --r-card:20px; --r-btn:15px; --r-inp:15px;
  --ease-2:cubic-bezier(.16,1,.3,1);
}
body{background:var(--paper);color:var(--ink);letter-spacing:.1px}
body::before{background:
  radial-gradient(620px 380px at 92% -8%,rgba(206,164,86,.07),transparent 64%),
  radial-gradient(520px 340px at -10% 18%,rgba(176,128,58,.045),transparent 62%)}

/* ---- 卡片 / 列表 ---- */
.card{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-1);
  border:1px solid var(--line-0);padding:17px 16px;margin-bottom:12px}
.card.tight{padding:13px 14px}
.card-hd{margin-bottom:13px}
.card-hd h3{font-size:15.5px;font-weight:650;letter-spacing:.1px;color:var(--ink)}
.card-hd .more{font-size:11.5px;color:var(--ink-3);font-weight:500}
.list{border-radius:var(--r-card);box-shadow:var(--sh-1);border:1px solid var(--line-0)}
.item{padding:14px;border-bottom:1px solid var(--line-0)}
.item .ic{width:40px;height:40px;border-radius:13px;background:linear-gradient(160deg,#FDF8EC,#F6EAD3);
  color:var(--brass);border:1px solid #F2E6CE}
.item .tx b{font-size:14.5px;font-weight:600;color:var(--ink)}
.item .tx span{font-size:12px;color:var(--ink-3);margin-top:3px}
.sec-title{font-size:13px;color:var(--ink-3);font-weight:600;letter-spacing:1.2px;margin:22px 2px 12px}
.sec-title::after{display:none}

/* ---- 网格入口 ---- */
.tile{border-radius:16px;box-shadow:var(--sh-1);border:1px solid var(--line-0);padding:15px 6px 13px;
  transition:transform .22s var(--ease-2),box-shadow .22s var(--ease-2)}
.tile:active{transform:scale(.955);box-shadow:none}
.tile .ic{width:42px;height:42px;border-radius:14px;background:linear-gradient(160deg,#FDF8EC,#F5E8D0);
  color:var(--brass);border:1px solid #F1E4CB;box-shadow:none;margin-bottom:9px}
.tile b{font-size:12.5px;font-weight:600;color:var(--ink)}
.tile span{font-size:10.5px;color:var(--ink-3);margin-top:3px}

/* ---- KPI ---- */
.kpi{border-radius:16px;box-shadow:var(--sh-1);border:1px solid var(--line-0);padding:14px 10px}
.kpi .n{font-size:23px;font-weight:700;color:var(--ink);letter-spacing:-1px}
.kpi .l{font-size:11px;color:var(--ink-3);margin-top:4px;letter-spacing:.4px}

/* ---- chip ---- */
.chip{border-radius:7px;font-size:11.5px;font-weight:600;padding:3px 8px;letter-spacing:.2px}
.chip.gray{background:#F5F2EB;color:var(--ink-2)}

/* ---- 按钮 ---- */
.btn{height:50px;border-radius:var(--r-btn);background:linear-gradient(180deg,#2B2218,#171009);
  color:#F8F0E1;font-size:15px;font-weight:600;letter-spacing:1.5px;
  box-shadow:0 6px 18px rgba(30,22,10,.22),inset 0 1px 0 rgba(255,255,255,.10)}
.btn:active{transform:translateY(1px) scale(.995)}
.btn.ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line-1);box-shadow:none;letter-spacing:.5px}
.btn.gray{background:#F5F2EB;color:var(--ink-2);letter-spacing:.5px}
.btn.gold{background:linear-gradient(180deg,#D6AC63,#B0803A);color:#2A1F0C;letter-spacing:.5px;
  box-shadow:0 6px 18px rgba(176,128,58,.26)}
.btn.sm{height:36px;border-radius:11px;font-size:13px;letter-spacing:0}
.btn.danger{background:linear-gradient(180deg,#E2564A,#C63B2F);color:#fff;letter-spacing:.5px}
.btn.ok{background:linear-gradient(180deg,#33A874,#218255);color:#fff;letter-spacing:.5px}

/* ---- 输入 ---- */
.inp{height:50px;border-radius:var(--r-inp);border:1.5px solid transparent;background:#F7F4EE;
  padding:0 15px;font-size:14.5px;transition:all .22s var(--ease)}
.inp:focus{background:#fff;border-color:#D9B678;box-shadow:0 0 0 4px rgba(217,182,120,.15)}
.inp::placeholder{color:#B6AB99}
.fld label{font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:7px;letter-spacing:.3px}
.search svg{top:17px}

/* ---- seg / 分段 ---- */
.seg{border-radius:10px;font-size:12.5px;font-weight:500;padding:7px 14px}
.seg.on{background:var(--ink);border-color:var(--ink);color:#FBF4E6}

/* ---- 底部导航 ---- */
.tabbar{border-radius:24px;padding:8px 8px calc(8px + env(safe-area-inset-bottom));background:rgba(255,255,255,.92);
  box-shadow:0 2px 8px rgba(58,42,18,.05),0 18px 44px rgba(58,42,18,.13);border:1px solid rgba(255,255,255,.9)}
.tabbar button{font-size:10.5px;font-weight:600;letter-spacing:.2px;border-radius:16px;padding:8px 0 7px;gap:4px;
  transition:color .22s,background .22s,transform .22s var(--ease-2)}
.tabbar button svg{width:21px;height:21px;transition:transform .28s var(--ease-2)}
.tabbar button.on{background:linear-gradient(160deg,#FBF4E4,#F6EBD5);color:var(--brass-dk)}
.tabbar button.on svg{transform:translateY(-1px) scale(1.06)}
.tabbar button:active svg{transform:scale(.9)}

/* ---- 顶部栏：改为干净中性 ---- */
.app-hd{background:linear-gradient(180deg,#FFFDF8 0%,#FFFCF6 100%);color:var(--ink);
  padding:14px 16px 15px;border-bottom:1px solid rgba(58,42,18,.055)}
.app-hd::before,.app-hd::after{display:none}
.app-hd .t1{gap:10px}
.app-hd .who{font-size:14.5px;font-weight:650;letter-spacing:.2px;color:var(--ink)}
.app-hd .chain{font-size:11px;color:var(--ink-3);margin-top:3px;letter-spacing:.2px}
.app-hd .pt{background:#FBF4E4;border:1px solid #F2E6CE;color:var(--brass-dk);font-size:12px;
  padding:5px 11px;border-radius:20px;font-weight:700}
.app-hd .chip{background:#FBF4E4 !important;border:1px solid #F2E6CE !important;color:var(--brass-dk)}
.avatar{width:38px;height:38px;border-radius:13px;background:linear-gradient(155deg,#FBF3E2,#F3E5CB);
  border:1px solid #F0E2C8;color:var(--brass-dk);font-weight:700}
.app-bd{margin-top:0;padding:14px 14px 8px}

/* ---- 弹层 / toast ---- */
.sheet{border-radius:24px 24px 0 0;background:#FDFBF6}
.toast{border-radius:14px;font-weight:500;letter-spacing:.3px}
.mask{background:rgba(38,28,14,.42)}

/* ---- 后台侧栏 ---- */
.admin .side{background:#FFFDF8;border-right:1px solid var(--line-0)}
.admin .side .logo .dot{border-radius:12px;background:linear-gradient(150deg,#D8AE64,#9C6E22)}
.admin .side .logo b{color:var(--ink);font-size:14px;font-weight:700;letter-spacing:.3px}
.admin .side button{border-radius:11px;font-size:13px;font-weight:500;color:var(--ink-2)}
.admin .side button:hover{background:#F8F5EE}
.admin .side button.on{background:var(--ink);color:#FBF4E6;box-shadow:0 4px 14px rgba(30,22,10,.18);font-weight:600}
.admin .side .grp{color:var(--ink-3);font-size:10.5px;font-weight:600;letter-spacing:1.4px}
.admin .main{background:#FAF8F3}
.admin .main h2{font-size:21px;font-weight:700;letter-spacing:-.2px}
.admin .main .sub{color:var(--ink-3);font-size:12.5px}

/* ---- 对话气泡 ---- */
.bubble.me{background:linear-gradient(160deg,#31261A,#1D1509);color:#F8F0E1;box-shadow:0 6px 18px rgba(30,22,10,.20)}
.bubble.me .who{color:rgba(248,240,225,.55)}
.bubble.ai{border-color:var(--line-0);box-shadow:var(--sh-1)}
.chat-bar{border-top:1px solid var(--line-0);background:rgba(255,255,255,.94)}
.chat-bar textarea{border-radius:15px;background:#F7F4EE;border-color:transparent}
.chat-bar textarea:focus{background:#fff;border-color:#D9B678}
.icon-btn{border-radius:15px;background:linear-gradient(180deg,#2B2218,#171009);color:#F8F0E1;box-shadow:0 5px 16px rgba(30,22,10,.22)}
.icon-btn.rec{background:linear-gradient(180deg,#E2564A,#C63B2F)}

/* ================================================================
   登录页 V3
   ================================================================ */
.lg{min-height:100vh;display:flex;flex-direction:column;background:#FBF8F1;position:relative;overflow:hidden}
.lg-left{position:relative;padding:62px 26px 30px;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:hidden}
.lg-left::before{content:"";position:absolute;width:380px;height:380px;top:-170px;left:50%;transform:translateX(-50%);
  border-radius:50%;background:radial-gradient(circle,rgba(216,174,100,.34),rgba(216,174,100,0) 66%);pointer-events:none}
.lg-left::after{content:"";position:absolute;width:200px;height:200px;bottom:-120px;right:-90px;border-radius:50%;
  background:radial-gradient(circle,rgba(216,174,100,.16),transparent 68%);pointer-events:none}
.lg-mark{width:60px;height:60px;border-radius:20px;background:linear-gradient(150deg,#DDB46C,#9A6B1F);
  display:flex;align-items:center;justify-content:center;color:#fff;position:relative;z-index:1;
  box-shadow:0 12px 28px rgba(154,107,31,.28),inset 0 1px 0 rgba(255,255,255,.38);
  animation:lgPop .7s var(--ease-2) both}
@keyframes lgPop{from{opacity:0;transform:translateY(10px) scale(.86)}to{opacity:1;transform:none}}
.lg-mark svg{width:31px;height:31px;stroke-width:1.85}
.lg-title{font-size:25px;font-weight:700;letter-spacing:3px;color:#2A2114;margin-top:22px;position:relative;z-index:1}
.lg-sub{font-size:12px;color:#9B8E7B;letter-spacing:2px;margin-top:9px;position:relative;z-index:1}
.lg-points{display:none}
.lg-right{flex:1;display:flex;justify-content:center;padding:0 15px 36px;margin-top:-14px;position:relative;z-index:2}
.lg-form{width:100%;max-width:404px;background:#fff;border-radius:26px;padding:26px 22px 22px;
  box-shadow:0 2px 5px rgba(58,42,18,.04),0 26px 60px rgba(58,42,18,.10);
  animation:lgRise .62s var(--ease-2) both .08s}
@keyframes lgRise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.lg-fhd h2{margin:0;font-size:20px;font-weight:700;letter-spacing:.3px;color:#221B12}
.lg-fhd p{margin:7px 0 0;font-size:12.5px;color:#9A8F7D;letter-spacing:.3px}
.lg-seg{display:flex;gap:4px;background:#F7F4EE;border-radius:13px;padding:4px;margin:20px 0 18px}
.lg-seg button{flex:1;padding:9px 0;border-radius:10px;font-size:13px;font-weight:600;color:#9A8F7D;transition:all .25s var(--ease-2)}
.lg-seg button.on{background:#fff;color:#221B12;box-shadow:0 1px 3px rgba(58,42,18,.10)}
.lf{margin-bottom:14px}
.lf label{display:block;font-size:12px;font-weight:600;color:#6B6154;margin-bottom:7px;letter-spacing:.3px}
.lf-box{display:flex;align-items:center;gap:10px;height:54px;background:#FAF7F1;
  border:1.5px solid #F0E9DB;border-radius:15px;padding:0 15px;transition:all .22s var(--ease)}
.lf-box:focus-within{background:#fff;border-color:#D9B678;box-shadow:0 0 0 4px rgba(217,182,120,.15)}
.lf-box>svg{width:17px;height:17px;color:#B0A48F;flex:0 0 auto;transition:color .2s}
.lf-box:focus-within>svg{color:var(--brass)}
.lf-box input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:15px;color:#221B12;letter-spacing:.3px}
.lf-box input::placeholder{color:#BEB3A0;letter-spacing:.3px}
.lf-eye{width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:#B0A48F;flex:0 0 auto;border-radius:9px}
.lf-eye:active{background:#F2EDE3}
.lf-eye svg{width:16px;height:16px}
.lg-go{width:100%;height:54px;border-radius:15px;margin-top:8px;position:relative;overflow:hidden;
  background:linear-gradient(180deg,#2E2418,#171009);color:#FBF3E3;font-size:15.5px;font-weight:600;letter-spacing:4px;
  display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 10px 24px rgba(30,22,10,.24),inset 0 1px 0 rgba(255,255,255,.11);transition:all .2s var(--ease)}
.lg-go::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 34%,rgba(255,225,170,.20) 50%,transparent 66%);
  transform:translateX(-130%);animation:sheen 4.2s ease-in-out infinite}
@keyframes sheen{0%,72%{transform:translateX(-130%)}100%{transform:translateX(130%)}}
.lg-go:active{transform:translateY(1px);box-shadow:0 4px 12px rgba(30,22,10,.20)}
.lg-demo{margin-top:13px;width:100%;height:46px;border-radius:14px;background:#FBF8F2;border:1px solid #F1EAD9;
  color:#8A7C66;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:7px;
  letter-spacing:.3px;transition:all .2s}
.lg-demo:active{background:#F5F0E5}
.lg-demo svg{width:15px;height:15px}
.lg-foot{margin-top:11px;text-align:center;font-size:11px;color:#B4A995;letter-spacing:1.2px}
.lg-role{font-size:12.5px;color:#6B6154;line-height:1.9}
.lg-role b{display:flex;align-items:center;gap:7px;color:#221B12;font-size:13.5px;margin:14px 0 5px}
.lg-role b:first-child{margin-top:0}
.lg-role b i{width:5px;height:5px;border-radius:50%;background:var(--brass);flex:0 0 auto}
.lg-role p{margin:0;color:#9A8F7D;font-size:12px;line-height:1.75}
.lg-demo-box{display:grid;gap:9px}
.lg-demo-item{display:flex;align-items:center;gap:12px;padding:13px 14px;background:#FBF8F2;border:1px solid #F1EAD9;border-radius:14px;transition:all .2s}
.lg-demo-item:active{background:#F6F1E6;transform:scale(.99)}
.lg-demo-item .dm{flex:1;min-width:0;text-align:left}
.lg-demo-item .dm b{display:block;font-size:13.5px;font-weight:650;color:#221B12}
.lg-demo-item .dm span{display:block;font-size:11.5px;color:#9A8F7D;margin-top:2px}
.lg-demo-item .da{font-size:11.5px;color:#B4A995;font-variant-numeric:tabular-nums;flex:0 0 auto}
.lg-demo-item svg{width:16px;height:16px;color:#C9BEA8;flex:0 0 auto}

/* 登录页 PC 分栏 */
@media(min-width:900px){
  .lg{flex-direction:row;background:radial-gradient(760px 620px at 74% 42%,#FFFDF8 0%,#FBF8F1 62%,#F7F3EA 100%)}
  .lg-left{width:47%;flex:0 0 47%;padding:0 68px;justify-content:center;align-items:flex-start;text-align:left;
    background:linear-gradient(158deg,#191309 0%,#241A0F 50%,#3A2A16 100%)}
  .lg-left::before{width:700px;height:700px;top:-300px;left:-200px;transform:none;
    background:radial-gradient(circle,rgba(216,174,100,.24),transparent 64%)}
  .lg-left::after{width:460px;height:460px;bottom:-230px;right:-170px;
    background:radial-gradient(circle,rgba(216,174,100,.13),transparent 68%)}
  .lg-mark{width:74px;height:74px;border-radius:24px;animation:none;
    box-shadow:0 16px 40px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.4)}
  .lg-mark svg{width:38px;height:38px}
  .lg-title{font-size:38px;letter-spacing:5px;color:#FBF4E5;margin-top:34px;font-weight:700}
  .lg-sub{font-size:13.5px;color:rgba(250,243,228,.46);letter-spacing:3.4px;margin-top:15px}
  .lg-points{display:flex;flex-direction:column;gap:28px;margin-top:58px;max-width:420px;position:relative;z-index:1}
  .lg-point{display:flex;gap:17px;align-items:flex-start}
  .lg-point i{font-style:normal;font-size:11px;font-weight:700;color:#C89C52;letter-spacing:1px;
    padding-top:4px;font-variant-numeric:tabular-nums;flex:0 0 auto}
  .lg-point .pt b{display:block;font-size:15.5px;font-weight:600;color:#F8F0E1;letter-spacing:1px}
  .lg-point .pt span{display:block;font-size:12.5px;color:rgba(250,243,228,.42);margin-top:5px;line-height:1.7;letter-spacing:.3px}
  .lg-right{flex:1;align-items:center;padding:44px}
  .lg-form{max-width:446px;padding:40px 38px 34px;
    box-shadow:0 2px 8px rgba(58,42,18,.05),0 36px 80px rgba(58,42,18,.15);border-radius:28px}
  .lg-form{animation:none}
  .lg-fhd h2{font-size:22px}
  .lg-fhd p{font-size:13px;margin-top:8px}
  .lf-box{height:56px}
  .lg-go{height:56px}
}
@media(max-width:380px){
  .lg-left{padding:52px 22px 26px}
  .lg-title{font-size:22px;letter-spacing:2px}
  .lg-form{padding:22px 18px 18px}
}
@media(prefers-reduced-motion:reduce){
  .lg-go::after{display:none}
  .lg-mark,.lg-form{animation:none}
}

/* ================================================================
   首页 Hero · 黑金
   ================================================================ */
.hero{border-radius:22px;padding:19px 19px 16px;color:#FAF3E4;
  background:linear-gradient(152deg,#2E2417 0%,#1B140A 56%,#251B0E 100%);
  border:1px solid rgba(255,255,255,.075);
  box-shadow:0 14px 36px rgba(28,21,10,.26),inset 0 1px 0 rgba(255,255,255,.09)}
.hero::before{width:260px;height:260px;top:-140px;right:-80px;
  background:radial-gradient(circle,rgba(216,174,100,.30),transparent 66%)}
.hero::after{border-color:rgba(216,174,100,.16);
  background:radial-gradient(circle,rgba(216,174,100,.10),transparent 62%)}
.hero .h-hi{color:#FCF5E6;font-size:17.5px;letter-spacing:.3px}
.hero .h-sub{color:rgba(250,243,228,.48);opacity:1;letter-spacing:.3px}
.hero .h-pt b{color:#F0CE8E;font-size:26px;letter-spacing:-1px}
.hero .h-pt span{color:rgba(250,243,228,.45);opacity:1;letter-spacing:.6px}
.hero .h-chip{background:rgba(255,255,255,.075);border-color:rgba(216,174,100,.22);
  color:#EBD3A6;backdrop-filter:blur(8px);font-weight:600}
.hero .rankbar{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.09);margin-top:14px}
.hero .rankbar .rb-ic{background:linear-gradient(150deg,#D8AE64,#9A6B1F);color:#241B0C;
  box-shadow:0 4px 12px rgba(154,107,31,.35)}
.hero .rankbar .rb-tx b{color:#F3E3C4}
.hero .rankbar .rb-tr{background:rgba(255,255,255,.12)}
.hero .rankbar .rb-tr i{background:linear-gradient(90deg,#E3BC72,#C08A2E)}
.hero .rankbar .rb-n{color:rgba(250,243,228,.48)}

/* 今日待办 / 内容块细修 */
.todo{background:#FBFAF6;border-color:#F3EFE6;border-radius:14px;padding:12px 13px}
.todo:active{background:#F7F4EC;transform:scale(.988)}
.todo .tk{border-color:#E3DBCB}
.steps .s.on i{background:linear-gradient(150deg,#D8AE64,#9A6B1F);color:#241B0C;
  box-shadow:0 4px 12px rgba(154,107,31,.30)}
.steps .s.done i{background:#2E9E6B}
.bar{background:#F3EEE3}
.bar i{background:linear-gradient(90deg,#D8AE64,#B0803A)}
.tb th{background:#FAF6EC;color:var(--ink-2);font-size:11.5px;letter-spacing:.3px}
.tb td{border-bottom:1px solid var(--line-0)}
.rank-medal.m1{background:linear-gradient(150deg,#E3BC72,#B0803A)}
.ch-bar .cb-tr{background:#F3EEE3}
.ch-bar .cb-tr i{background:linear-gradient(90deg,#D8AE64,#B0803A)}
.ch-bar .cb-v{color:var(--ink)}
.empty svg{opacity:.28}

/* ================================================================
   V3 修复层
   ================================================================ */
/* 审核标记：从横条改为小标签 */
.tag-audit,.item .tx .tag-audit{display:inline-flex !important;width:auto !important;
  background:#F6F2E9;color:#9C9080;border:1px solid #ECE5D7;border-radius:5px;padding:1px 5px;
  font-size:10px;line-height:1.5;margin-left:6px;vertical-align:middle;font-weight:500;
  letter-spacing:.2px;white-space:nowrap;text-overflow:clip;overflow:visible}
/* KPI 去掉金光斑 */
.kpi.v2::after{display:none}
.kpi.v2{border:1px solid var(--line-0);box-shadow:var(--sh-1);padding:14px 13px}
.kpi.v2 .n{color:var(--ink)}
.kpi.v2 .d{color:var(--ink-3)}
/* 分段标签滚动留白 */
.segs{padding-right:6px;margin-bottom:14px}
.segs::after{content:"";flex:0 0 2px}
.seg{border-color:var(--line-0);background:#FFFDF9}
/* 分节标题竖条 */
.sec-title{color:var(--ink-2);font-size:12.5px;letter-spacing:.8px}
.sec-title::before{background:linear-gradient(180deg,#D8AE64,#B0803A);height:14px}
.sec-title::after{display:none}
/* 顶部设置按钮 */
.app-hd .hd-set{width:36px;height:36px;border-radius:12px;background:#F8F4EC;border:1px solid #F1EADB;
  display:flex;align-items:center;justify-content:center;color:var(--ink-3);flex:0 0 auto;transition:all .2s}
.app-hd .hd-set:active{background:#F2ECDF}
.app-hd .hd-set svg{width:17px;height:17px}
.app-hd .pt{white-space:nowrap}
/* 列表图标统一 */
.item .ic{border-radius:12px}
/* 登录卡不再被拉伸 */
.lg-right{align-items:flex-start}
.lg-form{flex:0 0 auto}
@media(min-width:900px){.lg-right{align-items:center}}

/* 雷达图空态 */
.ch-radar-empty{text-align:center;padding:6px 0 10px;font-size:12px;color:var(--ink-3);line-height:1.7}
/* 卡片内嵌 KPI：去卡中卡 */
.card .kpis .kpi,.list .kpis .kpi{background:transparent;border:0;box-shadow:none;padding:4px 2px}
.card .kpis{gap:4px}
.card .kpis .kpi .n{font-size:25px}
/* toast 调性 */
.toast{background:rgba(32,25,15,.95);box-shadow:0 10px 30px rgba(30,22,10,.24)}
.toast.ok{background:rgba(24,72,52,.96)}
.toast.danger{background:rgba(166,44,38,.96)}
