/* Quick Cups (src/screens/cups.mjs): the Events hub, ready check, bracket, the cup chip, the champion's prize,
   and the Champion's signature on a promo card face (cardFace variant 'promo'). Built from mock/tournaments.html.
   --m1..--md are the cup's ink (inkVars in src/arena/view.mjs): highlight, body, shade, outline. */

/* ---------------------------------------------------------------- the signature on a promo card */
/* The Champion's name in their own hand with a pen flourish, small, across the lower-right corner of the art. */
.cf-panel .cf-sign{position:absolute;right:3.5cqw;bottom:calc(100% - 10.5cqw);z-index:2;display:flex;flex-direction:column;align-items:flex-end;pointer-events:none;
  rotate:var(--rot);transform-origin:100% 100%;
  filter:drop-shadow(0 0 .22cqw var(--md)) drop-shadow(0 0 .22cqw var(--md)) drop-shadow(0 .6cqw 1.4cqw rgba(0,0,0,.9))}
.cf-sign b{display:block;padding:0 1cqw 0 2cqw;white-space:nowrap;font-family:var(--font);font-weight:var(--weight,400);font-size:var(--size);line-height:1.15;letter-spacing:.01em;
  color:transparent;background:linear-gradient(180deg,var(--m1),var(--m2) 55%,var(--m3));-webkit-background-clip:text;background-clip:text}
.cf-sign svg{display:block;width:100%;height:3.6cqw;margin:-1.6cqw 0 0;overflow:visible}
.cf-sign path{fill:none;stroke-linecap:round;stroke-linejoin:round}

/* ---------------------------------------------------------------- shared bits */
.cup-panel{position:relative;border:2px solid transparent;border-radius:6px;
  background:linear-gradient(180deg,rgba(18,20,22,.93),rgba(6,7,8,.95)) padding-box,var(--frame) border-box;box-shadow:0 0 0 2px rgba(0,0,0,.6),0 14px 34px rgba(0,0,0,.6)}
