@font-face{font-family:'Manrope';src:url(/meet-day/fonts/manrope-latin.woff2) format('woff2');font-weight:200 800;font-display:swap}
@font-face{font-family:'Fira Code';src:url(/meet-day/fonts/fira-code-latin.woff2) format('woff2');font-weight:300 700;font-display:swap}

:root{
  --bg:#0D0D0D; --card:#141414; --card2:#191919; --line:#272524; --line2:#332F2C;
  --fg:#F5F3EF; --muted:#8F8A83; --dim:#635E58;
  --ember:#FF6B35; --gold:#FFB800;
  --low-bg:#33201C; --low-fg:#E8A08B;
  --plan-bg:#3A2A15; --plan-fg:#FFC886;
  --high-bg:#16302A; --high-fg:#79D6AC;
  --made:#4ED09A; --missed:#E85C4A;
  --radius:10px;
}
.paper{
  --bg:#FFFFFF; --card:#FFFFFF; --card2:#F7F6F3; --line:#DCD8D1; --line2:#C9C4BC;
  --fg:#100F0D; --muted:#57534C; --dim:#8A857D;
  --ember:#C64A1B; --gold:#9A6E00;
  --low-bg:#FBEAE6; --low-fg:#96361F;
  --plan-bg:#FDF2E0; --plan-fg:#93590F;
  --high-bg:#E6F4ED; --high-fg:#1B6746;
  --made:#1B6746; --missed:#A62B18;
}

*{box-sizing:border-box}
/* Several containers below carry a display rule, which would otherwise beat the
   hidden attribute the sheet toggles them with. */
[hidden]{display:none!important}
body{
  margin:0; background:var(--bg); color:var(--fg);
  font-family:'Fira Code',ui-monospace,monospace;
  font-size:14px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums;
}
h1,h2,h3,.h{font-family:'Manrope',system-ui,sans-serif;font-weight:800;text-wrap:balance;margin:0}
input,button{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:none}
:focus-visible{outline:2px solid var(--ember);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.wrap{max-width:1440px;margin:0 auto;padding:0 14px 120px}

/* ── header ───────────────────────────────────── */
.top{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}
.top-in{max-width:1440px;margin:0 auto;padding:12px 14px 0}
.brand{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mark{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,#FF6B35,#FFB800);
  display:grid;place-items:center;font-family:'Manrope';font-weight:800;font-size:13px;color:#0D0D0D;flex:none}
.brand h1{font-size:17px;letter-spacing:-.01em}
.chip{font-size:10px;letter-spacing:.09em;text-transform:uppercase;padding:3px 8px;border-radius:999px;
  background:var(--card2);color:var(--muted);border:1px solid var(--line)}
.chip.on{color:var(--made);border-color:color-mix(in srgb,var(--made) 35%,transparent)}
.spacer{flex:1}

/* Lifter and flight share the first row on a phone; the meet link, which is
   long, takes the whole of the second. */
.idrow{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px 0 2px}
.idrow .field:last-child{grid-column:1/-1}
@media(min-width:700px){
  .idrow{grid-template-columns:1.1fr auto 1.4fr}
  .idrow .field:last-child{grid-column:auto}
}
.field.tight input{width:2.4em;text-align:center;text-transform:uppercase}
.field{display:flex;align-items:center;gap:9px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:9px 12px}
.field label{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--dim);flex:none}
.field input{background:none;border:none;width:100%;padding:0;font-size:14px}
.field input::placeholder{color:var(--dim)}

/* ── control bar ──────────────────────────────── */
.ctl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 0}
.seg{display:inline-flex;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:2px}
.seg button{padding:5px 12px;border-radius:6px;font-size:12px;color:var(--muted);transition:.12s}
.seg button[aria-pressed="true"]{background:var(--fg);color:var(--bg);font-weight:600}
.seg .lab{padding:5px 8px 5px 10px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}

.total{margin-left:auto;display:flex;align-items:baseline;gap:9px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:6px 13px}
.total .k{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--dim)}
.total .v{font-family:'Manrope';font-weight:800;font-size:22px;letter-spacing:-.02em;
  background:linear-gradient(135deg,#FF6B35,#FFB800);-webkit-background-clip:text;background-clip:text;color:transparent}
.paper .total .v{background:none;color:var(--fg);-webkit-text-fill-color:currentColor}
.total .s{font-size:12px;color:var(--muted)}

/* ── lift tabs ────────────────────────────────── */
.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:6px 0 14px}
.tabs button{padding:11px 4px;border-radius:9px;background:var(--card);border:1px solid var(--line);
  font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);transition:.12s}
