@font-face {
  font-family: "ChillZhuo";
  src: url("../fonts/ChillZhuo.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
/* 里世界全文写的是无空格的 ShareTechMono，而 style.css 登记的名字是 'Share Tech Mono'，
   名字对不上会静默回落系统等宽体。这里用里世界的写法再登记一次，指向同一字体文件。 */
@font-face {
  font-family: "ShareTechMono";
  src: url("../fonts/ShareTechMono-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
/* 里世界手写体：统一由 --iw-font-hand 控制。
   默认 ChillZhuo；三点菜单关掉「手写字体」时 <html> 带 .iw-no-hand，
   改用里世界系统黑体。挂在 :root 上，面板内与挂 body 的弹窗都能继承。 */
:root {
  --iw-font-hand: 'ChillZhuo', "Kaiti SC", "STKaiti", "KaiTi", cursive, serif;
  --iw-hand-scale: 1;
}
/* 关掉手写体：同字号下 ChillZhuo 字面只有黑体的约 81%（宽）/ 84%（高），
   直接换黑体会显大近两成，所以手写位置的字号统一乘 0.85，下限 10px。 */
:root.iw-no-hand {
  --iw-font-hand: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
  --iw-hand-scale: 0.85;
}
/* ========================================================
   InnerWorld · 里世界样式表
   战术情报监视站 / 潜望阶梯 风格
   严格遵循方案 C：【纯粹黑白灰微光主义（Mono Tactical）】
   全盘脱离对系统 --accent 的依赖，杜绝纯黑/彩色失控翻车
   ======================================================== */

/* ===== InnerWorld 色彩令牌（v740：颜色整合第 1-2 步）=====
   夜间为默认值；日间模式后续用 [data-iw-theme="day"] 覆盖同名变量即可。
   挂 :root 而非 .innerworld-panel：2048 合成谱 modal 被 append 到 body（面板外），
   必须让它也继承到令牌。--iw-rgb-* 三元组供第 3 步 rgba 归顺用。 */
:root {
  --iw-gold: #e2c48d;        /* 品牌金：文字/描边/微光通用，昼夜一起翻 */
  --iw-text-bright: #fff;    /* 最亮文字档（仅 color:），日间翻墨黑 */
  /* RGB 三元组（逗号格式）：用法 rgba(var(--iw-rgb-gold), 0.35)，兼容老 WebView */
  --iw-rgb-gold: 226, 196, 141;
  --iw-rgb-white: 255, 255, 255;
  --iw-rgb-black: 0, 0, 0;
  /* 凹陷面板底数（第 8 步）：夜间=纯黑，与 rgb-black 同值；
     日间换成浅暖砂，否则风靡/剧场的凹陷正文块会合成出灰棕。 */
  --iw-rgb-inset: 0, 0, 0;
  /* ---- 近黑背景阶梯（第 4 步：41 种手调漂移 → 14 个令牌）----
     冷/暖两族分离是刻意的：冷调=战术监视站，暖调=纸张木质媒介，
     压进同一套中性灰会丢掉媒介质感。日间模式按族整体翻即可。 */
  --iw-cool-0: #08090c;    /* 冷调 L4%：面板最底 */
  --iw-cool-1: #101216;    /* 冷调 L7%：卡片/面板 */
  --iw-cool-2: #14161b;    /* 冷调 L9%：浮层/条目 */
  --iw-cool-3: #181b22;    /* 冷调 L11%：输入框/强调块 */
  --iw-cool-4: #232632;    /* 冷调 L17%：抬升块（原 #22262e/#252a35） */
  --iw-warm-0: #0d0c0b;    /* 暖调 L5%：纸张最底 */
  --iw-warm-1: #141210;    /* 暖调 L7%：纸面 */
  --iw-warm-2: #181615;    /* 暖调 L9%：纸面抬升 */
  --iw-warm-3: #1c1a18;    /* 暖调 L10%：木质/皮革 */
  --iw-shadow-pure: #000;  /* 纯黑：仅用于 shadow */
  --iw-danger-bg: #1f0b0f; /* 警示态暗红底 */
  --iw-on-gold: #101216;   /* 金底上的深色文字（日间金变暗→此处要变浅） */
  /* ---- 文字与状态色（第 5 步）----
     冷灰族=战术界面文字，暖纸族=纸张媒介文字（跟暗红系一起翻）。
     面板默认 color 用 --iw-text-1，日间不翻这组就是白底白字。 */
  --iw-text-0: #f8fafc;  /* 冷灰文字 最亮：标题 */
  --iw-text-0b: #f0f0f0; /* 冷灰文字 最亮（中性白，无蓝调） */
  --iw-text-1: #e4e7eb;  /* 冷灰文字 正文（面板默认 color） */
  --iw-text-2: #cbd5e1;  /* 冷灰文字 次要（偏蓝） */
  --iw-text-2b: #d1d5db; /* 冷灰文字 次要（中性） */
  --iw-text-3: #c0c6cf;  /* 冷灰文字 辅助/说明 */
  --iw-paper-0: #fbf1d9; /* 暖纸文字 最亮暖白 */
  --iw-paper-1: #f5e4c3; /* 暖纸文字 标准 */
  --iw-paper-2: #f5f0e6; /* 暖纸文字 偏灰暖白 */
  --iw-gold-pale: #f5e2b8; /* 浅金（高饱和）：hover 态背景等 */
  --iw-gold-pale-hi: #fce7b8; /* 浅金 更亮档 */
  --iw-state-danger: #ff8484; /* 状态色 危险/警示 */
  --iw-state-danger-soft: #fca5a5; /* 状态色 危险（柔和档） */
  --iw-state-info: #8bb3e8; /* 状态色 信息 */
  --iw-state-magic: #c084fc; /* 状态色 异常/魔法 */
  /* ---- 近黑族的 RGB 三元组（第 6 步）----
     这批色原本以 rgba(自定义底数, α) 形态散落在渐变和半透明背景里，
     第 3 步只归顺了白/金/黑三个底数，漏掉了它们，于是日间模式下
     世界全域 feature 卡、游嬉卡带、2048/扫雷棋盘仍然是黑底。
     数值与上面的 --iw-cool-*/--iw-warm-* 一致，只是换成逗号三元组形态。 */
  --iw-rgb-cool-0: 8, 9, 12;
  --iw-rgb-cool-1: 16, 18, 22;
  --iw-rgb-cool-2: 20, 22, 27;
  --iw-rgb-cool-3: 24, 27, 34;
  --iw-rgb-cool-4: 35, 38, 50;
  --iw-rgb-warm-0: 13, 12, 11;
  --iw-rgb-warm-1: 20, 18, 16;
  --iw-rgb-warm-2: 24, 22, 21;
  --iw-rgb-warm-3: 28, 26, 24;
  --iw-rgb-warm-amber: 38, 30, 20;
  /* ---- 卡带外壳专用（第 7 步）----
     原先卡带直接复用 warm-2/warm-3，但日间需要单独降黄：
     暖族在米白底上饱和度一高就发闷。夜间值与原 warm 族完全一致（视觉零变化），
     日间在覆盖块里单独给一套低饱和的浅塑料色。 */
  --iw-cart-shell: #181615;                      /* = warm-2，卡带外壳 */
  --iw-cart-label-top: rgba(28, 26, 24, 0.95);   /* = rgba(warm-3, .95) */
  --iw-cart-label-bot: rgba(20, 18, 16, 0.98);   /* = rgba(warm-1, .98) */
  --iw-cart-label-top-hv: rgba(28, 26, 24, 0.98);
  --iw-cart-label-bot-hv: rgba(20, 18, 16, 1);
  --iw-cart-slot: #0d0c0b;                       /* = warm-0，游嬉机卡带插槽凹陷 */
  /* 日间投影透明度（仅日间专用规则引用；夜间占位，保持链路完整） */
  --iw-shadow-a: 0.5;
  --iw-shadow-b: 0.6;
  /* ---- 2048 砖块色板（第 9 步）----
     原先写死在 js/innerworld.js 的 DEFAULT_SKIN_2048 里，并以内联 style 输出。
     内联样式优先级最高，CSS 覆盖不了，所以日间低阶砖会是「浅纸底 + 白字」糊成一片。
     改成变量后昼夜自动跟随，AI 生成的皮肤也只带文案、配色一律走这里。
     夜间值与原字面量完全一致（视觉零变化）。 */
  --iw-t2-bg: rgba(255, 255, 255, 0.06);   --iw-t2-fg: rgba(255, 255, 255, 0.75);
  --iw-t4-bg: rgba(255, 255, 255, 0.10);   --iw-t4-fg: #ffffff;
  --iw-t8-bg: rgba(226, 196, 141, 0.22);   --iw-t8-fg: #e2c48d;
  --iw-t16-bg: rgba(226, 196, 141, 0.38);  --iw-t16-fg: #f5dfb8;
  --iw-t32-bg: rgba(230, 162, 60, 0.48);   --iw-t32-fg: #ffffff;
  --iw-t64-bg: rgba(230, 120, 50, 0.58);   --iw-t64-fg: #ffffff;
  --iw-t128-bg: rgba(235, 90, 60, 0.68);   --iw-t128-fg: #ffffff;
  --iw-t256-bg: rgba(240, 70, 80, 0.78);   --iw-t256-fg: #ffffff;
  --iw-t512-bg: rgba(180, 70, 220, 0.80);  --iw-t512-fg: #ffffff;
  --iw-t1024-bg: rgba(130, 80, 240, 0.88); --iw-t1024-fg: #ffffff;
  --iw-t2048-bg: rgba(226, 196, 141, 0.96);--iw-t2048-fg: #14161a;
  /* ---- 见缝插针 canvas 绘制色（第 10 步）----
     canvas 拿不到 var()，由 JS 的 _pinColors() 用 getComputedStyle 读这里。
     夜间值 = 原绘制代码的字面色（视觉零变化），日间在覆盖块里另给一套。 */
  --iw-pin-stroke: rgba(226, 196, 141, 0.75);
  --iw-pin-head: #e2c48d;
  --iw-pin-glow: rgba(226, 196, 141, 0.6);
  --iw-pin-disc-bg: #14161b;
  --iw-pin-disc-rim: rgba(226, 196, 141, 0.4);
  --iw-pin-disc-inner: rgba(255, 255, 255, 0.08);
  --iw-pin-disc-text: #fff;
  --iw-pin-fly-stroke: #e2c48d;
  --iw-pin-fly-head: #f5e2b8;
  --iw-pin-ready-stroke: rgba(226, 196, 141, 0.85);
  --iw-pin-ready-orb-bg: #1c1f28;
  --iw-pin-ready-orb-rim: #e2c48d;
  --iw-pin-ready-orb-text: #e2c48d;
  /* dead 态在昼夜都偏警示红，日间微调即可，先共用夜间值 */
  --iw-pin-dead-stroke: rgba(255, 80, 80, 0.85);
  --iw-pin-dead-head: #ff5050;
  --iw-pin-dead-glow: rgba(255, 80, 80, 0.9);
  --iw-pin-dead-disc-bg: #2d181b;
  --iw-pin-dead-disc-rim: rgba(255, 80, 80, 0.7);
  --iw-pin-dead-disc-text: #ff7070;
  /* ---- 五子棋 canvas 绘制色（第 11 步）----
     网格线原是 12% 白，日间米白底上直接看不见；星位/准星是金色残留。
     棋子渐变（黑子三段/白子三段）昼夜通用，不令牌化。 */
  --iw-gb-grid: rgba(255, 255, 255, 0.12);
  --iw-gb-star: #e2c48d;
  --iw-gb-black-rim: rgba(226, 196, 141, 0.5);
  --iw-gb-black-shadow: rgba(0, 0, 0, 0.8);
  --iw-gb-white-rim: rgba(255, 255, 255, 0.9);
  --iw-gb-white-shadow: rgba(255, 255, 255, 0.4);
  --iw-gb-last: #ff5050;
  --iw-gb-cross: #e2c48d;
  --iw-gb-loupe-bg: #14161b;
  --iw-gb-loupe-grid: rgba(255, 255, 255, 0.2);
  --iw-gb-loupe-black-rim: #e2c48d;
  --iw-gb-loupe-white-rim: #fff;
  /* 翻转棋 canvas（夜间 = 原写死色） */
  --iw-rv-bg: #14161b;
  --iw-rv-grid: rgba(226, 196, 141, 0.12);
  --iw-rv-star: rgba(226, 196, 141, 0.35);
  --iw-rv-accent-rgb: 226, 196, 141;
  --iw-rv-mark: #e2c48d;
  --iw-rv-mark-ring: rgba(226, 196, 141, 0.6);
  --iw-rv-hint-halo: rgba(226, 196, 141, 0.28);
  --iw-rv-black-rim: rgba(226, 196, 141, 0.85);
  --iw-rv-black-shadow: rgba(0, 0, 0, 0.6);
  --iw-rv-white-rim: rgba(20, 22, 27, 0.25);
  --iw-rv-white-shadow: rgba(0, 0, 0, 0.5);
}

/* ========================================================
   日间模式（档案馆）——米白纸底 + 墨黑字 + 暗砖红替代金
   挂在 .innerworld-panel 上而非 :root：避免影响主程序其它面板。
   注意 2048 合成谱 modal 被 append 到 body 外，所以补一条
   body[data-iw-theme] 选择器让它也能拿到同一套变量。
   色号都是变量，想调整改这里一行即可。
   ======================================================== */
.innerworld-panel[data-iw-theme="day"],
body[data-iw-theme="day"] {
  /* 主角：暗砖红替代金 */
  --iw-gold: #8c2f23;
  --iw-rgb-gold: 140, 47, 35;
  /* 冷族纸底（原战术深色）：阶梯整体提亮 6~8%，从偏灰转为清爽的奶米白，不再发沉 */
  --iw-cool-0: #fbf9f5;    /* 面板最底：近乎纯净的奶白底（带极微暖） */
  --iw-cool-1: #f5f1e8;    /* 卡片主底 */
  --iw-cool-2: #eee8dc;    /* 浮层/条目 */
  --iw-cool-3: #e6dfd0;    /* 输入框/强调块 */
  --iw-cool-4: #ded5c2;    /* 抬升块（最深一档，仍保持明亮） */
  /* 暖族纸底：比冷族更偏牛皮纸/素描纸，但同样大幅提亮 */
  --iw-warm-0: #faf6ed;    /* 暖纸最底 */
  --iw-warm-1: #f4ede0;    /* 纸面卡片 */
  --iw-warm-2: #ece3d2;    /* 纸面抬升 */
  --iw-warm-3: #e3d7c2;    /* 木质/卡带外壳（原 #d6cbb4 偏深沉，现为浅木麦色） */

  /* 文字翻墨黑：阶梯方向反转（夜间越小越亮 → 日间越小越深） */
  --iw-text-0:  #1a1714;   /* 标题：最深 */
  --iw-text-0b: #1f1b17;
  --iw-text-1:  #2b2620;   /* 正文 */
  --iw-text-2:  #544b40;   /* 次要 */
  --iw-text-2b: #5a5146;
  --iw-text-3:  #5f564a;   /* 辅助/说明（压深以满足 AA） */
  --iw-text-bright: #15120f;  /* 夜间的最亮白 → 日间最深墨 */

  /* 暖纸文字族跟暗红走：原本是浅金，现在是红棕墨 */
  --iw-paper-0: #3d2b22;
  --iw-paper-1: #4a3328;
  --iw-paper-2: #574338;
  --iw-gold-pale:    #a8503c;  /* 浅金 → 浅砖红（含 background 用途）*/
  --iw-gold-pale-hi: #b85c45;

  /* 描边/高光：原本是白，日间要翻成墨线，否则白线在米白上消失 */
  --iw-rgb-white: 60, 50, 40;
  /* 阴影：白底上的黑影要更柔，用暖灰代替纯黑 */
  --iw-rgb-black: 120, 102, 80;
  --iw-rgb-inset: 222, 210, 188;  /* 凹陷底：极浅暖砂。176,156,128 实测合成后与父底仍差 27% 亮度（页面正常层级差仅 6.7%），看着还是深色补丁 */
  /* 2048 砖块日间色板：全部实色（不用 alpha，避免叠在纸底上失控）。
     低阶砖墨黑字、高阶砖米白字，每阶对比度实测 5.0~11.0:1，均过 AA。 */
  --iw-t2-bg: #f6f1e7;    --iw-t2-fg: #3a332b;
  --iw-t4-bg: #e6dccb;    --iw-t4-fg: #2b2620;
  --iw-t8-bg: #ecd2c3;    --iw-t8-fg: #6a2318;
  --iw-t16-bg: #e3bba9;   --iw-t16-fg: #5a1d14;
  --iw-t32-bg: #efcf98;   --iw-t32-fg: #3d2a12;
  --iw-t64-bg: #eab083;   --iw-t64-fg: #3a1e0e;
  --iw-t128-bg: #e48b70;  --iw-t128-fg: #2b120c;
  --iw-t256-bg: #b8434a;  --iw-t256-fg: #fff7f2;
  --iw-t512-bg: #9446b8;  --iw-t512-fg: #fbf6ff;
  --iw-t1024-bg: #6a48c9; --iw-t1024-fg: #f8f5ff;
  --iw-t2048-bg: #8c2f23; --iw-t2048-fg: #f7f4ed;
  /* 见缝插针日间色：针用暗砖红（米白底上金色会发灰发浅），
     圆盘翻纸色配墨字，待发主珠同样翻浅。dead 态警示红压深一档保对比。 */
  --iw-pin-stroke: rgba(140, 47, 35, 0.8);
  --iw-pin-head: #8c2f23;
  --iw-pin-glow: rgba(140, 47, 35, 0.35);
  --iw-pin-disc-bg: #efe9dc;
  --iw-pin-disc-rim: rgba(140, 47, 35, 0.75);
  --iw-pin-disc-inner: rgba(60, 50, 40, 0.12);
  --iw-pin-disc-text: #2b2620;
  --iw-pin-fly-stroke: #8c2f23;
  --iw-pin-fly-head: #a8503c;
  --iw-pin-ready-stroke: rgba(140, 47, 35, 0.9);
  --iw-pin-ready-orb-bg: #e6dfd0;
  --iw-pin-ready-orb-rim: #8c2f23;
  --iw-pin-ready-orb-text: #8c2f23;
  --iw-pin-dead-stroke: rgba(179, 38, 30, 0.9);
  --iw-pin-dead-head: #b3261e;
  --iw-pin-dead-glow: rgba(179, 38, 30, 0.45);
  --iw-pin-dead-disc-bg: #f3ded9;
  --iw-pin-dead-disc-rim: rgba(179, 38, 30, 0.8);
  --iw-pin-dead-disc-text: #b3261e;
  /* 五子棋日间：网格翻墨线（12% 白在米白上消失），星位/准星翻暗砖红，
     黑子描边翻红、白子描边翻墨（白子靠描边在纸底上显形），
     放大镜小窗整体翻纸色。 */
  --iw-gb-grid: rgba(60, 50, 40, 0.35);
  --iw-gb-star: #8c2f23;
  --iw-gb-black-rim: rgba(140, 47, 35, 0.6);
  --iw-gb-black-shadow: rgba(120, 102, 80, 0.5);
  --iw-gb-white-rim: rgba(60, 50, 40, 0.55);
  --iw-gb-white-shadow: rgba(120, 102, 80, 0.45);
  --iw-gb-last: #b3261e;
  --iw-gb-cross: #8c2f23;
  --iw-gb-loupe-bg: #efe9dc;
  --iw-gb-loupe-grid: rgba(60, 50, 40, 0.35);
  --iw-gb-loupe-black-rim: #8c2f23;
  --iw-gb-loupe-white-rim: rgba(60, 50, 40, 0.6);

  /* 翻转棋日间：底板翻纸色（与五子棋放大镜同色），格线翻墨，
     金色点缀全翻暗砖红；白子加墨色描边在纸底显形，黑子描边翻红 */
  --iw-rv-bg: #efe9dc;
  --iw-rv-grid: rgba(60, 50, 40, 0.35);
  --iw-rv-star: rgba(140, 47, 35, 0.55);
  --iw-rv-accent-rgb: 140, 47, 35;
  --iw-rv-mark: #8c2f23;
  --iw-rv-mark-ring: rgba(140, 47, 35, 0.6);
  --iw-rv-hint-halo: rgba(140, 47, 35, 0.2);
  --iw-rv-black-rim: rgba(140, 47, 35, 0.6);
  --iw-rv-black-shadow: rgba(120, 102, 80, 0.5);
  --iw-rv-white-rim: rgba(60, 50, 40, 0.55);
  --iw-rv-white-shadow: rgba(120, 102, 80, 0.45);

  /* 三消暗牌日间：brightness(0.38) 会把米白压到 L9% 成黑块。
     0.85 压到 L54%，比明牌（L67%）暗 13pt：一眼可辨又不发黑。
     灰度加到 0.7 让暗牌褪成灰纸色，图标色彩与明牌拉开差距。 */
  --iw-tm-blocked-bright: 0.85;
  --iw-tm-blocked-gray: 0.7;
  --iw-tm-mask-a: 0.3;
  --iw-shadow-pure: #6d6356;

  /* 暗红底上的文字翻成米白（与背景反向，这就是单列它的原因） */
  --iw-on-gold: #f7f4ed;

  /* 状态色压深：原本是亮色系，在米白上会发虚 */
  --iw-state-danger:      #b3261e;
  --iw-state-danger-soft: #c4564a;
  --iw-state-info:        #2f5d8c;
  --iw-state-magic:       #6b3fa0;
  --iw-danger-bg:         #f7e4e0;
  /* 近黑族 RGB 三元组翻纸色：与上面的 --iw-cool-*/--iw-warm-* 同值 */
  --iw-rgb-cool-0: 251, 249, 245;
  --iw-rgb-cool-1: 245, 241, 232;
  --iw-rgb-cool-2: 238, 232, 220;
  --iw-rgb-cool-3: 230, 223, 208;
  --iw-rgb-cool-4: 222, 213, 194;
  --iw-rgb-warm-0: 250, 246, 237;
  --iw-rgb-warm-1: 244, 237, 224;
  --iw-rgb-warm-2: 236, 227, 210;
  --iw-rgb-warm-3: 227, 215, 194;
  --iw-rgb-warm-amber: 235, 222, 196;  /* 高饱和暖棕 → 琥珀浅米 */
  /* 卡带外壳：v749 回暖。v748 把饱和砍到 9%（R-B 仅 3~6）在米白底上发灰发白，
     原始值 40~47%（R-B 20）又发闷。现按 R-B 通道差定在 9~16 之间，
     明度不变，只是把 R 抬高、B 压低，保留塑料壳的米黄感。 */
  --iw-cart-shell: #f3f0ea;
  --iw-cart-label-top: #ede9e0;
  --iw-cart-label-bot: #f7f5ef;
  --iw-cart-label-top-hv: #e9e4d9;
  --iw-cart-label-bot-hv: #fbfaf5;
  --iw-cart-slot: #e7e2d8;   /* 插槽：比机壳深一档，表现凹陷，带米黄不发灰 */
  /* 日间投影减重：黑影在米白上压太实会让卡片「陷进纸里」，透明度砍到夜间的 1/4 左右 */
  --iw-shadow-a: 0.12;
  --iw-shadow-b: 0.16;
}
/* 日间专用：外部卡片与卡带的投影改用轻薄暖灰，营造「纸叠纸」而非「陷入」 */
.innerworld-panel[data-iw-theme="day"] .iw-gazette-feature {
  box-shadow:
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.04),
    0 2px 8px rgba(var(--iw-rgb-black), var(--iw-shadow-a));
}
.innerworld-panel[data-iw-theme="day"] .iw-gazette-feature:hover,
.innerworld-panel[data-iw-theme="day"] .iw-gazette-feature:active {
  box-shadow:
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.06),
    0 4px 14px rgba(var(--iw-rgb-black), var(--iw-shadow-b)),
    0 0 10px rgba(var(--iw-rgb-gold), 0.06);
}
.innerworld-panel[data-iw-theme="day"] .iw-deck-cartridge {
  box-shadow:
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.04),
    0 2px 8px rgba(var(--iw-rgb-black), var(--iw-shadow-a));
}
.innerworld-panel[data-iw-theme="day"] .iw-deck-cartridge:hover,
.innerworld-panel[data-iw-theme="day"] .iw-deck-cartridge:active {
  box-shadow:
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.06),
    0 5px 14px rgba(var(--iw-rgb-black), var(--iw-shadow-b)),
    0 0 10px rgba(var(--iw-rgb-gold), 0.06);
}
/* 卡带标签内凹阴影同样减重，否则贴纸看着像黑框 */
.innerworld-panel[data-iw-theme="day"] .iw-cart-label {
  box-shadow: inset 0 1px 3px rgba(var(--iw-rgb-black), 0.14);
}
/* 风声容器的投影也压薄，和外部卡片保持一致的纸感 */
.innerworld-panel[data-iw-theme="day"] .iw-paper-container {
  box-shadow: 0 4px 14px rgba(var(--iw-rgb-black), var(--iw-shadow-a));
}
/* v748：游嬉机壳 / 二级页操作栏投影减重 */
.innerworld-panel[data-iw-theme="day"] .iw-arcade-console,
.innerworld-panel[data-iw-theme="day"] .iw-arcade-subnav {
  box-shadow:
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.04),
    0 2px 8px rgba(var(--iw-rgb-black), var(--iw-shadow-a));
}
/* 插槽：夜间是 0.9 的实黑描边 + 双层深内阴影，日间换成细灰线 + 浅内阴影，
   否则会是一条粗棕框，正是「太黄太重」的来源之一 */
.innerworld-panel[data-iw-theme="day"] .iw-console-slot {
  border-color: rgba(var(--iw-rgb-black), 0.28);
  border-bottom-color: rgba(var(--iw-rgb-white), 0.06);
  box-shadow:
    inset 0 2px 4px rgba(var(--iw-rgb-black), 0.18),
    inset 0 0 1px rgba(var(--iw-rgb-black), 0.3);
}
/* 二级页返回键：按下态内阴影减重 */
.innerworld-panel[data-iw-theme="day"] .iw-subnav-back {
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-white), 0.04);
}
.innerworld-panel[data-iw-theme="day"] .iw-subnav-back:active {
  box-shadow: inset 0 1px 2px rgba(var(--iw-rgb-black), 0.18);
}
/* v755：三消卡牌。夜间用 0.7~0.98 的浓阴影区分 14 层高低，日间这个浓度
   配暖灰会让每张牌拖一片灰影，整盘发脏。按层级重排一套轻投影：
   浓度压到 0.06~0.3，但保留「层越高影越大越重」的梯度，立体感不丢。 */
.innerworld-panel[data-iw-theme="day"] .iw-tile-card {
  box-shadow: 0 1px 3px rgba(var(--iw-rgb-black), 0.14);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-0 {
  box-shadow: 0 1px 3px rgba(var(--iw-rgb-black), 0.1);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-1 {
  box-shadow: 0 2px 5px rgba(var(--iw-rgb-black), 0.12);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-2 {
  box-shadow: 0 3px 7px rgba(var(--iw-rgb-black), 0.14);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-3 {
  box-shadow: 0 4px 9px rgba(var(--iw-rgb-black), 0.16);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-4 {
  box-shadow: 0 5px 11px rgba(var(--iw-rgb-black), 0.18);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-5 {
  box-shadow: 0 6px 13px rgba(var(--iw-rgb-black), 0.2);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-6 {
  box-shadow: 0 7px 15px rgba(var(--iw-rgb-black), 0.21);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-7 {
  box-shadow: 0 8px 17px rgba(var(--iw-rgb-black), 0.22);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-8 {
  box-shadow: 0 9px 19px rgba(var(--iw-rgb-black), 0.24);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-9 {
  box-shadow: 0 10px 21px rgba(var(--iw-rgb-black), 0.25);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-10 {
  box-shadow: 0 11px 23px rgba(var(--iw-rgb-black), 0.26);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-11 {
  box-shadow: 0 12px 25px rgba(var(--iw-rgb-black), 0.28);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-12,
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-layer-13 {
  box-shadow: 0 13px 27px rgba(var(--iw-rgb-black), 0.3);
}
/* 牌面内凹切面：夜间底边是 0.6 实黑模拟厚度，日间换成细暖灰线 */
.innerworld-panel[data-iw-theme="day"] .iw-tile-card-inner::after {
  border-top-color: rgba(var(--iw-rgb-white), 0.5);
  border-bottom-color: rgba(var(--iw-rgb-black), 0.18);
}
/* 图标与文字的阴影：夜间 0.8~0.9 是为了在深底上描边，日间纸底上会糊 */
.innerworld-panel[data-iw-theme="day"] .iw-tile-card-icon svg {
  filter: drop-shadow(0 1px 1px rgba(var(--iw-rgb-black), 0.18));
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card-label {
  text-shadow: 0 1px 1px rgba(var(--iw-rgb-white), 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-tile-card.is-pickable:active {
  box-shadow: 0 1px 2px rgba(var(--iw-rgb-black), 0.22);
}

/* 日间：战术网格点阵与顶部扫描光都基于白色叠加，在米白上会消失。
   这里改用墨色低透明度，保留「有纹理」的观感。 */
.innerworld-panel[data-iw-theme="day"]::before {
  background-image: radial-gradient(rgba(60, 50, 40, 0.07) 1px, transparent 1px);
}
.innerworld-panel[data-iw-theme="day"]::after {
  background: radial-gradient(circle at 50% 0%, rgba(140, 47, 35, 0.05), transparent 70%);
}

/* 顶栏右上角设置菜单（三点）：昼夜模式 + 流式输出。
   弹层挂在 .iw-header 内（顶栏已含灵动岛 safe-area padding），从按钮底边向下展开，不会被刘海遮挡。 */
.iw-menu-wrap {
  position: relative;
  margin-left: auto;          /* 顶栏是 flex-start，靠这个推到最右 */
}
.iw-menu-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  border-radius: 8px;
  background: transparent !important;
  border: none !important;
  outline: none !important;
  color: var(--iw-text-3) !important;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: color 0.2s ease, transform 0.3s ease;
}
.iw-menu-btn:active { transform: scale(0.88); }
.iw-menu-btn:hover,
.iw-menu-btn[aria-expanded="true"] { color: var(--iw-gold) !important; }
.iw-menu-pop {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 30;
  width: 236px;
  max-width: calc(100vw - 24px);
  padding: 12px;
  box-sizing: border-box;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  border-radius: 12px;
  background: var(--iw-cool-2);
  box-shadow: 0 12px 30px rgba(var(--iw-rgb-black), 0.45);
  color: var(--iw-text-1);
  transform-origin: top right;
  animation: iw-menu-in 0.16s ease-out;
}
.iw-menu-pop[hidden] { display: none; }
@keyframes iw-menu-in {
  from { opacity: 0; transform: translateY(-4px) scale(0.97); }
  to   { opacity: 1; transform: none; }
}
.iw-menu-label {
  margin: 0 2px 8px;
  color: var(--iw-text-3);
  font-size: 11px;
  letter-spacing: 1px;
}
.iw-menu-seg {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  padding: 3px;
  border-radius: 9px;
  background: var(--iw-cool-0);
}
.iw-menu-seg-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 34px;
  margin: 0;
  padding: 0 8px;
  border: none;
  border-radius: 7px;
  background: transparent;
  color: var(--iw-text-3);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.18s ease, color 0.18s ease;
}
.iw-menu-seg-btn.is-on {
  background: var(--iw-cool-4);
  color: var(--iw-gold);
  box-shadow: 0 1px 3px rgba(var(--iw-rgb-black), 0.3);
}
.iw-menu-row {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin: 12px 0 0;
  padding: 6px 2px;
  border: none;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.iw-menu-row-icon { display: inline-flex; flex: 0 0 auto; color: var(--iw-gold); }
.iw-menu-row-title { flex: 1 1 auto; min-width: 0; color: var(--iw-text-1); font-size: 13px; font-weight: 500; }
/* 说明文字单独一行，左缘与「流式输出」标题对齐（图标 15px + 间距 10px + 行内边距 2px） */
.iw-menu-desc { margin: 0; padding: 0 2px 2px 27px; color: var(--iw-text-3); font-size: 10.5px; line-height: 1.45; }
.iw-menu-switch {
  position: relative;
  flex: 0 0 auto;
  width: 36px;
  height: 21px;
  border-radius: 11px;
  background: var(--iw-cool-4);
  transition: background 0.2s ease;
}
.iw-menu-switch i {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: var(--iw-text-3);
  transition: transform 0.2s ease, background 0.2s ease;
}
.iw-menu-switch.is-on { background: rgba(var(--iw-rgb-gold), 0.38); }
.iw-menu-switch.is-on i { background: var(--iw-gold); transform: translateX(15px); }
/* 日间：浮层换成奶白卡 + 浅描边阴影 */
.innerworld-panel[data-iw-theme="day"] .iw-menu-pop {
  background: var(--iw-cool-1);
  border-color: rgba(43, 38, 32, 0.12);
  box-shadow: 0 10px 26px rgba(68, 51, 29, 0.16);
}
.innerworld-panel[data-iw-theme="day"] .iw-menu-seg { background: var(--iw-cool-3); }
.innerworld-panel[data-iw-theme="day"] .iw-menu-seg-btn.is-on { background: var(--iw-cool-0); box-shadow: 0 1px 3px rgba(68, 51, 29, 0.18); }
.innerworld-panel[data-iw-theme="day"] .iw-menu-switch i { background: #fff; box-shadow: 0 1px 2px rgba(68, 51, 29, 0.25); }
.innerworld-panel[data-iw-theme="day"] .iw-menu-switch.is-on { background: var(--iw-gold); }
@media (prefers-reduced-motion: reduce) {
  .iw-menu-pop { animation: none; }
  .iw-menu-switch, .iw-menu-switch i, .iw-menu-seg-btn { transition: none; }
}

.innerworld-panel {
  background-color: var(--iw-cool-0) !important;
  color: var(--iw-text-1);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
  overflow: hidden;
  user-select: none;
  -webkit-user-select: none;
}

/* 高特异性：里世界激活时全屏覆盖，压过 #main > section.panel 的 relative 定位 */
section.innerworld-panel.panel.active {
  display: flex !important;
  flex-direction: column;
  position: fixed !important;
  inset: 0;
  z-index: 120;
  overflow: hidden;
}

/* 战术网格点阵背景 */
.innerworld-panel::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(var(--iw-rgb-white), 0.05) 1px, transparent 1px);
  background-size: 18px 18px;
  background-position: 0 0;
  pointer-events: none;
  z-index: 0;
}

/* 顶部微弱暗角冷白扫描光（纯白微晕，无彩色） */
.innerworld-panel::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 0%, rgba(var(--iw-rgb-white), 0.04), transparent 70%);
  pointer-events: none;
  z-index: 0;
}

/* 顶部 HUD 战术状态栏 */
.iw-header {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  /* 严格遵循 iOS 灵动岛 / 刘海屏保护：max 兜底至少 12px，真机灵动岛可达到 54px+ */
  padding-top: max(12px, env(safe-area-inset-top, 12px));
  padding-left: max(12px, env(safe-area-inset-left, 12px));
  padding-right: max(12px, env(safe-area-inset-right, 12px));
  padding-bottom: 6px;
  background: transparent;
  min-height: 48px;
  box-sizing: border-box;
}

.iw-back-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  margin: 0;
  border-radius: 8px;
  background: transparent !important;
  border: none !important;
  outline: none !important;
  color: var(--iw-text-3) !important;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.iw-back-btn:active {
  background: rgba(var(--iw-rgb-white), 0.12) !important;
  color: var(--iw-text-0) !important;
  transform: scale(0.92) translateX(-2px);
}

.iw-back-btn svg {
  width: 22px;
  height: 22px;
  stroke: currentColor;
  stroke-width: 2.2;
}

/* 主内容容器 */
.iw-scroll-view {
  position: relative;
  z-index: 1;
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 4px 16px calc(env(safe-area-inset-bottom, 0px) + 24px);
  -webkit-overflow-scrolling: touch;
}

/* 页面大标题：对齐“世界/面具”风格，左对齐优雅排布 */
.iw-title-heading {
  margin: 0 0 8px 0;
  display: flex;
  align-items: baseline;
  gap: 10px;
}

.iw-verso-title {
  font-family: "Georgia", "Baskerville", "Times New Roman", "Noto Serif", serif;
  font-style: italic;
  font-size: 28px;
  font-weight: 400;
  letter-spacing: 0.5px;
  color: var(--iw-text-0);
  line-height: 1.1;
  text-shadow: 0 2px 10px rgba(var(--iw-rgb-black), 0.5);
}

.iw-verso-cn {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif !important;
  font-style: normal;
  font-size: 13px;
  font-weight: 500;
  color: rgba(var(--iw-rgb-white), 0.45);
  letter-spacing: 2px;
}

/* 顶部引言文字：严格锁死现代无衬线黑体，绝不吃全局自定义字体 */
.iw-epigraph {
  margin: 0 0 20px 0;
  padding: 0 2px;
  font-size: 12px;
  line-height: 1.65;
  color: rgba(var(--iw-rgb-white), 0.45);
  text-indent: 2em;
  letter-spacing: 0.3px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif !important;
}

/* ========================================================
   里世界特刊报头（Editorial Masthead & Folio）
   ======================================================== */
.iw-gazette-masthead {
  display: flex;
  flex-direction: column;
  margin-bottom: 20px;
}

.iw-gazette-folio {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  margin-bottom: 6px;
  text-transform: uppercase;
}

.iw-gazette-folio-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
}

.iw-gazette-brand {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 10px;
}

.iw-gazette-title {
  margin: 0;
  font-family: Georgia, "Songti SC", "SimSun", "Times New Roman", serif;
  font-size: 28px;
  font-weight: 400;
  letter-spacing: 1px;
  color: var(--iw-text-0);
  line-height: 1;
}

.iw-gazette-title-cn {
  font-family: "Songti SC", "SimSun", serif;
  font-size: 15px;
  letter-spacing: 3px;
  color: rgba(var(--iw-rgb-white), 0.45);
}

/* 报刊分界线：上粗下细双线质感 */
.iw-gazette-rule {
  height: 1px;
  background: rgba(var(--iw-rgb-white), 0.12);
  margin-bottom: 12px;
  position: relative;
}

.iw-gazette-rule::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 0;
  right: 0;
  height: 1px;
  background: rgba(var(--iw-rgb-white), 0.05);
}

/* 题记（保持原观测文案与内敛气质） */
.iw-epigraph {
  margin: 4px 0 0 0;
  padding: 0;
  font-size: 11.5px;
  line-height: 1.6;
  color: rgba(var(--iw-rgb-white), 0.45);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif !important;
  letter-spacing: 0.3px;
}

/* ========================================================
   里世界错落杂志版面（Editorial Gazette Grid）
   ======================================================== */
.iw-gazette-grid {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* --- 头条大专题（Cover Feature · 01 世界全域） --- */
.iw-gazette-feature {
  /* v747：改用风声同款纸底（cool-1 纯色），去掉暖棕渐变——日间那段渐变起点偏黄偏深，是发沉的主因 */
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  border-radius: 6px;
  padding: 18px 16px 14px 16px;
  cursor: pointer;
  position: relative;
  box-shadow: 
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08),
    0 4px 20px rgba(var(--iw-rgb-black), 0.5);
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
  user-select: none;
}

.iw-gazette-feature:hover,
.iw-gazette-feature:active {
  transform: translateY(-2px);
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  box-shadow: 
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.12),
    0 8px 26px rgba(var(--iw-rgb-black), 0.6),
    0 0 14px rgba(var(--iw-rgb-gold), 0.08);
}

.iw-gazette-feature-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}

.iw-gazette-kicker {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.iw-gazette-num {
  font-family: "ShareTechMono", monospace;
  font-size: 20px;
  font-weight: 800;
  color: var(--iw-gold);
  line-height: 1;
}

.iw-gazette-kicker-text {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1.2px;
  color: rgba(var(--iw-rgb-white), 0.4);
}

.iw-gazette-headline {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 19px;
  font-weight: 600;
  color: var(--iw-text-bright);
  letter-spacing: 0.8px;
  margin-bottom: 6px;
  line-height: 1.2;
}

.iw-gazette-deck {
  font-size: 12px;
  line-height: 1.6;
  color: rgba(var(--iw-rgb-white), 0.55);
  margin-bottom: 14px;
}

/* 底部压轴观察者印记（Strapline & Arrow） */
.iw-gazette-feature-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 10px;
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.07);
}

.iw-gazette-strapline {
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-gold), 0.65);
  text-transform: uppercase;
}

.iw-gazette-arrow {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  color: var(--iw-gold);
  transition: transform 0.2s ease;
}

.iw-gazette-feature:hover .iw-gazette-arrow {
  transform: translateX(3px);
}

/* --- 次版错落专栏（Columns 2x2 错落排版） --- */
.iw-gazette-columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.iw-gazette-col-card {
  background: var(--iw-cool-1);  /* v747：与风声同纸 */
  border: 1px solid rgba(var(--iw-rgb-white), 0.07);
  border-radius: 5px;
  padding: 12px 11px 11px 11px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  position: relative;
  transition: all 0.2s ease;
  user-select: none;
}

.iw-gazette-col-card:hover,
.iw-gazette-col-card:active {
  border-color: rgba(var(--iw-rgb-white), 0.16);
  background: var(--iw-cool-2);
  transform: translateY(-1px);
}

.iw-gazette-col-full {
  grid-column: 1 / -1;
}

.iw-gazette-col-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 6px;
}

.iw-gazette-num-sm {
  font-family: "ShareTechMono", monospace;
  font-size: 13px;
  font-weight: 700;
  color: rgba(var(--iw-rgb-white), 0.45);
}

.iw-gazette-code-sm {
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.25);
}

.iw-gazette-col-title {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 14.5px;
  font-weight: 600;
  color: rgba(var(--iw-rgb-white), 0.85);
  margin-bottom: 5px;
  letter-spacing: 0.3px;
}

.iw-gazette-col-brief {
  font-size: 10.5px;
  line-height: 1.45;
  color: rgba(var(--iw-rgb-white), 0.38);
  margin-bottom: 10px;
  flex: 1;
}

.iw-gazette-col-status {
  font-family: "ShareTechMono", monospace;
  font-size: 7.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.25);
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.06);
  padding-top: 5px;
  margin-top: auto;
}
/* 未开放的专栏：整卡调暗（含标题、说明、STANDBY），按下也不做抬起反馈；
   已开放的卡保持原亮度，不再挂状态标签 */
.iw-gazette-col-card.is-standby {
  opacity: 0.5;
}
.iw-gazette-col-card.is-standby:hover,
.iw-gazette-col-card.is-standby:active {
  border-color: rgba(var(--iw-rgb-white), 0.07);
  background: var(--iw-cool-1);
  transform: none;
}
/* 已开放的专栏：与 01 世界全域同款——金色细边框 + 金色编号。
   按「未带 .is-standby」匹配，将来 03/04 开放只要去掉 is-standby 就自动亮起 */
.iw-gazette-col-card:not(.is-standby) {
  border-color: rgba(var(--iw-rgb-gold), 0.22);
}
.iw-gazette-col-card:not(.is-standby):hover,
.iw-gazette-col-card:not(.is-standby):active {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
}
.iw-gazette-col-card:not(.is-standby) .iw-gazette-num-sm {
  color: var(--iw-gold);
}

/* 题头与引言入场轻动画 */
.iw-title-heading {
  animation: iwFadeSubtle 0.28s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.iw-epigraph {
  animation: iwFadeSubtle 0.32s cubic-bezier(0.16, 1, 0.3, 1) both 0.04s;
}

/* 二级页面视图入场平滑淡入 */
.iw-subview-wrap {
  width: 100%;
}

.iw-subview-enter {
  animation: iwSubViewEnter 0.32s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* 媒介视口在 Tab 切换时的平滑渐显微动效 */
.iw-viewport-fade {
  animation: iwViewportFade 0.22s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes iwViewportFade {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes iwCardSlideUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes iwFadeSubtle {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes iwSubViewEnter {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 卡片顶部层阶编号与频道 */
.iw-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}

.iw-card-channel {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.iw-card-num {
  font-family: "ShareTechMono", monospace;
  font-size: 20px;
  font-weight: 800;
  color: var(--iw-gold); /* 高级香槟淡金，沉着静谧 */
  line-height: 1;
  opacity: 0.95;
  text-shadow: 0 0 12px rgba(var(--iw-rgb-gold), 0.18);
  letter-spacing: 0.5px;
}

.iw-card-code {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-white), 0.5);
}

.iw-card-stamp {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.35);
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  padding: 1px 5px;
  border-radius: 3px;
  letter-spacing: 0.5px;
}

/* 卡片主标题与中文字样 */
.iw-card-title {
  font-size: 17px;
  font-weight: 700;
  color: var(--iw-text-0);
  letter-spacing: 0.5px;
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.iw-card-arrow {
  color: rgba(var(--iw-rgb-white), 0.3);
  transition: transform 0.2s ease, color 0.2s ease;
}

.iw-card:active .iw-card-arrow {
  transform: translateX(4px);
  color: var(--iw-text-bright);
}

/* 卡片意境描述 / 观察视角 */
.iw-card-desc {
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.6);
  line-height: 1.5;
  margin-bottom: 12px;
}

/* 子频段指示胶囊 */
.iw-card-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 4px;
}

.iw-sub-chip {
  font-size: 11px;
  color: var(--iw-text-2);
  background: rgba(var(--iw-rgb-white), 0.04);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  padding: 3px 8px;
  border-radius: 5px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.iw-sub-chip::before {
  content: "";
  display: inline-block;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--iw-gold);
  opacity: 0.75;
  box-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.4);
}

.iw-footer-note {
  margin-top: 24px;
  text-align: center;
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.25);
  letter-spacing: 1px;
}

/* ========================================================
   世界全域（MACROCOSM）二级页面与三大实体媒介样式
   ======================================================== */

/* 顶部媒介切换栏 */
.iw-media-nav {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
  padding-bottom: 2px;
}

.iw-media-tab {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 6px;
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  color: rgba(var(--iw-rgb-white), 0.55);
  font-size: 12px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  cursor: pointer;
  transition: all 0.2s ease;
}

.iw-media-tab.active {
  background: rgba(var(--iw-rgb-white), 0.12);
  border-color: rgba(var(--iw-rgb-white), 0.35);
  color: var(--iw-text-bright);
  font-weight: 600;
}

.iw-media-tab.active svg {
  color: var(--iw-text-bright);
}

/* 媒介操作工具栏（左对齐，无边框，与题头呼应的“按钮 英文 / 中文”排版） */
.iw-action-bar {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin-top: 22px;
  margin-bottom: 24px;
  padding: 0 2px;
}

.iw-btn-pulse {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
  background: transparent !important;
  border: none !important;
  outline: none !important;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  text-align: left;
}

.iw-btn-pulse:active {
  transform: translateX(2px);
}

.iw-btn-pulse:active .iw-pulse-tag {
  border-color: rgba(var(--iw-rgb-white), 0.4);
  color: var(--iw-text-bright);
  background: rgba(var(--iw-rgb-white), 0.1);
}

.iw-btn-pulse:active .iw-pulse-en {
  color: var(--iw-text-bright);
}

/* 纯线条无框微图标 */
.iw-pulse-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent !important;
  border: none !important;
  color: rgba(var(--iw-rgb-white), 0.65);
  transition: all 0.25s ease;
}

.iw-btn-pulse:active .iw-pulse-tag {
  color: var(--iw-text-bright);
  transform: rotate(60deg);
}

.iw-btn-pulse svg {
  width: 15px;
  height: 15px;
  color: currentColor;
  stroke-width: 2;
  display: block;
}

/* 单行排版：英文 / 中文（与大标题 The Verso / 里世界 形成完美首尾呼应） */
.iw-pulse-label-wrap {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.iw-pulse-en {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif !important;
  font-style: normal;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.75);
  transition: color 0.2s ease;
}

.iw-pulse-cn {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif !important;
  font-style: normal;
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.38);
  letter-spacing: 0.5px;
}

/* --------------------------------------------------------
   实体媒介封底栏（Colophon）—— 将刷新按钮有机吸纳为刊物底标
   -------------------------------------------------------- */
.iw-medium-footer {
  margin-top: 24px;
  padding-top: 14px;
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.12);
}

.iw-crt-footer {
  border-top-color: rgba(74, 222, 128, 0.2);
}

.iw-zine-colophon {
  margin-top: 4px;
  padding: 14px 14px 16px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px dashed rgba(var(--iw-rgb-white), 0.12);
  border-radius: 4px;
}

.iw-footer-cutline {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  opacity: 0.5;
}

.iw-cutline-dash {
  flex: 1;
  height: 1px;
  background: rgba(var(--iw-rgb-white), 0.08);
}

.iw-cutline-text {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 9.5px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
}

.iw-colophon-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.iw-colophon-btn {
  display: inline-flex;
  align-items: center;
  padding: 4px 0;
  background: transparent !important;
  border: none !important;
  outline: none !important;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  text-align: left;
}

.iw-colophon-btn:active {
  transform: translateX(3px);
}

.iw-colophon-btn:active .iw-pulse-en {
  color: var(--iw-text-bright);
}

.iw-colophon-btn:active .iw-pulse-cn {
  color: var(--iw-text-bright);
}

/* 右侧世界观游戏内时间戳（无边框无圆点，极简注记） */
.iw-colophon-timestamp {
  display: inline-flex;
  align-items: center;
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 11px;
  letter-spacing: 0.5px;
  white-space: nowrap;
}

.iw-time-dot {
  display: none;
}

.iw-time-val {
  color: rgba(var(--iw-rgb-white), 0.4);
}

.iw-crt-footer .iw-time-val {
  color: rgba(167, 243, 208, 0.6);
}

/* --------------------------------------------------------
   媒介 1：【暗色纪事早报】（The Broadsheet）—— 交互式多篇动态折叠展开
   -------------------------------------------------------- */
.iw-paper-container {
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 4px;
  padding: 16px 14px 20px;
  position: relative;
  box-shadow: 0 10px 30px rgba(var(--iw-rgb-black), 0.5);
  transition: opacity 0.4s ease, filter 0.4s ease;
}

/* 定影揭晓出浴动效 */
.iw-paper-container.is-revealed {
  animation: iwDaylightReveal 0.45s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes iwDaylightReveal {
  0% {
    opacity: 0.6;
    filter: brightness(1.25) contrast(0.85);
    transform: translateY(3px);
  }
  100% {
    opacity: 1;
    filter: brightness(1) contrast(1);
    transform: translateY(0);
  }
}

/* ---------------- 暗室显影槽（Darkroom Tray 骨架屏与液体光晕） ---------------- */
.iw-darkroom-tray {
  min-height: 480px;
  background: radial-gradient(circle at 50% 15%, var(--iw-danger-bg) 0%, var(--iw-cool-1) 75%);
  border-color: rgba(226, 75, 75, 0.22);
  box-shadow: 0 0 35px rgba(239, 68, 68, 0.08), inset 0 0 40px rgba(var(--iw-rgb-black), 0.8);
  overflow: hidden;
  position: relative;
  animation: iwDarkroomSinkIn 0.42s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes iwDarkroomSinkIn {
  0% {
    opacity: 0.25;
    filter: brightness(0.65) blur(2px);
    transform: scale(0.985) translateY(4px);
  }
  100% {
    opacity: 1;
    filter: brightness(1) blur(0);
    transform: scale(1) translateY(0);
  }
}

/* 暗房深红安全灯呼吸光晕 */
.iw-darkroom-safelight {
  position: absolute;
  top: -40px;
  left: 50%;
  transform: translateX(-50%);
  width: 280px;
  height: 140px;
  background: radial-gradient(ellipse at center, rgba(239, 68, 68, 0.18) 0%, transparent 70%);
  pointer-events: none;
  animation: iwSafelightPulse 3.5s ease-in-out infinite alternate;
  z-index: 1;
}

@keyframes iwSafelightPulse {
  0% { opacity: 0.45; transform: translateX(-50%) scale(0.95); }
  100% { opacity: 0.9; transform: translateX(-50%) scale(1.1); }
}

/* 药水液面微波扫光层 */
.iw-darkroom-liquid-layer {
  position: absolute;
  top: 0;
  left: -100%;
  width: 300%;
  height: 100%;
  background: linear-gradient(
    105deg,
    transparent 20%,
    rgba(239, 68, 68, 0.04) 40%,
    rgba(var(--iw-rgb-gold), 0.05) 50%,
    rgba(239, 68, 68, 0.04) 60%,
    transparent 80%
  );
  pointer-events: none;
  animation: iwLiquidWave 4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
  z-index: 2;
}

@keyframes iwLiquidWave {
  0% { transform: translateX(0); }
  100% { transform: translateX(50%); }
}

/* 冲印工序单据抬头 */
.iw-darkroom-manifest {
  position: relative;
  z-index: 3;
  padding-bottom: 12px;
  margin-bottom: 16px;
  border-bottom: 1px dashed rgba(239, 68, 68, 0.25);
}

.iw-manifest-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 0.6px;
  margin-bottom: 6px;
}

.iw-manifest-tag {
  color: rgba(239, 68, 68, 0.85);
  font-weight: 700;
}

.iw-manifest-rec {
  color: rgba(var(--iw-rgb-gold), 0.7);
  animation: iwRecBlink 1.4s infinite;
}

@keyframes iwRecBlink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}

.iw-manifest-step-wrap {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.iw-manifest-step-code {
  font-family: "ShareTechMono", monospace;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.8px;
  color: var(--iw-state-danger-soft);
  text-shadow: 0 0 8px rgba(239, 68, 68, 0.4);
}

.iw-manifest-step-desc {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.65);
  letter-spacing: 0.2px;
  min-height: 16px;
  transition: opacity 0.25s ease;
}

@keyframes iwManifestFadeIn {
  0% {
    opacity: 0.2;
    transform: translateY(2px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 极细微波进度条 */
.iw-manifest-progress-bar {
  margin-top: 8px;
  height: 2px;
  width: 100%;
  background: rgba(var(--iw-rgb-white), 0.06);
  border-radius: 1px;
  overflow: hidden;
  position: relative;
}

.iw-manifest-progress-fill {
  position: absolute;
  top: 0;
  left: 0;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg, #ef4444, var(--iw-gold));
  animation: iwProgressFlow 1.8s infinite ease-in-out;
  border-radius: 1px;
}

@keyframes iwProgressFlow {
  0% { left: -40%; width: 30%; }
  50% { width: 55%; }
  100% { left: 100%; width: 30%; }
}

/* 显影骨架屏潜像（Latent Skeleton） */
.iw-darkroom-skeleton {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* 骨架基础线条：带暗房乳胶银盐呼吸 */
.iw-skel-line {
  background: rgba(var(--iw-rgb-white), 0.05);
  border-radius: 2px;
  position: relative;
  overflow: hidden;
  animation: iwSkelSilverBreathe 2s ease-in-out infinite alternate;
}

@keyframes iwSkelSilverBreathe {
  0% { background: rgba(var(--iw-rgb-white), 0.04); }
  100% { background: rgba(var(--iw-rgb-white), 0.08); }
}

.iw-skel-tag {
  width: 70px;
  height: 12px;
  margin-bottom: 6px;
  background: rgba(239, 68, 68, 0.12);
}

.iw-skel-title-lg {
  width: 85%;
  height: 18px;
  margin-bottom: 6px;
}

.iw-skel-title-sub {
  width: 65%;
  height: 14px;
  margin-bottom: 10px;
}

.iw-skel-title-md {
  width: 75%;
  height: 14px;
  margin-bottom: 6px;
}

.iw-skel-title-sm {
  width: 80%;
  height: 12px;
  margin-bottom: 5px;
}

.iw-skel-para {
  width: 95%;
  height: 10px;
  margin-bottom: 4px;
}

.iw-skel-para-short {
  width: 50%;
}

.iw-skel-headline {
  padding-bottom: 10px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.08);
}

.iw-skel-brief {
  padding: 8px 10px;
  background: rgba(var(--iw-rgb-white), 0.015);
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
  border-radius: 4px;
}

/* 骨架图文特稿相框 */
.iw-skel-wirephoto {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 10px;
  background: rgba(var(--iw-rgb-white), 0.015);
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
  border-radius: 4px;
}

.iw-skel-photo-box {
  width: 96px;
  height: 72px;
  background: var(--iw-cool-0);
  border: 1px solid rgba(239, 68, 68, 0.2);
  border-radius: 2px;
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}

.iw-skel-photo-shimmer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: radial-gradient(circle, rgba(239, 68, 68, 0.15) 0%, transparent 80%);
  animation: iwPhotoShimmer 2.2s infinite ease-in-out;
}

@keyframes iwPhotoShimmer {
  0%, 100% { opacity: 0.3; transform: scale(0.9); }
  50% { opacity: 0.8; transform: scale(1.15); }
}

.iw-skel-photo-ref {
  position: relative;
  z-index: 2;
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.3);
}

.iw-skel-photo-info {
  flex: 1;
  min-width: 0;
}

/* 骨架双列副刊网格 */
.iw-skel-twin-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
  width: 100%;
  box-sizing: border-box;
}

.iw-skel-twin-card {
  padding: 8px 10px;
  background: rgba(var(--iw-rgb-white), 0.015);
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
  border-radius: 4px;
  box-sizing: border-box;
}

.iw-paper-masthead {
  text-align: center;
  border-bottom: 2px solid rgba(var(--iw-rgb-white), 0.3);
  padding-bottom: 8px;
  margin-bottom: 12px;
}

.iw-paper-flag {
  font-family: "Georgia", "Times New Roman", serif;
  font-size: 22px;
  font-weight: 800;
  letter-spacing: 2px;
  color: var(--iw-text-0);
  text-transform: uppercase;
}

.iw-paper-meta-strip {
  display: flex;
  justify-content: space-between;
  border-top: none;
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.08);
  padding: 4px 2px;
  margin-top: 6px;
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.4);
}

/* 动态新闻列表容器 */
.iw-paper-articles {
  display: flex;
  flex-direction: column;
  width: 100%;
  box-sizing: border-box;
}

.iw-paper-article {
  padding: 12px 0;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.1);
  transition: background-color 0.2s ease, padding 0.2s ease;
}

.iw-paper-article:first-child {
  padding-top: 6px;
}

.iw-paper-article:last-child {
  border-bottom: none;
  padding-bottom: 4px;
}

/* 状态标签：头版 / 快讯 / 异动 */
.iw-article-tag {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  font-family: "ShareTechMono", monospace;
  font-size: 10.5px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  margin-bottom: 6px;
}

.iw-article-tag-left {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
}

/* 供稿媒体名：过长时省略，避免把右侧 + 顶飞 */
.iw-article-source {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.iw-tag-badge {
  flex: 0 0 auto;
}

.iw-paper-article.is-expanded .iw-article-tag {
  color: var(--iw-text-bright);
}

.iw-tag-badge {
  padding: 1px 5px;
  border-radius: 2px;
  background: rgba(var(--iw-rgb-white), 0.06);
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.7);
}

.iw-paper-article.is-expanded .iw-tag-badge {
  background: rgba(var(--iw-rgb-white), 0.16);
  color: var(--iw-text-bright);
  border: 1px solid rgba(var(--iw-rgb-white), 0.25);
}

/* ---------------- 展开态（大版面 Headline） ---------------- */
.iw-paper-article {
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.iw-paper-article.is-expanded {
  padding-left: 0;
  border-left: none;
  background: transparent;
}

.iw-paper-article.is-expanded .iw-article-title {
  font-size: 17px;
  font-weight: 800;
  line-height: 1.35;
  color: var(--iw-text-0);
  margin: 0 0 10px;
  letter-spacing: 0.2px;
}

/* 手风琴平滑展开容器：利用 grid 0fr -> 1fr 现代动画规范 */
.iw-article-full-wrap {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.32s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s ease;
  opacity: 0;
}

.iw-paper-article.is-expanded .iw-article-full-wrap {
  grid-template-rows: 1fr;
  opacity: 1;
}

.iw-article-full {
  overflow: hidden;
  font-size: 13px;
  line-height: 1.65;
  color: var(--iw-text-2);
  text-align: justify;
}

.iw-paper-article.is-expanded .iw-article-full::first-letter {
  font-size: 26px;
  font-weight: 800;
  float: left;
  line-height: 0.9;
  padding-right: 6px;
  padding-top: 2px;
  color: var(--iw-gold);
  text-shadow: 0 0 12px rgba(var(--iw-rgb-gold), 0.25);
}

/* 简报容器折叠过渡 */
.iw-article-brief-wrap {
  display: grid;
  grid-template-rows: 1fr;
  transition: grid-template-rows 0.28s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease;
  opacity: 1;
}

.iw-paper-article.is-expanded .iw-article-brief-wrap {
  grid-template-rows: 0fr;
  opacity: 0;
}

.iw-article-brief {
  overflow: hidden;
  font-size: 12px;
  line-height: 1.5;
  color: rgba(var(--iw-rgb-white), 0.55);
}

/* ---------------- 图文特稿（第 4 条 Wirephoto） ---------------- */
.iw-article-wirephoto {
  margin-top: 14px;
  margin-bottom: 8px;
  padding-bottom: 12px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.12);
}

.iw-wirephoto-frame {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  width: 100%;
}

.iw-wirephoto-img-wrap {
  flex: 0 0 96px;
  width: 96px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.iw-wirephoto-placeholder {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: 2px;
  overflow: hidden;
  border: none;
  background: var(--iw-cool-1);
  box-shadow: 0 2px 8px rgba(var(--iw-rgb-black), 0.4);
}

.iw-wirephoto-img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center 60%;
  opacity: 0.9;
  filter: contrast(1.08) grayscale(1);
  transition: opacity 0.3s ease, filter 0.3s ease, transform 0.3s ease;
}

.iw-wirephoto-caption {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  box-sizing: border-box;
  padding: 0 1px;
  font-family: "ShareTechMono", monospace;
  font-size: 7.5px;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.35);
  line-height: 1.1;
}

.iw-wirephoto-content {
  flex: 1 1 auto;
  min-width: 0;
}

/* 折叠与激活交互 */
.iw-article-wirephoto.is-collapsed {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.iw-article-wirephoto.is-collapsed:active .iw-wirephoto-img {
  filter: contrast(1.2) grayscale(0.5);
  transform: scale(1.03);
}

/* 展开态：图片扩展为通栏大视窗 */
.iw-article-wirephoto.is-expanded .iw-wirephoto-frame {
  flex-direction: column;
  gap: 10px;
}

/* 兜底：任何展开态文章里的加号提示一律隐藏（含图文特稿 content 内的） */
.is-expanded .iw-article-expand-hint {
  display: none !important;
  opacity: 0 !important;
}

.iw-article-wirephoto.is-expanded .iw-wirephoto-img-wrap {
  flex: 0 0 auto;
  width: 100%;
}

.iw-article-wirephoto.is-expanded .iw-wirephoto-placeholder {
  aspect-ratio: 16 / 9;
  border-color: rgba(var(--iw-rgb-white), 0.25);
}

.iw-article-wirephoto.is-expanded .iw-wirephoto-caption {
  flex-direction: row;
  justify-content: space-between;
  font-size: 8.5px;
  padding: 0 2px;
}

/* ---------------- 展开新闻下的热门评论区 ---------------- */
.iw-comment-section {
  margin-top: 16px;
}

.iw-comment-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

.iw-comment-label {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 0.6px;
  color: rgba(var(--iw-rgb-white), 0.4);
  white-space: nowrap;
}

.iw-comment-line {
  flex: 1;
  height: 1px;
  background: rgba(var(--iw-rgb-white), 0.1);
}

.iw-comment-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.iw-comment-item {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 7px 10px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border-radius: 4px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
}

.iw-comment-uid {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-gold), 0.6);
}

.iw-comment-text {
  font-size: 12px;
  line-height: 1.5;
  color: rgba(var(--iw-rgb-white), 0.72);
}

/* ---------------- 底部双列副刊剪报（第 5、6 条） ---------------- */
.iw-paper-twin-section {
  margin-top: 14px;
  margin-bottom: 6px;
  padding-top: 10px;
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.12);
  width: 100%;
  box-sizing: border-box;
}

.iw-twin-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

.iw-twin-title {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.42);
  white-space: nowrap;
}

.iw-twin-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, rgba(var(--iw-rgb-white), 0.12) 0%, transparent 100%);
}

.iw-twin-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  width: 100%;
  box-sizing: border-box;
}

/* 双列中的小豆腐块卡片 */
.iw-twin-article.is-collapsed {
  margin-top: 0;
  margin-bottom: 0;
  padding: 8px 10px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-left: none;
  border-radius: 4px;
  box-sizing: border-box;
  min-width: 0;
  width: 100%;
}

.iw-twin-article.is-collapsed .iw-article-title {
  font-size: 12px;
  line-height: 1.35;
  margin-bottom: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.iw-twin-article.is-collapsed .iw-article-brief {
  font-size: 11px;
  line-height: 1.4;
  color: rgba(var(--iw-rgb-white), 0.45);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.iw-twin-article.is-expanded {
  grid-column: 1 / -1; /* 展开时打破双列，跨满整行大版面展阅 */
  padding: 6px 0;
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.15);
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.15);
}

/* ---------------- 折叠态（豆腐块 Brief） ---------------- */
.iw-paper-article.is-collapsed {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  padding: 8px 10px;
  border-left: none;
  margin-top: 6px;
  margin-bottom: 4px;
  border-bottom: none;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
  border-radius: 4px;
  transition: all 0.2s ease;
}

.iw-paper-article.is-collapsed:active {
  background: rgba(var(--iw-rgb-white), 0.05);
  border-color: rgba(var(--iw-rgb-white), 0.15);
  transform: translateY(1px);
}

.iw-paper-article .iw-article-title {
  transition: font-size 0.25s ease, color 0.25s ease;
}

.iw-paper-article.is-collapsed .iw-article-title {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--iw-text-1);
  margin: 0 0 4px;
  line-height: 1.4;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.iw-article-expand-hint {
  font-family: "ShareTechMono", monospace;
  font-size: 13px;
  font-weight: 400;
  line-height: 1;
  color: rgba(var(--iw-rgb-white), 0.38);
  display: none;
  opacity: 0;
  transition: opacity 0.2s ease, transform 0.2s ease, color 0.2s ease;
  transform: scale(0.9);
}

.iw-paper-article.is-collapsed .iw-article-expand-hint {
  display: inline-block;
  opacity: 1;
  transform: scale(1);
}

.iw-paper-article.is-expanded .iw-article-expand-hint {
  display: none !important;
  opacity: 0;
}

.iw-paper-article.is-collapsed:active .iw-article-expand-hint {
  color: var(--iw-text-bright);
  transform: scale(1.15);
}

@keyframes iwFadeIn {
  from { opacity: 0; transform: translateY(-3px); }
  to { opacity: 1; transform: translateY(0); }
}

/* --------------------------------------------------------
   媒介 2：【众生相】（The Living / 纯文本古典文库分幕排版）
   -------------------------------------------------------- */
.iw-living-book {
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 24px 20px 22px;
  position: relative;
  box-shadow: 0 12px 36px rgba(var(--iw-rgb-black), 0.45);
}

/* 顶部文库题签抬头 */
.iw-living-header {
  margin-bottom: 22px;
  text-align: left;
}

.iw-living-label-box {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  padding: 2px 7px;
  border-radius: 2px;
  margin-bottom: 12px;
  background: rgba(var(--iw-rgb-gold), 0.04);
}

.iw-living-label {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.5px;
  color: var(--iw-gold);
}

.iw-living-vol {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 10px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  letter-spacing: 0.5px;
}

.iw-living-title {
  margin: 0 0 10px 0;
  font-family: "Georgia", "Baskerville", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: 0.6px;
  line-height: 1.4;
  color: var(--iw-text-0);
}

.iw-living-epigraph {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-style: italic;
  font-size: 12px;
  line-height: 1.6;
  color: rgba(var(--iw-rgb-white), 0.45);
  margin-bottom: 14px;
  padding-left: 2px;
}

.iw-living-rule {
  width: 100%;
  height: 1px;
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.25) 0%, rgba(var(--iw-rgb-white), 0.08) 60%, transparent 100%);
}

/* 分幕列表容器 */
.iw-living-acts {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.iw-living-act {
  position: relative;
  padding-bottom: 22px;
  margin-bottom: 22px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-gold), 0.14);
}

.iw-living-act:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: none;
}

/* 幕次小标题（方案 B：古典章回印，温润内敛） */
.iw-act-header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
  margin-bottom: 10px;
}

.iw-act-index {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 12px;
  font-weight: 600;
  color: var(--iw-gold);
  letter-spacing: 1px;
}

.iw-act-title {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 13px;
  font-weight: 500;
  color: rgba(var(--iw-rgb-white), 0.78);
  letter-spacing: 0.6px;
}

/* 纯文本段落排版：极致舒适度 */
.iw-act-text {
  font-size: 13.5px;
  line-height: 1.85;
  color: var(--iw-text-2b);
  text-align: justify;
  text-justify: inter-ideograph;
  text-indent: 2em;
  letter-spacing: 0.25px;
  margin-bottom: 8px;
}

.iw-act-text:last-child {
  margin-bottom: 0;
}

/* ---------------- 众生相交互 1：正文铅笔旁注（Marginalia） ---------------- */
.iw-marginalia-anchor {
  color: var(--iw-paper-1);
  text-decoration: underline dotted rgba(var(--iw-rgb-gold), 0.45);
  text-underline-offset: 3px;
  cursor: pointer;
  transition: all 0.2s ease;
  padding: 0 1px;
}

.iw-marginalia-anchor:active {
  color: var(--iw-text-bright);
  background: rgba(var(--iw-rgb-gold), 0.15);
  border-radius: 2px;
}

.iw-marginalia-sup {
  font-size: 9px;
  color: var(--iw-gold);
  font-family: "Georgia", serif;
  font-style: italic;
  margin-left: 2px;
  opacity: 0.85;
}

.iw-marginalia-box {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transform: translateY(-4px);
  transition: max-height 0.32s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s ease, transform 0.25s ease, margin 0.25s ease;
  margin: 0;
}

.iw-marginalia-box.is-open {
  max-height: 240px;
  opacity: 1;
  transform: translateY(0);
  margin: 6px 0 10px 0;
}

/* 孤儿注释（正文没写 {{注:}} 占位符时的兜底）：无法点开，默认直接展开 */
.iw-marginalia-box.is-orphan {
  max-height: 240px;
  opacity: 1;
  transform: translateY(0);
  margin: 6px 0 10px 0;
}

.iw-marginalia-content {
  display: flex;
  align-items: flex-start;
  padding: 8px 12px;
  background: rgba(var(--iw-rgb-gold), 0.04);
  border-radius: 4px;
}

.iw-marginalia-note {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 12px;
  line-height: 1.65;
  color: rgba(var(--iw-rgb-white), 0.65);
  letter-spacing: 0.2px;
  text-indent: 0;
}

/* 孤儿注释前的词语标签（因为没有正文锚点，需显式标明注的是哪个词） */
.iw-marginalia-key {
  color: rgba(var(--iw-rgb-gold), 0.75);
  font-weight: 600;
}

/* ---------------- 众生相交互 2：随身物夹页证据（Keepsake） ---------------- */
.iw-keepsake-section {
  margin-top: 14px;
  margin-bottom: 8px;
}

.iw-keepsake-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 7px 10px;
  background: rgba(var(--iw-rgb-gold), 0.04);
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 4px;
  color: var(--iw-gold);
  cursor: pointer;
  transition: all 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}

.iw-keepsake-trigger:active {
  background: rgba(var(--iw-rgb-gold), 0.08);
  border-color: rgba(var(--iw-rgb-gold), 0.4);
}

.iw-keepsake-clip-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-right: 6px;
  color: var(--iw-gold);
  opacity: 0.85;
}

.iw-keepsake-clip-svg {
  display: block;
}

.iw-keepsake-label {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 11.5px;
  letter-spacing: 0.4px;
  flex: 1;
  text-align: left;
}

.iw-keepsake-status-hint {
  font-size: 10px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  font-family: "ShareTechMono", monospace;
  letter-spacing: 0.5px;
}

/* 触发条右侧：展开/收起提示 + 箭头 */
.iw-keepsake-toggle {
  display: flex;
  align-items: center;
  gap: 4px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  flex-shrink: 0;
}

.iw-keepsake-chevron {
  display: block;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.iw-keepsake-trigger.is-open .iw-keepsake-chevron {
  transform: rotate(180deg);
}

.iw-keepsake-trigger.is-open {
  border-style: solid;
  border-color: rgba(var(--iw-rgb-gold), 0.3);
  background: rgba(var(--iw-rgb-gold), 0.06);
}

/* 可折叠证物容器（grid 行高过渡，iframe 始终在布局中、不会测高失准） */
.iw-keepsake-fold {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition: grid-template-rows 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease, margin 0.3s ease;
  margin: 0;
}

.iw-keepsake-fold.is-open {
  grid-template-rows: 1fr;
  opacity: 1;
  margin-top: 10px;
}

.iw-keepsake-fold-inner {
  min-height: 0;
  overflow: hidden;
}

/* 旧版泛黄信纸折叠容器（样例遗留，当前不再生成，保留不冲突） */
.iw-keepsake-container {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transform: scaleY(0.96);
  transform-origin: top center;
  transition: max-height 0.38s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease, transform 0.3s ease, margin 0.3s ease;
  margin: 0;
}

.iw-keepsake-container.is-open {
  max-height: 500px;
  opacity: 1;
  transform: scaleY(1);
  margin-top: 10px;
  margin-bottom: 8px;
}

/* 泛黄信纸质感 */
.iw-keepsake-paper {
  position: relative;
  background: var(--iw-warm-2);
  background-image: radial-gradient(circle at 85% 15%, rgba(var(--iw-rgb-gold), 0.06), transparent 70%),
                    linear-gradient(180deg, var(--iw-warm-2) 0%, var(--iw-warm-1) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.18);
  border-radius: 3px;
  padding: 16px 14px 14px 14px;
  box-shadow: inset 0 0 20px rgba(var(--iw-rgb-black), 0.6), 0 6px 16px rgba(var(--iw-rgb-black), 0.4);
}

/* 信纸六折折痕模拟线 */
.iw-keepsake-crease-lines {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  background: repeating-linear-gradient(
    180deg,
    transparent,
    transparent 58px,
    rgba(var(--iw-rgb-white), 0.02) 58px,
    rgba(var(--iw-rgb-black), 0.18) 59px,
    transparent 60px
  );
}

/* 泛黄信纸右上角邮戳 */
.iw-keepsake-stamp {
  position: absolute;
  top: 12px;
  right: 12px;
  border: 1.5px dashed rgba(180, 80, 70, 0.45);
  border-radius: 50%;
  width: 54px;
  height: 54px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transform: rotate(-12deg);
  pointer-events: none;
  color: rgba(180, 80, 70, 0.6);
  user-select: none;
}

.iw-stamp-outer {
  font-size: 7.5px;
  font-weight: 700;
  letter-spacing: 0.5px;
  transform: scale(0.9);
}

.iw-stamp-date {
  font-size: 7px;
  letter-spacing: 0.2px;
  margin-top: 1px;
}

/* 信纸手写正文 */
.iw-keepsake-letter-body {
  font-family: "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 12.5px;
  line-height: 1.8;
  color: rgba(230, 215, 190, 0.78);
  text-align: justify;
  letter-spacing: 0.3px;
  position: relative;
  z-index: 1;
}

/* 涂鸦猫咪与说明 */
.iw-keepsake-doodle-wrap {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
  z-index: 1;
}

.iw-keepsake-doodle {
  width: 90px;
  height: 72px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  filter: drop-shadow(0 1px 2px rgba(var(--iw-rgb-black), 0.5));
}
.iw-keepsake-doodle-caption {
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-gold), 0.4);
  font-style: italic;
  font-family: "Georgia", serif;
  margin-top: 2px;
}

/* ---------------- 众生相证物（新版：沙箱直出，无交互纯陈列） ---------------- */
/* 证物题签：回形针 + 物品标签，低调引出下方沙箱卡片 */
.iw-keepsake-caption {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
  margin-bottom: 8px;
  padding-left: 1px;
  color: var(--iw-gold);
}

.iw-keepsake-caption .iw-keepsake-label {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 11.5px;
  letter-spacing: 0.4px;
  color: rgba(var(--iw-rgb-gold), 0.75);
}

/* 沙箱画布：承载 AI 现写的证物 HTML（iframe 自适应高度，背景透明） */
.iw-keepsake-canvas {
  width: 100%;
  border-radius: 4px;
  overflow: hidden;
}

.iw-keepsake-canvas iframe {
  width: 100%;
  border: 0;
  display: block;
  background: transparent;
}

/* 沙箱不可用时的兜底容器（极少走到） */
.iw-keepsake-raw {
  padding: 12px;
  background: var(--iw-warm-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.14);
  border-radius: 4px;
  overflow-x: auto;
}

/* ---------------- 众生相整体容器与空态 ---------------- */
.iw-living-wrap {
  width: 100%;
}

/* 生成后的淡入定影（复用书卷落定的柔和出场） */
.iw-living-wrap.is-revealed {
  animation: iwLivingSettle 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes iwLivingSettle {
  0% { opacity: 0.4; transform: translateY(5px); filter: blur(1px); }
  100% { opacity: 1; transform: translateY(0); filter: blur(0); }
}

/* 空态：尚未取材的沉静引导卡 */
.iw-living-empty .iw-living-empty-body {
  padding: 48px 20px 40px;
  text-align: center;
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 12.5px;
  line-height: 2;
  color: rgba(var(--iw-rgb-white), 0.32);
  letter-spacing: 0.4px;
}

/* ---------------- 众生相加载态：执笔誊录等待卡（沉静文库古卷风） ---------------- */
.iw-living-loading {
  min-height: 420px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(circle at 50% 20%, var(--iw-warm-2) 0%, var(--iw-warm-0) 78%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.16);
  border-radius: 4px;
  animation: iwLivingSettle 0.42s ease forwards;
  box-shadow: inset 0 0 50px rgba(var(--iw-rgb-black), 0.6);
}

.iw-living-loading-inner {
  text-align: center;
  padding: 0 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* 卷首红印泥方印章 */
.iw-living-loading-seal {
  margin-bottom: 14px;
}

.iw-seal-frame {
  display: inline-block;
  padding: 3px 8px;
  font-family: "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 10px;
  letter-spacing: 2px;
  color: #c95246;
  border: 1px solid rgba(201, 82, 70, 0.45);
  background: rgba(201, 82, 70, 0.06);
  border-radius: 2px;
  box-shadow: 0 0 10px rgba(201, 82, 70, 0.12);
}

.iw-living-loading-title {
  font-family: "Georgia", serif;
  font-size: 13px;
  letter-spacing: 5px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  margin-bottom: 10px;
}

.iw-living-loading-sub {
  font-family: "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.42);
  letter-spacing: 0.5px;
  margin-bottom: 16px;
}

/* 墨痕与呼吸光晕 */
.iw-living-loading-brush {
  width: 90px;
  height: 2px;
  position: relative;
  margin: 4px auto 18px;
  background: rgba(var(--iw-rgb-gold), 0.1);
  overflow: hidden;
  border-radius: 2px;
}

.iw-brush-trace {
  position: absolute;
  top: 0;
  left: -40%;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(var(--iw-rgb-gold), 0.7), transparent);
  animation: iwBrushStroke 2.2s ease-in-out infinite;
}

@keyframes iwBrushStroke {
  0% { left: -40%; }
  50% { left: 100%; }
  100% { left: 100%; }
}

.iw-living-loading-ticker {
  font-family: "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 14px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  letter-spacing: 4px;
  transition: opacity 0.18s ease;
  min-height: 20px;
}

/* 沉静书卷封底：文末题跋与落款（框内纯净） */
.iw-living-footer {
  margin-top: 26px;
  padding-top: 14px;
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
  text-align: center;
}

.iw-living-end-mark {
  font-size: 8px;
  letter-spacing: 8px;
  color: rgba(var(--iw-rgb-gold), 0.35);
  margin-bottom: 10px;
}

.iw-living-colophon {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 0.8px;
}

/* ---------------- 框外长排通栏控制台（方案 A） ---------------- */
.iw-living-console {
  margin-top: 14px;
  margin-bottom: 8px;
  width: 100%;
  box-sizing: border-box;
}

.iw-living-long-btn {
  width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 4px;
  background: transparent;
  border: none;
  color: var(--iw-gold);
  cursor: pointer;
  transition: all 0.22s ease;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}

.iw-living-long-btn:active {
  opacity: 0.75;
  transform: translateX(2px);
}

.iw-long-btn-text {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  overflow: hidden;
}

.iw-long-btn-en {
  font-family: "Georgia", "Baskerville", "Times New Roman", "Noto Serif", serif;
  font-style: italic;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.5px;
  color: var(--iw-gold);
  white-space: nowrap;
}

.iw-long-btn-divider {
  font-size: 11px;
  color: rgba(var(--iw-rgb-gold), 0.35);
}

.iw-long-btn-cn {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.65);
  letter-spacing: 0.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.iw-long-btn-arrow {
  flex: 0 0 auto;
  color: rgba(var(--iw-rgb-gold), 0.7);
  transition: transform 0.2s ease, color 0.2s ease;
}

.iw-living-long-btn:active .iw-long-btn-arrow {
  color: var(--iw-gold-pale-hi);
  transform: translateX(2px);
}

/* --------------------------------------------------------
   媒介 3：【风靡】（The Zine / 街头潮流剪贴簿 · 黑白极简报刊风格）
   -------------------------------------------------------- */
.iw-zine-layout {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* 刊头：对齐风声与众生相的报刊/卷首风格 */
.iw-zine-masthead {
  padding: 12px 14px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.iw-zine-masthead-left {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.iw-zine-masthead-title {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-white), 0.85);
}

.iw-zine-masthead-sub {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.38);
  letter-spacing: 0.3px;
}

.iw-zine-masthead-badge {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  padding: 2px 7px;
  color: rgba(var(--iw-rgb-white), 0.5);
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 2px;
  letter-spacing: 1px;
}

/* 空态：本期尚未付印引导卡（对齐众生相空态的沉静基调） */
.iw-zine-empty {
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 40px 22px 44px;
}

.iw-zine-empty-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 16px;
}

.iw-zine-empty-icon {
  width: 54px;
  height: 54px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px dashed rgba(var(--iw-rgb-white), 0.14);
  border-radius: 50%;
  color: rgba(var(--iw-rgb-white), 0.32);
}

.iw-zine-empty-text {
  font-size: 12.5px;
  line-height: 1.9;
  color: rgba(var(--iw-rgb-white), 0.42);
  letter-spacing: 0.3px;
}

/* ---------------- 风靡加载态：孔版双色印机走纸与裁切（街头冷黑工业风） ---------------- */
.iw-zine-loading {
  min-height: 420px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(circle at 50% 20%, var(--iw-cool-2) 0%, var(--iw-cool-0) 78%);
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 4px;
  box-shadow: inset 0 0 45px rgba(var(--iw-rgb-black), 0.7);
}

.iw-zine-loading-inner {
  text-align: center;
  padding: 0 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* 顶部孔版印刷双滚筒微标 */
.iw-zine-loading-icon {
  width: 42px;
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.35);
  background: rgba(var(--iw-rgb-gold), 0.04);
  color: var(--iw-gold);
  margin-bottom: 14px;
  box-shadow: 0 0 14px rgba(var(--iw-rgb-gold), 0.08);
  animation: iwRisoPulse 3s ease-in-out infinite;
}

@keyframes iwRisoPulse {
  0%, 100% { transform: scale(1); opacity: 0.85; }
  50% { transform: scale(1.04); opacity: 1; box-shadow: 0 0 18px rgba(var(--iw-rgb-gold), 0.16); }
}

/* 双色孔版对位十字标 */
.iw-zine-loading-reg {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-gold), 0.75);
  margin-bottom: 12px;
}

.iw-reg-cross {
  color: rgba(var(--iw-rgb-white), 0.35);
  font-size: 11px;
}

.iw-reg-label {
  padding: 1px 6px;
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 2px;
}

.iw-zine-loading-title {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 13px;
  letter-spacing: 5px;
  color: var(--iw-text-bright);
  margin-bottom: 8px;
}

.iw-zine-loading-sub {
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.42);
  letter-spacing: 0.4px;
  margin-bottom: 18px;
}

/* 滚筒与走纸齿孔 */
.iw-zine-loading-press {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin-top: 6px;
  margin-bottom: 6px;
}

.iw-press-roller {
  width: 110px;
  height: 3px;
  background: rgba(var(--iw-rgb-white), 0.08);
  position: relative;
  overflow: hidden;
  border-radius: 2px;
}

.iw-press-roller::after {
  content: '';
  position: absolute;
  top: 0;
  left: -50%;
  width: 50%;
  height: 100%;
  background: linear-gradient(90deg, transparent, var(--iw-gold), transparent);
  animation: iwRollerSweep 1.6s ease-in-out infinite;
}

@keyframes iwRollerSweep {
  0% { left: -50%; }
  100% { left: 120%; }
}

.iw-press-paper-feed {
  display: flex;
  gap: 12px;
}

.iw-feed-perf {
  width: 4px;
  height: 4px;
  border-radius: 1px;
  background: rgba(var(--iw-rgb-white), 0.15);
  animation: iwFeedTick 1.2s infinite ease;
}

.iw-feed-perf:nth-child(1) { animation-delay: 0s; }
.iw-feed-perf:nth-child(2) { animation-delay: 0.15s; }
.iw-feed-perf:nth-child(3) { animation-delay: 0.3s; }
.iw-feed-perf:nth-child(4) { animation-delay: 0.45s; }

@keyframes iwFeedTick {
  0%, 100% { opacity: 0.2; transform: scale(0.9); }
  50% { opacity: 0.8; transform: scale(1.15); background: var(--iw-gold); }
}

.iw-zine-loading-ticker {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 13.5px;
  color: var(--iw-gold);
  letter-spacing: 3px;
  transition: opacity 0.18s ease;
  min-height: 20px;
}

/* ---------------- 游嬉加载态：复古卡带磁带滚轮与芯片烧录（街机工控风） ---------------- */
.iw-arcade-loading {
  min-height: 420px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(circle at 50% 20%, var(--iw-cool-2) 0%, var(--iw-cool-0) 80%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.2);
  border-radius: 4px;
  box-shadow: 0 0 30px rgba(var(--iw-rgb-black), 0.8), inset 0 0 40px rgba(var(--iw-rgb-black), 0.7);
}

.iw-arcade-loading-inner {
  text-align: center;
  padding: 0 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* 芯片管脚小标头 */
.iw-arcade-loading-chip {
  display: flex;
  align-items: center;
  gap: 7px;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.4);
  margin-bottom: 22px;
}

.iw-chip-pin {
  width: 6px;
  height: 6px;
  background: var(--iw-gold);
  border-radius: 1px;
  box-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.6);
  animation: iwChipPulse 1.4s ease-in-out infinite;
}

@keyframes iwChipPulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

.iw-chip-state {
  color: var(--iw-gold);
  padding: 1px 5px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  border-radius: 2px;
}

/* 双磁带滚轮机槽 */
.iw-arcade-loading-deck {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-bottom: 22px;
  padding: 14px 20px;
  background: rgba(var(--iw-rgb-inset), 0.4);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  box-shadow: inset 0 2px 6px rgba(var(--iw-rgb-black), 0.6);
}

.iw-tape-spool {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 2px dashed rgba(var(--iw-rgb-gold), 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  animation: iwSpoolSpin 2.6s linear infinite;
}

.iw-tape-spool.is-right {
  animation-duration: 2.6s;
}

@keyframes iwSpoolSpin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.iw-spool-gear {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 1.5px solid rgba(var(--iw-rgb-white), 0.25);
}

.iw-spool-center {
  width: 5px;
  height: 5px;
  background: var(--iw-gold);
  border-radius: 50%;
  position: absolute;
}

/* 磁带连线与脉冲 */
.iw-tape-bridge {
  width: 50px;
  height: 4px;
  position: relative;
  overflow: hidden;
}

.iw-tape-line {
  width: 100%;
  height: 1.5px;
  background: rgba(var(--iw-rgb-white), 0.15);
  margin-top: 1px;
}

.iw-tape-pulse {
  position: absolute;
  top: 0;
  left: -40%;
  width: 40%;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--iw-gold), transparent);
  animation: iwTapeFlow 1.1s linear infinite;
}

@keyframes iwTapeFlow {
  0% { left: -40%; }
  100% { left: 100%; }
}

.iw-arcade-loading-title {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 13px;
  letter-spacing: 5px;
  color: var(--iw-text-bright);
  margin-bottom: 8px;
}

.iw-arcade-loading-sub {
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.42);
  letter-spacing: 0.5px;
  margin-bottom: 14px;
}

.iw-arcade-loading-ticker {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 13.5px;
  color: var(--iw-gold);
  letter-spacing: 2px;
  transition: opacity 0.18s ease;
  min-height: 20px;
}

/* 通用 Zine 卡片基础容器：统一深邃冷黑底色与素净微线 */
.iw-zine-card {
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 14px 14px 15px;
  position: relative;
  transition: border-color 0.2s ease;
}

/* 专栏分类标头（极简等宽，无浮夸彩条） */
.iw-zine-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
  padding-bottom: 7px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.07);
}

.iw-zine-column-tag {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.45);
  text-transform: uppercase;
}

.iw-zine-index {
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.25);
}

/* 标题 */
.iw-zine-title {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--iw-text-0);
  margin-bottom: 7px;
  line-height: 1.45;
  letter-spacing: 0.2px;
}

/* 正文白描 */
.iw-zine-desc {
  font-size: 12px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.65);
}

/* ---------------- 1. 热门 Meme ---------------- */
.iw-meme-frame {
  margin: 10px 0;
  padding: 10px 12px 11px;
  background: rgba(var(--iw-rgb-inset), 0.32);
  border: 1px dashed rgba(var(--iw-rgb-white), 0.12);
  border-radius: 3px;
  position: relative;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: border-color 0.3s ease, background 0.3s ease;
  overflow: hidden;
}

.iw-meme-frame:active {
  background: rgba(var(--iw-rgb-white), 0.03);
}

/* 相机取景四角直角准星 (Reticle Corners) */
.iw-meme-frame::before,
.iw-meme-frame::after {
  content: "";
  position: absolute;
  width: 6px;
  height: 6px;
  pointer-events: none;
  transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.25s ease;
}

/* 左上角准星 */
.iw-meme-frame::before {
  top: 3px;
  left: 3px;
  border-top: 1.5px solid rgba(var(--iw-rgb-white), 0.25);
  border-left: 1.5px solid rgba(var(--iw-rgb-white), 0.25);
}

/* 右下角准星 */
.iw-meme-frame::after {
  bottom: 3px;
  right: 3px;
  border-bottom: 1.5px solid rgba(var(--iw-rgb-white), 0.25);
  border-right: 1.5px solid rgba(var(--iw-rgb-white), 0.25);
}

/* 取景框顶部状态行 */
.iw-meme-frame-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 5px;
}

.iw-meme-frame-tag {
  display: inline-block;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.38);
  transition: color 0.3s ease;
}

.iw-meme-frame-rec {
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.25);
  transition: color 0.3s ease;
}

/* 初始失焦态：文字毛玻璃模糊与微降透明度 */
.iw-meme-frame-text {
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.72);
  line-height: 1.65;
  filter: blur(2.5px);
  opacity: 0.55;
  transition: filter 0.35s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.35s ease, color 0.35s ease;
}

/* 快门光晕覆层 */
.iw-meme-shutter-flash {
  position: absolute;
  inset: 0;
  background: rgba(var(--iw-rgb-white), 0.16);
  pointer-events: none;
  opacity: 0;
}

/* 触发快门瞬时曝光动画 */
.iw-meme-frame.is-snapping .iw-meme-shutter-flash {
  animation: iwShutterFlash 0.32s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes iwShutterFlash {
  0% { opacity: 0.85; }
  100% { opacity: 0; }
}

/* ================= 锁定对焦态（FOCUSED 状态 · 典雅香槟暗金 #e2c48d） ================= */
.iw-meme-frame.is-focused {
  border-color: rgba(var(--iw-rgb-gold), 0.32);
  background: rgba(var(--iw-rgb-gold), 0.03);
}

.iw-meme-frame.is-focused::before {
  transform: translate(2px, 2px);
  border-color: var(--iw-gold);
}

.iw-meme-frame.is-focused::after {
  transform: translate(-2px, -2px);
  border-color: var(--iw-gold);
}

.iw-meme-frame.is-focused .iw-meme-frame-tag {
  color: var(--iw-gold);
}

.iw-meme-frame.is-focused .iw-meme-frame-rec {
  color: rgba(var(--iw-rgb-gold), 0.65);
}

/* 合焦清晰 + 变众生相典雅沉着香槟暗金 */
.iw-meme-frame.is-focused .iw-meme-frame-text {
  filter: blur(0);
  opacity: 0.95;
  color: var(--iw-gold);
}

.iw-meme-flow {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border-radius: 3px;
  margin-bottom: 8px;
  font-size: 10.5px;
}

.iw-meme-flow-label {
  color: rgba(var(--iw-rgb-white), 0.35);
  white-space: nowrap;
}

.iw-meme-flow-orig {
  color: rgba(var(--iw-rgb-white), 0.4);
  text-decoration: line-through;
}

.iw-meme-flow-arrow {
  color: rgba(var(--iw-rgb-white), 0.3);
}

.iw-meme-flow-hit {
  color: rgba(var(--iw-rgb-white), 0.85);
  font-weight: 600;
}

/* 聊天气泡对话切片（左右左 A -> B -> A） */
.iw-meme-chat-feed {
  margin-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 6px 2px;
}

.iw-meme-bubble {
  max-width: 86%;
  padding: 6px 10px;
  font-size: 11px;
  line-height: 1.5;
  word-break: break-word;
  position: relative;
}

/* 左侧气泡 A（搭子 / 抛出话题） */
.iw-meme-bubble.is-left {
  align-self: flex-start;
  background: rgba(var(--iw-rgb-white), 0.04);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 8px 8px 8px 2px;
  color: rgba(var(--iw-rgb-white), 0.72);
}

/* 右侧气泡 B（我 / 核心用梗发疯） */
.iw-meme-bubble.is-right {
  align-self: flex-end;
  background: rgba(var(--iw-rgb-gold), 0.06);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  border-radius: 8px 8px 2px 8px;
  color: var(--iw-gold);
}

/* ---------------- 2. 爆款零食 ---------------- */
.iw-snack-meta-row {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.62);
  line-height: 1.5;
  margin-bottom: 7px;
  padding-bottom: 7px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.08);
}

.iw-snack-selling-k {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  margin-right: 4px;
}

.iw-snack-selling {
  color: rgba(var(--iw-rgb-white), 0.75);
}

.iw-snack-score-wrap {
  display: flex;
  gap: 16px;
  margin: 9px 0 10px;
  padding: 7px 10px;
  background: rgba(var(--iw-rgb-inset), 0.25);
  border-radius: 3px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
}

.iw-snack-score-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 10.5px;
}

.iw-snack-score-label {
  color: rgba(var(--iw-rgb-white), 0.38);
}

.iw-snack-score-val {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.85);
  letter-spacing: 1px;
}

/* 测评一体化收缩扩展卡（去竖线，框体内延展） */
.iw-snack-review-box {
  margin-top: 8px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px dashed rgba(var(--iw-rgb-white), 0.12);
  border-radius: 4px;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: border-color 0.25s ease, background 0.25s ease;
  overflow: hidden;
}

.iw-snack-review-box:active {
  background: rgba(var(--iw-rgb-gold), 0.03);
}

.iw-snack-review-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 10px;
}

.iw-snack-review-label {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 10.5px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.48);
  display: flex;
  align-items: center;
  gap: 6px;
  transition: color 0.25s ease;
}

.iw-snack-review-icon {
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.35);
  transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), color 0.25s ease;
}

/* 测评正文：完全容纳在同一个框体内部向下自然延伸（无横向分割线） */
.iw-snack-review-content {
  display: none;
  padding: 0 10px 10px 10px;
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-gold), 0.9);
  line-height: 1.65;
}

/* 展开态：框线变为柔和暗金，整块卡片一体化 */
.iw-snack-review-box.is-open {
  border-color: rgba(var(--iw-rgb-gold), 0.28);
  background: rgba(var(--iw-rgb-gold), 0.02);
}

.iw-snack-review-box.is-open .iw-snack-review-label {
  color: var(--iw-gold);
}

.iw-snack-review-box.is-open .iw-snack-review-icon {
  transform: rotate(90deg);
  color: var(--iw-gold);
}

.iw-snack-review-box.is-open .iw-snack-review-content {
  display: block;
  animation: iwReviewSlideDown 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes iwReviewSlideDown {
  0% { opacity: 0; transform: translateY(-4px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* ---------------- 3. 潮玩周边（方案 A：微距切片 + 胶囊标签） ---------------- */
.iw-merch-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 6px 0 10px 0;
}

.iw-merch-tag {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.55);
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  padding: 2px 7px;
  border-radius: 2px;
  letter-spacing: 0.3px;
}

.iw-merch-specimen {
  margin: 8px 0;
  padding: 9px 11px;
  background: rgba(var(--iw-rgb-inset), 0.22);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 3px;
  position: relative;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: border-color 0.2s ease, transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
  overflow: visible;
}

.iw-merch-specimen:active,
.iw-merch-specimen.is-squished {
  transform: scale(0.975);
  border-color: rgba(var(--iw-rgb-gold), 0.35);
  background: rgba(var(--iw-rgb-gold), 0.02);
}

.iw-merch-fidget-hint {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.3);
  transition: color 0.2s ease;
}

.iw-merch-specimen:active .iw-merch-fidget-hint,
.iw-merch-specimen.is-squished .iw-merch-fidget-hint {
  color: var(--iw-gold);
}

/* 盘玩解压冒出的极淡香槟金微浮字 */
.iw-merch-fidget-toast {
  position: absolute;
  top: 6px;
  right: 10px;
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  font-weight: 600;
  color: var(--iw-gold);
  pointer-events: none;
  animation: iwFidgetFloat 0.65s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes iwFidgetFloat {
  0% {
    opacity: 0.95;
    transform: translateY(0) scale(0.95);
  }
  100% {
    opacity: 0;
    transform: translateY(-14px) scale(1.05);
  }
}

.iw-merch-specimen-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}

.iw-merch-specimen-tag {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.35);
  display: flex;
  align-items: center;
  gap: 4px;
}

.iw-merch-specimen-tag::before {
  content: "";
  display: inline-block;
  width: 4px;
  height: 4px;
  background: rgba(var(--iw-rgb-gold), 0.5);
  border-radius: 50%;
}

.iw-merch-specimen-desc {
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.72);
  line-height: 1.65;
  letter-spacing: 0.2px;
}

.iw-merch-motive {
  margin-top: 8px;
  padding: 6px 9px;
  background: rgba(var(--iw-rgb-gold), 0.02);
  border-left: 2px solid rgba(var(--iw-rgb-gold), 0.25);
  font-size: 11px;
  color: rgba(var(--iw-rgb-gold), 0.82);
  line-height: 1.55;
  font-style: normal;
}

/* ---------------- 4. 穿搭风尚 ---------------- */
/* 风格核心释义盒（元素/材质说明） */
.iw-fashion-definition {
  margin: 8px 0 10px 0;
  padding: 8px 10px;
  background: rgba(var(--iw-rgb-inset), 0.22);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 3px;
}

.iw-fashion-def-header {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 5px;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.35);
}

.iw-fashion-def-header::before {
  content: "";
  display: inline-block;
  width: 4px;
  height: 4px;
  background: rgba(var(--iw-rgb-gold), 0.5);
  border-radius: 50%;
}

.iw-fashion-def-text {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.68);
  line-height: 1.6;
}

/* 横向滑动穿搭画册容器 */
.iw-fashion-slider-wrap {
  margin: 10px 0 12px 0;
}

.iw-fashion-slider-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.3);
  letter-spacing: 0.5px;
}

.iw-fashion-slider {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 4px;
  scrollbar-width: none;
}

.iw-fashion-slider::-webkit-scrollbar {
  display: none;
}

/* 单套穿搭卡片（横滑项） */
.iw-fashion-look-card {
  flex: 0 0 82%;
  min-width: 0;
  scroll-snap-align: start;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.iw-fashion-look-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.iw-fashion-look-tag {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: var(--iw-gold);
  letter-spacing: 0.5px;
  font-weight: 600;
}

.iw-fashion-look-scene {
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.4);
}

.iw-fashion-look-formula {
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.85);
  line-height: 1.55;
}

.iw-fashion-look-item {
  margin-top: 2px;
  padding-top: 6px;
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  line-height: 1.5;
}

.iw-fashion-look-item-k {
  color: rgba(var(--iw-rgb-white), 0.35);
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  margin-right: 4px;
}

.iw-fashion-origin {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.45);
  line-height: 1.55;
  padding-top: 8px;
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.06);
}

/* ---------------- 5. 现象级作品（多轨弹幕放映舱） ---------------- */
.iw-work-meta-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin: 6px 0 10px 0;
}

.iw-work-tag {
  font-family: "ShareTechMono", monospace;
  padding: 1px 6px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  border-radius: 2px;
  color: rgba(var(--iw-rgb-white), 0.55);
  font-size: 9.5px;
}

.iw-work-trigger {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.15);
  padding: 1px 6px;
  border-radius: 2px;
}

/* 弹幕荧幕舱（直播式垂直顶升流） */
.iw-danmaku-screen {
  margin-top: 10px;
  background: rgba(var(--iw-rgb-inset), 0.35);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 8px 10px;
  position: relative;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
  transition: border-color 0.25s ease;
}

.iw-danmaku-screen:active {
  border-color: rgba(var(--iw-rgb-gold), 0.3);
}

.iw-danmaku-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 7px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.06);
  padding-bottom: 5px;
}

.iw-danmaku-title {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 0.5px;
}

.iw-danmaku-btn {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: var(--iw-gold);
  letter-spacing: 0.5px;
  display: flex;
  align-items: center;
  gap: 3px;
  transition: transform 0.15s ease;
}

.iw-danmaku-screen:active .iw-danmaku-btn {
  transform: scale(0.95);
}

/* 直播弹幕顶流视窗（固定高度，顶部微弱羽化渐隐） */
.iw-danmaku-feed-viewport {
  position: relative;
  height: 56px;
  overflow: hidden;
  mask-image: linear-gradient(to bottom, transparent 0%, black 14%, black 100%);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 14%, black 100%);
}

.iw-danmaku-feed-list {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 56px;
  gap: 5px;
}

.iw-danmaku-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.65);
  line-height: 1.45;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  animation: iwDanmakuSlideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.iw-danmaku-item.is-highlight {
  color: rgba(var(--iw-rgb-gold), 0.92);
}

.iw-danmaku-item-svg {
  flex-shrink: 0;
  width: 10px;
  height: 10px;
  color: rgba(var(--iw-rgb-white), 0.3);
}

.iw-danmaku-item.is-highlight .iw-danmaku-item-svg {
  color: var(--iw-gold);
}

@keyframes iwDanmakuSlideUp {
  0% {
    opacity: 0;
    transform: translateY(10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ---------------- 6. 生活仪式 ---------------- */
.iw-ritual-header-right {
  display: flex;
  align-items: center;
  gap: 8px;
}

.iw-ritual-fav-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  color: rgba(var(--iw-rgb-white), 0.35);
  transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1), color 0.2s ease;
}

.iw-ritual-fav-btn:active {
  transform: scale(0.85);
}

.iw-ritual-fav-btn.is-active {
  color: var(--iw-gold);
  transform: scale(1.08);
}

.iw-ritual-fav-btn svg {
  width: 14px;
  height: 14px;
  pointer-events: none;
  transition: fill 0.2s ease, stroke 0.2s ease;
}

/* 虚实心心飘散粒子 */
.iw-ritual-burst-heart {
  position: absolute;
  pointer-events: none;
  user-select: none;
  animation: iwHeartFloat 0.75s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes iwHeartFloat {
  0% {
    opacity: 0.95;
    transform: translate(0, 0) scale(0.6);
  }
  50% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
    transform: translate(var(--dx, 0px), var(--dy, -28px)) scale(1.15);
  }
}
.iw-ritual-scene-tag {
  display: inline-block;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  padding: 1px 7px;
  border-radius: 2px;
  margin: 4px 0 10px 0;
  letter-spacing: 0.3px;
}

.iw-ritual-details {
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.78);
  line-height: 1.65;
  margin-bottom: 10px;
}

.iw-ritual-origin {
  margin-top: 12px;
  padding: 8px 2px 2px 2px;
  background: transparent;
  border: none;
  border-top: 3px double rgba(var(--iw-rgb-gold), 0.28);
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.58);
  line-height: 1.6;
}

.iw-ritual-origin-header {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 5px;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 0.8px;
  color: var(--iw-gold);
}

.iw-ritual-origin-header::before {
  content: "§";
  font-size: 10px;
  color: rgba(var(--iw-rgb-gold), 0.6);
}

/* ---------------- 7. 好物分享（购物小票 Receipt 风格） ---------------- */
.iw-receipt-wrap {
  margin-top: 8px;
  background: rgba(var(--iw-rgb-inset), 0.28);
  border: 1px dashed rgba(var(--iw-rgb-white), 0.12);
  border-radius: 4px;
  padding: 10px 12px;
  position: relative;
}

.iw-receipt-top-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 0.8px;
  padding-bottom: 6px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.08);
}

.iw-receipt-category {
  display: inline-block;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.15);
  padding: 1px 6px;
  border-radius: 2px;
  margin: 8px 0 6px 0;
}

.iw-receipt-item-title {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--iw-text-0);
  letter-spacing: 0.3px;
  margin-bottom: 6px;
}

.iw-receipt-pain-row {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.62);
  line-height: 1.5;
  padding: 5px 0 8px 0;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.08);
}

.iw-receipt-pain-k {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  margin-right: 4px;
}

/* 小票买家秀评价区 */
.iw-receipt-review {
  margin-top: 8px;
  padding: 8px 0 6px 0;
}

.iw-receipt-review-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 5px;
  font-size: 10px;
}

.iw-receipt-buyer {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
}

.iw-receipt-stars {
  font-family: "ShareTechMono", monospace;
  color: var(--iw-gold);
  letter-spacing: 2px;
  font-size: 11px;
}

.iw-receipt-review-body {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.72);
  line-height: 1.6;
}

/* 小票封底条形码（激光扫码结算交互） */
.iw-receipt-barcode-wrap {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  position: relative;
}

.iw-receipt-barcode {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  margin: 0;
  font-family: "ShareTechMono", monospace;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: 0;
  color: rgba(var(--iw-rgb-white), 0.38);
  transform: scaleY(1.05);
  white-space: nowrap;
  user-select: none;
  overflow: hidden;
  transition: color 0.3s ease;
}

.iw-receipt-barcode-wrap.is-scanned .iw-receipt-barcode {
  color: rgba(var(--iw-rgb-gold), 0.75);
}

/* 激光扫描线（Laser Beam） */
.iw-receipt-laser {
  position: absolute;
  top: 0;
  bottom: 0;
  left: -10px;
  width: 2px;
  background: var(--iw-gold);
  box-shadow: 0 0 8px var(--iw-gold), 0 0 16px rgba(var(--iw-rgb-gold), 0.8);
  pointer-events: none;
  opacity: 0;
}

.iw-receipt-barcode-wrap.is-scanning .iw-receipt-laser {
  animation: iwLaserScan 0.5s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

@keyframes iwLaserScan {
  0% {
    left: -5%;
    opacity: 0.95;
  }
  90% {
    opacity: 0.95;
  }
  100% {
    left: 105%;
    opacity: 0;
  }
}

.iw-receipt-barcode-sub {
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.35);
  transition: color 0.3s ease;
}

.iw-receipt-barcode-wrap.is-scanned .iw-receipt-barcode-sub {
  color: var(--iw-gold);
}

.iw-receipt-barcode-sub {
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.25);
}

/* 媒介就绪/待印刷空态提示 */
.iw-empty-state {
  text-align: center;
  padding: 36px 16px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px dashed rgba(var(--iw-rgb-white), 0.1);
  border-radius: 4px;
}

.iw-empty-icon {
  font-size: 32px;
  margin-bottom: 12px;
  opacity: 0.6;
}

.iw-empty-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--iw-text-1);
  margin-bottom: 6px;
}

.iw-empty-desc {
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.4);
  line-height: 1.5;
  max-width: 280px;
  margin: 0 auto;
}

/* ========================================================
   4. 游嬉（THE ARCADE / 浮生游嬉机）专属质感
   ======================================================== */

.iw-arcade-layout {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* --- 游嬉主机卡槽面板（CONSOLE CARTRIDGE BAY） --- */
.iw-arcade-console {
  background: var(--iw-cart-shell);  /* v748：游嬉机壳跟卡带同族，日间不发黄 */
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  padding: 10px 14px 12px 14px;
  position: relative;
  box-shadow: 
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08),
    0 4px 16px rgba(var(--iw-rgb-black), 0.5);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* 主机顶栏状态行 */
.iw-console-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: "ShareTechMono", monospace;
}

.iw-console-brand {
  display: flex;
  align-items: center;
  gap: 7px;
}

/* 电源指示灯微光 */
.iw-console-pwr-led {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--iw-gold);
  box-shadow: 0 0 6px var(--iw-gold);
  animation: iwConsolePwrBreath 2.4s infinite ease-in-out;
}

@keyframes iwConsolePwrBreath {
  0%, 100% { opacity: 0.45; }
  50% { opacity: 1; box-shadow: 0 0 8px var(--iw-gold), 0 0 12px rgba(var(--iw-rgb-gold), 0.5); }
}

.iw-console-model {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 1.2px;
  color: rgba(var(--iw-rgb-white), 0.55);
}

.iw-console-status {
  font-size: 8px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  background: rgba(var(--iw-rgb-gold), 0.06);
  padding: 2px 6px;
  border-radius: 2px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.18);
}

/* 核心：物理插卡槽（CARTRIDGE SLOT） */
.iw-console-slot-wrap {
  width: 100%;
}

.iw-console-slot {
  position: relative;
  background: var(--iw-cart-slot);  /* v748：卡带插槽凹陷，日间为浅灰凹槽 */
  border: 1px solid rgba(var(--iw-rgb-black), 0.9);
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 8px 12px;
  box-shadow: 
    inset 0 3px 6px rgba(var(--iw-rgb-black), 0.9),
    inset 0 0 1px rgba(var(--iw-rgb-black), 1);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* 卡槽内部微弱的金手指导轨暗纹 */
.iw-console-slot-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

.iw-console-slot-guide {
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 2px;
  color: rgba(var(--iw-rgb-white), 0.22);
  transition: color 0.2s ease;
}

/* 卡槽右上角防反插机械限位凸起/倒角指示 */
.iw-console-slot-notch {
  position: absolute;
  top: 0;
  right: 0;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 10px 10px 0;
  border-color: transparent rgba(var(--iw-rgb-gold), 0.2) transparent transparent;
  pointer-events: none;
}

.iw-arcade-console:hover .iw-console-slot-guide {
  color: rgba(var(--iw-rgb-gold), 0.5);
}

/* --- 游嬉大厅卡带展台（实体掌机/GB 工业卡带美学） --- */
.iw-arcade-deck {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.iw-deck-cartridge {
  position: relative;
  background: var(--iw-cart-shell);  /* v747：卡带壳专用令牌，日间单独降黄 */
  border-radius: 6px;
  padding: 10px 10px 12px 10px;
  cursor: pointer;
  user-select: none;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  /* 现代硬件切角：右上角真切角 (14px) */
  clip-path: polygon(
    0 0,
    calc(100% - 14px) 0,
    100% 14px,
    100% 100%,
    0 100%
  );
  box-shadow: 
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.07),
    0 4px 16px rgba(var(--iw-rgb-black), 0.45);
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1),
              filter 0.2s ease,
              box-shadow 0.2s ease;
}

/* 用伪元素配合同样的 clip-path 实现真正的外边框高亮（支持右上角斜边亮线） */
.iw-deck-cartridge::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg, rgba(var(--iw-rgb-white), 0.15) 0%, rgba(var(--iw-rgb-gold), 0.1) 40%, rgba(var(--iw-rgb-white), 0.04) 100%);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  clip-path: inherit;
  transition: background 0.2s ease;
}

/* 顶部防滑咬合横槽（Gripper Ribs） */
.iw-cart-grip {
  display: flex;
  flex-direction: column;
  gap: 3px;
  margin-bottom: 9px;
  padding-left: 2px;
  padding-right: 14px; /* 右侧留出切角空隙，不顶住切角 */
}

.iw-cart-grip span {
  display: block;
  height: 2px;
  width: 100%;
  background: rgba(var(--iw-rgb-black), 0.7);
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 1px;
}

/* 卡带中央贴纸（Label Sticker）内凹凹槽质感 */
.iw-cart-label {
  background: linear-gradient(180deg, var(--iw-cart-label-top) 0%, var(--iw-cart-label-bot) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.14);
  border-radius: 4px;
  padding: 10px 9px 9px 9px;
  display: flex;
  flex-direction: column;
  position: relative;
  box-shadow: inset 0 1px 3px rgba(var(--iw-rgb-black), 0.6);
  transition: border-color 0.2s ease, background 0.2s ease;
}

/* 贴纸头部：极简编号与微型图标 */
.iw-cart-label-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.iw-cart-rom-id {
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-gold), 0.65);
  font-weight: 600;
}

.iw-cart-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(var(--iw-rgb-gold), 0.75);
  transition: transform 0.2s ease, color 0.2s ease;
}

/* 贴纸文字：大标题与极简副标 */
.iw-cart-title {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--iw-paper-2);
  letter-spacing: 0.5px;
  line-height: 1.2;
  margin-bottom: 3px;
}

.iw-cart-sub {
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 0.6px;
  text-transform: uppercase;
}

/* 悬停微动效：卡带拔插浮起 */
.iw-deck-cartridge:hover,
.iw-deck-cartridge:active {
  transform: translateY(-3px);
  border-color: rgba(var(--iw-rgb-gold), 0.28);
  box-shadow: 
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.12),
    0 8px 20px rgba(var(--iw-rgb-black), 0.5),
    0 0 12px rgba(var(--iw-rgb-gold), 0.08);
}

.iw-deck-cartridge:hover .iw-cart-label {
  border-color: rgba(var(--iw-rgb-gold), 0.3);
  background: linear-gradient(180deg, var(--iw-cart-label-top-hv) 0%, var(--iw-cart-label-bot-hv) 100%);
}

.iw-deck-cartridge:hover .iw-cart-icon {
  color: var(--iw-gold);
  transform: scale(1.08);
}

/* --- 游戏大厅（ROM.03 / Arcade Hub）：一排三个竖向卡块网格 --- */
.iw-game-hub-container {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.iw-game-hub-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.iw-game-tile {
  background: linear-gradient(155deg, rgba(var(--iw-rgb-white), 0.04) 0%, rgba(var(--iw-rgb-gold), 0.015) 30%, rgba(var(--iw-rgb-cool-1), 0.94) 100%);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 16px 8px 14px 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  cursor: pointer;
  position: relative;
  user-select: none;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  box-sizing: border-box;
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-white), 0.06), 0 3px 10px rgba(var(--iw-rgb-black), 0.3);
  -webkit-tap-highlight-color: transparent;
}

.iw-game-tile:hover,
.iw-game-tile:active {
  background: linear-gradient(155deg, rgba(var(--iw-rgb-white), 0.07) 0%, rgba(var(--iw-rgb-gold), 0.04) 35%, rgba(var(--iw-rgb-cool-2), 0.96) 100%);
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  transform: translateY(-2px);
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-white), 0.14), 0 6px 14px rgba(var(--iw-rgb-black), 0.4), 0 0 12px rgba(var(--iw-rgb-gold), 0.12);
}

.iw-game-tile-icon {
  width: 38px;
  height: 38px;
  border-radius: 4px;
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.2);
  color: var(--iw-gold);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  flex-shrink: 0;
}

.iw-game-tile:hover .iw-game-tile-icon,
.iw-game-tile:active .iw-game-tile-icon {
  background: rgba(var(--iw-rgb-gold), 0.14);
  border-color: rgba(var(--iw-rgb-gold), 0.5);
  box-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.25);
  transform: scale(1.06);
}

.iw-game-tile-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  text-align: center;
  width: 100%;
}

.iw-game-tile-name {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--iw-text-bright);
  letter-spacing: 0.5px;
  line-height: 1.3;
}

.iw-game-tile-sub {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  letter-spacing: 1px;
  text-transform: uppercase;
}

/* 占位卡带：敬请期待（虚线微光科技感） */
.iw-game-tile.iw-game-tile-placeholder {
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  background: linear-gradient(155deg, rgba(var(--iw-rgb-white), 0.02) 0%, rgba(var(--iw-rgb-cool-1), 0.8) 100%);
  opacity: 0.75;
}

.iw-game-tile.iw-game-tile-placeholder:hover,
.iw-game-tile.iw-game-tile-placeholder:active {
  border-color: rgba(var(--iw-rgb-gold), 0.5);
  opacity: 1;
  background: linear-gradient(155deg, rgba(var(--iw-rgb-gold), 0.04) 0%, rgba(var(--iw-rgb-cool-2), 0.92) 100%);
}

.iw-game-tile.iw-game-tile-placeholder .iw-game-tile-icon {
  background: rgba(var(--iw-rgb-gold), 0.03);
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  color: rgba(var(--iw-rgb-gold), 0.7);
}

/* ====================================================
   2048 街机机台界面（纯前端引擎 + 换皮装配点）
   ==================================================== */
.iw-2048-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  width: 100%;
  max-width: 380px;
  margin: 0 auto;
  user-select: none;
  touch-action: none;
}

/* 顶部状态与分数栏 */
.iw-2048-header {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.iw-2048-title-group {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.iw-2048-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.iw-2048-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 1px;
}

.iw-2048-subtitle {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  letter-spacing: 1px;
}

/* 顶部副标下方的极简重构推演按钮 */
.iw-2048-regen-link {
  background: transparent;
  border: none;
  padding: 0;
  margin-top: 2px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.38);
  cursor: pointer;
  user-select: none;
  transition: all 0.15s ease;
  line-height: 1;
}

.iw-2048-regen-icon {
  font-size: 11px;
  display: inline-block;
  transition: transform 0.25s ease;
  color: rgba(var(--iw-rgb-gold), 0.6);
}

.iw-2048-regen-link:hover {
  color: var(--iw-gold);
}

.iw-2048-regen-link:hover .iw-2048-regen-icon {
  transform: rotate(180deg);
  color: var(--iw-gold);
}

.iw-2048-regen-link:active {
  transform: scale(0.96);
}

.iw-2048-scores {
  display: flex;
  gap: 6px;
}

.iw-2048-score-box {
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 4px 10px;
  min-width: 52px;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.iw-2048-score-box.is-best {
  border-color: rgba(var(--iw-rgb-gold), 0.2);
  background: rgba(var(--iw-rgb-gold), 0.03);
}

.iw-2048-score-lbl {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 8.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
  letter-spacing: 0.8px;
}

.iw-2048-score-box.is-best .iw-2048-score-lbl {
  color: rgba(var(--iw-rgb-gold), 0.6);
}

.iw-2048-score-val {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 14px;
  font-weight: 700;
  color: var(--iw-text-bright);
}

.iw-2048-score-box.is-best .iw-2048-score-val {
  color: var(--iw-gold);
}

/* 控制条（合成表查询 + 重开） */
.iw-2048-toolbar {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.iw-2048-hint {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  display: flex;
  align-items: center;
  gap: 4px;
}

.iw-2048-btn-group {
  display: flex;
  gap: 12px;
}

.iw-2048-btn {
  background: transparent;
  border: none;
  padding: 4px 6px;
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  display: flex;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  transition: all 0.15s ease;
  user-select: none;
}

.iw-2048-btn:hover,
.iw-2048-btn:active {
  background: transparent;
  color: var(--iw-gold);
}

/* 结算弹窗里的操作按钮保持胶囊块状 */
.iw-2048-overlay-btns .iw-2048-btn {
  background: rgba(var(--iw-rgb-white), 0.05);
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 4px;
  padding: 6px 14px;
  color: rgba(var(--iw-rgb-white), 0.85);
  cursor: pointer;
  pointer-events: auto;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.iw-2048-overlay-btns .iw-2048-btn:hover,
.iw-2048-overlay-btns .iw-2048-btn:active {
  background: rgba(var(--iw-rgb-gold), 0.12);
  border-color: rgba(var(--iw-rgb-gold), 0.35);
  color: var(--iw-gold);
}

/* 4×4 棋盘网格容器 */
.iw-2048-board-wrapper {
  width: 100%;
  aspect-ratio: 1 / 1;
  background: rgba(var(--iw-rgb-cool-1), 0.95);
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  border-radius: 6px;
  padding: 10px;
  position: relative;
  box-sizing: border-box;
  box-shadow: inset 0 2px 10px rgba(var(--iw-rgb-black), 0.6);
}

.iw-2048-grid {
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(4, 1fr);
  gap: 8px;
}

/* 格子背景位（空位） */
.iw-2048-cell-bg {
  background: rgba(var(--iw-rgb-white), 0.025);
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
  border-radius: 4px;
}

/* 动态实体方块（数字/词缀） */
.iw-2048-tile {
  width: 100%;
  height: 100%;
  border-radius: 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  transition: transform 0.08s ease-out, background-color 0.12s ease;
  box-shadow: 0 2px 6px rgba(var(--iw-rgb-black), 0.35);
  position: relative;
  overflow: hidden;
  box-sizing: border-box;
}

.iw-2048-tile-text {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 21px;
  line-height: 1;
  letter-spacing: -0.5px;
}

/* 字体自适应：字数多时自动微调 */
.iw-2048-tile-text.is-len-3 { font-size: 16px; }
.iw-2048-tile-text.is-len-4 { font-size: 13px; }
.iw-2048-tile-text.is-len-gt4 { font-size: 11px; }

/* 诞生与合并微弹跳动画 */
@keyframes iw2048Spawn {
  0% { transform: scale(0.35); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}
@keyframes iw2048Merge {
  0% { transform: scale(1); }
  50% { transform: scale(1.15); filter: brightness(1.25); }
  100% { transform: scale(1); }
}

.iw-2048-tile.is-new {
  animation: iw2048Spawn 0.14s cubic-bezier(0.18, 0.89, 0.32, 1.28) forwards;
}

.iw-2048-tile.is-merged {
  animation: iw2048Merge 0.16s cubic-bezier(0.18, 0.89, 0.32, 1.28) forwards;
}

/* 游戏结束 / 通关遮罩 */
.iw-2048-overlay {
  position: absolute;
  inset: 0;
  background: rgba(var(--iw-rgb-cool-0), 0.88);
  backdrop-filter: blur(4px);
  border-radius: 6px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  z-index: 50;
  pointer-events: auto;
  animation: iwFadeIn 0.25s ease;
  padding: 20px;
  text-align: center;
}

.iw-2048-overlay-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 1px;
}

.iw-2048-overlay-subtitle {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  letter-spacing: 1.5px;
  margin-top: -6px;
  font-family: "ShareTechMono", "SF Mono", monospace;
}

.iw-2048-overlay-desc {
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.55);
  line-height: 1.5;
}

.iw-2048-overlay-btns {
  display: flex;
  gap: 10px;
  margin-top: 6px;
}

/* 长文案弹窗（开局 narrative / 通关 winText）：允许内部滚动，不撑爆棋盘 */
.iw-2048-overlay.is-scroll {
  justify-content: flex-start;
  overflow-y: auto;
  padding: 24px 18px;
}

.iw-2048-overlay.is-scroll .iw-2048-overlay-desc {
  text-align: left;
  font-size: 12.5px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.72);
}

/* 皮肤生成加载态：香槟金旋转环 */
.iw-2048-skin-loading-spin {
  width: 32px;
  height: 32px;
  border: 2.5px solid rgba(var(--iw-rgb-gold), 0.15);
  border-top-color: var(--iw-gold);
  border-radius: 50%;
  animation: iw2048Spin 0.8s linear infinite;
}

@keyframes iw2048Spin {
  to { transform: rotate(360deg); }
}

/* 合成表底部旧按钮样式（已精简移除） */

/* ====================================================
   扫雷（MINES SWEEPER）独立游戏机台样式
   ==================================================== */
.iw-mines-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  width: 100%;
  max-width: 380px;
  margin: 0 auto;
  user-select: none;
}

.iw-mines-header {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.iw-mines-title-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.iw-mines-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.iw-mines-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 1px;
}

.iw-mines-subtitle {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  letter-spacing: 1px;
}

.iw-mines-regen-link {
  background: transparent;
  border: none;
  padding: 0;
  margin-top: 2px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.38);
  cursor: pointer;
  user-select: none;
  transition: all 0.15s ease;
  line-height: 1;
}

.iw-mines-regen-icon {
  font-size: 11px;
  display: inline-block;
  transition: transform 0.25s ease;
  color: rgba(var(--iw-rgb-gold), 0.6);
}

.iw-mines-regen-link:hover {
  color: var(--iw-gold);
}

.iw-mines-regen-link:hover .iw-mines-regen-icon {
  transform: rotate(180deg);
  color: var(--iw-gold);
}

/* 顶部状态仪（剩余雷数 + 计时） */
.iw-mines-status-strip {
  display: flex;
  align-items: center;
  gap: 6px;
}

.iw-mines-counter-box {
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 4px 8px;
  min-width: 46px;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.iw-mines-counter-box.is-time {
  border-color: rgba(var(--iw-rgb-gold), 0.18);
}

.iw-mines-counter-lbl {
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 0.6px;
}

.iw-mines-counter-val {
  font-family: "ShareTechMono", monospace;
  font-size: 13px;
  font-weight: 700;
  color: var(--iw-gold);
}

/* 控制条（操作模式大切换 + 右侧操作组） */
.iw-mines-toolbar {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.iw-mines-mode-toggle {
  display: flex;
  background: rgba(var(--iw-rgb-white), 0.04);
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  border-radius: 6px;
  padding: 3px;
  gap: 3px;
}

.iw-mines-mode-btn {
  background: transparent;
  border: none;
  outline: none;
  color: rgba(var(--iw-rgb-white), 0.45);
  font-size: 11.5px;
  font-weight: 600;
  padding: 6px 14px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
  transition: all 0.16s ease;
  user-select: none;
}

.iw-mines-mode-btn.is-active {
  background: rgba(var(--iw-rgb-gold), 0.18);
  color: var(--iw-gold);
  box-shadow: inset 0 0 8px rgba(var(--iw-rgb-gold), 0.12);
}

.iw-mines-btn-group {
  display: flex;
  align-items: center;
  gap: 8px;
}

.iw-mines-btn {
  background: transparent;
  border: none;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.45);
  cursor: pointer;
  padding: 4px 6px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: color 0.15s ease;
  user-select: none;
}

.iw-mines-btn:hover,
.iw-mines-btn:active {
  color: var(--iw-gold);
}

/* 扫雷棋盘矩阵宿主（自适应宽高比） */
.iw-mines-board-wrapper {
  width: 100%;
  aspect-ratio: 1 / 1;
  background: rgba(var(--iw-rgb-cool-1), 0.95);
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  border-radius: 6px;
  padding: 8px;
  position: relative;
  box-sizing: border-box;
  box-shadow: inset 0 2px 10px rgba(var(--iw-rgb-black), 0.6);
  touch-action: manipulation;
}

.iw-mines-grid {
  width: 100%;
  height: 100%;
  display: grid;
  gap: 4px;
}

/* 扫雷格子 */
.iw-mines-cell {
  background: rgba(var(--iw-rgb-white), 0.06);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  user-select: none;
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-weight: 700;
  font-size: 13.5px;
  transition: background 0.12s ease, transform 0.08s ease;
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08);
}

.iw-mines-cell:active {
  transform: scale(0.96);
}

/* 格子状态 */
.iw-mines-cell.is-revealed {
  background: rgba(var(--iw-rgb-inset), 0.45);
  border-color: rgba(var(--iw-rgb-white), 0.03);
  box-shadow: inset 0 1px 3px rgba(var(--iw-rgb-black), 0.6);
  cursor: default;
}

.iw-mines-cell.is-flagged {
  background: rgba(var(--iw-rgb-gold), 0.08);
  border-color: rgba(var(--iw-rgb-gold), 0.3);
}

.iw-mines-flag-sym {
  color: var(--iw-gold);
  font-size: 13px;
  animation: iwFlagPop 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes iwFlagPop {
  from { transform: scale(0.4); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}

.iw-mines-cell.is-mine {
  background: rgba(255, 80, 80, 0.12);
  border-color: rgba(255, 80, 80, 0.25);
}

.iw-mines-cell.is-mine-hit {
  background: rgba(255, 60, 60, 0.35);
  border-color: #ff4d4d;
  box-shadow: 0 0 12px rgba(255, 77, 77, 0.4);
}

.iw-mines-mine-sym {
  color: #ff5e5e;
  font-size: 14px;
}

/* 扫雷数字高雅色谱（冷色到暖金梯度，契合 Skynex 质感） */
.iw-mines-cell.is-num-1 .iw-mines-num-text { color: var(--iw-state-info); }
.iw-mines-cell.is-num-2 .iw-mines-num-text { color: #78c996; }
.iw-mines-cell.is-num-3 .iw-mines-num-text { color: var(--iw-gold); }
.iw-mines-cell.is-num-4 .iw-mines-num-text { color: #e8a278; }
.iw-mines-cell.is-num-5 .iw-mines-num-text { color: #e87878; }
.iw-mines-cell.is-num-6 .iw-mines-num-text { color: #6ee7b7; }
.iw-mines-cell.is-num-7 .iw-mines-num-text { color: var(--iw-state-magic); }
.iw-mines-cell.is-num-8 .iw-mines-num-text { color: #f43f5e; }

.iw-mines-bottom-tip {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  letter-spacing: 0.3px;
}

.iw-mines-lvl-tag {
  color: inherit;
  font-family: inherit;
  font-weight: normal;
  letter-spacing: inherit;
}

.iw-mines-tip-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
}

/* ====================================================
   记忆翻牌（MEMORY MATCH）机台专有样式
   ==================================================== */
.iw-memory-container {
  width: 100%;
  max-width: 360px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 14px;
  user-select: none;
}

.iw-memory-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.iw-memory-title-group {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.iw-memory-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.iw-memory-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 0.5px;
}

.iw-memory-subtitle {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 11px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  letter-spacing: 1px;
}

.iw-memory-regen-link {
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  align-self: flex-start;
  transition: color 0.15s ease;
  user-select: none;
}

.iw-memory-regen-link:hover,
.iw-memory-regen-link:active {
  color: var(--iw-gold);
}

.iw-memory-regen-icon {
  font-size: 11px;
  display: inline-block;
  transition: transform 0.3s ease;
}

.iw-memory-regen-link:hover .iw-memory-regen-icon {
  transform: rotate(180deg);
}

.iw-memory-status-strip {
  display: flex;
  align-items: center;
  gap: 6px;
}

.iw-memory-counter-box {
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  padding: 4px 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 52px;
}

.iw-memory-counter-lbl {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 8.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
  letter-spacing: 0.8px;
}

.iw-memory-counter-num {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 13px;
  font-weight: 700;
  color: var(--iw-text-bright);
  transition: color 0.2s ease;
}

.iw-memory-counter-num.is-warning {
  color: #ff5e5e;
  animation: iwPulse 1s infinite alternate;
}

@keyframes iwPulse {
  from { transform: scale(1); }
  to { transform: scale(1.08); }
}

.iw-memory-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.iw-memory-tool-btn {
  background: transparent;
  border: none;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.45);
  cursor: pointer;
  padding: 4px 6px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: color 0.15s ease;
  user-select: none;
}

.iw-memory-tool-btn:hover,
.iw-memory-tool-btn:active {
  color: var(--iw-gold);
}

/* 卡牌网格与宿主 */
.iw-memory-board-wrapper {
  position: relative;
  background: var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 10px;
  padding: 10px;
  box-shadow: inset 0 2px 8px rgba(var(--iw-rgb-black), 0.6);
  min-height: 280px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.iw-memory-grid {
  width: 100%;
  display: grid;
  gap: 8px;
  perspective: 1000px;
}

/* 卡牌本体与 3D 翻转 */
.iw-memory-card {
  aspect-ratio: 1 / 1.18;
  cursor: pointer;
  user-select: none;
  perspective: 800px;
}

.iw-memory-card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  text-align: center;
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  transform-style: preserve-3d;
  border-radius: 6px;
}

.iw-memory-card.is-flipped .iw-memory-card-inner,
.iw-memory-card.is-matched .iw-memory-card-inner {
  transform: rotateY(180deg);
}

/* 卡牌背面（暗金属质感 + 微暗印） */
.iw-memory-card-back,
.iw-memory-card-front {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.iw-memory-card-back {
  background: var(--iw-cool-3);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  box-shadow: 0 2px 5px rgba(var(--iw-rgb-black), 0.3);
  transition: border-color 0.15s ease, background 0.15s ease;
}

.iw-memory-card:not(.is-flipped):not(.is-matched):hover .iw-memory-card-back,
.iw-memory-card:not(.is-flipped):not(.is-matched):active .iw-memory-card-back {
  background: var(--iw-cool-4);
  border-color: rgba(var(--iw-rgb-gold), 0.25);
}

.iw-memory-back-sigil {
  font-size: 14px;
  color: rgba(var(--iw-rgb-white), 0.18);
  font-family: "ShareTechMono", monospace;
}

/* 卡牌正面（翻开：柔亮底板 + 金色矢量图腾） */
.iw-memory-card-front {
  background: rgba(var(--iw-rgb-gold), 0.12);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  transform: rotateY(180deg);
  box-shadow: 0 4px 12px rgba(var(--iw-rgb-black), 0.35);
}

/* 配对成功高亮点亮态 */
.iw-memory-card.is-matched .iw-memory-card-front {
  background: rgba(var(--iw-rgb-gold), 0.22);
  border-color: var(--iw-gold);
  box-shadow: 0 0 14px rgba(var(--iw-rgb-gold), 0.35);
}

.iw-memory-sym-icon {
  width: 55%;
  height: 55%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--iw-gold);
}

.iw-memory-sym-icon svg {
  width: 100%;
  height: 100%;
}

.iw-memory-bottom-tip {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  letter-spacing: 0.3px;
}

.iw-memory-lvl-tag {
  color: inherit;
  font-family: inherit;
  font-weight: normal;
  letter-spacing: inherit;
}

.iw-memory-tip-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
}
.iw-2048-recipe-mask {
  position: fixed;
  inset: 0;
  background: rgba(var(--iw-rgb-black), 0.72);
  backdrop-filter: blur(6px);
  z-index: 1000;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  animation: iwFadeIn 0.2s ease;
}

.iw-2048-recipe-sheet {
  width: 100%;
  max-width: 440px;
  background: var(--iw-cool-2);
  border-top: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 12px 12px 0 0;
  padding: 20px 18px 28px 18px;
  box-sizing: border-box;
  max-height: 75vh;
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-shadow: 0 -8px 32px rgba(var(--iw-rgb-black), 0.6);
  animation: iwSlideUp 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.iw-2048-recipe-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.08);
  padding-bottom: 12px;
}

.iw-2048-recipe-title {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 15px;
  font-weight: 600;
  color: var(--iw-text-bright);
  display: flex;
  align-items: center;
  gap: 8px;
}

.iw-2048-recipe-close {
  background: transparent;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.4);
  cursor: pointer;
  padding: 4px;
  display: flex;
  align-items: center;
  transition: color 0.15s;
}

.iw-2048-recipe-close:hover {
  color: var(--iw-text-bright);
}

.iw-2048-recipe-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow-y: auto;
  padding-right: 4px;
}

.iw-2048-recipe-item {
  display: flex;
  align-items: center;
  gap: 12px;
  background: rgba(var(--iw-rgb-white), 0.025);
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
  border-radius: 4px;
  padding: 6px 12px;
}

.iw-2048-recipe-badge {
  width: 52px;
  height: 36px;
  flex-shrink: 0;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: -0.5px;
  box-shadow: 0 1px 4px rgba(var(--iw-rgb-black), 0.3);
}

.iw-2048-recipe-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1;
}

.iw-2048-recipe-name {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 14px;
  font-weight: 600;
  color: var(--iw-text-0b);
  letter-spacing: 0.5px;
}

.iw-2048-recipe-desc {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 10px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  letter-spacing: 0.5px;
}

/* --- 游嬉二级卡带机顶操作栏（HUD Console Bar） --- */
.iw-arcade-subnav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: var(--iw-cart-shell);  /* v748：二级页操作栏与机壳同色 */
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  padding: 10px 14px;
  position: relative;
  box-shadow: 
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08),
    0 4px 14px rgba(var(--iw-rgb-black), 0.45);
  box-sizing: border-box;
}

/* 顶部香槟金流光微线 */
.iw-arcade-subnav::before {
  content: "";
  position: absolute;
  top: 0;
  left: 10px;
  right: 10px;
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, rgba(var(--iw-rgb-gold), 0.35) 50%, transparent 100%);
  pointer-events: none;
}

/* 左侧：实体退弹按键（EJECT KEY） */
.iw-subnav-back {
  background: rgba(var(--iw-rgb-gold), 0.06);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  border-radius: 4px;
  color: var(--iw-gold);
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 11.5px;
  font-weight: 500;
  cursor: pointer;
  padding: 5px 10px;
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08);
  transition: all 0.15s ease;
  user-select: none;
}

.iw-subnav-back:hover {
  background: rgba(var(--iw-rgb-gold), 0.12);
  border-color: rgba(var(--iw-rgb-gold), 0.4);
  color: var(--iw-text-bright);
}

.iw-subnav-back:active {
  transform: translateY(1px);
  background: rgba(var(--iw-rgb-gold), 0.18);
  box-shadow: inset 0 1px 2px rgba(var(--iw-rgb-black), 0.6);
}

/* 右侧：纯静态硬件铭牌（无呼吸灯，克制静止） */
.iw-subnav-state {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  background: rgba(var(--iw-rgb-inset), 0.45);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 4px 8px;
  box-shadow: inset 0 1px 2px rgba(var(--iw-rgb-black), 0.5);
}

.iw-subnav-code {
  color: rgba(var(--iw-rgb-white), 0.65);
  letter-spacing: 0.8px;
  font-weight: 600;
}

.iw-subnav-dot {
  color: rgba(var(--iw-rgb-white), 0.2);
  font-size: 7px;
}

.iw-subnav-live {
  color: rgba(var(--iw-rgb-gold), 0.75);
  letter-spacing: 0.5px;
}

/* --- 视口卡片通用底板 --- */
.iw-quiz-header-card,
.iw-quiz-stage-card,
.iw-theater-stage-card {
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.07);
  border-radius: 4px;
  padding: 14px;
  position: relative;
}

/* --- 趣味测试视口样式 --- */
.iw-quiz-header-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  margin-bottom: 8px;
}

.iw-quiz-tag {
  color: rgba(var(--iw-rgb-white), 0.4);
  letter-spacing: 0.8px;
}

.iw-quiz-stamp {
  color: var(--iw-gold);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
  padding: 1px 6px;
  border-radius: 2px;
  background: rgba(var(--iw-rgb-gold), 0.05);
}

.iw-quiz-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--iw-text-bright);
  line-height: 1.4;
  margin-bottom: 12px;
}

.iw-quiz-sub {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.45);
  line-height: 1.5;
  margin-bottom: 12px;
}

.iw-quiz-progress-track {
  background: transparent;
  border: none;
  padding: 0;
  margin-top: 4px;
}

.iw-quiz-progress-bar {
  width: 100%;
  height: 4px;
  background: rgba(var(--iw-rgb-white), 0.08);
  border-radius: 2px;
  overflow: hidden;
  margin-bottom: 8px;
}

.iw-quiz-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.6) 0%, var(--iw-gold) 100%);
  border-radius: 2px;
  box-shadow: 0 0 8px rgba(var(--iw-rgb-gold), 0.5);
  transition: width 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.iw-quiz-progress-label {
  display: flex;
  justify-content: space-between;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 1px;
}

.iw-quiz-progress-num {
  color: var(--iw-gold);
}

/* 题目台 */
.iw-quiz-stage-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.iw-quiz-q-num {
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  color: var(--iw-gold);
  letter-spacing: 1px;
}

.iw-quiz-pager {
  display: flex;
  align-items: center;
  gap: 4px;
}

.iw-pager-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  background: transparent !important;
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 3px;
  color: rgba(var(--iw-rgb-white), 0.6);
  cursor: pointer;
  padding: 0;
  transition: all 0.16s ease;
  -webkit-tap-highlight-color: transparent;
}

.iw-pager-btn:hover,
.iw-pager-btn:active {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  color: var(--iw-gold);
}

.iw-pager-btn.is-disabled {
  opacity: 0.25;
  cursor: default;
  border-color: rgba(var(--iw-rgb-white), 0.06);
  pointer-events: none;
}

.iw-quiz-q-text {
  font-size: 13.5px;
  line-height: 1.65;
  color: rgba(var(--iw-rgb-white), 0.9);
  margin-bottom: 14px;
}

/* 压感选项按键 */
.iw-quiz-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.iw-quiz-opt {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  background: rgba(var(--iw-rgb-white), 0.015);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 4px;
  padding: 10px 12px;
  cursor: pointer;
  transition: all 0.16s ease;
  user-select: none;
}

.iw-quiz-opt:active {
  background: rgba(var(--iw-rgb-gold), 0.05);
  border-color: rgba(var(--iw-rgb-gold), 0.4);
  transform: translateY(1px);
}

/* 选中高亮态 */
.iw-quiz-opt.is-selected {
  background: rgba(var(--iw-rgb-gold), 0.08);
  border-color: rgba(var(--iw-rgb-gold), 0.55);
  box-shadow: 0 0 12px rgba(var(--iw-rgb-gold), 0.08);
}

.iw-quiz-opt.is-selected .iw-quiz-opt-key {
  background: var(--iw-gold);
  color: var(--iw-on-gold);
  font-weight: 700;
  box-shadow: 0 0 8px rgba(var(--iw-rgb-gold), 0.6);
}

.iw-quiz-opt.is-selected .iw-quiz-opt-title {
  color: var(--iw-gold);
}

/* --- 结局结算卡样式（无任何灵魂切片字眼，利落透性质感） --- */
.iw-quiz-result-card {
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.28);
  border-radius: 4px;
  padding: 16px 14px;
  position: relative;
  box-shadow: 0 0 20px rgba(var(--iw-rgb-gold), 0.04);
}

.iw-quiz-result-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.08);
}

.iw-result-badge {
  font-family: inherit;
  font-size: 11px;
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  padding: 1px 6px;
  border-radius: 2px;
  letter-spacing: 0.5px;
}

.iw-result-head-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.iw-result-id {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 1px;
}

.iw-result-hero {
  text-align: center;
  padding: 8px 0 14px 0;
}

.iw-result-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 1px;
  margin-bottom: 6px;
  text-shadow: 0 0 14px rgba(var(--iw-rgb-gold), 0.35);
}

.iw-result-one-liner {
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.5);
  font-style: italic;
  line-height: 1.4;
}

.iw-result-tags {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  margin-bottom: 14px;
}

.iw-result-tag {
  font-family: inherit;
  font-size: 10px;
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.18);
  padding: 2px 8px;
  border-radius: 12px;
}

.iw-result-desc {
  font-size: 12.5px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.85);
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 4px;
  padding: 12px;
}

.iw-quiz-opt-key {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  font-weight: 700;
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.08);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.2);
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 2px;
  flex-shrink: 0;
  margin-top: 1px;
}

.iw-quiz-opt-body {
  flex: 1;
}

.iw-quiz-opt-title {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--iw-text-bright);
  line-height: 1.4;
  margin-bottom: 2px;
}

.iw-quiz-opt-desc {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.45);
  line-height: 1.5;
}

/* 底部双操作功能按键（重新作答 + 换一套新测试） */
.iw-quiz-action-bar {
  display: grid;
  grid-template-columns: 1fr 1.35fr;
  gap: 8px;
  margin-top: 2px;
}

.iw-quiz-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 38px;
  border-radius: 4px;
  font-size: 12px;
  font-family: inherit;
  font-weight: 500;
  cursor: pointer;
  user-select: none;
  transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1);
  -webkit-tap-highlight-color: transparent;
}

.iw-quiz-btn.is-secondary {
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.09);
  color: rgba(var(--iw-rgb-white), 0.7);
}

.iw-quiz-btn.is-secondary:active {
  background: rgba(var(--iw-rgb-white), 0.06);
  border-color: rgba(var(--iw-rgb-white), 0.18);
  color: var(--iw-text-bright);
  transform: translateY(1px);
}

.iw-quiz-btn.is-primary {
  background: rgba(var(--iw-rgb-gold), 0.08);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.32);
  color: var(--iw-gold);
  box-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.05);
}

.iw-quiz-btn.is-primary:active {
  background: rgba(var(--iw-rgb-gold), 0.16);
  border-color: rgba(var(--iw-rgb-gold), 0.55);
  color: var(--iw-text-bright);
  box-shadow: 0 0 14px rgba(var(--iw-rgb-gold), 0.2);
  transform: translateY(1px);
}

/* --- 空态题卷卡（Blank Cartridge / 待打捞状态，对齐众生相与风靡的古典工坊质感） --- */
.iw-quiz-blank-card {
  background: rgba(var(--iw-rgb-white), 0.015);
  border: 1px dashed rgba(var(--iw-rgb-white), 0.12);
  border-radius: 4px;
  padding: 16px 18px 26px;
  position: relative;
}

.iw-quiz-blank-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  padding-bottom: 12px;
  margin-bottom: 22px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.06);
}

.iw-quiz-blank-code {
  color: rgba(var(--iw-rgb-white), 0.35);
  letter-spacing: 0.8px;
}

.iw-quiz-blank-badge {
  color: var(--iw-gold);
  opacity: 0.75;
  letter-spacing: 0.5px;
}

.iw-quiz-blank-main {
  text-align: center;
  padding: 4px 8px 8px;
}

.iw-quiz-blank-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--iw-text-bright);
  letter-spacing: 1.2px;
  margin-bottom: 8px;
}

.iw-quiz-blank-epigraph {
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 12px;
  color: rgba(var(--iw-rgb-gold), 0.75);
  letter-spacing: 0.6px;
  font-style: italic;
  margin-bottom: 14px;
}

.iw-quiz-blank-desc {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.3);
  letter-spacing: 0.4px;
}

/* 独立框外长排通栏控制台（对齐众生相 console 质感） */
.iw-quiz-blank-console {
  margin-top: 2px;
  width: 100%;
  box-sizing: border-box;
}

.iw-quiz-blank-btn {
  width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 11px 14px;
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  border-radius: 4px;
  color: var(--iw-gold);
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}

.iw-quiz-blank-btn:hover {
  background: rgba(var(--iw-rgb-gold), 0.09);
  border-color: rgba(var(--iw-rgb-gold), 0.38);
  box-shadow: 0 0 12px rgba(var(--iw-rgb-gold), 0.08);
}

.iw-quiz-blank-btn:active {
  background: rgba(var(--iw-rgb-gold), 0.14);
  border-color: rgba(var(--iw-rgb-gold), 0.5);
  transform: translateY(1px);
}

.iw-blank-btn-text {
  display: flex;
  align-items: center;
  gap: 8px;
}

.iw-blank-btn-spark {
  color: var(--iw-gold);
  font-size: 12px;
  line-height: 1;
}

.iw-blank-btn-label {
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: 0.5px;
}

.iw-blank-btn-action {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  letter-spacing: 0.8px;
  opacity: 0.8;
}

/* --- 怪奇剧场视口样式 --- */
.iw-theater-act-strip {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.07);
}

.iw-theater-act-badge {
  background: rgba(var(--iw-rgb-gold), 0.12);
  color: var(--iw-gold);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  padding: 1px 6px;
  border-radius: 2px;
  font-weight: 700;
}

.iw-theater-act-title {
  color: var(--iw-text-bright);
  font-size: 11px;
  letter-spacing: 0.5px;
}

.iw-theater-scene-tag {
  margin-left: auto;
  color: rgba(var(--iw-rgb-white), 0.3);
}

.iw-theater-script-box {
  background: rgba(var(--iw-rgb-inset), 0.25);
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
  border-radius: 3px;
  padding: 10px 12px;
}

.iw-theater-role-line {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 6px;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
}

.iw-theater-role-badge {
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.06);
  padding: 1px 4px;
  border-radius: 2px;
}

.iw-theater-role-name {
  color: rgba(var(--iw-rgb-white), 0.7);
}

.iw-theater-narrative {
  font-size: 13px;
  line-height: 1.75;
  color: rgba(var(--iw-rgb-white), 0.85);
  letter-spacing: 0.2px;
}

.iw-theater-decision-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.iw-theater-fork-title {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: var(--iw-gold);
  letter-spacing: 1px;
  opacity: 0.85;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0 2px;
}

.iw-theater-forks {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.iw-theater-fork-card {
  background: rgba(var(--iw-rgb-white), 0.015);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 4px;
  padding: 11px 12px;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  position: relative;
  user-select: none;
}

.iw-theater-fork-card:active {
  transform: translateY(1px);
}

.iw-theater-fork-card.is-branch-a:hover,
.iw-theater-fork-card.is-branch-a:active {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  background: rgba(var(--iw-rgb-gold), 0.04);
}

.iw-theater-fork-card.is-branch-b:hover,
.iw-theater-fork-card.is-branch-b:active {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  background: rgba(var(--iw-rgb-gold), 0.04);
}

.iw-theater-fork-head {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 4px;
}

.iw-fork-symbol {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  font-weight: 700;
  color: var(--iw-gold);
  letter-spacing: 0.5px;
  opacity: 0.9;
}

.iw-fork-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--iw-text-bright);
}

.iw-theater-fork-desc {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.55);
  line-height: 1.5;
}

/* --- 怪奇剧场专属通栏长排控制台按键 --- */
.iw-theater-console {
  margin-top: 14px;
  width: 100%;
}

.iw-theater-switch-btn {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  border-radius: 4px;
  padding: 12px 14px;
  cursor: pointer;
  outline: none;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}

.iw-theater-switch-btn:hover {
  background: rgba(var(--iw-rgb-gold), 0.04);
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  box-shadow: 0 0 14px rgba(var(--iw-rgb-gold), 0.12);
}

.iw-theater-switch-btn:active {
  transform: translateY(1px);
  background: rgba(var(--iw-rgb-gold), 0.06);
  border-color: rgba(var(--iw-rgb-gold), 0.6);
}

.iw-theater-btn-left {
  display: flex;
  align-items: center;
  gap: 8px;
}

.iw-theater-btn-spark {
  color: var(--iw-gold);
  font-size: 12px;
  line-height: 1;
  text-shadow: 0 0 8px rgba(var(--iw-rgb-gold), 0.5);
}

.iw-theater-btn-label {
  font-family: "Noto Serif SC", "Songti SC", "SimSun", serif;
  font-size: 13px;
  font-weight: 600;
  color: var(--iw-gold);
  letter-spacing: 1px;
}

.iw-theater-btn-right {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  letter-spacing: 1.2px;
  transition: all 0.2s ease;
}

.iw-theater-switch-btn:hover .iw-theater-btn-right {
  color: var(--iw-gold);
}

.iw-theater-btn-arrow {
  color: var(--iw-gold);
  transition: transform 0.2s ease;
}

.iw-theater-switch-btn:hover .iw-theater-btn-arrow {
  transform: translateX(3px);
}

/* --- 怪奇剧场：终幕落幕卡片与谢幕专属质感 --- */
.iw-theater-result-card {
  background: linear-gradient(180deg, rgba(var(--iw-rgb-gold), 0.04) 0%, rgba(var(--iw-rgb-cool-2), 0.98) 35%, rgba(var(--iw-rgb-cool-1), 0.98) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.28);
  border-radius: 4px;
  padding: 16px 14px 18px;
  position: relative;
  box-shadow: 
    inset 0 1px 0 rgba(var(--iw-rgb-gold), 0.2),
    0 10px 24px rgba(var(--iw-rgb-black), 0.45);
}

.iw-theater-result-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--iw-gold) 20%, var(--iw-gold) 80%, transparent);
}

.iw-theater-result-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.15);
}

.iw-theater-result-badge {
  color: var(--iw-gold);
  letter-spacing: 1.2px;
  font-weight: 600;
  opacity: 0.85;
}

.iw-theater-result-code {
  color: rgba(var(--iw-rgb-gold), 0.6);
  letter-spacing: 1.2px;
}

.iw-theater-result-hero {
  text-align: center;
  margin: 10px 0 6px;
}

.iw-theater-result-title {
  font-family: "Noto Serif SC", "Songti SC", "SimSun", serif;
  font-size: 21px;
  font-weight: 700;
  color: var(--iw-paper-0);
  letter-spacing: 3px;
  text-shadow: 0 0 16px rgba(var(--iw-rgb-gold), 0.35);
}

.iw-theater-result-epigraph {
  font-family: "Noto Serif SC", "Songti SC", "SimSun", serif;
  font-size: 11.5px;
  font-style: italic;
  color: rgba(var(--iw-rgb-gold), 0.52);
  text-align: center;
  margin: 6px auto 18px auto;
  line-height: 1.75;
  letter-spacing: 0.8px;
  max-width: 92%;
}

.iw-theater-result-narrative {
  font-size: 12.5px;
  line-height: 1.9;
  color: rgba(var(--iw-rgb-white), 0.85);
  letter-spacing: 0.4px;
  text-align: justify;
  text-indent: 2em;
  padding: 0 4px;
}

/* 结局页双按键组 */
.iw-theater-action-group {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 14px;
}

.iw-theater-switch-btn.is-replay {
  border-color: rgba(var(--iw-rgb-white), 0.12);
}

.iw-theater-switch-btn.is-replay:hover {
  border-color: rgba(var(--iw-rgb-gold), 0.35);
}

/* =========================================================================
   机台 04：贪吃蛇（SNAKE CORRIDOR）一屏自适应与纵深暗调网格
   ========================================================================= */

/* 页面容器：防滑动外溢 */
.iw-snake-page {
  overflow: hidden !important;
  touch-action: none;
}

.iw-snake-container {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  box-sizing: border-box;
  padding: 0 4px;
}

/* 顶部紧凑标题与控制栏（整合一行） */
.iw-snake-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  flex-shrink: 0;
  gap: 8px;
}

.iw-snake-title-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}

.iw-snake-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.iw-snake-title {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.8px;
  color: var(--iw-text-bright);
  font-family: inherit;
  line-height: 1.1;
}

.iw-snake-subtitle {
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  font-family: monospace;
}

/* 紧随标题下方的微型操作行：剧情 + 重构推演 + 暂停 + 重置 */
.iw-snake-subactions-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 1px;
}

.iw-snake-regen-link {
  background: none;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.42);
  font-size: 10.5px;
  cursor: pointer;
  padding: 1px 0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  width: fit-content;
  user-select: none;
}

.iw-snake-regen-link:hover,
.iw-snake-regen-link:active {
  color: var(--iw-gold);
}

.iw-snake-regen-icon {
  font-size: 11px;
}

.iw-snake-tool-btn {
  background: none;
  border: none;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  cursor: pointer;
  padding: 1px 3px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  user-select: none;
}

.iw-snake-tool-btn:hover,
.iw-snake-tool-btn:active {
  color: var(--iw-gold);
}

/* 状态仪：SCORE & BEST */
.iw-snake-status-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.iw-snake-counter-box {
  background: var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  padding: 2px 7px;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 44px;
  box-shadow: inset 0 1px 3px rgba(var(--iw-rgb-black), 0.5);
}

.iw-snake-counter-lbl {
  font-size: 8.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.4);
  font-family: monospace;
}

.iw-snake-counter-num {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: monospace;
  line-height: 1.15;
}

/* 核心一屏自适应棋盘宿主 (14 列 x 18 行，纵横比 14/18) */
.iw-snake-board-wrapper {
  position: relative;
  background: var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 10px;
  padding: 5px;
  box-shadow: inset 0 2px 10px rgba(var(--iw-rgb-black), 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;

  /* 宽度自适应，最大填满机台容器 */
  width: 100%;
  /* 严格锁定 14:18 黄金竖屏比例 */
  aspect-ratio: 14 / 18;
  /* 高度自适应：给顶部和底部的横排大按键留足安全余量，保证 100% 同屏无滚动 */
  max-height: calc(100svh - 225px);
  margin: 0 auto;
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
}

/* 横向一排大实体方向按键：◀ ▲ ▼ ▶ */
.iw-snake-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 8px;
  flex-shrink: 0;
  user-select: none;
  -webkit-user-select: none;
  touch-action: manipulation;
  width: 100%;
}

.iw-snake-hpad {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  width: 100%;
  max-width: 320px;
}

.iw-snake-btn {
  height: 44px;
  background: var(--iw-cool-3);
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 8px;
  color: rgba(var(--iw-rgb-white), 0.78);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-white), 0.06), 0 3px 6px rgba(var(--iw-rgb-black), 0.45);
  transition: background 0.08s ease, color 0.08s ease, transform 0.05s ease;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.iw-snake-btn:active {
  background: var(--iw-cool-4);
  color: var(--iw-gold);
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  transform: scale(0.95);
  box-shadow: inset 0 2px 4px rgba(var(--iw-rgb-black), 0.7);
}

/* 14 列 x 18 行 CSS Grid */
.iw-snake-grid {
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: repeat(14, 1fr);
  grid-template-rows: repeat(18, 1fr);
  gap: 2px;
  box-sizing: border-box;
}

/* 棋盘格元基底 */
.iw-snake-cell {
  position: relative;
  background: rgba(var(--iw-rgb-white), 0.02);
  border-radius: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* 蛇头 */
.iw-snake-cell.is-head {
  background: transparent;
}

.iw-snake-head-dot {
  width: 90%;
  height: 90%;
  background: linear-gradient(135deg, var(--iw-gold-pale) 0%, #d4ab65 100%);
  border-radius: 4px;
  box-shadow: 0 0 8px rgba(var(--iw-rgb-gold), 0.6);
  position: relative;
}

/* 蛇身段 */
.iw-snake-cell.is-body {
  background: transparent;
}

.iw-snake-body-segment {
  width: 82%;
  height: 82%;
  background: #c39b56;
  border-radius: 3px;
  transition: opacity 0.1s ease;
}

/* 陨落状态 */
.iw-snake-cell.is-head.is-dead .iw-snake-head-dot,
.iw-snake-cell.is-body.is-dead .iw-snake-body-segment {
  background: rgba(255, 80, 80, 0.7);
  box-shadow: 0 0 6px rgba(255, 60, 60, 0.5);
}

/* 食物点（灵珠） */
.iw-snake-cell.is-food {
  background: transparent;
}

.iw-snake-food-dot {
  width: 70%;
  height: 70%;
  background: #7bd492;
  border-radius: 50%;
  box-shadow: 0 0 8px rgba(123, 212, 146, 0.8), inset 0 0 2px #fff;
  animation: iwSnakePulseFood 1.2s ease-in-out infinite alternate;
}

@keyframes iwSnakePulseFood {
  0% { transform: scale(0.85); box-shadow: 0 0 4px rgba(123, 212, 146, 0.5); }
  100% { transform: scale(1.1); box-shadow: 0 0 10px rgba(123, 212, 146, 0.95); }
}

/* 底部状态说明条 */
.iw-snake-bottom-tip {
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 6px;
  flex-shrink: 0;
  letter-spacing: 0.3px;
}
.iw-snake-name-tag {
  color: inherit;
  font-family: inherit;
}
.iw-snake-tip-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
}

/* =========================================================================
   机台 05：见缝插针（AA PIN）一屏自适应与纯前端极简同心圆盘舞台
   ========================================================================= */
/* 页面容器：防滑动外溢 */
.iw-pin-page {
  overflow: hidden !important;
  touch-action: none;
}
.iw-pin-container {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  box-sizing: border-box;
  padding: 0 4px;
}
/* 顶部紧凑标题与控制栏（整合一行） */
.iw-pin-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  flex-shrink: 0;
  gap: 8px;
}
.iw-pin-title-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}
.iw-pin-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.iw-pin-title {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.8px;
  color: var(--iw-text-bright);
  font-family: inherit;
  line-height: 1.1;
}
.iw-pin-subtitle {
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  font-family: monospace;
}
/* 紧随标题下方的微型操作行：剧情 + 重构推演 + 重置 */
.iw-pin-subactions-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 1px;
}
.iw-pin-regen-link {
  background: none;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.42);
  font-size: 10.5px;
  cursor: pointer;
  padding: 1px 0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  width: fit-content;
  user-select: none;
}
.iw-pin-regen-link:hover,
.iw-pin-regen-link:active {
  color: var(--iw-gold);
}
.iw-pin-regen-icon {
  font-size: 11px;
}
.iw-pin-tool-btn {
  background: none;
  border: none;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  cursor: pointer;
  padding: 1px 3px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  user-select: none;
}
.iw-pin-tool-btn:hover,
.iw-pin-tool-btn:active {
  color: var(--iw-gold);
}

/* 状态仪：STAGE & PINS */
.iw-pin-status-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.iw-pin-counter-box {
  background: var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  padding: 2px 7px;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 44px;
  box-shadow: inset 0 1px 3px rgba(var(--iw-rgb-black), 0.5);
}
.iw-pin-counter-lbl {
  font-size: 8.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.4);
  font-family: monospace;
}
.iw-pin-counter-num {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: monospace;
  line-height: 1.15;
}

/* 核心一屏自适应画布容器 (竖长比例，受控于视口限高) */
.iw-pin-board-wrapper {
  position: relative;
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 12px;
  box-sizing: border-box;
  width: 100%;
  aspect-ratio: 14 / 18;
  max-height: calc(100svh - 180px);
  margin: 0 auto;
  overflow: hidden;
  box-shadow: inset 0 0 20px rgba(var(--iw-rgb-black), 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
  cursor: pointer;
}
.iw-pin-canvas {
  width: 100%;
  height: 100%;
  display: block;
}

/* 底部状态说明条 */
.iw-pin-bottom-tip {
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 6px;
  flex-shrink: 0;
  letter-spacing: 0.3px;
}
.iw-pin-name-tag {
  color: inherit;
  font-family: inherit;
}
.iw-pin-tip-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
}

/* =========================================================================
   机台 06：连连看（LINK LINK）一屏正方形自适应与纯矢量微光网格
   ========================================================================= */
/* 页面容器：防滑动外溢 */
.iw-link-page {
  overflow: hidden !important;
  touch-action: none;
}
.iw-link-container {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  box-sizing: border-box;
  padding: 0 4px;
}
/* 顶部紧凑标题与控制栏（整合一行） */
.iw-link-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  flex-shrink: 0;
  gap: 8px;
}
.iw-link-title-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}
.iw-link-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.iw-link-title {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.8px;
  color: var(--iw-text-bright);
  font-family: inherit;
  line-height: 1.1;
}
.iw-link-subtitle {
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  font-family: monospace;
}

/* 独立完整功能操作栏：单独成排，居左对齐，宽敞透气防折行挤爆 */
.iw-link-actions-toolbar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 8px;
  padding: 3px 6px;
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
  border-radius: 6px;
  width: 100%;
  box-sizing: border-box;
}

.iw-link-regen-link {
  background: none;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.48);
  font-size: 11px;
  cursor: pointer;
  padding: 2px 4px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: color 0.15s ease;
  width: fit-content;
  user-select: none;
  white-space: nowrap;
}
.iw-link-regen-link:hover,
.iw-link-regen-link:active {
  color: var(--iw-gold);
}
.iw-link-regen-icon {
  font-size: 11.5px;
}

.iw-link-tool-btn {
  background: none;
  border: none;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.55);
  cursor: pointer;
  padding: 2px 4px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: all 0.15s ease;
  user-select: none;
  white-space: nowrap;
}
.iw-link-tool-btn:hover,
.iw-link-tool-btn:active {
  color: var(--iw-gold);
}

/* 状态仪：STAGE & TIME & PAIRS */
.iw-link-status-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.iw-link-counter-box {
  background: var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  padding: 2px 7px;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 44px;
  box-shadow: inset 0 1px 3px rgba(var(--iw-rgb-black), 0.5);
}
.iw-link-counter-lbl {
  font-size: 8.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.4);
  font-family: monospace;
}
.iw-link-counter-num {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: monospace;
  line-height: 1.15;
}

/* 核心一屏 1:1 正方形网格宿主与防溢出设计 */
.iw-link-board-wrapper {
  position: relative;
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 12px;
  box-sizing: border-box;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: calc(100svh - 180px);
  max-width: calc(100svh - 180px);
  margin: 0 auto;
  overflow: hidden;
  box-shadow: inset 0 0 20px rgba(var(--iw-rgb-black), 0.7);
  padding: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
}
.iw-link-grid {
  display: grid;
  width: 100%;
  height: 100%;
  gap: 4px;
}
/* 发光折线层覆盖 */
.iw-link-line-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 5;
}

/* 单个方块单元格 */
.iw-link-cell {
  position: relative;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.1s ease;
}
.iw-link-cell.is-empty {
  cursor: default;
  pointer-events: none;
}
.iw-link-cell:active:not(.is-empty) {
  transform: scale(0.94);
}
.iw-link-tile {
  width: 100%;
  height: 100%;
  background: var(--iw-cool-3);
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  box-shadow: 0 2px 5px rgba(var(--iw-rgb-black), 0.4), inset 0 1px 1px rgba(var(--iw-rgb-white), 0.05);
  transition: all 0.15s ease;
}
.iw-link-cell.is-selected .iw-link-tile {
  border-color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.16);
  box-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.5), inset 0 0 6px rgba(var(--iw-rgb-gold), 0.3);
  transform: scale(0.96);
}
.iw-link-cell.is-hint .iw-link-tile {
  animation: iwLinkHintPulse 0.8s ease-in-out infinite alternate;
  border-color: #7bd492;
}
@keyframes iwLinkHintPulse {
  0% { transform: scale(0.95); box-shadow: 0 0 4px rgba(123, 212, 146, 0.4); }
  100% { transform: scale(1.03); box-shadow: 0 0 12px rgba(123, 212, 146, 0.9); }
}
.iw-link-icon-wrap {
  width: 62%;
  height: 62%;
  color: var(--iw-gold);
  display: flex;
  align-items: center;
  justify-content: center;
}
.iw-link-icon-wrap svg {
  width: 100%;
  height: 100%;
}

/* 底部状态说明条（分两排：第一排层数/规格数据，第二排玩法说明，透气防挤） */
.iw-link-bottom-tip {
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.45);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  margin-top: 8px;
  flex-shrink: 0;
  letter-spacing: 0.3px;
  text-align: center;
  line-height: 1.35;
}
.iw-link-tip-line1 {
  font-size: 11px;
  color: var(--iw-gold);
  font-weight: 500;
  letter-spacing: 0.5px;
}
.iw-link-tip-line2 {
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
}
.iw-link-name-tag {
  color: inherit;
  font-family: inherit;
}
.iw-link-tip-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
}

/* =========================================================================
   机台 07：五子棋（GOBANG）15x15 准星放大镜与对手心声系统样式
   ========================================================================= */
.iw-gobang-page {
  overflow: hidden !important;
  touch-action: none;
}
.iw-gobang-container {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  box-sizing: border-box;
  padding: 0 4px;
}
.iw-gobang-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  flex-shrink: 0;
  gap: 8px;
}
.iw-gobang-title-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}
.iw-gobang-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.iw-gobang-title {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.8px;
  color: var(--iw-text-bright);
  line-height: 1.1;
}
.iw-gobang-subtitle {
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  font-family: monospace;
}
.iw-gobang-status-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.iw-gobang-counter-box {
  background: var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 6px;
  padding: 2px 7px;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 44px;
  box-shadow: inset 0 1px 3px rgba(var(--iw-rgb-black), 0.5);
}
.iw-gobang-counter-lbl {
  font-size: 8.5px;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.4);
  font-family: monospace;
}
.iw-gobang-counter-num {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: monospace;
  line-height: 1.15;
}

/* 独立全宽操作栏 */
.iw-gobang-actions-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
  padding: 3px 6px;
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
  border-radius: 6px;
  width: 100%;
  box-sizing: border-box;
}
.iw-gobang-regen-link {
  background: none;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.48);
  font-size: 11px;
  cursor: pointer;
  padding: 2px 4px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: color 0.15s ease;
  user-select: none;
  white-space: nowrap;
}
.iw-gobang-regen-link:hover,
.iw-gobang-regen-link:active {
  color: var(--iw-gold);
}
.iw-gobang-regen-icon {
  font-size: 11.5px;
}
.iw-gobang-tool-btn {
  background: none;
  border: none;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.55);
  cursor: pointer;
  padding: 2px 4px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: all 0.15s ease;
  user-select: none;
  white-space: nowrap;
}
.iw-gobang-tool-btn:hover,
.iw-gobang-tool-btn:active {
  color: var(--iw-gold);
}

/* 对手状态栏与对弈心声气泡 */
.iw-gobang-rival-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
  padding: 4px 8px;
  background: rgba(var(--iw-rgb-cool-2), 0.7);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 8px;
}
.iw-gobang-rival-avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--iw-cool-1);
  border: 1.5px solid var(--iw-gold);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.3);
}
.iw-gobang-rival-avatar-inner {
  font-size: 12px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: inherit;
}
.iw-gobang-rival-info {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
  gap: 1px;
}
.iw-gobang-rival-name-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.iw-gobang-rival-name {
  font-size: 12px;
  font-weight: 700;
  color: var(--iw-text-bright);
}
.iw-gobang-rival-role {
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-gold), 0.75);
  font-family: monospace;
}
.iw-gobang-rival-quote-bubble {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.75);
  font-style: italic;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: opacity 0.3s ease;
}
.iw-gobang-rival-quote-bubble.is-active {
  opacity: 1;
  color: var(--iw-gold);
}
.iw-gobang-rival-quote-bubble.is-hidden {
  opacity: 0.25;
}

/* 核心一屏 1:1 正方形棋盘宿主 */
.iw-gobang-board-wrapper {
  position: relative;
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 12px;
  box-sizing: border-box;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: calc(100svh - 195px);
  max-width: calc(100svh - 195px);
  margin: 0 auto;
  overflow: hidden;
  box-shadow: inset 0 0 20px rgba(var(--iw-rgb-black), 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
  cursor: pointer;
}
.iw-gobang-canvas {
  width: 100%;
  height: 100%;
  display: block;
}

/* 触控悬浮放大镜微窗 */
.iw-gobang-loupe {
  position: absolute;
  top: 10px;
  left: 10px;
  width: 90px;
  height: 90px;
  border-radius: 50%;
  overflow: hidden;
  border: 2px solid var(--iw-gold);
  box-shadow: 0 4px 14px rgba(var(--iw-rgb-black), 0.8), 0 0 10px rgba(var(--iw-rgb-gold), 0.4);
  pointer-events: none;
  z-index: 10;
  background: var(--iw-cool-2);
}
.iw-gobang-loupe-canvas {
  width: 100%;
  height: 100%;
  display: block;
}
.iw-gobang-loupe-cross {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 12px;
  height: 12px;
  transform: translate(-50%, -50%);
  border: 1.5px dashed rgba(var(--iw-rgb-gold), 0.9);
  border-radius: 50%;
  pointer-events: none;
}

/* 二次确认悬浮浮标 */
.iw-gobang-confirm-pill {
  position: absolute;
  bottom: 12px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(var(--iw-rgb-cool-2), 0.95);
  border: 1px solid var(--iw-gold);
  border-radius: 20px;
  padding: 4px 10px;
  display: flex;
  align-items: center;
  gap: 10px;
  box-shadow: 0 4px 18px rgba(var(--iw-rgb-black), 0.8), 0 0 10px rgba(var(--iw-rgb-gold), 0.45);
  z-index: 30;
  pointer-events: auto;
  touch-action: manipulation;
  animation: iwGobangPillFadeIn 0.15s ease-out;
}
@keyframes iwGobangPillFadeIn {
  from { opacity: 0; transform: translate(-50%, 6px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}
.iw-gobang-pill-label {
  font-size: 11px;
  color: var(--iw-text-bright);
  letter-spacing: 0.5px;
  pointer-events: none;
}
.iw-gobang-pill-btn {
  border: none;
  cursor: pointer;
  border-radius: 14px;
  font-size: 11px;
  font-weight: 700;
  padding: 5px 12px;
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.12s ease;
  pointer-events: auto;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
.iw-gobang-pill-btn.is-ok {
  background: var(--iw-gold);
  color: var(--iw-on-gold);
}
.iw-gobang-pill-btn.is-ok:hover,
.iw-gobang-pill-btn.is-ok:active {
  background: var(--iw-gold-pale);
  transform: scale(1.05);
}
.iw-gobang-pill-btn.is-cancel {
  background: rgba(var(--iw-rgb-white), 0.15);
  color: rgba(var(--iw-rgb-white), 0.7);
  padding: 5px 10px;
}
.iw-gobang-pill-btn.is-cancel:hover,
.iw-gobang-pill-btn.is-cancel:active {
  background: rgba(255, 80, 80, 0.3);
  color: var(--iw-state-danger);
}

/* 底部状态说明条 */
.iw-gobang-bottom-tip {
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 6px;
  flex-shrink: 0;
  letter-spacing: 0.3px;
}
.iw-gobang-name-tag {
  color: inherit;
  font-family: inherit;
}
.iw-gobang-tip-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
}


/* ====================================================
   机台 08：消消乐（ROM.03-H // CRUSH MATCH 3）
   7x7 / 8x8 / 9x9 响应式高精棋盘、微光宝石、特殊光束与赞美飞字
   ==================================================== */
.iw-crush-page {
  padding-bottom: 24px;
}

.iw-crush-container {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  max-width: 500px;
  margin: 0 auto;
}

/* 顶部标题行与右侧状态仪 */
.iw-crush-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}
.iw-crush-title-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.iw-crush-title-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.iw-crush-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 0.5px;
}
.iw-crush-subtitle {
  font-size: 10px;
  color: var(--iw-gold);
  font-family: "ShareTechMono", monospace;
  opacity: 0.85;
}
/* 状态仪条带 */
.iw-crush-status-strip {
  display: flex;
  gap: 6px;
}
.iw-crush-counter-box {
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 3px 8px;
  min-width: 52px;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.iw-crush-counter-lbl {
  font-size: 8.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
  font-family: "ShareTechMono", monospace;
  letter-spacing: 0.5px;
}
.iw-crush-counter-num {
  font-size: 13px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: "ShareTechMono", monospace;
}
/* 紧随标题下方的微型操作行：剧情 + 重构推演 + 重开（对齐贪吃蛇） */
.iw-crush-subactions-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
}
.iw-crush-regen-link {
  background: none;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.42);
  font-size: 10.5px;
  cursor: pointer;
  padding: 1px 0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  user-select: none;
  white-space: nowrap;
}
.iw-crush-regen-link:hover,
.iw-crush-regen-link:active {
  color: var(--iw-gold);
}
.iw-crush-regen-icon {
  font-size: 11.5px;
  display: inline-block;
}
.iw-crush-regen-icon.is-spinning {
  animation: iw-crush-spin 1s linear infinite;
}
@keyframes iw-crush-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
.iw-crush-tool-btn {
  background: none;
  border: none;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.48);
  cursor: pointer;
  padding: 1px 0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  user-select: none;
  white-space: nowrap;
}
.iw-crush-tool-btn:hover,
.iw-crush-tool-btn:active {
  color: var(--iw-gold);
}
/* 关卡目标提示条 */
.iw-crush-target-banner {
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 4px;
  padding: 6px 10px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.iw-crush-target-label {
  font-size: 9.5px;
  font-weight: 700;
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.15);
  padding: 1px 5px;
  border-radius: 2px;
  font-family: "ShareTechMono", monospace;
}
.iw-crush-target-desc {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.85);
}
/* 棋盘正方形宿主与自适应网格 */
.iw-crush-board-wrapper {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: calc(100svh - 225px);
  max-width: calc(100svh - 225px);
  margin: 0 auto;
  background: var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  border-radius: 6px;
  box-shadow: inset 0 0 24px rgba(var(--iw-rgb-black), 0.7);
  padding: 6px;
  box-sizing: border-box;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  touch-action: none;
  user-select: none;
}
.iw-crush-grid {
  display: grid;
  width: 100%;
  height: 100%;
  gap: 4px;
  box-sizing: border-box;
}
/* 棋盘格子与宝石 */
.iw-crush-cell {
  position: relative;
  width: 100%;
  height: 100%;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-sizing: border-box;
  transition: transform 0.15s ease, background 0.15s ease;
  touch-action: none;
}
.iw-crush-cell.is-empty {
  background: transparent;
  border-color: transparent;
  pointer-events: none;
}
.iw-crush-gem-inner {
  width: 78%;
  height: 78%;
  color: var(--gem-color, var(--iw-gold));
  filter: drop-shadow(0 0 5px var(--gem-glow, rgba(var(--iw-rgb-gold), 0.4)));
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.12s ease;
  pointer-events: none;
}
.iw-crush-gem-inner svg {
  width: 100%;
  height: 100%;
}
/* 选中高亮状态 */
.iw-crush-cell.is-selected {
  background: rgba(var(--iw-rgb-gold), 0.16);
  border: 1.5px solid var(--iw-gold);
  box-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.35);
  transform: scale(1.06);
  z-index: 2;
}
/* 无效互换抖动动画 */
.iw-crush-cell.is-swap-invalid {
  animation: iw-crush-shake 0.25s ease-in-out;
}
@keyframes iw-crush-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}
/* 消除爆炸动画 */
.iw-crush-cell.is-clearing {
  animation: iw-crush-pop 0.24s forwards ease-out;
}
@keyframes iw-crush-pop {
  0% { transform: scale(1); opacity: 1; filter: brightness(1); }
  50% { transform: scale(1.28); opacity: 0.9; filter: brightness(2.2); }
  100% { transform: scale(0.2); opacity: 0; filter: brightness(3); }
}
/* 特殊宝石角标与流光 */
.iw-crush-beam-badge,
.iw-crush-bomb-badge,
.iw-crush-sphere-badge {
  position: absolute;
  top: 1px;
  right: 2px;
  font-size: 9px;
  color: var(--iw-gold);
  text-shadow: 0 0 4px var(--iw-shadow-pure);
  pointer-events: none;
}
.iw-crush-cell.is-h-beam .iw-crush-gem-inner,
.iw-crush-cell.is-v-beam .iw-crush-gem-inner {
  animation: iw-crush-beam-pulse 1.4s ease-in-out infinite;
}
@keyframes iw-crush-beam-pulse {
  0%, 100% { transform: scale(1); filter: drop-shadow(0 0 4px var(--gem-glow)); }
  50% { transform: scale(1.08); filter: drop-shadow(0 0 10px #fff); }
}
.iw-crush-cell.is-bomb .iw-crush-gem-inner {
  animation: iw-crush-bomb-pulse 1s ease-in-out infinite;
}
@keyframes iw-crush-bomb-pulse {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(8deg) scale(1.12); filter: drop-shadow(0 0 12px #d96a68); }
}
.iw-crush-cell.is-sphere .iw-crush-gem-inner {
  animation: iw-crush-sphere-spin 3s linear infinite;
}
@keyframes iw-crush-sphere-spin {
  0% { transform: rotate(0deg); filter: drop-shadow(0 0 6px var(--iw-gold)); }
  50% { transform: rotate(180deg); filter: drop-shadow(0 0 10px #5ba39d); }
  100% { transform: rotate(360deg); filter: drop-shadow(0 0 6px var(--iw-gold)); }
}

/* 浮空赞美词投射层（Combo 飞字） */
.iw-crush-praise-layer {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 10;
}
.iw-crush-praise-banner {
  position: absolute;
  font-weight: 900;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-shadow: 0 0 16px rgba(var(--iw-rgb-black), 0.9), 0 0 24px currentColor;
  animation: iw-crush-float-praise 1.1s cubic-bezier(0.18, 0.89, 0.32, 1.28) forwards;
  pointer-events: none;
}
.iw-crush-praise-banner.is-combo1 {
  font-size: 22px;
  color: #5ba39d;
}
.iw-crush-praise-banner.is-combo2 {
  font-size: 27px;
  color: var(--iw-gold);
}
.iw-crush-praise-banner.is-combo3 {
  font-size: 32px;
  color: #d96a68;
}
.iw-crush-praise-banner.is-super {
  font-size: 38px;
  background: linear-gradient(135deg, var(--iw-gold), #d96a68, #9d84bf);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 12px rgba(var(--iw-rgb-gold), 0.7));
}

@keyframes iw-crush-float-praise {
  0% { transform: scale(0.3) translateY(20px); opacity: 0; }
  25% { transform: scale(1.15) translateY(-8px); opacity: 1; }
  65% { transform: scale(1) translateY(-14px); opacity: 1; }
  100% { transform: scale(1.08) translateY(-40px); opacity: 0; }
}

/* 底部状态说明：两排清晰展示 */
.iw-crush-bottom-tip {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.45);
  font-family: "ShareTechMono", monospace;
  padding: 6px 8px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border-radius: 6px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
  margin-top: 4px;
}
.iw-crush-bottom-row-top {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
}
.iw-crush-bottom-row-sub {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
  line-height: 1.35;
  word-break: break-all;
}
.iw-crush-name-tag {
  color: var(--iw-gold);
  font-weight: 700;
  letter-spacing: 0.04em;
}

/* ============================================================
   第九款卡带：堆叠三消（ROM.03-I // TILE MATCH）  —— 严格对齐消消乐 UI 布局
   ============================================================ */

/* 根容器 */
.iw-tile-container {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 2px 12px;
}

/* 顶部标题行与状态仪：严格对齐消消乐 */
.iw-tile-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}

.iw-tile-title-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.iw-tile-title-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
}

.iw-tile-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 0.5px;
}

.iw-tile-subtitle {
  font-size: 10px;
  color: var(--iw-gold);
  font-family: "ShareTechMono", monospace;
  opacity: 0.85;
}

/* 紧随标题下方的微型操作行：剧情 + 重构推演 + 重开（完全对齐消消乐 .iw-crush-subactions-row） */
.iw-tile-subactions-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
}

.iw-tile-regen-link {
  background: none;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.42);
  font-size: 10.5px;
  cursor: pointer;
  padding: 1px 0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  user-select: none;
  white-space: nowrap;
}

.iw-tile-regen-link:hover,
.iw-tile-regen-link:active {
  color: var(--iw-gold);
}

.iw-tile-regen-icon {
  font-size: 11.5px;
  display: inline-block;
}

.iw-tile-regen-icon.is-spinning {
  animation: iw-tile-spin 1s linear infinite;
}

@keyframes iw-tile-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.iw-tile-tool-btn {
  background: none;
  border: none;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.48);
  cursor: pointer;
  padding: 1px 0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: color 0.15s ease;
  user-select: none;
  white-space: nowrap;
}

.iw-tile-tool-btn:hover,
.iw-tile-tool-btn:active {
  color: var(--iw-gold);
}

/* 状态仪条带：完全对齐消消乐小框 .iw-crush-counter-box */
.iw-tile-status-strip {
  display: flex;
  gap: 6px;
}

.iw-tile-counter-box {
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 3px 8px;
  min-width: 52px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.iw-tile-counter-lbl {
  font-size: 8.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
  font-family: "ShareTechMono", monospace;
  letter-spacing: 0.5px;
}

.iw-tile-counter-num {
  font-size: 13px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: "ShareTechMono", monospace;
}

/* 关卡目标提示条：完全对齐消消乐 .iw-crush-target-banner */
.iw-tile-target-banner {
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 4px;
  padding: 6px 10px;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
}

.iw-tile-target-label {
  color: var(--iw-gold);
  font-weight: 700;
  white-space: nowrap;
}

.iw-tile-target-desc {
  color: rgba(var(--iw-rgb-white), 0.6);
}

/* 核心主阵盘活动区（固定正方形视口） */
.iw-tile-board-wrapper {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: 340px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.15);
  border-radius: 10px;
  background: rgba(var(--iw-rgb-cool-0), 0.65);
  box-shadow: inset 0 0 24px rgba(var(--iw-rgb-black), 0.75);
  overflow: hidden;
}

/* 核心卡牌投影画布：固定 320x320 逻辑坐标系（与引擎 boardPx 对齐） */
.iw-tile-arena {
  position: relative;
  width: 320px;
  height: 320px;
  flex: none;
}

/* 实体卡牌 —— 高实体感、不透底、清爽立体麻将质感 */
.iw-tile-card {
  position: absolute;
  border-radius: 8px;
  box-sizing: border-box;
  cursor: pointer;
  transition: transform 0.12s cubic-bezier(0.2, 0, 0.1, 1), filter 0.15s ease, box-shadow 0.15s ease;
  touch-action: manipulation;
  /* 基础立体厚度与投射阴影（即使是底层也有实体边缘） */
  box-shadow: 0 2px 4px rgba(var(--iw-rgb-black), 0.7), 0 1px 0 rgba(var(--iw-rgb-white), 0.08) inset;
}

/* 依据层级赋予逐渐加深的 3D 浮空与多重阴影，一眼分清高低 */
.iw-tile-card.is-layer-0 {
  box-shadow: 0 2px 5px rgba(var(--iw-rgb-black), 0.8), 0 1px 2px rgba(var(--iw-rgb-black), 0.9);
}
.iw-tile-card.is-layer-1 {
  box-shadow: 0 4px 10px rgba(var(--iw-rgb-black), 0.85), 0 2px 4px rgba(var(--iw-rgb-black), 0.9);
}
.iw-tile-card.is-layer-2 {
  box-shadow: 0 6px 14px rgba(var(--iw-rgb-black), 0.9), 0 3px 6px rgba(var(--iw-rgb-black), 0.95);
}
.iw-tile-card.is-layer-3 {
  box-shadow: 0 8px 18px rgba(var(--iw-rgb-black), 0.92), 0 4px 8px rgba(var(--iw-rgb-black), 0.95);
}
.iw-tile-card.is-layer-4 {
  box-shadow: 0 10px 22px rgba(var(--iw-rgb-black), 0.95), 0 5px 10px rgba(var(--iw-rgb-black), 0.95);
}
.iw-tile-card.is-layer-5 {
  box-shadow: 0 12px 26px rgba(var(--iw-rgb-black), 0.98), 0 6px 12px rgba(var(--iw-rgb-black), 0.95);
}
.iw-tile-card.is-layer-6 {
  box-shadow: 0 14px 28px rgba(var(--iw-rgb-black), 0.95), 0 7px 14px rgba(var(--iw-rgb-black), 0.95);
}
.iw-tile-card.is-layer-7 {
  box-shadow: 0 16px 32px rgba(var(--iw-rgb-black), 0.96), 0 8px 16px rgba(var(--iw-rgb-black), 0.96);
}
.iw-tile-card.is-layer-8 {
  box-shadow: 0 18px 36px rgba(var(--iw-rgb-black), 0.98), 0 9px 18px rgba(var(--iw-rgb-black), 0.96);
}
.iw-tile-card.is-layer-9 {
  box-shadow: 0 20px 40px var(--iw-shadow-pure), 0 10px 20px rgba(var(--iw-rgb-black), 0.98);
}
.iw-tile-card.is-layer-10 {
  box-shadow: 0 22px 44px var(--iw-shadow-pure), 0 11px 22px rgba(var(--iw-rgb-black), 0.98);
}
.iw-tile-card.is-layer-11 {
  box-shadow: 0 24px 48px var(--iw-shadow-pure), 0 12px 24px var(--iw-shadow-pure);
}
.iw-tile-card.is-layer-12,
.iw-tile-card.is-layer-13 {
  box-shadow: 0 26px 52px var(--iw-shadow-pure), 0 13px 26px var(--iw-shadow-pure);
}

/* 卡牌本体内部：彻底实心不透底（纯实色 #181a22 底板 + 瓷白亚光微渐变），彻底告别塑料透明膜感 */
.iw-tile-card-inner {
  width: 100%;
  height: 100%;
  border-radius: 8px;
  border: 1.5px solid rgba(var(--iw-rgb-gold), 0.5);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 3px;
  box-sizing: border-box;
  /* 100% 不透明纯实色实体底板，顶部微高光，底部沉底 */
  background: linear-gradient(180deg, var(--iw-cool-4) 0%, var(--iw-cool-3) 100%);
  position: relative;
  overflow: hidden;
}

/* 顶部与四周高精内凹凸切面：模拟实体麻将/木牌质感 */
.iw-tile-card-inner::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 6px;
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.15);
  border-bottom: 1.5px solid rgba(var(--iw-rgb-black), 0.6);
  pointer-events: none;
}

.iw-tile-card-icon {
  width: 58%;
  height: 58%;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 1;
}

.iw-tile-card-icon svg {
  width: 100%;
  height: 100%;
  filter: drop-shadow(0 1px 2px rgba(var(--iw-rgb-black), 0.8));
}

.iw-tile-card-label {
  font-size: 9.5px;
  font-weight: 700;
  margin-top: 1px;
  white-space: nowrap;
  letter-spacing: 0.04em;
  position: relative;
  z-index: 1;
  text-shadow: 0 1px 2px rgba(var(--iw-rgb-black), 0.9);
}

/* 可点击明牌：鲜活明亮、微高光金边 */
.iw-tile-card.is-pickable {
  filter: brightness(1.05);
}

.iw-tile-card.is-pickable .iw-tile-card-inner {
  border-color: rgba(var(--iw-rgb-gold), 0.7);
}

.iw-tile-card.is-pickable:active {
  transform: scale(0.92) translateY(2px);
  box-shadow: 0 2px 4px rgba(var(--iw-rgb-black), 0.9);
}

/* 被压住的暗牌（被遮挡）：深度压暗降调 + 明显暗色覆层，与明牌形成天地之别 */
.iw-tile-card.is-blocked {
  filter: brightness(var(--iw-tm-blocked-bright, 0.38)) grayscale(var(--iw-tm-blocked-gray, 0.45));
  cursor: not-allowed;
}

.iw-tile-card.is-blocked .iw-tile-card-inner {
  border-color: rgba(var(--iw-rgb-white), 0.12) !important;
  background: var(--iw-cool-1);
}

.iw-tile-card-mask {
  position: absolute;
  inset: 0;
  border-radius: 8px;
  background: rgba(var(--iw-rgb-inset), var(--iw-tm-mask-a, 0.45));
  pointer-events: none;
}

.iw-tile-card.is-shaking {
  animation: iw-tile-shake 0.25s ease;
}

@keyframes iw-tile-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-3px); }
  75% { transform: translateX(3px); }
}

/* 移出暂存托盘 */
.iw-tile-stash-tray {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 6px 10px;
  background: rgba(var(--iw-rgb-gold), 0.04);
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 8px;
}

.iw-tile-stash-label {
  font-size: 11px;
  color: var(--iw-gold);
  font-family: monospace;
  margin-right: 2px;
}

/* 底部 7 格神识卡槽 */
.iw-tile-dock-wrapper {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.iw-tile-dock-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 11px;
}

.iw-tile-dock-lbl {
  color: rgba(var(--iw-rgb-white), 0.5);
  letter-spacing: 0.04em;
}

.iw-tile-dock-count {
  color: var(--iw-gold);
  font-family: monospace;
  font-weight: 700;
}

/* 7 格横向排布 */
.iw-tile-dock {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 6px 8px;
  background: rgba(var(--iw-rgb-cool-1), 0.95);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  border-radius: 10px;
  box-shadow: 0 4px 14px rgba(var(--iw-rgb-black), 0.6);
}

.iw-tile-dock-slot {
  width: 40px;
  height: 44px;
  flex: none;
  border-radius: 7px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px dashed rgba(var(--iw-rgb-white), 0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  position: relative;
}

.iw-tile-dock-slot.has-card {
  border-style: solid;
  border-color: transparent;
  background: transparent;
}

/* 卡槽/暂存区内的牌 */
.iw-tile-card.in-dock,
.iw-tile-card.in-stash {
  position: relative;
  animation: iw-tile-dock-in 0.18s cubic-bezier(0.1, 0.9, 0.2, 1);
}

@keyframes iw-tile-dock-in {
  from { transform: scale(0.65) translateY(-8px); opacity: 0.5; }
  to { transform: scale(1) translateY(0); opacity: 1; }
}

/* 三大法宝托盘 */
.iw-tile-props-bar {
  display: flex;
  align-items: center;
  gap: 8px;
}

.iw-tile-prop-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 8px;
  padding: 9px 4px;
  color: var(--iw-text-bright);
  font-size: 12px;
  cursor: pointer;
  position: relative;
  transition: all 0.2s ease;
  user-select: none;
}

.iw-tile-prop-btn:active:not(.is-disabled) {
  background: rgba(var(--iw-rgb-gold), 0.2);
  border-color: var(--iw-gold);
}

.iw-tile-prop-btn.is-disabled {
  opacity: 0.35;
  cursor: not-allowed;
  border-color: rgba(var(--iw-rgb-white), 0.08);
}

.iw-tile-prop-icon {
  font-size: 15px;
  line-height: 1;
}

.iw-tile-prop-name {
  font-size: 12px;
  font-weight: 600;
}

.iw-tile-prop-badge {
  position: absolute;
  top: -5px;
  right: -5px;
  background: var(--iw-gold);
  color: var(--iw-on-gold);
  font-size: 9px;
  font-weight: 800;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 3px rgba(var(--iw-rgb-black), 0.5);
}

/* 底部状态说明条：完全对齐消消乐 .iw-crush-bottom-tip */
.iw-tile-bottom-tip {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding-top: 4px;
}

.iw-tile-bottom-row-top {
  display: flex;
  align-items: center;
  gap: 6px;
}

.iw-tile-name-tag {
  color: var(--iw-gold);
  font-weight: 700;
  letter-spacing: 0.04em;
  font-size: 11px;
}

.iw-tile-bottom-row-sub {
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  background: rgba(var(--iw-rgb-white), 0.02);
  padding: 2px 8px;
  border-radius: 4px;
  letter-spacing: 0.02em;
}

/* ============================================================
   第十款卡带：汉诺塔（ROM.03-J // HANOI TOWER）  —— 对齐堆叠三消 UI 语言
   ============================================================ */

/* 根容器 */
.iw-hanoi-container {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 2px 12px;
}

/* 顶部标题行与状态仪 */
.iw-hanoi-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}

.iw-hanoi-title-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
}

.iw-hanoi-title {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 16px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 0.5px;
}

.iw-hanoi-subtitle {
  font-size: 10px;
  color: var(--iw-gold);
  font-family: "ShareTechMono", monospace;
  opacity: 0.85;
}

/* 微型操作行：剧情 + 重构推演 + 撤销 + 重开 */
.iw-hanoi-subactions-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
}

.iw-hanoi-tool-btn {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: none;
  border: none;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.48);
  cursor: pointer;
  padding: 1px 0;
}
.iw-hanoi-tool-btn:hover,
.iw-hanoi-tool-btn:active {
  color: var(--iw-gold);
}

.iw-hanoi-regen-link {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: none;
  border: none;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  cursor: pointer;
  padding: 1px 0;
}
.iw-hanoi-regen-link:hover { color: var(--iw-gold); }

/* 状态仪条带 */
.iw-hanoi-status-strip {
  display: flex;
  gap: 6px;
}

.iw-hanoi-counter-box {
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 3px 8px;
  min-width: 48px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
}

.iw-hanoi-counter-lbl {
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.35);
}

.iw-hanoi-counter-num {
  font-family: "ShareTechMono", monospace;
  font-size: 13px;
  font-weight: 700;
  color: var(--iw-gold);
  line-height: 1.1;
}

/* 阶数选择条 */
.iw-hanoi-stage-bar {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 2px 0;
  scrollbar-width: none;
}
.iw-hanoi-stage-bar::-webkit-scrollbar { display: none; }

.iw-hanoi-stage-chip {
  flex-shrink: 0;
  font-family: "ShareTechMono", monospace;
  font-size: 10.5px;
  padding: 3px 10px;
  border-radius: 10px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  background: rgba(var(--iw-rgb-white), 0.03);
  color: rgba(var(--iw-rgb-white), 0.5);
  cursor: pointer;
  transition: all 0.15s;
}
.iw-hanoi-stage-chip.is-active {
  border-color: rgba(var(--iw-rgb-gold), 0.55);
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.08);
}
.iw-hanoi-chip-star {
  margin-left: 3px;
  color: var(--iw-gold);
  font-size: 9px;
}

/* 迁移目标横幅 */
.iw-hanoi-target-banner {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  background: rgba(var(--iw-rgb-gold), 0.05);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.14);
  border-radius: 6px;
}

.iw-hanoi-target-label {
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  letter-spacing: 1px;
  color: var(--iw-gold);
  flex-shrink: 0;
  padding-right: 8px;
  border-right: 1px solid rgba(var(--iw-rgb-gold), 0.25);
}

.iw-hanoi-target-desc {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.6);
}

/* 核心盘面视口 */
.iw-hanoi-board-wrapper {
  position: relative;
  width: 100%;
  height: 300px;
  margin: 0 auto;
  border-radius: 8px;
  background:
    radial-gradient(ellipse at 50% 100%, rgba(var(--iw-rgb-gold), 0.05), transparent 60%),
    rgba(var(--iw-rgb-white), 0.015);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  overflow: hidden;
}

.iw-hanoi-board {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  justify-content: space-around;
  padding: 10px 8px 0;
}

/* 单柱容器 */
.iw-hanoi-peg {
  position: relative;
  flex: 1;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.iw-hanoi-peg-label {
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.35);
  margin-bottom: 4px;
  flex-shrink: 0;
  transition: color 0.15s;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.iw-hanoi-peg.is-selected .iw-hanoi-peg-label { color: var(--iw-gold); }

/* 柱体区：立杆在底层，圆盘叠其上 */
.iw-hanoi-peg-area {
  position: relative;
  flex: 1;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
}

.iw-hanoi-peg-pole {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 5px;
  height: 92%;
  border-radius: 2.5px;
  background: linear-gradient(90deg, rgba(var(--iw-rgb-white), 0.10), rgba(var(--iw-rgb-white), 0.28) 40%, rgba(var(--iw-rgb-white), 0.10));
  transition: background 0.15s, box-shadow 0.15s;
}

.iw-hanoi-peg.is-selected .iw-hanoi-peg-pole {
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.25), rgba(var(--iw-rgb-gold), 0.7) 40%, rgba(var(--iw-rgb-gold), 0.25));
  box-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.35);
}

.iw-hanoi-peg-disks {
  position: relative;
  z-index: 2;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
}

/* 柱底座 */
.iw-hanoi-peg-base {
  flex-shrink: 0;
  width: 86%;
  height: 7px;
  border-radius: 3px;
  background: linear-gradient(180deg, rgba(var(--iw-rgb-white), 0.22), rgba(var(--iw-rgb-white), 0.08));
  box-shadow: 0 2px 6px rgba(var(--iw-rgb-black), 0.4);
  transition: background 0.15s;
}

.iw-hanoi-peg.is-selected .iw-hanoi-peg-base {
  background: linear-gradient(180deg, rgba(var(--iw-rgb-gold), 0.5), rgba(var(--iw-rgb-gold), 0.18));
}

/* 圆盘 */
.iw-hanoi-disk {
  height: 20px;
  margin-bottom: 2px;
  border-radius: 10px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.22);
  box-shadow: inset 0 2px 3px rgba(var(--iw-rgb-white), 0.22), 0 2px 4px rgba(var(--iw-rgb-black), 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.18s cubic-bezier(0.2, 0.9, 0.3, 1.3), filter 0.18s;
}

.iw-hanoi-disk span {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.75);
  text-shadow: 0 1px 2px rgba(var(--iw-rgb-black), 0.6);
  pointer-events: none;
}

/* 选中柱顶盘：悬浮呼吸 */
.iw-hanoi-disk.is-lifted {
  transform: translateY(-9px) scale(1.03);
  filter: brightness(1.25);
  box-shadow: inset 0 2px 3px rgba(var(--iw-rgb-white), 0.3), 0 8px 14px rgba(var(--iw-rgb-black), 0.5), 0 0 12px rgba(var(--iw-rgb-gold), 0.4);
  animation: iwHanoiLift 1.1s ease-in-out infinite;
}

@keyframes iwHanoiLift {
  0%, 100% { transform: translateY(-9px) scale(1.03); }
  50% { transform: translateY(-12px) scale(1.03); }
}

/* 刚落盘的顶盘：弹落 */
.iw-hanoi-disk.just-moved {
  animation: iwHanoiDrop 0.22s cubic-bezier(0.3, 1.4, 0.5, 1);
}

@keyframes iwHanoiDrop {
  0% { transform: translateY(-26px); opacity: 0.6; }
  70% { transform: translateY(2px); opacity: 1; }
  100% { transform: translateY(0); }
}

/* 非法操作：红光抖动 */
.iw-hanoi-peg.is-illegal .iw-hanoi-peg-pole {
  background: linear-gradient(90deg, rgba(217,106,104,0.3), rgba(217,106,104,0.85) 40%, rgba(217,106,104,0.3));
  box-shadow: 0 0 12px rgba(217, 106, 104, 0.5);
}
.iw-hanoi-peg.is-illegal .iw-hanoi-peg-label { color: #d96a68; }
.iw-hanoi-peg.is-illegal {
  animation: iwHanoiShake 0.36s ease;
}

@keyframes iwHanoiShake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-5px); }
  40% { transform: translateX(5px); }
  60% { transform: translateX(-3px); }
  80% { transform: translateX(3px); }
}

/* 底部状态说明条 */
.iw-hanoi-bottom-tip {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 10px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
  border-radius: 6px;
}

.iw-hanoi-name-tag {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  color: var(--iw-gold);
  letter-spacing: 0.5px;
}

.iw-hanoi-bottom-row-sub {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
}

/* 通关弹窗内的步数小结与完美戳 */
.iw-hanoi-win-bits {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  margin-top: 10px;
}

.iw-hanoi-win-bits span {
  font-family: "ShareTechMono", monospace;
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.55);
  border: 1px solid rgba(var(--iw-rgb-white), 0.14);
  border-radius: 4px;
  padding: 2px 8px;
}

.iw-hanoi-perfect-stamp {
  margin: 10px auto 0;
  display: inline-block;
  font-family: "ShareTechMono", monospace;
  font-size: 12px;
  letter-spacing: 2px;
  color: var(--iw-gold);
  border: 2px solid rgba(var(--iw-rgb-gold), 0.65);
  border-radius: 6px;
  padding: 4px 14px;
  transform: rotate(-3deg);
  text-shadow: 0 0 8px rgba(var(--iw-rgb-gold), 0.5);
  box-shadow: 0 0 14px rgba(var(--iw-rgb-gold), 0.15), inset 0 0 10px rgba(var(--iw-rgb-gold), 0.08);
  animation: iwHanoiStampIn 0.4s cubic-bezier(0.2, 1.6, 0.4, 1);
}

@keyframes iwHanoiStampIn {
  0% { transform: rotate(-3deg) scale(2.2); opacity: 0; }
  100% { transform: rotate(-3deg) scale(1); opacity: 1; }
}

/* 圆满弹窗：无限模式解锁提示行 */
.iw-hanoi-infinite-unlock {
  margin-top: 10px;
  font-size: 11px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-gold), 0.8);
  border-top: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  padding-top: 8px;
}

/* ====================================================
   ROM.04 观象演数 // 秘契塔罗（THE ARCANA DIVINATION）
   香槟暗金 (#e2c48d) 神圣法坛 · 3D 拟真卡牌与扇形抽牌
   ==================================================== */
.iw-tarot-page {
  padding-bottom: 48px;
}
.iw-tarot-container {
  display: flex;
  flex-direction: column;
  gap: 14px;
  width: 100%;
  margin: 0 auto;
}

/* 顶部法坛 Header */
.iw-tarot-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  padding: 8px 4px 12px;
}
.iw-tarot-super {
  font-size: 10px;
  letter-spacing: 0.12em;
  color: rgba(var(--iw-rgb-gold), 0.6);
  text-transform: uppercase;
}

/* 世界观换皮加载遮罩（盖在中央法坛区） */
.iw-tarot-reskin-overlay {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-height: 200px;
  padding: 36px 20px;
  text-align: center;
  background: rgba(var(--iw-rgb-warm-0), 0.82);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: 10px;
}
.iw-tarot-reskin-txt {
  font-size: 13px;
  color: var(--iw-gold);
  letter-spacing: 0.06em;
  font-style: italic;
  text-shadow: 0 0 12px rgba(var(--iw-rgb-gold), 0.3);
}
.iw-tarot-reskin-sub {
  font-size: 11px;
  line-height: 1.6;
  color: rgba(var(--iw-rgb-white), 0.42);
  max-width: 240px;
}
.iw-tarot-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--iw-gold);
  letter-spacing: 0.04em;
  margin: 2px 0;
  text-shadow: 0 0 16px rgba(var(--iw-rgb-gold), 0.25);
}
.iw-tarot-sub {
  font-size: 11px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Times New Roman", serif;
  font-style: italic;
  letter-spacing: 0.05em;
  color: rgba(var(--iw-rgb-white), 0.38);
}
.iw-tarot-btn-reset {
  background: rgba(var(--iw-rgb-gold), 0.08);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  color: var(--iw-gold);
  padding: 6px 12px;
  border-radius: 4px;
  font-size: 11px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 5px;
  transition: all 0.2s ease;
}
.iw-tarot-btn-reset:hover {
  background: rgba(var(--iw-rgb-gold), 0.16);
  border-color: var(--iw-gold);
  box-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.2);
}

/* 牌库操作下拉气泡菜单 */
.iw-tarot-menu-wrap {
  position: relative;
  display: inline-block;
}
.iw-tarot-dropdown-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  min-width: 150px;
  background: rgba(var(--iw-rgb-warm-1), 0.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
  border-radius: 6px;
  box-shadow: 0 8px 24px rgba(var(--iw-rgb-black), 0.6), 0 0 16px rgba(var(--iw-rgb-gold), 0.15);
  padding: 4px;
  z-index: 100;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.iw-tarot-menu-item {
  background: transparent;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.85);
  padding: 8px 12px;
  border-radius: 4px;
  font-size: 11.5px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  letter-spacing: 0.03em;
  transition: all 0.18s ease;
  width: 100%;
  text-align: left;
}
.iw-tarot-menu-item:hover {
  background: rgba(var(--iw-rgb-gold), 0.12);
  color: var(--iw-gold);
}
.iw-tarot-menu-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--iw-gold);
  opacity: 0.85;
}
.iw-tarot-menu-item:hover .iw-tarot-menu-icon {
  opacity: 1;
  color: var(--iw-text-bright);
}

/* 问事意念栏 */
.iw-tarot-intent-box {
  background: rgba(var(--iw-rgb-warm-1), 0.6);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.16);
  border-radius: 6px;
  padding: 8px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.iw-tarot-intent-lead {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 10px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  letter-spacing: 0.06em;
}
.iw-tarot-intent-icon {
  color: var(--iw-gold);
  font-size: 11px;
}
.iw-tarot-intent-input {
  background: transparent;
  border: none;
  outline: none;
  color: var(--iw-paper-2);
  font-size: 12px;
  width: 100%;
}
.iw-tarot-intent-input::placeholder {
  color: rgba(var(--iw-rgb-white), 0.28);
}

/* 牌阵选项卡 */
.iw-tarot-spread-tabs {
  display: flex;
  gap: 6px;
  background: rgba(var(--iw-rgb-inset), 0.35);
  padding: 4px;
  border-radius: 6px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.12);
}
.iw-tarot-tab {
  flex: 1;
  background: transparent;
  border: none;
  color: rgba(var(--iw-rgb-white), 0.5);
  font-size: 11px;
  padding: 6px 4px;
  border-radius: 4px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  transition: all 0.2s ease;
}
.iw-tarot-tab-dot {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: transparent;
}
.iw-tarot-tab-count {
  font-size: 9px;
  opacity: 0.6;
}
.iw-tarot-tab.is-active {
  background: rgba(var(--iw-rgb-gold), 0.14);
  color: var(--iw-gold);
  font-weight: 600;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
}
.iw-tarot-tab.is-active .iw-tarot-tab-dot {
  background: var(--iw-gold);
  box-shadow: 0 0 6px var(--iw-gold);
}
.iw-tarot-tab.is-disabled {
  opacity: 0.32;
  cursor: not-allowed;
  filter: grayscale(0.8);
}
.iw-tarot-tab.is-disabled:hover {
  background: transparent;
  color: rgba(var(--iw-rgb-white), 0.5);
}

/* 中央仪式台 / 槽位布局：去掉生硬边框与深色衬底，融入背景通透呼吸 */
.iw-tarot-altar {
  position: relative;
  min-height: 200px;
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 0 4px 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
  margin-top: -4px;
}
.iw-tarot-spread-layout {
  display: flex;
  justify-content: center;
  align-items: flex-start;
  gap: 10px;
  width: 100%;
}
.iw-tarot-slot-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  flex: 1;
  max-width: 140px;
}
.iw-tarot-slot-meta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  min-height: 28px;
}
.iw-tarot-slot-meta.is-empty-meta {
  min-height: 0;
  display: none;
}
.iw-tarot-slot-tag {
  font-size: 11px;
  font-weight: 700;
  color: var(--iw-gold);
  letter-spacing: 0.04em;
}
.iw-tarot-slot-desc {
  font-size: 8.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  max-width: 120px;
  text-align: center;
  line-height: 1.2;
}

/* 空槽占位与自适应卡牌容器 */
.iw-tarot-slot-box {
  width: 100%;
  aspect-ratio: 1 / 1.7;
  max-height: 210px;
  border-radius: 6px;
  position: relative;
}
.iw-tarot-slot-box.is-empty {
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.28);
  background: rgba(var(--iw-rgb-gold), 0.02);
  display: flex;
  align-items: center;
  justify-content: center;
}
.iw-tarot-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  color: rgba(var(--iw-rgb-gold), 0.4);
}
.iw-tarot-placeholder-spark {
  font-size: 16px;
  animation: iwTarotPulse 2.4s infinite ease-in-out;
}
.iw-tarot-placeholder-txt {
  font-size: 10px;
  letter-spacing: 0.08em;
}

@keyframes iwTarotPulse {
  0%, 100% { opacity: 0.3; transform: scale(0.95); }
  50% { opacity: 0.8; transform: scale(1.08); }
}

/* 3D 卡牌实体：全响应式撑满 slot-box */
.iw-tarot-card-3d {
  width: 100%;
  height: 100%;
  perspective: 1000px;
  cursor: pointer;
  transition: transform 0.2s ease;
}
.iw-tarot-card-3d:hover {
  transform: translateY(-4px);
}
.iw-tarot-card-inner {
  width: 100%;
  height: 100%;
  position: relative;
  transform-style: preserve-3d;
  transition: transform 0.6s cubic-bezier(0.2, 0.85, 0.4, 1.15);
  border-radius: 6px;
  box-shadow: 0 10px 24px rgba(var(--iw-rgb-black), 0.85), 0 0 12px rgba(var(--iw-rgb-gold), 0.15);
}
.iw-tarot-card-3d.is-flipped .iw-tarot-card-inner {
  transform: rotateY(180deg);
}

.iw-tarot-face {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 6px;
  backface-visibility: hidden;
  overflow: hidden;
}

/* 牌背：暗黑磨砂 + 双层香槟暗金线框 + 对称法阵 */
.iw-tarot-back {
  background: linear-gradient(135deg, var(--iw-warm-2) 0%, var(--iw-warm-0) 100%);
  border: 1.5px solid var(--iw-gold);
  padding: 4px;
}
.iw-tarot-back-frame {
  width: 100%;
  height: 100%;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  border-radius: 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: radial-gradient(circle at 50% 50%, rgba(var(--iw-rgb-gold), 0.08) 0%, transparent 75%);
}
.iw-tarot-back-core {
  color: var(--iw-gold);
  opacity: 0.85;
}
.iw-tarot-back-ribbon {
  font-size: 8px;
  font-family: "ShareTechMono", monospace;
  color: rgba(var(--iw-rgb-gold), 0.5);
  letter-spacing: 0.18em;
}

/* 牌面：翻转 180° 展示 */
.iw-tarot-front {
  background: linear-gradient(180deg, var(--iw-warm-3) 0%, var(--iw-warm-1) 100%);
  border: 1.5px solid var(--iw-gold);
  transform: rotateY(180deg);
  padding: 5px;
}
.iw-tarot-front.is-reversed {
  transform: rotateY(180deg) rotate(180deg);
}
.iw-tarot-front-frame {
  width: 100%;
  height: 100%;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.4);
  border-radius: 4px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 6px 4px;
}
.iw-tarot-front-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.iw-tarot-front-roman {
  font-size: 11px;
  font-weight: 700;
  font-family: "Times New Roman", serif;
  color: var(--iw-gold);
}
.iw-tarot-front-badge {
  font-size: 8px;
  padding: 1px 4px;
  border-radius: 3px;
  font-weight: 600;
}
.iw-tarot-front-badge.is-up {
  background: rgba(var(--iw-rgb-gold), 0.15);
  color: var(--iw-gold);
}
.iw-tarot-front-badge.is-rev {
  background: rgba(212, 74, 74, 0.2);
  color: var(--iw-state-danger);
  border: 1px solid rgba(212, 74, 74, 0.4);
}
.iw-tarot-front-art {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 1;
}
.iw-tarot-art-totem {
  color: var(--iw-gold);
  filter: drop-shadow(0 0 10px rgba(var(--iw-rgb-gold), 0.45));
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.3s ease;
}
.iw-tarot-art-totem svg {
  display: block;
}
.iw-tarot-front-footer {
  text-align: center;
  border-top: 1px solid rgba(var(--iw-rgb-gold), 0.2);
  padding-top: 5px;
  padding-bottom: 2px;
}
.iw-tarot-front-title {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--iw-paper-2);
  letter-spacing: 0.04em;
}
.iw-tarot-front-en {
  display: none;
}
/* 横向全宽流光牌河抽牌区 */
.iw-tarot-tray {
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: rgba(var(--iw-rgb-warm-0), 0.75);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.18);
  border-radius: 8px;
  padding: 12px 6px 14px;
  overflow: hidden;
  transition: opacity 0.3s ease;
  position: relative;
  min-height: 168px;
}
.iw-tarot-tray.is-finished {
  opacity: 0.45;
  pointer-events: none;
}
.iw-tarot-tray-header {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 11px;
  padding: 0 8px;
}
.iw-tarot-tray-tip {
  color: var(--iw-gold);
  font-weight: 500;
  letter-spacing: 0.02em;
  text-align: center;
  transition: color 0.2s ease;
}

/* 叠牌状态：中间聚拢的神秘厚牌堆 */
.iw-tarot-deck-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 128px;
  cursor: pointer;
  position: relative;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.iw-tarot-deck-stack.is-hidden {
  opacity: 0;
  transform: scale(0.92);
  pointer-events: none;
}
.iw-tarot-stack-pile {
  position: relative;
  width: 54px;
  height: 90px;
  transition: transform 0.25s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}
.iw-tarot-deck-stack:hover .iw-tarot-stack-pile {
  transform: translateY(-4px) scale(1.05);
}
.iw-tarot-stack-card {
  position: absolute;
  inset: 0;
  background: linear-gradient(145deg, var(--iw-warm-2) 0%, var(--iw-warm-0) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.6);
  border-radius: 4px;
  box-shadow: 0 4px 10px rgba(var(--iw-rgb-black), 0.75);
  transition: all 0.25s ease;
}
.iw-tarot-stack-card.c-base1 { transform: translate(-3px, 3px) rotate(-2.5deg); opacity: 0.5; border-color: rgba(var(--iw-rgb-gold), 0.3); }
.iw-tarot-stack-card.c-base2 { transform: translate(3px, 1.5px) rotate(2deg); opacity: 0.7; border-color: rgba(var(--iw-rgb-gold), 0.45); }
.iw-tarot-stack-card.c-base3 { transform: translate(-1px, -1px) rotate(-0.8deg); opacity: 0.85; }
.iw-tarot-stack-card.c-top {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--iw-gold);
  box-shadow: 0 6px 16px rgba(var(--iw-rgb-black), 0.8), 0 0 12px rgba(var(--iw-rgb-gold), 0.15);
  background: linear-gradient(145deg, var(--iw-warm-3) 0%, var(--iw-warm-0) 100%);
}
.iw-tarot-stack-pulse {
  display: none;
}

/* 正在洗牌动画态：真实三幕物理交互（切牌飞散 ➔ 快速回弹穿插 ➔ 合拢） */
.iw-tarot-deck-stack.is-shuffling .iw-tarot-stack-pulse {
  opacity: 0;
}
.iw-tarot-deck-stack.is-shuffling .iw-tarot-stack-pile {
  animation: iwShuffleVibrate 0.9s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}
.iw-tarot-deck-stack.is-shuffling .iw-tarot-stack-card.c-base1 {
  animation: iwRiffleLeft 0.9s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}
.iw-tarot-deck-stack.is-shuffling .iw-tarot-stack-card.c-base2 {
  animation: iwRiffleRight 0.9s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}
.iw-tarot-deck-stack.is-shuffling .iw-tarot-stack-card.c-base3 {
  animation: iwRiffleMid 0.9s ease-in-out forwards;
}
.iw-tarot-deck-stack.is-shuffling .iw-tarot-stack-card.c-top {
  animation: iwRiffleTop 0.9s ease-in-out forwards;
}

@keyframes iwShuffleVibrate {
  0% { transform: scale(1); }
  15% { transform: scale(0.96) translateY(2px); }
  35% { transform: scale(1.04) translateY(-4px); }
  70% { transform: scale(1.02); }
  90% { transform: scale(0.98) translateY(1px); }
  100% { transform: scale(1); }
}

@keyframes iwRiffleLeft {
  0% { transform: translate(-3px, 3px) rotate(-2.5deg); }
  25% { transform: translate(-42px, -8px) rotate(-18deg) scale(1.05); }
  50% { transform: translate(-20px, 4px) rotate(-8deg); }
  75% { transform: translate(-32px, -4px) rotate(-12deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}

@keyframes iwRiffleRight {
  0% { transform: translate(3px, 1.5px) rotate(2deg); }
  25% { transform: translate(42px, -8px) rotate(18deg) scale(1.05); }
  50% { transform: translate(20px, 4px) rotate(8deg); }
  75% { transform: translate(32px, -4px) rotate(12deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}

@keyframes iwRiffleMid {
  0% { transform: translate(-1px, -1px) rotate(-0.8deg); }
  30% { transform: translateY(-16px) scale(1.08); }
  65% { transform: translateY(6px) scale(0.96); }
  100% { transform: translate(0, 0) rotate(0deg); }
}

@keyframes iwRiffleTop {
  0% { transform: translate(0, 0); }
  20% { transform: translateY(-12px) rotate(3deg); }
  45% { transform: translateY(4px) rotate(-2deg); }
  70% { transform: translateY(-6px) rotate(1deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}

/* 牌河展开流光动画：柔和淡入与水波纹扩散 */
.iw-tarot-river-viewport {
  width: 100%;
  height: 128px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  padding: 16px 20px 10px 20px;
  box-sizing: border-box;
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--iw-rgb-gold), 0.3) transparent;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.iw-tarot-river-viewport.is-revealed {
  opacity: 1;
  transform: translateY(0);
}
.iw-tarot-tray-progress {
  font-family: "ShareTechMono", monospace;
  color: rgba(var(--iw-rgb-white), 0.45);
  font-size: 10px;
}

/* 牌河横向自由滚动视口 */
.iw-tarot-river-viewport {
  width: 100%;
  height: 128px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  padding: 16px 20px 10px 20px;
  box-sizing: border-box;
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--iw-rgb-gold), 0.3) transparent;
}
.iw-tarot-river-viewport::-webkit-scrollbar {
  height: 4px;
}
.iw-tarot-river-viewport::-webkit-scrollbar-thumb {
  background: rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 2px;
}
.iw-tarot-river-viewport::-webkit-scrollbar-track {
  background: transparent;
}

/* 牌河长轨道（80 张牌采用负外边距紧凑鱼鳞重叠铺开） */
.iw-tarot-river-track {
  display: flex;
  align-items: flex-end;
  height: 98px;
  width: max-content;
  padding-right: 48px;
}

/* 单张牌河卡牌 */
.iw-tarot-river-card {
  position: relative;
  width: 48px;
  height: 82px;
  margin-right: -24px; /* 鱼鳞叠放间距：露出一半边缘，手感最密实而不局促 */
  flex-shrink: 0;
  cursor: pointer;
  transition: transform 0.22s cubic-bezier(0.18, 0.89, 0.32, 1.28), box-shadow 0.22s ease, opacity 0.25s ease;
  transform-origin: 50% 100%;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  animation: iwCardSpreadIn 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes iwCardSpreadIn {
  from {
    opacity: 0;
    transform: translateY(12px) scale(0.9);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* 悬停/触碰探头飞起感应动效 */
.iw-tarot-river-card:not(.is-picked):hover,
.iw-tarot-river-card:not(.is-picked):active {
  transform: translateY(-16px) scale(1.12);
  z-index: 999 !important;
}

/* 牌已被抽走：留痕淡出空位 */
.iw-tarot-river-card.is-picked {
  opacity: 0.15;
  transform: translateY(-24px) scale(0.85);
  pointer-events: none;
  filter: grayscale(1);
}

/* 牌背本体质感 */
.iw-tarot-river-card-back {
  width: 100%;
  height: 100%;
  background: linear-gradient(145deg, var(--iw-warm-2) 0%, var(--iw-warm-0) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.7);
  border-radius: 4px;
  box-shadow: 0 4px 10px rgba(var(--iw-rgb-black), 0.75), inset 0 0 8px rgba(var(--iw-rgb-black), 0.8);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}

.iw-tarot-river-card-glow {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 40%;
  background: linear-gradient(180deg, rgba(var(--iw-rgb-gold), 0.15) 0%, transparent 100%);
  pointer-events: none;
}

.iw-tarot-river-card-edge {
  position: absolute;
  inset: 2px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  border-radius: 2px;
  pointer-events: none;
}

.iw-tarot-river-card-core {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-gold), 0.08);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
}

.iw-tarot-river-card-star {
  color: var(--iw-gold);
  font-size: 11px;
}

/* 底部轻提示 */
.iw-tarot-river-hint {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.32);
  letter-spacing: 0.03em;
  padding-top: 2px;
}
.iw-tarot-river-hint-dot {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-gold), 0.5);
}

/* 底部神谕抽屉 */
.iw-tarot-oracle-drawer {
  background: rgba(var(--iw-rgb-warm-1), 0.9);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 8px;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 12px 32px rgba(var(--iw-rgb-black), 0.9);
  animation: iwTarotDrawerSlide 0.4s ease;
}
@keyframes iwTarotDrawerSlide {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}
.iw-tarot-oracle-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom: none;
  padding-bottom: 2px;
}
.iw-tarot-oracle-badge {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--iw-gold);
  letter-spacing: 0.04em;
}
.iw-tarot-oracle-spark {
  color: var(--iw-gold);
}
.iw-tarot-oracle-ai-trigger {
  display: flex;
  justify-content: center;
  padding: 16px 0 8px;
}
.iw-tarot-oracle-ai-btn {
  background: rgba(var(--iw-rgb-gold), 0.08);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.28);
  color: var(--iw-gold);
  padding: 7px 22px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  letter-spacing: 0.05em;
  transition: all 0.25s ease;
  opacity: 0.92;
}
.iw-tarot-oracle-ai-btn:hover {
  opacity: 1;
  color: var(--iw-text-bright);
  border-color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.16);
  box-shadow: 0 0 14px rgba(var(--iw-rgb-gold), 0.35);
  transform: translateY(-1px);
}
.iw-tarot-oracle-ai-btn:active {
  transform: translateY(0);
}
.iw-tarot-oracle-cards {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.iw-tarot-oracle-card-item {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 2px 0 4px 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.iw-tarot-oracle-card-title-line {
  display: flex;
  align-items: center;
}
.iw-tarot-oracle-card-title-text {
  font-size: 12px;
  font-weight: 700;
  color: var(--iw-gold);
  letter-spacing: 0.03em;
}
.iw-tarot-oracle-card-rev-tag {
  font-size: 12px;
  font-weight: 400;
  color: var(--iw-text-bright);
  margin-left: 2px;
  opacity: 0.88;
}
.iw-tarot-oracle-card-note {
  font-size: 11px;
  line-height: 1.5;
  color: rgba(var(--iw-rgb-white), 0.68);
}
/* AI 解读面板：极简无框通透排版 */
.iw-tarot-ai-reading {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 8px 0 4px 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 6px;
}
.iw-tarot-ai-reading-header {
  display: flex;
  align-items: center;
  gap: 6px;
}
.iw-tarot-ai-spark {
  color: var(--iw-gold);
  font-size: 11px;
}
.iw-tarot-ai-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--iw-gold);
  letter-spacing: 0.04em;
}
.iw-tarot-ai-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 16px 0 12px 0;
}
.iw-tarot-loading-stars {
  display: flex;
  align-items: center;
  gap: 10px;
}
.iw-tarot-star {
  font-size: 13px;
  color: var(--iw-gold);
  display: inline-block;
  opacity: 0.3;
  transform: scale(0.85);
  animation: iwStarTwinkle 1.6s infinite ease-in-out;
}
.iw-tarot-star.s1 {
  animation-delay: 0s;
}
.iw-tarot-star.s2 {
  font-size: 11px;
  animation-delay: 0.28s;
}
.iw-tarot-star.s3 {
  animation-delay: 0.56s;
}
@keyframes iwStarTwinkle {
  0%, 100% {
    opacity: 0.25;
    transform: scale(0.85);
    filter: drop-shadow(0 0 0 transparent);
  }
  50% {
    opacity: 1;
    transform: scale(1.15) translateY(-2px);
    filter: drop-shadow(0 0 8px rgba(var(--iw-rgb-gold), 0.8));
    color: var(--iw-paper-0);
  }
}
.iw-tarot-loading-txt {
  font-size: 11px;
  color: rgba(var(--iw-rgb-gold), 0.65);
  letter-spacing: 0.05em;
  font-style: italic;
}
.iw-tarot-ai-body {
  font-size: 11.5px;
  line-height: 1.65;
  color: rgba(var(--iw-rgb-white), 0.76);
  letter-spacing: 0.02em;
  padding: 2px 0;
}
.iw-tarot-ai-para {
  margin: 0 0 10px 0;
  text-indent: 2em;
}
.iw-tarot-ai-para:last-child {
  margin-bottom: 0;
}
.iw-tarot-ai-bottom-actions {
  display: flex;
  justify-content: flex-end;
  padding-top: 6px;
}
.iw-tarot-btn-new-question {
  background: transparent;
  border: none;
  color: var(--iw-gold);
  padding: 4px 0;
  font-size: 11.5px;
  font-weight: 500;
  cursor: pointer;
  letter-spacing: 0.03em;
  transition: all 0.2s ease;
  opacity: 0.88;
}
.iw-tarot-btn-new-question:hover {
  opacity: 1;
  color: var(--iw-text-bright);
  text-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.6);
}

/* =======================================
   全览牌库弹窗（秘契档案卷轴）
   ======================================= */
.iw-tarot-viewer-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(var(--iw-rgb-warm-0), 0.82);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  animation: iwViewerFadeIn 0.25s ease-out;
}
@keyframes iwViewerFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.iw-tarot-viewer-window {
  background: var(--iw-warm-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  border-radius: 12px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
  width: 100%;
  max-width: 680px;
  height: 85vh;
  max-height: 800px;
  display: flex;
  flex-direction: column;
  box-shadow: 0 20px 50px rgba(var(--iw-rgb-black), 0.8), 0 0 30px rgba(var(--iw-rgb-gold), 0.15);
  overflow: hidden;
  position: relative;
}

.iw-tarot-viewer-header {
  padding: 12px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: rgba(var(--iw-rgb-gold), 0.03);
}
.iw-tarot-viewer-header-spacer {
  width: 28px;
  height: 28px;
}
.iw-tarot-viewer-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--iw-paper-1);
  letter-spacing: 0.05em;
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  text-shadow: 0 0 12px rgba(var(--iw-rgb-gold), 0.3);
  text-align: center;
}
.iw-tarot-viewer-close-btn {
  background: transparent;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  color: rgba(var(--iw-rgb-gold), 0.8);
  width: 28px;
  height: 28px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  transition: all 0.2s ease;
}
.iw-tarot-viewer-close-btn:hover {
  border-color: var(--iw-gold);
  color: var(--iw-text-bright);
  background: rgba(var(--iw-rgb-gold), 0.15);
}

/* 四象意象专用视图 */
.iw-tarot-viewer-suits-page {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 4px 0;
}
.iw-tarot-viewer-suit-card {
  position: relative;
  background: rgba(var(--iw-rgb-warm-1), 0.85);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.2);
  border-radius: 10px;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: all 0.25s ease;
  overflow: hidden;
}
.iw-tarot-viewer-suit-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1.5px;
  background: linear-gradient(90deg, transparent 0%, rgba(var(--iw-rgb-gold), 0.5) 30%, var(--iw-gold) 50%, rgba(var(--iw-rgb-gold), 0.5) 70%, transparent 100%);
  opacity: 0.8;
}
.iw-tarot-viewer-suit-card:hover {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  background: rgba(var(--iw-rgb-warm-3), 0.95);
  box-shadow: 0 4px 16px rgba(var(--iw-rgb-black), 0.4);
}
.iw-tarot-viewer-suit-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  border-bottom: 1px dashed rgba(var(--iw-rgb-gold), 0.18);
  padding-bottom: 6px;
}
.iw-tarot-viewer-suit-card-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--iw-paper-1);
  letter-spacing: 0.04em;
}
.iw-tarot-viewer-suit-card-classic {
  font-size: 11px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  font-style: italic;
}
.iw-tarot-viewer-suit-card-gist,
.iw-tarot-viewer-suit-card-meta {
  font-size: 11.5px;
  line-height: 1.55;
  color: rgba(var(--iw-rgb-white), 0.78);
}
.iw-tarot-viewer-suit-card-lbl {
  color: var(--iw-gold);
  font-weight: 600;
}

/* 分类 Tab */
.iw-tarot-viewer-tabs {
  padding: 8px 18px;
  display: flex;
  gap: 6px;
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.12);
  overflow-x: auto;
  scrollbar-width: none;
}
.iw-tarot-viewer-tabs::-webkit-scrollbar {
  display: none;
}
.iw-tarot-viewer-tab {
  background: transparent;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.2);
  color: rgba(var(--iw-rgb-white), 0.6);
  padding: 4px 12px;
  border-radius: 14px;
  font-size: 11px;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.2s ease;
}
.iw-tarot-viewer-tab:hover {
  color: var(--iw-gold);
  border-color: rgba(var(--iw-rgb-gold), 0.4);
}
.iw-tarot-viewer-tab.is-active {
  background: rgba(var(--iw-rgb-gold), 0.15);
  border-color: var(--iw-gold);
  color: var(--iw-paper-1);
  font-weight: 600;
}

/* 卡片滚动区 */
.iw-tarot-viewer-body {
  flex: 1;
  overflow-y: auto;
  padding: 14px 18px 24px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--iw-rgb-gold), 0.25) transparent;
}
.iw-tarot-viewer-body::-webkit-scrollbar {
  width: 5px;
}
.iw-tarot-viewer-body::-webkit-scrollbar-thumb {
  background: rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 3px;
}

/* 常规卡片条目：神秘学秘契卡片风格 */
.iw-tarot-viewer-card {
  position: relative;
  flex-shrink: 0;
  background: rgba(var(--iw-rgb-warm-1), 0.82);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.15);
  border-radius: 10px;
  padding: 12px 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: all 0.25s ease;
  overflow: hidden;
}
.iw-tarot-viewer-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, rgba(var(--iw-rgb-gold), 0.35) 25%, rgba(var(--iw-rgb-gold), 0.6) 50%, rgba(var(--iw-rgb-gold), 0.35) 75%, transparent 100%);
  opacity: 0.6;
}
.iw-tarot-viewer-card:hover {
  border-color: rgba(var(--iw-rgb-gold), 0.38);
  background: rgba(var(--iw-rgb-warm-3), 0.95);
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(var(--iw-rgb-black), 0.4), 0 0 16px rgba(var(--iw-rgb-gold), 0.1);
}
.iw-tarot-viewer-card:hover::before {
  opacity: 1;
}
.iw-tarot-viewer-card.is-major::before {
  height: 1.5px;
  background: linear-gradient(90deg, transparent 0%, rgba(245, 228, 195, 0.6) 30%, var(--iw-paper-1) 50%, rgba(245, 228, 195, 0.6) 70%, transparent 100%);
  opacity: 0.9;
}
.iw-tarot-viewer-card.is-minor::before {
  opacity: 0.45;
}

.iw-tarot-viewer-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-bottom: 2px;
}
.iw-tarot-viewer-card-left {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
}
.iw-tarot-viewer-card-num {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--iw-gold);
  letter-spacing: 0.08em;
  font-family: "Times New Roman", Times, serif;
  opacity: 0.85;
  flex-shrink: 0;
}
.iw-tarot-viewer-card-name {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--iw-paper-1);
  letter-spacing: 0.04em;
  text-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.2);
  white-space: nowrap;
}
.iw-tarot-viewer-card-orig {
  font-size: 10px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  background: rgba(var(--iw-rgb-gold), 0.08);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.22);
  padding: 2px 8px;
  border-radius: 12px;
  letter-spacing: 0.03em;
  white-space: nowrap;
  flex-shrink: 0;
}
.iw-tarot-viewer-card-scene {
  font-size: 11.5px;
  color: rgba(var(--iw-rgb-white), 0.75);
  line-height: 1.55;
  letter-spacing: 0.01em;
}
.iw-tarot-viewer-card-meaning {
  font-size: 11px;
  color: rgba(var(--iw-rgb-gold), 0.72);
  line-height: 1.5;
  font-style: italic;
  padding-top: 2px;
}

/* 专属核心神谕卡片（高亮金边华丽款） */
.iw-tarot-viewer-card.is-special {
  background: linear-gradient(135deg, rgba(var(--iw-rgb-warm-amber), 0.92) 0%, rgba(var(--iw-rgb-warm-1), 0.98) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.45);
  box-shadow: 0 6px 24px rgba(var(--iw-rgb-black), 0.5), 0 0 24px rgba(var(--iw-rgb-gold), 0.15), inset 0 0 30px rgba(var(--iw-rgb-gold), 0.08);
  padding: 16px 18px;
}
.iw-tarot-viewer-card.is-special::before {
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, var(--iw-gold) 25%, #fff 50%, var(--iw-gold) 75%, transparent 100%);
  opacity: 1;
}
.iw-tarot-viewer-card-badge {
  font-size: 10px;
  color: var(--iw-gold);
  letter-spacing: 0.1em;
  font-weight: 700;
  text-transform: uppercase;
}
.iw-tarot-viewer-card.is-special .iw-tarot-viewer-card-name {
  font-size: 16px;
  color: var(--iw-text-bright);
  text-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.4);
}
.iw-tarot-viewer-detail-box {
  margin-top: 6px;
  padding-top: 8px;
  border-top: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.iw-tarot-viewer-detail-item {
  font-size: 11px;
  line-height: 1.55;
  display: flex;
  align-items: flex-start;
  gap: 4px;
}
.iw-tarot-viewer-detail-label {
  color: var(--iw-gold);
  font-weight: 600;
  white-space: nowrap;
}
.iw-tarot-viewer-detail-val {
  color: rgba(var(--iw-rgb-white), 0.82);
}
.iw-tarot-viewer-empty {
  text-align: center;
  padding: 40px 0;
  color: rgba(var(--iw-rgb-white), 0.35);
  font-size: 12px;
}

/* ============================================================
   第十一款卡带：翻转棋 / 黑白棋（ROM.03-K // REVERSI）—— 对齐五子棋 UI 架构
   ============================================================ */

/* 根容器（复用五子棋布局）*/
.iw-reversi-container {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 2px 12px;
}

/* 顶部标题行与状态仪 */
.iw-reversi-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}

.iw-reversi-title-group {
  flex: 1;
  min-width: 0;
}

.iw-reversi-title-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
}

.iw-reversi-title {
  font-family: "ShareTechMono", "SF Mono", monospace;
  font-size: 16px;
  font-weight: 700;
  color: var(--iw-text-bright);
  letter-spacing: 0.5px;
}

.iw-reversi-subtitle {
  font-size: 10px;
  color: var(--iw-gold);
  font-family: "ShareTechMono", monospace;
  opacity: 0.85;
}

/* 状态仪：STAGE + TURN + COUNT */
.iw-reversi-status-strip {
  display: flex;
  align-items: center;
  gap: 6px;
}

.iw-reversi-counter-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 5px 8px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 6px;
  min-width: 50px;
}

.iw-reversi-counter-lbl {
  font-size: 8.5px;
  font-family: "ShareTechMono", monospace;
  color: rgba(var(--iw-rgb-white), 0.45);
  letter-spacing: 0.8px;
}

.iw-reversi-counter-num {
  font-size: 13px;
  font-weight: 600;
  font-family: "ShareTechMono", monospace;
  color: var(--iw-gold);
  letter-spacing: 0.3px;
}

/* 独立全宽操作栏：剧情 + 重构推演 + 提示 + 悔棋 + 重开 */
.iw-reversi-actions-toolbar {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 6px 8px;
  background: rgba(var(--iw-rgb-white), 0.015);
  border: 1px solid rgba(var(--iw-rgb-white), 0.04);
  border-radius: 7px;
}

.iw-reversi-tool-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 9px;
  background: rgba(var(--iw-rgb-white), 0.03);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 5px;
  color: rgba(var(--iw-rgb-white), 0.7);
  font-size: 10.5px;
  cursor: pointer;
  transition: all 0.2s;
}

.iw-reversi-tool-btn:hover {
  background: rgba(var(--iw-rgb-gold), 0.08);
  border-color: rgba(var(--iw-rgb-gold), 0.25);
  color: var(--iw-gold);
}

.iw-reversi-tool-btn svg {
  width: 12px;
  height: 12px;
}

.iw-reversi-regen-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 10px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.2);
  border-radius: 5px;
  background: rgba(var(--iw-rgb-gold), 0.05);
  color: var(--iw-gold);
  font-size: 10.5px;
  cursor: pointer;
  transition: all 0.25s;
}

.iw-reversi-regen-link:hover {
  background: rgba(var(--iw-rgb-gold), 0.12);
  border-color: rgba(var(--iw-rgb-gold), 0.35);
}

.iw-reversi-regen-icon {
  font-size: 13px;
  font-weight: 600;
}

/* 对手状态卡片与对弈心声气泡 */
.iw-reversi-rival-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: linear-gradient(135deg, rgba(var(--iw-rgb-gold), 0.03), rgba(var(--iw-rgb-gold), 0.01));
  border: 1px solid rgba(var(--iw-rgb-gold), 0.12);
  border-radius: 8px;
}

.iw-reversi-rival-avatar {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: linear-gradient(135deg, rgba(var(--iw-rgb-gold), 0.15), rgba(var(--iw-rgb-gold), 0.05));
  border: 1.5px solid rgba(var(--iw-rgb-gold), 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.iw-reversi-rival-avatar-inner {
  font-size: 16px;
  font-weight: 700;
  color: var(--iw-gold);
  font-family: "ShareTechMono", monospace;
}

.iw-reversi-rival-info {
  flex: 1;
  min-width: 0;
}

.iw-reversi-rival-name-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-bottom: 4px;
}

.iw-reversi-rival-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--iw-text-bright);
  letter-spacing: 0.3px;
}

.iw-reversi-rival-role {
  font-size: 10px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  font-family: "ShareTechMono", monospace;
}

.iw-reversi-rival-quote-bubble {
  padding: 6px 10px;
  background: rgba(var(--iw-rgb-inset), 0.25);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.15);
  border-radius: 6px;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.75);
  line-height: 1.4;
  opacity: 0;
  transform: translateY(-4px);
  transition: all 0.3s ease;
}

.iw-reversi-rival-quote-bubble.is-active {
  opacity: 1;
  transform: translateY(0);
}

.iw-reversi-rival-quote-bubble.is-hidden {
  display: none;
}

/* 8×8 标准黑白棋盘 Canvas 宿主（1:1 正方形） */
.iw-reversi-board-wrapper {
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 8px;
  overflow: hidden;
  background: var(--iw-cool-2);
  border: 2px solid rgba(var(--iw-rgb-gold), 0.15);
  box-shadow: 0 2px 10px rgba(var(--iw-rgb-black), 0.3), inset 0 0 20px rgba(var(--iw-rgb-gold), 0.03);
  position: relative;
}

.iw-reversi-canvas {
  width: 100%;
  height: 100%;
  display: block;
  cursor: pointer;
  touch-action: none;
}

/* 底部状态说明条 */
.iw-reversi-bottom-tip {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  background: rgba(var(--iw-rgb-white), 0.02);
  border: 1px solid rgba(var(--iw-rgb-white), 0.05);
  border-radius: 6px;
}

.iw-reversi-name-tag {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  color: var(--iw-gold);
  letter-spacing: 0.5px;
  white-space: nowrap;
}

.iw-reversi-tip-sep {
  color: rgba(var(--iw-rgb-white), 0.2);
  font-size: 8px;
}

#iw-reversi-tip-desc {
  font-size: 10.5px;
  color: rgba(var(--iw-rgb-white), 0.45);
  line-height: 1.3;
}

/* 翻转棋页面容器（对齐五子棋架构）*/
.iw-reversi-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

/* ============================================================
   02 地区频段（SECTOR）—— 短波收音机 / 本地广播台
   The Verso 纸金黑报系：纸纹底、烫金细边、电台刻度美学
   ============================================================ */
/* —— 机顶铭言刻印装饰线 —— */
.iw-sector-top-badge {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 2px 2px 7px 2px;
  opacity: 0.85;
  user-select: none;
}
.iw-sector-badge-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(var(--iw-rgb-gold), 0.28) 40%, rgba(var(--iw-rgb-gold), 0.28) 100%);
}
.iw-sector-top-badge .iw-sector-badge-line:last-child {
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.28) 0%, rgba(var(--iw-rgb-gold), 0.28) 60%, transparent 100%);
}
.iw-sector-badge-cross {
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  line-height: 1;
  color: rgba(var(--iw-rgb-gold), 0.55);
}
.iw-sector-badge-text {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: rgba(var(--iw-rgb-gold), 0.65);
  white-space: nowrap;
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-badge-line {
  background: linear-gradient(90deg, transparent, rgba(140, 47, 35, 0.25) 40%, rgba(140, 47, 35, 0.25) 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-top-badge .iw-sector-badge-line:last-child {
  background: linear-gradient(90deg, rgba(140, 47, 35, 0.25) 0%, rgba(140, 47, 35, 0.25) 60%, transparent 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-badge-cross {
  color: rgba(140, 47, 35, 0.5);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-badge-text {
  color: rgba(140, 47, 35, 0.65);
}
@media (max-width: 420px) {
  .iw-sector-badge-text {
    font-size: 8px;
    letter-spacing: 1.2px;
  }
}
/* —— 调频选择头（Station Head）—— */
.iw-sector-head {
  background:
    linear-gradient(180deg, rgba(var(--iw-rgb-white), 0.025) 0%, rgba(var(--iw-rgb-white), 0.01) 100%),
    var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.32);
  border-radius: 6px;
  padding: 13px 14px 14px 14px;
  margin-bottom: 14px;
  position: relative;
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, 0.55),
    inset 0 0 0 2px rgba(var(--iw-rgb-gold), 0.12),
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08),
    0 4px 14px rgba(0, 0, 0, 0.45),
    0 1px 3px rgba(0, 0, 0, 0.6);
}
/* 收音机面板四角铆钉装饰（用伪元素做左上/右下两颗） */
.iw-sector-head::before,
.iw-sector-head::after {
  content: "";
  position: absolute;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-gold), 0.5);
}
.iw-sector-head::before { top: 7px; left: 7px; }
.iw-sector-head::after  { bottom: 7px; right: 7px; }
.iw-sector-head-top {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 8px;
}
.iw-sector-band {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 2px;
  color: rgba(var(--iw-rgb-gold), 0.75);
}
.iw-sector-code {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-white), 0.28);
}
.iw-sector-dial-row {
  margin: 4px 0 10px 0;
}
/* —— 拉线调谐盘（slide-rule dial）：刻度用物理像素渲染，不随容器拉伸变形 —— */
.iw-sector-dial {
  position: relative;
  padding: 0 12px;
}
.iw-sector-dial-track {
  position: relative;
  height: 38px;
}

/* 四档刻度：数字(4MHz) / 主(2MHz) / 次(1MHz) / 半频(0.5MHz) */
.iw-sector-tick {
  position: absolute;
  width: 1.5px;
  transform: translateX(-0.75px);
  background: rgba(var(--iw-rgb-white), 0.16);
}
.iw-sector-tick.is-num   { top: 12px; height: 15px; width: 3px;   transform: translateX(-1.5px);  background: rgba(var(--iw-rgb-white), 0.42); }
.iw-sector-tick.is-major { top: 16px; height: 11px; width: 2.5px; transform: translateX(-1.25px); background: rgba(var(--iw-rgb-white), 0.30); }
.iw-sector-tick.is-minor { top: 18px; height: 9px;  width: 2px;   transform: translateX(-1px);    background: rgba(var(--iw-rgb-white), 0.19); }
.iw-sector-tick.is-half  { top: 20px; height: 7px;  width: 1.5px; transform: translateX(-0.75px); background: rgba(var(--iw-rgb-white), 0.12); }
.iw-sector-tick span {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.42);
  line-height: 1;
  white-space: nowrap;
}
/* 金色拉线指针 + 顶部铆钉 */
.iw-sector-needle {
  position: absolute;
  top: 5px;
  height: 28px;
  width: 2px;
  margin-left: -1px;
  border-radius: 1px;
  background: linear-gradient(180deg,
    rgba(var(--iw-rgb-gold), 0.95),
    rgba(var(--iw-rgb-gold), 0.55) 78%,
    rgba(var(--iw-rgb-gold), 0.30));
  z-index: 2;
  will-change: left;
}
.iw-sector-needle-cap {
  position: absolute;
  top: -2px;
  left: 50%;
  width: 5px;
  height: 5px;
  margin-left: -2.5px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-gold), 0.95);
  box-shadow: 0 0 5px 1px rgba(var(--iw-rgb-gold), 0.5);
}
/* 待机：指针缓动搜台扫描 + 辉光呼吸 */
.iw-sector-dial[data-state="standby"] .iw-sector-needle {
  animation:
    iw-sector-scan 6.5s cubic-bezier(.45, .05, .55, .95) infinite alternate,
    iw-needle-glow 3.2s ease-in-out infinite;
  box-shadow: 0 0 7px 0 rgba(var(--iw-rgb-gold), 0.28);
}
@keyframes iw-sector-scan {
  from { left: var(--needle-from, 50%); }
  to   { left: 82%; }
}
@keyframes iw-needle-glow {
  0%, 100% { opacity: .55; }
  50%      { opacity: .95; }
}
/* 锁定：指针驻留频点，金色辉光 */
.iw-sector-dial[data-state="locked"] .iw-sector-needle {
  box-shadow: 0 0 10px 1px rgba(var(--iw-rgb-gold), 0.5);
}
/* 右上读数窗：锁定后频点数字点亮金色 */
.iw-sector-code b {
  font-weight: normal;
  color: rgba(var(--iw-rgb-gold), 0.95);
  text-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.45);
}
/* 日间模式：刻度数字加深、指针辉光收敛 */
.innerworld-panel[data-iw-theme="day"] .iw-sector-tick span {
  color: rgba(var(--iw-rgb-white), 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-needle-cap {
  box-shadow: 0 0 4px 1px rgba(var(--iw-rgb-gold), 0.35);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-dial[data-state="locked"] .iw-sector-needle {
  box-shadow: 0 0 6px 0 rgba(var(--iw-rgb-gold), 0.32);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-code b {
  text-shadow: none;
}
@media (max-width: 380px) {
  .iw-sector-tick.is-half { display: none; }
}
/* —— 下拉选择行 —— */
.iw-sector-select-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.iw-sector-select-label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.8);
  white-space: nowrap;
}
.iw-sector-select-label svg {
  color: rgba(var(--iw-rgb-gold), 0.8);
  flex-shrink: 0;
}
/* —— 自定义调频下拉（Tuner Dropdown）—— */
.iw-sector-tuner {
  flex: 1;
  position: relative;
  min-width: 0;
}
.iw-sector-tuner-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: "ShareTechMono", monospace;
  font-size: 12.5px;
  color: rgba(var(--iw-rgb-white), 0.9);
  background-color: rgba(0, 0, 0, 0.42);
  border-top: 1px solid rgba(0, 0, 0, 0.7);
  border-left: 1px solid rgba(0, 0, 0, 0.5);
  border-right: 1px solid rgba(0, 0, 0, 0.45);
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.1);
  border-radius: 4px;
  padding: 8px 10px 8px 12px;
  outline: none;
  cursor: pointer;
  box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.65),
              inset 0 1px 2px rgba(0, 0, 0, 0.8),
              0 1px 0 rgba(var(--iw-rgb-white), 0.08);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.iw-sector-tuner-trigger:hover {
  box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.75),
              inset 0 1px 2px rgba(0, 0, 0, 0.9),
              0 1px 0 rgba(var(--iw-rgb-gold), 0.2);
}
.iw-sector-tuner.is-open .iw-sector-tuner-trigger {
  border-color: rgba(var(--iw-rgb-gold), 0.5);
  border-bottom-color: rgba(var(--iw-rgb-gold), 0.65);
  box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.75),
              inset 0 0 0 1px rgba(var(--iw-rgb-gold), 0.25),
              0 1px 0 rgba(var(--iw-rgb-gold), 0.35);
}
.iw-sector-tuner-value {
  flex: 1;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: rgba(var(--iw-rgb-white), 0.45);
}
.iw-sector-tuner-value.is-set {
  color: rgba(var(--iw-rgb-white), 0.9);
}
.iw-sector-tuner-freq {
  flex-shrink: 0;
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  padding: 1px 6px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
  border-radius: 3px;
  background: rgba(var(--iw-rgb-gold), 0.06);
  text-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.4);
}
.iw-sector-tuner-caret {
  flex-shrink: 0;
  display: inline-flex;
  color: rgba(var(--iw-rgb-gold), 0.8);
  transition: transform 0.2s ease;
}
.iw-sector-tuner.is-open .iw-sector-tuner-caret {
  transform: rotate(180deg);
}
/* 展开浮层：预设波段卡 */
.iw-sector-tuner-menu {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 6px);
  z-index: 30;
  max-height: 216px;
  overflow-y: auto;
  padding: 5px;
  background:
    linear-gradient(180deg, rgba(var(--iw-rgb-white), 0.03) 0%, rgba(var(--iw-rgb-white), 0.008) 100%),
    var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.32);
  border-radius: 6px;
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, 0.55),
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.06),
    0 8px 24px rgba(0, 0, 0, 0.55),
    0 2px 6px rgba(0, 0, 0, 0.5);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px) scale(0.985);
  transform-origin: top center;
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  pointer-events: none;
  -webkit-overflow-scrolling: touch;
}
.iw-sector-tuner.is-open .iw-sector-tuner-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.iw-sector-tuner-opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 7px 10px;
  border-radius: 4px;
  cursor: pointer;
  border-left: 2px solid transparent;
  transition: background 0.15s ease, border-color 0.15s ease;
  -webkit-tap-highlight-color: transparent;
}
.iw-sector-tuner-opt:hover,
.iw-sector-tuner-opt:focus {
  background: rgba(var(--iw-rgb-white), 0.06);
  outline: none;
}
.iw-sector-tuner-opt.is-active {
  background: rgba(var(--iw-rgb-gold), 0.09);
}
.iw-sector-tuner-opt-name {
  font-size: 12px;
  color: rgba(var(--iw-rgb-white), 0.72);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.iw-sector-tuner-opt.is-active .iw-sector-tuner-opt-name {
  color: rgba(var(--iw-rgb-white), 0.95);
}
.iw-sector-tuner-opt-freq {
  flex-shrink: 0;
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.55);
}
.iw-sector-tuner-opt.is-active .iw-sector-tuner-opt-freq {
  color: rgba(var(--iw-rgb-gold), 0.95);
  text-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.45);
}
/* 浮层滚动条微光 */
.iw-sector-tuner-menu::-webkit-scrollbar { width: 4px; }
.iw-sector-tuner-menu::-webkit-scrollbar-thumb {
  background: rgba(var(--iw-rgb-gold), 0.25);
  border-radius: 2px;
}
.iw-sector-tuner-menu::-webkit-scrollbar-track { background: transparent; }
.innerworld-panel[data-iw-theme="day"] .iw-sector-head {
  border-color: rgba(140, 47, 35, 0.35);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.75),
    inset 0 0 0 2px rgba(140, 47, 35, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 3px 10px rgba(0, 0, 0, 0.08);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-head::before,
.innerworld-panel[data-iw-theme="day"] .iw-sector-head::after {
  background: rgba(140, 47, 35, 0.45);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-trigger {
  color: #2b2620;
  background-color: rgba(0, 0, 0, 0.06);
  border-top: 1px solid rgba(0, 0, 0, 0.22) !important;
  border-left: 1px solid rgba(0, 0, 0, 0.16) !important;
  border-right: 1px solid rgba(0, 0, 0, 0.14) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.9) !important;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.14),
              inset 0 1px 2px rgba(0, 0, 0, 0.18),
              0 1px 0 rgba(255, 255, 255, 0.8) !important;
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-value {
  color: rgba(43, 38, 32, 0.5);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-value.is-set {
  color: #2b2620;
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-freq {
  color: rgba(140, 47, 35, 0.85);
  border-color: rgba(140, 47, 35, 0.3);
  background: rgba(140, 47, 35, 0.06);
  text-shadow: none;
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-caret {
  color: rgba(140, 47, 35, 0.7);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner.is-open .iw-sector-tuner-trigger {
  border-color: rgba(140, 47, 35, 0.6) !important;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.18),
              inset 0 0 0 1px rgba(140, 47, 35, 0.3),
              0 1px 0 rgba(255, 255, 255, 0.9) !important;
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-menu {
  background: #f5f2eb;
  border-color: rgba(140, 47, 35, 0.35);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.75),
    0 6px 18px rgba(0, 0, 0, 0.12);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-opt-name {
  color: rgba(43, 38, 32, 0.75);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-opt:hover,
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-opt:focus {
  background: rgba(140, 47, 35, 0.07);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-opt.is-active {
  background: rgba(140, 47, 35, 0.1);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-opt.is-active .iw-sector-tuner-opt-name {
  color: #2b2620;
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-opt-freq {
  color: rgba(140, 47, 35, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-opt.is-active .iw-sector-tuner-opt-freq {
  color: rgba(140, 47, 35, 0.9);
  text-shadow: none;
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-tuner-menu::-webkit-scrollbar-thumb {
  background: rgba(140, 47, 35, 0.25);
}
.iw-sector-empty {
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.35);
  line-height: 1.5;
  flex: 1;
}
/* —— 地区概要行 —— */
.iw-sector-summary {
  margin-top: 10px;
  font-size: 10.5px;
  line-height: 1.55;
  color: rgba(var(--iw-rgb-white), 0.42);
  border-left: 2px solid rgba(var(--iw-rgb-gold), 0.35);
  padding-left: 9px;
}
/* —— 三张入口卡：02·A 大卡展布 + 下方并列双卡 —— */
.iw-sector-cards {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.iw-sector-cards.is-locked .iw-sector-travel-stage,
.iw-sector-cards.is-locked .iw-sector-card {
  filter: grayscale(1) brightness(0.55);
  pointer-events: none;
}
.iw-sector-cards-subgrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

/* ===== 02·A 专属特色大卡：双层叠纸手记 ===== */
.iw-sector-travel-stage {
  position: relative;
  cursor: pointer;
  user-select: none;
  margin-top: 4px;
  transition: transform 0.25s cubic-bezier(0.2, 0.8, 0.25, 1);
  -webkit-tap-highlight-color: transparent;
}
.iw-sector-travel-stage:hover {
  transform: translateY(-2px);
}
.iw-sector-travel-stage.is-dim {
  cursor: not-allowed;
}

/* 底层泛黄微旋纸张（探出边角） */
.iw-travel-under-sheet {
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(0deg, rgba(var(--iw-rgb-white), 0.015) 0, rgba(var(--iw-rgb-white), 0.015) 1px, transparent 1px, transparent 12px),
    #181512;
  border: 1px solid rgba(170, 125, 75, 0.25);
  border-radius: 4px;
  transform: rotate(-2.6deg) scale(0.995) translateY(3px);
  transform-origin: 30% 60%;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.6);
  pointer-events: none;
  z-index: 1;
}
.iw-under-sheet-tag {
  position: absolute;
  bottom: 6px;
  left: 12px;
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 1.5px;
  color: rgba(180, 135, 80, 0.4);
}

/* 顶层主手记纸张 */
.iw-travel-main-sheet {
  position: relative;
  z-index: 2;
  background:
    linear-gradient(135deg, rgba(220, 160, 90, 0.04) 0%, transparent 60%),
    var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  border-radius: 4px;
  padding: 13px 14px 12px 14px;
  /* 顶纸微缩，让加大旋转角的底纸边角探出更多 */
  margin: 2px 4px 2px 4px;
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, 0.5),
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08),
    0 8px 22px rgba(0, 0, 0, 0.55);
}
.iw-sector-travel-stage:hover .iw-travel-main-sheet {
  border-color: rgba(var(--iw-rgb-gold), 0.55);
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, 0.5),
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.12),
    0 12px 28px rgba(0, 0, 0, 0.65);
}

/* 黄铜回形针（稳稳夹住两张纸的顶沿） */
.iw-travel-clip {
  position: absolute;
  top: -8px;
  right: 28px;
  color: rgba(var(--iw-rgb-gold), 0.9);
  filter: drop-shadow(0 3px 4px rgba(0, 0, 0, 0.75));
  pointer-events: none;
  transform: rotate(-3deg);
  transition: transform 0.2s ease;
  z-index: 10;
}
.iw-sector-travel-stage:hover .iw-travel-clip {
  transform: rotate(0deg) translateY(-1px);
}

/* 主体：左右错落排版 */
.iw-travel-body {
  display: flex;
  gap: 14px;
  align-items: stretch;
}
.iw-travel-text-col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-self: stretch;
  padding: 12px 6px 4px 10px;
  position: relative;
  /* 手账横格纸背景：24px 周期，起点随 padding-top 下移 */
  background-image: repeating-linear-gradient(
    180deg,
    transparent 0px,
    transparent 23px,
    rgba(var(--iw-rgb-gold), 0.12) 23px,
    rgba(var(--iw-rgb-gold), 0.12) 24px
  );
  background-position: 0 12px;
}
.iw-travel-title {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: 1.4px;
  color: rgba(var(--iw-rgb-white), 0.95);
  margin-bottom: 8px;
  line-height: 1.25;
}
/* 荧光马克笔重点划线（微倾斜、半透明暖金微光涂抹痕） */
.iw-travel-title-mark {
  position: relative;
  display: inline-block;
  z-index: 1;
  padding: 0 4px;
}
.iw-travel-title-mark::after {
  content: "";
  position: absolute;
  left: -2px;
  right: -4px;
  bottom: 0px;
  height: 10px;
  background: rgba(var(--iw-rgb-gold), 0.32);
  border-radius: 2px;
  transform: rotate(-0.6deg) skewX(-6deg);
  z-index: -1;
  box-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.25);
  pointer-events: none;
}
.iw-travel-lead {
  font-size: 12.5px;
  line-height: 24px; /* 与横格纸 24px 严丝合缝对齐 */
  color: rgba(var(--iw-rgb-white), 0.62);
  text-indent: 2em; /* 手记首行缩进 */
}
/* 空白横格延伸区（手账未填满的空行，撑起整列与拍立得绝对平齐） */
.iw-travel-ruled-filler {
  flex: 1;
  min-height: 18px;
}
/* 手账底部极小页码与存档标号 */
.iw-travel-note-meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-family: 'ShareTechMono', monospace;
  font-size: 7.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.45);
  margin-top: auto;
}

/* 拍立得照片位（预留图片槽位，与文字约五五开） */
.iw-travel-photo-slot {
  width: 45%;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
  background: #141210;
  padding: 6px 6px 7px 6px;
  border-radius: 3px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  box-shadow:
    0 4px 12px rgba(0, 0, 0, 0.5),
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.08);
  transform: rotate(0.8deg);
  transform-origin: center center;
  transition: transform 0.2s ease;
  align-self: center;
}
.iw-sector-travel-stage:hover .iw-travel-photo-slot {
  transform: rotate(0deg) scale(1.02);
}
.iw-photo-tape-top {
  position: absolute;
  top: -4px;
  left: 50%;
  transform: translateX(-50%);
  width: 28px;
  height: 7px;
  background: rgba(220, 185, 130, 0.4);
  backdrop-filter: blur(1px);
  border-radius: 1px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
.iw-photo-frame {
  width: 100%;
  aspect-ratio: 1 / 1;
  background: #0a0908;
  border-radius: 2px;
  overflow: hidden;
  position: relative;
  border: 1px solid rgba(0, 0, 0, 0.7);
}
.iw-photo-content {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.iw-photo-content img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  /* 暗房显影质感：微降亮度 + 提对比 + 轻去饱和 + 暖化 */
  filter: brightness(0.92) contrast(1.08) saturate(0.82) sepia(0.08);
}
.iw-photo-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 4px;
  color: rgba(var(--iw-rgb-gold), 0.45);
}
.iw-photo-placeholder-icon {
  margin-bottom: 3px;
  opacity: 0.6;
}
.iw-photo-placeholder-text {
  font-family: "ShareTechMono", monospace;
  font-size: 7.5px;
  letter-spacing: 1px;
  line-height: 1.1;
  color: rgba(var(--iw-rgb-gold), 0.65);
}
.iw-photo-placeholder-sub {
  font-size: 7.5px;
  color: rgba(var(--iw-rgb-white), 0.3);
  margin-top: 2px;
}
.iw-photo-caption {
  font-family: "ShareTechMono", monospace;
  font-size: 7px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.38);
  margin-top: 5px;
  text-align: center;
  white-space: nowrap;
}

/* 日间模式适配（02·A 双层纸） */
.innerworld-panel[data-iw-theme="day"] .iw-travel-under-sheet {
  background: #f3eee3;
  border-color: rgba(140, 90, 45, 0.22);
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.innerworld-panel[data-iw-theme="day"] .iw-under-sheet-tag {
  color: rgba(140, 47, 35, 0.45);
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-main-sheet {
  background: #faf7f0;
  border-color: rgba(140, 47, 35, 0.35);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.8),
    0 4px 14px rgba(0, 0, 0, 0.08);
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-clip {
  color: rgba(140, 47, 35, 0.85);
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-title {
  color: #2b2620;
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-title-mark::after {
  background: rgba(240, 185, 75, 0.45);
  box-shadow: 0 0 6px rgba(240, 185, 75, 0.3);
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-text-col {
  background-image: repeating-linear-gradient(
    180deg,
    transparent 0px,
    transparent 21px,
    rgba(140, 47, 35, 0.12) 21px,
    rgba(140, 47, 35, 0.12) 22px
  );
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-note-meta {
  color: rgba(140, 47, 35, 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-lead {
  color: rgba(43, 38, 32, 0.65);
}
.innerworld-panel[data-iw-theme="day"] .iw-travel-photo-slot {
  background: #f0ebe0;
  border-color: rgba(140, 47, 35, 0.2);
}
.innerworld-panel[data-iw-theme="day"] .iw-photo-frame {
  background: #e3ddd0;
}
.innerworld-panel[data-iw-theme="day"] .iw-photo-content img {
  filter: brightness(1.02) contrast(1.05) saturate(0.75) sepia(0.12);
}
.innerworld-panel[data-iw-theme="day"] .iw-photo-placeholder {
  color: rgba(140, 47, 35, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-photo-placeholder-text {
  color: rgba(140, 47, 35, 0.8);
}

/* 小屏自适应：保持左图右字并排，照片槽与文字约五五开 */
@media (max-width: 480px) {
  .iw-travel-body {
    gap: 10px;
    align-items: stretch;
  }
  .iw-travel-photo-slot {
    width: 46%;
  }
  .iw-travel-text-col {
    padding: 10px 4px 2px 8px;
    /* 窄屏下横格周期微缩至 22px */
    background-image: repeating-linear-gradient(
      180deg,
      transparent 0px,
      transparent 21px,
      rgba(var(--iw-rgb-gold), 0.12) 21px,
      rgba(var(--iw-rgb-gold), 0.12) 22px
    );
    background-position: 0 10px;
  }
  .innerworld-panel[data-iw-theme="day"] .iw-travel-text-col {
    background-image: repeating-linear-gradient(
      180deg,
      transparent 0px,
      transparent 21px,
      rgba(140, 47, 35, 0.12) 21px,
      rgba(140, 47, 35, 0.12) 22px
    );
  }
  .iw-travel-title {
    font-size: 16px;
    margin-bottom: 6px;
  }
  .iw-travel-lead {
    font-size: 11.5px;
    line-height: 22px; /* 窄屏对齐 22px 横格 */
  }
  .iw-photo-caption {
    font-size: 6px;
    letter-spacing: 0.5px;
  }
  .iw-sector-cards-subgrid {
    grid-template-columns: 1fr;
  }
}
.iw-sector-card {
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  padding: 12px 10px 10px 10px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  min-height: 154px;
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
  position: relative;
  user-select: none;
  overflow: hidden;
}
.iw-sector-card:hover,
.iw-sector-card:active {
  transform: translateY(-2px);
}
.iw-sector-card.is-dim {
  cursor: not-allowed;
}

/* ===== 02·A 旅志怪谈：皮革旅行笔记 / 折页手账 ===== */
.iw-sector-card.is-travel {
  background:
    linear-gradient(135deg, rgba(160, 110, 60, 0.05) 0%, transparent 60%),
    var(--iw-cool-1);
  border-color: rgba(180, 130, 80, 0.22);
}
.iw-sector-card.is-travel:hover {
  border-color: rgba(220, 160, 90, 0.45);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45);
}
/* 黄铜回形针（夹在卡片右上角） */
.iw-card-prop-clip {
  position: absolute;
  top: -3px;
  right: 14px;
  color: rgba(var(--iw-rgb-gold), 0.75);
  filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.6));
  pointer-events: none;
  transform: rotate(-4deg);
  transition: transform 0.2s ease;
}
.iw-sector-card.is-travel:hover .iw-card-prop-clip {
  transform: rotate(0deg) translateY(-1px);
}
/* 右下角折页暗影 */
.iw-sector-card.is-travel::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 0;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 0 10px 10px;
  border-color: transparent transparent rgba(0, 0, 0, 0.45) transparent;
  pointer-events: none;
}

/* ===== 02·B 街闻巷语：论坛预览窗（终端窗口拟物 + 抽象骨架帖行） ===== */
.iw-sector-card.is-forum-preview {
  background:
    radial-gradient(circle at 50% 0%, rgba(var(--iw-rgb-white), 0.035) 0%, transparent 70%),
    var(--iw-cool-1);
  border-color: rgba(var(--iw-rgb-white), 0.14);
  padding: 0;
  overflow: hidden;
  gap: 0;
}
.iw-sector-card.is-forum-preview:hover {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45);
}

/* 终端窗口栏：圆点 + 假域名 + ONLINE 呼吸灯 */
.iw-forum-chrome {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  background: rgba(var(--iw-rgb-white), 0.04);
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.08);
}
.iw-forum-dots {
  display: inline-flex;
  gap: 3px;
  flex-shrink: 0;
}
.iw-forum-dots i {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.4);
  transition: background 0.3s ease, border-color 0.3s ease;
}
.iw-sector-card.is-forum-preview:hover .iw-forum-dots i:first-child {
  background: rgba(var(--iw-rgb-gold), 0.75);
  border-color: rgba(var(--iw-rgb-gold), 0.75);
}
.iw-forum-url {
  flex: 1;
  min-width: 0;
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.35);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 1px 5px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.06);
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.2);
}
.iw-forum-actions {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}
.iw-forum-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  border-radius: 2px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  transition: color 0.2s ease, background 0.2s ease;
}
.iw-sector-card.is-forum-preview:hover .iw-forum-action-btn {
  color: rgba(var(--iw-rgb-gold), 0.9);
}

/* 骨架内容区：双帖异构排版（图文帖 + 纯文带赞头像帖） */
.iw-forum-feed {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  padding: 8px 10px 14px 10px;
  animation: iwForumSkelBreath 4.5s ease-in-out infinite;
}
@keyframes iwForumSkelBreath {
  0%, 100% { opacity: 0.85; }
  50% { opacity: 1; }
}

/* 帖子一：左文右图布局 */
.iw-forum-item.is-media {
  display: flex;
  align-items: center;
  gap: 10px;
}
.iw-forum-item-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.iw-forum-item-meta {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-top: 1px;
}

/* 骨架线基本样式 */
.iw-forum-skel-line {
  border-radius: 2px;
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.3) 0%, rgba(var(--iw-rgb-gold), 0.16) 100%);
}
.iw-forum-skel-line.is-title {
  height: 6.5px;
}
.iw-forum-skel-line.is-sub {
  height: 5px;
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.22) 0%, rgba(var(--iw-rgb-gold), 0.12) 100%);
}
.iw-forum-skel-line.is-meta {
  height: 4px;
  background: rgba(var(--iw-rgb-white), 0.14);
}
.iw-forum-skel-badge {
  width: 10px;
  height: 4px;
  border-radius: 1px;
  background: rgba(var(--iw-rgb-gold), 0.5);
  flex-shrink: 0;
}

/* 右侧配图槽位（预留真实图片位，52x52 方格，微暗暗房噪波质感） */
.iw-forum-thumb-slot {
  width: 52px;
  height: 52px;
  flex-shrink: 0;
  border-radius: 4px;
  background:
    radial-gradient(circle at 40% 35%, rgba(var(--iw-rgb-gold), 0.12) 0%, transparent 65%),
    rgba(0, 0, 0, 0.4);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.28);
  box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.6);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.iw-forum-thumb-slot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  /* 胶片暗房微暖显影滤镜 */
  filter: brightness(0.92) contrast(1.1) saturate(0.85) sepia(0.06);
  transition: filter 0.3s ease;
}
.iw-forum-thumb-placeholder {
  color: rgba(var(--iw-rgb-gold), 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 帖子之间虚线分隔 */
.iw-forum-divider {
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
  margin: 1px 0;
}

/* 帖子二：纯文 + 社交行 */
.iw-forum-item.is-social {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.iw-forum-social-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 3px;
}

/* 「这些人赞过」微型头像叠压栈 */
.iw-forum-avatar-stack {
  display: inline-flex;
  align-items: center;
}
.iw-forum-avatar {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 1.2px solid var(--iw-cool-1);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
  display: inline-block;
}
.iw-forum-avatar + .iw-forum-avatar {
  margin-left: -4px;
}
/* 三个不同微缩质感的抽象头像剪影（几何渐变，防穿帮） */
.iw-forum-avatar.is-av1 {
  background: linear-gradient(135deg, rgba(var(--iw-rgb-gold), 0.65) 0%, #3a2e1d 100%);
  z-index: 3;
}
.iw-forum-avatar.is-av2 {
  background: linear-gradient(135deg, #4a6375 0%, #1e2830 100%);
  z-index: 2;
}
.iw-forum-avatar.is-av3 {
  background: linear-gradient(135deg, #7a5050 0%, #2f1d1d 100%);
  z-index: 1;
}

/* 爱心点赞计数微区 */
.iw-forum-like-stat {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  color: rgba(var(--iw-rgb-gold), 0.65);
}
.iw-forum-like-stat svg {
  stroke: rgba(var(--iw-rgb-gold), 0.7);
  transition: transform 0.2s ease, stroke 0.2s ease;
}

/* 右下角预览戳 */
.iw-forum-preview-stamp {
  position: absolute;
  right: 8px;
  bottom: 5px;
  font-family: "ShareTechMono", monospace;
  font-size: 7px;
  letter-spacing: 1.2px;
  color: rgba(var(--iw-rgb-gold), 0.5);
  transform: rotate(-1.2deg);
  pointer-events: none;
}

/* 悬停：整窗聚焦（骨架变亮、爱心微弹、头像微光） */
.iw-sector-card.is-forum-preview:hover .iw-forum-feed {
  animation: none;
  opacity: 1;
}
.iw-sector-card.is-forum-preview:hover .iw-forum-skel-line {
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.45) 0%, rgba(var(--iw-rgb-gold), 0.24) 100%);
}
.iw-sector-card.is-forum-preview:hover .iw-forum-thumb-slot {
  border-color: rgba(var(--iw-rgb-gold), 0.55);
}
.iw-sector-card.is-forum-preview:hover .iw-forum-like-stat svg {
  transform: scale(1.15);
  stroke: rgba(var(--iw-rgb-gold), 0.95);
}
.iw-sector-card.is-forum-preview:hover .iw-forum-preview-stamp {
  color: rgba(var(--iw-rgb-gold), 0.85);
}

/* ===== 02·C 驿邮分拣：复古明信片正面（左图右渐隐 + 右上邮编格 + 手写横线 + 底部大字） ===== */
.iw-sector-card.is-postal-preview {
  background:
    radial-gradient(circle at 85% 15%, rgba(var(--iw-rgb-white), 0.03) 0%, transparent 60%),
    var(--iw-cool-1);
  border-color: rgba(var(--iw-rgb-white), 0.14);
  padding: 0;
  overflow: hidden;
  position: relative;
  min-height: 188px; /* 高于论坛卡 160px 一档，比旅志大卡 210px 收一档，层次分明 */
  box-sizing: border-box;
  -webkit-user-select: none;
  user-select: none;
}
.iw-sector-card.is-postal-preview:hover {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45);
}

/* 左侧实景图（右缘渐隐融入卡纸） */
.iw-postcard-photo {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 62%;
  overflow: hidden;
  /* 右缘渐隐：从照片自身 18% 处即开始缓淡，一路羽化至右缘彻底透明，无生硬边界 */
  -webkit-mask-image: linear-gradient(90deg, #000 18%, transparent 100%);
  mask-image: linear-gradient(90deg, #000 18%, transparent 100%);
}
.iw-postcard-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  /* 复古胶片暗房微暖显影滤镜 */
  filter: brightness(0.94) contrast(1.08) saturate(0.85) sepia(0.08);
  transition: filter 0.3s ease;
}

/* 右上角 6 位邮编格 */
.iw-postcard-zip-row {
  position: absolute;
  top: 11px;
  right: 9px;
  display: flex;
  gap: 2.5px;
  align-items: center;
}
.iw-postcard-zip-box {
  width: 8px;
  height: 9px;
  border: 1px solid rgba(178, 59, 59, 0.65);
  border-radius: 1px;
  background: rgba(178, 59, 59, 0.06);
}

/* 右侧中部手写横线（等人来写的留白） */
.iw-postcard-addr-lines {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 30%;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.iw-postcard-addr-line {
  height: 1px;
  background: rgba(var(--iw-rgb-white), 0.18);
  width: 100%;
}

/* 底部压阵大字：POSTCARD */
.iw-postcard-brandline {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 8px;
  text-align: center;
  font-family: Georgia, "Times New Roman", "Songti SC", serif;
  font-size: 22px;
  font-weight: 400;
  letter-spacing: 6px;
  color: rgba(var(--iw-rgb-white), 0.32);
  text-indent: 6px; /* 平衡字距造成的偏移 */
  pointer-events: none;
}

/* 悬停微动：大字与横线提亮、照片聚焦 */
.iw-sector-card.is-postal-preview:hover .iw-postcard-brandline {
  color: rgba(var(--iw-rgb-gold), 0.6);
}
.iw-sector-card.is-postal-preview:hover .iw-postcard-addr-line {
  background: rgba(var(--iw-rgb-gold), 0.4);
}
.iw-sector-card.is-postal-preview:hover .iw-postcard-photo img {
  filter: brightness(1.0) contrast(1.1) saturate(0.9) sepia(0.05);
}

/* 日间模式适配 */
.innerworld-panel[data-iw-theme="day"] .iw-sector-card.is-travel {
  background: #f8f4ec;
  border-color: rgba(140, 90, 45, 0.25);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-card.is-travel:hover {
  border-color: rgba(140, 90, 45, 0.5);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.innerworld-panel[data-iw-theme="day"] .iw-card-prop-clip {
  color: rgba(140, 47, 35, 0.75);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-card.is-forum-preview {
  background: #fcfbf8;
  border-color: rgba(43, 38, 32, 0.18);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-chrome {
  background: rgba(43, 38, 32, 0.04);
  border-bottom-color: rgba(43, 38, 32, 0.1);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-dots i {
  border-color: rgba(140, 90, 45, 0.5);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-url {
  color: rgba(43, 38, 32, 0.4);
  border-color: rgba(43, 38, 32, 0.08);
  background: rgba(43, 38, 32, 0.03);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-action-btn {
  color: rgba(140, 90, 45, 0.7);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-divider {
  border-top-color: rgba(43, 38, 32, 0.1);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-skel-line {
  background: linear-gradient(90deg, rgba(140, 90, 45, 0.35) 0%, rgba(140, 90, 45, 0.18) 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-skel-line.is-sub {
  background: linear-gradient(90deg, rgba(140, 90, 45, 0.25) 0%, rgba(140, 90, 45, 0.12) 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-skel-line.is-meta {
  background: rgba(43, 38, 32, 0.14);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-skel-badge {
  background: rgba(140, 90, 45, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-thumb-slot {
  background: rgba(43, 38, 32, 0.05);
  border-color: rgba(140, 90, 45, 0.3);
  box-shadow: inset 0 0 4px rgba(43, 38, 32, 0.08);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-thumb-placeholder {
  color: rgba(140, 90, 45, 0.45);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-thumb-slot img {
  filter: brightness(1.02) contrast(1.05) saturate(0.8) sepia(0.1);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-avatar {
  border-color: #fcfbf8;
  box-shadow: 0 1px 2px rgba(43, 38, 32, 0.15);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-avatar.is-av1 {
  background: linear-gradient(135deg, #d8a060 0%, #8c5520 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-avatar.is-av2 {
  background: linear-gradient(135deg, #7a9cb5 0%, #3e5868 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-avatar.is-av3 {
  background: linear-gradient(135deg, #b58080 0%, #683838 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-like-stat {
  color: rgba(140, 47, 35, 0.65);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-like-stat svg {
  stroke: rgba(140, 47, 35, 0.7);
}
.innerworld-panel[data-iw-theme="day"] .iw-forum-preview-stamp {
  color: rgba(140, 47, 35, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-sector-card.is-postal-preview {
  background: #faf7f0;
  border-color: rgba(43, 38, 32, 0.18);
}
.innerworld-panel[data-iw-theme="day"] .iw-postcard-photo img {
  filter: brightness(1.02) contrast(1.04) saturate(0.8) sepia(0.1);
}
.innerworld-panel[data-iw-theme="day"] .iw-postcard-addr-line {
  background: rgba(43, 38, 32, 0.22);
}
.innerworld-panel[data-iw-theme="day"] .iw-postcard-zip-box {
  border-color: rgba(160, 40, 40, 0.7);
  background: rgba(160, 40, 40, 0.05);
}
.innerworld-panel[data-iw-theme="day"] .iw-postcard-brandline {
  color: rgba(43, 38, 32, 0.4);
}

.iw-sector-card-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 8px;
}
.iw-sector-card-num {
  font-family: "ShareTechMono", monospace;
  font-size: 11px;
  font-weight: 700;
  color: rgba(var(--iw-rgb-gold), 0.85);
}
.iw-sector-card-code {
  font-family: "ShareTechMono", monospace;
  font-size: 7px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.25);
}
.iw-sector-card-icon {
  color: rgba(var(--iw-rgb-gold), 0.7);
  margin-bottom: 6px;
}
.iw-sector-card-icon svg {
  display: block;
}
.iw-sector-card-title {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 13.5px;
  font-weight: 600;
  color: rgba(var(--iw-rgb-white), 0.88);
  margin-bottom: 5px;
  letter-spacing: 0.5px;
}
.iw-sector-card-brief {
  font-size: 9.5px;
  line-height: 1.5;
  color: rgba(var(--iw-rgb-white), 0.36);
  flex: 1;
}
.iw-sector-card-status {
  font-family: "ShareTechMono", monospace;
  font-size: 7.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.25);
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
  padding-top: 5px;
  margin-top: auto;
  text-align: right;
}
/* 已选地区后：卡片底部状态点亮为金色 STANDBY */
.iw-sector-cards:not(.is-locked) .iw-sector-card-status {
  color: rgba(var(--iw-rgb-gold), 0.5);
}
/* —— 二级详情空态页 —— */
.iw-sector-detail {
  background:
    linear-gradient(180deg, rgba(var(--iw-rgb-white), 0.02) 0%, rgba(var(--iw-rgb-white), 0) 100%),
    var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.18);
  border-radius: 6px;
  padding: 14px;
  min-height: 300px;
}
/* 旅志怪谈手账详情页专用：去掉描边框与底色，让手账纸直接落在面板上，收尾干净无占位 */
.iw-sector-detail--bare {
  background: none;
  border: none;
  border-radius: 0;
  padding: 0;
  min-height: 0;
}
.iw-sector-detail-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.06);
  margin-bottom: 14px;
}
.iw-sector-region-tag {
  margin-left: auto;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
  border-radius: 3px;
  padding: 3px 7px;
}
/* 空态舞台 */
.iw-sector-empty-stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 46px 18px 40px 18px;
}
.iw-sector-empty-icon {
  color: rgba(var(--iw-rgb-gold), 0.55);
  margin-bottom: 16px;
}
.iw-sector-empty-title {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 15px;
  font-weight: 600;
  color: rgba(var(--iw-rgb-white), 0.8);
  margin-bottom: 8px;
  letter-spacing: 1px;
}
.iw-sector-empty-line {
  font-size: 11px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.4);
  margin-bottom: 12px;
}
.iw-sector-empty-sub {
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-white), 0.25);
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
  padding-top: 10px;
  width: 100%;
}
/* 小屏适配：三卡改单列 */
@media (max-width: 420px) {
  .iw-sector-cards {
    grid-template-columns: 1fr;
  }
}
/* ============================================================
   ===== 02·B 城事信息港 · 地区门户（UI 阶段）=====
   前缀 iw-lp-（Local Portal）；颜色只使用现有里世界令牌
   ============================================================ */
/* 入口卡：网页版面缩略，不再伪装成浏览器窗口 */
.iw-sector-card.is-portal-preview {
  min-height: 178px;
  padding: 12px 12px 9px;
  gap: 0;
  background:
    linear-gradient(180deg, rgba(var(--iw-rgb-white), 0.035), transparent 58%),
    var(--iw-cool-1);
  border-color: rgba(var(--iw-rgb-white), 0.14);
}
.iw-sector-card.is-portal-preview:hover {
  border-color: rgba(var(--iw-rgb-gold), 0.45);
  box-shadow: 0 6px 16px rgba(var(--iw-rgb-black), 0.45);
}
.iw-lp-card-mast {
  display: flex;
  align-items: center;
  gap: 7px;
  font-family: "ShareTechMono", monospace;
  font-size: 7px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.68);
}
.iw-lp-card-mast i {
  flex: 1;
  height: 1px;
  background: rgba(var(--iw-rgb-gold), 0.24);
}
.iw-lp-card-title {
  margin: 7px 0 6px;
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 18px;
  line-height: 1.15;
  letter-spacing: 2px;
  color: var(--iw-text-0);
}
.iw-lp-card-nav {
  display: flex;
  gap: 12px;
  padding: 4px 0;
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.12);
  font-size: 8px;
  color: var(--iw-text-3);
}
.iw-lp-card-nav span:first-child { color: var(--iw-gold); }
.iw-lp-card-lead {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 62px;
  gap: 10px;
  padding: 10px 0 9px;
}
.iw-lp-card-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 8px;
  line-height: 1.4;
  color: rgba(var(--iw-rgb-white), 0.42);
}
.iw-lp-card-copy strong {
  margin-bottom: 1px;
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 10px;
  font-weight: 500;
  color: var(--iw-text-1);
}
.iw-lp-card-copy small {
  margin-top: auto;
  font-family: "ShareTechMono", monospace;
  font-size: 6.5px;
  letter-spacing: 0.7px;
  color: rgba(var(--iw-rgb-gold), 0.55);
}
.iw-lp-card-photo {
  height: 62px;
  overflow: hidden;
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 2px;
}
.iw-lp-card-photo img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  filter: brightness(0.9) saturate(0.7) contrast(1.06);
}
.iw-lp-card-foot {
  display: flex;
  justify-content: space-between;
  gap: 6px;
  margin-top: auto;
  padding-top: 6px;
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.08);
  font-family: "ShareTechMono", monospace;
  font-size: 6px;
  letter-spacing: 0.45px;
  color: rgba(var(--iw-rgb-white), 0.3);
}
.iw-lp-card-foot span:last-child { color: rgba(var(--iw-rgb-gold), 0.58); }

/* 详情页：一栏一轴，以细线、字号层级与留白建立网页秩序 */
.iw-lp-detail .iw-sector-detail-head {
  margin-bottom: 18px;
  padding-bottom: 0;
  border-bottom: 0;
}
.iw-local-portal {
  width: 100%;
  color: var(--iw-text-1);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
}
.iw-lp-masthead { padding: 6px 1px 0; }
.iw-lp-mast-kicker {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1.8px;
  color: rgba(var(--iw-rgb-gold), 0.75);
}
.iw-lp-masthead h1 {
  margin: 8px 0 5px;
  font-family: Georgia, "Songti SC", "SimSun", "Noto Serif", serif;
  font-size: 24px;
  font-weight: 500;
  line-height: 1.28;
  letter-spacing: 1px;
  color: var(--iw-text-0);
}
.iw-lp-mast-en {
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 1.35px;
  color: rgba(var(--iw-rgb-white), 0.36);
}
.iw-lp-bulletin {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 7px 0;
}
.iw-lp-bulletin-label {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--iw-gold);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1px;
}
.iw-lp-bulletin-text {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: 10.5px;
  color: var(--iw-text-2);
}
.iw-lp-bulletin-text.is-leaving {
  opacity: 0;
  transform: translateY(-3px);
  transition: opacity 160ms ease, transform 160ms ease;
}
.iw-lp-bulletin-text.is-entering {
  animation: iw-lp-bulletin-in 240ms ease both;
}
@keyframes iw-lp-bulletin-in {
  from { opacity: 0; transform: translateY(3px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ---------------- 02·B 地方公事 · 空态（公报待派驻） ---------------- */
.iw-lp-empty {
  display: flex;
  justify-content: center;
  padding: 42px 0 56px;
}
.iw-lp-empty-card {
  width: 100%;
  max-width: 420px;
  padding: 34px 26px 26px;
  text-align: center;
  border: 1px solid rgba(var(--iw-rgb-white), 0.09);
  outline: 1px solid rgba(var(--iw-rgb-white), 0.04);
  outline-offset: 4px;
  background:
    linear-gradient(180deg, rgba(var(--iw-rgb-white), 0.028), rgba(var(--iw-rgb-white), 0.008));
  position: relative;
  animation: iw-lp-empty-in 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes iw-lp-empty-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.iw-lp-empty-stamp {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 76px;
  height: 76px;
  margin-bottom: 18px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.28);
  border-radius: 50%;
  transform: rotate(-6deg);
}
.iw-lp-empty-kicker {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 2.5px;
  color: var(--iw-text-3);
}
.iw-lp-empty-title {
  margin-top: 12px;
  font-size: 19px;
  font-weight: 600;
  letter-spacing: 1px;
  color: var(--iw-text-1);
}
.iw-lp-empty-sub {
  margin-top: 9px;
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-gold), 0.62);
}
.iw-lp-empty-desc {
  margin: 16px auto 0;
  max-width: 300px;
  font-size: 12px;
  line-height: 1.9;
  color: var(--iw-text-2);
}
.iw-lp-empty-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 24px;
  padding: 12px 30px;
  font-size: 13px;
  letter-spacing: 2px;
  color: var(--iw-text-1);
  background: rgba(var(--iw-rgb-gold), 0.08);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.iw-lp-empty-btn:hover { background: rgba(var(--iw-rgb-gold), 0.15); border-color: rgba(var(--iw-rgb-gold), 0.55); }
.iw-lp-empty-btn:active { transform: scale(0.97); }
.iw-lp-empty-btn svg { color: rgba(var(--iw-rgb-gold), 0.8); }
.iw-lp-empty-foot {
  margin-top: 24px;
  padding-top: 14px;
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 1.2px;
  color: var(--iw-text-3);
}

/* ---------------- 02·B 地方公事 · 加载态（公报版面骨架屏） ---------------- */
.iw-lp-skeleton { padding-top: 4px; }
.iw-lp-skel-status {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 1px 16px;
  font-family: "ShareTechMono", monospace;
  font-size: 9.5px;
  letter-spacing: 0.6px;
  color: rgba(var(--iw-rgb-gold), 0.72);
}
.iw-lp-skel-pulse {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-gold), 0.75);
  flex-shrink: 0;
  animation: iw-lp-skel-dot 1.4s ease-in-out infinite;
}
@keyframes iw-lp-skel-dot {
  0%, 100% { opacity: 0.35; box-shadow: 0 0 0 0 rgba(var(--iw-rgb-gold), 0.25); }
  50% { opacity: 1; box-shadow: 0 0 0 4px rgba(var(--iw-rgb-gold), 0); }
}
.iw-lp-skel-line {
  position: relative;
  overflow: hidden;
  height: 10px;
  border-radius: 2px;
  background: rgba(var(--iw-rgb-white), 0.05);
  animation: iwSkelSilverBreathe 2s ease-in-out infinite alternate;
}
/* 扫光层：一道斜向微光掠过，模拟电报接收中的扫描 */
.iw-lp-skel-line::after,
.iw-lp-skel-photo::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 35%, rgba(var(--iw-rgb-white), 0.055) 50%, transparent 65%);
  transform: translateX(-100%);
  animation: iw-lp-skel-sweep 2.2s ease-in-out infinite;
}
@keyframes iw-lp-skel-sweep {
  0% { transform: translateX(-100%); }
  60%, 100% { transform: translateX(100%); }
}
.iw-lp-skel-mast { display: flex; flex-direction: column; gap: 11px; padding: 6px 1px 20px; }
.iw-lp-skel-bulletin { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid rgba(var(--iw-rgb-white), 0.06); border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.06); }
.iw-lp-skel-nav { display: flex; gap: 22px; padding: 16px 1px 20px; }
.iw-lp-skel-lead { display: flex; flex-direction: column; gap: 12px; padding-bottom: 26px; }
.iw-lp-skel-photo {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 168px;
  border-radius: 3px;
  background: rgba(var(--iw-rgb-white), 0.04);
  animation: iwSkelSilverBreathe 2s ease-in-out infinite alternate;
}
.iw-lp-skel-photo.is-event { height: 130px; margin-top: 4px; }
.iw-lp-skel-section { display: flex; flex-direction: column; gap: 14px; padding: 20px 0 8px; border-top: 1px solid rgba(var(--iw-rgb-white), 0.06); }
.iw-lp-skel-headrow { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2px; }
.iw-lp-skel-notice { display: flex; flex-direction: column; gap: 9px; padding: 12px 0; border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.05); }
.iw-lp-skel-notice:last-child { border-bottom: 0; }
.iw-lp-skel-stats { display: flex; gap: 14px; padding: 4px 0 8px; }
/* 宽度/高度工具类（仅骨架屏作用域） */
.iw-lp-skeleton .w-12 { width: 12%; } .iw-lp-skeleton .w-16 { width: 16%; }
.iw-lp-skeleton .w-24 { width: 24%; } .iw-lp-skeleton .w-32 { width: 32%; }
.iw-lp-skeleton .w-40 { width: 40%; } .iw-lp-skeleton .w-48 { width: 48%; }
.iw-lp-skeleton .w-56 { width: 56%; } .iw-lp-skeleton .w-64 { width: 64%; }
.iw-lp-skeleton .w-72 { width: 72%; } .iw-lp-skeleton .w-80 { width: 80%; }
.iw-lp-skeleton .w-90 { width: 90%; }
.iw-lp-skeleton .flex-1 { flex: 1; width: auto; }
.iw-lp-skeleton .h-8 { height: 8px; } .iw-lp-skeleton .h-10 { height: 10px; }
.iw-lp-skeleton .h-12 { height: 12px; } .iw-lp-skeleton .h-16 { height: 16px; }
.iw-lp-skeleton .h-22 { height: 22px; } .iw-lp-skeleton .h-24 { height: 24px; }
@media (prefers-reduced-motion: reduce) {
  .iw-lp-empty-card { animation: none; }
  .iw-lp-skel-pulse { animation: none; opacity: 0.8; }
  .iw-lp-skel-line, .iw-lp-skel-photo { animation: none; }
  .iw-lp-skel-line::after, .iw-lp-skel-photo::after { animation: none; display: none; }
}
.iw-lp-bulletin-count {
  flex-shrink: 0;
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  color: rgba(var(--iw-rgb-white), 0.32);
}
.iw-lp-nav {
  display: grid;
  /* 4 个栏目必须等分一排：原先写死 3 列，第 4 个 tab（辖区通报）被挤到第二行。
     320px 最窄机型实测每格 72px、文字含 padding 仅需 51.8px，余量 20px，无需缩字号。 */
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 0 0 22px;
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.15);
}
.iw-lp-nav button {
  position: relative;
  min-height: 40px;
  padding: 0 4px;
  border: 0;
  background: transparent;
  color: var(--iw-text-3);
  font: inherit;
  font-size: 11px;
  letter-spacing: 0.5px;
  /* 栏目名一律单行：以后文字变长也不许悄悄折成两行（撑不下宁可视觉截断，不要换行破版） */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.iw-lp-nav button::after {
  content: "";
  position: absolute;
  left: 18%;
  right: 18%;
  bottom: -1px;
  height: 2px;
  background: transparent;
}
.iw-lp-nav button.is-active { color: var(--iw-gold); }
.iw-lp-nav button.is-active::after { background: var(--iw-gold); }
.iw-lp-nav button:active { background: rgba(var(--iw-rgb-white), 0.045); }

.iw-lp-lead-story { padding-bottom: 24px; }
.iw-lp-lead-story.is-expandable {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.iw-lp-lead-story.is-expandable:focus-visible {
  outline: 1px solid rgba(var(--iw-rgb-gold), 0.72);
  outline-offset: 8px;
}
.iw-lp-lead-kicker {
  margin-bottom: 8px;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1.2px;
  color: rgba(var(--iw-rgb-gold), 0.72);
}
.iw-lp-media[hidden] { display: none !important; }
.iw-lp-media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  filter: brightness(0.92) saturate(0.72) contrast(1.06);
}
.iw-lp-hero-media {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border: 1px solid rgba(var(--iw-rgb-white), 0.13);
  border-radius: 3px;
  background: var(--iw-cool-2);
}
.iw-lp-lead-story h2 {
  margin: 12px 0 6px;
  font-family: Georgia, "Songti SC", "SimSun", "Noto Serif", serif;
  font-size: 18px;
  font-weight: 500;
  line-height: 1.48;
  color: var(--iw-text-0);
}
.iw-lp-lead-story p {
  margin: 0;
  font-size: 10px;
  line-height: 1.65;
  color: rgba(var(--iw-rgb-white), 0.42);
}

.iw-lp-lead-story .iw-lp-lead-summary {
  margin-top: 10px;
  font-size: 12px;
  line-height: 1.85;
  color: var(--iw-text-2);
}
.iw-lp-story-wrap {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition: grid-template-rows 0.32s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s ease;
}
.iw-lp-story-wrap[hidden] { display: none; }
.iw-lp-lead-story.is-expanded .iw-lp-story-wrap {
  grid-template-rows: 1fr;
  opacity: 1;
}
.iw-lp-story-body { min-height: 0; overflow: hidden; }
.iw-lp-lead-story .iw-lp-story-body p {
  margin: 0;
  padding-top: 10px;
  font-size: 12px;
  line-height: 1.85;
  color: var(--iw-text-2);
}
.iw-lp-story-meta {
  padding: 13px 0 3px;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  line-height: 1.6;
  color: rgba(var(--iw-rgb-gold), 0.62);
}

.iw-lp-section {
  padding-top: 22px;
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.16);
  scroll-margin-top: 8px;
}
.iw-lp-section + .iw-lp-section { margin-top: 28px; }
.iw-lp-section-head { margin-bottom: 4px; }
.iw-lp-section-code {
  display: flex;
  align-items: baseline;
  gap: 7px;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 1.25px;
  color: rgba(var(--iw-rgb-gold), 0.68);
}
.iw-lp-section-code span:first-child { font-size: 15px; color: var(--iw-gold); }
.iw-lp-section-title-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding: 7px 0 12px;
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.09);
}
#iw-lp-mailbox .iw-lp-section-title-row { border-bottom: 0; }
.iw-lp-section-title-row h2 {
  margin: 0;
  font-family: Georgia, "Songti SC", "SimSun", "Noto Serif", serif;
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 0.5px;
  color: var(--iw-text-0);
}
.iw-lp-section-title-row > span {
  flex-shrink: 0;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.4);
}

.iw-lp-notice {
  position: relative;
  padding: 15px 0;
}
.iw-lp-notice.is-expandable {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.iw-lp-notice.is-expandable:focus-visible {
  outline: 1px solid rgba(var(--iw-rgb-gold), 0.72);
  outline-offset: 5px;
}
.iw-lp-notice + .iw-lp-notice { border-top: 1px solid rgba(var(--iw-rgb-white), 0.075); }
.iw-lp-notice.has-media {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 104px;
  align-items: start;
  gap: 14px;
}
.iw-lp-notice-copy { min-width: 0; }
.iw-lp-notice-heading {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.iw-lp-notice-heading h3 { flex: 1; min-width: 0; }
.iw-lp-notice-arrow {
  display: inline-flex;
  flex-shrink: 0;
  margin-top: 3px;
  color: rgba(var(--iw-rgb-gold), 0.52);
}
.iw-lp-notice-arrow svg {
  display: block;
  transition: transform 0.2s ease, color 0.2s ease;
}
.iw-lp-notice.is-expanded .iw-lp-notice-arrow svg { transform: rotate(180deg); }
.iw-lp-notice h3,
.iw-lp-case h3,
.iw-lp-event-feature h3,
.iw-lp-event-row h3 {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.55;
  color: var(--iw-text-1);
}
.iw-lp-notice p {
  margin: 6px 0 9px;
  font-size: 11px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.5);
}
.iw-lp-notice-detail-wrap {
  display: grid;
  grid-column: 1 / -1;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
.iw-lp-notice-detail-wrap[hidden] { display: none; }
.iw-lp-notice.is-expanded .iw-lp-notice-detail-wrap { grid-template-rows: 1fr; }
.iw-lp-notice-detail { min-height: 0; overflow: hidden; }
.iw-lp-notice-detail-rule {
  display: block;
  height: 1px;
  margin-top: 12px;
  background: rgba(var(--iw-rgb-gold), 0.2);
  transform: scaleX(0);
  transition: transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
.iw-lp-notice.is-expanded .iw-lp-notice-detail-rule { transform: scaleX(1); }
.iw-lp-notice .iw-lp-notice-note {
  margin: 0;
  padding-top: 10px;
  font-size: 11px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.5);
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity 0.18s ease 0.04s, transform 0.2s ease 0.04s;
}
.iw-lp-notice.is-expanded .iw-lp-notice-note {
  opacity: 1;
  transform: translateY(0);
}
.iw-lp-text-tag.iw-lp-notice-status {
  padding-left: 0;
  border-left: 0;
  transform-origin: 50% 50%;
}
.iw-lp-notice-status.is-stamping { animation: iwLpNoticeStamp 0.22s ease-out; }
@keyframes iwLpNoticeStamp {
  0%, 100% { transform: scale(1); }
  48% { transform: scale(1.04); }
}
.iw-lp-notice-media {
  width: 104px;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border: 1px solid rgba(var(--iw-rgb-white), 0.12);
  border-radius: 2px;
  background: var(--iw-cool-2);
}
.iw-lp-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
}
.iw-lp-meta time { font-family: "ShareTechMono", monospace; }
.iw-lp-text-tag {
  padding-left: 7px;
  border-left: 1px solid rgba(var(--iw-rgb-gold), 0.32);
  color: rgba(var(--iw-rgb-gold), 0.68);
}

.iw-lp-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 14px 0 2px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.1);
  background: rgba(var(--iw-rgb-white), 0.018);
}
.iw-lp-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 11px 4px 10px;
}
.iw-lp-stat strong {
  font-family: "ShareTechMono", monospace;
  font-size: 20px;
  font-weight: 400;
  line-height: 1;
  color: var(--iw-gold);
}
.iw-lp-stat span { font-size: 9px; color: var(--iw-text-3); }
.iw-lp-case { padding: 16px 0 13px; }
.iw-lp-case + .iw-lp-case { border-top: 1px solid rgba(var(--iw-rgb-white), 0.09); }
.iw-lp-case-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}
.iw-lp-case-id {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 0.4px;
  color: rgba(var(--iw-rgb-white), 0.38);
}
.iw-lp-status {
  flex-shrink: 0;
  padding: 2px 6px;
  border: 1px solid rgba(var(--iw-rgb-white), 0.18);
  border-radius: 2px;
  font-size: 9px;
  line-height: 1.4;
  color: var(--iw-text-3);
}
.iw-lp-status.is-doing {
  border-color: rgba(var(--iw-rgb-gold), 0.42);
  color: var(--iw-gold);
}
.iw-lp-case-summary {
  margin: 7px 0 8px;
  font-size: 11px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.5);
}
.iw-lp-case-parties {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 14px;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
}
.iw-lp-reply {
  margin: 0;
  padding: 8px 12px 13px;
  border: 0;
  background: transparent;
}
.iw-lp-reply[hidden] { display: none; }
.iw-lp-reply.is-opening { animation: iw-lp-reply-open 0.2s ease-out both; }
.iw-lp-reply.is-closing { animation: iw-lp-reply-close 0.2s ease-in both; }
@keyframes iw-lp-reply-open {
  from { opacity: 0; transform: translateY(-3px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes iw-lp-reply-close {
  from { opacity: 1; transform: translateY(0); }
  to { opacity: 0; transform: translateY(-3px); }
}
.iw-lp-reply p {
  margin: 0 0 12px;
  font-size: 11px;
  line-height: 1.85;
  color: var(--iw-text-2);
}
.iw-lp-reply-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  font-size: 9px;
  line-height: 1.5;
  color: rgba(var(--iw-rgb-white), 0.38);
}
.iw-lp-reply-meta time {
  flex-shrink: 0;
  font-family: "ShareTechMono", monospace;
}
.iw-lp-reply-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  min-height: 36px;
  margin-top: 12px;
  padding: 6px 0;
  border: 0;
  background: transparent;
  color: rgba(var(--iw-rgb-gold), 0.78);
  font: inherit;
  font-size: 10px;
  text-align: left;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.iw-lp-reply-toggle:hover { color: var(--iw-gold); }
.iw-lp-reply-toggle:focus-visible { outline: 1px solid var(--iw-gold); outline-offset: 2px; }
.iw-lp-reply-toggle-action {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}
.iw-lp-reply-toggle-action > span { font-size: 9px; }
.iw-lp-reply-toggle svg { flex-shrink: 0; transition: transform 0.2s ease; }
.iw-lp-reply-toggle.is-open svg { transform: rotate(180deg); }

.iw-lp-event-feature {
  padding: 16px 0;
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.09);
}
.iw-lp-event-feature.has-media {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: 15px;
  align-items: stretch;
}
.iw-lp-event-media {
  width: 104px;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border: 1px solid rgba(var(--iw-rgb-white), 0.14);
  border-radius: 2px;
  background: var(--iw-cool-2);
}
.iw-lp-event-copy { min-width: 0; }
.iw-lp-event-date {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-family: "ShareTechMono", monospace;
}
.iw-lp-event-date strong {
  font-size: 16px;
  font-weight: 400;
  color: var(--iw-gold);
}
.iw-lp-event-date span { font-size: 9px; color: rgba(var(--iw-rgb-white), 0.42); }
.iw-lp-event-feature h3 { margin-top: 7px; }
.iw-lp-event-feature p {
  margin: 4px 0;
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.48);
}
.iw-lp-event-time {
  display: block;
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.42);
}
.iw-lp-ticket {
  display: inline-block;
  margin-top: 8px;
  padding-top: 5px;
  border-top: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  font-size: 9px;
  color: rgba(var(--iw-rgb-gold), 0.75);
}
.iw-lp-event-row {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 13px 0;
}
.iw-lp-event-row + .iw-lp-event-row { border-top: 1px solid rgba(var(--iw-rgb-white), 0.07); }
.iw-lp-event-row .iw-lp-event-date { flex-direction: column; gap: 1px; }
.iw-lp-event-row .iw-lp-event-date strong { font-size: 14px; }
.iw-lp-event-row-main { min-width: 0; }
.iw-lp-event-row-main h3 { font-size: 12px; }
.iw-lp-event-row-main > span {
  display: block;
  margin-top: 2px;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
}
.iw-lp-event-row-ticket {
  font-size: 9px;
  color: rgba(var(--iw-rgb-gold), 0.65);
  white-space: nowrap;
}
/* 辖区日历 · 活动票签：从日期侧抽出，不是普通的向下附页 */
.iw-lp-event.is-expandable {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.iw-lp-event.is-expandable:focus-visible {
  outline: 1px solid rgba(var(--iw-rgb-gold), 0.72);
  outline-offset: 5px;
}
.iw-lp-event-copy { position: relative; padding-right: 30px; }
.iw-lp-event-date { position: relative; }
.iw-lp-event-date strong {
  display: inline-block;
  transform-origin: 15% 80%;
}
.iw-lp-event.is-expanded .iw-lp-event-date strong {
  animation: iwLpEventDateStamp 0.36s cubic-bezier(0.2, 0.8, 0.2, 1);
}
@keyframes iwLpEventDateStamp {
  0%, 100% { transform: translateY(0) scale(1); }
  42% { transform: translateY(1px) scale(0.91, 0.94); }
  72% { transform: translateY(0) scale(1.025); }
}
.iw-lp-event-date .iw-lp-event-seen {
  display: inline-block;
  margin-left: 2px;
  padding: 1px 3px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.38);
  color: rgba(var(--iw-rgb-gold), 0.7);
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 8px;
  line-height: 1.25;
  letter-spacing: 0.5px;
  white-space: nowrap;
  opacity: 0;
  transform: rotate(-6deg) scale(0.82);
  transition: opacity 0.2s ease, transform 0.24s cubic-bezier(0.16, 1, 0.3, 1);
}
.iw-lp-event-row .iw-lp-event-date .iw-lp-event-seen {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  margin-left: 0;
}
.iw-lp-event.is-viewed .iw-lp-event-date .iw-lp-event-seen {
  opacity: 0.72;
  transform: rotate(-6deg) scale(1);
}
.iw-lp-event-open-mark {
  position: absolute;
  right: 0;
  bottom: 1px;
  display: inline-flex;
  color: rgba(var(--iw-rgb-gold), 0.48);
  opacity: 0.78;
  transform-origin: 20% 50%;
  transition: color 0.2s ease, opacity 0.2s ease, transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}
.iw-lp-event-open-mark svg { display: block; }
.iw-lp-event.is-expandable:hover .iw-lp-event-open-mark,
.iw-lp-event.is-expanded .iw-lp-event-open-mark {
  color: var(--iw-gold);
  opacity: 1;
}
.iw-lp-event.is-expanded .iw-lp-event-open-mark { transform: translateX(3px) rotate(-7deg); }
.iw-lp-event-row-aside {
  grid-column: 3;
  grid-row: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 7px;
}
.iw-lp-event-row-aside .iw-lp-event-open-mark { position: static; flex-shrink: 0; }
.iw-lp-event-detail-wrap {
  display: grid;
  grid-column: 1 / -1;
  grid-template-rows: 0fr;
  opacity: 0;
  transform: translateY(-4px);
  transition: grid-template-rows 0.36s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.24s ease, transform 0.32s ease;
}
.iw-lp-event-detail-wrap[hidden] { display: none; }
.iw-lp-event.is-expanded .iw-lp-event-detail-wrap {
  grid-template-rows: 1fr;
  opacity: 1;
  transform: translateY(0);
}
.iw-lp-event-detail-clip { min-height: 0; overflow: hidden; padding: 0 1px; }
.iw-lp-event-ticket {
  --iw-event-notch-y: 35px;
  position: relative;
  margin: 14px 4px 2px 0;
  padding: 12px 14px 13px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
  border-radius: 2px;
  background: linear-gradient(115deg, var(--iw-cool-1), var(--iw-cool-2));
  box-shadow: 0 5px 14px rgba(var(--iw-rgb-black), 0.12);
  opacity: 0.25;
  transform: translateX(-34px) rotate(-1.4deg);
  transform-origin: 0 24px;
  transition: transform 0.38s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.24s ease 0.04s;
  /* 直接裁掉票纸两侧各半个圆，不再用完整圆形覆盖边缘 */
  -webkit-mask-image:
    radial-gradient(circle 6px at 0 var(--iw-event-notch-y), transparent 98%, #000 100%),
    radial-gradient(circle 6px at 100% var(--iw-event-notch-y), transparent 98%, #000 100%);
  -webkit-mask-composite: source-in;
  mask-image:
    radial-gradient(circle 6px at 0 var(--iw-event-notch-y), transparent 98%, #000 100%),
    radial-gradient(circle 6px at 100% var(--iw-event-notch-y), transparent 98%, #000 100%);
  mask-composite: intersect;
}
.iw-lp-event.is-expanded .iw-lp-event-ticket {
  opacity: 1;
  transform: translateX(0) rotate(0);
}
/* 两侧半圆切口与虚线共同形成票根，而非普通信息卡 */
.iw-lp-event-ticket-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-bottom: 9px;
  border-bottom: 1px dashed rgba(var(--iw-rgb-gold), 0.3);
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  line-height: 1.5;
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-gold), 0.72);
}
.iw-lp-event-ticket-head span:last-child { flex-shrink: 0; letter-spacing: 0; }
.iw-lp-event-ticket .iw-lp-event-summary {
  margin: 11px 0 0;
  font-size: 11px;
  line-height: 1.8;
  color: var(--iw-text-2);
}
.iw-lp-event-flow { margin: 12px 0; }
.iw-lp-event-detail-label {
  display: block;
  margin-bottom: 7px;
  font-size: 9px;
  color: rgba(var(--iw-rgb-gold), 0.68);
}
.iw-lp-event-flow-steps {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
}
.iw-lp-event-flow-step { display: inline-flex; align-items: baseline; gap: 5px; }
.iw-lp-event-flow-step time {
  font-family: "ShareTechMono", monospace;
  font-size: 10px;
  color: var(--iw-text-1);
}
.iw-lp-event-flow-step > span { font-size: 9px; color: var(--iw-text-3); }
.iw-lp-event-flow-arrow { flex-shrink: 0; color: rgba(var(--iw-rgb-gold), 0.48); }
.iw-lp-event-facts { display: grid; gap: 9px; margin: 0; }
.iw-lp-event-facts > div {
  display: grid;
  grid-template-columns: 66px minmax(0, 1fr);
  gap: 8px;
}
.iw-lp-event-facts dt { font-size: 9px; line-height: 1.8; color: rgba(var(--iw-rgb-gold), 0.62); }
.iw-lp-event-facts dd { margin: 0; font-size: 10.5px; line-height: 1.75; color: var(--iw-text-2); }

/* ===== 辖区通报 ===== */
.iw-lp-crime-container {
  position: relative;
  overflow: hidden;
}
.iw-lp-crime-container.is-sliding {
  pointer-events: none;
}
.iw-lp-crime-list-view,
.iw-lp-crime-detail-view {
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease;
}
.iw-lp-crime-list-view.is-slide-out {
  transform: translateX(-100%);
  opacity: 0;
}
.iw-lp-crime-detail-view.is-slide-in {
  transform: translateX(100%);
  opacity: 0;
}
.iw-lp-crime-detail-view.is-slide-out-left {
  transform: translateX(-100%);
  opacity: 0;
}
.iw-lp-crime-list-view.is-slide-in-right {
  transform: translateX(100%);
  opacity: 0;
}
.iw-lp-crime-card {
  padding: 14px 0 12px;
}
.iw-lp-crime-card + .iw-lp-crime-card {
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.09);
}
.iw-lp-crime-topline {
  margin-bottom: 6px;
}
.iw-lp-crime-id {
  font-family: "ShareTechMono", monospace;
  font-size: 9px;
  letter-spacing: 0.4px;
  color: rgba(var(--iw-rgb-white), 0.38);
}
.iw-lp-crime-summary {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.55;
  color: var(--iw-text-1);
}
.iw-lp-crime-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.iw-lp-crime-unit {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 9.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
}
.iw-lp-crime-unit svg { flex-shrink: 0; opacity: 0.6; }
.iw-lp-crime-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  /* 无描边：箭头自身即视觉主体，靠 hover 的圆形淡金底做反馈。
     宽高仍是 28px（box-sizing: border-box），去掉 1px 边不影响点按热区 */
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: rgba(var(--iw-rgb-white), 0.45);
  cursor: pointer;
  transition: color 0.15s ease, background 0.15s ease;
  flex-shrink: 0;
}
.iw-lp-crime-arrow:hover {
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.1);
}
.iw-lp-crime-arrow:focus-visible {
  outline: 1px solid var(--iw-gold);
  outline-offset: 2px;
}
.iw-lp-crime-back {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  margin-bottom: 14px;
  border: none;
  background: transparent;
  font-size: 11px;
  color: rgba(var(--iw-rgb-white), 0.5);
  cursor: pointer;
  transition: color 0.15s ease;
}
.iw-lp-crime-back:hover { color: var(--iw-gold); }
.iw-lp-crime-back:focus-visible {
  outline: 1px solid var(--iw-gold);
  outline-offset: 2px;
}
.iw-lp-crime-detail-summary {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--iw-text-1);
}
.iw-lp-crime-detail-unit {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10px;
  color: rgba(var(--iw-rgb-white), 0.45);
  margin-bottom: 12px;
}
.iw-lp-crime-detail-unit svg { flex-shrink: 0; opacity: 0.6; }
.iw-lp-crime-detail-body {
  margin: 0;
  font-size: 12px;
  line-height: 1.8;
  color: rgba(var(--iw-rgb-white), 0.6);
}
@media (prefers-reduced-motion: reduce) {
  .iw-lp-crime-list-view,
  .iw-lp-crime-detail-view {
    transition: none;
  }
}

.iw-lp-colophon {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-top: 26px;
  padding: 10px 0;
  border-top: 1px solid rgba(var(--iw-rgb-white), 0.16);
  font-size: 8px;
  color: rgba(var(--iw-rgb-white), 0.35);
}
.iw-lp-colophon span:first-child {
  font-family: "ShareTechMono", monospace;
  letter-spacing: 0.6px;
}
/* colophon 采录时间：UI 元数据小字（现实时间），比栏目标识再淡一档 */
.iw-lp-colophon-ts {
  font-style: normal;
  margin-left: 6px;
  color: rgba(var(--iw-rgb-white), 0.28);
  letter-spacing: 0.4px;
}

/* 采录失败常驻错误条：失败原因 + 旧公报说明 + 重试入口 + AI 原文折叠区。
   放在标题区下方、公报正文上方，任何一屏都先看到它，不再靠 3 秒 toast */
.iw-lp-error-bar {
  margin: 10px 0 4px;
  padding: 10px 12px;
  border: 1px solid rgba(212, 74, 74, 0.45);
  border-left: 3px solid var(--iw-state-danger);
  border-radius: 3px;
  background: var(--iw-danger-bg);
  color: var(--iw-state-danger-soft);
  font-size: 11px;
  line-height: 1.7;
}
.iw-lp-error-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.iw-lp-error-bar svg {
  flex: none;
  margin-top: 3px;
  color: var(--iw-state-danger);
}
.iw-lp-error-msg {
  flex: 1;
  min-width: 0;
  word-break: break-word;
}
/* AI 原文折叠区：默认收起一行 summary，展开后全文等宽滚动区（整段不截断） */
.iw-lp-error-raw {
  margin-top: 8px;
  border-top: 1px dashed rgba(212, 74, 74, 0.35);
  padding-top: 6px;
}
.iw-lp-error-raw summary {
  cursor: pointer;
  font-size: 10px;
  letter-spacing: 0.8px;
  color: var(--iw-state-danger);
  list-style: none;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  user-select: none;
}
.iw-lp-error-raw summary::-webkit-details-marker { display: none; }
.iw-lp-error-raw summary::before {
  content: '';
  display: inline-block;
  width: 0;
  height: 0;
  border-left: 4px solid currentColor;
  border-top: 3px solid transparent;
  border-bottom: 3px solid transparent;
  transition: transform 0.15s ease;
}
.iw-lp-error-raw[open] summary::before { transform: rotate(90deg); }
.iw-lp-error-raw-body {
  margin-top: 6px;
  max-height: 260px;
  overflow: auto;
  border: 1px solid rgba(212, 74, 74, 0.3);
  border-radius: 3px;
  background: rgba(var(--iw-rgb-black), 0.25);
  -webkit-overflow-scrolling: touch;
}
.iw-lp-error-raw-body pre {
  margin: 0;
  padding: 8px 10px;
  font-family: "ShareTechMono", ui-monospace, monospace;
  font-size: 10px;
  line-height: 1.6;
  color: rgba(var(--iw-rgb-white), 0.72);
  white-space: pre-wrap;
  word-break: break-word;
}
.iw-lp-error-retry {
  flex: none;
  align-self: center;
  padding: 6px 10px;
  min-height: 28px;
  border: 1px solid rgba(212, 74, 74, 0.55);
  border-radius: 3px;
  background: transparent;
  color: var(--iw-state-danger-soft);
  font-family: inherit;
  font-size: 10px;
  letter-spacing: 1px;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}
.iw-lp-error-retry:hover,
.iw-lp-error-retry:focus-visible {
  color: var(--iw-state-danger);
  border-color: var(--iw-state-danger);
  background: rgba(212, 74, 74, 0.12);
  outline: none;
}
.iw-lp-error-retry:active {
  transform: translateY(1px);
}

/* 底部 colophon「查看最新」刷新按钮：低调公文风，无描边，hover/按下转金反馈。
   colophon 自身仅顶部一条细线与正文收束（下方不再画线，页面直接收尾），
   按钮再描边会显得琐碎，去掉后与左侧栏目标识同级 */
.iw-lp-colophon-refresh {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 9px;
  min-height: 26px;
  border: 0;
  border-radius: 3px;
  background: transparent;
  color: rgba(var(--iw-rgb-white), 0.45);
  font-family: inherit;
  font-size: 9px;
  letter-spacing: 1.2px;
  cursor: pointer;
  transition: color 0.2s ease, background-color 0.2s ease;
}
.iw-lp-colophon-refresh:hover {
  color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.08);
}
/* 键盘焦点必须有可见指示：边框已去掉，改用 outline（不能用 outline:none 抹掉） */
.iw-lp-colophon-refresh:focus-visible {
  color: var(--iw-gold);
  outline: 1px solid rgba(var(--iw-rgb-gold), 0.7);
  outline-offset: 1px;
}
.iw-lp-colophon-refresh:active {
  color: var(--iw-gold);
  transform: translateY(1px);
}
.iw-lp-colophon-refresh svg { flex: none; }

/* 宽屏增加新闻版面的呼吸感；窄屏收紧图片列，不挤标题 */
@media (min-width: 700px) {
  .iw-local-portal { padding: 0 12px; }
  .iw-lp-masthead h1 { font-size: 28px; }
  .iw-lp-notice.has-media { grid-template-columns: minmax(0, 1fr) 132px; }
  .iw-lp-notice-media { width: 132px; }
  .iw-lp-event-feature.has-media { grid-template-columns: 126px minmax(0, 1fr); }
  .iw-lp-event-media { width: 126px; }
  .iw-lp-event-feature .iw-lp-event-detail-wrap { grid-column: 2; }
  .iw-lp-event-feature .iw-lp-event-ticket { margin-right: 0; }
}
@media (max-width: 360px) {
  .iw-lp-masthead h1 { font-size: 21px; }
  .iw-lp-bulletin-count { display: none; }
  .iw-lp-notice.has-media { grid-template-columns: minmax(0, 1fr) 88px; gap: 10px; }
  .iw-lp-notice-media { width: 88px; }
  .iw-lp-event-feature.has-media { grid-template-columns: 88px minmax(0, 1fr); gap: 11px; }
  .iw-lp-event-media { width: 88px; }
  .iw-lp-event-row { grid-template-columns: 50px minmax(0, 1fr); }
  .iw-lp-event-row-aside {
    grid-column: 2;
    grid-row: 2;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }
  .iw-lp-event-ticket { padding: 11px 11px 12px; }
  .iw-lp-event-facts > div { grid-template-columns: 58px minmax(0, 1fr); gap: 6px; }
  .iw-lp-section-title-row > span { font-size: 8px; }
  .iw-lp-colophon { flex-direction: column; gap: 5px; }
}
@media (prefers-reduced-motion: reduce) {
  .iw-lp-bulletin-text.is-leaving,
  .iw-lp-bulletin-text.is-entering {
    opacity: 1;
    transform: none;
    transition: none;
    animation: none;
  }
  .iw-lp-reply.is-opening,
  .iw-lp-reply.is-closing { animation: none; }
  .iw-lp-reply-toggle svg { transition: none; }
  .iw-lp-story-wrap,
  .iw-lp-notice-detail-wrap,
  .iw-lp-notice-detail-rule,
  .iw-lp-notice .iw-lp-notice-note,
  .iw-lp-notice-arrow svg,
  .iw-lp-event-detail-wrap,
  .iw-lp-event-ticket,
  .iw-lp-event-date strong,
  .iw-lp-event-date .iw-lp-event-seen,
  .iw-lp-event-open-mark { transition: none; }
  .iw-lp-notice-status.is-stamping,
  .iw-lp-event.is-expanded .iw-lp-event-date strong { animation: none; }
}

/* ============================================================
   ===== 02·A 旅志怪谈 · 旅行手账详情页（UI 阶段） =====
   前缀 iw-tj-（Travel Journal）· 昼夜双主题
   ============================================================ */
/* 舞台：为回形针探出的顶部留呼吸空间 */
.iw-tj-stage {
  position: relative;
  margin-top: 12px;
  padding-top: 10px;
}
/* 详情页主手账纸：应用户要求，去掉整张纸卡的底色/描边/投影，内容直接坐在面板背景上 */
.iw-tj-sheet {
  background: none;
  border: none;
  border-radius: 0;
  box-shadow: none;
  padding: 16px 4px 14px 4px;
  margin: 0;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sheet {
  background: none;
  border: none;
  box-shadow: none;
}
.iw-tj-body {
  display: flex;
  flex-direction: column;
}
/* 抬头：档案编号 + 地区 */
.iw-tj-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-family: 'ShareTechMono', monospace;
  font-size: 8.5px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  margin-bottom: 4px;
}
/* 地名大标题区 */
.iw-tj-spot {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  column-gap: 10px;
  row-gap: 2px;
}
.iw-tj-spot-mark {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(26px * var(--iw-hand-scale)));
  font-weight: normal;
  letter-spacing: 2px;
  color: rgba(var(--iw-rgb-white), 0.95);
  line-height: 1.3;
}
.iw-tj-spot-en {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(11px * var(--iw-hand-scale)));
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-gold), 0.5);
}
/* 星级行 */
.iw-tj-meta-row {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 3px 0 5px 0;
}
.iw-tj-stars {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  color: rgba(var(--iw-rgb-gold), 0.95);
  flex-shrink: 0;
}
.iw-tj-verdict {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(15px * var(--iw-hand-scale)));
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-gold), 0.92);
  margin: 0;
}
/* 出行一句话：到访时辰 + 到达方式合并，手拙体纯文字 */
.iw-tj-go {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(14.5px * var(--iw-hand-scale)));
  line-height: 1.7;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.8);
  margin: 4px 0 2px 0;
}
/* 时辰章：单字红章（现已停用，保留给卡片层预览卡等潜在复用） */
.iw-tj-hour-stamp {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 14px;
  font-weight: 700;
  color: rgba(224, 96, 88, 0.95);
  border: 1.5px solid rgba(224, 96, 88, 0.75);
  border-radius: 4px;
  transform: rotate(-4deg);
  box-shadow: inset 0 0 6px rgba(224, 96, 88, 0.25);
}
/* 裁切线：剪刀 + 虚线 */
.iw-tj-cutline {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 10px 0 4px 0;
  color: rgba(var(--iw-rgb-white), 0.28);
}
.iw-tj-cutline-line {
  flex: 1;
  border-top: 1.5px dashed rgba(var(--iw-rgb-white), 0.18);
}
/* 通用小节头 */
.iw-tj-sec-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 14px 0 8px 0;
}
.iw-tj-sec-no {
  font-family: 'ShareTechMono', monospace;
  font-size: 9px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  padding: 1px 4px;
  border-radius: 2px;
}
.iw-tj-sec-name {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 2px;
  color: rgba(var(--iw-rgb-white), 0.92);
}
.iw-tj-sec-line {
  flex: 1;
  border-top: 1px dotted rgba(var(--iw-rgb-gold), 0.3);
  align-self: center;
}
.iw-tj-sec-en {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(11px * var(--iw-hand-scale)));
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-gold), 0.45);
}
/* 今日行程标题：分隔线换成手缝针脚线（与下方 .iw-tj-route-thread 同语言：长针-空隙，夜间金线） */
.iw-tj-sec-head.is-stitch .iw-tj-sec-line {
  border-top: 0;
  height: 1.5px;
  background: repeating-linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.55) 0 6px, transparent 6px 10px);
}
/* 今日行程标题：对齐另两个小节，换手拙体 18px（缝线保留） */
.iw-tj-sec-head.is-stitch .iw-tj-sec-name {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(18px * var(--iw-hand-scale)));
  letter-spacing: 1px;
}
/* 06 标题：手拙体口语标题 + 荧光笔横带（起笔重收笔轻，微斜出界；夜场用琥珀色降饱和防刺眼） */
.iw-tj-sec-head.is-marker .iw-tj-sec-name {
  position: relative;
  z-index: 1;
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(18px * var(--iw-hand-scale)));
  letter-spacing: 1px;
  color: rgba(255, 236, 190, 0.96);
}
/* 英文副题同用手拙体；分隔点线隐藏（口语标题自成一行，不要账目感） */
.iw-tj-sec-head.is-marker .iw-tj-sec-en {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(11px * var(--iw-hand-scale)));
  letter-spacing: 0.5px;
  color: rgba(255, 205, 92, 0.55);
}
.iw-tj-sec-head.is-marker .iw-tj-sec-line {
  display: none;
}
.iw-tj-sec-head.is-marker .iw-tj-sec-name::before {
  content: '';
  position: absolute;
  left: -5px;
  right: -6px;
  bottom: 0;
  height: 0.62em;
  z-index: -1;
  border-radius: 2px 3px 3px 2px;
  background:
    linear-gradient(90deg, rgba(255, 205, 92, 0.5) 0%, rgba(255, 205, 92, 0.32) 62%, rgba(255, 205, 92, 0.16) 100%),
    linear-gradient(180deg, transparent 12%, rgba(255, 205, 92, 0.18) 12%, transparent 90%);
  transform: rotate(-0.5deg) skewX(-3deg);
}
/* 拔草点小节头红化 */
.iw-tj-sec-head.is-avoid .iw-tj-sec-no {
  color: rgba(224, 96, 88, 0.9);
  border-color: rgba(224, 96, 88, 0.5);
}
.iw-tj-sec-head.is-avoid .iw-tj-sec-name {
  color: rgba(232, 130, 122, 0.95);
}
.iw-tj-sec-head.is-avoid .iw-tj-sec-line {
  border-color: rgba(224, 96, 88, 0.35);
}
.iw-tj-sec-head.is-avoid .iw-tj-sec-en {
  color: rgba(224, 96, 88, 0.55);
}
/* 01 景点介绍：杂志剪报（纸面 + 印刷眉 + 图 + 图注 + 报刊正文） */
.iw-tj-press {
  position: relative;
  width: 100%;
  background: linear-gradient(160deg, rgba(var(--iw-rgb-white), 0.05), rgba(var(--iw-rgb-white), 0.02)), var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.13);
  border-radius: 3px;
  padding: 10px 12px 12px 12px;
  box-shadow:
    0 4px 14px rgba(0, 0, 0, 0.45),
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.07);
  margin-bottom: 6px;
}
.iw-tj-press-kicker {
  display: flex;
  justify-content: center;
  align-items: baseline;
  margin-bottom: 9px;
}
.iw-tj-press-en {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 9.5px;
  letter-spacing: 4px;
  text-indent: 4px;
  color: rgba(var(--iw-rgb-gold), 0.62);
}
.iw-tj-press-photo {
  width: 100%;
  aspect-ratio: 5 / 3;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.55);
  border-radius: 1px;
  background: #0a0908;
}
.iw-tj-press-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: brightness(0.92) contrast(1.08) saturate(0.82) sepia(0.08);
}
.iw-tj-press-caption {
  font-family: 'ShareTechMono', monospace;
  font-size: 7.5px;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.4);
  margin-top: 5px;
  text-align: right;
}
.iw-tj-press-copy {
  margin-top: 8px;
}
.iw-tj-press-copy p {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 11.5px;
  line-height: 1.75;
  letter-spacing: 0.4px;
  color: rgba(var(--iw-rgb-white), 0.7);
  text-indent: 2em;
  text-align: justify;
}
/* 03 旅行笔记：手账随笔（直接写在大底纸上，手写体 + 荧光/红圈/波浪手绘痕迹） */
.iw-tj-diary {
  position: relative;
  margin-top: 16px;
  padding: 4px 2px 8px 2px;
}
.iw-tj-diary p {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(16px * var(--iw-hand-scale)));
  line-height: 1.85;
  letter-spacing: 0.6px;
  color: rgba(var(--iw-rgb-white), 0.85);
  text-indent: 2em;
  margin: 0;
}
/* 手绘荧光笔：半透明斜涂抹 */
.iw-tj-hl {
  background: linear-gradient(104deg, rgba(240, 210, 80, 0) 0%, rgba(240, 210, 80, 0.32) 4%, rgba(240, 210, 80, 0.38) 92%, rgba(240, 210, 80, 0) 100%);
  padding: 1px 3px 2px 3px;
  border-radius: 2px;
  color: inherit;
}
/* 手绘圆珠笔红圈：不规则椭圆 + 微歪 */
.iw-tj-circle {
  display: inline-block;
  padding: 1px 6px;
  margin: 0 -2px;
  border: 1.4px solid rgba(216, 75, 60, 0.85);
  border-radius: 54% 46% 56% 44% / 48% 55% 45% 52%;
  transform: rotate(-1.5deg);
  line-height: 1.1;
  text-indent: 0;
}
/* 手绘波浪下划线：细腻红水笔波纹 */
.iw-tj-wave {
  text-decoration: underline wavy rgba(216, 75, 60, 0.78);
  text-underline-offset: 5px;
  text-decoration-thickness: 1.4px;
}
/* 手绘着重小点 */
.iw-tj-dots {
  text-emphasis: dot rgba(var(--iw-rgb-gold), 0.8);
  text-emphasis-position: under right;
}
/* 02 热评：热评小标（并入 01 剪报卡内部） */
.iw-tj-cmts {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 10px;
  padding-top: 6px;
}
.iw-tj-cmt-head {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 6px;
  margin-bottom: 2px;
}
.iw-tj-cmt-head-en {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 9.5px;
  letter-spacing: 4px;
  color: rgba(var(--iw-rgb-gold), 0.62);
}
.iw-tj-cmt-head-n {
  font-family: 'ShareTechMono', monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.45);
}
.iw-tj-cmt-row {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 9px 10px 8px 10px;
  background: rgba(var(--iw-rgb-black), 0.22);
  border: 1px solid rgba(var(--iw-rgb-white), 0.08);
  border-radius: 4px;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25);
}
.iw-tj-cmt-avatar {
  flex: none;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 13px;
  font-weight: 700;
  border: none;
}
.iw-tj-cmt-avatar.is-gold {
  background: rgba(var(--iw-rgb-gold), 0.16);
  color: rgba(var(--iw-rgb-gold), 0.9);
}
.iw-tj-cmt-avatar.is-jade {
  background: rgba(46, 125, 96, 0.25);
  color: rgba(120, 190, 160, 0.95);
}
img.iw-tj-cmt-avatar {
  object-fit: cover;
}
.iw-tj-cmt-body {
  flex: 1;
  min-width: 0;
}
.iw-tj-cmt-user {
  display: block;
  font-family: 'ShareTechMono', monospace;
  font-size: 9px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  margin-bottom: 3px;
}
.iw-tj-cmt-text {
  font-size: 11.5px;
  line-height: 1.65;
  color: rgba(var(--iw-rgb-white), 0.72);
}
.iw-tj-cmt-like {
  flex: none;
  display: flex;
  align-items: center;
  gap: 4px;
  background: none;
  border: none;
  padding: 2px 4px;
  margin-top: 1px;
  font-family: 'ShareTechMono', monospace;
  font-size: 9px;
  color: rgba(var(--iw-rgb-white), 0.4);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: color 0.2s ease;
}
.iw-tj-cmt-like svg {
  flex: none;
}
.iw-tj-cmt-like:active {
  transform: scale(0.9);
}
.iw-tj-cmt-like.is-liked {
  color: rgba(216, 95, 80, 0.95);
}
.iw-tj-cmt-like.is-liked svg {
  fill: rgba(216, 95, 80, 0.75);
}
/* 04 纪念品：手账拼贴舞台（小相片偏左 + 左上黄铜回形针 + 右侧偏下叠放小邮票） */
.iw-tj-sv-stage {
  position: relative;
  width: 100%;
  margin-top: 24px;
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
}
.iw-tj-sv-photo {
  position: relative;
  width: 216px;
  margin-left: 20px;
  padding: 8px 8px 0 8px;
  background: linear-gradient(160deg, rgba(var(--iw-rgb-white), 0.07), rgba(var(--iw-rgb-white), 0.03)), var(--iw-cool-2);
  border-radius: 3px;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.5);
  transform: rotate(-1.5deg);
  z-index: 1;
  transition: transform 0.2s ease;
}
/* 左上角黄铜回形针：夹在相片左上边缘，竖向别着 */
.iw-tj-sv-clip {
  position: absolute;
  top: -12px;
  left: 18px;
  color: #d8a858;
  filter: drop-shadow(0 3px 4px rgba(0, 0, 0, 0.7));
  transform: rotate(2deg);
  z-index: 4;
  pointer-events: none;
}
.iw-tj-sv-frame {
  position: relative;
  aspect-ratio: 1 / 1;
  border-radius: 2px;
  overflow: hidden;
  background: #0a0908;
}
.iw-tj-sv-frame iframe {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  border: 0;
  display: block;
}
.iw-tj-sv-caption {
  padding: 7px 4px 9px 4px;
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(12px * var(--iw-hand-scale)));
  letter-spacing: 0.8px;
  color: rgba(var(--iw-rgb-white), 0.55);
  text-align: center;
}
/* 右侧叠放小邮票：叠在相片右下侧边缘，往右往下放 */
.iw-tj-sv-stamp {
  position: absolute;
  top: 84px;
  left: 220px;
  width: 104px;
  padding: 9px 8px 9px 8px;
  background: linear-gradient(160deg, rgba(var(--iw-rgb-white), 0.07), rgba(var(--iw-rgb-white), 0.03)), var(--iw-cool-2);
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.5);
  border-radius: 2px;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45);
  transform: rotate(5.5deg);
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  box-sizing: border-box;
}
/* 邮票留白画心（内嵌黑白雾花照，夜间轻降亮保持纸感） */
.iw-tj-sv-stamp-inner {
  width: 100%;
  aspect-ratio: 1 / 1;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.35);
  background: rgba(var(--iw-rgb-gold), 0.05);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 1px;
  overflow: hidden;
}
.iw-tj-sv-stamp-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: brightness(0.78) contrast(1.05);
}
/* 手拙体写「纪念品」 */
.iw-tj-sv-stamp-title {
  margin-top: 5px;
  font-family: "Georgia", "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  font-size: 13px;
  letter-spacing: 1.5px;
  color: var(--iw-gold);
  line-height: 1;
  text-align: center;
}
/* 邮票铭记行：VERSO POST + 当前频点面值（一枚票值多少兆赫） */
.iw-tj-sv-stamp-meta {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: 5px;
  font-family: "ShareTechMono", monospace;
  font-size: 8px;
  letter-spacing: 0.6px;
  color: rgba(var(--iw-rgb-gold), 0.6);
}

.iw-tj-sv-name {
  display: block;
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(17px * var(--iw-hand-scale)));
  line-height: 1.4;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.92);
  margin: 0 0 4px 0;
}
.iw-tj-sv-note {
  margin-top: 14px;
}
.iw-tj-sv-note p {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(15px * var(--iw-hand-scale)));
  line-height: 1.8;
  letter-spacing: 0.6px;
  color: rgba(var(--iw-rgb-white), 0.85);
  text-indent: 2em;
  margin: 0;
}
/* 05 必吃榜：小票 ×3（锯齿底边由 JS clip-path 生成） */
.iw-tj-eats {
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.iw-tj-receipt {
  width: 92%;
  background:
    repeating-linear-gradient(180deg, rgba(var(--iw-rgb-white), 0.02) 0, rgba(var(--iw-rgb-white), 0.02) 1px, transparent 1px, transparent 4px),
    var(--iw-cool-2);
  border: 1px solid rgba(var(--iw-rgb-white), 0.14);
  border-bottom: 1px solid rgba(var(--iw-rgb-white), 0.14);
  padding: 10px 12px 12px 12px;
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.35);
}
.iw-tj-eats .iw-tj-receipt:nth-child(1) {
  align-self: flex-start;
  transform: rotate(-0.8deg);
}
.iw-tj-eats .iw-tj-receipt:nth-child(2) {
  align-self: flex-end;
  transform: rotate(0.6deg);
}
.iw-tj-eats .iw-tj-receipt:nth-child(3) {
  align-self: flex-start;
  transform: rotate(-0.4deg);
}
.iw-tj-receipt-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-family: 'ShareTechMono', monospace;
  font-size: 8.5px;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-white), 0.4);
  border-bottom: 1px dashed rgba(var(--iw-rgb-white), 0.18);
  padding-bottom: 5px;
  margin-bottom: 6px;
}
.iw-tj-receipt-name {
  font-family: Georgia, "Songti SC", "SimSun", serif;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: normal;
  color: rgba(var(--iw-rgb-white), 0.92);
}
/* 条码脚注：菜名哈希条形码 + 极小编号，颜色走 currentColor 继承票面 */
/* 小票脚注：单行写死英文小字（仿落款条文）；条码已挪到抬头行右上角 */
.iw-tj-receipt-foot {
  margin-top: 9px;
  color: rgba(var(--iw-rgb-white), 0.5);
}
.iw-tj-receipt-fine {
  display: block;
  font-family: 'ShareTechMono', monospace;
  font-size: 7px;
  line-height: 1.4;
  letter-spacing: 0.8px;
  white-space: nowrap;
}
.iw-tj-receipt-code { width: 64px; height: 16px; margin-left: auto; display: block; }
.iw-tj-receipt-desc {
  font-size: 10.5px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.6);
}
/* 05 拔草点：红笔手绘虚线圈框（无小节头 · SVG 手抖路径与 03 手绘语汇同源） */
.iw-tj-avoid {
  position: relative;
  margin-top: 16px;
  padding: 13px 16px 14px 15px;
  transform: rotate(-0.4deg);
}
.iw-tj-avoid-pen {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}
.iw-tj-avoid-pen path {
  fill: none;
  stroke: rgba(216, 75, 60, 0.82);
  stroke-width: 1.6px;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  /* non-scaling-stroke 下 dasharray 即屏幕像素，四边统一值即视觉等长 */
  stroke-dasharray: 5 3.2;
}
.iw-tj-avoid p {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(15px * var(--iw-hand-scale)));
  line-height: 1.85;
  letter-spacing: 0.6px;
  text-indent: 2em;
  color: rgba(235, 155, 145, 0.88);
  margin: 0;
}
/* 08 出片造型：单卡，左文右占位图（无底卡） */
.iw-tj-spotcard {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 14px;
}
.iw-tj-spotcard-text {
  flex: 1;
  min-width: 0;
}
.iw-tj-spotcard-place {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(15.5px * var(--iw-hand-scale)));
  color: rgba(var(--iw-rgb-gold), 0.9);
  margin-bottom: 4px;
}
.iw-tj-spotcard-pose {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(14.5px * var(--iw-hand-scale)));
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.72);
  margin: 0 0 4px;
}
.iw-tj-spotcard-feel {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(14px * var(--iw-hand-scale)));
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.5);
  margin: 0;
}
.iw-tj-spotcard-photo {
  flex-shrink: 0;
  width: 34%;
  max-width: 108px;
  align-self: stretch;
  min-height: 78px;
  border: 1.5px dashed rgba(var(--iw-rgb-white), 0.22);
  border-radius: 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(var(--iw-rgb-white), 0.28);
}
.iw-tj-spotcard-photo svg {
  width: 42%;
  height: 42%;
}
/* 09 今日行程：手缝针脚路线 */
.iw-tj-route {
  position: relative;
  display: flex;
  flex-direction: column;
}
/* 今日行程右缘：双层雾浪页边线（随路线高度自适应拉伸；夜间金线，day 红棕墨） */
.iw-tj-route-wave {
  position: absolute;
  top: 2px;
  bottom: 2px;
  right: 3px;
  width: 26px;
  pointer-events: none;
}
.iw-tj-route-wave svg {
  display: block;
  width: 100%;
  height: 100%;
}
.iw-tj-route-wave path {
  fill: none;
  stroke-width: 1.2;
  stroke-linecap: round;
}
.iw-tj-route-wave .iw-tj-wav-a {
  stroke: rgba(var(--iw-rgb-gold), 0.35);
}
.iw-tj-route-wave .iw-tj-wav-b {
  stroke: rgba(var(--iw-rgb-gold), 0.18);
}
.iw-tj-route-item {
  display: flex;
  gap: 10px;
}
.iw-tj-route-stitch {
  flex-shrink: 0;
  width: 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.iw-tj-route-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-gold), 0.9);
  box-shadow: 0 0 0 2px rgba(var(--iw-rgb-gold), 0.2);
  margin-top: 4px;
}
.iw-tj-route-dot.is-end {
  background: transparent;
  border: 2px solid rgba(var(--iw-rgb-gold), 0.9);
  box-shadow: 0 0 0 2px rgba(var(--iw-rgb-gold), 0.15);
}
.iw-tj-route-thread {
  flex: 1;
  width: 0;
  min-height: 16px;
  border-left: 1.5px dashed rgba(var(--iw-rgb-gold), 0.4);
  margin: 3px 0;
}
.iw-tj-route-name {
  padding-bottom: 14px;
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.iw-tj-route-name b {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(11.5px * var(--iw-hand-scale)));
  font-weight: normal;
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.5);
}
.iw-tj-route-name span {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(14.5px * var(--iw-hand-scale)));
  color: rgba(var(--iw-rgb-white), 0.78);
}
.iw-tj-route-item:last-child .iw-tj-route-name {
  padding-bottom: 0;
}
/* 10 今晚睡这儿：纯文字（无底卡、无价格） */
.iw-tj-inn {
  margin-top: 4px;
}
.iw-tj-inn-name {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(17px * var(--iw-hand-scale)));
  letter-spacing: 1px;
  color: rgba(var(--iw-rgb-gold), 0.9);
  margin-bottom: 4px;
}
.iw-tj-inn-desc {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(14.5px * var(--iw-hand-scale)));
  line-height: 1.75;
  color: rgba(var(--iw-rgb-white), 0.68);
  margin: 0;
}
/* 手账页脚 */
.iw-tj-pagemeta {
  display: flex;
  justify-content: space-between;
  margin-top: 14px;
  padding-top: 8px;
  border-top: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  font-family: 'ShareTechMono', monospace;
  font-size: 7.5px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-gold), 0.45);
}
/* —— day 主题翻色（暗红棕 + 墨黑纸系，对齐 02·A 现有方案） —— */
.innerworld-panel[data-iw-theme="day"] .iw-tj-head {
  color: rgba(140, 47, 35, 0.65);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-spot-mark {
  color: #2b2620;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-spot-en {
  color: rgba(140, 47, 35, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-verdict {
  color: #b25b2e;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-stars {
  color: #b25b2e;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-go {
  color: rgba(43, 38, 32, 0.8);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cutline {
  color: rgba(140, 47, 35, 0.5);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cutline-line {
  border-color: rgba(140, 47, 35, 0.35);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-no {
  color: rgba(140, 47, 35, 0.75);
  border-color: rgba(140, 47, 35, 0.45);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-name {
  color: #2b2620;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-line {
  border-color: rgba(140, 47, 35, 0.4);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-en {
  color: rgba(140, 47, 35, 0.6);
}
/* 01 景点介绍剪报：day 主题（米黄纸面） */
.innerworld-panel[data-iw-theme="day"] .iw-tj-press {
  background: rgba(255, 253, 248, 0.48);
  border-color: rgba(140, 47, 35, 0.18);
  box-shadow:
    0 4px 14px rgba(90, 70, 50, 0.10),
    inset 0 1px 0 rgba(255, 255, 255, 0.5);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-press-en {
  color: rgba(140, 47, 35, 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-press-caption {
  color: rgba(43, 38, 32, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-press-copy p {
  color: rgba(43, 38, 32, 0.8);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-press-photo img {
  filter: brightness(1.02) contrast(1.05) saturate(0.75) sepia(0.12);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-avoid .iw-tj-sec-no {
  color: rgba(180, 60, 50, 0.9);
  border-color: rgba(180, 60, 50, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-avoid .iw-tj-sec-name {
  color: #a03830;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-avoid .iw-tj-sec-line {
  border-color: rgba(180, 60, 50, 0.4);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-avoid .iw-tj-sec-en {
  color: rgba(180, 60, 50, 0.6);
}
/* 03 旅行笔记 day 覆盖（通透墨黑 + 清爽手账手绘痕迹） */
.innerworld-panel[data-iw-theme="day"] .iw-tj-diary p {
  color: rgba(43, 38, 32, 0.90);
}.innerworld-panel[data-iw-theme="day"] .iw-tj-hl {
  background: linear-gradient(104deg, rgba(245, 215, 60, 0) 0%, rgba(245, 215, 60, 0.45) 4%, rgba(245, 215, 60, 0.50) 92%, rgba(245, 215, 60, 0) 100%);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-circle {
  border-color: rgba(180, 45, 30, 0.88);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-wave {
  text-decoration-color: rgba(180, 45, 30, 0.82);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-dots {
  text-emphasis-color: rgba(140, 47, 35, 0.85);
}.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-head-en {
  color: rgba(140, 47, 35, 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-head-n {
  color: rgba(43, 38, 32, 0.5);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-row {
  background: rgba(255, 255, 255, 0.42);
  border-color: rgba(140, 47, 35, 0.10);
  box-shadow: 0 1px 3px rgba(80, 50, 30, 0.08);
}
.innerworld-panel[data-iw-theme="day"] img.iw-tj-cmt-avatar {
  filter: sepia(0.18) saturate(0.9) brightness(0.98);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-avatar.is-gold {
  background: rgba(240, 185, 75, 0.35);
  color: rgba(126, 84, 12, 0.95);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-avatar.is-jade {
  background: rgba(121, 168, 90, 0.3);
  color: rgba(52, 92, 44, 0.95);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-text {
  color: rgba(43, 38, 32, 0.82);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-user {
  color: rgba(140, 47, 35, 0.7);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-like {
  color: rgba(43, 38, 32, 0.45);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-like.is-liked {
  color: rgba(178, 52, 38, 0.95);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-cmt-like.is-liked svg {
  fill: rgba(178, 52, 38, 0.7);
}
/* 04 纪念品照片卡 day 覆盖（相纸白底昼夜通用，只调投影/胶带/文字） */
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-photo {
  box-shadow: 0 4px 14px rgba(80, 50, 30, 0.2);
  background: #fbf7ee;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-clip {
  color: #a8782a;
  filter: drop-shadow(0 2px 3px rgba(80, 50, 30, 0.35));
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-caption {
  color: #4a443c;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-stamp {
  background: #fbf7ee;
  border-color: rgba(140, 47, 35, 0.3);
  box-shadow: 0 3px 10px rgba(80, 50, 30, 0.22);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-stamp-title {
  color: #8c2f23;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-stamp-inner {
  border-color: rgba(140, 47, 35, 0.2);
  background: rgba(140, 47, 35, 0.03);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-stamp-img {
  filter: brightness(0.92) sepia(0.08);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-stamp-meta {
  color: rgba(140, 47, 35, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-name {
  color: rgba(140, 47, 35, 0.95);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sv-note p {
  color: rgba(43, 38, 32, 0.9);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-receipt {
  background:
    repeating-linear-gradient(180deg, rgba(140, 47, 35, 0.03) 0, rgba(140, 47, 35, 0.03) 1px, transparent 1px, transparent 4px),
    rgba(255, 250, 235, 0.85);
  border-color: rgba(140, 47, 35, 0.3);
  box-shadow: 0 3px 8px rgba(80, 50, 30, 0.25);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-receipt-head {
  color: rgba(140, 47, 35, 0.6);
  border-color: rgba(140, 47, 35, 0.35);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-receipt-name {
  color: #2b2620;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-receipt-desc {
  color: rgba(43, 38, 32, 0.7);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-receipt-foot {
  color: rgba(43, 38, 32, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-avoid-pen path {
  stroke: rgba(180, 45, 30, 0.85);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-avoid p {
  color: rgba(150, 45, 38, 0.92);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-spotcard-place {
  color: rgba(200, 130, 60, 0.95);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-spotcard-pose {
  color: rgba(43, 38, 32, 0.78);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-spotcard-feel {
  color: rgba(43, 38, 32, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-spotcard-photo {
  border-color: rgba(140, 47, 35, 0.3);
  color: rgba(140, 47, 35, 0.35);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-stitch .iw-tj-sec-line {
  background: repeating-linear-gradient(90deg, rgba(140, 47, 35, 0.55) 0 6px, transparent 6px 10px);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-marker .iw-tj-sec-name {
  color: #7a2d12;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-marker .iw-tj-sec-en {
  color: rgba(140, 47, 35, 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-sec-head.is-marker .iw-tj-sec-name::before {
  background:
    linear-gradient(90deg, rgba(255, 224, 80, 0.75) 0%, rgba(255, 224, 80, 0.5) 62%, rgba(255, 224, 80, 0.28) 100%),
    linear-gradient(180deg, transparent 12%, rgba(255, 255, 255, 0.25) 12%, transparent 90%);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-route-dot {
  background: rgba(140, 47, 35, 0.85);
  box-shadow: 0 0 0 2px rgba(140, 47, 35, 0.25);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-route-dot.is-end {
  background: transparent;
  border-color: rgba(140, 47, 35, 0.85);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-route-thread {
  border-color: rgba(140, 47, 35, 0.5);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-route-name b {
  color: rgba(140, 47, 35, 0.65);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-route-name span {
  color: #2b2620;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-route-wave .iw-tj-wav-a {
  stroke: rgba(140, 47, 35, 0.35);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-route-wave .iw-tj-wav-b {
  stroke: rgba(140, 47, 35, 0.18);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-inn-name {
  color: rgba(200, 130, 60, 0.95);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-inn-desc {
  color: rgba(43, 38, 32, 0.75);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-pagemeta {
  border-color: rgba(140, 47, 35, 0.35);
  color: rgba(140, 47, 35, 0.6);
}
/* ===== 02·A 旅行手账 · 加载态：钢笔誊写等待卡 ===== */
.iw-tj-loading {
  min-height: 380px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 20px;
  animation: iwTjSettle 0.42s ease forwards;
}
/* 横线纸：三行墨迹依次写出，钢笔沿行移动 */
.iw-tj-loading-paper {
  position: relative;
  width: 200px;
  height: 104px;
  margin-bottom: 22px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.14);
  border-radius: 3px;
  background-color: rgba(var(--iw-rgb-white), 0.03);
  background-image: linear-gradient(180deg, transparent 19px, rgba(var(--iw-rgb-gold), 0.1) 19px, rgba(var(--iw-rgb-gold), 0.1) 20px, transparent 20px);
  background-size: 100% 20px;
  background-position: 0 15px;
  transform: rotate(-1deg);
}
.iw-tj-loading-ink {
  position: absolute;
  left: 10px;
  top: 14px;
  width: 180px;
  height: 76px;
  overflow: visible;
}
.iw-tj-loading-ink path {
  fill: none;
  stroke: rgba(255, 236, 190, 0.72);
  stroke-width: 1.3;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 100;
  stroke-dashoffset: 100;
}
.iw-tj-loading-ink .iw-tj-ink-l1 { animation: iwTjInk1 4.8s linear infinite; }
.iw-tj-loading-ink .iw-tj-ink-l2 { animation: iwTjInk2 4.8s linear infinite; }
.iw-tj-loading-ink .iw-tj-ink-l3 { animation: iwTjInk3 4.8s linear infinite; }
.iw-tj-loading-pen {
  position: absolute;
  left: 0;
  top: 0;
  width: 22px;
  height: 22px;
  color: rgba(var(--iw-rgb-gold), 0.9);
  animation: iwTjPen 4.8s linear infinite;
}
.iw-tj-loading-title {
  font-family: Georgia, serif;
  font-size: 13px;
  letter-spacing: 5px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  margin-bottom: 10px;
}
.iw-tj-loading-sub {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(14.5px * var(--iw-hand-scale)));
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.5);
  margin-bottom: 14px;
}
.iw-tj-loading-ticker {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(16px * var(--iw-hand-scale)));
  letter-spacing: 4px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  min-height: 24px;
  transition: opacity 0.18s ease;
}
@keyframes iwTjSettle {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}
/* 笔尖坐标 = 墨迹起止点（svg 偏移 10/14，笔尖在图标左下角） */
@keyframes iwTjPen {
  0% { transform: translate(18px, 10px); opacity: 1; }
  30% { transform: translate(178px, 10px); }
  32% { transform: translate(18px, 30px); }
  60% { transform: translate(178px, 30px); }
  62% { transform: translate(18px, 50px); }
  80% { transform: translate(118px, 50px); opacity: 1; }
  90% { transform: translate(118px, 50px); opacity: 1; }
  97% { transform: translate(118px, 50px); opacity: 0; }
  98% { transform: translate(18px, 10px); opacity: 0; }
  100% { transform: translate(18px, 10px); opacity: 1; }
}
@keyframes iwTjInk1 {
  0% { stroke-dashoffset: 100; opacity: 1; }
  30% { stroke-dashoffset: 0; }
  90% { stroke-dashoffset: 0; opacity: 1; }
  97% { stroke-dashoffset: 0; opacity: 0; }
  100% { stroke-dashoffset: 100; opacity: 0; }
}
@keyframes iwTjInk2 {
  0%, 32% { stroke-dashoffset: 100; opacity: 1; }
  60% { stroke-dashoffset: 0; }
  90% { stroke-dashoffset: 0; opacity: 1; }
  97% { stroke-dashoffset: 0; opacity: 0; }
  100% { stroke-dashoffset: 100; opacity: 0; }
}
@keyframes iwTjInk3 {
  0%, 62% { stroke-dashoffset: 100; opacity: 1; }
  80% { stroke-dashoffset: 0; }
  90% { stroke-dashoffset: 0; opacity: 1; }
  97% { stroke-dashoffset: 0; opacity: 0; }
  100% { stroke-dashoffset: 100; opacity: 0; }
}
/* ===== 02·A 旅行手账 · 空态：还没写字的一页 + 翻阅 ===== */
.iw-tj-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 56px 20px 44px;
  animation: iwTjSettle 0.42s ease forwards;
}
.iw-tj-empty-paper {
  position: relative;
  width: 118px;
  height: 148px;
  margin-bottom: 26px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.16);
  border-radius: 3px;
  background-color: rgba(var(--iw-rgb-white), 0.03);
  transform: rotate(-2deg);
  box-shadow: 0 6px 18px rgba(var(--iw-rgb-black), 0.25);
}
/* A 方案：一沓纸——塔罗堆叠手法移植，伪元素垫两张错位斜放，看出「翻阅」的厚度 */
.iw-tj-empty-paper::before,
.iw-tj-empty-paper::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 3px;
  background-color: rgba(var(--iw-rgb-white), 0.03);
  z-index: -1;
}
.iw-tj-empty-paper::before {
  transform: translate(7px, 6px) rotate(4deg);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.14);
}
.iw-tj-empty-paper::after {
  transform: translate(-6px, 10px) rotate(-5deg);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.12);
  background-color: rgba(var(--iw-rgb-white), 0.02);
}
.iw-tj-empty-clip {
  position: absolute;
  top: -9px;
  left: 16px;
  width: 13px;
  height: 26px;
  color: rgba(var(--iw-rgb-gold), 0.7);
}
/* 骨架条：纯静态占位，模拟手写的行，只放最上层那张纸 */
.iw-tj-empty-skel {
  position: absolute;
  top: 36px;
  left: 14px;
  right: 14px;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.iw-tj-empty-skel i {
  display: block;
  height: 5px;
  border-radius: 3px;
  background-color: rgba(var(--iw-rgb-gold), 0.16);
}
.iw-tj-empty-skel i:nth-child(1) { width: 100%; }
.iw-tj-empty-skel i:nth-child(2) { width: 82%; }
.iw-tj-empty-skel i:nth-child(3) { width: 94%; }
.iw-tj-empty-skel i:nth-child(4) { width: 68%; }
.iw-tj-empty-skel i:nth-child(5) { width: 88%; }
.iw-tj-empty-skel i:nth-child(6) { width: 41%; }
.iw-tj-empty-title {
  font-size: 20px;
  letter-spacing: 1px;
  color: rgba(255, 236, 190, 0.92);
  margin-bottom: 8px;
}
.iw-tj-empty-line {
  font-size: 14.5px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.55);
  margin-bottom: 22px;
}
.iw-tj-empty-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 24px;
  font-family: inherit;
  font-size: 15px;
  letter-spacing: 2px;
  color: rgba(var(--iw-rgb-gold), 0.95);
  background: rgba(var(--iw-rgb-gold), 0.06);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.45);
  border-radius: 3px;
  cursor: pointer;
  transition: transform 0.12s ease, background 0.2s ease;
}
.iw-tj-empty-btn svg {
  width: 15px;
  height: 15px;
}
.iw-tj-empty-btn:active {
  transform: scale(0.97);
  background: rgba(var(--iw-rgb-gold), 0.12);
}
.iw-tj-empty-btn:focus-visible {
  outline: 2px solid rgba(var(--iw-rgb-gold), 0.7);
  outline-offset: 3px;
}
.iw-tj-empty-sub {
  margin-top: 26px;
  padding-top: 10px;
  font-family: "ShareTechMono", monospace;
  font-size: 8.5px;
  letter-spacing: 1.5px;
  color: rgba(var(--iw-rgb-white), 0.25);
  border-top: 1px dashed rgba(var(--iw-rgb-white), 0.08);
}
/* 减少动态：墨迹直接写满，笔停在行尾 */
@media (prefers-reduced-motion: reduce) {
  .iw-tj-loading, .iw-tj-empty, .iw-tj-loading-pen, .iw-tj-loading-ink path { animation: none; }
  .iw-tj-loading-ink path { stroke-dashoffset: 0; }
  .iw-tj-loading-pen { transform: translate(118px, 50px); }
}
/* 旅行手账 空态 / 加载态：day 主题（米白纸 + 红棕墨） */
.innerworld-panel[data-iw-theme="day"] .iw-tj-loading-paper,
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-paper {
  border-color: rgba(140, 47, 35, 0.18);
  background-color: rgba(255, 253, 248, 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-loading-paper {
  background-image: linear-gradient(180deg, transparent 19px, rgba(140, 47, 35, 0.12) 19px, rgba(140, 47, 35, 0.12) 20px, transparent 20px);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-paper {
  box-shadow: 0 6px 16px rgba(90, 70, 50, 0.12);
}
/* day：垫纸米白，比主纸略暗一档，模拟被上层遮住的下层纸 */
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-paper::before,
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-paper::after {
  background-color: rgba(255, 253, 248, 0.52);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-paper::before {
  border-color: rgba(140, 47, 35, 0.16);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-paper::after {
  border-color: rgba(140, 47, 35, 0.14);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-loading-ink path {
  stroke: rgba(43, 38, 32, 0.78);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-loading-pen,
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-clip {
  color: #8c2f23;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-loading-title {
  color: rgba(140, 47, 35, 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-loading-sub,
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-line {
  color: rgba(43, 38, 32, 0.62);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-loading-ticker {
  color: #8c2f23;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-skel i {
  background-color: rgba(140, 47, 35, 0.14);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-title {
  color: #7a2d12;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-btn {
  color: #8c2f23;
  background: rgba(140, 47, 35, 0.05);
  border-color: rgba(140, 47, 35, 0.45);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-btn:active {
  background: rgba(140, 47, 35, 0.1);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-btn:focus-visible {
  outline-color: rgba(140, 47, 35, 0.6);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-empty-sub {
  color: rgba(43, 38, 32, 0.35);
  border-top-color: rgba(140, 47, 35, 0.15);
}


/* ============================================================
   02·A 旅志怪谈 · 背面「怪谈案卷」（GHOST DOSSIER）
   Ready 态精雕细琢版：
   - 案卷公文抬头 + 红色绝密标签 + 「怪」章按压回弹
   - 现场勘查便签单（Survey Docket）+ 档案元信息标签
   - 线索卡可交互逐条勘验（Verified 印章压印 + 金光点亮）
   - 机密涂黑点击揭秘（Redacted Tape Reveal）
   - 调查手记横线信纸质感 + 探员朱砂印戳
   ============================================================ */
.iw-tj-gh-stage {
  position: relative;
  margin-top: 12px;
  padding-top: 10px;
}
.iw-tj-gh-sheet {
  display: flex;
  flex-direction: column;
  padding: 16px 4px 14px 4px;
  margin: 0;
}

/* ===== 怪谈案卷 · ready 态（背面卷宗） ===== */
/* 抬头：公文档案带（顶部双细线 + 绝密标签） */
.iw-tj-gh-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: 'ShareTechMono', monospace;
  font-size: 7.5px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  padding-bottom: 6px;
}
.iw-tj-gh-head-code {
  display: flex;
  align-items: center;
  gap: 8px;
}
.iw-tj-gh-head-tag {
  font-size: 7px;
  letter-spacing: 1.2px;
  padding: 1px 5px;
  color: #fff;
  background: var(--iw-state-danger);
  border-radius: 2px;
  font-weight: 700;
  box-shadow: 0 1px 3px rgba(var(--iw-rgb-black), 0.35);
}

/* 大标题行：地点名 + 右侧斜盖英文同心圆章 */
.iw-tj-gh-spot {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 14px;
}
.iw-tj-gh-spot-title {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(28px * var(--iw-hand-scale)));
  line-height: 1.3;
  color: rgba(var(--iw-rgb-white), 0.94);
  flex: 1;
  min-width: 0;
  letter-spacing: 1px;
}
/* 英文同心圆章（纯 SVG，斜盖 -10°，逼格档案印泥感） */
.iw-tj-gh-round-seal {
  flex: none;
  width: 44px;
  height: 44px;
  color: var(--iw-state-danger);
  transform: rotate(-10deg);
  cursor: pointer;
  user-select: none;
  filter: drop-shadow(0 1px 2px rgba(var(--iw-rgb-black), 0.5));
  transition: transform 0.16s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.iw-tj-gh-round-seal:active {
  transform: rotate(-10deg) scale(0.9);
}
.iw-tj-gh-spot-en {
  font-family: 'ShareTechMono', monospace;
  font-size: 9px;
  letter-spacing: 2px;
  color: rgba(var(--iw-rgb-gold), 0.55);
  margin-top: 3px;
  margin-bottom: 12px;
}

/* 引子：无底色、无左边线，纯手拙体平铺 + 首行缩进 2em */
.iw-tj-gh-intro {
  margin: 4px 0 14px 0;
  padding: 0;
  background: transparent;
  border: none;
}
.iw-tj-gh-intro p {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(15px * var(--iw-hand-scale)));
  line-height: 1.85;
  letter-spacing: 0.5px;
  color: rgba(var(--iw-rgb-white), 0.88);
  text-indent: 2em;
  margin: 0;
  text-align: justify;
}

/* 正文段落默认排版 */
.iw-tj-gh-body {
  margin-top: 10px;
  padding: 0 2px;
}
.iw-tj-gh-body p {
  font-size: 13px;
  line-height: 1.95;
  letter-spacing: 0.4px;
  color: rgba(var(--iw-rgb-white), 0.78);
  text-indent: 2em;
  margin: 0 0 8px 0;
  text-align: justify;
}

/* ===== 民间传闻 · 老报纸剪报样式（Newspaper Clipping - 抄自早报版面） ===== */
/* 通栏拉通、早报同款底色 (var(--iw-cool-1))、纯英文报头双线、首字下沉 */
.iw-tj-gh-newspaper {
  position: relative;
  margin-top: 12px;
  padding: 14px 16px 16px;
  background: var(--iw-cool-1);
  border: none;
  border-radius: 4px;
  box-shadow: 0 4px 14px rgba(var(--iw-rgb-black), 0.35);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-newspaper {
  background: rgba(244, 240, 230, 0.9);
  border: none;
  box-shadow: 0 3px 10px rgba(43, 38, 32, 0.08);
}

/* 纯英文装饰性报头 (抄自早报 masthead：上下双细线) */
.iw-tj-gh-newspaper-masthead {
  border-top: 1.5px solid rgba(var(--iw-rgb-gold), 0.45);
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.25);
  padding: 6px 0 5px 0;
  margin-bottom: 12px;
  text-align: center;
}
.iw-tj-gh-newspaper-title {
  font-family: "Georgia", "Times New Roman", serif;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: rgba(var(--iw-rgb-white), 0.94);
  line-height: 1.2;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-newspaper-title {
  color: rgba(43, 38, 32, 0.9);
}
.iw-tj-gh-newspaper-sub {
  font-family: 'ShareTechMono', monospace;
  font-size: 7.5px;
  letter-spacing: 2px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  margin-top: 3px;
  text-transform: uppercase;
}

/* 报纸通栏正文（手机端拉通整行阅读，排版开阔） */
.iw-tj-gh-newspaper-body {
  margin: 0;
  padding: 0;
}
.iw-tj-gh-newspaper-body p {
  font-family: "Songti SC", "SimSun", "STSong", serif;
  font-size: 13px;
  line-height: 2;
  letter-spacing: 0.4px;
  color: rgba(var(--iw-rgb-white), 0.85);
  margin: 0;
  text-indent: 0;
  text-align: justify;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-newspaper-body p {
  color: rgba(43, 38, 32, 0.85);
}
/* 传闻分段：次段起首行缩进两字，并清掉首字下沉的浮动（首段过短时不让下沉字压进次段） */
.iw-tj-gh-newspaper-body p + p {
  margin-top: 8px;
  text-indent: 2em;
  clear: left;
}

/* 首字下沉 (Drop Cap) */
.iw-tj-gh-drop-cap {
  float: left;
  font-family: "Songti SC", "SimSun", "STSong", serif;
  font-size: 34px;
  line-height: 0.88;
  padding-top: 2px;
  padding-right: 8px;
  padding-bottom: 2px;
  font-weight: 700;
  color: var(--iw-gold);
  text-shadow: 0 0 10px rgba(var(--iw-rgb-gold), 0.25);
}

/* ===== 交互构件：机密涂抹条（Redacted Tape - 压矮高度对齐文字行） ===== */
/* 纯直角 (radius 0)、无阴影 (shadow none)、行内对齐削薄上下 padding */
.iw-tj-gh-redact {
  display: inline;
  position: relative;
  border-radius: 0;
  box-shadow: none;
  background: #ffffff;
  color: #ffffff;
  padding: 0 4px;
  margin: 0 2px;
  height: 1.15em;
  line-height: 1.15em;
  vertical-align: baseline;
  cursor: pointer;
  user-select: none;
  text-indent: 0;
  border: none;
  transition: all 0.24s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-redact {
  background: #000000;
  color: #000000;
}
.iw-tj-gh-redact::before {
  content: 'RESTRICTED';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0.65);
  font-family: 'ShareTechMono', monospace;
  font-size: 6.5px;
  letter-spacing: 1.2px;
  color: #000000;
  font-weight: 700;
  pointer-events: none;
  opacity: 0.85;
  transition: opacity 0.18s ease;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-redact::before {
  color: #ffffff;
}
/* 揭秘展开态：块溶解，暗红/朱砂高亮真相字浮现 */
.iw-tj-gh-redact.is-revealed {
  background: rgba(220, 53, 69, 0.16) !important;
  color: #ff6b7a !important;
  box-shadow: none;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-redact.is-revealed {
  color: #b32d2e !important;
}
.iw-tj-gh-redact.is-revealed::before {
  opacity: 0;
}

/* ===== 现场勘查 · 手持摄录机/监视器取景框（Camcorder / CCTV Viewfinder） ===== */
.iw-tj-gh-vcr {
  position: relative;
  margin-top: 14px;
  padding: 14px 14px 12px;
  background: rgba(10, 14, 18, 0.88);
  border-radius: 2px;
  box-shadow: inset 0 0 16px rgba(0, 0, 0, 0.6), 0 4px 16px rgba(0, 0, 0, 0.45);
  overflow: hidden;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr {
  background: rgba(236, 240, 234, 0.92);
  box-shadow: inset 0 0 12px rgba(40, 50, 40, 0.08), 0 3px 12px rgba(43, 38, 32, 0.1);
}

/* 微弱 CRT 扫描线质感（不影响正文阅读） */
.iw-tj-gh-vcr::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: repeating-linear-gradient(
    0deg,
    rgba(var(--iw-rgb-white), 0.02) 0px,
    rgba(var(--iw-rgb-white), 0.02) 1px,
    transparent 1px,
    transparent 3px
  );
  z-index: 1;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr::before {
  background: repeating-linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.02) 0px,
    rgba(0, 0, 0, 0.02) 1px,
    transparent 1px,
    transparent 3px
  );
}

/* 四角取景准星（L-Brackets） */
.iw-tj-gh-vcr-corner {
  position: absolute;
  width: 9px;
  height: 9px;
  pointer-events: none;
  z-index: 2;
  border-color: rgba(var(--iw-rgb-gold), 0.55);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr-corner {
  border-color: rgba(43, 38, 32, 0.45);
}
.iw-tj-gh-vcr-corner.is-tl { top: 6px; left: 6px; border-top: 1.5px solid; border-left: 1.5px solid; }
.iw-tj-gh-vcr-corner.is-tr { top: 6px; right: 6px; border-top: 1.5px solid; border-right: 1.5px solid; }
.iw-tj-gh-vcr-corner.is-bl { bottom: 6px; left: 6px; border-bottom: 1.5px solid; border-left: 1.5px solid; }
.iw-tj-gh-vcr-corner.is-br { bottom: 6px; right: 6px; border-bottom: 1.5px solid; border-right: 1.5px solid; }

/* 顶部 HUD 数据头条 */
.iw-tj-gh-vcr-head {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-family: 'ShareTechMono', monospace;
  font-size: 8px;
  letter-spacing: 1.4px;
  padding-bottom: 8px;
  margin-bottom: 10px;
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.15);
  color: rgba(var(--iw-rgb-gold), 0.75);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr-head {
  border-bottom-color: rgba(43, 38, 32, 0.12);
  color: rgba(43, 38, 32, 0.7);
}

.iw-tj-gh-vcr-rec-wrap {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
/* 红点 1.2s 呼吸慢闪 */
.iw-tj-gh-vcr-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--iw-state-danger);
  box-shadow: 0 0 6px rgba(220, 53, 69, 0.75);
  animation: iwVcrBlink 1.4s ease-in-out infinite;
}
@keyframes iwVcrBlink {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.25; transform: scale(0.85); }
}
.iw-tj-gh-vcr-rec-txt {
  font-weight: 700;
  color: #ff5b6c;
  letter-spacing: 1.6px;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr-rec-txt {
  color: #c92a2a;
}
.iw-tj-gh-vcr-tc {
  opacity: 0.75;
  margin-left: 4px;
}

.iw-tj-gh-vcr-meta-right {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.iw-tj-gh-vcr-bat {
  width: 14px;
  height: 8px;
  display: inline-flex;
  align-items: center;
  color: currentColor;
}

/* 勘查正文叙事 */
.iw-tj-gh-vcr-body {
  position: relative;
  z-index: 2;
  margin: 0;
  font-family: inherit;
  font-size: 13px;
  line-height: 2;
  letter-spacing: 0.35px;
  color: rgba(var(--iw-rgb-white), 0.84);
  text-indent: 2em;
  text-align: justify;
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr-body {
  color: rgba(43, 38, 32, 0.88);
}

/* 底部 OSD 参数带 */
.iw-tj-gh-vcr-osd {
  position: relative;
  z-index: 2;
  display: flex;
  flex-wrap: wrap;
  gap: 5px 12px;
  font-family: 'ShareTechMono', monospace;
  font-size: 7.5px;
  letter-spacing: 1.2px;
  color: rgba(var(--iw-rgb-gold), 0.65);
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px dashed rgba(var(--iw-rgb-gold), 0.18);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr-osd {
  color: rgba(43, 38, 32, 0.6);
  border-top-color: rgba(43, 38, 32, 0.15);
}
.iw-tj-gh-vcr-osd span {
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.iw-tj-gh-vcr-osd em {
  font-style: normal;
  color: rgba(var(--iw-rgb-white), 0.85);
}
.innerworld-panel[data-iw-theme="day"] .iw-tj-gh-vcr-osd em {
  color: rgba(43, 38, 32, 0.85);
}
/* ===== GHOST DOSSIER · 线索勘察：物证封存盒 EVIDENCE LOCKER · 五式勘验（拆封袋 / 显影底片 / 涂黑解码 / 紫外长按 / 密码转盘）===== */
.iw-tj-gh-evlocker {
  margin-top: 14px;
}
/* 封存盒铭牌（Locker Label Plate）：挂锁 + 台账名 + 勘验进度 CLEARED N/5 */
.iw-tj-gh-evlocker-head {
  position: relative;
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 7px 11px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.38);
  border-radius: 3px;
  background: rgba(var(--iw-rgb-gold), 0.05);
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-gold), 0.08);
  transition: border-color 0.4s ease, background 0.4s ease, box-shadow 0.4s ease;
}
.iw-tj-gh-evlocker-lock {
  flex: 0 0 auto;
  width: 11px;
  height: 11px;
  color: rgba(var(--iw-rgb-gold), 0.8);
  transition: color 0.4s ease;
}
.iw-tj-gh-evlocker-title {
  font-family: 'ShareTechMono', monospace;
  font-size: 9px;
  letter-spacing: 2.2px;
  font-weight: 700;
  color: rgba(var(--iw-rgb-gold), 0.92);
}
/* 勘验进度（CLEARED N/5）：每勘一件 +1，全清亮金 */
.iw-tj-gh-evlocker-prog {
  margin-left: auto;
  font-family: 'ShareTechMono', monospace;
  font-size: 7px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-white), 0.4);
  transition: color 0.3s ease;
}
/* 全勘章（ALL CLEAR · 朱砂方章）：五件全清时正着盖进铭牌条中部空白，无底色 */
.iw-tj-gh-evlocker-badge {
  position: absolute;
  top: 50%;
  left: 58%;
  display: flex;
  align-items: center;
  padding: 2px 8px 1px;
  border: 1.2px solid var(--iw-state-danger);
  border-radius: 3px;
  font-family: 'ShareTechMono', monospace;
  font-size: 7px;
  letter-spacing: 1.4px;
  color: var(--iw-state-danger);
  background: none;
  transform: translate(-50%, -50%) scale(0.4);
  opacity: 0;
  pointer-events: none;
  transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) 0.12s;
}
.iw-tj-gh-evlocker.is-allclear .iw-tj-gh-evlocker-head {
  border-color: rgba(var(--iw-rgb-gold), 0.7);
  background: rgba(var(--iw-rgb-gold), 0.09);
  box-shadow: inset 0 1px 0 rgba(var(--iw-rgb-gold), 0.14), 0 0 14px rgba(var(--iw-rgb-gold), 0.12);
}
.iw-tj-gh-evlocker.is-allclear .iw-tj-gh-evlocker-lock {
  color: var(--iw-gold);
}
.iw-tj-gh-evlocker.is-allclear .iw-tj-gh-evlocker-prog {
  color: var(--iw-gold);
}
.iw-tj-gh-evlocker.is-allclear .iw-tj-gh-evlocker-badge {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}
/* 证物袋列（五只袋子各配一种勘验方式） */
.iw-tj-gh-clues {
  margin-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
/* 袋身（五式共用底座） */
.iw-tj-gh-clue {
  position: relative;
  border: 1px dashed rgba(var(--iw-rgb-gold), 0.32);
  border-radius: 4px;
  background: rgba(var(--iw-rgb-white), 0.02);
  cursor: pointer;
  user-select: none;
  -webkit-touch-callout: none;
  transition: all 0.22s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.iw-tj-gh-clue:active {
  transform: scale(0.985);
}
/* 回形针封签（骑缝夹在袋沿左侧） */
/* 袋头：编号牌 + 摘要 / 转盘读数 / 勘验提示 */
.iw-tj-gh-clue-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px 9px 30px;
  min-height: 38px;
}
.iw-tj-gh-clue-no {
  flex: 0 0 auto;
  font-family: 'ShareTechMono', monospace;
  font-size: 8px;
  letter-spacing: 1.8px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
  padding: 2px 6px 1px;
  border-radius: 2px;
  transition: all 0.2s ease;
}
.iw-tj-gh-clue-sum {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: 11px;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.55);
  transition: opacity 0.25s ease;
}
.iw-tj-gh-clue-hint {
  flex: 0 0 auto;
  font-family: 'ShareTechMono', monospace;
  font-size: 7px;
  letter-spacing: 1.4px;
  color: rgba(var(--iw-rgb-white), 0.3);
  transition: opacity 0.2s ease;
}
/* 证词展开区（Accordion Body）：max-height + opacity 平滑展开 */
.iw-tj-gh-clue-body {
  position: relative;
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  padding: 0 14px;
  transition: max-height 0.5s cubic-bezier(0.25, 0.9, 0.3, 1), opacity 0.35s ease 0.05s, padding 0.5s cubic-bezier(0.25, 0.9, 0.3, 1);
}
.iw-tj-gh-clue-body p {
  font-size: 12.5px;
  line-height: 1.85;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.75);
  margin: 0;
  text-align: justify;
}
/* —— 启封态（is-opened）：边框变实、编号牌点亮、证词抽出 —— */
.iw-tj-gh-clue.is-opened {
  border-style: solid;
  border-color: rgba(var(--iw-rgb-gold), 0.55);
  background: rgba(var(--iw-rgb-gold), 0.04);
}
.iw-tj-gh-clue.is-opened .iw-tj-gh-clue-no {
  color: var(--iw-gold);
  border-color: var(--iw-gold);
  background: rgba(var(--iw-rgb-gold), 0.14);
  box-shadow: 0 0 6px rgba(var(--iw-rgb-gold), 0.3);
}
.iw-tj-gh-clue.is-opened .iw-tj-gh-clue-sum {
  opacity: 0;
}
.iw-tj-gh-clue.is-opened .iw-tj-gh-clue-hint {
  opacity: 0;
}
.iw-tj-gh-clue.is-opened .iw-tj-gh-clue-body {
  max-height: 320px;
  opacity: 1;
  padding: 2px 14px 26px;
}
/* —— 勘验完成态（is-verified）：五式通用，VERIFIED 章盖下 —— */
.iw-tj-gh-clue.is-verified {
  border-color: rgba(var(--iw-rgb-gold), 0.6);
}
/* —— 式一 · 拆封袋（SEAL）：裸袋左放、编号吊于袋下；右侧小字提示，启封后纸笺滑入撑行，两栏等高 —— */
.iw-tj-gh-clue.type-seal {
  position: relative;
  display: flex;
  align-items: stretch;
  border: none;
  background: none;
}
/* 无框无底色：启封/已勘态也不让底座的虚线框与底色回到卡片上 */
.iw-tj-gh-clue.type-seal.is-opened,
.iw-tj-gh-clue.type-seal.is-verified {
  border: none;
  background: none;
}
/* 左栏：证物袋 + 袋下编号吊牌；列高随右栏拉伸，内容垂直居中，两栏永远等高 */
.iw-tj-gh-clue.type-seal .iw-tj-gh-clue-bag {
  flex: 0 0 84px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 6px 0;
}
.iw-tj-gh-clue-bag-svg {
  width: 64px;
  height: 64px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), color 0.3s ease;
}
/* 右栏：提示小字为浮层不占流内高度；纸笺抽屉在流内撑行 */
.iw-tj-gh-seal-main {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 8px 6px 8px 10px;
}
.iw-tj-gh-clue.type-seal .iw-tj-gh-clue-sum {
  position: absolute;
  top: 50%;
  left: 12px;
  transform: translateY(-50%);
  white-space: nowrap;
  font-size: 11px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-white), 0.42);
}
/* 抽屉：收起时高度归零，把滑出在外的笺纸整体裁掉 */
.iw-tj-gh-seal-clip {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
  transition: max-height 0.5s cubic-bezier(0.25, 0.9, 0.3, 1), opacity 0.25s ease;
}
/* 证词笺：自右侧滑入（弹簧曲线）；VERIFIED 章锚定笺纸右下角 */
.iw-tj-gh-seal-paper {
  position: relative;
  background: var(--iw-cool-1);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.4);
  border-radius: 3px;
  padding: 12px 13px;
  box-shadow: -5px 0 18px rgba(var(--iw-rgb-black), 0.5);
  transform: translateX(102%);
  opacity: 0;
  transition: transform 0.55s cubic-bezier(0.34, 1.2, 0.5, 1), opacity 0.2s ease;
  overflow-y: auto;
  max-height: 280px;
}
.iw-tj-gh-seal-paper p {
  font-size: 12.5px;
  line-height: 1.85;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.82);
  margin: 0;
  text-align: justify;
}
/* 启封态：抽屉撑开、笺纸滑入、袋图轻转 */
.iw-tj-gh-clue.type-seal.is-opened .iw-tj-gh-clue-bag-svg {
  transform: rotate(-7deg) scale(1.06);
}
.iw-tj-gh-clue.type-seal.is-opened .iw-tj-gh-seal-clip {
  max-height: 300px;
  opacity: 1;
  pointer-events: auto;
}
.iw-tj-gh-clue.type-seal.is-opened .iw-tj-gh-seal-paper {
  transform: translateX(0);
  opacity: 1;
}
/* —— 式二 · 显影底片（DEVELOP）：文字在左、底片在右；小字提示，点击后字迹裸放背景逐字显影 —— */
.iw-tj-gh-clue.type-film {
  position: relative;
  display: flex;
  align-items: stretch;
  border: none;
  background: none;
}
.iw-tj-gh-clue.type-film.is-opened,
.iw-tj-gh-clue.type-film.is-verified {
  border: none;
  background: none;
}
/* 左栏：提示小字浮层 + 显影抽屉（文字裸放背景，无边框无底色） */
.iw-tj-gh-film-main {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 8px 10px 8px 4px;
}
.iw-tj-gh-clue.type-film .iw-tj-gh-clue-sum {
  position: absolute;
  top: 50%;
  left: 4px;
  transform: translateY(-50%);
  white-space: nowrap;
  font-size: 11px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-white), 0.42);
}
.iw-tj-gh-film-clip {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
  transition: max-height 0.5s cubic-bezier(0.25, 0.9, 0.3, 1), opacity 0.25s ease;
}
.iw-tj-gh-film-clip p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.85;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.82);
  text-align: justify;
}
.iw-tj-gh-clue.type-film.is-opened .iw-tj-gh-film-clip {
  max-height: 300px;
  opacity: 1;
  pointer-events: auto;
}
/* 右栏：底片 + 编号吊牌 */
.iw-tj-gh-clue.type-film .iw-tj-gh-clue-bag {
  flex: 0 0 84px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 6px 0;
}
.iw-tj-gh-clue.type-film.is-opened .iw-tj-gh-clue-bag-svg {
  transform: rotate(-4deg) scale(1.06);
}
.iw-tj-gh-clue.type-film .iw-tj-gh-clue-film-text span {
  opacity: 0;
  animation: iw-tj-film-in 0.55s ease forwards;
}
@keyframes iw-tj-film-in {
  0% { opacity: 0; filter: blur(5px); }
  55% { opacity: 0.85; filter: blur(1px); color: rgba(var(--iw-rgb-gold), 0.9); }
  100% { opacity: 1; filter: blur(0); color: rgba(var(--iw-rgb-white), 0.75); }
}
/* —— 式三 · 涂黑解码（DECODE）：一张卡片常放（虚线框保留）；点墨条逐条洗出，全洗出即定影 —— */
.iw-tj-gh-clue.type-redact {
  cursor: default;
}
.iw-tj-gh-clue.type-redact .iw-tj-gh-clue-head {
  padding: 10px 12px 6px 12px;
  min-height: 0;
}
.iw-tj-gh-clue.type-redact .iw-tj-gh-clue-sum {
  font-size: 11px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-white), 0.42);
}
.iw-tj-gh-clue.type-redact .iw-tj-gh-clue-body {
  max-height: 320px;
  opacity: 1;
  padding: 0 14px 14px;
}
.iw-tj-gh-clue.type-redact.is-verified .iw-tj-gh-clue-sum {
  opacity: 0;
}

/* —— 式四 · 紫外灯（UV LAMP）：拖灯照读——按住灯身跟手拖动，光晕内的字逐个洗出、永久定影，照满即勘验 —— */
.iw-tj-gh-clue.type-uv {
  position: relative;
  display: flex;
  align-items: stretch;
  border: none;
  background: none;
}
.iw-tj-gh-clue.type-uv:active {
  transform: none;
}
.iw-tj-gh-clue.type-uv.is-opened,
.iw-tj-gh-clue.type-uv.is-verified {
  border: none;
  background: none;
}
/* 左栏：提示小字浮层 + 幽灵字（照过即永久定影） */
.iw-tj-gh-uv-main {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 8px 10px 8px 4px;
}
.iw-tj-gh-clue.type-uv .iw-tj-gh-clue-sum {
  position: absolute;
  top: 50%;
  left: 4px;
  transform: translateY(-50%);
  white-space: nowrap;
  font-size: 11px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-white), 0.42);
  transition: opacity 0.3s ease;
}
.iw-tj-gh-clue.type-uv.is-uv-touched .iw-tj-gh-clue-sum,
.iw-tj-gh-clue.type-uv.is-uv-holding .iw-tj-gh-clue-sum {
  opacity: 0;
}
.iw-tj-gh-clue-uv-text {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.85;
  letter-spacing: 0.3px;
  text-align: justify;
  user-select: none;
  -webkit-user-select: none;
}
.iw-tj-gh-uv-ch {
  color: rgba(var(--iw-rgb-white), 0.10);
  transition: color 0.35s ease, text-shadow 0.35s ease;
}
.iw-tj-gh-uv-ch.is-lit {
  color: rgba(var(--iw-rgb-gold), 0.92);
  text-shadow: 0 0 8px rgba(var(--iw-rgb-gold), 0.35);
}
.iw-tj-gh-clue.type-uv.is-verified .iw-tj-gh-uv-ch {
  color: rgba(var(--iw-rgb-white), 0.78);
  text-shadow: none;
}
/* 右栏：紫外灯 + 编号吊牌（按住即拖灯） */
.iw-tj-gh-clue.type-uv .iw-tj-gh-clue-bag {
  flex: 0 0 84px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 6px 0;
  touch-action: none;
  cursor: grab;
}
.iw-tj-gh-clue.type-uv .iw-tj-gh-clue-bag-svg {
  color: rgba(var(--iw-rgb-gold), 0.72);
  transition: color 0.3s ease, filter 0.3s ease;
}
/* 按住态：灯身脱离布局跟手移动，光锥点亮 */
.iw-tj-gh-clue.type-uv.is-uv-holding .iw-tj-gh-clue-bag-svg {
  position: absolute;
  z-index: 60;
  margin: -34px 0 0 -32px;
  pointer-events: none;
  color: rgba(var(--iw-rgb-gold), 0.95);
  filter: drop-shadow(0 0 10px rgba(var(--iw-rgb-gold), 0.4));
  transform: rotate(-6deg) scale(1.12);
  transition: none;
}
/* 光晕：跟随灯头的柔和金光斑 */
.iw-tj-gh-uv-glow {
  position: absolute;
  z-index: 55;
  width: 150px;
  height: 150px;
  margin: -75px 0 0 -75px;
  border-radius: 50%;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(circle, rgba(var(--iw-rgb-gold), 0.16) 0%, rgba(var(--iw-rgb-gold), 0.07) 45%, rgba(var(--iw-rgb-gold), 0) 70%);
  transition: opacity 0.2s ease;
}
.iw-tj-gh-clue.type-uv.is-uv-holding .iw-tj-gh-uv-glow {
  opacity: 1;
}
/* —— 式五 · 密码转盘（DIAL）：真·拧转——按住大盘拧动，每 36 度卡一格，正向满 5 格开锁，证词逐字显影 —— */
.iw-tj-gh-clue.type-dial {
  position: relative;
  display: flex;
  align-items: stretch;
  border: none;
  background: none;
}
.iw-tj-gh-clue.type-dial:active {
  transform: none;
}
.iw-tj-gh-clue.type-dial.is-opened,
.iw-tj-gh-clue.type-dial.is-verified {
  border: none;
  background: none;
}
/* 左栏：提示小字浮层 + 显影抽屉（复用式二逐字显影） */
.iw-tj-gh-dial-main {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 8px 4px 8px 10px;
}
.iw-tj-gh-clue.type-dial .iw-tj-gh-clue-sum {
  position: absolute;
  top: 50%;
  left: 12px;
  transform: translateY(-50%);
  white-space: nowrap;
  font-size: 11px;
  letter-spacing: 1.6px;
  color: rgba(var(--iw-rgb-white), 0.42);
  transition: opacity 0.3s ease;
}
.iw-tj-gh-clue.type-dial.is-dial-touched .iw-tj-gh-clue-sum,
.iw-tj-gh-clue.type-dial.is-verified .iw-tj-gh-clue-sum {
  opacity: 0;
}
.iw-tj-gh-dial-clip {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
  transition: max-height 0.5s cubic-bezier(0.25, 0.9, 0.3, 1), opacity 0.25s ease;
}
.iw-tj-gh-clue.type-dial.is-verified .iw-tj-gh-dial-clip {
  max-height: 300px;
  opacity: 1;
  pointer-events: auto;
}
.iw-tj-gh-dial-clip p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.85;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.82);
  text-align: justify;
}
/* 右栏：大转盘 + 编号吊牌（按住即拧） */
.iw-tj-gh-clue.type-dial .iw-tj-gh-clue-bag {
  flex: 0 0 120px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 6px 0;
  touch-action: none;
  cursor: grab;
}
.iw-tj-gh-clue-dial-ring {
  width: 140px;
  height: 110px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  transition: color 0.3s ease;
}
.iw-tj-gh-clue-dial-ticks {
  transform-box: view-box;
  transform-origin: 48px 56px;
}
.iw-tj-gh-clue-dial-pin {
  fill: var(--iw-gold);
  filter: drop-shadow(0 0 3px rgba(var(--iw-rgb-gold), 0.5));
}
.iw-tj-gh-clue-dial-key {
  fill: rgba(var(--iw-rgb-gold), 0.55);
}
.iw-tj-gh-clue.type-dial.is-dial-holding .iw-tj-gh-clue-dial-ring {
  color: rgba(var(--iw-rgb-gold), 0.85);
}
.iw-tj-gh-clue.type-dial.is-verified .iw-tj-gh-clue-dial-ring {
  color: rgba(var(--iw-rgb-gold), 0.9);
}
/* 式五的逐字显影：与式二共用 class，动画 keyframes 借用式二的 iw-tj-film-in */
.iw-tj-gh-clue.type-dial .iw-tj-gh-clue-film-text span {
  opacity: 0;
  animation: iw-tj-film-in 0.55s ease forwards;
}
/* ===== 调查手记（FIELD DIARY）：横线信纸质感 + 探员手签朱砂印 ===== */
.iw-tj-gh-diary {
  position: relative;
  margin-top: 14px;
  padding: 14px 14px 14px 16px;
  border-left: 2.5px solid rgba(var(--iw-rgb-gold), 0.6);
  /* 模拟老式横线本细线（28px 行高细线背景） */
  background:
    repeating-linear-gradient(
      transparent,
      transparent 27px,
      rgba(var(--iw-rgb-gold), 0.08) 27px,
      rgba(var(--iw-rgb-gold), 0.08) 28px
    ),
    rgba(var(--iw-rgb-gold), 0.025);
  border-radius: 0 6px 6px 0;
}
.iw-tj-gh-diary p {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(16px * var(--iw-hand-scale)));
  line-height: 28px;
  letter-spacing: 0.6px;
  color: rgba(var(--iw-rgb-white), 0.88);
  text-indent: 2em;
  margin: 0;
}
/* 手记末尾日期落款已取消（.iw-tj-gh-diary-sign / -date 随之移除） */
/* ===== GHOST DOSSIER · 空态：案卷未启（经典公文缠线档案袋） ===== */
.iw-tj-gh-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 32px 20px 32px;
  animation: iwTjSettle 0.42s ease forwards;
}

/* --- 拟物档案袋整体 (Manila String Envelope) --- */
.iw-tj-gh-envelope-wrap {
  position: relative;
  width: 180px;
  height: 236px;
  margin-bottom: 24px;
  transform: rotate(-1.5deg);
}

/* 档案袋底身 */
.iw-tj-gh-envelope-body {
  position: absolute;
  inset: 0;
  border-radius: 4px;
  background: linear-gradient(175deg, rgba(var(--iw-rgb-gold), 0.16) 0%, rgba(var(--iw-rgb-gold), 0.1) 100%);
  border: 1.5px solid rgba(var(--iw-rgb-gold), 0.45);
  box-shadow:
    0 12px 30px -8px rgba(var(--iw-rgb-black), 0.5),
    0 2px 6px rgba(var(--iw-rgb-gold), 0.12),
    inset 0 1px 0 rgba(var(--iw-rgb-white), 0.15);
  overflow: hidden;
}

/* 顶部向下翻折的封舌 (Flap) - 浅梯形覆在袋身外 */
.iw-tj-gh-envelope-flap {
  position: absolute;
  top: 0;
  left: -1px;
  right: -1px;
  height: 68px;
  background: linear-gradient(180deg, rgba(var(--iw-rgb-gold), 0.24) 0%, rgba(var(--iw-rgb-gold), 0.16) 100%);
  border-left: 1.5px solid rgba(var(--iw-rgb-gold), 0.45);
  border-right: 1.5px solid rgba(var(--iw-rgb-gold), 0.45);
  border-bottom: 1.5px solid rgba(var(--iw-rgb-gold), 0.5);
  clip-path: polygon(0 0, 100% 0, 80% 100%, 20% 100%);
  box-shadow: 0 4px 10px -2px rgba(var(--iw-rgb-black), 0.35);
  z-index: 2;
  pointer-events: none;
}

/* --- 双黄铜铆钉圆盘 + 8字红绳缠绕机构 --- */
.iw-tj-gh-tie-system {
  position: absolute;
  top: 48px;
  left: 50%;
  width: 32px;
  height: 82px;
  margin-left: -16px;
  z-index: 3;
  pointer-events: none;
}

/* 上铆钉扣（位于封舌尖部） */
.iw-tj-gh-disc-top {
  position: absolute;
  top: 0;
  left: 50%;
  width: 18px;
  height: 18px;
  margin-left: -9px;
  border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, rgba(var(--iw-rgb-gold), 0.45) 0%, rgba(var(--iw-rgb-gold), 0.2) 75%, rgba(var(--iw-rgb-gold), 0.5) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.85);
  box-shadow: 0 2px 4px rgba(var(--iw-rgb-black), 0.45);
}
.iw-tj-gh-disc-top::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 4px;
  height: 4px;
  margin: -2px 0 0 -2px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-black), 0.8);
  box-shadow: inset 0 0 1px rgba(var(--iw-rgb-gold), 0.5);
}

/* 下铆钉扣（位于袋身） */
.iw-tj-gh-disc-bot {
  position: absolute;
  bottom: 0;
  left: 50%;
  width: 18px;
  height: 18px;
  margin-left: -9px;
  border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, rgba(var(--iw-rgb-gold), 0.45) 0%, rgba(var(--iw-rgb-gold), 0.2) 75%, rgba(var(--iw-rgb-gold), 0.5) 100%);
  border: 1px solid rgba(var(--iw-rgb-gold), 0.85);
  box-shadow: 0 2px 4px rgba(var(--iw-rgb-black), 0.45);
}
.iw-tj-gh-disc-bot::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 4px;
  height: 4px;
  margin: -2px 0 0 -2px;
  border-radius: 50%;
  background: rgba(var(--iw-rgb-black), 0.8);
  box-shadow: inset 0 0 1px rgba(var(--iw-rgb-gold), 0.5);
}

/* 缠绕红线 SVG */
.iw-tj-gh-tie-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* 案卷档号 (Bottom Case Code) */
.iw-tj-gh-empty-tag {
  position: absolute;
  bottom: 14px;
  left: 0;
  right: 0;
  text-align: center;
  font-family: 'ShareTechMono', monospace;
  font-size: 8px;
  letter-spacing: 2.2px;
  color: rgba(var(--iw-rgb-gold), 0.7);
  z-index: 1;
}

/* 文案排版 */
.iw-tj-gh-empty-title {
  font-size: 21px;
  letter-spacing: 1.2px;
  color: rgba(var(--iw-rgb-white), 0.92);
  margin-bottom: 8px;
  text-shadow: 0 1px 4px rgba(var(--iw-rgb-black), 0.4);
}
.iw-tj-gh-empty-line {
  font-size: 13px;
  letter-spacing: 0.3px;
  color: rgba(var(--iw-rgb-white), 0.55);
  margin-bottom: 24px;
}

/* --- 解密横条长按钮 (Breach & Seal Button) --- */
.iw-tj-gh-empty-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 240px;
  max-width: 90vw;
  padding: 12px 18px;
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.08) 0%, rgba(var(--iw-rgb-gold), 0.14) 50%, rgba(var(--iw-rgb-gold), 0.08) 100%);
  border: 1px solid var(--iw-state-danger);
  border-radius: 3px;
  color: var(--iw-state-danger);
  cursor: pointer;
  box-shadow: 0 4px 14px -2px rgba(220, 53, 69, 0.22);
  transition: transform 0.18s ease, background 0.18s ease, box-shadow 0.18s ease;
}
.iw-tj-gh-empty-btn:hover {
  background: linear-gradient(90deg, rgba(var(--iw-rgb-gold), 0.14) 0%, rgba(var(--iw-rgb-gold), 0.22) 50%, rgba(var(--iw-rgb-gold), 0.14) 100%);
  box-shadow: 0 6px 18px -2px rgba(220, 53, 69, 0.35);
}
.iw-tj-gh-empty-btn:active {
  transform: scale(0.98);
  box-shadow: 0 2px 8px -2px rgba(220, 53, 69, 0.2);
}
.iw-tj-gh-empty-btn:focus-visible {
  outline: 2px solid var(--iw-state-danger);
  outline-offset: 3px;
}
.iw-tj-gh-empty-btn-text {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.iw-tj-gh-empty-btn-en {
  font-family: 'ShareTechMono', monospace;
  font-size: 10px;
  letter-spacing: 1.6px;
  opacity: 0.85;
}
.iw-tj-gh-empty-btn-cn {
  font-size: 13px;
  letter-spacing: 1.4px;
  font-weight: 500;
}
.iw-tj-gh-empty-btn-icon {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

/* 底部状态注记 */
.iw-tj-gh-empty-sub {
  margin-top: 18px;
  padding-top: 10px;
  border-top: 1px dashed rgba(var(--iw-rgb-gold), 0.25);
  font-family: 'ShareTechMono', monospace;
  font-size: 8.5px;
  letter-spacing: 1.8px;
  color: rgba(var(--iw-rgb-gold), 0.65);
}
/* ===== GHOST DOSSIER · 加载态：勘察中（放大镜描边动画） ===== */
.iw-tj-gh-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 56px 20px 44px;
  animation: iwTjSettle 0.42s ease forwards;
}
.iw-tj-gh-loading-lens {
  width: 92px;
  height: 92px;
  margin-bottom: 22px;
  color: rgba(var(--iw-rgb-gold), 0.8);
  transform-origin: 50% 60%;
  animation: iwGhLensSway 3.6s ease-in-out infinite;
}
.iw-tj-gh-loading-lens .iw-tj-gh-lens-ring {
  stroke-dasharray: 100;
  animation: iwGhLensRing 3.6s infinite;
}
.iw-tj-gh-loading-lens .iw-tj-gh-lens-handle {
  transform-box: view-box;
  transform-origin: 61px 59px;
  animation: iwGhLensHandle 3.6s infinite;
}
/* 环：起笔快收笔慢地画圈；82% 后金光一闪（「找到了」），再缓缓退场；接缝处保持全透明不跳 */
@keyframes iwGhLensRing {
  0% { stroke-dashoffset: 100; opacity: 0; filter: drop-shadow(0 0 0 rgba(var(--iw-rgb-gold), 0)); animation-timing-function: ease-out; }
  10% { opacity: 0.55; }
  16% { opacity: 1; animation-timing-function: cubic-bezier(0.25, 0.75, 0.35, 1); }
  52% { stroke-dashoffset: 0; opacity: 1; }
  82% { stroke-dashoffset: 0; opacity: 1; filter: drop-shadow(0 0 0 rgba(var(--iw-rgb-gold), 0)); animation-timing-function: ease-out; }
  88% { stroke-dashoffset: 0; opacity: 1; filter: drop-shadow(0 0 9px rgba(var(--iw-rgb-gold), 0.85)); animation-timing-function: ease-in; }
  95% { stroke-dashoffset: 0; opacity: 0; filter: drop-shadow(0 0 2px rgba(var(--iw-rgb-gold), 0.15)); }
  100% { stroke-dashoffset: 100; opacity: 0; filter: drop-shadow(0 0 0 rgba(var(--iw-rgb-gold), 0)); }
}
/* 柄：从环的连接点甩出（-25 度回弹到 0 度），随环一起退场；弹性曲线写在起始关键帧才对 24%→40% 的旋转插值生效 */
@keyframes iwGhLensHandle {
  0%, 24% { opacity: 0; transform: rotate(-25deg); animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); }
  30% { opacity: 1; }
  40%, 86% { opacity: 1; transform: rotate(0deg); animation-timing-function: ease-in; }
  94%, 100% { opacity: 0; transform: rotate(0deg); }
}
/* 容器：画完圈后轻轻扫视晃动（手持找线索），随后归位 */
@keyframes iwGhLensSway {
  0%, 52% { transform: rotate(0deg) scale(1); }
  60% { transform: rotate(-2deg) scale(1.02); }
  68% { transform: rotate(1.6deg) scale(0.98); }
  76% { transform: rotate(-1.2deg) scale(1.02); }
  84% { transform: rotate(0.5deg) scale(1); }
  92%, 100% { transform: rotate(0deg) scale(1); }
}
.iw-tj-gh-loading-title {
  font-family: Georgia, serif;
  font-size: 13px;
  letter-spacing: 5px;
  color: rgba(var(--iw-rgb-gold), 0.6);
  margin-bottom: 10px;
}
.iw-tj-gh-loading-sub {
  font-size: 14.5px;
  line-height: 1.7;
  color: rgba(var(--iw-rgb-white), 0.5);
  margin-bottom: 14px;
}
.iw-tj-gh-loading-ticker {
  font-family: 'ShareTechMono', monospace;
  font-size: 12px;
  letter-spacing: 3px;
  color: rgba(var(--iw-rgb-gold), 0.85);
  min-height: 20px;
  transition: opacity 0.18s ease;
}

/* ===== 02·C POSTAL RELAY · 驿邮分拣台（UI 演示） ===== */
.iw-postal-view {
  --iw-postal-paper: #e9dfc7;
  --iw-postal-paper-deep: #d4c4a3;
  --iw-postal-ink: #443c30;
  --iw-postal-ink-soft: #776950;
  --iw-postal-red: #9d453a;
  --iw-postal-kraft: #a58a61;
  padding-bottom: 2px;
}
.iw-postal-detail-head {
  padding: 0 2px 12px;
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.14);
}
.iw-postal-masthead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 23px 7px 18px;
}
.iw-postal-kicker,
.iw-postal-tray-head span,
.iw-postal-counter,
.iw-postal-parcel-heading > span,
.iw-postal-parcel-number,
.iw-postal-modal-head,
.iw-postal-inspection-kicker,
.iw-postal-inspection-rule,
.iw-postal-inspection-foot {
  font-family: 'ShareTechMono', 'SF Mono', monospace;
}
.iw-postal-kicker {
  display: block;
  margin-bottom: 8px;
  color: rgba(var(--iw-rgb-gold), 0.72);
  font-size: 9px;
  letter-spacing: 2px;
}
.iw-postal-mast-copy h2 {
  margin: 0;
  color: var(--iw-text-0);
  font-family: Georgia, 'Songti SC', 'SimSun', serif;
  font-size: 29px;
  font-weight: 500;
  letter-spacing: 5px;
}
.iw-postal-mast-copy p {
  margin: 11px 0 0;
  color: rgba(var(--iw-rgb-white), 0.48);
  font-size: 11px;
  line-height: 1.9;
  user-select: text;
  -webkit-user-select: text;
}
.iw-postal-mast-seal {
  flex: 0 0 79px;
  width: 79px;
  height: 79px;
  color: rgba(var(--iw-rgb-gold), 0.44);
  transform: rotate(9deg);
}
.iw-postal-mast-seal svg { width: 100%; height: 100%; }
.iw-postal-counter {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 9px;
  padding: 9px 10px;
  border-top: 1px solid rgba(var(--iw-rgb-gold), 0.18);
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.18);
  color: rgba(var(--iw-rgb-gold), 0.6);
  font-size: 8px;
  letter-spacing: 0.65px;
}
.iw-postal-counter b {
  margin-right: 3px;
  color: var(--iw-gold);
  font-size: 14px;
  font-weight: 400;
}
.iw-postal-counter i {
  width: 1px;
  height: 11px;
  background: rgba(var(--iw-rgb-gold), 0.2);
}
.iw-postal-counter-dead { margin-left: auto; color: #c98175; }
.iw-postal-sorting-desk {
  position: relative;
  margin-top: 16px;
  padding: 0 3px 18px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.1);
  border-radius: 3px;
  background:
    repeating-linear-gradient(0deg, transparent 0, transparent 27px, rgba(var(--iw-rgb-gold), 0.025) 28px),
    linear-gradient(115deg, rgba(var(--iw-rgb-warm-2), 0.82), rgba(var(--iw-rgb-warm-0), 0.68));
  box-shadow: inset 0 0 35px rgba(var(--iw-rgb-black), 0.22);
}
.iw-postal-tray { padding: 21px 10px 4px; }
.iw-postal-tray + .iw-postal-tray {
  margin-top: 18px;
  border-top: 1px dashed rgba(var(--iw-rgb-gold), 0.19);
}
.iw-postal-tray-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
  padding: 0 2px;
}
.iw-postal-tray-head h3 {
  margin: 0;
  color: rgba(var(--iw-rgb-gold), 0.87);
  font-family: Georgia, 'Songti SC', 'SimSun', serif;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 2px;
}
.iw-postal-tray-head span {
  color: rgba(var(--iw-rgb-gold), 0.38);
  font-size: 8px;
  letter-spacing: 1.4px;
}
/* 信件改横版单列：一排一封竖着叠，后续新增不突兀；明信片维持两列 */
.iw-postal-letters-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 15px;
  align-items: start;
}
.iw-postal-postcards-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 13px;
  align-items: start;
}
/* ↑ 旧并排布局的基础值；手机宽度下由下方「明信片」段的叠放规则覆盖，≥700px 再恢复并排 */
.iw-postal-item { position: relative; min-width: 0; }
.iw-postal-item button {
  margin: 0;
  border: 0;
  font: inherit;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.iw-postal-item button:focus-visible,
.iw-postal-modal-close:focus-visible {
  outline: 2px solid var(--iw-gold);
  outline-offset: 4px;
}

/* 信件：桌面上的拟纸信封，地址是正面印刷，弹窗才出现正文 */
/* 横版信封更宽，同角度视觉倾斜被放大：微旋收到 ±0.7° */
.iw-postal-letter:nth-child(odd) { transform: rotate(-0.7deg); }
.iw-postal-letter:nth-child(even) { transform: rotate(0.7deg) translateY(4px); }
.iw-postal-letter-open {
  display: block;
  width: 100%;
  padding: 0;
  background: transparent;
  text-align: left;
  transition: transform 0.22s ease, filter 0.22s ease;
}
.iw-postal-letter-open:active { transform: translateY(2px) scale(0.985); }
.iw-postal-envelope {
  position: relative;
  display: block;
  aspect-ratio: 1.9; /* 横版信封（近中式五号信封横放比例） */
  overflow: hidden;
  border: 1px solid rgba(65, 50, 30, 0.27);
  border-radius: 2px;
  background: var(--iw-postal-paper);
  box-shadow: 1px 3px 0 #b6a889, 4px 8px 14px rgba(var(--iw-rgb-black), 0.32);
}
.iw-postal-envelope-paper {
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(0deg, transparent 0, transparent 3px, rgba(73, 57, 32, 0.025) 4px),
    linear-gradient(125deg, rgba(255, 255, 255, 0.38), transparent 56%);
}
.iw-postal-envelope-flap {
  position: absolute;
  z-index: 1;
  top: -1px;
  left: -1px;
  width: calc(100% + 2px);
  height: 52%; /* 横版下拉宽成扁长雁形 */
  background: #dfd1b4;
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  filter: drop-shadow(0 1px 0 rgba(65, 50, 30, 0.28));
}
.iw-postal-envelope-fold {
  position: absolute;
  z-index: 1;
  bottom: 0;
  width: 30%; /* 横版侧折角收窄 */
  height: 62%;
  background: rgba(197, 180, 145, 0.21);
}
.iw-postal-envelope-fold.is-left { left: 0; clip-path: polygon(0 0, 100% 100%, 0 100%); }
.iw-postal-envelope-fold.is-right { right: 0; clip-path: polygon(100% 0, 100% 100%, 0 100%); }
.iw-postal-envelope-address {
  position: absolute;
  z-index: 2;
  right: 16%; /* 横版：地址带居中收窄，纵向三行 */
  bottom: 13%;
  left: 16%;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px 4px;
  color: var(--iw-postal-ink);
  text-align: center;
}
.iw-postal-envelope-address small { font-size: 7px; letter-spacing: 1px; }
.iw-postal-envelope-address b {
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(12px * var(--iw-hand-scale)));
  font-weight: 500;
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.iw-postal-envelope-address i {
  color: var(--iw-postal-ink-soft);
  font-size: 7px;
  font-style: normal;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
/* 火漆容器：不再自己画圆（圆、蜡滴、凹刻全在 SVG 里），只做定位与投影 */
.iw-postal-envelope-seal {
  position: absolute;
  z-index: 3;
  top: calc(52% - 27px); /* 横版：压在翻盖尖端上方一点，避免盖住地址带的字 */
  left: calc(50% - 15px);
  width: 30px;
  height: 30px;
  filter: drop-shadow(0 2px 3px rgba(60, 32, 24, 0.35));
  transform: rotate(-12deg);
  pointer-events: none;
}
.iw-postal-envelope-seal svg { display: block; width: 100%; height: 100%; }
.iw-postal-envelope-postmark {
  position: absolute;
  z-index: 2;
  right: 7px;
  bottom: 5px;
  left: 7px;
  overflow: hidden;
  color: rgba(68, 60, 48, 0.55);
  font-size: 7px;
  letter-spacing: 0.4px;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.iw-postal-item-action {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 5px;
  padding: 11px 1px 0;
  color: rgba(var(--iw-rgb-gold), 0.68);
  font-family: 'ShareTechMono', monospace;
  font-size: 8px;
  letter-spacing: 0.3px;
}
.iw-postal-item-action svg { flex: 0 0 13px; width: 13px; height: 13px; }

/* 明信片：正反面均为同一张卡，不额外打开页面。
   手机宽度下两张叠放：各占 60% 宽，左右错开、中段重叠；.is-front 那张在上层。
   点下层那张只把它换到上层，点上层那张才翻面（逻辑见 togglePostalPostcard）。 */
.iw-postal-postcards-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "stack";
  align-items: start;
  padding-bottom: 14px;
}
.iw-postal-postcard {
  grid-area: stack;
  width: 60%;
  z-index: 1;
  transition: transform 0.32s cubic-bezier(0.2, 0.72, 0.25, 1);
}
.iw-postal-postcard:nth-child(odd) { justify-self: start; transform: rotate(-1.4deg); }
/* 上下错落：右边那张整体下沉。用 margin-top 而不是 translateY，让网格高度跟着变高，不会压到下方「到站包裹」。
   margin 百分比按容器宽度算：11% 容器宽 ≈ 卡片高度的 14%（卡高 = 60% 宽 / 0.74） */
.iw-postal-postcard:nth-child(even) { justify-self: end; margin-top: 11%; transform: rotate(1.6deg); }
.iw-postal-postcard.is-front { z-index: 2; }
.iw-postal-postcard.is-front:nth-child(odd) { transform: rotate(-1.4deg) translateY(-4px); }
.iw-postal-postcard.is-front:nth-child(even) { transform: rotate(1.6deg) translateY(-4px); }
.iw-postal-postcard:not(.is-front) .iw-postal-card-face { box-shadow: 1px 2px 6px rgba(var(--iw-rgb-black), 0.28); }
.iw-postal-postcard.is-front .iw-postal-card-face { box-shadow: 4px 10px 22px rgba(var(--iw-rgb-black), 0.45); }
.iw-postal-flip {
  display: block;
  width: 100%;
  aspect-ratio: 0.74;
  padding: 0;
  border-radius: 2px;
  background: transparent;
  perspective: 1000px;
  text-align: left;
}
.iw-postal-flip-inner {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform 0.62s cubic-bezier(0.2, 0.72, 0.25, 1);
}
.iw-postal-flip[aria-pressed="true"] .iw-postal-flip-inner { transform: rotateY(180deg); }
.iw-postal-card-face {
  position: absolute;
  inset: 0;
  display: block;
  overflow: hidden;
  border: 5px solid #e7ddc7;
  border-radius: 2px;
  box-sizing: border-box;
  background: var(--iw-postal-paper);
  box-shadow: 2px 4px 12px rgba(var(--iw-rgb-black), 0.35);
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
.iw-postal-card-front > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: sepia(0.35) saturate(0.66) contrast(0.93);
}
.iw-postal-card-front-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(21, 19, 15, 0.08) 30%, rgba(21, 19, 15, 0.88) 100%);
}
.iw-postal-card-photo-label {
  position: absolute;
  right: 9px;
  bottom: 34px;
  left: 9px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  color: rgba(255, 250, 232, 0.75);
  font-family: 'ShareTechMono', monospace;
  font-size: 8px;
  letter-spacing: 1.3px;
}
.iw-postal-card-photo-label b {
  color: #fff7e3;
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(13px * var(--iw-hand-scale)));
  font-weight: 400;
  letter-spacing: 0.5px;
}
.iw-postal-card-turn {
  position: absolute;
  right: 8px;
  bottom: 9px;
  left: 8px;
  display: flex;
  align-items: center;
  gap: 5px;
  padding-top: 7px;
  border-top: 1px solid rgba(255, 248, 225, 0.26);
  color: rgba(255, 248, 225, 0.65);
  font-size: 8px;
}
.iw-postal-card-turn svg { width: 11px; height: 11px; }
.iw-postal-card-back {
  padding: 10px 9px 8px;
  background:
    repeating-linear-gradient(0deg, transparent 0, transparent 21px, rgba(85, 69, 43, 0.13) 22px),
    var(--iw-postal-paper);
  color: var(--iw-postal-ink);
  transform: rotateY(180deg);
}
.iw-postal-card-back-head {
  display: flex;
  justify-content: space-between;
  padding-bottom: 7px;
  padding-right: 42px;
  border-bottom: 1px solid rgba(68, 60, 48, 0.25);
  font-family: 'ShareTechMono', monospace;
  font-size: 6px;
  letter-spacing: 0.5px;
}
.iw-postal-card-back-head b { font-size: 8px; }
.iw-postal-mini-stamp {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 31px;
  height: 38px;
  padding: 3px;
  background: #f3e9d1;
  outline: 1px dashed rgba(68, 60, 48, 0.5);
  outline-offset: -2px;
  transform: rotate(4deg);
}
.iw-postal-mini-stamp img { display: block; width: 100%; height: 25px; object-fit: cover; filter: grayscale(0.7) sepia(0.3); }
.iw-postal-mini-stamp i { display: block; font-family: Georgia, serif; font-size: 7px; font-style: normal; text-align: right; }
/* 收件人行：位于邮票左侧（右侧让出邮票宽度），最多两行，超长省略 */
.iw-postal-card-back-to {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  margin-top: 6px;
  padding-right: 36px;
  color: rgba(68, 60, 48, 0.88);
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(10px * var(--iw-hand-scale)));
  line-height: 1.5;
  word-break: break-all;
}
/* 正文：紧接收件人行（邮票已由收件人行右侧留白避开），最多 7 行，超出省略（60 字上限有余量） */
.iw-postal-card-message {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 7;
  overflow: hidden;
  margin-top: 6px;
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(15px * var(--iw-hand-scale)));
  line-height: 1.5;
  user-select: text;
  -webkit-user-select: text;
}
.iw-postal-card-sender {
  display: block;
  margin-top: 8px;
  font-family: var(--iw-font-hand);
  font-size: max(10px, calc(12px * var(--iw-hand-scale)));
  line-height: 1.5;
  text-align: right;
}
.iw-postal-card-back-foot {
  position: absolute;
  right: 9px;
  bottom: 8px;
  left: 9px;
  display: flex;
  justify-content: space-between;
  gap: 4px;
  color: rgba(68, 60, 48, 0.55);
  font-size: 6px;
}

/* 包裹：牛皮纸、捆绳与托送标签，清单在卡内展开 */
.iw-postal-parcels-list { display: flex; flex-direction: column; gap: 17px; }
.iw-postal-parcel {
  overflow: hidden;
  padding: 17px 15px 13px;
  border: 1px solid rgba(56, 42, 25, 0.55);
  border-radius: 3px;
  background:
    repeating-linear-gradient(6deg, transparent 0, transparent 3px, rgba(72, 50, 26, 0.035) 4px),
    linear-gradient(105deg, #ac926b, #9b8059);
  box-shadow: 2px 4px 10px rgba(var(--iw-rgb-black), 0.3), inset 0 0 22px rgba(76, 50, 27, 0.16);
  color: #3b3023;
}
.iw-postal-parcel:nth-child(odd) { transform: rotate(-0.3deg); }
.iw-postal-parcel:nth-child(even) { transform: rotate(0.35deg); }
.iw-postal-parcel-rope { position: absolute; z-index: 0; pointer-events: none; background: rgba(76, 58, 33, 0.25); }
.iw-postal-parcel-rope.is-horizontal { top: 57px; right: 0; left: 0; height: 5px; border-top: 1px solid rgba(232, 213, 173, 0.2); border-bottom: 1px solid rgba(232, 213, 173, 0.2); }
.iw-postal-parcel-rope.is-vertical { top: 0; bottom: 0; left: 27px; width: 4px; }
.iw-postal-parcel-head,
.iw-postal-parcel-address,
.iw-postal-parcel-tools,
.iw-postal-parcel-list { position: relative; z-index: 1; }
.iw-postal-parcel-head { display: flex; align-items: center; gap: 10px; }
.iw-postal-parcel-icon { flex: 0 0 30px; width: 30px; height: 30px; padding: 6px; border: 1px solid rgba(59, 48, 35, 0.38); box-sizing: border-box; }
.iw-postal-parcel-icon svg { width: 100%; height: 100%; }
.iw-postal-parcel-heading { min-width: 0; }
.iw-postal-parcel-heading > span { display: block; font-size: 7px; letter-spacing: 0.9px; opacity: 0.68; }
.iw-postal-parcel-heading h3 { margin: 4px 0 0; font-size: 14px; font-weight: 600; letter-spacing: 1px; }
.iw-postal-parcel-number { margin-left: auto; align-self: flex-start; font-size: 7px; letter-spacing: 0.3px; opacity: 0.65; }
.iw-postal-parcel-address {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin-top: 19px;
  padding: 10px 11px;
  border: 1px dashed rgba(59, 48, 35, 0.35);
  background: rgba(228, 213, 179, 0.54);
  font-size: 10px;
  line-height: 1.6;
  transform: rotate(-0.6deg);
  overflow-wrap: anywhere;
}
.iw-postal-parcel-tools { display: flex; align-items: stretch; gap: 8px; margin-top: 12px; }
.iw-postal-parcel-toggle,
.iw-postal-inspect-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 35px;
  padding: 7px 10px;
  border: 1px solid rgba(59, 48, 35, 0.36) !important;
  border-radius: 2px;
  background: rgba(58, 44, 27, 0.07);
  color: #3b3023;
  font-size: 10px !important;
}
.iw-postal-parcel-toggle { flex: 1; justify-content: space-between; }
.iw-postal-parcel-toggle svg { width: 13px; height: 13px; transition: transform 0.2s ease; }
.iw-postal-parcel-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.iw-postal-inspect-btn svg { width: 16px; height: 16px; }
.iw-postal-parcel-toggle:active,
.iw-postal-inspect-btn:active { background: rgba(58, 44, 27, 0.16); }
.iw-postal-parcel-list {
  margin-top: 12px;
  padding: 12px 11px;
  border: 1px solid rgba(59, 48, 35, 0.25);
  background: rgba(235, 220, 186, 0.73);
  animation: iwFadeIn 0.2s ease;
}
.iw-postal-parcel-list[hidden] { display: none; }
.iw-postal-list-head { padding-bottom: 7px; border-bottom: 1px dashed rgba(59, 48, 35, 0.32); font-family: 'ShareTechMono', monospace; font-size: 8px; letter-spacing: 1px; }
.iw-postal-parcel-list ol { margin: 9px 0 0; padding-left: 22px; font-size: 10px; line-height: 2; }
.iw-postal-parcel-list li::marker { font-family: 'ShareTechMono', monospace; opacity: 0.6; }

/* 缺件常驻提示条（4b）：批次上台但实收不足/有条目被丢弃时的中性提醒 + 重试入口。
   与公报错误条同族但走金色纸张调——这是「少了几件」的台账提示，不是失败告警 */
.iw-postal-shortage {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 10px 0 4px;
  padding: 9px 11px;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.3);
  border-left: 3px solid rgba(var(--iw-rgb-gold), 0.65);
  border-radius: 3px;
  background: rgba(var(--iw-rgb-gold), 0.07);
  color: var(--iw-text-3);
  font-size: 11px;
  line-height: 1.7;
}
.iw-postal-shortage svg {
  flex: none;
  margin-top: 3px;
  color: rgba(var(--iw-rgb-gold), 0.85);
}
.iw-postal-shortage-msg {
  flex: 1;
  min-width: 0;
  word-break: break-word;
}
.iw-postal-shortage .iw-lp-error-retry { flex: none; }

/* 无着邮件混在正常邮品中：红色退件戳 + 暗化 + 角落小签 */
.iw-postal-item.is-dead > button,
.iw-postal-parcel.is-dead > :not(.iw-postal-dead-tab):not(.iw-postal-dead-stamp) { filter: brightness(0.72) saturate(0.66); }
/* 包裹自带 overflow:hidden，角签探出框外（top:-8px right:-4px）会被裁掉；
   仅对无着件放开裁切——捆绳装饰四条边都贴在容器内缘，不依赖 hidden */
.iw-postal-parcel.is-dead { overflow: visible; }
.iw-postal-dead-tab {
  position: absolute;
  z-index: 6;
  top: -8px;
  right: -4px;
  padding: 4px 7px;
  border: 1px solid #b5796d;
  background: #743d35;
  box-shadow: 1px 2px 4px rgba(var(--iw-rgb-black), 0.3);
  color: #f0d6bc;
  font-family: 'ShareTechMono', monospace;
  font-size: 7px;
  letter-spacing: 0.8px;
  transform: rotate(3deg);
  pointer-events: none;
}
.iw-postal-dead-stamp {
  position: absolute;
  z-index: 5;
  top: 39%;
  left: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 5px 10px;
  border: 3px double rgba(132, 46, 38, 0.85);
  border-radius: 3px;
  color: rgba(132, 46, 38, 0.88);
  font-family: 'Songti SC', 'SimSun', serif;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 3px;
  white-space: nowrap;
  transform: translate(-50%, -50%) rotate(-13deg);
  mix-blend-mode: multiply;
  pointer-events: none;
}
.iw-postal-dead-stamp small { font-family: 'ShareTechMono', monospace; font-size: 6px; letter-spacing: 1px; }
.iw-postal-parcel .iw-postal-dead-stamp { top: 47%; font-size: 25px; }
.iw-postal-dead-report { margin-top: 13px; border-top: 2px solid rgba(132, 46, 38, 0.44); }
.iw-postal-dead-report-row { display: grid; grid-template-columns: 54px minmax(0, 1fr); gap: 8px; padding: 10px 0; border-bottom: 1px dashed rgba(89, 54, 40, 0.27); }
.iw-postal-dead-report-row:last-child { border-bottom: 0; padding-bottom: 0; }
.iw-postal-dead-report-row b { color: #85463d; font-size: 9px; font-weight: 600; line-height: 1.7; }
.iw-postal-dead-report-row p { margin: 0; font-size: 10px; line-height: 1.8; user-select: text; -webkit-user-select: text; }
.iw-postal-dead-report-row.is-note p { font-family: var(--iw-font-hand); font-size: max(10px, calc(12px * var(--iw-hand-scale))); transform: rotate(-0.5deg); }

/* 信纸 / 物品检视弹窗：append 到 body，安全区独立兜底，不能依赖面板 HUD */
.iw-postal-modal-mask {
  position: fixed;
  z-index: 1400;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding-top: max(20px, calc(env(safe-area-inset-top, 0px) + 12px));
  padding-right: max(15px, env(safe-area-inset-right, 15px));
  padding-bottom: max(20px, calc(env(safe-area-inset-bottom, 0px) + 12px));
  padding-left: max(15px, env(safe-area-inset-left, 15px));
  background: rgba(5, 6, 7, 0.84);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
  animation: iwFadeIn 0.2s ease;
  /* 弹窗挂在 body 上，不在 .innerworld-panel 内，需自己锁定里世界基础字体，不吃全局自定义字体。
     内部自带字体的元素（宋体标题、手写信纸、等宽小字）仍以各自规则为准。 */
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
}
.iw-postal-modal-sheet {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 510px;
  max-height: 100%;
  overflow: hidden;
  border: 1px solid rgba(var(--iw-rgb-gold), 0.24);
  border-radius: 5px;
  background: var(--iw-cool-1);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.55);
  animation: iwSlideUp 0.26s cubic-bezier(0.16, 1, 0.3, 1);
}
.iw-postal-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex: 0 0 auto;
  min-height: 43px;
  padding: 5px 9px 5px 16px;
  border-bottom: 1px solid rgba(var(--iw-rgb-gold), 0.14);
  color: rgba(var(--iw-rgb-gold), 0.72);
  font-size: 8px;
  letter-spacing: 1.2px;
}
.iw-postal-modal-close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--iw-text-3);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.iw-postal-modal-close svg { width: 18px; height: 18px; }
.iw-postal-modal-scroll { min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }
.iw-postal-letter-paper {
  position: relative;
  margin: 16px;
  padding: 24px 22px 17px;
  background:
    repeating-linear-gradient(0deg, transparent 0, transparent 30px, rgba(91, 74, 45, 0.11) 31px),
    linear-gradient(120deg, #f0e7d1, #e5d8bc);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.28);
  color: var(--iw-postal-ink, #443c30);
  transform: rotate(-0.2deg);
}
.iw-postal-letter-paper::before { content: ''; position: absolute; top: 0; bottom: 0; left: 13px; width: 1px; background: rgba(151, 71, 55, 0.2); }
.iw-postal-letter-paper-head { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 7px; padding-bottom: 13px; border-bottom: 1px solid rgba(68, 60, 48, 0.25); color: #776950; font-size: 8px; line-height: 1.6; }
.iw-postal-letter-paper h2 { margin: 23px 0 19px; font-family: var(--iw-font-hand); font-size: max(10px, calc(17px * var(--iw-hand-scale))); font-weight: 500; line-height: 1.7; overflow-wrap: anywhere; }
.iw-postal-letter-body { font-family: var(--iw-font-hand); font-size: max(10px, calc(16px * var(--iw-hand-scale))); line-height: 2.05; letter-spacing: 0.6px; text-align: justify; user-select: text; -webkit-user-select: text; }
.iw-postal-letter-paper-foot { display: flex; justify-content: space-between; gap: 10px; margin-top: 26px; padding-top: 10px; border-top: 1px solid rgba(68, 60, 48, 0.25); color: rgba(68, 60, 48, 0.58); font-family: 'ShareTechMono', monospace; font-size: 7px; letter-spacing: 0.5px; }
/* 信纸上的无着报告：正文底距小，加大上边距；米黄纸上加深顶线，与信纸分隔线同色系 */
.iw-postal-letter-paper .iw-postal-dead-report { margin-top: 24px; border-top-color: rgba(132, 46, 38, 0.55); }
.iw-postal-inspection {
  position: relative;
  margin: 16px;
  padding: 22px 20px 18px;
  border: 1px solid #baa681;
  background:
    repeating-linear-gradient(0deg, transparent 0, transparent 4px, rgba(75, 58, 31, 0.025) 5px),
    #e5d8bc;
  color: #443c30;
}
.iw-postal-inspection-emblem { position: absolute; top: 19px; right: 18px; display: flex; align-items: center; gap: 5px; color: rgba(112, 80, 48, 0.42); transform: rotate(7deg); }
.iw-postal-inspection-emblem svg { width: 35px; height: 35px; }
.iw-postal-inspection-emblem span { font-family: 'ShareTechMono', monospace; font-size: 7px; line-height: 1.5; }
.iw-postal-inspection-kicker { display: block; max-width: calc(100% - 85px); color: #776950; font-size: 8px; line-height: 1.7; letter-spacing: 0.6px; }
.iw-postal-inspection h2 { margin: 14px 0 17px; font-family: Georgia, 'Songti SC', 'SimSun', serif; font-size: 23px; font-weight: 500; letter-spacing: 3px; }
.iw-postal-inspection-address { display: flex; flex-direction: column; gap: 4px; font-size: 10px; line-height: 1.65; }
.iw-postal-inspection-rule { display: flex; align-items: center; gap: 10px; margin: 19px 0 14px; color: #8a7250; font-size: 8px; letter-spacing: 1.3px; }
.iw-postal-inspection-rule i { flex: 1; height: 1px; background: rgba(68, 60, 48, 0.27); }
.iw-postal-inspection-desc { margin: 0; font-size: 13px; line-height: 2.05; text-align: justify; user-select: text; -webkit-user-select: text; }
.iw-postal-inspection .iw-postal-dead-report { margin-top: 20px; }
.iw-postal-inspection .iw-postal-dead-report-row { grid-template-columns: 58px minmax(0, 1fr); }
.iw-postal-inspection .iw-postal-dead-report-row p { font-size: 11px; }
.iw-postal-inspection .iw-postal-dead-report-row.is-note p { font-size: max(10px, calc(13px * var(--iw-hand-scale))); }
.iw-postal-inspection-foot { margin-top: 22px; padding-top: 10px; border-top: 1px dashed rgba(68, 60, 48, 0.28); color: rgba(68, 60, 48, 0.55); font-size: 7px; letter-spacing: 0.5px; text-align: center; }

.innerworld-panel[data-iw-theme="day"] .iw-postal-mast-seal {
  color: rgba(146, 64, 52, 0.62);
}
.innerworld-panel[data-iw-theme="day"] .iw-postal-mast-copy p,
/* 日间分拣台不垫黄板、不描边：完全透出大背景（奶白），仅保留托盘虚线分隔 */
.innerworld-panel[data-iw-theme="day"] .iw-postal-sorting-desk { background: transparent; box-shadow: none; border: none; }
.innerworld-panel[data-iw-theme="day"] .iw-postal-envelope { box-shadow: 1px 3px 0 #b6a889, 4px 8px 14px rgba(68, 51, 29, 0.2); }
.innerworld-panel[data-iw-theme="day"] .iw-postal-card-face { box-shadow: 2px 4px 12px rgba(68, 51, 29, 0.2); }
.innerworld-panel[data-iw-theme="day"] .iw-postal-parcel { box-shadow: 2px 4px 10px rgba(68, 51, 29, 0.18), inset 0 0 22px rgba(76, 50, 27, 0.12); }
.innerworld-panel[data-iw-theme="day"] .iw-postal-counter-dead { color: #984e42; }

@media (min-width: 700px) {
  .iw-postal-view { max-width: 780px; margin: 0 auto; }
  .iw-postal-letters-grid { gap: 20px; max-width: 470px; margin: 0 auto; padding: 0 14px; } /* 大屏横信封限宽居中，避免拉成巨幅 */
  .iw-postal-postcards-grid { gap: 22px; padding: 0 14px; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-areas: none; padding-bottom: 0; }
  .iw-postal-postcard { grid-area: auto; width: auto; margin-top: 0; }
  .iw-postal-postcard:nth-child(even) { margin-top: 0; }
  .iw-postal-postcard:nth-child(odd),
  .iw-postal-postcard.is-front:nth-child(odd) { justify-self: stretch; transform: rotate(0.8deg); }
  .iw-postal-postcard:nth-child(even),
  .iw-postal-postcard.is-front:nth-child(even) { justify-self: stretch; transform: rotate(-1.1deg) translateY(5px); }
  .iw-postal-postcard .iw-postal-card-face,
  .iw-postal-postcard.is-front .iw-postal-card-face,
  .iw-postal-postcard:not(.is-front) .iw-postal-card-face { box-shadow: 2px 4px 12px rgba(var(--iw-rgb-black), 0.35); }
  .iw-postal-tray { padding-right: 19px; padding-left: 19px; }
  .iw-postal-parcels-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .iw-postal-parcel:last-child { grid-column: 1 / -1; width: calc(50% - 9px); }
  .iw-postal-envelope-address b { font-size: max(10px, calc(15px * var(--iw-hand-scale))); }
  .iw-postal-card-message { font-size: max(10px, calc(15px * var(--iw-hand-scale))); }
}
@media (max-width: 370px) {
  .iw-postal-letters-grid,
  .iw-postal-postcards-grid { gap: 10px; }
  .iw-postal-tray { padding-right: 6px; padding-left: 6px; }
  .iw-postal-envelope-address { right: 11%; left: 11%; }
  .iw-postal-envelope-address b { font-size: max(10px, calc(11px * var(--iw-hand-scale))); }
  .iw-postal-card-message { font-size: max(10px, calc(14px * var(--iw-hand-scale))); line-height: 1.5; -webkit-line-clamp: 5; }
  .iw-postal-card-sender { margin-top: 4px; }
  .iw-postal-parcel { padding-right: 12px; padding-left: 12px; }
  .iw-postal-parcel-number { display: none; }
  .iw-postal-parcel-toggle,
  .iw-postal-inspect-btn { padding-right: 8px; padding-left: 8px; font-size: 9px !important; }
  .iw-postal-counter { gap: 7px; letter-spacing: 0.2px; }
}
@media (prefers-reduced-motion: reduce) {
  .iw-postal-flip-inner { transition-duration: 0.01ms; }
  .iw-postal-postcard { transition: none; }
  .iw-postal-letter-open,
  .iw-postal-parcel-toggle svg { transition: none; }
  .iw-postal-modal-mask,
  .iw-postal-modal-sheet,
  .iw-postal-parcel-list { animation: none; }
}

