@import url('./essay-feedback.css');

/*
 * essay-review.css
 * 作文批改结果展示样式 —— 评分、纠错卡片、范文、标注高亮等
 * 所有颜色引用 CSS 变量，半透明色统一使用 color-mix()
 */

/* =========================================================
   1. Token Mark Styles (.er)
   ========================================================= */

.er {
    transition: background-color 150ms ease-out;
    border-radius: 2px;
    padding: 0 1px;
}

.er--err {
    background-color: color-mix(in srgb, var(--color-danger) 8%, transparent);
    text-decoration: underline wavy;
    text-decoration-color: color-mix(in srgb, var(--color-danger) 40%, transparent);
    text-underline-offset: 2px;
    text-decoration-thickness: 1.2px;
}

.er--good {
    background-color: color-mix(in srgb, var(--color-success) 10%, transparent);
}

.er--up {
    background-color: var(--dl-hover);
    border-bottom: 1.5px solid var(--dl-line-pop);
}

.er--hl {
    background-color: color-mix(in srgb, var(--color-warning) 10%, transparent);
}

/* 范文的高亮底纹（原 `.er-mark`，§15.4.1）按用户 2026-09-11 第 8 条**完全取消**，
   规则随渲染一起删掉，不留无消费者的样式。库里的 `layout_json.marks` 原样留着
   （D-233 同口径：不再展示，不删数据），要恢复就把渲染与这条规则一并加回来；
   令牌 `--dl-tint-mark` 留在 design-tokens.css 里，它是语义色阶的一格。 */

.er--del {
    text-decoration: line-through;
    text-decoration-color: color-mix(in srgb, var(--color-danger) 50%, transparent);
    text-decoration-thickness: 1.5px;
    opacity: 0.6;
}

/* =========================================================
   2. Review Result Card（D-190 §9.5）

   五个页签（总评 / 逐句纠错 / 润色建议 / 修改后全文 / 参考范文）已整体撤掉：
   润色、修改后全文、模型范文三项从批改 schema 里删了，剩下的内容一屏放得下，
   分成页签只是让人多点四次。现在是单面板 + 一个折叠区（参考范文 / 参考译文）。
   ========================================================= */

