:root{color-scheme:dark;--ink:#182423;--deep:#101a19;--paper:#fff5d8;--gold:#d3b780;--jade:#9abaac;--red:#813b31;--line:#61716b;--font:"Microsoft JhengHei","PingFang TC","Noto Sans TC",sans-serif;font-family:var(--font);font-size:100%;color:#edf1ea;background:var(--deep)}
*{box-sizing:border-box}body{margin:0;min-width:280px;background:radial-gradient(ellipse at 50% 0%,#2d3c37 0%,#101a19 65%);min-height:100vh}button,a,input{font:inherit}button{color:inherit;cursor:pointer;min-height:44px;border:1px solid #667269;border-radius:4px;background:#25342f;padding:.65rem 1.1rem;transition:background .15s,border-color .15s}button:hover{background:#34473e;border-color:var(--gold)}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #c2ebd5;outline-offset:4px}[hidden]{display:none!important}.page{max-width:1168px;margin:auto;padding:20px 32px 40px}.masthead{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:25px}.brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.brand h1{font-family:"Noto Serif TC","Songti TC","PMingLiU",serif;font-size:1.35rem;font-weight:600;letter-spacing:.09em;margin:0}.seal{display:grid;place-items:center;border:1px solid #b78070;border-radius:3px;color:#ebbbab;background:#65362e;width:33px;height:37px;font-family:serif;font-size:1.3rem}.tools{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.tools button{font-size:.9rem;background:transparent;border-color:transparent;padding:.45rem .75rem;color:#cfdbd0}.tools button:hover{background:#30413a;border-color:#637c6d}.chapter-line{display:flex;justify-content:center;gap:3.2rem;color:#899b8e;margin:0 0 15px}.chapter{display:flex;gap:10px;align-items:center;font-family:serif;font-size:1rem}.chapter>span{font-family:var(--font);font-size:.875rem;letter-spacing:.05em}.chapter.current{color:var(--gold)}.game-frame{border:1px solid #766a50;border-radius:5px;box-shadow:0 24px 60px #0005;overflow:hidden;background:#0a100d}.stage{position:relative;aspect-ratio:16/9;overflow:hidden;background:#101612;isolation:isolate;cursor:pointer}#pictures{position:absolute;inset:0;overflow:hidden}#pictures img{position:absolute;max-width:none;object-fit:fill;pointer-events:none;transition:opacity .24s ease,transform .28s ease,left .28s ease,top .28s ease;will-change:opacity}.title-screen{position:absolute;inset:0;z-index:50;cursor:default}.cover{position:absolute;width:100%;height:100%;object-fit:cover}.start-menu{position:absolute;left:6.1%;top:59%;display:flex;flex-direction:column;gap:10px;width:25%;min-width:178px}.start-menu button{background:#f8f4e9ed;color:#36443a;border-color:#716543;font-family:"Noto Serif TC","Songti TC",serif;font-size:1.12rem;letter-spacing:.08em;box-shadow:0 3px 10px #0001}.start-menu button:hover{background:#fff9e9;border-color:#9e4937}.start-menu .primary,button.primary{background:var(--red);color:#fff5de;border-color:#aa7260}.primary:hover,.start-menu .primary:hover{background:#9a493a;color:#fff9e9}.scene-prompt{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;padding:20px;background:linear-gradient(transparent 65%,#101610a8);color:#fff6dd;font-size:1rem;letter-spacing:.06em;pointer-events:none;z-index:25}.dialogue-panel{container-type:inline-size;background:var(--ink)}.dialogue{--dialogue-height:11rem;--dialogue-font:1.2rem;--dialogue-leading:1.65;--dialogue-ornament:100px;position:relative;isolation:isolate;height:var(--dialogue-height);color:#282a22;background:#fff5d8 url('./assets/84b015d6750c7493.png') center/142% auto repeat-y;cursor:pointer;border-top:1px solid #99844f}.dialogue::before,.dialogue::after{content:"";position:absolute;top:50%;width:var(--dialogue-ornament);aspect-ratio:118/153;transform:translateY(-50%);background:url('./assets/84b015d6750c7493.png') left center/auto 100% no-repeat;pointer-events:none;z-index:-1}.dialogue::before{left:0}.dialogue::after{right:0;background-position:right center}.dialogue-inner{height:100%;display:grid;grid-template-rows:1.5rem minmax(0,1fr);gap:.5rem;padding:1rem calc(var(--dialogue-ornament) + .75rem)}.speaker{font-weight:700;font-size:1.0625rem;letter-spacing:.06em;margin:0;line-height:1.4;color:#6d3529}.story-text{min-height:0;font-size:var(--dialogue-font);line-height:var(--dialogue-leading);white-space:pre-wrap;overflow-wrap:anywhere;letter-spacing:.02em;overflow:auto;scrollbar-width:thin}.story-text .color-emphasis{font-weight:650}.choices{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:16px max(16px,8%);border-top:1px solid #61716b}.choice-button{position:relative;display:flex;gap:16px;align-items:center;text-align:left;min-height:52px;font-size:1.08rem;line-height:1.5;color:#3e3324;background:#fffbee;border-color:#a6996d;padding:.65rem 1rem;box-shadow:0 2px 5px #4c3c1810}.choice-button:hover{color:#652d24;background:#faf0cd;border-color:#813b31}.choice-number{border:1px solid #a89363;border-radius:3px;font-family:serif;font-size:1rem;display:grid;place-items:center;min-width:24px;height:27px;color:#725b36}.dialogue-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 max(16px,8%);min-height:48px}.dialogue-actions button{color:#c6d3c4;background:none;border:none;font-size:.875rem;padding:7px 2px;min-height:44px}.dialogue-actions .next-button{font-size:1rem;color:var(--gold);padding-right:4px}.next-mark{margin-left:13px;color:var(--gold)}.below-stage{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:58px;margin-top:7px}.below-stage p{font-size:.875rem;line-height:1.65;color:#a6b5a7;margin:0}.quiet{border:none!important;background:transparent!important;color:#b7c6b7;font-size:.875rem;padding:.45rem .35rem}.quiet:hover{text-decoration:underline}.ending{color:#efe8d4;text-align:center;padding:34px 11% 40px;background:linear-gradient(160deg,#283c31,#182622)}.ending-eyebrow{color:#bdc9b5;font-size:.875rem;letter-spacing:.1em;margin:0 0 10px}.ending h2{font-family:"Noto Serif TC","Songti TC",serif;font-size:1.8rem;font-weight:500;letter-spacing:.08em;margin:0 0 22px;color:var(--gold)}.ending-text{font-size:1.15rem;line-height:1.9;white-space:pre-wrap;margin:0 0 25px}.ending-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.notice{padding:20px;color:#fff5d8;border:1px solid #877154;line-height:1.8}dialog{color:#efeede;background:#1f3028;border:1px solid #9d8961;border-radius:7px;padding:0;width:min(600px,calc(100% - 28px));max-height:calc(100dvh - 40px);box-shadow:0 24px 80px #0009}dialog::backdrop{background:#07100acc;backdrop-filter:blur(4px)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid #5a695b;gap:12px;position:sticky;top:0;background:#1f3028;z-index:1}.modal-header h2{font-size:1.3rem;font-weight:600;letter-spacing:.08em;margin:0}.modal-header button{min-width:44px;padding:5px;border:none;background:none}.modal-note{color:#b3c2b3;font-size:.875rem;line-height:1.65;margin:0 0 18px}#dialog-body{padding:20px 22px}.save-slot{border:1px solid #687862;border-radius:4px;padding:15px;margin-bottom:12px;display:flex;justify-content:space-between;gap:20px;align-items:center;background:#273a2d}.slot-copy{min-width:0}.slot-copy strong{font-size:1rem;color:var(--gold);display:block;margin-bottom:6px}.slot-copy p{font-size:.9rem;line-height:1.5;overflow-wrap:anywhere;color:#d4ddc9;margin:0}.slot-copy time{font-size:.875rem;color:#9fb19c;display:block;margin-top:6px}.save-slot button{white-space:nowrap}.history-item{border-bottom:1px solid #53664f;padding:12px 0}.history-item:last-child{border:0}.history-item strong{font-size:.875rem;display:block;color:var(--gold);margin-bottom:6px}.history-item p{margin:0;font-size:1rem;line-height:1.8;white-space:pre-wrap}.history-item.choice strong{color:#b9dcc4}.confirm-copy{font-size:1rem;line-height:1.85;margin:0 0 24px}.confirm-actions{display:flex;justify-content:flex-end;gap:12px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);border:1px solid #b4a278;background:#263c2e;color:#f1efd7;border-radius:5px;padding:12px 20px;box-shadow:0 8px 28px #0006;font-size:1rem;line-height:1.6;z-index:100}.skip-link{position:absolute;left:16px;top:-70px;color:#1c2b22;background:#fff4ce;padding:12px;z-index:150}.skip-link:focus{top:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.game-frame:fullscreen{width:100%;height:100%;border:0;overflow:auto;display:flex;flex-direction:column;justify-content:center;background:#101a19}.game-frame:fullscreen .stage{width:min(100%,calc((100dvh - 200px)*16/9));flex-shrink:0;align-self:center}.game-frame:fullscreen .dialogue-panel{width:min(100%,1102px);align-self:center}
@media(max-width:900px){.masthead{align-items:flex-start;gap:10px;flex-direction:column;margin-bottom:18px}.tools{justify-content:flex-start;margin-left:-10px}.page{padding:18px 22px 28px}.brand h1{font-size:1.22rem}.chapter-line{gap:2rem}}
@media(max-width:600px){.page{padding:16px 12px 22px}.masthead{margin-bottom:14px;gap:9px}.brand{gap:9px}.brand h1{font-size:1.1rem;letter-spacing:.06em}.seal{width:29px;height:32px;font-size:1.15rem}.tools{gap:0;justify-content:space-between;width:calc(100% + 8px);margin-left:-4px}.tools button{font-size:.875rem;padding:.35rem .5rem}.chapter-line{gap:0;justify-content:space-between;padding:0 5px;margin-bottom:12px}.chapter{gap:6px;font-size:.875rem}.chapter>span{font-size:.875rem;letter-spacing:0}.start-menu{top:auto;bottom:8%;left:5%;min-width:0;width:41%;gap:8px}.start-menu button{font-size:1rem;min-height:41px;padding:.5rem .3rem;letter-spacing:.04em}.choice-button{font-size:1rem;gap:12px;padding:.65rem .8rem}.scene-prompt{font-size:.875rem;padding:11px}.below-stage{gap:8px;align-items:flex-start;flex-direction:column;margin-top:12px}.below-stage p{font-size:.875rem;line-height:1.75}.below-stage>button{align-self:flex-end}.ending{padding:27px 8% 32px}.ending h2{font-size:1.5rem}.ending-text{font-size:1.05rem}.modal-header{padding:14px 16px}#dialog-body{padding:17px 16px}.save-slot{padding:13px;gap:12px}.save-slot button{padding:.5rem .65rem;font-size:.9rem}.game-frame:fullscreen .stage,.game-frame:fullscreen .dialogue-panel{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* Fixed dialogue sizes reserve room for all 530 original pages, including explicit line breaks.
   The edge crops use 118:153; the original artwork is always scaled uniformly. */
@container(max-width:900px){.dialogue{--dialogue-height:14rem;--dialogue-font:1.15rem;--dialogue-ornament:74px}}
@container(max-width:600px){.dialogue{--dialogue-height:13.5rem;--dialogue-font:1.0625rem;--dialogue-leading:1.7;--dialogue-ornament:48px}.dialogue-inner{padding:.875rem calc(var(--dialogue-ornament) + .75rem)}}
@container(max-width:480px){.dialogue{--dialogue-height:15rem;--dialogue-ornament:36px}}
@container(max-width:360px){.dialogue{--dialogue-height:17rem;--dialogue-ornament:28px}.dialogue-inner{padding:.875rem calc(var(--dialogue-ornament) + .625rem)}}
@container(max-width:280px){.dialogue{--dialogue-height:19rem}}

/* Keep repeated clicks and long presses from selecting text or showing a touch highlight. */
.game-frame{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
button{-webkit-tap-highlight-color:transparent}
.dialogue{touch-action:pan-y pinch-zoom}
.hold-status{font-size:.875rem;color:var(--gold);white-space:nowrap}
