/* Shared geometry only: preserve each page's colours, layout and interactions. */
:root {
  --ui-card-radius: 16px;
  --ui-control-radius: 10px;
  --ui-card-shadow: 0 6px 20px rgb(0 0 0 / 5%);
}
/* Explicit UI surfaces; do not alter SVG map geometry or clip focus outlines. */
html body :is(.portal-hero, .portal-path, .site-hero, .card,
  .content-section, .cta-section, .faq-item, .step-card, .situation-card,
  .timeline-content, .highlight-box, .warning-box, .important-tip,
  .urgent-banner, .entry-box, .info-bar, .score-summary, .categories-section,
  .time-section, .year-round-panel, .sql-learning, .quick-link, .step,
  .mode, .curriculum, .scene, .practice, .invite-box, .player, .duel-meter,
  .dossier, .board, .console, .connection, .pin, .feedback, .theme-option,
  .recommendation, .controls) {
  border-radius: var(--ui-card-radius) !important;
  box-shadow: var(--ui-card-shadow) !important;
}
html body :is(button, input:not([type=checkbox]):not([type=radio]):not([type=range]),
  select, textarea, .button, .btn, .btn-primary, .nav-btn, .back, .back-link,
  .hero-primary, .hero-secondary, .hero-game-link, .sql-learning-link,
  .portal-primary, .portal-learning-link, .category-tag, .status-tag,
  .timeline-tag, .board-count, .theme-actions a, .cat-tag) {
  border-radius: var(--ui-control-radius) !important;
}
html body :is(.table-wrap, .results, .preview, pre) {
  border-radius: var(--ui-control-radius) !important;
}
html body .pin { clip-path: none; }
html body .board::before { border-radius: 10px; }
/* An already-loaded desktop ad must not widen the page after resizing. */
.adsbygoogle { max-width: 100%; overflow-x: clip; }
/* Standalone legal documents and the error page have no card wrapper. */
body:has(> .back), body:has(.error-code) > .container {
  border-radius: var(--ui-card-radius);
  box-shadow: var(--ui-card-shadow);
}
