/* ═══════════════════════════════════════════════════════════════════
   黑白云 (heibaiyun) — 二维码提取页专属样式  entry.css
   版本: 20261008-hb6（第六轮：契约符合性修补 —— 主按钮键盘焦点可见 / 裸控件上色(§1.3) /
         B4 结果带通栏(padding:0) / B5 按钮栅格 3+1→4 列 / 类型分段焦点内描边 / 触控 ≥36px /
         11px 承载信息字号 → 12px / 基础与媒体查询重复声明合并 / 类型条去语义色(类型≠状态)）
   依赖: /assets/css/heibaiyun/theme.css  ← 唯一设计令牌来源（只消费 --bw-* / --bw-c-*，禁止硬编码颜色）
         theme.css 由自有视图以 <link ...?v=20261008-hb6> 直接加载，故本文件不再 @import
         （避免同一样式表被两种 URL（带/不带版本号）重复下载）。
   契约: docs/HEIBAIYUN_UI_DESIGN_SYSTEM.md（§2 一轴五带 / §1.2 色彩职能 / §3 硬性约束 / §4 验收）
   作用域: 选择器全部限定在 body.pp-entry-body 或 .pp-entry 之内，不影响其他品牌与页面。

   ── v5「一轴五带」布局结构（与 v4「左表单 + 右结果」双栏结构级不同）──────────
     全页不再出现左右分栏：居中单轴（.pp-entry max-width:860 居中），按操作时序切 5 条同宽横带，
     仅以 1px 墨线分段。带序 01–05 由 CSS 计数器（.pp-band-index）生成，不新增文本 DOM。
       B0 品牌脊  header.pp-hero > .pp-hero-inner（通栏横脊结构保持不变，内层与长卷同轴同留白）
       B1 运行条  .pp-flowbar（包 #statusBar + #flashBar；flex 两端对齐 + 1px --bw-divider 底线）
       B2 类型带  .pp-band.pp-band-type（连体分段 .pp-tabs，每段顶/底 2px 类型色条）
       B3 输入带  .pp-band.pp-band-code（带头：字段标签左 / 链接模式单选右；输入 width:100%）
       B4 结果带  .pp-band.pp-band-result（包 #resultShell；QR 居中；信息 .pp-info-grid 两列网格）
       B5 操作带  .pp-band.pp-band-action（按钮栅格，主按钮占首格，全页唯一 --bw-shadow-stamp）
       B6 脚注    .pp-footnote

   ── 旧双栏痕迹：样式已清除，视图仅留历史 DOM 钩子（class）────────────────
     已整体移除的选择器：pp-layout / pp-col-form / pp-col-result / pp-card-head / pp-card-icon /
     pp-field / pp-info-stack / pp-info-split / pp-status-row / pp-btn-row。
     .pp-result-main 仍作为历史 DOM 钩子（class）保留在视图 qr_entry.php 中（DOM 未改动），
     但其旧 248px + 1fr 两列栅格、左栏竖墨线（border-right）、右栏左内距（padding-left:32px）
     与左栏 sticky 定位的【样式声明】已全部移除 —— 本文件不再为该 class 输出任何声明，
     该元素现为普通块级流（子元素 .pp-qr-zone / .pp-info-grid 各自成块自上而下堆叠，与单列
     栅格等效，B4 布局不变）。

   ── 色彩落点（§1.2 / §1.3 / §1.4）────────────────────────────────────
     · 请求类型分段：整条 = 中性 slate 控件底（--bw-c-slate-bg + 同族 1px --bw-c-slate 描边，
       非激活段透出该底，杜绝"纸底 + 深色字"裸控件）；每段顶/底 2px 类型条与标签文字同用
       中性 slate 档 —— 类型≠状态，禁用 green(=成功)/red(=危险)/amber(=警告) 等语义色；
       激活段 = 紫檀 tint + 内描边（inset 0 0 0 1px --bw-accent）
     · #metaType / #infoReqType 值 = 中性 slate-ink（类型条已中性化，不再按类型推导色相）
     · 右上「统计查询」入口 = blue 族淡底（blue-bg 底 + blue 描边 + blue-ink 字）
     · 链接模式单选药丸 = slate 族淡底 + 同族描边 + slate-ink；选中 = 紫檀同族渐变实底 + 反白（§6.2）
     · 次按钮「复制强开 / 复制链接」= blue 族淡底（中性工具动作，§1.4）；「换一条链接」= 紫檀实底
     · 状态胶囊 / 结果态 / 告警 = 语义色（success / danger / warning）
     · 二维码承托片 = 中性纸白无彩（扫码干净），且不带硬印
     · 全页唯一 --bw-shadow-stamp = B5 主按钮（#submitBtn）
   字排：脊标题 26/600 · 带标题 15/600 · 字段标签 12/600 · 输入 15/400 · 信息值 13.5/400 · 带序 12/600。
        （承载信息的弱化文字最小 12px：字段标签 / 元信息键 / 信息网格键；11px 不再承载信息）
   交互态（§6.2）：可点件四态齐备 —— 常驻彩底 + hover 加深一档 + 选中同族实底 + 禁用虚线灰字。
   字重：正文 400，仅标题/按钮/数值 600，禁止 700+。
   ═══════════════════════════════════════════════════════════════════ */

/* ── 页面根容器 ─────────────────────────────────────────────────── */
body.pp-entry-body {
    /* 纸面与横脊共用的左右留白（两者同源，保证墨脊与长卷同起线） */
    --entry-gutter: 20px;
    /* 单轴主轴宽度（B0 墨脊与 B1–B6 五带共用，保证"一轴"起线一致） */
    --entry-axis: 860px;
    min-height: 100vh;
    margin: 0;
    padding: 0;
    background: var(--bw-bg-page);
    color: var(--bw-text-primary);
    overflow-x: hidden;
}