.er-result {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* --- 头部：总分 · 档位 · 一句话总评 · 省份小字 --- */

.er-head-score {
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.er-score-value {
    font-size: 22px;
    font-weight: 600;
    color: var(--subjective-text);
    letter-spacing: -0.02em;
}

.er-score-max {
    font-size: 14px;
    font-weight: 500;
    color: var(--subjective-text-muted);
}

.er-head-band {
    font-family: var(--subjective-font-ui);
    font-size: 12px;
    font-weight: 500;
    color: var(--subjective-text-muted);
    font-variant-numeric: tabular-nums;
}

.er-head-summary {
    margin: 6px 0 0;
    font-size: 14px;
    line-height: 1.7;
    color: var(--subjective-text-secondary);
}

.er-head-note {
    margin: 6px 0 0;
    font-size: 12px;
    line-height: 1.6;
    color: var(--subjective-text-muted);
}

/* 跑题只用淡红，一色一义（DESKTOP_UX_PROGRAM §3.20） */
.er-head-note--offtopic {
    color: var(--dl-err-ink, var(--color-danger));
}

/* 省份小字（LAUNCH_PROGRAM :196 / :218）。只出现在批改结果里，批改行上没有。
   填了省份 → 跟在总评末尾的括注（inlineSlot 在那个 <p> 里面）；
   没填     → 头部末尾单起一行，整行可点开备考信息浮层。
   两个槽都用 :empty 收掉，免得空槽还占一行外边距。 */
.er-head-province-slot:empty {
    display: none;
}

.er-head-province-slot--line {
    margin-top: 6px;
}

.er-head-province {
    display: inline;
    padding: 0;
    font-family: inherit;
    font-size: 12px;
    line-height: 1.5;
    text-align: left;
    color: var(--dl-ink-3);
    background: none;
    border: 0;
}

/* 已填那份跟在总评后面：不占行、不加下划线、不可点 */
.er-head-province--filled {
    margin-left: 4px;
    cursor: default;
}

/* 没填那份整行可点。不给下划线：这是次要信息，悬停变色就够 */
button.er-head-province {
    display: block;
    width: 100%;
    cursor: pointer;
}

button.er-head-province:hover {
    color: var(--subjective-text-secondary);
}

/* 答案页的批改行：只有主钮（省份说明已归入批改结果） */
.er-review-row {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.er-review-slot:empty {
    display: none;
}

.er-review-slot {
    margin-bottom: 16px;
}

/* --- 三行维度 / 逐句：「x / y · ≤30 字」 --- */

.er-lines {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.er-line {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 13px;
    line-height: 1.6;
    min-width: 0;
}

.er-line-name {
    flex: 0 0 auto;
    font-weight: 500;
    color: var(--subjective-text);
}

.er-line-score {
    flex: 0 0 auto;
    color: var(--subjective-text-secondary);
    font-variant-numeric: tabular-nums;
}

.er-line-note {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--subjective-text-muted);
}

.er-line-note::before {
    content: '·';
    margin-right: 6px;
    color: var(--subjective-text-muted);
}

/* --- 修改：原句片段 → 改法 --- */

.er-fixes {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* 一条一行的连续文本，不是两栏：片段长了要顺着往下折，
   分成两个 flex 格子会让箭头卡在中间、右边那半另起一行读不下去 */
.er-fix {
    font-size: 14px;
    line-height: 1.6;
    word-break: break-word;
}

.er-fix-from,
.er-fix-to {
    display: inline;
}

.er-fix-from {
    color: var(--subjective-text-secondary);
}

.er-fix-to {
    color: var(--subjective-text);
}

/* tokenToHtml 走 marked，会把片段包成 <p>；这里是一行里的两段，别让它换行 */
.er-fix-from p,
.er-fix-to p {
    display: inline;
    margin: 0;
}

.er-fix-arrow {
    margin: 0 6px;
    color: var(--subjective-text-muted);
}

/* `.er-next-step`（「下次先改这个」）按用户 2026-09-11 第 12 条整条撤下：
   后端结果里已无 `next_step`，两套渲染器也都不再画这一行，规则一并删掉。 */

/* --- 参考：参考范文 / 参考译文（D-192 §2.5-2，不再折叠） --- */

.er-ref {
    border-top: 1px solid var(--subjective-input-border);
    padding-top: 12px;
}

/* 这一块排在批改结果之后；结果为空时它就是纸上第一块内容，那条分隔线没有意义 */
.er-review-slot:empty + .er-ref {
    border-top: 0;
    padding-top: 0;
}

.er-ref-title {
    margin: 0 0 10px;
    font-family: var(--subjective-font-ui);
    font-size: 12px;
    font-weight: 600;
    color: var(--subjective-text-muted);
}

.er-ref-empty {
    margin: 0;
    font-size: 13px;
    color: var(--subjective-text-muted);
}

.er-ref-body {
    margin-top: 10px;
    font-size: 14px;
    line-height: 1.8;
    color: var(--subjective-text);
}

.er-ref-block + .er-ref-block {
    margin-top: 14px;
}

.er-ref-label {
    margin: 0 0 4px;
    font-family: var(--subjective-font-ui);
    font-size: 12px;
    font-weight: 600;
    color: var(--subjective-text-muted);
    font-variant-numeric: tabular-nums;
}

/* 参考里的英文按词切开（§2.5「可交互」）：双击弹词，悬停给一块底色，不下划线 */
.ref-w {
    border-radius: 2px;
    cursor: default;
}

@media (hover: hover) {
    .ref-w:hover {
        background: var(--dl-hover, rgba(11, 18, 32, .04));
    }
}

.ref-w:focus-visible {
    outline: none;
    box-shadow: var(--dl-focus-ring);
}

/* 参考原句用印刷体，与试卷同族（§2.5-2） */
.er-ref-source {
    font-size: 14px;
    line-height: 20px;
}

.er-ref-para {
    margin: 0 0 10px;
    word-break: break-word;
}

/* 整题五句的参考里，英文原句压一档：读的人要找的是中文那一行 */
.er-ref-source {
    margin-bottom: 4px;
    color: var(--subjective-text-secondary);
}

.er-ref-para:last-child {
    margin-bottom: 0;
}

.er-ref-points {
    margin: 0;
    padding: 0;
    list-style: none;
}

.er-ref-point {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 13px;
    line-height: 1.7;
}

.er-ref-point-score {
    flex: 0 0 auto;
    color: var(--subjective-text-muted);
    font-variant-numeric: tabular-nums;
}

/* =========================================================
   3. Review Content Area
   ========================================================= */

/* 不写 overscroll-behavior：答案纸是**文档流里的一张纸**，不是浮层。
   `contain` 会把滚轮锁死在这个盒子里——它滚到底之后不再往窗口传，指针停在纸上时
   整个阅读器就不动了（实测：纸 846px 几乎占满 900px 视口，内层只能滚 91px 就停，
   window.scrollY 一动不动）。浮层里 `contain` 是对的（answer-card / explanation-panel /
   watson-panel 都留着），这里要的是浏览器默认的滚动链。 */
.er-content {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 16px 0;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--subjective-text) 10%, transparent) transparent;
}

.er-content-panel {
    display: none;
}

.er-content-panel.active {
    display: block;
}

/* =========================================================
   4. Section titles and lists
   ========================================================= */

.er-section {
    margin: 0;
}

.er-section-title {
    font-family: var(--subjective-font-ui);
    font-size: 13px;
    font-weight: 600;
    color: var(--subjective-text);
    margin: 0 0 8px;
    letter-spacing: 0.02em;
}

/* =========================================================
   5. State Views
   ========================================================= */

.er-state--empty,
.er-state--error {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 120px;
    font-size: 13px;
    color: var(--subjective-text-muted);
    text-align: center;
    padding: 24px;
}

/* 作答改过之后结果顶部那一行（§2.5-1）：一句话，不做警示色块 */
.er-stale-banner {
    margin: 0 0 10px;
    font-size: 12px;
    line-height: 1.5;
    color: var(--subjective-text-muted);
}

/* --- 等待态（§14.5 / D-198）---
   骨架三行（.er-loading-line + er-skeleton-pulse）已删：全站「模型在想」只有华生思考
   指示器一种，见 components/thinking-indicator.css。 */

.er-state--loading {
    display: flex;
    align-items: center;
    min-height: 24px;
    color: var(--dl-ink-2);
}

/* 批改主钮的加载态由指示器承担，§1.2 的单色 spinner 在这一处让位 */
.er-review-btn.is-loading::after {
    content: none;
}

.er-review-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

/* 手机答案纸（竖屏内联页）上的批改钮：这条渲染路径给的是通用 `btn btn-primary`
   （review-controller.js `_buildReviewRow`），拿不到 subjective-phone.css 那条
   `.phone-inline-page .subjective-btn { min-height: 48px }`；而 `.btn` 自己写着
   min-height 36，类选择器压过 style.css 的 `button { min-height: 48px }`（元素选择器），
   390 实测 88×36，够不到触摸目标 48。手机档按最小触摸目标撑到 48 —— 这一枚是实色
   主钮、有自己的底色，撑高就是它该有的样子，不走透明扩区那一套。 */
@media (max-width: 768px) {
    .er-review-row .er-review-btn {
        min-height: 48px;
        min-width: 48px;
    }
}

/* 答案纸工具条里的批改钮（§16.1 ③ / §16.15-2）：锁宽只为「同一枚钮换文案不跳位」，
   所以取值按**实测最宽那一态**来，不是按字数。三态实测（13px/500 + 内衬 28）：
   批改 54｜重新批改 80｜批改中 39+28+指示器 16+gap 6 = **89**。
   89 向上取到 4px 栅格 = 92。原来的 96 是照「重新批改」四个字估的，而那一态根本不是最宽的。 */
.paper-tools .er-review-btn {
    min-width: 92px;
}

/* 加载态不 disabled（那会落到 .38 灰），只挡住点击：钮里还要留着思考指示器的墨色 */
.paper-tools .er-review-btn.is-loading {
    pointer-events: none;
}

/* =========================================================
   6.（原「批改页底栏」已删：批改钮搬到纸内第一行，状态改就地状态字。D-192 §2.5）
   ========================================================= */

/* =========================================================
   7. Review Page Layout
   ========================================================= */

/* 横屏答案纸已换成印刷版单列布局（§14.1），grid 行定义随 .subjective-answer-page 一起撤；
   版心与页脚由 subjective-mode.css 的 .paper-sheet / .paper-footer 承担。 */
.subjective-review-page .er-content,
.subjective-review-page .er-content-panel {
    min-height: 0;
    height: 100%;
    padding: 0;
    overflow: visible;
}

/* 分页器按 offsetTop 量块的位置，版心容器必须是它们的 offsetParent */
.subjective-review-page .er-content-panel {
    position: relative;
}

.subjective-review-inline-page .sip-content {
    overflow: hidden;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
}

.subjective-review-inline-page .er-content {
    min-height: 0;
    overflow-y: auto;
    padding: 14px 0;
}

/* 手机答案 / 批改纸(D-2 + D-3,2026-09-17)
   ------------------------------------------------------------
   作答态那张纸靠 A4 比例锁高(height:0 + padding-bottom:141.4%),头/写作区/底栏都是
   绝对定位、各自吃 --pdf-content-inset-inline,所以比例锁对它是成立的。
   答案态不是:内容是常规流的长文,长度由批改结果决定,锁进 A4 框里就只有两种结果——
   被 overflow:hidden 裁掉,或者在一个高度为 0 的盒子里算出压扁的 1fr。同时绝对定位那套
   失效,左右版心就没人给了(链上两处 padding 左右都是 0)。
   故答案/批改纸在手机上:高度交给内容、滚动交给抽屉外壳、版心交给 .sip-content 自己的 padding。
   纸的视觉(纸色、圆角、满屏铺底)一个字不动;作答态一个字不碰。
   选择器要压过 subjective-phone.css:304 的 `body.reader-mobile ... .sip-fullscreen-sheet
   > .sip-content`(同为 0,4,1),靠的是本文件在 viewer.html:167 排在它之后。 */
.subjective-review-inline-page.phone-inline-page {
    height: auto;
    min-height: 0;
    padding-bottom: 0;
}

body.reader-mobile .subjective-review-inline-page.sip-fullscreen-sheet > .sip-content,
.subjective-review-inline-page.phone-inline-page .sip-content {
    position: relative;
    inset: auto;
    display: block;
    width: 100%;
    height: auto;
    /* 内容短时纸仍铺满抽屉,不缩成一张孤零零的小卡 */
    min-height: 100%;
    padding: 24px 24px calc(24px + var(--safe-area-bottom));
    overflow: visible;
}

@media (max-width: 480px) {
    body.reader-mobile .subjective-review-inline-page.sip-fullscreen-sheet > .sip-content,
    .subjective-review-inline-page.phone-inline-page .sip-content {
        padding: 16px 16px calc(16px + var(--safe-area-bottom));
    }
}

/* 一张纸只留一个滚动条:滚动归抽屉外壳(subjective-phone.css:282)。
   这里不动 overflow —— 基线的 `overflow-y:auto / overflow-x:hidden` 在高度为 auto 时
   既滚不起来也裁不掉,而 overflow-x:hidden 还挡着长不可断串的横向溢出,改成 visible 反而丢保护。 */
.subjective-review-inline-page.phone-inline-page .er-content {
    flex: none;
    height: auto;
    padding: 14px 0 0;
}

.subjective-review-inline-page.phone-inline-page .sip-header-row {
    position: static;
    top: auto;
    right: auto;
    left: auto;
    height: auto;
}

.subjective-review-inline-page.phone-inline-page .sip-label {
    margin-bottom: 0;
}

/* =========================================================
   8. Dark Theme Overrides
   ========================================================= */

html.theme-dark .er--err,
html[data-theme="dark"] .er--err {
    background-color: color-mix(in srgb, var(--color-danger) 12%, transparent);
    text-decoration-color: color-mix(in srgb, var(--color-danger) 50%, transparent);
}

html.theme-dark .er--good,
html[data-theme="dark"] .er--good {
    background-color: color-mix(in srgb, var(--color-success) 14%, transparent);
}

/* `.er--up` 的暗色覆写整块删除：软底与边框改用 --dl-hover / --dl-line-pop 之后，
   这两个令牌自己在 design-tokens.css 里就有暗色定义，再写一遍等于双源。 */

html.theme-dark .er--hl,
html[data-theme="dark"] .er--hl {
    background-color: color-mix(in srgb, var(--color-warning) 14%, transparent);
}

/* =========================================================
   9. Eye Care Theme Overrides
   ========================================================= */

html.theme-eye-care .er--err {
    background-color: color-mix(in srgb, #c53030 10%, transparent);
    text-decoration-color: color-mix(in srgb, #c53030 35%, transparent);
}

html.theme-eye-care .er--good {
    background-color: color-mix(in srgb, #0d9488 8%, transparent);
}

html.theme-eye-care .er--up {
    background-color: color-mix(in srgb, #8b7355 10%, transparent);
    border-bottom-color: color-mix(in srgb, #8b7355 25%, transparent);
}

html.theme-eye-care .er--hl {
    background-color: color-mix(in srgb, #b8860b 8%, transparent);
}

/* =========================================================
   10. Responsive (Mobile)
   ========================================================= */

@media (max-width: 768px) {
    .er-score-value {
        font-size: 20px;
    }

    .er-fix {
        font-size: 13px;
    }

    .er-line {
        font-size: 12px;
    }

    .er-ref-body {
        font-size: 13px;
    }
}


/* =========================================================
   11. 印刷版答案纸（§14.1.5）—— 印刷黑 / 批改红 / 改法绿，无灰阶
   数值真相源 typeset/latex/template/spec.json，全部走纸坐标 var(--pt)。
   ========================================================= */

.subjective-review-page .er-block:not(.essay-feedback) {
    display: block;
    font-family: var(--paper-font);
    font-size: calc(13.6 * var(--pt));
    line-height: calc(21.8 * var(--pt));
    color: var(--dl-ink);
}

.subjective-review-page .er-block:not(.essay-feedback) p {
    margin: 0;
}

/* 「参考译文：」「评：」「修改：」——宋体引导词，不是灰标签
   （「下次先改：」已按用户 2026-09-11 第 12 条撤下） */
.subjective-review-page .er-lead {
    font-family: var(--paper-font);
}

/* 批改态的逐句批注：界面字、墨二色，不带引导词；分数「2 / 2」Times 浮在首行右端。
   红笔手写体（Caveat）与整段红字评语已撤：红色在这张纸上只有一个意思——原文里错的地方。 */
.subjective-review-page .er-note {
    margin-top: calc(3 * var(--pt));
    font-family: var(--dl-font);
    font-size: calc(12 * var(--pt));
    line-height: 1.7;
    color: var(--dl-ink-2);
}

/* 参考块：题间空一行；题号悬挂在版心左缘 */
.subjective-review-page .er-ref-block {
    position: relative;
}

.subjective-review-page .er-ref-block--sentence {
    padding-left: 1.5em;
    margin-bottom: calc(21.8 * var(--pt));
}

.subjective-review-page .er-ref-label {
    position: absolute;
    left: 0;
    top: 0;
    font-family: "Times New Roman", Times, serif;
    font-weight: 700;
    color: var(--dl-ink);
}

/* 逐句分数浮在题号行右端：float 让第一行英文自动避开，不压字 */
.subjective-review-page .er-ref-score {
    float: right;
    margin-left: calc(13.6 * var(--pt));
    font-family: "Times New Roman", Times, serif;
    font-size: calc(12 * var(--pt));
    font-variant-numeric: lining-nums tabular-nums;
    color: var(--dl-ink-2);
    white-space: nowrap;
}

.subjective-review-page .er-ref-source {
    text-align: justify;
    hyphens: none;
}

.subjective-review-page .er-ref-indent {
    text-indent: 1.9em;
}

/* 范文排版块（§15.4.1）：五种 kind 共用 .er-ref-source 的墨色与两端对齐，
   这里只覆写对齐与缩进。标题不加粗——纸上的印刷层靠居中区分层级，不靠字重。 */
.subjective-review-page .er-ref-title {
    text-align: center;
    text-indent: 0;
    font-weight: 400;
}

.subjective-review-page .er-ref-salutation {
    text-align: left;
    text-indent: 0;
}

.subjective-review-page .er-ref-closing,
.subjective-review-page .er-ref-signature {
    text-align: right;
    text-indent: 0;
}

.subjective-review-page .er-ref-point {
    padding-left: 1.5em;
    text-indent: -1.5em;
}

/* 参考里的英文可交互（§2.5）：悬停底 --dl-hover 2px 圆角，不下划线 */
.subjective-review-page .ref-w {
    border-radius: 2px;
}

@media (hover: hover) {
    .subjective-review-page .ref-w:hover {
        background: var(--dl-hover);
    }
}

/* 旧卡片版的同名类（.er-ref-source / .er-ref-para / .er-ref-point / .er-fix 等）
   直接命中同一批元素，继承拦不住它们，必须在印刷作用域里逐条按纸坐标覆写。 */
.subjective-review-page .er-ref-para,
.subjective-review-page .er-ref-source,
.subjective-review-page .er-ref-point {
    margin: 0;
    font-family: var(--paper-font);
    font-size: calc(13.6 * var(--pt));
    line-height: calc(21.8 * var(--pt));
    word-break: normal;
}

.subjective-review-page .er-ref-source {
    color: var(--dl-ink);
}

/* 批改跑不动时那一句（乱答闸 / 请求失败）：系统说明，不是老师的红笔 */
.subjective-review-page .er-head-note {
    margin: 0;
    font-family: var(--dl-font);
    font-size: calc(12 * var(--pt));
    line-height: 1.7;
    color: var(--dl-ink-2);
}

.subjective-review-page .er-ref-point {
    display: block;
    padding-left: 1.5em;
    text-indent: -1.5em;
}

.subjective-review-page .er-ref-label {
    margin: 0;
    font-size: calc(13.6 * var(--pt));
    line-height: calc(21.8 * var(--pt));
    color: var(--dl-ink);
}

/* =========================================================
   12. 手机答案 / 批改纸的排版语义（D-16，2026-09-17）
   ---------------------------------------------------------
   手机走的**不是** §11 那张按 A4 等比缩放的印刷纸。判据：印刷纸由
   `review-controller._renderPaperAnswer` 画，而它只在 `host.paperPrint` 为真时走
   （review-controller.js:607），`paperPrint: true` 只写在 subjective-answer-page.js:118；
   竖屏内联页走的是同文件下半段那套卡片渲染（`_buildReferenceBlock` / `_fillReference`）。
   §11 那套数值也搬不过来：`--pt = calc(100cqw / 595.28)` 在 390 屏宽下约 0.655，
   正文 13.6pt 会落到 8.9px，读不了。

   所以这里搬的是**排版语义**——同一族纸张字体、段落靠首行缩进分段、范文的标题居中 /
   称呼顶格 / 落款右对齐、题号不独占一行——字号刻度换成手机自己的绝对像素。
   刻意不做：不引入 container-type / --pt / A4 等比缩放；不加 `.paper-footer` 页码与品牌
   （手机这张是抽屉不是分页纸，DOM 里本来就没有）；版心 padding 沿用 §7 的 24 / 16px。
   ========================================================= */

.subjective-review-inline-page {
    /* 与 §11 同一族：拉丁走 Times、中文走宋体，逐字回退天然分工。
       桌面那份挂在 `.subjective-answer-page.subjective-review-page` 上（subjective-mode.css:1420），
       手机选择器一个字都拿不到，所以在这里原样再挂一次。 */
    --paper-font: "Times New Roman", Georgia, "SimSun", "Songti SC", "Noto Serif CJK SC", serif;
}

/* 纸上的文字可选可复制（D-17）。阅读器 body 整体 `user-select: none`（style.css:634-638），
   §11 只给横屏那张纸开了回来（subjective-mode.css:1423-1431），手机这条路径一直没有——
   用户 2026-09-17 点名「无法长按选中」。`-webkit-` 前缀不能省：iOS Safari 只认它。
   防复刻定案对「禁止右键 / 复制」的裁决是**不新增**
   （docs/online-paper-protection/alternatives-and-threats.md:53），开放选中不撞红线。 */
.subjective-review-inline-page .er-content {
    -webkit-user-select: text;
    user-select: text;
    /* 指针随语义走（D-210 同一裁定）：正文是可选的文字，英文词是可点的 */
    cursor: text;
}

.subjective-review-inline-page .ref-w {
    cursor: pointer;
}

/* 参考正文（参考范文 / 参考译文）= 纸上的内容，用纸张字体。
   批改结果卡（`.er-head` / `.er-lines` / `.er-fixes`）、按钮、状态字、字数统计**不动**：
   它们是界面控件不是纸上的内容，与桌面 `.er-block:not(.essay-feedback)` 同一个口径。 */
.subjective-review-inline-page .er-ref-body {
    font-family: var(--paper-font);
    font-size: 15px;
    line-height: 1.75;
    color: var(--subjective-text);
}

/* 段落靠首行缩进分段，不靠段距（§11 的 `p { margin: 0 }` + `.er-ref-indent`）。
   块与块之间那 14px（`.er-ref-block + .er-ref-block`）照旧，它分的是「句」不是「段」。
   `.er-ref-source` 的墨色也跟着 §11 走：纸面没有灰阶，层级只靠字号、缩进、居中。 */
.subjective-review-inline-page .er-ref-para,
.subjective-review-inline-page .er-ref-source {
    margin: 0;
    font-size: 15px;
    line-height: 1.75;
    color: var(--subjective-text);
}

.subjective-review-inline-page .er-ref-indent {
    text-indent: 1.9em;
}

/* 范文排版块（§15.4.1 的五种 kind），语义抄 §11 的 719-734。
   `.er-ref-title` 这个类名在这条渲染路径上有**两个**用法，必须分开：
     · `.er-ref > h3.er-ref-title` = 「参考范文 / 参考译文」区块小标题 → 界面控件，保持
       基线的 12px / 600 / UI 字体不动；
     · `.er-ref-body > p.er-ref-para.er-ref-title` = 范文自己的标题 → 印刷层，居中不加粗。
   靠 `.er-ref-para` 这个共存类把两者分开，不用标签选择器。 */
.subjective-review-inline-page .er-ref-para.er-ref-title {
    font-family: var(--paper-font);
    font-size: 15px;
    font-weight: 400;
    color: var(--subjective-text);
    text-align: center;
    text-indent: 0;
}

.subjective-review-inline-page .er-ref-salutation {
    text-align: left;
    text-indent: 0;
}

.subjective-review-inline-page .er-ref-closing,
.subjective-review-inline-page .er-ref-signature {
    text-align: right;
    text-indent: 0;
}

/* 逐句题号：桌面是绝对定位悬挂到版心外（§11 的 688-693），390 窄屏那 1.5em 悬挂位会被裁。
   手机改**行内前缀**——float 让它与该句正文同一行起始、正文自动绕开，既不独占一行也不出版心。
   字号比正文小一档（15 → 13），颜色沿用基线的次级文本 token，不新配色。 */
.subjective-review-inline-page .er-ref-label {
    float: left;
    margin: 0 0.45em 0 0;
    font-family: var(--paper-font);
    font-size: 13px;
    line-height: 1.75;
    font-weight: 600;
    color: var(--subjective-text-muted);
}

/* 句短于题号时浮动会掉出块外，把块做成独立格式化上下文兜住它 */
.subjective-review-inline-page .er-ref-block--sentence {
    display: flow-root;
}
