/* forest-font-lg.css — 新卜森「字體大小：大」（spec 2026-09-24-forest-large-text；PM 裁決 D1～D5 2026-09-24）
 *
 * 🔴 每一條選擇器都以 html.forest-font-lg 開頭：中模式（預設）外觀完全不變；forest.css 等既有檔零改動。
 * 🔴 本檔在所有 forest CSS 之後載入。字級一律 calc(<中模式原值>*var(--fk))（--fk:2），原規則 !important 的這裡也 !important；
 *    tools/__tests__/forest-font-css.test.js 會掃描所有含字級的選擇器，少一條或倍數不對就紅燈。
 * PM D1 例外：功能圖示 ×1.5（--fi）；ZOO FOREST 字樣 ×1.3（--fb）；英文長單字標題設上限（×1.6～2，不從字母中間拆）；
 *    插畫裝飾符號與輪盤 37 個 SVG 號碼不放大（改由「小球落在 紅 17」「三顆骰子…」結果字 ×2）。
 * PM D2：文字卡在上、互動圖區在下、頁面可捲動。依圖片座標對齊的圖形（輪盤、骰盅、拉桿、道具熱區、畫布、儀式光圈）
 *    用 CSS Grid 的「絕對定位子元素以所在格線區為包含塊」放進一個和中模式場景同尺寸的舞台列，座標與尺寸完全不變
 *    （🔴 絕對定位子元素的 grid-row 一定要寫起訖兩條線，例如 2/3：只寫 2 時結束線是 auto＝容器底邊，舞台會被拉長）；
 *    不動 DOM（forest-app.js 模板零改動），文字塊改成排版流放在上方的列。 */

