@font-face{font-family:StoryHaitham;src:url('assets/fonts/haitham.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:StoryKaveh;src:url('assets/fonts/kaveh.woff2') format('woff2');font-weight:400;font-display:swap}
:root{color-scheme:dark;--paper:#f3e8cb;--gold:#d8bd7f;--ink:#15392f;--body-size:18px}
*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden;background:#10261e}body{font-family:StoryHaitham,'Microsoft YaHei',sans-serif;color:var(--paper)}button{font:inherit;-webkit-tap-highlight-color:transparent;cursor:pointer}button:disabled{cursor:default;opacity:.4}button:focus-visible{outline:2px solid #ffdda2;outline-offset:3px}button svg{display:block;width:20px;height:20px;margin:auto;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.scroll-root{position:fixed;top:0;left:0;width:100%;height:100%;overflow:hidden;isolation:isolate;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none;background:#172e23}input,textarea,[contenteditable=true],[data-allow-text-selection]{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default}
.world-host{position:absolute;top:0;left:0;width:100%;height:100%}.world-host canvas{display:block;width:100%;height:100%;touch-action:none}.scroll-interface{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.scroll-interface button,.scroll-interface [role=button],.scroll-interface [data-paper-drag],.story-dialogue,.room-modal,.paper-surface{pointer-events:auto}
.room-chrome{position:absolute;top:max(24px,env(safe-area-inset-top));left:17px;right:17px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;text-shadow:0 2px 8px #142d20}.room-place{max-width:57%;padding-top:2px}.room-place small{font-size:10px;letter-spacing:2px;color:#fff2d1b8;display:block;margin-bottom:5px}.room-place span{font-family:StoryKaveh,serif;font-size:20px;letter-spacing:2px;color:#fff2d3}.room-chrome nav{display:flex;gap:7px}.round-control{border:1px solid #c9bd8c70;background:#12382d79;border-radius:50%;width:42px;height:42px;min-width:42px;min-height:42px;color:#f4e2b5;padding:10px;transition:background .18s,transform .18s}.round-control:hover{background:#335b468c;transform:translateY(-1px)}
.story-dialogue{position:absolute;left:7%;right:7%;bottom:max(13%,env(safe-area-inset-bottom));padding:18px 20px 13px;background:linear-gradient(110deg,#10362df2,#0b2c24e8);border:1px solid #cbb27c8c;border-radius:3px 15px 15px 15px;box-shadow:0 10px 30px #0b291b33;animation:dialogue-arrive .32s ease both;max-height:62%;overflow:auto}.story-dialogue:before{content:"";position:absolute;top:0;left:20px;width:38px;height:1px;background:#f7dfab}.speaker-label{display:flex;gap:10px;align-items:baseline;margin-bottom:9px}.speaker-label:empty{display:none}.speaker-label b{font-size:17px;font-weight:500;letter-spacing:2px;color:#efd9a9}.speaker-label small{font-size:10px;letter-spacing:1px;color:#bacbb2}.speaker-n .speaker-label{display:none}
.story-dialogue p{position:relative;white-space:pre-wrap;margin:0;font-size:var(--body-size);line-height:1.86;letter-spacing:.35px;color:#f0e7d0;font-family:'SimSun','Songti SC',serif;overflow-wrap:anywhere}.speaker-k p,.speaker-k .speaker-label b{font-family:StoryKaveh,'KaiTi',serif}.speaker-h p,.speaker-h .speaker-label b{font-family:StoryHaitham,'Microsoft YaHei',sans-serif}.speaker-h p{font-size:calc(var(--body-size) - 1px);line-height:1.95;letter-spacing:.15px}.story-dialogue.speaker-k{left:5%;right:12%;border-radius:3px 16px 16px 16px}.story-dialogue.speaker-h{left:12%;right:5%;border-radius:16px 3px 16px 16px;animation-name:dialogue-right}.story-dialogue.speaker-n{left:8%;right:8%;border-width:0 0 0 2px;border-radius:0;background:linear-gradient(90deg,#12392eea,#11362dd0);box-shadow:none}.speaker-n:before{display:none}.type-reserved{visibility:hidden;display:block}.type-visible{position:absolute;top:0;left:0;width:100%;height:100%}.uniform-font p,.uniform-font .speaker-label b{font-family:StoryHaitham,sans-serif!important}
.reading-actions{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:11px}.reading-actions>span{font-size:9px;color:#b9c8ad;letter-spacing:1px}.read-next{background:none;border:0;color:#e8cea0;font-size:14px;letter-spacing:2px;min-height:42px;min-width:74px;padding:8px 1px 8px 12px;text-align:right}.read-next span{font-size:25px;margin-left:5px;vertical-align:-1px}.read-next:hover{color:#fff0c8}.story-choices{display:grid;gap:9px;margin-top:15px}.story-choice{min-height:47px;text-align:left;padding:12px 14px;font-size:14px;line-height:1.6;color:#f0dfb9;border:1px solid #b49e686e;border-radius:4px;background:#2a514233}.story-choice:hover{background:#41664c88}.choice-dialogue p{font-size:17px}.inline-icon{background:none;border:0;color:#d2bf91;min-width:42px;min-height:42px;padding:8px}
.room-vitals{position:absolute;bottom:8%;left:17px;width:111px;text-shadow:0 1px 5px #143622}.room-vitals>div{display:grid;grid-template-columns:24px 1fr 19px;align-items:center;gap:6px;margin-top:7px;font-size:9px}.room-vitals label{color:#f0e1b4}.room-vitals i{height:3px;background:#193a2ba8;overflow:hidden}.room-vitals i b{height:100%;display:block;background:linear-gradient(90deg,#b69553,#efd6a0);transition:width .3s}.room-vitals small{font-size:9px;color:#dfd8bb}.room-lower-tools{position:absolute;right:18px;bottom:8%}.exploration-hint{position:absolute;bottom:2.7%;left:50%;transform:translateX(-50%);font-size:9px;letter-spacing:2px;color:#fff1d1ae;white-space:nowrap;text-align:center}.subtle-link{background:none;border:0;min-height:34px;padding:8px;font-size:11px;color:#ddc68f;text-decoration:none}.exploration-hint button{display:block;margin:0 auto;padding:1px 8px}
.game-caption{position:absolute;top:17%;left:7%;right:7%;text-align:center;text-shadow:0 2px 7px #092a19;pointer-events:none}.game-caption small{display:block;color:#fff0c3;font-size:13px;letter-spacing:3px;margin-bottom:9px}.game-caption>span{font-size:12px;line-height:1.65;display:block;color:#fff0cc}.stability-track{display:block;height:2px;width:90px;background:#2b4b3766;margin:11px auto 0;overflow:hidden}.stability-track>b{height:100%;background:#efd590;display:block}.bench-controls{position:absolute;left:6%;right:6%;bottom:15%;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;pointer-events:none}.bench-controls button{pointer-events:auto}.game-control{min-height:45px;padding:10px 13px;border:1px solid #b8a16b9c;background:#12392de6;color:#eddeb6;border-radius:4px;font-size:12px;letter-spacing:1px}.gold-control{background:linear-gradient(110deg,#ba9c62,#e9cf92);color:#153f30;border-color:#edd8aa}.game-control:hover{filter:brightness(1.12)}.bench-exit{position:absolute;bottom:9%;left:50%;transform:translateX(-50%);white-space:nowrap}.ready-row{display:flex;gap:8px;width:100%;justify-content:center}.resolution-options{display:grid;gap:8px;width:100%}
.paper-surface{position:absolute;top:33%;left:4%;width:92%;max-height:48%;animation:paper-open .35s ease both}.paper-svg{width:100%;height:auto;display:block;touch-action:none}.paper-svg [data-action]{cursor:pointer}.paper-svg [data-paper-drag]{cursor:grab;touch-action:none}.paper-count{display:block;text-align:right;font-size:11px;color:#f2db9f;padding:8px 12px}.paper-commit{display:block;min-height:44px;margin:12px auto;padding:10px 25px;font-size:13px;border:1px solid #edd19c;background:#d7b879;color:#163e2c;border-radius:3px}
.room-modal{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(125deg,#0c3027f2,#081e19fa);padding:8vh 7% 10vh;overflow:auto;animation:page-enter .25s ease both;z-index:20;touch-action:pan-y}.room-modal header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:25px}.room-modal h2{font-family:StoryKaveh,serif;font-weight:400;font-size:26px;letter-spacing:3px;margin:0;color:#eed9a7}.room-modal h3{font-weight:500;font-size:17px;color:#dfc592;margin:25px 0 10px}.room-modal p{font-size:14px;line-height:1.9;color:#d1d6bd;overflow-wrap:anywhere}.menu-list{display:grid;gap:5px}.menu-entry{display:block;text-align:left;padding:18px 6px;min-height:54px;border:0;border-bottom:1px solid #9c8f5e33;background:none;color:#f3e5bc;font-size:16px;letter-spacing:2px}.menu-entry:hover{color:#fff3d1;background:#31534044}.history-line{border-bottom:1px solid #86925f33;padding:10px 0}.history-line small{font-size:11px;color:#d1b67e}.history-line p{margin:7px 0;font-size:15px;line-height:1.9}.history-line.speaker-k p{font-family:StoryKaveh,serif}.history-line.speaker-h p{font-family:StoryHaitham,sans-serif}.clue-list{display:flex;gap:8px;flex-wrap:wrap}.clue-list span{padding:8px;border:1px solid #7f8b6455;color:#7f987a;font-size:12px}.clue-list span.found{color:#ecd39a;border-color:#d0b77499}
.workshop-menu{display:grid;gap:12px;margin-top:22px}.workshop-entry{display:block;min-height:85px;text-align:left;padding:17px 19px;border:1px solid #a7955f70;border-radius:5px;background:#264d3b55;color:#f5e5bb}.workshop-entry strong{display:block;font-family:StoryKaveh,serif;font-size:21px;font-weight:400;letter-spacing:2px}.workshop-entry small{font-size:11px;color:#b4c0a0;display:block;margin-top:8px}.cg-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.cg-card{position:relative;display:block;height:210px;overflow:hidden;border:1px solid #c0aa7066;border-radius:4px;padding:0;background:#1d392b}.cg-card img{height:100%;width:100%;object-fit:cover}.cg-card span{position:absolute;bottom:0;left:0;right:0;padding:16px 5px 10px;background:linear-gradient(transparent,#09291ded);font-size:11px;color:#f3ddb1}.cg-full{position:absolute;top:0;left:0;width:100%;height:100%;background:#071c14;z-index:30;pointer-events:auto;animation:page-enter .3s ease both}.cg-full img{height:100%;width:100%;object-fit:contain}.cg-full button{position:absolute;top:4%;right:16px;pointer-events:auto}
.room-afterword{position:absolute;left:8%;right:8%;bottom:15%;text-align:center;color:#ffebba;text-shadow:0 2px 12px #142c20}.room-afterword small{font-family:StoryKaveh,serif;font-size:18px;letter-spacing:4px}.room-afterword p{font-family:StoryKaveh,serif;font-size:24px;line-height:1.7}.text-control{border:0;background:none;color:#f1dab0;min-height:44px;display:block;font-size:13px;margin:auto;padding:9px 15px}.scroll-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;background:#11352a;z-index:50;color:#e4d2a1}.scroll-loading span{font-family:StoryKaveh,serif;font-size:24px;letter-spacing:4px}.scroll-loading small{font-size:12px;letter-spacing:2px;color:#bbc2a0}.large-type{--body-size:21px}.reduced-motion *{animation:none!important;transition:none!important}
[data-interactive-story-cover="scroll"] [data-fw-game-cover-action]{min-height:48px;min-width:210px;border:1px solid #f1d8a5;border-radius:3px;background:linear-gradient(110deg,#b99b60,#e7cd92);color:#153d2c;font-family:StoryKaveh,serif;font-size:18px;letter-spacing:4px;padding:13px 24px}.scroll-cover-copy{position:absolute;top:11%;left:7%;right:7%;text-align:center;color:#fff0cb;text-shadow:0 2px 12px #08271d;pointer-events:none}.scroll-cover-copy h1{font-family:StoryKaveh,serif;font-weight:400;font-size:clamp(28px,7vw,42px);line-height:1.55;margin:0;letter-spacing:3px}.scroll-cover-copy p{font-size:11px;letter-spacing:5px;margin-top:12px}
@keyframes dialogue-arrive{from{opacity:0;transform:translate(-7px,5px)}to{opacity:1;transform:translate(0,0)}}@keyframes dialogue-right{from{opacity:0;transform:translate(7px,5px)}to{opacity:1;transform:translate(0,0)}}@keyframes page-enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes paper-open{from{opacity:0;transform:perspective(700px) rotateX(8deg) translateY(10px)}to{opacity:1;transform:perspective(700px) rotateX(0) translateY(0)}}
@media(min-aspect-ratio:1/1){.story-dialogue{left:22%;right:22%;bottom:10%;max-width:850px;margin:auto}.story-dialogue.speaker-k{left:18%;right:30%}.story-dialogue.speaker-h{left:30%;right:18%}.story-dialogue.speaker-n{left:24%;right:24%}.room-modal{padding-left:24%;padding-right:24%}.paper-surface{left:32%;width:36%;top:28%}.bench-controls{left:22%;right:22%;bottom:10%}.bench-exit{bottom:3%}.room-chrome{top:9%}.game-caption{top:22%}.cg-card{height:290px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* A shared reading anchor keeps the novel still while voices change. */
@font-face{font-family:StoryTighnari;src:url('assets/fonts/tighnari.woff2') format('woff2');font-display:swap}
@font-face{font-family:StoryNarrator;src:url('assets/fonts/narrator.woff2') format('woff2');font-weight:100 900;font-display:swap}
.story-dialogue,.story-dialogue.speaker-k,.story-dialogue.speaker-h,.story-dialogue.speaker-n{--voice-bg:#222f35;--voice-edge:#a9b8b4;--voice-title:#e0ddd2;position:absolute;left:50%;right:auto;bottom:max(12%,env(safe-area-inset-bottom));width:min(86%,880px);height:clamp(240px,32vh,290px);max-height:none;margin:0;transform:translateX(-50%);display:flex;flex-direction:column;overflow:hidden;padding:19px 23px 13px;border:1px solid color-mix(in srgb,var(--voice-edge) 65%,transparent);border-radius:8px;background:linear-gradient(115deg,color-mix(in srgb,var(--voice-bg) 97%,transparent),color-mix(in srgb,var(--voice-bg) 91%,transparent));box-shadow:0 14px 40px #08181166,inset 0 1px #ffffff0b;animation:dialogue-still .26s ease both;backdrop-filter:blur(8px)}
.story-dialogue.speaker-k{--voice-bg:#3b242c;--voice-edge:#d8a38c;--voice-title:#f0c8b0}
.story-dialogue.speaker-h{--voice-bg:#182f3b;--voice-edge:#7caeb9;--voice-title:#b8d7df}
.story-dialogue.speaker-t{--voice-bg:#21382d;--voice-edge:#a9bb7a;--voice-title:#d3dfaa}
.story-dialogue.speaker-c{--voice-bg:#30283f;--voice-edge:#b69dc7;--voice-title:#d9c8e9}
.story-dialogue.speaker-client,.story-dialogue.speaker-colleague{--voice-bg:#3d3326;--voice-edge:#bea16e;--voice-title:#e1d0ac}
.story-dialogue.speaker-n{--voice-bg:#252e35;--voice-edge:#a1aaa9;--voice-title:#d5d7cf;text-align:center}
.story-dialogue:before{display:block;left:23px;top:-1px;background:var(--voice-edge);height:2px;width:48px}
.story-dialogue:after{content:'◇';position:absolute;right:14px;top:11px;font-size:14px;color:var(--voice-edge);opacity:.65}
.story-dialogue .speaker-label{flex-shrink:0;min-height:23px;margin-bottom:8px}.story-dialogue .speaker-label b{color:var(--voice-title)}
.story-dialogue p{flex:1;min-height:0;overflow-y:auto;font-size:var(--body-size);line-height:1.9;margin:0;padding-right:5px;scrollbar-width:thin;scrollbar-color:#baad8266 transparent}
.story-dialogue .reading-actions{flex-shrink:0;min-height:38px;margin-top:8px}.speaker-n .reading-actions{justify-content:space-between}
.story-dialogue.speaker-n p{font-family:StoryNarrator,'SimSun',serif;line-height:1.95;font-size:17px}
.speaker-t p,.speaker-t .speaker-label b,.history-line.speaker-t p{font-family:StoryTighnari,serif}
.speaker-c p,.speaker-c .speaker-label b{font-family:StoryNarrator,serif;font-weight:650;letter-spacing:1px}
.speaker-client p,.speaker-colleague p{font-family:StoryNarrator,serif;font-weight:450}
.game-invitation,.choice-dialogue{--voice-bg:#29362e;--voice-edge:#baa26f}.story-choices{gap:6px;margin-top:8px;overflow:auto;flex:1}.story-choice{min-height:40px;padding:8px 11px}
.choice-dialogue p{flex:none;font-size:16px}.game-invitation p{font-family:StoryNarrator,serif;font-size:16px}
.world-host:after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 43%,transparent 42%,#0c191c2b 100%)}
.room-vitals{background:linear-gradient(90deg,#102b25b3,transparent);padding:5px 6px 7px;border-radius:3px;width:124px}
.mini-control{min-width:39px;min-height:32px;padding:5px 8px;border:1px solid #bdab7b70;border-radius:4px;background:#12332acf;color:#dfd0aa;font-size:10px;letter-spacing:1px}
.room-lower-tools{display:flex;align-items:center;gap:9px}.game-camera-tools{position:absolute;right:17px;top:12%;display:flex;gap:6px;pointer-events:auto}
.game-caption{top:19%;max-width:540px;margin:auto;padding:9px 10px;background:linear-gradient(90deg,transparent,#0b251d88,transparent);border-radius:5px}.game-caption small{margin-bottom:6px}.game-step-hint{display:block;font-style:normal;color:#e5d5af;font-size:11px;line-height:1.7;margin-top:5px}.game-caption .stability-track{margin-top:6px}
.room-modal{background:radial-gradient(ellipse at 15% 0,#2c4a3aea,transparent 55%),linear-gradient(125deg,#0c2826f7,#111f22fc)}
.workshop-card{border:1px solid #a7955a66;border-radius:7px;background:linear-gradient(120deg,#30483b77,#122c2699);overflow:hidden}.workshop-card .workshop-entry{border:0;background:none;border-radius:0;width:100%}.level-picker{display:flex;flex-wrap:wrap;gap:7px;padding:0 17px 16px}.level-button{width:32px;height:32px;border:1px solid #ad9b6555;border-radius:50%;background:#122b2280;color:#d9c799;font-size:11px}.level-button:hover{background:#b89f62;color:#15362a}
.help-steps{padding-left:22px;color:#ded7bc;font-size:15px;line-height:1.9}.help-steps li{margin-bottom:16px}
.story-cg{position:absolute;inset:0;margin:0;background:#0d2025d9;pointer-events:none;animation:cg-reveal .65s ease both}.story-cg img{display:block;width:100%;height:100%;object-fit:contain}.story-cg:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 45%,#101c2440 100%)}.story-cg figcaption{position:absolute;left:24px;top:12%;font-family:StoryKaveh,serif;letter-spacing:3px;font-size:12px;color:#f1dcb5;z-index:1}
@keyframes dialogue-still{from{opacity:0}to{opacity:1}}
@keyframes cg-reveal{from{opacity:0;filter:brightness(.8)}to{opacity:1;filter:brightness(1)}}
@media(min-aspect-ratio:1/1){.story-dialogue,.story-dialogue.speaker-k,.story-dialogue.speaker-h,.story-dialogue.speaker-n{width:min(69%,880px);bottom:9%;height:clamp(210px,30vh,255px)}.game-caption{top:19%}.game-camera-tools{top:14%}.story-cg img{object-fit:contain}.game-steps{max-width:650px}}
.story-dialogue.speaker-n{top:50%;bottom:auto;transform:translate(-50%,-50%);height:clamp(210px,27vh,250px);width:min(82%,800px)}
.story-dialogue.speaker-n p{display:flex;align-items:center;justify-content:center}.speaker-n .type-visible{top:50%;height:auto;transform:translateY(-50%)}
