/* ===========================================================
   PLM 病历本 · 页面专有样式（有乐岛设计系统皮）
   引用顺序：先 yolo.css（tokens + base + components），再本文件。
   铁律（设计系统 DESIGN.md 定）：
     · 本文件不许自建 :root —— token 唯一真源在 yolo.css。
     · 只用 var(--...) 正式 token 名，不写死任何色值。
   中文字重一律 >=400。
   =========================================================== */

/* ---- 顶栏：用设计系统成品件 .yolo-appbar（components.css v0.3 起提供）----
   原来这里手搓过一份 .appbar，已删；含 logo 铁律在内的规则都在设计系统那边。 */

/* ---- 内容容器 ---- */
.wrap { max-width: 1180px; margin: 0 auto; padding: var(--space-16) var(--gutter-mobile); }

/* ---- 链接：全局 a 重置（品牌蓝·无下划线）已进 base.css，本地那条收口已删。
   正文场景的下划线本来就该由使用方加，所以这条留着。 */
.tl .body a { text-decoration: underline; }

/* ---- 通用小工具类（替代模板里散落的内联样式）---- */
.backlink { display: inline-block; margin-bottom: var(--space-12); color: var(--color-accent-deep); }
.toolbar { display: flex; justify-content: space-between; align-items: center;
  gap: var(--space-12); margin-bottom: var(--space-16); }
.toolbar-actions { display: flex; gap: var(--space-8); align-items: center; }
.page-title { margin: 0; font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--color-ink); }
.page-sub { color: var(--color-ink-2); font-size: var(--text-sm); }
.muted { color: var(--color-ink-2); }
.center { text-align: center; }
.big-emoji { font-size: 54px; }
.stack-lg { margin-top: 16vh; }

