:root{color-scheme:dark;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;background:#07080c;color:#f8f7fa;--pink:#ff7898;--pink-soft:#ffadc0;--glass:rgba(13,13,19,.78);--line:rgba(255,255,255,.16)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#07080c}body{min-height:100svh;overflow-x:hidden}button{font:inherit}.is-hidden{display:none!important}#app{min-height:100svh}
.title-screen,.ending-screen{position:relative;min-height:100svh;overflow:hidden;display:grid;place-items:end start;isolation:isolate}
.title-art,.ending-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 42%;z-index:-3;animation:title-drift 12s ease-out both}.title-art{object-position:var(--focus-x,62%) var(--focus-y,42%);filter:saturate(.92) contrast(1.02)}
.title-vignette,.ending-vignette{position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(5,6,10,.96) 0%,rgba(5,6,10,.72) 40%,rgba(5,6,10,.1) 78%),linear-gradient(0deg,rgba(5,6,10,.78) 0%,transparent 42%)}
.title-copy,.ending-copy{width:min(38rem,100%);padding:clamp(1.35rem,5vw,4.5rem);padding-bottom:max(clamp(2.5rem,9vh,6rem),env(safe-area-inset-bottom))}
.eyebrow{margin:0 0 .8rem;color:var(--pink-soft);font-size:.82rem;font-weight:750;letter-spacing:.16em;text-transform:uppercase}h1,h2{margin:0;text-wrap:balance}h1{font-size:clamp(3rem,9vw,6.5rem);line-height:.9;letter-spacing:-.065em}h1 span{display:block;font-size:.52em;line-height:1.25;letter-spacing:-.035em;color:#e5e1e7}h2{font-size:clamp(2.2rem,7vw,4.7rem);line-height:1;letter-spacing:-.045em}
h1 b{font:inherit}
.premise,.ending-copy>p:not(.eyebrow,.ending-count){max-width:34rem;margin:1.3rem 0 1.7rem;color:#dfdce2;font-size:1rem;line-height:1.75;text-shadow:0 2px 16px #000;white-space:pre-line}.title-actions,.ending-actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}
.primary-button,.choice-button{border:1px solid transparent;border-radius:999px;color:#19080c;background:var(--pink);font-weight:800;cursor:pointer;box-shadow:0 12px 34px rgba(255,85,126,.22);transition:transform .18s ease,background .18s ease,border-color .18s ease}.primary-button{min-height:52px;padding:.85rem 1.55rem}.primary-button:hover,.choice-button:hover{background:#ff91aa;transform:translateY(-1px)}.primary-button:focus-visible,.choice-button:focus-visible,.text-button:focus-visible,.icon-button:focus-visible{outline:3px solid #fff;outline-offset:3px}
.text-button,.icon-button{border:1px solid var(--line);color:#f7f5f8;background:rgba(12,13,18,.58);backdrop-filter:blur(14px);cursor:pointer}.text-button{min-height:48px;padding:.75rem 1.05rem;border-radius:999px}.icon-button{width:44px;height:44px;border-radius:50%;font-size:1.05rem}.title-hint{position:absolute;right:1.4rem;bottom:max(1.25rem,env(safe-area-inset-bottom));margin:0;color:rgba(255,255,255,.7);font-size:.78rem}
.game-shell{min-height:100svh;display:grid;place-items:center;background:#05060a}.stage{position:relative;width:100%;height:100svh;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 60% 30%,#34343d,#111218 70%)}
.visual-layer,.scene-image,.scene-video,.fallback-scene,.scene-vignette,.scene-flash,.cinematic-bars{position:absolute;inset:0}.visual-layer{z-index:0;isolation:isolate}.scene-image,.scene-video{width:100%;height:100%;object-fit:cover;object-position:var(--focus-x,50%) var(--focus-y,45%)}.scene-image{opacity:0;transition:opacity .42s ease,filter .7s ease;z-index:-1}.scene-image.is-loaded{opacity:1}.scene-image.is-pushing{animation:push-in 7s ease-out both}.scene-image.is-dark{filter:brightness(.34) saturate(.65)}.scene-video{z-index:0;opacity:0;pointer-events:none;transition:opacity .35s ease;background:#050508}.scene-video.is-active{opacity:1}.fallback-scene{z-index:-2;background:radial-gradient(circle at 62% 32%,#3b3d49,#15161c 64%,#08090d)}
.character-layer{position:absolute;inset:0;z-index:1;pointer-events:none}.character-image{position:absolute;bottom:0;height:94%;width:auto;max-width:70%;object-fit:contain;object-position:bottom center;opacity:0;transition:opacity .3s ease,transform .5s ease;filter:drop-shadow(0 20px 38px rgba(0,0,0,.42))}.character-image.position-right{right:clamp(-8rem,-5vw,-1rem);transform:translateX(3%)}.character-image.position-left{left:clamp(-8rem,-5vw,-1rem);transform:translateX(-3%)}.character-image.position-center{left:50%;transform:translateX(-50%)}.character-image.position-right.is-visible,.character-image.position-left.is-visible{opacity:1;transform:translateX(0)}.character-image.position-center.is-visible{opacity:1;transform:translateX(-50%)}
.scene-vignette{z-index:2;pointer-events:none;background:linear-gradient(0deg,rgba(4,5,8,.88) 0%,rgba(4,5,8,.22) 46%,rgba(4,5,8,.15) 100%),linear-gradient(90deg,rgba(0,0,0,.28),transparent 48%)}.scene-flash{z-index:8;pointer-events:none;background:#fff;opacity:0}.stage.is-flickering .scene-flash{animation:flicker .72s linear both}.cinematic-bars{z-index:3}.cinematic-bars::before,.cinematic-bars::after{content:"";position:absolute;left:0;right:0;height:clamp(0px,3vw,34px);background:#050508}.cinematic-bars::before{top:0}.cinematic-bars::after{bottom:0}
.game-hud{position:absolute;z-index:4;top:max(.9rem,env(safe-area-inset-top));left:max(.9rem,env(safe-area-inset-left));right:max(.9rem,env(safe-area-inset-right));display:flex;align-items:center;justify-content:space-between;gap:1rem}.chapter-track{display:flex;gap:.45rem;align-items:center;padding:.55rem .7rem;border-radius:999px;background:rgba(8,9,13,.46);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1)}.chapter-dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.26)}.chapter-dot.is-active{width:18px;border-radius:999px;background:var(--pink)}.hud-actions{display:flex;gap:.5rem}
.dialogue-panel{position:absolute;z-index:5;left:max(1rem,env(safe-area-inset-left));right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));max-width:58rem;margin:auto;padding:1rem 1.1rem 1.05rem;border:1px solid rgba(255,255,255,.16);border-radius:20px;background:var(--glass);backdrop-filter:blur(22px) saturate(1.15);box-shadow:0 24px 70px rgba(0,0,0,.38)}.speaker-row{display:flex;justify-content:space-between;gap:1rem;align-items:center}.speaker{color:var(--pink-soft);font-weight:850;font-size:.9rem;letter-spacing:.06em}.advance-hint{color:rgba(255,255,255,.52);font-size:.75rem}.dialogue-text{min-height:3.6em;margin:.65rem 0 0;color:#fff;font-size:clamp(1rem,2.2vw,1.2rem);line-height:1.65;white-space:pre-line;text-wrap:pretty}.choice-list{display:grid;gap:.65rem;margin-top:.85rem;position:relative;z-index:7}.choice-button{width:100%;min-height:52px;padding:.75rem 1rem;text-align:left;border-radius:14px;background:rgba(255,255,255,.93);color:#17141a;box-shadow:none}.choice-button small{margin-right:.6rem;color:#9f5266;font-weight:900}.advance-zone{position:absolute;z-index:3;inset:0;border:0;background:transparent;cursor:pointer}.dialogue-panel,.game-hud{pointer-events:auto}
.dialogue-panel{transition:opacity .3s ease,transform .3s ease}.stage.is-cinematic-playing .dialogue-panel{opacity:0;transform:translateY(1rem);pointer-events:none}.cinematic-skip{min-height:44px;padding:.6rem .85rem;background:rgba(5,6,10,.64)}
.moment-card{display:inline-flex;position:relative;z-index:1;max-width:100%;margin:0 0 .7rem;padding:.46rem .72rem;border:1px solid rgba(255,173,192,.26);border-radius:999px;background:rgba(255,120,152,.1);color:#ffdbe4;font-size:.8rem;line-height:1.35;letter-spacing:.035em;animation:moment-inline 2.1s ease both}.ending-count{color:rgba(255,255,255,.62);font-size:.82rem;margin:0 0 1.4rem}
.gallery-button span{margin-left:.35rem;color:var(--pink-soft);font-weight:800}.gallery-screen{min-height:100svh;padding:max(1.25rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(2rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));background:radial-gradient(circle at 88% 4%,rgba(255,120,152,.16),transparent 30%),linear-gradient(155deg,#11121a 0%,#07080c 55%,#0d0910 100%)}.gallery-shell{width:min(1180px,100%);margin:0 auto}.gallery-header{position:sticky;z-index:2;top:0;display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:.7rem 0 1.2rem;background:linear-gradient(180deg,#11121a 55%,transparent)}.gallery-header h2{font-size:clamp(2.2rem,7vw,4.4rem)}.gallery-progress{margin:.7rem 0 0;color:rgba(255,255,255,.64);font-size:.95rem}.cg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:1rem;padding:.7rem 0 2rem}.cg-card{position:relative;display:block;width:100%;padding:0;overflow:hidden;border:1px solid rgba(255,255,255,.13);border-radius:18px;background:#13141b;color:#fff;text-align:left;cursor:pointer;box-shadow:0 16px 46px rgba(0,0,0,.2);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.cg-card:not(:disabled):hover{transform:translateY(-3px);border-color:rgba(255,173,192,.62);box-shadow:0 20px 58px rgba(0,0,0,.32)}.cg-card:focus-visible,.viewer-close:focus-visible{outline:3px solid #fff;outline-offset:3px}.cg-card:disabled{cursor:not-allowed;color:rgba(255,255,255,.46)}.cg-card-art{position:relative;aspect-ratio:16/9;overflow:hidden;background:radial-gradient(circle at 68% 28%,#35313b,#171820 62%,#0c0d12)}.cg-card-art img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.cg-card:not(:disabled):hover img{transform:scale(1.025)}.cg-card.is-locked .cg-card-art::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.035),transparent 45%),repeating-linear-gradient(135deg,transparent 0 16px,rgba(255,255,255,.015) 16px 17px)}.cg-lock{position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,255,255,.38);font-size:2rem;font-weight:300}.cg-card-meta{display:block;min-height:78px;padding:.85rem 1rem 1rem}.cg-card-chapter{display:block;margin-bottom:.3rem;color:var(--pink-soft);font-size:.74rem;font-weight:750;letter-spacing:.08em}.cg-card-title{display:block;font-size:1rem;font-weight:800}.cg-card-number{position:absolute;top:.65rem;left:.7rem;padding:.3rem .48rem;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(5,6,10,.58);backdrop-filter:blur(8px);color:rgba(255,255,255,.76);font-size:.7rem;font-weight:800}
.cg-viewer{width:100vw;max-width:none;height:100svh;max-height:none;margin:0;padding:0;border:0;background:rgba(5,6,10,.96);color:#fff}.cg-viewer::backdrop{background:rgba(0,0,0,.86)}.cg-viewer-shell{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left))}.cg-viewer-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:min(1200px,100%);margin:0 auto;padding-bottom:.8rem}.cg-viewer-header h2{font-size:clamp(1.4rem,4vw,2.25rem);letter-spacing:-.025em}.cg-viewer-chapter{margin:0 0 .25rem;color:var(--pink-soft);font-size:.76rem;font-weight:800;letter-spacing:.1em}.viewer-close{flex:0 0 auto}.cg-viewer-canvas{min-height:0;display:grid;place-items:center}.cg-viewer-canvas img{display:block;max-width:min(1200px,100%);max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 30px 90px rgba(0,0,0,.54)}.cg-viewer-controls{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.8rem;width:min(760px,100%);margin:0 auto;padding-top:.9rem}.cg-viewer-controls button:first-child{justify-self:end}.cg-viewer-controls button:last-child{justify-self:start}.cg-viewer-controls span{color:rgba(255,255,255,.6);font-size:.82rem}.cg-viewer-controls button:disabled{opacity:.35;cursor:not-allowed}
.cg-viewer-canvas video{display:block;max-width:min(1200px,100%);max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 30px 90px rgba(0,0,0,.54)}
@keyframes push-in{from{transform:scale(1)}to{transform:scale(1.035)}}@keyframes title-drift{from{transform:scale(1.045)}to{transform:scale(1)}}@keyframes flicker{0%,22%,46%,100%{opacity:0}12%,34%{opacity:.82}58%{opacity:.14}}@keyframes moment-inline{0%{opacity:0;transform:translateY(.35rem)}18%,72%{opacity:1;transform:translateY(0)}100%{opacity:0}}
@media(min-width:900px){.stage{width:min(100%,1280px);height:min(100svh,720px);aspect-ratio:16/9;border:1px solid rgba(255,255,255,.11);box-shadow:0 0 100px rgba(0,0,0,.7)}.dialogue-panel{left:2rem;right:auto;bottom:1.5rem;width:min(54rem,calc(100% - 4rem))}.title-copy,.ending-copy{margin-left:3vw}}
@media(max-width:620px){.title-art,.ending-art{object-position:64% 40%}.title-vignette,.ending-vignette{background:linear-gradient(0deg,rgba(5,6,10,.97) 0%,rgba(5,6,10,.73) 42%,rgba(5,6,10,.08) 78%)}.title-copy,.ending-copy{padding-bottom:max(4rem,env(safe-area-inset-bottom))}.premise{max-width:25rem}.title-hint{display:none}.character-image{height:76%;max-width:108%}.character-image.position-right{right:-28%}.character-image.position-left{left:-28%}.dialogue-panel{border-radius:18px}.dialogue-text{min-height:4.8em}.cinematic-bars::before,.cinematic-bars::after{height:0}.gallery-header{align-items:flex-start}.gallery-header .text-button{padding:.6rem .8rem;min-height:44px}.cg-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.cg-card{border-radius:13px}.cg-card-meta{min-height:70px;padding:.65rem .72rem .8rem}.cg-card-title{font-size:.88rem}.cg-card-chapter{font-size:.66rem}.cg-viewer-shell{padding-left:.65rem;padding-right:.65rem}.cg-viewer-canvas img{border-radius:8px}.cg-viewer-controls .text-button{min-height:44px;padding:.6rem .82rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.12s!important}}
.cg-card-art{display:block}

/* The title preview uses the same focused background and sprite treatment as the story stage. */
.title-character-layer{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.title-character-layer .character-image{height:94%;max-width:70%;z-index:0}
.title-vignette{z-index:0;pointer-events:none}
.title-copy{position:relative;z-index:1}
.title-hint{z-index:1}
.resume-label{min-height:1.3em;margin:.8rem 0 -.45rem;color:var(--pink-soft);font-size:.78rem;font-weight:800;letter-spacing:.08em}
.title-actions{position:relative;z-index:2}

/* Branch history is intentionally a scrollable, single-column graph on narrow screens. */
.branches-screen{min-height:100svh;padding:max(1.25rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(2rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));background:radial-gradient(circle at 88% 4%,rgba(255,120,152,.16),transparent 30%),linear-gradient(155deg,#11121a 0%,#07080c 55%,#0d0910 100%);overflow-x:hidden}
.branches-shell{width:min(860px,100%);margin:0 auto}
.branches-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:.7rem 0 1.5rem}
.branches-header h2{font-size:clamp(2.2rem,7vw,4.4rem)}
.branch-summary{max-width:42rem;margin:.7rem 0 0;color:rgba(255,255,255,.64);font-size:.92rem;line-height:1.6}
.branch-list{position:relative;display:grid;gap:.75rem;padding:.2rem 0 2rem;isolation:isolate}
.branch-list::before{content:"";position:absolute;z-index:-1;top:1.25rem;bottom:2rem;left:.64rem;width:1px;background:linear-gradient(rgba(255,173,192,.65),rgba(255,255,255,.1))}
.branch-node{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.3rem .75rem;width:100%;min-height:4.05rem;padding:.72rem 1rem .72rem calc(1rem + (var(--branch-depth,0) * 1.1rem));border:1px solid rgba(255,255,255,.13);border-radius:16px;background:rgba(15,16,23,.83);color:#f8f7fa;text-align:left;box-shadow:0 14px 34px rgba(0,0,0,.2);cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease}
.branch-node::before{content:"";position:absolute;top:50%;left:.22rem;width:1.15rem;height:1px;background:rgba(255,173,192,.45)}
.branch-node:hover:not(:disabled){transform:translateY(-2px);border-color:rgba(255,173,192,.64);background:rgba(29,20,29,.92)}
.branch-node:focus-visible{outline:3px solid #fff;outline-offset:3px}
.branch-node.is-current{border-color:var(--pink);background:color-mix(in srgb,var(--pink) 14%,rgba(15,16,23,.9));box-shadow:0 0 0 1px color-mix(in srgb,var(--pink) 35%,transparent),0 14px 34px rgba(0,0,0,.2)}
.branch-node.is-locked{color:rgba(255,255,255,.42);border-style:dashed;cursor:not-allowed}
.branch-node.is-locked::after{content:"鎖定";position:absolute;top:.72rem;right:1rem;color:rgba(255,255,255,.36);font-size:.72rem;font-weight:800;letter-spacing:.08em}
.branch-node>span{grid-column:1/-1;min-width:0;font-size:.98rem;font-weight:800;line-height:1.45}
.branch-node>small{grid-column:1/-1;min-width:0}
.branch-node .branch-depth{align-self:start;min-width:1.7rem;padding:.24rem .34rem;border:1px solid rgba(255,255,255,.12);border-radius:999px;color:var(--pink-soft);font-size:.66rem;font-weight:850;line-height:1;text-align:center;white-space:nowrap}
.branch-node small{display:block;margin-top:.2rem;color:rgba(255,255,255,.52);font-size:.74rem;line-height:1.35}
.branch-node .branch-connections{margin-top:.1rem;padding-top:.45rem;border-top:1px solid rgba(255,255,255,.09);color:rgba(255,255,255,.42);font-size:.68rem;line-height:1.5;overflow-wrap:anywhere}
.branch-node.is-locked .branch-depth{color:rgba(255,255,255,.3)}
.game-home-button{min-height:44px;padding:.6rem .85rem;white-space:nowrap}
.hud-actions{flex-wrap:wrap;justify-content:flex-end}

@media(max-width:620px){
  .title-art{object-position:var(--focus-x,64%) var(--focus-y,40%)}
  .title-character-layer .character-image{height:76%;max-width:108%}
  .title-character-layer .character-image.position-right{right:-28%}
  .title-character-layer .character-image.position-left{left:-28%}
  .resume-label{margin-top:.65rem}
  .branches-header{align-items:flex-start;padding-bottom:1.15rem}
  .branches-header .text-button{min-height:44px;padding:.6rem .8rem}
  .branch-node{min-height:3.7rem;padding-block:.65rem}
  .branch-node .branch-depth{min-width:1.55rem}
  .hud-actions{gap:.35rem}
  .game-home-button{padding-inline:.7rem}
}

@media(max-width:360px){
  .title-copy{padding-inline:1rem}
  .title-actions{gap:.5rem}
  .title-actions .text-button{padding-inline:.78rem}
  .branch-node{gap:.55rem;padding-inline-end:.72rem}
}

@media(min-width:900px){
  .title-screen{width:min(100%,1280px);height:min(100svh,720px);min-height:0;aspect-ratio:16/9;margin-inline:auto;border:1px solid rgba(255,255,255,.11);box-shadow:0 0 100px rgba(0,0,0,.7)}
}

/* Resume preview and in-game stage share a static, unfiltered camera frame. */
.title-art{animation:none;filter:none}
.title-art.is-dark{filter:brightness(.34) saturate(.65)}
.branches-header{position:sticky;top:0;z-index:3;background:#11121a}
.branches-header .text-button{flex-shrink:0;white-space:nowrap}


/* W4 — product UI, Memories, and replay/frontier presentation */
.title-copy{width:min(34rem,100%)}
.title-actions{display:grid;width:min(30rem,100%);gap:.75rem}
.title-primary{width:100%;min-height:58px;border-radius:18px;font-size:1.05rem}
.title-secondary-actions{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.title-secondary-actions .text-button{width:100%;border-radius:16px}
.memories-button span,.gallery-button span{margin-left:.35rem;color:var(--pink-soft);font-weight:800}
.title-sound{position:absolute;z-index:4;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));background:rgba(8,9,13,.52)}

.memories-screen{min-height:100svh;padding:max(1.25rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(3rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));background:radial-gradient(circle at 80% 0%,rgba(255,120,152,.15),transparent 34%),linear-gradient(155deg,#11121a 0%,#07080c 58%,#0c0910 100%);overflow-x:hidden}
.memories-shell{width:min(1040px,100%);margin:0 auto}
.memories-header{position:sticky;z-index:5;top:0;display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:.7rem 0 1rem;background:linear-gradient(180deg,#11121a 66%,transparent)}
.memories-header h2{font-size:clamp(2.4rem,7vw,4.8rem)}
.memory-summary{margin:.65rem 0 0;color:rgba(255,255,255,.62);font-size:.92rem}
.memory-toolbar{position:sticky;z-index:4;top:clamp(5.6rem,12vw,7.8rem);display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem 0 1rem;background:linear-gradient(180deg,rgba(17,18,26,.96) 60%,transparent)}
.memory-filters{display:flex;flex-wrap:wrap;gap:.45rem}
.memory-filter{min-height:44px;padding:.55rem .8rem;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(12,13,18,.62);color:rgba(255,255,255,.7);cursor:pointer}
.memory-filter.is-active{border-color:rgba(255,173,192,.65);background:rgba(255,120,152,.14);color:#fff}
.memory-current{flex:0 0 auto;min-height:44px;padding:.55rem .85rem}
.memory-list{display:grid;gap:2.1rem;padding:1rem 0 3rem}
.memory-section{display:grid;gap:.8rem}
.memory-section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding-left:.25rem}
.memory-section-heading .eyebrow{margin:0}
.memory-section-heading h3{margin:0;font-size:1.2rem;letter-spacing:-.02em}
.memory-cards{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;padding-left:1.15rem}
.memory-cards::before{content:"";position:absolute;left:.3rem;top:.8rem;bottom:.8rem;width:1px;background:linear-gradient(var(--pink-soft),rgba(255,255,255,.08))}
.memory-card{position:relative;min-height:168px;padding:0;overflow:hidden;border:1px solid rgba(255,255,255,.13);border-radius:18px;background:#15161e;color:#fff;text-align:left;cursor:pointer;isolation:isolate;box-shadow:0 18px 46px rgba(0,0,0,.25);transition:transform .18s ease,border-color .18s ease}
.memory-card::before{content:"";position:absolute;z-index:3;left:-1.22rem;top:50%;width:.72rem;height:.72rem;border:2px solid #1b1c24;border-radius:50%;background:var(--pink-soft);transform:translateY(-50%)}
.memory-card:not(:disabled):hover{transform:translateY(-2px);border-color:rgba(255,173,192,.6)}
.memory-card.is-frontier{border-color:var(--pink);box-shadow:0 0 0 1px rgba(255,120,152,.35),0 20px 54px rgba(0,0,0,.3)}
.memory-card.is-frontier::after{content:"CONTINUE";position:absolute;z-index:4;top:.65rem;right:.7rem;padding:.3rem .48rem;border-radius:999px;background:rgba(255,120,152,.88);color:#24080f;font-size:.65rem;font-weight:900;letter-spacing:.08em}
.memory-card.is-locked{min-height:112px;border-style:dashed;color:rgba(255,255,255,.5);cursor:not-allowed}
.memory-card.is-locked::before{background:rgba(255,255,255,.25)}
.memory-card-art,.memory-card-shade{position:absolute;inset:0;width:100%;height:100%}
.memory-card-art{z-index:-2;object-fit:cover;object-position:var(--memory-focus-x,50%) var(--memory-focus-y,45%);filter:saturate(.58) brightness(.58) contrast(.92);transform:scale(1.015)}
.memory-card-shade{z-index:-1;background:linear-gradient(90deg,rgba(7,8,12,.93) 0%,rgba(7,8,12,.63) 62%,rgba(7,8,12,.35) 100%),linear-gradient(0deg,rgba(7,8,12,.88),transparent 70%)}
.memory-card-body{display:flex;flex-direction:column;align-items:flex-start;gap:.38rem;min-height:inherit;padding:1.05rem 1.15rem}
.memory-card-meta{color:var(--pink-soft);font-size:.7rem;font-weight:850;letter-spacing:.06em}
.memory-card strong{max-width:82%;font-size:1.08rem;line-height:1.25}
.memory-card-summary{max-width:34rem;color:rgba(255,255,255,.75);font-size:.82rem;line-height:1.5}
.memory-card-cg{margin-top:auto;padding-top:.35rem;color:rgba(255,255,255,.5);font-size:.7rem;font-weight:700}

.dialogue-panel{left:max(1rem,env(safe-area-inset-left));right:auto;bottom:max(1rem,env(safe-area-inset-bottom));width:min(46%,35rem);max-width:none;margin:0;padding:1.2rem 1.1rem 1rem;border-radius:18px;background:rgba(12,13,19,.76)}
.speaker-badge{position:absolute;left:.9rem;top:-1.15rem;display:inline-flex;min-height:34px;align-items:center;padding:.35rem .72rem;border:1px solid rgba(255,173,192,.34);border-radius:999px;background:rgba(12,13,19,.9);backdrop-filter:blur(14px);box-shadow:0 10px 24px rgba(0,0,0,.25)}
.advance-hint{position:absolute;right:1rem;top:.65rem}
.dialogue-text{min-height:3.4em;margin:.45rem 0 0;font-size:clamp(.98rem,1.7vw,1.14rem)}
.choice-list{position:absolute;z-index:7;right:max(2rem,env(safe-area-inset-right));bottom:max(1.5rem,env(safe-area-inset-bottom));width:min(36%,29rem);display:grid;gap:.55rem;margin:0}
.choice-list.is-hidden{display:none!important}
.choice-button{min-height:50px;background:rgba(246,244,247,.94);backdrop-filter:blur(12px)}
.game-memories-button,.game-home-button{min-height:44px;padding:.6rem .78rem}

@media(max-width:760px){
  .title-copy{width:100%}
  .title-actions{width:100%}
  .memory-toolbar{top:5.8rem;align-items:flex-start;flex-direction:column}
  .memory-current{align-self:stretch}
  .memory-cards{grid-template-columns:1fr;padding-left:.95rem}
  .memory-card{min-height:150px}
  .memory-card-art{object-position:var(--memory-mobile-focus-x,var(--memory-focus-x,50%)) var(--memory-mobile-focus-y,var(--memory-focus-y,45%))}
  .memories-header{align-items:flex-start}
  .memories-header .text-button{min-height:44px;padding:.6rem .78rem}
  .dialogue-panel{left:max(.75rem,env(safe-area-inset-left));right:max(.75rem,env(safe-area-inset-right));bottom:max(.75rem,env(safe-area-inset-bottom));width:auto;max-width:none}
  .choice-list{left:max(.75rem,env(safe-area-inset-left));right:max(.75rem,env(safe-area-inset-right));bottom:calc(max(.75rem,env(safe-area-inset-bottom)) + 9.7rem);width:auto}
  .choice-button{min-height:48px}
  .dialogue-text{min-height:4.6em}
  .game-hud{gap:.5rem}
  .chapter-track{padding:.5rem .58rem}
}
@media(max-width:420px){
  .title-secondary-actions{gap:.5rem}
  .title-secondary-actions .text-button{padding-inline:.65rem}
  .memory-filters{gap:.35rem}
  .memory-filter{padding-inline:.65rem}
  .memory-card-body{padding:.9rem}
  .memory-card strong{max-width:78%}
  .hud-actions{gap:.3rem}
  .game-memories-button,.game-home-button{padding-inline:.6rem}
}


/* Adaptive ADV presentation: one primary reading/interaction state at a time. */
.dialogue-panel[data-mode="narration"]{
  border-color:rgba(255,255,255,.12);
  background:linear-gradient(180deg,rgba(12,13,19,.7),rgba(9,10,15,.82));
}
.dialogue-panel[data-mode="narration"] .dialogue-text{
  color:rgba(255,255,255,.92);
  letter-spacing:.01em;
}
.dialogue-panel[data-mode="thought"]{
  width:min(42%,32rem);
  border-color:rgba(255,173,192,.2);
  background:linear-gradient(180deg,rgba(16,13,20,.64),rgba(9,9,15,.8));
}
.dialogue-panel[data-mode="thought"] .dialogue-text{
  color:rgba(255,244,248,.9);
  font-style:italic;
}
.dialogue-panel[data-mode="protagonist"]{
  border-color:rgba(255,255,255,.13);
}
.dialogue-panel[data-mode="protagonist"] .speaker-badge{
  color:rgba(255,255,255,.72);
  border-color:rgba(255,255,255,.16);
  background:rgba(12,13,19,.82);
}
.choice-list{
  left:50%;
  right:auto;
  bottom:max(1.25rem,env(safe-area-inset-bottom));
  width:min(92vw,34rem);
  transform:translateX(-50%);
  gap:.7rem;
}
.choice-button{
  min-height:56px;
  padding:.9rem 1rem;
  border:1px solid rgba(255,255,255,.2);
  border-radius:16px;
  background:linear-gradient(180deg,rgba(28,26,33,.9),rgba(15,15,21,.94));
  color:#fff;
  box-shadow:0 14px 34px rgba(0,0,0,.28);
  backdrop-filter:blur(18px) saturate(1.08);
  transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease;
}
.choice-button:hover,
.choice-button:focus-visible{
  background:linear-gradient(180deg,rgba(86,43,58,.96),rgba(42,24,33,.96));
  border-color:rgba(255,173,192,.72);
  box-shadow:0 16px 42px rgba(0,0,0,.34),0 0 0 1px rgba(255,120,152,.16);
}
.choice-button small{
  display:inline-grid;
  place-items:center;
  min-width:1.6rem;
  height:1.6rem;
  margin-right:.75rem;
  border:1px solid rgba(255,173,192,.3);
  border-radius:999px;
  color:var(--pink-soft);
  background:rgba(255,120,152,.08);
  font-size:.72rem;
}
.stage[data-presentation="choice"] .advance-zone{
  pointer-events:none;
}
.stage[data-presentation="choice"] .choice-list{
  animation:choice-rise .22s ease-out both;
}
@keyframes choice-rise{
  from{opacity:0;transform:translate(-50%,10px)}
  to{opacity:1;transform:translate(-50%,0)}
}

@media(max-width:760px){
  .dialogue-panel{
    left:max(.72rem,env(safe-area-inset-left));
    right:max(.72rem,env(safe-area-inset-right));
    bottom:max(.72rem,env(safe-area-inset-bottom));
    width:auto;
    padding:1.05rem 1rem .95rem;
    border-radius:20px;
    background:linear-gradient(180deg,rgba(16,16,23,.7),rgba(9,10,15,.88));
    box-shadow:0 18px 54px rgba(0,0,0,.42);
  }
  .dialogue-panel[data-mode="thought"]{width:auto}
  .dialogue-text{
    min-height:3.6em;
    margin:.5rem 0 0;
    font-size:clamp(1rem,4.2vw,1.12rem);
    line-height:1.68;
  }
  .speaker-badge{
    left:.85rem;
    top:-1rem;
    min-height:32px;
    padding:.32rem .68rem;
  }
  .advance-hint{
    right:.85rem;
    top:.58rem;
    font-size:.7rem;
  }
  .choice-list{
    left:max(.72rem,env(safe-area-inset-left));
    right:max(.72rem,env(safe-area-inset-right));
    bottom:max(.72rem,env(safe-area-inset-bottom));
    width:auto;
    transform:none;
    gap:.62rem;
  }
  .choice-button{
    min-height:58px;
    padding:.88rem .95rem;
    font-size:1rem;
    line-height:1.45;
    border-radius:17px;
  }
  .stage[data-presentation="choice"] .choice-list{
    animation:choice-rise-mobile .22s ease-out both;
  }
  @keyframes choice-rise-mobile{
    from{opacity:0;transform:translateY(10px)}
    to{opacity:1;transform:translateY(0)}
  }
}

@media(max-width:520px) and (orientation:portrait){
  .game-hud{
    top:max(.65rem,env(safe-area-inset-top));
    left:max(.65rem,env(safe-area-inset-left));
    right:max(.65rem,env(safe-area-inset-right));
  }
  .chapter-track{
    gap:.35rem;
    padding:.46rem .55rem;
    background:rgba(8,9,13,.38);
  }
  .hud-actions .text-button{
    min-height:40px;
    padding:.5rem .68rem;
    font-size:.76rem;
  }
  .hud-actions .icon-button{
    width:40px;
    height:40px;
  }
  .dialogue-panel{
    bottom:max(.8rem,env(safe-area-inset-bottom));
    padding:1rem .95rem .88rem;
  }
  .choice-list{
    bottom:max(.9rem,env(safe-area-inset-bottom));
  }
}
