/* css.slopped.site exhibit: Noughts and crosses. Generated by css/exhibits/noughts.mjs; edit that. */
.x-noughts .ttt { display: grid; justify-items: center; gap: 18px; }
.x-noughts .status { min-height: 1.4em; margin: 0; font: 1000 28px/1.2 var(--head); letter-spacing: -.8px; font-synthesis: none; }
.x-noughts .status span { display: none; }
.x-noughts .board { display: grid; grid-template-columns: repeat(3, minmax(0, 96px)); gap: 8px; padding: 8px; border-radius: 16px; background: var(--ink); }
.x-noughts .cell { position: relative; display: grid; aspect-ratio: 1; border-radius: 10px; background: var(--paper); }
.x-noughts .cell > * { grid-area: 1 / 1; }
.x-noughts .mv { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.x-noughts label { display: none; place-items: center; font: 1000 clamp(40px, 9vw, 60px)/1 var(--head); font-synthesis: none; cursor: pointer; }
.x-noughts .mv:focus-visible + label { outline: 3px solid var(--focus); outline-offset: -6px; border-radius: 10px; }
.x-noughts .ttt > .pill { margin-top: 4px; }
/* key */
/* the move that's open: its boxes become real (focusable, clickable) */
.x-noughts .mv { display: none; }
.ttt:not(:has(.m1:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m1,
.ttt:has(.m1:checked):not(:has(.m2:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m2,
.ttt:has(.m2:checked):not(:has(.m3:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m3,
.ttt:has(.m3:checked):not(:has(.m4:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m4,
.ttt:has(.m4:checked):not(:has(.m5:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m5,
.ttt:has(.m5:checked):not(:has(.m6:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m6,
.ttt:has(.m6:checked):not(:has(.m7:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m7,
.ttt:has(.m7:checked):not(:has(.m8:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m8,
.ttt:has(.m8:checked):not(:has(.m9:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m9 { display: block; }

/* …but never in a cell that's taken */
.x-noughts .ttt:has(.c1:checked) .c1:not(:checked),
.x-noughts .ttt:has(.c1:checked) .c1:not(:checked) + label,
.x-noughts .ttt:has(.c2:checked) .c2:not(:checked),
.x-noughts .ttt:has(.c2:checked) .c2:not(:checked) + label,
.x-noughts .ttt:has(.c3:checked) .c3:not(:checked),
.x-noughts .ttt:has(.c3:checked) .c3:not(:checked) + label,
.x-noughts .ttt:has(.c4:checked) .c4:not(:checked),
.x-noughts .ttt:has(.c4:checked) .c4:not(:checked) + label,
.x-noughts .ttt:has(.c5:checked) .c5:not(:checked),
.x-noughts .ttt:has(.c5:checked) .c5:not(:checked) + label,
.x-noughts .ttt:has(.c6:checked) .c6:not(:checked),
.x-noughts .ttt:has(.c6:checked) .c6:not(:checked) + label,
.x-noughts .ttt:has(.c7:checked) .c7:not(:checked),
.x-noughts .ttt:has(.c7:checked) .c7:not(:checked) + label,
.x-noughts .ttt:has(.c8:checked) .c8:not(:checked),
.x-noughts .ttt:has(.c8:checked) .c8:not(:checked) + label,
.x-noughts .ttt:has(.c9:checked) .c9:not(:checked),
.x-noughts .ttt:has(.c9:checked) .c9:not(:checked) + label { display: none !important; }

/* a win: three of one player's boxes in a line, all checked */
.x-noughts .ttt:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked),
  :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked),
  :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked),
  :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked),
  :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked),
  :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked),
  :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked),
  :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked)) .s-xwin { display: inline; }
/* /key */
.x-noughts .ttt:is(:has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked),
  :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked),
  :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked),
  :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked),
  :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked),
  :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked),
  :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked),
  :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked)) .s-owin { display: inline; }
.x-noughts .ttt:has(.m9:checked):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-draw { display: inline; }
.x-noughts .ttt:not(:has(.m1:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-x,
.x-noughts .ttt:has(.m1:checked):not(:has(.m2:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-o,
.x-noughts .ttt:has(.m2:checked):not(:has(.m3:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-x,
.x-noughts .ttt:has(.m3:checked):not(:has(.m4:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-o,
.x-noughts .ttt:has(.m4:checked):not(:has(.m5:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-x,
.x-noughts .ttt:has(.m5:checked):not(:has(.m6:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-o,
.x-noughts .ttt:has(.m6:checked):not(:has(.m7:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-x,
.x-noughts .ttt:has(.m7:checked):not(:has(.m8:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-o,
.x-noughts .ttt:has(.m8:checked):not(:has(.m9:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .s-x { display: inline; }

/* marks: every made move shows its letter; only the latest can be taken back (click it again) */
.x-noughts .mv + label { pointer-events: none; }
.x-noughts .mv:checked + label { display: grid; }
.x-noughts .x:checked + label::after { content: "X"; }
.x-noughts .o:checked + label::after { content: "O"; color: #8a2a12; }
:root:has(#lamp:checked) .x-noughts .o:checked + label::after { color: #ff9a7a; }
.ttt:not(:has(.m1:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m1 + label,
.ttt:has(.m1:checked):not(:has(.m2:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m2 + label,
.ttt:has(.m2:checked):not(:has(.m3:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m3 + label,
.ttt:has(.m3:checked):not(:has(.m4:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m4 + label,
.ttt:has(.m4:checked):not(:has(.m5:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m5 + label,
.ttt:has(.m5:checked):not(:has(.m6:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m6 + label,
.ttt:has(.m6:checked):not(:has(.m7:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m7 + label,
.ttt:has(.m7:checked):not(:has(.m8:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m8 + label,
.ttt:has(.m8:checked):not(:has(.m9:checked)):not(:is(:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked), :has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked), :has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked), :has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked), :has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked), :has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked), :has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked), :has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked), :has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked), :has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked), :has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked), :has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked), :has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked), :has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked))) .m9 + label { display: grid; pointer-events: auto; }
.x-noughts .ttt:not(:has(.m2:checked)) .m1:checked,
.x-noughts .ttt:not(:has(.m3:checked)) .m2:checked,
.x-noughts .ttt:not(:has(.m4:checked)) .m3:checked,
.x-noughts .ttt:not(:has(.m5:checked)) .m4:checked,
.x-noughts .ttt:not(:has(.m6:checked)) .m5:checked,
.x-noughts .ttt:not(:has(.m7:checked)) .m6:checked,
.x-noughts .ttt:not(:has(.m8:checked)) .m7:checked,
.x-noughts .ttt:not(:has(.m9:checked)) .m8:checked,
.x-noughts .ttt:not(:has(.m10:checked)) .m9:checked { display: block; }
.x-noughts .ttt:not(:has(.m2:checked)) .m1:checked + label,
.x-noughts .ttt:not(:has(.m3:checked)) .m2:checked + label,
.x-noughts .ttt:not(:has(.m4:checked)) .m3:checked + label,
.x-noughts .ttt:not(:has(.m5:checked)) .m4:checked + label,
.x-noughts .ttt:not(:has(.m6:checked)) .m5:checked + label,
.x-noughts .ttt:not(:has(.m7:checked)) .m6:checked + label,
.x-noughts .ttt:not(:has(.m8:checked)) .m7:checked + label,
.x-noughts .ttt:not(:has(.m9:checked)) .m8:checked + label,
.x-noughts .ttt:not(:has(.m10:checked)) .m9:checked + label { pointer-events: auto; }
/* the winning line lights up */
.x-noughts .ttt:has(.x.c1:checked):has(.x.c2:checked):has(.x.c3:checked) :is(.cell-1, .cell-2, .cell-3),
.x-noughts .ttt:has(.o.c1:checked):has(.o.c2:checked):has(.o.c3:checked) :is(.cell-1, .cell-2, .cell-3),
.x-noughts .ttt:has(.x.c4:checked):has(.x.c5:checked):has(.x.c6:checked) :is(.cell-4, .cell-5, .cell-6),
.x-noughts .ttt:has(.o.c4:checked):has(.o.c5:checked):has(.o.c6:checked) :is(.cell-4, .cell-5, .cell-6),
.x-noughts .ttt:has(.x.c7:checked):has(.x.c8:checked):has(.x.c9:checked) :is(.cell-7, .cell-8, .cell-9),
.x-noughts .ttt:has(.o.c7:checked):has(.o.c8:checked):has(.o.c9:checked) :is(.cell-7, .cell-8, .cell-9),
.x-noughts .ttt:has(.x.c1:checked):has(.x.c4:checked):has(.x.c7:checked) :is(.cell-1, .cell-4, .cell-7),
.x-noughts .ttt:has(.o.c1:checked):has(.o.c4:checked):has(.o.c7:checked) :is(.cell-1, .cell-4, .cell-7),
.x-noughts .ttt:has(.x.c2:checked):has(.x.c5:checked):has(.x.c8:checked) :is(.cell-2, .cell-5, .cell-8),
.x-noughts .ttt:has(.o.c2:checked):has(.o.c5:checked):has(.o.c8:checked) :is(.cell-2, .cell-5, .cell-8),
.x-noughts .ttt:has(.x.c3:checked):has(.x.c6:checked):has(.x.c9:checked) :is(.cell-3, .cell-6, .cell-9),
.x-noughts .ttt:has(.o.c3:checked):has(.o.c6:checked):has(.o.c9:checked) :is(.cell-3, .cell-6, .cell-9),
.x-noughts .ttt:has(.x.c1:checked):has(.x.c5:checked):has(.x.c9:checked) :is(.cell-1, .cell-5, .cell-9),
.x-noughts .ttt:has(.o.c1:checked):has(.o.c5:checked):has(.o.c9:checked) :is(.cell-1, .cell-5, .cell-9),
.x-noughts .ttt:has(.x.c3:checked):has(.x.c5:checked):has(.x.c7:checked) :is(.cell-3, .cell-5, .cell-7),
.x-noughts .ttt:has(.o.c3:checked):has(.o.c5:checked):has(.o.c7:checked) :is(.cell-3, .cell-5, .cell-7) { background: var(--acid); color: var(--on-acid); }

/* live support notes (built from css/exhibits.js) */
.sup-has .sup-no { display: none; }
@supports not selector(:has(*)) { .sup-has .sup-yes { display: none; } .sup-has .sup-no { display: inline; } .sup-has { --sup: var(--no); } }
.sup-checkbox-hack .sup-no { display: none; }
@supports not selector(:checked) { .sup-checkbox-hack .sup-yes { display: none; } .sup-checkbox-hack .sup-no { display: inline; } .sup-checkbox-hack { --sup: var(--no); } }
