:root{--font-title: "STKaiti", "KaiTi", "DFKai-SB", "Times New Roman", serif;--font-dialog: "Noto Serif SC", "Source Han Serif SC", "Songti SC", "SimSun", serif;--font-name: "STKaiti", "KaiTi", serif;--font-ui: "IBM Plex Sans", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--bg-main: #000000;--bg-overlay: rgba(0, 0, 0, .82);--accent-sakura: #FE877F;--accent-sakura2: #ca7cfa;--accent-warm-soft: rgba(254, 135, 127, .12);--accent-gold: #a08c60;--accent-ember: #944444;--ink-main: #EEDEFE;--ink-silver: #c0b8d0;--ink-soft: #8a82a0;--ink-name: #FEFEFE;--dialog-bg: rgba(0, 0, 0, .55);--dialog-border: transparent;--dialog-panel-bg: linear-gradient( 180deg, rgba(8, 6, 14, .72) 0%, rgba(8, 6, 14, .9) 30%, rgba(8, 6, 14, .96) 100% );--thinking-pill-bg: linear-gradient( 180deg, rgba(8, 6, 14, .72) 0%, rgba(8, 6, 14, .88) 100% );--divider-line: rgba(255, 255, 255, .1);--card-bg: rgba(10, 8, 18, .92);--card-border: rgba(140, 132, 148, .1);--shadow-panel: 0 4px 20px rgba(0, 0, 0, .5);--shadow-soft: 0 2px 6px rgba(0, 0, 0, .3);--text-shadow-dialog: -.5px -.5px .5px #000, .5px -.5px .5px #000, -.5px .5px .5px #000, .5px .5px .5px #000, 1px 1px 1px #000, 1.5px 1.5px 2px #000, 0px 0px 4px rgba(0, 0, 0, .5);--text-shadow-name: -1px -1px 1px #000, 1px -1px 1px #000, -1px 1px 1px #000, 1px 1px 1px #000, 2px 2px 3px #000;--progress-track: rgba(140, 130, 150, .1);--progress-fill: var(--accent-sakura);--radius-sm: 3px;--radius-md: 6px;--radius-lg: 10px;--transition-fast: .15s ease;--transition-normal: .3s ease}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%;height:100%;overflow:hidden}body{color:var(--ink-main);font-family:var(--font-dialog);background:var(--bg-main)}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ca7cfa40;border-radius:999px}.galgame-shell{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-user-select:none;user-select:none;cursor:url(/assets/cursor/quill-32.png) 5 5,default;padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0)}.galgame-shell:before,.galgame-shell:after{content:"";position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 8%,rgba(184,144,80,.58) 50%,transparent 92%);z-index:60;pointer-events:none}.galgame-shell:before{top:0}.galgame-shell:after{bottom:0}.bg-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:var(--bg-main);overflow:hidden}.bg-layer img{width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.1);transition:opacity .3s ease,filter .5s ease}.bg-layer img.bg-fallback{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;opacity:1}.bg-layer .bg-placeholder{width:100%;height:100%;background:var(--bg-main);display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-family:var(--font-ui);font-size:.8rem;letter-spacing:.15em;opacity:.3}.bg-layer:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(to bottom,#00000059,#0000000d 18%,#0000 42%,#0000 58%,#00000059 78%,#000000c7 96%);pointer-events:none}.bg-layer.scene-degraded img{filter:brightness(.42) saturate(.72);transition:filter .6s ease}.bg-layer.scene-degraded:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:#080a1073;pointer-events:none;animation:scene-degraded-breathe 3s ease-in-out infinite}@keyframes scene-degraded-breathe{0%,to{background:#080a1066}50%{background:#080a1094}}.bg-layer.scene-transitioning img{filter:blur(7px) brightness(.6) saturate(.82)}.bg-layer.scene-transitioning:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:#080a104d;pointer-events:none;animation:scene-transition-breathe 2.8s ease-in-out infinite}@keyframes scene-transition-breathe{0%,to{background:#080a1042}50%{background:#080a1070}}@media (prefers-reduced-motion: reduce){.bg-layer.scene-degraded:before{animation:none;background:#080a1080}.bg-layer.scene-transitioning img{filter:blur(6px) brightness(.6) saturate(.82)}.bg-layer.scene-transitioning:before{animation:none;background:#080a105c}}.character-layer{position:absolute;bottom:-14vh;left:50%;transform:translate(-50%);z-index:10;height:100%;display:flex;align-items:flex-end;justify-content:center;pointer-events:none;clip-path:inset(0 0 2% 0);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 3%,#000 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 3%,#000 100%)}.character-layer:after{content:"";position:absolute;bottom:20%;left:50%;transform:translate(-50%);width:60%;height:26px;background:radial-gradient(ellipse 50% 50% at 50% 50%,rgba(0,0,0,.5) 0%,transparent 72%);pointer-events:none}.character-layer img{height:100%;max-width:92vw;object-fit:contain;object-position:bottom center;filter:drop-shadow(0 4px 24px rgba(0,0,0,.6));transition:opacity .3s ease;animation:char-enter .5s ease}.portrait-image-toggle{position:relative;height:100%;max-width:92vw;display:flex;align-items:flex-end;justify-content:center;padding:0;border:0;background:transparent;color:inherit;pointer-events:auto;cursor:pointer}.portrait-image-toggle:disabled{cursor:default}.portrait-image-toggle:focus-visible{outline:2px solid rgba(239,205,132,.9);outline-offset:-8px;border-radius:42% 42% 12% 12%}.portrait-upgrade-transition .portrait-image-toggle img{animation:portrait-upgrade-arrival .76s cubic-bezier(.18,.76,.24,1) both}.portrait-upgrade-texture{position:absolute;top:-2%;right:0;bottom:3%;left:0;pointer-events:none;background:url(/assets/effects/portrait-upgrade-texture.png) center / contain no-repeat;mix-blend-mode:screen;filter:saturate(.72) brightness(.92);animation:portrait-upgrade-texture .86s cubic-bezier(.2,.7,.25,1) both}@keyframes portrait-upgrade-arrival{0%{opacity:.18;transform:scale(.992);filter:blur(4px) brightness(1.16) saturate(.82)}38%{opacity:.92;transform:scale(1.004);filter:blur(.7px) brightness(1.08) saturate(.96)}to{opacity:1;transform:scale(1);filter:drop-shadow(0 4px 24px rgba(0,0,0,.6))}}@keyframes portrait-upgrade-texture{0%{opacity:0;transform:scale(.91) rotate(-2deg)}24%{opacity:.42}62%{opacity:.26}to{opacity:0;transform:scale(1.035) rotate(1.2deg)}}.portrait-upgrade-dock{position:absolute;left:calc(50% + clamp(110px,16vw,250px));top:clamp(150px,30vh,310px);bottom:auto;z-index:34;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:auto}.portrait-upgrade-button{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:8px 15px;border:1px solid rgba(222,188,115,.5);border-radius:999px;background:linear-gradient(135deg,#1e1828ed,#4f3852e0);color:#f3ddb0;box-shadow:0 8px 25px #05040a57,inset 0 1px #ffffff14;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-family:var(--font-ui);font-size:.78rem;letter-spacing:.04em;cursor:pointer;transition:transform .16s ease,border-color .16s ease,filter .16s ease}.portrait-upgrade-button:hover:not(:disabled){transform:translateY(-2px);border-color:#f4d284d9;filter:brightness(1.1)}.portrait-upgrade-button:disabled{cursor:wait;color:#ebdcbeb8;filter:saturate(.7)}.portrait-upgrade-button.retry{border-color:#e1897ca6}.portrait-upgrade-icon{color:#f4cc72;font-size:1rem}.portrait-upgrade-help{color:#ebddd1bd;font:.68rem var(--font-ui)}@keyframes char-enter{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.top-hud{position:absolute;top:0;left:0;right:0;z-index:15;display:flex;align-items:flex-start;justify-content:center;padding:2vh 0 0;pointer-events:none}.chapter-badge{pointer-events:auto;background:transparent;padding:6px 24px;font-family:var(--font-title);font-size:clamp(.86rem,1.7vh,1.05rem);font-weight:400;color:#dcc8a0d9;letter-spacing:.22em;display:inline-flex;align-items:center;gap:14px;text-shadow:0 1px 4px rgba(0,0,0,.8)}.chapter-badge:before,.chapter-badge:after{content:"";width:40px;height:1px}.chapter-badge:before{background:linear-gradient(90deg,transparent,rgba(184,144,80,.6))}.chapter-badge:after{background:linear-gradient(90deg,rgba(184,144,80,.6),transparent)}.chapter-badge .phase-dot{width:5px;height:5px;border-radius:50%;background:var(--accent-sakura);box-shadow:0 0 4px #fe877f99;flex-shrink:0}.hud-right{pointer-events:auto;position:absolute;top:1vh;right:2vw;display:flex;gap:8px;align-items:center;padding:10px 14px}.phase-advance-btn{border:1px solid rgba(254,135,127,.38);background:#08060eb8;color:#fefefe;border-radius:999px;padding:4px 12px;font-family:var(--font-ui);font-size:.72rem;letter-spacing:.04em;cursor:pointer;text-shadow:1px 1px 2px #000;transition:color .2s ease,border-color .2s ease,background .2s ease}.phase-advance-btn:hover:not(:disabled){color:var(--accent-sakura);border-color:#fe877fb3;background:#0c0914d9}.phase-advance-btn:disabled{opacity:.45;cursor:not-allowed}.streaming-indicator{display:flex;align-items:center;gap:5px;background:#0000008c;border-radius:16px;padding:4px 10px 4px 7px;font-family:var(--font-ui);font-size:.66rem;color:var(--ink-silver);text-shadow:1px 1px 2px #000}.gen-status-list{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.gen-item{position:relative;cursor:default}.gen-item .gen-detail{display:none;position:absolute;top:calc(100% + 4px);right:0;flex-direction:column;gap:2px;background:#000000d1;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:6px 10px;font-size:.62rem;color:var(--ink-soft);white-space:nowrap;max-width:90vw;z-index:50}.gen-item .gen-detail:before{content:"";position:absolute;top:-4px;left:0;right:0;height:4px}.gen-item:hover .gen-detail{display:flex}.streaming-dots{display:flex;gap:2px;align-items:center}.streaming-dots span{width:3px;height:3px;border-radius:50%;background:var(--accent-sakura);animation:dot-pulse 1.4s ease infinite}.streaming-dots span:nth-child(2){animation-delay:.2s}.streaming-dots span:nth-child(3){animation-delay:.4s}@keyframes dot-pulse{0%,70%,to{opacity:.25}35%{opacity:1}}.juben-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:32px 24px;animation:fade-in .3s ease}.juben-overlay-inner{position:relative;width:100%;max-width:min(560px,84vw);min-height:300px;background:radial-gradient(circle at 50% 22%,rgba(254,135,127,.1) 0%,transparent 24%),radial-gradient(ellipse at 50% 26%,transparent 0%,rgba(10,8,18,.4) 60%),url(/assets/loading/weaving-story.png) center 18px / auto 190px no-repeat,var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-lg);padding:210px clamp(28px,3vw,40px) clamp(26px,3.5vh,38px);box-shadow:var(--shadow-panel);overflow:hidden;text-align:center}.juben-overlay-inner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url(/assets/ui/dark-texture-2048.png) repeat;opacity:.06;pointer-events:none;mix-blend-mode:overlay}.juben-overlay-inner>*{position:relative;z-index:1}.juben-phase-label{font-family:var(--font-title);font-size:clamp(1rem,1.8vh,1.5rem);color:var(--accent-sakura);letter-spacing:.18em;margin-bottom:10px;animation:juben-breathe 2.4s ease-in-out infinite}@keyframes juben-breathe{0%,to{opacity:.72}50%{opacity:1}}.juben-phase-step{font-family:var(--font-ui);font-size:clamp(.82rem,1.2vh,1rem);color:var(--ink-soft);margin-bottom:18px}.juben-progress-track{width:100%;height:clamp(4px,.7vh,7px);border-radius:999px;background:var(--progress-track);overflow:hidden;margin-bottom:10px;box-shadow:inset 0 0 0 1px #fe877f14}.juben-progress-fill{height:100%;background:var(--accent-sakura);border-radius:999px;transition:width .4s ease;box-shadow:0 0 8px #fe877f80,0 0 2px #fe877fcc}.juben-progress-nums{display:flex;justify-content:space-between;font-family:var(--font-ui);font-size:clamp(.78rem,1.1vh,.92rem);color:var(--ink-soft);margin-bottom:12px}.dialog-box{position:absolute;bottom:0;left:0;right:0;z-index:30;max-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:calc(clamp(52px,7vh,76px) + env(safe-area-inset-bottom,4px));background:transparent;animation:dialog-rise .3s ease}.dialog-phase-advance-btn{position:absolute;right:2.2vw;bottom:16vh;z-index:36;border:1px solid rgba(254,135,127,.45);background:#08060ebd;color:#fefefe;border-radius:999px;padding:6px 14px;font-family:var(--font-ui);font-size:.76rem;letter-spacing:.04em;cursor:pointer;text-shadow:1px 1px 2px #000;transition:color .2s ease,border-color .2s ease,background .2s ease}.dialog-phase-advance-btn:hover:not(:disabled){color:var(--accent-sakura);border-color:#fe877fbf;background:#0c0914e0}.dialog-phase-advance-btn:disabled{opacity:.45;cursor:not-allowed}@keyframes dialog-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.dialog-inner{position:relative;z-index:3;width:min(1200px,92vw);margin:0 auto;padding:clamp(14px,2vh,22px) clamp(28px,4vw,80px) clamp(16px,2.5vh,40px);max-height:calc(60vh - clamp(52px,7vh,76px));overflow-y:auto;overflow-x:hidden;color:var(--ink-main);text-shadow:var(--text-shadow-dialog);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent;background:var(--dialog-panel-bg);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.dialog-inner:before{content:"";position:absolute;top:0;left:8%;right:8%;height:clamp(14px,2vh,24px);background:url(/assets/divider/dialogue-divider-gold.png) center / contain no-repeat;opacity:.72;pointer-events:none;transform:translateY(-50%)}.speaker-name-tag{display:inline-flex;align-items:center;gap:12px;background:none;border:none;border-radius:0;padding:4px 0;margin-bottom:.6vh;margin-left:.5vw;font-family:var(--font-name);font-size:2.8vh;color:var(--ink-name);letter-spacing:.12em;text-shadow:var(--text-shadow-name);position:relative}.speaker-name-tag:before{content:"";width:20px;height:1px;background:linear-gradient(90deg,transparent,rgba(184,144,80,.85));flex-shrink:0}.speaker-name-tag:after{content:"";flex:0 0 56px;height:1px;background:linear-gradient(90deg,rgba(184,144,80,.85),transparent)}.speaker-name-tag .name-icon{display:none}.speaker-name-tag.narrator{background:none;border-color:transparent;color:var(--accent-sakura2);font-style:italic}.dialog-text{font-family:var(--font-dialog);font-size:clamp(14px,2.2vh,22px);line-height:1.7;color:var(--ink-main);letter-spacing:.04em;cursor:pointer;padding:0 1vw;text-shadow:var(--text-shadow-dialog);word-break:break-word;overflow-wrap:break-word}.dialog-text .cursor{display:inline-block;width:2px;height:1em;background:#fff;margin-left:2px;vertical-align:middle;animation:blink 1s infinite}.md-root{display:inline}.md-root .md-p{display:block;margin:0;white-space:pre-wrap}.md-root .md-p+.md-p{margin-top:.5em}.md-root strong,.md-root b{color:var(--accent-sakura2, #ffd6ec);font-weight:700}.md-root em,.md-root i{font-style:italic;color:var(--accent-sakura2, #ffd6ec)}.md-root .md-ul,.md-root .md-ol{display:block;margin:.3em 0;padding-left:1.5em}.md-root .md-li{margin:.15em 0}.md-root .md-h{display:block;font-weight:700;margin:.4em 0 .2em}.md-root .md-h1{font-size:1.18em}.md-root .md-h2{font-size:1.1em}.md-root .md-h3{font-size:1.04em}.md-root .md-h4{font-size:1em}.md-root .md-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;padding:.05em .35em;border-radius:3px;background:#ffffff1a;color:var(--accent-sakura2, #ffd6ec)}.md-root .md-pre{display:block;margin:.4em 0;padding:.5em .7em;border-radius:4px;background:#00000040;white-space:pre-wrap;word-break:break-word}.md-root .md-pre .md-code{background:transparent;padding:0}.md-root .md-quote{display:block;margin:.3em 0;padding-left:.8em;border-left:2px solid rgba(255,255,255,.3);opacity:.92}.md-root .md-hr{border:0;border-top:1px solid rgba(255,255,255,.2);margin:.6em 0}.md-root .md-link{color:var(--accent-sakura2, #ffd6ec);text-decoration:underline}.history-item-body{white-space:pre-wrap;word-break:break-word}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.dialog-advance-hint{position:absolute;right:4vw;bottom:2vh;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--ink-main);opacity:.5;animation:ctc-pulse 1.4s ease infinite;filter:drop-shadow(0 0 2px rgba(0,0,0,.8))}.phase-confirm-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:60;background:#0000008f;display:flex;align-items:center;justify-content:center;animation:fade-in .2s ease}.phase-confirm-modal{position:relative;width:min(620px,88vw);background:#0a0812f2;border:1px solid rgba(254,135,127,.28);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel),0 0 0 1px #fe877f2e,0 0 24px #fe877f1f;padding:clamp(18px,2.4vh,28px) clamp(16px,2vw,32px) clamp(14px,2vh,24px);transform-origin:center;animation:phase-confirm-rise .22s cubic-bezier(.2,.8,.3,1.05)}.phase-confirm-modal:before{content:"";position:absolute;top:0;left:16%;right:16%;height:1px;background:linear-gradient(90deg,transparent,var(--accent-sakura),transparent);opacity:.7}@keyframes phase-confirm-rise{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.phase-confirm-title{font-family:var(--font-name);font-size:clamp(1rem,1.6vh,1.4rem);color:var(--ink-name);letter-spacing:.04em;margin-bottom:12px;text-shadow:var(--text-shadow-name)}.phase-confirm-desc{font-family:var(--font-dialog);font-size:clamp(.86rem,1.3vh,1.05rem);line-height:1.7;color:var(--ink-main);text-shadow:var(--text-shadow-dialog)}.phase-confirm-actions{margin-top:18px;display:flex;justify-content:flex-end;gap:12px}.phase-confirm-cancel,.phase-confirm-ok{border-radius:var(--radius-md);padding:8px 18px;font-family:var(--font-ui);font-size:clamp(.78rem,1.1vh,.95rem);cursor:pointer;transition:var(--transition-fast)}.phase-confirm-cancel{border:1px solid rgba(255,255,255,.14);background:transparent;color:var(--ink-silver)}.phase-confirm-cancel:hover{color:var(--ink-name)}.phase-confirm-ok{border:1px solid rgba(254,135,127,.45);background:#fe877f24;color:var(--ink-name)}.phase-confirm-ok:hover:not(:disabled){color:var(--accent-sakura);border-color:#fe877fb8;background:#fe877f33;box-shadow:0 0 0 1px #fe877f73,0 2px 10px #fe877f2e}.phase-confirm-ok:disabled{opacity:.45;cursor:not-allowed}@keyframes ctc-pulse{0%,to{opacity:.5;transform:translateY(0)}50%{opacity:.9;transform:translateY(2px)}}.juben-guide-badge{display:inline-flex;align-items:center;gap:5px;background:#645a7840;border:1px solid rgba(140,130,160,.15);border-radius:var(--radius-sm);padding:2px 8px;font-family:var(--font-ui);font-size:.68rem;color:#c8b8e8;margin-bottom:6px;text-shadow:1px 1px 2px #000}.dialog-options{display:flex;flex-direction:column;align-items:stretch;gap:clamp(.9vh,1.4vh,1.7vh);margin-top:clamp(10px,1.8vh,20px);padding-top:clamp(10px,1.8vh,20px);border-top:1px solid var(--divider-line)}.dialog-options>*{flex:0 0 auto}.option-btn{width:100%;text-align:center;background:#0000;background-image:linear-gradient(90deg,#fff0,#ffffff0a 15%,#ffffff0f,#ffffff0a 85%,#fff0);border:none;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08);padding:1.8vh 3vw;font-family:var(--font-dialog);font-size:2.4vh;font-weight:700;color:#fefefe;cursor:pointer;transition:color .25s ease;text-shadow:1px 1px 2px rgba(0,0,0,.6),0 0 8px rgba(0,0,0,.3);letter-spacing:.05em}.option-btn:hover{color:var(--accent-sakura)}.option-btn:active{color:#ff6a60}.option-btn:disabled{opacity:.4;cursor:not-allowed}.option-advance-btn{width:100%;text-align:center;border:1px solid rgba(254,135,127,.52);background:linear-gradient(180deg,#fe877f2e,#fe877f14),#08060ed1;box-shadow:0 0 0 1px #ffffff08 inset,0 10px 24px #0000003d;border-radius:18px;padding:1.5vh 2.2vw;font-family:var(--font-dialog);font-size:2.05vh;font-weight:700;line-height:1.45;color:#fff6f4;cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease,color .2s ease;text-shadow:1px 1px 2px rgba(0,0,0,.7),0 0 10px rgba(254,135,127,.14)}.option-advance-btn:hover:not(:disabled){transform:translateY(-1px);border-color:#fe877fcc;background:linear-gradient(180deg,#fe877f3d,#fe877f1c),#0c0914e6;color:#fff}.option-advance-btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.persona-direction-card{width:100%;text-align:left;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);padding:1.4vh 1.8vw;font-family:var(--font-dialog);font-size:2.05vh;line-height:1.5;color:var(--ink-silver);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast),transform var(--transition-fast);text-shadow:var(--text-shadow-dialog);opacity:0;animation:persona-card-in var(--transition-normal) forwards}.persona-direction-card:hover:not(:disabled),.persona-direction-card:focus-visible{outline:none;border-color:var(--accent-sakura);color:var(--ink-main);transform:translateY(-1px)}.persona-direction-card:disabled{opacity:.4;cursor:not-allowed;transform:none}@keyframes persona-card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.persona-direction-card{animation:none;opacity:1}.persona-direction-card:hover:not(:disabled){transform:none}}.option-custom-input{width:100%;display:flex;align-items:center;gap:8px;margin-top:1vh}.option-custom-input textarea{flex:1;resize:none;min-height:36px;max-height:36px;border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.1);background:#00000080;color:var(--ink-main);font-family:var(--font-dialog);font-size:1.8vh;line-height:1.5;padding:6px 12px;outline:none;text-shadow:1px 1px 2px #000;transition:border-color var(--transition-fast)}.option-custom-input textarea:focus{border-color:#fe877f59}.option-custom-input textarea::placeholder{color:var(--ink-soft)}.option-custom-send{border:1px solid rgba(254,135,127,.25);border-radius:var(--radius-md);background:#fe877f1f;color:var(--ink-silver);font-family:var(--font-ui);font-size:.82rem;padding:6px 14px;cursor:pointer;transition:color .2s ease;white-space:nowrap}.option-custom-send:hover:not(:disabled){color:var(--accent-sakura)}.option-custom-send:disabled{opacity:.35;cursor:not-allowed}.control-bar{position:absolute;bottom:0;left:0;right:0;z-index:40;height:clamp(38px,5vh,56px);background:transparent;display:flex;align-items:center;justify-content:center;padding:0 clamp(12px,3vw,56px);padding-bottom:env(safe-area-inset-bottom,4px);gap:clamp(2vw,3vw,48px);transform:translateY(0);opacity:.9;transition:transform .3s ease,opacity .3s ease}@media (hover: hover) and (pointer: fine){.control-bar{transform:translateY(0);opacity:.7}.control-bar:hover{opacity:1}}.ctrl-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--ink-soft);cursor:pointer;padding:clamp(4px,.6vh,8px) clamp(8px,1.2vw,18px);transition:transform var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast),color var(--transition-fast),background var(--transition-fast);font-family:var(--font-ui);min-width:0;opacity:.85}.ctrl-btn:hover{opacity:1;color:var(--ink-name);background:#fe877f0f;box-shadow:0 0 0 1px #fe877f66,0 2px 8px #fe877f26}.ctrl-btn:active:not(:disabled){transform:scale(.94);transition:transform .1s ease}.ctrl-btn:disabled{opacity:.3;cursor:not-allowed}.ctrl-btn.active{color:var(--accent-sakura);opacity:1}.ctrl-btn svg{width:clamp(14px,1.6vh,22px);height:clamp(14px,1.6vh,22px);flex-shrink:0;filter:drop-shadow(1px 1px 1px rgba(0,0,0,.6))}.ctrl-btn .ctrl-label{font-size:clamp(.6rem,.85vh,.78rem);line-height:1;letter-spacing:.1em;text-transform:uppercase;text-shadow:1px 1px 1px #000}.ctrl-btn.send-btn{color:var(--accent-sakura)}.ctrl-btn.send-btn:hover{color:var(--ink-name)}.input-panel{position:absolute;bottom:0;left:0;right:0;z-index:45;background:#000000eb;border-top:1px solid rgba(255,255,255,.05);padding:12px 14px;display:flex;flex-direction:column;gap:8px;animation:slide-up .2s ease}@keyframes slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.input-panel textarea{width:100%;background:#14101ecc;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-md);color:var(--ink-main);font-family:var(--font-dialog);font-size:.92rem;line-height:1.6;padding:8px 10px;resize:none;min-height:70px;max-height:160px;outline:none;transition:border-color var(--transition-fast)}.input-panel textarea:focus{border-color:#fe877f40}.input-panel textarea::placeholder{color:var(--ink-soft)}.input-actions{display:flex;gap:6px;justify-content:flex-end}.btn-send{background:var(--accent-sakura);border:none;border-radius:var(--radius-md);color:#fff;font-family:var(--font-ui);font-size:.82rem;padding:6px 16px;cursor:pointer;transition:opacity var(--transition-fast)}.btn-send:hover:not(:disabled){opacity:.82}.btn-send:disabled{opacity:.35;cursor:not-allowed}.btn-cancel{background:transparent;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-md);color:var(--ink-soft);font-family:var(--font-ui);font-size:.82rem;padding:6px 12px;cursor:pointer;transition:color var(--transition-fast)}.btn-cancel:hover{color:var(--ink-silver)}.drawer-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:49;background:#0009;animation:fade-in .2s ease}.drawer{position:absolute;z-index:50;background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--shadow-panel);overflow:hidden;display:flex;flex-direction:column}.drawer.drawer-left{top:0;bottom:0;left:0;width:min(420px,90vw);border-radius:0 var(--radius-lg) var(--radius-lg) 0;animation:slide-from-left .25s ease}@keyframes slide-from-left{0%{transform:translate(-100%)}to{transform:translate(0)}}.drawer.drawer-right{top:0;bottom:0;right:0;width:min(480px,90vw);border-radius:var(--radius-lg) 0 0 var(--radius-lg);animation:slide-from-right .25s ease}@keyframes slide-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--card-border);flex-shrink:0}.drawer-title{font-family:var(--font-name);font-size:.92rem;color:var(--ink-silver);letter-spacing:.05em}.drawer-close{background:transparent;border:1px solid var(--card-border);border-radius:var(--radius-sm);color:var(--ink-soft);padding:3px 8px;cursor:pointer;font-family:var(--font-ui);font-size:.75rem;transition:color var(--transition-fast)}.drawer-close:hover{color:var(--ink-silver)}.drawer-body{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin;scrollbar-color:rgba(202,124,250,.45) transparent}.drawer-body::-webkit-scrollbar{width:6px}.drawer-body::-webkit-scrollbar-track{background:transparent}.drawer-body::-webkit-scrollbar-thumb{background:#ca7cfa59;border-radius:3px;transition:background .15s ease}.drawer-body::-webkit-scrollbar-thumb:hover{background:#ca7cfaa6}.session-item{width:100%;text-align:left;background:#1210188c;border:1px solid var(--card-border);border-radius:var(--radius-md);padding:8px 10px;cursor:pointer;transition:border-color var(--transition-fast);display:flex;flex-direction:column;gap:2px}.session-item:hover{border-color:#fe877f33}.session-item.active{border-color:#fe877f59;background:#fe877f0a}.session-name{font-family:var(--font-ui);font-size:.82rem;color:var(--ink-silver)}.session-meta{font-family:var(--font-ui);font-size:.68rem;color:var(--ink-soft)}.session-create-btn{width:100%;background:transparent;border:1px dashed rgba(254,135,127,.22);border-radius:var(--radius-md);padding:8px 10px;color:var(--accent-sakura);font-family:var(--font-ui);font-size:.82rem;cursor:pointer;transition:border-color var(--transition-fast);text-align:center;letter-spacing:.03em}.session-create-btn:hover{border-color:#fe877f66}.history-item{border:none;border-radius:0;background:transparent;padding:8px 12px;display:flex;gap:16px;align-items:flex-start;transition:color .2s ease;cursor:default;border-bottom:1px solid rgba(255,255,255,.04);position:relative}.history-item:hover{background:#ca7cfa0a}.history-item:hover pre,.history-item:hover .kind-tag{color:var(--accent-sakura2)}.history-item-head{display:flex;flex-direction:column;align-items:flex-end;flex:0 0 80px;gap:2px}.history-item-head .kind-tag{font-family:var(--font-ui);font-size:.78rem;font-weight:600;padding:0;border-radius:0;border:none;color:#fff;transition:color .2s ease;text-shadow:1px 1px 2px rgba(0,0,0,.5);text-align:right}.history-item-head .turn-num{font-family:var(--font-ui);font-size:.62rem;color:var(--ink-soft)}.history-item pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--font-dialog);font-size:.88rem;color:#fff;line-height:1.6;flex:1;text-shadow:1px 1px 2px rgba(0,0,0,.5);transition:color .2s ease}.history-item.user .kind-tag{color:var(--accent-sakura)}.history-item.narrator .kind-tag{color:#c8b8e8}.history-item.npc .kind-tag{color:#90b8d8}.history-item.tool .kind-tag{color:#90b070}.history-item.image .kind-tag{color:var(--accent-gold)}.history-item.system .kind-tag{color:var(--ink-soft)}.history-item.error .kind-tag{color:#d08080}.npc-card{border:1px solid var(--card-border);border-radius:var(--radius-md);padding:8px;background:#0e0c148c;display:flex;gap:8px;align-items:flex-start}.npc-card.present{border-color:#fe877f33}.npc-avatar{width:44px;height:44px;border-radius:var(--radius-md);object-fit:cover;object-position:top;flex-shrink:0;background:#18142299}.npc-avatar-placeholder{width:44px;height:44px;border-radius:var(--radius-md);background:#18142299;border:1px solid var(--card-border);display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:1rem;flex-shrink:0}.npc-info{flex:1;min-width:0}.npc-name{font-family:var(--font-name);font-size:.85rem;color:var(--ink-silver);margin-bottom:2px}.npc-mood{font-family:var(--font-ui);font-size:.68rem;color:var(--ink-soft)}.npc-affinity-bar{height:2px;border-radius:999px;background:var(--progress-track);overflow:hidden;margin-top:5px}.npc-affinity-fill{height:100%;background:var(--accent-sakura);border-radius:999px}.npc-panel{position:absolute;top:30vh;right:1.2vw;z-index:16;width:clamp(150px,15vw,210px);max-height:56vh;display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--card-border);border-radius:var(--radius-md);background:#0a08126b;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 6px 20px #00000059;animation:fade-in .4s ease;opacity:.82;transition:opacity .25s ease,top .35s ease}.npc-panel:hover{opacity:1}.npc-panel.gen-active{top:38vh}.npc-panel.collapsed{width:auto;padding:0;border:none;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.npc-panel-head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 4px;border-bottom:1px solid rgba(255,255,255,.06)}.npc-panel-title{font-family:var(--font-name);font-size:.74rem;color:var(--ink-soft);letter-spacing:.06em}.npc-panel-collapse{background:transparent;border:none;color:var(--ink-soft);font-size:1rem;line-height:1;cursor:pointer;padding:0 4px;transition:color .2s ease}.npc-panel-collapse:hover{color:var(--ink-name)}.npc-panel-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}.npc-panel-list::-webkit-scrollbar{width:5px}.npc-panel-list::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:3px}.npc-panel-handle{display:flex;align-items:center;gap:4px;padding:6px 10px;border:1px solid var(--card-border);border-radius:999px;background:#0a08128c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:var(--ink-soft);cursor:pointer;opacity:.7;transition:opacity .2s ease,color .2s ease}.npc-panel-handle:hover{opacity:1;color:var(--ink-name)}.npc-panel-handle svg{width:16px;height:16px}.npc-panel-handle-count{font-family:var(--font-ui);font-size:.7rem;letter-spacing:.02em}.npc-panel .npc-card{padding:6px;background:#0e0c1480}.npc-panel .npc-avatar,.npc-panel .npc-avatar-placeholder{width:36px;height:36px}.npc-panel .npc-name{font-size:.78rem}.portrait-auto-toggle{width:100%;display:flex;align-items:center;gap:8px;padding:8px 7px;border:1px solid rgba(184,165,207,.2);border-radius:var(--radius-md);background:#0b0a1294;color:var(--ink-soft);text-align:left;cursor:pointer}.portrait-auto-toggle.enabled{border-color:#e2c2796b;background:#2f2530ad}.portrait-auto-toggle:disabled{cursor:wait;opacity:.66}.portrait-auto-switch{width:29px;height:17px;flex:0 0 auto;padding:2px;border-radius:999px;background:#756c8785;transition:background .18s ease}.portrait-auto-switch>span{display:block;width:13px;height:13px;border-radius:50%;background:#d9d3df;box-shadow:0 1px 5px #0006;transition:transform .18s ease}.portrait-auto-toggle.enabled .portrait-auto-switch{background:#c19b51d1}.portrait-auto-toggle.enabled .portrait-auto-switch>span{transform:translate(12px);background:#fff2ce}.portrait-auto-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.portrait-auto-copy strong{color:var(--ink-silver);font:.68rem var(--font-ui);font-weight:600}.portrait-auto-copy small{color:var(--ink-soft);font:.58rem var(--font-ui);line-height:1.25}@media (max-width: 600px){.character-layer{clip-path:inset(0 0 36% 0)}.npc-panel{width:97.6vw;max-width:100%;top:auto;bottom:14vh;right:1.2vw;max-height:18vh;flex-direction:row;overflow-x:auto;overflow-y:hidden}.npc-panel-list{flex-direction:row;overflow-x:auto;overflow-y:hidden}.portrait-upgrade-dock{left:auto;right:12px;top:clamp(118px,22vh,190px);bottom:auto}}@media (prefers-reduced-motion: reduce){.npc-panel{animation:none!important}.portrait-upgrade-transition .portrait-image-toggle img{animation:portrait-upgrade-reduced .12s linear both!important}.portrait-upgrade-texture{display:none}.portrait-auto-switch,.portrait-auto-switch>span,.portrait-upgrade-button{transition:none}}@keyframes portrait-upgrade-reduced{0%{opacity:.72}to{opacity:1}}.error-toast{position:absolute;top:50px;left:12px;right:12px;z-index:60;background:#944444e0;border:1px solid rgba(180,80,80,.25);border-radius:var(--radius-md);padding:8px 12px;color:#f0d0d0;font-family:var(--font-ui);font-size:.8rem;display:flex;align-items:center;justify-content:space-between;gap:8px;animation:fade-in .2s ease}.error-toast-close{background:transparent;border:none;color:#f0d0d0;font-size:1rem;cursor:pointer;padding:0 2px;opacity:.6;flex-shrink:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.welcome-screen{position:absolute;top:0;right:0;bottom:0;left:0;z-index:25;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;background:radial-gradient(ellipse 60% 30% at 50% 78%,rgba(254,200,120,.07) 0%,transparent 70%),linear-gradient(to bottom,#00000080,#0000001a 28%,#00000047 68%,#000000c7),radial-gradient(ellipse 70% 90% at 50% 50%,transparent 45%,rgba(0,0,0,.55) 100%),url(/assets/bg/welcome-hero.png) center/cover no-repeat,var(--bg-main);animation:fade-in .6s ease;text-align:center;padding:14vh 24px 18vh}.welcome-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url(/assets/ui/dark-texture-2048.png) repeat;opacity:.1;pointer-events:none;mix-blend-mode:overlay}.welcome-screen>*{position:relative;z-index:1}.welcome-title{font-family:var(--font-title);font-size:clamp(2rem,7vh,5rem);color:var(--ink-name);letter-spacing:.22em;margin-bottom:2.4vh;text-shadow:var(--text-shadow-name);animation:welcome-title-in 1s ease}.welcome-title-logo{width:clamp(360px,52vw,780px);height:auto;margin:0 auto 1.6vh;filter:drop-shadow(0 6px 18px rgba(0,0,0,.65)) drop-shadow(0 0 28px rgba(254,200,120,.1));animation:welcome-title-in 1s ease;-webkit-user-select:none;user-select:none;pointer-events:none}.welcome-ornament{display:flex;align-items:center;justify-content:center;gap:14px;margin:0 auto 1.8vh;width:clamp(220px,28vw,420px);color:#c8b284c7;font-family:var(--font-title);font-size:.78rem;letter-spacing:.42em;text-shadow:0 1px 4px rgba(0,0,0,.7);animation:fade-in 1.4s ease;-webkit-user-select:none;user-select:none}.welcome-ornament:before,.welcome-ornament:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(184,144,80,.55),transparent)}@keyframes welcome-title-in{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.welcome-subtitle{font-family:var(--font-dialog);font-size:clamp(.78rem,1.5vh,.95rem);color:#dcc8a0c7;line-height:1.85;letter-spacing:.1em;max-width:min(640px,60vw);margin:0 auto;text-shadow:1px 1px 3px rgba(0,0,0,.8);animation:fade-in 1.2s ease}.welcome-start-btn{margin-top:auto;border:1px solid rgba(184,144,80,.65);background:linear-gradient(180deg,#b8905038,#7858301a),#140e08c7;box-shadow:0 10px 32px #0000008c,0 0 0 1px #b890502e,inset 0 1px #ffdca02e;border-radius:999px;padding:clamp(14px,1.8vh,22px) clamp(48px,6vw,84px);font-family:var(--font-name);font-size:clamp(1.15rem,3vh,1.75rem);color:#f5e6c8f5;cursor:pointer;letter-spacing:.16em;text-shadow:1px 1px 2px rgba(0,0,0,.6);transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease;animation:welcome-btn-in 1.4s ease}@keyframes welcome-btn-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.welcome-start-btn:hover{transform:translateY(-2px) scale(1.02);border-color:#dcb46ee6;box-shadow:0 14px 40px #b890504d,0 0 0 1px #dcb46e59,inset 0 1px #ffe6b44d}.welcome-start-btn:active{transform:translateY(0) scale(1)}.welcome-start-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.welcome-or-divider{display:none}.welcome-sessions-btn{margin-top:1.2vh;border:none;background:transparent;padding:4px 10px;font-family:var(--font-ui);font-size:.82rem;color:#dcc8a08c;cursor:pointer;letter-spacing:.08em;transition:color .2s ease;animation:fade-in 1.8s ease}.welcome-sessions-btn:hover{color:#f0dcb4f2;text-decoration:underline dotted 1px;text-underline-offset:4px}.login-form{display:flex;flex-direction:column;gap:clamp(12px,2vh,20px);width:min(360px,82vw);margin-top:clamp(20px,4vh,40px);animation:fade-in 1.4s ease}.login-field{display:flex;flex-direction:column;gap:6px;text-align:left}.login-label{font-family:var(--font-ui);font-size:.82rem;letter-spacing:.1em;color:#dcc8a0b8}.login-input{border:1px solid rgba(184,144,80,.45);background:#140e08b3;border-radius:10px;padding:12px 14px;font-family:var(--font-ui);font-size:1rem;color:#f5e6c8f5;transition:border-color .2s ease,box-shadow .2s ease}.login-input:focus{outline:none;border-color:#dcb46ee6;box-shadow:0 0 0 2px #b8905040}.login-input:disabled{opacity:.6;cursor:not-allowed}.login-error{font-family:var(--font-ui);font-size:.85rem;color:#e88c78f2;letter-spacing:.04em;text-align:center}.login-view .welcome-start-btn{margin-top:4px;width:100%}.auth-badge{display:inline-flex;align-items:center;gap:8px;padding:4px 6px 4px 12px;border-radius:999px;background:#140e088c;border:1px solid rgba(184,144,80,.35)}.auth-username{font-family:var(--font-ui);font-size:.8rem;letter-spacing:.06em;color:#e6d6b4e6;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-logout-btn{border:1px solid rgba(184,144,80,.45);background:#281c1099;border-radius:999px;padding:3px 12px;font-family:var(--font-ui);font-size:.76rem;color:#f0dcb4e6;cursor:pointer;letter-spacing:.08em;transition:border-color .2s ease,color .2s ease}.auth-logout-btn:hover{border-color:#dcb46ed9;color:#faebcd}.welcome-screen .welcome-audio-status{position:absolute;bottom:3vh;right:3vw;margin:0;font-size:11px;opacity:.7;z-index:2}.welcome-screen .welcome-audio-status:hover{opacity:1}.global-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:55;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000000d9;animation:fade-in .2s ease}.loading-spinner{width:28px;height:28px;border:2px solid rgba(254,135,127,.15);border-top-color:var(--accent-sakura);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:12px}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:var(--font-ui);font-size:.78rem;color:var(--ink-soft);text-shadow:1px 1px 2px #000}.stream-waiting-overlay{position:absolute;bottom:0;left:0;right:0;z-index:29;height:28vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(12px,1.6vh,22px);animation:fade-in .4s ease}.stream-waiting-dots{display:flex;gap:clamp(8px,1vw,14px);align-items:center}.stream-waiting-dots span{width:clamp(7px,.9vh,11px);height:clamp(7px,.9vh,11px);border-radius:50%;background:var(--accent-sakura);animation:dot-pulse 1.4s ease infinite}.stream-waiting-dots span:nth-child(2){animation-delay:.25s}.stream-waiting-dots span:nth-child(3){animation-delay:.5s}.stream-waiting-text{font-family:var(--font-title);font-size:clamp(.95rem,2.2vh,1.35rem);color:var(--ink-soft);text-shadow:var(--text-shadow-dialog);letter-spacing:.16em}.thinking-inline{position:absolute;left:50%;transform:translate(-50%);bottom:calc(clamp(52px,7vh,76px) + env(safe-area-inset-bottom,4px) + clamp(10px,1.8vh,22px));z-index:31;width:min(1200px,92vw);display:inline-flex;align-items:center;gap:12px;padding:clamp(9px,1.5vh,15px) clamp(20px,3.2vw,48px);border-radius:var(--radius-lg);background:var(--thinking-pill-bg);box-shadow:var(--shadow-soft);pointer-events:none;animation:fade-in var(--transition-normal)}.thinking-inline-quill{width:3px;height:1.35em;border-radius:999px;background:var(--accent-sakura);opacity:.6;animation:thinking-quill-breathe 1.8s ease-in-out infinite}.thinking-inline-text{font-family:var(--font-title);font-size:clamp(1.1rem,2.7vh,1.55rem);color:var(--ink-silver);text-shadow:var(--text-shadow-dialog);letter-spacing:.12em}@keyframes thinking-quill-breathe{0%,to{opacity:.18}50%{opacity:.6}}@media (prefers-reduced-motion: reduce){.thinking-inline{animation:none}.thinking-inline-quill{animation:none;opacity:.4}}.thinking-inline.is-long .thinking-inline-text{color:var(--ink-main)}.thinking-inline.is-long .thinking-inline-quill{background:var(--accent-sakura);animation-duration:1.1s}@media (prefers-reduced-motion: reduce){.thinking-inline.is-long .thinking-inline-quill{animation:none;opacity:.55}}.thinking-inline-dots{display:inline-flex;align-items:center;gap:clamp(4px,.5vw,6px)}.thinking-inline-dots span{width:clamp(5px,.7vh,7px);height:clamp(5px,.7vh,7px);border-radius:50%;background:var(--accent-sakura);opacity:.85;animation:dot-pulse 1.4s ease infinite}.thinking-inline-dots span:nth-child(2){animation-delay:.2s}.thinking-inline-dots span:nth-child(3){animation-delay:.4s}.thinking-inline.is-long .thinking-inline-dots span{animation-duration:1.1s}@media (prefers-reduced-motion: reduce){.thinking-inline-dots span{animation:none;opacity:.55}}.turn-wrapup{position:absolute;top:clamp(64px,12vh,120px);left:50%;transform:translate(-50%);z-index:32;display:inline-flex;align-items:center;gap:clamp(8px,1vw,12px);padding:clamp(7px,1.2vh,12px) clamp(16px,2.6vw,34px);border-radius:var(--radius-lg);background:var(--thinking-pill-bg);box-shadow:var(--shadow-soft);pointer-events:none;animation:fade-in var(--transition-normal),turn-wrapup-breathe 2.6s ease-in-out infinite}.turn-wrapup-dots{display:inline-flex;align-items:center;gap:clamp(4px,.5vw,6px)}.turn-wrapup-dots span{width:clamp(5px,.7vh,7px);height:clamp(5px,.7vh,7px);border-radius:50%;background:var(--accent-sakura);opacity:.85;animation:dot-pulse 1.4s ease infinite}.turn-wrapup-dots span:nth-child(2){animation-delay:.2s}.turn-wrapup-dots span:nth-child(3){animation-delay:.4s}.turn-wrapup-text{font-family:var(--font-title);font-size:clamp(.92rem,2.1vh,1.2rem);color:var(--ink-silver);text-shadow:var(--text-shadow-dialog);letter-spacing:.1em}@keyframes turn-wrapup-breathe{0%,to{opacity:.72}50%{opacity:1}}@media (prefers-reduced-motion: reduce){.turn-wrapup{animation:fade-in var(--transition-normal);opacity:.9}.turn-wrapup-dots span{animation:none;opacity:.55}}.dialog-click-to-continue{position:absolute;right:3vw;bottom:1.5vh;display:flex;align-items:center;gap:4px;font-family:var(--font-ui);font-size:.68rem;color:var(--ink-soft);opacity:.7;animation:ctc-pulse 1.4s ease infinite;text-shadow:1px 1px 2px #000;pointer-events:none}.dialog-click-to-continue:after{content:"";display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--ink-soft);margin-left:2px}.dialog-writing-hint{position:absolute;right:3vw;bottom:1.5vh;display:flex;align-items:center;gap:4px;font-family:var(--font-ui);font-size:.68rem;color:var(--ink-soft);opacity:.75;animation:ctc-pulse 1s ease infinite;text-shadow:1px 1px 2px #000;pointer-events:none}@media (prefers-reduced-motion: reduce){.dialog-writing-hint{animation:none;opacity:.6}}.dialog-options-arriving{position:absolute;right:3vw;bottom:1.5vh;display:flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:.68rem;color:var(--accent-sakura);opacity:.9;text-shadow:1px 1px 2px #000;pointer-events:none}.options-arriving-dots{display:flex;gap:4px;align-items:center}.options-arriving-dots span{width:5px;height:5px;border-radius:50%;background:var(--accent-sakura);animation:dot-pulse 1.4s ease infinite}.options-arriving-dots span:nth-child(2){animation-delay:.2s}.options-arriving-dots span:nth-child(3){animation-delay:.4s}@media (prefers-reduced-motion: reduce){.options-arriving-dots span{animation:none;opacity:.7}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;gap:8px}.empty-state-icon{font-size:1.8rem;opacity:.3;margin-bottom:4px}.empty-state-text{font-family:var(--font-ui);font-size:.82rem;color:var(--ink-soft);text-align:center;line-height:1.6}@media (max-width: 600px){.dialog-options{gap:1.2vh}.option-btn{font-size:2vh;padding:1.5vh 4vw}.option-advance-btn{font-size:1.8vh;padding:1.2vh 4vw}.dialog-inner{padding-left:clamp(20px,5vw,40px);padding-right:clamp(20px,5vw,40px)}.control-bar{gap:3vw}.ctrl-btn svg{width:16px;height:16px}.ctrl-btn .ctrl-label{font-size:.48rem}.drawer.drawer-left{width:min(300px,88vw)}.drawer.drawer-right{width:min(380px,95vw)}.input-panel{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}}@media (max-height: 760px){.dialog-options{gap:1vh;margin-top:1vh;padding-top:1vh}.option-btn{padding:1.1vh 3vw;font-size:2.05vh}.option-advance-btn{padding:1vh 2.2vw;font-size:1.85vh}.option-custom-input{margin-top:.4vh}}.bg-layer img{animation:none;transition:opacity .6s ease}.input-hint{font-family:var(--font-ui);font-size:.68rem;color:var(--ink-soft);opacity:.6;text-align:right;padding-right:2px}.character-layer.dimmed{opacity:.35;transition:opacity .3s ease;pointer-events:none}.auto-pause-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:38;background:#000000b8;border:1px solid rgba(254,135,127,.3);border-radius:999px;padding:8px 22px;font-family:var(--font-ui);font-size:.78rem;color:var(--accent-sakura);letter-spacing:.06em;text-shadow:1px 1px 2px #000;animation:fade-in .4s ease;pointer-events:none}.auto-input-hint{align-self:center;padding:5px 16px;border-radius:999px;background:#00000080;border:1px solid rgba(254,135,127,.28);font-family:var(--font-ui);font-size:.74rem;color:var(--accent-sakura);letter-spacing:.05em;animation:fade-in .4s ease}.play-hud{position:absolute;top:12vh;left:1.2vw;z-index:16;width:clamp(184px,17vw,244px);max-height:74vh;display:flex;flex-direction:column;border:1px solid var(--card-border);border-radius:var(--radius-md);background:#0a081270;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);box-shadow:0 6px 20px #00000061;animation:fade-in .4s ease;opacity:.9;transition:opacity .25s ease}.play-hud:hover{opacity:1}.play-hud-head{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;padding:8px 10px 7px;border-bottom:1px solid rgba(255,255,255,.07);flex-shrink:0}.play-hud-chapter{display:flex;flex-direction:column;gap:2px;min-width:0}.play-hud-chapter-index{font-family:var(--font-title);font-size:.9rem;letter-spacing:.14em;color:#dcc8a0eb;text-shadow:0 1px 3px rgba(0,0,0,.8)}.play-hud-chapter-title{font-family:var(--font-name);font-size:.76rem;color:var(--ink-silver);line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.play-hud-collapse{flex-shrink:0;background:transparent;border:none;color:var(--ink-soft);font-size:1.05rem;line-height:1;cursor:pointer;padding:0 2px;transition:color .2s ease}.play-hud-collapse:hover{color:var(--ink-name)}.play-hud-body{display:flex;flex-direction:column;gap:10px;padding:10px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}.play-hud-body::-webkit-scrollbar{width:5px}.play-hud-body::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:3px}.play-hud-section{display:flex;flex-direction:column;gap:5px}.play-hud-label{display:flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:.64rem;letter-spacing:.16em;color:var(--accent-gold);text-shadow:0 1px 2px rgba(0,0,0,.7)}.play-hud-count{font-size:.6rem;letter-spacing:normal;color:var(--ink-soft);background:#ffffff0f;border-radius:999px;padding:0 6px;line-height:1.5}.play-hud-objective-text{font-family:var(--font-dialog);font-size:.86rem;line-height:1.5;color:var(--ink-main);padding:7px 9px;border:1px solid var(--card-border);border-left:3px solid var(--accent-sakura);border-radius:var(--radius-md);background:#0e0c148c;text-shadow:0 1px 2px rgba(0,0,0,.6)}.play-hud-objective-text.placeholder{color:var(--ink-silver);border-left-color:var(--ink-soft);font-style:italic}.play-hud-empty{font-family:var(--font-ui);font-size:.72rem;color:var(--ink-soft);opacity:.85;padding:2px 0}.play-hud-thread-list,.play-hud-item-list,.play-hud-cond-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.play-hud-thread{display:flex;flex-direction:column;gap:3px;padding:6px 8px;border:1px solid var(--card-border);border-left:3px solid var(--ink-soft);border-radius:var(--radius-sm);background:#0e0c1480}.play-hud-thread-badge{align-self:flex-start;font-family:var(--font-ui);font-size:.58rem;letter-spacing:.06em;padding:0 6px;border-radius:999px;color:var(--ink-silver);background:#ffffff0f}.play-hud-thread-text{font-family:var(--font-dialog);font-size:.8rem;line-height:1.45;color:var(--ink-main)}.play-hud-thread.urg-burning{border-left-color:#e06a5f}.play-hud-thread.urg-burning .play-hud-thread-badge{color:#f0a097;background:#e06a5f2e}.play-hud-thread.urg-medium{border-left-color:var(--accent-gold)}.play-hud-thread.urg-slow{border-left-color:#6f7fa0}.play-hud-more{font-family:var(--font-ui);font-size:.68rem;color:var(--ink-soft);padding:1px 2px}.play-hud-item{display:flex;align-items:center;gap:7px;padding:4px 6px;border-radius:var(--radius-sm);background:#0e0c146b}.play-hud-item-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--ink-soft)}.play-hud-item-dot.cat-keepsake{background:#f0a8c4}.play-hud-item-dot.cat-weapon{background:#e58d84}.play-hud-item-dot.cat-consumable{background:#8fc9a0}.play-hud-item-dot.cat-key{background:#c9b06f}.play-hud-item-dot.cat-treasure{background:#e9cd86}.play-hud-item-dot.cat-misc{background:var(--ink-soft)}.play-hud-item-name{flex:1;min-width:0;font-family:var(--font-name);font-size:.8rem;color:var(--ink-silver);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.play-hud-item-qty{flex-shrink:0;font-family:var(--font-ui);font-size:.7rem;color:var(--accent-gold)}.play-hud-coins{position:relative;margin-left:auto;display:inline-flex;align-items:center;gap:4px;letter-spacing:normal;font-family:var(--font-ui);font-size:.74rem;font-weight:600;color:#e9cd86;cursor:default;outline:none}.play-hud-coin-count{display:inline-block;overflow:hidden;max-width:0;opacity:0;transform:translate(-2px);transition:max-width .22s ease,opacity .22s ease,transform .22s ease}.play-hud-coins:hover .play-hud-coin-count,.play-hud-coins:focus-visible .play-hud-coin-count,.play-hud-coins.pulsing .play-hud-coin-count{max-width:5ch;opacity:1;transform:translate(0)}.play-hud-coins:focus-visible{border-radius:6px;box-shadow:0 0 0 1px #d8b24e80}.play-hud-coin-icon{width:11px;height:11px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f6e09a,#d8b24e 48%,#9c7628);box-shadow:0 0 4px #d8b24e80,inset 0 0 0 1px #fff0be80}.play-hud-cond{display:flex;align-items:center;gap:7px;padding:5px 8px;border:1px solid var(--card-border);border-left:3px solid var(--ink-soft);border-radius:var(--radius-sm);background:#0e0c1480}.play-hud-cond-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--ink-soft)}.play-hud-cond-text{flex:1;font-family:var(--font-dialog);font-size:.8rem;line-height:1.4;color:var(--ink-main)}.play-hud-cond.tone-good{border-left-color:#6fbf7a}.play-hud-cond.tone-good .play-hud-cond-dot{background:#6fbf7a;box-shadow:0 0 5px #6fbf7a80}.play-hud-cond.tone-bad{border-left-color:#d9605a}.play-hud-cond.tone-bad .play-hud-cond-dot{background:#d9605a;box-shadow:0 0 5px #d9605a80}.play-hud-cond.tone-neutral{border-left-color:var(--ink-soft)}.play-hud-foot{flex-shrink:0;padding:7px 10px;border-top:1px solid rgba(255,255,255,.06)}.play-hud-journal-btn{width:100%;background:transparent;border:1px solid var(--card-border);border-radius:var(--radius-sm);color:var(--ink-soft);font-family:var(--font-ui);font-size:.7rem;letter-spacing:.08em;padding:4px 0;cursor:pointer;transition:color .2s ease,border-color .2s ease}.play-hud-journal-btn:hover{color:var(--ink-name);border-color:#e9cd8659}.play-hud-handle{position:absolute;top:12vh;left:1.2vw;z-index:16;display:inline-flex;align-items:center;gap:6px;padding:5px 9px 5px 11px;border:1px solid var(--card-border);border-radius:999px;background:#0a08128c;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);color:var(--ink-soft);cursor:pointer;opacity:.75;transition:opacity .2s ease,color .2s ease;animation:fade-in .4s ease}.play-hud-handle:hover{opacity:1;color:var(--ink-name)}.play-hud-handle-chapter{font-family:var(--font-title);font-size:.76rem;letter-spacing:.1em;color:#dcc8a0e6}.play-hud-handle svg{width:13px;height:13px;flex-shrink:0}@media (max-width: 600px){.play-hud{width:clamp(150px,46vw,200px);max-height:46vh;top:9vh;opacity:.94}.play-hud-handle{top:9vh}}@media (prefers-reduced-motion: reduce){.play-hud,.play-hud-handle{animation:none!important}}.session-item{position:relative}.session-delete-btn{position:absolute;top:6px;right:6px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:#b43c3c40;border:1px solid rgba(180,80,80,.25);border-radius:50%;color:#f0b4b4b3;font-size:.72rem;line-height:1;cursor:pointer;opacity:0;transition:opacity .2s ease,background .2s ease}.session-item:hover .session-delete-btn{opacity:1}.session-delete-btn:hover{background:#c83c3c8c;color:#fff}.input-panel textarea{animation:input-breathe 2s ease-in-out 1}@keyframes input-breathe{0%{border-color:#ffffff0f}50%{border-color:#fe877f73}to{border-color:#ffffff0f}}.input-panel.awaiting-input textarea{animation:input-awaiting-breathe 2.4s ease-in-out infinite}@keyframes input-awaiting-breathe{0%,to{border-color:color-mix(in srgb,var(--accent-sakura) 22%,transparent);box-shadow:0 0 0 0 transparent}50%{border-color:color-mix(in srgb,var(--accent-sakura) 62%,transparent);box-shadow:0 0 12px 1px color-mix(in srgb,var(--accent-sakura) 26%,transparent)}}@media (prefers-reduced-motion: reduce){.input-panel.awaiting-input textarea{animation:none;border-color:color-mix(in srgb,var(--accent-sakura) 45%,transparent);box-shadow:0 0 8px color-mix(in srgb,var(--accent-sakura) 20%,transparent)}}.rewind-btn{position:absolute;top:4px;right:8px;background:#ca7cfa1f;border:1px solid rgba(202,124,250,.45);color:#d8c3f8;font-family:var(--font-ui);font-size:.72rem;padding:2px 8px;border-radius:10px;cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease,border-color .15s ease;z-index:1;white-space:nowrap;letter-spacing:.02em}.history-item:hover .rewind-btn{opacity:1}.rewind-btn:hover{background:#ca7cfa47;border-color:#ca7cfabf;color:#f0e4ff}.rewind-btn:disabled{opacity:.4!important;cursor:not-allowed}.branch-children{margin:4px 0 10px 18px;padding:6px 10px;border-left:2px solid rgba(202,124,250,.45);display:flex;flex-direction:column;gap:4px}.branch-children-title{font-family:var(--font-ui);font-size:.72rem;color:#ca7cfabf;letter-spacing:.03em;margin-bottom:2px}.branch-child-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;background:#ca7cfa0d;border:1px solid rgba(202,124,250,.2);border-radius:6px;padding:6px 10px;cursor:pointer;font-family:var(--font-ui);transition:background .15s ease,border-color .15s ease}.branch-child-card:hover{background:#ca7cfa26;border-color:#ca7cfa8c}.branch-child-main{display:flex;align-items:baseline;gap:6px;color:#d8c3f8;font-size:.78rem}.branch-child-name{font-weight:600;letter-spacing:.02em}.branch-child-turn{color:var(--ink-soft);font-size:.72rem}.branch-child-preview{color:var(--ink-soft);font-size:.72rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.branch-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 12px 8px;border-bottom:1px solid rgba(255,255,255,.05);font-family:var(--font-ui);font-size:.72rem}.branch-crumb-row{display:inline-flex;align-items:center;gap:4px}.branch-crumb-sep{color:var(--ink-soft);font-size:.78rem;padding:0 2px}.branch-crumb{background:#ca7cfa14;border:1px solid rgba(202,124,250,.25);color:#c8b8e8;border-radius:10px;padding:2px 8px;cursor:pointer;font-family:var(--font-ui);font-size:.72rem;letter-spacing:.02em;transition:background .15s ease,color .15s ease}.branch-crumb:hover{background:#ca7cfa38;color:#f0e4ff}.branch-crumb.current{background:#ca7cfa4d;border-color:#ca7cfa99;color:#f8eaff;font-weight:600;cursor:default}.app-vignette{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:55;box-shadow:inset 0 0 180px 30px #0000008c}.bg-fallback-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:.92;transform:scale(1.05);filter:saturate(.92);animation:fade-in .5s ease}.chapter-sigil{width:1.8vh;height:1.8vh;flex-shrink:0;opacity:.85;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}.dialog-corner{position:absolute;width:6vh;height:6vh;opacity:.55;pointer-events:none;-webkit-user-select:none;user-select:none}.dialog-corner-tl{top:0;left:0}.dialog-corner-tr{top:0;right:0;transform:scaleX(-1)}.loading-spinner{box-shadow:0 0 12px #fe877f59,0 0 32px #fe877f2e}@media (prefers-reduced-motion: reduce){.loading-spinner,.juben-progress-fill,.juben-phase-label,.streaming-dots span,.stream-waiting-dots span{animation:none!important;transition:none!important}.bg-fallback-img,.juben-overlay,.phase-confirm-modal{animation:none!important}.ctrl-btn:active:not(:disabled){transform:none!important}}.journal-drawer{width:min(440px,92vw)}.journal-tabs{display:flex;gap:2px;padding:6px 10px 0;border-bottom:1px solid var(--card-border);flex-shrink:0}.journal-tab{flex:1;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--ink-soft);font-family:var(--font-ui);font-size:.82rem;letter-spacing:.08em;padding:8px 4px;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:4px}.journal-tab:hover{color:var(--ink-silver)}.journal-tab.active{color:var(--accent-sakura);border-bottom-color:var(--accent-sakura)}.journal-tab-count{font-size:.62rem;line-height:1;padding:2px 5px;border-radius:999px;background:#fe877f24;color:var(--accent-sakura)}.journal-body{gap:8px}.journal-empty{color:var(--ink-soft);font-family:var(--font-ui);font-size:.82rem;text-align:center;padding:28px 12px;line-height:1.9}.journal-empty-subtle{opacity:.5;font-size:.78rem;padding:22px 12px}.journal-subtle{color:var(--ink-soft);font-family:var(--font-ui);font-size:.72rem;opacity:.7;text-align:center;padding:4px 0}.journal-goal{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border:1px solid var(--card-border);border-radius:var(--radius-md);background:#0e0c148c}.journal-goal-text{flex:1;font-family:var(--font-dialog);font-size:.86rem;color:var(--ink-main);line-height:1.5}.journal-goal-dot{width:7px;height:7px;border-radius:50%;margin-top:6px;flex-shrink:0;background:var(--accent-sakura);box-shadow:0 0 5px #fe877f8c}.journal-goal.done{background:#0e0c1452}.journal-goal.done .journal-goal-text{color:var(--ink-soft);text-decoration:line-through;text-decoration-color:#a08c6080}.journal-goal-check{width:14px;height:14px;margin-top:3px;flex-shrink:0;border-radius:50%;border:1.5px solid rgba(120,190,120,.7);position:relative}.journal-goal-check:after{content:"";position:absolute;left:4px;top:1px;width:3px;height:7px;border:solid rgba(150,210,150,.95);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.journal-goal-tag{align-self:center;flex-shrink:0;font-family:var(--font-ui);font-size:.62rem;color:#96d296e6;border:1px solid rgba(120,190,120,.4);border-radius:var(--radius-sm);padding:1px 6px}.journal-goal.abandoned{background:#0e0c1447;opacity:.78}.journal-goal.abandoned .journal-goal-text{color:var(--ink-soft);text-decoration:line-through;text-decoration-color:#8c849480}.journal-goal-cross{position:relative;width:14px;height:14px;margin-top:3px;flex-shrink:0;border-radius:50%;border:1.5px solid rgba(140,132,148,.6)}.journal-goal-cross:before,.journal-goal-cross:after{content:"";position:absolute;left:3px;top:5.5px;width:7px;height:1.5px;background:#968e9ee6}.journal-goal-cross:before{transform:rotate(45deg)}.journal-goal-cross:after{transform:rotate(-45deg)}.journal-goal-tag.muted{color:var(--ink-soft);border-color:#8c849459}.journal-thread{border:1px solid var(--card-border);border-left:3px solid var(--ink-soft);border-radius:var(--radius-md);background:#0e0c148c;padding:8px 10px}.journal-thread-head{margin-bottom:4px}.journal-thread-badge{font-family:var(--font-ui);font-size:.62rem;letter-spacing:.06em;padding:1px 7px;border-radius:999px;color:var(--ink-silver);background:#ffffff0f}.journal-thread-text{font-family:var(--font-dialog);font-size:.85rem;color:var(--ink-main);line-height:1.55}.journal-thread.urg-burning{border-left-color:#e06a5f}.journal-thread.urg-burning .journal-thread-badge{color:#f0a097;background:#e06a5f29}.journal-thread.urg-medium{border-left-color:var(--accent-gold)}.journal-thread.urg-medium .journal-thread-badge{color:#d9c184;background:#a08c602e}.journal-thread.urg-slow{border-left-color:#6f7fa0}.journal-thread.urg-slow .journal-thread-badge{color:#a9b6d0;background:#6f7fa029}.journal-resolved{margin-top:10px;border-top:1px solid var(--card-border);padding-top:8px}.journal-resolved-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:6px 4px;background:none;border:none;cursor:pointer;font-family:var(--font-ui);font-size:.8rem;color:var(--ink-soft);text-align:left}.journal-resolved-toggle:hover{color:var(--ink-silver)}.journal-resolved-title{flex:0 0 auto}.journal-resolved-count{min-width:18px;padding:0 6px;border-radius:9px;background:#8c849429;font-variant-numeric:tabular-nums;text-align:center}.journal-resolved-caret{margin-left:auto;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--ink-soft);transition:transform var(--transition-fast)}.journal-resolved-caret.open{transform:rotate(180deg)}.journal-resolved-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}.journal-done-goals-list{max-height:240px;overflow-y:auto}.journal-thread.resolved{border-left:2px solid var(--card-border);padding:8px 10px;border-radius:var(--radius-md);background:#ffffff05}.journal-thread.resolved .journal-thread-text{opacity:.82}.journal-thread-resolution{margin-top:5px;font-family:var(--font-dialog);font-size:.8rem;line-height:1.55;color:var(--ink-soft)}.journal-thread-resolution:before{content:"揭晓 · ";color:var(--accent-gold);opacity:.85}.journal-item{border:1px solid var(--card-border);border-radius:var(--radius-md);background:#0e0c148c;padding:8px 10px}.journal-item-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.journal-item-name{font-family:var(--font-name);font-size:.88rem;color:var(--ink-silver)}.journal-item-qty{font-family:var(--font-ui);font-size:.72rem;color:var(--accent-gold)}.journal-cat{margin-left:auto;flex-shrink:0;font-family:var(--font-ui);font-size:.62rem;letter-spacing:.04em;padding:1px 7px;border-radius:var(--radius-sm);border:1px solid transparent;white-space:nowrap}.journal-item-desc{margin-top:5px;font-family:var(--font-ui);font-size:.74rem;color:var(--ink-soft);line-height:1.5}.journal-item-actionable{cursor:pointer;transition:border-color .15s ease,background .15s ease}.journal-item-actionable:hover{border-color:#e9cd8659;background:#18141ead}.journal-item-actionable:focus-visible{outline:none;border-color:var(--accent-gold);background:#18141ead}.journal-item-use{flex-shrink:0;font-family:var(--font-ui);font-size:.64rem;letter-spacing:.06em;color:var(--accent-gold);opacity:.72;padding:1px 6px;border:1px solid rgba(233,205,134,.28);border-radius:var(--radius-sm);transition:opacity .15s ease}.journal-item-actionable:hover .journal-item-use,.journal-item-actionable:focus-visible .journal-item-use{opacity:1}.journal-cat.cat-keepsake{color:#f0a8c4;background:#f0a8c41f;border-color:#f0a8c44d}.journal-cat.cat-weapon{color:#e58d84;background:#e58d841f;border-color:#e58d844d}.journal-cat.cat-consumable{color:#8fc9a0;background:#8fc9a01f;border-color:#8fc9a04d}.journal-cat.cat-key{color:#c9b06f;background:#c9b06f1f;border-color:#c9b06f4d}.journal-cat.cat-treasure{color:#e9cd86;background:#e9cd8624;border-color:#e9cd8659}.journal-cat.cat-misc{color:var(--ink-soft);background:#a096aa1a;border-color:var(--card-border)}.journal-condition{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--card-border);border-left:3px solid var(--ink-soft);border-radius:var(--radius-md);background:#0e0c1480}.journal-condition-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--ink-soft)}.journal-condition-text{flex:1;font-family:var(--font-dialog);font-size:.85rem;color:var(--ink-main);line-height:1.5}.journal-condition.tone-good{border-left-color:#6fbf7a}.journal-condition.tone-good .journal-condition-dot{background:#6fbf7a;box-shadow:0 0 5px #6fbf7a80}.journal-condition.tone-bad{border-left-color:#d9605a}.journal-condition.tone-bad .journal-condition-dot{background:#d9605a;box-shadow:0 0 5px #d9605a80}.journal-condition.tone-neutral{border-left-color:var(--ink-soft)}.journal-condition.tone-neutral .journal-condition-dot{background:var(--ink-soft)}.game-toasts{position:fixed;top:clamp(70px,8vh,100px);right:clamp(12px,2.2vw,34px);left:auto;transform:none;z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;width:max-content;max-width:min(88vw,460px)}@media (max-width: 600px){.game-toasts{top:max(58px,calc(env(safe-area-inset-top,0px) + 48px));right:10px;max-width:calc(100vw - 20px)}}.game-toast{pointer-events:auto;cursor:pointer;display:flex;align-items:center;gap:9px;padding:8px 15px 8px 11px;border-radius:var(--radius-md);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--shadow-panel);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);max-width:100%;opacity:1;animation:game-toast-life 2.5s ease forwards}.game-toast-bar{flex-shrink:0;width:3px;align-self:stretch;border-radius:999px;background:var(--ink-soft)}.game-toast-text{font-family:var(--font-dialog);font-size:.85rem;line-height:1.35;color:var(--ink-main);text-shadow:1px 1px 2px #000;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.game-toast-item-good .game-toast-bar{background:var(--accent-gold);box-shadow:0 0 6px #a08c6099}.game-toast-item-good .game-toast-text{color:#e9cd86}.game-toast-item-bad .game-toast-bar{background:var(--ink-soft)}.game-toast-item-bad .game-toast-text{color:var(--ink-silver)}.game-toast-cond-good .game-toast-bar{background:#6fbf7a;box-shadow:0 0 6px #6fbf7a8c}.game-toast-cond-good .game-toast-text{color:#a7e0ad}.game-toast-cond-bad .game-toast-bar{background:#d9605a;box-shadow:0 0 6px #d9605a99}.game-toast-cond-bad .game-toast-text{color:#f0a19c}.game-toast-cond-neutral .game-toast-bar{background:var(--ink-soft)}.game-toast-cond-neutral .game-toast-text{color:var(--ink-silver)}.game-toast-goal-done{border-color:#a08c6080}.game-toast-goal-done .game-toast-bar{background:var(--accent-gold);box-shadow:0 0 9px #c8ac60d9}.game-toast-goal-done .game-toast-text{color:#f0d99a;font-weight:600;letter-spacing:.02em}.game-toast-goal-new .game-toast-bar{background:var(--ink-silver)}.game-toast-goal-new .game-toast-text{color:var(--ink-silver)}.game-toast-thread{border-color:#fe877f8c;animation:game-toast-life 2.5s ease forwards,sakura-flash .9s ease}.game-toast-thread .game-toast-bar{background:var(--accent-sakura);box-shadow:0 0 10px #fe877fe6}.game-toast-thread .game-toast-text{color:#ffc4bf;font-weight:600;letter-spacing:.03em}.game-toast-affinity .game-toast-bar{background:var(--accent-sakura2);box-shadow:0 0 7px #ca7cfaa6}.game-toast-affinity .game-toast-text{color:#e2c4fb}@keyframes game-toast-life{0%{opacity:0;transform:translateY(-9px) scale(.98)}7%{opacity:1;transform:translateY(0) scale(1)}86%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-5px) scale(.99)}}@keyframes sakura-flash{0%{box-shadow:0 0 #fe877f00,var(--shadow-panel)}35%{box-shadow:0 0 22px 5px #fe877f8c,var(--shadow-panel)}to{box-shadow:0 0 #fe877f00,var(--shadow-panel)}}.chapter-milestone-layer{position:absolute;top:clamp(64px,12vh,120px);left:0;right:0;z-index:61;display:flex;justify-content:center;pointer-events:none}.chapter-milestone{position:relative;min-width:min(320px,78vw);max-width:min(520px,90vw);padding:clamp(12px,1.8vh,18px) clamp(22px,3.4vw,40px);text-align:center;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);pointer-events:auto;cursor:pointer;animation:chapter-milestone-life 2.6s ease forwards}.chapter-milestone-rule{width:clamp(28px,5vw,48px);height:2px;margin:0 auto clamp(7px,1.1vh,11px);background:var(--accent-sakura);border-radius:999px;box-shadow:0 0 8px #fe877fb3}.chapter-milestone-eyebrow{font-family:var(--font-ui);font-size:clamp(.62rem,1.4vh,.74rem);letter-spacing:.42em;text-indent:.42em;text-transform:none;color:var(--accent-sakura);margin-bottom:clamp(4px,.7vh,7px)}.chapter-milestone-title{font-family:var(--font-title);font-size:clamp(1.05rem,2.6vh,1.5rem);color:var(--ink-name);text-shadow:var(--text-shadow-dialog);letter-spacing:.06em;line-height:1.4}@keyframes chapter-milestone-life{0%{opacity:0;transform:translateY(-10px)}12%{opacity:1;transform:translateY(0)}82%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion: reduce){.chapter-milestone{animation:chapter-milestone-fade 2.6s linear forwards}@keyframes chapter-milestone-fade{0%,90%{opacity:1}to{opacity:0}}}.coin-floater{position:absolute;left:calc(100% - 2px);top:3px;font-family:var(--font-ui);font-size:.82rem;font-weight:700;white-space:nowrap;text-shadow:1px 1px 2px #000;pointer-events:none;animation:coin-floater-rise 1.3s ease forwards}.coin-floater.gain{color:#6fbf7a}.coin-floater.loss{color:#d9605a}.play-hud-coins.pulsing,.play-hud-coins.pulsing .play-hud-coin-icon{animation:coin-pop .5s ease}@keyframes coin-floater-rise{0%{opacity:0;transform:translateY(4px)}18%{opacity:1;transform:translateY(-2px)}to{opacity:0;transform:translateY(-16px)}}@keyframes coin-pop{0%{transform:scale(1)}40%{transform:scale(1.28);filter:brightness(1.35)}to{transform:scale(1)}}.npc-card{position:relative}.npc-affinity-fill{transition:width .55s ease}.npc-affinity-level{margin-left:6px;font-family:var(--font-ui);font-size:.6rem;font-weight:600;letter-spacing:.04em;vertical-align:middle;opacity:.92}.npc-affinity-level.tone-warm{color:var(--accent-sakura)}.npc-affinity-level.tone-neutral{color:var(--ink-soft)}.npc-affinity-level.tone-cold{color:#cf9a6a}.affinity-floater{position:absolute;top:2px;right:4px;font-family:var(--font-ui);font-size:.78rem;font-weight:700;white-space:nowrap;text-shadow:1px 1px 2px #000;pointer-events:none;animation:coin-floater-rise 1.4s ease forwards}.affinity-floater.gain{color:#6fbf7a}.affinity-floater.loss{color:#d9605a}@media (prefers-reduced-motion: reduce){.game-toast,.game-toast-thread{animation:none!important}.coin-floater,.affinity-floater,.play-hud-coins.pulsing,.play-hud-coins.pulsing .play-hud-coin-icon,.play-hud-coin-count,.npc-affinity-fill{animation-duration:.01ms!important;transition-duration:.01ms!important}}.recap-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:clamp(12px,4vw,48px);--recap-accent: var(--ink-silver)}.recap-tone-triumph{--recap-accent: #e9cd86}.recap-tone-bittersweet{--recap-accent: var(--accent-sakura2)}.recap-tone-tragic{--recap-accent: #9aa6bd}.recap-tone-open{--recap-accent: #63c7d6}.recap-tone-neutral{--recap-accent: var(--ink-silver)}.recap-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg-overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:recap-fade-in var(--transition-normal) both}.recap-card{position:relative;width:min(720px,100%);max-height:100%;overflow-y:auto;padding:clamp(20px,4vw,40px);border-radius:var(--radius-lg);background:var(--card-bg);border:1px solid var(--card-border);border-top:2px solid var(--recap-accent);box-shadow:var(--shadow-panel),0 0 40px -12px var(--recap-accent);color:var(--ink-main);animation:recap-rise-in .45s ease both}.recap-header{text-align:center;margin-bottom:clamp(14px,3vw,22px)}.recap-eyebrow{font-family:var(--font-ui);font-size:12px;letter-spacing:.4em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}.recap-title{margin:0;font-family:var(--font-title);font-size:clamp(26px,6vw,40px);line-height:1.2;color:var(--recap-accent);text-shadow:0 2px 12px rgba(0,0,0,.6)}.recap-title-rule{width:72px;height:2px;margin:14px auto 0;background:linear-gradient(90deg,transparent,var(--recap-accent),transparent)}.recap-summary{margin:0 auto clamp(18px,4vw,28px);max-width:56ch;font-family:var(--font-dialog);font-size:clamp(15px,2.4vw,17px);line-height:1.9;color:var(--ink-silver);text-align:center;white-space:pre-wrap;animation:recap-fade-in .9s ease .2s both}.recap-sections{display:flex;flex-direction:column;gap:clamp(14px,3vw,20px)}.recap-section{padding-top:14px;border-top:1px solid var(--card-border)}.recap-section-title{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-family:var(--font-name);font-size:15px;font-weight:600;color:var(--ink-main)}.recap-section-count{min-width:20px;padding:1px 7px;border-radius:999px;background:color-mix(in srgb,var(--recap-accent) 22%,transparent);color:var(--recap-accent);font-family:var(--font-ui);font-size:12px;text-align:center}.recap-subhead{margin:12px 0 6px;font-family:var(--font-ui);font-size:12px;letter-spacing:.12em;color:var(--ink-soft)}.recap-empty{font-family:var(--font-dialog);font-size:14px;color:var(--ink-soft);font-style:italic}.recap-goal-list,.recap-thread-list,.recap-npc-list,.recap-mark-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}.recap-goal{display:flex;align-items:flex-start;gap:9px;font-family:var(--font-dialog);font-size:14.5px;color:var(--ink-silver)}.recap-goal-check{flex:0 0 auto;width:14px;height:14px;margin-top:3px;border-radius:50%;border:1.5px solid var(--recap-accent);background:radial-gradient(circle at center,var(--recap-accent) 0 40%,transparent 45%)}.recap-goal-text{flex:1}.recap-goal.abandoned{color:var(--ink-soft);opacity:.82}.recap-goal.abandoned .recap-goal-text{text-decoration:line-through;text-decoration-color:#8c849480}.recap-goal-cross{position:relative;flex:0 0 auto;width:14px;height:14px;margin-top:3px;border-radius:50%;border:1.5px solid rgba(140,132,148,.55)}.recap-goal-cross:before,.recap-goal-cross:after{content:"";position:absolute;left:3px;top:5.5px;width:7px;height:1.5px;background:#968e9ed9}.recap-goal-cross:before{transform:rotate(45deg)}.recap-goal-cross:after{transform:rotate(-45deg)}.recap-thread{padding:8px 12px;border-radius:var(--radius-md);background:#ffffff08;border-left:2px solid var(--card-border);font-family:var(--font-dialog);font-size:14px;line-height:1.6;color:var(--ink-silver)}.recap-thread.resolved{border-left-color:var(--recap-accent)}.recap-thread.open{color:var(--ink-soft);font-style:italic;border-left-style:dashed}.recap-thread-text{display:block}.recap-thread-resolution{display:block;margin-top:5px;font-size:13px;color:var(--ink-soft)}.recap-thread-resolution:before{content:"揭晓 · ";color:var(--recap-accent)}.recap-npc-list{flex-direction:row;flex-wrap:wrap;gap:8px}.recap-npc{display:inline-flex;align-items:center;gap:8px;padding:5px 12px;border-radius:999px;background:#ffffff0a;border:1px solid var(--card-border)}.recap-npc-name{font-family:var(--font-name);font-size:14px;color:var(--ink-name)}.recap-npc-tier{font-family:var(--font-ui);font-size:11.5px;padding:1px 8px;border-radius:999px}.recap-npc-tier.sign-pos{color:#8fc9a0;background:#8fc9a01f}.recap-npc-tier.sign-neg{color:#d9605a;background:#d9605a1f}.recap-npc-tier.sign-neutral{color:var(--ink-soft);background:#a096aa1a}.recap-item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.recap-item{display:flex;flex-direction:column;gap:6px;padding:9px 11px;border-radius:var(--radius-md);background:#ffffff08;border:1px solid var(--card-border)}.recap-item-head{display:flex;align-items:baseline;gap:6px}.recap-item-name{font-family:var(--font-name);font-size:14px;color:var(--ink-main)}.recap-item-qty{font-family:var(--font-ui);font-size:12px;color:var(--ink-soft)}.recap-item .journal-cat{align-self:flex-start;padding:1px 8px;border-radius:999px;border:1px solid transparent;font-family:var(--font-ui);font-size:11px}.recap-mark{display:flex;align-items:center;gap:9px;padding:7px 12px;border-radius:var(--radius-md);border-left:2px solid var(--ink-soft);background:#ffffff08;font-family:var(--font-dialog);font-size:14px;color:var(--ink-silver)}.recap-mark-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--ink-soft)}.recap-mark.tone-good{border-left-color:#6fbf7a}.recap-mark.tone-good .recap-mark-dot{background:#6fbf7a;box-shadow:0 0 5px #6fbf7a80}.recap-mark.tone-bad{border-left-color:#d9605a}.recap-mark.tone-bad .recap-mark-dot{background:#d9605a;box-shadow:0 0 5px #d9605a80}.recap-mark.tone-neutral{border-left-color:var(--ink-soft)}.recap-mark-text{flex:1}.recap-stats{display:flex;justify-content:center;gap:clamp(28px,8vw,56px);margin:clamp(18px,4vw,26px) 0 clamp(16px,3vw,22px)}.recap-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.recap-stat-num{font-family:var(--font-title);font-size:clamp(24px,5vw,32px);color:var(--recap-accent);line-height:1}.recap-stat-label{font-family:var(--font-ui);font-size:11px;letter-spacing:.2em;color:var(--ink-soft)}.recap-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.recap-action-item{display:flex;flex-direction:column;align-items:center;gap:5px}.recap-action-note{font-family:var(--font-ui);font-size:11px;color:var(--ink-soft);opacity:.8;text-align:center}.recap-btn{padding:11px 26px;border-radius:var(--radius-md);font-family:var(--font-ui);font-size:14px;cursor:pointer;transition:transform var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast)}.recap-btn:hover{transform:translateY(-1px)}.recap-btn:active{transform:translateY(0)}.recap-btn-ghost{background:transparent;border:1px solid var(--card-border);color:var(--ink-silver)}.recap-btn-ghost:hover{border-color:var(--recap-accent);color:var(--ink-main)}.recap-btn-primary{background:color-mix(in srgb,var(--recap-accent) 20%,transparent);border:1px solid var(--recap-accent);color:var(--recap-accent)}.recap-btn-primary:hover{background:color-mix(in srgb,var(--recap-accent) 32%,transparent)}@media (max-width: 560px){.recap-overlay{padding:0}.recap-card{width:100%;height:100%;max-height:100%;border-radius:0;border-top-width:3px}.recap-actions{flex-direction:column}.recap-action-item,.recap-btn{width:100%}}@keyframes recap-fade-in{0%{opacity:0}to{opacity:1}}@keyframes recap-rise-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.recap-backdrop,.recap-card,.recap-summary{animation:none!important}.recap-btn{transition:none!important}}.genre-presets{display:flex;flex-direction:column;gap:8px;animation:genre-presets-in .24s ease}@keyframes genre-presets-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.genre-presets-hint{font-family:var(--font-ui);font-size:.78rem;color:var(--ink-soft);letter-spacing:.02em}.genre-presets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px;max-height:42vh;overflow-y:auto;padding-right:2px}.genre-preset-card{display:flex;flex-direction:column;gap:4px;text-align:left;padding:9px 11px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-lg);cursor:pointer;transition:border-color var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.genre-preset-card:hover:not(:disabled){transform:translateY(-2px);border-color:var(--card-accent, var(--accent-sakura));box-shadow:0 4px 16px #00000059}.genre-preset-card:active:not(:disabled){transform:translateY(0)}.genre-preset-card:disabled{opacity:.4;cursor:not-allowed}.genre-preset-label{font-family:var(--font-title);font-size:.98rem;letter-spacing:.03em;color:var(--card-accent, var(--accent-sakura))}.genre-preset-blurb{font-family:var(--font-ui);font-size:.72rem;line-height:1.35;color:var(--ink-soft)}.genre-preset-card[data-accent="0"]{--card-accent: var(--accent-sakura)}.genre-preset-card[data-accent="1"]{--card-accent: var(--accent-sakura2)}.genre-preset-card[data-accent="2"]{--card-accent: var(--accent-gold)}.genre-preset-random{--card-accent: var(--accent-sakura2);border-style:dashed}@media (max-width: 560px){.genre-presets-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));max-height:38vh}.genre-preset-label{font-size:.92rem}}@media (prefers-reduced-motion: reduce){.genre-presets{animation:none!important}.genre-preset-card{transition:border-color var(--transition-fast)!important}.genre-preset-card:hover:not(:disabled){transform:none!important}}.plot-guide{display:flex;flex-direction:column;gap:8px;padding:10px 12px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-lg);animation:genre-presets-in .24s ease}.plot-guide-hint{font-family:var(--font-ui);font-size:.8rem;line-height:1.5;color:var(--ink-silver);letter-spacing:.02em}.plot-guide-actions{display:flex;flex-wrap:wrap;gap:8px}.plot-guide-btn{flex:1 1 auto;padding:8px 12px;font-family:var(--font-ui);font-size:.82rem;letter-spacing:.02em;border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast),color var(--transition-fast)}.plot-guide-btn-primary{color:var(--bg-main);background:var(--accent-sakura);border:1px solid var(--accent-sakura)}.plot-guide-btn-primary:hover:not(:disabled){background:var(--accent-sakura2);border-color:var(--accent-sakura2)}.plot-guide-btn-ghost{color:var(--ink-silver);background:transparent;border:1px solid var(--card-border)}.plot-guide-btn-ghost:hover:not(:disabled){color:var(--accent-sakura);border-color:var(--accent-sakura)}.plot-guide-btn:disabled{opacity:.45;cursor:not-allowed}.plot-guide-input{width:100%;resize:vertical;padding:8px 10px;font-family:var(--font-dialog);font-size:.9rem;line-height:1.5;color:var(--ink-main);background:#140e28b3;border:1px solid var(--card-border);border-radius:var(--radius-md);outline:none;transition:border-color var(--transition-fast)}.plot-guide-input:focus{border-color:var(--accent-sakura)}@media (prefers-reduced-motion: reduce){.plot-guide{animation:none!important}}.protagonist-name-block{margin:12px 0 4px;padding-top:12px;border-top:1px solid var(--card-border)}.protagonist-name-field{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:#140e288c;border:1px solid var(--card-border);border-radius:var(--radius-md)}.protagonist-name-label{font-family:var(--font-ui);font-size:.98rem;font-weight:600;letter-spacing:.02em;color:var(--ink-main)}.protagonist-name-hint{font-family:var(--font-ui);font-size:.74rem;color:var(--ink-soft);opacity:.85}.protagonist-name-input{width:100%;padding:9px 12px;font-family:var(--font-name);font-size:1.08rem;color:var(--ink-name);background:#140e28b3;border:1px solid var(--card-border);border-radius:var(--radius-md);outline:none;transition:border-color var(--transition-fast)}.protagonist-name-input:focus{border-color:var(--accent-sakura)}.protagonist-name-input:disabled{opacity:.5;cursor:not-allowed}.protagonist-name-chip{display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:6px 12px;font-family:var(--font-ui);font-size:.86rem;color:var(--ink-main);background:#140e2880;border:1px solid var(--card-border);border-radius:var(--radius-pill, 999px);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.protagonist-name-chip:hover:not(:disabled){border-color:var(--accent-sakura);background:#140e28b3}.protagonist-name-chip:disabled{opacity:.5;cursor:not-allowed}.pn-chip-key{font-size:.74rem;color:var(--ink-soft);letter-spacing:.04em}.pn-chip-name{font-family:var(--font-name);font-size:.98rem;color:var(--ink-name);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:12em}.pn-chip-name.placeholder{font-family:var(--font-ui);font-size:.82rem;color:var(--ink-soft)}.pn-chip-edit{font-size:.74rem;color:var(--accent-sakura);margin-left:2px}.protagonist-name-row{display:flex;gap:8px;align-items:stretch}.protagonist-name-row .protagonist-name-input{flex:1 1 auto;width:auto}.protagonist-name-confirm{flex:0 0 auto;padding:0 16px;font-family:var(--font-ui);font-size:.88rem;color:var(--ink-name);background:#140e28b3;border:1px solid var(--accent-sakura);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.protagonist-name-confirm:hover{background:#e6a0be38}.history-item-options{display:flex;flex-direction:column;gap:4px;margin-top:6px}.history-item-option{font-family:var(--font-ui);font-size:.78rem;line-height:1.45;color:var(--ink-soft);padding:4px 8px;border-left:2px solid var(--card-border);background:#ffffff08;border-radius:0 var(--radius-sm) var(--radius-sm) 0;cursor:default;word-break:break-word}.feedback-fab{position:fixed;right:clamp(14px,2vw,28px);bottom:clamp(14px,2.2vh,28px);z-index:55;padding:8px 14px;font-family:var(--font-ui);font-size:clamp(.72rem,1vh,.86rem);letter-spacing:.04em;color:var(--ink-name);background:#fe877f24;border:1px solid rgba(254,135,127,.42);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel),0 0 0 1px #fe877f29;cursor:pointer;opacity:.72;transition:var(--transition-fast)}.feedback-fab:hover{opacity:1;color:var(--accent-sakura);border-color:#fe877fb8;background:#fe877f38;box-shadow:var(--shadow-panel),0 0 0 1px #fe877f73,0 2px 10px #fe877f2e}.feedback-fab.input-open{opacity:0;visibility:hidden;pointer-events:none}.feedback-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:60;background:#0000008f;display:flex;align-items:center;justify-content:center;animation:fade-in .2s ease}.feedback-modal{position:relative;width:min(560px,88vw);max-height:86vh;overflow-y:auto;background:var(--card-bg);border:1px solid rgba(254,135,127,.28);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel),0 0 0 1px #fe877f2e,0 0 24px #fe877f1f;padding:clamp(18px,2.4vh,28px) clamp(16px,2vw,32px) clamp(14px,2vh,24px);transform-origin:center;animation:phase-confirm-rise .22s cubic-bezier(.2,.8,.3,1.05)}.feedback-modal:before{content:"";position:absolute;top:0;left:16%;right:16%;height:1px;background:linear-gradient(90deg,transparent,var(--accent-sakura),transparent);opacity:.7}.feedback-title{font-family:var(--font-name);font-size:clamp(1rem,1.6vh,1.4rem);color:var(--ink-name);letter-spacing:.04em;margin-bottom:8px;text-shadow:var(--text-shadow-name)}.feedback-desc{font-family:var(--font-ui);font-size:clamp(.78rem,1.15vh,.92rem);line-height:1.6;color:var(--ink-soft);margin-bottom:12px}.feedback-textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:96px;padding:10px 12px;font-family:var(--font-ui);font-size:clamp(.82rem,1.2vh,.98rem);line-height:1.6;color:var(--ink-main);background:#00000047;border:1px solid var(--card-border);border-radius:var(--radius-md);outline:none;transition:border-color var(--transition-fast)}.feedback-textarea:focus{border-color:#fe877f8c}.feedback-textarea::placeholder{color:var(--ink-soft)}.feedback-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.feedback-chip{padding:5px 12px;font-family:var(--font-ui);font-size:clamp(.72rem,1vh,.85rem);color:var(--ink-silver);background:transparent;border:1px solid rgba(255,255,255,.14);border-radius:999px;cursor:pointer;transition:var(--transition-fast)}.feedback-chip:hover{color:var(--ink-name);border-color:#fe877f6b}.feedback-chip.active{color:var(--ink-name);background:#fe877f2e;border-color:#fe877f9e}.feedback-shot{margin-top:12px;display:flex;flex-direction:column;align-items:flex-start;gap:8px}.feedback-shot-preview{max-width:100%;max-height:240px;border:1px solid var(--card-border);border-radius:var(--radius-md);box-shadow:0 2px 12px #0006}.feedback-shot-remove{padding:4px 12px;font-family:var(--font-ui);font-size:clamp(.7rem,.95vh,.82rem);color:var(--ink-silver);background:transparent;border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-fast)}.feedback-shot-remove:hover{color:var(--accent-sakura);border-color:#fe877f80}.feedback-error{margin-top:12px;font-family:var(--font-ui);font-size:clamp(.76rem,1.1vh,.88rem);color:#ff8f8f}.feedback-actions{margin-top:18px;display:flex;justify-content:flex-end;gap:12px}.feedback-cancel,.feedback-submit{border-radius:var(--radius-md);padding:8px 18px;font-family:var(--font-ui);font-size:clamp(.78rem,1.1vh,.95rem);cursor:pointer;transition:var(--transition-fast)}.feedback-cancel{border:1px solid rgba(255,255,255,.14);background:transparent;color:var(--ink-silver)}.feedback-cancel:hover:not(:disabled){color:var(--ink-name)}.feedback-submit{border:1px solid rgba(254,135,127,.45);background:#fe877f24;color:var(--ink-name)}.feedback-submit:hover:not(:disabled){color:var(--accent-sakura);border-color:#fe877fb8;background:#fe877f33;box-shadow:0 0 0 1px #fe877f73,0 2px 10px #fe877f2e}.feedback-cancel:disabled,.feedback-submit:disabled{opacity:.45;cursor:not-allowed}.audio-settings{position:relative;display:inline-block}.audio-toggle-btn{background:transparent;border:1px solid var(--card-border);color:var(--ink-main);width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background .15s ease,transform .15s ease,border-color .15s ease}.audio-toggle-btn:hover{background:var(--accent-warm-soft);border-color:var(--accent-sakura);transform:scale(1.05)}.audio-toggle-btn.silent{background:#fe877f2e;border-color:var(--accent-sakura);color:var(--accent-sakura);animation:audio-silent-pulse 1.6s ease-in-out infinite}.audio-toggle-btn.silent:hover{animation:none;background:#fe877f4d}@keyframes audio-silent-pulse{0%,to{box-shadow:0 0 #fe877f99}50%{box-shadow:0 0 0 8px #fe877f00}}.audio-panel{position:absolute;bottom:calc(100% + 8px);left:0;min-width:240px;padding:14px 16px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-card, 10px);box-shadow:var(--shadow-panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:1000;font-family:var(--font-ui);color:var(--ink-main);display:flex;flex-direction:column;gap:10px;animation:audio-panel-fade .18s ease-out}@keyframes audio-panel-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.audio-row{display:grid;grid-template-columns:64px 1fr 28px;align-items:center;gap:8px}.audio-row label{font-size:12px;color:var(--ink-silver)}.audio-row input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:var(--progress-track);border-radius:2px;outline:none;cursor:pointer}.audio-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent-sakura);cursor:pointer;box-shadow:0 0 4px #fe877f80;transition:transform .1s ease}.audio-row input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}.audio-row input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent-sakura);cursor:pointer;border:none;box-shadow:0 0 4px #fe877f80}.audio-val{font-size:11px;color:var(--ink-soft);text-align:right;font-variant-numeric:tabular-nums}.audio-row-mute{display:block;margin-top:4px;padding-top:10px;border-top:1px solid var(--card-border)}.audio-mute{width:100%;background:transparent;border:1px solid var(--card-border);color:var(--ink-main);padding:6px 10px;border-radius:6px;font-size:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.audio-mute:hover{background:var(--accent-warm-soft);border-color:var(--accent-sakura)}.audio-mute.on{background:var(--accent-warm-soft);border-color:var(--accent-sakura);color:var(--accent-sakura)}.welcome-audio-status{display:inline-flex;align-items:center;justify-content:center;margin:12px auto 6px;padding:6px 14px;font-family:var(--font-ui);font-size:12px;border-radius:999px;border:1px solid var(--card-border);background:#0000004d;color:var(--ink-silver);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);letter-spacing:.04em}.welcome-audio-status.playing{color:var(--accent-sakura);border-color:#fe877f4d}.welcome-audio-status.pending{color:var(--ink-silver);border-color:#a08c6066}.welcome-audio-status.muted{cursor:pointer;color:var(--accent-sakura);border-color:var(--accent-sakura);background:var(--accent-warm-soft);transition:background .15s ease,transform .1s ease}.welcome-audio-status.muted:hover{background:#fe877f2e;transform:scale(1.02)}button.welcome-audio-status{cursor:pointer;transition:background .15s ease,transform .1s ease}button.welcome-audio-status:hover{background:#fe877f2e;transform:scale(1.02)}.welcome-audio-test-result{margin-left:12px;font-size:11px;color:var(--ink-soft)}
