@import "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;700;900&family=ZCOOL+QingKe+HuangYou&display=swap";:root{--ink:#0e1116;--ink-soft:#1a2030;--paper:#f2ebe0;--paper-dim:#c8bba8;--amber:#e8a317;--amber-hot:#ff6b1a;--steel:#4a6fa5;--danger:#c43c3c;--dialogue-bg:#080a0ee0;--font-display:"ZCOOL QingKe HuangYou", "Noto Serif SC", serif;--font-body:"Noto Serif SC", "Songti SC", serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--ink);height:100dvh;color:var(--paper);font-family:var(--font-body);touch-action:manipulation;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;overflow:hidden}#app,#game-root{width:100%;height:100dvh}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}.title-screen{place-items:center;width:100%;height:100%;display:grid;position:relative;overflow:hidden}.title-bg{background:linear-gradient(160deg,#0a0c12d1 0%,#120c10b8 45%,#0a0e14e0 100%),url(/assets/cg/treadmill.jpg) 50%/cover no-repeat;animation:8s ease-in-out infinite alternate titlePulse;position:absolute;inset:0}.title-bg:after{content:"";background-image:repeating-linear-gradient(-12deg,#0000,#0000 40px,#f2ebe004 40px 41px);position:absolute;inset:0}@keyframes titlePulse{0%{filter:brightness()}to{filter:brightness(1.12)}}.title-content{z-index:1;text-align:center;padding:2rem;animation:.9s ease-out both titleIn;position:relative}@keyframes titleIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.title-disclaimer{letter-spacing:.28em;text-transform:uppercase;color:var(--paper-dim);margin-bottom:1.25rem;font-size:.75rem}.title-brand{font-family:var(--font-display);letter-spacing:.08em;background:linear-gradient(135deg, var(--paper) 20%, var(--amber) 55%, var(--amber-hot) 100%);color:#0000;text-shadow:none;filter:drop-shadow(0 4px 24px #e8a31740);-webkit-background-clip:text;background-clip:text;font-size:clamp(3.2rem,12vw,6.5rem);font-weight:400;line-height:1;animation:3.5s ease-in-out infinite alternate brandGlow}@keyframes brandGlow{0%{filter:drop-shadow(0 4px 16px #e8a31733)}to{filter:drop-shadow(0 6px 32px #ff6b1a59)}}.title-sub{color:var(--paper-dim);letter-spacing:.12em;margin-top:1.25rem;font-size:clamp(.95rem,2.5vw,1.15rem)}.title-meta{color:#e8a317bf;letter-spacing:.2em;margin-top:.65rem;font-size:.8rem}.title-noise{pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:.4s steps(2,end) infinite noiseShift;position:absolute;inset:0}@keyframes noiseShift{0%{transform:translate(0)}to{transform:translate(-1%,1%)}}.title-bgm-row{margin-top:1.25rem}.title-credit{color:#f2ebe059;letter-spacing:.06em;margin-top:.75rem;font-size:.7rem}.bgm-missing{color:var(--danger);letter-spacing:.08em;font-size:.75rem}.ending-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.title-actions{flex-direction:column;align-items:center;gap:.75rem;margin-top:2.75rem;display:flex}.btn{letter-spacing:.15em;min-width:200px;padding:.85rem 1.75rem;font-size:1rem;transition:transform .15s,background .15s,color .15s}.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--amber);color:var(--ink);font-weight:700}.btn-primary:hover{background:var(--amber-hot);color:#fff}.btn-ghost{color:var(--paper);border:1px solid #f2ebe059}.btn-ghost:hover{border-color:var(--amber);color:var(--amber)}.vn-stage{background:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:relative;overflow:hidden}.vn-bg{background-color:#12151c;background-position:50%;background-size:cover;transition:opacity .35s;position:absolute;inset:0}.vn-bg:after{content:"";background:linear-gradient(#0000 55%,#0000008c 100%);position:absolute;inset:0}.vn-cg{z-index:2;pointer-events:none;filter:drop-shadow(0 12px 40px #00000080);background-position:50%;background-repeat:no-repeat;background-size:contain;animation:.45s ease-out cgIn;position:absolute;inset:5% 6% 26%}@keyframes cgIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.vn-hud{top:max(1rem, env(safe-area-inset-top));left:max(1rem, env(safe-area-inset-left));right:max(1rem, env(safe-area-inset-right));z-index:5;pointer-events:none;align-items:center;gap:.5rem;font-size:.85rem;display:flex;position:absolute}.affection-label{color:var(--amber-hot);letter-spacing:.08em}.affection-value{font-family:var(--font-display);color:var(--amber);min-width:1.5rem;font-size:1.25rem}.vn-hud-spacer{flex:1}.btn-menu{pointer-events:auto;letter-spacing:.1em;color:var(--paper-dim);border:1px solid #f2ebe04d;margin-left:0;padding:.35rem .85rem;font-size:.8rem}.btn-menu:hover{color:var(--paper);border-color:var(--amber)}.vn-char-wrap{z-index:1;pointer-events:none;justify-content:center;align-items:flex-end;width:min(560px,55vw);height:82%;max-height:calc(100% - 4.5rem);animation:.4s ease-out charIn;display:flex;position:absolute;bottom:26%;left:50%;transform:translate(-50%)}.vn-char-wrap.is-empty{display:none}@keyframes charIn{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.vn-char{object-fit:contain;object-position:bottom center;filter:drop-shadow(0 8px 24px #00000073);opacity:1;width:auto;max-width:100%;height:auto;max-height:100%}.vn-dialogue{left:max(1rem, env(safe-area-inset-left));right:max(1rem, env(safe-area-inset-right));bottom:max(1rem, env(safe-area-inset-bottom));z-index:4;background:var(--dialogue-bg);border-top:3px solid var(--amber);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:auto;max-width:none;max-height:32%;padding:1.15rem 1.35rem 1rem;animation:.3s ease-out dialogueIn;position:absolute;overflow-y:auto;transform:none}@keyframes dialogueIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.vn-name{font-family:var(--font-display);color:var(--ink);background:var(--amber);letter-spacing:.06em;margin-bottom:.65rem;padding:.15rem .75rem;font-size:1.15rem;display:inline-block}.vn-text{color:var(--paper);min-height:3.5em;font-size:clamp(1rem,2.2vw,1.15rem);line-height:1.75}.choices{flex-direction:column;gap:.55rem;margin-top:1rem;display:flex}.choice-btn{text-align:left;color:var(--paper);background:#f2ebe00f;border:1px solid #f2ebe033;padding:.7rem 1rem;font-size:.95rem;line-height:1.45;transition:background .15s,border-color .15s,transform .15s}.choice-btn:hover{border-color:var(--amber);background:#e8a31726;transform:translate(4px)}.click-hint{color:#f2ebe066;text-align:right;letter-spacing:.08em;margin-top:.65rem;font-size:.75rem}.choice-idx{width:1.35rem;height:1.35rem;color:var(--amber);border:1px solid #e8a3178c;flex-shrink:0;justify-content:center;align-items:center;margin-right:.65rem;font-size:.75rem;display:inline-flex}.aff-delta{font-family:var(--font-display);pointer-events:none;font-size:1.1rem;animation:.9s ease-out forwards affPop;position:absolute;top:.1rem;left:5.5rem}.aff-delta.up{color:#6dce7a}.aff-delta.down{color:#ff6b6b}@keyframes affPop{0%{opacity:0;transform:translateY(6px)}20%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-14px)}}.chapter-bumper{z-index:6;pointer-events:auto;cursor:pointer;background:#080a0eb8;place-items:center;transition:opacity .45s;display:grid;position:absolute;inset:0}.chapter-bumper span{font-family:var(--font-display);letter-spacing:.18em;color:var(--paper);border-bottom:2px solid var(--amber);padding-bottom:.4rem;font-size:clamp(1.4rem,4vw,2.2rem)}.chapter-bumper.hide{opacity:0;pointer-events:none}.danmaku-layer{z-index:3;pointer-events:none;position:absolute;inset:8% 0 34%;overflow:hidden}.danmaku-item{top:var(--y);white-space:nowrap;color:#ffffffe0;text-shadow:0 1px 2px #000c;animation:7.5s linear forwards danmakuFly;animation-delay:calc(var(--i) * .55s);font-size:.85rem;position:absolute;left:100%}@keyframes danmakuFly{0%{transform:translate(0)}to{transform:translate(calc(-100vw - 100%))}}.vn-stage.has-cg .vn-cg{background-color:#00000040;background-size:cover;border:1px solid #f2ebe01f;inset:5% 6% 26%}.ending-gallery{flex-wrap:wrap;justify-content:center;gap:.45rem;margin-top:1.5rem;display:flex}.end-chip{letter-spacing:.06em;border:1px solid #f2ebe033;padding:.3rem .55rem;font-size:.72rem}.end-chip.on{color:var(--amber);border-color:#e8a3178c}.end-chip.off{color:#f2ebe047}.ending-screen{place-items:center;width:100%;height:100%;display:grid;position:relative;overflow:hidden}.ending-bg{background-color:var(--ink);filter:brightness(.45)saturate(.85);background-position:50%;background-size:cover;animation:1.2s ease-out both endingBg;position:absolute;inset:0;transform:scale(1.05)}@keyframes endingBg{0%{opacity:0;transform:scale(1.12)}to{opacity:1;transform:scale(1.05)}}.ending-card{z-index:1;border-left:4px solid var(--amber);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0e1116d1;width:min(480px,100% - 2.5rem);padding:2rem 1.75rem;animation:.7s ease-out .2s both titleIn;position:relative}.ending-label{letter-spacing:.35em;color:var(--amber);margin-bottom:.75rem;font-size:.7rem}.ending-title{font-family:var(--font-display);color:var(--paper);margin-bottom:1rem;font-size:clamp(1.75rem,5vw,2.4rem)}.ending-text{color:var(--paper-dim);white-space:pre-line;margin-bottom:1.75rem;font-size:.95rem;line-height:1.7}@media (width<=640px),(orientation:portrait) and (width<=900px){.vn-char-wrap{width:min(480px,92vw);height:55%;bottom:38%}.vn-cg,.vn-stage.has-cg .vn-cg{inset:3% 2% 40%}.danmaku-layer{inset:6% 0 42%}.vn-hud{top:max(.55rem, env(safe-area-inset-top));left:max(.55rem, env(safe-area-inset-left));right:max(.55rem, env(safe-area-inset-right));gap:.4rem;padding-inline:0}.btn-menu{padding:.45rem .7rem;font-size:.78rem}.vn-dialogue{left:max(.55rem, env(safe-area-inset-left));right:max(.55rem, env(safe-area-inset-right));bottom:max(.55rem, env(safe-area-inset-bottom));width:auto;max-width:none;max-height:36%;padding:.95rem 1rem .85rem;animation:.3s ease-out dialogueInPortrait;overflow-y:auto;transform:none}@keyframes dialogueInPortrait{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.vn-text{min-height:3.2em;font-size:1.02rem;line-height:1.65}.vn-name{font-size:1.05rem}.choice-btn{min-height:48px;padding:.8rem .9rem;font-size:.98rem}.choice-btn:hover{transform:none}.click-hint{text-align:center;margin-top:.55rem}.title-content{padding:max(1.5rem, env(safe-area-inset-top)) 1.1rem max(1.5rem, env(safe-area-inset-bottom))}.title-brand{font-size:clamp(2.4rem,14vw,3.4rem)}.title-actions .btn{min-width:min(220px,80vw);min-height:48px}.ending-card{max-height:calc(100dvh - 2rem);margin:1rem;overflow-y:auto}.ending-gallery{flex-wrap:wrap;justify-content:center}}@media (orientation:portrait){.vn-char-wrap{width:min(480px,92vw);height:55%;bottom:38%}.vn-cg,.vn-stage.has-cg .vn-cg{inset:3% 2% 40%}.danmaku-layer{inset:6% 0 42%}.vn-dialogue{left:max(.55rem, env(safe-area-inset-left));right:max(.55rem, env(safe-area-inset-right));bottom:max(.55rem, env(safe-area-inset-bottom));width:auto;max-height:36%;overflow-y:auto;transform:none}}@media (orientation:landscape) and (aspect-ratio>=2){.vn-char-wrap{width:min(640px,42vw);height:85%;bottom:24%}}
