/* 微钉装饰 · 项目档案空间 —— 纸面、细线、石青。浅色低饱和；只有“实物”（封面、档案夹、抽屉、输入框）才抬起。颜色只在这里定义。 */
*,*::before,*::after{box-sizing:border-box}
:root{
  --paper:#F5F4F0;--paper-2:#EDEBE6;--paper-3:#E6E3DC;
  --sheet:#FFFFFF;--sheet-2:#FAF9F6;
  --rule:#E3E0D8;--rule-2:#D2CEC4;
  --ink:#1C1F24;--ink-2:#4A4F57;--ink-3:#767B83;--ink-4:#A7ABB1;
  --accent:#34566F;--accent-2:#6A8497;--accent-soft:#E4EAEE;--accent-wash:#EFF2F4;
  --plan-bg:#E8ECEE;--plan-line:#8C9DAA;--plan-line-2:#B7C3CC;--plan-fill:#DEE4E8;
  --st-pending:#8C9096;--st-pending-bg:#EFEEEA;
  --st-progress:#3A6690;--st-progress-bg:#E8EEF4;
  --st-confirm:#94661F;--st-confirm-bg:#F6EFE2;
  --st-done:#3D7155;--st-done-bg:#E7F0EA;
  --st-risk:#A2483D;--st-risk-bg:#F7ECE9;--st-risk-line:#E6C3BD;
  --lift:0 1px 2px rgba(28,31,36,.04),0 2px 8px rgba(28,31,36,.035);
  --pop:0 24px 60px rgba(28,31,36,.18),0 3px 10px rgba(28,31,36,.07);
  --r-lg:14px;--r-md:10px;--r-sm:8px;
  --font:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","MiSans","Microsoft YaHei","Noto Sans SC","Segoe UI",sans-serif;
  /* 系统栏安全区：安卓外壳（Capacitor SystemBars）注入 --safe-area-inset-*，新版 WebView 同时提供 env()；取两者较大者，普通浏览器均为 0 */
  --sat:max(env(safe-area-inset-top,0px),var(--safe-area-inset-top,0px));
  --sab:max(env(safe-area-inset-bottom,0px),var(--safe-area-inset-bottom,0px));
  --sal:max(env(safe-area-inset-left,0px),var(--safe-area-inset-left,0px));
  --sar:max(env(safe-area-inset-right,0px),var(--safe-area-inset-right,0px));
}
/* 弹层打开时锁住背景页面，不跟着滑动；关闭后位置不变 */
html.scroll-locked{overflow:hidden}
.drawer,.sheet,.drawer-body,.sheet-card,.item-pick{overscroll-behavior:contain}
.drawer-backdrop,.sheet-backdrop{touch-action:none}
html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
img{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.hidden,[hidden]{display:none!important}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:8px;top:-48px;z-index:60;background:var(--ink);color:#fff;padding:8px 14px;border-radius:6px}
.skip:focus{top:8px}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--ink-3)}
.shell{max-width:1200px;margin:0 auto;padding-left:40px;padding-right:40px}
body[data-view="login"] .topbar,body[data-view="loading"] .topbar,body[data-view="login"] .mobile-nav,body[data-view="loading"] .mobile-nav{display:none}

/* ---------- 顶栏 ---------- */
.topbar{position:sticky;top:0;z-index:20;padding-top:var(--sat);padding-left:var(--sal);padding-right:var(--sar);background:rgba(245,244,240,.86);backdrop-filter:saturate(160%) blur(18px);-webkit-backdrop-filter:saturate(160%) blur(18px);border-bottom:1px solid var(--rule)}
.topbar-inner{display:flex;align-items:center;gap:12px;height:58px}
.brand{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;letter-spacing:.04em;white-space:nowrap}
.brand img{height:16px}
.brand small{margin-left:2px;padding-left:10px;border-left:1px solid var(--rule-2);font-size:12.5px;font-weight:400;color:var(--ink-3);letter-spacing:.08em}
.nav{display:flex;align-items:center;gap:2px;margin-left:30px}
.nav a{position:relative;padding:8px 12px;font-size:13.5px;color:var(--ink-2)}
.nav a:hover{color:var(--ink)}
.nav a.active{color:var(--ink);font-weight:600}
.nav a.active::after{content:"";position:absolute;left:12px;right:12px;bottom:-11px;height:2px;background:var(--ink);border-radius:1px}
.top-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3);white-space:nowrap}
.env-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--st-confirm)}

main{padding-top:30px;padding-bottom:80px;outline:none}
body[data-view="login"] main,body[data-view="loading"] main{padding-top:calc(30px + var(--sat))} /* 登录页没有顶栏，自己让出状态栏 */

/* ---------- 通用排版 ---------- */
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px}
.page-head h1{margin:0;font-size:28px;font-weight:600;letter-spacing:.01em}
.page-head p{margin:6px 0 0;font-size:13.5px;color:var(--ink-3)}
.eyebrow{margin:0;font-size:12px;font-weight:500;color:var(--ink-3);letter-spacing:.14em}
/* 段落标题：标题 + 延伸细线 + 右侧链接 */
.sh{display:flex;align-items:center;gap:12px;margin:34px 0 12px}
.sh h2,.sh h3{margin:0;font-size:15px;font-weight:600;letter-spacing:.02em;white-space:nowrap}
.sh .sh-note{font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.sh::after{content:"";flex:1;height:1px;background:var(--rule);order:5}
.sh a,.sh .sh-act{order:6;font-size:13px;color:var(--accent);white-space:nowrap}
.sh a:hover{text-decoration:underline}
.text-link{color:var(--accent);font-size:13.5px}
.text-link:hover{text-decoration:underline}
.empty{padding:28px 4px;color:var(--ink-3);font-size:13.5px}
.empty-card{padding:22px 22px;border:1px dashed var(--rule-2);border-radius:var(--r-lg);color:var(--ink-3);font-size:13.5px}
.empty-card b{display:block;margin-bottom:6px;font-size:15px;font-weight:600;color:var(--ink)}
.empty-card p{margin:6px 0 0}
.foot-note{margin:14px 0 0;font-size:12.5px;color:var(--ink-3)}
.sep{color:var(--ink-4);padding:0 2px}

/* 细线列表（直接落在纸面上，不再套白卡） */
.list{border-top:1px solid var(--rule)}
.li{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto 14px;gap:14px;align-items:center;min-height:56px;padding:12px 4px;border-bottom:1px solid var(--rule)}
a.li:hover,button.li:hover{background:rgba(255,255,255,.55)}
button.li{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;text-align:left}
.li.no-lead{grid-template-columns:minmax(0,1fr) auto 14px}
.li-main{min-width:0}
.li-title{font-size:15px;font-weight:500;overflow-wrap:anywhere}
.li-sub{margin-top:2px;font-size:12.5px;color:var(--ink-3);overflow-wrap:anywhere}
.li-end{display:flex;align-items:center;gap:10px;color:var(--ink-3);font-size:13px;white-space:nowrap}
.chev{color:var(--ink-4);display:flex}
.ico-tile{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--sheet);border:1px solid var(--rule);color:var(--accent)}
.ico-tile svg{width:19px;height:19px}
.person-open{display:block;min-height:44px;padding:0;border:0;background:transparent;text-align:left;font:inherit;color:inherit}
.person-open:disabled{cursor:default;opacity:1}

/* 状态胶囊 */
.pill{display:inline-flex;align-items:center;gap:6px;height:23px;padding:0 9px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;background:var(--st-pending-bg);color:var(--ink-2)}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--st-pending)}
.pill.p-progress{background:var(--st-progress-bg);color:var(--st-progress)}.pill.p-progress::before{background:var(--st-progress)}
.pill.p-confirm{background:var(--st-confirm-bg);color:var(--st-confirm)}.pill.p-confirm::before{background:var(--st-confirm)}
.pill.p-done{background:var(--st-done-bg);color:var(--st-done)}.pill.p-done::before{background:var(--st-done)}
.pill.p-risk{background:var(--st-risk-bg);color:var(--st-risk)}.pill.p-risk::before{background:var(--st-risk)}
.pill.on-cover{background:rgba(255,255,255,.92);box-shadow:0 1px 2px rgba(0,0,0,.06)}
.tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:5px;background:var(--paper-2);color:var(--ink-2);font-size:11.5px;white-space:nowrap}
.hint{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.hint::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ink-4)}
.hint.h-confirm::before{background:var(--st-confirm)}.hint.h-confirm b{color:var(--st-confirm)}
.hint.h-risk::before{background:var(--st-risk)}.hint.h-risk b{color:var(--st-risk)}
.hint.h-progress::before{background:var(--st-progress)}
.hint b{font-weight:600;color:var(--ink)}
.hints{display:flex;flex-wrap:wrap;gap:6px 18px}

