/* Bootcamp (/academy/bootcamp). Loads after academy.css, which carries the page
   head, position boards and the intake finale. Everything reads without
   JavaScript; js/bootcamp.js adds the scenes. */
.ac-crumb { display: inline-block; width: 1px; height: .9em; margin: 0 .7rem; vertical-align: -.1em; background: var(--line-2); transform: rotate(20deg); }

/* ---------- Entry: approved, not scheduled ---------- */
.bc-split { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(2.5rem, 7vw, 7rem); align-items: center; }
.bc-checks { padding: clamp(1.75rem, 3.5vw, 2.75rem); }
.bc-checks ul { display: grid; }
.bc-checks li { display: flex; align-items: center; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--line); font-size: 1.0625rem; }
.bc-checks li:first-child { padding-top: 0; }
.tick, .cross { flex: none; width: 1.35rem; height: 1.35rem; overflow: visible; }
.tick path, .cross path { fill: none; stroke: var(--fg); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.bc-not { display: flex; align-items: center; gap: 1rem; padding-top: 1rem; color: var(--muted); font-size: 1.0625rem; }
.cross path { stroke: var(--muted); }
/* the strike runs through every line the phrase wraps to: the inner span stays
   inline and each line fragment draws its own rule (--st draws it in) */
.bc-not-txt > span { padding: 0 .15rem; margin: 0 -.15rem; background-image: linear-gradient(var(--fg-2), var(--fg-2)); background-repeat: no-repeat; background-position: 0 55%; background-size: calc(var(--st, 1) * 100%) 1.25px; -webkit-box-decoration-break: clone; box-decoration-break: clone; }

/* ---------- Session format, timed by a chess clock ---------- */
.bc-format { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2.5rem, 7vw, 7rem); align-items: start; }
.bc-format-side { position: sticky; top: calc(var(--nav-h) + 2rem); }
.bc-clock { position: relative; display: inline-grid; grid-template-columns: auto auto; gap: 4px; margin-top: clamp(2rem, 5vh, 3rem); padding-top: 12px; }
.bc-clock .lever { position: absolute; top: 0; left: 50%; width: 38px; height: 7px; margin-left: -19px; background: var(--fg); border-radius: 3px 3px 0 0; transform: translateX(var(--lx, -34px)) rotate(var(--lr, -6deg)); transform-origin: 50% 100%; }
.bc-clock .face { display: flex; align-items: center; justify-content: center; width: clamp(6.5rem, 10vw, 8.25rem); aspect-ratio: 1.08; border: 1px solid var(--line-2); background: var(--bg); }
.bc-clock .face-a { border-radius: 14px 3px 3px 14px; }
.bc-clock .face-b { border-radius: 3px 14px 14px 3px; }
.bc-clock .dial { width: 68%; height: auto; overflow: visible; }
.dial .rim { fill: none; stroke: var(--fg); stroke-width: 1.1; }
.dial line { stroke: var(--fg-2); stroke-width: 1; stroke-linecap: round; }
.dial .hand { stroke: var(--fg); stroke-width: 1.7; transform-origin: 20px 20px; transform-box: view-box; }
.dial .hub { fill: var(--fg); }
.bc-clock .cap { grid-column: 1 / -1; margin-top: .8rem; font-size: .875rem; color: var(--fg-2); }
.bc-clock .cap b { font-family: var(--display); font-weight: 400; color: var(--fg); }
.bc-moves { display: grid; }
.bc-move { display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: 1rem; align-items: baseline; padding: clamp(1.4rem, 3vh, 2rem) 0; border-top: 1px solid var(--line); transition: color .45s var(--ease); }
.bc-move:last-child { border-bottom: 1px solid var(--line); }
.bc-move .no { font-family: var(--display); font-size: 1rem; }
.bc-move p { font-family: var(--sans); font-size: 1.125rem; line-height: 1.5; }
/* while the clock runs, moves not yet played are pencilled in */
.bc-format.live .bc-move { color: var(--muted); }
.bc-format.live .bc-move.on { color: var(--fg); }

