:root{--color-primary:#0ff;--color-primary-dark:#02aeae;--color-secondary:#f0f;--color-accent:#ff4500;--color-background:#000;--color-background-secondary:#121212;--color-text:#fff;--color-text-secondary:#ccc;--color-gold:#efbf04;--color-success:#0f0;--color-warning:#ff0;--color-error:red;--color-info:#09f;--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-xxl:3rem;--border-radius-sm:0.25rem;--border-radius-md:0.5rem;--border-radius-lg:1rem;--border-radius-pill:9999px;--font-family-primary:"Roboto","Helvetica Neue",sans-serif;--font-family-secondary:"Arial",sans-serif;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-md:1rem;--font-size-lg:1.25rem;--font-size-xl:1.5rem;--font-size-xxl:2rem;--font-size-title:2.5rem;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-loose:1.8;--shadow-sm:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);--shadow-md:0 4px 6px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.08);--shadow-lg:0 10px 25px rgba(0,0,0,.3);--shadow-inner:inset 0 2px 4px rgba(0,0,0,.06);--transition-fast:0.15s ease;--transition-normal:0.3s ease;--transition-slow:0.5s ease;--z-index-dropdown:1000;--z-index-modal:2000;--z-index-tooltip:3000;--breakpoint-xs:480px;--breakpoint-sm:768px;--breakpoint-md:992px;--breakpoint-lg:1200px;--container-sm:540px;--container-md:720px;--container-lg:960px;--container-xl:1140px}body,html{height:100%;margin:0;overflow-x:hidden;padding:0}body{background-color:var(--color-background-secondary);color:var(--color-text);min-height:100vh;position:relative}.app-container{font-family:sans-serif;font-family:var(--font-primary,sans-serif);margin:0 auto;max-width:600px;padding:10px}h1{color:var(--color-primary);text-align:center}.logo-container{align-items:center;justify-content:center;max-width:40vw;text-align:center;width:100%}.logo{height:auto;max-width:90vw;width:100%}.logo-container-in-bingo-card{display:flex;max-width:40vw;text-align:center;width:100%}.logo-in-bingo-card{height:auto;max-width:50vw;width:100%}.connection-status{align-items:center;background-color:hsla(0,0%,100%,.1);border-radius:8px;display:flex;margin-bottom:20px;padding:10px}.status-indicator{border-radius:50%;height:12px;margin-right:10px;width:12px}.connected{background-color:var(--color-success)}.disconnected{background-color:var(--color-error)}.player-controls{background-color:var(--color-background-tertiary);border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,.1);margin-bottom:20px;padding:20px}.player-controls h2{border-bottom:1px solid #ddd;margin-top:0;padding-bottom:10px}.control-row{margin-bottom:20px;text-align:left}.control-row label{color:var(--color-text);display:block;font-weight:700;letter-spacing:1px;margin-bottom:8px}.control-row input{background-color:transparent;border:1px solid hsla(0,0%,100%,.2);border-radius:12px;box-shadow:0 4px 8px rgba(0,0,0,.2);color:var(--color-text);font-size:1.1rem;padding:15px;transition:all .3s;width:100%}.control-row input:focus{border-color:var(--color-primary);box-shadow:0 0 10px rgba(0,255,255,.5)}.control-row input#playerName,.control-row input#roomId{background-color:rgba(0,0,0,.5);border-radius:var(--border-radius-md);box-shadow:var(--shadow-md);display:block;font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);letter-spacing:2px;margin:2em auto;padding:var(--spacing-md) var(--spacing-sm);text-align:center;transition:all var(--transition-normal);width:200px}.control-row input:focus{outline:none;transform:scale(1.02)}.control-row input#roomId{border:2px solid rgba(0,255,255,.4);box-shadow:var(--shadow-md),0 0 20px rgba(0,255,255,.1) inset;color:var(--color-primary);letter-spacing:4px;text-transform:uppercase}.control-row input#roomId::placeholder{color:rgba(0,255,255,.3);font-weight:var(--font-weight-normal);letter-spacing:2px}.control-row input#roomId:focus{border-color:var(--color-primary);box-shadow:var(--shadow-lg),0 0 30px rgba(0,255,255,.4) inset}.control-row input#playerName{border:2px solid rgba(255,105,180,.4);box-shadow:var(--shadow-md),0 0 20px rgba(255,105,180,.1) inset;color:var(--color-secondary)}.control-row input#playerName::placeholder{color:rgba(255,105,180,.3);font-size:1.5rem;font-weight:var(--font-weight-normal);letter-spacing:1px}.control-row input#playerName:focus{border-color:var(--color-secondary);box-shadow:var(--shadow-lg),0 0 30px rgba(255,105,180,.4) inset}.active-player-controls{background-color:var(--color-background-active);border-left:4px solid var(--color-primary)}.room-info{margin-top:15px}.room-id{color:var(--color-primary);font-weight:700}.player-buttons{display:flex;gap:10px;margin-top:15px}.auto-mark-option{margin-top:10px}.connection-warning{color:var(--color-error);font-style:italic;margin-top:15px;text-shadow:0 0 10px rgba(255,105,180,.5)}.join-screen{align-items:center;display:flex;flex-direction:column;height:100vh;justify-content:center}.join-screen h1{word-wrap:break-word;background:linear-gradient(45deg,var(--color-primary),var(--color-secondary));-webkit-background-clip:text;background-clip:text;color:transparent;font-family:Rubik Mono One,sans-serif;font-size:clamp(2rem,8vw,3.5rem);font-weight:700;letter-spacing:-.02em;margin:2rem 0;max-width:90vw;position:relative;text-shadow:0 0 20px rgba(0,255,255,.3);text-transform:uppercase;transform:perspective(500px) rotateX(10deg);z-index:1}.join-card,.join-screen h1{text-align:center;width:100%}.join-card{animation:slideIn .3s ease-out forwards;background-color:rgba(30,30,30,.8);border:1px solid var(--color-primary);border-radius:16px;box-shadow:0 10px 25px rgba(0,0,0,.3);max-width:600px;padding:30px}.join-card h2{background:linear-gradient(45deg,var(--color-primary),var(--color-secondary));background:var(--gradient-heading);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:1.8rem;font-weight:700;margin-bottom:20px}.join-card .btn:hover{box-shadow:0 5px 15px rgba(0,255,255,.5);transform:translateY(-2px)}.join-card .btn-primaryPink:hover{box-shadow:0 5px 15px rgba(255,105,180,.5)}.join-card .btn:disabled{background-color:#5c5c5c;box-shadow:none;cursor:not-allowed;opacity:.7;transform:none}.game-screen{animation:fadeIn .5s ease-out}.game-header{align-items:center;background-color:transparent;box-shadow:none;display:flex;justify-content:space-between;margin-bottom:10px;width:100%}.game-header>div:first-child{margin-left:10px}.game-header>div:first-child h2{background:linear-gradient(45deg,var(--color-primary),var(--color-secondary));background:var(--gradient-heading);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700;letter-spacing:-.02em;margin:0;text-shadow:0 0 10px rgba(0,255,255,.3)}.player-info{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:rgba(26,26,26,.8);border:1px solid hsla(0,0%,100%,.1);border-radius:12px;box-shadow:0 4px 10px rgba(0,0,0,.3);max-width:fit-content;padding:8px 15px}.player-info h2{align-items:center;display:flex;font-size:1.2rem;font-weight:700;gap:8px;margin:0}.player-name{background:linear-gradient(45deg,var(--color-primary),var(--color-secondary));background:var(--gradient-heading);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}.room-id{color:hsla(0,0%,100%,.8);font-size:.9rem;font-weight:400}.game-mode{background:linear-gradient(45deg,#fd0,#ffa700);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:.85rem;margin-left:5px;padding:0 5px}.room-nickname{background:linear-gradient(45deg,#ff66b3,#f39);-webkit-background-clip:text;background-clip:text;color:transparent;display:block;font-size:1.2rem;font-weight:700;letter-spacing:.5px;margin-bottom:6px;text-align:center;text-shadow:0 0 3px rgba(255,102,179,.3);text-transform:uppercase;word-break:break-all}.game-controls{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.bingo-button{background-color:var(--color-background-tertiary);border:none;border-radius:8px;color:var(--color-text);cursor:pointer;font-size:1rem;font-weight:700;padding:10px 20px;transition:all .3s;width:100%}.game-controls:active .bingo-button{transform:translateY(-2px)}.bingo-button:hover{background-color:var(--color-primary);transform:scale(1.05)}.bingo-button:disabled{background-color:#5c5c5c;cursor:not-allowed;transform:none}.loader-container{align-items:center;display:flex;justify-content:center;margin:20px 0}.loader{animation:spin 1.5s linear infinite;border:5px solid rgba(0,0,0,.1);border-radius:50%;border-top:5px solid var(--color-primary);height:50px;width:50px}.red-loader{animation:spin 2s linear infinite;border-top:5px solid var(--color-error)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.error-message{background-color:rgba(255,0,0,.1);border:1px solid var(--color-error);border-radius:8px;color:var(--color-error);font-weight:700;margin:10px 0;padding:8px}.exit-button{background-color:var(--color-error);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:700;padding:10px 20px;transition:all .3s}.exit-button:hover{background-color:var(--color-error-dark);transform:scale(1.05)}.auto-mark-option{color:var(--color-text);margin-left:10px}.bingo-section{margin-bottom:20px}.grid-toggle{background-color:var(--color-background-secondary);border-radius:4px 4px 0 0;color:var(--color-text);cursor:pointer;padding:10px;text-align:center;transition:background-color .3s}.console-container,.grid-toggle:hover{background-color:var(--color-background-tertiary)}.console-container{border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,.1);overflow:hidden}.console-header{align-items:center;background-color:var(--color-background-secondary);color:var(--color-text);display:flex;justify-content:space-between;padding:10px 20px}.console-header h2{margin:0}.console-buttons button{background-color:var(--color-background-tertiary);font-size:14px;margin-left:10px;padding:5px 10px}.console-buttons button:hover{background-color:var(--color-background-active)}.console{background-color:var(--color-background-secondary);color:var(--color-text);font-family:monospace;height:300px;overflow-y:auto;padding:10px}.console-entry{line-height:1.5;margin-bottom:5px;white-space:pre-wrap;word-break:break-word}.console-time{color:var(--color-text)}.console-info{color:var(--color-primary)}.console-success{color:var(--color-success)}.console-error,.console-warning{color:var(--color-error)}.game-over-container{align-items:center;animation:fadeIn .8s ease-in-out;color:var(--color-success);display:flex;flex-direction:column;font-size:24px;font-weight:700;justify-content:center;min-height:100px;width:100%}.join-code-display{background-color:rgba(0,0,0,.5);border:2px solid rgba(0,255,255,.3);border-radius:12px;box-shadow:0 4px 15px rgba(0,0,0,.3);color:var(--color-text);margin:.5em auto 1.5em;max-width:80%;padding:15px;text-align:center}.join-code-display span{color:var(--color-primary);display:block;font-size:1.5em;font-weight:700;letter-spacing:4px;margin-top:5px;text-shadow:0 0 10px rgba(0,255,255,.6);text-transform:uppercase}.button-group{display:flex;gap:15px;justify-content:center;margin-top:20px}.button-group .btn{flex:1 1;min-width:0}.button-group .btn-secondary{background-color:transparent;border:2px solid hsla(0,0%,100%,.2);color:var(--color-text)}.button-group .btn-secondary:hover{background-color:rgba(0,255,255,.1);border-color:var(--color-primary);transform:translateY(-2px)}@keyframes slideIn{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes slideOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-30px)}}:root{--gradient-heading:linear-gradient(45deg,var(--color-primary),var(--color-secondary))}@media (max-width:480px){.join-screen h1{margin-top:1rem;transform:perspective(500px) rotateX(5deg)}.join-card{margin-bottom:20px;max-width:90%;padding:20px}.logo-container-in-bingo-card{max-width:80vw;text-align:center;width:100%}.logo-in-bingo-card{height:auto;max-width:40vw;width:100%}.logo-container{justify-content:center;max-width:200vw;width:100%}.logo{height:auto;max-width:60vw;width:100%}}.bingo-card-container{background-color:transparent;border:1px solid #efbf04;border-radius:12px;box-shadow:0 5px 15px rgba(0,0,0,.2);margin-bottom:20px;margin-top:20px;max-width:600px}.bingo-grid{grid-gap:10px;background-color:transparent;gap:10px;padding:10px}.bingo-letter{align-items:center;background-color:#fff;border-radius:50%;box-shadow:0 2px 5px rgba(0,0,0,.2);color:#000;cursor:pointer;display:flex;font-size:30px;font-weight:700;height:60px;justify-content:center;transition:all .2s ease-in-out;width:60px}.letter-b{background-color:#ff5252;color:#fff}.letter-i{background-color:#ffab40;color:#000}.letter-n{background-color:#ffeb3b;color:#000}.letter-g{background-color:#00c853;color:#fff}.letter-o{background-color:#2979ff;color:#fff}.bingo-grid{align-items:center;background-color:rgba(29,29,29,.7);border-radius:12px;display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(5,1fr);justify-items:center}.bingo-cell-container{border-radius:50%;outline-offset:4px}.bingo-cell,.bingo-cell-container{cursor:pointer;justify-content:center}.bingo-cell{align-items:center;background-color:transparent;border:2px solid var(--color-gold);border-radius:50%;box-shadow:0 4px 8px rgba(0,0,0,.5),inset 0 -4px 4px rgba(0,0,0,.3),inset 0 4px 4px hsla(0,0%,100%,.3);color:#fff;display:flex;font-size:30px;font-weight:700;height:60px;overflow:hidden;position:relative;text-shadow:1px 1px 2px rgba(0,0,0,.3);transform:perspective(500px) rotateX(10deg);transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none;width:60px}.bingo-cell-container:active .bingo-cell{background-color:var(--color-primary-dark);transform:translateY(5px)}.bingo-cell.marked{background-color:#ff00c3;border:1px solid hsla(0,0%,100%,.4);box-shadow:0 0 12px rgba(76,175,80,.8);color:#fff;font-size:40px;transform:scale(1.02)}.bingo-cell.free-space{background:linear-gradient(145deg,#9c27b0,#673ab7);border:2px solid #e1bee7;box-shadow:0 0 15px rgba(156,39,176,.6);color:#fff!important;font-size:16px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.5)}.bingo-cell.game-over{cursor:not-allowed;opacity:.8}@media screen and (max-width:375px){.bingo-grid{gap:5px;padding:8px}.bingo-cell,.bingo-letter{height:50px;width:50px}.bingo-cell,.bingo-letter{font-size:24px}.bingo-cell.marked{font-size:32px}.bingo-cell.free-space{font-size:14px}}.leaderboard-container{background-color:#000;border:1px solid #efbf04;border-radius:4px;box-shadow:0 3px 6px rgba(0,0,0,.2);color:#fff;margin:20px 0;padding:15px}.leaderboard-title{border-bottom:1px solid #444;color:#efbf04;font-size:1.2rem;margin-bottom:15px;margin-top:0;padding-bottom:8px;text-align:center}.player-list{list-style-type:none;margin:0;padding:0}.player-item{align-items:center;background-color:#1a1a1a;border-radius:4px;display:flex;margin-bottom:5px;padding:8px 12px;transition:all .2s ease}.player-item:last-child{margin-bottom:0}.player-item:before{color:#666;content:"•";margin-right:8px}.current-player{background-color:#2c2c2c;border-left:3px solid #efbf04;font-weight:700}.current-player:before{color:#efbf04}.winner-player{background:linear-gradient(145deg,#9c27b0,#673ab7);box-shadow:0 0 15px rgba(156,39,176,.3);color:#fff;font-weight:700}.winner-player:before{color:gold}.loser-player{opacity:.6}.no-players{color:#999;font-style:italic;padding:10px;text-align:center}.called-numbers-container{background-color:transparent;border-radius:4px;color:#fff;display:flex;flex-wrap:wrap;gap:20px}.last-called-number{align-items:center;display:flex;flex:1 1;flex-direction:column;min-width:120px;padding-right:20px}.last-called-number h3{color:#efbf04;font-size:1.2rem;margin-bottom:10px;margin-top:0}.ball-container{align-items:center;display:flex;height:90px;justify-content:center;margin-bottom:10px;position:relative;width:90px}.countdown-ring{border-radius:50%;height:100%;left:0;position:absolute;top:0;width:100%;z-index:0}.last-number{background-color:#efbf04;border-radius:50%;box-shadow:0 2px 10px rgba(0,0,0,.3);color:#000;font-size:2.5rem;font-weight:700;height:70px;position:relative;width:70px;z-index:1}.all-called-numbers,.last-number{align-items:center;display:flex;justify-content:center}.all-called-numbers{flex:3 1;flex-direction:column}.all-called-numbers h3{color:#efbf04;font-size:1.2rem;margin-bottom:10px;margin-top:0}.number-list{display:flex;flex-wrap:wrap;gap:8px}.called-number{align-items:center;background-color:#333;border-radius:50%;color:#fff;display:flex;font-size:.85rem;font-weight:700;height:30px;justify-content:center;width:30px}.no-numbers{color:#999;font-style:italic}@media (max-width:768px){.called-numbers-container{flex-direction:column}.last-called-number{border-right:none;padding-bottom:10px;padding-right:0}}.winner-modal-overlay{align-items:center;animation:fadeIn .5s ease-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:rgba(0,0,0,.85);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:var(--z-index-modal)}.winner-modal{animation:scaleIn .6s cubic-bezier(.175,.885,.32,1.275);background-color:rgba(30,29,29,.9);border:3px solid var(--color-gold);border-radius:20px;box-shadow:0 0 30px rgba(0,0,0,.5),0 0 60px rgba(239,191,4,.5);margin:10px;max-width:500px;overflow:hidden;padding:30px;position:relative;text-align:center;width:90%}.winner-modal-content{position:relative;z-index:2}.trophy-icon{animation:bounce 1s ease infinite alternate;font-size:80px;margin-bottom:10px;text-shadow:0 0 20px rgba(255,215,0,.7)}.winner-title{animation:pulse 2s ease infinite;background:linear-gradient(45deg,#ffcd40,#ff69b4);-webkit-background-clip:text;background-clip:text;color:transparent;font-family:Rubik Mono One,sans-serif;font-size:3rem;margin:0 0 20px;text-shadow:0 0 20px rgba(255,215,0,.5)}.winner-announcement{font-size:1.8rem;line-height:1.4;margin-bottom:20px}.winner-name{background:linear-gradient(45deg,#ffcd40,#ff69b4);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}.winner-you{color:var(--color-success);font-weight:700}.winning-message{color:hsla(0,0%,100%,.9);font-size:1.2rem;margin-bottom:30px}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-10px)}}@keyframes pulse{0%{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}to{opacity:.8;transform:scale(1)}}.room-closed-modal-overlay{align-items:center;animation:fadeIn .3s ease-out;background-color:rgba(0,0,0,.85);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}.room-closed-modal{background-color:#1a1a1a;border:2px solid #e74c3c;border-radius:12px;box-shadow:0 5px 20px rgba(0,0,0,.5);color:#fff;margin:10px;max-width:500px;overflow:hidden;padding:30px;position:relative;text-align:center;width:90%}.room-closed-modal-content{position:relative;z-index:1}.closed-icon{font-size:4rem;margin-bottom:10px}.closed-title{color:#e74c3c;font-size:2.5rem;font-weight:700;margin-bottom:15px;text-transform:uppercase}.closed-announcement{font-size:1.2rem;margin-bottom:10px}.closed-reason{color:#ccc;font-size:1rem;margin-bottom:25px;padding:0 20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
/*# sourceMappingURL=main.2e88b5c5.css.map*/