/* La séance : ticket, feuille du jury, tampons de verdict, QCM, bilan de séance. */
/* ----------------------------------------------------------- séance */
.seance { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 34px; align-items: start; }
.seance-side { position: sticky; top: 20px; display: flex; flex-direction: column; gap: 18px; }
.seance-side .endbtns { display: flex; gap: 8px; }
.seance-side .endbtns .btn { flex: 1; }
.chrono { font-family: var(--disp); font-size: 74px; font-weight: 500; line-height: 1; letter-spacing: .02em; font-variant-numeric: tabular-nums; transition: color .4s; }
.chrono.over { color: var(--amber); }
.chrono-l { font-size: 13px; color: var(--fg-dim); margin-top: 4px; }
.prog { font-family: var(--type); font-size: 13px; color: var(--fg-dim); text-transform: uppercase; letter-spacing: .06em; }
.prog b { color: var(--fg); font-size: 18px; font-family: var(--disp); letter-spacing: .04em; }
.dots { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 6px; }
.dots i { width: 14px; height: 5px; background: var(--baize-line); border-radius: 1px; }
.dots i.g0 { background: var(--stamp); } .dots i.g1 { background: var(--amber); } .dots i.g2 { background: var(--fg-dim); } .dots i.g3 { background: var(--cream); }
.dots i.cur { background: var(--cream); opacity: .5; }
.hint { font-size: 13px; color: var(--fg-faint); line-height: 1.45; }
.hint kbd { font-family: var(--type); font-size: 12px; padding: 0 5px; border: 1px solid var(--baize-line); border-radius: 3px; color: var(--fg-dim); }

