  /* === Page setup === */
  @page { size: A4 portrait; margin: 10mm 12mm; }
  .scorecard,
  .scorecard * {
    box-sizing: border-box;
  }
  .scorecard-doc {
    margin: 0;
    padding: 0;
    font-family: "Helvetica Neue", Arial, sans-serif;
    font-size: 10.5pt;
    color: #111;
    background: #fff;
    line-height: 1.3;
  }

  /* === Screen only header === */
  .intro {
    max-width: 900px;
    margin: 24px auto;
    padding: 18px 22px;
    background: #fff8e1;
    border-left: 4px solid #ff6f00;
    border-radius: 4px;
  }
  .intro h1 { margin: 0 0 8px; font-size: 20px; }
  .intro p { margin: 6px 0; }
  .intro code {
    background: rgba(0,0,0,0.06);
    padding: 1px 5px;
    border-radius: 3px;
    font-size: 11pt;
  }
  @media print { .intro { display: none; } }

  /* === Scorecard page === */
  .scorecard {
    page-break-before: auto;
    page-break-after: auto;
    break-before: auto;
    break-after: auto;
    page-break-inside: avoid;
    break-inside: avoid;
    width: 186mm;          /* A4 - margins */
    height: 276mm;         /* A4 content height minus 1mm to avoid browser rounding overflow */
    margin: 0 auto;
    padding: 0;
    border: 1px solid #000;
    background: #fff;
    display: flex;
    flex-direction: column;
  }
  .scorecard:first-child,
  .scorecard--print-first {
    page-break-before: auto !important;
    break-before: auto !important;
  }
  .scorecard--excluded {
    display: none !important;
    page-break-before: auto !important;
    page-break-after: auto !important;
    break-before: auto !important;
    break-after: auto !important;
  }
  .scorecard--print-last {
    page-break-after: auto !important;
    break-after: auto !important;
  }
  @media screen {
    .scorecard {
      margin: 14px auto;
      box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    }
  }

  /* === Header === */
  .head {
    display: grid;
    grid-template-columns: 60px 1fr auto;
    gap: 10px;
    align-items: center;
    padding: 8px 12px;
    border-bottom: 2px solid #000;
    background: #ff3c00;
    color: #fff;
  }
  .head img.logo {
    width: 56px; height: 56px;
    background: #fff;
    border-radius: 6px;
    padding: 4px;
  }
  .head .title h1 { margin: 0; font-size: 13pt; letter-spacing: 0.5px; }
  .head .title .sub { font-size: 9pt; opacity: 0.95; }
  .head .event {
    text-align: right;
    font-size: 11pt;
    font-weight: 700;
    line-height: 1.15;
  }
  .head .event .num { font-size: 22pt; line-height: 1; }
  .head .event .name { font-size: 11pt; text-transform: uppercase; }

  /* === Section common === */
  .section { padding: 6px 12px; border-bottom: 1px solid #aaa; }
  .section h2 {
    margin: 0 0 4px;
    font-size: 9pt;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #444;
  }

  /* === Athlete row (5 campi: nome, box, pettorale, heat, lane) === */
  .athlete-row {
    display: grid;
    grid-template-columns: 1.5fr 1.15fr 0.65fr 0.45fr 0.45fr;
    gap: 10px;
  }
  .field {
    display: flex;
    flex-direction: column;
    gap: 2px;
  }
  .field label {
    font-size: 8pt;
    color: #666;
    text-transform: uppercase;
  }
  .field .line {
    border-bottom: 1px solid #000;
    min-height: 22px;
    padding: 1px 3px 4px;
    line-height: 1.05;
    display: flex;
    align-items: flex-start;
    overflow: visible;
  }
  .field .line[data-fill="box"] {
    white-space: nowrap;
  }

  /* === Categoria checkboxes === */
  .cat-row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 9pt;
    margin-top: 2px;
  }
  .cat-row label { display: flex; align-items: center; gap: 4px; }
  .cat-row input { width: 12px; height: 12px; }

  /* === Format / standard === */
  .standards {
    font-size: 9pt;
    line-height: 1.35;
  }
  .standards p { margin: 2px 0; }
  .standards strong { color: #ff3c00; }

  /* === Score grid (varies per WOD) === */
  .score {
    flex: 1;
    padding: 8px 12px;
    overflow: hidden;
  }
  .score table {
    width: 100%;
    border-collapse: collapse;
    font-size: 9.5pt;
  }
  .score th, .score td {
    border: 1px solid #555;
    padding: 4px 6px;
    text-align: center;
    vertical-align: middle;
  }
  .score th {
    background: #e8e8e8;
    font-size: 8.5pt;
    text-transform: uppercase;
    letter-spacing: 0.3px;
  }
  .score .input-cell {
    height: 22px;
    background: #fafafa;
  }
  .score .small { font-size: 8pt; color: #777; }

  /* === Tally boxes (per rep) === */
  .tally { display: inline-flex; flex-wrap: wrap; gap: 3px; }
  .tally .b {
    display: inline-block;
    width: 14px; height: 14px;
    border: 1px solid #000;
    background: #fff;
  }
  .tally-row {
    display: grid;
    grid-template-columns: 110px 1fr 60px;
    gap: 8px;
    align-items: center;
    padding: 3px 0;
  }
  .tally-row .label { font-size: 9pt; font-weight: 600; }
  .tally-row .total {
    border: 1px solid #000;
    padding: 1px 4px;
    background: #fafafa;
    text-align: center;
    font-size: 8.5pt;
  }

  /* === No reps box === */
  .no-reps {
    border: 1px dashed #000;
    background: #fff;
    padding: 4px 8px;
    margin-top: 6px;
    font-size: 9pt;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .no-reps strong { text-transform: uppercase; letter-spacing: 0.3px; }
  .no-reps .nr-line {
    flex: 1;
    border-bottom: 1px solid #000;
    height: 16px;
  }
  .no-reps .small { font-size: 8pt; color: #555; }

  /* === T.B. field (uniform across all 10 WODs) === */
  .tb-field {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 10px;
    margin-top: 6px;
    border: 1px dashed #555;
    font-size: 9.5pt;
    background: #fff;
  }
  .tb-field strong { letter-spacing: 0.3px; }
  .tb-field .tb-cell {
    display: inline-block;
    width: 38px;
    height: 18px;
    border-bottom: 1.5px solid #000;
  }
  .tb-field .tb-sep { font-weight: 700; font-size: 11pt; }
  .tb-field .tb-note { font-size: 8pt; color: #555; margin-left: auto; }

  /* === Final score box (always at bottom of score area) === */
  .final {
    background: #fff3c0;
    border: 2px solid #000;
    padding: 8px 12px;
    margin-top: 6px;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 12px;
    align-items: center;
  }
  .final .label {
    font-size: 11pt;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
  }
  .final .value {
    border: 2px solid #000;
    background: #fff;
    padding: 4px 14px;
    min-width: 120px;
    height: 30px;
    font-size: 14pt;
    font-weight: 700;
  }
  .final .small { font-size: 8pt; color: #555; font-weight: 400; }

  /* === Footer signatures === */
  .foot {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    padding: 8px 12px;
    border-top: 2px solid #000;
    font-size: 9pt;
  }
  .foot .sig {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .foot .sig .row {
    display: grid;
    grid-template-columns: 75px 1fr;
    gap: 6px;
    align-items: end;
  }
  .foot .sig .line {
    border-bottom: 1px solid #000;
    height: 18px;
  }

  /* === Specific layouts === */
  /* E2 ladder side-by-side */
  .ladder-sidebyside {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  .ladder-sidebyside h3 {
    margin: 0 0 4px;
    font-size: 10pt;
    color: #ff3c00;
    text-align: center;
    border-bottom: 1px solid #ff3c00;
    padding-bottom: 2px;
  }

  /* E4/E10 round columns */
  .rounds-table {
    width: 100%;
    border-collapse: collapse;
  }
  .rounds-table th, .rounds-table td {
    border: 1px solid #555;
    padding: 4px;
    font-size: 9pt;
    text-align: center;
  }

  /* E9 ladder steps */
  .clean-ladder {
    width: 100%;
    border-collapse: collapse;
    font-size: 8.5pt;
  }
  .clean-ladder th, .clean-ladder td {
    border: 1px solid #555;
    padding: 3px 4px;
    text-align: center;
  }
  .clean-ladder th {
    background: #e8e8e8;
    font-size: 8pt;
  }
  .clean-ladder .step-row td {
    background: #fafafa;
  }

  .dnf-block {
    border-top: 1px dashed #888;
    margin-top: 6px;
    padding-top: 4px;
    font-size: 9pt;
  }

  .meta-time {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    font-size: 9pt;
    margin-bottom: 4px;
  }
  .meta-time .field .line { height: 16px; }

  /* Compact movement standards */
  .standards .grid2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 14px;
    margin-top: 2px;
  }

  /* === Selezione temporanea scorecard da stampare === */
  .scorecard-selector {
    margin: 1rem 0;
    padding: 1rem;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.04);
  }
  .scorecard-selector__head {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: center;
    margin-bottom: 0.75rem;
  }
  .scorecard-selector__head strong {
    display: block;
    color: var(--text-primary, #fff);
  }
  .scorecard-selector__head span {
    color: var(--text-muted, #aaa);
    font-size: 0.9rem;
  }
  .scorecard-selector__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .scorecard-selector__groups {
    display: grid;
    gap: 0.75rem;
    max-height: 360px;
    overflow: auto;
    padding-right: 0.25rem;
  }
  .scorecard-selector__group {
    padding-top: 0.75rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
  }
  .scorecard-selector__group h3 {
    margin: 0 0 0.5rem;
    color: var(--text-muted, #aaa);
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }
  .scorecard-selector__list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0.5rem;
  }
  .scorecard-selector__item {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.6rem;
    align-items: start;
    min-width: 0;
    padding: 0.65rem 0.75rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.18);
    cursor: pointer;
  }
  .scorecard-selector__item input {
    margin-top: 0.2rem;
  }
  .scorecard-selector__item strong,
  .scorecard-selector__item small {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .scorecard-selector__item small {
    color: var(--text-muted, #aaa);
    margin-top: 0.15rem;
  }

  /* === Stampa dentro la console giudici (giudici.html) === */
  /* NB: NON nascondere .admin-main: e' antenato di #scorecard-output, e un
     antenato display:none rimuove tutto il sottoalbero (l'override sul figlio
     non lo recupera). Si nasconde l'header e tutto cio' che nel pannello
     scorecard non e' l'output, lasciando visibile la catena di antenati.
     I pannelli non attivi sono gia' display:none (regola .admin-panel). */
  @media print {
    .admin-header { display: none !important; }
    .admin-app,
    .admin-main,
    .admin-main > .container,
    .admin-panel.is-active {
      display: block !important;
      padding: 0 !important;
      margin: 0 !important;
      min-height: 0 !important;
    }
    .admin-panel[data-panel="scorecard"] > :not(#scorecard-output) { display: none !important; }
    #scorecard-output { display: block !important; }
  }
  /* Anteprima a video dentro la console */
  #scorecard-output { display: block; }
  #scorecard-output:empty { display: none; }
  /* Evita che le schede A4 (larghezza fissa in mm) sforino il container admin in anteprima */
  @media screen {
    #scorecard-output { overflow-x: auto; }
  }