/* ── 居中单轴长卷容器（契约 §2 主轴） ───────────────────────────── */
.pp-entry {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: var(--entry-axis);
    margin: 0 auto;
    /* 顶部 0：横脊自页面顶端起，纵向节奏由横脊与各带 padding 提供 */
    padding: 0 var(--entry-gutter) 56px;
    /* 带序计数器：B1–B5 依次为 01–05 */
    counter-reset: ppband;
}

/* ── 右上角「统计查询」入口（脊上的导航动作）─────────────────────────
   §1.3 裸控件禁令：原为"纸底(--bw-bg-surface) + 近黑字(--bw-text-primary)"，现改蓝色族淡底。 */
body.pp-entry-body .pp-stat-btn {
    position: fixed;
    top: 16px;
    right: 22px;
    z-index: 20;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 38px;
    padding: 0 16px;
    /* 同族 1px 彩色描边（--bw-c-blue 对纸 ≥3.18:1，满足 §4.7③ 可交互唯一边界要求） */
    border: 1px solid var(--bw-c-blue);
    border-radius: var(--bw-radius-pill);
    background: var(--bw-c-blue-bg);
    color: var(--bw-c-blue-ink);
    font-family: var(--bw-font);
    font-size: 13px;
    font-weight: var(--bw-fw-strong);
    line-height: 1;
    text-decoration: none;
    box-shadow: var(--bw-shadow-xs);
    transition: background var(--bw-transition), border-color var(--bw-transition),
                box-shadow var(--bw-transition);
}
/* hover 底色加深一档（§6.2） */
body.pp-entry-body .pp-stat-btn:hover {
    background: var(--bw-c-blue-bg-h);
    border-color: var(--bw-c-blue-ink);
    box-shadow: var(--bw-shadow-sm);
}
body.pp-entry-body .pp-stat-btn:active {
    background: var(--bw-c-blue-bg-h);
    border-color: var(--bw-c-blue-ink);
    box-shadow: inset 0 0 0 1px var(--bw-c-blue-ink);
}
body.pp-entry-body .pp-stat-btn svg {
    width: 15px;
    height: 15px;
    flex: 0 0 auto;
}

/* ══ B0 通栏墨脊（契约 §2：保持现状；仅内层宽度与长卷同轴） ═══════════ */
body.pp-entry-body .pp-hero {
    position: relative;
    overflow: hidden;               /* 裁掉云朵母题与网点纸纹在脊外的溢出 */
    display: block;                 /* 通栏横脊 */
    border: 0;                      /* 通栏：去浮卡描边 */
    border-bottom: 1px solid var(--bw-hairline);  /* 横向墨线分段 */
    border-radius: 0;
    background: var(--bw-bg-surface);
    box-shadow: none;
    color: var(--bw-text-primary);
    isolation: isolate;
}
/* 脊内容与下方五带同轴同留白（"一轴"：脊与纸面同起线） */
body.pp-entry-body .pp-hero-inner {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: 96px;
    max-width: var(--entry-axis);
    margin: 0 auto;
    padding: 18px var(--entry-gutter);
}
/* 网点纸纹：脊内右侧留白（属大块装饰/页头留白，不铺在任何正文之下） */
body.pp-entry-body .pp-hero-inner::before {
    content: '';
    position: absolute;
    right: 0;
    bottom: 0;
    width: 38%;
    height: 64%;
    z-index: 0;
    background-image: var(--bw-dots-image);
    background-size: var(--bw-dots-size);
    opacity: .5;
    pointer-events: none;
}
/* 墨印 logo：圆形裁切 + 1px --bw-border-ink 由 theme.css 的 .pp-disc 提供。
   v5 契约 §2：全页唯一 --bw-shadow-stamp 归 B5 主按钮，故 logo 圆盘不带硬印。 */
body.pp-entry-body .pp-hero-logo {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    box-shadow: none;
}
body.pp-entry-body .pp-hero-logo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}
body.pp-entry-body .pp-hero-text { min-width: 0; position: relative; z-index: 1; }
body.pp-entry-body .pp-hero-title {
    margin: 0;
    font-size: 22px;
    font-weight: var(--bw-fw-strong);
    line-height: 1.25;
    letter-spacing: .01em;
    color: var(--bw-text-primary);
}
body.pp-entry-body .pp-hero-sub {
    margin: 4px 0 0;
    font-size: 13px;
    font-weight: var(--bw-fw-body);
    line-height: 1.4;
    letter-spacing: .06em;
    color: var(--bw-text-secondary);
}
/* 云朵母题：单色墨线 rgba(34,29,23,.08)（墨色纹族，非彩色） */
body.pp-entry-body .pp-hero-art {
    position: absolute;
    right: -12px;
    bottom: -26px;
    width: 320px;
    height: 170px;
    z-index: 0;
    pointer-events: none;
}
body.pp-entry-body .pp-hero-art path {
    fill: none;
    /* rgba(34,29,23,.08) = 墨色 --bw-ink 的 8%（同 --bw-dots 纹理族，非彩色） */
    stroke: rgba(34, 29, 23, .08);
    stroke-opacity: 1;
    stroke-width: 1.75;
    stroke-linecap: round;
    stroke-linejoin: round;
}
body.pp-entry-body .pp-bubble {
    position: absolute;
    z-index: 0;
    border-radius: var(--bw-radius-disc);
    pointer-events: none;
}
body.pp-entry-body .pp-hero-bubble {
    /* 装饰性元素（aria-hidden，非功能），基础视口不显示，仅桌面端呈现 */
    display: none;
}
body.pp-entry-body .pp-hero-bubble-a { width: 10px; height: 10px; right: 250px; top: 22px; background: var(--bw-ink); }
body.pp-entry-body .pp-hero-bubble-b { width: 18px; height: 18px; right: 288px; bottom: 20px; border: 1px solid var(--bw-ink); background: transparent; }
body.pp-entry-body .pp-hero-bubble-c { width: 6px; height: 6px; right: 232px; bottom: 44px; background: var(--bw-ink); opacity: .5; }

