<style>

:root{
  /* 몸속 = 따뜻한 붉은/분홍/살구 계열 */
  --bg:#1a0a08;
  --panel:#2a1210;
  --panel2:#351815;
  --border:#5a2a22;
  --accent:#ff7043;       /* 주황-붉은 */
  --accent2:#ffb74d;      /* 따뜻한 황금 */
  --red:#e53935;
  --green:#66bb6a;
  --cyan:#4dd0e1;
  --purple:#ab47bc;
  --gold:#ffcc02;
  --text:#fff0e8;
  --sub:#c09080;
  --fh:'Nanum Gothic',sans-serif;
  --fb:'Noto Sans KR',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--fb)}
/* 몸속 혈관 느낌 배경 */
body::before{
  content:'';position:fixed;inset:0;
  background:
    radial-gradient(ellipse 60% 40% at 30% 30%,rgba(180,40,20,.12),transparent 60%),
    radial-gradient(ellipse 50% 60% at 70% 70%,rgba(220,80,30,.08),transparent 60%);
  pointer-events:none;z-index:0
}

/* ══ INTRO ══ */
#introScreen{
  position:fixed;inset:0;z-index:1000;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  overflow:hidden;
  padding:8px 0;
  background:linear-gradient(160deg,#1a0505 0%,#2d0e0a 40%,#1a0810 100%);
}
/* 혈관 패턴 배경 */
#introScreen::before{
  content:'';position:absolute;inset:0;
  background-image:
    repeating-linear-gradient(45deg,rgba(180,50,30,.05) 0px,rgba(180,50,30,.05) 1px,transparent 1px,transparent 18px),
    repeating-linear-gradient(-45deg,rgba(180,50,30,.04) 0px,rgba(180,50,30,.04) 1px,transparent 1px,transparent 18px);
  pointer-events:none;
}
.intro-particles{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.cell{position:absolute;border-radius:50%;animation:floatCell linear infinite;opacity:0}
@keyframes floatCell{
  0%{transform:translateY(110vh) scale(0.5);opacity:0}
  10%{opacity:.6}90%{opacity:.4}
  100%{transform:translateY(-10vh) scale(1.2);opacity:0}
}

.intro-content{
  position:relative;z-index:2;
  display:flex;flex-direction:column;align-items:center;
  gap:3px;text-align:center;padding:0 12px;max-width:680px;width:100%
}
.intro-tag{
  background:rgba(255,112,67,.2);border:1px solid rgba(255,112,67,.5);
  border-radius:20px;padding:3px 10px;
  font-size:.76rem;color:#ffaa80;font-weight:700;letter-spacing:2px;margin-bottom:2px
}
.intro-title{
  font-family:var(--fh);font-size:clamp(1.2rem,3.5vw,2rem);
  font-weight:800;color:#fff;letter-spacing:1px;line-height:1.1;margin-bottom:2px;
  text-shadow:0 0 40px rgba(255,112,67,.6)
}
.intro-sub{
  font-size:clamp(.75rem,1.6vw,.9rem);color:#ffb89a;
  font-weight:700;letter-spacing:1px;margin-bottom:10px
}

/* 민수 + 말풍선 */
.char-scene{display:flex;align-items:flex-end;justify-content:center;gap:10px;margin-bottom:2px;width:100%;max-width:560px}
.minsoo-img-wrap{
  flex-shrink:0;
  filter:drop-shadow(0 4px 20px rgba(255,80,50,.6));
  animation:breathe 3s ease-in-out infinite
}
@keyframes breathe{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8px) rotate(1deg)}}
.minsoo-img-wrap img{width:clamp(60px,10vw,85px);display:block}
.bubble{
  background:rgba(40,10,8,.95);border:2px solid var(--gold);
  border-radius:16px;border-bottom-left-radius:4px;
  padding:7px 11px;max-width:300px;text-align:left;
  box-shadow:0 0 16px rgba(255,204,2,.2)
}
.bubble .speaker{font-weight:800;font-size:.8rem;color:var(--gold);margin-bottom:3px}
.bubble p{font-size:clamp(.7rem,1.5vw,.8rem);line-height:1.65;color:var(--text);font-weight:600}

