/* ============================================================
   mausumi.in 复刻补充样式：替换 IX2 驱动的过渡动画
   ============================================================ */

/* ---- 横向卷动容器不产生页面级横向滚动条（原站注释意图：隐藏横向滚动条） ---- */
html,
body {
  overflow-x: hidden;
  /* 所有页面共享同一张底层网格；书页只保留一层轻微纸色。 */
  background-color: #ede5d9;
}
body.body.overflow,
body.body.library {
  background-color: #ede5d9;
}

/* Webflow 的原始首页层带有不透明暖纸底色，会把全局网格完全盖住。
   首页固定层必须透明，网格才能成为所有书页与页缝的共同底板。 */
.fixed-section,
.left-block.disable-select,
.left-block-no-click {
  background-color: transparent !important;
}
.fixed-section {
  /* 先生 2026-08-24：Ansel 字标固定在网格纸背景层（z=100，低于书页 230），
     书页与竖向页自然覆盖其上；首页首个字标随书卷层（.main）横移。 */
  z-index: var(--z-fixed-section);
}
.left-block.disable-select {
  background-image: none !important;
}
/* 首页过场已由 q 版 canvas 遮罩接管；.new-transition 撕纸仅在非首页
   链接转场时由 JS 显示（inline display:flex），首页始终隐藏，避免旧
   纸面盖住 canvas 的明暗效果。 */
body.overflow > .new-transition {
  display: none !important;
}
.fixed-section .name-capsule {
  transition: opacity .42s cubic-bezier(.22, 1, .36, 1),
    transform .42s cubic-bezier(.22, 1, .36, 1), box-shadow .25s ease;
}
.fixed-section.is-scroll-covered .name-capsule {
  opacity: 0;
  transform: translate3d(-22px, 0, 0) scale(.985);
  pointer-events: none;
}