/* ── 带序编号（CSS 计数器，不新增文本 DOM） ─────────────────────── */
.pp-entry .pp-flowbar,
.pp-entry .pp-band { counter-increment: ppband; }
.pp-entry .pp-band-index {
    flex: 0 0 auto;
    font-size: 12px;
    font-weight: var(--bw-fw-strong);
    font-variant-numeric: tabular-nums;
    letter-spacing: .06em;
    line-height: 1;
    color: var(--bw-text-muted-on-tint);
}
.pp-entry .pp-band-index::before { content: counter(ppband, decimal-leading-zero); }

/* ══ B1 运行条（契约 §2）═════════════════════════════════════════════ */
.pp-entry .pp-flowbar {
    display: flex;
    align-items: center;
    gap: 14px;
    /* 与墨脊底墨线之间留出呼吸（.pp-entry 顶部内距为 0，纵向节奏由本带提供） */
    padding-top: 18px;
    min-height: 40px;
    /* 与 B2 之间以 1px 墨线分段（配合 :first-child 去掉首带 top 线，避免叠双线） */
    border-bottom: 1px solid var(--bw-divider);
}

/* 运行状态：墨点 + 文字（无描边无底，形态编码优先） */
.pp-entry .pp-status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 24px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--bw-text-muted-on-tint);
    font-size: 12.5px;
    font-weight: var(--bw-fw-strong);
    box-shadow: none;
    transition: color var(--bw-transition);
}
/* 形态编码：空心圆 = 未就绪 */
.pp-entry .pp-status-dot {
    width: 8px;
    height: 8px;
    border-radius: var(--bw-radius-disc);
    background: transparent;
    border: 2px solid var(--bw-text-muted-on-tint);
    flex: 0 0 auto;
}
.pp-entry .pp-status.neutral { color: var(--bw-text-muted-on-tint); }
.pp-entry .pp-status.neutral .pp-status-dot { border-color: var(--bw-text-muted-on-tint); }
/* 语义色只用于功能状态（暖底上均 ≥4.5:1） */
.pp-entry .pp-status.success { color: var(--bw-success); }
.pp-entry .pp-status.success .pp-status-dot {
    background: var(--bw-success);
    border-color: var(--bw-success);
}
.pp-entry .pp-status.error { color: var(--bw-danger); }
.pp-entry .pp-status.error .pp-status-dot {
    background: var(--bw-danger);
    border-color: var(--bw-danger);
}

/* Flash 通知：右端对齐（.pp-flowbar 两端对齐的另一端） */
.pp-entry .pp-flash {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin-left: auto;
    min-height: 32px;
    font-size: 13px;
    font-weight: var(--bw-fw-strong);
    color: var(--bw-text-primary);
    text-align: left;
    opacity: 1;
    visibility: visible;
    transition: opacity var(--bw-transition), visibility var(--bw-transition);
}
.pp-entry .pp-flash[hidden] {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* ── 带通用（契约 §2） ──────────────────────────────────────────── */
.pp-entry .pp-form { display: block; }
.pp-entry .pp-band {
    padding: 26px 0;
    border-top: 1px solid var(--bw-hairline);
}
/* 首带（B2）与 B1 运行条的底线相邻：去掉首带 top 线，避免两条 1px 线叠成双线 */
.pp-entry .pp-form > .pp-band:first-child { border-top: 0; }
.pp-entry .pp-band-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 12px;
    margin-bottom: 16px;
}
.pp-entry .pp-band-title {
    margin: 0;
    font-size: 15px;
    font-weight: var(--bw-fw-strong);
    line-height: 1.3;
    color: var(--bw-text-primary);
}

/* ══ B2 类型带：连体分段（中性 slate 控件底 · 激活段紫檀 tint + 内描边）══
   §1.3：可点分段必须有彩色底 → 连体容器以 --bw-c-slate-bg 作控件底 + 同族 1px --bw-c-slate 描边；
   非激活段 background:transparent 透出该底（不再"纸底 + 深色字"）。gap:0 的单族中性底
   是"一个分段控件"，非多色芯片带，不构成 §1.5 禁止的整行彩底。 */
.pp-entry .pp-tabs {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0;
    /* 同族彩色描边（--bw-c-slate 对纸 ≥3.18:1，满足 §4.7③ 可交互边界要求） */
    border: 1px solid var(--bw-c-slate);
    border-radius: var(--bw-radius-sm);
    /* 裁剪分段底与类型条在圆角外的溢出；焦点环因此改用内描边（见文末焦点区） */
    overflow: hidden;
    background: var(--bw-c-slate-bg);
}
.pp-entry .pp-tab {
    position: relative;
    min-width: 0;
    height: 46px;
    padding: 0 6px;
    border: 0;
    border-left: 1px solid var(--bw-divider);   /* 连体分段的段间 1px 墨线 */
    border-radius: 0;
    background: transparent;
    /* 类型标签文字 = 同族中性 ink（默认回退到中性 slate-ink） */
    color: var(--tab-ink, var(--bw-c-slate-ink));
    font-family: var(--bw-font);
    font-size: 13px;
    font-weight: var(--bw-fw-strong);
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
    box-shadow: none;
    transition: background var(--bw-transition), color var(--bw-transition);
}
.pp-entry .pp-tab:first-child { border-left: 0; }
/* 分段标识条：顶/底 2px 中性类型条（伪元素绘制，不占布局）——
   注：本伪元素覆盖行内上下 2px，故 .pp-tab 的聚焦描边改用 outline（见文末焦点区）。 */