/* ---- 按钮（主蓝只做点缀：主操作/选中态用 --color-accent）---- */
.btn {
  display: inline-block; border: 1px solid var(--color-line-strong); background: var(--color-surface);
  color: var(--color-ink); padding: 9px 16px; border-radius: var(--radius-sm); cursor: pointer;
  font-size: var(--text-sm); font-weight: var(--weight-medium); font-family: var(--font-cn);
  line-height: 1.2; text-align: center;
}
.btn:hover { border-color: var(--color-ink-3); text-decoration: none; }
.btn.primary { background: var(--color-ink); color: #fff; border-color: var(--color-ink); }
.btn.primary:hover { background: var(--color-ink-2); border-color: var(--color-ink-2); }
.btn.big { padding: 14px 18px; font-size: var(--text-base); width: 100%; }
.btn.danger { color: var(--color-danger); border-color: var(--color-danger); background: var(--color-surface); }
.btn.danger:hover { background: var(--color-surface); border-color: var(--color-danger); }
.btn.sm { padding: 5px 11px; font-size: var(--text-sm); }
/* 手机上点击区抬到 44px（手指下限）·桌面不动 */
@media (max-width: 767px) {
  .btn, select.btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
  .chip { min-height: 40px; display: inline-flex; align-items: center; }
}
select.btn { font-family: var(--font-cn); }

/* ---- 看板 ----
   手机优先：单列纵排。窄屏→两列过渡，宽屏→四个阶段等分撑满，**任何宽度都不横向滚动**。
   （原来是 flex + 定宽 288px + overflow-x:auto，桌面上要横着拉才能看全四段，已废。） */
.lanes { display: grid; grid-template-columns: 1fr; gap: var(--space-12);
  align-items: start; padding-bottom: var(--space-8); }
.lane { min-width: 0;                 /* 关键：不给 grid 轨道被长内容顶宽的机会 */
  background: var(--color-surface);
  border: 1px solid var(--color-line); border-radius: var(--radius-md); }
.lane h3 { margin: 0; padding: 10px 14px; font-size: var(--text-sm); font-weight: var(--weight-semibold);
  color: var(--color-ink); border-bottom: 1px solid var(--color-line);
  background: var(--color-panel); border-radius: var(--radius-md) var(--radius-md) 0 0; }
.lane h3 .count { color: var(--color-ink-2); font-weight: var(--weight-regular); }
.lane .body { padding: var(--space-12); display: flex; flex-direction: column;
  gap: var(--space-12); min-height: 48px; }
.pcard { display: block; border: 1px solid var(--color-line); border-radius: var(--radius-sm);
  padding: 11px 13px; background: var(--color-surface); min-width: 0; overflow-wrap: anywhere; }
.pcard:hover { border-color: var(--color-accent); text-decoration: none; }
.pcard .nm { font-weight: var(--weight-semibold); color: var(--color-ink); }
.pcard .meta { color: var(--color-ink-2); font-size: var(--text-sm); margin-top: 2px; }
.pcard .lock { color: var(--color-danger); font-size: var(--text-xs); }

/* ---- 看板拖拽（桌面端才开·手机不做）----
   .dnd-on 由 JS 在桌面端加上；手机端不加 → 下面这些样式一条都不生效。 */
.lanes.dnd-on .pcard[draggable="true"] { cursor: grab; }
.lanes.dnd-on .pcard.dragging { opacity: 0.45; cursor: grabbing; border-color: var(--color-accent); }
.lanes.dnd-on .pcard.nodrag { cursor: default; }   /* 锁定的产品：不给拖 */
/* 落点提示：目标泳道整体高亮 + 虚线框，拖到哪儿一眼看得见 */
.lanes.dnd-on .body.over { background: var(--color-accent-tint);
  outline: 2px dashed var(--color-accent); outline-offset: -4px; border-radius: var(--radius-sm); }
.lane-empty { border: 1px dashed var(--color-line-strong); border-radius: var(--radius-sm);
  padding: 18px 10px; text-align: center; color: var(--color-ink-2); font-size: var(--text-sm);
  background: var(--color-bg); }

/* ---- 归档库（📦 从看板收起来的产品·归档≠锁定）---- */
.searchbar { display: flex; gap: var(--space-8); align-items: center; }
.searchbar input[type=text] { padding: 8px 12px; border: 1px solid var(--color-line-strong);
  border-radius: var(--radius-sm); font-size: var(--text-sm); font-family: var(--font-cn);
  font-weight: var(--weight-regular); color: var(--color-ink); background: var(--color-surface);
  min-width: 0; width: 200px; }
.searchbar input:focus { outline: none; border-color: var(--color-accent); }
.arclist { display: flex; flex-direction: column; gap: var(--space-8); }
.arcrow { display: flex; align-items: center; gap: var(--space-12);
  background: var(--color-surface); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: 11px 14px; }
.arcrow-main { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.arcrow-main:hover { text-decoration: none; }
.arcrow .nm { font-weight: var(--weight-semibold); color: var(--color-ink); }
.arcrow .meta { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center;
  color: var(--color-ink-2); font-size: var(--text-sm); margin-top: 3px; }
.arcrow .lock { color: var(--color-danger); font-size: var(--text-xs); }
@media (max-width: 767px) {
  .searchbar input[type=text] { width: 100%; }
  .toolbar { flex-wrap: wrap; }
}

/* ---- 产品详情头 ---- */
.phead { background: var(--color-surface); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: var(--space-16); margin-bottom: var(--space-16); }
.phead h1 { margin: 0 0 var(--space-8); font-size: var(--text-lg); font-weight: var(--weight-semibold); }
.phead .row { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center;
  color: var(--color-ink-2); font-size: var(--text-sm); }
.phead .row + .row { margin-top: var(--space-8); }
.phead form { display: inline; }
.lock-badge { color: var(--color-danger); font-size: var(--text-sm); font-weight: var(--weight-medium); }

/* ---- 标签 ---- */
.tag { display: inline-block; padding: 2px 9px; border-radius: var(--radius-sm); font-size: var(--text-xs);
  font-weight: var(--weight-medium); background: var(--color-panel); color: var(--color-ink-2); }
.tag.stage { background: var(--color-accent-tint); color: var(--color-ink); }  /* 深字·对比度达标 */

/* ---- 类型筛选 chips ---- */
.filters { display: flex; flex-wrap: wrap; gap: var(--space-8); margin-bottom: var(--space-12); }
.chip { padding: 5px 13px; border: 1px solid var(--color-line-strong); border-radius: var(--radius-pill);
  font-size: var(--text-sm); background: var(--color-surface); color: var(--color-ink-2); }
.chip.on { background: var(--color-ink); color: #fff; border-color: var(--color-ink); }  /* 墨底白字 12.6:1（品牌蓝配白字只有 2.39·不达标） */
.chip:hover { text-decoration: none; border-color: var(--color-accent); }

/* ---- 时间线 ---- */
.timeline { display: flex; flex-direction: column; gap: 0; }
.tl { border-left: 2px solid var(--color-line); padding: 0 0 18px 18px; margin-left: var(--space-8);
  position: relative; }
.tl::before { content: ""; position: absolute; left: -7px; top: 4px; width: 12px; height: 12px;
  border-radius: var(--radius-pill); background: var(--color-surface); border: 2px solid var(--color-line-strong); }
.tl .hd { display: flex; flex-wrap: wrap; gap: var(--space-8); align-items: center; }
.tl .ttl { font-weight: var(--weight-semibold); margin: 4px 0; }
.tl .body { white-space: pre-wrap; }
.tl .when { color: var(--color-ink-2); font-size: var(--text-sm); }
.tl .recorder { color: var(--color-ink-2); font-size: var(--text-sm); }
/* 事件类型标签：浅底 + 墨字 + 左侧色条区分。
   为什么不用「彩底白字」：本套 token 里没有一个彩色能安全承白字
   （最好的 danger 也只有 4.49，accent 只有 2.39）→ 一律浅底深字，靠色条区分类型。
   顺带收敛了「六个色相铺在时间线上太花」，合品牌克制口径。 */
.etype { display: inline-block; padding: 2px 9px 2px 8px; border-radius: var(--radius-sm);
  font-size: var(--text-xs); font-weight: var(--weight-medium);
  background: var(--color-panel); color: var(--color-ink); border-left: 3px solid var(--color-ink-3); }
.etype.small { font-size: 11px; padding: 1px 6px 1px 5px; }
/* 只有色条用彩色（装饰·不承载文字·不受对比度约束） */
.t-立项    { border-left-color: var(--color-cool); }
.t-迭代    { border-left-color: var(--color-accent); }
.t-打样    { border-left-color: var(--color-success); }
.t-口味测试 { border-left-color: var(--color-warm); }
.t-工厂反馈 { border-left-color: var(--color-danger); background: var(--color-warm-tint); }  /* 要警示的保留底色 */
.t-整改    { border-left-color: var(--color-warning); background: var(--color-warm-tint); }
.t-定型备注 { border-left-color: var(--color-ink-2); }
.atts { display: flex; flex-wrap: wrap; gap: var(--space-8); margin-top: var(--space-8); }
.atts img { height: 90px; border-radius: var(--radius-sm); border: 1px solid var(--color-line); object-fit: cover; }
.atts a.file { font-size: var(--text-sm); border: 1px solid var(--color-line); padding: 4px 8px;
  border-radius: var(--radius-sm); background: var(--color-surface); }
.note-manual { margin-top: var(--space-8); font-size: var(--text-sm); color: var(--color-ink-2);
  background: var(--color-panel); border-radius: var(--radius-sm); padding: 6px 10px; }

/* ---- 口味测试卡 ---- */
.tastecard { background: var(--color-surface); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: var(--space-12); margin-top: var(--space-8); }
.tastecard .grid { display: flex; flex-wrap: wrap; gap: var(--space-16); align-items: center; }
.radar { width: 240px; height: 200px; }
.radar.sm { width: 190px; height: 170px; }
.dimtable { font-size: var(--text-sm); }
.dimtable .big { font-size: var(--text-md); font-weight: var(--weight-semibold); }
.dimtable b { font-weight: var(--weight-semibold); }
.dimtable .dimrow { margin-top: 4px; }
.dimtable .dimrow span { display: inline-block; min-width: 92px; }
.dimtable .prices { margin-top: 4px; }
.quote { color: var(--color-ink); background: var(--color-panel); border-left: 3px solid var(--color-line-strong);
  padding: 6px 10px; border-radius: var(--radius-sm); margin-top: var(--space-8); }
.actions { display: flex; flex-wrap: wrap; gap: var(--space-8); margin-top: 10px; align-items: center; }
.actions .done-hint { color: var(--color-ink-2); font-size: var(--text-sm); align-self: center; }

/* ---- 表单 ---- */
.form { background: var(--color-surface); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: var(--space-16); max-width: 520px; margin: 0 auto; }
.form h1 { font-size: var(--text-md); font-weight: var(--weight-semibold); margin: 0 0 var(--space-8); }
.form label { display: block; font-weight: var(--weight-medium); margin: var(--space-12) 0 5px; }
.form input[type=text], .form input[type=number], .form input[type=password],
.form input[type=tel], .form textarea, .form select {
  width: 100%; padding: 11px 12px; border: 1px solid var(--color-line-strong);
  border-radius: var(--radius-sm); font-size: var(--text-base); font-family: var(--font-cn);
  font-weight: var(--weight-regular); color: var(--color-ink); background: var(--color-surface); }
.form input:focus, .form textarea:focus, .form select:focus {
  outline: none; border-color: var(--color-accent); }
.form textarea { min-height: 84px; resize: vertical; }
/* 「记一条」的大框：为语音输入而设，手机上要够大。
   字号 17px（≥16px，否则 iOS 聚焦时会自动放大整页），行高松一点，说一大段也看得下去。 */
.form textarea.bigbox { min-height: 200px; font-size: 17px; line-height: 1.65; }
.form .hint-line { font-size: var(--text-sm); color: var(--color-ink-2);
  margin: var(--space-12) 0 0; line-height: 1.6; }
.form .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-12); }
/* 打样专属三格（尺寸/材质/数量）：手机上也保持一行，值都很短 */
.form .field-row3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-8); }
.form .field-row3 input[type=text] { padding: 10px 8px; font-size: var(--text-sm); }
.form .submit { margin-top: var(--space-16); }
.typegrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-12); }
.typegrid label { margin: 0; }
.typegrid input { position: absolute; opacity: 0; }
.typegrid .opt { display: block; text-align: center; padding: 14px 4px;
  border: 1px solid var(--color-line-strong); border-radius: var(--radius-sm); font-size: var(--text-base);
  cursor: pointer; background: var(--color-surface); color: var(--color-ink); }
