[v-cloak]{display:none}button i.fa-solid,button i.fa-regular,button i.fa-brands,h1 i.fa-solid,h2 i.fa-solid,h3 i.fa-solid,h4 i.fa-solid{margin-right:.35em}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #1a1c17;--surface: #272a22;--surface2: #383b31;--primary: #d6bdae;--primary-hover: #c4a999;--secondary: #6b705c;--secondary-hover: #5a5e4c;--gold: #d6bdae;--text: #f0ebe3;--text-dim: #a5a58c;--text-on-primary: #1a1c17;--text-on-toast: #f0ebe3;--success: #7a8a68;--danger: #c4756a;--radius: 10px;--board-cell: #f0ebe3;--board-cell-hover: #e5ded4;--board-cell-free: #d6bdae;--board-gradient-start: #2f3328;--board-gradient-end: #272a22;--overlay: rgba(0, 0, 0, .7);--shadow-color: rgba(0, 0, 0, .5);--glow-color: rgba(214, 189, 174, .5);--header-font: "Arapey", serif}body{font-family:Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:var(--secondary)}button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--radius);padding:10px 20px;font-size:.95rem;font-weight:600;transition:all .15s}button:active{transform:scale(.97)}input,select{font-family:inherit;border:2px solid var(--surface2);border-radius:var(--radius);padding:10px 14px;font-size:1rem;background:var(--surface);color:var(--text);outline:none}input:focus{border-color:var(--secondary)}h1,h2,h3{font-weight:700}h1{font-family:var(--header-font);font-style:normal;text-transform:uppercase}.btn-primary{background:var(--primary);color:var(--text-on-primary)}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--secondary);color:var(--text)}.btn-secondary:hover{background:var(--secondary-hover)}.btn-danger{background:transparent;color:var(--danger);border:2px solid var(--danger)}.btn-danger:hover{background:var(--danger);color:var(--text)}.btn-ghost{background:transparent;color:var(--text-dim);border:2px solid var(--surface2)}.btn-ghost:hover{border-color:var(--text-dim)}.btn-sm{padding:8px 16px;font-size:.88rem}.btn-lg{padding:14px 32px;font-size:1.1rem}.flex{display:flex;align-items:center;gap:12px}.gap-sm{gap:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mt{margin-top:16px}.mb{margin-bottom:16px}.text-center{text-align:center}.toast{position:fixed;top:20px;right:20px;padding:14px 24px;border-radius:var(--radius);font-weight:600;z-index:1000;animation:slideIn .3s ease;max-width:380px;cursor:pointer}.toast-success{background:var(--success);color:var(--text-on-toast)}.toast-error{background:var(--danger);color:var(--text-on-toast)}.toast-info{background:var(--secondary);color:var(--text-on-toast)}@keyframes slideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.home{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:90vh;gap:40px}.home-brand{display:flex;flex-direction:column;align-items:center;gap:16px}.home-logo{display:block;width:min(240px,70vw);height:auto;filter:drop-shadow(0 8px 24px rgba(0,0,0,.35))}.home h1{font-size:3rem;background:linear-gradient(135deg,var(--primary),var(--text-dim));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.home-cards{display:flex;gap:24px;flex-wrap:wrap;justify-content:center}.home-card{background:var(--surface);border-radius:16px;padding:36px 32px;width:320px;text-align:center;border:2px solid var(--surface2);transition:border-color .2s}.home-card:hover{border-color:var(--secondary)}.home-card h2{margin-bottom:8px;font-size:1.3rem}.home-card p{color:var(--text-dim);font-size:.9rem;margin-bottom:20px}.home-card .field{display:flex;gap:8px;margin-bottom:12px}.home-card .field input{flex:1;text-transform:uppercase;letter-spacing:3px;text-align:center;font-size:1.1rem}.home-admin{margin-top:8px;opacity:.5;transition:opacity .2s}.home-admin:hover{opacity:1}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;background:var(--surface);border-bottom:1px solid var(--surface2)}.topbar h2{font-size:1.15rem}.board-wrap{background:linear-gradient(145deg,var(--board-gradient-start),var(--board-gradient-end));border-radius:16px;padding:18px;box-shadow:0 8px 40px var(--shadow-color);display:inline-block}.board-header{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin-bottom:5px}.board-header span{text-align:center;font-family:var(--header-font);font-size:1.6rem;font-weight:800;padding:6px 0;color:var(--gold);letter-spacing:2px}.board-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.board-cell{position:relative;width:68px;height:68px;display:flex;align-items:center;justify-content:center;background:var(--board-cell);border-radius:8px;font-family:var(--header-font);font-size:1.3rem;font-weight:700;color:var(--text-on-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .12s}.board-cell:hover{background:var(--board-cell-hover)}.board-cell.free{background:var(--board-cell-free);cursor:pointer}.board-cell.stamped .stamp-mark{display:flex}.stamp-mark{display:none;position:absolute;top:6%;right:6%;bottom:6%;left:6%;border-radius:50%;align-items:center;justify-content:center;pointer-events:none;font-size:2.6rem;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.3))}.board-cell.stamped .cell-num{opacity:.45}.stamp-picker{display:flex;align-items:center;gap:8px;justify-content:center;flex-wrap:wrap}.stamp-picker span.label{font-size:.85rem;color:var(--text-dim);margin-right:2px}.stamp-option{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-family:inherit;color:var(--text);padding:0;border-radius:8px;cursor:pointer;background:var(--surface2);border:2px solid transparent;transition:all .15s}.stamp-option:hover{border-color:var(--text-dim)}.stamp-option:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.stamp-option.active{border-color:var(--gold);background:var(--surface)}.stamp-custom-img{width:100%;height:100%;object-fit:cover;border-radius:4px;pointer-events:none}.stamp-custom-preview{width:28px;height:28px;object-fit:cover;border-radius:4px}.stamp-upload-btn{cursor:pointer;font-size:1.2rem}.color-swatch{width:32px;height:32px;padding:0;border-radius:50%;cursor:pointer;border:3px solid transparent;transition:all .15s}.color-swatch:hover{transform:scale(1.15)}.color-swatch:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.color-swatch.active{border-color:var(--gold);box-shadow:0 0 8px var(--glow-color)}.opacity-slider{display:flex;align-items:center;gap:8px;justify-content:center}.opacity-slider span.label{font-size:.85rem;color:var(--text-dim)}.opacity-slider input[type=range]{width:120px;accent-color:var(--gold);cursor:pointer}.opacity-slider .opacity-val{font-size:.8rem;color:var(--text-dim);min-width:32px;text-align:center}.player-body{display:flex;flex-wrap:wrap;gap:28px;padding:24px;justify-content:center}.player-left{display:flex;flex-direction:column;align-items:center;gap:16px}.player-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;width:100%}.player-actions .btn-sm{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.player-right{flex:1;min-width:300px;max-width:500px;display:flex;flex-direction:column;gap:20px}.numbers-panel{background:var(--surface);border-radius:var(--radius);padding:16px}.numbers-panel h3{margin-bottom:10px;font-size:1rem;color:var(--text-dim)}.numbers-cols{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.numbers-col-header{text-align:center;font-weight:800;font-size:1rem;padding:4px 0;color:var(--gold)}.num-cell{text-align:center;padding:4px 0;font-size:.85rem;border-radius:4px;color:var(--text-dim)}.num-cell.called{background:var(--gold);color:var(--text-on-primary);font-weight:700}.patterns-panel{background:var(--surface);border-radius:var(--radius);padding:16px}.patterns-panel h3{margin-bottom:10px;font-size:1rem;color:var(--text-dim)}.pattern-cards{display:flex;flex-wrap:wrap;gap:12px}.pattern-card{text-align:center;width:100px}.pattern-card span{display:block;font-size:.8rem;margin-bottom:4px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pattern-mini{display:grid;grid-template-columns:repeat(5,1fr);gap:2px}span.pattern-mini{display:inline-grid}.pattern-mini-cell{width:16px;height:16px;border-radius:3px;background:var(--surface2)}.pattern-mini-cell.on{background:var(--gold)}.admin-login{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;gap:16px}.admin-login .box{background:var(--surface);padding:40px;border-radius:16px;text-align:center;width:360px;border:2px solid var(--surface2)}.admin-login .box h2{margin-bottom:6px}.admin-login .box p{color:var(--text-dim);margin-bottom:20px;font-size:.9rem}.admin-login .box input{width:100%;margin-bottom:12px}.admin-login .box .btns{display:flex;gap:12px;justify-content:center;margin-top:4px}.error-msg{color:var(--danger);font-size:.85rem;margin-top:8px}.admin-layout{display:flex;min-height:calc(100vh - 56px)}.admin-sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--surface2);padding:12px 0;overflow-y:auto}.admin-nav-section{margin-bottom:4px}.admin-nav-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;cursor:pointer;font-weight:700;font-size:.95rem;color:var(--text-dim);transition:color .15s,background .15s;-webkit-user-select:none;user-select:none}.admin-nav-header:hover,.admin-nav-header.open{color:var(--text);background:var(--surface2)}.nav-chevron{font-size:.75rem;opacity:.6}.admin-nav-items{display:flex;flex-direction:column;gap:1px;padding:2px 0}.admin-nav-items button{display:block;width:100%;text-align:left;padding:8px 16px 8px 28px;background:transparent;color:var(--text-dim);font-weight:500;font-size:.88rem;border-radius:0;transition:background .12s,color .12s}.admin-nav-items button:hover{background:var(--surface2);color:var(--text)}.admin-nav-items button.active{background:var(--secondary);color:var(--text);font-weight:600}.admin-nav-sub-header{display:block;padding:6px 16px 2px 20px;font-size:.75rem;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;opacity:.7}.admin-content{flex:1;min-width:0;overflow-y:auto}@media(max-width:768px){.admin-layout{flex-direction:column}.admin-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--surface2);padding:8px 0}.admin-nav-items button{padding:8px 16px 8px 36px}}.tab-body{padding:24px}.cards-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:20px}.cards-toolbar input[type=number]{width:80px}.cards-grid{display:flex;flex-wrap:wrap;gap:8px}.card-chip{display:flex;align-items:center;gap:6px;background:var(--surface2);padding:8px 12px;border-radius:8px;font-family:monospace;font-size:.95rem;cursor:pointer;border:2px solid transparent;transition:border-color .15s}.card-chip:hover{border-color:var(--secondary)}.card-chip .del{color:var(--danger);font-weight:700;cursor:pointer;margin-left:4px;font-size:1.1rem}.card-chip .del:hover{color:var(--text)}.card-chip.has-player{border-color:var(--secondary)}.card-chip .card-player-icon{font-size:.75rem;opacity:.7}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:500}.modal-box{background:var(--surface);border-radius:16px;padding:24px;max-width:440px;width:90%}.modal-box h3{margin-bottom:12px}.modal-box .confirm-msg{color:var(--text-dim);font-size:.95rem;line-height:1.5;margin-bottom:20px}.modal-box .confirm-btns{display:flex;gap:12px;justify-content:flex-end}.modal-box.modal-centered .confirm-btns{justify-content:center}.pattern-editor{background:var(--surface);border-radius:var(--radius);padding:24px;margin-bottom:16px}.pattern-editor-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;width:fit-content;margin:16px auto}.pattern-editor-cell{width:48px;height:48px;border-radius:6px;background:var(--surface2);cursor:pointer;border:2px solid transparent;transition:all .12s}.pattern-editor-cell.on{background:var(--gold);border-color:var(--gold)}.pattern-editor-cell:hover{border-color:var(--text-dim)}.pattern-editor .field{display:flex;gap:10px;margin-bottom:12px;justify-content:center}.pattern-editor .btns{display:flex;gap:12px;justify-content:center;margin-top:20px}.saved-patterns{display:flex;flex-wrap:wrap;gap:12px}.saved-pattern{background:var(--surface);border:2px solid var(--surface2);border-radius:var(--radius);padding:14px;text-align:center;position:relative;width:140px;transition:border-color .15s,box-shadow .15s}.saved-pattern .pattern-mini{margin:24px auto 8px;width:fit-content}.saved-pattern .pattern-mini .pattern-mini-cell{width:18px;height:18px}.saved-pattern span{display:block;font-size:.85rem;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-pattern .del{position:absolute;top:6px;right:8px;color:var(--danger);cursor:pointer;font-weight:700;font-size:1.1rem;line-height:1;transition:color .12s}.saved-pattern .del:hover{color:var(--text)}.saved-pattern .pattern-drag{position:absolute;top:6px;left:8px}.saved-pattern .pattern-name{cursor:text;margin-top:6px;font-size:.82rem;color:var(--text-dim)}.saved-pattern .pattern-name:hover{color:var(--gold)}.saved-pattern .pattern-name-input{margin-top:6px;font-size:.82rem;max-width:110px}.category-grid{display:flex;gap:10px;flex-wrap:wrap}.category-chip{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--bg);border-radius:8px;font-size:.95rem;border:2px solid var(--surface2);cursor:default;transition:border-color .15s,box-shadow .15s;min-width:120px}.category-chip:hover{border-color:var(--text-dim)}.category-name{cursor:text;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-del{cursor:pointer;color:var(--danger);font-weight:700;font-size:1.2rem;line-height:1;margin-left:auto;transition:color .12s}.category-del:hover{color:var(--text)}.inline-edit-input{background:var(--surface2);border:1px solid var(--gold);border-radius:4px;color:var(--text);font-size:inherit;padding:2px 6px;outline:none;width:100%;min-width:60px}.inline-edit-input:focus{border-color:var(--gold);box-shadow:0 0 0 2px var(--glow-color)}.dragging{opacity:.4}.drag-placeholder{border:2px dashed var(--gold);border-radius:var(--radius);background:#d6bdae14;pointer-events:none}.drag-placeholder--category{min-width:120px;height:44px}.drag-placeholder--pattern{width:140px;height:160px}.pattern-drop-zone.drag-over{background:#d6bdae0f;border-radius:8px;outline:2px dashed var(--gold);outline-offset:2px}.saved-pattern[draggable=true]{cursor:grab}.saved-pattern[draggable=true]:active{cursor:grabbing}.drag-handle{-webkit-user-select:none;user-select:none;cursor:grab;opacity:.4;font-size:.8rem;transition:opacity .15s}.drag-handle:hover{opacity:.8}.drag-handle:active{cursor:grabbing}.game-setup{background:var(--surface);border-radius:var(--radius);padding:24px}.game-setup h3{margin-bottom:12px}.draw-controls{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}.draw-countdown{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:16px;animation:fadeIn .3s ease}.countdown-ring{width:56px;height:56px;border-radius:50%;border:4px solid var(--gold);display:flex;align-items:center;justify-content:center;animation:countdownPulse 1s infinite}.countdown-number{font-size:1.6rem;font-weight:800;color:var(--gold)}.countdown-label{font-size:1rem;color:var(--text-dim);font-weight:600}@keyframes countdownPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.85}}.draw-sent{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;animation:fadeIn .3s ease}.sent-icon{font-size:1.4rem}.sent-label{font-size:1rem;font-weight:600;color:var(--success)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.pattern-checks{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.pattern-check{display:flex;align-items:center;gap:8px;background:var(--surface2);padding:10px 14px;border-radius:8px;cursor:pointer;border:2px solid transparent;transition:border-color .15s}.pattern-check.selected{border-color:var(--gold)}.pattern-check input{display:none}.pattern-check .dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--text-dim)}.pattern-check.selected .dot{background:var(--gold);border-color:var(--gold)}.game-active{display:flex;flex-direction:column;gap:20px}.game-active-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.game-active-left,.game-active-right{display:flex;flex-direction:column;gap:20px}@media(max-width:800px){.game-active-columns{grid-template-columns:1fr}}.draw-area{text-align:center}.last-drawn{display:inline-flex;flex-direction:column;align-items:center;background:var(--surface);border-radius:16px;padding:20px 36px;margin-top:12px;margin-left:16px;border:3px solid var(--gold)}.last-drawn .letter{font-size:1.6rem;font-weight:800;color:var(--gold)}.last-drawn .number{font-size:3rem;font-weight:800}.winners-panel{background:var(--surface);border-radius:var(--radius);padding:16px}.winners-panel h3{color:var(--gold);margin-bottom:8px}.winner-chips{display:flex;flex-wrap:wrap;gap:8px}.winner-chip{background:linear-gradient(135deg,var(--gold),var(--text-dim));color:var(--text-on-primary);padding:8px 16px;border-radius:8px;font-weight:700;font-family:monospace}.winner-chip-btn{cursor:pointer;transition:transform .12s,box-shadow .12s}.winner-chip-btn:hover{transform:scale(1.06);box-shadow:0 0 12px var(--glow-color)}.winner-chip-btn:active{transform:scale(.97)}.board-cell.pattern-hit{background:var(--gold);color:var(--text-on-primary);box-shadow:0 0 10px var(--glow-color);border:2px solid var(--text-dim)}.board-cell.pattern-hit.free{background:var(--gold)}.no-game-msg{text-align:center;color:var(--text-dim);padding:40px}.game-details{background:var(--surface);border-radius:var(--radius);padding:16px 20px;color:var(--text);font-size:.92rem;line-height:1.6;max-width:380px;width:100%;word-wrap:break-word}.game-details h1,.game-details h2,.game-details h3{margin:8px 0 4px;color:var(--gold)}.game-details p{margin:6px 0}.game-details ul,.game-details ol{padding-left:20px;margin:6px 0}.game-details a{color:var(--primary)}.game-details strong{color:var(--text)}.game-details code{background:var(--surface2);padding:2px 6px;border-radius:4px;font-size:.85em}.game-details-editor{margin-bottom:20px}.game-details-editor textarea{width:100%;font-family:inherit;font-size:.92rem;background:var(--surface2);color:var(--text);border:2px solid var(--surface2);border-radius:var(--radius);padding:10px 14px;resize:vertical;outline:none;line-height:1.5}.game-details-editor textarea:focus{border-color:var(--primary)}.styles-layout{display:flex;gap:20px;min-height:500px}.styles-sidebar{width:220px;flex-shrink:0;background:var(--surface);border-radius:var(--radius);padding:16px}.styles-list{display:flex;flex-direction:column;gap:4px;max-height:350px;overflow-y:auto}.style-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:6px;cursor:pointer;background:var(--surface2);transition:all .12s;gap:8px}.style-item:hover{background:var(--primary);color:var(--text-on-primary)}.style-item.selected{border:2px solid var(--primary);background:var(--surface2)}.style-name{font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.style-active-badge{font-size:.7rem;font-weight:700;background:var(--success);color:var(--text-on-toast);padding:2px 6px;border-radius:4px;white-space:nowrap}.styles-editor{flex:1;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius);padding:16px}.style-css-editor{width:100%;border:2px solid var(--surface2);border-radius:var(--radius);overflow:hidden}.style-css-editor:focus-within{border-color:var(--primary)}.style-css-editor .cm-editor{max-height:640px;border-radius:var(--radius)}.style-css-editor .cm-content,.style-css-editor .cm-gutter{min-height:380px}@media(max-width:700px){.styles-layout{flex-direction:column}.styles-sidebar{width:100%}.styles-list{max-height:200px}}.raffle-list{display:flex;flex-wrap:wrap;gap:16px}.raffle-card{background:var(--surface);border:2px solid var(--surface2);border-radius:12px;width:280px;cursor:pointer;transition:border-color .2s,transform .12s;overflow:hidden}.raffle-card:hover{border-color:var(--secondary);transform:translateY(-2px)}.raffle-card-image{width:100%;height:160px;object-fit:cover;display:block}.raffle-card-body{padding:16px}.raffle-card-body h3{font-size:1.05rem;margin-bottom:6px}.raffle-cost{color:var(--gold);font-weight:600;font-size:.9rem}.raffle-badge{display:inline-block;font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:4px;vertical-align:middle;margin-left:6px;text-transform:uppercase}.raffle-badge-open{background:var(--success);color:var(--text-on-toast)}.raffle-badge-closed{background:var(--danger);color:var(--text-on-toast)}.raffle-signup-form{background:var(--surface);border-radius:var(--radius);padding:20px;margin-top:16px}.raffle-signup-form input,.raffle-signup-form select{width:100%}.raffle-signup-result{background:var(--surface);border:2px solid var(--success);border-radius:var(--radius);padding:20px;margin-top:16px}.admin-panel{background:var(--surface);border-radius:var(--radius);padding:24px}.admin-panel>h3:first-child{padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid color-mix(in srgb,var(--text-dim) 25%,transparent)}.admin-panel .numbers-panel,.admin-panel .winners-panel,.admin-panel .patterns-panel,.admin-panel .game-setup,.admin-panel .last-drawn,.admin-panel .game-details,.admin-panel .game-details-panel,.admin-panel .frequent-winners-panel{background:var(--surface2)}.admin-panel .pattern-mini-cell{background:var(--surface)}.admin-panel .pattern-mini-cell.on{background:var(--gold)}.admin-panel .pattern-editor-cell{background:var(--surface)}.admin-panel .pattern-editor-cell.on{background:var(--gold)}.admin-panel .saved-pattern{background:var(--surface2);border-color:color-mix(in srgb,var(--text-dim) 20%,transparent)}.admin-panel .pattern-editor{background:var(--surface2)}.raffle-winner-panel{background:linear-gradient(135deg,color-mix(in srgb,var(--gold) 15%,transparent),color-mix(in srgb,var(--success) 15%,transparent));border:2px solid var(--gold);border-radius:var(--radius);padding:20px;margin-bottom:16px;text-align:center}.raffle-entries-table{background:var(--surface);border-radius:var(--radius);overflow-x:auto}.raffle-entries-table th{font-weight:600}.raffle-entries-table td,.raffle-entries-table th{white-space:nowrap}.raffle-closed-msg{background:var(--surface);border-radius:var(--radius);margin-top:16px}.text-dim{color:var(--text-dim)}.text-gold{color:var(--gold)}.text-success{color:var(--success)}.text-sm{font-size:.85rem}.text-xs{font-size:.8rem}.code-gold{font-family:monospace;color:var(--gold)}.mb-4{margin-bottom:4px}.mb-6{margin-bottom:6px}.mb-8{margin-bottom:8px}.mb-10{margin-bottom:10px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.flex-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.flex-row{display:flex;gap:16px;flex-wrap:wrap}.flex-center{display:flex;justify-content:center}.flex-between{display:flex;justify-content:space-between;align-items:center}.field-label{color:var(--text);font-size:.9rem;font-weight:600;display:block;margin-bottom:4px}.form-textarea{width:100%;font-family:inherit;font-size:.92rem;background:var(--surface2);color:var(--text);border:2px solid var(--surface2);border-radius:var(--radius);padding:10px 14px;resize:vertical;outline:none;line-height:1.5}.form-textarea:focus{border-color:var(--primary)}.field-input-full{width:100%}.settings-form{max-width:480px}.font-preview{background:var(--surface2);border-radius:var(--radius);padding:16px 20px;text-align:center;color:var(--gold);line-height:1.4}.modal-centered{max-width:440px;text-align:center}.board-preview{transform:scale(.85);transform-origin:top center;margin-bottom:-15%}.game-details--wide{max-width:none}.pattern-mini-sm .pattern-mini-cell{width:10px;height:10px}.msg-block{color:var(--text-dim);text-align:center;padding:20px}.raffle-detail-body{max-width:700px;margin:0 auto}.raffle-prize-container{text-align:center;margin-bottom:20px}.raffle-prize-img{max-width:100%;max-height:400px;border-radius:12px;box-shadow:0 4px 20px var(--shadow-color)}.raffle-prize-img-sm{max-width:300px;max-height:200px;border-radius:8px}.raffle-section-heading{color:var(--gold);margin-bottom:8px}.entries-table{width:100%;border-collapse:collapse}.entries-table th{text-align:left;padding:8px;color:var(--text-dim);font-size:.85rem;font-weight:600}.entries-table th.tc{text-align:center}.entries-table td{padding:8px}.entries-table td.tc{text-align:center}.entries-table thead tr{border-bottom:2px solid var(--surface2)}.entries-table tbody tr{border-bottom:1px solid var(--surface2)}.drop-placeholder{padding:16px;text-align:center;color:var(--text-dim);font-size:.85rem;border:2px dashed var(--surface2);border-radius:8px;min-height:80px;display:flex;align-items:center;justify-content:center}.winners-log-table{width:100%;border-collapse:collapse;font-size:.85rem}.winners-log-table th,.winners-log-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--surface2)}.winners-log-table th{color:var(--text-dim);font-weight:600;-webkit-user-select:none;user-select:none;white-space:nowrap}.winners-log-table td:first-child,.winners-log-table td:nth-child(3){white-space:nowrap}.winners-log-table tbody tr:hover{background:var(--surface2)}.frequent-winners-panel{background:var(--surface);border:1px solid var(--gold);border-radius:8px;padding:12px 16px;margin-top:16px}.frequent-winner-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.pagination-bar{display:flex;align-items:center;justify-content:center;gap:12px}button:disabled,button[disabled]{opacity:.55;cursor:not-allowed}button:disabled:hover,button[disabled]:hover{background:inherit;border-color:inherit}button:disabled:active{transform:none}@keyframes spin{to{transform:rotate(360deg)}}.spinner{display:inline-block;width:1.1em;height:1.1em;border:2px solid var(--surface2);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-.2em;flex:0 0 auto}.loading-inline{display:inline-flex;align-items:center;gap:8px}.loading-block{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px;color:var(--text-dim)}.loading-label{color:var(--text-dim)}.empty-state{text-align:center;color:var(--text-dim);padding:40px}.route-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;background:var(--surface2);overflow:hidden}.route-progress-bar{height:100%;width:40%;background:var(--primary);border-radius:0 2px 2px 0;animation:routeProgressSlide 1.1s ease-in-out infinite}@keyframes routeProgressSlide{0%{margin-left:-40%}50%{margin-left:60%}to{margin-left:110%}}kbd{display:inline-block;padding:1px 6px;border-radius:4px;background:var(--surface2);color:var(--text);border:1px solid var(--overlay);font-family:inherit;font-size:.85em;font-weight:600;line-height:1.4}.nav-count{margin-left:6px;font-size:.78em;font-weight:600;color:var(--text-dim)}.admin-nav-items button.active .nav-count{color:var(--text)}.live-badge{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;margin-left:10px;padding:2px 10px;border-radius:999px;background:var(--danger);color:var(--text-on-toast);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.live-dot{width:7px;height:7px;border-radius:50%;background:currentColor;animation:livePulse 1.4s ease-in-out infinite}.game-clock{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;margin-left:10px;padding:2px 10px;border-radius:999px;background:var(--surface2);color:var(--text);font-size:.8rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em}.game-clock i{color:var(--gold);font-size:.75rem}.nav-live-dot{display:inline-block;margin-left:8px;vertical-align:middle;background:var(--danger)}@keyframes livePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}.conn-badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;background:var(--surface2);color:var(--text-dim);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.conn-badge .conn-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.conn-badge.is-open{color:var(--success)}.conn-badge.is-connecting,.conn-badge.is-reconnecting{color:var(--gold)}.conn-badge.is-closed{color:var(--danger)}.conn-badge.is-connecting .conn-dot,.conn-badge.is-reconnecting .conn-dot{animation:livePulse 1.4s ease-in-out infinite}.last-called{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:16px}.last-called-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.last-called .last-drawn{margin:0}.last-drawn--pop{animation:lastCalledPop .35s ease}@keyframes lastCalledPop{0%{transform:scale(.7);opacity:0}60%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}.game-over-msg{text-align:center;color:var(--text);padding:32px 16px}.game-over-msg .go-icon{font-size:2.4rem;color:var(--gold);margin-bottom:10px}.game-over-msg .go-title{font-size:1.15rem;font-weight:700;margin-bottom:8px}.game-over-msg .go-sub{color:var(--text-dim);font-size:.95rem;margin-top:4px}@media(prefers-reduced-motion:reduce){.spinner{animation:none;border-top-color:var(--primary)}.route-progress-bar{animation:none;width:100%;opacity:.8}.live-dot,.conn-badge .conn-dot,.last-drawn--pop{animation:none}}