.pp-entry .pp-tab::before {
    content: '';
    position: absolute;
    inset: 0;
    border-top: 2px solid var(--tab-base, transparent);
    border-bottom: 2px solid var(--tab-base, transparent);
    border-radius: inherit;
    pointer-events: none;
}
/* hover：底色加深一档（§6.2）—— 在 slate 控件底上取同族深档，避免"变纸白" */
.pp-entry .pp-tab:hover:not(.active) {
    background: var(--bw-c-slate-bg-h);
    color: var(--bw-c-slate-ink);
}
/* 激活段 = 紫檀 tint + 内描边（§1.2：分段激活用紫檀点缀色；类型条保留中性身份） */
.pp-entry .pp-tab.active {
    background: var(--bw-accent-soft);
    box-shadow: inset 0 0 0 1px var(--bw-accent);
}
/* 五类请求类型的分段标识 —— 【类型≠状态】
   原方案：微信码 = --bw-c-green（=成功语义）、抖音码 = --bw-c-red（=危险语义），
   类型条与状态胶囊同色系，易被误读为"当前状态"。现按缺陷 #11 统一降为中性档
   （--bw-c-slate 条 + --bw-c-slate-ink 字）：类型身份由标签文字承载，选中态由紫檀表达，
   与 success/danger/warning 语义色彻底脱钩。 */
.pp-entry .pp-tab[data-type="2"],
.pp-entry .pp-tab[data-type="3"],
.pp-entry .pp-tab[data-type="4"],
.pp-entry .pp-tab[data-type="5"],
.pp-entry .pp-tab[data-type="6"] {
    --tab-base: var(--bw-c-slate);
    --tab-ink: var(--bw-c-slate-ink);
}

/* #metaType / #infoReqType 值：类型条已中性化（类型≠状态），故不再按激活分段推导色相；
   统一取中性 slate-ink（对纸 8.24:1），与类型条同族，避免"类型色"被读成状态色。
   注：#infoReqType 为 13.5px 小字，按 §4.7⑤ 保持 600 字重。 */
.pp-entry { --entry-type-ink: var(--bw-c-slate-ink); }
.pp-entry #metaType,
.pp-entry #infoReqType {
    color: var(--entry-type-ink, var(--bw-text-primary));
    font-weight: var(--bw-fw-strong);
}

/* ══ B3 输入带 ═══════════════════════════════════════════════════════ */
/* 字段标签承载信息（卡密字段名）→ 12px（缺陷 #9：11px 不得承载信息） */
.pp-entry .pp-field-label {
    display: block;
    font-size: 12px;
    font-weight: var(--bw-fw-strong);
    letter-spacing: .04em;
    color: var(--bw-text-secondary);
}
/* 链接模式单选：带头的右端 */
.pp-entry .pp-mode {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px 22px;
    margin-left: auto;
    padding: 0;
    border: 0;
    background: transparent;
}
/* 模式药丸（可点件，§1.3）：slate 族淡底 + 同族描边 + 同族 ink 字（原为透明底 + 近黑字）。
   min-height 32px 桌面；≤768 提升到 36px（触控目标，缺陷 #6）。 */
.pp-entry .pp-mode label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 32px;
    padding: 0 12px;
    border: 1px solid var(--bw-c-slate);
    border-radius: var(--bw-radius-pill);
    background: var(--bw-c-slate-bg);
    font-size: 13px;
    font-weight: var(--bw-fw-body);
    color: var(--bw-c-slate-ink);
    cursor: pointer;
    transition: background var(--bw-transition), border-color var(--bw-transition),
                color var(--bw-transition);
}
.pp-entry .pp-mode label:hover { background: var(--bw-c-slate-bg-h); }
/* 选中态（§6.2：同族渐变实底 + 反白字）。不支持 :has() 的老内核回退为上面的 slate 常驻态，
   同时原生 radio 的 accent-color 仍指示选中项 —— 降级无害。 */
.pp-entry .pp-mode label:has(input:checked) {
    background: linear-gradient(135deg, var(--bw-accent), var(--bw-accent-active));
    border-color: var(--bw-accent);
    color: var(--bw-text-inverse);
}
/* 选中项圆点反白，避免紫檀圆点落在紫檀实底上看不见 */
.pp-entry .pp-mode label:has(input:checked) input[type="radio"] { accent-color: var(--bw-text-inverse); }
/* 单选控件本身用紫檀（§1.2：点缀色只出现在可点元素） */
.pp-entry .pp-mode input[type="radio"] {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: var(--bw-accent);
    cursor: pointer;
}
/* 卡密输入：width:100% + 高 52px（桌面） */
.pp-entry .pp-input {
    display: block;
    width: 100%;
    height: 48px;
    padding: 0 16px;
    /* 可交互唯一边界 = --bw-border-strong（契约 §4.7③） */
    border: 1px solid var(--bw-border-strong);
    border-radius: var(--bw-radius-md);
    background: var(--bw-bg-surface);
    color: var(--bw-text-primary);
    font-family: var(--bw-font);
    font-size: 15px;
    font-weight: var(--bw-fw-body);
    letter-spacing: .04em;
    outline: none;
    transition: border-color var(--bw-transition), box-shadow var(--bw-transition),
                background var(--bw-transition);
}
.pp-entry .pp-input::placeholder {
    color: var(--bw-text-muted-on-tint);
    letter-spacing: normal;
}
/* 聚焦：边界转紫檀 + 紫檀焦点环（--bw-focus-ring = 纸白内环 + 紫檀外环） */
.pp-entry .pp-input:focus {
    border-color: var(--bw-accent);
    box-shadow: var(--bw-focus-ring);
}