/* ---- 全局最低层：局部网格只作为旧 DOM 兼容，不再各自跑相位 ---- */
.global-grid {
  position: fixed;
  inset: 0;
  width: calc(100% + 26px);
  /* Keep it above the document canvas but below fixed chrome and book pages.
     z-index:0 can disappear behind the body background in mobile stacking
     contexts even when the layer itself is computed as visible. */
  z-index: 1;
  pointer-events: none;
  background-color: #ede5d9;
  background-image:
    linear-gradient(to right, rgba(32, 28, 23, .16) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(32, 28, 23, .16) 1px, transparent 1px);
  background-size: 26px 26px;
  animation: gridScroll 0.8s linear infinite;
  will-change: transform;
}
/* ---- 网格纸河流（grid-river v8 落地）：WebGL 接管全局网格，CSS 网格退为兜底 ---- */
.global-grid-river {
  position: fixed;
  inset: 0;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
body.grid-river-on .global-grid {
  background-image: none;
  animation: none;
}
@media (prefers-reduced-motion: reduce) {
  .global-grid {
    animation: none;
  }
}
/* ---- 入场遮罩（先生 2026-08-24 intro 版）：首帧即满覆盖的圆形黑幕 ----
   与 tobias 汉堡遮罩同色（#17150f），只遮背景网格/字标（z=180，低于
   .main 的 230，不遮右侧书卷页）。加载好且首屏线条完成后再留出呼吸时间才收起（收起期间
   隐藏三条杠，收成原点后淡入），没加载/缓存好就不收。pointer-events:none
   不拦截交互。 */
.intro-veil {
  position: fixed;
  inset: 0;
  z-index: var(--z-intro);
  display: none;
  pointer-events: none;
}
/* 黑幕收起期间隐藏汉堡三条杠，收成原点后淡入。 */
.tobias-toggle {
  transition: opacity .35s ease;
}
body.intro-veil-active .tobias-toggle {
  opacity: 0;
  pointer-events: none;
}
/* 首页入场严格按“圆圈 → 文字 → 线条”分段，避免首帧同时抢动。 */
body.intro-sequence .right-block .intro-heading {
  opacity: 0 !important;
  visibility: hidden;
}
body.intro-sequence.intro-text-phase .right-block .intro-heading {
  opacity: 1 !important;
  visibility: visible;
}
.fixed-section,
.main.wf-section {
  background: transparent;
}
.left-block .grid-stripes {
  display: none;
}

/* ---- IX2 初始态覆盖：恢复元素的设计终态（原站由 w-mod-ix 解锁） ---- */
html.w-mod-js:not(.w-mod-ix) [data-w-id="39e4c77c-1476-edf9-8e12-fc09b9ba061f"] {
  background-color: #ede5d9;
}
html.w-mod-js:not(.w-mod-ix) [data-w-id="795e37fa-d0ab-8f10-cfc6-0c7d6c0f4800"] {
  display: block;
}
html.w-mod-js:not(.w-mod-ix) [data-w-id="b11c5350-8407-5610-4299-3c0241b0c2cd"] {
  transform: none;
}
/* awwwards 徽章：原站 IX2 解锁后位于屏幕内（左 0 / 右隐藏），
   未接 IX2 引擎时需覆盖初始 translate3d(-10vw / 15vw) */
html.w-mod-js:not(.w-mod-ix) [data-w-id="8e312f2a-044b-a693-06a8-b40314c9d5f2"] {
  transform: none;
}
/* 首屏诗句：独立 intro 已移除，标题直接进入可见终态（原站由 IX2 播放后点亮） */
html.w-mod-js:not(.w-mod-ix) [data-w-id="0e2f4aec-0f7b-0bde-13c2-b607c872d245"] {
  display: block;
  opacity: 1;
}
/* 覆盖 Webflow IX2 初始态（inline-head-1.css 在无 IX2 时把竖线压成
   0vh、把横线压成 0%）：统一线条系统里几何必须固定，显隐只交给
   transform 控制，避免旧 width/height 动画与 transform 混合。 */
html.w-mod-js:not(.w-mod-ix) .line-divider {
  height: 100vh;
}
html.w-mod-js:not(.w-mod-ix) .line2,
html.w-mod-js:not(.w-mod-ix) .line3,
html.w-mod-js:not(.w-mod-ix) .line.library,
html.w-mod-js:not(.w-mod-ix) .line.library.tablet {
  width: 100%;
}
.sec1 .line {
  margin-top: 4vh;
}
.intro-heading .heading {
  line-height: 1.08;
}

/* 动画文字保持整词合成，避免逐字 3D 栅格化造成中文边缘锯齿。 */
.tricksword {
  display: inline-block;
  white-space: nowrap;
  vertical-align: baseline;
  will-change: transform, opacity;
  backface-visibility: hidden;
  transform-style: flat;
  text-rendering: geometricPrecision;
}
.tricksword .letter { display: inline; }
.intro-heading,
.intro-heading .heading,
.heading.featured {
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
}

/* ---- 线条统一揭示系统（2026-08-23） ----
   桌面端所有书卷线共用同一属性（transform）与同一条缓动/时长：
   竖线 scaleY(0→1)、横线 scaleX(0→1)，几何固定、不触发布局；
   旧 width/height 动画与散乱阈值全部废止。 */
:root {
  /* 竖线先完成，横线随后缓慢展开；两者都有明确的快到慢尾段。 */
  --vline-ease: cubic-bezier(.22, 1, .36, 1);
  --hline-ease: cubic-bezier(.16, 1, .3, 1);
  --vline-duration: 1100ms;
  --hline-duration: 1500ms;
  --line-duration: var(--hline-duration);
  /* 先生 2026-08-24：横向黑线两端比竖向规则线再出头一点。 */
  --line-bleed: 12px;
}
/* 先生 2026-08-24 r 版：诗屏容器不再整体淡入（旧 opacity 揭示与
   inline-head-1 的 data-w-id opacity:0 冲突、部分页在载入时已裸露）；
   改为诗题/日期/摘要逐条浮出淡入，容器保持不透明。 */
html.w-mod-js:not(.w-mod-ix) .featured-section .poem-container,
html.w-mod-js:not(.w-mod-ix) .featured-section.tablet .poem-container {
  opacity: 1;
}
/* 先生 2026-08-24：诗题可点击打开阅读层，悬停着色保留。
   浮出/淡入使用 --reveal-delay 错峰；hover 的 color 过渡固定 0 延迟。 */
.poem-title {
  transition:
    opacity 1.15s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay, 0ms),
    transform 1.15s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay, 0ms),
    color .25s ease 0s;
}
.poem-desc,
.date {
  transition:
    opacity 1.15s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay, 0ms),
    transform 1.15s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay, 0ms);
}
/* 初始隐藏 + 上浮 26px；活动页 .is-revealed 时淡入归位（README 浮出规格）。 */
html.w-mod-js:not(.w-mod-ix) :is(.featured-section, .featured-section.tablet) :is(.poem-title, .poem-desc, .date) {
  opacity: 0;
  transform: translateY(26px);
}
html.w-mod-js:not(.w-mod-ix) :is(.featured-section, .featured-section.tablet).is-revealed :is(.poem-title, .poem-desc, .date) {
  opacity: 1;
  transform: translateY(0);
}
.poem-title.poem-read {
  cursor: pointer;
}
.poem-title.poem-read:hover,
.poem-title.poem-read:focus-visible {
  color: var(--green-deep, #1a6e5c);
  text-decoration: underline;
  text-underline-offset: .18em;
}
.line-divider {
  /* 横向页数扩充后，.main 的 flex 轨道会超出容器宽度；
     保持分隔线的 0.1vw 宽度，避免被 flex-shrink 压成 0px。 */
  flex-shrink: 0;
}
.line4 {
  transition: opacity 0.7s ease;
}

/* 桌面端：线条几何固定 + transform 显隐；移动端保持静态完整。 */
@media (min-width: 992px) {
  body.intro-sequence .right-block .line,
  body.intro-sequence .right-block::before,
  body.intro-sequence .right-block::after {
    transform: scaleX(0) !important;
  }
  body.intro-sequence .right-block::before,
  body.intro-sequence .right-block::after {
    transform: scaleY(0) !important;
  }
  body.intro-sequence.intro-lines-phase .right-block .line {
    transform: scaleX(1) !important;
  }
  body.intro-sequence.intro-lines-phase .right-block::before,
  body.intro-sequence.intro-lines-phase .right-block::after {
    transform: scaleY(1) !important;
  }
  .line-divider {
    transition: transform var(--vline-duration) var(--vline-ease);
    will-change: transform;
  }
  .right-block .line,
  .line2,
  .line3,
  .line.library,
  .line.library.tablet {
    transition: transform var(--hline-duration) var(--hline-ease);
    will-change: transform;
  }
  .line-divider {
    width: 0.1vw;
    height: 100vh;
    transform: scaleY(0);
    transform-origin: bottom center;
    position: sticky;
    isolation: isolate;
    /* Page margins carry the visual rules; the outer seam is only retained
       geometrically for scroll alignment and must not create a second ghost
       line at every page edge. */
    visibility: hidden;
  }
  .right-block .line {
    transform: scaleX(0);
    transform-origin: left center;
  }
  .line2,
  .line3,
  .line.library,
  .line.library.tablet {
    width: 100%;
    transform: scaleX(0);
    transform-origin: left center;
  }
  /* 活动页揭示：横线 scaleX(1)，错峰由 JS 写入的 transition-delay 承担。 */
  .right-block.is-revealed .line,
  .featured-section.is-revealed .line2,
  .featured-section.is-revealed .line3,
  .featured-section.is-revealed .line.library,
  .featured-section.is-revealed .line.library.tablet,
  .featured-section.tablet.is-revealed .line2,
  .featured-section.tablet.is-revealed .line3,
  .featured-section.tablet.is-revealed .line.library,
  .featured-section.tablet.is-revealed .line.library.tablet {
    transform: scaleX(1);
  }
}

/* intro 覆盖层内的 paper-cut 跑马灯保持原 CSS 动画 */

/* 手风琴展开过渡（原站为 Webflow 运行时计算高度，这里做轻量过渡） */
.accordion-item .w-dropdown-list {
  transition: opacity 0.3s ease;
}

/* 移动端隐藏横向滚动驱动（CSS 已改纵向布局，此规则兜底） */
@media (max-width: 991px) {
  .main.wf-section {
    transform: none !important;
  }
  /* 移动端同样保留全局网格底板；旧 Webflow .right-block 的不透明
     背景会把网格遮住，改为轻微透纸色，与桌面书页一致。 */
  .main.wf-section > .right-block,
  .main.wf-section > .featured-section,
  .main.wf-section > .featured-section.tablet {
    background-color: #ede5d9 !important;
  }
  .main.wf-section {
    background-color: transparent !important;
  }
}

/* 桌面端恢复横屏分段翻页（先生决议 2026-08-13）：
   html/body overflow-x: hidden 会破坏 sticky 定位，导致下划时
   .main 被纵向带出视口、横向屏不可见。改用 position: fixed 让
   横向屏固定于视口内，仅做分段横向平移；滚动跑道改为内容自适应，
   翻页段结束后由下方内容整体覆盖横向屏（#library 原 z-index 225
   已覆盖，works/reading/contact 所在容器补同底与层级）。 */
@media (min-width: 992px) {
  .main.wf-section {
    position: fixed;
    top: 0;
    /* tune8b 横折（上划）：.main 置于 wrapper/library 之上，dock 后随滚动
       整体向上滑出视口，#library 从视口底部逐段升入（两组页面保持两列）。 */
    z-index: var(--z-screen-main);
    transition: opacity 0.5s ease;
    will-change: transform;
  }
  /* 横屏书卷页按原站比例收窄为 40vw，右半屏留出网格纸底；
     首屏 right-block 仍按原站占满右半屏（49.8vw）。停靠时页左缘
     对齐 50vw，页面右侧自然露出网格，恢复“书卷浮在纸面上”的形态。 */
  .featured-section,
  .featured-section.tablet {
    width: 40vw;
    background-color: #ede5d9;
  }
  .right-block,
  .featured-section,
  .featured-section.tablet {
    flex-shrink: 0;
  }
  .right-block {
    background-color: #ede5d9;
  }
  /* 书页之间留出稳定纸缝，实际段位仍由 JS 读取 offsetLeft。 */
  .main > .featured-section {
    margin-right: clamp(18px, 1.8vw, 30px);
  }
  /* tune8f：镜像页 Ansel 胶囊恢复 flex 垂直居中（components.css
     与最左侧胶囊对称；
     不再使用 margin 下移规则（先生 2026-08-14 反馈“不对称”）。 */
  body.body.overflow {
    height: auto;
  }
  .smooth-scroll-wrapper {
    position: relative;
    z-index: var(--z-screen-stack);
    /* tune8b：wrapper 区域透明；dock 时 library 顶边正贴视口底边
       （margin-top = dockY + maxFold），dock 后 .main 上划、
       library 从视口底部升入，横向阶段始终在视口下方不提前露出。 */
    background-color: transparent;
    /* 横屏半程后转下划（先生决议 2026-08-14）：
       横向终点右半镜像页对齐 50vw 后，library 随即从视口顶部进入；
       原 margin-top 515vh 对应 4 屏诗横向跑道，现缩短为约 220vh；
       library 在镜像页停靠约 320px 后入场。 */
    /* B 方案：首页只保留横向跑道；JS 按最后一个横向停靠位覆盖。 */
    margin-top: 1531px;
    /* 内容页已从首页移除，空跑道仍需占满一个视口，
       让文档最大滚动值能够抵达最后一个横向停靠点。 */
    min-height: 100vh;
    padding-bottom: 1px;
  }
}

/* ---- library 浅色化（先生决议 2026-08-14 tune8：删除黑底页设计） ---- */
#library.all-poems {
  position: relative;
  background-color: #ede5d9;
}
#library .library-topbar,
#library .library-grid {
  position: relative;
  z-index: var(--z-sheet);
}
#library .library-topbar {
  background-color: #ede5d9;
  opacity: 0.97;
}
#library .menu-el.about.back-to-about,
#library .poem-category,
#library .poem-name,
#library .whole-poem {
  color: #1a1814;
}
#library .bullet,
#library .line4,
#library .line.light {
  background-color: #1a1814;
}
#library .dropdown-list-2 {
  background-color: #ede5d9;
}
/* 诗库由后端 JSON 渲染：加载中 / 直开 file:// 时的占位提示 */
#library .library-empty-note {
  grid-column: 1 / -1;
  color: rgba(26, 24, 20, 0.55);
  font-size: 15px;
  text-align: center;
  padding: 8vh 4vw;
  line-height: 1.8;
}
#library .library-col .library-empty-note {
  grid-column: auto;
  padding: 4vh 1vw;
}

