/* AI 落地资产中枢 · 呈现层样式（九峰皮肤）。
   口径：只许用 skin-vars.css 的 --jf-* 变量，不自创色值。
   排序：手机（~390px）先写，宽屏在文件末尾用 @media(min-width:760px) 增强。
   字号：手机端正文 15px 起、关键数字更大（老夏主要在手机上用）。 */

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--jf-bg);color:var(--jf-ink);font-family:var(--jf-font);font-size:15px;line-height:1.6}
a{color:var(--jf-blue-ink);text-decoration:none}
a:hover{text-decoration:underline}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace}
.small{font-size:13px}
.muted{color:var(--jf-muted)}
.dot{margin:0 5px;color:var(--jf-muted)}
.nw{white-space:nowrap}
.up{color:var(--jf-green-text)}

/* ── 顶栏 ── */
.topbar{background:var(--jf-blue);color:#fff;position:sticky;top:0;z-index:8}
.tb-in{padding:10px 14px 0}
.tb-brand{font-family:var(--jf-font-brand);font-size:19px;font-weight:900;letter-spacing:.2px}
.tb-sub{font-size:13px;font-weight:500;opacity:.92;margin-left:8px}
.tb-nav{display:flex;gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:8px 0 10px;margin:0}
.tb-nav a{color:#fff;flex:none;padding:7px 12px;border-radius:8px;font-weight:600;font-size:14px;white-space:nowrap}
.tb-nav a:hover{text-decoration:none;background:rgba(255,255,255,.14)}
.tb-nav a.on{background:rgba(255,255,255,.26)}
.tb-nav::-webkit-scrollbar{height:0}

.shell{padding:14px 14px 48px}
.main{min-width:0;max-width:1320px;margin:0 auto}

/* ── 页头 ── */
.pagehead{margin:0 0 14px}
.ph-name{margin:0;font-size:22px;font-weight:900;font-family:var(--jf-font-brand)}
.ph-q{margin-top:4px;font-size:14px;color:var(--jf-ink-2)}
.ph-q b{color:var(--jf-ink)}
.ph-d{margin-top:4px;font-size:13.5px;color:var(--jf-muted);line-height:1.6}

/* ── 通用块 ── */
.panel,.detail{background:var(--jf-card);border:1px solid var(--jf-line);border-radius:var(--jf-r-md);
  padding:14px;margin:0 0 14px;box-shadow:var(--jf-shadow-1);scroll-margin-top:104px}
.panel h4{margin:0 0 10px;font-size:16px}
.panel h4 small{font-size:13px;font-weight:500;color:var(--jf-muted);margin-left:6px}
.note{font-size:13px;color:var(--jf-muted);margin-top:6px;line-height:1.6}
.lateline{background:var(--jf-warn-bg);color:var(--jf-ink-2);border-radius:8px;padding:8px 11px;margin-bottom:12px;font-size:13.5px;line-height:1.6}
.okline{background:var(--jf-ok-bg);color:var(--jf-green-text);border-radius:8px;padding:8px 11px;margin-bottom:10px;font-size:14px;font-weight:600}
.empty{color:var(--jf-muted);text-align:center;padding:26px 14px}
.emptybox{background:var(--jf-bg-2);border:1px dashed var(--jf-line);border-radius:var(--jf-r-md);
  padding:14px;font-size:14px;color:var(--jf-ink-2);line-height:1.7}
.emptybox b{display:block;margin-bottom:4px;color:var(--jf-ink);font-size:15px}
.errbox{background:var(--jf-err-bg);border:1px solid var(--jf-red);border-radius:var(--jf-r-md);padding:12px 14px;margin-bottom:14px}
.errbox b{display:block;color:var(--jf-red);margin-bottom:4px}
.errmsg{font-size:14px;color:var(--jf-ink);word-break:break-word}
.errhint{font-size:13px;color:var(--jf-ink-2);margin-top:6px}
.tl-none{font-size:13.5px;color:var(--jf-muted);background:var(--jf-bg-2);border-radius:8px;padding:10px 12px;line-height:1.65}
.backline{margin:0 0 10px;font-size:14px}

/* ── 按钮 ── */
.btn{font:inherit;font-size:14px;font-family:var(--jf-font);padding:9px 14px;border-radius:9px;cursor:pointer;
  border:1px solid var(--jf-line);background:var(--jf-card);color:var(--jf-ink);min-height:42px;font-weight:600}
.btn:hover{border-color:var(--jf-blue);background:var(--jf-info-bg);text-decoration:none}
.btn.primary{background:var(--jf-blue-deep);border-color:var(--jf-blue-deep);color:#fff}
.btn.primary:hover{background:var(--jf-blue-ink)}
.btn[disabled]{opacity:.6;cursor:default}

/* ── 徽章 ── */
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12.5px;font-weight:600;
  background:var(--jf-bg-2);color:var(--jf-ink-2);white-space:nowrap;line-height:1.7}
.pill.ok{background:var(--jf-ok-bg);color:var(--jf-green-text)}
.pill.warn{background:var(--jf-warn-bg);color:var(--jf-yellow-deep)}
.pill.bad{background:var(--jf-err-bg);color:var(--jf-red)}

/* ── 关键数字 ── */
.kpis{display:grid;grid-template-columns:1fr;gap:10px;margin:12px 0 14px}
.kpi{border:1px solid var(--jf-line);border-radius:var(--jf-r-md);padding:11px 13px;background:var(--jf-card)}
.kpi .t{font-size:13.5px;font-weight:700;color:var(--jf-ink-2)}
.kpi .v{font-family:var(--jf-font-brand);font-size:32px;font-weight:900;line-height:1.15;margin:2px 0}
.kpi .u{font-family:var(--jf-font);font-size:14px;font-weight:600;color:var(--jf-ink-2);margin-left:4px}
.kpi .l{font-size:13px;color:var(--jf-ink-2)}
.kpi .n{font-size:13px;color:var(--jf-muted);margin-top:5px;line-height:1.55}
.kpi.ok{background:var(--jf-ok-bg)}.kpi.warn{background:var(--jf-warn-bg)}.kpi.bad{background:var(--jf-err-bg)}
.bar{height:7px;border-radius:4px;background:var(--jf-line);margin-top:7px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--jf-blue-deep);border-radius:4px}

/* ── 筛选条 ── */
.filters{display:grid;grid-template-columns:1fr 1fr;gap:9px 10px;background:var(--jf-card);
  border:1px solid var(--jf-line);border-radius:var(--jf-r-md);padding:12px;margin-bottom:14px;box-shadow:var(--jf-shadow-1)}
.filters label{display:flex;flex-direction:column;gap:3px;min-width:0}
.filters .lt{font-size:12.5px;font-weight:600;color:var(--jf-ink-2)}
.filters select,.filters input{font:inherit;font-size:14px;padding:9px 9px;border:1px solid var(--jf-line);
  border-radius:9px;background:var(--jf-card);color:var(--jf-ink);min-height:42px;width:100%;min-width:0}
.filters .f-q{grid-column:1/-1}
.filters .btn{grid-column:1/-1}

/* ── 案例卡（手机单列，桌面多列） ── */
.cards{display:grid;grid-template-columns:1fr;gap:11px}
.ccard{display:block;background:var(--jf-card);border:1px solid var(--jf-line);border-radius:var(--jf-r-md);
  padding:13px 14px;box-shadow:var(--jf-shadow-1);color:var(--jf-ink)}
.ccard:hover{text-decoration:none;border-color:var(--jf-blue)}
.ccard.stale{border-color:var(--jf-yellow-deep);background:var(--jf-warn-bg)}
.cc-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:7px}
.cc-date{font-size:13.5px;font-weight:700;color:var(--jf-ink-2);font-variant-numeric:tabular-nums}
.cc-title{font-size:16.5px;font-weight:700;line-height:1.45;margin-bottom:6px}
.cc-meta{font-size:13px;color:var(--jf-ink-2);display:flex;flex-wrap:wrap;align-items:center}
.cc-foot{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:9px;
  padding-top:8px;border-top:1px dashed var(--jf-line)}
