*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #faf8f5;--color-text: #1a1a1a;--color-border: #1a1a1a;--color-cell-bg: #ffffff;--color-cell-hover: #f0ece6;--color-marked: #f4a261;--color-marked-hover: #e68a3a;--color-marked-text: #1a1a1a;--color-free-space: #e9c46a;--color-free-text: #1a1a1a;--color-bingo-dot: #2ecc71;--color-danger: #e74c3c;--font-primary: "SF Mono", "Monaco", "Inconsolata", "Roboto Mono", "Consolas", monospace;--min-touch-target: 44px}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-primary);background-color:var(--color-bg);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;cursor:pointer;border:none;background:none;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:3px solid var(--color-marked);outline-offset:2px}.bingo-grid,.card-switcher,.bingo-cell{-webkit-user-select:none;user-select:none}html{scroll-behavior:smooth}html,body{overscroll-behavior:none}@supports (padding: env(safe-area-inset-bottom)){.app{padding-bottom:env(safe-area-inset-bottom)}}.bingo-cell{display:flex;align-items:center;justify-content:center;min-height:60px;padding:4px;border:3px solid var(--color-border);background-color:var(--color-cell-bg);cursor:pointer;transition:transform .1s ease,background-color .15s ease;font-family:var(--font-primary);font-size:.7rem;font-weight:600;text-align:center;line-height:1.2;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.bingo-cell:hover:not(.free-space){background-color:var(--color-cell-hover)}.bingo-cell:active:not(.free-space){transform:scale(.95)}.bingo-cell.marked{background-color:var(--color-marked);color:var(--color-marked-text)}.bingo-cell.marked:hover:not(.free-space){background-color:var(--color-marked-hover)}.bingo-cell.free-space{background-color:var(--color-free-space);color:var(--color-free-text);cursor:default;font-weight:800;font-size:1rem;text-transform:uppercase;letter-spacing:.05em}.cell-text{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;max-height:100%}@media(min-width:480px){.bingo-cell{min-height:70px;font-size:.75rem;padding:6px}}@media(min-width:640px){.bingo-cell{min-height:80px;font-size:.8rem;padding:8px}}.bingo-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:0;width:100%;max-width:500px;margin:0 auto;border:4px solid var(--color-border);background-color:var(--color-border)}.card-switcher{display:flex;gap:0;width:100%;max-width:500px;margin:0 auto}.card-button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 8px;border:3px solid var(--color-border);background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-primary);font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent}.card-button:not(:last-child){border-right:none}.card-button:hover:not(.active){background-color:var(--color-cell-hover)}.card-button.active{background-color:var(--color-border);color:var(--color-bg)}.card-button.has-bingo .card-label{color:inherit}.bingo-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background-color:var(--color-bingo-dot);color:#fff;font-size:.7rem;font-weight:800}.card-button.active .bingo-badge{background-color:var(--color-bg);color:var(--color-bingo-dot)}@media(min-width:480px){.card-button{font-size:1rem;padding:14px 12px}}.status-indicator{display:flex;align-items:center;gap:10px;padding:8px 16px;border:3px solid var(--color-border);background-color:var(--color-bg)}.status-dots{display:flex;gap:6px}.status-dot{width:16px;height:16px;border:2px solid var(--color-border);background-color:transparent;transition:background-color .3s ease}.status-dot.filled{background-color:var(--color-bingo-dot);border-color:var(--color-bingo-dot)}.status-text{font-family:var(--font-primary);font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.reset-button{padding:10px 20px;border:3px solid var(--color-border);background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-primary);font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent}.reset-button:hover{background-color:var(--color-border);color:var(--color-bg)}.reset-button:active{transform:scale(.98)}.reset-confirm{display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 16px;border:3px solid var(--color-danger);background-color:var(--color-bg)}.confirm-text{font-family:var(--font-primary);font-size:.9rem;font-weight:700;color:var(--color-danger)}.confirm-buttons{display:flex;gap:8px}.confirm-btn{padding:8px 16px;border:2px solid var(--color-border);font-family:var(--font-primary);font-size:.8rem;font-weight:700;text-transform:uppercase;cursor:pointer;transition:all .15s ease}.confirm-btn.yes{background-color:var(--color-danger);color:#fff;border-color:var(--color-danger)}.confirm-btn.yes:hover{background-color:#c0392b}.confirm-btn.no{background-color:var(--color-bg);color:var(--color-text)}.confirm-btn.no:hover{background-color:var(--color-cell-hover)}.confetti-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;z-index:1000}.confetti-piece{position:absolute;top:-20px;animation:confetti-fall linear forwards}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(100vh) rotate(720deg);opacity:0}}.mega-bingo-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000000d9;display:flex;align-items:center;justify-content:center;z-index:999;padding:20px;animation:overlay-fade-in .3s ease}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.mega-bingo-content{position:relative;text-align:center;padding:40px 30px;background-color:var(--color-bg);border:6px solid var(--color-border);max-width:400px;width:100%;animation:content-pop-in .4s ease}@keyframes content-pop-in{0%{transform:scale(.8);opacity:0}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}.mega-bingo-flash{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--color-marked);animation:flash .6s ease-out forwards;pointer-events:none}@keyframes flash{0%{opacity:1}to{opacity:0}}.mega-bingo-title{font-family:var(--font-primary);font-size:1.8rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em;margin:0 0 16px;color:var(--color-text);line-height:1.2}.mega-bingo-subtitle{font-family:var(--font-primary);font-size:1.1rem;font-weight:600;margin:0 0 24px;color:var(--color-text);opacity:.8}.mega-bingo-close{padding:14px 32px;border:3px solid var(--color-border);background-color:var(--color-bingo-dot);color:#fff;font-family:var(--font-primary);font-size:1rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:all .15s ease}.mega-bingo-close:hover{background-color:#27ae60;transform:scale(1.02)}.mega-bingo-close:active{transform:scale(.98)}@media(min-width:480px){.mega-bingo-title{font-size:2.2rem}.mega-bingo-content{padding:50px 40px}}.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background-color:var(--color-bg)}.header{position:sticky;top:0;z-index:100;padding:12px 16px;background-color:var(--color-bg);border-bottom:4px solid var(--color-border)}.title{font-family:var(--font-primary);font-size:1.5rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;margin:0 0 12px;text-align:center;color:var(--color-text)}.header-controls{display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap}.main{flex:1;padding:16px;display:flex;flex-direction:column;gap:16px}.grid-container{flex:1;display:flex;align-items:flex-start}.bingo-announcement{text-align:center;padding:16px;background-color:var(--color-marked);border:4px solid var(--color-border);font-family:var(--font-primary);font-size:1.5rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em;animation:pulse .5s ease infinite alternate;max-width:500px;margin:0 auto;width:100%}@keyframes pulse{0%{transform:scale(1)}to{transform:scale(1.02)}}@media(min-width:480px){.header{padding:16px 20px}.title{font-size:1.8rem}.main{padding:20px}}@media(min-width:640px){.title{font-size:2rem;margin-bottom:16px}.header-controls{gap:16px}}