.typegrid input:checked + .opt { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }
/* 类型专属小按钮（问题类型）：比主类型格矮一档，不抢视觉 */
.typegrid.tight { gap: var(--space-8); }
.typegrid.tight .opt { padding: 9px 4px; font-size: var(--text-sm); }

/* .score-page 仍给 add_event 表单用（居中窄栏），别删 */
.score-page { max-width: 460px; margin: 0 auto; }

/* ================================================================
   免登录扫码打分页 · /v2（React+shadcn）观感翻新
   ⚠️ 铁律：纯服务端渲染，零 JS；全部走 yolo.css token，不写死色值。
   卡片圆角用 --radius-md(12px)、按钮/输入用 --radius-sm(6px)、
   主按钮与选中圆点走 --color-ink-max（墨黑，主蓝只做点缀）。
================================================================ */
.taste-body { background: var(--color-bg); }
.taste-wrap { max-width: 480px; margin: 0 auto; padding: var(--space-24) var(--gutter-mobile) var(--space-48); }

/* 顶部身份区：小 logo + 产品名 */
.taste-head { display: flex; align-items: center; gap: var(--space-12); margin-bottom: var(--space-16); }
.taste-logo { width: 40px; height: 40px; border-radius: var(--radius-sm); flex: none; }
.taste-head-txt { min-width: 0; }
.taste-kicker { font-size: var(--text-sm); color: var(--color-ink-2); font-weight: var(--weight-medium); }
.taste-product { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--color-ink);
  line-height: 1.35; word-break: break-word; }

