:root{--paper:#f3ecdd;--paper-raised:#faf6ec;--paper-deep:#eae1cc;--ink:#35301f;--ink-soft:#6b6250;--ink-faint:#9a9078;--seal:#a5382e;--seal-soft:#c4705f;--line:#d8ccb2;--serif:"Noto Serif SC","Songti SC","STSong","SimSun",serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}@supports (height: 100dvh){html,body,#root{height:100dvh}}html{-webkit-text-size-adjust:100%}body{-webkit-tap-highlight-color:transparent;font-family:var(--serif);color:var(--ink);background-color:var(--paper);background-image:radial-gradient(at 18% 8%,#fffcf2e6,#0000 55%),radial-gradient(at 85% 92%,#c4b28c47,#0000 50%),repeating-linear-gradient(0deg,#0000 0 2px,#78643c04 2px 4px)}button{color:inherit;cursor:pointer;font-family:inherit}button:disabled{cursor:not-allowed;opacity:.45}.btn{border:1px solid var(--ink-soft);color:var(--ink);letter-spacing:.08em;background:0 0;border-radius:6px;padding:7px 16px;transition:background .15s,color .15s,border-color .15s;font-size:14px}.btn:hover:not(:disabled),.btn.primary{background:var(--ink);color:var(--paper-raised);border-color:var(--ink)}.btn.primary:hover:not(:disabled){background:var(--seal);border-color:var(--seal)}.btn.ghost{color:var(--ink-soft);border-color:#0000}.btn.ghost:hover:not(:disabled){color:var(--ink);background:#35301f14}.btn.small{padding:3px 10px;font-size:12px}.big-btn{width:100%;margin-top:8px;padding:13px;font-size:16px}.seal{display:inline-flex;border:2px solid var(--seal);color:var(--seal);border-radius:5px;flex:none;justify-content:center;align-items: center;width:34px;height:34px;font-size:18px;font-weight:700;transform:rotate(-4deg)}.seal.big{border-width:3px;width:52px;height:52px;font-size:28px}.seal.small{width:26px;height:26px;font-size:14px}.screen{display:flex;flex-direction:column;height:100%}.topbar{display:flex;padding:10px 20px;padding-top:max(10px,env(safe-area-inset-top));padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));border-bottom:1px solid var(--line);backdrop-filter:blur(4px);background:#faf6ecbf;flex:none;justify-content:space-between;align-items: center}.brand{display:flex;align-items: center;gap:12px}.brand-text{display:flex;flex-direction:column;line-height:1.3}.brand-text strong{letter-spacing:.14em;font-size:17px}.brand-text small{color:var(--ink-faint);letter-spacing:.1em;font-size:12px}.topbar-right{display:flex;align-items: center;gap:14px}.location-hint{color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:13px}.save-hint{color:var(--ink-faint);border:1px dashed var(--line);border-radius:999px;padding:2px 10px;font-size:12px}.error-banner{display:flex;color:#7c2d20;background:#f6e2dc;border-bottom:1px solid #e0b7ac;flex:none;align-items: center;gap:10px;padding:8px 20px;font-size:13px}.error-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.content{display:flex;flex:1;min-height:0}.story{overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;flex:1}.story-inner{padding:36px 28px calc(48px + env(safe-area-inset-bottom));padding-left:max(28px,env(safe-area-inset-left));padding-right:max(28px,env(safe-area-inset-right));max-width:660px;margin:0 auto}.story-empty{text-align:center;color:var(--ink-faint);letter-spacing:.3em;margin-top:18vh}.act-line{display:flex;color:var(--seal);align-items:baseline;gap:10px;margin:26px 0 10px}.act-badge{border:1.5px solid var(--seal);transform-origin:center;border-radius:4px;flex:none;padding:1px 5px;font-size:12px;transform:rotate(-3deg)}.act-text{letter-spacing:.04em;font-size:15px}.act-text:before{content:"「";color:var(--seal-soft)}.act-text:after{content:"」";color:var(--seal-soft)}.chapter{margin:18px 0}.chapter p{letter-spacing:.03em;text-align:justify;animation:.5s both ink-in;margin-bottom:14px;font-size:17px;line-height:2}@keyframes ink-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.chapter.streaming p{animation:none;color:var(--ink-soft)}.thinking-line{color:var(--ink-faint);letter-spacing:.2em;font-size:14px}.caret{display:inline-block;background:var(--ink-soft);vertical-align:-3px;animation:1s step-end infinite blink;width:9px;height:19px;margin-left:2px}@keyframes blink{50%{opacity:0}}.world-wrap{display:flex;flex:none;width:300px}.world{overflow-y:auto;overscroll-behavior:contain;border-left:1px solid var(--line);background:#faf6ec99;flex:1;padding:24px 20px 32px}.world-backdrop,.world-close{display:none}.world-title{letter-spacing:.5em;color:var(--ink-soft);border-bottom:1px solid var(--line);margin-bottom:16px;padding-bottom:10px;font-size:15px}.world-empty{color:var(--ink-faint);font-size:13px;line-height:1.8}.world-section{margin-bottom:22px}.world-section h3{color:var(--ink-faint);letter-spacing:.3em;display:flex;align-items: center;gap:8px;margin-bottom:8px;font-size:13px}.world-section h3:after{content:"";background:var(--line);flex:1;height:1px}.fact-list div{display:flex;gap:10px;margin-bottom:6px;font-size:14px}.fact-list dt{color:var(--ink-faint);flex:none;width:2.6em}.fact-list dd{flex:1;line-height:1.6}.chip-list{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--paper-raised);color:var(--ink-soft);border-radius:999px;padding:3px 10px;font-size:12px}.note-list{list-style:none}.note-list li{margin-bottom:8px;font-size:13px;line-height:1.6}.note-list strong{display:block;font-size:14px}.note-list span{color:var(--ink-soft)}.choice-card{border:1px solid var(--line);border-top:3px solid var(--seal);background:var(--paper-raised);animation:.4s both ink-in;border-radius:10px;margin:26px 0 10px;padding:18px 20px 16px;box-shadow:0 12px 32px #28221624}.choice-head{display:flex;align-items: center;gap:10px;margin-bottom:14px}.choice-head h2{letter-spacing:.22em;font-size:16px}.choice-list{display:flex;flex-direction:column;gap:10px}.choice{display:flex;text-align:left;border:1px solid var(--line);background:var(--paper);border-radius:8px;align-items: center;gap:12px;padding:12px 14px;transition:border-color .15s,background .15s,transform .12s;font-size:15px;line-height:1.6}.choice:hover{border-color:var(--seal);background:var(--paper-raised);transform:translate(3px)}.choice:focus-visible{outline:2px solid var(--seal);outline-offset:2px}.choice kbd{display:inline-flex;border:1.5px solid var(--seal);color:var(--seal);border-radius:50%;flex:none;justify-content:center;align-items: center;width:22px;height:22px;font-family:inherit;font-size:12px}.choice-custom{margin-top:16px}.choice-custom .divider{display:flex;color:var(--ink-faint);letter-spacing:.2em;align-items: center;gap:12px;margin-bottom:10px;font-size:12px}.choice-custom .divider:before,.choice-custom .divider:after{content:"";background:var(--line);flex:1;height:1px}.act-composer{border-top:1px dashed var(--line);margin:26px 0 6px;padding-top:14px}.custom-row{display:flex;gap:8px}.custom-row input{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:8px;flex:1;padding:9px 12px;font-family:inherit;font-size:16px}.custom-row input:focus{outline:none;border-color:var(--ink-soft)}.start-screen{overflow-y:auto;display:flex;justify-content:center;height:100%;padding:6vh 20px 60px}.start-card{width:640px;max-width:100%}.start-head{text-align:center;margin-bottom:34px}.start-head .seal{margin-bottom:14px}.start-head h1{letter-spacing:.3em;text-indent:.3em;margin-bottom:14px;font-size:34px}.start-head p{color:var(--ink-soft);max-width:460px;margin:0 auto;font-size:14px;line-height:2}.start-head strong{color:var(--seal)}.field{margin-bottom:22px}.field h2{letter-spacing:.2em;color:var(--ink-soft);display:flex;align-items:baseline;gap:8px;margin-bottom:10px;font-size:14px}.field h2 em{color:var(--ink-faint);border:1px dashed var(--line);border-radius:999px;padding:1px 8px;font-size:11px;font-style:normal}.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.preset{text-align:left;border:1px solid var(--line);background:var(--paper-raised);display:flex;border-radius:8px;flex-direction:column;gap:6px;padding:12px 14px;transition:border-color .15s,box-shadow .15s}.preset:hover{border-color:var(--ink-soft)}.preset.active{border-color:var(--seal);box-shadow:inset 0 0 0 1px var(--seal)}.preset strong{letter-spacing:.08em;font-size:15px}.preset.active strong{color:var(--seal)}.preset span{color:var(--ink-soft);font-size:12px;line-height:1.6}.area{border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);resize:vertical;border-radius:8px;width:100%;margin-top:10px;padding:10px 12px;font-family:inherit;font-size:16px;line-height:1.7}.area:focus{outline:none;border-color:var(--ink-soft)}.area::placeholder{color:var(--ink-faint)}.start-note{text-align:center;color:var(--ink-faint);margin-top:14px;font-size:12px}.world-toggle{display:none}@media (max-width:860px){.world-toggle{display:inline-flex}.location-hint{display:none}.story-inner{padding:24px 18px calc(32px + env(safe-area-inset-bottom));padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}.world-wrap{position:fixed;z-index:40;display:block;pointer-events:none;width:auto;inset:0}.world-backdrop{display:block;position:absolute;opacity:0;background:#28221659;transition:opacity .2s;inset:0}.world{position:absolute;max-height:74vh;border-left:none;border-top:1px solid var(--line);padding:20px 20px calc(24px + env(safe-area-inset-bottom));background:var(--paper-raised);border-radius:14px 14px 0 0;max-height:74dvh;transition:transform .25s;bottom:0;left:0;right:0;transform:translateY(102%);box-shadow:0 -16px 40px #2822162e}.world-wrap.open{pointer-events:auto}.world-wrap.open .world-backdrop{opacity:1}.world-wrap.open .world{transform:none}.world-close{display:inline-flex;position:absolute;border:1px solid var(--line);color:var(--ink-soft);background:0 0;border-radius:999px;padding:3px 12px;font-size:12px;top:14px;right:16px}}@media (max-width:640px){.save-hint{display:none}.start-screen{padding:28px 16px calc(48px + env(safe-area-inset-bottom))}.start-head{margin-bottom:24px}.start-head h1{font-size:26px}.preset-grid{grid-template-columns:1fr}}