.cc-foot .score b{font-family:var(--jf-font-brand);font-size:23px;font-weight:900;color:var(--jf-blue-ink)}
.cc-foot .score small{font-size:12.5px;color:var(--jf-muted);margin-left:5px}
.cc-id{font-size:12.5px;color:var(--jf-muted);font-family:ui-monospace,Menlo,monospace}

/* ── 案例详情 ── */
.detail .d-top{position:relative;padding-bottom:10px;margin-bottom:12px;border-bottom:1px solid var(--jf-line)}
.d-badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.d-title{margin:0 0 6px;font-size:20px;line-height:1.4}
.d-sub{font-size:13px;color:var(--jf-ink-2)}
.d-score{margin-top:9px;display:flex;align-items:baseline;gap:8px}
.d-score b{font-family:var(--jf-font-brand);font-size:38px;font-weight:900;color:var(--jf-blue-ink);line-height:1}
.d-score small{font-size:13px;color:var(--jf-muted)}
.fields{display:grid;grid-template-columns:1fr;gap:11px}
.field{border-left:3px solid var(--jf-line);padding-left:11px}
.field .f-k{font-size:12.5px;font-weight:700;color:var(--jf-muted);letter-spacing:.03em}
.field .f-v{font-size:15px;line-height:1.68;margin-top:2px;word-break:break-word}
.field.big{border-left-color:var(--jf-blue);background:var(--jf-info-bg);border-radius:0 9px 9px 0;padding:9px 12px}
.field.big .f-v{font-family:var(--jf-font-brand);font-size:27px;font-weight:900}
.field.hi{border-left-color:var(--jf-green);background:var(--jf-ok-bg);border-radius:0 9px 9px 0;padding:9px 12px}
.quote{margin:14px 0 0;padding:12px 14px;background:var(--jf-info-bg);border-left:4px solid var(--jf-blue);
  border-radius:0 10px 10px 0;font-size:15.5px;line-height:1.7}