/* 打分卡（shadcn Card 观感：白底·12px 圆角·发丝线） */
.taste-card { background: var(--color-surface); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: 0 var(--space-16); overflow: hidden; }
.taste-intro { color: var(--color-ink-2); font-size: var(--text-sm); line-height: 1.6;
  padding: var(--space-16) 0 0; margin: 0; }

/* 每一维/每一题一个 field，发丝线分隔（首个不描线） */
.taste-field { padding: var(--space-16) 0; border-top: 1px solid var(--color-line); }
.taste-field:first-child { border-top: none; }
.taste-q { display: block; font-weight: var(--weight-semibold); font-size: var(--text-base);
  color: var(--color-ink); line-height: 1.4; }
.taste-opt { font-weight: var(--weight-regular); font-size: var(--text-xs); color: var(--color-ink-3); }
.taste-hint { color: var(--color-ink-2); font-size: var(--text-sm); line-height: 1.5;
  margin-top: 3px; margin-bottom: var(--space-12); }

/* 文本/数字输入 */
.taste-input { width: 100%; min-height: 46px; padding: 11px 12px; margin-top: var(--space-8);
  border: 1px solid var(--color-line-strong); border-radius: var(--radius-sm);
  font-size: var(--text-base); font-family: var(--font-cn); color: var(--color-ink);
  background: var(--color-surface); -webkit-appearance: none; appearance: none; }