/* ---------- The trade journal: a scoresheet ---------- */
/* the board drawing and the pieces waiting off the board never widen the page */
.bc-journal-sec, .b20 { overflow-x: clip; }
.jr-stage { position: relative; margin-top: clamp(3rem, 7vw, 5rem); }
.jr-drawing { top: -3rem; right: -2rem; width: 22rem; height: 18rem; --sq: 4.5rem; }
.jr-sheet { position: relative; z-index: 1; padding: clamp(1.5rem, 3.5vw, 3rem); }
.jr-top { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; flex-wrap: wrap; padding-bottom: 1rem; border-bottom: 1px solid var(--fg); }
.jr-top b { font-weight: 400; font-size: clamp(1.05rem, 1.6vw, 1.35rem); }
.jr-top span { font-size: .875rem; color: var(--fg-2); }
.jr-cols { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 4.5rem); margin-top: 1.5rem; }
.jr-h { font-weight: 500; font-size: .8125rem; letter-spacing: .02em; color: var(--muted); padding-bottom: .5rem; border-bottom: 1px solid var(--line-2); }
.jr-row { display: grid; grid-template-columns: 2.25rem minmax(0, auto) minmax(2rem, 1fr); gap: .75rem; align-items: baseline; padding: .7rem 0; border-bottom: 1px solid var(--line); }
.jr-row .no { font-family: var(--display); font-size: .8125rem; color: var(--fg-2); }
.jr-row .f { font-size: 1rem; }
/* the space left to write the value in */
.jr-row .w { align-self: end; height: 1px; margin-bottom: .45rem; background-image: linear-gradient(90deg, var(--line-2) 50%, transparent 0); background-size: 5px 1px; }
.jr-col.after .jr-h { position: relative; }

/* ---------- STEP-20: the tournament board (ported from the home page) ---------- */
.b20-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2.5rem, 7vw, 7rem); align-items: center; }
.b20-count { margin-top: 2rem; display: flex; align-items: baseline; gap: .75rem; }
.b20-count b { font-family: var(--display); font-weight: 400; font-size: clamp(2.75rem, 5vw, 4.25rem); line-height: 1; letter-spacing: -.02em; }
.b20-count span { color: var(--fg-2); }
.b20-legend { display: grid; gap: .55rem; margin-top: 1.75rem; font-size: .9375rem; max-width: 24rem; }
.b20-legend li { display: flex; gap: .8rem; align-items: center; color: var(--fg-2); }
.b20-legend .key { position: relative; width: 1.75rem; height: 1.75rem; flex: none; display: flex; align-items: center; justify-content: center; }
.b20-legend .key [data-piece] { width: 100%; height: 100%; }
.b20-legend .c { margin-left: auto; font-variant-numeric: tabular-nums; color: var(--muted); }
.b20-legend .k-sub { display: block; width: 100%; height: 100%; opacity: .55; }
.b20-legend .k-tip { display: block; width: 100%; height: 100%; transform: rotate(84deg) translate(18%, 4%); transform-origin: 50% 88%; }
.b20-legend .k-ring { position: absolute; inset: -2px; overflow: visible; }
.b20-legend .k-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--muted); }
.b20-detail { margin-top: 1.5rem; min-height: 4.5rem; font-size: .9375rem; color: var(--fg-2); max-width: 26rem; }
.b20-detail b { display: block; color: var(--fg); font-weight: 600; }
.b20-stage { position: relative; }
.b20-stage .drawing { bottom: -1rem; left: -2.5rem; width: 62%; height: 78%; --sq: 3.75rem; }
.b20-card { z-index: 1; padding: clamp(1.25rem, 3vw, 2rem) clamp(1.25rem, 3vw, 2rem) clamp(.75rem, 2vw, 1.25rem) clamp(.5rem, 1.5vw, 1rem); }
.b20-note { position: relative; z-index: 1; margin-top: 1.5rem; max-width: 34rem; }
.b20 .tboard { display: grid; grid-template-columns: 1.25rem repeat(5, 1fr); grid-template-rows: repeat(4, auto) 1.5rem; position: relative; }
.b20 .tboard .rk, .b20 .tboard .fl { font-size: .75rem; color: var(--muted); display: flex; align-items: center; justify-content: center; }
.b20 .tboard .fl { font-family: var(--display); font-size: .75rem; }
.b20 .tboard .sq { position: relative; aspect-ratio: 1; background: var(--tb-l); border: 0; display: flex; align-items: center; justify-content: center; }
.b20 .tboard .sq.d { background: var(--tb-d); background-image: linear-gradient(135deg, rgba(255,255,255,.07), transparent 55%); }
.b20 .tboard .sq:focus-visible { outline-offset: -3px; z-index: 3; }
.b20 .tboard .sq[aria-pressed="true"]::before { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 2px var(--fg); z-index: 2; }
.b20 .tboard .frame { position: absolute; left: 1.25rem; right: 0; top: 0; bottom: 1.5rem; border: 1px solid var(--tb-edge); pointer-events: none; }
.b20 .tboard .man { position: absolute; left: 14%; right: 14%; top: 10%; bottom: 10%; z-index: 1; }
.b20 .tboard .man .pc { filter: drop-shadow(0 5px 4px rgba(0,0,0,.14)); }
.b20 .tboard .man.tip { transform: translate(-20%, 8%) rotate(80deg) scale(.7); transform-origin: 50% 88%; }
.b20 .tboard .ring { position: absolute; inset: 9%; overflow: visible; pointer-events: none; z-index: 1; }
.b20 .tboard .ring circle { fill: none; stroke: var(--fg); stroke-width: 1.4; stroke-dasharray: 4 4; }
.b20 .tboard .sq.d .ring circle { stroke: var(--tb-l); }
.b20 .tboard .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--muted); }
.b20 .tboard .sq.d .dot { background: var(--tb-l); opacity: .7; }
.b20 .tboard .sq[data-s="submitted"] .man { opacity: .55; }