.emer-badge{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(229,57,53,.15);border:1.5px solid var(--red);
  border-radius:20px;padding:3px 10px;font-size:.76rem;
  color:#ff9090;font-weight:700;animation:pulse2 1.5s infinite
}
@keyframes pulse2{0%,100%{opacity:1}50%{opacity:.55}}

.story-box{
  background:rgba(229,57,53,.1);border:1.5px solid rgba(229,57,53,.4);
  border-radius:12px;padding:6px 12px;max-width:540px;width:100%;margin-bottom:8px
}
.story-box p{font-size:clamp(.72rem,1.5vw,.82rem);color:#ffbfbf;line-height:1.75;font-weight:600}
.story-box strong{color:var(--gold)}

.missions{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;margin-bottom:6px}
.m-badge{
  background:rgba(255,112,67,.1);border:1px solid rgba(255,112,67,.35);
  border-radius:18px;padding:2px 7px;
  font-size:.7rem;color:#ffaa80;font-weight:700
}

.start-btn{
  background:linear-gradient(135deg,#e53935,#ff7043);color:#fff;
  font-family:var(--fh);font-size:clamp(.9rem,2vw,1rem);font-weight:800;
  border:none;border-radius:14px;
  padding:9px 28px;
  cursor:pointer;letter-spacing:1px;
  box-shadow:0 0 24px rgba(229,57,53,.5);transition:all .2s;
  animation:glowRed .9s infinite alternate;
  display:block;margin:0 auto
}
@keyframes glowRed{from{box-shadow:0 0 16px rgba(229,57,53,.4)}to{box-shadow:0 0 32px rgba(255,112,67,.9)}}
.start-btn:hover{transform:scale(1.05)}

/* ══ HEADER ══ */
#header{
  height:50px;display:flex;align-items:center;justify-content:space-between;
  padding:0 16px;
  border-bottom:2px solid var(--border);
  background:linear-gradient(90deg,#1a0505,#2a0e0a);
  position:relative;z-index:10;flex-shrink:0
}
#header h1{
  font-family:var(--fh);font-size:1.45rem;font-weight:800;
  color:#fff;letter-spacing:1px;white-space:nowrap
}
#header h1 span{color:var(--accent)}
#header .sub{font-size:.72rem;color:var(--sub);margin-top:1px}
#gscore{text-align:right}
#gscore .gl{font-size:.7rem;color:var(--sub)}
#gscore .gv{font-family:var(--fh);font-size:1.3rem;color:var(--gold);font-weight:800}

/* ══ SCORE BAR ══ */
#scoreBar{
  height:38px;display:flex;gap:4px;padding:3px 8px;
  background:#200a08;border-bottom:1px solid var(--border);
  overflow:hidden;position:relative;z-index:9;flex-shrink:0
}
.chip{
  flex:1;border:1px solid var(--border);border-radius:7px;padding:2px 5px;
  text-align:center;cursor:pointer;transition:all .2s;
  background:var(--panel);display:flex;flex-direction:column;justify-content:center
}
.chip:hover{border-color:var(--accent);background:#3a1810}
.chip.cleared{border-color:var(--gold)!important;background:rgba(255,204,2,.08)!important}
.chip .cl{font-size:.62rem;color:var(--sub);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chip .cv{font-family:var(--fh);font-size:1rem;color:var(--accent);line-height:1}

/* ══ MAIN ══ */
#main{display:flex;height:calc(100vh - 88px);overflow:hidden;position:relative;z-index:5;min-height:0}

/* ══ BODY MAP ══ */
#bodyMap{
  width:220px;min-width:205px;max-width:225px;
  border-right:2px solid var(--border);
  background:linear-gradient(180deg,#200a08,#180806);
  display:flex;flex-direction:column;align-items:center;
  padding:8px 6px 6px;overflow:hidden;flex-shrink:0;gap:4px
}
#bodyMap h2{
  font-family:var(--fh);font-size:.95rem;font-weight:800;
  color:var(--accent);letter-spacing:1px;white-space:nowrap
}
#bmc{cursor:pointer;border-radius:10px;width:100%;max-width:195px;border:2px solid var(--border)}
.oHint{font-size:.78rem;color:var(--text);text-align:center;line-height:1.5;font-weight:700;padding:0 4px}

/* ══ GAME AREA ══ */
#gameArea{flex:1;overflow:hidden;display:flex;flex-direction:column;min-width:0;min-height:0;background:linear-gradient(160deg,#180806,#1a0a06)}

#welcome{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  height:100%;gap:10px;text-align:center;padding:16px
}
#welcome h2{font-family:var(--fh);font-size:1.5rem;font-weight:800;color:var(--gold)}
#welcome p{color:var(--text);font-size:.9rem;max-width:340px;font-weight:600;line-height:1.65}
#warrow{font-size:2.5rem;animation:bounce .75s infinite alternate}
@keyframes bounce{from{transform:translateX(0)}to{transform:translateX(-14px)}}
.w-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:4px}
.w-badge{border-radius:16px;padding:4px 10px;font-size:.72rem;font-weight:700}