/* ---- library 底部结束边界（先生决议 2026-08-14 tune8f） ----
   两列诗稿结束后，给整页一个明确的收束块：不透明暖纸 + 居中短横线，
   滚到最底端时页面视觉上有“到此为止”的边界，而不是直接滑进空白。 */
.library-end {
  position: relative;
  z-index: var(--z-sheet);
  display: flex;
  align-items: center;
  justify-content: center;
  height: 30vh;
  background-color: #ede5d9;
}
.library-end::before {
  content: "";
  width: 9vw;
  max-width: 140px;
  height: 2px;
  background-color: #1a1814;
  opacity: 0.85;
}

/* ---- library 双栏诗卷（2026-08-17 衔接修正） ----
   竖向页保留 50/50 骨架，但整页使用不透明暖纸，不再透出 fixed-section
   的网格与 Ansel 字标；中央竖线沿用横向末屏接缝线
   （.library-vline 为 fixed，JS 对齐到横向末页前一条 line-divider
   在 dock 时的视口 x，交汇时两线完全重合）；右栏承载诗歌一栏。
   顶部横线 .line.light 改为右栏顶线（2px），随库从视口底边平滑升入，
   不再依赖 visibility 开关，消除交汇处的弹入闪烁。 */
.library-frame {
  position: relative;
}
.library-right {
  background-color: #ede5d9;
  min-width: 0;
}
.library-left {
  min-width: 0;
}