/* ---------- 项目封面（照片 / CAD 平面 / 轴网） ---------- */
.cover{position:relative;overflow:hidden;border-radius:var(--r-md);background:var(--plan-bg);color:var(--plan-line)}
.cover img{width:100%;height:100%;object-fit:cover}
.cover svg{display:block;width:100%;height:100%}
.cover .pl{fill:none;stroke:var(--plan-line);stroke-width:1.3;vector-effect:non-scaling-stroke}
.cover .pl-o{fill:none;stroke:var(--accent-2);stroke-width:2.2;vector-effect:non-scaling-stroke}
.cover .pf{fill:var(--plan-fill);stroke:none}
.cover .ax{stroke:var(--plan-line-2);stroke-width:1;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
.cover .axb{fill:var(--plan-bg);stroke:var(--plan-line);stroke-width:1;vector-effect:non-scaling-stroke}
.cover .fr{fill:none;stroke:var(--plan-line-2);stroke-width:1;vector-effect:non-scaling-stroke}
.cover .axt{fill:var(--plan-line);font:500 9px var(--font)}
.cover .cap{position:absolute;right:12px;bottom:10px;font-size:11px;letter-spacing:.12em;color:var(--accent-2)}
.cover .cover-pill{position:absolute;left:10px;top:10px}
.cover.cover-sm{width:48px;height:48px;border-radius:9px}
.cover.cover-sm .cap{display:none}

/* 阶段迷你条（7 段） */
.t7{display:flex;gap:3px}
.t7 i{flex:1;height:4px;border-radius:2px;background:var(--rule)}
.t7 i.done{background:var(--accent-2)}
.t7 i.cur{background:var(--accent)}
.stage-line{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-3)}
.stage-line b{color:var(--ink);font-weight:600}
.stage-line .t7{width:112px;flex:none}
.stage-line>span:last-child{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- 首页 ---------- */
.home-top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:6px 0 18px;border-bottom:1px solid var(--rule)}
.home-top h1{margin:6px 0 0;font-size:22px;font-weight:600;letter-spacing:.02em}
.home-top .motto{margin:4px 0 0;font-size:13px;color:var(--ink-3)}
.home-top .today{text-align:right;font-size:13px;color:var(--ink-3);white-space:nowrap}
.home-top .today b{color:var(--ink);font-weight:600}
.feature{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:0;margin-top:22px;background:var(--sheet);border:1px solid var(--rule);border-radius:18px;box-shadow:var(--lift);overflow:hidden}
.feature .cover{border-radius:0;min-height:260px}
.feature-body{display:flex;flex-direction:column;gap:12px;padding:26px 28px}
.feature-body .eyebrow{display:flex;align-items:center;gap:10px}
.feature-body h2{margin:0;font-size:24px;font-weight:600;letter-spacing:.01em;overflow-wrap:anywhere}
.feature-body h2 a:hover{text-decoration:underline}
.feature-meta{font-size:13px;color:var(--ink-3)}
.feature-stage{padding:14px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.feature-stage .lbl{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px;font-size:13px;color:var(--ink-3)}
.feature-stage .lbl b{color:var(--ink);font-size:15px;font-weight:600}
.feature-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}
.home-cols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:40px;align-items:start}
.qa-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.qa{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:center;min-height:68px;padding:12px 14px;border:1px solid var(--rule);border-radius:var(--r-md);background:var(--sheet);text-align:left;box-shadow:0 1px 2px rgba(28,31,36,.03)}
.qa:hover:not([aria-disabled="true"]){border-color:var(--rule-2);background:var(--sheet-2)}
.qa .ico-tile{grid-row:1/span 2;width:34px;height:34px;border:0;background:var(--accent-wash)}
.qa b{font-size:14px;font-weight:600}
.qa span{font-size:12px;color:var(--ink-3);overflow-wrap:anywhere}
button.qa{width:100%;font:inherit}

/* 项目卡片 */
.pgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.pcard{display:flex;flex-direction:column;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;box-shadow:0 1px 2px rgba(28,31,36,.03);transition:box-shadow .15s ease,border-color .15s ease}
.pcard:hover{border-color:var(--rule-2);box-shadow:var(--lift)}
.pcard .cover{border-radius:0;aspect-ratio:16/8.5}
.pcard-body{display:grid;gap:8px;padding:14px 16px 16px}
.pcard-name{font-size:16px;font-weight:600;overflow-wrap:anywhere}
.pcard-meta{font-size:12.5px;color:var(--ink-3);overflow-wrap:anywhere}
.pcard-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;padding-top:10px;border-top:1px solid var(--rule);font-size:12.5px;color:var(--ink-3)}
.pcard-foot .todo b{color:var(--st-confirm);font-weight:600}
.pcard-foot .todo.risk b{color:var(--st-risk)}

/* ---------- 项目页 ---------- */
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:20px}
.search{display:block;width:min(320px,100%);height:38px;padding:0 14px;background:var(--sheet);border:1px solid var(--rule);border-radius:10px;font-size:14px}
.search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.search::placeholder{color:var(--ink-4)}
.seg{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:var(--paper-2)}
.seg button{min-height:32px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--ink-2);font-size:13px;white-space:nowrap}
.seg button[aria-pressed="true"]{background:var(--sheet);color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(28,31,36,.1)}
.seg .cnt{margin-left:4px;color:var(--ink-3);font-weight:400}
/* 可横向滑动的筛选片 */
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;max-width:100%}
.chips::-webkit-scrollbar{display:none}
.chips button{flex:none;display:inline-flex;align-items:center;gap:5px;min-height:32px;padding:0 12px;border:1px solid var(--rule);border-radius:999px;background:var(--sheet);color:var(--ink-2);font-size:13px;white-space:nowrap}
.chips button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.chips button .cnt{color:inherit;opacity:.62}

