@import"https://fonts.googleapis.com/css2?family=Black+Han+Sans&family=Jua&family=Noto+Sans+KR:wght@400;500;700;800&display=swap";@font-face{font-family:DNFBitBitv2;font-weight:400;src:url(/fonts/DNFBitBitv2.ttf) format("truetype")}*{box-sizing:border-box;margin:0;padding:0}:root{--pk-red: #e63946;--pk-blue: #457b9d;--pk-yellow: #ffd60a;--pk-green: #2a9d8f;--panel: rgba(255, 255, 255, .9);--panel-border: rgba(0, 0, 0, .1);--ink: #f6fbff;--ink-dark: #12344b;--shadow: 0 12px 36px rgba(0, 0, 0, .08);--color-main: #b67b5a;--color-sublight: #ffe8c4;--color-subbold: #894820;--color-text: #6d451f;font-family:Noto Sans KR,Jua,sans-serif;color:var(--ink);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}html,body,#root{width:100%;height:100%;overflow:hidden}body{min-width:320px;background:#e8f0fe}body.pointer-locked,body.pointer-locked *{cursor:none!important}.app-root{position:relative;width:100vw;height:100vh}.app-root canvas{display:block}.game-canvas-shell{position:absolute;inset:0;transition:filter .18s ease}.game-canvas-shell canvas{width:100%!important;height:100%!important}.game-canvas-shell.disoriented{filter:blur(2.8px) saturate(1.25) contrast(1.06);animation:disoriented-blur-flicker .35s ease-in-out infinite alternate}@keyframes disoriented-blur-flicker{0%{filter:blur(2.1px) saturate(1.15) contrast(1.04)}to{filter:blur(3.4px) saturate(1.3) contrast(1.08)}}.click-to-play{position:absolute;inset:0;display:grid;place-content:center;gap:.8rem;z-index:35;color:#fff;text-align:center;background:radial-gradient(circle at 50% 45%,#457b9d66,#e6394680);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.click-title{font-family:Black Han Sans,Jua,sans-serif;font-size:clamp(2rem,5vw,3.6rem);color:var(--pk-yellow);-webkit-text-stroke:2px var(--pk-blue)}.click-subtitle{font-size:clamp(.84rem,2vw,1rem);letter-spacing:.03em}.results-overlay{position:absolute;inset:0;display:grid;place-content:center;z-index:45;background:#050210bf;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:fade-in .3s ease-out}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.results-card{min-width:min(420px,92vw);max-width:min(500px,94vw);padding:0;border-radius:24px;text-align:center;background:#0a0620cc;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid rgba(255,255,255,.08);color:var(--ink);box-shadow:0 20px 60px #0009,inset 0 1px #ffffff0a;overflow:hidden;animation:result-pop .4s cubic-bezier(.34,1.56,.64,1)}@keyframes result-pop{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.results-banner{padding:.8rem 1rem;font-family:Black Han Sans,Jua,sans-serif;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;letter-spacing:.08em;display:flex;align-items:center;justify-content:center;gap:.5rem}.results-banner-icon{font-size:.7em}.results-banner.victory{background:linear-gradient(120deg,#ffd60a40,#f77f0033);color:var(--pk-yellow);text-shadow:0 0 30px rgba(255,214,10,.4),0 2px 8px rgba(0,0,0,.3);border-bottom:1px solid rgba(255,214,10,.15)}.results-banner.defeat{background:linear-gradient(120deg,#e6394633,#1a0a3e66);color:#ffffffb3;text-shadow:0 2px 8px rgba(0,0,0,.4);border-bottom:1px solid rgba(255,255,255,.06)}.results-title{font-family:Black Han Sans,Jua,sans-serif;font-size:clamp(1.2rem,2.5vw,1.6rem);margin:.8rem 0 .2rem;color:#fff}.results-subtitle{font-size:.92rem;color:#ffffff80;margin-bottom:.8rem;padding:0 1rem}.results-stats{display:flex;flex-direction:column;gap:.35rem;padding:0 1.2rem;margin-bottom:.8rem}.stat-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem .8rem;border-radius:10px;background:#ffffff0a;border:1px solid rgba(255,255,255,.04)}.stat-label{font-size:.88rem;color:#ffffff80;font-weight:600}.stat-value{font-family:Black Han Sans,Jua,sans-serif;font-weight:700;font-size:1rem;color:#fff}.caught-text{color:var(--pk-red)}.survived-text{color:var(--pk-green)}.results-section{padding:0 1.2rem;margin-bottom:.7rem;text-align:left}.results-section h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:#fff6;margin-bottom:.4rem;font-weight:600}.results-pokemon-list{display:flex;flex-direction:column;gap:.25rem}.results-pokemon-row{display:flex;align-items:center;gap:.5rem;padding:.35rem .6rem;border-radius:8px;font-size:.9rem;color:#ffffffd9}.caught-row-result{background:#e639461a;border:1px solid rgba(230,57,70,.08)}.survivor-row{background:#2a9d8f1a;border:1px solid rgba(42,157,143,.08)}.results-player-name{font-size:.78rem;color:#ffffff59}.species-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px currentColor}.pokeball-mini{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.2);flex-shrink:0;background:linear-gradient(to bottom,#e63946 49%,#f8f9fa 50%)}.star-mini{width:14px;height:14px;flex-shrink:0;background:var(--pk-yellow);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.results-buttons{display:flex;flex-direction:column;gap:.5rem;padding:.5rem 1.2rem 1.2rem}.results-play-again{width:100%;border:none;border-radius:14px;padding:.75rem 1.2rem;font-family:Noto Sans KR,Black Han Sans,sans-serif;font-size:1.05rem;font-weight:700;color:#fff;cursor:pointer;background:linear-gradient(135deg,var(--pk-red),#c62828);box-shadow:0 4px 20px #e6394659;transition:transform .12s ease,box-shadow .12s ease}.results-play-again:hover{transform:translateY(-2px);box-shadow:0 6px 24px #e6394680}.results-play-again:active{transform:translateY(0)}.results-return-lobby{width:100%;border:none;border-radius:14px;padding:.65rem 1.2rem;font-family:Noto Sans KR,sans-serif;font-size:.95rem;font-weight:700;color:#fff;cursor:pointer;background:linear-gradient(135deg,#457b9d,#2d5a7b);box-shadow:0 4px 16px #457b9d40;transition:transform .12s ease,box-shadow .12s ease}.results-return-lobby:hover{transform:translateY(-1px);box-shadow:0 6px 20px #457b9d66}.results-return-lobby:active{transform:translateY(0)}.hud-layer,.crosshair-layer{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .16s ease}.hud-layer.active,.crosshair-layer.active{opacity:1}.hud-top-center,.hud-top-right,.hud-bottom-right,.hud-bottom-left,.hud-bottom-center{position:absolute;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:#05021099;box-shadow:0 8px 32px #0006;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.hud-top-center{top:1rem;left:50%;transform:translate(-50%);min-width:140px;text-align:center;padding:.5rem 1.2rem;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:.35rem;background:#050210b3;border:1px solid rgba(255,214,10,.15)}.hud-timer-row{display:flex;align-items:center;justify-content:center;gap:.4rem}.hud-timer-icon{font-size:.9rem;opacity:.7}.hud-timer-text{font-family:Black Han Sans,Jua,sans-serif;font-size:1.4rem;font-weight:800;color:var(--pk-yellow);letter-spacing:.05em}.hud-top-center.timer-critical{border-color:#e6394666;background:#e6394626;animation:timer-pulse 1s ease-in-out infinite}.hud-top-center.timer-critical .hud-timer-text{color:var(--pk-red)}@keyframes timer-pulse{0%,to{box-shadow:0 8px 32px #0006}50%{box-shadow:0 8px 32px #e639464d,0 0 20px #e6394626}}.hud-title{font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:#ffffff73;margin-bottom:.35rem;font-weight:600}.hud-count{color:#fff9;font-weight:400}.hud-empty{opacity:.5;font-size:.85rem;font-style:italic}.trainer-caught-panel,.pokemon-count-panel{top:1rem;right:1rem;min-width:min(220px,42vw);padding:.75rem}.caught-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;font-size:.9rem}.caught-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 8px currentColor}.pokeball-panel{right:1rem;bottom:1rem;min-width:min(260px,44vw);padding:.72rem}.pokeball-icons{display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem}.pokeball-icon{width:24px;height:24px;border-radius:50%;position:relative;border:2px solid rgba(255,255,255,.15);overflow:hidden;transition:opacity .2s}.pokeball-icon .pb-top{position:absolute;top:0;left:0;right:0;height:50%;background:var(--pk-red)}.pokeball-icon .pb-band{position:absolute;top:50%;left:0;right:0;height:3px;transform:translateY(-50%);background:#141c2fcc;z-index:1}.pokeball-icon .pb-dot{position:absolute;top:50%;left:50%;width:7px;height:7px;border-radius:50%;transform:translate(-50%,-50%);background:#f8f9fa;border:2px solid rgba(20,28,47,.8);z-index:2}.pokeball-icon.empty{opacity:.2}.pokeball-icon.empty .pb-top{background:#ffffff26}.throw-meter-panel{left:50%;bottom:1rem;transform:translate(-50%);min-width:min(280px,65vw);padding:.72rem}.throw-meter-track{width:100%;height:10px;border-radius:999px;background:#ffffff14;overflow:hidden;border:1px solid rgba(255,255,255,.06)}.throw-meter-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--pk-yellow),#f77f00,var(--pk-red));transition:width 50ms linear}.throw-meter-pct{text-align:center;font-size:.72rem;color:#ffffff80;margin-top:.25rem;font-weight:700}.pokemon-panel{left:1rem;bottom:1rem;min-width:min(230px,44vw);padding:.72rem}.hud-value{font-size:.98rem;font-weight:700}.hud-value-big{font-family:Black Han Sans,Jua,sans-serif;font-size:1.8rem;font-weight:800;color:var(--pk-yellow)}.pokemon-dodge-section{display:flex;align-items:center;gap:.5rem;margin-top:.3rem}.dodge-label{font-size:.78rem;color:#fff6;font-weight:600;white-space:nowrap}.dodge-bar-track{flex:1;height:6px;border-radius:999px;background:#ffffff14;overflow:hidden}.dodge-bar-fill{height:100%;border-radius:999px;background:#ffffff40;transition:width .1s linear}.dodge-bar-fill.ready{background:var(--pk-green);box-shadow:0 0 8px #2a9d8f66}.dodge-status{font-size:.75rem;font-weight:700;color:#fff6;white-space:nowrap}.dodge-status.ready{color:var(--pk-green)}.penalty-meter-section{display:flex;flex-direction:column;gap:.25rem;margin-top:.2rem}.hunger-section{margin-top:.45rem}.penalty-meter-label{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;color:#ffffff9e;font-weight:700}.penalty-meter-track{width:100%;height:7px;border-radius:999px;overflow:hidden;background:#ffffff1a;border:1px solid rgba(255,255,255,.08)}.penalty-meter-fill{height:100%;border-radius:999px;transition:width .22s linear}.penalty-meter-fill.sanity{background:linear-gradient(90deg,var(--pk-red) 0%,#f77f00 55%,var(--pk-yellow) 100%)}.penalty-meter-fill.hunger{background:linear-gradient(90deg,#f77f00 0%,#fcbf49 45%,var(--pk-green) 100%)}.penalty-meter-fill.sanity.critical{animation:sanity-warning-pulse .9s ease-in-out infinite}.penalty-meter-fill.hunger.critical{animation:hunger-warning-pulse .85s ease-in-out infinite}.hunger-warning{font-size:.72rem;font-weight:700;color:#fcbf49;text-shadow:0 0 12px rgba(247,127,0,.3);animation:hunger-warning-pulse .85s ease-in-out infinite}.hunger-warning.critical{color:var(--pk-yellow)}.disoriented-overlay-text{position:absolute;inset:0;z-index:32;display:grid;place-items:center;font-family:Black Han Sans,Jua,sans-serif;font-size:clamp(2rem,8vw,5.2rem);color:#fff;text-shadow:0 0 24px rgba(230,57,70,.45),0 10px 30px rgba(0,0,0,.5);letter-spacing:.05em;animation:disoriented-text-pop .55s ease-in-out infinite alternate}@keyframes sanity-warning-pulse{0%,to{box-shadow:inset 0 0 #e639461a,0 0 #e639461a}50%{box-shadow:inset 0 0 12px #e6394647,0 0 10px #e6394647}}@keyframes hunger-warning-pulse{0%,to{filter:brightness(1);opacity:.85}50%{filter:brightness(1.25);opacity:1}}@keyframes disoriented-text-pop{0%{transform:scale(.92);opacity:.8}to{transform:scale(1);opacity:1}}.caught-overlay{position:absolute;inset:0;display:grid;place-items:center;background:#e639461a}.caught-overlay-card{padding:1rem 1.5rem;border-radius:16px;border:1px solid rgba(230,57,70,.3);background:#050210cc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;font-size:clamp(1.3rem,2.5vw,1.8rem);font-family:Black Han Sans,Jua,sans-serif;display:flex;align-items:center;gap:.5rem;animation:result-pop .3s ease-out}.caught-overlay-icon{color:var(--pk-red);font-size:.7em}.catch-result-banner{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);font-family:Black Han Sans,Jua,sans-serif;font-size:clamp(1.5rem,3.2vw,2.5rem);color:#fff;text-shadow:0 8px 24px rgba(0,0,0,.5);animation:catch-pop .22s ease-out}.catch-result-banner.caught{color:var(--pk-yellow);text-shadow:0 0 30px rgba(255,214,10,.4),0 8px 24px rgba(0,0,0,.5)}.catch-result-banner.escaped{color:#ff8fa3}@keyframes catch-pop{0%{opacity:0;transform:translate(-50%,-35%) scale(.78)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.pokeball-crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pokeball-crosshair-ring,.pokeball-crosshair-fill{position:absolute;inset:0;border-radius:50%}.pokeball-crosshair-ring{border:2px solid rgba(255,255,255,.92);box-shadow:0 0 10px #00000047}.pokeball-crosshair-fill{background:radial-gradient(circle,#ffd60aa6,#ffd60a0d 72%);transform-origin:center;transition:transform 80ms linear}.catch-animation-layer{position:absolute;inset:0;pointer-events:none;display:grid;place-content:center;gap:.6rem}.catch-pokeball{position:relative;width:72px;height:72px;margin-inline:auto}.catch-pokeball-top,.catch-pokeball-bottom,.catch-pokeball-band,.catch-pokeball-core{position:absolute}.catch-pokeball-top{inset:0;border-radius:50%;background:linear-gradient(to bottom,#e63946 0%,#e63946 50%,transparent 50%)}.catch-pokeball-bottom{inset:0;border-radius:50%;background:linear-gradient(to bottom,transparent 50%,#f7fbff 50%);border:2px solid #141c2f}.catch-pokeball-band{left:0;right:0;top:50%;height:6px;background:#141c2f;transform:translateY(-50%)}.catch-pokeball-core{width:18px;height:18px;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);background:#f7fbff;border:4px solid #141c2f}.catch-pokeball.shake-1{animation:wiggle-one .5s ease}.catch-pokeball.shake-2{animation:wiggle-two .8s ease}.catch-pokeball.shake-3{animation:wiggle-three 1.1s ease}.catch-message{text-align:center;font-family:Black Han Sans,Jua,sans-serif;font-size:clamp(1.4rem,3vw,2.3rem);text-shadow:0 8px 20px rgba(0,0,0,.45)}.catch-message.caught{color:#ffe066}.catch-message.escaped{color:#ff758f}@keyframes wiggle-one{0%,to{transform:rotate(0)}30%{transform:rotate(-8deg)}70%{transform:rotate(8deg)}}@keyframes wiggle-two{0%,to{transform:rotate(0)}20%{transform:rotate(-8deg)}40%{transform:rotate(8deg)}60%{transform:rotate(-6deg)}80%{transform:rotate(6deg)}}@keyframes wiggle-three{0%,to{transform:rotate(0) scale(1)}15%{transform:rotate(-9deg) scale(1.03)}30%{transform:rotate(9deg) scale(1)}45%{transform:rotate(-8deg) scale(1.03)}60%{transform:rotate(8deg) scale(1)}75%{transform:rotate(-6deg) scale(1.02)}90%{transform:rotate(6deg) scale(1)}}.lobby-3d-background{position:fixed;inset:0;z-index:40}.lobby-3d-background canvas{display:block;width:100%!important;height:100%!important}.btn-animation{transition:transform .1s ease}.btn-animation:hover{transform:scale(1.05)}.lobby-bg{background:url(/images/background-main.png) no-repeat center / cover}.lobby-screen{position:absolute;inset:0;z-index:50;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:DNFBitBitv2,sans-serif;background:transparent}.lobby-main-screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:5vh;background:transparent}.main-title-sub{font-size:1.8vw;color:#ffe8c4;text-shadow:0 0 10px rgba(255,200,100,.6),0 2px 4px rgba(0,0,0,.5);margin:0;letter-spacing:.15em}.main-title{font-size:4vw;color:#ffd080;text-shadow:0 0 20px rgba(255,180,60,.7),0 3px 6px rgba(0,0,0,.6);margin:.3vw 0 0;letter-spacing:.1em}.main-guest-wrap{display:flex;justify-content:center;width:40%;margin-top:2vw}.lobby-guest-btn{width:35%;border:.3vw solid var(--color-main);border-radius:.6vw;padding:.4vw 2vw;color:var(--color-main);background:#fff;font-size:2.6vw;font-family:DNFBitBitv2,sans-serif;cursor:pointer;text-align:center;transition:background .15s,color .15s}.lobby-guest-btn:hover{background:var(--color-main);color:#fff}.lobby-nickname-screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.login-panel{width:60%;height:auto;max-height:90%;overflow:visible;padding:2vw 2vw 4vw;display:flex;flex-direction:column;align-items:center;gap:1.5vw;border:.2vw solid white;border-radius:.6vw;background:#ffffff26}.login-header-img{width:40%;pointer-events:none}.login-nickname-row{position:relative;width:80%;display:flex;justify-content:space-around;align-items:center;margin:0}.login-nickname-label{width:20%;pointer-events:none}.login-nickname-input{width:65%;border:.3vw solid var(--color-main);border-radius:.6vw;padding:.4vw 2vw;color:#000;background:#fff;font-size:2.6vw;font-family:DNFBitBitv2,sans-serif;outline:none}.login-nickname-input:focus{border-color:var(--color-subbold);box-shadow:0 0 0 .15vw #b67b5a4d}.login-submit-wrap{display:flex;justify-content:center;width:40%;margin-top:0}.lobby-channel-screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.channel-outer-panel{width:80%;height:90%;padding:1.4vw 0;display:flex;flex-direction:column;align-items:center;border:.3vw solid white;border-radius:.6vw;background:#9ca3af4d;overflow-y:auto}.channel-title-img{width:20%;pointer-events:none}.channel-grid{width:100%;height:100%;display:flex;flex-wrap:wrap;justify-content:space-between;align-content:flex-start;padding:0 8vw;overflow-y:auto}.channel-card{width:40%;height:20%;padding:0 1.6vw;margin:1vw 0;display:flex;justify-content:space-between;align-items:center;border:.3vw solid white;border-radius:.6vw;background:var(--color-main);color:#fff;cursor:pointer;transition:background .15s}.channel-card:hover{background:var(--color-subbold)}.channel-card-name{font-size:1.8vw}.channel-card-count{font-size:1.6vw}.room-list-outer{position:relative;width:80%;height:90%;display:flex;justify-content:space-between;border:.3vw solid white;border-radius:.6vw;background:#ffe8c4d9;overflow-y:auto}.room-list-sidebar{width:15%}.sidebar-btn{width:80%;margin:1vw auto;padding:1.2vw 1vw;font-size:1.1vw;font-family:DNFBitBitv2,sans-serif;border:.2vw solid white;border-radius:.6vw;background:var(--color-main);color:#fff;cursor:pointer;text-align:center;transition:background .15s}.sidebar-btn:hover{background:var(--color-subbold)}.room-list-main{width:85%;height:100%;display:flex;flex-wrap:wrap;align-content:flex-start;overflow-y:auto}.room-card{width:45%;height:25%;padding:0 1vw;margin:.6vw .4vw;display:flex;justify-content:space-between;align-items:center;border:.3vw solid white;border-radius:.6vw;background:var(--color-main);color:#fff;cursor:pointer;transition:background .15s}.room-card:hover{background:var(--color-subbold)}.room-card-thumb{width:25%;height:70%;background:#fff;border-radius:1vw;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0}.room-card-thumb-img{width:100%;height:100%;object-fit:cover}.room-card-info{width:70%;height:70%;margin:0 1vw;display:flex;flex-direction:column;justify-content:space-between}.room-card-title-row{background:#fff;color:var(--color-text);border-radius:.6vw;padding:.4vw}.room-card-title-text{font-size:1.3vw;display:flex;align-items:center;justify-content:space-between}.room-card-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:DNFBitBitv2,sans-serif}.room-card-lock-icon{width:10%;flex-shrink:0}.room-card-bottom{display:flex;justify-content:space-between;align-items:center}.room-status-img{width:30%}.room-players-count{font-size:1.6vw;color:var(--color-text)}.room-empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-text);opacity:.5;font-size:1.6vw}.modal-overlay-ref{position:absolute;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:#00000040}.modal-panel-ref{width:55%;display:flex;flex-direction:column;align-items:center;justify-content:space-between;border:.3vw solid white;border-radius:.6vw;background:var(--color-main);color:#fff;padding:1vw 0;overflow-y:auto}.modal-panel-ref.modal-pw{width:50%;height:auto;justify-content:space-around;padding:2vw}.modal-title-ref{font-size:2.2vw;margin:1vw 0}.modal-field-ref{width:90%;display:flex;justify-content:flex-start;align-items:center;margin:.4vw 0}.modal-label-ref{width:40%;font-size:1.9vw;text-align:left}.modal-input-ref{width:60%;border:.2vw solid white;color:#000;background:#fff;padding:.4vw 1vw;margin:0 1vw;font-size:1.4vw;font-family:DNFBitBitv2,sans-serif;outline:none}.modal-pw-input{width:80%;border:.2vw solid white;color:#000;background:#fff;padding:.4vw 1vw;margin:0 1vw;font-size:1.7vw;font-family:DNFBitBitv2,sans-serif;outline:none}.modal-checkbox-row{width:90%;display:flex;justify-content:flex-end;align-items:center;gap:.4vw;font-size:1.4vw}.modal-checkbox{width:1.4vw;height:1.4vw;border:.2vw solid var(--color-main);background:#fff;cursor:pointer}.modal-checkbox.checked{background:var(--color-subbold)}.modal-maxplayer-group{display:flex;gap:.5vw;flex-wrap:wrap}.modal-maxplayer-btn{padding:.4vw .8vw;border:.2vw solid white;border-radius:.4vw;background:transparent;color:#fff;font-size:1.3vw;font-family:DNFBitBitv2,sans-serif;cursor:pointer;transition:background .15s}.modal-maxplayer-btn.active{background:var(--color-subbold);color:#fff}.modal-maxplayer-btn:hover:not(.active){background:#fff3}.modal-actions-ref{width:90%;display:flex;justify-content:space-between;align-items:center;margin:1vw 0}.modal-action-btn{width:30%;padding:1vw;border:.3vw solid white;border-radius:.6vw;cursor:pointer;text-align:center;font-size:1.7vw;transition:background .15s,color .15s}.modal-action-btn:hover{background:var(--color-subbold);color:#fff}.room-detail-panel{width:90vw;max-width:1400px;height:72vh;padding:1.2rem;display:flex;flex-direction:column;position:relative;z-index:2;overflow:hidden;color:var(--color-text, #6d451f);background:#ffe8c4e6;border:.3vw solid white;border-radius:.6vw;box-shadow:0 8px 32px #0000004d;animation:lobby-appear .5s ease-out}@keyframes lobby-appear{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.room-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.9rem;padding-bottom:.85rem;border-bottom:.2vw solid var(--color-main);flex-shrink:0}.room-detail-title{font-family:DNFBitBitv2,sans-serif;font-size:2vw;color:var(--color-subbold, #894820);margin:0;line-height:1}.room-code-badge{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;border-radius:.6vw;background:#b67b5a26;border:.15vw solid var(--color-main)}.room-code-label{font-size:.8rem;color:var(--color-main);font-weight:700}.room-code-value{font-family:DNFBitBitv2,sans-serif;color:var(--color-subbold);font-size:1.35rem;letter-spacing:.08em}.room-detail-layout{display:grid;grid-template-columns:minmax(220px,.7fr) 1fr 1fr;gap:1rem;flex:1;min-height:0;overflow:hidden}.room-detail-players,.room-detail-selection,.room-detail-chat{background:#ffffff80;border-radius:.6vw;border:.15vw solid rgba(182,123,90,.3);padding:.9rem;display:flex;flex-direction:column}.room-detail-players{display:flex;flex-direction:column;min-height:0}.room-detail-player-scroll{flex:1;min-height:0;overflow-y:auto}.room-detail-center{display:flex;flex-direction:column;min-height:0;overflow-y:auto;padding-right:.25rem}.room-detail-sidebar{display:flex;flex-direction:column;min-height:0}.room-detail-preview{background:#ffffff80;border-radius:.6vw;border:.15vw solid rgba(182,123,90,.3);padding:.9rem;display:flex;flex-direction:column;flex:1;min-height:0}.room-detail-preview h2{font-family:DNFBitBitv2,sans-serif;font-size:1.18rem;color:var(--color-subbold);margin-bottom:.7rem;flex-shrink:0}.room-detail-preview .role-preview-3d{flex:1;height:auto;min-height:200px}.room-detail-chat-outer{width:90vw;max-width:1400px;margin-top:.7rem;background:#ffe8c4e6;border:.3vw solid white;border-radius:.6vw;box-shadow:0 8px 32px #0000004d;padding:.9rem 1.2rem;display:flex;flex-direction:column;position:relative;z-index:2;animation:lobby-appear .5s ease-out;max-height:20vh}.room-detail-chat-outer h2{font-family:DNFBitBitv2,sans-serif;font-size:1.18rem;color:var(--color-subbold);margin-bottom:.5rem;flex-shrink:0}.room-detail-chat-outer .chat-log{flex:1;overflow-y:auto;background:#fff9;border:.15vw solid rgba(182,123,90,.2);border-radius:12px;padding:.55rem;margin-bottom:.5rem;display:flex;flex-direction:column;gap:.35rem;min-height:0}.room-detail-chat-outer .chat-input-row{display:flex;gap:.5rem;flex-shrink:0}.room-detail-chat-outer .chat-input-row input{flex:1;padding:.55rem;border-radius:10px;font-size:.9rem;font-family:Noto Sans KR,sans-serif;background:#fff;border:.15vw solid var(--color-main);color:var(--color-text);outline:none}.room-detail-chat-outer .chat-send-btn{padding:.55rem .8rem;border-radius:10px;border:none;font-family:DNFBitBitv2,sans-serif;font-size:.9rem;color:#fff;background:var(--color-main);cursor:pointer}.room-detail-center::-webkit-scrollbar,.player-list::-webkit-scrollbar,.chat-log::-webkit-scrollbar,.room-detail-selection .pokemon-select-grid::-webkit-scrollbar{width:6px}.room-detail-center::-webkit-scrollbar-track,.player-list::-webkit-scrollbar-track,.chat-log::-webkit-scrollbar-track,.room-detail-selection .pokemon-select-grid::-webkit-scrollbar-track{background:transparent}.room-detail-center::-webkit-scrollbar-thumb,.player-list::-webkit-scrollbar-thumb,.chat-log::-webkit-scrollbar-thumb,.room-detail-selection .pokemon-select-grid::-webkit-scrollbar-thumb{background:#0000001f;border-radius:999px}.room-detail-players h2,.room-detail-selection h2,.room-detail-chat h2{font-family:DNFBitBitv2,sans-serif;font-size:1.18rem;color:var(--color-subbold);margin-bottom:.7rem;display:flex;align-items:center;justify-content:space-between}.room-detail-selection h2+h2{margin-top:.8rem}.room-player-count{font-size:.82rem;color:#fff;background:var(--color-main);padding:.2rem .6rem;border-radius:999px}.player-list{flex:1;display:flex;flex-direction:column;gap:.45rem;overflow-y:auto;padding-right:.4rem}.player-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem .55rem;border-radius:11px;background:#ffffff1a;border:1px solid rgba(255,255,255,.1)}.player-row.is-me{border-color:#4fc3f799;background:#4fc3f71a}.player-row-left{display:flex;align-items:center;gap:.5rem}.player-avatar{width:32px;height:32px;border-radius:.4vw;display:grid;place-items:center;background:var(--color-main);color:#fff;font-family:DNFBitBitv2,sans-serif;font-size:1rem}.player-row.is-me .player-avatar{background:#4fc3f7;color:#fff}.player-name{font-size:.94rem;font-weight:700;color:var(--color-text, #6d451f);font-family:DNFBitBitv2,sans-serif}.player-row-tags{display:flex;gap:.3rem;align-items:center}.role-chip,.ready-chip{padding:.18rem .5rem;border-radius:999px;font-size:.72rem;font-weight:700;font-family:Noto Sans KR,sans-serif}.role-chip.trainer{background:#b67b5a26;color:var(--color-subbold);border:1px solid var(--color-main)}.role-chip.pokemon{background:#64b4dc26;color:#2a7ab5;border:1px solid rgba(100,180,220,.4)}.ready-chip{background:#b67b5a1a;color:var(--color-main);min-width:2rem;text-align:center}.ready-chip.is-ready{background:#2eb45a26;color:#1b8a3e}.bot-add-btn{margin-top:.55rem;padding:.58rem;font-size:.92rem;width:100%;border-radius:11px;border:.15vw solid var(--color-main);font-family:DNFBitBitv2,sans-serif;color:var(--color-main);background:#b67b5a1a;cursor:pointer;transition:background .14s ease,transform .14s ease}.bot-add-btn:hover{transform:translateY(-1px);background:#4fc3f72e}.bot-remove-btn{padding:.2rem .48rem;border-radius:8px;border:1px solid rgba(198,40,40,.3);font-family:Noto Sans KR,sans-serif;font-size:.7rem;font-weight:700;color:#c62828;background:transparent;cursor:pointer;transition:all .1s}.bot-remove-btn:hover{background:#e639461a}.room-detail-controls{flex-shrink:0;margin-top:auto;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.15);display:flex;flex-direction:column;gap:.45rem}.btn-ready,.btn-start-game,.btn-leave{width:100%;border-radius:11px;font-family:DNFBitBitv2,Jua,sans-serif;cursor:pointer;transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}.btn-ready{border:.2vw solid white;padding:.85rem;font-size:1.16rem;color:#fff;background:var(--color-main)}.btn-ready.is-ready{background:#4caf50}.btn-start-game{border:.2vw solid white;padding:.72rem;font-size:1rem;color:#fff;background:var(--color-subbold)}.btn-leave{padding:.7rem;border:.2vw solid var(--color-main);font-size:.96rem;color:var(--color-main);background:transparent}.btn-ready:hover,.btn-start-game:hover,.btn-leave:hover{transform:translateY(-1px);filter:brightness(1.05)}.role-select-group{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.45rem}.role-select-btn{border:.15vw solid var(--color-main);border-radius:10px;padding:.55rem .6rem;font-family:DNFBitBitv2,sans-serif;font-size:.9rem;color:var(--color-text);background:#fff;cursor:pointer;transition:all .12s ease}.role-select-btn:hover{transform:translateY(-1px)}.role-select-btn.active{color:#fff;background:var(--color-main)}.trainer-status{background:#ffffff80;border:.15vw dashed var(--color-main);border-radius:14px;padding:1.2rem;text-align:center;color:var(--color-text);font-family:Noto Sans KR,sans-serif;display:flex;flex-direction:column;align-items:center;gap:.8rem;font-size:1rem;line-height:1.5}.trainer-status-icon{font-size:2.4rem;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.trainer-status strong{color:var(--color-subbold);font-size:1.08rem}.chat-log{flex:1;overflow-y:auto;background:#fff9;border:.15vw solid rgba(182,123,90,.2);border-radius:12px;padding:.75rem;margin-bottom:.65rem;display:flex;flex-direction:column;gap:.45rem}.chat-message{font-size:.9rem;color:var(--color-text);background:#b67b5a1a;padding:.45rem .7rem;border-radius:10px 10px 10px 2px;font-family:Noto Sans KR,sans-serif;align-self:flex-start;max-width:92%;word-break:break-word}.chat-message strong{color:var(--color-subbold);font-weight:700;margin-right:.3rem}.chat-input-row{display:flex;gap:.5rem}.chat-input-row input{flex:1;padding:.72rem;border-radius:10px;font-size:.95rem;font-family:Noto Sans KR,sans-serif;background:#fff;border:.15vw solid var(--color-main);color:var(--color-text);outline:none;transition:border-color .18s ease}.chat-input-row input:focus{border-color:#4fc3f7b3}.chat-send-btn{padding:.72rem .9rem;border-radius:10px;border:none;font-family:DNFBitBitv2,sans-serif;font-size:1rem;color:#fff;background:var(--color-main);cursor:pointer}.room-detail-selection .pokemon-select-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem;overflow-y:visible;padding:.2rem .35rem .2rem .2rem;flex:1}.room-detail-selection .pokemon-card{background:#fff;border:.15vw solid rgba(182,123,90,.2);border-radius:14px;padding:.7rem;color:var(--color-text);transition:all .12s ease}.room-detail-selection .pokemon-card:hover{transform:translateY(-2px);border-color:#4fc3f799}.room-detail-selection .pokemon-card.selected{border-color:var(--color-main);background:#b67b5a14;transform:translateY(-2px)}.room-detail-selection .pokemon-card-top{display:flex;align-items:center;gap:.45rem}.room-detail-selection .pokemon-card-avatar{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:#fffffff2;font-weight:900;font-size:.9rem;flex-shrink:0}.room-detail-selection .pokemon-card-info{display:flex;flex-direction:column;gap:0;min-width:0}.room-detail-selection .pokemon-card-name{color:var(--color-subbold);font-family:DNFBitBitv2,sans-serif;font-size:.95rem;line-height:1.2}.room-detail-selection .pokemon-card-name-en{color:#6d451f80;font-size:.6rem;font-weight:500}.room-detail-selection .pokemon-card-stats{display:flex;flex-direction:column;gap:.22rem;margin-top:.35rem}.room-detail-selection .poke-stat-row{display:flex;align-items:center;gap:.28rem}.room-detail-selection .poke-stat-label{color:#6d451fb3;font-size:.62rem;font-weight:600;min-width:44px;white-space:nowrap}.room-detail-selection .poke-stat-track{background:#b67b5a33;flex:1;height:4px;border-radius:999px;overflow:hidden}.room-detail-selection .poke-stat-fill{background:var(--color-main);height:100%;border-radius:999px;transition:width .3s ease}.room-detail-selection .poke-stat-num{color:#6d451fb3;font-size:.62rem;font-weight:700;min-width:20px;text-align:right}.room-detail-selection .pokemon-card-check{background:var(--color-main);color:#fff;position:absolute;top:.32rem;right:.42rem;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:.65rem;font-weight:900}@media(max-width:960px){.channel-grid{flex-direction:column}.room-detail-layout{grid-template-columns:1fr}.room-detail-panel{height:min(760px,92vh);overflow-y:auto}.room-detail-center{overflow:visible;padding-right:0}.room-detail-sidebar{flex-direction:column}.room-detail-preview .role-preview-3d{height:250px;min-height:unset}.room-detail-chat-outer{max-height:30vh}}.role-preview-3d{width:100%;height:180px;border-radius:14px;overflow:hidden;border:1px solid rgba(0,0,0,.08);background:radial-gradient(circle at 50% 30%,#fff9,#c8e1ff66 55%,#f0f8ff80);box-shadow:0 2px 8px #0000000f;pointer-events:auto}.role-preview-3d canvas{width:100%!important;height:100%!important;pointer-events:auto}.role-preview-loading{padding:.3rem .6rem;border-radius:999px;border:1px solid rgba(0,0,0,.1);background:#ffffffd9;color:#1a3a5c;font-size:.72rem;font-family:Noto Sans KR,sans-serif;letter-spacing:.04em}.trainer-pokeball-row{width:100%;display:flex;flex-direction:column;align-items:center;gap:.45rem}.trainer-pokeball-label{font-size:.82rem;color:var(--color-subbold);font-weight:700}.trainer-pokeball-options{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem}.trainer-pokeball-options .modal-maxplayer-btn{min-width:48px;padding:.32rem .5rem;font-size:.86rem;border-color:var(--color-main);color:var(--color-text);background:#fff9}.trainer-pokeball-options .modal-maxplayer-btn.active{background:var(--color-subbold);color:#fff;border-color:var(--color-subbold)}.trainer-pokeball-options .modal-maxplayer-btn:hover:not(.active){background:#b67b5a26}@media(max-width:960px){.role-preview-3d{height:205px}}.lobby-back-btn{position:absolute;top:2vw;left:2vw;padding:.6vw 1.2vw;display:flex;align-items:center;justify-content:center;border-radius:.6vw;background:var(--color-main);border:.2vw solid white;color:#fff;font-size:1.4vw;cursor:pointer;transition:background .15s;z-index:60;font-family:DNFBitBitv2,sans-serif}.lobby-back-btn:hover{background:var(--color-subbold)}@keyframes title-pulse-glow{0%,to{text-shadow:0 0 20px rgba(255,180,60,.7),0 3px 6px rgba(0,0,0,.6);transform:scale(1)}50%{text-shadow:0 0 35px rgba(255,215,0,.9),0 0 55px rgba(255,215,0,.5),0 5px 10px rgba(0,0,0,.6);transform:scale(1.02)}}.main-title{animation:title-pulse-glow 3.5s ease-in-out infinite;position:relative;z-index:2}@keyframes subtitle-fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.main-title-sub{animation:subtitle-fade-up 1.2s cubic-bezier(.2,.8,.2,1) forwards;opacity:0;position:relative;z-index:2}@keyframes guest-btn-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.lobby-guest-btn{animation:guest-btn-bounce 3s ease-in-out infinite;will-change:transform}.lobby-guest-btn:hover{animation-play-state:paused}@keyframes sparkle-twinkle{0%,to{opacity:0;transform:scale(.5) rotate(0)}50%{opacity:.9;transform:scale(1.2) rotate(15deg)}}.main-title:before{content:"✦";position:absolute;top:-15%;left:-8%;color:var(--pk-yellow);font-size:2.5vw;z-index:-1;pointer-events:none;animation:sparkle-twinkle 4s ease-in-out infinite;text-shadow:0 0 12px var(--pk-yellow)}.main-title:after{content:"✦";position:absolute;bottom:10%;right:-6%;color:var(--color-sublight);font-size:1.8vw;z-index:-1;pointer-events:none;animation:sparkle-twinkle 5s ease-in-out infinite 2s;text-shadow:0 0 10px var(--color-sublight)}.main-title-sub:before{content:"✦";position:absolute;top:-80%;right:15%;color:#fff;font-size:1.2vw;z-index:-1;pointer-events:none;animation:sparkle-twinkle 3.5s ease-in-out infinite 1s;text-shadow:0 0 8px white}.main-title-sub:after{content:"✦";position:absolute;bottom:-30%;left:10%;color:var(--pk-yellow);font-size:.8vw;z-index:-1;pointer-events:none;animation:sparkle-twinkle 4.5s ease-in-out infinite .5s;text-shadow:0 0 6px var(--pk-yellow)}