.taste-input::placeholder { color: var(--color-ink-disabled); }
.taste-input:focus { outline: none; border-color: var(--color-accent);
  box-shadow: 0 0 0 3px var(--color-accent-tint); }

/* 六维打分圆点：整行均分·touch≥44·选中态墨黑白字（与主按钮同一家族） */
.taste-dots { display: flex; gap: var(--space-8); justify-content: space-between; }
.taste-dots input { position: absolute; opacity: 0; width: 0; height: 0; }
.taste-dots label { flex: none; width: 48px; height: 48px; display: flex; align-items: center; justify-content: center;
  border-radius: var(--radius-pill); border: 1.5px solid var(--color-line-strong);
  font-size: var(--text-md); font-family: var(--font-en); color: var(--color-ink-2);
  cursor: pointer; background: var(--color-surface); transition: border-color .12s, background .12s;
  -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
.taste-dots label:active { border-color: var(--color-ink-3); }
.taste-dots input:checked + label { background: var(--color-ink-max); color: #fff;
  border-color: var(--color-ink-max); font-weight: var(--weight-semibold); }
.taste-dots input:focus-visible + label { box-shadow: 0 0 0 3px var(--color-accent-tint); }

/* 心理价位 */
.taste-price { display: flex; align-items: center; gap: var(--space-8); }
.taste-price .taste-input { width: 140px; margin-top: 0; text-align: center; }
.taste-unit { font-size: var(--text-base); color: var(--color-ink-2); }

/* 提交：墨黑主按钮（一屏最多一个），touch 友好 */
.taste-submit { width: 100%; min-height: 50px; margin: var(--space-24) 0 var(--space-16);
  border: none; border-radius: var(--radius-sm); background: var(--color-ink-max); color: #fff;
  font-family: var(--font-cn); font-size: var(--text-md); font-weight: var(--weight-semibold);
  letter-spacing: 2px; cursor: pointer; }
.taste-submit:hover { background: var(--color-ink-2); }
.taste-submit:active { background: var(--color-ink); }

/* 页脚身份签名 */
.taste-foot { text-align: center; color: var(--color-ink-3); font-size: var(--text-xs);
  margin-top: var(--space-16); }

/* 提交完成 / 已截止：居中卡片 */
.taste-status-wrap { display: flex; flex-direction: column; justify-content: center;
  min-height: 78vh; }
.taste-status { padding: var(--space-48) var(--space-24); text-align: center; }
.taste-status-emoji { font-size: 52px; line-height: 1; }
.taste-status-title { margin: var(--space-16) 0 var(--space-8); font-size: var(--text-lg);
  font-weight: var(--weight-semibold); color: var(--color-ink); line-height: 1.4; }
.taste-status-sub { margin: 0; color: var(--color-ink-2); font-size: var(--text-sm); line-height: 1.6; }

/* ---- 历版对比 ---- */
.compare { display: flex; gap: var(--space-24); overflow-x: auto; -webkit-overflow-scrolling: touch;
  padding-bottom: var(--space-8); }
.round { text-align: center; flex: 0 0 200px; }
.round .ver { font-weight: var(--weight-semibold); }
.round .radar { margin: 0 auto; }
.trend { margin-top: var(--space-16); font-size: var(--text-base); }
.trend > div { margin-bottom: 4px; }
.trend .k { display: inline-block; min-width: 84px; color: var(--color-ink-2); }
.up { color: var(--color-success); } .down { color: var(--color-danger); }
.round-empty { padding: 40px 0; }

/* ---- 打分明细表 ---- */
.scoretable-wrap { overflow-x: auto; }
.scoretable { width: 100%; border-collapse: collapse; font-size: var(--text-sm);
  background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-sm); }