.quote .q-k{font-size:12.5px;font-weight:700;color:var(--jf-blue-ink);margin-bottom:4px}
.src{margin-top:14px;padding-top:12px;border-top:1px solid var(--jf-line)}
.src .f-k{font-size:12.5px;font-weight:700;color:var(--jf-muted)}
.src .f-v{font-size:13.5px;line-height:1.65;margin-top:3px;word-break:break-word}
.explain{margin-top:14px;padding:12px 14px;background:var(--jf-bg-2);border-radius:var(--jf-r-md)}
.explain .ex-h{font-size:15px;font-weight:700;margin-bottom:6px}
.explain ul{margin:0;padding-left:19px;font-size:13.5px;color:var(--jf-ink-2);line-height:1.7}

/* ── 时间轴 ── */
.tl{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--jf-line)}
.tl li{position:relative;padding:0 0 13px 4px}
.tl li::before{content:"";position:absolute;left:-21px;top:7px;width:9px;height:9px;border-radius:50%;
  background:var(--jf-blue);box-shadow:0 0 0 3px var(--jf-bg)}
.tl li:last-child{padding-bottom:0}
.tl-d{font-size:13px;font-weight:700;color:var(--jf-ink-2);display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.tl-w{font-size:15px;line-height:1.65;margin-top:3px}
.tl-m{font-size:14px;font-weight:700;color:var(--jf-blue-ink);margin-top:3px}
.tl-s{font-size:12.5px;color:var(--jf-muted);margin-top:3px;word-break:break-word}

/* ── 关系双链 ── */
.links{list-style:none;margin:0;padding:0}
.links li{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;padding:8px 0;border-bottom:1px dashed var(--jf-line);font-size:14px}
.links li:last-child{border-bottom:0}
.lk-kind{font-size:12.5px;font-weight:700;color:#fff;background:var(--jf-blue-deep);border-radius:6px;padding:1px 7px}
.lk-id{font-family:ui-monospace,Menlo,monospace;font-size:13px}
.lk-note{font-size:13px;color:var(--jf-ink-2);flex-basis:100%}

/* ── 进度台 ── */
.banner{border-radius:var(--jf-r-md);padding:12px 14px;margin-bottom:14px;font-size:14px}
.banner.warn{background:var(--jf-warn-bg);border:1px solid var(--jf-yellow-deep)}
.banner.warn>b{display:block;font-size:15.5px;margin-bottom:6px}
.banner ul{margin:0;padding-left:18px;line-height:1.9}
.banner li{font-size:14px}
.banner-hint{font-size:13px;color:var(--jf-ink-2);margin-top:7px;line-height:1.6}
.pcards{display:grid;grid-template-columns:1fr;gap:12px}
.pcard{background:var(--jf-card);border:1px solid var(--jf-line);border-radius:var(--jf-r-md);padding:13px 14px;box-shadow:var(--jf-shadow-1)}
.pcard.stale{border-color:var(--jf-yellow-deep);background:var(--jf-warn-bg)}
.p-top{display:flex;flex-wrap:wrap;gap:7px;align-items:baseline;justify-content:space-between}
.p-title{font-size:16.5px;font-weight:700;line-height:1.45;color:var(--jf-ink)}
.p-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px;margin-top:7px}
.p-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.addform{display:grid;grid-template-columns:1fr;gap:9px;margin-top:11px;padding:12px;background:var(--jf-bg-2);border-radius:10px}
.addform label{display:flex;flex-direction:column;gap:3px}
.addform .lt{font-size:12.5px;font-weight:600;color:var(--jf-ink-2)}
.addform input,.addform textarea{font:inherit;font-size:15px;padding:9px;border:1px solid var(--jf-line);
  border-radius:9px;background:var(--jf-card);color:var(--jf-ink);width:100%;min-height:42px}
.addform textarea{resize:vertical;line-height:1.6}
.addform-b{display:flex;gap:10px;align-items:center}
.formmsg{font-size:13.5px;font-weight:600}
.formmsg.ok{color:var(--jf-green-text)}.formmsg.bad{color:var(--jf-red)}
.linkmsg{font-size:13.5px;font-weight:600}
.linkmsg.ok{color:var(--jf-green-text)}.linkmsg.bad{color:var(--jf-red)}
.p-tl{margin-top:11px}
.p-tl summary{cursor:pointer;font-size:14px;font-weight:700;color:var(--jf-blue-ink);padding:3px 0}

/* ── 业务台账 ── */
.bizline{scroll-margin-top:104px}
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px}
table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:600px}
th,td{padding:8px 9px;border-bottom:1px solid var(--jf-line);text-align:left;vertical-align:top}
th{font-size:12.5px;font-weight:700;color:var(--jf-ink-2);background:var(--jf-bg-2);white-space:nowrap}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
td.num b{font-family:var(--jf-font-brand);font-size:16px;font-weight:900;color:var(--jf-blue-ink)}
tr.hi td{background:var(--jf-warn-bg)}
.td-note{font-size:12.5px;color:var(--jf-muted);margin-top:3px;line-height:1.55;word-break:break-word}

