
:root{--bg:#06070b;--panel:#10131a;--line:#2a2e39;--txt:#f7f7fb;--mut:#969cab;--red:#ff315c;--purple:#9f67ff;--cyan:#61dcff;--gold:#ffd15b;--green:#65e397}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#06070b;color:var(--txt);font-family:system-ui,-apple-system,"Noto Sans KR",sans-serif;overflow-x:hidden}button{font:inherit;border:0;cursor:pointer}body{background:radial-gradient(circle at 50% -15%,#2a124b 0,#0b0c12 32%,#06070b 70%);background-attachment:fixed}
#splash{position:fixed;inset:0;z-index:999;background:#05060a;display:grid;place-items:center;transition:.7s opacity}.splashBox{width:min(91vw,680px);text-align:center;animation:sIn 1.1s ease}.splashBox img{width:100%;border-radius:30px;box-shadow:0 0 100px #ff315c35}.load{margin-top:14px;font-size:11px;letter-spacing:5px;color:#d4d5dc;animation:pulse .8s infinite alternate}@keyframes sIn{0%{opacity:0;transform:scale(.78);filter:blur(16px)}60%{opacity:1;transform:scale(1.04);filter:none}100%{transform:scale(1)}}@keyframes pulse{from{opacity:.25}to{opacity:1}}
.top{position:sticky;top:0;z-index:60;background:rgba(6,7,11,.93);backdrop-filter:blur(14px);border-bottom:1px solid #242632;padding:11px 13px}.brand{font-size:20px;font-weight:1000}.brand b{color:var(--red)}.ver{font-size:9px;background:#42236e;color:#d7bdff;border-radius:999px;padding:3px 7px}.sub{font-size:10px;color:var(--mut);margin-top:2px}.wrap{max-width:1050px;margin:auto;padding:12px 11px 50px}
.hero{overflow:hidden;border-radius:20px;border:1px solid #312c40;position:relative;margin-bottom:10px}.hero img{width:100%;display:block;aspect-ratio:16/7;object-fit:cover}.heroO{position:absolute;inset:auto 0 0;padding:45px 14px 13px;background:linear-gradient(transparent,#000e)}.heroO h1{margin:0;font-size:22px}.heroO p{margin:3px 0 0;font-size:10px;color:#d7d2e0}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:9px 0}@media(max-width:650px){.stats{grid-template-columns:repeat(2,1fr)}}.stat{background:#10131a;border:1px solid var(--line);border-radius:13px;padding:9px}.stat small{display:block;color:var(--mut);font-size:9px}.stat strong{font-size:15px}
.btn{padding:10px 11px;border-radius:10px;background:#252a35;color:#fff;font-weight:850}.btn.red{background:linear-gradient(135deg,#ff315c,#b41240)}.btn.purple{background:linear-gradient(135deg,#7a42e8,#4d1ea6)}.btn.gold{background:#5f4b16;color:#ffe580}.btn.green{background:#174a2d;color:#8ef0b6}.btn.cyan{background:#17495b;color:#8ceaff}.btn:disabled{opacity:.32}.row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.gameCard{background:#10131a;border:1px solid #312d3e;border-radius:19px;overflow:hidden}.gameCard img{width:100%;display:block;aspect-ratio:16/8;object-fit:cover}.cardB{padding:13px}.cardB h2{font-size:17px;margin:0 0 4px}.cardB p{font-size:10px;color:var(--mut);line-height:1.5;margin:0 0 11px}
#gameView{display:none}.gameTop{position:sticky;top:0;z-index:90;background:rgba(6,7,11,.94);backdrop-filter:blur(14px);border-bottom:1px solid #292b36;padding:8px;display:flex;gap:7px;align-items:center}.gameTitle{font-weight:950}.gameWrap{max-width:900px;margin:auto;padding:9px}
.hud{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:7px}.hudItem{background:#0f1218;border:1px solid #292d36;border-radius:11px;padding:7px;text-align:center}.hudItem small{font-size:8px;color:#9197a5;display:block}.hudItem b{font-size:12px}
.gamebox{background:#090b10;border:1px solid #353445;border-radius:18px;padding:8px;box-shadow:0 0 40px #6c3cff16;position:relative;overflow:hidden}.canvasWrap{position:relative;border-radius:14px;overflow:hidden;background:#08090d}.canvasWrap:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;background:radial-gradient(circle at center,transparent 52%,#0009 100%)}canvas{width:100%;height:auto;display:block;image-rendering:auto;touch-action:none}
.flash{position:absolute;inset:0;pointer-events:none;z-index:5;opacity:0;background:white}.flash.on{animation:flash .22s}@keyframes flash{0%{opacity:.65}100%{opacity:0}}.floatText{position:absolute;z-index:8;font-weight:1000;font-size:18px;pointer-events:none;animation:float .8s forwards;text-shadow:0 2px 5px #000}@keyframes float{0%{opacity:1;transform:translateY(0) scale(.8)}100%{opacity:0;transform:translateY(-55px) scale(1.1)}}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.dpad{display:grid;grid-template-columns:repeat(3,48px);grid-template-rows:repeat(3,48px);gap:4px;justify-content:center}.dpad button{border-radius:12px;background:#1e2330;color:#fff;font-size:20px;border:1px solid #333947}.dpad .up{grid-column:2}.dpad .left{grid-column:1;grid-row:2}.dpad .down{grid-column:2;grid-row:2}.dpad .right{grid-column:3;grid-row:2}.acts{display:grid;gap:6px}.acts button{border-radius:12px;font-weight:900}.panel{background:#10141b;border:1px solid #2d3039;border-radius:15px;padding:11px;margin-top:8px}.panel h3{font-size:13px;margin:0 0 7px}.big{font-size:29px;font-weight:1000}.muted{font-size:9px;color:var(--mut)}.meter{height:10px;border-radius:999px;background:#212632;overflow:hidden}.meter i{display:block;height:100%;background:linear-gradient(90deg,#ff315c,#ff8a5e)}.meter.xp i{background:linear-gradient(90deg,#764cf4,#61dcff)}
.relics{display:flex;gap:5px;flex-wrap:wrap}.relic{background:#1a1730;border:1px solid #453b72;border-radius:10px;padding:6px 8px;font-size:9px}.log{max-height:120px;overflow:auto;color:#c8cbd5;font-size:9px;line-height:1.5}
.overlay{position:fixed;inset:0;z-index:200;background:#05060bdc;display:none;place-items:center;padding:16px}.overlay.on{display:grid}.modal{width:min(94vw,640px);max-height:88vh;overflow:auto;background:linear-gradient(180deg,#161321,#0c0e14);border:1px solid #48405d;border-radius:22px;padding:15px;box-shadow:0 0 80px #7b42e833}.modal h2{margin:0 0 7px}.choices{display:grid;gap:7px}.choice{background:#1a1b26;border:1px solid #383a47;border-radius:14px;padding:11px;text-align:left;color:white}.choice b{font-size:12px}.choice small{display:block;color:#a3a7b2;font-size:9px;margin-top:4px}
.shopGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.meta{background:#171a22;border:1px solid #2f333d;border-radius:13px;padding:9px}.meta h4{font-size:10px;margin:0 0 3px}.meta p{font-size:8px;color:var(--mut);min-height:27px}.lvl{font-size:8px;color:#d8c1ff}.hidden{display:none}
/* V1.0.4 Samsung Internet-safe DOM tile renderer */
.domMap{--theme:#8f5cff;--wall:#341c59;--floorA:#0c0a16;--floorB:#251645;position:relative;display:grid;grid-template-columns:repeat(11,1fr);aspect-ratio:1/1;width:100%;max-width:560px;margin:0 auto;border-radius:16px;overflow:hidden;background:var(--floorA);box-shadow:inset 0 0 55px #000,0 0 36px color-mix(in srgb,var(--theme) 25%,transparent);border:1px solid #ffffff16}
.tile{position:relative;aspect-ratio:1/1;display:grid;place-items:center;overflow:visible;min-width:0;min-height:0}
.tile.floor{background:linear-gradient(145deg,var(--floorB),var(--floorA));box-shadow:inset 0 0 0 1px #ffffff08}
.tile.floor:nth-child(odd){filter:brightness(1.08)}
.tile.wall{background:linear-gradient(145deg,color-mix(in srgb,var(--wall) 82%,#fff 18%),var(--wall));box-shadow:inset 0 0 0 1px #ffffff18,inset 0 -8px 10px #0005}
.tile.wall:after{content:"";position:absolute;inset:16%;border:1px solid color-mix(in srgb,var(--theme) 38%,transparent);border-radius:5px;box-shadow:0 0 8px color-mix(in srgb,var(--theme) 15%,transparent)}
.sprite{position:relative;z-index:4;font-size:clamp(17px,5.3vw,34px);line-height:1;filter:drop-shadow(0 3px 5px #000) drop-shadow(0 0 6px var(--theme));transform:translateZ(0)}
.playerSprite{animation:heroBob .7s ease-in-out infinite alternate;filter:drop-shadow(0 3px 5px #000) drop-shadow(0 0 10px #75d9ff)}
@keyframes heroBob{to{transform:translateY(-3px) scale(1.05)}}
.tile.enemy .sprite{animation:enemyPulse .85s ease-in-out infinite alternate}@keyframes enemyPulse{to{transform:scale(1.08)}}
.tile.boss{background:radial-gradient(circle,#ff315c26,transparent 70%),linear-gradient(145deg,var(--floorB),var(--floorA))}.tile.boss .sprite{font-size:clamp(22px,6.4vw,42px);filter:drop-shadow(0 0 11px #ff315c)}
.tile.chest{background:radial-gradient(circle,#ffd15b22,transparent 65%),linear-gradient(145deg,var(--floorB),var(--floorA))}.tile.exit{background:radial-gradient(circle,#9d64ff2f,transparent 70%),linear-gradient(145deg,var(--floorB),var(--floorA))}.tile.trap{background:radial-gradient(circle,#ff6a4328,transparent 70%),linear-gradient(145deg,var(--floorB),var(--floorA))}
.enemyHp{position:absolute;z-index:6;left:12%;bottom:6%;height:4px;border-radius:999px;background:#ff4765;box-shadow:0 0 6px #ff315c;max-width:76%}
.mapFloat{position:absolute;z-index:30;font-weight:1000;font-size:14px;text-shadow:0 2px 5px #000;animation:mapFloat .8s forwards;pointer-events:none}@keyframes mapFloat{0%{opacity:1;transform:translateY(0) scale(.85)}100%{opacity:0;transform:translateY(-38px) scale(1.1)}}
.spark{position:absolute;z-index:25;width:5px;height:5px;border-radius:50%;left:50%;top:50%;box-shadow:0 0 8px currentColor;animation:sparkOut .5s ease-out forwards;pointer-events:none}@keyframes sparkOut{to{transform:translate(var(--dx),var(--dy)) scale(0);opacity:0}}
.domMap.hitFlash{animation:mapHit .22s}@keyframes mapHit{0%{filter:brightness(2.2) saturate(1.8)}100%{filter:none}}
@media(max-width:480px){.gamebox{padding:7px}.controls{grid-template-columns:1fr 1.18fr}.dpad{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px)}.sprite{font-size:clamp(16px,5.6vw,27px)}}

/* --- NEON RIFT --- */
.mainGameGrid{display:grid;grid-template-columns:1fr;gap:10px}@media(min-width:760px){.mainGameGrid{grid-template-columns:1fr 1fr}}
#neonView{display:none;min-height:100vh;background:radial-gradient(circle at 50% 0,#240a45 0,#070910 48%,#030409 100%)}
.neonWrap{max-width:900px;margin:auto;padding:9px}.neonHUD{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:7px}.neonHUD>div{background:#0b101a;border:1px solid #223345;border-radius:11px;padding:7px;text-align:center;box-shadow:inset 0 0 18px #24dfff09}.neonHUD small{font-size:8px;color:#7f95a8;display:block}.neonHUD b{font-size:12px}
.neonStage{--accent:#52eaff;position:relative;width:100%;aspect-ratio:10/12;max-height:72vh;min-height:430px;overflow:hidden;border-radius:20px;border:1px solid #40dfff55;background:linear-gradient(#120929 0%,#071429 46%,#020408 100%);box-shadow:0 0 48px #3fe6ff18,inset 0 -80px 120px #000;isolation:isolate;touch-action:none}
.neonStage:after{content:"";position:absolute;inset:0;z-index:50;pointer-events:none;background:radial-gradient(ellipse at center,transparent 52%,#000b 100%),linear-gradient(#ff2f8a08,transparent 25%,#00eaff08 70%,transparent);mix-blend-mode:screen}
.cityBack{position:absolute;inset:0 0 42% 0;overflow:hidden;background:radial-gradient(circle at 50% 78%,#ff318744,transparent 26%)}
.cityBack:before,.cityBack:after{content:"";position:absolute;left:-10%;right:-10%;bottom:0;height:72%;background:repeating-linear-gradient(90deg,transparent 0 20px,#12172b 20px 55px,transparent 55px 68px,#0d162c 68px 115px);clip-path:polygon(0 100%,0 48%,5% 48%,5% 22%,10% 22%,10% 58%,16% 58%,16% 35%,23% 35%,23% 10%,30% 10%,30% 62%,36% 62%,36% 28%,45% 28%,45% 50%,52% 50%,52% 20%,60% 20%,60% 56%,68% 56%,68% 5%,74% 5%,74% 46%,82% 46%,82% 25%,90% 25%,90% 58%,100% 58%,100% 100%);opacity:.9}
.cityBack:after{transform:scale(.72);transform-origin:bottom;filter:blur(1px);opacity:.45}
.sunNeon{position:absolute;left:50%;top:15%;width:130px;height:130px;transform:translateX(-50%);border-radius:50%;background:linear-gradient(#ff2d93,#ff934a);box-shadow:0 0 55px #ff3698aa,0 0 100px #ff693c55;opacity:.8}
.road3d{position:absolute;left:7%;right:7%;top:37%;bottom:-18%;clip-path:polygon(39% 0,61% 0,100% 100%,0 100%);background:linear-gradient(90deg,#10121a 0,#191b24 48%,#10121a 100%);box-shadow:0 0 35px #2cecff28;z-index:2;overflow:hidden}
.road3d:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 31.5%,#21eaff66 31.5% 32%,transparent 32% 67.5%,#ff3c9c66 67.5% 68%,transparent 68%),repeating-linear-gradient(0deg,transparent 0 44px,#fff4 44px 54px,transparent 54px 92px);animation:roadMove .55s linear infinite;transform-origin:center top}
.road3d:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#22e8ff55,transparent 9%,transparent 91%,#ff3c9c55);box-shadow:inset 18px 0 30px -22px #22e8ff,inset -18px 0 30px -22px #ff3c9c}
@keyframes roadMove{to{background-position:0 92px}}
.neonObj{position:absolute;left:50%;top:40%;z-index:10;transform:translate(-50%,-50%);will-change:transform,left,top;transition:filter .15s}
.carBody{width:54px;height:82px;border-radius:16px 16px 10px 10px;background:linear-gradient(135deg,#ff2f79,#7a2dff 52%,#22dfff);box-shadow:0 0 18px #22dfffaa,0 8px 18px #0008;position:relative}
.carBody:before{content:"";position:absolute;left:10px;right:10px;top:14px;height:24px;border-radius:8px;background:#07101b;border:1px solid #5feaff88;box-shadow:inset 0 0 10px #33e4ff55}
.carBody:after{content:"";position:absolute;left:7px;right:7px;bottom:-7px;height:10px;border-radius:50%;background:#ff2f8a;filter:blur(5px);box-shadow:0 0 18px #ff2f8a}
.playerCar{z-index:35;filter:drop-shadow(0 0 12px #3be6ff)}
.trafficCar{z-index:20}.trafficCar .carBody{width:42px;height:65px;background:linear-gradient(135deg,#f0f3ff,#6d7da0 55%,#27324a);box-shadow:0 0 12px #ffffff55}.trafficCar.red .carBody{background:linear-gradient(135deg,#ff594b,#8b1728)}.trafficCar.gold .carBody{background:linear-gradient(135deg,#ffd85b,#8a5915)}
.policeCar .carBody{background:linear-gradient(135deg,#dfe8ff,#294f98 55%,#0b1a35)}.policeCar .carBody:after{background:#348dff;box-shadow:18px 0 7px #ff315c,-18px 0 7px #348dff}
.roadPickup{font-size:28px;filter:drop-shadow(0 0 8px #ffe55d);z-index:25}
.neonParticle{position:absolute;width:4px;height:16px;border-radius:999px;background:#62eaff;box-shadow:0 0 8px #62eaff;pointer-events:none;animation:neonSpark .55s ease-out forwards;z-index:45}@keyframes neonSpark{to{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
.speedLines{position:absolute;inset:0;z-index:7;pointer-events:none;opacity:.0;background:repeating-linear-gradient(90deg,transparent 0 9%,#52eaff55 9.3% 9.6%,transparent 10% 20%);filter:blur(.4px)}.speedLines.on{animation:speedFlash .3s infinite alternate;opacity:.45}@keyframes speedFlash{to{transform:scaleY(1.1);opacity:.75}}
.neonMessage{position:absolute;left:50%;top:22%;z-index:70;transform:translateX(-50%);font-size:24px;font-weight:1000;letter-spacing:1px;text-shadow:0 0 10px #000,0 0 20px #56e9ff;animation:neonMsg .9s forwards;white-space:nowrap}@keyframes neonMsg{0%{opacity:0;transform:translate(-50%,18px) scale(.75)}25%{opacity:1;transform:translate(-50%,0) scale(1.08)}100%{opacity:0;transform:translate(-50%,-20px) scale(1)}}
.neonControls{display:grid;grid-template-columns:1fr 1.25fr;gap:8px;margin-top:8px}.steer{display:grid;grid-template-columns:1fr 1fr;gap:6px}.steer button{min-height:66px;font-size:25px}.neonActs{display:grid;grid-template-columns:1fr 1fr;gap:6px}.neonActs button{min-height:66px}.nitroBtn.active{box-shadow:0 0 25px #54eaff;background:#174e69}
.garageGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}@media(min-width:720px){.garageGrid{grid-template-columns:repeat(4,1fr)}}.garageItem{background:#111722;border:1px solid #27394b;border-radius:13px;padding:10px}.garageItem h4{font-size:10px;margin:0 0 3px}.garageItem p{font-size:8px;color:#8fa1b2;min-height:28px}.garageItem .lvl{color:#79eaff}
@media(max-width:480px){.neonStage{min-height:410px}.carBody{width:48px;height:74px}.neonControls{grid-template-columns:1fr 1fr}}