/* 元信息（当前类型 / 获取时间）：仅 1px 墨线分段，无框无底 */
.pp-entry .pp-meta {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid var(--bw-divider);
}
.pp-entry .pp-meta-item {
    display: grid;
    gap: 3px;
    padding: 0 16px 0 0;
    border: 0;
    background: transparent;
    box-shadow: none;
}
.pp-entry .pp-meta-item + .pp-meta-item {
    padding-left: 16px;
    border-left: 1px solid var(--bw-divider);
}
/* 元信息键（"当前类型" / "获取时间"）承载信息 → 12px（缺陷 #9） */
.pp-entry .pp-meta-item span {
    font-size: 12px;
    font-weight: var(--bw-fw-strong);
    letter-spacing: .04em;
    color: var(--bw-text-muted-on-tint);
}
.pp-entry .pp-meta-item strong {
    font-size: 14px;
    font-weight: var(--bw-fw-strong);
    color: var(--bw-text-primary);
    word-break: break-all;
}

/* 提示文字 */
.pp-entry .pp-tip {
    margin: 10px 0 0;
    font-size: 12px;
    font-weight: var(--bw-fw-body);
    line-height: 1.5;
    text-align: left;
    color: var(--bw-text-muted-on-tint);
}
/* 强提示：语义色仅用于功能状态；12px 彩色小字必须 600 字重（契约 §4.7⑤） */
.pp-entry .pp-tip-danger {
    color: var(--bw-warning);
    font-weight: var(--bw-fw-strong);
}

/* ══ B4 结果带：QR 居中 + 信息两列网格 ═══════════════════════════════ */
.pp-entry .pp-result-shell {
    display: grid;
    gap: 16px;
    position: relative;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    /* 本元素在视图中仍带 .pp-card（theme.css .pp-card{padding:16px}）；
       不显式归零会让 B4 的墨线起线内缩 16px，与 B2/B3/B5 的通栏墨线错位，
       破坏"一轴五带"（缺陷 #3）。特异性 (0,2,0) > .pp-card (0,1,0)。 */
    padding: 0;
}
/* 就绪态显式声明"仍然无浮卡阴影"（.is-ready 由 JS 切换，仅此声明） */
.pp-entry .pp-result-shell.is-ready { box-shadow: none; }
.pp-entry .pp-result-head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--bw-hairline);
}
.pp-entry .pp-result-head h2 {
    margin: 0;
    font-size: 15px;
    font-weight: var(--bw-fw-strong);
    line-height: 1.3;
    color: var(--bw-text-primary);
}
.pp-entry .pp-result-state {
    flex: 0 0 auto;
    margin-left: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--bw-text-muted-on-tint);
    font-size: 12px;
    font-weight: var(--bw-fw-strong);
    letter-spacing: .02em;
    white-space: nowrap;
}
/* 形态编码：待生成 = 空心圆，已生成 = 对勾（CSS 生成内容，不改动任何 JS 文本） */
.pp-entry .pp-result-state::before {
    content: '○';
    margin-right: 5px;
}
.pp-entry .pp-result-state.success { color: var(--bw-success); }
.pp-entry .pp-result-state.success::before { content: '✓'; }

/* 结果主体 .pp-result-main：历史 DOM 钩子保留在视图（qr_entry.php 未改），
   本文件不再为该 class 输出任何声明（旧 248px + 1fr 双栏栅格、竖墨线、sticky 均已移除）；
   其子元素 .pp-qr-zone / .pp-info-grid 现按普通块级流自上而下堆叠，与单列栅格等效。 */
/* 二维码区：居中承托白片 = 1px --bw-border-ink + 柔影（扫码区中性无彩、不带硬印）。
   由伪元素绘制，未新增任何 DOM 节点。 */
.pp-entry .pp-qr-zone {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 288px;
    margin: 0 auto 22px;
}
/* 承托片：240px 二维码 + 12px×2 白边 = 264px */
.pp-entry .pp-qr-zone::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    width: 264px;
    height: 264px;
    margin: -132px 0 0 -132px;
    z-index: 0;
    background: var(--bw-paper);
    border: 1px solid var(--bw-border-ink);
    border-radius: var(--bw-radius-md);
    box-shadow: var(--bw-shadow-sm);
    pointer-events: none;
}
/* 墨色细环：较承托片四周外扩 14px；1px --bw-divider 单色细线，非彩色光晕 */
.pp-entry .pp-qr-glow {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 292px;
    height: 292px;
    margin: -146px 0 0 -146px;
    z-index: 0;
    border: 1px solid var(--bw-divider);
    border-radius: var(--bw-radius-2xl);
    pointer-events: none;
}
.pp-entry .pp-qr-placeholder {
    position: relative;
    z-index: 2;
    font-size: 13px;
    font-weight: var(--bw-fw-strong);
    color: var(--bw-text-muted-on-tint);
    letter-spacing: .04em;
    text-align: center;
}
/* 固定 240px 原生尺寸：不做缩放，保证二维码清晰可扫 */
.pp-entry #entry-qr-canvas {
    position: relative;
    z-index: 2;
    display: block;
    width: 240px;
    height: 240px;
    background: var(--bw-paper);
    image-rendering: pixelated;
}
.pp-entry .pp-qr-image {
    position: relative;
    z-index: 2;
    display: block;
    width: 240px;
    height: 240px;
    background: var(--bw-paper);
}
.pp-entry #entry-qr-canvas[hidden],
.pp-entry .pp-qr-image[hidden] { display: none; }