/* ── 课件编排台 ── */
.cw-wrap{display:grid;grid-template-columns:1fr;gap:14px}
.cw-list{display:flex;flex-direction:column;gap:8px;background:var(--jf-card);border:1px solid var(--jf-line);
  border-radius:var(--jf-r-md);padding:12px;box-shadow:var(--jf-shadow-1)}
.cw-ch{display:block;padding:10px 11px;border:1px solid var(--jf-line);border-radius:10px;color:var(--jf-ink);background:var(--jf-card)}
.cw-ch:hover{text-decoration:none;border-color:var(--jf-blue);background:var(--jf-info-bg)}
.cw-ch.on{border-color:var(--jf-blue-deep);background:var(--jf-info-bg);box-shadow:0 0 0 2px var(--jf-blue) inset}
.cw-no{font-size:12.5px;font-weight:700;color:var(--jf-blue-ink)}
.cw-t{font-size:14.5px;font-weight:600;line-height:1.5;margin-top:2px}
.cw-d{font-size:12.5px;color:var(--jf-muted);margin-top:3px}
.cw-head{margin-bottom:12px}
.cw-head h3{margin:0 0 5px;font-size:19px;line-height:1.4}
.cands{display:grid;grid-template-columns:1fr;gap:10px}
.cand{border:1px solid var(--jf-line);border-radius:10px;padding:11px 12px;background:var(--jf-bg-2)}
.cand-t{font-size:15.5px;font-weight:700;line-height:1.5}
.cand-m{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cand-q{font-size:13.5px;color:var(--jf-ink-2);line-height:1.6;margin-top:6px}
.cand-a{display:flex;gap:10px;align-items:center;margin-top:9px;flex-wrap:wrap}

/* ── 选题池 ── */
.rulebox{background:var(--jf-info-bg);border:1px solid var(--jf-line);border-left:4px solid var(--jf-blue);
  border-radius:8px;padding:11px 13px;margin-bottom:14px;font-size:13.5px;line-height:1.7}
.rulebox>b{display:block;margin-bottom:3px;font-size:14px}
.topics{display:grid;grid-template-columns:1fr;gap:11px}
.topic{border:1px solid var(--jf-line);border-radius:var(--jf-r-md);padding:12px 13px;background:var(--jf-card)}
.tp-top{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:7px}
.tp-title{font-size:16px;font-weight:700;line-height:1.5}
.tp-angle{font-size:13.5px;color:var(--jf-ink-2);margin-top:5px;line-height:1.6}
.tp-meta{font-size:13px;color:var(--jf-ink-2);margin-top:7px;display:flex;flex-direction:column;gap:4px}
.tp-note{color:var(--jf-muted);line-height:1.6}
.tp-src{font-size:12.5px;color:var(--jf-muted);margin-top:5px;word-break:break-word}
.tp-score{display:flex;flex-wrap:wrap;gap:9px;align-items:baseline;margin-top:9px;padding-top:9px;border-top:1px dashed var(--jf-line)}
.tp-score .w b{font-family:var(--jf-font-brand);font-size:24px;font-weight:900;color:var(--jf-blue-ink)}
.tp-score .w small{font-size:12.5px;color:var(--jf-muted);margin-left:4px}
.tp-score .sd{font-size:13.5px;color:var(--jf-ink-2)}
.tp-form{margin-top:9px}
.tp-form summary{cursor:pointer;font-size:13.5px;font-weight:600;color:var(--jf-blue-ink)}
.scoreform{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:9px}
.scoreform label{display:flex;flex-direction:column;gap:3px}
.scoreform .lt{font-size:12.5px;font-weight:600;color:var(--jf-ink-2)}
.scoreform input{font:inherit;font-size:15px;padding:9px;border:1px solid var(--jf-line);border-radius:9px;
  background:var(--jf-card);color:var(--jf-ink);min-height:42px}
.scoreform .addform-b{grid-column:1/-1}

/* ── 来源与运行 ── */
.exports{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:12px}
.exp{display:flex;flex-direction:column;gap:3px;text-align:left;font:inherit;cursor:pointer;
  border:1px solid var(--jf-line);border-radius:10px;padding:11px 13px;background:var(--jf-bg-2);color:var(--jf-ink);min-height:44px}
.exp:hover{border-color:var(--jf-blue);background:var(--jf-info-bg)}
.exp[disabled]{opacity:.6;cursor:default}
.exp b{font-size:15px;font-weight:700}
.exp small{font-size:13px;color:var(--jf-ink-2);line-height:1.55}
.filerow{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:9px}
.filerow .btn{display:inline-flex;align-items:center}
.rel{border:1px solid var(--jf-line);border-radius:10px;padding:11px 12px;margin:10px 0;background:var(--jf-card)}
.rel-h{display:flex;flex-wrap:wrap;gap:9px;align-items:baseline;padding-bottom:7px;margin-bottom:7px;border-bottom:1px solid var(--jf-line)}
.rel-v{font-family:var(--jf-font-brand);font-size:22px;font-weight:900;margin-left:auto}
.rel-check{font-size:12.5px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--jf-bg-2);color:var(--jf-ink-2)}
.rel-check.ok{background:var(--jf-ok-bg);color:var(--jf-green-text)}
.rel-check.bad{background:var(--jf-err-bg);color:var(--jf-red)}
.rel-row{display:grid;grid-template-columns:1fr;gap:2px;margin:7px 0}
.rel-k{font-size:12.5px;font-weight:700;color:var(--jf-muted)}
.rel-f{font-size:13.5px;color:var(--jf-ink-2);background:var(--jf-bg-2);border-radius:6px;padding:3px 8px;display:inline-block;word-break:break-word}
.rel-row .mono{font-size:12.5px;line-height:1.6;word-break:break-all;color:var(--jf-ink-2)}