.stage { display: flex; flex-direction: column; gap: 22px; }
.stage .ticket { animation: deal .55s var(--ease) both; }
@keyframes deal { from { transform: translateY(18px) rotate(-1.5deg); opacity: 0; } to { transform: none; opacity: 1; } }
.actions { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.actions .sp { flex: 1; }

/* jury sheet (grille) */
.sheet { color: var(--ink); background: var(--card); border-radius: 4px; box-shadow: var(--shadow-ticket); padding: 22px 26px; animation: deal .5s var(--ease) both; }
.sheet h3 { color: var(--ink-dim); border-bottom: 1px solid var(--card-edge); padding-bottom: 6px; margin-bottom: 8px; }
.sheet section + section { margin-top: 22px; }
.pt { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 10px; align-items: start; padding: 7px 0; border-bottom: 1px solid var(--card-edge); cursor: pointer; }
.pt:last-child { border-bottom: 0; }
.pt .box { width: 20px; height: 20px; margin-top: 2px; border: 1.5px solid var(--ink-dim); border-radius: 2px; position: relative; transition: border-color .2s; }
.pt.on .box { border-color: var(--stamp); }
.pt.on .box::after { content: ""; position: absolute; inset: -6px -8px -2px -2px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 30'%3E%3Cpath d='M4 16 L13 25 L30 4' fill='none' stroke='%23c8321e' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; }
.pt span { line-height: 1.4; }
.pt.on span { color: var(--ink); }
.answer { font-size: 16px; line-height: 1.55; max-width: 72ch; }
.answer p + p, .answer ul + p, .answer p + ul, .answer pre + p, .answer p + pre { margin-top: 10px; }
.answer ul { padding-left: 20px; }
.answer li + li { margin-top: 4px; }
.answer code, .rel code, .opt code, .tq code { font-family: var(--type); font-size: .92em; background: rgba(var(--ink-rgb), .06); padding: 0 4px; border-radius: 2px; }
.answer strong { font-weight: 600; }
pre.code {
  font-family: var(--type); font-size: 14px; line-height: 1.5; color: var(--ink); background: var(--card-in); border: 1px solid var(--card-edge);
  border-radius: 3px; padding: 14px 16px; overflow-x: auto; tab-size: 4; white-space: pre;
}
.ticket pre.code { margin-top: 14px; }
pre.code .k { color: var(--code-k); font-weight: 700; }
pre.code .s { color: var(--code-s); }
pre.code .c { color: var(--ink-faint); font-style: italic; }
pre.code .a { color: var(--code-a); }
pre.code .t { color: var(--code-t); }
pre.code .n { color: var(--code-n); }
.rel { border-top: 1px solid var(--card-edge); padding: 10px 0; }
.rel .rq { font-family: var(--type); font-weight: 700; font-size: 15px; }
.rel .ra { color: var(--ink-dim); margin-top: 4px; font-size: 15px; line-height: 1.45; }
.fold { width: 100%; text-align: left; font-family: var(--disp); font-size: 14px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-dim); padding: 6px 0; display: flex; align-items: center; gap: 8px; }
.fold svg { width: 14px; height: 14px; transition: transform .25s var(--ease); }
.fold.open svg { transform: rotate(90deg); }
.fold:hover { color: var(--ink); }

/* verdict stamps */
.verdict { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.vst {
  font-family: var(--disp); font-weight: 600; font-size: 17px; letter-spacing: .1em; text-transform: uppercase;
  padding: 14px 8px 10px; border: 2px solid var(--ink-dim); color: var(--ink-dim); border-radius: 3px;
  box-shadow: inset 0 0 0 3px var(--card), inset 0 0 0 4px var(--ink-dim);
  transform: rotate(var(--r)); transition: transform .2s var(--ease), color .2s, border-color .2s, box-shadow .2s;
  display: flex; flex-direction: column; align-items: center; gap: 2px;
}
.vst small { font-family: var(--sans); font-weight: 400; font-size: 11px; letter-spacing: 0; text-transform: none; }
.vst:nth-child(1) { --r: -1.5deg; } .vst:nth-child(2) { --r: .8deg; } .vst:nth-child(3) { --r: -.6deg; } .vst:nth-child(4) { --r: 1.4deg; }
.vst:hover, .vst.on { color: var(--stamp); border-color: var(--stamp); box-shadow: inset 0 0 0 3px var(--card), inset 0 0 0 4px var(--stamp); transform: rotate(var(--r)) scale(1.04); }
.vst.on { background: var(--sel); }
.vst.dis { opacity: .35; pointer-events: none; }

/* QCM */
.opts { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.opt {
  text-align: left; display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 10px; align-items: start;
  padding: 10px 12px; border: 1px solid var(--card-edge); border-radius: 3px; font-family: var(--type); font-size: 15px; line-height: 1.4;
  transition: border-color .2s, background .2s;
}
.opt:hover { border-color: var(--ink-dim); }
.opt .l { font-family: var(--disp); font-weight: 600; color: var(--ink-dim); }
.opt.pick { border-color: var(--ink); background: rgba(var(--ink-rgb), .04); }
.opt.good { border-color: var(--ok); background: rgba(47,125,79,.12); }
.opt.bad { border-color: var(--stamp); background: var(--sel); text-decoration: line-through; text-decoration-color: var(--stamp); }
.opt.good .l { color: var(--ok); } .opt.bad .l { color: var(--stamp); }
.res { font-family: var(--disp); font-size: 20px; letter-spacing: .1em; text-transform: uppercase; margin-top: 16px; }
.res.good { color: var(--ok); } .res.bad { color: var(--stamp); }

/* bilan de séance */
.bilan { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.brow { display: grid; grid-template-columns: 26px minmax(0, 1fr) 90px 56px; gap: 10px; align-items: baseline; padding: 8px 0; border-top: 1px dashed var(--card-edge); font-size: 15px; }
.brow .g { font-family: var(--disp); letter-spacing: .06em; text-transform: uppercase; font-size: 13px; }
.brow .g0 { color: var(--stamp); } .brow .g1 { color: var(--amber); } .brow .g2 { color: var(--ink-dim); } .brow .g3 { color: var(--ok); }
.brow .n { font-family: var(--disp); color: var(--ink-dim); }
.brow .t { font-family: var(--type); font-size: 13px; color: var(--ink-dim); text-align: right; }
.brow .q { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bigres { font-family: var(--disp); font-size: 60px; line-height: 1; letter-spacing: -.01em; }
.bigres small { font-size: 18px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-dim); margin-left: 8px; }