/* 信息网格：两列、gap:0、1px 墨线分格（#infoLink 单元跨两列） */
.pp-entry .pp-info-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
    border-top: 1px solid var(--bw-hairline);
}
.pp-entry .pp-info-line {
    display: grid;
    gap: 3px;
    min-width: 0;
    padding: 14px 16px;
    border-bottom: 1px solid var(--bw-divider);
    border-right: 1px solid var(--bw-divider);
}
/* 右列单元去掉右侧分格线，避免外缘多一条竖线（单元顺序：链接 / 请求类型 / 限制渠道 / 获取时间 / 准入说明） */
.pp-entry .pp-info-grid > .pp-info-line:nth-child(odd) { border-right: 0; }
/* 末行下边线由 B5 操作带的 top 墨线承担，避免两条 1px 线叠成双线 */
.pp-entry .pp-info-grid > .pp-info-line:nth-last-child(-n+2) { border-bottom: 0; }
/* 链接单元跨满两列 */
.pp-entry .pp-info-grid > #infoLink { grid-column: 1 / -1; }
/* 信息网格键（"链接 / 请求类型 / 限制渠道 / 获取时间 / 准入说明"）承载信息 → 12px（缺陷 #9） */
.pp-entry .pp-info-line > span {
    font-size: 12px;
    font-weight: var(--bw-fw-strong);
    letter-spacing: .04em;
    color: var(--bw-text-muted-on-tint);
}
/* 信息值 13.5/400（契约字排） */
.pp-entry .pp-info-line > strong {
    font-size: 13.5px;
    font-weight: var(--bw-fw-body);
    line-height: 1.6;
    color: var(--bw-text-primary);
    word-break: break-all;
}
.pp-entry .pp-info-line.is-empty > strong { color: var(--bw-text-muted-on-tint); }
/* 准入说明：非错误信息，用墨色 + 字重编码，不使用语义红 */
.pp-entry .pp-info-line-rule > strong {
    color: var(--bw-text-primary);
    font-weight: var(--bw-fw-strong);
}

/* ══ B5 操作带：按钮栅格（主按钮占首格） ════════════════════════════ */
/* 阈值 200px 在 808px 内容宽下只能排 3 列 → 第 4 钮（复制链接）独占下左格（3+1 留空，缺陷 #4）。
   降到 180px：4*180 + 3*gap ≤ 808 → 单行 4 列；≤768 由下面的断点改 240px 取 2×2。 */
.pp-entry .pp-action-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
}
.pp-entry .pp-action-row .pp-btn {
    width: 100%;
    height: 44px;
}
.pp-entry .pp-action-row .pp-btn-sm {
    height: 44px;
    font-size: 13px;
}
/* 全页唯一硬印 = 主按钮（#submitBtn 是 #entryForm 首格主按钮） */
.pp-entry #submitBtn { box-shadow: var(--bw-shadow-stamp); }
.pp-entry #submitBtn:disabled { box-shadow: none; }
/* 主按钮的硬印（特异性 1,1,0）会压过 .pp-entry .pp-btn:focus-visible 的焦点环（0,3,0），
   导致键盘聚焦零可见提示（缺陷 #1）→ 按同元素加 :focus-visible（1,2,0 > 1,1,0）补焦点环。 */
.pp-entry #submitBtn:focus-visible {
    outline: none;
    box-shadow: var(--bw-focus-ring);
}
/* 「换一条链接」沿用历史类名 pp-btn-iris/pp-btn-primary（契约 §3.3 不改 class 钩子），
   但按 §2 全页唯一硬印要求显式清除其硬印，仅保留紫檀面 + 柔影 */