/* ── 随对话跳转的提示（不是侧栏，一闪即走） ── */
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:20;
  background:var(--jf-ink);color:#fff;font-size:14px;font-weight:600;padding:10px 16px;border-radius:999px;
  box-shadow:var(--jf-shadow-1);max-width:calc(100vw - 28px);text-align:center}
.focusflash{animation:jfflash 1.6s ease-out 1}
@keyframes jfflash{0%{box-shadow:0 0 0 4px var(--jf-yellow)}100%{box-shadow:none}}
.view,.card,.panel{scroll-margin-top:104px}

/* ══ 宽屏增强 ══ */
@media(min-width:760px){
  body{font-size:15px}
  .tb-in{max-width:1320px;margin:0 auto;padding:12px 22px 0;display:flex;align-items:center;gap:18px}
  .tb-nav{overflow:visible;padding:0 0 12px;flex-wrap:wrap}
  .tb-brand{white-space:nowrap}
  .tb-nav{margin-left:auto}
  .shell{padding:20px 22px 56px}
  .ph-name{font-size:24px}
  .kpis{grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}
  .filters{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));align-items:end}
  .filters .f-q{grid-column:auto;min-width:220px}
  .filters .btn{grid-column:auto;align-self:end}
  .cards{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:13px}
  .fields{grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:13px 18px}
  .fields .field.big,.fields .field.hi{grid-column:1/-1}
  .pcards{grid-template-columns:repeat(auto-fill,minmax(520px,1fr))}
  .addform{grid-template-columns:170px 1fr}
  .addform .w{grid-column:1/-1}
  .addform-b{grid-column:1/-1}
  .cw-wrap{grid-template-columns:330px 1fr;align-items:start}
  .cw-list{position:sticky;top:76px;max-height:calc(100vh - 96px);overflow:auto}
  .cands{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
  .topics{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}
  .exports{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
  .rel-row{grid-template-columns:74px 1fr;gap:10px;align-items:start}
  .rel-k{padding-top:4px;white-space:nowrap}
  .panel,.detail{padding:16px 18px}
  .p-title{font-size:17px}
}
@media(min-width:1100px){
  .fields{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}
}