.tabs button[aria-selected="true"]{background:var(--card2);color:var(--fg);border-color:var(--line2)}
.tabs button[aria-selected="true"] .bar{background:var(--ember)}
.tabs .bar{display:block;height:2px;width:26px;margin:7px auto -1px;background:var(--line2);border-radius:2px}
.tabs .best{display:block;font-size:11px;letter-spacing:0;text-transform:none;color:var(--dim);margin-top:3px}

.grid{display:grid;gap:16px}
.panel{display:none}
.panel.active{display:block}
@media(min-width:1100px){
  .tabs{display:none}
  .grid{grid-template-columns:repeat(3,1fr);align-items:start}
  .panel{display:block}
}

/* ── sections ─────────────────────────────────── */
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.card + .card{margin-top:12px}
.card-h{display:flex;align-items:center;gap:9px;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--card2)}
.card-h h3{font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--fg)}
.card-h .n{font-size:11px;color:var(--dim);margin-left:auto;text-align:right}
@media(max-width:699px){.brand .chip.acct{display:none}}
.liftname{font-family:'Manrope';font-weight:800;font-size:15px;letter-spacing:-.01em;text-transform:none}

/* warmups */
.wu{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line)}
.wu:last-child{border-bottom:none}
.wu .idx{width:15px;font-size:11px;color:var(--dim);flex:none}
.num{width:74px;flex:none;background:var(--card2);border:1px solid var(--line);border-radius:7px;
  padding:6px 8px;text-align:right;font-size:14px;font-weight:500;transition:.12s}
.num:focus{border-color:var(--ember);background:var(--bg)}
.num.small{width:46px;text-align:center}
.alt{font-size:11px;color:var(--dim);width:64px;flex:none}
.reps{font-size:11px;color:var(--dim);flex:none}
.wu .strip{margin-left:auto}

