:root{--stage-w: 1080;--stage-h: 1920;--stage-scale: 1;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--ink: #e8edf6;--ink-dim: #9aa6bd;--panel: rgba(8, 12, 22, .82);--panel-edge: rgba(150, 180, 230, .35);--accent: #7fd4e8;--accent-warn: #e8a05f;--f-blur: 0px;--f-sat: 1;--f-hue: 0deg;--f-bright: 1;--f-gray: 0;--f-noise: 0;--f-tint: 0;--f-vignette: 0;--f-flicker-opacity: 0;--font-ui: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Heiti TC", sans-serif;--font-mono: "SF Mono", "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:#05070c;color:var(--ink);font-family:var(--font-ui);overscroll-behavior:none;touch-action:manipulation;user-select:none;-webkit-user-select:none}#stage{position:fixed;inset:0;overflow:hidden;background:#04060b}#portrait-layer,#ui-layer,#license-layer,#modal-layer,#transition-card,#title-screen{position:absolute;left:50%;bottom:0;width:calc(var(--stage-w) * 1px);height:calc(var(--stage-h) * 1px);transform:translate(-50%) scale(var(--stage-scale));transform-origin:bottom center}#choice-layer:before,.modal:before,#transition-card:before,#title-screen:before{content:"";position:absolute;inset:-100% -100% 0;z-index:-1}#choice-layer:before{background:#02040a80}.modal:before{background:#04070ef2}#title-screen:before{background:#04060b}#transition-card:before{background:#04060b}#scene-layer,#fx-layer{position:absolute;inset:0;width:min(100%,calc(var(--stage-w) * 1px * var(--stage-scale)));margin-inline:auto}#scene-layer{filter:blur(var(--f-blur)) saturate(var(--f-sat)) hue-rotate(var(--f-hue)) brightness(var(--f-bright)) grayscale(var(--f-gray));transition:filter .8s ease;overflow:hidden}#bg-layer,#cg-layer{position:absolute;inset:0}.bg-plane,.cg-plane{position:absolute;inset:-4%;background-size:cover;background-position:center;background-repeat:no-repeat;opacity:0;transition:opacity .6s ease}.cg-plane{background-color:#05070c}#portrait-layer{pointer-events:none}.portrait-slot{position:absolute;bottom:0;width:0;height:0}.portrait-slot[data-slot=left]{left:30%}.portrait-slot[data-slot=center]{left:50%}.portrait-slot[data-slot=right]{left:70%}.portrait-img{position:absolute;bottom:0;left:0;transform:translate(-50%);opacity:0;transition:opacity .35s ease,filter .3s ease;will-change:opacity}.portrait-img.is-visible{opacity:1}.portrait-slot.is-inactive .portrait-img{filter:brightness(.62) saturate(.85)}#fx-layer{pointer-events:none;overflow:hidden}#fx-noise{position:absolute;inset:-50%;opacity:var(--f-noise);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");background-repeat:repeat;mix-blend-mode:overlay;animation:noise-drift .42s steps(4) infinite;transition:opacity .6s ease}@keyframes noise-drift{0%{transform:translate(0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-2%)}to{transform:translate(0)}}#fx-tint{position:absolute;inset:0;opacity:var(--f-tint);background:linear-gradient(160deg,#2878a08c,#5a328259 55%,#a03c4666);mix-blend-mode:color;transition:opacity .7s ease}#fx-vignette{position:absolute;inset:0;opacity:var(--f-vignette);background:radial-gradient(ellipse at center,#0000 38%,#0000008c 72%,#000000eb);transition:opacity .7s ease}#fx-flicker{position:absolute;inset:0;background:#bedcffe6;opacity:0;mix-blend-mode:overlay}#fx-flicker.is-active{animation:flicker var(--f-flicker-period, 2.4s) steps(1) infinite}@keyframes flicker{0%,86%,to{opacity:0}87%{opacity:var(--f-flicker-opacity)}88%{opacity:0}92%{opacity:calc(var(--f-flicker-opacity) * .6)}93%{opacity:0}}#stage.is-shaking #scene-layer{animation:shake var(--shake-duration, .4s) ease-in-out}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(calc(var(--shake-amp, 8px) * -1),var(--shake-amp, 8px))}40%{transform:translate(var(--shake-amp, 8px),calc(var(--shake-amp, 8px) * -1))}60%{transform:translate(calc(var(--shake-amp, 8px) * -.6))}80%{transform:translate(calc(var(--shake-amp, 8px) * .6))}}#blind-veil{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity 1.2s ease}#stage.is-blind #blind-veil{opacity:1}#stage.is-blind #license-layer{opacity:0}#stage.is-blind #dialogue-box{background:#000;border-color:#78829638;box-shadow:none;backdrop-filter:none}#license-layer{pointer-events:none;transition:opacity .4s ease}.license-panel{position:absolute;min-width:300px;padding:18px 22px 16px;background:linear-gradient(135deg,#0a1422db,#080e1abd);border:1px solid rgba(127,212,232,.5);border-radius:4px;box-shadow:0 0 0 1px #7fd4e81f,0 0 36px #3caad22e;backdrop-filter:blur(6px);color:var(--accent);font-family:var(--font-mono);opacity:0;transform:translate(-50%,-8px);transition:opacity .4s ease,transform .4s ease;animation:license-float 5.5s ease-in-out infinite}.license-panel.is-visible{opacity:1;transform:translate(-50%)}@keyframes license-float{0%,to{margin-top:0}50%{margin-top:-10px}}.license-panel:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(to bottom,rgba(127,212,232,.06) 0px,rgba(127,212,232,.06) 1px,transparent 1px,transparent 4px);pointer-events:none}.license-label{font-size:20px;letter-spacing:.22em;color:#7fd4e899;margin-bottom:8px}.license-issuer{font-size:30px;font-family:var(--font-ui);letter-spacing:.06em;margin-bottom:10px}.license-countdown{font-size:26px;font-family:var(--font-ui);display:flex;align-items:baseline;gap:8px}.license-days{font-family:var(--font-mono);font-size:46px;line-height:1;font-weight:700}.license-panel.is-urgent{border-color:#e8a05f99;color:var(--accent-warn);box-shadow:0 0 0 1px #e8a05f24,0 0 36px #d2823c38}.license-panel.is-urgent .license-label{color:#e8a05f99}.license-panel.is-empty{color:#96aac873;border-color:#96aac842;box-shadow:none}.license-empty-text{font-size:28px;letter-spacing:.3em;font-family:var(--font-mono)}.license-panel.is-blocked{color:#bec8d78c;border-color:#bec8d74d;box-shadow:none}.license-panel.is-blocked .license-label{color:#bec8d766}.license-blocked-text{font-size:30px;letter-spacing:.2em;font-family:var(--font-ui);animation:signal-drop 2.6s steps(1) infinite}@keyframes signal-drop{0%,44%,52%,to{opacity:1}48%{opacity:.25}70%{opacity:.5}}#dialogue-text.is-garbled,.backlog-line.is-garbled{color:#aab9cdad;letter-spacing:.06em;animation:text-noise .7s steps(2) infinite}@keyframes text-noise{0%,to{opacity:.82}50%{opacity:.62}}#ui-layer{pointer-events:none}#ui-layer>*{pointer-events:auto}#advance-hit{position:absolute;inset:0;border:0;padding:0;background:transparent;cursor:pointer;z-index:1}#quick-bar{position:absolute;top:calc(28px + var(--safe-top));right:28px;display:flex;gap:10px;z-index:3}.quick-btn{min-width:92px;padding:12px 14px;font-family:var(--font-ui);font-size:22px;letter-spacing:.08em;color:var(--ink-dim);background:#080c1699;border:1px solid rgba(150,180,230,.26);border-radius:3px;cursor:pointer;backdrop-filter:blur(4px);transition:color .18s ease,border-color .18s ease,background .18s ease}.quick-btn:hover,.quick-btn.is-active{color:var(--accent);border-color:#7fd4e88c;background:#102030bf}#dialogue-box{position:absolute;left:40px;right:40px;bottom:calc(56px + var(--safe-bottom));min-height:330px;padding:44px 48px 48px;background:var(--panel);border:1px solid var(--panel-edge);border-radius:6px;box-shadow:0 18px 60px #0000008c;backdrop-filter:blur(10px);z-index:2}#dialogue-box[hidden]{display:none}#speaker-plate{position:absolute;top:-28px;left:36px;padding:8px 26px;background:#0a101cf2;border:1px solid var(--panel-edge);border-radius:3px;font-size:30px;letter-spacing:.1em}#speaker-plate[hidden]{display:none}#dialogue-text{font-size:36px;line-height:1.72;letter-spacing:.02em;white-space:pre-wrap;word-break:break-word;min-height:190px}#dialogue-text .ch{opacity:0}#dialogue-text .ch.is-shown{opacity:1}#advance-mark{position:absolute;right:34px;bottom:24px;width:20px;height:20px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg);opacity:0;animation:advance-bob 1.3s ease-in-out infinite}#advance-mark.is-visible{opacity:.85}@keyframes advance-bob{0%,to{transform:rotate(45deg) translate(0)}50%{transform:rotate(45deg) translate(4px,4px)}}#choice-layer{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;padding:0 90px;background:#02040a80;backdrop-filter:blur(3px);z-index:4}#choice-layer[hidden]{display:none}.choice-btn{width:100%;padding:32px 36px;font-family:var(--font-ui);font-size:34px;line-height:1.5;color:var(--ink);text-align:center;background:#0a1220e6;border:1px solid rgba(150,180,230,.4);border-radius:4px;cursor:pointer;opacity:0;transform:translateY(14px);animation:choice-in .32s ease forwards;transition:border-color .2s ease,background .2s ease,color .2s ease}.choice-btn:hover{color:var(--accent);border-color:#7fd4e8bf;background:#122438f2}@keyframes choice-in{to{opacity:1;transform:translateY(0)}}#modal-layer{pointer-events:none;z-index:30}.modal{position:absolute;inset:0;display:flex;flex-direction:column;background:#04070ef2;backdrop-filter:blur(8px);pointer-events:auto;animation:modal-in .22s ease}@keyframes modal-in{0%{opacity:0}to{opacity:1}}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:calc(42px + var(--safe-top)) 48px 26px;border-bottom:1px solid rgba(150,180,230,.22)}.modal-title{margin:0;font-size:38px;font-weight:500;letter-spacing:.16em}.modal-close{padding:12px 24px;font-family:var(--font-ui);font-size:26px;color:var(--ink-dim);background:transparent;border:1px solid rgba(150,180,230,.3);border-radius:3px;cursor:pointer}.modal-close:hover{color:var(--accent);border-color:#7fd4e899}.modal-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:36px 48px calc(48px + var(--safe-bottom))}.backlog-entry{padding:24px 0;border-bottom:1px solid rgba(150,180,230,.12)}.backlog-speaker{display:block;margin-bottom:10px;font-size:26px;letter-spacing:.1em}.backlog-line{font-size:30px;line-height:1.66;color:var(--ink-dim)}.backlog-empty{padding:60px 0;text-align:center;font-size:28px;color:#96aac866}.setting-row{display:grid;grid-template-columns:300px 1fr 130px;align-items:center;gap:24px;padding:30px 0;border-bottom:1px solid rgba(150,180,230,.12)}.setting-label{font-size:30px}.setting-value{font-family:var(--font-mono);font-size:28px;color:var(--accent);text-align:right}input[type=range]{width:100%;height:6px;appearance:none;-webkit-appearance:none;background:#96b4e640;border-radius:3px;outline:none}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:36px;height:36px;border-radius:50%;background:var(--accent);cursor:pointer;box-shadow:0 0 14px #7fd4e880}.setting-row-locale{grid-template-columns:300px 1fr}.setting-locale-group{display:grid;grid-template-columns:1fr 1fr;gap:12px}.setting-locale{padding:14px 10px;font-family:var(--font-ui);font-size:26px;color:var(--ink-dim);background:transparent;border:1px solid rgba(150,180,230,.3);border-radius:3px;cursor:pointer}.setting-locale.is-on{color:var(--accent);border-color:#7fd4e899}.setting-locale-note{margin-top:16px}.setting-toggle{padding:12px 22px;font-family:var(--font-ui);font-size:26px;color:var(--ink-dim);background:transparent;border:1px solid rgba(150,180,230,.3);border-radius:3px;cursor:pointer}.setting-toggle.is-on{color:var(--accent);border-color:#7fd4e899}.setting-section{margin-top:48px}.setting-action{width:100%;padding:24px;font-family:var(--font-ui);font-size:30px;letter-spacing:.18em;text-indent:.18em;color:var(--ink);background:#0a0e18cc;border:1px solid rgba(232,160,95,.32);border-radius:3px;cursor:pointer;transition:color .2s ease,border-color .2s ease}.setting-action:hover{color:var(--accent-warn);border-color:#e8a05fb3}.setting-note{margin:14px 0 0;font-size:22px;line-height:1.6;color:var(--ink-dim)}.dialog-message{margin:0 0 36px;font-size:28px;line-height:1.7;white-space:pre-wrap;color:var(--ink)}.dialog-actions{display:flex;gap:20px}.dialog-btn{flex:1;padding:24px;font-family:var(--font-ui);font-size:30px;letter-spacing:.18em;text-indent:.18em;color:var(--ink);background:#0a0e18cc;border:1px solid rgba(150,180,230,.28);border-radius:3px;cursor:pointer;transition:color .2s ease,border-color .2s ease}.dialog-btn:hover{border-color:#96b4e699}.dialog-btn.is-primary{border-color:#e8a05f66}.dialog-btn.is-primary:hover{color:var(--accent-warn);border-color:#e8a05fbf}.name-input{width:100%;padding:26px 24px;font-family:var(--font-ui);font-size:44px;letter-spacing:.16em;text-align:center;color:var(--ink);background:#0a0e18cc;border:1px solid rgba(150,180,230,.24);border-radius:3px}.name-input:focus{outline:none;border-color:#e8a05fb3}.name-confirm{width:100%;margin-top:36px;padding:26px;font-family:var(--font-ui);font-size:32px;letter-spacing:.22em;text-indent:.22em;color:var(--accent-warn);background:#0a0e18cc;border:1px solid rgba(232,160,95,.5);border-radius:3px;cursor:pointer;transition:color .16s ease,border-color .16s ease}.name-confirm:hover{border-color:#e8a05fe6}.name-reset{width:100%;margin-top:16px;padding:18px;font-family:var(--font-ui);font-size:24px;letter-spacing:.12em;color:var(--ink-dim);background:none;border:1px solid rgba(150,180,230,.16);border-radius:3px;cursor:pointer;transition:color .16s ease,border-color .16s ease}.name-reset:hover{color:var(--ink);border-color:#96b4e666}.slot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.save-slot{display:flex;flex-direction:column;gap:10px;min-height:190px;padding:24px 26px;text-align:left;font-family:var(--font-ui);color:var(--ink);background:#0a101ccc;border:1px solid rgba(150,180,230,.26);border-radius:4px;cursor:pointer;transition:border-color .18s ease,background .18s ease}.save-slot:hover{border-color:#7fd4e8a6;background:#101e30e6}.save-slot.is-empty{color:#96aac866;justify-content:center;align-items:center}.slot-id{font-family:var(--font-mono);font-size:22px;letter-spacing:.18em;color:var(--accent)}.slot-time{font-family:var(--font-mono);font-size:22px;color:var(--ink-dim)}.slot-preview{font-size:25px;line-height:1.5;color:var(--ink-dim);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.cg-section+.cg-section{margin-top:52px}.cg-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid rgba(150,180,230,.2)}.cg-section-title{margin:0;font-size:32px;font-weight:500;letter-spacing:.08em}.cg-section-count{flex:none;color:#96aac899;font-family:var(--font-mono);font-size:24px}.cg-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.cg-cell{position:relative;aspect-ratio:16 / 9;padding:0;overflow:hidden;background:#0a101ccc center / cover no-repeat;border:1px solid rgba(150,180,230,.26);border-radius:4px;cursor:pointer}.cg-cell.is-locked{cursor:default;display:flex;align-items:center;justify-content:center;color:#96aac859;font-family:var(--font-mono);font-size:40px}.cg-viewer{position:absolute;inset:0;background:#000 center / contain no-repeat;z-index:20;cursor:pointer;border:0}#title-screen{background:#04060b;z-index:20;transition:opacity .6s ease}#title-screen.is-hidden{opacity:0;pointer-events:none}#title-screen.is-card{pointer-events:none}#title-screen.is-card .title-menu{opacity:0;pointer-events:none;transition:opacity .4s ease}.title-bg,.title-inner{position:absolute;top:min(0px,calc(1920px - 100vh / var(--stage-scale)));bottom:0;left:max(0px,calc((1080px - 100vw / var(--stage-scale)) / 2));right:max(0px,calc((1080px - 100vw / var(--stage-scale)) / 2))}.title-bg{overflow:hidden;pointer-events:none}.title-bg img{width:100%;height:100%;object-fit:cover}.title-logo{position:absolute;top:0;left:0;width:100%;margin:0;font-size:0;line-height:0}.title-logo img{display:block;width:100%;pointer-events:none}.title-menu{position:absolute;top:48.7%;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:7px;align-items:center}.title-btn{width:450px;padding:13px;font-family:var(--font-ui);font-size:30px;letter-spacing:.22em;text-indent:.22em;color:var(--ink);background:#080c14b8;border:1px solid rgba(150,180,230,.14);border-radius:2px;cursor:pointer;backdrop-filter:blur(2px);transition:color .2s ease,background-color .2s ease,border-color .2s ease}.title-btn:hover:not(:disabled){color:var(--accent);background:#0e1828d9;border-color:#7fd4e880}.title-btn:disabled{color:var(--ink-dim);opacity:.45;cursor:default}#transition-card{z-index:25;opacity:0;pointer-events:none;transition:opacity var(--transition-fade, .9s) ease}#transition-card.is-up{opacity:1}#transition-card.is-blank .transition-volume,#transition-card.is-blank .transition-title{display:none}.transition-inner{position:absolute;top:min(0px,calc(1920px - 100vh / var(--stage-scale)));bottom:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px}.transition-volume{margin:0;font-size:34px;letter-spacing:.42em;text-indent:.42em;color:var(--ink-dim)}.transition-title{margin:0;padding:28px 46px;border-top:1px solid rgba(150,180,230,.3);border-bottom:1px solid rgba(150,180,230,.3);font-size:74px;letter-spacing:.3em;text-indent:.3em;color:var(--ink)}.chapter-group+.chapter-group{margin-top:34px}.chapter-group-name{margin:0 0 14px;font-size:24px;letter-spacing:.24em;color:var(--accent)}.chapter-cell{display:block;width:100%;margin-bottom:10px;padding:18px 22px;text-align:left;font-family:var(--font-ui);font-size:28px;color:var(--ink);background:#080c14b8;border:1px solid rgba(150,180,230,.14);border-radius:2px;cursor:pointer;transition:color .2s ease,border-color .2s ease}.chapter-cell:hover:not(:disabled){color:var(--accent);border-color:#7fd4e880}.chapter-cell:disabled{color:var(--ink-dim);opacity:.4;cursor:default}.chapter-cell-volume{display:block;font-size:20px;letter-spacing:.2em;color:var(--ink-dim)}#dev-note{position:fixed;left:10px;bottom:8px;font-family:var(--font-mono);font-size:11px;color:#96aac84d;pointer-events:none;z-index:100}#studio-splash{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:#12182b;opacity:0;transition:opacity .6s ease}#studio-splash[hidden]{display:none}#studio-splash.is-in{opacity:1}#studio-splash img{width:min(74vw,74vh,620px);height:auto;user-select:none;-webkit-user-drag:none}
