:root{
  --bg:#06101a; --bg2:#0a1622; --panel:#0e1d2b; --panel2:#122435;
  --line:#1d3346; --ink:#dce8f2; --mut:#7e95a8;
  --amber:#ffb43c; --red:#ff6450; --grn:#54e08a; --blue:#4a96ff;
  --dna:#7ee0b0;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{margin:0; height:100%; overflow:hidden;}
body{
  font-family:'Apple SD Gothic Neo','Segoe UI',system-ui,sans-serif;
  background:var(--bg); color:var(--ink);
  display:flex; flex-direction:column;
  height:100dvh; user-select:none; -webkit-user-select:none;
}

/* 상단바 */
#topbar{
  display:flex; align-items:center; gap:8px;
  padding:8px 10px; padding-top:calc(8px + env(safe-area-inset-top));
  background:linear-gradient(180deg,#0c1a28,#081320);
  border-bottom:1px solid var(--line); flex:none;
}
#topbar .back{color:var(--mut); text-decoration:none; font-size:13px; padding:4px 8px; border-radius:8px; background:#0d2032;}
#topbar .brand{font-weight:800; font-size:15px; color:#e9f2fa; letter-spacing:.2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
#topbar .spacer{flex:1;}
.hud.chip{display:inline-flex; align-items:center; gap:4px; background:#0d2334; border:1px solid var(--line); padding:4px 9px; border-radius:20px; font-size:13px; color:var(--ink);}
.hud.chip i{font-style:normal;}
.hud.chip b{font-weight:800;}
.hud.chip.dna{color:var(--dna); border-color:#1d5a44;}
.iconbtn{width:28px; height:28px; border-radius:50%; border:1px solid var(--line); background:#0d2032; color:var(--mut); font-weight:800; cursor:pointer;}

/* 지도 무대 */
#stage{position:relative; flex:1; min-height:0; overflow:hidden;}
#map{display:block; width:100%; height:100%; touch-action:manipulation;}

#hint{
  position:absolute; top:14px; left:50%; transform:translateX(-50%);
  background:rgba(84,224,138,.14); border:1px solid #2f7e58; color:#bff4d4;
  padding:8px 16px; border-radius:24px; font-size:14px; font-weight:700;
  animation:pulse 1.4s infinite; white-space:nowrap;
}
@keyframes pulse{50%{opacity:.55;}}

#tip{
  position:absolute; display:none; z-index:5; width:200px;
  background:rgba(8,18,28,.96); border:1px solid var(--line); border-radius:10px;
  padding:9px 11px; font-size:12px; line-height:1.55; color:var(--ink);
  box-shadow:0 10px 30px rgba(0,0,0,.5); pointer-events:none;
}
#tip b{color:#fff;}
#tip .cl{color:var(--red); font-weight:700;}

/* 좌상단 통계 */
#stats{
  position:absolute; left:10px; top:10px; z-index:4;
  background:rgba(8,18,28,.78); border:1px solid var(--line); border-radius:12px;
  padding:9px 11px; min-width:150px; backdrop-filter:blur(4px);
}
#stats .stat{display:flex; justify-content:space-between; align-items:baseline; font-size:13px; margin-bottom:3px;}
#stats .stat .lbl{color:var(--mut);}
#stats .stat b{font-size:15px; font-weight:800;}
#stats .stat:nth-child(1) b{color:var(--amber);}
#stats .stat:nth-child(2) b{color:var(--red);}
#stats .cure{margin-top:6px; padding-top:6px; border-top:1px solid var(--line);}
#stats .curehead{display:flex; justify-content:space-between; font-size:11px; color:var(--mut); margin-bottom:4px;}
#stats .curehead span:last-child{color:var(--blue); font-weight:800;}
#stats .curebar{height:7px; background:#0a1c2a; border-radius:4px; overflow:hidden;}
#cureFill{height:100%; width:0%; background:linear-gradient(90deg,#3f7fff,#7db4ff); transition:width .2s;}

/* 하단 도크 */
#dock{
  flex:none; display:flex; align-items:center; gap:10px;
  padding:9px 12px; background:linear-gradient(0deg,#0a1826,#0b1a29);
  border-top:1px solid var(--line);
}
.meters{flex:1; display:flex; flex-direction:column; gap:5px; min-width:0;}
.meter{display:flex; align-items:center; gap:8px; font-size:11px; color:var(--mut);}
.meter span{width:42px; flex:none; text-align:right;}
.mbar{flex:1; height:8px; background:#0a1c2a; border-radius:5px; overflow:hidden;}
.mbar i{display:block; height:100%; width:0%; border-radius:5px; transition:width .25s;}
.mbar.inf i{background:linear-gradient(90deg,#3fae6e,#7ee0a0);}
.mbar.sev i{background:linear-gradient(90deg,#d8a23a,#ffcf5c);}
.mbar.leth i{background:linear-gradient(90deg,#c33b32,#ff7a5e);}
.ctrls{display:flex; gap:7px; flex:none;}
#dock button{cursor:pointer; border:1px solid var(--line); border-radius:11px; font-weight:800; color:var(--ink); background:#11293c;}
#dock .primary{background:linear-gradient(180deg,#2f7e58,#1f6043); border-color:#3fa86f; color:#eafff2; padding:11px 16px; font-size:15px;}
#dock .ctl{width:46px; height:44px; font-size:14px;}

/* 속보 */
#newsbar{flex:none; display:flex; align-items:center; gap:8px; padding:5px 12px; padding-bottom:calc(5px + env(safe-area-inset-bottom)); background:#081320; border-top:1px solid var(--line); font-size:12px; overflow:hidden;}
#newsbar .tag{flex:none; background:var(--red); color:#fff; font-weight:800; font-size:10px; padding:2px 7px; border-radius:5px;}
#news{color:#b9cad8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}

/* 진화 패널 */
#genePanel{
  position:fixed; left:0; right:0; bottom:0; z-index:30;
  max-height:74dvh; background:var(--panel); border-top:1px solid #244157;
  border-radius:16px 16px 0 0; box-shadow:0 -16px 40px rgba(0,0,0,.5);
  transform:translateY(110%); transition:transform .28s cubic-bezier(.2,.7,.3,1);
  display:flex; flex-direction:column;
}
#genePanel.show{transform:translateY(0);}
.panelhead{display:flex; align-items:center; gap:8px; padding:10px 12px; border-bottom:1px solid var(--line);}
.gtabs{display:flex; gap:6px; flex:1;}
.gtab{flex:1; max-width:90px; padding:8px 0; border:1px solid var(--line); background:#0e2031; color:var(--mut); border-radius:10px; font-weight:800; font-size:13px; cursor:pointer;}
.gtab.on{background:#1c4a36; color:#cfffe4; border-color:#3fa86f;}
.dnabox{background:#0d3526; border:1px solid #1d6a4a; color:var(--dna); font-weight:800; padding:7px 12px; border-radius:10px; font-size:14px;}
.dnabox.shake{animation:shake .4s;}
@keyframes shake{0%,100%{transform:translateX(0);}25%{transform:translateX(-5px);}75%{transform:translateX(5px);}}
.x{width:34px; height:34px; border-radius:9px; border:1px solid var(--line); background:#11293c; color:var(--mut); font-weight:800; cursor:pointer;}

#geneList{overflow-y:auto; padding:10px 12px calc(16px + env(safe-area-inset-bottom)); display:grid; grid-template-columns:1fr; gap:8px;}
@media(min-width:560px){#geneList{grid-template-columns:1fr 1fr;}}
.gene{
  display:flex; align-items:center; gap:10px; text-align:left;
  background:var(--panel2); border:1px solid var(--line); border-radius:12px;
  padding:10px 11px; color:var(--ink); cursor:pointer; width:100%;
}
.gene .gic{font-size:24px; flex:none; width:30px; text-align:center;}
.gene .gbody{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px;}
.gene .gbody b{font-size:14px;}
.gene .gbody i{font-style:normal; font-size:11px; color:var(--mut); line-height:1.4;}
.gene .gbody .need{color:#e0a13a; font-size:10.5px; margin-top:1px;}
.gene .gcost{flex:none; font-weight:800; font-size:13px; color:var(--dna); background:#0d2a1e; border:1px solid #1d5a40; padding:4px 8px; border-radius:8px;}
.gene.owned{opacity:.62; border-color:#2f6e4d; background:#0e2a1f; cursor:default;}
.gene.owned .gcost{color:#7fd6a8; background:transparent; border-color:transparent;}
.gene.locked{opacity:.5;}
.gene.locked .gcost{color:#e0a13a; background:#2a2310; border-color:#5a4a1d;}
.gene.dim:not(.owned){opacity:.55;}
.gene:not(.owned):not(.locked):active{transform:scale(.98);}

/* 오버레이 */
.overlay{
  position:fixed; inset:0; z-index:40; display:none;
  align-items:center; justify-content:center; padding:18px;
  background:rgba(3,9,15,.82); backdrop-filter:blur(5px);
}
.overlay.show{display:flex;}
.obox{
  width:100%; max-width:440px; max-height:92dvh; overflow-y:auto;
  background:linear-gradient(180deg,#0e1d2b,#0a1622); border:1px solid #234057;
  border-radius:18px; padding:22px 20px; text-align:center;
  box-shadow:0 24px 60px rgba(0,0,0,.6);
}
.startbox h1{margin:0 0 6px; font-size:24px; color:#eafff4;}
.obox .sub{margin:0 0 16px; font-size:13px; color:var(--mut); line-height:1.55;}
.field{text-align:left; margin-bottom:14px;}
.field label{display:block; font-size:12px; color:var(--mut); margin-bottom:5px;}
.field input{width:100%; padding:11px 12px; background:#0a1825; border:1px solid var(--line); border-radius:10px; color:var(--ink); font-size:15px;}
.seclbl{display:block; text-align:left; font-size:12px; color:var(--mut); margin:0 0 7px;}
.ptypes{display:grid; grid-template-columns:1fr 1fr 1fr; gap:7px; margin-bottom:14px;}
.ptype{display:flex; flex-direction:column; align-items:center; gap:3px; padding:11px 4px; background:#0e2031; border:1px solid var(--line); border-radius:12px; color:var(--ink); cursor:pointer;}
.ptype .pic{font-size:26px;}
.ptype b{font-size:13px;}
.ptype i{font-style:normal; font-size:9.5px; color:var(--mut); line-height:1.3; text-align:center;}
.ptype.sel{background:#16382a; border-color:#3fa86f; box-shadow:0 0 0 1px #3fa86f inset;}
.diffs{display:flex; gap:7px; margin-bottom:18px;}
.diffopt{flex:1; padding:10px 0; background:#0e2031; border:1px solid var(--line); border-radius:10px; color:var(--ink); font-weight:700; cursor:pointer; font-size:13px;}
.diffopt.sel{background:#3a2417; border-color:#c87a3a; color:#ffd9b0;}
.bigbtn{width:100%; padding:14px; border:none; border-radius:12px; font-size:16px; font-weight:800; cursor:pointer; color:#06140d; background:linear-gradient(180deg,#5fe39a,#34b873); box-shadow:0 8px 22px rgba(52,184,115,.3);}
.tiny{font-size:11.5px; color:var(--mut); margin:10px 0 0; line-height:1.5;}

.gobox h2{margin:0 0 6px; font-size:23px;}
.gobox h2.win{color:#ff7a5e;}
.gobox h2.lose{color:#7db4ff;}
.goscore{margin:14px 0; font-size:13px; color:var(--mut); line-height:1.5;}
.goscore b{display:block; font-size:40px; font-weight:900; color:var(--amber); margin-top:2px;}
.helpbox{text-align:left;}
.helpbox h2{text-align:center; font-size:20px; margin:0 0 12px;}
.helpbox ul{margin:0 0 16px; padding-left:18px;}
.helpbox li{font-size:13px; color:#bccadb; line-height:1.6; margin-bottom:7px;}
.helpbox b{color:#eafff2;}
