*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #F5EDD6;--accent: #C1440E;--accent-secondary:#6B7C3F;--text: #2C1A0E;--cell-complete: #E8A020;--cell-incomplete: #FEFAF2;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;color:var(--text);background:var(--bg)}body{min-height:100dvh;background:var(--bg)}#root{min-height:100dvh;display:flex;flex-direction:column}button{cursor:pointer;font-family:inherit;font-size:inherit}.auth-screen{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;padding:2rem}.app-title{font-size:1.75rem;font-weight:700;color:var(--accent);text-align:center}.auth-prompt{font-size:1.1rem;color:var(--text)}.name-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;width:100%;max-width:280px}.name-btn{padding:.875rem 1rem;background:var(--cell-incomplete);border:2px solid var(--accent);border-radius:8px;color:var(--text);font-size:1rem;font-weight:600;transition:background .15s}.name-btn:active{background:var(--cell-complete)}.name-btn:last-child:nth-child(odd){grid-column:1 / -1;max-width:50%;justify-self:center}.pin-form{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:280px}.pin-input{padding:.875rem 1rem;border:2px solid var(--accent);border-radius:8px;background:var(--cell-incomplete);color:var(--text);font-size:1.25rem;text-align:center;letter-spacing:.2em;font-family:inherit}.pin-input:focus{outline:none;border-color:var(--accent-secondary)}.primary-btn{padding:.875rem 1rem;background:var(--accent);border:none;border-radius:8px;color:#fff;font-size:1rem;font-weight:600;transition:opacity .15s}.primary-btn:disabled{opacity:.6}.auth-error{color:var(--accent);font-size:.9rem}.card-view{display:flex;flex-direction:column;padding-bottom:2rem}.location-tabs{display:flex;border-bottom:2px solid var(--accent);background:var(--bg);position:sticky;top:0;z-index:10}.tab-btn{flex:1;padding:.75rem .5rem;background:none;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;color:var(--text);font-size:.9rem;font-weight:600;transition:color .15s,border-color .15s}.tab-btn--active{border-bottom-color:var(--accent);color:var(--accent)}.bingo-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;padding:.5rem}.bingo-cell{aspect-ratio:1;overflow:hidden;background:var(--cell-incomplete);border:1.5px solid var(--accent);border-radius:4px;padding:3px;display:flex;align-items:center;justify-content:center;text-align:center}.bingo-cell--done{background:var(--cell-complete);border-color:var(--cell-complete)}.cell-text{font-size:11px;line-height:1.2;color:var(--text)}.pattern-panel{padding:.75rem}.panel-heading{font-size:1rem;font-weight:700;color:var(--accent);margin-bottom:.5rem}.pattern-list{list-style:none;display:flex;flex-direction:column;gap:.25rem}.pattern-row{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:6px;opacity:.4}.pattern-row--done{background:var(--cell-complete);opacity:1}.pattern-icon{width:26px;height:26px;flex-shrink:0}.pattern-name{font-size:.875rem;font-weight:600;color:var(--text);flex:1}.pattern-prize{font-size:.8rem;color:var(--text)}.prize-panel{padding:.75rem}.prize-section{margin-bottom:.75rem}.prize-section-heading{font-size:.8rem;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem}.prize-emoji-row{display:flex;flex-wrap:wrap;gap:.25rem}.prize-emoji{font-size:1.75rem}.prize-emoji--faded{font-size:1.25rem;opacity:.35}.prize-emoji--btn{background:none;border:none;padding:0;cursor:pointer;line-height:1}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#2c1a0e66;display:flex;align-items:center;justify-content:center}.confirm-dialog{background:var(--bg);border-radius:12px;padding:1.5rem;max-width:280px;width:90%;text-align:center;box-shadow:0 4px 24px #0003}.confirm-text{font-size:1rem;color:var(--text);margin-bottom:.75rem;line-height:1.4}.confirm-prize-emoji{font-size:3rem;margin-bottom:.5rem}.confirm-prize-label{font-size:.95rem;color:var(--text);margin-bottom:1.25rem;line-height:1.4}.confirm-actions{display:flex;gap:.75rem}.confirm-btn{flex:1;padding:.7rem 0;border:none;border-radius:8px;font-size:1rem;font-weight:600}.confirm-btn--cancel{background:var(--cell-incomplete);border:1.5px solid var(--accent);color:var(--text)}.confirm-btn--award{background:var(--accent);color:#fff}.celebration-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center}.celebration-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--cell-complete);animation:cel-flash .6s ease-out forwards}@keyframes cel-flash{0%{opacity:1}60%{opacity:1}to{opacity:.82}}.celebration-modal{position:relative;background:var(--bg);border-radius:16px;padding:2rem 1.5rem;max-width:320px;width:90%;text-align:center;box-shadow:0 8px 32px #00000040;animation:cel-modal-in .25s .35s ease-out both}@keyframes cel-modal-in{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}.celebration-item{margin-bottom:1.25rem}.celebration-emoji{font-size:3rem;margin-bottom:.4rem}.celebration-pattern{font-size:1.2rem;font-weight:700;color:var(--accent)}.celebration-prize{font-size:1rem;color:var(--text);margin-top:.2rem}.celebration-dismiss{padding:.75rem 2rem;background:var(--accent);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;margin-top:.5rem}.card-loading,.card-error{padding:1.5rem;text-align:center;color:var(--text)}