/* ══ GAME PANEL ══ */
.gpanel{display:none;flex-direction:column;height:100%;overflow:hidden;min-height:0;animation:fi .2s ease}
.gpanel.active{display:flex}
@keyframes fi{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* story banner */
.story-banner{
  border-bottom:1px solid rgba(255,112,67,.35);
  padding:7px 14px;display:flex;align-items:flex-start;gap:10px;flex-shrink:0;
  background:linear-gradient(90deg,rgba(180,50,20,.18),rgba(255,100,50,.06))
}
.story-banner .sb-icon{font-size:1.5rem;flex-shrink:0;margin-top:2px}
.story-banner .sb-title{
  font-family:var(--fh);font-size:.95rem;font-weight:800;
  color:var(--gold);display:block;margin-bottom:2px
}
.story-banner .sb-body{font-size:.82rem;color:#ffd0b0;line-height:1.6;font-weight:600}

/* game inner */
.game-inner{flex:1;overflow:hidden;display:flex;flex-direction:column;padding:5px 10px 5px}
.hud{display:flex;gap:4px;margin-bottom:3px;flex-shrink:0}
.hb{flex:1;border:1px solid var(--border);border-radius:7px;padding:2px 4px;background:var(--panel);text-align:center}
.hb .hl{font-size:.65rem;color:var(--sub);line-height:1;font-weight:600}
.hb .hv{font-family:var(--fh);font-size:1.05rem;line-height:1.1;font-weight:800}
.tb{height:4px;border-radius:3px;background:var(--border);margin-bottom:3px;overflow:hidden;flex-shrink:0}
.tf{height:100%;border-radius:3px;transition:width .25s linear;background:linear-gradient(90deg,#66bb6a,#ffcc02,#e53935)}
.gc-wrap{position:relative;flex:1;min-height:0}
canvas.gc{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:10px;border:2px solid var(--border);cursor:crosshair}

/* overlay */
.canvas-overlay{position:absolute;inset:0;background:rgba(0,0,0,.78);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:10;border-radius:10px}
.canvas-overlay.hidden{display:none}
.start-modal{
  text-align:center;
  background:linear-gradient(135deg,rgba(30,8,5,.98),rgba(60,20,12,.98));
  border:2px solid var(--gold);border-radius:18px;
  padding:20px 26px;max-width:430px;width:92%;
  box-shadow:0 0 32px rgba(255,100,50,.22)
}
.start-modal .sm-icon{font-size:3.2rem;margin-bottom:5px;display:block;animation:float3 3s ease-in-out infinite}
@keyframes float3{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.start-modal h3{font-family:var(--fh);font-size:1.4rem;font-weight:800;color:var(--gold);margin-bottom:5px}
.start-modal .sm-story{
  background:rgba(255,90,30,.1);border:1px solid rgba(255,160,50,.35);
  border-radius:8px;padding:8px 12px;margin-bottom:7px;
  font-size:.85rem;color:#ffd8b0;line-height:1.65;text-align:left;font-weight:600
}
.start-modal .sm-sci{
  background:rgba(77,208,225,.07);border:1px solid rgba(77,208,225,.3);
  border-radius:8px;padding:7px 11px;margin-bottom:10px;
  font-size:.78rem;color:#b2ebf2;line-height:1.55;text-align:left;font-weight:600
}
.start-modal .sm-sci span{font-weight:800;color:var(--cyan);display:block;margin-bottom:2px;font-size:.82rem}

/* buttons */
.brow{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap;flex-shrink:0;justify-content:center}
.gb{
  flex:1;min-width:70px;border:none;border-radius:9px;
  padding:9px 6px;font-family:var(--fh);font-size:.92rem;font-weight:800;
  cursor:pointer;transition:all .15s;letter-spacing:.2px;line-height:1.3;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.gb:active{transform:scale(.94)}
.mb{
  border-radius:8px;padding:7px 11px;font-size:.85rem;font-weight:700;
  text-align:center;min-height:34px;display:flex;align-items:center;justify-content:center;
  margin-top:4px;border:1px solid var(--border);background:var(--panel2);flex-shrink:0;
  color:var(--text);line-height:1.4
}

/* hint button + box */
.hint-row{display:flex;align-items:center;gap:6px;margin-top:4px;flex-shrink:0}
.hint-btn{
  background:rgba(77,208,225,.12);border:1px solid rgba(77,208,225,.4);
  color:var(--cyan);border-radius:20px;padding:5px 14px;
  font-size:.8rem;font-weight:700;cursor:pointer;transition:all .2s;white-space:nowrap
}
.hint-btn:hover{background:rgba(77,208,225,.22)}
.hint-box{
  display:none;background:rgba(77,208,225,.08);border:1px solid rgba(77,208,225,.3);
  border-radius:8px;padding:7px 11px;font-size:.82rem;color:#b2ebf2;
  line-height:1.55;font-weight:600;margin-top:3px;flex-shrink:0
}
.hint-box.show{display:block}

/* victory */
#vm{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.85);backdrop-filter:blur(10px)}
#vm.show{display:flex}
#vc{
  background:var(--panel);border:2px solid var(--gold);border-radius:16px;
  padding:24px;max-width:390px;width:92%;text-align:center
}
#vc h2{font-family:var(--fh);font-size:1.6rem;font-weight:800;color:var(--gold);margin-bottom:5px}
#vc .vs{font-size:2.2rem;margin-bottom:6px}
#vc .vlearn{
  background:rgba(77,208,225,.08);border:1px solid rgba(77,208,225,.3);
  border-radius:8px;padding:9px 12px;margin:8px 0;
  font-size:.82rem;color:#b2ebf2;line-height:1.65;text-align:left;font-weight:600
}
#vc .vlearn strong{color:var(--cyan);display:block;margin-bottom:3px;font-size:.86rem}
#vc .vp{color:var(--sub);font-size:.8rem;margin-bottom:8px}


/* ══ GAME CANVAS ══ */
.gcwrap{position:relative;flex:1;min-height:0;overflow:hidden}
canvas.gc{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:10px;border:2px solid var(--border);object-fit:contain}
.cov{position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:10;border-radius:10px}
.cov.hidden{display:none}
.smod{text-align:center;background:linear-gradient(135deg,rgba(20,4,2,.98),rgba(50,14,8,.98));border:2px solid var(--gold);border-radius:18px;padding:18px 24px;max-width:430px;width:92%;box-shadow:0 0 32px rgba(255,100,50,.24)}
.smod .smi{font-size:3rem;margin-bottom:4px;display:block}
.smod h3{font-size:1.35rem;font-weight:800;color:var(--gold);margin-bottom:5px}
.smod .smst{background:rgba(255,90,30,.1);border:1px solid rgba(255,160,50,.35);border-radius:8px;padding:7px 11px;margin-bottom:6px;font-size:.86rem;color:#ffd8b0;line-height:1.65;text-align:left;font-weight:600}
.smod .smsc{background:rgba(77,208,225,.07);border:1px solid rgba(77,208,225,.3);border-radius:8px;padding:6px 10px;margin-bottom:9px;font-size:.78rem;color:#b2ebf2;line-height:1.5;text-align:left;font-weight:600}
.smod .smsc span{font-weight:800;color:var(--cyan);display:block;margin-bottom:2px;font-size:.82rem}
.brow{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap;flex-shrink:0}
.gb{flex:1;min-width:70px;border:none;border-radius:9px;padding:9px 5px;font-family:var(--fh);font-size:.92rem;font-weight:800;cursor:pointer;transition:all .15s;line-height:1.3}
.gb:active{transform:scale(.93)}
.msg{border-radius:8px;padding:7px 11px;font-size:.86rem;font-weight:700;text-align:center;min-height:34px;display:flex;align-items:center;justify-content:center;margin-top:4px;border:1px solid var(--border);background:var(--panel2);flex-shrink:0;color:var(--text);line-height:1.4}
.hintrow{display:flex;align-items:center;gap:6px;margin-top:4px;flex-shrink:0}
.hbtn{background:rgba(77,208,225,.12);border:1px solid rgba(77,208,225,.4);color:var(--cyan);border-radius:20px;padding:5px 13px;font-size:.8rem;font-weight:700;cursor:pointer}
.hbox{display:none;background:rgba(77,208,225,.08);border:1px solid rgba(77,208,225,.3);border-radius:8px;padding:7px 11px;font-size:.82rem;color:#b2ebf2;line-height:1.5;font-weight:600;margin-top:3px;flex-shrink:0}
.hbox.show{display:block}
.sbanner{border-bottom:1px solid rgba(255,112,67,.35);padding:4px 10px;display:flex;align-items:flex-start;gap:10px;flex-shrink:0;background:linear-gradient(90deg,rgba(180,50,20,.22),rgba(255,100,50,.06))}
.sbanner .sbi{font-size:1.5rem;flex-shrink:0;margin-top:1px}
.sbanner .sbtitle{font-size:.98rem;font-weight:800;color:var(--gold);display:block;margin-bottom:1px}
.sbanner .sbbody{font-size:.75rem;color:#ffd0b0;line-height:1.4;font-weight:600;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gin{flex:1;overflow:hidden;display:flex;flex-direction:column;padding:5px 10px 4px}
.hud{display:flex;gap:4px;margin-bottom:3px;flex-shrink:0}
.hb{flex:1;border:1px solid var(--border);border-radius:7px;padding:2px 4px;background:var(--panel);text-align:center}
.hb .hl{font-size:.66rem;color:var(--sub);line-height:1;font-weight:600}
.hb .hv{font-size:1.28rem;font-weight:800;line-height:1.15}
.tb{height:4px;border-radius:3px;background:var(--border);margin-bottom:3px;overflow:hidden;flex-shrink:0}
.tf{height:100%;border-radius:3px;transition:width .25s linear;background:linear-gradient(90deg,#66bb6a,#ffcc02,#e53935)}
#kd-countdown{position:absolute;inset:0;z-index:20;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,10,20,.88);backdrop-filter:blur(8px)}
#kd-countdown.hidden{display:none}


#vnOverlay{position:fixed;inset:0;z-index:2000;background:#000;display:flex;flex-direction:column}
#vnOverlay.hidden{display:none}
#vnStage{position:relative;flex:1;background:#000;overflow:hidden}
#vnFrame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;background:#000}
#vnBtn{position:absolute;right:18px;bottom:18px;z-index:10;border:0;border-radius:12px;padding:13px 22px;min-width:112px;font-size:clamp(14px,1.05vw,18px);font-weight:900;color:#fff;background:#2f6fed;box-shadow:0 8px 20px rgba(0,0,0,.35);cursor:pointer}
#vnBtn:hover{background:#234fa8}

<style>