@media (min-width: 992px) {
  /* 竖向阶段暂不做镂空：完整纸面覆盖横向阶段的固定网格与字标。 */
  #library.all-poems {
    background-color: #ede5d9;
  }
  .library-frame {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: stretch;
    -webkit-align-items: stretch;
    -ms-flex-align: stretch;
    align-items: stretch;
  }
  .library-left {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 50vw;
    -ms-flex: 0 0 50vw;
    flex: 0 0 50vw;
    /* JS 对齐后覆盖为与末屏中线一致的宽度 */
  }
  .library-vline {
    position: fixed;
    top: 0;
    height: 100vh;
    width: 0.1vw;
    background-color: #1a1814;
    z-index: var(--z-chrome);
    visibility: hidden;
  }
  .library-right {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 auto;
    -ms-flex: 1 1 auto;
    flex: 1 1 auto;
    padding: 0 3vw 6.5vh;
  }
  #library .line.light {
    position: relative;
    top: auto;
    z-index: auto;
    width: 100%;
    height: 2px;
    margin-top: 0;
    margin-right: 0;
    margin-left: 0;
    background-color: #1a1814;
    opacity: 0.85;
  }
  #library .library-grid {
    width: 100%;
    max-width: 46em;
    margin-top: 7vh;
    margin-right: auto;
    margin-left: auto;
    grid-template-columns: 1fr;
  }
}
@media (max-width: 991px) {
  .library-left,
  .library-vline {
    display: none;
  }
  .library-frame {
    display: block;
  }
  .library-right {
    width: 100%;
    padding-right: 0;
    padding-left: 0;
  }
}
#library .library-col {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  min-width: 0;
  /* 2026-08-15：条目间距拆成上/下各一半（.line4 margin-top 与
     .accordion-item margin-bottom），诗名在两横线间几何居中；
     原 gap 2.5vh 全落在条目下方，标题中心偏上约 15px。 */
  gap: 0;
  /* tune8d：书卷纸面——两列内容不透明前置在暖纸底色上 */
  background-color: #ede5d9;
  position: relative;
  z-index: var(--z-sheet);
  padding: 2vh 1.2vw 4vh;
}
/* 2026-08-15 居中：条目在两条横线之间对称放置——
   .accordion-item 上下各留 1.7vh（≈15px），标题落入两线正中；
   正文链接 nav 改为绝对定位隐藏，不再撑开条目高度。 */
