/* CocoroQuest Act Edition — Cinematic Visual Novel */
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --gold:#d4a574;
  --gold-dim:rgba(212,165,116,.5);
  --bg:#08080e;
  --panel:rgba(10,10,20,.88);
  --text:#e8e4df;
  --sub:rgba(200,195,188,.7);
  --aria:#b48ee0;
  --sun:#e8a55a;
}
html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:'Noto Sans JP','sans-serif'}

/* ===== PRELOADER ===== */
#preloader{position:fixed;inset:0;background:var(--bg);display:flex;justify-content:center;align-items:center;z-index:9999;transition:opacity .8s}
#preloader.done{opacity:0;pointer-events:none}
.preloader-inner{text-align:center}
.preloader-logo{font-family:'Cinzel',serif;font-size:clamp(2rem,5vw,3.5rem);color:var(--gold);text-shadow:0 0 40px rgba(212,165,116,.3);letter-spacing:.15em}
.preloader-sub{font-family:'Cormorant Garamond',serif;font-size:1rem;color:rgba(255,255,255,.4);margin:.5rem 0 2rem;letter-spacing:.3em;text-transform:uppercase}
.preloader-bar{width:180px;height:2px;background:rgba(255,255,255,.08);margin:0 auto 1rem;border-radius:1px}
.preloader-fill{height:100%;background:linear-gradient(90deg,var(--gold),#f0d4a8);border-radius:1px;width:0%;transition:width .25s}
.preloader-percent{font-size:.8rem;color:rgba(255,255,255,.35)}

/* ===== TAP TO START ===== */
#tap-overlay{position:fixed;inset:0;z-index:9998;background:var(--bg);display:flex;justify-content:center;align-items:center;cursor:pointer}
.tap-content{text-align:center}
.tap-logo{font-family:'Cinzel',serif;font-size:clamp(2.2rem,6vw,4rem);color:var(--gold);text-shadow:0 0 60px rgba(212,165,116,.25);letter-spacing:.1em}
.tap-hint{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:rgba(255,255,255,.55);margin-top:1.5rem;animation:pulse 2.5s ease-in-out infinite;letter-spacing:.2em}
@keyframes pulse{0%,100%{opacity:.4}50%{opacity:1}}

/* ===== GAME ===== */
#game{position:relative;width:100vw;height:100vh;overflow:hidden;background:#000}

/* Background */
#bg-layer{position:absolute;inset:0;z-index:1}
.bg-panel{position:absolute;inset:0;background-size:cover;background-position:center;transition:opacity 1.2s ease;filter:blur(20px) brightness(.5) saturate(1.2);transform:scale(1.15)}
#bg-b{opacity:0}

/* Video */
#video-layer{position:absolute;inset:0;z-index:2;display:flex;justify-content:center;align-items:center}
.char-video{height:100%;max-width:100%;object-fit:contain;transition:opacity .6s ease}
#vid-b{position:absolute;opacity:0}

/* Cinematic bars */
.cine-bar{position:absolute;left:0;right:0;background:#000;z-index:3;height:0;transition:height .8s cubic-bezier(.4,0,.2,1)}
#cine-top{top:0}
#cine-bottom{bottom:0}

/* ===== OPENING (CINEMATIC) ===== */
#opening{position:absolute;inset:0;z-index:10;overflow:hidden;background:#000}
.opening-bg-layer{position:absolute;inset:0;background-size:cover;background-position:center;transition:opacity 2s ease;opacity:0}
#opening-bg-a{opacity:1}

/* Dust particles overlay */
.opening-dust{position:absolute;inset:0;pointer-events:none;z-index:2;
  background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><circle cx="20" cy="30" r="1" fill="rgba(255,255,255,0.15)"/><circle cx="80" cy="60" r="0.7" fill="rgba(255,255,255,0.1)"/><circle cx="140" cy="20" r="0.8" fill="rgba(255,255,255,0.12)"/><circle cx="50" cy="140" r="0.6" fill="rgba(255,255,255,0.08)"/><circle cx="170" cy="100" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="100" cy="170" r="0.5" fill="rgba(255,255,255,0.07)"/></svg>');
  animation:dustFloat 20s linear infinite;opacity:.6}
@keyframes dustFloat{from{transform:translateY(0) translateX(0)}to{transform:translateY(-50px) translateX(30px)}}

/* Text overlay */
.opening-text-wrap{position:absolute;bottom:18%;left:0;right:0;z-index:5;text-align:center;padding:0 2rem}
.opening-en{font-family:'Cormorant Garamond',serif;font-size:clamp(1.1rem,2.5vw,1.5rem);color:rgba(255,255,255,.9);line-height:1.8;font-style:italic;letter-spacing:.03em;text-shadow:0 2px 20px rgba(0,0,0,.8);opacity:0;transition:opacity .8s ease}
.opening-ja{font-family:'Noto Serif JP',serif;font-size:clamp(.8rem,1.5vw,1rem);color:rgba(200,195,188,.6);margin-top:.6rem;line-height:1.7;text-shadow:0 2px 15px rgba(0,0,0,.8);opacity:0;transition:opacity .8s ease}
.opening-en.visible,.opening-ja.visible{opacity:1}

/* Guide light particles */
.guide-particle{position:absolute;top:40%;width:30px;height:30px;border-radius:50%;z-index:4;filter:blur(8px);animation:particlePulse 3s ease-in-out infinite;transition:opacity 2s ease;opacity:0}
.guide-particle.visible{opacity:1}
.particle-left{left:20%;transform:translateY(-50%);background:radial-gradient(circle,rgba(180,142,224,.8) 0%,rgba(180,142,224,0) 70%);box-shadow:0 0 40px rgba(180,142,224,.5),0 0 80px rgba(180,142,224,.2)}
.particle-right{right:20%;transform:translateY(-50%);background:radial-gradient(circle,rgba(232,165,90,.8) 0%,rgba(232,165,90,0) 70%);box-shadow:0 0 40px rgba(232,165,90,.5),0 0 80px rgba(232,165,90,.2)}
@keyframes particlePulse{0%,100%{transform:translateY(-50%) scale(1);opacity:.7}50%{transform:translateY(-50%) scale(1.4);opacity:1}}

/* Title card */
.opening-title-card{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:0;transition:opacity 2s ease}
.opening-title-card.visible{opacity:1}
.opening-title-main{font-family:'Cinzel',serif;font-size:clamp(2.5rem,7vw,4.5rem);color:var(--gold);letter-spacing:.15em;text-shadow:0 0 60px rgba(212,165,116,.3);margin-bottom:1rem}
.opening-title-sub{font-family:'Noto Serif JP',serif;font-size:clamp(.9rem,2vw,1.3rem);color:rgba(255,255,255,.6);letter-spacing:.2em}

/* Cinematic background images with blue-grey filter */
.op-bg-black{background:#000}
.op-bg-bedroom{background:url('../images/opening_bedroom.jpg') center/cover no-repeat;filter:brightness(.6) saturate(.7) sepia(.15) hue-rotate(190deg)}
.op-bg-train{background:url('../images/opening_train.jpg') center/cover no-repeat;filter:brightness(.5) saturate(.6) sepia(.1) hue-rotate(190deg)}
.op-bg-room{background:url('../images/opening_room.jpg') center/cover no-repeat;filter:brightness(.5) saturate(.5) sepia(.1) hue-rotate(190deg)}
.op-bg-sns{background:url('../images/opening_sns.jpg') center/cover no-repeat;filter:brightness(.6) saturate(.5)}
.op-bg-window{background:url('../images/opening_window.jpg') center/cover no-repeat;filter:brightness(.5) saturate(.5)}
.op-bg-city{background:url('../images/opening_city.jpg') center/cover no-repeat;filter:brightness(.45) saturate(.6) sepia(.1) hue-rotate(190deg)}

/* Character avatars */
.opening-avatar{position:absolute;bottom:15%;width:120px;height:120px;border-radius:50%;z-index:4;object-fit:cover;opacity:0;transition:opacity 2s ease;box-shadow:0 0 30px rgba(0,0,0,.6)}
.opening-avatar.visible{opacity:.85}
.avatar-aria{left:12%;border:2px solid rgba(180,142,224,.4);box-shadow:0 0 30px rgba(180,142,224,.3)}
.avatar-sunchan{right:12%;border:2px solid rgba(232,165,90,.4);box-shadow:0 0 30px rgba(232,165,90,.3)}

/* ===== EPISODE TITLE ===== */
#ep-title{position:absolute;inset:0;z-index:10;display:flex;justify-content:center;align-items:center;background:rgba(5,5,10,.95)}
.ep-title-inner{text-align:center;opacity:0;transform:translateY(20px);transition:opacity 1.2s ease,transform 1.2s ease}
.ep-title-inner.visible{opacity:1;transform:translateY(0)}
.ep-title-num{font-family:'Cinzel',serif;font-size:clamp(.9rem,1.8vw,1.1rem);color:var(--gold);letter-spacing:.3em;text-transform:uppercase;margin-bottom:.8rem}
.ep-title-name{font-family:'Noto Serif JP',serif;font-size:clamp(1.5rem,3.5vw,2.4rem);color:var(--text);letter-spacing:.08em;margin-bottom:1rem}
.ep-title-theme{font-family:'Cormorant Garamond',serif;font-size:clamp(.85rem,1.6vw,1.05rem);color:rgba(255,255,255,.4);font-style:italic;letter-spacing:.05em}

/* ===== DIALOGUE ===== */
#dialogue{position:absolute;bottom:0;left:0;right:0;z-index:5;padding:0 1rem 1rem}
.dlg-box{background:linear-gradient(180deg,rgba(8,8,18,.75) 0%,rgba(8,8,18,.92) 100%);backdrop-filter:blur(12px);border:1px solid rgba(212,165,116,.12);border-radius:8px;padding:1.2rem 1.6rem 1rem;max-width:900px;margin:0 auto;cursor:pointer;position:relative;min-height:90px}
.dlg-speaker{font-family:'Cinzel',serif;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:.5rem;color:var(--gold)}
.dlg-speaker.aria{color:var(--aria)}
.dlg-speaker.sunchan{color:var(--sun)}
.dlg-en{font-family:'Cormorant Garamond',serif;font-size:clamp(1rem,2vw,1.2rem);color:var(--text);line-height:1.65;min-height:1.5em;letter-spacing:.01em}
.dlg-ja{font-family:'Noto Sans JP',sans-serif;font-size:clamp(.72rem,1.2vw,.85rem);color:var(--sub);line-height:1.6;margin-top:.45rem;min-height:1.2em}
.dlg-advance{position:absolute;right:1rem;bottom:.6rem;color:var(--gold-dim);font-size:.65rem;animation:bob 1.5s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}

/* ===== CHOICE ===== */
#choice-screen{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;justify-content:center;align-items:center;background:rgba(5,5,16,.8);backdrop-filter:blur(8px)}
.choice-prompt{font-family:'Cormorant Garamond',serif;font-size:clamp(1rem,2.2vw,1.3rem);color:rgba(255,255,255,.7);margin-bottom:2rem;text-align:center;padding:0 1rem;font-style:italic}
.choice-list{display:flex;flex-direction:column;gap:.8rem;width:90%;max-width:600px}
.choice-btn{background:rgba(20,18,35,.7);border:1px solid rgba(212,165,116,.2);border-radius:6px;padding:1rem 1.4rem;cursor:pointer;text-align:left;transition:all .3s ease}
.choice-btn:hover{background:rgba(40,35,60,.8);border-color:rgba(212,165,116,.5);transform:translateX(4px)}
.choice-en{font-family:'Cormorant Garamond',serif;font-size:clamp(.95rem,1.8vw,1.1rem);color:var(--text);line-height:1.5}
.choice-ja{font-family:'Noto Sans JP',sans-serif;font-size:clamp(.7rem,1.1vw,.8rem);color:var(--sub);margin-top:.3rem}

/* ===== ENDING ===== */
#ending{position:absolute;inset:0;z-index:10;display:flex;justify-content:center;align-items:center;background:var(--bg)}
.ending-inner{text-align:center;opacity:0;transition:opacity 2s ease}
.ending-inner.visible{opacity:1}
.ending-title{font-family:'Cinzel',serif;font-size:clamp(2rem,5vw,3.5rem);color:var(--gold);letter-spacing:.15em;margin-bottom:1rem}
.ending-sub{font-family:'Cormorant Garamond',serif;font-size:1.2rem;color:rgba(255,255,255,.7);font-style:italic;margin-bottom:.5rem}
.ending-ja{font-family:'Noto Serif JP',serif;font-size:.95rem;color:rgba(200,195,188,.5);margin-bottom:2.5rem}
.ending-credits{font-size:.8rem;color:rgba(255,255,255,.3);line-height:2}
.ending-credits p{margin:0}

/* ===== UI BAR ===== */
#ui-bar{position:absolute;bottom:0;left:50%;transform:translateX(-50%);z-index:6;display:flex;gap:.6rem;padding:.5rem;margin-bottom:.3rem}
.ui-btn{background:rgba(20,18,30,.6);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.45);width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:.7rem;display:flex;justify-content:center;align-items:center;transition:all .2s}
.ui-btn:hover{border-color:var(--gold-dim);color:var(--gold)}
.ui-btn.active{border-color:var(--gold);color:var(--gold)}

/* ===== LAYER UTILITY ===== */
.layer{position:absolute;inset:0}
.fade-in{animation:fadeIn .8s ease forwards}
.fade-out{animation:fadeOut .8s ease forwards}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}

/* ===== RESPONSIVE ===== */
@media(max-width:600px){
  .dlg-box{padding:1rem 1.2rem .8rem;border-radius:6px}
  .cine-bar{height:0!important}
  #dialogue{padding:0 .5rem .5rem}
  .choice-btn{padding:.8rem 1rem}
}
