  /* ============ GAME OVERLAY ============ */
  #ccrun-overlay {
    position: fixed; inset: 0; z-index: 2147483000;
    display: none; align-items: center; justify-content: center;
    background: transparent;
    touch-action: none;
  }
  #ccrun-overlay.on { display: flex; }
  #ccrun-dim { position: absolute; inset: 0; background: #0a0a0a; opacity: 0; }
  #ccrun-cv {
    position: relative; display: block;
    image-rendering: pixelated; image-rendering: crisp-edges;
  }
  /* panneaux DOM du board (tag / consentement / règlement) : zine, 3 couleurs */
  #ccrun-panel {
    position: absolute; inset: 0; z-index: 5;
    display: flex; align-items: center; justify-content: center;
    font-family: "Courier Prime", "Courier New", Courier, monospace;
  }
  #ccrun-panel[hidden] { display: none; }
  .cc-card {
    background: #f2ede4; color: #0a0a0a;
    border: 3px solid #0a0a0a; box-shadow: 6px 6px 0 #0a0a0a;
    padding: 1.1em 1.4em 1.2em; width: min(30em, 92vw);
    max-height: 90vh; overflow: auto; transform: rotate(-0.4deg);
  }
  .cc-card.cc-rules { width: min(38em, 94vw); max-height: 86vh; }
  .cc-head { font-weight: 700; font-size: 1.35em; letter-spacing: .04em; }
  .cc-head::after { content: ""; display: block; height: .3em; width: 5.5em; background: #ff6b00; margin-top: .18em; }
  .cc-sub { margin: .55em 0 .4em; font-size: .95em; }
  .cc-lab { display: block; font-size: .78em; font-weight: 700; margin-top: .7em; letter-spacing: .03em; }
  .cc-in {
    display: block; width: 100%; box-sizing: border-box; font: inherit;
    background: #f2ede4; color: #0a0a0a; border: 2.5px solid #0a0a0a;
    border-radius: 0; padding: .38em .5em; margin-top: .3em;
  }
  .cc-in:focus { outline: 3px solid #ff6b00; outline-offset: 1px; }
  .cc-tag {
    font-size: 2.1em; font-weight: 700; letter-spacing: .55em; text-transform: uppercase;
    text-align: center; width: 5.4em; margin: .45em auto 0; padding-left: .55em;
  }
  .cc-consent {
    border: 2px dashed #0a0a0a; padding: .65em .75em; margin-top: .8em;
    font-size: .76em; line-height: 1.45; max-height: 11.5em; overflow: auto;
  }
  .cc-consent p { margin: 0 0 .6em; }
  .cc-check { display: flex; gap: .55em; align-items: flex-start; font-weight: 700; margin-top: .2em; }
  .cc-check input {
    appearance: none; -webkit-appearance: none;
    width: 1.25em; height: 1.25em; margin-top: .1em; flex: none;
    background: #f2ede4; border: 2.5px solid #0a0a0a; border-radius: 0;
    display: inline-grid; place-content: center; cursor: pointer;
  }
  .cc-check input:checked { background: #ff6b00; }
  .cc-check input:checked::after { content: "\2715"; color: #0a0a0a; font-weight: 700; font-size: .85em; line-height: 1; }
  .cc-check input:focus-visible { outline: 3px solid #ff6b00; outline-offset: 1px; }
  .cc-note { font-size: .76em; margin-top: .55em; }
  .cc-err { color: #ff6b00; font-weight: 700; font-size: .85em; min-height: 1.25em; margin-top: .5em; }
  .cc-row { display: flex; gap: .8em; justify-content: center; margin-top: .9em; }
  .cc-btn {
    font: inherit; font-weight: 700; letter-spacing: .03em; cursor: pointer;
    background: #f2ede4; color: #0a0a0a; border: 2.5px solid #0a0a0a;
    border-radius: 0; box-shadow: 3px 3px 0 #0a0a0a; padding: .5em 1.15em;
  }
  .cc-btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 #0a0a0a; }
  .cc-btn[disabled], .cc-btn.cc-primary[disabled] { cursor: default; border-style: dashed; box-shadow: none; background: #f2ede4; color: #0a0a0a; }
  .cc-btn.cc-primary { background: #ff6b00; color: #f2ede4; }
  .cc-link { color: #0a0a0a; text-decoration: underline; text-decoration-color: #ff6b00; text-decoration-thickness: 2px; }
  .cc-rules-body { font-size: .78em; line-height: 1.5; }
  .cc-rules-body h3 { color: #ff6b00; font-size: 1.05em; margin: 1.15em 0 .3em; }
  .cc-rules-body p { margin: .3em 0; }
  .cc-rules-body ul { padding-left: 1.25em; margin: .3em 0; }
  .cc-rules-body hr { border: none; border-top: 2px dashed #0a0a0a; margin: 1.2em 0; }
  .cc-rules-meta { font-weight: 700; letter-spacing: .04em; }
  body.ccrun-locked { overflow: hidden; }