#library .accordion-item {
  position: relative;
  margin-top: 1.7vh;
  margin-bottom: 1.7vh;
}
#library .dropdown-list-2 {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  display: none;
}
#library .whole-poem {
  /* Webflow .w-dropdown-link 默认 nowrap，长诗会撑爆两列网格轨道；
     改为正常换行，展开时正文按列宽排版。 */
  white-space: normal;
}

/* 减少动效偏好：关闭滚动驱动的平移与揭示动画 */
@media (prefers-reduced-motion: reduce) {
  .main.wf-section {
    transform: none !important;
    /* 无动画时让 library 正常覆盖下滑，而不是固定在最上方 */
    z-index: var(--z-screen-main-reduced);
  }
  .poem-container,
  .poem-title,
  .poem-desc,
  .date {
    opacity: 1 !important;
    transform: none !important;
  }
  .right-block::before,
  .right-block::after,
  .featured-section::before,
  .featured-section::after,
  .featured-section.tablet::before,
  .featured-section.tablet::after {
    transform: scaleY(1) !important;
  }
  .line-divider {
    transform: scaleY(1) !important;
  }
  .right-block .line,
  .line2,
  .line3,
  .line.library,
  .line.library.tablet {
    transform: scaleX(1) !important;
  }
}

/* ---- 书页内框：每一页自己携带左右规则线，页缝只负责装订 ---- */
.right-block,
.featured-section,
.featured-section.tablet {
  position: relative;
  box-sizing: border-box;
  background-color: #ede5d9;
  isolation: isolate;
}
/* 与 mausumi.webflow.css 的 .right-block padding: 0 3vw 保持一致并本地化，
   .line 以 .sec1（right-block 的 content-box）为包含块，需要此值做补偿。 */