/* ---------- 项目档案空间：概况 ---------- */
.crumb{display:flex;align-items:center;gap:6px;margin-bottom:16px;font-size:13px;color:var(--ink-3)}
.crumb a{color:var(--accent)}
.crumb a:hover{text-decoration:underline}
.arch-head{display:grid;grid-template-columns:380px minmax(0,1fr);gap:32px;align-items:stretch;margin-bottom:6px}
.arch-head .cover{min-height:250px;border-radius:16px;border:1px solid var(--rule)}
.arch-info{display:flex;flex-direction:column;gap:12px;min-width:0;padding:4px 0}
.arch-kicker{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-3);letter-spacing:.08em}
.arch-kicker .hl{margin-left:auto;letter-spacing:0}
.arch-info h1{margin:0;font-size:30px;font-weight:600;letter-spacing:.01em;overflow-wrap:anywhere}
.facts-line{display:flex;flex-wrap:wrap;gap:4px 20px;margin:0;padding:0;font-size:13px}
.facts-line div{display:flex;gap:6px}
.facts-line dt{color:var(--ink-3)}
.facts-line dd{margin:0}
.facts-line dd.missing{color:var(--ink-4)}
.history-link{font-size:13px;color:var(--accent)}
.history-link:hover{text-decoration:underline}
.arch-stage{margin-top:auto;padding-top:14px;border-top:1px solid var(--rule)}
.arch-stage-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;font-size:13px;color:var(--ink-3)}
.arch-stage-top b{font-size:16px;font-weight:600;color:var(--ink)}
.arch-stage-top a{color:var(--accent)}
/* 横向阶段步进 */
.stepper{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0}
.stepper .st{position:relative;min-width:0;padding-top:16px;text-align:left}
.stepper .st::before{content:"";position:absolute;top:5px;left:0;right:0;height:2px;background:var(--rule)}
.stepper .st.done::before{background:var(--accent-2)}
.stepper .st.cur::before{background:linear-gradient(90deg,var(--accent) 50%,var(--rule) 50%)}
.stepper .st i{position:absolute;top:0;left:0;width:12px;height:12px;border-radius:50%;background:var(--paper);border:2px solid var(--rule-2)}
.stepper .st.done i{background:var(--accent-2);border-color:var(--accent-2)}
.stepper .st.cur i{background:var(--sheet);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.stepper .st span{display:block;font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stepper .st.cur span{color:var(--ink);font-weight:600}
.stepper .st.done span{color:var(--ink-2)}
.stepper.unset .st i{border-style:dashed}

/* 档案目录：档案夹 */
.folders{display:grid;gap:22px}
.fgroup-title{margin:0 0 10px;font-size:12px;font-weight:500;color:var(--ink-3);letter-spacing:.14em}
.fgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.folder{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 12px;align-items:center;min-height:78px;padding:14px 14px 13px;background:var(--sheet);border:1px solid var(--rule);border-radius:4px 12px 12px 12px;box-shadow:0 1px 2px rgba(28,31,36,.03);transition:border-color .15s ease,box-shadow .15s ease}
.folder::before{content:"";position:absolute;left:-1px;top:-7px;width:46px;height:8px;background:var(--sheet);border:1px solid var(--rule);border-bottom:0;border-radius:6px 8px 0 0}
.folder:hover{border-color:var(--rule-2);box-shadow:var(--lift)}
.folder:hover::before{border-color:var(--rule-2)}
.folder .fi{grid-row:1/span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--accent-wash);color:var(--accent)}
.folder .fi svg{width:18px;height:18px}
.folder b{display:flex;justify-content:space-between;gap:8px;font-size:14.5px;font-weight:600}
.folder b .n{font-size:12px;font-weight:400;color:var(--ink-3)}
.folder small{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.folder.is-empty .fi{background:var(--paper-2);color:var(--ink-4)}
.folder.is-empty small{color:var(--ink-4)}
.arch-cols{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:40px;align-items:start}

/* 最近记录流 */
.feed{border-top:1px solid var(--rule)}
.feed-item{display:grid;grid-template-columns:78px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 2px;border-bottom:1px solid var(--rule)}
.feed-when{font-size:12px;color:var(--ink-3);line-height:1.7}
.feed-what{font-size:13.5px;overflow-wrap:anywhere}
.feed-what small{display:block;margin-top:2px;font-size:12px;color:var(--ink-3)}
.feed-what .k{color:var(--ink-3)}
.feed-thumb{width:52px;height:52px;border-radius:8px;overflow:hidden;background:var(--plan-bg)}
.feed-thumb img{width:100%;height:100%;object-fit:cover}
button.feed-item{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;text-align:left}
button.feed-item:hover{background:rgba(255,255,255,.55)}
.strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.strip button{padding:0;border:0;border-radius:8px;overflow:hidden;aspect-ratio:1;background:var(--plan-bg)}
.strip img{width:100%;height:100%;object-fit:cover}

/* 项目状态与备注（通用编辑器） */
.editor{padding:14px 0 4px;border-top:1px solid var(--rule)}
.ed-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.ed-title{font-size:13px;font-weight:600;color:var(--ink-2)}
.rev{font-size:12px;color:var(--ink-4)}
.ed-vals{display:grid;gap:8px;font-size:14px}
.ed-vals>div{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:baseline}
.ed-vals .k{color:var(--ink-3);font-size:13px}
.ed-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}

/* ---------- 二级页：紧凑上下文 + 辅助目录 ---------- */
.ctx{display:flex;align-items:center;gap:12px;margin-bottom:22px;padding-bottom:14px;border-bottom:1px solid var(--rule)}
.ctx .cover{flex:none;width:44px;height:44px;border-radius:9px}
.ctx-main{min-width:0}
.ctx-crumb{font-size:12.5px;color:var(--ink-3)}
.ctx-crumb a{color:var(--accent)}
.ctx-crumb a:hover{text-decoration:underline}
.ctx-name{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:16px;font-weight:600}
.ctx-name a:hover{text-decoration:underline}
.ctx-name .stage-line{font-weight:400}
.ctx .history-link{margin-left:auto;white-space:nowrap}
.arch-layout{display:grid;grid-template-columns:168px minmax(0,1fr);gap:40px;align-items:start}
.arch-nav{position:sticky;top:84px;min-width:0}
.arch-nav-list{display:grid;gap:1px}
.arch-nav a{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:32px;padding:5px 10px;border-radius:7px;color:var(--ink-2);font-size:13.5px}
.arch-nav a:hover{color:var(--ink);background:var(--paper-2)}
.arch-nav a.active{color:var(--ink);font-weight:600;background:var(--sheet);box-shadow:inset 2px 0 0 var(--accent)}
.arch-nav a .n{font-size:12px;font-weight:400;color:var(--ink-4)}
.arch-nav-group{margin:12px 0 2px;padding:0 10px;font-size:11.5px;color:var(--ink-4);letter-spacing:.12em}
.arch-content{min-width:0}
.mod-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px}
.mod-head h2{margin:0;font-size:22px;font-weight:600;letter-spacing:.01em}
.mod-head p{margin:4px 0 0;font-size:13px;color:var(--ink-3)}
.mod-acts{display:flex;flex-wrap:wrap;gap:8px}
.mod-back{display:none}
.block{margin-bottom:26px}
.block-title{display:flex;align-items:baseline;gap:10px;margin:0 0 8px;font-size:13px;font-weight:600;color:var(--ink-2);letter-spacing:.02em}
.block-title .note{font-weight:400;color:var(--ink-3)}
.block-title a{margin-left:auto;font-weight:400;color:var(--accent)}

/* ---------- 施工进度（项目阶段，不是清单百分比） ---------- */
.now-line{margin:0 0 20px;font-size:15px;color:var(--ink-2)}
.now-line b{color:var(--ink);font-weight:600}
.vsteps{list-style:none;margin:0;padding:0}
.vstep{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:14px;padding:0 0 22px}
.vstep::before{content:"";position:absolute;left:8px;top:22px;bottom:2px;width:2px;background:var(--rule)}
.vstep:last-child::before{display:none}
.vstep.done::before{background:var(--accent-2)}
.vstep .dot{position:relative;z-index:1;width:18px;height:18px;margin-top:2px;border-radius:50%;background:var(--paper);border:2px solid var(--rule-2)}
.vstep.done .dot{background:var(--accent-2);border-color:var(--accent-2)}
.vstep.done .dot::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.vstep.cur .dot{background:var(--sheet);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.vstep.cur .dot::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--accent)}
.vstep-name{font-size:16px;font-weight:600}
.vstep.upcoming .vstep-name{font-weight:500;color:var(--ink-2)}
.vstep-when{margin-top:2px;font-size:13px;color:var(--ink-2)}
.vstep.upcoming .vstep-when{color:var(--ink-4)}
.vstep-aux{margin-top:4px;font-size:12px;color:var(--ink-3)}
.vstep-state{font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.vstep.cur .vstep-state{color:var(--accent);font-weight:600}
.vstep.cur .vstep-body{padding:12px 14px;margin:-12px 0 0 -14px;background:var(--sheet);border:1px solid var(--rule);border-radius:12px;box-shadow:var(--lift)}
.stage-log{border-top:1px solid var(--rule)}
.stage-log li{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;padding:10px 2px;border-bottom:1px solid var(--rule);font-size:13px}
.stage-log .when{color:var(--ink-3)}
.stage-opts{display:grid;gap:6px}
.stage-opts button{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:0 14px;border:1px solid var(--rule);border-radius:10px;background:var(--sheet);text-align:left;font-size:14.5px}
.stage-opts button small{font-size:12px;color:var(--ink-3)}
.stage-opts button[aria-pressed="true"]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);font-weight:600}

