:root{--navy-deep: #070a1c;--navy: #0e1230;--gold: #d4af6a;--gold-soft: #b9985a;--ink: #e7e3d6;--muted: #6f7390}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--navy-deep);color:var(--ink);font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,serif;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.starfield{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}#app{position:relative;z-index:1;width:100vw;height:100vh;height:100dvh;overflow:hidden}body.has-touch .scene{padding-bottom:24vmin}.scene{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:3vmin;padding:6vmin;background:radial-gradient(120% 90% at 50% 30%,#0e123059,#070a1cd1 80%);animation:fade-in .6s ease both}.scene--with-companion-panel{padding-right:32vmin}.companion-side-panel{position:absolute;right:3vmin;top:50%;transform:translateY(-50%);width:24vmin;min-width:210px;max-width:300px;display:flex;flex-direction:column;align-items:stretch;gap:1.2vmin;padding:1.4vmin;border:1px solid rgba(255,216,107,.28);border-radius:.9rem;background:linear-gradient(160deg,#070a1cdb,#0e12309e);box-shadow:0 0 2.6rem #00000061;text-align:left;z-index:4}.companion-side-image{--hue: 45;aspect-ratio:1;width:100%;display:grid;place-items:center;overflow:hidden;border-radius:.7rem;border:1px solid hsla(var(--hue),90%,68%,.55);background:radial-gradient(circle at 45% 22%,hsla(var(--hue),90%,62%,.28),transparent 36%),#ffffff0b;background-size:cover;background-position:center}.companion-side-image--photo svg{display:none}.companion-side-copy{display:flex;flex-direction:column;gap:.35vmin}.companion-side-kicker{color:var(--muted);font-size:1.25vmin;letter-spacing:.24em}.companion-side-copy strong{color:var(--gold);font-size:2.4vmin;letter-spacing:.12em;line-height:1.25}.companion-side-copy small{color:var(--gold-soft);font-size:1.35vmin;line-height:1.45}.companion-side-copy p{margin:.8vmin 0 0;color:#e7e3d6e0;font-size:1.55vmin;line-height:1.65}.companion-sacrifice-diff{margin-top:1vmin;padding:.85vmin 1vmin;border:1px solid rgba(255,211,107,.34);border-radius:.55rem;background:#5f461838}.companion-sacrifice-diff span{display:block;color:#ffd36b;font-size:1.55vmin;letter-spacing:.08em}.companion-sacrifice-diff small{display:block;margin-top:.35vmin;color:#e7e3d6c2;font-size:1.22vmin;line-height:1.5}.rr-msg--hint{color:#ffd36b;text-shadow:0 0 1rem rgba(255,211,107,.24);animation:sacrifice-diff-pulse .55s ease both}.scene--dog-escape.dog-hit{animation:fire-flash .25s ease both,shake .35s ease both}.dog-escape{width:min(64vw,760px);display:grid;gap:2vmin;justify-items:center}.dog-runner{width:8vmin;height:8vmin;display:grid;place-items:center;border-radius:50%;border:1px solid #ff6b6b;color:#ff9f9f;background:rgba(122,20,20,calc(.16 + var(--dog-pressure, 0) * .42));transform:scale(calc(1 + var(--dog-pressure, 0) * .45));transition:transform .08s linear,background .08s linear}.dog-fork{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2vmin}.dog-route{min-height:18vmin;display:grid;place-items:center;border:2px solid rgba(255,255,255,.24);border-radius:1rem;background:#ffffff0b;font-size:5vmin;color:#e7e3d6d1}.dog-route.is-cursor{border-color:var(--gold);background:#ffd86b1f;box-shadow:0 0 2rem #ffd86b2e;transform:scale(1.04)}.dog-route--true:after{content:"足跡";display:block;margin-left:.6rem;color:var(--gold-soft);font-size:1.4vmin;letter-spacing:.2em}.boss-bars{width:min(64vw,760px);display:grid;gap:.8vmin}.boss-meter{display:grid;grid-template-columns:5rem minmax(0,1fr) 4rem;align-items:center;gap:.8rem;font-size:1rem}.boss-meter div{height:1rem;border:1px solid rgba(255,255,255,.22);border-radius:999px;overflow:hidden;background:#ffffff0f}.boss-meter b{display:block;height:100%;background:#7cffb2;transition:width .22s ease}.boss-meter--enemy b{background:#ff6b6b}.boss-meter em{font-style:normal;color:var(--gold-soft)}.boss-upgrades{width:min(64vw,760px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1vmin}.boss-action{min-height:7.5vmin;display:flex;flex-direction:column;justify-content:center;gap:.4vmin;padding:1vmin 1.2vmin;border:1px solid rgba(255,216,107,.28);border-radius:.75rem;background:#ffffff0b;text-align:left}.boss-action span{color:var(--gold);font-size:2.2vmin}.boss-action small{color:#e7e3d6b3;font-size:1.4vmin;line-height:1.4}.boss-action.is-cursor{border-color:var(--gold);background:#ffd86b21;box-shadow:0 0 1.8rem #ffd86b2e;transform:scale(1.03)}.boss-action--fight{grid-column:1 / -1;text-align:center;align-items:center}.companion-sacrifice-diff--pulse{animation:sacrifice-diff-pulse .55s ease both}@keyframes sacrifice-diff-pulse{0%{transform:scale(.96);box-shadow:0 0 #ff6b6b00}45%{transform:scale(1.04);box-shadow:0 0 1.5rem #ff6b6b73}to{transform:scale(1);box-shadow:0 0 #ff6b6b00}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.eyebrow{color:var(--muted);letter-spacing:.35em;font-size:2.2vmin;margin:0}.title{margin:0;color:var(--gold);font-size:13vmin;letter-spacing:.3em;text-indent:.3em;font-weight:400}.title--sm{font-size:8vmin}.subtitle{margin:0;font-size:3.4vmin;letter-spacing:.2em}.lede{margin:2vmin 0 0;color:var(--gold-soft);font-size:2.4vmin;letter-spacing:.2em}.attract-actions{margin-top:4vmin;display:flex;flex-direction:column;align-items:center;gap:1.6vmin}.btn{background:transparent;color:var(--gold);border:1px solid var(--gold-soft);padding:1.6vmin 4vmin;font-size:2.4vmin;letter-spacing:.2em;font-family:inherit;cursor:pointer;transition:background .2s ease,color .2s ease}.btn:hover{background:var(--gold);color:var(--navy-deep)}.status{margin:0;color:var(--muted);font-size:2vmin;letter-spacing:.1em}.status--ok{color:#7fd6a0}.hint{margin-top:4vmin;color:var(--muted);font-size:2vmin;letter-spacing:.15em}.stub-tag{color:var(--muted);font-size:2vmin;letter-spacing:.3em;margin:0}@keyframes pop-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.mask .mask-ring{fill:var(--navy);stroke:var(--c);stroke-width:2}.mask .mask-ticks line{stroke:var(--c);stroke-width:2;opacity:.75}.mask .mask-eye{fill:var(--c)}.mask .mask-mouth{fill:#05060f;stroke:var(--c);stroke-width:1.5}.companion-stage{margin-top:1vmin}.companion-name{margin:1vmin 0 0;color:var(--gold);font-size:6vmin;letter-spacing:.25em}.companion-epithet{margin:0;color:var(--gold-soft);font-size:2.4vmin;letter-spacing:.2em}.companion-intro{margin:1.5vmin 0 0;font-size:2.6vmin;letter-spacing:.08em}.dots{display:flex;gap:1.4vmin;margin-top:2vmin}.dot{width:1.4vmin;height:1.4vmin;border-radius:50%;border:1px solid var(--gold-soft)}.dot--on{background:var(--gold);border-color:var(--gold)}.scene--ideal-companion{gap:1.2vmin}.ideal-companion-layout{width:min(94vw,1280px);display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);align-items:center;gap:4vmin}.ideal-companion-controls{min-width:0;display:flex;flex-direction:column;align-items:stretch;text-align:left}.ideal-companion-controls .eyebrow,.ideal-companion-controls .companion-name,.ideal-companion-controls .companion-epithet,.ideal-companion-controls .hint{text-align:left}.ideal-companion-side{min-width:0;min-height:64vmin;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2vmin;padding:2.4vmin;border-left:1px solid rgba(255,216,107,.22)}.companion-stage--ideal{width:100%;min-height:34vmin;display:grid;place-items:center}.companion-pref-options{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2vmin;margin-top:1.4vmin}.companion-pref-option{border:1px solid rgba(255,216,107,.28);border-radius:.8rem;padding:1.2vmin 1.4vmin;background:#ffffff0b;text-align:left;transition:transform .16s ease,border-color .16s ease,background .16s ease}.companion-pref-option span{display:block;color:var(--gold);font-size:2.1vmin;letter-spacing:.08em}.companion-pref-option small{display:block;margin-top:.45vmin;color:#ffffffad;font-size:1.45vmin;line-height:1.55}.companion-pref-option--active{transform:scale(1.04);border-color:var(--gold);background:#ffd86b21;box-shadow:0 0 2rem #ffd86b38}.companion-pref-option--locked{border-color:#ffd86b66}.companion-summary{width:min(100%,36ch);min-height:7.6em;line-height:1.7;text-align:left;padding:1.6vmin 1.8vmin;border:1px solid rgba(255,216,107,.24);border-radius:.8rem;background:#00000038}.ideal-image-frame{--hue: 45;width:min(31vmin,300px);height:min(31vmin,300px);display:grid;place-items:center;position:relative;overflow:hidden;border-radius:1.2rem;border:1px solid hsla(var(--hue),90%,68%,.7);background:radial-gradient(circle at 50% 24%,hsla(var(--hue),90%,62%,.28),transparent 35%),linear-gradient(145deg,#ffffff14,#00000061);background-size:cover;background-position:center;box-shadow:0 0 3rem hsla(var(--hue),90%,55%,.28)}.ideal-image-frame--ready svg{opacity:0}.ideal-image-frame--fallback{background-size:cover}.ideal-image-frame--fallback span{color:#f2d58a}.ideal-image-frame span{position:absolute;bottom:.8rem;left:.8rem;right:.8rem;padding:.45rem .65rem;border-radius:.5rem;background:#0000008f;color:#ffffffdb;font-size:1.25vmin;letter-spacing:.08em}@media (max-width: 820px){.scene--with-companion-panel{padding-right:6vmin;padding-bottom:28vmin}.companion-side-panel{left:4vmin;right:4vmin;top:auto;bottom:4vmin;width:auto;min-width:0;max-width:none;transform:none;display:grid;grid-template-columns:72px minmax(0,1fr);align-items:center;padding:.8rem}body.has-touch .companion-side-panel{bottom:23vmin}.companion-side-image{width:72px}.companion-side-copy strong{font-size:1rem}.companion-side-copy small,.companion-side-kicker{font-size:.72rem}.companion-side-copy p{font-size:.78rem;line-height:1.45}.ideal-companion-layout{grid-template-columns:1fr;gap:2vmin}.ideal-companion-side{min-height:auto;border-left:0;border-top:1px solid rgba(255,216,107,.22);padding-top:2vmin}.companion-stage--ideal{min-height:22vmin}.companion-summary{min-height:auto}}.scene--roulette.is-fired{animation:fire-flash .5s ease both,shake .5s ease both}@keyframes fire-flash{0%{background:#7a1414}to{background:#070a1cd1}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-1.2vmin,.6vmin)}40%{transform:translate(1vmin,-.8vmin)}60%{transform:translate(-.8vmin,.4vmin)}80%{transform:translate(.6vmin,-.4vmin)}}.scene--roulette.rr--danger .risk-bar{animation:pulse .7s ease-in-out infinite}.scene--roulette.rr--danger .rr-val{color:#e8915f}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.cylinder{display:flex;gap:2vmin;margin-bottom:1vmin}.chamber{width:4vmin;height:4vmin;border-radius:50%;border:2px solid var(--gold-soft);background:transparent;transition:background .15s ease,box-shadow .15s ease}.chamber--on{background:var(--gold);box-shadow:0 0 2vmin #d4af6a99}.rr-stats{display:flex;gap:6vmin;margin:1vmin 0}.rr-stat{display:flex;flex-direction:column;gap:.6vmin}.rr-label{color:var(--muted);font-size:1.8vmin;letter-spacing:.15em}.rr-val{color:var(--gold);font-size:5vmin}.risk{width:60vmin;max-width:80vw;height:1.4vmin;border:1px solid var(--gold-soft);margin-top:1vmin}.risk-bar{height:100%;width:0;background:linear-gradient(90deg,var(--gold-soft),#d2603f);transition:width .2s ease}.rr-msg{margin:2vmin 0 0;font-size:2.4vmin;letter-spacing:.08em;min-height:3vmin}.rr-progress{margin:.5vmin 0 0;color:var(--muted);font-size:1.9vmin;letter-spacing:.12em}.sac-stage{transition:opacity .4s ease}.sac-prompt{margin:1.5vmin 0 0;color:var(--gold);font-size:3vmin;letter-spacing:.15em}.parts{display:flex;flex-wrap:wrap;justify-content:center;gap:1.6vmin;margin:2vmin 0 0}.part{border:1px solid var(--gold-soft);color:var(--ink);padding:1vmin 2.4vmin;font-size:2.4vmin;letter-spacing:.15em;transition:opacity .3s ease,color .3s ease,border-color .3s ease}.part--gone{opacity:.3;color:var(--muted);border-color:var(--muted);text-decoration:line-through}.scene--report{justify-content:flex-start;overflow-y:auto}.report{max-width:72ch;margin:0 auto;padding:6vmin 2vmin 2vmin;text-align:left}.rep-lead{color:var(--gold);font-size:2.8vmin;line-height:1.8;letter-spacing:.06em;margin:1vmin 0 3vmin;text-align:center}.rep-section{margin:0 0 3vmin}.rep-heading{color:var(--gold-soft);font-size:2.4vmin;letter-spacing:.15em;margin:0 0 1vmin;border-left:2px solid var(--gold-soft);padding-left:1.5vmin}.rep-body{margin:0;font-size:2.2vmin;line-height:2;letter-spacing:.04em}.rep-closing{text-align:center;color:var(--gold-soft);font-size:2.4vmin;letter-spacing:.12em;margin:3vmin 0 2vmin}.rep-data{color:var(--muted);font-size:1.7vmin;line-height:1.8;letter-spacing:.04em;border-top:1px solid rgba(111,115,144,.4);padding-top:2vmin;margin:2vmin 0 0}.rep-disclaimer{color:var(--muted);font-size:1.6vmin;line-height:1.7;margin:1.5vmin 0 0}.scene--report .hint{text-align:center}@media (max-width: 640px){.rep-lead{font-size:4.6vw}.rep-heading{font-size:4.2vw}.rep-body{font-size:4vw}.rep-closing{font-size:4.4vw}.rep-data{font-size:3.3vw}.rep-disclaimer{font-size:3.1vw}}.end-stage{opacity:.5;margin-bottom:1vmin;animation:pop-in .6s ease both}.end-title{margin:0;color:var(--gold);font-size:7vmin;letter-spacing:.25em}.end-body{margin:1vmin 0 0;max-width:60ch;min-height:14vmin;font-size:2.4vmin;line-height:2.1;letter-spacing:.06em;white-space:pre-line}@media (max-width: 640px){.end-title{font-size:9vw}.end-body{font-size:4.2vw}}.touch{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;flex-direction:column;align-items:center;pointer-events:none;font-family:inherit}.touch *{pointer-events:auto}.touch-toggle{margin-bottom:-1px;background:#070a1ce6;color:var(--muted);border:1px solid var(--gold-soft);border-bottom:none;border-radius:8px 8px 0 0;padding:6px 16px;font-size:13px;letter-spacing:.1em;cursor:pointer}.touch-pad{width:100%;display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;padding:12px 12px calc(12px + env(safe-area-inset-bottom));background:#070a1ceb;border-top:1px solid var(--gold-soft)}.touch-pad.is-hidden{display:none}.touch-btn{min-height:52px;padding:10px 18px;background:transparent;color:var(--gold);border:1px solid var(--gold-soft);border-radius:8px;font-family:inherit;font-size:clamp(14px,2.2vmin,19px);letter-spacing:.08em;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}.touch-btn:active{background:var(--gold);color:var(--navy-deep)}.touch-lever{min-width:38vw}.touch-parts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}@media (max-width: 640px){.rr-stats{gap:4vw;flex-wrap:wrap}.rr-val{font-size:8vw}.risk{width:86vw}.title{font-size:18vw}}.scene--companion-select,.scene--truth,.scene--deck{--act-tint: 38, 70%, 52%;background:radial-gradient(120% 90% at 50% 32%,hsla(var(--act-tint),.16),#1c120680 46%,#070a1ce6 86%)}.scene--delay,.scene--explore{--act-tint: 176, 46%, 46%;background:radial-gradient(120% 90% at 50% 30%,hsla(var(--act-tint),.14),#081a1e85 48%,#070a1ce6 86%)}.scene--roulette,.scene--dilemma{--act-tint: 4, 64%, 46%;background:radial-gradient(120% 90% at 50% 32%,hsla(var(--act-tint),.14),#22080a80 46%,#070a1ce6 86%)}.is-cursor{outline:.3vmin solid var(--gold);outline-offset:.4vmin}.truth-claim{color:var(--ink)}.truth-tile{color:var(--gold)}.truth-tile.is-cursor{color:var(--gold);text-shadow:0 0 1.4vmin hsla(var(--act-tint, 38 70% 52%),.5)}.deck-pile{color:var(--ink)}.deck-pile.is-cursor{box-shadow:0 0 2vmin #d4af6a73}.deck-flash{letter-spacing:.05em}.delay-tile{color:var(--ink)}.delay-amt{color:var(--gold)}.explore-grid .opt{color:var(--ink)}.explore-grid .opt--best{color:#6fdca0}.dilemma-prompt{color:var(--gold);line-height:1.7}.partsstatus{position:fixed;top:2vmin;right:2vmin;z-index:40;display:flex;flex-direction:column;align-items:flex-end;gap:1vmin;pointer-events:none;font-family:inherit}.partsstatus *{pointer-events:auto}.partsstatus-label{color:var(--gold-soft);font-size:1.6vmin;letter-spacing:.15em;opacity:.8}.partsstatus-parts{display:flex;flex-wrap:wrap;gap:.6vmin;justify-content:flex-end}.partsstatus .part{min-width:unset;padding:.6vmin 1.2vmin;font-size:1.4vmin;border:1px solid var(--gold-soft);border-radius:4px;color:var(--ink);letter-spacing:.08em;white-space:nowrap}.partsstatus .part--gone{opacity:.4;color:var(--muted);border-color:var(--muted);text-decoration:line-through}.partsstatus-hint{min-height:3vmin;color:var(--gold);font-size:1.8vmin;letter-spacing:.1em;text-align:right;opacity:0;transition:opacity .4s ease;line-height:1.4;max-width:30vmin}.partsstatus-hint--show{opacity:1}.debugpanel{position:fixed;top:0;right:0;z-index:999;display:flex;flex-direction:column;align-items:flex-end;pointer-events:none;font-family:Courier New,Courier,monospace}.debugpanel *{pointer-events:auto}.debug-toggle{margin-top:8px;margin-right:8px;background:#070a1cf2;color:#7fd6a0;border:1px solid #7fd6a0;border-radius:6px;padding:6px 12px;font-size:11px;letter-spacing:.08em;cursor:pointer;font-family:inherit;font-weight:700}.debug-toggle:hover{background:#070a1cfa;box-shadow:0 0 8px #7fd6a04d}.debug-content{max-width:320px;max-height:calc(100vh - 60px);overflow-y:auto;margin-top:0;margin-right:8px;margin-bottom:8px;background:#070a1cf5;border:1px solid #7fd6a0;border-radius:6px;padding:12px;color:#ccc;font-size:11px;line-height:1.4}.debug-content.is-hidden{display:none}.debug-section{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid rgba(127,214,160,.2)}.debug-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.debug-section h3{margin:0 0 8px;color:#7fd6a0;font-size:11px;font-weight:700;letter-spacing:.1em}.debug-status{margin:0;padding:4px 8px;background:#0006;border-radius:4px;font-weight:700}.debug-status.debug-ok{color:#7fd6a0}.debug-status.debug-error{color:#e8915f}.debug-baud{display:flex;gap:8px;align-items:center;margin-top:6px;font-size:10px}.debug-baud label{white-space:nowrap}.debug-select{padding:4px 6px;background:#00000080;color:#ccc;border:1px solid #7fd6a0;border-radius:3px;font-family:inherit;font-size:10px;cursor:pointer}.debug-log{height:120px;overflow-y:auto;background:#0000004d;border-radius:4px;padding:6px;border:1px solid rgba(127,214,160,.2)}.debug-line{margin:2px 0;font-size:9px;white-space:pre-wrap;word-break:break-all;font-family:inherit}.debug-matched{color:#7fd6a0}.debug-unmatched{color:#e8915f}.debug-events{background:#0000004d;border-radius:4px;padding:6px;border:1px solid rgba(127,214,160,.2);font-size:10px}.debug-events div{margin:3px 0}