.pp-entry .pp-band-action .pp-btn-iris:not(#submitBtn) { box-shadow: var(--bw-shadow-xs); }
/* 同一缺陷（#1 同类）：上一条规则含 :not(#submitBtn) 使特异性升到 (1,3,0)，
   会压过 .pp-entry .pp-btn:focus-visible 的焦点环 (0,3,0) → B5 另一个紫檀按钮键盘聚焦也不可见。
   按同特异性补 :focus-visible（(1,4,0) > (1,3,0)）恢复焦点环。 */
.pp-entry .pp-band-action .pp-btn-iris:not(#submitBtn):focus-visible {
    box-shadow: var(--bw-focus-ring);
}

/* 主按钮：紫檀实底 + 反白字 */
.pp-entry .pp-btn-iris {
    background: var(--bw-accent);
    border-color: var(--bw-accent);
    color: var(--bw-text-inverse);
}
.pp-entry .pp-btn-iris:hover {
    background: var(--bw-accent-hover);
    border-color: var(--bw-accent-hover);
    color: var(--bw-text-inverse);
}
.pp-entry .pp-btn-iris:active {
    background: var(--bw-accent-active);
    border-color: var(--bw-accent-active);
    box-shadow: none;
    transform: translate(2px, 2px);
}
.pp-entry .pp-btn-iris:disabled,
.pp-entry .pp-btn-iris[disabled] {
    background: var(--bw-bg-sunken);
    border: 1px dashed var(--bw-text-disabled);
    color: var(--bw-text-disabled);
    box-shadow: none;
    transform: none;
    cursor: not-allowed;
}
/* 次按钮「复制强开 / 复制链接」= 中性工具动作 → blue 族淡底（§1.4 + §1.3）
   原为"纸白面(--bw-bg-surface) + 细边 + 近黑字(--bw-text-primary)"，属 §1.3 裸控件（缺陷 #2）；
   现改 blue-bg 底 + 同族 1px --bw-c-blue 描边 + blue-ink 字（不叠硬印）。
   注：theme.css 的 .pp-btn-soft 以 --bw-accent-border 作唯一边界，而契约 §4.7③
   禁止 --bw-accent-border 作可交互唯一边界，故本页改同族 base 描边 --bw-c-blue。 */
.pp-entry .pp-btn-soft {
    background: var(--bw-c-blue-bg);
    border: 1px solid var(--bw-c-blue);
    color: var(--bw-c-blue-ink);
    box-shadow: var(--bw-shadow-xs);
}
.pp-entry .pp-btn-soft:hover {
    background: var(--bw-c-blue-bg-h);
    border-color: var(--bw-c-blue-ink);
    color: var(--bw-c-blue-ink);
    box-shadow: var(--bw-shadow-sm);
}
.pp-entry .pp-btn-soft:active {
    background: var(--bw-c-blue-bg-h);
    border-color: var(--bw-c-blue-ink);
    box-shadow: inset 0 0 0 1px var(--bw-c-blue-ink);
}
/* 次按钮禁用态（否则本文件后加载会盖掉 theme 的 .pp-btn:disabled 虚线态） */
.pp-entry .pp-btn-soft:disabled,
.pp-entry .pp-btn-soft[disabled] {
    background: var(--bw-bg-sunken);
    border: 1px dashed var(--bw-text-disabled);
    color: var(--bw-text-disabled);
    box-shadow: none;
    transform: none;
    cursor: not-allowed;
}

/* ══ B6 脚注 ═════════════════════════════════════════════════════════ */
.pp-entry .pp-footnote {
    margin: 0;
    padding-top: 18px;
    font-size: 12px;
    font-weight: var(--bw-fw-body);
    line-height: 1.6;
    text-align: left;
    color: var(--bw-text-muted-on-tint);
}

/* ── 复制成功提示（实心墨印章 + 柔影，非硬印） ──────────────────── */
.pp-entry .pp-toast {
    position: fixed;
    top: 50%;
    left: 50%;
    z-index: 60;
    transform: translate(-50%, -50%) scale(.92);
    padding: 12px 24px;
    border: 0;
    border-radius: var(--bw-radius-md);
    background: var(--bw-ink);
    color: var(--bw-text-inverse);
    font-family: var(--bw-font);
    font-size: 14px;
    font-weight: var(--bw-fw-strong);
    letter-spacing: .02em;
    box-shadow: var(--bw-shadow-overlay);
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--bw-transition), transform var(--bw-transition);
}
.pp-entry .pp-toast.show {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}

/* ── 焦点可见性（键盘可达，紫檀焦点环） ─────────────────────────── */
.pp-entry .pp-btn:focus-visible,
body.pp-entry-body .pp-stat-btn:focus-visible,
.pp-entry .pp-mode input:focus-visible {
    outline: none;
    box-shadow: var(--bw-focus-ring);
}
/* 类型分段（缺陷 #5）：父级 .pp-tabs 为 overflow:hidden，外扩 4px 焦点环会被裁掉。
   改内描边，用 outline + outline-offset:-2px 而非 inset box-shadow —— 因为 .pp-tab::before
   的上下 2px 类型条会盖住 inset 阴影的上下边；outline 绘制在 ::before 之上、随 border-radius
   收角，且负 offset 保证描边仍落在父级裁剪区内（四边全可见）。 */
.pp-entry .pp-tab:focus-visible {
    outline: 2px solid var(--bw-accent);
    outline-offset: -2px;
    box-shadow: none;   /* 取消外扩焦点环（会被父级 overflow:hidden 裁剪） */
}

/* ═══════════════════════════════════════════════════════════════════
   桌面端（≥1024px）版式编排层
   只含版式/密度变化（不改变任何 DOM 钩子）：主轴 860 居中，五带同宽；
   与旧版「左表单 + 右结果」双栏为结构级不同。
   ═══════════════════════════════════════════════════════════════════ */
@media (min-width: 1024px) {
    /* 长卷留白加大（仍与横脊同源） */
    body.pp-entry-body { --entry-gutter: 26px; }
    .pp-entry { padding: 0 var(--entry-gutter) 64px; }

    /* 横脊高度与字排（脊为通栏，只改内层留白） */
    body.pp-entry-body .pp-hero-inner {
        min-height: 104px;
        padding: 20px var(--entry-gutter);
    }
    body.pp-entry-body .pp-hero-title { font-size: 26px; }
    body.pp-entry-body .pp-hero-sub { font-size: 13.5px; letter-spacing: .08em; }
    /* 装饰墨点仅桌面呈现（基础视口已置 display:none） */
    body.pp-entry-body .pp-hero-bubble { display: block; }

    /* 注：.pp-entry .pp-band{padding:26px 0} 与基础规则同值 → 已按缺陷 #10 合并删除 */
    .pp-entry .pp-band-head { margin-bottom: 18px; }
    .pp-entry .pp-flowbar { padding-top: 22px; }

    /* 连体分段：仅加大段内左右内距（height:46px 与 font-size:13px 与基础规则同值，已合并） */
    .pp-entry .pp-tab { padding: 0 8px; }

    /* 输入：契约指定 width:100% + height:52px */
    .pp-entry .pp-input { height: 52px; padding: 0 18px; }
    .pp-entry #cxQrCode { letter-spacing: .06em; }

    .pp-entry .pp-action-row { gap: 14px; }
    .pp-entry .pp-action-row .pp-btn { height: 46px; }
    .pp-entry .pp-action-row .pp-btn-sm { height: 46px; }
}