.cup-panel::before{content:"";position:absolute;inset:5px;border:1px solid rgba(215,166,83,.3);border-radius:2px;pointer-events:none;z-index:3}
.cup-h{margin:0 0 12px;font:700 13px/1 var(--cond);letter-spacing:.24em;text-transform:uppercase;color:var(--gold1);text-shadow:0 1px 4px #000}
.cup-av{position:relative;display:grid;place-items:center;flex:none;width:32px;aspect-ratio:1;border-radius:50%;border:2px solid transparent;
  background:radial-gradient(circle at 40% 35%,#3a2c1a,#120d08) padding-box,var(--frame) border-box;box-shadow:0 2px 6px rgba(0,0,0,.6);
  font:700 15px/1 var(--cond);color:#f3e3b8;text-shadow:0 1px 2px #000}
.cup-av.is-big{width:clamp(58px,4.6vw,78px);border-width:3px;font-size:clamp(24px,2vw,32px)}
.cup-card{position:relative;flex:none;width:clamp(96px,8vw,132px);aspect-ratio:5/7;cursor:zoom-in}
.cup-card .cf{width:100%;height:100%}
.cup-time{font-variant-numeric:tabular-nums;color:#fff}
.cup-live,.cup-done{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;font:700 12px/1 var(--cond);letter-spacing:.18em;text-transform:uppercase}
.cup-live{background:rgba(255,90,74,.16);border:1px solid rgba(255,110,90,.5);color:#ffc9bd}
.cup-live::before{content:"";width:8px;height:8px;border-radius:50%;background:#ff5a4a;box-shadow:0 0 10px #ff5a4a;animation:cupBlink 1.4s ease-in-out infinite}
.cup-done{background:rgba(215,166,83,.14);border:1px solid rgba(215,166,83,.5);color:var(--gold1)}
@keyframes cupBlink{50%{opacity:.35}}
.cup-link{padding:4px 0;border:0;background:none;cursor:pointer;font:700 12px/1 var(--cond);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.cup-link:hover{color:#fff}
.cup-note{margin:0;font:600 14px/1.35 var(--cond);letter-spacing:.06em;color:#e4d6b6;text-shadow:0 1px 3px #000}
.cup-note.is-in{color:#9ff0dc}
.cup-note b{color:#fff}
.cup-dim{color:var(--muted)!important}

/* ---------------------------------------------------------------- hub */
.cup-hub{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(14px,2vw,28px)}
.cup-weekend::before{content:"";position:absolute;inset:0;z-index:0;background:rgba(0,0,0,.25);pointer-events:none}
.cup-weekend>div{position:relative;z-index:1}
/* CH-03's face sits ~18% down the painting: pin that spot 18% down the card, so his head stays in at any card size. */
.cup-weekend>img{object-position:50% 18%}
.cup-tile{isolation:isolate;overflow:hidden;min-height:0;display:flex;flex-direction:column;gap:clamp(12px,2vh,20px);padding:clamp(18px,2.4vh,28px) clamp(18px,1.8vw,30px)}
.cup-tile-art{position:absolute;right:0;top:0;width:70%;height:100%;object-fit:cover;object-position:50% 18%;z-index:-1;opacity:.36;
  -webkit-mask:linear-gradient(90deg,transparent,#000 70%);mask:linear-gradient(90deg,transparent,#000 70%)}
.cup-tile-head{display:flex;align-items:center;gap:14px}
.cup-ico{flex:none;width:52px;height:52px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 40% 35%,#2a2118,#0c0907);border:2px solid rgba(215,166,83,.55)}
.cup-ico svg{width:32px;height:32px}
.cup-t{flex:1;min-width:0}
.cup-t h2{margin:0;font:700 clamp(22px,1.8vw,30px)/1 var(--cond);letter-spacing:.1em;text-transform:uppercase;color:#fff;text-shadow:0 2px 5px #000}
.cup-t small{display:block;margin-top:6px;font:600 13px/1.2 var(--cond);letter-spacing:.14em;text-transform:uppercase;color:#d8cdb2;text-shadow:0 1px 3px #000}
.cup-fee{align-self:flex-start;padding:6px 12px;border-radius:999px;background:rgba(0,0,0,.6);border:1px solid rgba(215,166,83,.35);font:700 15px/1 var(--cond);font-style:normal;white-space:nowrap}
.cup-fee.is-free{color:#9ff0dc;border-color:rgba(86,224,200,.45)}
.cup-prize{display:flex;align-items:center;gap:clamp(12px,1.4vw,22px);min-width:0}
.cup-tile .cup-prize{flex:1;min-height:0}
.cup-tile .cup-card{width:clamp(140px,11vw,210px)}
.cup-prize-text{min-width:0}
.cup-prize-text>small{font:700 12px/1 var(--cond);letter-spacing:.24em;text-transform:uppercase;color:var(--gold1)}
.cup-prize-text>b{display:block;margin:6px 0 8px;font:700 clamp(20px,1.6vw,28px)/1.05 var(--cond);letter-spacing:.06em;text-transform:uppercase;
  color:transparent;background:linear-gradient(180deg,var(--m1,#fff),var(--m2,#cdd6de) 55%,var(--m3,#6c7884));-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 2px 4px rgba(0,0,0,.9))}
.cup-prize-text>p{margin:0 0 6px;max-width:44ch;font:500 14px/1.4 "Segoe UI",system-ui,sans-serif;color:#e4d9c2;text-shadow:0 1px 3px #000}
.cup-fill{display:flex;flex-direction:column;gap:10px}
.cup-fill>span:last-child{font:600 13px/1.2 var(--cond);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.cup-fill b{font-size:17px;color:#fff;letter-spacing:.02em}
.cup-seats{display:flex;flex-wrap:wrap;gap:7px}
.cup-seats i{width:12px;height:12px;rotate:45deg;border-radius:2px;border:1.5px solid rgba(215,166,83,.45);background:rgba(0,0,0,.45)}
.cup-seats i.is-in{border-color:#fbe7b0;background:linear-gradient(135deg,#fff2c6,#d7a653 50%,#8a5f22);box-shadow:0 0 8px rgba(255,200,110,.55)}
.cup-seats i.is-me{border-color:#c9fff4;background:linear-gradient(135deg,#c9fff4,#2fb391 55%,#0d4d3c);box-shadow:0 0 10px rgba(86,224,200,.8)}
.cup-go{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.cup-go .cup-join{min-width:min(260px,100%);margin-left:auto}
.cup-tile.is-joined{box-shadow:0 0 0 2px rgba(0,0,0,.6),0 0 26px rgba(86,224,200,.28),0 14px 34px rgba(0,0,0,.6)}

/* ---------------------------------------------------------------- overlays: ready check, champion */
.cup-over{position:fixed;inset:0;z-index:9000;display:grid;place-items:center;padding:24px;overflow:auto;background:radial-gradient(60% 60% at 50% 45%,rgba(64,40,12,.9),rgba(0,0,0,.94));animation:cupFade .35s ease}
@keyframes cupFade{from{opacity:0}}
.cup-fire{display:flex;flex-direction:column;align-items:center;gap:clamp(12px,2.2vh,24px);max-width:900px;text-align:center;animation:cupRise .6s cubic-bezier(.2,.8,.2,1)}
@keyframes cupRise{from{opacity:0;translate:0 24px;scale:.96}}
.cup-fire>small,.cup-win>small{font:700 14px/1 var(--cond);letter-spacing:.34em;text-transform:uppercase;color:var(--gold1)}
.cup-fire h2,.cup-win h2{margin:0;font:700 clamp(40px,5.2vw,86px)/.95 var(--cond);letter-spacing:.08em;text-transform:uppercase;
  background:linear-gradient(180deg,#fff8e4,#f0c77a 55%,#b07a32);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 16px rgba(0,0,0,.9))}
.cup-clock{position:relative;width:clamp(100px,14vh,140px);aspect-ratio:1}
.cup-clock svg{width:100%;height:100%;rotate:-90deg}
.cup-clock circle{fill:none;stroke-width:6}
.cup-clock .bg{stroke:rgba(255,255,255,.08)}
.cup-clock .fg{stroke:#e6b65c;stroke-linecap:round;transition:stroke-dashoffset 1s linear;filter:drop-shadow(0 0 4px rgba(255,200,110,.7))}
.cup-clock b{position:absolute;inset:0;display:grid;place-items:center;font:700 clamp(38px,5.6vh,56px)/1 var(--cond);color:#fff;font-variant-numeric:tabular-nums}
.cup-fire-seats{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(10px,1.2vw,16px)}
.cup-fire-seat{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;width:clamp(58px,4.6vw,76px)}
.cup-fire-seat .cup-av{width:100%;border-width:3px;font-size:clamp(20px,1.8vw,28px);filter:saturate(.4) brightness(.6);transition:filter .3s}
.cup-fire-seat b{max-width:100%;overflow:hidden;text-overflow:ellipsis;font:700 11px/1 var(--cond);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.cup-fire-seat.is-ready .cup-av{filter:none;box-shadow:0 0 0 2px rgba(0,0,0,.6),0 0 18px rgba(86,224,200,.7)}
.cup-fire-seat.is-ready b,.cup-fire-seat.is-me b{color:#fff}
.cup-fire-seat.is-ready::after{content:"✓";position:absolute;right:-4px;top:-4px;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#c9fff4,#2fb391 55%,#0d4d3c);border:2px solid #c9fff4;font:700 13px/1 system-ui;color:#04211b;animation:cupPop .4s cubic-bezier(.2,1.6,.4,1)}
@keyframes cupPop{from{scale:.2;opacity:0}}
.cup-fire p{margin:0;max-width:520px;font:500 14px/1.45 "Segoe UI",system-ui;color:#d8cdb2}
.cup-fire .fbtn{min-width:300px}

.cup-win{position:relative;display:flex;flex-direction:column;align-items:center;gap:clamp(12px,2.2vh,24px);text-align:center}
.cup-win-rays{position:fixed;left:50%;top:44%;width:180vmax;aspect-ratio:1;translate:-50% -50%;z-index:-1;pointer-events:none;
  background:repeating-conic-gradient(from 0deg,rgba(255,214,140,.16) 0 6deg,transparent 6deg 18deg);-webkit-mask:radial-gradient(circle,#000 0,transparent 40%);mask:radial-gradient(circle,#000 0,transparent 40%);animation:cupSpin 60s linear infinite}
@keyframes cupSpin{to{rotate:360deg}}
.cup-card--big{width:clamp(220px,34vh,330px);cursor:default;animation:cupCardIn 1.1s cubic-bezier(.2,.9,.2,1)}
@keyframes cupCardIn{0%{opacity:0;transform:perspective(900px) rotateY(-100deg) scale(.7)}60%{opacity:1}100%{transform:none}}
.cup-win p{margin:-6px 0 0;font:600 14px/1.4 var(--cond);letter-spacing:.14em;text-transform:uppercase;color:#e4d6b6}
.cup-win-btns{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}
.no-motion .cup-win-rays,.no-motion .cup-live::before{animation:none}
.no-motion .cup-card--big,.no-motion .cup-fire,.no-motion .cup-over{animation:none}
/* Redrawn while it's up (someone readied): no second entrance. */
.cup-over.is-still,.cup-over.is-still .cup-fire{animation:none}

/* ---------------------------------------------------------------- Play, picking the deck to join with (.play--cup) */
/* No Mode column: the cup's name sits over the decks, which take the whole width. */
.play--cup .play-body{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:clamp(18px,3vh,34px)}
.cup-pick-head{display:flex;align-items:center;gap:14px clamp(18px,2vw,32px);flex-wrap:wrap}
.cup-pick-t{display:flex;align-items:center;gap:14px}
.cup-pick-head p{flex-basis:100%;margin:0;font:500 15px/1.35 "Segoe UI",system-ui,sans-serif;color:#d8cdb2;text-shadow:0 1px 3px #000}

/* ---------------------------------------------------------------- bracket */
.cup-back{display:flex;align-items:center;gap:8px;padding:9px 16px 9px 12px;border-radius:999px;border:1px solid rgba(215,166,83,.4);background:rgba(8,9,10,.65);cursor:pointer;
  font:700 13px/1 var(--cond);letter-spacing:.14em;text-transform:uppercase;color:#e9dfc8}
.cup-back:hover{border-color:var(--gold1);color:#fff}
.cup-sub{font:600 13px/1 var(--cond);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.cup-bk-wrap{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,22vw,370px);gap:clamp(18px,2.2vw,36px)}
.cup-bk-scroll{min-height:0;min-width:0;overflow:auto;scrollbar-width:thin}
.cup-bk{position:relative;min-height:100%;min-width:calc(var(--rounds) * 170px);display:grid;grid-template-columns:repeat(var(--rounds),minmax(0,1fr));gap:clamp(20px,2.4vw,46px)}
.cup-rd{display:flex;flex-direction:column;min-width:0;min-height:0}
.cup-rd-list{flex:1;display:flex;flex-direction:column;justify-content:space-around;gap:8px}
.cup-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.cup-lines path{fill:none;stroke:rgba(215,166,83,.32);stroke-width:2}
.cup-lines path.is-me{stroke:#fbe7b0;stroke-width:3;filter:drop-shadow(0 0 5px rgba(255,200,110,.8))}
.cup-m{position:relative;z-index:1;border-radius:6px;background:linear-gradient(180deg,#171b1e,#0a0c0e);border:1px solid rgba(215,166,83,.32);box-shadow:0 8px 20px rgba(0,0,0,.5);overflow:hidden}
.cup-m-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 10px;background:rgba(255,255,255,.035);border-bottom:1px solid rgba(255,255,255,.05);
  font:700 10px/1 var(--cond);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.cup-m-bar span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cup-p{display:flex;align-items:center;gap:9px;height:clamp(34px,4.2vh,44px);padding:0 12px 0 8px}
.cup-p+.cup-p{border-top:1px solid rgba(255,255,255,.05)}
.cup-p .cup-av{width:clamp(24px,2.8vh,30px);font-size:13px}
.cup-p b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 clamp(13px,1vw,15px)/1 var(--cond);letter-spacing:.06em;text-transform:uppercase;color:#d9cfb8}
.cup-p em{min-width:16px;text-align:right;font:700 17px/1 var(--cond);font-style:normal;color:#fff}
.cup-p.is-win b{color:#fff}
.cup-p.is-lose{opacity:.42}
.cup-p.is-me{background:linear-gradient(90deg,rgba(215,166,83,.3),rgba(215,166,83,.04))}
.cup-p.is-me b{color:#fbe7b0}
.cup-p.is-tbd b,.cup-p.is-bye b{color:var(--muted);font-weight:600;letter-spacing:.14em}
.cup-p.is-tbd .cup-av,.cup-p.is-bye .cup-av{background:radial-gradient(circle,#0d0f11,#0d0f11) padding-box,linear-gradient(rgba(215,166,83,.3),rgba(215,166,83,.3)) border-box}
.cup-m.is-bye{opacity:.6}
.cup-m.is-live{border-color:rgba(255,110,90,.7);box-shadow:0 0 0 1px rgba(255,90,74,.3),0 0 22px rgba(255,90,74,.25),0 8px 20px rgba(0,0,0,.5)}
.cup-m.is-live .cup-m-bar{color:#ffc9bd;background:rgba(255,90,74,.12)}
.cup-m.is-live .cup-m-bar span:last-child::before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:#ff5a4a;box-shadow:0 0 8px #ff5a4a;animation:cupBlink 1.4s infinite}
.cup-m.is-ready .cup-m-bar{color:#fbe7b0}
.cup-m.is-next{border-color:var(--gold1);box-shadow:0 0 0 1px rgba(251,231,176,.35),0 0 26px rgba(255,200,110,.35),0 8px 20px rgba(0,0,0,.5)}
.cup-m.is-next .cup-m-bar{color:#1a1106;background:linear-gradient(180deg,#e2b25a,#9a6a25)}
.cup-champ{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:14px 10px}
.cup-champ .cup-card{width:min(130px,100%)}
.cup-champ>b{font:700 15px/1.1 var(--cond);letter-spacing:.12em;text-transform:uppercase;color:#fff}
.cup-champ>small{font:600 12px/1.3 var(--cond);letter-spacing:.08em;color:var(--gold1)}
.cup-side{display:flex;flex-direction:column;gap:16px;min-height:0;overflow:auto;scrollbar-width:thin}
.cup-next{padding:20px 22px;display:flex;flex-direction:column;gap:14px}
.cup-next>small{font:700 12px/1 var(--cond);letter-spacing:.24em;text-transform:uppercase;color:var(--gold1)}
.cup-next p{margin:0;font:500 14px/1.45 "Segoe UI",system-ui;color:#d8cdb2}
.cup-next p.cup-big{font:700 34px/1 var(--cond);letter-spacing:.1em;text-transform:uppercase;color:transparent;background:linear-gradient(180deg,#fff8e4,#f0c77a 55%,#b07a32);-webkit-background-clip:text;background-clip:text}
.cup-next .fbtn,.cup-next .gbtn{width:100%}
.cup-vs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;text-align:center}
.cup-vs>div{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0}
.cup-vs b{max-width:100%;overflow:hidden;text-overflow:ellipsis;font:700 15px/1 var(--cond);letter-spacing:.08em;text-transform:uppercase;color:#fff}
.cup-vs>i{font:700 26px/1 var(--cond);font-style:italic;color:var(--gold1);text-shadow:0 0 14px rgba(255,200,110,.6)}
.cup-prize-side{padding:18px 20px}
.cup-prize-side .cup-prize-text>b{font-size:20px;margin:0 0 6px}
.cup-prize-side .cup-card{width:clamp(84px,6vw,110px)}

/* ---------------------------------------------------------------- the chip on other screens */
.cup-chip{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + clamp(118px,13.6vh,140px));translate:-50% 0;z-index:60;display:flex;align-items:center;gap:12px;padding:8px 10px 8px 12px;border-radius:999px;
  border:2px solid transparent;background:linear-gradient(180deg,#123a33,#07181a) padding-box,var(--frame) border-box;box-shadow:0 0 0 2px rgba(0,0,0,.6),0 0 26px rgba(86,224,200,.3),0 10px 24px rgba(0,0,0,.6);animation:cupFade .3s ease}
.cup-chip>svg{flex:none;width:26px;height:26px}
.cup-chip>span{display:flex;flex-direction:column;gap:3px;min-width:0}
.cup-chip>span b{font:700 14px/1 var(--cond);letter-spacing:.12em;text-transform:uppercase;color:#fff;white-space:nowrap}
.cup-chip>span em{font:700 13px/1 var(--cond);font-style:normal;letter-spacing:.06em;color:#9ff0dc;white-space:nowrap}
.cup-chip>span em b{font-size:13px;letter-spacing:.06em;color:#9ff0dc}
.cup-chip button{padding:7px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(0,0,0,.35);color:#e9dfc8;cursor:pointer;font:700 11px/1 var(--cond);letter-spacing:.14em;text-transform:uppercase}
.cup-chip button:hover{border-color:#9ff0dc;color:#fff}
.cup-chip button.is-go{border-color:#fbe7b0;background:linear-gradient(180deg,#e2b25a,#9a6a25);color:#1a1106}
.cup-chip.is-call{background:linear-gradient(180deg,#4a3312,#1a1006) padding-box,var(--frame) border-box;box-shadow:0 0 0 2px rgba(0,0,0,.6),0 0 30px rgba(255,200,110,.45),0 10px 24px rgba(0,0,0,.6)}
.cup-chip.is-call>span em{color:#fbe7b0}

/* friends list: a player in a cup */
.fr-dot--in-cup{background:#e6b65c;box-shadow:0 0 6px rgba(230,182,92,.8)}

@media (max-width:1100px){
  .cup-hub{grid-template-columns:minmax(0,1fr)}
  .cup-weekend{min-height:180px}
  .cup-bk-wrap{grid-template-columns:minmax(0,1fr)}
  .cup-bk-scroll{max-height:none}
}
@media (max-width:760px){
  .cup-prize{align-items:flex-start}
  .cup-card{width:84px}
  .cup-fire .fbtn{min-width:0;width:100%}
  .cup-chip{top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + var(--tabbar,0px) + 12px);max-width:calc(100% - 24px)}
  .cup-bk{min-width:calc(var(--rounds) * 150px)}
}