/* ---------- Outcomes and the funding note ---------- */
.bc-outs { margin-top: clamp(3rem, 7vw, 5rem); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2vw, 1.5rem); }
.bc-out { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(1.25rem, 2.5vw, 2rem); align-items: start; padding: clamp(1.5rem, 3vw, 2.25rem); }
.out-pos { --pos-s: clamp(3rem, 4.2vw, 3.75rem); }
.bc-out h3 { font-size: clamp(1.4rem, 2.2vw, 1.9rem); line-height: 1.15; }
.bc-out p { margin-top: .7rem; color: var(--fg-2); }
.bc-funding { margin-top: clamp(4rem, 9vw, 7rem); display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(2rem, 6vw, 6rem); align-items: end; padding-top: clamp(2rem, 4vw, 3rem); border-top: 1px solid var(--fg); }
.bc-funding h3 { font-size: clamp(1.6rem, 3.2vw, 2.75rem); line-height: 1.22; }
.bc-funding p { color: var(--fg-2); font-size: 1.125rem; }
.bc-funding .link { margin-top: .5rem; }

@media (max-width: 1100px) {
  .bc-outs { grid-template-columns: 1fr; max-width: 40rem; }
}
@media (max-width: 960px) {
  .bc-split, .bc-format, .b20-grid, .bc-funding { grid-template-columns: 1fr; }
  .bc-format-side { position: static; }
  .bc-clock { display: none; }
  .b20-stage .drawing { bottom: -1.5rem; left: -1rem; width: 70%; height: 60%; --sq: 2.75rem; }
}
@media (max-width: 620px) {
  .jr-cols { grid-template-columns: 1fr; gap: 1.75rem; }
  .jr-row { grid-template-columns: 2rem minmax(0, 1fr); }
  .jr-row .w { display: none; }
  .bc-out { grid-template-columns: 1fr; gap: 1rem; }
}