/* ═══ 响应式：≤1024px（单列 + gutter 20；五带本已单轴） ═══════════ */
@media (max-width: 1024px) {
    body.pp-entry-body { --entry-gutter: 20px; }
}

/* ═══ 响应式：≤768px（既有断点保留：类型带折 3 列 + 信息单列 + 按钮折行 + 输入 46px）═══ */
@media (max-width: 768px) {
    body.pp-entry-body { --entry-gutter: 14px; }
    .pp-entry { padding: 0 var(--entry-gutter) 44px; }

    /* 触控目标 ≥36px（缺陷 #6；原 34px） */
    body.pp-entry-body .pp-stat-btn {
        top: 12px;
        right: 14px;
        height: 36px;
        min-height: 36px;
        padding: 0 14px;
        font-size: 12px;
    }

    body.pp-entry-body .pp-hero-inner {
        gap: 14px;
        min-height: 84px;
        padding: 16px var(--entry-gutter);
    }
    /* 注：.pp-hero-logo{width/height:44px} 与基础规则同值 → 已按缺陷 #10 合并删除 */
    body.pp-entry-body .pp-hero-title { font-size: 21px; }
    body.pp-entry-body .pp-hero-sub { font-size: 12px; letter-spacing: .04em; }
    body.pp-entry-body .pp-hero-art { width: 240px; height: 130px; }

    .pp-entry .pp-band { padding: 22px 0; }

    /* 类型带折 3 列：改为独立药丸（断开连体，行间用 gap 区分）；
       药丸同样是可点件 → slate 族淡底 + 同族描边（§1.3，原为纸白底 + 近黑字） */
    .pp-entry .pp-tabs {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
        border: 0;
        border-radius: 0;
        overflow: visible;
        background: transparent;
    }
    .pp-entry .pp-tab {
        height: 40px;
        border: 1px solid var(--bw-c-slate);
        border-radius: var(--bw-radius-pill);
        background: var(--bw-c-slate-bg);
    }
    .pp-entry .pp-tab:first-child { border-left: 1px solid var(--bw-c-slate); }

    /* 模式药丸触控目标 ≥36px（缺陷 #6） */
    .pp-entry .pp-mode label { min-height: 36px; }

    /* 输入 46px */
    .pp-entry .pp-input { height: 46px; font-size: 15px; }

    /* 信息单列：清掉右分格线，仅保留行间墨线，末行去线（由 B5 top 线承担） */
    .pp-entry .pp-info-grid { grid-template-columns: minmax(0, 1fr); }
    .pp-entry .pp-info-grid > .pp-info-line { border-right: 0; }
    .pp-entry .pp-info-grid > .pp-info-line:nth-last-child(-n+2) { border-bottom: 1px solid var(--bw-divider); }
    .pp-entry .pp-info-grid > .pp-info-line:last-child { border-bottom: 0; }

    /* 按钮折行：240px 阈值下 740px 内容宽只能排 2 列 → 2×2，不会出现 3+1 独占下左格（缺陷 #4） */
    .pp-entry .pp-action-row { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }

    /* 注：.pp-qr-zone{min-height:288px} 与 .pp-meta{1fr 1fr} 与基础规则同值
       → 已按缺陷 #10 合并删除（≤480 的 264px 单列覆盖仍保留） */
}

/* ═══ 响应式：≤480px（既有断点保留：类型带折 2 列 + 输入 42px + 按钮全宽竖排）═══ */
@media (max-width: 480px) {
    body.pp-entry-body { --entry-gutter: 10px; }
    .pp-entry { padding: 0 var(--entry-gutter) 38px; }

    body.pp-entry-body .pp-hero-inner {
        flex-direction: column;
        align-items: flex-start;
        text-align: left;
        padding: 16px var(--entry-gutter);
    }
    body.pp-entry-body .pp-hero-title { font-size: 19px; }
    body.pp-entry-body .pp-hero-art { width: 190px; height: 110px; }

    .pp-entry .pp-band { padding: 18px 0; }
    .pp-entry .pp-band-head { margin-bottom: 14px; }

    /* 类型带折 2 列 */
    .pp-entry .pp-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pp-entry .pp-tab { height: 36px; font-size: 12.5px; }

    .pp-entry .pp-input { height: 42px; font-size: 14px; }

    .pp-entry .pp-mode { gap: 8px 18px; }
    .pp-entry .pp-mode label { font-size: 12px; }

    /* 元信息单列：竖分隔改横分隔 */
    .pp-entry .pp-meta { grid-template-columns: minmax(0, 1fr); }
    .pp-entry .pp-meta-item { padding: 0; }
    .pp-entry .pp-meta-item + .pp-meta-item {
        padding-left: 0;
        margin-top: 10px;
        padding-top: 10px;
        border-left: 0;
        border-top: 1px solid var(--bw-divider);
    }

    /* 按钮全宽竖排 */
    .pp-entry .pp-action-row { grid-template-columns: minmax(0, 1fr); }

    .pp-entry .pp-qr-zone { min-height: 264px; }
    .pp-entry .pp-toast { padding: 11px 20px; font-size: 13px; }
}

/* ═══ 动效偏好：降低动效 ═══════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
    .pp-entry .pp-toast,
    body.pp-entry-body .pp-stat-btn,
    .pp-entry .pp-tab,
    .pp-entry .pp-mode label,
    .pp-entry .pp-status,
    .pp-entry .pp-btn-iris,
    .pp-entry .pp-btn-soft {
        transition: none;
    }
    .pp-entry .pp-btn-iris:active,
    .pp-entry .pp-btn-iris:hover { transform: none; }
}
