@font-face{font-family:MM;src:url('fonts/Vazirmatn-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:MM;src:url('fonts/Vazirmatn-Bold.woff2') format('woff2');font-weight:700 1000;font-style:normal;font-display:swap}
:root{color-scheme:dark;background:#080c13;color:#f4f8ff;font-family:MM,Tahoma,Arial,sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{min-height:100vh;min-height:100dvh}
main{width:100%;height:100%;padding:max(3vh,env(safe-area-inset-top)) 5vw max(2.5vh,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
#brand{display:flex;flex-direction:column;align-items:center;gap:12px;flex-shrink:0;font-size:clamp(17px,2vw,32px);line-height:1.4;letter-spacing:.13em;color:#e5c77e;direction:ltr}
#brandLogo{display:block;width:clamp(120px,18vw,280px);height:clamp(120px,18vw,280px);max-width:24vh;max-height:24vh;object-fit:contain;border:0;border-radius:0;box-shadow:none}
#brand span{display:block;font-size:clamp(10px,1vw,16px);letter-spacing:.22em;margin-top:5px;color:#b9a675}
section{width:100%;margin:auto 0}section[hidden]{display:none}
h1{margin:.35em 0;font-size:clamp(20px,min(3vw,4vh),42px);font-weight:400}
#code{font-size:clamp(48px,min(13vw,21vh),220px);line-height:1.2;font-variant-numeric:tabular-nums;letter-spacing:.1em;color:#e5c77e}
#digits{font-family:inherit;font-size:min(27vw,40vh);font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap;color:#a5f0ee}
#digits.low{color:#ffad55}#digits.done{color:#ff6975}
p{margin:.4em 0;font-size:clamp(14px,min(2.2vw,3vh),30px);line-height:1.5}.small,#network{font-size:clamp(13px,min(1.6vw,2.2vh),22px);color:#bcc7d6}
#state{font-size:clamp(17px,2vw,30px);margin:.6em 0 0;min-height:1.5em}#network{min-height:1.8em;margin:0 0 8px}
button{border:1px solid #586273;border-radius:12px;background:#131d2c;color:#e3eaf5;font:inherit;font-size:clamp(15px,1.25vw,22px);padding:10px 22px;min-height:44px;cursor:pointer}button:focus-visible{outline:3px solid #e5c77e}
:fullscreen #fullscreen{display:none}
@media(max-width:600px) and (orientation:portrait){main{padding-inline:6vw}#brand{gap:14px;font-size:19px}#brand span{font-size:11px}#fullscreen{min-width:150px}#pairing .small{max-width:28em;margin:.5em auto}}
@media(max-height:480px){main{padding:2vh 4vw}#brand{gap:4px;font-size:16px}#brand span{font-size:10px;margin-top:2px}#brandLogo{width:18vh;height:18vh;max-height:none;max-width:none}button{min-height:36px;padding:5px 16px}#code{font-size:min(13vw,20vh)}#network{margin:0}#state{margin:.2em 0 0;font-size:16px}}
@media(max-height:360px){#brand{flex-direction:row;gap:12px;font-size:14px}#brandLogo{width:14vh;height:14vh}#code{font-size:18vh}#network{min-height:1.2em}}

.victory{position:relative;isolation:isolate;--win:#eac373;padding:3vh 2vw;color:var(--win)}.victory.mafia{--win:#ff7f83}.victory.citizen{--win:#75e1d4}.victory>*{position:relative;z-index:1}.victory #winnerEnglish{font-size:clamp(13px,2vw,28px);letter-spacing:.26em;color:var(--win)}.victory #winnerTitle{font-size:clamp(32px,min(7vw,10vh),120px);font-weight:800;color:#fff7ea;line-height:1.5;margin:2vh 0;text-shadow:0 0 3vw color-mix(in srgb,var(--win),transparent 60%)}.victoryHalo{position:absolute;inset:-8vh 10%;z-index:0;border-radius:50%;background:radial-gradient(ellipse,color-mix(in srgb,var(--win),transparent 83%),transparent 65%);animation:victoryGlow 6s ease-in-out infinite;pointer-events:none}.victoryStars{font-size:clamp(25px,4vw,70px);letter-spacing:.8em;padding-inline-start:.8em;animation:victoryStars 8s ease-in-out infinite}.victoryLine{height:2px;width:60%;margin:3vh auto;background:linear-gradient(90deg,transparent,var(--win),transparent);animation:victoryGlow 6s ease-in-out infinite}.victorySignature{font-size:clamp(12px,1.5vw,22px);letter-spacing:.4em;opacity:.7}@keyframes victoryGlow{0%,100%{opacity:.45;transform:scale(.94)}50%{opacity:1;transform:scale(1.04)}}@keyframes victoryStars{0%,100%{opacity:.5;transform:translateY(0)}50%{opacity:1;transform:translateY(-1vh)}}@media(prefers-reduced-motion:reduce){.victoryHalo,.victoryStars,.victoryLine{animation:none}}@media(max-height:420px){.victory{padding:0}.victory #winnerTitle{margin:1vh 0}.victoryLine{margin:1vh auto}.victoryStars{font-size:4vh}}

@media(max-height:640px) and (orientation:portrait){#brandLogo{width:104px;height:104px}#brand{gap:8px;font-size:17px}.victory{padding:1vh 1vw}.victory #winnerTitle{font-size:clamp(26px,8vw,32px)}.victoryStars{font-size:23px}.victoryLine{margin:2vh auto}}

/* Corner fireworks stay behind the public logo and winner text. */
main{isolation:isolate}main>#brand,main>section,main>#network,main>#fullscreen{position:relative;z-index:1}
#celebration{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}#celebration[hidden]{display:none}
.victoryFlash{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 45%,#fff7dc99,transparent 75%)}
.victoryEnter .victoryFlash{animation:victoryArrivalLight .9s ease-out both}.victoryEnter #winnerTitle{animation:victoryImpact .85s cubic-bezier(.16,1,.3,1) both}
.victory.mafia .victoryHalo{background:radial-gradient(ellipse,#ef47584a,#d7983120 45%,transparent 70%)}.victory.citizen .victoryHalo{background:radial-gradient(ellipse,#4cebdc44,#5799ff20 45%,transparent 70%)}
.victoryHalo,.victoryLine{animation-duration:2.6s}.victoryStars{animation-duration:2.4s}
@keyframes victoryArrivalLight{0%{opacity:0}12%{opacity:.68}100%{opacity:0}}
@keyframes victoryImpact{0%{opacity:0;transform:scale(.84) translateY(18px)}48%{opacity:1;transform:scale(1.045) translateY(0)}100%{opacity:1;transform:scale(1) translateY(0)}}
@media(prefers-reduced-motion:reduce){.victoryEnter .victoryFlash,.victoryEnter #winnerTitle,.victoryHalo,.victoryLine,.victoryStars{animation:none}.victoryFlash{display:none}}
