@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(16, 32, 52, .68);--panel-border: rgba(255, 255, 255, .3);--ink: #f6fbff;--ink-dark: #12344b;--shadow: 0 12px 36px rgba(6, 16, 33, .35);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:#050210}body.pointer-locked,body.pointer-locked *{cursor:none!important}.app-root{position:relative;width:100vw;height:100vh}.app-root canvas{display:block}.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;align-items:center;justify-content:center;gap:.4rem;background:#050210b3;border:1px solid rgba(255,214,10,.15)}.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)}.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}:root{--color-main: #b67b5a;--color-sublight: #ffe8c4;--color-subbold: #894820;--color-text: #6d451f}.btn-animation{transition:all .15s cubic-bezier(.4,0,.2,1)}.btn-animation:hover{transform:scale(1.05)}.lobby-screen{position:absolute;inset:0;z-index:50;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:DNFBitBitv2,Jua,sans-serif;background:radial-gradient(ellipse at 50% 30%,#0a052073,#050210b3);pointer-events:none}.lobby-screen button,.lobby-screen a,.lobby-screen input,.lobby-screen select,.lobby-screen [role=button]{pointer-events:auto}.main-subtitle{font-family:DNFBitBitv2,Jua,sans-serif;font-size:clamp(1rem,2.5vw,1.6rem);color:#fff;letter-spacing:.05em;text-shadow:0 2px 0 rgba(0,0,0,.35),0 8px 20px rgba(0,0,0,.3);margin-bottom:.4rem}.main-title{font-family:DNFBitBitv2,Jua,sans-serif;font-size:clamp(3rem,9vw,6rem);line-height:1;color:#b67b5a;-webkit-text-stroke:3px #894820;text-shadow:0 4px 0 #894820,0 12px 22px rgba(137,72,32,.45);margin-bottom:.6vw}.lobby-guest-btn-wrap{display:flex;justify-content:center;width:40%;margin-top:.5vw}.lobby-guest-btn{width:auto;min-width:7.5rem;border:.3vw solid var(--color-main);border-radius:.6vw;padding:.4vw 3vw;color:var(--color-main);background:#fff;font-size:2.6vw;font-family:DNFBitBitv2,Jua,sans-serif;cursor:pointer;text-align:center}.lobby-guest-btn:hover{background:var(--color-main);color:#fff}.login-panel{width:60%;height:60%;display:flex;flex-direction:column;align-items:center;justify-content:center;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:2vw 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,Jua,sans-serif;outline:none}.login-submit-wrap{display:flex;justify-content:center;width:40%;margin-top:1vw}.channel-outer-panel{width:80%;height:90%;padding:1.4vw;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;margin-bottom:1vw}.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:var(--color-sublight);overflow-y:auto}.room-list-sidebar{width:15%}.sidebar-btn{width:80%;margin:1vw auto;padding:1.2vw 1vw;font-size:1.1vw;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;border-radius:.6vw;padding:.4vw}.room-card-title-text{font-size:1.3vw;display:flex;align-items:center;justify-content:space-between;color:#2e2e2e}.room-card-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:DNFBitBitv2,Jua,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:#2e2e2e}.room-empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-subbold);font-size:1.6vw}.modal-overlay-ref{position:absolute;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:#0000004d}.modal-panel-ref{width:40%;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:40%;height:40%;justify-content:space-around}.modal-title-ref{font-size:1.8vw;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.6vw;text-align:left}.modal-input-ref{width:60%;border:.2vw solid white;color:#000;padding:.4vw 1vw;margin:0 1vw;font-size:1.2vw;font-family:DNFBitBitv2,Jua,sans-serif;outline:none}.modal-pw-input{width:80%;border:.2vw solid var(--color-subbold);color:#000;padding:.4vw 1vw;margin:0 1vw;font-size:1.4vw;font-family:DNFBitBitv2,Jua,sans-serif;outline:none}.modal-checkbox-row{width:90%;display:flex;justify-content:flex-end;align-items:center;gap:.4vw;font-size:1.2vw}.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.1vw;font-family:DNFBitBitv2,Jua,sans-serif;cursor:pointer;transition:background .15s}.modal-maxplayer-btn.active{background:var(--color-subbold)}.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.4vw;transition:background .15s,color .15s}.modal-action-btn:hover{background:var(--color-subbold);color:#fff}.room-detail-panel{width:min(1040px,94vw);height:min(760px,90vh);background:var(--color-sublight);border-radius:.6vw;padding:1.5rem;border:.3vw solid white;box-shadow:0 12px 0 var(--color-subbold),0 25px 50px #0006;display:flex;flex-direction:column;position:relative;z-index:2;overflow:hidden;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:1.2rem;padding-bottom:1rem;border-bottom:4px solid rgba(255,255,255,.3);flex-shrink:0}.room-detail-title{font-family:DNFBitBitv2,Jua,sans-serif;font-size:clamp(2rem,4vw,2.5rem);color:var(--color-subbold);margin:0;line-height:1}.room-code-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem .8rem;border-radius:.6vw;background:#fff;border:.2vw solid var(--color-main)}.room-code-label{font-size:.8rem;color:var(--color-main);font-weight:700}.room-code-value{font-family:DNFBitBitv2,Jua,sans-serif;color:#d63031;font-size:1.4rem;letter-spacing:.1em}.room-detail-layout{display:grid;grid-template-columns:minmax(280px,1fr) 1.2fr;gap:1.2rem;flex:1;min-height:0}.room-detail-players,.room-detail-selection,.room-detail-chat{background:#fff;border-radius:.6vw;border:.2vw solid var(--color-main);padding:1rem;display:flex;flex-direction:column}.room-detail-right{display:flex;flex-direction:column;gap:1rem;min-height:0;overflow-y:auto;padding-right:.35rem}.room-detail-right::-webkit-scrollbar{width:6px}.room-detail-right::-webkit-scrollbar-track{background:transparent}.room-detail-right::-webkit-scrollbar-thumb{background:#d1ccc0;border-radius:3px}.room-detail-players h2,.room-detail-selection h2,.room-detail-chat h2{font-family:DNFBitBitv2,Jua,sans-serif;font-size:1.3rem;color:var(--color-subbold);margin-bottom:.8rem;display:flex;align-items:center;justify-content:space-between}.room-detail-selection h2+h2{margin-top:1rem}.role-select-group{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.5rem}.role-select-btn{border:2px solid var(--color-main);border-radius:12px;padding:.55rem .65rem;font-family:DNFBitBitv2,Jua,sans-serif;font-size:.95rem;color:var(--color-main);background:#fff;cursor:pointer;transition:all .12s ease}.role-select-btn:hover{transform:translateY(-1px);border-color:var(--color-subbold);color:var(--color-subbold)}.role-select-btn.active{color:#fff;background:var(--color-main);border-color:var(--color-subbold);box-shadow:0 4px 0 var(--color-subbold)}.room-player-count{font-size:.9rem;color:#fff;background:var(--color-main);padding:.2rem .6rem;border-radius:12px}.player-list{display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;flex:1;padding-right:.5rem}.player-list::-webkit-scrollbar{width:6px}.player-list::-webkit-scrollbar-track{background:#f1f2f6;border-radius:3px}.player-list::-webkit-scrollbar-thumb{background:#d1ccc0;border-radius:3px}.player-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem .6rem;border-radius:12px;background:#f1f2f6;border:2px solid transparent}.player-row.is-me{background:#fff9e6;border-color:#fbc531}.player-row-left{display:flex;align-items:center;gap:.5rem}.player-avatar{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--color-main);color:#fff;font-family:DNFBitBitv2,Jua,sans-serif;font-size:1.2rem}.player-row.is-me .player-avatar{background:#fbc531;color:var(--color-subbold)}.player-name{font-size:.95rem;font-weight:700;color:var(--color-subbold);font-family:Noto Sans KR,sans-serif}.player-row-tags{display:flex;gap:.3rem;align-items:center}.role-chip,.ready-chip{padding:.2rem .5rem;border-radius:8px;font-size:.75rem;font-weight:700;font-family:Noto Sans KR,sans-serif}.role-chip.trainer{background:#ffeaa7;color:#d63031;border:1px solid #d63031}.role-chip.pokemon{background:#55efc4;color:#00b894;border:1px solid #00b894}.ready-chip{background:#d1ccc0;color:#fff;min-width:2rem;text-align:center}.ready-chip.is-ready{background:#4ecdc4;color:#fff}.room-detail-controls{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}.btn-ready{width:100%;padding:1rem;border-radius:.6vw;border:none;font-family:DNFBitBitv2,Jua,sans-serif;font-size:1.3rem;color:#fff;background:var(--color-main);cursor:pointer;box-shadow:0 6px 0 var(--color-subbold);transition:transform .1s,box-shadow .1s,background .2s}.btn-ready:active{transform:translateY(6px);box-shadow:0 0 0 var(--color-subbold)}.btn-ready.is-ready{background:#4ecdc4;box-shadow:0 6px #1abc9c}.btn-ready.is-ready:active{transform:translateY(6px);box-shadow:0 0 #1abc9c}.btn-start-game{width:100%;padding:.8rem;border-radius:.6vw;border:none;font-family:DNFBitBitv2,Jua,sans-serif;font-size:1.1rem;color:#fff;background:var(--color-main);cursor:pointer;box-shadow:0 4px 0 var(--color-subbold);transition:transform .1s,box-shadow .1s}.btn-start-game:active{transform:translateY(4px);box-shadow:0 0 0 var(--color-subbold)}.btn-leave{width:100%;padding:.8rem;border-radius:.6vw;border:.2vw solid #d1ccc0;font-family:DNFBitBitv2,Jua,sans-serif;font-size:1rem;color:#a4b0be;background:transparent;cursor:pointer;transition:all .1s}.btn-leave:hover{border-color:#ff6b81;color:#ff6b81}.trainer-status{background:#fff9e6;border:3px dashed #fbc531;border-radius:.6vw;padding:1.5rem;text-align:center;color:var(--color-subbold);font-family:Noto Sans KR,sans-serif;display:flex;flex-direction:column;align-items:center;gap:1rem;font-size:1.1rem;line-height:1.6}.trainer-status-icon{font-size:3rem;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.trainer-status strong{color:#d63031;font-size:1.2rem}.chat-log{flex:1;overflow-y:auto;background:#f1f2f6;border-radius:12px;padding:.8rem;margin-bottom:.8rem;display:flex;flex-direction:column;gap:.5rem}.chat-log::-webkit-scrollbar{width:6px}.chat-log::-webkit-scrollbar-track{background:transparent}.chat-log::-webkit-scrollbar-thumb{background:#d1ccc0;border-radius:3px}.chat-message{font-size:.95rem;color:#2f3542;background:#fff;padding:.5rem .8rem;border-radius:12px 12px 12px 2px;box-shadow:0 2px #0000000d;font-family:Noto Sans KR,sans-serif;align-self:flex-start;max-width:90%;word-break:break-word}.chat-message strong{color:var(--color-main);font-weight:700;margin-right:.3rem}.chat-input-row{display:flex;gap:.5rem}.chat-input-row input{flex:1;padding:.8rem;border-radius:12px;font-size:1rem;font-family:Noto Sans KR,sans-serif;background:#f1f2f6;border:2px solid #d1ccc0;color:#2f3542;outline:none;transition:border-color .2s}.chat-input-row input:focus{border-color:var(--color-main)}.chat-send-btn{padding:.8rem 1rem;border-radius:12px;border:none;font-family:DNFBitBitv2,Jua,sans-serif;font-size:1.1rem;color:#fff;background:var(--color-main);cursor:pointer;box-shadow:0 4px 0 var(--color-subbold);transition:transform .1s,box-shadow .1s}.chat-send-btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--color-subbold)}.room-detail-selection .pokemon-select-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem;overflow-y:auto;padding-right:.5rem;flex:1}.room-detail-selection .pokemon-select-grid::-webkit-scrollbar{width:6px}.room-detail-selection .pokemon-select-grid::-webkit-scrollbar-track{background:#f1f2f6;border-radius:3px}.room-detail-selection .pokemon-select-grid::-webkit-scrollbar-thumb{background:#d1ccc0;border-radius:3px}.room-detail-selection .pokemon-card{background:#fff;border:3px solid #d1ccc0;border-radius:16px;padding:.8rem;color:var(--color-subbold);box-shadow:0 4px #f1f2f6;transition:all .1s}.room-detail-selection .pokemon-card:hover{transform:translateY(-2px);border-color:var(--color-main);box-shadow:0 6px #f1f2f6}.room-detail-selection .pokemon-card.selected{border-color:var(--color-main);background:#fff4f2;box-shadow:0 4px 0 var(--color-main);transform:translateY(-2px) scale(1.02)}.room-detail-selection .pokemon-card-top{display:flex;align-items:center;gap:.5rem}.room-detail-selection .pokemon-card-avatar{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#0009;font-weight:900;font-size:.95rem;flex-shrink:0;box-shadow:inset 0 -2px 4px #00000026}.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,Jua,sans-serif;font-size:1rem;line-height:1.2}.room-detail-selection .pokemon-card-name-en{color:#a4b0be;font-size:.62rem;font-weight:500}.room-detail-selection .pokemon-card-stats{display:flex;flex-direction:column;gap:.25rem;margin-top:.4rem}.room-detail-selection .poke-stat-row{display:flex;align-items:center;gap:.3rem}.room-detail-selection .poke-stat-label{color:var(--color-main);font-size:.65rem;font-weight:600;min-width:48px;white-space:nowrap}.room-detail-selection .poke-stat-track{background:#f1f2f6;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:var(--color-subbold);font-size:.65rem;font-weight:700;min-width:20px;text-align:right}.room-detail-selection .pokemon-card-check{background:var(--color-main);color:#fff;position:absolute;top:.35rem;right:.45rem;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:.65rem;font-weight:900}.bot-add-btn{margin-top:.5rem;padding:.6rem;font-size:.95rem;width:100%;border-radius:12px;border:3px solid var(--color-main);font-family:DNFBitBitv2,Jua,sans-serif;color:var(--color-main);background:#fff;cursor:pointer;box-shadow:0 4px 0 var(--color-main);transition:transform .1s,box-shadow .1s}.bot-add-btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--color-main)}.bot-remove-btn{padding:.2rem .5rem;border-radius:8px;border:2px solid #d63031;font-family:Noto Sans KR,sans-serif;font-size:.7rem;font-weight:700;color:#d63031;background:transparent;cursor:pointer;transition:all .1s}.bot-remove-btn:hover{background:#d63031;color:#fff}@media(max-width:960px){.room-detail-layout{grid-template-columns:1fr}.room-detail-panel{overflow-y:auto}.room-detail-right{overflow:visible;padding-right:0}}