.scoretable thead tr { background: var(--color-panel); }
.scoretable th { padding: 8px 8px; text-align: center; color: var(--color-ink-2); font-weight: var(--weight-semibold); }
.scoretable th.l, .scoretable td.l { text-align: left; padding-left: 10px; }
.scoretable td { padding: 8px 8px; text-align: center; border-top: 1px solid var(--color-line); }
.scoretable tr.avg td { border-top: 2px solid var(--color-line-strong); background: var(--color-bg);
  font-weight: var(--weight-semibold); }
.scoretable td.when { color: var(--color-ink-2); }

/* ---- 登录 / 错误 / 提示 ---- */
.login { max-width: 360px; margin: 12vh auto; }
.login .brand-logo { display: block; height: 26px; width: auto; margin: 0 auto var(--space-8); }  /* 只钉高·宽 auto·不设 max-width */
.login h1 { text-align: center; font-size: var(--text-lg); font-weight: var(--weight-semibold); margin: 0; }
.err { color: var(--color-danger); text-align: center; margin: var(--space-8) 0; }
.notice { background: var(--color-warm-tint); border: 1px solid var(--color-warm);
  border-radius: var(--radius-sm); padding: 8px 12px; font-size: var(--text-sm);
  color: var(--color-warm-deep); margin-bottom: var(--space-12); }
.errorbox { max-width: 460px; margin: 8vh auto; background: var(--color-surface);
  border: 1px solid var(--color-line); border-radius: var(--radius-md); padding: var(--space-32) var(--space-24);
  text-align: center; }
.errorbox .emoji { font-size: 40px; }
.errorbox h1 { font-size: var(--text-md); font-weight: var(--weight-semibold); margin: var(--space-12) 0 var(--space-8); }
.errorbox p { color: var(--color-ink-2); margin-bottom: var(--space-16); }

/* ---- 二维码收分页 ---- */
.qr-sub { margin-bottom: var(--space-12); }
.qr-img { width: 280px; height: 280px; max-width: 100%; border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: 10px; background: var(--color-surface); }
.qr-tip { margin: var(--space-12) 0 4px; }
.qr-url { word-break: break-all; font-size: var(--text-sm); }
.center-actions { justify-content: center; }
.qr-closed { margin: 0 auto; max-width: 340px; }

/* ---- 产品档案（承重墙 E）----
   手机优先：单列、节与节之间靠卡边分开；只用 yolo.css 的 token，不自建 :root、不写死色值。 */
.arc { background: var(--color-surface); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: var(--space-16); margin-bottom: var(--space-12); }
.arc-hd { display: flex; align-items: center; justify-content: space-between; gap: var(--space-8); }
.arc-hd h2 { margin: 0; font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-ink); }
.arc-desc { color: var(--color-ink-2); font-size: var(--text-sm); margin: 4px 0 var(--space-8); }
.arc-body { white-space: pre-wrap; color: var(--color-ink); }
.arc-empty { color: var(--color-ink-2); font-size: var(--text-sm); background: var(--color-bg);
  border: 1px dashed var(--color-line-strong); border-radius: var(--radius-sm); padding: 10px 12px; }
/* 档案里的表（竞品对比 / 变更记录）列多，手机上宁可横向滚动也不要把中文挤成一字一行；
   外层 .scoretable-wrap 已有 overflow-x:auto，页面本身不会横向滚。 */
.arc .scoretable { min-width: 460px; }
.arc-edit { margin-top: var(--space-12); }
.arc-edit textarea { width: 100%; min-height: 110px; resize: vertical; padding: 11px 12px;
  border: 1px solid var(--color-line-strong); border-radius: var(--radius-sm);
  font-size: var(--text-base); font-family: var(--font-cn); font-weight: var(--weight-regular);
  color: var(--color-ink); background: var(--color-surface); }
.arc-edit textarea:focus { outline: none; border-color: var(--color-accent); }
.arc-edit .edit-table input[type=text] { width: 100%; min-width: 92px; padding: 7px 8px;
  border: 1px solid var(--color-line-strong); border-radius: var(--radius-sm);
  font-size: var(--text-sm); font-family: var(--font-cn); color: var(--color-ink);
  background: var(--color-surface); }
.arc-edit .edit-table input:focus { outline: none; border-color: var(--color-accent); }
.arc-orphan { background: var(--color-panel); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); padding: var(--space-12); margin-bottom: var(--space-12);
  color: var(--color-ink-2); font-size: var(--text-sm); }
