/* Shared styles for the Coloring Games engine (games/_shared/coloring-engine.js) */

.coloring-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

.coloring-canvas {
  width: 100%;
  max-width: 560px;
  aspect-ratio: auto;
  background: #ffffff;
  border-radius: 14px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.25);
}

.coloring-region {
  transition: fill 0.12s ease;
}

.coloring-region:focus-visible {
  outline: 3px solid var(--color-accent, #4fd8e0);
  outline-offset: 2px;
}

@keyframes coloring-shake {
  0%,
  100% {
    transform: translateX(0);
  }
  25% {
    transform: translateX(-2px);
  }
  75% {
    transform: translateX(2px);
  }
}
.coloring-region--shake {
  animation: coloring-shake 0.25s ease;
}

@keyframes coloring-hint {
  0%,
  100% {
    filter: brightness(1);
  }
  50% {
    filter: brightness(1.4);
  }
}
.coloring-region--hint {
  animation: coloring-hint 0.5s ease 2;
}

.coloring-number-label {
  font: 700 13px/1 system-ui, sans-serif;
  fill: #6b6b6b;
  pointer-events: none;
  user-select: none;
}

.coloring-outline {
  pointer-events: none;
}

.coloring-palette {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  max-width: 560px;
}

.coloring-swatch {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 3px solid transparent;
  background: var(--swatch-color);
  cursor: pointer;
  font: 700 13px/1 system-ui, sans-serif;
  color: rgba(0, 0, 0, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15);
}

.coloring-swatch[aria-pressed="true"] {
  border-color: var(--color-accent, #4fd8e0);
  transform: scale(1.12);
}

.coloring-done-badge {
  align-self: stretch;
  text-align: center;
  background: rgba(79, 216, 224, 0.15);
  border: 1px solid rgba(79, 216, 224, 0.4);
  color: var(--color-text, #fff);
  border-radius: 10px;
  padding: 10px 14px;
  font-weight: 700;
}

.coloring-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
}

/* Paint by Number engine (games/_shared/paint-by-number-engine.js) */
.paint-brush-hint {
  text-align: center;
  color: var(--color-text-soft, #999);
  font-size: 0.85rem;
  margin: 0;
}

/* Dot to Dot & Color engine (games/_shared/dot-to-dot-engine.js) */
.dot2dot-canvas {
  background: #ffffff;
}

.dot2dot-dot {
  fill: #ffffff;
  stroke: #2b2b2b;
  stroke-width: 2;
  cursor: pointer;
}

.dot2dot-dot--done .dot2dot-dot {
  fill: #c8e6c9;
}

.dot2dot-dot:focus-visible {
  outline: 3px solid var(--color-accent, #4fd8e0);
  outline-offset: 2px;
}

.dot2dot-dot-label {
  font: 700 11px/1 system-ui, sans-serif;
  fill: #2b2b2b;
  user-select: none;
}

.dot2dot-line {
  stroke: #2b2b2b;
  stroke-width: 2.5;
  stroke-linecap: round;
}

/* Doodle Pad engine (games/_shared/doodle-pad-engine.js) */
.doodle-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}

.doodle-canvas {
  width: 100%;
  max-width: 640px;
  aspect-ratio: 640 / 480;
  background: #ffffff;
  border-radius: 14px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.25);
  touch-action: none;
  cursor: crosshair;
}

.doodle-palette {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  max-width: 640px;
}

.doodle-swatch {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 3px solid transparent;
  background: var(--swatch-color);
  cursor: pointer;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15);
}

.doodle-swatch[aria-pressed="true"] {
  border-color: var(--color-accent, #4fd8e0);
  transform: scale(1.12);
}

.doodle-sizes {
  display: flex;
  gap: 10px;
  justify-content: center;
}

.doodle-size-btn {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  border: 2px solid var(--color-border, #444);
  background: var(--color-bg-alt, #1a1b20);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.doodle-size-btn span {
  display: block;
  border-radius: 50%;
  background: var(--color-text, #fff);
}

.doodle-size-btn[aria-pressed="true"] {
  border-color: var(--color-accent, #4fd8e0);
}

/* Splash Paint engine (games/_shared/splash-paint-engine.js) -- reuses the
   Doodle Pad's .doodle-wrap/.doodle-canvas/.doodle-palette/.doodle-swatch
   classes above, just swaps the cursor to signal "click," not "drag." */
.splash-canvas {
  cursor: pointer;
}

/* Symmetric Pattern engine (games/_shared/symmetric-pattern-engine.js) */
.pattern-canvas {
  background: #ffffff;
}

.pattern-cell {
  transition: fill 0.12s ease;
}

.pattern-cell:focus-visible {
  outline: 3px solid var(--color-accent, #4fd8e0);
  outline-offset: 2px;
}

/* Color Match engine (games/_shared/color-match-engine.js) */
.colormatch-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

.colormatch-scene {
  width: 100%;
  max-width: 400px;
  aspect-ratio: 4 / 3;
  border-radius: 14px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.25);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s ease;
}

.colormatch-chameleon {
  font-size: 5rem;
  transition: color 0.3s ease, opacity 0.3s ease;
}

.colormatch-chameleon--hidden {
  opacity: 0.25;
}

.colormatch-message {
  text-align: center;
  color: var(--color-text-soft, #999);
  min-height: 1.4em;
}

.colormatch-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
}

.colormatch-option {
  width: 64px;
  height: 64px;
  border-radius: 12px;
  border: 3px solid transparent;
  cursor: pointer;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15);
}

.colormatch-option:hover {
  border-color: var(--color-accent, #4fd8e0);
}

/* Flag Quiz engine (games/_shared/flag-quiz-engine.js) -- reuses
   .coloring-wrap/.coloring-canvas/.coloring-palette from Engine A above
   for the actual flag rendering, just adds a country-name label. */
.flagquiz-label {
  text-align: center;
  margin: 0 0 4px;
}

@media print {
  body * {
    visibility: hidden;
  }
  #coloring-print-target,
  #coloring-print-target * {
    visibility: visible;
  }
  #coloring-print-target {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    max-width: 100%;
    box-shadow: none;
  }
}
