#tombola-required-veil{position:fixed;inset:0;z-index:1949;background:#050305ee;pointer-events:auto}
#tombola-overlay .tombola-board{position:relative}
.tombola-legendary-event{position:absolute;inset:30% 10%;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;pointer-events:none;color:#ffe7a2;background:radial-gradient(ellipse,#3b2407f5,#100b05ed);border:1px solid #f5ca63;box-shadow:0 0 28px #e3ae3d66,inset 0 0 24px #d49a2722;text-align:center;animation:tombola-legendary-banner 1.6s ease-out both}
.tombola-legendary-event small{font:700 clamp(7px,1.4vw,12px)/1.2 monospace;letter-spacing:.16em}.tombola-legendary-event strong{font:900 clamp(18px,4vw,38px)/1.1 Georgia,serif;letter-spacing:.06em}.tombola-legendary-event b{font:900 clamp(23px,4.5vw,44px)/1 monospace}.tombola-legendary-event span{font:700 clamp(8px,1.5vw,13px)/1.2 monospace;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@keyframes tombola-legendary-banner{0%{opacity:0;transform:scale(.92)}15%,75%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.025)}}
@media(prefers-reduced-motion:reduce){.tombola-legendary-event{animation:none;opacity:1}}
#tombola-overlay .tombola-field.is-grail::before{background:radial-gradient(circle,#594012ef,#1d1104f5);border-color:#ffe28a;box-shadow:inset 0 0 16px #edb63188}
.is-grail .tombola-outcome{color:#ffe9a0;font-size:clamp(15px,2.5vw,25px)}
.tombola-grail span{display:block;font-size:clamp(6px,1.1vw,10px);letter-spacing:.05em;margin-bottom:2px}
.tombola-grail small{font-size:clamp(7px,1.2vw,10px);margin-top:2px}
.tombola-grail svg{position:absolute;inset:12%;width:76%;height:76%;fill:#eeb73c22;stroke:#ffde7c;stroke-width:2;opacity:.28;z-index:-1}
.tombola-reveal-fx{position:absolute;inset:0;pointer-events:none;z-index:3;color:#e4bf63}
.tombola-reveal-fx::before,.tombola-reveal-fx::after{content:'';position:absolute;inset:6%;opacity:0;pointer-events:none}
.tombola-reveal-fx::after{border:2px solid currentColor;border-radius:50%;box-shadow:0 0 7px currentColor;animation:tombola-reward-ring .8s ease-out both}
.tombola-reveal-fx i{position:absolute;left:48%;top:48%;width:4%;height:11%;border-radius:50%;background:currentColor;opacity:0;--direction:45deg;animation:tombola-spark .85s ease-out both}
.tombola-reveal-fx i:nth-child(2){--direction:135deg}.tombola-reveal-fx i:nth-child(3){--direction:225deg}.tombola-reveal-fx i:nth-child(4){--direction:315deg}
.tombola-field.is-new-reveal.is-blessing{animation:tombola-blessing-open .85s cubic-bezier(.2,.8,.2,1)}
.is-blessing .tombola-reveal-fx{color:#9beabc}.is-blessing .tombola-reveal-fx::before{background:linear-gradient(120deg,transparent 25%,#ffedafbb 50%,transparent 75%);animation:tombola-gold-sweep .7s ease-out both}
.tombola-field.is-new-reveal.is-curse{animation:tombola-curse-open .85s ease-out}
.is-curse .tombola-reveal-fx{color:#ed675b}.is-curse .tombola-reveal-fx::before{background:linear-gradient(65deg,transparent 47%,#ff8c7788 49%,transparent 52%),linear-gradient(125deg,transparent 47%,#ff8c7788 49%,transparent 52%);animation:tombola-crack .8s ease-out both}.is-curse .tombola-reveal-fx::after{border-radius:3px;animation:tombola-crack .8s ease-out both}
.tombola-field.is-new-reveal.is-blood_tribute{animation:tombola-blood-open .95s ease-out}
.is-blood_tribute .tombola-reveal-fx{color:#d8224c}.is-blood_tribute .tombola-reveal-fx::before{background:radial-gradient(circle,#a00d36bb,transparent 65%);animation:tombola-blood-pool .9s ease-out both}.is-blood_tribute .tombola-reveal-fx i{display:none}
.tombola-field.is-new-reveal.is-grail{animation:tombola-grail-open 1.2s cubic-bezier(.2,.8,.2,1);z-index:4}
.is-grail .tombola-reveal-fx{color:#ffdc73}.is-grail .tombola-reveal-fx::before{inset:-25%;background:repeating-conic-gradient(from 10deg,#ffdf8566 0deg 8deg,transparent 8deg 30deg);animation:tombola-grail-rays 1.15s ease-out both}.is-grail .tombola-reveal-fx::after{animation:tombola-reward-ring 1.1s ease-out both}.is-new-reveal.is-grail .tombola-grail svg{animation:tombola-chalice-rise 1.1s ease-out}
@keyframes tombola-blessing-open{0%{transform:scale(.88) rotateY(-24deg)}45%{transform:scale(1.045)}100%{transform:none}}
@keyframes tombola-curse-open{0%{transform:scale(.94)}20%{transform:translateX(-3px) rotate(-2deg)}35%{transform:translateX(3px) rotate(2deg)}50%{transform:translateX(-2px)}75%{transform:scale(.98)}100%{transform:none}}
@keyframes tombola-blood-open{0%{transform:scale(.9)}35%{transform:scale(1.045)}65%{transform:scale(.98)}100%{transform:none}}
@keyframes tombola-grail-open{0%{transform:scale(.86) rotateY(-30deg)}35%{transform:scale(1.08)}65%{transform:scale(1.03)}100%{transform:none}}
@keyframes tombola-reward-ring{0%{transform:scale(.2);opacity:.9}100%{transform:scale(1.35);opacity:0}}
@keyframes tombola-spark{0%{transform:rotate(var(--direction)) translateY(-3px);opacity:0}20%{opacity:1}100%{transform:rotate(var(--direction)) translateY(-35px) scale(.3);opacity:0}}
@keyframes tombola-gold-sweep{0%{transform:translateX(-100%);opacity:0}35%{opacity:.8}100%{transform:translateX(100%);opacity:0}}
@keyframes tombola-crack{0%{transform:scale(.75);opacity:0}30%{opacity:.85}100%{transform:scale(1.12);opacity:0}}
@keyframes tombola-blood-pool{0%{transform:scale(.25);opacity:0}35%{opacity:.8}100%{transform:scale(1.25);opacity:0}}
@keyframes tombola-grail-rays{0%{transform:scale(.3) rotate(-20deg);opacity:0}35%{opacity:.85}100%{transform:scale(1.25) rotate(25deg);opacity:0}}
@keyframes tombola-chalice-rise{0%{transform:translateY(10px) scale(.65);opacity:0}35%{opacity:.7}100%{transform:none;opacity:.28}}
@media(prefers-reduced-motion:reduce){#tombola-overlay .tombola-field,#tombola-overlay .tombola-field *,#tombola-overlay .tombola-field::before,#tombola-overlay .tombola-field::after{animation:none!important;transition:none!important}.tombola-reveal-fx{display:none!important}}
.tombola-mini-icon{display:grid;place-items:center;background:transparent!important;border:0!important;box-shadow:none!important}.tombola-mini-icon img{display:block;width:100%!important;height:100%!important;object-fit:contain;filter:drop-shadow(0 2px 3px #000) drop-shadow(0 0 4px #be883840)!important}
#tombola-overlay{position:fixed;z-index:1950;top:24px;left:50%;transform:translateX(-50%);width:min(700px,calc(100vw - 24px));max-height:calc(100dvh - 145px);overflow:auto;scrollbar-width:thin;scrollbar-color:#987547 #151011;color:#f2e8d3;background:#0b0a0b;border:1px solid #846338;box-shadow:0 20px 80px #000c;border-radius:12px;box-sizing:border-box}
#tombola-overlay[hidden]{display:none!important}.tombola-shell{padding:18px;box-sizing:border-box;background:radial-gradient(ellipse at 50% 0,#39211844,transparent 65%)}.tombola-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.tombola-heading small{font:700 10px/1.4 monospace;letter-spacing:.15em;color:#b69767}.tombola-heading h2{font:900 clamp(21px,4vw,30px)/1.2 Georgia,serif;letter-spacing:.09em;margin:6px 0 10px}.tombola-heading button{font-size:24px!important;min-width:40px}.tombola-turn{padding:10px;margin:4px 0 12px;border:1px solid #765633;background:linear-gradient(90deg,#2b2018,#0d0b0b);font:700 12px/1.4 monospace;color:#eed19b;text-align:center}
.tombola-board{aspect-ratio:1;width:100%;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));gap:clamp(3px,.7vw,6px);padding:5.2%;box-sizing:border-box;background:url('../assets/tombola/board.png') center/100% 100% no-repeat;isolation:isolate}.tombola-field{position:relative;aspect-ratio:1;min-width:0;min-height:0;border:0;padding:0;display:grid;place-items:center;background:#121010 url('../assets/tombola/vault-numberless.png') center/100% 100% no-repeat;cursor:pointer;overflow:hidden;transition:filter .15s,transform .15s;border-radius:1px;color:#f3d097;font-family:Georgia,serif}.tombola-field:disabled{cursor:default;opacity:1}.tombola-field:not(:disabled):hover{filter:brightness(1.3);transform:scale(1.035);z-index:2}.tombola-field:focus-visible{outline:3px solid #ffe0a0;outline-offset:0;z-index:3}.tombola-number{z-index:2;font-size:clamp(16px,3vw,29px);font-weight:900;text-shadow:0 2px 2px #000,0 0 4px #000}.tombola-field.is-closed:not(:disabled){box-shadow:inset 0 0 0 1px #cfac6355}.tombola-field:not(.is-closed)::before{content:'';position:absolute;inset:10%;background:radial-gradient(circle,#0d2617e8,#06120bf0);box-shadow:inset 0 0 12px #40e998aa;border:1px solid #69d5a0}.tombola-field.is-curse::before{background:radial-gradient(circle,#451313f0,#190507f0);box-shadow:inset 0 0 12px #ff453bbb;border-color:#dc605a}.tombola-field.is-blood_tribute::before{background:radial-gradient(circle,#6c0718,#030304);box-shadow:inset 0 0 16px #fd2948;border-color:#ff304d}.tombola-field:not(.is-closed) .tombola-number{position:absolute;top:2px;left:4px;font:700 clamp(8px,1.5vw,11px)/1 monospace;color:#fff8}.tombola-outcome{z-index:2;font:900 clamp(15px,2.5vw,25px)/1.05 monospace;color:#a7f9c7;text-shadow:0 2px #000}.tombola-outcome small{display:block;font-size:clamp(9px,1.4vw,13px);letter-spacing:.1em;margin-top:4px}.is-curse .tombola-outcome{color:#ffb1a9}.is-blood_tribute .tombola-outcome{font-size:clamp(8px,1.7vw,15px);color:#ffc6cd}.is-new-reveal{animation:tombola-unseal .55s ease-out}.tombola-status{font:700 11px/1.5 monospace;color:#c9ab7a;padding:12px 0;text-align:center}.tombola-controls{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.tombola-controls button,.tombola-heading button{border:1px solid #956f41;background:linear-gradient(#37291d,#16120f);color:#f6d8a5;min-height:42px;padding:10px 14px;border-radius:5px;font:800 11px/1.2 monospace;letter-spacing:.06em;cursor:pointer}.tombola-controls button:disabled{opacity:.45;cursor:wait}.tombola-roster{display:flex;gap:14px;flex-wrap:wrap;padding-left:22px;font:700 11px/1.5 monospace;color:#a48f71}.tombola-roster .is-active{color:#b8efc8}.tombola-history{font:11px/1.5 monospace;color:#a88c65;margin-top:12px}.tombola-blood-verdict{text-align:center;border:1px solid #c83445;padding:14px;margin-bottom:12px;background:radial-gradient(ellipse at center,#510c1ce6,#070607);box-shadow:inset 0 0 26px #c60e3322;color:#f8bec6}.tombola-blood-verdict strong{display:block;font:900 clamp(17px,3vw,25px)/1.2 Georgia,serif;letter-spacing:.06em}.tombola-blood-verdict b{display:block;font:900 19px/1.4 monospace;color:#fff;margin:6px}.tombola-blood-verdict p{font:700 10px/1.5 monospace;margin:0}.tombola-finale .tombola-blood-verdict{animation:tombola-blood .75s ease-out}.tombola-card{background:linear-gradient(125deg,#332117,#140f11)!important;border-color:#88643c!important}.tombola-mini-icon{font:900 28px/1 Georgia,serif;color:#d7b278}
@keyframes tombola-unseal{0%{transform:scale(.87);filter:brightness(2)}100%{transform:scale(1);filter:brightness(1)}}@keyframes tombola-blood{0%{filter:brightness(2);transform:translateX(-4px)}25%{transform:translateX(4px)}50%{transform:translateX(-2px)}100%{filter:brightness(1);transform:none}}@media(max-width:500px){#tombola-overlay{top:12px;width:calc(100vw - 16px);max-height:calc(100dvh - 130px)}.tombola-shell{padding:10px}.tombola-board{gap:3px}.tombola-turn{font-size:10px}.tombola-field{min-width:0}.tombola-roster{font-size:10px}}@media(prefers-reduced-motion:reduce){.tombola-field,.tombola-finale .tombola-blood-verdict{animation:none!important;transition:none!important}}
#tombola-invite{position:fixed;right:20px;bottom:100px;z-index:1951;box-sizing:border-box;width:min(410px,calc(100vw - 32px));max-height:calc(100dvh - 140px);overflow-y:auto;padding:18px;border:1px solid #ac8243;border-left:4px solid #dfb66b;border-radius:9px;background:linear-gradient(135deg,#281b10,#100d0a 75%);color:#f2d399;box-shadow:0 12px 36px #000b;font:13px/1.4 monospace}
#tombola-invite small{display:block;color:#c8a66d;font-size:10px;letter-spacing:.12em}#tombola-invite strong{display:block;margin:7px 0;font:700 26px Georgia,serif;letter-spacing:.08em}#tombola-invite p{margin:8px 0 14px;overflow-wrap:anywhere}.tombola-invite-actions{display:flex;gap:8px;flex-wrap:wrap}#tombola-invite button{padding:10px 12px;border:1px solid #9f783c;border-radius:5px;background:#302215;color:#f7d99b;font:700 12px monospace;cursor:pointer}#tombola-invite button:focus-visible{outline:2px solid #ffe4a4;outline-offset:3px}#tombola-invite button:disabled{opacity:.5;cursor:wait}
#tombola-invite{inset:0;margin:auto;width:min(560px,calc(100vw - 32px));height:fit-content;max-height:calc(100dvh - 48px);padding:clamp(22px,4vw,36px);box-shadow:0 24px 100px #000e,0 0 50px #c18c2633;animation:tombola-summon-arrive .55s ease-out}
#tombola-invite::backdrop{background:#050308d9;backdrop-filter:blur(5px)}
#tombola-invite strong{font-size:clamp(28px,6vw,42px)}
#tombola-invite [data-tombola-invite-join]{background:linear-gradient(#806032,#3c2812);border-color:#eac37a;min-height:48px;font-size:14px}
#tombola-overlay.tombola-summoned-board{z-index:200090}
@keyframes tombola-summon-arrive{0%{opacity:0;filter:brightness(1.8)}100%{opacity:1;filter:brightness(1)}}
@media(prefers-reduced-motion:reduce){#tombola-invite{animation:none}}

/* Keep the shared roster readable at every width; names never collapse into a run-on line. */
.tombola-roster{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px 16px;margin:14px 0 0;padding:12px 16px;list-style-position:inside;border:1px solid #4f3b28;background:#100d0c}
.tombola-roster li{min-width:0;padding:4px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tombola-heading{position:sticky;top:0;z-index:15;background:#0d0a0cf5;cursor:move;touch-action:none;user-select:none;padding:6px 0}
.tombola-heading>div{flex:1;min-width:0}.tombola-heading button{cursor:pointer;flex-shrink:0}
#tombola-restore{position:fixed;bottom:88px;right:18px;z-index:200091;max-width:calc(100vw - 36px);padding:12px 16px;border:1px solid #b58b4a;border-radius:7px;background:#21170df5;color:#f9dfa5;font:800 12px/1.4 monospace;cursor:pointer;box-shadow:0 6px 24px #000b}
#tombola-restore[hidden]{display:none!important}#tombola-restore.is-your-turn{border-color:#8bffc0;color:#aaffcc}
[data-tombola-turn-clock].is-urgent{color:#ff887c}.tombola-roster .is-kicked{color:#e58780;text-decoration:line-through}
#tombola-restore:focus-visible,.tombola-heading button:focus-visible{outline:2px solid #ffe2a1;outline-offset:2px}
