html,body,#app{background:#111;width:100%;height:100%;margin:0;font-family:system-ui,sans-serif;overflow:hidden}canvas{touch-action:none;display:block}*{-webkit-user-select:none;user-select:none}.touch-joystick{z-index:1000;-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;width:clamp(100px,24vmin,150px);height:clamp(100px,24vmin,150px);position:fixed;bottom:clamp(24px,6vmin,45px);right:clamp(24px,6vmin,45px)}.joystick-base{background:#ffffff26;border:3px solid #ffffff4d;border-radius:50%;justify-content:center;align-items:center;width:100%;height:100%;transition:background .2s;display:flex;position:absolute}.touch-joystick.active .joystick-base{background:#ffffff40;border-color:#ffffff80}.joystick-knob{background:#fff9;border:3px solid #fffc;border-radius:50%;width:34%;height:34%;transition:transform 50ms ease-out,background .2s;box-shadow:0 4px 8px #0000004d}.touch-joystick.active .joystick-knob{background:#fffc;border-color:#fff}.touch-jump-button{z-index:1000;-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#64c8ff80;border:3px solid #64c8ffb3;border-radius:50%;justify-content:center;align-items:center;width:clamp(60px,15vmin,90px);height:clamp(60px,15vmin,90px);transition:all .15s;display:flex;position:fixed;bottom:clamp(24px,6vmin,45px);left:clamp(24px,6vmin,45px);box-shadow:0 4px 8px #0000004d}.touch-jump-button span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(9px,2.2vmin,12px);font-weight:700;line-height:1;display:block}.touch-jump-button:active,.touch-jump-button.pressed{background:#64c8ffcc;border-color:#64c8ff;transform:scale(.95);box-shadow:0 2px 4px #0000004d}.touch-reset-button{z-index:1000;-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#ff5a5a80;border:3px solid #ff5a5ab3;border-radius:50%;justify-content:center;align-items:center;width:clamp(35px,11vmin,45px);height:clamp(35px,11vmin,45px);transition:all .15s;display:flex;position:fixed;bottom:clamp(24px,6vmin,45px);left:clamp(155px,6vmin,165px);box-shadow:0 4px 8px #0000004d}.touch-reset-button span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(8px,2vmin,11px);font-weight:700;line-height:1;display:block}.touch-reset-button:active,.touch-reset-button.pressed{background:#ff5a5acc;border-color:#ff5a5a;transform:scale(.95);box-shadow:0 2px 4px #0000004d}#left-button-column{z-index:1000;flex-direction:column;align-items:center;gap:clamp(8px,2vmin,14px);display:flex;position:fixed;top:50%;left:clamp(10px,4vmin,20px);transform:translateY(-50%)}.touch-camera-button{-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#ff980080;border:3px solid #ff9800b3;border-radius:50%;justify-content:center;align-items:center;width:clamp(46px,11vmin,70px);height:clamp(46px,11vmin,70px);transition:all .15s;display:flex;box-shadow:0 4px 8px #0000004d}.touch-camera-button span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(8px,2vmin,11px);font-weight:700;line-height:1;display:block}.touch-camera-button:active,.touch-camera-button.pressed{background:#ff9800cc;border-color:#ff9800;transform:scale(.95);box-shadow:0 2px 4px #0000004d}.free-camera-zoom-controls{z-index:1000;flex-direction:column;align-items:center;gap:clamp(8px,2vmin,14px);display:flex;position:fixed;top:50%;right:clamp(10px,4vmin,20px);transform:translateY(-50%)}.free-camera-zoom-button{-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#ff980080;border:2px solid #ff9800b3;border-radius:50%;justify-content:center;align-items:center;width:clamp(30px,7vmin,44px);height:clamp(30px,7vmin,44px);transition:all .15s;display:flex;box-shadow:0 4px 8px #0000004d}.free-camera-zoom-button span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(14px,2.6vmin,18px);font-weight:700;line-height:1;display:block}.free-camera-zoom-button:active,.free-camera-zoom-button.pressed{background:#ff9800cc;border-color:#ff9800;transform:scale(.95);box-shadow:0 2px 4px #0000004d}.free-camera-reset-button{background:#64c8ff80;border-color:#64c8ffb3;margin-top:clamp(6px,1.5vmin,10px)}.free-camera-reset-button:active,.free-camera-reset-button.pressed{background:#64c8ffcc;border-color:#64c8ff}#error-dialog{z-index:10000;background:#000c;justify-content:center;align-items:center;display:none;position:fixed;inset:0}#error-dialog>div{background:#fff;border-radius:12px;max-width:500px;max-height:80vh;margin:20px;padding:24px;position:relative;overflow-y:auto}#error-dialog h2{color:#d32f2f;margin:0 0 16px;padding-right:28px;font-size:20px}#error-content{color:#333;font-family:monospace;font-size:12px;line-height:1.6}#error-dialog .modal-close-x{color:#333;background:#0000001f}#error-dialog .modal-close-x:hover{background:#00000040}#games-btn{-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#4caf5080;border:3px solid #4caf50b3;border-radius:50%;justify-content:center;align-items:center;width:clamp(46px,11vmin,70px);height:clamp(46px,11vmin,70px);transition:all .15s;display:none;box-shadow:0 4px 8px #0000004d}#games-btn span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(8px,2vmin,11px);font-weight:700;line-height:1;display:block}#games-btn:active,#games-btn.pressed{background:#4caf50cc;border-color:#4caf50;transform:scale(.95);box-shadow:0 2px 4px #0000004d}#help-btn{-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#673ab780;border:3px solid #673ab7b3;border-radius:50%;justify-content:center;align-items:center;width:clamp(46px,11vmin,70px);height:clamp(46px,11vmin,70px);transition:all .15s;display:flex;box-shadow:0 4px 8px #0000004d}#help-btn span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(8px,2vmin,11px);font-weight:700;line-height:1;display:block}#help-btn:active,#help-btn.pressed{background:#673ab7cc;border-color:#673ab7;transform:scale(.95);box-shadow:0 2px 4px #0000004d}#players-btn{-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#2196f380;border:3px solid #2196f3b3;border-radius:50%;justify-content:center;align-items:center;width:clamp(46px,11vmin,70px);height:clamp(46px,11vmin,70px);transition:all .15s;display:flex;box-shadow:0 4px 8px #0000004d}#players-btn span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(8px,2vmin,11px);font-weight:700;line-height:1;display:block}#players-btn:active,#players-btn.pressed{background:#2196f3cc;border-color:#2196f3;transform:scale(.95);box-shadow:0 2px 4px #0000004d}.players-list{flex-direction:column;gap:8px;max-height:50vh;margin:0 0 20px;padding:0;list-style:none;display:flex}.player-item{background:#ffffff1f;border-radius:10px;align-items:center;gap:10px;padding:10px 14px;display:flex}.player-item-empty{color:#ffffffb3;justify-content:center}.player-status{background:#9e9e9e;border-radius:50%;flex:none;width:10px;height:10px}.player-status.connected{background:#4caf50;box-shadow:0 0 6px #4caf50cc}.player-name{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:16px;font-weight:700;overflow:hidden}.player-you{color:#ffd76f;margin-left:8px;font-size:13px}.player-character{color:#ffffffbf;flex:none;font-size:13px}.help-modal-content{text-align:left;max-width:460px}.help-section{margin-bottom:18px}.help-section-title{letter-spacing:.08em;text-transform:uppercase;color:#fff9;margin:0 0 8px 2px;font-size:12px;font-weight:700}.help-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.help-item{border-bottom:1px solid #ffffff1a;align-items:center;gap:12px;padding:8px 2px;font-size:14px;line-height:1.4;display:flex}.help-item:last-child{border-bottom:none}.help-icon{text-align:center;flex:none;width:28px;font-size:18px}.help-text{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.help-or{opacity:.65;font-size:12px}.help-key{background:#ffffff26;border:1px solid #ffffff4d;border-radius:5px;padding:3px 8px;font-family:monospace;font-size:12px;font-weight:700;display:inline-block}.help-footnote{opacity:.8;border-top:1px solid #ffffff26;margin:4px 0 20px;padding-top:12px;font-size:13px;line-height:1.5}.modal{z-index:9999;background:#000000d9;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-content{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:16px;width:90%;max-width:500px;margin:20px;padding:32px;position:relative;box-shadow:0 8px 32px #00000080}.modal-content h2{text-align:center;text-shadow:0 2px 4px #0000004d;margin:0 0 20px;padding-right:28px;font-size:28px}.modal-close-x{color:#fff;cursor:pointer;background:#0000004d;border:none;border-radius:50%;width:28px;height:28px;font-size:15px;line-height:1;transition:background .2s;position:absolute;top:12px;right:14px}.modal-close-x:hover{background:#0000008c}.game-description{text-align:center;opacity:.95;margin:0 0 20px;font-size:16px;line-height:1.6}.game-status{text-align:center;background:#ffffff26;border-radius:8px;margin-bottom:20px;padding:16px;font-weight:700}.modal-buttons{gap:12px;display:flex}.modal-btn{color:#fff;cursor:pointer;background:#fff3;border:2px solid #fff6;border-radius:8px;flex:1;padding:14px 20px;font-size:16px;font-weight:700;transition:all .2s}.modal-btn:hover{background:#ffffff4d;border-color:#fff9;transform:translateY(-2px)}.modal-btn:active{transform:translateY(0)}.modal-btn-primary{background:#4caf50e6;border-color:#4caf50}.modal-btn-primary:hover{background:#4caf50}.games-list{gap:16px;margin-bottom:24px;display:grid}.game-item{cursor:pointer;background:#ffffff26;border:2px solid #ffffff4d;border-radius:12px;align-items:center;gap:16px;padding:20px;transition:all .2s;display:flex}.game-item:hover{background:#ffffff40;border-color:#ffffff80;transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.game-icon{font-size:48px;line-height:1}.game-name{text-shadow:0 2px 4px #0003;font-size:24px;font-weight:700}#winner-content{text-align:center;background:#ffffff26;border-radius:12px;margin-bottom:24px;padding:24px}#winner-content h3{margin:0 0 16px;font-size:24px}#winner-content .scores-list{margin:0;padding:0;list-style:none}#winner-content .score-item{background:#ffffff1a;border-radius:8px;justify-content:space-between;align-items:center;margin:8px 0;padding:12px;display:flex}#winner-content .score-item.winner{background:#ffd7004d;border:2px solid #ffd70099;font-weight:700}.scoreboard{z-index:1000;color:#fff;background:#000c;border:2px solid #ffd70099;border-radius:clamp(8px,2vmin,12px);min-width:clamp(150px,40vmin,200px);max-width:min(300px,80vw);padding:clamp(10px,2.5vmin,16px);display:none;position:fixed;top:clamp(10px,3vmin,20px);right:clamp(10px,3vmin,20px);box-shadow:0 4px 16px #00000080}.scoreboard h3{text-align:center;color:gold;text-shadow:0 2px 4px #00000080;margin:0 0 12px;font-size:clamp(14px,3.2vmin,18px)}#scoreboard-content{flex-direction:column;gap:8px;display:flex}.scoreboard-stars-remaining{text-align:center;color:gold;background:#ffd70033;border:1px solid #ffd70066;border-radius:6px;margin-bottom:4px;padding:clamp(8px,2vmin,10px) clamp(8px,2vmin,12px);font-size:clamp(12px,2.8vmin,15px);font-weight:700}.scoreboard-player{background:#ffffff1a;border-radius:6px;justify-content:space-between;align-items:center;padding:clamp(6px,1.8vmin,8px) clamp(8px,2vmin,12px);font-size:clamp(11px,2.5vmin,14px);display:flex}.scoreboard-player.current-player{background:#4caf504d;border:1px solid #4caf5099;font-weight:700}.scoreboard-player-name{text-overflow:ellipsis;white-space:nowrap;margin-right:8px;overflow:hidden}.scoreboard-player-score{color:gold;font-weight:700}.star-notification{z-index:10000;animation:.3s ease-out starNotificationFadeIn;display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.star-notification.show{display:block}.star-notification.fade-out{animation:.3s ease-out forwards starNotificationFadeOut}.star-notification-content{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);-moz-backdrop-filter:blur(10px);background:linear-gradient(135deg,#ffd700f2 0%,#ffed4ef2 100%);border:3px solid #ffa500e6;border-radius:16px;align-items:center;gap:clamp(10px,3vmin,16px);min-width:clamp(180px,50vmin,250px);max-width:90vw;padding:clamp(14px,4vmin,24px) clamp(18px,5vmin,32px);display:flex;box-shadow:0 8px 32px #00000080}.star-notification-icon{font-size:clamp(32px,8vmin,48px);line-height:1;animation:.5s ease-in-out infinite starPulse}#star-notification-text{color:#333;text-shadow:0 1px 2px #ffffff80;font-size:clamp(14px,3.6vmin,18px);font-weight:700}@keyframes starNotificationFadeIn{0%{opacity:0;transform:translate(-50%,-50%)scale(.8)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes starNotificationFadeOut{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(.8)}}@keyframes starPulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.character-selector{z-index:10000;justify-content:center;align-items:center;width:100%;height:100%;font-family:system-ui,-apple-system,sans-serif;display:flex;position:fixed;top:0;left:0;overflow:hidden}.character-selector-overlay{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#141e30f2,#243b55f2);width:100%;height:100%;position:absolute;top:0;left:0}.character-selector-content{z-index:1;box-sizing:border-box;flex-direction:column;align-items:center;gap:clamp(12px,3vh,32px);width:90%;max-width:1200px;max-height:100%;padding:clamp(16px,4vh,40px) 20px;display:flex;position:relative}.character-selector-title{color:#fff;text-shadow:0 4px 8px #0000004d;text-align:center;margin:0;font-size:clamp(22px,5vw,48px);font-weight:700}.character-selector-message{text-align:center;border-radius:8px;max-width:600px;padding:clamp(10px,2vh,16px) clamp(14px,3vw,24px);font-size:clamp(14px,2vw,18px);font-weight:500;display:none}.character-selector-message.message-info{color:#90cdf4;background:#4299e133;border:2px solid #4299e180}.character-selector-message.message-warning{color:#fbb360;background:#ed893633;border:2px solid #ed893680}.character-selector-message.message-error{color:#fc8181;background:#f5656533;border:2px solid #f5656580}.character-cards-container{align-items:center;gap:clamp(8px,2vw,20px);width:100%;max-width:1000px;display:flex;position:relative}.character-cards-wrapper{--card-width:clamp(160px, min(22vw, 25vh), 300px);height:calc(var(--card-width) * 1.65 + 4px);flex:1;position:relative;overflow:hidden clip}.character-cards{perspective:1000px;justify-content:center;align-items:center;height:100%;display:flex;position:relative}.character-card{width:var(--card-width);aspect-ratio:2/3;background:linear-gradient(135deg, var(--card-color), #0000004d);border:3px solid #ffffff1a;border-radius:16px;transition:all .5s cubic-bezier(.4,0,.2,1);position:absolute;top:50%;left:50%;overflow:hidden;box-shadow:0 8px 32px #0006}.character-card.active{z-index:10;transform:scale(1.1)translate(0)}.character-card.available:hover{transform:scale(1.15)translateY(-5px);box-shadow:0 12px 48px #00000080}.character-card.unavailable{opacity:.5;filter:grayscale(80%);cursor:not-allowed}.character-card-canvas{width:100%;height:100%;display:block}.character-card-info{color:#fff;text-align:center;background:linear-gradient(#0000,#000000e6);padding:20px;position:absolute;bottom:0;left:0;right:0}.character-card-name{text-shadow:0 2px 4px #00000080;margin:0 0 8px;font-size:24px;font-weight:700}.character-card-status{text-transform:uppercase;letter-spacing:.5px;border-radius:20px;padding:6px 16px;font-size:14px;font-weight:600;display:inline-block}.character-card-status.status-available{color:#9ae6b4;background:#48bb784d;border:2px solid #48bb78cc}.character-card-status.status-unavailable{color:#fc8181;background:#f565654d;border:2px solid #f56565cc}.carousel-button{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff1a;border:2px solid #ffffff4d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:clamp(36px,8vw,50px);height:clamp(36px,8vw,50px);font-size:clamp(18px,4vw,24px);transition:all .3s;display:flex}.carousel-button:hover{background:#fff3;border-color:#ffffff80;transform:scale(1.1)}.carousel-button:active{transform:scale(.95)}.character-selector-controls{text-align:center}.character-selector-hint{color:#ffffffb3;margin:0;padding:0 12px;font-size:clamp(12px,2vw,16px)}.splash-screen{z-index:20000;opacity:0;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;font-family:system-ui,-apple-system,sans-serif;transition:opacity .6s;display:none;position:fixed;top:0;left:0}.splash-screen.visible{opacity:1}.splash-screen.fading-out{opacity:0}.splash-screen-overlay{background:linear-gradient(135deg,#141e30,#243b55);width:100%;height:100%;position:absolute;top:0;left:0}.splash-screen-content{z-index:1;text-align:center;box-sizing:border-box;flex-direction:column;align-items:center;gap:clamp(6px,1.5vh,12px);max-width:100vw;padding:20px;display:flex;position:relative}.splash-screen-logo{border-radius:23%;width:clamp(120px,min(42vw,32vh),520px);max-width:80vw;height:clamp(120px,min(42vw,32vh),520px);margin-bottom:12px;box-shadow:0 8px 24px #0006}.splash-screen-title{color:#fff;text-shadow:0 4px 8px #0000004d;margin:0;font-size:clamp(20px,5vw,36px);font-weight:700}.splash-screen-author{color:#ffffffd9;margin:0;font-size:clamp(14px,2.4vw,18px)}.splash-screen-company{color:#fff9;letter-spacing:.05em;text-transform:uppercase;margin:0;font-size:clamp(11px,1.8vw,14px)}.splash-screen-loading{z-index:2;color:#1a1a2e;letter-spacing:.05em;box-sizing:border-box;background:linear-gradient(135deg,#ff6a6a 0%,#ff9d5c 35%,#ffd452 70%,#6ee7b7 100%) 0 0/300% 300%;border-radius:999px;justify-content:center;align-items:center;gap:2px;max-width:90vw;padding:clamp(8px,1.6vh,10px) clamp(16px,4vw,24px);font-size:clamp(13px,2.2vw,15px);font-weight:600;animation:4s infinite splash-screen-loading-gradient;display:flex;position:absolute;bottom:clamp(16px,4vh,32px);left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0006}@keyframes splash-screen-loading-gradient{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.splash-screen-loading-dots span{animation:1.4s infinite both splash-screen-dot-blink}.splash-screen-loading-dots span:nth-child(2){animation-delay:.2s}.splash-screen-loading-dots span:nth-child(3){animation-delay:.4s}@keyframes splash-screen-dot-blink{0%,80%,to{opacity:0}40%{opacity:1}}.splash-screen-loading.splash-screen-loading-error{color:#fff;background:#d32f2f;flex-wrap:wrap;gap:clamp(10px,2vw,16px);animation:none}.splash-screen-reload-btn{cursor:pointer;color:#d32f2f;background:#fff;border:none;border-radius:999px;padding:6px 18px;font-family:inherit;font-size:clamp(12px,2vw,14px);font-weight:600;transition:transform .15s,box-shadow .15s}.splash-screen-reload-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000004d}.splash-screen-version{color:#ffffff59;letter-spacing:.05em;font-family:monospace;font-size:11px;position:absolute;bottom:12px;right:16px}.draggable-card{cursor:grab;touch-action:none}.draggable-card.dragging{cursor:grabbing}.name-prompt{z-index:20000;opacity:0;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;font-family:system-ui,-apple-system,sans-serif;transition:opacity .4s;display:none;position:fixed;top:0;left:0}.name-prompt.visible{opacity:1}.name-prompt.fading-out{opacity:0}.name-prompt-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a101c99;width:100%;height:100%;position:absolute;top:0;left:0}.name-prompt-content{z-index:1;text-align:center;background:linear-gradient(140deg,#6a3de8 0%,#b84fce 35%,#f0629d 70%,#ff9a62 100%) 0 0/300% 300%;border:2px solid #ffffff59;border-radius:20px;flex-direction:column;align-items:center;gap:12px;max-width:min(440px,100vw - 40px);padding:40px 48px;animation:8s infinite name-prompt-gradient-shift;display:flex;position:relative;box-shadow:0 16px 48px #00000080,0 0 60px #b84fce59}@keyframes name-prompt-gradient-shift{0%,to{background-position:0%}50%{background-position:100%}}.name-prompt-title{color:#fff;text-shadow:0 4px 8px #0000004d;margin:0;font-size:28px;font-weight:700}.name-prompt-subtitle{color:#ffffffb3;margin:0 0 12px;font-size:16px}.name-prompt-input{text-align:center;color:#fff;cursor:text;background:#ffffff2e;border:2px solid #ffffff73;border-radius:12px;outline:none;width:min(320px,80vw);padding:14px 18px;font-size:20px;transition:border-color .2s,background .2s}.name-prompt-input::placeholder{color:#ffffff80}.name-prompt-input:focus{background:#ffffff40;border-color:#ffd76f}.name-prompt-error{color:#ffe37e;text-shadow:0 1px 2px #0000004d;min-height:18px;margin:0;font-size:14px;font-weight:700}.name-prompt-button{color:#4a2c00;cursor:pointer;background:linear-gradient(135deg,#ffd76f,#ff9f43);border:none;border-radius:12px;padding:14px 48px;font-size:18px;font-weight:700;transition:transform .15s,box-shadow .15s;box-shadow:0 4px 16px #0000004d}.name-prompt-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0006}.name-prompt-button:active{transform:translateY(0)}@media (width<=640px){.name-prompt-title{font-size:24px}}#chat-btn{-webkit-user-select:none;user-select:none;touch-action:none;cursor:pointer;background:#00968880;border:2px solid #009688cc;border-radius:50%;justify-content:center;align-items:center;width:clamp(46px,11vmin,70px);height:clamp(46px,11vmin,70px);transition:all .15s;display:flex;box-shadow:0 4px 8px #0000004d}#chat-btn span{color:#fff;text-shadow:0 2px 4px #00000080;margin:0;padding:0;font-size:clamp(8px,2vmin,11px);font-weight:700;line-height:1;display:block}#chat-btn:active,#chat-btn.pressed{background:#009688cc;border-color:#009688;transform:scale(.95);box-shadow:0 2px 4px #0000004d}#chat-feed{z-index:1500;pointer-events:none;flex-direction:column;align-items:flex-start;gap:4px;width:min(440px,100vw - 260px);padding:6px 8px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.chat-line{color:#fff;word-break:break-word;font-family:system-ui,sans-serif;font-size:14px;line-height:1.45;transition:opacity .8s}#chat-feed .chat-line{background:#000000b8;border:1px solid #ffffff1f;border-radius:8px;max-width:100%;padding:5px 10px;box-shadow:0 2px 8px #0006}#chat-feed .chat-line.chat-faded{opacity:0}.chat-name{color:#9fd8ff;font-weight:700}.chat-mine .chat-name{color:#ffd07a}.chat-scope-nearby .chat-name{color:#9fe8a9}.chat-scope-private .chat-name{color:#d0a9ff}.chat-system{color:#ffb0b0;font-size:13px;font-style:italic}#chat-modal{background:0 0;justify-content:center;align-items:flex-end;padding-bottom:16px}.chat-modal-content{flex-direction:column;width:fit-content;min-width:min(420px,100vw - 32px);max-width:min(620px,100vw - 32px);display:flex}.chat-modal-content h2{margin-bottom:14px}#chat-messages{background:#0000004d;border:1px solid #fff3;border-radius:10px;flex-direction:column;gap:4px;height:15vh;min-height:100px;margin-bottom:12px;padding:12px 14px;display:flex;overflow-y:auto}#chat-messages .chat-line{text-shadow:none;font-size:15px}#chat-messages .chat-replyable{cursor:pointer;border-radius:6px;margin:0 -4px;padding:1px 4px}#chat-messages .chat-replyable:hover{background:#ffffff1f}#chat-input-row{gap:8px;margin-bottom:12px;display:flex}#chat-scope-btn{color:#fff;white-space:nowrap;cursor:pointer;text-overflow:ellipsis;background:#00000059;border:2px solid #fff6;border-radius:8px;flex-shrink:0;max-width:150px;padding:10px 12px;font-size:14px;font-weight:700;transition:all .2s;overflow:hidden}#chat-scope-btn:hover{background:#00000080;border-color:#fff9}#chat-scope-btn[data-scope=nearby]{border-color:#9fe8a9cc}#chat-scope-btn[data-scope=private]{border-color:#d0a9ffcc}#chat-input{color:#fff;background:#00000059;border:2px solid #fff6;border-radius:8px;outline:none;flex:1;min-width:0;padding:10px 14px;font-size:16px}#chat-input::placeholder{color:#ffffff80}#chat-input:focus{border-color:#fffc}#chat-send-btn{color:#fff;cursor:pointer;background:#009688b3;border:2px solid #009688e6;border-radius:8px;flex-shrink:0;padding:10px 16px;font-size:16px;transition:all .2s}#chat-send-btn:hover{background:#009688e6}#chat-send-btn:active{background:#009688}@media (width<=700px){#chat-feed{width:auto;bottom:100px;left:16px;right:150px;transform:none}#chat-messages{height:38vh}}.player-message-btn{cursor:pointer;background:#00968840;border:1px solid #00968899;border-radius:8px;flex-shrink:0;margin-left:auto;padding:4px 8px;font-size:14px;transition:background .15s}.player-message-btn:hover{background:#00968880}