.right-block {
  --page-content-pad: 3vw;
  padding-left: var(--page-content-pad);
  padding-right: var(--page-content-pad);
}
.name-page {
  background-color: transparent !important;
}
/* 中间间隔页：取消竖向规则线，让 Ansel 字标悬在网格纸上。 */
.name-page::before,
.name-page::after {
  display: none;
}
/* 先生 2026-08-24：间隔留白页两侧的页缝线也不绘出（保留几何占位供滚动对齐，
   仅隐藏视觉，不 display:none 以免 offsetLeft 漂移）。 */
.main > .line-divider:has(+ .name-page),
.main > .name-page + .line-divider {
  visibility: hidden;
}
.name-page-inner {
  position: relative;
  z-index: var(--z-content);
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  min-height: 100vh;
  padding: clamp(34px, 5vw, 72px);
  box-sizing: border-box;
}
.name-page-inner .name-capsule {
  /* 先生 2026-08-24：第二个字标固定显示——不随揭示动画出现/收起，
     始终可见，停靠位置固定，无多余动画。 */
  opacity: 1;
  transform: none;
}
/* 先生 2026-08-24：第一个字标固定在书卷图层（.main 内），dock0 时
   水平 left 由 JS placeFirstCap 定位到左半屏网格中央（25vw）；
   垂直在书卷层内居中（覆盖 .main 的 align-items:flex-end 贴底）。 */