html.forest-font-lg{--fk:2;--fi:1.5;--fb:1.3;--lg-mast:calc(84px + env(safe-area-inset-top,0px));--lg-fw:min(100vw,490px);--lg-card:#062b3ae0;--lg-stage:max(100dvh,650px)}

/* ═════════ 1. 字級（順序同原檔，維持原本的層疊先後）═════════ */
/* forest.css */
html.forest-font-lg body{font-size:calc(16px*var(--fk))}
html.forest-font-lg .brand{font-size:calc(17px*var(--fb))}
html.forest-font-lg .brand small{font-size:calc(10px*var(--fk))}
html.forest-font-lg #back{font-size:calc(24px*var(--fi))}
html.forest-font-lg .eyebrow{font-size:calc(11px*var(--fk))}
html.forest-font-lg .gold-button{font-size:calc(18px*var(--fk))}
html.forest-font-lg .gold-button span{font-size:calc(23px*var(--fi))}
html.forest-font-lg .threshold-heading h1{font-size:calc(clamp(31px,8vw,43px)*var(--fk))}
html.forest-font-lg .threshold-heading p{font-size:calc(15px*var(--fk))}
html.forest-font-lg .threshold-bottom p{font-size:calc(16px*var(--fk))}
html.forest-font-lg .threshold-bottom small{font-size:calc(11px*var(--fk))}
html.forest-font-lg .choice-heading h1{font-size:calc(clamp(27px,7vw,34px)*var(--fk))}
html.forest-font-lg .choice-heading p{font-size:calc(14px*var(--fk))}
html.forest-font-lg .choice-caption small{font-size:calc(10px*var(--fk))}
html.forest-font-lg .choice-caption strong{font-size:calc(clamp(29px,8vw,39px)*var(--fk))}
html.forest-font-lg .choice-caption em{font-size:calc(13px*var(--fk))}
html.forest-font-lg .profile-book h1{font-size:calc(31px*var(--fk))}
html.forest-font-lg .profile-intro{font-size:calc(14px*var(--fk))}
html.forest-font-lg form label{font-size:calc(14px*var(--fk))}
html.forest-font-lg form label small{font-size:calc(11px*var(--fk))}
html.forest-font-lg .privacy{font-size:calc(11px*var(--fk))}
html.forest-font-lg .form-error{font-size:calc(12px*var(--fk))}
html.forest-font-lg form .gold-button{font-size:calc(16px*var(--fk))}
html.forest-font-lg .card-top{font-size:calc(9px*var(--fk))}
html.forest-font-lg .card-intro h1{font-size:calc(clamp(29px,7.6vw,39px)*var(--fk))}
html.forest-font-lg .card-intro p{font-size:calc(14px*var(--fk))}
html.forest-font-lg .hero-label small{font-size:calc(15px*var(--fk))}
html.forest-font-lg .hero-label strong{font-size:calc(clamp(37px,10vw,52px)*var(--fk))}
html.forest-font-lg .hero-label span{font-size:calc(15px*var(--fk))}
html.forest-font-lg .section-num{font-size:calc(12px*var(--fk))}
html.forest-font-lg .card-reading h2,html.forest-font-lg .card-contrast h2{font-size:calc(clamp(23px,6.1vw,29px)*var(--fk))}
html.forest-font-lg .card-reading p,html.forest-font-lg .card-contrast p{font-size:calc(16px*var(--fk))}
html.forest-font-lg .card-seal span{font-size:calc(12px*var(--fk))}
html.forest-font-lg .card-seal p{font-size:calc(13px*var(--fk))}
html.forest-font-lg .fortune-card .gold-button{font-size:calc(16px*var(--fk))}
html.forest-font-lg .v7-scene .eyebrow{font-size:calc(11px*var(--fk))}
html.forest-font-lg .v7-scene h1{font-size:calc(clamp(27px,7.4vw,38px)*var(--fk))}
html.forest-font-lg .v7-scene p{font-size:calc(15px*var(--fk))}
html.forest-font-lg .summons-copy p{font-size:calc(14px*var(--fk))}
html.forest-font-lg .scene-footnote{font-size:calc(11px*var(--fk))}
html.forest-font-lg .omen-disclaimer{font-size:calc(10px*var(--fk))!important}
html.forest-font-lg .game-prelude p{font-size:calc(15px*var(--fk))}
html.forest-font-lg .prop-hotspot span:last-child{font-size:calc(14px*var(--fk))}
html.forest-font-lg .contrast-copy p{font-size:calc(15px*var(--fk))}
html.forest-font-lg .card-omen{font-size:calc(14px*var(--fk))}
html.forest-font-lg .summons-copy h1{font-size:calc(clamp(29px,7.7vw,39px)*var(--fk))}
html.forest-font-lg .omen-story .eyebrow{font-size:calc(12px*var(--fk))}
html.forest-font-lg .omen-written{font-size:calc(15px*var(--fk))!important}
html.forest-font-lg .omen-kicker{font-size:calc(13px*var(--fk))}
html.forest-font-lg .omen-title{font-size:calc(clamp(76px,20vw,111px)*var(--fk))!important}
html.forest-font-lg .omen-reading,html.forest-font-lg .omen-verdict .omen-reading{font-size:calc(14px*var(--fk))!important}
html.forest-font-lg .book-draw-hint{font-size:calc(13px*var(--fk))}
html.forest-font-lg .story-game[data-game=slot] .game-prelude h1{font-size:calc(clamp(28px,7.5vw,38px)*var(--fk))}
html.forest-font-lg .story-game[data-game=slot] .game-prelude p{font-size:calc(14px*var(--fk))}
html.forest-font-lg .slot-lever-hotspot .lever-hint{font-size:calc(12px*var(--fk))}
html.forest-font-lg .roulette-touch-hint{font-size:calc(13px*var(--fk))}
html.forest-font-lg .story-game[data-game=roulette] .game-prelude h1{font-size:calc(clamp(27px,7.4vw,37px)*var(--fk))}
html.forest-font-lg .story-game[data-game=roulette] .game-prelude p{font-size:calc(14px*var(--fk))}
html.forest-font-lg .roulette-result{font-size:calc(15px*var(--fk))}
html.forest-font-lg .sicbo-touch-hint{font-size:calc(13px*var(--fk))}
html.forest-font-lg .sicbo-result{font-size:calc(15px*var(--fk))}
/* forest-slot.css */
html.forest-font-lg .slot-result{font-size:calc(15px*var(--fk))}
/* forest-bingo.css／forest-fishing.css／forest-baccarat.css */
html.forest-font-lg .bingo-touch-hint{font-size:calc(13px*var(--fk))}
html.forest-font-lg .bingo-result{font-size:calc(15px*var(--fk))}
html.forest-font-lg .fishing-touch-hint{font-size:calc(13px*var(--fk))}
html.forest-font-lg .fishing-result{font-size:calc(15px*var(--fk))}
html.forest-font-lg .baccarat-touch-hint{font-size:calc(13px*var(--fk))}
html.forest-font-lg .baccarat-result{font-size:calc(15px*var(--fk))}
html.forest-font-lg .hero-roll{font-size:calc(13px*var(--fk))!important}
html.forest-font-lg .story-game .prop-hotspot span.prop-cue,html.forest-font-lg .story-game .prop-hotspot .prop-cue{font-size:calc(13px*var(--fk))}
html.forest-font-lg .story-game .prop-hotspot .prop-cue:before{font-size:calc(18px*var(--fi))}
html.forest-font-lg .contrast-copy h1{font-size:calc(clamp(31px,8.4vw,43px)*var(--fk))}
html.forest-font-lg .report-coming{font-size:calc(11px*var(--fk))}
html.forest-font-lg .twist-copy h1{font-size:calc(clamp(28px,7.6vw,38px)*var(--fk))}
html.forest-font-lg .twist-copy p{font-size:calc(14px*var(--fk))}
html.forest-font-lg .helper-meta strong{font-size:calc(17px*var(--fk))}
html.forest-font-lg .helper-meta small{font-size:calc(11px*var(--fk))}
html.forest-font-lg .helper-meta em{font-size:calc(12.5px*var(--fk))}
html.forest-font-lg .offer-bubble strong{font-size:calc(20px*var(--fk))}
html.forest-font-lg .offer-bubble small{font-size:calc(12px*var(--fk))}
html.forest-font-lg .offer-bubble p{font-size:calc(16px*var(--fk))}
html.forest-font-lg .offer-retry{font-size:calc(17px*var(--fk))}
html.forest-font-lg .offer-note{font-size:calc(12px*var(--fk))}
html.forest-font-lg .offer-accept{font-size:calc(16px*var(--fk))}
html.forest-font-lg .offer-change{font-size:calc(14px*var(--fk))}
html.forest-font-lg .ritual-copy h1{font-size:calc(clamp(21px,5.9vw,28px)*var(--fk))}
html.forest-font-lg .ritual-touch span{font-size:calc(15px*var(--fk))}
html.forest-font-lg .story-game .helper-cameo p{font-size:calc(13px*var(--fk))}
html.forest-font-lg .helper-cameo strong{font-size:calc(12px*var(--fk))}
html.forest-font-lg .card-helper-row h2{font-size:calc(clamp(20px,5.4vw,24px)*var(--fk))}
html.forest-font-lg .card-helper-row p{font-size:calc(15px*var(--fk))}
html.forest-font-lg .rest-card-hero .hero-label strong{font-size:calc(clamp(30px,8.4vw,44px)*var(--fk))}
/* forest-platform.css */
html.forest-font-lg .forest-exit{font-size:calc(13px*var(--fk))}
html.forest-font-lg .forest-exit-icon{font-size:calc(17px*var(--fi))}
html.forest-font-lg .masthead #forest-settings-btn{font-size:calc(19px*var(--fi))}
html.forest-font-lg .forest-set-title{font-size:calc(14px*var(--fk))}
html.forest-font-lg .forest-set-x{font-size:calc(16px*var(--fi))}
html.forest-font-lg .forest-set-icon{font-size:calc(16px*var(--fi))}
html.forest-font-lg .forest-set-label{font-size:calc(13px*var(--fk))}
html.forest-font-lg .forest-set-state{font-size:calc(12px*var(--fk))}
html.forest-font-lg .forest-lang-pill{font-size:calc(12px*var(--fk))}
/* 英文籤名：最長單字 Fortune（7 字母）不能從中間拆 → 上限＝(世界寬−左右內距)÷(7×0.62)，約 ×1.6～1.7（PM D1） */
html.forest-font-lg:lang(en) .scene .omen-title{font-size:min(calc(clamp(46px,12.5vw,72px)*var(--fk)),calc((var(--lg-fw) - 40px)/4.34))!important}
/* 英文結尾卡遊戲名：Shooting／Baccarat／Roulette（8 字母）→ 上限＝標籤寬÷(8×0.62)（PM D1） */
html.forest-font-lg:lang(en) .hero-label strong{font-size:min(calc(clamp(26px,8vw,40px)*var(--fk)),calc((var(--lg-fw) - 110px)/4.96))}
html.forest-font-lg:lang(en) .summons-copy h1{font-size:calc(clamp(24px,6.6vw,32px)*var(--fk))}
html.forest-font-lg:lang(en) .summons-copy p{font-size:calc(13px*var(--fk))}
html.forest-font-lg .forest-remembered,html.forest-font-lg .forest-forget-status{font-size:calc(11px*var(--fk))}
html.forest-font-lg .forest-set-icon-aa{font-size:calc(13px*var(--fi))}
html.forest-font-lg .forest-font-pill{font-size:calc(12px*var(--fk))}
html.forest-font-lg .forest-font-pill--lg{font-size:calc(15px*var(--fk))}
/* forest-reading.css */
html.forest-font-lg .forest-factors-group h3{font-size:calc(13px*var(--fk))}
html.forest-font-lg .forest-factor-text{font-size:calc(14px*var(--fk))}
html.forest-font-lg .forest-delta{font-size:calc(13px*var(--fk))}
html.forest-font-lg .forest-factors-total{font-size:calc(15px*var(--fk))}
html.forest-font-lg .forest-factors-scale{font-size:calc(12px*var(--fk))}
html.forest-font-lg .forest-pick h3{font-size:calc(13px*var(--fk))}
html.forest-font-lg .forest-pick-lead{font-size:calc(15px*var(--fk))}
html.forest-font-lg .forest-pick-tempo,html.forest-font-lg .forest-pick-contrast{font-size:calc(13.5px*var(--fk))}
html.forest-font-lg .forest-pick-label{font-size:calc(12px*var(--fk))}
html.forest-font-lg .forest-pick-chip{font-size:calc(12.5px*var(--fk))}
html.forest-font-lg .forest-pick-tip{font-size:calc(12px*var(--fk))}
html.forest-font-lg .omen-why{font-size:calc(12px*var(--fk))!important}
html.forest-font-lg .omen-why-label{font-size:calc(11px*var(--fk))}
html.forest-font-lg .omen-why-chip{font-size:calc(12.5px*var(--fk))}
html.forest-font-lg .helper-element{font-size:calc(11.5px*var(--fk))}
html.forest-font-lg .forest-ai-mark{font-size:calc(16px*var(--fi))}
html.forest-font-lg .forest-ai h2{font-size:calc(clamp(19px,5.3vw,23px)*var(--fk))}
html.forest-font-lg .forest-ai-sub{font-size:calc(13.5px*var(--fk))}
html.forest-font-lg .fortune-card .forest-ai-btn{font-size:calc(16px*var(--fk))}
html.forest-font-lg .forest-ai-loading-text{font-size:calc(13px*var(--fk))}
html.forest-font-lg .forest-ai-err{font-size:calc(14px*var(--fk))}
html.forest-font-lg .forest-ai-headline{font-size:calc(clamp(20px,5.6vw,25px)*var(--fk))}
html.forest-font-lg .forest-ai-result h4{font-size:calc(12px*var(--fk))}
html.forest-font-lg .forest-ai-result p{font-size:calc(15px*var(--fk))}
html.forest-font-lg .forest-ai-chip{font-size:calc(11.5px*var(--fk))}
html.forest-font-lg .forest-ai-ftext{font-size:calc(14px*var(--fk))}
html.forest-font-lg .forest-ai-time{font-size:calc(11.5px*var(--fk))!important}
html.forest-font-lg .forest-ai-disclaimer{font-size:calc(11.5px*var(--fk))}
/* 英文長單字標題上限（中文、簡中仍是完整 ×2）：Adventure／Baccarat:／Roulette:（9 字母）（PM D1） */
html.forest-font-lg:lang(en) .card-intro h1{font-size:min(calc(clamp(29px,7.6vw,39px)*var(--fk)),calc((var(--lg-fw) - 84px)/5.58))}
html.forest-font-lg:lang(en) .contrast-copy h1{font-size:min(calc(clamp(31px,8.4vw,43px)*var(--fk)),calc((var(--lg-fw) - 76px)/5.58))}

/* ═════════ 2. 換行：標題平衡斷行、長字不溢出、解除會被截斷的單行限制 ═════════ */
html.forest-font-lg .scene h1,html.forest-font-lg .scene h2,html.forest-font-lg .forest-ai h2,html.forest-font-lg .forest-ai-headline{text-wrap:balance}
html.forest-font-lg .scene{text-wrap:pretty}
html.forest-font-lg .gold-button,html.forest-font-lg .offer-accept,html.forest-font-lg .threshold-heading p,html.forest-font-lg .threshold-bottom small,html.forest-font-lg .choice-heading p,html.forest-font-lg .choice-caption em,html.forest-font-lg .book-draw-hint,html.forest-font-lg .scene-footnote,html.forest-font-lg .omen-disclaimer,html.forest-font-lg .offer-note,html.forest-font-lg .report-coming,html.forest-font-lg .ritual-touch span,html.forest-font-lg .prop-cue,html.forest-font-lg .lever-hint,html.forest-font-lg .roulette-touch-hint,html.forest-font-lg .sicbo-touch-hint,html.forest-font-lg .roulette-result,html.forest-font-lg .sicbo-result,html.forest-font-lg .slot-result,html.forest-font-lg .hero-label small,html.forest-font-lg .hero-label span,html.forest-font-lg .card-seal p{text-wrap:balance}
html.forest-font-lg .choice-caption strong{white-space:normal}
html.forest-font-lg .story-game .game-prelude h1 em{white-space:normal;word-break:keep-all}
html.forest-font-lg .omen-title{letter-spacing:4px}
html.forest-font-lg .omen-written{display:block;-webkit-line-clamp:unset;overflow:visible;max-width:none}

/* ═════════ 3. 頂列與 ⚙️ 設定面板（功能圖示 ×1.5、觸控區 ≥52px）═════════ */
html.forest-font-lg .masthead{height:var(--lg-mast)}
/* PM 2026-09-25：超出的內容不截斷（不用「…」），放不下就換行 */
html.forest-font-lg .masthead .brand{white-space:normal;min-width:0}
html.forest-font-lg .masthead .brand small{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.15}
html.forest-font-lg #back{flex:none;width:52px;height:52px}
html.forest-font-lg .forest-exit{min-width:52px;min-height:52px}
html.forest-font-lg .masthead #forest-settings-btn{width:52px;height:52px}
/* 頂列放不下「測驗大廳」字樣時只留 ⌂ 圖示（aria-label 保留；⚙️ 設定裡有文字版「返回測驗大廳」）：
 * 世界框不到 490px 全寬時，以及英文（Quiz Hall 較長，會把 ZOO FOREST 擠成省略號） */
@media (max-width:489px){
  html.forest-font-lg .forest-exit{justify-content:center;width:52px;padding:0}
  html.forest-font-lg .forest-exit-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
html.forest-font-lg:lang(en) .forest-exit{justify-content:center;width:52px;padding:0}
html.forest-font-lg:lang(en) .forest-exit-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
html.forest-font-lg .forest-settings{top:calc(var(--lg-mast) - 6px);width:min(340px,calc(100% - 24px));max-height:calc(100dvh - var(--lg-mast) - 12px);overflow-y:auto;overscroll-behavior:contain}
html.forest-font-lg .forest-set-x{flex:none;width:52px;height:52px}
html.forest-font-lg .forest-set-row{min-height:60px}
html.forest-font-lg .forest-set-icon{flex-basis:30px;width:30px}
html.forest-font-lg .forest-lang-pill,html.forest-font-lg .forest-font-pill{min-height:56px}

/* ═════════ 4. 版面：文字卡在上、互動圖區在下、頁面可捲動（PM D2）═════════ */
/* 通用：原本固定一屏高的場景改成隨內容長高 */
html.forest-font-lg .threshold,html.forest-font-lg .choice,html.forest-font-lg .v7-scene{height:auto;min-height:var(--lg-stage)}
html.forest-font-lg .gold-button{min-height:76px;padding:8px 14px;gap:12px;line-height:1.25;text-align:center}
html.forest-font-lg form .gold-button,html.forest-font-lg .fortune-card .gold-button,html.forest-font-lg .fortune-card .forest-ai-btn{min-height:72px}

/* 門口：標題卡 → 留白（樹門露出來）→ 說明＋敲門鈕 */
html.forest-font-lg .threshold{display:flex;flex-direction:column;padding:calc(var(--lg-mast) + 8px) 14px max(22px,env(safe-area-inset-bottom))}
html.forest-font-lg .threshold-heading,html.forest-font-lg .threshold-bottom{position:relative;inset:auto;padding:14px 16px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .threshold-heading{margin-bottom:140px}
html.forest-font-lg .threshold-bottom{margin-top:auto}

/* 選主題：標題卡 → 兩張選項卡改單欄 */
html.forest-font-lg .choice{display:flex;flex-direction:column;gap:14px;padding:calc(var(--lg-mast) + 8px) 13px max(24px,env(safe-area-inset-bottom))}
html.forest-font-lg .choice-heading{position:relative;inset:auto;padding:14px 16px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .choice-halves{position:relative;inset:auto;grid-template-columns:1fr;gap:14px}
html.forest-font-lg .choice-half{justify-content:flex-start;gap:8px;padding:14px 14px 18px;border-radius:28px 28px 20px 20px}
html.forest-font-lg .choice-half .symbol{flex:none;height:clamp(110px,18dvh,170px)}

/* 資料頁：原本就是排版流，只放大輸入框與觸控區 */
html.forest-font-lg .profile{padding-top:calc(var(--lg-mast) + 56px)}
html.forest-font-lg input{min-height:64px}
html.forest-font-lg .forest-forget-link{min-height:48px}

/* 畫軌跡：文字卡 → 書頁舞台（畫布只蓋書頁這一列，書頁外可以正常捲動）→ 註腳 */
html.forest-font-lg .summons{display:grid;grid-template-columns:100%;grid-template-rows:auto clamp(340px,60dvh,600px) auto;align-content:start;padding-top:calc(var(--lg-mast) + 8px);padding-bottom:max(18px,env(safe-area-inset-bottom))}
html.forest-font-lg .summons-copy{position:relative;inset:auto;grid-row:1/2;grid-column:1/2;margin:0 14px 12px;padding:14px 16px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .summons-copy p{max-width:none}
html.forest-font-lg .summons>.book-writing-stage{grid-row:2/3;grid-column:1/2;inset:0 1%;height:auto;min-height:0}
html.forest-font-lg .summons>.book-ink-canvas{grid-row:2/3;grid-column:1/2}
html.forest-font-lg .summons>.book-draw-hint{grid-row:2/3;grid-column:1/2;bottom:4%}
html.forest-font-lg .summons>.scene-footnote{position:relative;inset:auto;grid-row:3/4;grid-column:1/2;margin:10px 16px 0}

/* 籤象：小標 → 你畫下的軌跡 → 籤名、為什麼、解說 → 免責聲明，全部進排版流 */
html.forest-font-lg .omen-scene{display:flex;flex-direction:column}
html.forest-font-lg .omen-story{position:relative;inset:auto;display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:calc(var(--lg-mast) + 8px) 14px 0}
html.forest-font-lg .omen-story>.eyebrow{position:relative;inset:auto}
html.forest-font-lg .omen-written{position:relative;inset:auto;margin:0!important;padding:12px 14px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .omen-verdict{position:relative;inset:auto;transform:none;padding:16px 14px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .omen-verdict .omen-rule{margin:0 auto 12px}
html.forest-font-lg .omen-reading,html.forest-font-lg .omen-why{max-width:none}
html.forest-font-lg .omen-verdict .omen-reading{min-height:0}
html.forest-font-lg .omen-disclaimer{position:relative;inset:auto;margin:12px 14px 0;padding-bottom:max(20px,env(safe-area-inset-bottom))}

/* 凶籤反轉：文字卡 → 三張夥伴卡 */
html.forest-font-lg .twist-scene{display:flex;flex-direction:column;gap:14px;padding:calc(var(--lg-mast) + 8px) 14px max(16px,env(safe-area-inset-bottom))}
html.forest-font-lg .twist-copy{position:relative;inset:auto;padding:14px 16px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .helper-cards{position:relative;inset:auto;margin-top:auto;gap:12px}
html.forest-font-lg .helper-card{min-height:0;padding:10px 14px 10px 10px}
html.forest-font-lg .helper-avatar{width:72px;height:72px}

/* 夥伴提問：原本就是排版流 */
html.forest-font-lg .offer-body{padding-top:calc(var(--lg-mast) + 8px)}
html.forest-font-lg .offer-retry{min-height:76px}
html.forest-font-lg .offer-accept{min-height:68px}
html.forest-font-lg .offer-change{min-height:56px}

/* 改運儀式：文字卡 → 舞台（和中模式場景同尺寸，光圈才對得準道具） */
html.forest-font-lg .ritual-scene{display:grid;grid-template-columns:100%;grid-template-rows:auto var(--lg-stage);align-content:start;padding-top:calc(var(--lg-mast) + 8px)}
html.forest-font-lg .ritual-copy{position:relative;inset:auto;grid-row:1/2;grid-column:1/2;margin:0 14px 12px;padding:14px 16px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .ritual-scene>.ritual-art,html.forest-font-lg .ritual-scene>.ritual-veil,html.forest-font-lg .ritual-scene>.ritual-glow,html.forest-font-lg .ritual-scene>.ritual-touch{grid-row:2/3;grid-column:1/2}

/* 第一條路：夥伴泡泡 → 文字卡 → 舞台（和中模式場景同尺寸：拉霸滾輪窗與拉桿依場景長寬比對齊；輪盤／骰盅座標由 sync 量舞台） */
html.forest-font-lg .story-game{display:grid;grid-template-columns:100%;grid-template-rows:auto auto var(--lg-stage);align-content:start;padding-top:calc(var(--lg-mast) + 8px)}
html.forest-font-lg .story-game .helper-cameo{position:relative;inset:auto;grid-row:1/2;grid-column:1/2;margin:0 14px 10px}
html.forest-font-lg .helper-cameo img{width:64px;height:64px}
html.forest-font-lg .story-game .game-prelude{position:relative;inset:auto;grid-row:2/3;grid-column:1/2;margin:0 14px 14px;padding:14px 16px 16px;border-radius:16px;background:var(--lg-card)}
/* 文字卡已經不蓋在插畫上：玩的時候不必淡出（中模式會淡出，是為了讓出插畫） */
html.forest-font-lg .story-game.playing .game-prelude,html.forest-font-lg .story-game.playing .helper-cameo{opacity:1;transform:none}
html.forest-font-lg .story-game>.game-stage,html.forest-font-lg .story-game>.game-color,html.forest-font-lg .story-game>#activate-prop,html.forest-font-lg .story-game>.roulette-result,html.forest-font-lg .story-game>.sicbo-result,html.forest-font-lg .story-game>.slot-result,html.forest-font-lg .story-game>.bingo-result,html.forest-font-lg .story-game>.fishing-result,html.forest-font-lg .story-game>.baccarat-result{grid-row:3/4;grid-column:1/2}
html.forest-font-lg .story-game .prop-hotspot span.prop-cue{max-width:100%;min-height:56px;flex-wrap:wrap;text-align:center}
html.forest-font-lg .slot-lever-hotspot .lever-hint{left:auto;right:2px;width:max-content;max-width:calc(var(--lg-fw) * .72);white-space:normal;text-align:center}
html.forest-font-lg .roulette-touch-hint{top:calc(100% + 8px);bottom:auto;max-width:calc(var(--lg-fw) - 32px);text-align:center}
html.forest-font-lg .roulette-dot{width:24px;height:24px}
html.forest-font-lg .sicbo-touch-hint{max-width:calc(var(--lg-fw) - 32px);text-align:center}
html.forest-font-lg .sicbo-result{max-width:calc(100% - 32px)}
html.forest-font-lg .roulette-result,html.forest-font-lg .sicbo-result,html.forest-font-lg .slot-result,html.forest-font-lg .bingo-result,html.forest-font-lg .fishing-result,html.forest-font-lg .baccarat-result{flex-wrap:wrap;justify-content:center;row-gap:4px;text-align:center}
html.forest-font-lg .slot-result{left:50%;max-width:calc(100% - 32px)} /* ×2 字級：改以舞台中線置中（聯集框中心偏右約 21px，會貼到右緣） */
/* 賓果／打魚機／百家樂：提示與結果 ×2 後以舞台中線置中（賓果卡在場景偏右，照卡中心會貼到右緣）；提示的 left 相對於觸控按鈕 */
html.forest-font-lg .bingo-touch-hint,html.forest-font-lg .fishing-touch-hint,html.forest-font-lg .baccarat-touch-hint{max-width:calc(var(--lg-fw) - 32px);text-align:center}
html.forest-font-lg .bingo-touch-hint{left:calc(var(--lg-fw) / 2 - var(--bingo-x,33.2%))}
html.forest-font-lg .fishing-touch-hint{left:calc(var(--lg-fw) / 2 - var(--fishing-x,9.4%))}
html.forest-font-lg .baccarat-touch-hint{left:calc(var(--lg-fw) / 2 - var(--baccarat-x,13%))}
html.forest-font-lg .bingo-result,html.forest-font-lg .fishing-result,html.forest-font-lg .baccarat-result{left:50%;max-width:calc(100% - 32px)}

/* 另一條路：文字卡 → 舞台（sync 自己算 cover，任何高度都對得準） */
html.forest-font-lg .contrast-scene{display:grid;grid-template-columns:100%;grid-template-rows:auto minmax(clamp(260px,45dvh,420px),1fr);padding-top:calc(var(--lg-mast) + 8px)}
html.forest-font-lg .contrast-copy{position:relative;inset:auto;grid-row:1/2;grid-column:1/2;margin:0 14px 12px;padding:14px 16px 16px;border-radius:16px;background:var(--lg-card)}
html.forest-font-lg .contrast-scene>.contrast-stage,html.forest-font-lg .contrast-scene>.contrast-mist,html.forest-font-lg .contrast-scene>.contrast-shadow{grid-row:2/3;grid-column:1/2}

/* 結尾卡：主圖維持 265px，標籤移到圖片下方（拿到整張卡的寬度） */
html.forest-font-lg .final-scene{padding-top:calc(var(--lg-mast) + 6px)}
html.forest-font-lg .card-top{flex-wrap:wrap}
html.forest-font-lg .card-hero{height:auto;display:grid;grid-template-columns:100%;grid-template-rows:265px auto}
html.forest-font-lg .card-hero>.game-picture,html.forest-font-lg .card-hero>.rest-card-art,html.forest-font-lg .card-hero:after{grid-row:1/2;grid-column:1/2}
html.forest-font-lg .hero-label{position:relative;inset:auto;grid-row:2/3;grid-column:1/2;padding:12px 14px 14px;background:#0e4f5c}
html.forest-font-lg .rest-card-hero .hero-label{background:#1b2f3a}
html.forest-font-lg .card-helper-avatar{width:72px;height:72px}
html.forest-font-lg .forest-factor{flex-wrap:wrap;row-gap:6px}
html.forest-font-lg .forest-factor-text{flex:1 1 100%}
html.forest-font-lg .forest-delta{min-width:84px;margin-left:auto}
html.forest-font-lg .forest-ai-mark{width:48px;height:48px}

/* 西元生日年／月／日下拉選單（forest-date-select.js）：大字時改成直排、觸控區加高 */
html.forest-font-lg .forest-date-select select,html.forest-font-lg .forest-time-select select{min-height:64px}
html.forest-font-lg .forest-date-select{grid-template-columns:1fr;gap:8px}