/* plate strip — side-on IPF plates standing on the bar */
.strip{display:flex;align-items:flex-end;gap:0;height:36px}
.plates{display:flex;align-items:flex-end;gap:2px;padding:0 5px 0 3px;
  border-bottom:2px solid #6A6F76;border-radius:0 0 1px 1px;min-width:16px}
.plate{width:8px;border-radius:2px 2px 1px 1px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.4)}
.plate.thin{width:5px}
.plate.light{box-shadow:inset 0 0 0 1px rgba(0,0,0,.28)}
.plate.dark{box-shadow:inset 0 0 0 1px rgba(255,255,255,.45)}
.paper .plate.dark{background:#141414!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.strip .txt{align-self:center;font-size:11px;color:var(--muted);padding-left:8px;white-space:nowrap}
.strip .per{color:var(--dim)}
.strip.bad .txt{color:var(--missed)}
.paper .plates{border-bottom-color:#100F0D}

/* attempts */
.att{padding:10px 14px;border-bottom:1px solid var(--line)}
.att:last-child{border-bottom:none}
.att-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.att-h .ord{font-family:'Manrope';font-weight:800;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.att-h .hint{font-size:10px;color:var(--dim);margin-left:auto;letter-spacing:.04em}
/* On paper the judge buttons are gone, so this word is the whole verdict. */
.att-h .hint.made{color:var(--made)}
.att-h .hint.missed{color:var(--missed)}
.opt{display:flex;align-items:center;gap:9px;padding:5px 9px;border-radius:8px;margin-bottom:3px;
  background:transparent;transition:.12s;width:100%;text-align:left;cursor:pointer}
.opt:last-child{margin-bottom:0}
.opt .pickbtn{display:flex;align-items:center;gap:9px;flex:none;padding:2px 0}
.opt .tag{font-size:10px;letter-spacing:.1em;text-transform:uppercase;width:38px;flex:none;color:var(--dim)}
.opt .alt{width:auto;min-width:56px}
.opt[data-k="low"].sel{background:var(--low-bg)}
.opt[data-k="low"].sel .tag{color:var(--low-fg)}
.opt[data-k="plan"].sel{background:var(--plan-bg)}
.opt[data-k="plan"].sel .tag{color:var(--plan-fg)}
.opt[data-k="high"].sel{background:var(--high-bg)}
.opt[data-k="high"].sel .tag{color:var(--high-fg)}
.opt:not(.sel):hover{background:var(--card2)}
.pick{width:13px;height:13px;border-radius:50%;border:1.5px solid var(--line2);flex:none;transition:.12s}
.opt.sel .pick{border-color:currentColor;background:currentColor;box-shadow:inset 0 0 0 2.5px var(--card)}
.opt[data-k="low"].sel .pick{color:var(--low-fg);box-shadow:inset 0 0 0 2.5px var(--low-bg)}
.opt[data-k="plan"].sel .pick{color:var(--plan-fg);box-shadow:inset 0 0 0 2.5px var(--plan-bg)}
.opt[data-k="high"].sel .pick{color:var(--high-fg);box-shadow:inset 0 0 0 2.5px var(--high-bg)}

.result{display:flex;align-items:center;gap:10px;margin-top:7px;padding-left:9px}
.result .strip{flex:1}
.judge{display:inline-flex;gap:4px;flex:none}
.judge button{width:32px;height:28px;border-radius:7px;border:1px solid var(--line);background:var(--card2);
  font-size:13px;color:var(--dim);display:grid;place-items:center;transition:.12s}
.judge button.on[data-v="1"]{background:color-mix(in srgb,var(--made) 20%,transparent);
  border-color:var(--made);color:var(--made)}
.judge button.on[data-v="0"]{background:color-mix(in srgb,var(--missed) 20%,transparent);
  border-color:var(--missed);color:var(--missed)}
.att.done{opacity:.72}
.att.done:hover{opacity:1}

/* ── save bar ─────────────────────────────────── */
.savebar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:color-mix(in srgb,var(--bg) 92%,transparent);
  backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.savebar-in{max-width:1440px;margin:0 auto;padding:9px 14px;display:flex;align-items:center;gap:7px;
  overflow-x:auto;-webkit-overflow-scrolling:touch}
.savebar .auto{font-size:11px;color:var(--dim);flex:none;padding-right:5px;white-space:nowrap}
.btn{flex:none;padding:8px 13px;border-radius:8px;border:1px solid var(--line);background:var(--card);
  font-size:12px;color:var(--fg);white-space:nowrap;transition:.12s}
.btn:hover{border-color:var(--line2);background:var(--card2)}
.btn.primary{background:linear-gradient(135deg,#FF6B35,#FFB800);color:#0D0D0D;font-weight:600;border-color:transparent}
.paper .btn.primary{background:var(--fg);color:var(--bg)}

.toast{position:fixed;left:50%;bottom:70px;transform:translateX(-50%) translateY(10px);z-index:40;
  background:var(--fg);color:var(--bg);padding:9px 16px;border-radius:9px;font-size:12px;font-weight:500;
  opacity:0;pointer-events:none;transition:.18s}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.foot{text-align:center;padding:26px 14px 8px;font-size:11px;color:var(--dim);line-height:1.9}
.foot a{color:var(--ember);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--ember) 35%,transparent)}

/* ── paper / print view ───────────────────────── */
.paper .top{position:static;border-bottom:2px solid var(--fg)}
.paper .ctl .seg,.paper .tabs,.paper .judge,.paper .chip,.paper .card-h .n.hint{display:none}
/* The save bar stays — it carries the only way back out of print view. Only the
   toggle survives; everything else is screen-only, and print drops it too. */
.paper .savebar{position:static;background:none;backdrop-filter:none;border-top:1px solid var(--line)}
.paper .savebar-in{justify-content:center;padding:14px;overflow:visible}
.paper .savebar .auto,.paper .savebar .btn:not([data-act="print"]){display:none}
.paper .ctl{padding-bottom:14px}
.paper .grid{grid-template-columns:repeat(3,1fr);gap:10px}
.paper .panel{display:block}
.paper .num{border-color:var(--line2);background:transparent}
.paper .card{break-inside:avoid}
.paper .mark{background:var(--fg)}
/* The mark is an <img>, so `color` cannot reach it; on the dark paper tile the
   #0d0d0d logo rendered black-on-black. Invert it to a white knockout. */
.paper .mark img{filter:invert(1)}
.paper .wrap{padding-bottom:20px}
@media print{
  /* Printing straight from the screen view has to land on paper too — a handler
     hits Ctrl+P, not our button — so the light palette is bound to the print
     media itself rather than to the .paper class. */
  :root{
    --bg:#FFFFFF; --card:#FFFFFF; --card2:#F7F6F3; --line:#DCD8D1; --line2:#C9C4BC;
    --fg:#100F0D; --muted:#57534C; --dim:#8A857D;
    --ember:#C64A1B; --gold:#9A6E00;
    --low-bg:#FBEAE6; --low-fg:#96361F;
    --plan-bg:#FDF2E0; --plan-fg:#93590F;
    --high-bg:#E6F4ED; --high-fg:#1B6746;
    --made:#1B6746; --missed:#A62B18;
  }
  /* The plate colours ARE the information — a loader reads the bar by them —
     and so is the tint on the declared attempt. Both are backgrounds, which
     the print dialog drops unless the page insists. */
  *,*::before,*::after{-webkit-print-color-adjust:exact;print-color-adjust:exact}

  /* Screen-only chrome. The toast is position:fixed, so left in it stamps its
     text across every printed page, not just the first. */
  .savebar,.tabs,.judge,.chip,.seg,.card-h .n.hint,
  .toast,.dialog,.noscript{display:none!important}
  /* The footer's how-to paragraph and Clear button are for someone holding a
     mouse; they cost a third of a page on paper. The line that says where the
     sheet came from earns its two lines — a printed sheet gets passed around a
     warm-up room. */
  .foot p:first-of-type,.foot p:last-of-type{display:none!important}
  .foot{padding:6px 0 0!important;font-size:9px!important;line-height:1.45!important}
  .foot a{border-bottom:none}
  .grid{grid-template-columns:repeat(3,1fr)!important}
  .panel{display:block!important}
  .top{position:static!important;border-bottom:2px solid var(--fg)}
  /* The input boxes set the height of every warm-up and attempt row — fifteen
     of them — so trimming their padding is most of the page budget. */
  .num{border-color:var(--line2)!important;background:transparent!important;
    padding:2px 8px!important;line-height:1.3}
  .total .v{background:none!important;color:var(--fg)!important;-webkit-text-fill-color:currentColor}
  .mark{background:var(--fg)!important}
  .mark img{filter:invert(1)!important}
  .plates{border-bottom-color:#100F0D!important}
  .plate.dark{background:#141414!important}
  /* Judged rows are the ones a handler most needs to read; the screen's fade
     marks them as settled, on paper it just makes them faint. */
  .att.done{opacity:1}

  /* ── fit the whole sheet on one page ──────────
     A landscape Letter page leaves ~740px of usable height once the browser's
     own margins are taken, and the attempts card cannot split (break-inside is
     avoid), so a sheet even slightly over budget does not spill a few rows — it
     throws the entire card onto a second page and leaves the first half empty.
     Every number below buys height back; the sheet is a worksheet read at arm's
     length on a platform, not body copy, so the tighter rhythm costs nothing. */
  .wrap{padding-bottom:0!important}
  .top-in{padding-top:0!important}
  .brand{margin-bottom:2px}
  .idrow{padding:6px 0 0!important}
  .field{padding:6px 10px!important}
  .ctl{padding:6px 0!important}
  .total{padding:2px 10px!important}
  .total .v{font-size:16px!important}
  .grid{gap:10px!important}
  .card + .card{margin-top:9px}
  .card-h{padding:5px 12px!important}
  .wu{padding:4px 12px!important}
  .att{padding:4px 12px!important}
  .opt{padding:2px 8px!important;margin-bottom:0}
  /* Plate heights are inline pixels — the real relative disc diameters — so the
     strip is shrunk by scaling it whole rather than by capping each plate,
     which would flatten a 25 and a 5 into the same height. */
  .strip{height:22px!important}
  .plates{transform:scale(.70);transform-origin:bottom left}
  .result{margin-top:4px!important}
  .att-h{margin-bottom:1px!important}
}

/* ── page chrome added on top of the approved mockup ──────────────────── */
.mark{text-decoration:none}
.mark img{width:15px;height:11px;display:block}
/* Print view swaps the mark's ember tile for a dark one, so the logo inside is
   inverted to stay visible — see `.paper .mark img` and the print block. */

.foot p{margin:0 0 9px;max-width:62ch;margin-inline:auto}
.foot p:last-child{margin-bottom:0}
.linkish{color:var(--dim);text-decoration:underline;text-underline-offset:3px;font-size:11px}
.linkish:hover{color:var(--missed)}

.noscript{max-width:62ch;margin:34px auto;padding:14px 16px;border-radius:var(--radius);
  background:var(--card);border:1px solid var(--line);color:var(--muted);text-align:center}

/* ── email dialog ─────────────────────────────────────────────────────── */
.dialog{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:18px;
  background:color-mix(in srgb,#000 62%,transparent);backdrop-filter:blur(3px)}
.dialog[hidden]{display:none}
.dialog-card{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line2);
  border-radius:14px;padding:20px}
.dialog-card h2{font-size:16px;margin-bottom:8px}
.dialog-card p{margin:0 0 14px;font-size:12px;color:var(--muted);line-height:1.65}
.dialog-card input[type="email"]{width:100%;background:var(--card2);border:1px solid var(--line);
  border-radius:8px;padding:10px 12px;font-size:14px}
.dialog-card input[type="email"]:focus{border-color:var(--ember);background:var(--bg)}
.dialog-card input[type="email"]::placeholder{color:var(--dim)}
/* Off-screen rather than display:none — bots skip what is not rendered. */
#email-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.dialog-card .status{margin:10px 0 0;min-height:16px;font-size:11px;color:var(--gold)}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.dialog-actions .btn{flex:none}
.btn[disabled]{opacity:.55;cursor:default}

/* ── build (fills a lift from one number) ─────── */
.card.build{background:var(--card2)}
.card.build .card-h{background:transparent}
.seg.tiny{margin-left:auto;padding:2px}
.seg.tiny button{padding:4px 9px;font-size:11px;border-radius:5px}
.build-row{display:flex;align-items:center;gap:10px;padding:11px 14px}
.build-row .go{margin-left:auto}
.pctline{display:flex;align-items:center;gap:7px;width:100%;padding:2px 14px 11px;
  font-size:11px;color:var(--dim);text-align:left}
.pctline .v{color:var(--fg);font-weight:500}
.pctline .tagged{font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;
  border-radius:999px;background:color-mix(in srgb,var(--gold) 15%,transparent);color:var(--gold);
  border:1px solid color-mix(in srgb,var(--gold) 30%,transparent)}
.pctline .edit{margin-left:auto;text-decoration:underline;text-underline-offset:3px}
.pctline:hover .v,.pctline:hover .edit{color:var(--gold)}
.pctedit{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:9px 14px 12px;
  border-top:1px solid var(--line)}
.pctedit label{display:flex;align-items:center;gap:5px}
.pctedit label span{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.pctedit label em{font-style:normal;font-size:11px;color:var(--dim)}

.pctedit .btn{padding:6px 11px}

/* The build card is a tool for filling the sheet in, not part of the sheet a
   handler reads at the platform, so print and paper view drop it. */
.paper .card.build{display:none}
@media print{.card.build{display:none!important}}
.pctacts{display:flex;align-items:center;gap:10px;margin-left:auto}
.build-row .go .ln{display:none}
@media(min-width:1100px){.build-row .go .ln{display:inline}}


/* ── roster strip ─────────────────────────────── */
.roster{display:flex;align-items:center;gap:6px;padding:12px 0 0;
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.roster::-webkit-scrollbar{display:none}
.roster:empty{display:none}
.lifterbtn{flex:none;display:flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;
  background:var(--card);border:1px solid var(--line);color:var(--muted);font-size:12.5px;transition:.12s}
.lifterbtn:hover{border-color:var(--line2);color:var(--fg)}
.lifterbtn[aria-pressed="true"]{background:var(--card2);border-color:var(--line2);color:var(--fg);font-weight:500}
.lifterbtn .fl{font-size:9px;letter-spacing:.1em;font-weight:600;width:16px;height:16px;flex:none;
  display:grid;place-items:center;border-radius:4px;background:var(--line);color:var(--muted)}
.lifterbtn[aria-pressed="true"] .fl{background:var(--ember);color:#0D0D0D}
/* The chip and its remove button are separate controls sharing one pill. */
.lifterwrap{flex:none;display:flex;align-items:center;border-radius:999px;
  background:var(--card);border:1px solid var(--line)}
.lifterwrap.on{background:var(--card2);border-color:var(--line2)}
.lifterwrap .lifterbtn{background:none;border:none;border-radius:999px 0 0 999px}
.lifterwrap:not(:has(.dropbtn)) .lifterbtn{border-radius:999px}
.dropbtn{flex:none;width:24px;align-self:stretch;display:grid;place-items:center;
  border-radius:0 999px 999px 0;font-size:14px;line-height:1;color:var(--dim);
  padding-right:3px;transition:.12s}
.dropbtn:hover{background:var(--missed);color:var(--bg)}
.addbtn{flex:none;padding:7px 12px;border-radius:999px;border:1px dashed var(--line2);
  color:var(--dim);font-size:12.5px;transition:.12s}
.addbtn:hover{color:var(--fg);border-color:var(--muted)}
.rsep{flex:none;width:1px;height:22px;background:var(--line);margin:0 3px}
.boardbtn{flex:none;display:flex;align-items:center;gap:7px;padding:7px 13px;border-radius:999px;
  background:var(--card);border:1px solid color-mix(in srgb,var(--gold) 34%,transparent);
  color:var(--gold);font-size:12.5px;transition:.12s}
.boardbtn[aria-pressed="true"]{background:linear-gradient(135deg,#FF6B35,#FFB800);color:#0D0D0D;
  font-weight:600;border-color:transparent}
.boardbtn .cnt{font-size:10px;padding:1px 6px;border-radius:999px;
  background:color-mix(in srgb,#000 22%,transparent)}

/* ── board ────────────────────────────────────── */
.bgroup{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.bgroup + .bgroup{margin-top:12px}
/* The group at the top of the board is the one being called now. */
.bgroup.next{border-color:color-mix(in srgb,var(--gold) 30%,transparent)}
.bgroup-h{display:flex;align-items:center;gap:9px;padding:10px 14px;
  border-bottom:1px solid var(--line);background:var(--card2)}
.bgroup-h .fl{font-family:'Manrope',system-ui,sans-serif;font-weight:800;font-size:10px;
  letter-spacing:.1em;padding:3px 7px;border-radius:5px;background:var(--line);color:var(--fg);flex:none}
.bgroup.next .bgroup-h .fl{background:var(--ember);color:#0D0D0D}
.bgroup-h h3{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--fg)}
.bgroup-h .rd{font-size:11px;color:var(--dim);margin-left:auto}

.board{margin-top:14px}
.brow{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:11px 14px;
  border-bottom:1px solid var(--line)}
.brow:last-child{border-bottom:none}
.brow .who{min-width:0;flex:1;text-align:left;padding:0}
.brow .who .nm{display:block;font-family:'Manrope',system-ui,sans-serif;font-weight:700;
  font-size:14px;letter-spacing:-.01em;color:var(--fg);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brow .who .sub{display:block;font-size:10.5px;color:var(--dim);letter-spacing:.04em}
.brow .who:hover .nm{color:var(--gold)}
.brow .wt{text-align:right;flex:none}
.brow .wt .kg{font-family:'Manrope',system-ui,sans-serif;font-weight:800;font-size:19px;letter-spacing:-.02em}
.brow .wt .lb{display:block;font-size:10.5px;color:var(--dim);margin-top:-2px}
.brow .judge button{width:34px;height:30px}
/* On a phone the strip drops to its own line under the name; from tablet up it
   sits between the name and the weight, where a loader reads it. */
.brow .strip{order:4;flex-basis:100%;height:30px;margin-top:-3px}
@media(min-width:700px){
  /* A fixed name column lines the plate strips up under each other, so the
     board reads as one ramp rather than four unrelated rows. */
  .brow .who{flex:0 0 30%}
  .brow .strip{order:0;flex-basis:auto;flex:1;height:34px;margin-top:0}
}

.emptyboard{background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:28px 16px;text-align:center;color:var(--muted);font-size:12.5px;line-height:2}
.emptyboard b{color:var(--fg);font-weight:500}

/* ── print view with a roster ─────────────────── */
/* One block per lifter, each keeping the three-column layout inside it. */
.paper .grid.multi{display:block}
.paper .grid.multi .lifterblock{margin-bottom:22px;break-after:page}
.paper .grid.multi .lifterblock:last-child{break-after:auto}
.paper .grid.multi .panels{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.lifterhead{display:flex;align-items:baseline;gap:10px;font-size:17px;letter-spacing:-.01em;
  padding:0 0 9px;margin-bottom:11px;border-bottom:1px solid var(--line2)}
.lifterhead .fl{font-family:'Fira Code',ui-monospace,monospace;font-weight:400;
  font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.paper .roster,.paper .board{display:none}
@media print{
  .roster,.board{display:none!important}
  .grid.multi{display:block!important}
  .grid.multi .panels{grid-template-columns:repeat(3,1fr)!important}
  .grid.multi .lifterblock{break-after:page}
}