/* ---------- 施工清单 ---------- */
.ck-summary{display:flex;flex-wrap:wrap;gap:4px 16px;margin:-4px 0 14px;font-size:13px;color:var(--ink-3)}
.ck-summary b{color:var(--ink);font-weight:600}
.ck-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:12px}
.ck-hint{margin:0 0 12px;padding:10px 12px;border-radius:9px;background:var(--accent-wash);font-size:12.5px;color:var(--ink-2)}
.ck-hint button{margin-left:6px;padding:0;border:0;background:none;color:var(--accent);font-size:12.5px}
.ck-groups{border-top:1px solid var(--rule)}
.ck-group{border-bottom:1px solid var(--rule)}
.ck-ghead{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:54px;padding:10px 4px;border:0;background:transparent;text-align:left}
.ck-ghead:hover{background:rgba(255,255,255,.5)}
.ck-ghead .caret{display:flex;color:var(--ink-3);transition:transform .18s ease}
.ck-ghead[aria-expanded="true"] .caret{transform:rotate(90deg)}
.ck-gname{display:flex;align-items:baseline;gap:8px;min-width:0;font-size:15.5px;font-weight:600;overflow-wrap:anywhere}
.ck-gname .cnt{font-size:13px;font-weight:400;color:var(--ink-3)}
.ck-gname .kind{font-size:11.5px;font-weight:400;color:var(--ink-3)}
.ck-gmeta{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.ck-gmeta .warn{color:var(--st-confirm)}
.ck-gmeta .risk{color:var(--st-risk)}
.ck-body{padding:0 0 10px 28px}
.ck-sub{display:flex;align-items:center;gap:8px;padding:10px 0 4px;font-size:12px;font-weight:600;color:var(--ink-3);letter-spacing:.06em}
.ck-sub::after{content:"";flex:1;height:1px;background:var(--rule)}
.ck-item{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:2px 8px;min-height:52px;background:var(--sheet);border:1px solid var(--rule);border-radius:10px;margin-top:6px;padding:2px 12px 2px 0}
.ck-item.is-done{background:transparent}
.ck-item.is-sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.ck-item[data-sync] .pill{opacity:.55} /* 已在界面生效、正在与服务器同步 */
[data-pending]{opacity:.62} .pend{color:var(--ink-3);font-size:12px;font-weight:400} /* 同上：记录、验收、人员、阶段 */
.ck-check{display:grid;place-items:center;width:40px;height:44px;border:0;background:transparent;padding:0}
.ck-check i{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--rule-2);background:var(--sheet);transition:background .15s ease,border-color .15s ease}
.ck-check:hover i{border-color:var(--st-done)}
.ck-check[aria-checked="true"] i{border-color:var(--st-done);background:var(--st-done)}
.ck-check[aria-checked="true"] i::after{content:"";width:5px;height:10px;margin-top:-2px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.ck-check:disabled{cursor:default;opacity:.55}
.ck-sel i{border-radius:5px}
.ck-sel[aria-checked="true"] i{border-color:var(--accent);background:var(--accent)}
.ck-sel:hover i{border-color:var(--accent)}
.ck-open{display:flex;flex-direction:column;justify-content:center;align-self:stretch;min-height:46px;min-width:0;padding:9px 0;border:0;background:transparent;text-align:left}
.ck-name{font-size:14.5px;line-height:1.4;overflow-wrap:anywhere}
.ck-item.is-done .ck-name{color:var(--ink-3)}
.ck-meta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 12px;margin-top:3px;font-size:12px;color:var(--ink-3)}
.ck-meta .ico{display:inline-flex;align-items:center;gap:3px}
.ck-meta svg{width:13px;height:13px}
.ck-meta .acc-pass{color:var(--st-done)}.ck-meta .acc-fail{color:var(--st-risk)}
.ck-lastnote{display:block;margin-top:3px;font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.ck-empty{padding:12px 0;font-size:13px;color:var(--ink-3)}
.ck-add{display:inline-flex;align-items:center;gap:4px;min-height:36px;margin-top:6px;padding:0 4px;border:0;background:transparent;color:var(--accent);font-size:13px}
.ck-gsel{padding:0 8px;min-height:30px;border:1px solid var(--rule);border-radius:7px;background:var(--sheet);font-size:12px;color:var(--ink-2)}
.org-bar{position:sticky;bottom:16px;z-index:15;display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-top:18px;padding:12px 14px;background:var(--ink);color:#fff;border-radius:14px;box-shadow:var(--pop)}
.org-bar b{font-weight:600}
.org-bar select{width:auto;min-width:160px;background:#fff;color:var(--ink);border:0}
.org-bar .btn{background:#fff;color:var(--ink)}
.org-bar .btn-ghost{background:transparent;color:#C9D3DA}
.org-bar .grow{flex:1}
.org-bar .msg{flex-basis:100%;margin:0}

/* ---------- 抽屉 / 底部面板 ---------- */
.drawer{position:fixed;inset:0;z-index:50}
.drawer-backdrop{position:absolute;inset:0;width:100%;border:0;background:rgba(28,31,36,.24)}
.drawer-card{position:absolute;top:12px;right:12px;bottom:12px;display:flex;flex-direction:column;width:min(480px,calc(100% - 24px));background:var(--paper);border-radius:18px;box-shadow:var(--pop);overflow:hidden}
.drawer-card.wide{width:min(760px,calc(100% - 24px))}
.drawer-top{display:flex;align-items:flex-start;gap:12px;padding:18px 20px 14px;border-bottom:1px solid var(--rule);background:var(--sheet)}
.drawer-top h2{margin:0;font-size:18px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}
.drawer-top p{margin:3px 0 0;font-size:12.5px;color:var(--ink-3)}
.drawer-top .x{flex:none;display:grid;place-items:center;width:34px;height:34px;margin-left:auto;border:0;border-radius:50%;background:var(--paper-2);color:var(--ink-2);font-size:18px;line-height:1}
.drawer-body{flex:1;overflow-y:auto;padding:18px 20px 28px;-webkit-overflow-scrolling:touch}
.drawer-body .block{margin-bottom:24px}
.drawer-foot{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;padding:12px 20px calc(12px + var(--sab));border-top:1px solid var(--rule);background:var(--sheet)}
.status-seg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;padding:3px;border-radius:11px;background:var(--paper-2)}
.status-seg button{min-height:40px;padding:0 4px;border:0;border-radius:8px;background:transparent;color:var(--ink-2);font-size:13.5px}
.status-seg button[aria-pressed="true"]{background:var(--sheet);color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(28,31,36,.12)}
.status-seg button:disabled{cursor:not-allowed;opacity:.6}
.closure{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:13px;color:var(--ink-3)}
.closure.on{color:var(--st-done)}
.kv{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px 12px;margin:0;padding:12px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);font-size:14px}
.kv dt{color:var(--ink-3)}
.kv dd{margin:0;overflow-wrap:anywhere}
.kv dd select{padding:6px 10px}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{position:relative;padding:8px 0 10px 20px}
.timeline li::before{content:"";position:absolute;left:3px;top:15px;width:7px;height:7px;border-radius:50%;background:var(--rule-2)}
.timeline li::after{content:"";position:absolute;left:6px;top:26px;bottom:-8px;border-left:1px solid var(--rule)}
.timeline li:last-child::after{display:none}
.timeline li.none{padding-left:0}
.timeline li.none::before{display:none}
.timeline .when{font-size:12px;color:var(--ink-3)}
.timeline .what{margin-top:2px;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}
.timeline li.legacy::before{background:var(--ink-4)}
.timeline li.legacy .when::after{content:" · 原备注";color:var(--ink-4)}
.timeline li.acc-passed::before{background:var(--st-done)}
.timeline li.acc-failed::before{background:var(--st-risk)}
.timeline .thumbs{margin-top:6px}
.composer{display:grid;gap:8px;margin-top:10px}
.composer textarea{min-height:64px}
.composer-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center}
.composer-actions .grow{flex:1}
.placeholder-note{padding:12px 0;font-size:13px;color:var(--ink-3)}
.thumbs{display:flex;flex-wrap:wrap;gap:6px}
.thumbs button,.thumbs .th{position:relative;width:64px;height:64px;padding:0;border:0;border-radius:8px;overflow:hidden;background:var(--plan-bg)}
.thumbs img{width:100%;height:100%;object-fit:cover}
.thumbs .th .x{position:absolute;top:2px;right:2px;width:22px;height:22px;border:0;border-radius:50%;background:rgba(28,31,36,.6);color:#fff;font-size:13px;line-height:1}
.photo-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}

/* 选项片（单选：空间 / 阶段 / 类型） */
.opts{display:flex;flex-wrap:wrap;gap:6px}
.opts button{min-height:34px;padding:0 12px;border:1px solid var(--rule);border-radius:999px;background:var(--sheet);color:var(--ink-2);font-size:13px;white-space:nowrap}
.opts button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.opts button.dim{color:var(--ink-3)}
.field{margin-top:14px}
.field>.lbl{display:block;margin:0 0 7px;font-size:13px;color:var(--ink-2)}
.field>.lbl small{color:var(--ink-3)}

/* ---------- 新增菜单（手机底部面板 / 桌面弹窗） ---------- */
.mobile-nav{display:none}
.sheet{position:fixed;inset:0;z-index:40}
.sheet-backdrop{position:absolute;inset:0;width:100%;border:0;background:rgba(28,31,36,.24)}
.sheet-card{position:absolute;top:84px;right:max(24px,calc((100% - 1200px) / 2 + 40px));width:420px;max-height:calc(100vh - 110px);overflow-y:auto;padding:18px 20px 20px;border-radius:18px;background:var(--paper);box-shadow:var(--pop)}
.sheet-handle{display:none}
.sheet-card h2{margin:0 0 4px;font-size:18px}
.sheet-card>p{margin:4px 0 14px;color:var(--ink-3);font-size:13px}
.sheet-account{font-size:15px;color:var(--ink)!important}
.sheet-card>.btn{width:100%;margin-top:14px}
.sheet-card>.btn+.btn{margin-top:8px}
.account-backup{padding:8px 10px;border-radius:8px;background:var(--accent-wash);color:var(--ink-2)!important}
.account-backup.warn{background:var(--st-risk-bg);color:var(--st-risk)!important}
.chip-btn{padding:0;border:0;background:transparent;cursor:pointer}
.chip-btn:hover{color:var(--ink)}
.ns-proj{margin:10px 0 16px}
.ns-proj .lbl{margin-bottom:8px;font-size:12.5px;color:var(--ink-3)}
.ns-acts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ns-act{display:grid;justify-items:start;gap:8px;min-height:100px;padding:14px;border:1px solid var(--rule);border-radius:14px;background:var(--sheet);text-align:left;box-shadow:0 1px 2px rgba(28,31,36,.03)}
.ns-act:hover:not(:disabled){border-color:var(--rule-2)}
.ns-act:disabled{opacity:.45;cursor:not-allowed}
.ns-act .ico-tile{width:36px;height:36px;border:0;background:var(--accent-wash)}
.ns-act.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.ns-act.primary .ico-tile{background:rgba(255,255,255,.16);color:#fff}
.ns-act.primary small{color:rgba(255,255,255,.78)}
.ns-act b{font-size:15px;font-weight:600}
.ns-act small{display:block;margin-top:-4px;font-size:12px;color:var(--ink-3)}
.ns-more{display:flex;justify-content:center;margin-top:10px}

/* ---------- 现场影像 ---------- */
.ph-sec{margin-bottom:24px}
.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.ph{position:relative;display:block;width:100%;padding:0;border:0;border-radius:10px;overflow:hidden;aspect-ratio:1;background:var(--plan-bg);text-align:left}
.ph img{width:100%;height:100%;object-fit:cover;transition:transform .25s ease}
.ph:hover img{transform:scale(1.03)}
.ph .cap{position:absolute;left:0;right:0;bottom:0;padding:18px 8px 6px;background:linear-gradient(transparent,rgba(20,22,26,.55));color:#fff;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph .badge{position:absolute;top:6px;left:6px;padding:1px 6px;border-radius:5px;background:rgba(255,255,255,.9);color:var(--ink-2);font-size:11px}
.viewer-img{display:grid;place-items:center;width:calc(100% + 40px);margin:-18px -20px 16px;padding:0;border:0;background:#16181C;min-height:240px;cursor:zoom-in}
.viewer-img img{max-height:62vh;width:auto;max-width:100%}
.up-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.up{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:1;background:var(--plan-bg)}
.up img{width:100%;height:100%;object-fit:cover}
.up .st{position:absolute;left:0;right:0;bottom:0;padding:3px 6px;font-size:11px;color:#fff;background:rgba(20,22,26,.6)}
.up.done .st{background:rgba(61,113,85,.85)}
.up.error .st{background:rgba(162,72,61,.9)}
.up .x{position:absolute;top:4px;right:4px;width:24px;height:24px;border:0;border-radius:50%;background:rgba(20,22,26,.6);color:#fff;line-height:1}
.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px}
.pick{position:relative;padding:0;border:2px solid transparent;border-radius:9px;overflow:hidden;aspect-ratio:1;background:var(--plan-bg)}
.pick img{width:100%;height:100%;object-fit:cover}
.pick[aria-pressed="true"]{border-color:var(--accent)}
.pick[aria-pressed="true"]::after{content:"✓";position:absolute;top:4px;right:4px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px}
.item-pick{max-height:300px;overflow-y:auto;border-top:1px solid var(--rule)}
.item-pick button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:48px;padding:8px 4px;border:0;border-bottom:1px solid var(--rule);background:transparent;text-align:left;font-size:14px}
.item-pick button small{display:block;font-size:12px;color:var(--ink-3)}
.item-pick button[aria-pressed="true"]{background:var(--accent-wash);box-shadow:inset 3px 0 0 var(--accent)}

/* ---------- 日报 / 周报 ---------- */
.rep{display:grid;grid-template-columns:120px minmax(0,1fr);gap:24px;padding:20px 0;border-bottom:1px solid var(--rule)}
.rep:first-child{border-top:1px solid var(--rule)}
.rep-date b{display:block;font-size:20px;font-weight:600}
.rep-date span{display:block;margin-top:2px;font-size:12.5px;color:var(--ink-3)}
.rep-date .tag{margin-top:8px}
.rep-sec{margin-bottom:12px}
.rep-sec h4{margin:0 0 4px;font-size:12px;font-weight:600;color:var(--ink-3);letter-spacing:.08em}
.rep-sec ul{margin:0;padding-left:18px}
.rep-sec li{margin:2px 0;overflow-wrap:anywhere}
.rep-sec p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.rep-meta{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:12.5px;color:var(--ink-3)}

/* ---------- 材料资料 ---------- */
.mat-cat{border-bottom:1px solid var(--rule)}
.mat-cat:first-child{border-top:1px solid var(--rule)}
.mat-head{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:52px;padding:8px 4px;border:0;background:transparent;text-align:left}
.mat-head .caret{display:flex;color:var(--ink-3);transition:transform .18s ease}
.mat-head[aria-expanded="true"] .caret{transform:rotate(90deg)}
.mat-head b{font-size:15px;font-weight:600}
.mat-head span{font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.mat-body{padding:0 0 12px}
.mat-rows{display:none}
.mat-row{display:grid;grid-template-columns:minmax(0,1fr) auto 14px;gap:10px;align-items:center;width:100%;min-height:54px;padding:8px 4px 8px 28px;border:0;border-top:1px solid var(--rule);background:transparent;text-align:left}
.mat-row b{display:block;font-size:14px;font-weight:500;overflow-wrap:anywhere}
.mat-row small{display:block;font-size:12px;color:var(--ink-3);overflow-wrap:anywhere}
.mat-row .price{font-size:13.5px;white-space:nowrap}
.mat-row small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lib-bar{margin-bottom:8px}
.lib-note{margin:0 0 14px;font-size:13px;color:var(--ink-3)}
.lib-name{padding:0;border:0;background:transparent;text-align:left;font-size:13.5px;font-weight:500}
.lib-table td.lib-method{max-width:520px;color:var(--ink-2)}
.lib-table td.lib-method.missing{color:var(--ink-4)}
.lib-parts{grid-template-columns:96px minmax(0,1fr);margin-top:12px;border-top:0}
.lib-tag{margin:12px 0 0;font-size:12.5px;color:var(--ink-3)}
.lib-foot{margin:14px 0 0;font-size:12px;color:var(--ink-4)}

/* ---------- 修改历史（审计档案） ---------- */
.hist-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:16px}
.hist-filters select{width:auto;min-width:130px;padding:7px 10px}
.hist-day{margin:18px 0 6px;font-size:12px;font-weight:600;color:var(--ink-3);letter-spacing:.08em}
.hist-rows{border-top:1px solid var(--rule)}
.h-item{border-bottom:1px solid var(--rule)}
.h-sum{display:grid;grid-template-columns:52px minmax(0,1fr) 18px;gap:12px;align-items:center;width:100%;min-height:50px;padding:8px 4px;border:0;background:transparent;text-align:left}
.h-sum:hover{background:rgba(255,255,255,.5)}
.h-sum .t{font-size:12.5px;color:var(--ink-3)}
.h-sum .s{font-size:13.5px;overflow-wrap:anywhere}
.h-sum .s small{display:block;font-size:12px;color:var(--ink-3)}
.h-sum .caret{display:flex;color:var(--ink-4);transition:transform .18s ease}
.h-sum[aria-expanded="true"] .caret{transform:rotate(90deg)}
.h-detail{display:grid;gap:10px;padding:4px 4px 14px 68px}
.h-diff{display:grid;grid-template-columns:48px minmax(0,1fr);gap:4px 10px;font-size:13px}
.h-diff dt{color:var(--ink-3)}
.h-diff dd{margin:0;overflow-wrap:anywhere;white-space:pre-wrap}
.h-old{color:var(--ink-3);text-decoration:line-through}
.h-tag{margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--paper-2);font-size:11.5px;color:var(--ink-2)}
.h-acts{display:flex;flex-wrap:wrap;gap:8px}

/* ---------- 表格 / 表单 / 按钮 / 提示 ---------- */
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.facts>div{min-width:0;padding:12px 16px 12px 0}
.facts>div+div{padding-left:16px;border-left:1px solid var(--rule)}
.fact-label{display:block;margin-bottom:2px;font-size:12px;color:var(--ink-3)}
.fact-value{display:block;font-size:17px;font-weight:600;overflow-wrap:anywhere}
.table-wrap{max-width:100%;overflow-x:auto;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-md)}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{padding:9px 14px;border-bottom:1px solid var(--rule);vertical-align:top;text-align:left}
th{font-size:12px;font-weight:500;color:var(--ink-3);white-space:nowrap;background:var(--sheet-2)}
th.r,td.r{text-align:right}
td.r{font-variant-numeric:tabular-nums;white-space:nowrap}
tbody tr:last-child td{border-bottom:0}
td.missing{color:var(--ink-4)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:0 16px;border-radius:9px;border:1px solid var(--rule);background:var(--sheet);color:var(--ink);font-size:13.5px;font-weight:500;white-space:nowrap}
.btn svg{width:16px;height:16px}
.btn:hover:not(:disabled){border-color:var(--rule-2);background:var(--sheet-2)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-primary:hover:not(:disabled){background:#000;border-color:#000}
.btn-accent{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-accent:hover:not(:disabled){background:#2B4A60;border-color:#2B4A60}
.btn-ghost{background:transparent;border-color:transparent;color:var(--accent)}
.btn-ghost:hover:not(:disabled){background:var(--accent-wash);border-color:transparent}
.btn-ok{background:var(--st-done-bg);border-color:transparent;color:var(--st-done)}
.btn-ok:hover:not(:disabled){background:#DCEBE1}
.btn-warn{background:var(--st-risk-bg);border-color:transparent;color:var(--st-risk)}
.btn-warn:hover:not(:disabled){background:#F2E0DC}
.btn-sm{min-height:30px;padding:0 12px;font-size:13px}
.top-new{gap:4px;padding:0 14px 0 10px}
label{display:block;margin:12px 0 6px;font-size:13px;color:var(--ink-2)}
input[type=text],input[type=url],input[type=password],input[type=date],input[type=tel],input[type=number],input[type=search]:not(.search),select,textarea{display:block;width:100%;padding:9px 12px;background:var(--sheet);border:1px solid var(--rule-2);border-radius:9px;font-size:14px}
input[type=text]:focus,input[type=url]:focus,input[type=password]:focus,input[type=date]:focus,input[type=tel]:focus,input[type=number]:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
textarea{min-height:84px;resize:vertical}
.msg{margin-top:10px;padding:10px 12px;border-radius:9px;font-size:13px;background:var(--paper-2);overflow-wrap:anywhere}
.msg-ok{color:var(--st-done);background:var(--st-done-bg)}
.msg-err{color:var(--st-risk);background:var(--st-risk-bg)}
.msg-load{color:var(--ink-2)}
.conflict{margin-top:12px;padding:14px 16px;border-radius:10px;background:var(--st-risk-bg);color:var(--st-risk);box-shadow:inset 0 0 0 1px var(--st-risk-line)}
.conflict h4{margin:0 0 6px;font-size:14px}
.conflict dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:10px 0}
.conflict dt{color:var(--ink-3)}
.conflict dd{margin:0;color:var(--ink);overflow-wrap:anywhere;white-space:pre-wrap}
.login-card{max-width:380px;margin:10vh auto 0;padding:32px 28px;background:var(--sheet);border:1px solid var(--rule);border-radius:20px;box-shadow:var(--lift)}
.login-card .login-mark{height:26px;margin-bottom:20px}
.login-card h1{margin:0 0 4px;font-size:22px;letter-spacing:.02em}
.login-server{margin-top:14px;font-size:13px;color:var(--ink-3)}
.login-server summary{display:inline-flex;align-items:center;min-height:40px;cursor:pointer;list-style:none}
.login-server summary::-webkit-details-marker{display:none}
.login-server summary::after{content:"";width:6px;height:6px;margin-left:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.login-server[open] summary::after{transform:rotate(-135deg) translateY(-1px)}
.login-card .btn{margin-top:18px;width:100%;min-height:44px}
.login-card .check{display:flex;gap:8px;align-items:center;margin-top:14px;font-size:13.5px;color:var(--ink-2)}
.login-card .check input{width:auto;margin:0}

@media (min-width:761px) and (max-width:1100px){
  .shell{padding-left:28px;padding-right:28px}
  .pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .arch-head{grid-template-columns:300px minmax(0,1fr);gap:24px}
  .fgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .arch-cols,.home-cols{grid-template-columns:1fr;gap:10px}
  .arch-layout{grid-template-columns:150px minmax(0,1fr);gap:24px}
  .feature{grid-template-columns:1fr}
  .feature .cover{min-height:200px}
}
@media (max-width:760px){
  html,body{font-size:15px}
  .shell{padding-left:16px;padding-right:16px}
  .topbar-inner{height:52px}
  .brand small,.nav,.top-right .chip,#logout,.top-new{display:none}
  main{padding-top:14px;padding-bottom:calc(96px + var(--sab))}
  .page-head{display:block;margin-bottom:14px}
  .page-head h1{font-size:26px}
  .sh{margin:26px 0 10px}
  .li{min-height:60px;grid-template-columns:auto minmax(0,1fr) 14px;row-gap:4px}
  .li>.ico-tile,.li>.cover{grid-row:1/span 2}
  .li:not(.no-lead)>:nth-child(3){grid-column:2;grid-row:2}
  .li:not(.no-lead)>:last-child{grid-column:3;grid-row:1/span 2}
  .li.no-lead{grid-template-columns:minmax(0,1fr) 14px}
  .li.no-lead>:nth-child(2){grid-column:1;grid-row:2}
  .li.no-lead>:last-child{grid-column:2;grid-row:1/span 2}
  .li-end{justify-content:flex-start}
  /* 首页：品牌一行，首屏就是当前项目 + 现场操作 */
  .home-top{padding:2px 0 12px;align-items:center}
  .home-top h1{font-size:17px;margin-top:2px}
  .home-top .motto{display:none}
  .home-top .today{font-size:12px}
  .feature{grid-template-columns:1fr;margin-top:14px;border-radius:16px}
  .feature .cover{min-height:0;aspect-ratio:16/7}
  .feature-body{gap:10px;padding:14px 16px 16px}
  .feature-body h2{font-size:20px}
  .feature-stage{padding:10px 0}
  .feature-acts .btn{flex:1 1 30%;min-height:42px;padding:0 8px}
  .home-cols{grid-template-columns:1fr;gap:0}
  .qa{min-height:62px;padding:10px 12px}
  /* 项目：卡片变为带封面缩略图的细线列表 */
  .pgrid{grid-template-columns:1fr;gap:0;border-top:1px solid var(--rule)}
  .pcard{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;align-items:start;padding:12px 2px;background:transparent;border:0;border-bottom:1px solid var(--rule);border-radius:0;box-shadow:none}
  .pcard:hover{box-shadow:none;background:rgba(255,255,255,.5)}
  .pcard .cover{width:76px;height:76px;aspect-ratio:auto;border-radius:10px}
  .pcard .cover .cover-pill,.pcard .cover .cap{display:none}
  .pcard-body{gap:5px;padding:0}
  .pcard-name{font-size:15.5px}
  .pcard-foot{padding-top:0;border-top:0}
  .pcard .pill-m{display:inline-flex}
  .toolbar{display:grid;grid-template-columns:minmax(0,1fr);margin-bottom:14px}
  .search{width:100%;height:42px}
  .seg{overflow-x:auto;max-width:100%}
  .seg button{min-height:40px}
  /* 档案首页 */
  .crumb{margin-bottom:10px}
  .arch-head{grid-template-columns:1fr;gap:14px}
  .arch-head .cover{min-height:0;aspect-ratio:16/8;border-radius:14px}
  .arch-info{gap:9px;padding:0}
  .arch-info h1{font-size:24px}
  .arch-kicker .hl{display:inline-flex;align-items:center;min-height:40px}
  .stepper .st span{font-size:10.5px;letter-spacing:-.02em;text-overflow:clip}
  .fgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px}
  .folder{grid-template-columns:minmax(0,1fr);gap:6px;min-height:92px;padding:12px}
  .folder .fi{grid-row:auto;width:30px;height:30px}
  .folder b{font-size:14px}
  .folders{gap:18px}
  .arch-cols{grid-template-columns:1fr;gap:0}
  .feed-item{grid-template-columns:minmax(0,1fr) auto;gap:2px 10px}
  .feed-when{grid-column:1}
  .feed-what{grid-column:1}
  .feed-thumb{grid-column:2;grid-row:1/span 2}
  /* 二级页：只留返回 + 模块标题 */
  .ctx{display:none}
  .arch-layout{display:block}
  .arch-nav{display:none}
  .mod-back{display:inline-flex;align-items:center;gap:4px;min-height:40px;margin:-4px 0 2px -4px;color:var(--accent);font-size:14.5px;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .mod-head{display:block;margin-bottom:14px}
  .mod-head h2{font-size:23px}
  .mod-acts{margin-top:12px}
  .mod-acts .btn{flex:1 1 30%;min-height:42px}
  .history-link,.block-title a,.text-link,.foot-note a,.sh a{display:inline-flex;align-items:center;min-height:40px}
  .block-title{align-items:center;min-height:40px;margin-bottom:4px}
  .facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .facts>div:nth-child(3){padding-left:0;border-left:0}
  .facts>div:nth-child(n+3){border-top:1px solid var(--rule)}
  .vstep{grid-template-columns:24px minmax(0,1fr);row-gap:0}
  .vstep-state{grid-column:2;grid-row:1;justify-self:end}
  .vstep-body{grid-column:2;grid-row:1}
  .vstep.cur .vstep-body{margin:-10px 0 0 -10px;padding:10px 12px}
  .stage-log li{grid-template-columns:1fr;gap:2px}
  .btn{min-height:44px}
  .btn-sm{min-height:40px}
  .ed-actions .btn{flex:1 1 40%}
  .ck-bar{display:grid;grid-template-columns:minmax(0,1fr)}
  .ck-bar .seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr}
  .chips{flex-wrap:wrap;overflow:visible}
  .chips button{min-height:40px}
  .ck-add,.ck-gsel{min-height:40px}
  .arch-stage-top a{display:inline-flex;align-items:center;min-height:40px}
  .ck-body{padding-left:0}
  .ck-item{padding-right:10px}
  .ck-gmeta .done-n{display:none}
  .org-bar{bottom:calc(84px + var(--sab))}
  .rep{grid-template-columns:1fr;gap:10px}
  .rep-date b{display:inline;font-size:17px}
  .rep-date span{display:inline;margin-left:8px}
  .h-detail{padding-left:4px}
  .h-sum{grid-template-columns:44px minmax(0,1fr) 18px}
  .hist-filters{display:grid;grid-template-columns:1fr 1fr}
  .hist-filters .seg{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr)}
  .hist-filters select{width:100%;min-width:0}
  .ph-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
  .ph{border-radius:6px}
  .ph .cap{display:none}
  .viewer-img{width:calc(100% + 32px);margin:-18px -16px 14px}
  .drawer-body{padding:16px 16px 24px}
  .drawer-card,.drawer-card.wide{top:auto;right:0;bottom:0;left:0;width:auto;max-height:calc(100% - var(--sat) - 12px);border-radius:18px 18px 0 0}
  .drawer-top::before{content:"";position:absolute;top:6px;left:50%;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--rule-2)}
  .drawer-top{position:relative;padding:22px 16px 12px}
  .drawer-top .x{width:40px;height:40px}
  .drawer-foot{padding:10px 16px calc(10px + var(--sab))}
  .drawer-foot .btn{flex:1}
  .opts button{min-height:40px}
  .mat-row{padding-left:4px}
  /* 底部导航：中间「新增」是现场入口，不是普通导航项 */
  .mobile-nav{position:fixed;right:0;bottom:0;left:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);align-items:end;padding:6px calc(6px + var(--sar)) calc(6px + var(--sab)) calc(6px + var(--sal));background:rgba(250,249,246,.94);backdrop-filter:saturate(160%) blur(18px);-webkit-backdrop-filter:saturate(160%) blur(18px);border-top:1px solid var(--rule)}
  .mobile-nav a,.mobile-nav button{display:grid;justify-items:center;gap:2px;min-width:0;min-height:48px;padding:4px 0;border:0;background:transparent;color:var(--ink-3);font-size:10.5px;line-height:1.2}
  .mobile-nav span:first-child{line-height:22px}
  .mobile-nav a.active{color:var(--ink);font-weight:600}
  .mobile-nav button:focus-visible{outline-offset:-2px}
  .mobile-nav #mobile-new{color:var(--ink);font-weight:600}
  .mobile-nav #mobile-new span:first-child{display:grid;place-items:center;width:46px;height:46px;margin-top:-18px;border-radius:50%;background:var(--accent);color:#fff;box-shadow:0 6px 16px rgba(52,86,111,.34),0 0 0 4px var(--paper)}
  .sheet-card{top:auto;right:0;bottom:0;left:0;width:auto;max-height:calc(100% - var(--sat) - 24px);padding:10px 16px calc(20px + var(--sab));border-radius:18px 18px 0 0}
  .sheet-handle{display:block;width:36px;height:4px;margin:0 auto 14px;border-radius:2px;background:var(--rule-2)}
  .ns-act{min-height:96px}
}
/* 人员行：姓名区打开档案，右侧「拨打」直接呼叫（手机与桌面同一布局） */
.li.no-lead.person-row{grid-template-columns:minmax(0,1fr) auto}
.li.no-lead.person-row>.person-open{grid-column:1;grid-row:1}
.li.no-lead.person-row>a{grid-column:2;grid-row:1;align-self:center}
.li.no-lead.person-row>span:last-child{display:none}
.snack{position:fixed;left:50%;bottom:calc(24px + var(--sab));z-index:70;max-width:min(520px,calc(100% - 32px));transform:translateX(-50%);padding:10px 16px;border-radius:10px;background:var(--ink);color:#fff;font-size:13.5px;box-shadow:var(--pop);overflow-wrap:anywhere}
.snack.err{background:var(--st-risk)}
@media (max-width:760px){.snack{bottom:calc(84px + var(--sab))}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- 全屏查看器：图片缩放 / PDF 阅读 ---------- */
.zv{position:fixed;inset:0;z-index:55;display:flex;flex-direction:column;background:#141619;color:#fff}
.zv-top{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--sat)) calc(12px + var(--sar)) 10px calc(14px + var(--sal));background:rgba(20,22,25,.92)}
.zv-title{flex:1;min-width:0}
.zv-title b{display:block;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zv-title small{display:block;font-size:12px;color:rgba(255,255,255,.62);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zv-x{flex:none;width:40px;height:40px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:20px;line-height:1}
.zv-btn{flex:none;min-height:36px;padding:0 12px;border:1px solid rgba(255,255,255,.22);border-radius:9px;background:rgba(255,255,255,.08);color:#fff;font-size:13px;white-space:nowrap}
.zv-btn:disabled{opacity:.4}
.zv-stage{position:relative;flex:1;overflow:hidden;touch-action:none;display:grid;place-items:center;cursor:grab}
.zv-img{max-width:100%;max-height:100%;transform-origin:center center;user-select:none;-webkit-user-drag:none;will-change:transform}
.zv-msg{position:absolute;inset:auto 0 50% 0;margin:0;text-align:center;font-size:14px;color:rgba(255,255,255,.72)}
.zv-nav{position:absolute;top:50%;z-index:2;width:44px;height:64px;margin-top:-32px;border:0;background:rgba(0,0,0,.28);color:#fff;font-size:30px}
.zv-nav:disabled{display:none}
.zv-prev{left:calc(0px + var(--sal));border-radius:0 10px 10px 0}
.zv-next{right:calc(0px + var(--sar));border-radius:10px 0 0 10px}
.zv-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px calc(12px + var(--sar)) calc(10px + var(--sab)) calc(12px + var(--sal));background:rgba(20,22,25,.92)}
.zv-hint{margin-left:auto;font-size:12px;color:rgba(255,255,255,.6)}
.zv-pdf{background:#3A3D42}
.pv-scroll{position:relative;flex:1;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.pv-pages{padding:8px;transform-origin:0 0;margin:0 auto}
.pv-page{position:relative;margin:0 auto 12px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.pv-page canvas{display:block}
.pv-no{position:absolute;top:50%;left:0;right:0;text-align:center;color:#aaa;font-size:13px}
.pv-page.done .pv-no{display:none}

/* ---------- 图纸方案 ---------- */
.fl-sec{margin-bottom:10px}
.fl-row{display:grid;grid-template-columns:64px minmax(0,1fr) 14px;gap:12px;align-items:center;width:100%;min-height:72px;padding:8px 4px;border:0;border-top:1px solid var(--rule);background:transparent;text-align:left}
.fl-row:last-child{border-bottom:1px solid var(--rule)}
.fl-row.is-void{opacity:.6}
.fl-thumb{display:grid;place-items:center;width:64px;height:56px;border-radius:8px;overflow:hidden;background:var(--paper-2)}
.fl-thumb img{width:100%;height:100%;object-fit:cover}
.fl-main b{display:block;font-size:14.5px;font-weight:500;overflow-wrap:anywhere}
.fl-main small{display:block;margin-top:2px;font-size:12px;color:var(--ink-3);overflow-wrap:anywhere}
.fl-main .fl-note{color:var(--ink-2)}
.fl-kind{display:inline-grid;place-items:center;min-width:44px;height:28px;padding:0 6px;border-radius:6px;background:var(--accent-soft);color:var(--accent);font-size:11.5px;font-weight:600;letter-spacing:.04em}
.fl-kind.k-cad{background:#EDE7DA;color:#6B5A2E}
.fl-kind.k-pdf{background:var(--st-risk-bg);color:var(--st-risk)}
.fl-void,.fl-cur{margin-left:6px;padding:0 5px;border-radius:4px;background:var(--paper-2);color:var(--ink-3);font-size:11px;font-style:normal;font-weight:400}
.fl-cur{background:var(--accent-soft);color:var(--accent)}
.fd-prev{display:grid;justify-items:center;gap:10px;width:100%;margin:0 0 12px;padding:12px;border:1px solid var(--rule);border-radius:12px;background:var(--sheet)}
.fd-prev img{max-width:100%;max-height:220px;border-radius:6px}
.fd-cad{display:flex;gap:12px;align-items:flex-start;margin:0 0 12px;padding:12px;border:1px solid var(--rule);border-radius:12px;background:var(--sheet)}
.fd-cad b{font-size:14px}
.fd-cad p{margin:4px 0 0;font-size:12.5px;color:var(--ink-3)}
.fd-vers{margin-top:16px}
.fd-ver{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;width:100%;min-height:44px;padding:8px 4px;border:0;border-top:1px solid var(--rule);background:transparent;text-align:left;font-size:13px}
.fd-ver span{flex:1;min-width:0;color:var(--ink-3);overflow-wrap:anywhere}
.fd-ver.on b{color:var(--accent)}
.fu-ver{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:var(--accent-wash);font-size:13px;color:var(--ink-2)}
.fu-pick{width:100%;min-height:48px}
.fu-file{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--rule);border-radius:12px;background:var(--sheet)}
.fu-file div{flex:1;min-width:0}
.fu-file b{display:block;font-size:14px;font-weight:500;overflow-wrap:anywhere}
.fu-file small{font-size:12px;color:var(--ink-3)}
.fu-prog{margin-top:14px;font-size:13px;color:var(--ink-2)}
.fu-bar{height:6px;margin-bottom:6px;border-radius:3px;background:var(--paper-2);overflow:hidden}
.fu-bar i{display:block;height:100%;background:var(--accent);transition:width .2s ease}
.rp-draft{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:12px 0 2px}
.rp-draft small{font-size:12px;color:var(--ink-3)}
/* Local Beta: 新建 / 编辑项目、首次设置、起步卡片 */
.page-head .mod-acts{align-self:flex-end}
.start-card{margin:0 0 22px;border-style:solid;background:var(--sheet)}
.start-card .btn{display:inline-flex;align-items:center;gap:6px;margin-top:6px}
.pf-pair{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.pf-pair>div{min-width:0}
@media (max-width:760px){.pf-pair{grid-template-columns:1fr}}
.setup-note{margin:12px 0 0;font-size:13px}
.arch-kicker .btn-sm{margin-left:auto}
tr.row-btn{cursor:pointer}
tr.row-btn:hover td{background:var(--paper-2,rgba(0,0,0,.025))}
.item-info{margin-top:12px;padding-top:12px;border-top:1px solid var(--rule)}
.item-info label:first-child{margin-top:0}
.bk-last{margin:10px 0 0;font-size:13px;color:var(--ink-2)}
.bk-list{list-style:none;margin:0;padding:0}
.bk-list li{display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:center;padding:8px 0;border-top:1px solid var(--rule);font-size:13px}
.bk-list li span{word-break:break-all}
.bk-list li small{grid-column:1;color:var(--ink-3)}
.bk-list li .btn{grid-column:2;grid-row:1 / span 2}
.recovery-code{margin:14px 0 8px;padding:14px 12px;border:1px dashed var(--rule-2);border-radius:12px;background:var(--paper,#faf9f6);font:600 20px/1.3 ui-monospace,"SF Mono",Menlo,Consolas,monospace;letter-spacing:.06em;text-align:center;user-select:all;word-break:break-all}
.rc-acts{display:flex;gap:8px;justify-content:center}
.login-forgot{margin:12px 0 0;text-align:center}
.link-btn{background:none;border:0;padding:0;color:var(--accent);font-size:13.5px;cursor:pointer}
.link-btn:hover{text-decoration:underline}
