@import url("https://cdn.jsdelivr.net/npm/galmuri/dist/galmuri.css");
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:"Pretendard","Noto Sans KR","Apple SD Gothic Neo",sans-serif;-webkit-tap-highlight-color:transparent}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
.px{font-family:"Galmuri11","Galmuri9","Noto Sans KR",sans-serif}

/* 스프라이트 (160x224 시트: 4열 x 4행, 한 칸 40x56 / 행: 정면·왼쪽·오른쪽·뒷면) */
.spr{--s:2;--row:0;width:calc(40px*var(--s));height:calc(56px*var(--s));display:inline-block;flex:none;
  background-repeat:no-repeat;background-size:calc(160px*var(--s)) calc(224px*var(--s));
  background-position:0 calc(-56px*var(--s)*var(--row));image-rendering:pixelated}
.spr.walk{animation:sprwalk .64s steps(4) infinite}
@keyframes sprwalk{from{background-position-x:0}to{background-position-x:calc(-160px*var(--s))}}

/* ───── 캐릭터 선택창 (입장하기를 누르면 열림) ───── */
.sel-ov{position:fixed;inset:0;z-index:90;display:none;align-items:center;justify-content:center;padding:14px;background:var(--ov,rgba(8,10,24,.66));backdrop-filter:blur(6px)}
.sel-ov.on{display:flex;animation:selfade .22s ease}
@keyframes selfade{from{opacity:0}to{opacity:1}}
.sel-box{position:relative;width:min(100%,980px);max-height:min(94dvh,760px);display:flex;flex-direction:column;
  background:var(--box,#fff);color:var(--ink,#2a2740);border:var(--box-b,2px solid #fff);border-radius:var(--rad,22px);box-shadow:0 24px 70px rgba(0,0,0,.4);overflow:hidden;animation:selpop .26s cubic-bezier(.2,1.2,.4,1)}
@keyframes selpop{from{transform:translateY(18px) scale(.97)}to{transform:none}}
.sel-hd{display:flex;align-items:center;gap:10px;padding:14px 18px 10px}
.sel-hd h2{font-size:20px;line-height:1.3;flex:1}
.sel-hd small{display:block;font-size:13px;font-weight:400;color:var(--muted,#7a7596);margin-top:2px}
.sel-x{width:40px;height:40px;border-radius:50%;background:var(--chip,#eee);font-size:18px;color:var(--ink,#333)}
.sel-body{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;padding:6px 18px 12px;overflow:auto;min-height:0}
.sel-pv{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 12px;border-radius:16px;background:var(--pv,rgba(120,120,160,.1));text-align:center}
.pv-stage{width:100%;display:flex;justify-content:center;align-items:flex-end;padding:10px 0 8px;border-radius:12px;background:var(--stage,radial-gradient(ellipse at 50% 90%,rgba(255,200,90,.45),transparent 70%))}
.pv-name{font-size:19px;font-weight:800}
.pv-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.pv-tags i{font-style:normal;font-size:12.5px;padding:3px 10px;border-radius:99px;background:var(--chip,#eee)}
.pv-nm{width:100%;display:flex;flex-direction:column;gap:4px;text-align:left;font-size:13px;color:var(--muted,#777)}
.pv-nm input{height:46px;border-radius:12px;border:1.5px solid var(--line,#d6d2e8);padding:0 12px;font:inherit;font-size:16px;background:var(--inp,#fff);color:var(--ink,#222)}
.sel-pick{display:flex;flex-direction:column;gap:10px;min-width:0}
.sel-tabs{display:flex;gap:6px;flex-wrap:wrap}
.sel-tabs button{height:40px;padding:0 16px;border-radius:99px;background:var(--chip,#eee);font-size:15px;font-weight:700;color:var(--ink,#333);border:2px solid transparent}
.sel-tabs button.on{background:var(--chip-on,#ffe9a8);border-color:var(--acc,#e0a020)}
.sel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;align-content:start}
.sel-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px 8px;border-radius:14px;background:var(--card,rgba(120,120,160,.08));border:2px solid transparent;position:relative}
.sel-card:hover{transform:translateY(-2px)}
.sel-card.on{border-color:var(--acc,#e0a020);background:var(--chip-on,#fff4d0)}
.sel-card.on::after{content:"✓";position:absolute;right:6px;top:5px;width:22px;height:22px;border-radius:50%;background:var(--acc,#e0a020);color:var(--acc-ink,#fff);font-size:14px;font-weight:800;display:flex;align-items:center;justify-content:center}
.sel-card b{font-size:13.5px;line-height:1.25;text-align:center;word-break:keep-all}
.sel-ft{display:flex;gap:10px;justify-content:flex-end;padding:10px 18px 16px;border-top:1px solid var(--line,rgba(0,0,0,.08))}
.sel-ft button{min-height:52px;padding:0 22px;border-radius:14px;font-size:17px;font-weight:800}
.sel-ft .g{background:var(--chip,#eee);color:var(--ink,#333)}
.sel-ft .go{flex:1;max-width:340px;background:var(--cta,linear-gradient(#ffd45a,#f0a020));color:var(--cta-ink,#3b2600);box-shadow:var(--cta-sh,0 4px 0 #b57400)}
.sel-ft .go:active{transform:translateY(2px)}
@media (max-width:720px){
  .sel-ov{padding:0;align-items:flex-end}
  .sel-box{width:100%;max-height:94dvh;border-radius:22px 22px 0 0}
  .sel-body{grid-template-columns:1fr;padding:4px 14px 8px}
  .sel-pv{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:10px 14px;padding:10px}
  .pv-stage{width:auto;padding:6px 14px}
  .sel-pv .pv-info{display:flex;flex-direction:column;gap:6px;align-items:flex-start;flex:1;min-width:140px}
  .pv-tags{justify-content:flex-start}
  .sel-grid{grid-template-columns:repeat(3,1fr)}
  .sel-ft{padding:10px 14px calc(14px + env(safe-area-inset-bottom))}
}
@media (min-width:721px){.pv-info{display:contents}}

.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);opacity:0;z-index:99;max-width:min(92%,520px);padding:12px 18px;border-radius:14px;background:rgba(20,18,40,.94);color:#fff;font-size:15px;line-height:1.5;text-align:center;transition:.3s;pointer-events:none;word-break:keep-all}
.toast.on{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001s!important;animation-iteration-count:1!important}}

.walker{position:absolute;transform:translate(-50%,-90%);z-index:6;pointer-events:none;display:flex;flex-direction:column;align-items:center}
.walker .spr{filter:drop-shadow(0 2px 0 rgba(0,0,0,.25))}
.wtag{order:-1;margin-bottom:2px;padding:1px 9px;border-radius:99px;background:#fff;color:#2b2a55;font:800 12px/1.5 "Galmuri11","Noto Sans KR",sans-serif;border:2px solid #2b2a55;white-space:nowrap;position:relative}
.wtag::after{content:"";position:absolute;left:50%;bottom:-7px;margin-left:-4px;border:4px solid transparent;border-top-color:#2b2a55}

:root{--swh:0px}
@media (max-width:720px){:root{--swh:42px}}
.swz{position:fixed;top:max(8px,env(safe-area-inset-top));right:8px;z-index:120;display:flex;gap:4px;padding:4px;border-radius:99px;background:rgba(20,22,48,.72);backdrop-filter:blur(6px);font:700 13px/1 "Noto Sans KR",sans-serif}
.swz a{color:#e8e4ff;text-decoration:none;padding:8px 11px;border-radius:99px;min-height:34px;display:flex;align-items:center}
.swz a.on{background:#ffd45a;color:#3b2600}
.cl{position:absolute;pointer-events:none;width:var(--w,12cqw)!important;height:auto!important;z-index:3;animation:cldrift var(--d,60s) linear infinite;animation-delay:var(--dl,0s)}
@keyframes cldrift{from{transform:translateX(-30cqw)}to{transform:translateX(130cqw)}}

@media (max-width:720px){.swz{right:auto;left:50%;transform:translateX(-50%);top:max(5px,env(safe-area-inset-top));font-size:12px}.swz a{padding:6px 10px;min-height:30px}}
