/* ======================= board run (src/quick-board.js) ======================= */
/* The board's rect on the frame (--bx --by --bw --bh) and the top of the rival's band above it (--oy) come from
   quick-board.js place(); .tall is the 540 x 1170 phone, .wide the 720-tall wide frame. */
#ui [hidden] { display: none !important; }
/* the canvas covers only the part of the frame the world shows in (main.js fit); the rest of the frame is this */
body.board #phone { background: #231d33; }
.bd-fps { position: absolute; right: 6px; bottom: 6px; z-index: 40; padding: 2px 8px; border-radius: 8px; background: rgba(0, 0, 0, 0.6); color: #fff;
  font: 700 13px/1.4 ui-monospace, Menlo, monospace; pointer-events: none; }
.bd { position: absolute; inset: 0; color: #fff; --bx: 17px; --by: 196px; --bw: 506px; --bh: 592px; --oy: 56px; }
.bd button { font-family: var(--font); color: #fff; }
.bd button:focus { outline: none; }
/* focus rings for keyboard players only (2026-10-16): <html> has .kbd from a real key press until the next pointer
   press (main.js); without it nothing shows a ring, the browser's own included */
:root:not(.kbd) :focus-visible { outline: none; }
.kbd .bd button:focus-visible { outline: 5px solid #ffe36b; outline-offset: 3px; }

/* ---- top bar: Road, the arena's three fights, the phase ---- */
.bd-top { position: absolute; left: 0; right: 0; top: 0; height: 56px; padding: 0 10px; display: flex; align-items: center; justify-content: space-between;
  background: linear-gradient(180deg, rgba(24, 19, 36, 0.96), rgba(24, 19, 36, 0.8)); box-shadow: 0 3px 0 rgba(0, 0, 0, 0.18); }
.bd-roadbtn { height: 38px; padding: 0 14px 0 10px; border: 3px solid var(--ol); border-radius: 19px; background: linear-gradient(180deg, #eceaf6, #c9c5dc);
  color: #3b3350 !important; font-size: 17px; font-weight: 800; }
.bd-track { position: absolute; left: 50%; top: 2px; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; pointer-events: none; }
.bd-track > b { font-size: 12px; font-weight: 800; letter-spacing: 1px; line-height: 14px; text-transform: uppercase; color: #d8d0ef; white-space: nowrap; }
.bd-rounds { display: flex; align-items: center; }
.bd-tn { position: relative; width: 34px; height: 34px; display: grid; place-items: center; border: 3px solid var(--ol); border-radius: 50%; background: #6b6083; overflow: hidden; }
.bd-tn.final { width: 38px; height: 38px; }
.bd-tn canvas { display: block; }
.bd-tn.won { background: #6cc93f; }
.bd-tn.cur { background: #ffd15c; box-shadow: 0 0 0 3px rgba(255, 227, 107, 0.6); }
.bd-link { display: block; width: 14px; height: 6px; background: #6b6083; border-top: 2px solid var(--ol); border-bottom: 2px solid var(--ol); }
.bd-link.won { background: #6cc93f; }
.bd-phase { height: 30px; padding: 0 12px; display: grid; place-items: center; border: 3px solid var(--ol); border-radius: 15px; font-size: 14px; font-weight: 800;
  letter-spacing: 1.2px; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }
.bd-phase.plan { background: #5a8ce8; }
.bd-phase.combat { background: #e05460; }
.bd-phase.done { background: #6cc93f; }

/* ---- the rival's side: name and army above the board; its figure stands on the board's far corner (canvas) ---- */
.bd-opp { position: absolute; left: calc(var(--bx) + 4px); top: calc(var(--oy) + 10px); width: 210px; display: flex; flex-direction: column; gap: 6px; pointer-events: none; }
.bd-opp-name { font-size: 25px; font-weight: 800; line-height: 1; white-space: nowrap; color: #ffd3d7; -webkit-text-stroke: 6px var(--ol); paint-order: stroke fill; }
.bd-tag { display: inline-block; margin-left: 7px; padding: 2px 7px 1px; vertical-align: 4px; font-size: 12px; font-weight: 800; letter-spacing: 0.8px; line-height: 14px;
  color: #3b3350; background: #ffd15c; border: 2px solid var(--ol); border-radius: 8px; -webkit-text-stroke: 0; }
.bd-army { display: flex; flex-wrap: wrap; gap: 4px; }
.bd-unit { display: inline-flex; align-items: center; gap: 1px; height: 32px; padding: 0 8px 0 2px; border: 3px solid var(--ol); border-radius: 16px; font-size: 16px; font-weight: 800;
  color: #fff; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-unit.red { background: #e8606b; }
.bd-unit.blue { background: #6474f2; }
.bd-unit canvas { display: block; }
.bd-unit.out { filter: grayscale(0.85) brightness(0.8); }
.bd-you { position: absolute; left: calc(var(--bx) + 16px); top: calc(var(--by) + var(--bh) - 15px); height: 26px; padding: 0 10px; display: grid; place-items: center;
  border: 3px solid var(--ol); border-radius: 13px; background: #6474f2; font-size: 14px; font-weight: 800; letter-spacing: 1px; -webkit-text-stroke: 3px var(--ol);
  paint-order: stroke fill; pointer-events: none; }
.bd-say { position: absolute; z-index: 4; max-width: 180px; padding: 6px 11px 7px; background: #fffaf0; border: 3px solid var(--ol); border-radius: 14px; color: #3b3350;
  font-size: 15px; font-weight: 800; line-height: 1.2; box-shadow: 0 4px 0 rgba(47, 36, 55, 0.25); pointer-events: none; animation: bdSay 0.22s cubic-bezier(.2, 1.4, .4, 1) both; }
@keyframes bdSay { from { transform: scale(0.7); opacity: 0; } to { transform: none; opacity: 1; } }

/* ---- the board: pointer input lands here during planning ---- */
.bd-hit { position: absolute; left: var(--bx); top: var(--by); width: var(--bw); height: var(--bh); pointer-events: auto; touch-action: none; cursor: pointer; }
.bd.dragging, .bd.dragging * { cursor: grabbing !important; }

/* ---- your crews: a row under the board (tall), a column left of it (wide) ---- */
.bd-own { position: absolute; display: flex; gap: 6px; }
.bd.tall .bd-own { left: 10px; right: 10px; top: calc(var(--by) + var(--bh) + 12px); height: 60px; justify-content: center; }
.bd.wide .bd-own { left: 16px; width: min(230px, calc(var(--bx) - 32px)); top: calc(var(--oy) + 12px); flex-direction: column; gap: 10px; }
.bd-chip { position: relative; flex: 0 1 126px; min-width: 0; height: 58px; padding: 0 8px 0 3px; display: flex; align-items: center; gap: 3px; text-align: left;
  border: 3px solid var(--ol); border-radius: 14px; background: linear-gradient(180deg, #8391ff, #5462de); touch-action: none; cursor: grab; box-shadow: 0 4px 0 rgba(47, 36, 55, 0.3); }
.bd.wide .bd-chip { flex: none; }
.bd-chip canvas { flex: none; display: block; }
.bd-chip-txt { display: flex; flex-direction: column; min-width: 0; }
.bd-chip .n { font-size: 21px; line-height: 1; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-chip .t { font-size: 13px; font-weight: 800; line-height: 1.15; color: #e8ebff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* NEW on the lower left corner (ui4, 2026-10-18): on the top edge it hid under the Lv tag */
.bd-chip.new::before { content: "NEW"; position: absolute; z-index: 3; left: -6px; bottom: -9px; padding: 0 5px; font-size: 11px; font-weight: 800; letter-spacing: 0.6px; line-height: 15px;
  color: #3b3350; background: #ffd15c; border: 2px solid var(--ol); border-radius: 7px; pointer-events: none; }
.bd-chip.sel { background: linear-gradient(180deg, #ffe08a, #f0a93e); }
.bd-chip.sel .t { color: #4a3a1c; }
.bd-chip.out { filter: grayscale(0.85) brightness(0.8); }
.bd-chip:disabled { cursor: default; box-shadow: none; }

/* ---- the tray: the fight's two offers; FIGHT ---- */
.bd-tray { position: absolute; }
.bd.tall .bd-tray { left: 14px; top: calc(var(--by) + var(--bh) + 82px); }
.bd.wide .bd-tray { left: calc(var(--bx) + var(--bw) + 20px); right: 16px; top: calc(var(--oy) + 6px); }
.bd-ask { margin: 0 0 6px 2px; font-size: 22px; font-weight: 800; letter-spacing: 1px; }
.bd-offers { display: flex; flex-wrap: wrap; gap: 12px; }
.bd-offer { position: relative; width: 134px; height: 236px; padding: 0; border: 0; background: none; touch-action: none; cursor: grab;
  transition: transform 0.16s cubic-bezier(.2, 1.4, .4, 1); }
.bd.wide .bd-offer { width: 104px; height: 186px; }
.bd-offer:hover { transform: translateY(-4px); }
.bd-in { position: absolute; right: -8px; top: -10px; z-index: 2; width: 36px; height: 36px; display: grid; place-items: center; border: 3px solid var(--ol); border-radius: 50%;
  background: #6cc93f; font-size: 20px; font-weight: 800; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }
.bd-tray.nudge { animation: bdNudge 0.4s ease both; }
@keyframes bdNudge { 25% { transform: translateX(-8px); } 75% { transform: translateX(8px); } }
.bd-fight { position: absolute; min-width: 0; font-size: 40px; }
.bd.tall .bd-fight { right: 16px; top: calc(var(--by) + var(--bh) + 130px); width: 200px; height: 112px; }
.bd.wide .bd-fight { right: 16px; bottom: 18px; width: min(300px, calc(100% - var(--bx) - var(--bw) - 36px)); height: 84px; }

/* ---- combat: health left on each side ---- */
.bd-hp { position: absolute; display: flex; flex-direction: column; gap: 10px; pointer-events: none; }
.bd.tall .bd-hp { left: 24px; right: 24px; top: calc(var(--by) + var(--bh) + 96px); }
.bd.wide .bd-hp { left: calc(var(--bx) + var(--bw) + 20px); right: 20px; top: calc(var(--oy) + 16px); }

/* ---- drag token: under the finger, lifted above it ---- */
.bd-token { position: absolute; left: 0; top: 0; z-index: 20; width: 66px; height: 66px; display: grid; place-items: center; border: 4px solid var(--ol); border-radius: 50%;
  background: #8391ff; transform: translate(-50%, -66%); pointer-events: none; box-shadow: 0 8px 0 rgba(47, 36, 55, 0.3); opacity: 0.85; }
.bd-token.ok { background: #ffe08a; opacity: 1; }
.bd-token canvas { display: block; }
.bd-token b { position: absolute; right: -9px; bottom: -6px; min-width: 26px; height: 26px; padding: 0 5px; display: grid; place-items: center; border: 3px solid var(--ol);
  border-radius: 13px; background: #6474f2; font-size: 15px; font-weight: 800; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }

/* ---- result and clear cards, centred on the board ---- */
.bd-banner { z-index: 6; }
.bd-card { position: absolute; z-index: 10; left: calc(var(--bx) + var(--bw) / 2); top: calc(var(--by) + var(--bh) / 2); transform: translate(-50%, -50%);
  width: min(360px, calc(var(--bw) - 40px)); padding: 18px 18px 12px; display: flex; flex-direction: column; align-items: center; gap: 12px;
  border: 5px solid var(--ol); border-radius: 26px; background: linear-gradient(180deg, #fff6d6, #f1dfae); color: #3b3350; box-shadow: 0 8px 0 rgba(47, 36, 55, 0.35);
  pointer-events: auto; animation: bdCardIn 0.32s cubic-bezier(.2, 1.3, .4, 1) both; }
@keyframes bdCardIn { from { transform: translate(-50%, -42%) scale(0.86); opacity: 0; } to { transform: translate(-50%, -50%); opacity: 1; } }
.bd-card .ttl { font-size: 52px; font-weight: 800; line-height: 1; letter-spacing: 1px; color: #ffe36b; -webkit-text-stroke: 9px var(--ol); paint-order: stroke fill; }
.bd-card.lose .ttl { color: #ffb3b9; }
.bd-card.draw .ttl { color: #fff; }
.bd-go { width: 240px; min-width: 0; height: 66px; font-size: 30px; }
.bd-textbtn { height: 36px; padding: 0 16px; border: 0; background: none; color: #5a4f72 !important; font-size: 18px; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }
.bd-emblem { display: flex; align-items: center; gap: 8px; padding: 4px 6px 4px 14px; border: 3px solid var(--ol); border-radius: 16px; background: #ffd15c; font-size: 20px; font-weight: 800; }
.bd-emblem .x { padding: 0 8px; border-radius: 10px; background: #6cc93f; color: #fff; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }

/* ---- the road ---- */
.bd-route { position: absolute; inset: 0; z-index: 12; padding: 16px 14px 18px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
  background: rgba(26, 20, 40, 0.8); pointer-events: auto; }
.bd-rt-head { width: 100%; max-width: 940px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.bd-rt-title { font-size: 42px; font-weight: 800; letter-spacing: 2px; line-height: 1; }
.bd-preview .face { flex: none; width: 70px; height: 70px; display: grid; place-items: center; border: 4px solid var(--ol); border-radius: 50%;
  background: linear-gradient(180deg, #8d82a3, #6b6083); overflow: hidden; }
.bd-preview .face canvas { display: block; }
@keyframes bdPulse { 50% { transform: scale(1.06); } }
.bd-rt-foot { width: 100%; max-width: 940px; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.bd.wide .bd-rt-foot { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 16px; }
.bd-preview { width: 100%; max-width: 520px; display: flex; align-items: center; gap: 12px; padding: 10px 14px; border: 4px solid var(--ol); border-radius: 20px;
  background: linear-gradient(180deg, #fff6d6, #f1dfae); color: #3b3350; }
.bd-pv-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.bd-pv-name { font-size: 22px; font-weight: 800; line-height: 1.05; }
.bd-pv-line { font-size: 15px; font-weight: 700; line-height: 1.2; color: #5a4f72; }

/* ---- the road: one strip, climbed from the bottom ---- */
.bd-route { justify-content: flex-start; }
.bd-rt-titles { display: flex; flex-direction: column; gap: 2px; }
.bd-rt-where { font-size: 16px; font-weight: 800; color: #ffe08a; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-strip { position: relative; flex: 1; min-height: 0; width: 100%; max-width: 560px; overflow-y: auto; overscroll-behavior: contain;
  display: flex; flex-direction: column; gap: 6px; padding: 6px 4px 10px; scrollbar-width: thin; }
.bd-sec { position: relative; display: flex; flex-direction: column; gap: 6px; }
.bd-stops { position: relative; display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 8px 0 4px; }
.bd-stops::before { content: ""; position: absolute; left: 50%; top: 0; bottom: -10px; width: 10px; transform: translateX(-50%); border-radius: 5px;
  background: #6b6083; border: 2px solid var(--ol); }
.bd-sec.done .bd-stops::before, .bd-sec.cur .bd-stops::before { background: #8f7fc4; }
.bd-stop { position: relative; z-index: 1; width: min(330px, 92%); display: flex; align-items: center; gap: 10px; padding: 6px 44px 6px 6px; text-align: left;
  border: 4px solid var(--ol); border-radius: 40px; background: linear-gradient(180deg, #5b5070, #463d5c); box-shadow: 0 4px 0 rgba(47, 36, 55, 0.35); }
.bd-stop .face { flex: none; width: 58px; height: 58px; display: grid; place-items: center; overflow: hidden; border: 3px solid var(--ol); border-radius: 50%;
  background: linear-gradient(180deg, #8d82a3, #6b6083); }
.bd-stop.final .face { width: 66px; height: 66px; }
.bd-stop .face canvas { display: block; }
.bd-stop-txt { display: flex; flex-direction: column; min-width: 0; }
.bd-stop-txt b { font-size: 19px; font-weight: 800; line-height: 1.1; white-space: nowrap; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-stop-txt small { font-size: 13px; font-weight: 800; color: #d8d0ef; }
.bd-stop.won { background: linear-gradient(180deg, #4f7a45, #3d6136); }
.bd-stop.won .face { background: linear-gradient(180deg, #ffe08a, #f0a93e); }
.bd-stop.now { background: linear-gradient(180deg, #ffe08a, #f0a93e); box-shadow: 0 0 0 4px #ffe36b, 0 4px 0 rgba(47, 36, 55, 0.35); }
.bd-stop.now .bd-stop-txt small { color: #4a3a1c; }
.bd-stop.locked { opacity: 0.55; filter: grayscale(0.6); }
.bd-stop.sel { outline: 4px solid #fff; outline-offset: 3px; }
.bd-stop .bd-tick { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); font-size: 24px; color: #b4ef7d; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-stop .bd-you { position: absolute; right: -8px; top: -12px; padding: 0 8px; font-size: 12px; font-weight: 800; letter-spacing: 0.8px; line-height: 18px; color: #fff;
  background: #6474f2; border: 2px solid var(--ol); border-radius: 9px; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }
.bd-banner { position: relative; z-index: 1; align-self: center; width: min(360px, 96%); padding: 7px 14px 8px; display: flex; flex-direction: column; align-items: center; gap: 1px;
  border: 4px solid var(--ol); border-radius: 18px; background: linear-gradient(180deg, #8d7bd6, #5e4fa8); box-shadow: 0 4px 0 rgba(47, 36, 55, 0.35); }
.bd-sec.league .bd-banner { background: linear-gradient(180deg, #e3b04f, #b07a2a); }
.bd-banner b { font-size: 22px; font-weight: 800; line-height: 1.1; -webkit-text-stroke: 5px var(--ol); paint-order: stroke fill; }
.bd-banner .lg { font-size: 14px; font-weight: 800; color: #ffe9a8; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }
.bd-banner .army { font-size: 13px; font-weight: 800; color: #f1ecff; }
.bd-banner .bd-tick { position: absolute; right: 12px; top: 8px; font-size: 22px; color: #b4ef7d; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-sec.locked .bd-banner { opacity: 0.6; filter: grayscale(0.5); }
.bd-tag.lv { background: #9aa8ff; }
@media (prefers-reduced-motion: reduce) { .bd-stop.now { box-shadow: 0 0 0 4px #ffe36b; } }

/* ---- the menu (Esc, or II in the top bar) ---- */
.bd-topright { display: flex; align-items: center; gap: 8px; }
.bd-menubtn { width: 38px; height: 38px; padding: 0; border: 3px solid var(--ol); border-radius: 50%; background: linear-gradient(180deg, #eceaf6, #c9c5dc);
  color: #3b3350 !important; font-size: 15px; font-weight: 800; letter-spacing: -1px; }
.bd-menu { position: absolute; inset: 0; z-index: 50; display: grid; place-items: center; background: rgba(26, 20, 40, 0.62); pointer-events: auto; }
.bd-menucard { width: min(320px, calc(100% - 40px)); padding: 18px 18px 16px; display: flex; flex-direction: column; align-items: center; gap: 12px;
  border: 5px solid var(--ol); border-radius: 26px; background: linear-gradient(180deg, #fff6d6, #f1dfae); color: #3b3350; box-shadow: 0 8px 0 rgba(47, 36, 55, 0.35); }
.bd-menucard .ttl { font-size: 44px; font-weight: 800; line-height: 1; letter-spacing: 1px; color: #fff; -webkit-text-stroke: 8px var(--ol); paint-order: stroke fill; }
.bd-menunote { font-size: 15px; font-weight: 800; color: #6b5a3a; text-align: center; }
body.doodle .bd-menucard { border-radius: 19px 15px 20px 16px / 16px 20px 14px 19px; }
/* the apps: Privacy and Licences under Sound, and the Licences sheet in the menu card's place (2026-10-16) */
.bd-menulinks { display: flex; justify-content: center; flex-wrap: wrap; gap: 0 14px; margin-top: -4px; }
.bd-menulinks .bd-textbtn { height: 32px; padding: 0 8px; font-size: 16px; }
.bd-lic { width: min(420px, calc(100% - 28px)); max-height: 880px; }
.bd.wide .bd-lic { max-height: 640px; }
.bd-lic .ttl { font-size: 34px; -webkit-text-stroke: 7px var(--ol); }
.bd-lic-body { align-self: stretch; flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 10px 12px;
  border: 3px solid var(--ol); border-radius: 14px; background: #fffaf0; color: #3b3350; font-size: 15px; line-height: 1.35; }
.bd-lic-body:focus { outline: none; }
.kbd .bd-lic-body:focus-visible { outline: 4px solid #ffe36b; outline-offset: 2px; }
.bd-lic-font { margin-bottom: 12px; }
.bd-lic-font b { font-size: 18px; }
.bd-lic-font p { margin: 2px 0 0; font-weight: 700; overflow-wrap: anywhere; }
.bd-lic-text { font-size: 13px; font-weight: 600; color: #5a4f72; overflow-wrap: anywhere; }
.bd-lic-text h3 { margin: 10px 0 2px; font-size: 14px; font-weight: 800; color: #3b3350; }
.bd-lic-text p { margin: 0 0 6px; }

/* ---- more cards and the counter (2026-10-06) ---- */
.bd-tw { position: relative; display: inline-block; }
.bd-x2 { position: absolute; right: -9px; bottom: -5px; z-index: 1; padding: 0 4px; font-style: normal; font-size: 11px; font-weight: 800; line-height: 15px;
  color: #3b3350; background: #ffd15c; border: 2px solid var(--ol); border-radius: 7px; }
.bd.tall.three .bd-offers { gap: 9px; }
.bd.tall.three .bd-offer { width: 97px; height: 174px; }
.bd.tall.three .bd-fight { width: 168px; font-size: 34px; }
.bd-count { flex-direction: row; align-items: center; justify-content: center; gap: 18px; }
.bd-cside { display: flex; flex-direction: column; align-items: center; min-width: 110px; }
.bd-cside .n { display: block; font-size: 64px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; -webkit-text-stroke: 9px var(--ol); paint-order: stroke fill; }
.bd-cside.blue .n { color: #a7b3ff; }
.bd-cside.red .n { color: #ffa3aa; }
.bd-cside .who { max-width: 150px; font-size: 16px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-cvs { font-size: 22px; font-weight: 800; color: #d8d0ef; }
.bd-cside .n.drop { animation: bdDrop 0.3s cubic-bezier(.2, 1.6, .4, 1); }
@keyframes bdDrop { from { transform: scale(1.35); } to { transform: none; } }
.bd.wide .bd-count { gap: 10px; }
.bd.wide .bd-cside { min-width: 84px; }
.bd.wide .bd-cside .n { font-size: 52px; }

/* ---- finishing pass (2026-10-06): the Road's destination, restart, finished state, sound, saving ---- */
.bd-rt-tools { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
.bd-sound { height: 34px; padding: 0 12px; border: 3px solid var(--ol); border-radius: 17px; background: linear-gradient(180deg, #eceaf6, #c9c5dc);
  color: #3b3350 !important; font-size: 15px; font-weight: 800; }
.bd-sound.off { background: #6b6083; color: #fff !important; }
.bd-unsaved { font-size: 14px; font-weight: 800; color: #a5303b; }
.bd-unsaved.pill { padding: 2px 10px; border: 2px solid var(--ol); border-radius: 12px; background: #ffd3d7; color: #6b1e26; }
.bd-done { font-size: 17px; font-weight: 800; text-align: center; }
.bd-route .bd-done { color: #b4ef7d; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-card .bd-done { color: #3b7a1f; }
.bd-dest { height: auto; min-height: 72px; padding: 6px 14px 8px; gap: 2px; }
.bd-dest small { font-size: 16px; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-pv-of { display: inline-block; margin-right: 8px; padding: 1px 7px; vertical-align: 3px; font-size: 12px; font-weight: 800; letter-spacing: 0.6px;
  color: #fff; background: #6b6083; border-radius: 8px; }
.bd-restart { width: 100%; display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 10px; }
.bd-restart .q { font-size: 16px; font-weight: 800; }
.bd-textbtn.light { color: #e8e2ff !important; }
.bd-small { width: auto; min-width: 0; height: 44px; padding: 0 16px; font-size: 20px; }

body.doodle .bd-chip, body.doodle .bd-card, body.doodle .bd-preview, body.doodle .bd-say { border-radius: 19px 15px 20px 16px / 16px 20px 14px 19px; }
@media (prefers-reduced-motion: reduce) {
  .bd-say, .bd-card, .bd-tray.nudge, .bd-cside .n.drop { animation: none; }
  .bd-offer { transition: none; }
  #ui .bd .card, #ui .bigtext { animation: none; }
}

/* ---- cards, coins and hearts (2026-10-06: x2 and UP cards in the draft, coins from the units you won by, hearts) ---- */
.bd-slot { display: flex; flex-direction: column; align-items: center; gap: 5px; }
.bd-price { height: 30px; min-width: 62px; padding: 0 10px; display: inline-flex; align-items: center; justify-content: center; gap: 5px; border: 3px solid var(--ol); border-radius: 15px;
  background: linear-gradient(180deg, #ffe58a, #f0b43e); color: #4a3a18 !important; font-size: 17px; font-weight: 800; white-space: nowrap; }
.bd-price.short { filter: grayscale(0.85) brightness(0.8); cursor: default; }
.bd-price.paid { background: linear-gradient(180deg, #a6e87a, #6cc93f); color: #24410f !important; font-size: 13px; }
.bd-coin { display: inline-block; flex: none; width: 16px; height: 16px; box-sizing: border-box; border: 2.5px solid var(--ol); border-radius: 50%; vertical-align: -2px;
  background: radial-gradient(circle at 35% 35%, #fff3b0 0 22%, #ffd34d 23% 62%, #e2a52a 63%); }
.bd-purse { position: absolute; z-index: 3; top: calc(var(--by) + var(--bh) - 18px); right: calc(100% - var(--bx) - var(--bw) + 16px); height: 34px; padding: 0 10px;
  display: flex; align-items: center; gap: 10px; border: 3px solid var(--ol); border-radius: 17px; background: #3b3350; pointer-events: none; }
.bd-coins { display: flex; align-items: center; gap: 5px; font-size: 19px; font-weight: 800; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-coins .bd-coin { width: 21px; height: 21px; }
.bd-coins.bump { animation: bdBump 0.18s ease-out both; }
@keyframes bdBump { from { transform: scale(1.4); } to { transform: none; } }
.bd-flycoin { position: absolute; left: -11px; top: -11px; z-index: 30; width: 22px; height: 22px; box-sizing: border-box; border: 3px solid var(--ol); border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #fff3b0 0 22%, #ffd34d 23% 62%, #e2a52a 63%); pointer-events: none; will-change: transform; }
.bd-flycoin.big { left: -17px; top: -17px; width: 34px; height: 34px; border-width: 4px; }
.bd-earn { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 28px; font-weight: 800; color: #ffe36b; -webkit-text-stroke: 5px var(--ol); paint-order: stroke fill; }
.bd-earn .bd-coin { width: 26px; height: 26px; }
.bd-earn .spent { margin-left: 10px; font-size: 16px; color: #d8d0ef; -webkit-text-stroke: 3px var(--ol); }
.bd-tierb { position: absolute; right: -4px; top: -10px; z-index: 2; font-size: 15px; letter-spacing: -2px; color: #ffd34d; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; pointer-events: none; }
.bd-chip.boosted { box-shadow: 0 0 0 3px #ffd34d; }
/* four cards: three crews and a power card */
.bd.tall.four .bd-offers { gap: 7px; }
.bd.tall.four .bd-offer { width: 80px; height: 146px; }
.bd.tall.four .bd-price { min-width: 54px; padding: 0 6px; font-size: 15px; }
.bd.tall.four .bd-fight { width: 138px; font-size: 30px; }
.bd.tall.three .bd-price { min-width: 58px; }
/* the story's cutscenes (quick-story.js): their own canvas over the whole frame */
#ui canvas.story { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 60; pointer-events: auto; cursor: pointer; }
@media (prefers-reduced-motion: reduce) { .bd-coins.bump { animation: none; } }

/* ---- gold and upgrades (2026-10-07): the Road's gold and Upgrades button, the ladder above you, the Upgrades screen ---- */
.bd-rt-gold { height: 34px; padding: 0 10px; border: 3px solid var(--ol); border-radius: 17px; background: #3b3350; }
.bd-upbtn { position: relative; height: 38px; padding: 0 14px; border: 3px solid var(--ol); border-radius: 19px; background: linear-gradient(180deg, #8fe06a, #4fae38);
  color: #fff !important; font-size: 16px; font-weight: 800; letter-spacing: 0.5px; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-upmark { position: absolute; right: -8px; top: -10px; font-style: normal; font-size: 16px; line-height: 20px; width: 22px; text-align: center; color: #fff;
  background: #ff5a5f; border: 2px solid var(--ol); border-radius: 11px; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; animation: bdPulse 1.1s ease-in-out infinite; }
.bd-cap { align-self: center; width: min(360px, 96%); padding: 8px 14px; display: flex; flex-direction: column; align-items: center; gap: 2px; text-align: center;
  border: 4px dashed #8f7fc4; border-radius: 18px; color: #d8d0ef; font-size: 13px; font-weight: 800; }
.bd-cap b { font-size: 18px; color: #ffe08a; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-far { align-self: center; width: min(330px, 92%); padding: 6px 12px; display: flex; flex-direction: column; align-items: center; gap: 1px; text-align: center;
  border: 3px solid var(--ol); border-radius: 16px; background: linear-gradient(180deg, #6a5ca8, #4b4180); opacity: 0.8; }
.bd-far.league { background: linear-gradient(180deg, #b48a45, #87642a); }
.bd-far b { font-size: 17px; font-weight: 800; line-height: 1.1; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-far .lg { font-size: 12px; font-weight: 800; color: #ffe9a8; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }
.bd-far .arenas { font-size: 12px; font-weight: 800; color: #f1ecff; }
.bd-ups { flex: 1; min-height: 0; width: 100%; max-width: 760px; overflow-y: auto; overscroll-behavior: contain; padding: 6px 4px 10px;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; align-content: start; scrollbar-width: thin; }
.bd-lvb { position: absolute; left: -6px; top: -10px; z-index: 2; padding: 0 5px; font-size: 11px; font-weight: 800; line-height: 15px; color: #fff;
  background: #6474f2; border: 2px solid var(--ol); border-radius: 7px; -webkit-text-stroke: 2px var(--ol); paint-order: stroke fill; pointer-events: none; }
@media (prefers-reduced-motion: reduce) { .bd-upmark { animation: none; } }

/* ---- packs (2026-10-07): the pack bar on Upgrades, locked units, card bars, the pack opening ---- */
.bd-packbar { width: 100%; max-width: 760px; display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 12px; }
.bd-packopen { position: relative; width: auto; min-width: 200px; height: 60px; padding: 0 22px; font-size: 26px; display: inline-flex; align-items: center; justify-content: center; gap: 10px; }
.bd-packn { font-style: normal; min-width: 30px; padding: 0 6px; border: 3px solid var(--ol); border-radius: 15px; background: #ff5a5f; font-size: 18px; line-height: 26px; }
.bd-packbuy { height: 60px; padding: 0 12px 0 8px; display: inline-flex; align-items: center; gap: 10px; border: 4px solid var(--ol); border-radius: 18px;
  background: linear-gradient(180deg, #fff6d6, #f1dfae); color: #3b3350 !important; box-shadow: 0 4px 0 rgba(47, 36, 55, 0.35); }
.bd-packbuy .t { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.05; }
.bd-packbuy .t b { font-size: 19px; font-weight: 800; }
.bd-packbuy .t small { font-size: 13px; font-weight: 800; color: #6b5a3a; }
.bd-packbuy .p { display: inline-flex; align-items: center; gap: 4px; padding: 0 10px; height: 36px; border: 3px solid var(--ol); border-radius: 18px;
  background: linear-gradient(180deg, #8fe06a, #4fae38); color: #fff; font-size: 18px; font-weight: 800; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-packbuy .p .bd-coin { width: 18px; height: 18px; }
.bd-packbuy.short { opacity: 0.6; }
.bd-packbuy.short .p { background: #6b6083; }
.bd-minipack { flex: none; display: inline-block; width: 26px; height: 36px; border: 3px solid var(--ol); border-radius: 5px;
  background: linear-gradient(135deg, #b88cff 0 30%, #fff2a8 45%, #7a5cd6 60%, #5a3fb0); box-shadow: inset 0 3px 0 rgba(255, 255, 255, 0.35); }
.bd-card .bd-packopen { width: 240px; font-size: 24px; white-space: nowrap; }

.bd-packov { position: absolute; inset: 0; z-index: 45; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 22px;
  background: radial-gradient(circle at 50% 42%, rgba(120, 90, 200, 0.55), rgba(20, 14, 34, 0.92) 70%); pointer-events: auto; overflow: hidden; }
.bd-packhint { font-size: 22px; font-weight: 800; letter-spacing: 1px; color: #fff; -webkit-text-stroke: 5px var(--ol); paint-order: stroke fill; animation: bdPulse 1.1s ease-in-out infinite; }
@keyframes bdPackIn { from { transform: translateY(-140%) rotate(-12deg) scale(0.7); } to { transform: none; } }
.bd-packok { position: absolute; bottom: 12%; }
@media (prefers-reduced-motion: reduce) {
  .bd-packhint { animation: none; }
}

/* ---- the journey (2026-10-07): Road and Upgrades side by side under the clear card's NEXT ---- */
.bd-links { display: flex; align-items: center; justify-content: center; gap: 6px; }

/* ---- comeback picks (2026-10-07): the tray's header and the defeat card say so ---- */
.bd-ask.comeback { color: #ffe36b; }
.bd-comeback { font-size: 20px; font-weight: 800; color: #ffe36b; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; text-align: center; }

/* ---- the defeat card's fact (2026-10-07): your biggest loss and what did it ---- */
.bd-lostto { max-width: 300px; font-size: 18px; font-weight: 800; line-height: 1.2; color: #fff; text-align: center; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }

/* ---- the boss bar (2026-10-07): an arena final's boss, across the top of the board ---- */
/* 2026-10-17 (late game round 2, Show 1 item 2): it stood across the board's top, over the rival's front row (at a
   grown final's start 5 to 11 bodies under it on a phone, 10 to 16 on a wide window). It stands in the rival's band
   above the board now, right of the rival's panel, its strip just over the board's frame: the name, the title under it,
   the health. The rival's panel is 210px wide and its rows wrap inside that. */
.bd-bossbar { position: absolute; z-index: 4; bottom: calc(100% - var(--by) + 16px); left: calc(var(--bx) + 224px); width: calc(var(--bw) - 232px);
  display: flex; flex-direction: column; align-items: stretch; gap: 3px; pointer-events: none; animation: bdBossIn 0.45s cubic-bezier(.2, 1.4, .4, 1) both; }
.bd-bossbar .who { display: flex; flex-direction: column; align-items: center; line-height: 1.05; white-space: nowrap; }
.bd-bossbar .nm { font-size: 24px; font-weight: 800; letter-spacing: 1px; color: #ffd15c; -webkit-text-stroke: 5px var(--ol); paint-order: stroke fill; }
.bd-bossbar .ttl { font-size: 13px; font-weight: 800; letter-spacing: 1px; color: #fff; -webkit-text-stroke: 3px var(--ol); paint-order: stroke fill; }
.bd-bossbar .bar { position: relative; height: 20px; overflow: hidden; border: 4px solid var(--ol); border-radius: 12px; background: #3b2340;
  box-shadow: 0 3px 0 rgba(47, 36, 55, 0.4); }
.bd-bossbar .bar i { position: absolute; inset: 0; transform-origin: left; }
.bd-bossbar .ghost { background: #ffe9a8; }
.bd-bossbar .fill { background: linear-gradient(180deg, #ff9a5a, #e0503c); transition: transform 0.08s linear; }
.bd-bossbar .half { left: 50% !important; width: 4px; margin-left: -2px; background: var(--ol); }
.bd-bossbar.rage .fill { background: linear-gradient(180deg, #ff5a6a, #b4142c); animation: bdRage 0.5s ease-in-out infinite alternate; }
.bd-bossbar.rage .nm { color: #ff7a7a; }
.bd-bossbar.down { opacity: 0.55; filter: grayscale(0.6); }
@keyframes bdBossIn { from { transform: translateY(-30px) scale(0.8); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes bdRage { to { filter: brightness(1.35); } }

/* ---- BIG WIN (2026-10-07): a rated win or a boss beaten takes the middle of the screen ---- */
.bd-bigwin { position: absolute; inset: 0; z-index: 40; display: grid; place-items: center; overflow: hidden; pointer-events: auto; cursor: pointer;
  background: radial-gradient(circle at 50% 44%, rgba(255, 214, 110, 0.35), rgba(20, 14, 34, 0.55) 60%, rgba(20, 14, 34, 0.75)); animation: bdBwFade 0.25s ease-out both; }
.bd-bigwin.out { animation: bdBwOut 0.3s ease-in forwards; }
.bd-bigwin .rays { position: absolute; left: 50%; top: 44%; width: 1400px; height: 1400px; margin: -700px 0 0 -700px; border-radius: 50%;
  background: repeating-conic-gradient(from 0deg, rgba(255, 236, 160, 0.55) 0deg 9deg, rgba(255, 236, 160, 0) 9deg 22deg);
  -webkit-mask: radial-gradient(circle, #000 0 18%, transparent 62%); mask: radial-gradient(circle, #000 0 18%, transparent 62%); animation: bdSpin 7s linear infinite; }
.bd-bigwin .glow { position: absolute; left: 50%; top: 44%; width: 340px; height: 340px; margin: -170px 0 0 -170px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 246, 200, 0.9), rgba(255, 214, 110, 0) 70%); animation: bdGlow 1.2s ease-in-out infinite alternate; }
.bd-bigwin .bw-box { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; margin-top: -10%; }
.bd-bigwin .word { font-size: 78px; font-weight: 800; line-height: 1; letter-spacing: 1px; color: #ffe36b; -webkit-text-stroke: 12px var(--ol); paint-order: stroke fill;
  transform: rotate(-4deg); animation: bdBwSlam 0.55s cubic-bezier(.2, 1.7, .35, 1) both; text-shadow: 0 8px 0 rgba(47, 36, 55, 0.5); white-space: nowrap; }
.bd-bigwin .sub { font-size: 30px; font-weight: 800; color: #fff; -webkit-text-stroke: 7px var(--ol); paint-order: stroke fill; animation: bdBwSlam 0.45s 0.25s cubic-bezier(.2, 1.7, .35, 1) both; }
.bd-bigwin .mult { padding: 2px 16px; border: 5px solid var(--ol); border-radius: 18px; background: linear-gradient(180deg, #8fe06a, #4fae38);
  font-size: 30px; font-weight: 800; color: #fff; -webkit-text-stroke: 6px var(--ol); paint-order: stroke fill; animation: bdBwSlam 0.45s 0.35s cubic-bezier(.2, 1.7, .35, 1) both; }
.bd-bigwin .amt { display: flex; align-items: center; gap: 8px; font-size: 54px; font-weight: 800; color: #ffe36b; -webkit-text-stroke: 9px var(--ol); paint-order: stroke fill;
  font-variant-numeric: tabular-nums; animation: bdBwSlam 0.4s 0.45s cubic-bezier(.2, 1.7, .35, 1) both; }
.bd-bigwin .amt .bd-coin { width: 46px; height: 46px; border-width: 4px; }
.bd-bigwin.t-huge .word { font-size: 84px; color: #ffb84d; }
.bd-bigwin.t-flawless .word { font-size: 88px; background: linear-gradient(180deg, #fff6c8, #ffd34d 45%, #ff8f5a); -webkit-background-clip: text; background-clip: text; color: transparent; }
.bd-bigwin.boss .word { font-size: 80px; color: #ff7a6a; }
.bd-wincoin { position: absolute; left: 50%; top: 48%; z-index: 1; width: 26px; height: 26px; margin: -13px 0 0 -13px; box-sizing: border-box; border: 3px solid var(--ol); border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #fff3b0 0 22%, #ffd34d 23% 62%, #e2a52a 63%); animation: bdWinCoin 1.5s var(--d) cubic-bezier(.2, .7, .4, 1) both; }
.bd-wincoin.big { width: 36px; height: 36px; margin: -18px 0 0 -18px; }
@keyframes bdWinCoin { 0% { transform: translate(0, 0) scale(0.3) rotate(0); opacity: 0; } 12% { opacity: 1; } 55% { transform: translate(var(--dx), var(--dy)) scale(1) rotate(var(--r)); }
  100% { transform: translate(calc(var(--dx) * 1.25), calc(var(--dy) * -0.2 + 520px)) scale(0.9) rotate(calc(var(--r) * 2)); opacity: 0; } }
@keyframes bdBwSlam { 0% { transform: scale(3) rotate(-4deg); opacity: 0; } 60% { opacity: 1; } 100% { transform: scale(1) rotate(-4deg); opacity: 1; } }
@keyframes bdBwFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes bdBwOut { to { opacity: 0; transform: scale(1.06); } }
@keyframes bdSpin { to { transform: rotate(360deg); } }
@keyframes bdGlow { from { transform: scale(0.85); opacity: 0.8; } to { transform: scale(1.15); opacity: 1; } }
.bd-tier { padding: 1px 12px; border: 3px solid var(--ol); border-radius: 12px; background: #ffd15c; font-size: 17px; font-weight: 800; color: #3b3350; }
.bd-tier.t-huge { background: #ffb84d; }
.bd-tier.t-flawless { background: linear-gradient(90deg, #fff2a8, #ffd34d, #ff8f5a); }
@media (prefers-reduced-motion: reduce) { .bd-bigwin .rays, .bd-bigwin .glow, .bd-wincoin, .bd-bossbar.rage .fill { animation: none; } .bd-wincoin { display: none; } }

/* ---- the pack opening, cooler (2026-10-07): rays, a wind-up, a tear, rarity backs, a spotlight for new units ---- */
.bd-packrays { position: absolute; left: 50%; top: 46%; width: 1300px; height: 1300px; margin: -650px 0 0 -650px; border-radius: 50%; pointer-events: none;
  background: repeating-conic-gradient(from 0deg, rgba(196, 160, 255, 0.45) 0deg 8deg, rgba(196, 160, 255, 0) 8deg 20deg);
  -webkit-mask: radial-gradient(circle, #000 0 14%, transparent 58%); mask: radial-gradient(circle, #000 0 14%, transparent 58%); animation: bdSpin 9s linear infinite; }
@keyframes bdPackFloat { 0%, 100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-14px) rotate(2deg); } }
@keyframes bdPackCharge {
  0% { transform: rotate(0) scale(1); filter: brightness(1); } 20% { transform: rotate(-3deg) scale(1.02); } 30% { transform: rotate(3deg) scale(1.03); }
  40% { transform: rotate(-5deg) scale(1.05); } 50% { transform: rotate(5deg) scale(1.06); } 60% { transform: rotate(-7deg) scale(1.08); filter: brightness(1.4); }
  70% { transform: rotate(7deg) scale(1.1); } 80% { transform: rotate(-8deg) scale(1.12); } 90% { transform: rotate(8deg) scale(1.15); filter: brightness(2); } 100% { transform: scale(1.18); filter: brightness(2.4); } }
@media (prefers-reduced-motion: reduce) { .bd-packrays { animation: none; } }

/* ---- the pack, baked (2026-10-07: "these packs are garbage looking"): the lit 3D pouch image, its tear cut on the bake's line ---- */
.bd-pack3d { position: relative; width: 250px; padding: 0; border: 0; background: none; cursor: pointer; filter: drop-shadow(0 14px 0 rgba(20, 14, 34, 0.45)) drop-shadow(0 0 40px rgba(255, 220, 140, 0.55));
  animation: bdPackIn 0.6s cubic-bezier(.2, 1.5, .4, 1) both, bdPackFloat 2.4s ease-in-out 0.6s infinite; }
/* the pack is the overlay's only button, focused on show: no rectangular box round the image (2026-10-07, the yellow
   focus box over the foil); keyboard focus (focus-visible) instead lights the pack's own outline white and lifts it
   (2026-10-08, the producer: keep a distinct keyboard treatment); a tap shows no focus mark */
.bd button.bd-pack3d:focus, .bd button.bd-pack3d:focus-visible { outline: none; }
.kbd .bd button.bd-pack3d:focus-visible { filter: drop-shadow(0 0 0 #fff) drop-shadow(0 0 3px #fff) drop-shadow(0 0 3px #fff) drop-shadow(0 0 10px #7fd3ff) drop-shadow(0 14px 0 rgba(20, 14, 34, 0.45)); }
.kbd .bd button.bd-pack3d:focus-visible .pk { transform: translateY(-4px); }
.kbd .bd button.bd-pack3d.charge:focus-visible { filter: drop-shadow(0 0 30px rgba(255, 240, 180, 0.95)) drop-shadow(0 0 70px rgba(255, 214, 110, 0.9)); }
.bd-pack3d .pk, .bd-tear .pk { display: block; width: 100%; height: auto; pointer-events: none; -webkit-user-drag: none; }
.bd-pack3d.charge { animation: bdPackCharge 0.6s ease-in both; filter: drop-shadow(0 0 30px rgba(255, 240, 180, 0.95)) drop-shadow(0 0 70px rgba(255, 214, 110, 0.9)); }
.bd-packsub { margin-top: -6px; font-size: 18px; font-weight: 800; color: #ffe9a8; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-tear { position: absolute; pointer-events: none; }
.bd-tear.top { clip-path: polygon(0% 0%, 100% 0%, 100% 14.0%, 90.0% 14.0%, 87.5% 14.0%, 85.0% 14.0%, 82.5% 14.2%, 80.0% 14.3%, 77.5% 14.5%, 75.0% 14.5%, 72.5% 14.6%, 70.0% 14.8%, 67.5% 14.8%, 65.0% 14.9%, 62.5% 14.9%, 60.0% 15.2%, 57.5% 15.1%, 55.0% 15.5%, 52.5% 15.2%, 50.0% 15.8%, 47.5% 15.4%, 45.0% 16.2%, 42.5% 15.5%, 40.0% 16.4%, 37.5% 15.9%, 35.0% 16.5%, 32.5% 16.2%, 30.0% 16.5%, 27.5% 16.8%, 25.0% 16.5%, 22.5% 17.1%, 20.0% 16.5%, 17.5% 17.4%, 15.0% 17.1%, 12.5% 17.4%, 10.0% 17.9%, 7.5% 17.1%, 0% 17.1%); animation: bdTearTop 0.9s cubic-bezier(.2, .8, .4, 1) forwards; transform-origin: 30% 10%; }
.bd-tear.bot { clip-path: polygon(0% 17.1%, 7.5% 17.1%, 10.0% 17.9%, 12.5% 17.4%, 15.0% 17.1%, 17.5% 17.4%, 20.0% 16.5%, 22.5% 17.1%, 25.0% 16.5%, 27.5% 16.8%, 30.0% 16.5%, 32.5% 16.2%, 35.0% 16.5%, 37.5% 15.9%, 40.0% 16.4%, 42.5% 15.5%, 45.0% 16.2%, 47.5% 15.4%, 50.0% 15.8%, 52.5% 15.2%, 55.0% 15.5%, 57.5% 15.1%, 60.0% 15.2%, 62.5% 14.9%, 65.0% 14.9%, 67.5% 14.8%, 70.0% 14.8%, 72.5% 14.6%, 75.0% 14.5%, 77.5% 14.5%, 80.0% 14.3%, 82.5% 14.2%, 85.0% 14.0%, 87.5% 14.0%, 90.0% 14.0%, 100% 14.0%, 100% 100%, 0% 100%); animation: bdTearBot 0.9s cubic-bezier(.4, .05, .7, 1) forwards; }
@keyframes bdTearTop { 0% { transform: none; } 18% { transform: translate(-10px, -40px) rotate(-10deg); } 100% { transform: translate(-120px, -520px) rotate(-55deg); opacity: 0; } }
@keyframes bdTearBot { 0% { transform: none; } 25% { transform: translateY(10px) scale(1.02); } 100% { transform: translateY(560px) rotate(8deg); opacity: 0; } }
img.bd-minipack { flex: none; width: 34px; height: auto; border: 0; border-radius: 0; background: none; box-shadow: none; filter: drop-shadow(0 2px 0 rgba(20, 14, 34, 0.4)); }
@media (prefers-reduced-motion: reduce) { .bd-pack3d, .bd-pack3d.charge, .bd-tear { animation: none; } .bd-tear { opacity: 0; } }

/* ---- stakes (2026-10-20): the league's hearts, the gold a loss takes back, the league again ---- */
.bd-hearts { display: inline-flex; align-items: center; gap: 3px; vertical-align: middle; }
.bd-hearts .heart { width: 15px; height: 14px; filter: none; }
.bd-hearts.top { margin-left: 6px; position: relative; top: -1px; }
.bd-hearts.top .heart.lost .h { fill: #4a3d66; }
.bd-hearts.big { display: flex; justify-content: center; gap: 8px; }
.bd-hearts.big .heart { width: 40px; height: 36px; filter: drop-shadow(0 3px 0 rgba(47, 36, 55, 0.22)); }
.bd-hearts.big.small { display: inline-flex; gap: 3px; flex: none; }
.bd-hearts.big.small .heart { width: 20px; height: 18px; }
.bd-replaytag { margin-left: 6px; padding: 0 5px; border-radius: 6px; background: #4a3d66; color: #d8d0ef; font-size: 10px; font-style: normal; letter-spacing: 1px; vertical-align: 1px; }
.bd-earn.taken { color: #ff7a7a; }
.bd-earn.taken .spent { color: #7a2f38; -webkit-text-stroke: 0; }
.bd-lastheart { max-width: 300px; font-size: 19px; font-weight: 800; line-height: 1.2; color: #ff9a9a; text-align: center; -webkit-text-stroke: 4px var(--ol); paint-order: stroke fill; }
.bd-card.again .ttl { font-size: 40px; white-space: nowrap; }
.bd-keep { max-width: 300px; font-size: 15px; font-weight: 700; line-height: 1.25; color: #3b3350; text-align: center; }
.bd-done.stakes { display: flex; align-items: center; justify-content: center; gap: 8px; max-width: 320px; font-size: 14px; line-height: 1.2; text-align: left; color: #7a2f38; }
@media (prefers-reduced-motion: reduce) { .bd-hearts .heart.breaking { animation: none; } }
.bd-replaytag.mode { background: #e0782f; color: #fff; }
/* side modes (2026-10-20): TOUCHDOWN! fits the board's width */
.bigtext.fight.td { font-size: 70px; color: #ffe36b; }
/* the first pick's hint (2026-10-23): a hand dragging a copy of the first card to its cell (quick-board.js tickHint) */
.bd-hinthand, .bd-hintcard { position: absolute; left: 0; top: 0; pointer-events: none; opacity: 0; will-change: transform, opacity; }
.bd-hinthand { z-index: 42; width: 64px; height: 76px; transform-origin: 22px 3px; filter: drop-shadow(0 4px 0 rgba(47, 36, 55, 0.35)); }
.bd-hinthand svg { display: block; }
.bd-hintcard { z-index: 41; width: 84px; height: 100px; margin: -50px 0 0 -42px; box-sizing: border-box; display: flex; align-items: center; justify-content: center;
  border: 4px solid var(--ol); border-radius: 14px; background: linear-gradient(180deg, #fff6d6, #e9d6a4); box-shadow: 0 6px 0 rgba(47, 36, 55, 0.3); }
.bd-offer.bd-hint-press { transform: translateY(5px) scale(0.96); transition: transform 0.12s; }
/* the first minutes after Clash Royale (2026-10-23, dev/design/intro/CLASH.md): the captain, the goal, the tip */
.bd-guide { position: absolute; left: -26px; bottom: 30px; z-index: 44; display: flex; align-items: flex-end; pointer-events: none; }
.bd-guide.pop { animation: bdGuideIn 0.35s cubic-bezier(.2, 1.4, .4, 1) both; }
@keyframes bdGuideIn { from { transform: translateX(-60%); opacity: 0; } to { transform: none; opacity: 1; } }
.bd-guide-pic { flex: none; filter: drop-shadow(0 8px 0 rgba(47, 36, 55, 0.35)); }
.bd-guide-say { position: relative; margin: 0 0 210px -30px; max-width: 260px; padding: 14px 18px 16px; border: 4px solid var(--ol); border-radius: 20px; background: #fffdf6;
  font-size: 22px; font-weight: 800; line-height: 1.2; color: #3b3350; box-shadow: 0 6px 0 rgba(47, 36, 55, 0.3); }
.bd-guide-say::after { content: ""; position: absolute; left: -14px; bottom: 22px; width: 18px; height: 18px; background: #fffdf6; border-left: 4px solid var(--ol); border-bottom: 4px solid var(--ol); transform: rotate(45deg); }
.bd-guide-tap { display: block; text-align: right; font-style: normal; font-size: 16px; color: #8a7fb0; animation: bdTapBob 0.9s ease-in-out infinite; }
@keyframes bdTapBob { 50% { transform: translateY(4px); } }
.bd-goaltint { position: absolute; z-index: 5; background: rgba(217, 71, 90, 0.22); pointer-events: none; animation: rdFade 0.3s both; }
.bd-goalmarks { position: absolute; inset: 0; z-index: 6; pointer-events: none; }
.bd-goalbox { position: absolute; width: 104px; height: 92px; animation: bdGoalPulse 0.8s ease-in-out infinite; }
.bd-goalbox b { position: absolute; width: 22px; height: 22px; border: 6px solid #e8414f; filter: drop-shadow(0 2px 0 rgba(47, 36, 55, 0.5)); }
.bd-goalbox .tl { left: 0; top: 0; border-right: 0; border-bottom: 0; border-radius: 6px 0 0 0; }
.bd-goalbox .tr { right: 0; top: 0; border-left: 0; border-bottom: 0; border-radius: 0 6px 0 0; }
.bd-goalbox .bl { left: 0; bottom: 0; border-right: 0; border-top: 0; border-radius: 0 0 0 6px; }
.bd-goalbox .br { right: 0; bottom: 0; border-left: 0; border-top: 0; border-radius: 0 0 6px 0; }
@keyframes bdGoalPulse { 50% { transform: scale(1.07); } }
.bigtext.fight.goal { font-size: 62px; color: #fff; }
.bd-hinthand.tap { z-index: 46; }
.bd-tip { gap: 14px; }
.bd-tip-say { font-size: 22px; font-weight: 800; color: #3b3350; text-align: center; }
.bd-tip-row { display: flex; gap: 14px; justify-content: center; }
.bd-tip-card { width: 96px; height: 116px; display: flex; align-items: flex-end; justify-content: center; overflow: hidden; border: 4px solid var(--ol); border-radius: 14px; background: linear-gradient(180deg, #fff6d6, #e9d6a4); box-shadow: 0 5px 0 rgba(47, 36, 55, 0.3); }
@media (prefers-reduced-motion: reduce) { .bd-guide.pop, .bd-goalbox, .bd-guide-tap { animation: none; } }
.bd-guide-say.float { position: absolute; z-index: 44; margin: 0; pointer-events: none; }
.bd-guide-say.float.pop { animation: bdGuideIn2 0.3s cubic-bezier(.2, 1.4, .4, 1) both; }
@keyframes bdGuideIn2 { from { transform: scale(0.7); opacity: 0; } to { transform: none; opacity: 1; } }
.bd-guide-say.float.at-cards { right: 34px; top: 770px; width: 210px; }
.bd-guide-say.float.at-cards::after { left: -14px; bottom: auto; top: 26px; }
.bd-guide-say.float.at-fight { right: 24px; bottom: 150px; }
.bd-guide-say.float.at-fight::after { left: auto; right: 70px; bottom: -14px; transform: rotate(-45deg); }
@media (prefers-reduced-motion: reduce) { .bd-guide-say.float.pop { animation: none; } }