@media (min-width: 992px) {
  .main.wf-section > .name-capsule {
    position: absolute;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    margin: 0;
  }
  .main.wf-section > .name-capsule:hover {
    transform: translate(-2px, calc(-50% - 2px));
  }
}
/* 间隔页相邻书卷页靠近字标一侧的规则线：靠近 name-page 停靠时由
   JS 加上 .no-right-rule / .no-left-rule 隐藏，避免两侧出现孤立黑线；
   其余滚动位置恢复，不影响相邻页自己停靠时的完整页框。 */
.main > .featured-section.no-right-rule::after,
.main > .featured-section.no-left-rule::before {
  display: none;
}
.right-block::before,
.right-block::after,
.featured-section::before,
.featured-section::after,
.featured-section.tablet::before,
.featured-section.tablet::after {
  content: "";
  position: absolute;
  /* 先生 2026-08-24：竖向线从画面外到画面外贯穿填满，两端不留空白。 */
  top: 0;
  bottom: 0;
  /* 先生 2026-08-24：竖向规则线与横向线条同重（2px、同色、全不透明），
     视觉语言一致；显隐统一交给 transform 揭示系统。 */
  width: 2px;
  background: #1a1814;
  opacity: 1;
  pointer-events: none;
  z-index: 2;
}
.right-block::before,
.featured-section::before,
.featured-section.tablet::before { left: clamp(18px, 2.8vw, 42px); }
.right-block::after,
.featured-section::after,
.featured-section.tablet::after { right: clamp(18px, 2.8vw, 42px); }
.right-block .sec1,
.featured-section .sec2,
.featured-section.tablet .sec2 {
  position: relative;
  z-index: 3;
}
.right-block .intro-heading,
.right-block .sec1 > div,
.featured-section .heading-container,
.featured-section .poem-container,
.featured-section.tablet .heading-container,
.featured-section.tablet .poem-container {
  margin-left: clamp(24px, 3.8vw, 54px);
  margin-right: clamp(24px, 3.8vw, 54px);
}
@media (min-width: 992px) {
  /* 先生 2026-08-24 r 版：竖向规则线恢复双向揭示——默认 scaleY(0)、
     活动页 .is-revealed 时 scaleY(1)，先左后右（右线错峰 90ms）。 */
  .right-block::before,
  .right-block::after,
  .featured-section::before,
  .featured-section::after,
  .featured-section.tablet::before,
  .featured-section.tablet::after {
    transform: scaleY(0);
    transform-origin: bottom center;
    transition: transform var(--vline-duration) var(--vline-ease);
  }
  .right-block::before,
  .featured-section::before,
  .featured-section.tablet::before {
    transition-delay: 0ms;
  }
  .right-block::after,
  .featured-section::after,
  .featured-section.tablet::after {
    transition-delay: 150ms;
  }
  .right-block.is-revealed::before,
  .right-block.is-revealed::after,
  .featured-section.is-revealed::before,
  .featured-section.is-revealed::after,
  .featured-section.tablet.is-revealed::before,
  .featured-section.tablet.is-revealed::after {
    transform: scaleY(1);
  }
  /* html.w-mod-js:not(.w-mod-ix) 前缀保证压过文件顶部的同名兜底规则
     （Chrome 对 :not 前缀的特异性判定会把该兜底规则判得更高）。 */
  html.w-mod-js:not(.w-mod-ix) .main.wf-section > .featured-section .line2,
  html.w-mod-js:not(.w-mod-ix) .main.wf-section > .featured-section .line3,
  html.w-mod-js:not(.w-mod-ix) .main.wf-section > .featured-section .line.library,
  html.w-mod-js:not(.w-mod-ix) .main.wf-section > .featured-section.tablet .line2,
  html.w-mod-js:not(.w-mod-ix) .main.wf-section > .featured-section.tablet .line3,
  html.w-mod-js:not(.w-mod-ix) .main.wf-section > .featured-section.tablet .line.library {
  /* 页内横线以“页边距线”为界延伸到页框全宽：
     页边距线位于 clamp(18px, 2.8vw, 42px)，横线原位于
     3vw 页padding + 内容 margin 之后；把横线左右各外扩
     (padding + 内容margin - 页边距线inset + bleed)，两端比竖向
     规则线出头 12px，距页边留一点空白。 */
  --page-rule-inset: clamp(18px, 2.8vw, 42px);
  --page-content-pad: 3vw;
  --page-line-gap: clamp(24px, 3.8vw, 54px);
  --page-line-offset: calc(
    var(--page-content-pad) + var(--page-line-gap)
    - var(--page-rule-inset) + var(--line-bleed)
  );
  width: calc(100% + 2 * var(--page-line-offset));
  margin-left: calc(-1 * var(--page-line-offset));
  max-width: none;
  }
}
/* 首屏 .line 所在 wrapper 被 .sec1 居中、宽度随内容收缩；
   负边距会把 wrapper 撑宽形成自反馈。直接以书页为锚点，
   把横线钉在两条页边距线之间（bottom 对齐 sec1 的 7.5vh 底内边距）。 */