.arc-orphan summary { cursor: pointer; color: var(--color-ink-2); }
.arc-orphan-item { margin-top: var(--space-8); color: var(--color-ink); }

/* ---- 确认闸（记一条之后·手机一句话两按钮）---- */
/* [hidden] 兜底：.btn 的 display:inline-block 会盖掉浏览器默认的 [hidden]{display:none}，
   导致「点了按钮却不消失」。这里统一压住（档案页/确认页的展开-收起全靠 hidden 属性）。 */
[hidden] { display: none !important; }
.gate { max-width: 520px; margin: 0 auto; }
.gate-note { background: var(--color-panel); border-radius: var(--radius-sm);
  padding: 10px 12px; font-size: var(--text-sm); color: var(--color-ink); margin-bottom: var(--space-12); }
.gate-say { font-size: var(--text-base); color: var(--color-ink); margin-bottom: var(--space-8); }
.gate-preview { white-space: pre-wrap; background: var(--color-surface);
  border: 1px solid var(--color-line); border-left: 3px solid var(--color-accent);
  border-radius: var(--radius-sm); padding: var(--space-12); margin-bottom: var(--space-16); }
.gate .btn.big { width: 100%; margin-bottom: var(--space-8); }
.gate-fix { max-width: none; margin-top: var(--space-8); }
.gate-form { max-width: none; }
/* 「看原话」折叠（原生 details，不引 JS 库）：时间线默认显示助理脑理过的干净版 */
.rawnote { margin-top: var(--space-8); }
.rawnote > summary { cursor: pointer; font-size: var(--text-sm); color: var(--color-ink-2);
  list-style: none; display: inline-block; padding: 4px 0; }
.rawnote > summary::-webkit-details-marker { display: none; }
.rawnote > summary::before { content: "▸ "; }
.rawnote[open] > summary::before { content: "▾ "; }
.rawnote .rawtext { white-space: pre-wrap; background: var(--color-panel);
  border-radius: var(--radius-sm); padding: 10px 12px; margin-top: 6px;
  font-size: var(--text-sm); color: var(--color-ink-2); line-height: 1.7; }
.gate-skip { margin-top: var(--space-16); text-align: center; }
.gate-links { text-align: center; margin-top: var(--space-12); font-size: var(--text-sm); }

/* ---- 响应式 ---- */
@media (min-width: 768px) {
  /* .appbar 的桌面内边距已随组件迁到设计系统 .yolo-appbar */
  .wrap { padding: var(--space-24) var(--gutter); }
  .lanes { grid-template-columns: repeat(2, 1fr); }   /* 平板：两列过渡 */
}
@media (min-width: 1024px) {
  .lanes { grid-template-columns: repeat(4, 1fr); }   /* 桌面：四个阶段等分撑满，绝不横向滚 */
}
@media (max-width: 767px) {
  /* 看板：单列、泳道满宽、卡片满宽 */
  .lanes { flex-direction: column; overflow-x: visible; gap: var(--space-16); }
  .lane { flex: 1 1 auto; width: 100%; }
  /* 详情页大雷达手机满宽；对比页小雷达(.sm)保持定宽，否则「复购意愿」标签会被截字 */
  .radar:not(.sm) { width: 100%; }
  .form .field-row { grid-template-columns: 1fr; }
  .typegrid { grid-template-columns: repeat(2, 1fr); }
  /* 小按钮组字短，手机上仍排 3 列，少占一行 */
  .typegrid.tight { grid-template-columns: repeat(3, 1fr); }
}

/* ---- 投递箱面板（会自己跑的东西必须有能看见的入口）----
   只用 yolo.css 的 token，不自建 :root、不写死色值。 */
.inbox-stats { display: flex; flex-wrap: wrap; gap: var(--space-8) var(--space-16);
  margin: var(--space-8) 0 var(--space-12); font-size: var(--text-sm); color: var(--color-ink-2); }
.inbox-stats b { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--color-ink); }
.inbox-stats .inbox-hot b { color: var(--color-danger); }
.inbox-result { max-width: 420px; white-space: normal; word-break: break-word;
  color: var(--color-ink-2); font-size: var(--text-sm); line-height: 1.6; }
.inbox-status { white-space: nowrap; }
.inbox .scoretable { min-width: 640px; }
