/* ══════════════════════════════════════════════════════════
   TAMBOLA NIGHT — festival night theme
   ══════════════════════════════════════════════════════════ */
:root{
  --night:#171034; --night2:#0E0A22; --night3:#080517;
  --violet:#2A1E5C; --plum:#3B2470;
  --gold:#F5B841; --gold-hi:#FFE9A8; --gold-lo:#A9761A;
  --coral:#FF4D5E; --coral-lo:#B3212F;
  --teal:#2DD4BF; --teal-lo:#0E8C7D;
  --cream:#FFF8EC; --cream2:#F3E8D2; --ink:#1A1425;
  --text:rgba(255,248,236,.92); --dim:rgba(255,248,236,.56); --faint:rgba(255,248,236,.3);
  --edge:rgba(245,184,65,.24);
  --sans:'Segoe UI',system-ui,-apple-system,'Helvetica Neue',Arial,sans-serif;
  --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{
  min-height:100vh;font-family:var(--sans);color:var(--text);overflow-x:hidden;
  background:
    radial-gradient(900px 500px at 15% -5%, rgba(245,184,65,.14), transparent 62%),
    radial-gradient(700px 460px at 88% 8%, rgba(255,77,94,.12), transparent 60%),
    radial-gradient(600px 400px at 50% 100%, rgba(45,212,191,.08), transparent 62%),
    linear-gradient(168deg,var(--night) 0%,var(--night2) 55%,var(--night3) 100%);
  background-attachment:fixed;
}
a{color:inherit;text-decoration:none}
button{font-family:var(--sans);cursor:pointer;border:0;background:none;color:inherit}
input,select,textarea{font-family:var(--sans)}
svg{display:block}
::selection{background:var(--gold);color:var(--ink)}

/* tiled wallpaper — tickets, numbers, brand name */
body::before{
  content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background-image:url("bg.svg");background-repeat:repeat;background-size:460px 460px;
  opacity:.16;
}
/* keep the centre column readable — fade the paper away behind the content */
body::after{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(ellipse 680px 130% at 50% 50%,
    rgba(14,10,34,.94) 0%, rgba(14,10,34,.86) 34%, rgba(14,10,34,.25) 72%, transparent 100%);
}
@media(min-width:900px){
  body::before{opacity:.24;background-size:420px 420px}
}
.wrap{max-width:620px;margin:0 auto;padding:0 15px;position:relative;z-index:1}
.page{min-height:100vh;padding:16px 0 70px}
.loadwrap{padding-top:70px;text-align:center}
.center{text-align:center}
.pad{padding:30px 20px}
.tiny{font-size:12px}
.red{color:#FFA3AC}

/* type */
.eyebrow{font:700 10px/1 var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--gold)}
.eyebrow.red{color:#FFA3AC}
.dim{color:var(--dim);font-size:13.5px;line-height:1.6}
h2.sect{font:800 20px/1.25 var(--sans);letter-spacing:-.01em}
.fineprint{font-size:11.5px;color:var(--faint);line-height:1.55;margin-top:11px}
.welcome{font-size:14px;color:var(--dim);text-align:center;margin-bottom:13px}
.welcome b{color:var(--gold-hi)}

/* cards */
.card{
  background:linear-gradient(165deg,rgba(255,255,255,.055),rgba(255,255,255,.02));
  border:1px solid var(--edge);border-radius:18px;padding:18px;margin-bottom:13px;
  box-shadow:0 8px 28px rgba(0,0,0,.28);
}
.card.danger{border-color:rgba(255,77,94,.38)}

/* buttons */
.btn{
  display:block;width:100%;padding:15px;border-radius:14px;
  font:800 14.5px/1 var(--sans);letter-spacing:.05em;text-transform:uppercase;text-align:center;
  background:linear-gradient(180deg,var(--gold-hi),var(--gold) 42%,var(--gold-lo));
  color:#2E1F04;box-shadow:0 4px 0 #7A5411,0 10px 22px rgba(0,0,0,.4);
  transition:transform .08s,box-shadow .08s,filter .15s;
}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 #7A5411,0 4px 12px rgba(0,0,0,.35)}
.btn:disabled{filter:grayscale(.75) brightness(.65);box-shadow:none;transform:none;cursor:not-allowed}
.btn.ghost{background:rgba(255,255,255,.05);border:1.5px solid var(--edge);color:var(--text);box-shadow:none}
.btn.ghost:active{transform:none;background:rgba(245,184,65,.12)}
.btn.teal{background:linear-gradient(180deg,#7FF0DF,var(--teal) 45%,var(--teal-lo));color:#04322C;box-shadow:0 4px 0 #06584E,0 10px 22px rgba(0,0,0,.36)}
.btn.coral{background:linear-gradient(180deg,#FF8B97,var(--coral) 48%,var(--coral-lo));color:#fff;box-shadow:0 4px 0 #7C1622,0 10px 22px rgba(0,0,0,.36)}
.btn.sm{padding:9px 13px;font-size:11.5px;width:auto;display:inline-block;border-radius:10px}
.btn.wide-sm{padding:12px;font-size:12px;border-radius:12px}
.rowbtn{display:flex;gap:9px}
.rowbtn>*{flex:1}

/* landing choice buttons */
.choice .btn.big{
  padding:20px 14px;font-size:17px;text-transform:none;letter-spacing:0;
  display:flex;flex-direction:column;align-items:center;gap:3px;
}
.choice .btn.big+.btn.big{margin-top:11px}
.choice .bi{font-size:26px;line-height:1}
.choice .btn.big small{
  font:600 11.5px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;opacity:.62;
}

/* how it works */
.howto{margin:4px 0 6px;padding:15px 17px;border-radius:16px;background:rgba(255,255,255,.03);border:1px solid rgba(245,184,65,.13)}
.howto-row{display:flex;gap:11px;align-items:flex-start;font-size:13px;color:var(--dim);line-height:1.5;padding:6px 0}
.howto-row span{
  flex:none;width:20px;height:20px;border-radius:50%;background:rgba(245,184,65,.16);
  color:var(--gold);font:800 11px/20px var(--mono);text-align:center;
}

/* inputs */
.field{margin-bottom:13px}
.field label{display:block;font:700 10px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-bottom:7px}
.field input,.field textarea{
  width:100%;padding:14px;border-radius:13px;border:1.5px solid var(--edge);
  background:rgba(0,0,0,.32);color:var(--cream);font:700 16px/1.4 var(--sans);outline:none;
  transition:border-color .15s,box-shadow .15s;
}
.field textarea{min-height:104px;resize:vertical;font-weight:400}
.field input:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(245,184,65,.18)}
.field input::placeholder,.field textarea::placeholder{color:rgba(255,248,236,.24);font-weight:400}
.codein{text-transform:uppercase;letter-spacing:.3em;text-align:center;font-size:22px!important}

/* branding */
.badge-wrap{text-align:center;margin:2px 0 15px}
.brand-badge{
  display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:999px;
  background:rgba(245,184,65,.1);border:1px solid var(--edge);
  font:700 10px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);
}
.brand-badge .bolt{font-size:12px}
.promo{
  margin-top:20px;padding:19px;border-radius:18px;
  background:linear-gradient(165deg,rgba(245,184,65,.1),rgba(255,77,94,.05));
  border:1px solid var(--edge);
}
.promo-head{display:flex;gap:13px;align-items:center;margin-bottom:11px}
.promo-ico{font-size:29px;line-height:1}
.promo-kicker{font:700 9.5px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-bottom:5px}
.promo-title{font:800 17px/1 var(--sans);color:var(--gold-hi);letter-spacing:-.01em}
.promo-text{font-size:13px;line-height:1.65;color:var(--dim);margin-bottom:12px}
.promo-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.promo-tags span{
  font:700 9.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.05);
  border:1px solid rgba(245,184,65,.16);color:var(--dim);
}
.promo-btn{
  display:block;text-align:center;padding:13px;border-radius:12px;
  background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:#2E1F04;
  font:800 13px/1 var(--sans);text-transform:uppercase;letter-spacing:.06em;
  box-shadow:0 3px 0 #7A5411;
}
.promo-btn:active{transform:translateY(2px);box-shadow:0 1px 0 #7A5411}
.fb-wrap{text-align:center;margin-top:16px}
.fb-link{font:700 11px/1 var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--dim);padding:9px}
.fb-link:active{color:var(--gold)}

/* modal */
.modal-back{position:fixed;inset:0;background:rgba(8,5,23,.9);z-index:90;display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(4px)}
.modal{background:linear-gradient(165deg,#231849,#160F33);border:1px solid var(--edge);border-radius:20px;padding:20px;max-width:420px;width:100%;box-shadow:0 30px 70px rgba(0,0,0,.7);max-height:90vh;overflow-y:auto}
.fb-msg{margin-top:10px;font-size:12.5px;color:var(--gold);text-align:center;min-height:16px}

/* hero */
.hero-art{width:100%;max-width:400px;margin:0 auto 2px;display:block}
.brand{text-align:center;margin:2px 0 8px}
.brand h1{
  font:900 clamp(38px,11.5vw,60px)/.94 var(--sans);text-transform:uppercase;letter-spacing:-.035em;
  background:linear-gradient(180deg,#FFF3D4,var(--gold) 55%,#D08A1C);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 3px 10px rgba(245,184,65,.28));
}
.brand .tag{font:700 10px/1.5 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-top:10px}

/* token */
.token-stage{text-align:center;padding:6px 0 2px;position:relative}
.token-glow{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:min(64vw,250px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(245,184,65,.28),transparent 66%);pointer-events:none}
.token{
  width:min(44vw,168px);aspect-ratio:1;margin:0 auto;border-radius:50%;
  display:grid;place-items:center;position:relative;
  background:radial-gradient(circle at 33% 27%,var(--gold-hi),var(--gold) 44%,var(--gold-lo) 94%);
  box-shadow:inset 0 0 0 5px rgba(0,0,0,.13),inset 0 6px 14px rgba(255,255,255,.45),
             inset 0 -10px 18px rgba(0,0,0,.3),0 12px 34px rgba(0,0,0,.5);
}
.token::after{content:"";position:absolute;inset:10%;border-radius:50%;border:2px dashed rgba(0,0,0,.16)}
.token .num{font:900 clamp(48px,17vw,84px)/1 var(--mono);color:#33220A;text-shadow:0 1px 0 rgba(255,255,255,.4)}
.token.drop{animation:tdrop .48s cubic-bezier(.18,1.5,.4,1)}
@keyframes tdrop{0%{transform:translateY(-58px) scale(.45) rotate(-22deg);opacity:0}100%{transform:none;opacity:1}}
.token.empty{background:rgba(255,255,255,.055);box-shadow:inset 0 0 0 2px var(--edge)}
.token.empty .num{font-size:12px;color:var(--dim);letter-spacing:.22em;font-weight:700}
.say{background:var(--cream);color:var(--ink);border-radius:12px;padding:11px 16px;margin:13px auto 0;max-width:430px;box-shadow:0 8px 22px rgba(0,0,0,.4);font:800 16px/1.3 var(--sans);animation:sayIn .3s ease both}
@keyframes sayIn{from{transform:translateY(-7px);opacity:0}to{opacity:1}}

/* board */
.board{display:grid;grid-template-columns:repeat(10,1fr);gap:3px}
.board b{font:700 10.5px/1 var(--mono);display:grid;place-items:center;aspect-ratio:1;border-radius:5px;background:rgba(255,255,255,.045);color:var(--faint)}
.board b.hit{background:linear-gradient(165deg,var(--gold),var(--gold-lo));color:#2E1F04;font-weight:800}
.board b.now{background:linear-gradient(165deg,#FF7A87,var(--coral));color:#fff;animation:nowPulse .9s ease 3}
@keyframes nowPulse{50%{box-shadow:0 0 0 5px rgba(255,77,94,.34)}}

/* ticket */
.ticket{background:linear-gradient(178deg,#FFFDF7,var(--cream) 60%,var(--cream2));color:var(--ink);border-radius:14px;padding:11px;position:relative;box-shadow:0 14px 34px rgba(0,0,0,.5);border:1px solid #E3D3B4;margin-top:12px}
.ticket::before{content:"";position:absolute;left:11px;right:11px;top:0;height:4px;border-radius:0 0 6px 6px;background:repeating-linear-gradient(90deg,var(--coral) 0 12px,var(--gold) 12px 24px,var(--teal) 24px 36px);opacity:.85}
.ticket.dead{opacity:.5;pointer-events:none;filter:grayscale(.35)}
.ticket.dead::after{content:"CANCELLED";position:absolute;inset:0;display:grid;place-items:center;font:900 clamp(22px,8vw,40px)/1 var(--sans);letter-spacing:.1em;color:var(--coral);border:4px solid var(--coral);border-radius:14px;background:rgba(255,77,94,.09);transform:rotate(-8deg);z-index:3}
.thead{display:flex;justify-content:space-between;align-items:baseline;margin:6px 5px 9px;gap:8px}
.thead .who{font:800 13px/1 var(--sans);text-transform:uppercase;letter-spacing:.07em}
.thead .tid{opacity:.42;font-weight:600}
.thead .meta{font:700 9.5px/1 var(--mono);color:#8E7C5C;letter-spacing:.13em;white-space:nowrap}
.tgrid{display:grid;grid-template-columns:repeat(9,1fr);gap:3px}
.cell{aspect-ratio:1;display:grid;place-items:center;border-radius:6px;position:relative;font:800 clamp(12px,4.1vw,19px)/1 var(--mono);background:#fff;border:1px solid #E0D0B0;color:var(--ink);user-select:none}
.cell.gap{background:repeating-linear-gradient(45deg,#EEE3CC 0 3px,#F8F1E0 3px 7px);border-color:#E5D8BE}
.cell.live{cursor:pointer;transition:background .12s,transform .08s}
.cell.live:active{transform:scale(.93)}
.cell.cut{color:rgba(26,20,37,.32);background:#FDF6E9}
.cell.cut::before,.cell.cut::after{content:"";position:absolute;left:15%;right:15%;top:50%;height:2.6px;border-radius:2px;background:var(--coral)}
.cell.cut::before{transform:rotate(41deg)}
.cell.cut::after{transform:rotate(-41deg)}
.hint{font:600 11.5px/1.6 var(--sans);color:var(--dim);text-align:center;margin-top:9px}

/* prizes */
.pgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.pz{padding:11px 9px;border-radius:12px;text-align:center;border:1px solid var(--edge);background:rgba(255,255,255,.035)}
.pz .n{font:800 12px/1.25 var(--sans);text-transform:uppercase;letter-spacing:.02em}
.pz .w{font:700 10.5px/1 var(--mono);color:var(--dim);margin-top:5px;letter-spacing:.05em}
.pz .rs{color:var(--gold);font-weight:800}
.pz.done{background:linear-gradient(165deg,rgba(245,184,65,.2),rgba(245,184,65,.07));border-color:var(--gold)}
.pz.done .w{color:var(--gold-hi)}
button.btn-pz{cursor:pointer;transition:transform .08s}
button.btn-pz:active:not(:disabled){transform:scale(.96)}
button.btn-pz:disabled{opacity:.44;cursor:not-allowed}
button.btn-pz.blocked{border-color:var(--coral)}
button.btn-pz.blocked .w{color:#FFA3AC}

/* prize editor */
.pzrow{padding-bottom:11px;margin-bottom:11px;border-bottom:1px solid var(--edge)}
.pzrow:last-child{border-bottom:0;margin-bottom:4px}
.pzline{display:flex;gap:7px;align-items:center}
.pzline+.pzline{margin-top:7px}
.pznum{font:700 11px/1 var(--mono);color:var(--dim);min-width:16px}
.pzname{flex:1;padding:10px 12px;border-radius:11px;border:1px solid var(--edge);background:rgba(0,0,0,.3);color:var(--cream);font:700 14px/1 var(--sans);outline:none;min-width:0}
.pzname:focus{border-color:var(--gold)}
.pzdel{width:34px;height:34px;flex:none;border-radius:10px;background:rgba(255,77,94,.14);border:1px solid rgba(255,77,94,.4);color:#FFA3AC;font-size:18px;line-height:1}
.pztype{flex:1;padding:10px;border-radius:11px;border:1px solid var(--edge);background:#1A1240;color:var(--cream);font:13px/1 var(--sans);outline:none;min-width:0}
.pzpaywrap{display:flex;align-items:center;gap:5px;flex:none}
.pzpaywrap span{font:700 12px/1 var(--mono);color:var(--gold)}
.pzpay{width:74px;padding:10px 8px;border-radius:11px;border:1px solid var(--edge);background:rgba(0,0,0,.3);color:var(--cream);font:700 14px/1 var(--sans);outline:none;text-align:right}
.explain{margin-top:9px;font-size:12.5px;line-height:1.5}
.explain div{padding:5px 0;border-bottom:1px solid rgba(245,184,65,.1)}
.explain div:last-child{border-bottom:0}
.explain b{color:var(--gold-hi)}

/* players / lists */
.plist{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.prow{display:flex;align-items:center;gap:8px;padding:10px 13px;border-radius:12px;background:rgba(255,255,255,.045)}
.prow .nm{flex:1;font:700 14.5px/1.2 var(--sans);min-width:0;overflow:hidden;text-overflow:ellipsis}
.prow .tg{font:700 9.5px/1 var(--mono);letter-spacing:.12em;color:var(--dim);text-transform:uppercase;white-space:nowrap}
.prow .tg.red{color:var(--coral)}
.livedot{width:8px;height:8px;border-radius:50%;background:var(--gold);flex:none;animation:blip 1.6s infinite}
@keyframes blip{0%,100%{opacity:1}50%{opacity:.35}}
.hrow{padding:12px 13px;border-radius:12px;background:rgba(255,255,255,.045)}
.hhead{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px;font-size:14px}
.hwin{margin-top:7px;font-size:12.5px;line-height:1.7}
.hwin span{color:var(--gold)}

/* code box */
.codebox{text-align:center;border-radius:18px;padding:17px;margin-bottom:13px;background:linear-gradient(165deg,rgba(245,184,65,.14),rgba(255,77,94,.07));border:1.5px dashed var(--gold)}
.codebox .cd{font:900 clamp(38px,13vw,60px)/1 var(--mono);letter-spacing:.2em;background:linear-gradient(180deg,#FFF3D4,var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.codebox .sub{font:700 9.5px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:7px 0 11px}

/* winner */
.winner{border-radius:16px;padding:15px;margin-bottom:13px;background:linear-gradient(120deg,var(--coral),#8E1524);border:1px solid rgba(255,255,255,.2);box-shadow:0 10px 28px rgba(0,0,0,.45);animation:winIn .4s cubic-bezier(.2,1.4,.4,1)}
@keyframes winIn{from{transform:scale(.94);opacity:0}to{transform:none;opacity:1}}
.winner .t{font:700 9.5px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:#FFD5DA}
.winner .n{font:900 clamp(19px,6vw,28px)/1.15 var(--sans);color:#fff;margin-top:7px;text-transform:uppercase}
.winner .wpay{font-size:.62em;opacity:.85}
.log{font-size:12.5px;color:var(--dim);line-height:1.85;margin-top:8px}
.log .y{color:var(--gold-hi);font-weight:800}
.log .n{color:#FFA3AC;font-weight:800}

/* misc */
.spin{width:38px;height:38px;border-radius:50%;border:3px solid var(--edge);border-top-color:var(--gold);margin:18px auto;animation:sp 1s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.big-emoji{font-size:52px;display:block;text-align:center;animation:float 2.2s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.exitbar{margin-top:14px;text-align:center}
.exitlink{font:700 11px/1 var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--faint);padding:10px}
.exitlink:active{color:var(--coral)}

#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(10px);background:linear-gradient(165deg,#2A1E5C,#160F33);color:var(--cream);padding:13px 19px;border-radius:999px;font:700 13px/1.4 var(--sans);box-shadow:0 10px 30px rgba(0,0,0,.6);border:1px solid var(--edge);opacity:0;pointer-events:none;transition:opacity .22s,transform .22s;z-index:95;max-width:88vw;text-align:center}
#toast.show{opacity:1;transform:translateX(-50%)}
#confetti{position:fixed;inset:0;pointer-events:none;z-index:80}

@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}


/* ── desktop framing ────────────────────────────── */
@media(min-width:900px){
  .page{padding:26px 0 80px}
  .wrap{
    max-width:640px;
    padding:22px 26px 30px;
    border-radius:26px;
    background:linear-gradient(178deg,rgba(23,16,52,.72),rgba(14,10,34,.78));
    border:1px solid rgba(245,184,65,.16);
    box-shadow:0 40px 90px rgba(0,0,0,.55);
    backdrop-filter:blur(3px);
  }
  .brand h1{font-size:56px}
}
@media(min-width:1250px){
  /* brand strip down both empty sides */
  .side-mark{
    position:fixed;top:0;bottom:0;width:210px;z-index:0;pointer-events:none;
    display:flex;align-items:center;justify-content:center;
  }
  .side-mark.left{left:0}
  .side-mark.right{right:0}
  .side-mark span{
    writing-mode:vertical-rl;font:800 13px/1 var(--sans);
    letter-spacing:.42em;text-transform:uppercase;color:rgba(245,184,65,.3);
    text-shadow:0 2px 20px rgba(0,0,0,.6);
  }
  .side-mark.left span{transform:rotate(180deg)}
}
@media(max-width:1249px){ .side-mark{display:none} }