.right-block .line {
  position: absolute;
  /* 包含块是 .sec1，即 right-block 的 content-box（左缘 = 页左缘 + 3vw）；
     先生 2026-08-24：横线两端比竖向规则线出头 12px，距页边留空白。 */
  left: calc(clamp(18px, 2.8vw, 42px) - var(--page-content-pad) - var(--line-bleed));
  right: calc(clamp(18px, 2.8vw, 42px) - var(--page-content-pad) - var(--line-bleed));
  bottom: 7.5vh;
  width: auto;
  margin-left: 0;
  max-width: none;
}
.main > .line-divider {
  background: #1a1814;
}

@media (max-width: 991px) {
  /* 移动端 .right-block 恢复 webflow 原设计的 5vw 页边距
     （桌面 3vw 由上方 .right-block 规则设置）。 */
  .right-block {
    --page-content-pad: 5vw;
    padding-left: var(--page-content-pad);
    padding-right: var(--page-content-pad);
  }
  .right-block,
  .featured-section,
  .featured-section.tablet {
    width: 100%;
    background-color: #ede5d9;
  }
  .right-block::before,
  .right-block::after,
  .featured-section::before,
  .featured-section::after,
  .featured-section.tablet::before,
  .featured-section.tablet::after {
    /* 先生 2026-08-24：移动端同样全高贯穿。 */
    top: 0;
    bottom: 0;
    opacity: 1;
  }
  .right-block .intro-heading,
  .right-block .sec1 > div,
  .featured-section .heading-container,
  .featured-section .poem-container,
  .featured-section.tablet .heading-container,
  .featured-section.tablet .poem-container {
    margin-left: 28px;
    margin-right: 28px;
  }
  .right-block .line,
  .main.wf-section > .featured-section .line2,
  .main.wf-section > .featured-section .line3,
  .main.wf-section > .featured-section .line.library,
  .main.wf-section > .featured-section.tablet .line2,
  .main.wf-section > .featured-section.tablet .line3,
  .main.wf-section > .featured-section.tablet .line.library {
    --page-rule-inset: 18px;
    --page-content-pad: 5vw;
    --page-line-gap: 28px;
    --line-bleed: 10px;
    /* 先生 2026-08-24：移动端横线同样距页边留空白（比规则线出头 10px）。 */
    --page-line-offset: calc(
      var(--page-content-pad) + var(--page-line-gap)
      - var(--page-rule-inset) + var(--line-bleed)
    );
  }
  /* 移动端保持原站内容列内的线条宽度（桌面全宽扩展由
     .main.wf-section > .featured-section 规则负责，特异性更高）。 */
  .main.wf-section > .featured-section .line2,
  .main.wf-section > .featured-section .line3,
  .main.wf-section > .featured-section .line.library,
  .main.wf-section > .featured-section.tablet .line2,
  .main.wf-section > .featured-section.tablet .line3,
  .main.wf-section > .featured-section.tablet .line.library {
    width: 100%;
    margin-left: calc(-1 * var(--page-line-offset));
  }
  .right-block .line {
    left: calc(18px - var(--page-content-pad) - var(--line-bleed));
    right: calc(18px - var(--page-content-pad) - var(--line-bleed));
    bottom: 8vh;
  }
}
