/* @personal/browser-game-style-engine v1.0.0 | generated | source-hash: 3c1f535f4da2 | DO NOT EDIT */

@layer gse-reset, game, gse-theme, gse-components, gse-shell, gse-consumer;

@layer gse-reset {
/* source: src/tokens.css */
/* Stable foundations. Themes should assign semantic --gse-color-* variables. */
:root {
  color-scheme: light;

  --gse-palette-paper-100: #fcf7ec;
  --gse-palette-paper-200: #f4ead7;
  --gse-palette-paper-300: #eee6d3;
  --gse-palette-paper-400: #d8d3bd;
  --gse-palette-ink-700: #38715c;
  --gse-palette-ink-800: #315248;
  --gse-palette-ink-900: #233b38;
  --gse-palette-coral-300: #f8d6c6;
  --gse-palette-coral-500: #ec775b;
  --gse-palette-coral-700: #b75643;
  --gse-palette-mint-300: #d9e9d2;
  --gse-palette-mint-500: #b1d9bf;
  --gse-palette-yellow-300: #f5e7b2;
  --gse-palette-yellow-500: #efd581;

  --gse-font-body: "Trebuchet MS", "Arial", sans-serif;
  --gse-font-display: "Trebuchet MS", "Arial", sans-serif;
  --gse-font-mono: ui-monospace, "SFMono-Regular", Consolas, monospace;
  --gse-font-size-xs: 0.625rem;
  --gse-font-size-sm: 0.75rem;
  --gse-font-size-md: 0.875rem;
  --gse-font-size-lg: 1rem;
  --gse-font-size-xl: clamp(1.5rem, 3vw, 2.75rem);
  --gse-leading-compact: 1.1;
  --gse-leading-body: 1.6;
  --gse-tracking-label: 0.13em;

  --gse-space-1: 0.25rem;
  --gse-space-2: 0.5rem;
  --gse-space-3: 0.75rem;
  --gse-space-4: 1rem;
  --gse-space-5: 1.5rem;
  --gse-space-6: 2rem;
  --gse-space-7: 3rem;

  --gse-radius-xs: 0.375rem;
  --gse-radius-sm: 0.5rem;
  --gse-radius-md: 0.75rem;
  --gse-radius-lg: 1.0625rem;
  --gse-radius-xl: 1.5rem;
  --gse-radius-2xl: 1.75rem;
  --gse-radius-round: 999px;
  --gse-line-thin: 1px;
  --gse-line-strong: 2px;

  --gse-shadow-rest: 0 3px 0 var(--gse-color-depth, #d6cdb1);
  --gse-shadow-card: 0 18px 44px rgb(104 90 58 / 8%);
  --gse-shadow-dialog: 0 22px 70px rgb(35 59 56 / 24%);
  --gse-duration-fast: 160ms;
  --gse-duration-normal: 220ms;
  --gse-ease-out: cubic-bezier(.2, .8, .2, 1);
  --gse-focus-width: 3px;
}
}

@layer gse-theme {
/* source: src/themes.css */
/* Canonical Summarium palette. This is the default when no theme is specified. */
:root,
[data-gse-theme="parchment"] {
  color-scheme: light;
  --gse-color-canvas: #f4ead7;
  --gse-color-surface: #fcf7ec;
  --gse-color-surface-muted: #f7f0df;
  --gse-color-surface-sunken: #eee6d3;
  --gse-color-text: #233b38;
  --gse-color-text-muted: #6f7a6c;
  --gse-color-border: #d8d3bd;
  --gse-color-border-strong: #c8c9b6;
  --gse-color-depth: #d6cdb1;
  --gse-color-primary: #ec775b;
  --gse-color-primary-strong: #b75643;
  --gse-color-primary-soft: #f8d6c6;
  --gse-color-success: #38715c;
  --gse-color-success-strong: #315248;
  --gse-color-success-soft: #d9e9d2;
  --gse-color-error: #b75643;
  --gse-color-error-soft: #f8d6c6;
  --gse-color-bonus: #efd581;
  --gse-color-bonus-strong: #9a7b24;
  --gse-color-bonus-soft: #f5e7b2;
  --gse-color-focus: #ec775b;
  --gse-color-overlay: rgb(29 51 43 / 38%);
  --gse-decor-right-face: #efd581;
  --gse-decor-right-side: #dfc56f;
  --gse-decor-right-top: #f5e7b2;
  --gse-decor-left-face: #b1d9bf;
  --gse-decor-left-side: #8fbea3;
  --gse-decor-left-top: #f8d6c6;
}

[data-gse-theme="sea-glass"] {
  color-scheme: light;
  --gse-color-canvas: #e9f1ec;
  --gse-color-surface: #f9fcf9;
  --gse-color-surface-muted: #e0ebe5;
  --gse-color-surface-sunken: #d7e6df;
  --gse-color-text: #173e3c;
  --gse-color-text-muted: #58736d;
  --gse-color-border: #b9cec5;
  --gse-color-border-strong: #91b2a5;
  --gse-color-depth: #a9c1b7;
  --gse-color-primary: #df715b;
  --gse-color-primary-strong: #ad4d3d;
  --gse-color-primary-soft: #f5d5cc;
  --gse-color-success: #26705d;
  --gse-color-success-strong: #1c5849;
  --gse-color-success-soft: #cae5d7;
  --gse-color-error: #ad4d3d;
  --gse-color-error-soft: #f5d5cc;
  --gse-color-bonus: #e8c968;
  --gse-color-bonus-strong: #826d20;
  --gse-color-bonus-soft: #f4e9bd;
  --gse-color-focus: #df715b;
  --gse-color-overlay: rgb(18 58 54 / 38%);
  --gse-decor-right-face: #e8c968;
  --gse-decor-right-side: #cfac47;
  --gse-decor-right-top: #f4e9bd;
  --gse-decor-left-face: #80c7ad;
  --gse-decor-left-side: #5ba188;
  --gse-decor-left-top: #f5d5cc;
}

[data-gse-theme="night-ink"] {
  color-scheme: dark;
  --gse-color-canvas: #172b29;
  --gse-color-surface: #203b37;
  --gse-color-surface-muted: #294742;
  --gse-color-surface-sunken: #122421;
  --gse-color-text: #f8efd9;
  --gse-color-text-muted: #b7c5b8;
  --gse-color-border: #48625a;
  --gse-color-border-strong: #668078;
  --gse-color-depth: #0e1c1a;
  --gse-color-primary: #f08a70;
  --gse-color-primary-strong: #ffad94;
  --gse-color-primary-soft: #5a342e;
  --gse-color-success: #8fceb0;
  --gse-color-success-strong: #b1e4c8;
  --gse-color-success-soft: #294f42;
  --gse-color-error: #ff9a82;
  --gse-color-error-soft: #57322d;
  --gse-color-bonus: #f1d77e;
  --gse-color-bonus-strong: #ffe69b;
  --gse-color-bonus-soft: #554b29;
  --gse-color-focus: #f1d77e;
  --gse-color-overlay: rgb(5 13 12 / 64%);
  --gse-decor-right-face: #d8b952;
  --gse-decor-right-side: #a9903f;
  --gse-decor-right-top: #f1d77e;
  --gse-decor-left-face: #4d8e75;
  --gse-decor-left-side: #356652;
  --gse-decor-left-top: #b96253;
}

/* Compatibility aliases ease migration of the first two games. New code uses --gse-*. */
:root,
[data-gse-theme] {
  --paper: var(--gse-color-canvas);
  --paper-light: var(--gse-color-surface);
  --ink: var(--gse-color-text);
  --muted: var(--gse-color-text-muted);
  --line: var(--gse-color-border);
  --coral: var(--gse-color-primary);
  --coral-light: var(--gse-color-primary-soft);
  --mint: var(--gse-color-success-soft);
  --mint-dark: var(--gse-color-success);
  --yellow: var(--gse-color-bonus);
  --shadow: var(--gse-shadow-card);
}
}

@layer gse-reset {
/* source: src/base.css */
:where([data-gse-root]) {
  isolation: isolate;
  min-width: 320px;
  color: var(--gse-color-text);
  background: var(--gse-color-canvas);
  font-family: var(--gse-font-body);
  font-synthesis: none;
  accent-color: var(--gse-color-primary);
  -webkit-tap-highlight-color: transparent;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

:where([data-gse-root]) :where(button, input, select, textarea) { font: inherit; }
:where([data-gse-root]) :where(button, a) { touch-action: manipulation; }
:where([data-gse-root]) :where(button, a, input, select, textarea):focus-visible {
  outline: var(--gse-focus-width) solid var(--gse-color-focus);
  outline-offset: 4px;
}

.gse-display {
  margin: 0;
  color: var(--gse-color-text);
  font-family: var(--gse-font-display);
  font-size: var(--gse-font-size-xl);
  font-weight: 800;
  letter-spacing: -0.035em;
  line-height: var(--gse-leading-compact);
}

.gse-eyebrow {
  margin: 0;
  color: var(--gse-color-text-muted);
  font-size: var(--gse-font-size-xs);
  font-weight: 800;
  letter-spacing: var(--gse-tracking-label);
  text-transform: uppercase;
}
}

@layer gse-components {
/* source: src/components.css */
.gse-surface,
.gse-panel {
  border: var(--gse-line-thin) solid var(--gse-color-border);
  color: var(--gse-color-text);
  background: var(--gse-color-surface);
}
.gse-surface { border-radius: var(--gse-radius-xl); box-shadow: var(--gse-shadow-card); }
.gse-panel { border-radius: var(--gse-radius-lg); background: var(--gse-color-surface-muted); }

.gse-button {
  min-height: 2.75rem;
  padding: 0.75rem 1rem;
  border: var(--gse-line-thin) solid transparent;
  border-radius: var(--gse-radius-md);
  color: var(--gse-color-surface);
  font-weight: 800;
  background: var(--gse-color-text);
  box-shadow: 0 3px 0 var(--gse-color-depth);
  cursor: pointer;
  transition: transform var(--gse-duration-fast) var(--gse-ease-out), background var(--gse-duration-fast), opacity var(--gse-duration-fast);
}
.gse-button:hover:not(:disabled) { transform: translateY(-1px); }
.gse-button:active:not(:disabled) { transform: translateY(2px); box-shadow: 0 1px 0 var(--gse-color-depth); }
.gse-button:disabled { cursor: default; opacity: 0.48; }
.gse-button[data-variant="primary"] { color: var(--gse-color-surface); background: var(--gse-color-primary); }
.gse-button[data-variant="success"] { color: var(--gse-color-surface); background: var(--gse-color-success); }
.gse-button[data-variant="bonus"] { color: var(--gse-color-text); background: var(--gse-color-bonus); }
.gse-button[data-variant="quiet"] { color: var(--gse-color-text); border-color: var(--gse-color-border); background: transparent; box-shadow: none; }

.gse-icon-button {
  width: 2.5rem;
  height: 2.5rem;
  display: inline-grid;
  place-items: center;
  padding: 0;
  border: var(--gse-line-thin) solid var(--gse-color-border-strong);
  border-radius: 50%;
  color: var(--gse-color-text-muted);
  background: transparent;
}

.gse-chip,
.gse-stat {
  display: inline-flex;
  align-items: center;
  gap: var(--gse-space-2);
  border-radius: var(--gse-radius-round);
  font-size: var(--gse-font-size-xs);
  font-weight: 800;
}
.gse-chip { min-height: 1.75rem; padding: 0.35rem 0.7rem; color: var(--gse-color-success); background: var(--gse-color-success-soft); }
.gse-chip[data-state="error"] { color: var(--gse-color-error); background: var(--gse-color-error-soft); }
.gse-chip[data-state="bonus"] { color: var(--gse-color-bonus-strong); background: var(--gse-color-bonus-soft); }
.gse-stat { padding: 0.55rem 0.7rem; border-radius: var(--gse-radius-md); color: var(--gse-color-text); background: var(--gse-color-surface-sunken); }

.gse-progress { height: 0.5rem; overflow: hidden; border-radius: var(--gse-radius-round); background: var(--gse-color-surface-sunken); }
.gse-progress > * { height: 100%; border-radius: inherit; background: var(--gse-color-primary); transition: width var(--gse-duration-normal) var(--gse-ease-out); }

.gse-cell {
  position: relative;
  display: grid;
  place-items: center;
  border: var(--gse-line-thin) solid var(--gse-color-border);
  border-radius: var(--gse-radius-md);
  color: var(--gse-color-text);
  background: var(--gse-color-surface-sunken);
  box-shadow: var(--gse-shadow-rest);
  font-weight: 800;
  transition: transform var(--gse-duration-fast) var(--gse-ease-out), background var(--gse-duration-fast), color var(--gse-duration-fast);
}
.gse-cell[data-state="success"] { color: var(--gse-color-success); border-color: var(--gse-color-success); background: var(--gse-color-success-soft); }
.gse-cell[data-state="error"] { color: var(--gse-color-error); border-color: var(--gse-color-primary); background: var(--gse-color-error-soft); }
.gse-cell[data-state="bonus"] { color: var(--gse-color-bonus-strong); border-color: var(--gse-color-bonus); background: var(--gse-color-bonus-soft); }
.gse-cell[data-state="disabled"] { color: var(--gse-color-text-muted); opacity: 0.48; box-shadow: none; }

.gse-dialog {
  border: var(--gse-line-thin) solid var(--gse-color-border);
  border-radius: var(--gse-radius-xl);
  color: var(--gse-color-text);
  background: var(--gse-color-surface);
  box-shadow: var(--gse-shadow-dialog);
}
.gse-dialog::backdrop { background: var(--gse-color-overlay); backdrop-filter: blur(5px); }
}

@layer gse-shell {
/* source: src/shell.css */
.gse-app-shell {
  --gse-shell-max-width: 78.125rem;
  --gse-shell-sidebar-width: 20rem;
  --gse-shell-surface-min-width: 32.5rem;
  --gse-shell-surface-max-width: 42.5rem;
  --gse-shell-gap: clamp(2.375rem, 6vw, 5.25rem);
  --gse-shell-page-padding-x: 3rem;
  --gse-shell-page-padding-top: 1.75rem;
  --gse-shell-page-padding-bottom: 2.1875rem;
  --gse-shell-header-gap: 2.625rem;
  width: min(var(--gse-shell-max-width), 100%);
  min-height: 100dvh;
  margin-inline: auto;
  padding: var(--gse-shell-page-padding-top) var(--gse-shell-page-padding-x) var(--gse-shell-page-padding-bottom);
}

.gse-game-header {
  min-height: 2.875rem;
  margin-bottom: var(--gse-shell-header-gap);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gse-space-4);
}

.gse-game-brand {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.6875rem;
  color: var(--gse-color-text);
  font-family: var(--gse-font-display);
  text-decoration: none;
}

.gse-brand-copy strong {
  display: block;
  font-size: 1.375rem;
  font-weight: 800;
  letter-spacing: -0.05rem;
  line-height: 1.05;
}

.gse-brand-copy small {
  display: block;
  margin-top: 0.375rem;
  color: var(--gse-color-text-muted);
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.15rem;
  text-transform: uppercase;
}

.gse-header-actions {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}
.gse-locale-select {
  min-height: 2.25rem;
  max-width: 7rem;
  padding: 0 1.75rem 0 0.625rem;
  border: 1px solid var(--gse-color-border);
  border-radius: 999px;
  color: var(--gse-color-text);
  font: inherit;
  font-size: 0.6875rem;
  font-weight: 800;
  background: var(--gse-color-surface);
  cursor: pointer;
}

.gse-icon {
  width: 1.375rem;
  height: 1.375rem;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.gse-header-actions > .gse-icon-button {
  width: 2.75rem;
  height: 2.75rem;
  color: var(--gse-color-text);
  transition: background-color var(--gse-duration-fast), border-color var(--gse-duration-fast);
}

.gse-header-actions > .gse-icon-button:hover {
  border-color: var(--gse-color-text);
  background: var(--gse-color-surface);
}

.gse-menu-button {
  width: auto;
  height: 2.75rem;
  padding-inline: 1.125rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.9375rem;
  border: var(--gse-line-thin) solid var(--gse-color-border-strong);
  border-radius: var(--gse-radius-round);
  color: var(--gse-color-text);
  font-size: 0.8125rem;
  font-weight: 700;
  background: transparent;
}

.gse-menu-button:hover {
  border-color: var(--gse-color-text);
  background: var(--gse-color-surface);
}

.gse-catalog-link {
  flex: 0 0 auto;
  min-height: 2.75rem;
  padding-inline: 0.6875rem;
  display: inline-flex;
  align-items: center;
  border-radius: var(--gse-radius-round);
  color: var(--gse-color-text-muted);
  font-size: 0.625rem;
  font-weight: 800;
  text-decoration: none;
}

.gse-catalog-link:hover { color: var(--gse-color-text); }

.gse-sound-toggle .gse-sound-off { display: none; }
.gse-sound-toggle[data-muted="true"] .gse-sound-on { display: none; }
.gse-sound-toggle[data-muted="true"] .gse-sound-off { display: block; }

.gse-game-layout {
  min-height: 0;
  display: grid;
  grid-template-columns:
    minmax(16.875rem, var(--gse-shell-sidebar-width))
    minmax(var(--gse-shell-surface-min-width), var(--gse-shell-surface-max-width));
  gap: var(--gse-shell-gap);
  align-items: start;
  justify-content: center;
}

.gse-game-sidebar {
  min-height: 0;
  padding: 0.125rem 0.3125rem 1rem 0;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--gse-color-border) transparent;
}

.gse-mode-switch {
  width: 100%;
  margin-bottom: 1.125rem;
  padding: 0.25rem;
  display: flex;
  border-radius: var(--gse-radius-round);
  background: var(--gse-color-surface-sunken);
}

.gse-mode-button {
  min-width: 0;
  min-height: 2.75rem;
  flex: 1 1 0;
  padding: 0.6875rem 0.875rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--gse-space-2);
  border: 0;
  border-radius: var(--gse-radius-round);
  color: var(--gse-color-text-muted);
  font-size: 0.75rem;
  font-weight: 800;
  background: transparent;
}

.gse-mode-button[aria-selected="true"] {
  color: var(--gse-color-text);
  background: var(--gse-color-surface);
  box-shadow: 0 2px 5px color-mix(in srgb, var(--gse-color-text) 10%, transparent);
}

.gse-variation-section { margin-bottom: 1.25rem; }
.gse-variation-section > .gse-eyebrow { margin-bottom: 0.5rem; }

.gse-variation-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.4375rem;
}

.gse-variation-button {
  min-height: 2.8125rem;
  padding: 0.5rem 0.625rem;
  border: var(--gse-line-thin) solid var(--gse-color-border);
  border-radius: var(--gse-radius-md);
  color: var(--gse-color-text);
  text-align: center;
  background: var(--gse-color-surface-sunken);
}

.gse-variation-button:hover,
.gse-variation-button[aria-checked="true"] {
  border-color: var(--gse-color-success);
  color: var(--gse-color-success);
  background: var(--gse-color-success-soft);
  transform: translateY(-1px);
}

.gse-mode-intro h1 {
  margin: 0 0 1.125rem;
  font-size: clamp(2.125rem, 4vw, 3.125rem);
  line-height: 0.98;
  letter-spacing: -0.125rem;
}

.gse-mode-copy {
  max-width: 18.75rem;
  margin: 0;
  color: var(--gse-color-text-muted);
  font-size: 0.8125rem;
  line-height: 1.65;
}

.gse-supporting-info {
  margin-top: 1.25rem;
  padding: 1.125rem 0 1rem;
  border-block: var(--gse-line-thin) solid var(--gse-color-border);
}

.gse-supporting-heading {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  color: var(--gse-color-text-muted);
  font-size: 0.625rem;
}

.gse-supporting-heading strong {
  flex: 0 0 auto;
  color: var(--gse-color-text);
  font-size: 0.625rem;
  font-variant-numeric: tabular-nums;
}

.gse-tip {
  margin-top: 1.125rem;
  padding: 0.9375rem 0.875rem;
  display: flex;
  gap: 0.8125rem;
  border-radius: var(--gse-radius-lg);
  background: var(--gse-color-surface-muted);
}

.gse-tip-icon {
  flex: 0 0 auto;
  color: var(--gse-color-success);
  font-size: 1.5625rem;
  line-height: 1;
}

.gse-tip strong {
  display: block;
  margin-bottom: 0.4375rem;
  font-size: 0.625rem;
}

.gse-tip p {
  margin: 0;
  color: var(--gse-color-text-muted);
  font-size: 0.625rem;
  line-height: 1.55;
}

.gse-controls-hint {
  margin-top: 1rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--gse-color-text-muted);
  font-size: 0.5625rem;
}

.gse-controls-hint kbd {
  min-width: 2.125rem;
  padding: 0.25rem 0.375rem;
  border: var(--gse-line-thin) solid var(--gse-color-border);
  border-radius: var(--gse-radius-sm);
  color: var(--gse-color-text);
  font: 800 0.5rem var(--gse-font-display);
  text-align: center;
  background: var(--gse-color-surface);
  box-shadow: var(--gse-shadow-rest);
}

.gse-play-surface {
  width: 100%;
  min-height: 0;
  padding: 1.5rem 2.125rem 1.25rem;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.gse-surface-toolbar {
  min-height: 3.125rem;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}

.gse-status-pill {
  min-height: 1.75rem;
  padding: 0.375rem 0.625rem;
  display: inline-flex;
  align-items: center;
  gap: 0.4375rem;
  border: var(--gse-line-thin) solid var(--gse-color-border);
  border-radius: var(--gse-radius-round);
  color: var(--gse-color-text);
  font-size: 0.5625rem;
  font-weight: 800;
  background: var(--gse-color-success-soft);
}

.gse-status-pill > i {
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 50%;
  background: var(--gse-color-success);
}

.gse-play-stage {
  position: relative;
  min-height: 0;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.gse-pause-layer {
  position: absolute;
  inset: 0;
  z-index: 6;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.125rem;
  border-radius: var(--gse-radius-lg);
  color: var(--gse-color-text);
  background: color-mix(in srgb, var(--gse-color-surface) 94%, transparent);
  backdrop-filter: blur(7px);
}

.gse-pause-layer[aria-hidden="false"] { display: flex; }
.gse-pause-layer strong { font-family: var(--gse-font-display); font-size: 1.4375rem; }

.gse-pause-symbol {
  width: 4.25rem;
  height: 4.25rem;
  display: grid;
  place-items: center;
  border-radius: var(--gse-radius-xl);
  color: var(--gse-color-text);
  font-size: 2.125rem;
  font-weight: 800;
  background: var(--gse-color-bonus);
}

.gse-local-actions {
  flex: 0 0 auto;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: 0.5rem;
  padding-top: 0.875rem;
  border-top: var(--gse-line-thin) solid var(--gse-color-border);
}

.gse-local-action {
  min-height: 2.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4375rem;
  border: 0;
  border-radius: var(--gse-radius-md);
  color: var(--gse-color-text-muted);
  font-size: 0.625rem;
  background: transparent;
}

.gse-local-action:hover:not(:disabled) { background: var(--gse-color-surface-muted); }
.gse-local-action:disabled { cursor: default; opacity: 0.35; }

.gse-game-dialog {
  position: relative;
  width: min(26.25rem, calc(100vw - 2rem));
  padding: 2.125rem 2rem 1.625rem;
  overflow: visible;
  text-align: center;
}

.gse-game-dialog h2 { margin: 0 0 1rem; font-size: 1.875rem; line-height: 1.1; }

.gse-dialog-close {
  position: absolute;
  right: 0.375rem;
  top: 0.25rem;
  width: 2.75rem;
  height: 2.75rem;
  border: 0;
  border-radius: 50%;
  color: var(--gse-color-text-muted);
  font-size: 1.625rem;
  background: transparent;
}

.gse-dialog-close:hover { background: var(--gse-color-surface-muted); }

.gse-stats-grid {
  margin: 1.5rem 0 1.125rem;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.625rem;
}

.gse-stats-grid > * {
  padding: 1.125rem 0.3125rem;
  border-radius: var(--gse-radius-md);
  background: var(--gse-color-surface-sunken);
}

.gse-stats-grid strong {
  display: block;
  font-family: var(--gse-font-display);
  font-size: 1.875rem;
  letter-spacing: -0.0625rem;
}

.gse-stats-grid small {
  display: block;
  margin-top: 0.3125rem;
  color: var(--gse-color-text-muted);
  font-size: 0.5625rem;
}

.gse-settings-list { margin: 1.375rem 0; display: grid; gap: 0.4375rem; }

.gse-settings-list button {
  min-height: 3.0625rem;
  padding: 0.75rem 0.9375rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 0;
  border-radius: var(--gse-radius-md);
  color: var(--gse-color-text);
  background: var(--gse-color-surface-muted);
}

.gse-settings-list button:hover { background: var(--gse-color-surface-sunken); }
.gse-settings-list button > span { display: flex; align-items: center; gap: 0.6875rem; }
.gse-settings-list button i { width: 1.375rem; color: var(--gse-color-success); font-size: 1.125rem; font-style: normal; font-weight: 800; }
.gse-settings-list button b { font-size: 0.75rem; }
.gse-settings-list button em { color: var(--gse-color-text-muted); font-size: 0.625rem; font-style: normal; }

.gse-details { margin: 0.25rem 0 0.625rem; text-align: left; }
.gse-details summary { min-height: 2.75rem; padding: 0.75rem 0.25rem; color: var(--gse-color-success); cursor: pointer; font-size: 0.6875rem; font-weight: 800; }
.gse-details p { margin: 0 0.25rem 0.625rem; color: var(--gse-color-text-muted); font-size: 0.6875rem; line-height: 1.55; }

.gse-dialog-catalog-link {
  min-height: 2.75rem;
  margin-top: 0.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--gse-color-text-muted);
  font-size: 0.6875rem;
  font-weight: 700;
  text-decoration: none;
}

.gse-dialog-catalog-link:hover { color: var(--gse-color-text); text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 56.25rem) and (min-width: 49.4375rem) {
  .gse-app-shell { --gse-shell-page-padding-x: 1.5625rem; --gse-shell-gap: 1.875rem; }
  .gse-game-layout {
    grid-template-columns: minmax(14.6875rem, 16.875rem) minmax(28.75rem, 1fr);
  }
  .gse-play-surface { padding-inline: 1.375rem; }
  .gse-mode-intro h1 { font-size: 2.4375rem; }
}

@media (max-height: 47.5rem) and (min-width: 49.4375rem) {
  .gse-app-shell {
    --gse-shell-page-padding-top: 1.25rem;
    --gse-shell-page-padding-bottom: 1.25rem;
    --gse-shell-header-gap: 1.625rem;
  }
  .gse-variation-button { min-height: 2.5rem; }
  .gse-mode-intro h1 { font-size: 2.625rem; }
  .gse-supporting-info { padding-block: 0.875rem 0.8125rem; }
  .gse-tip { padding-block: 0.75rem; }
  .gse-controls-hint { margin-top: 0.75rem; }
}

@media (max-width: 49.375rem) {
  .gse-app-shell {
    --gse-shell-page-padding-x: 1.125rem;
    --gse-shell-page-padding-top: max(1.1875rem, env(safe-area-inset-top));
    --gse-shell-page-padding-bottom: max(1.5rem, env(safe-area-inset-bottom));
    --gse-shell-header-gap: 1.5rem;
  }
  .gse-game-header { min-height: 2.875rem; }
  .gse-brand-copy strong { font-size: 1.125rem; }
  .gse-brand-copy small { margin-top: 0.25rem; font-size: 0.4375rem; letter-spacing: 0.10625rem; }
  .gse-header-actions { gap: 0.3125rem; }
  .gse-header-actions > .gse-icon-button,
  .gse-menu-button { width: 2.5rem; height: 2.5rem; }
  .gse-menu-button { padding: 0; }
  .gse-menu-button > span:first-child { display: none; }
  .gse-catalog-link {
    width: 2.125rem;
    height: 2.125rem;
    min-height: 0;
    padding: 0;
    display: grid;
    place-items: center;
    overflow: hidden;
    color: transparent;
    font-size: 0;
    border: var(--gse-line-thin) solid var(--gse-color-border-strong);
  }
  .gse-catalog-link::before { content: "←"; color: var(--gse-color-text-muted); font-size: 0.9375rem; }
  .gse-game-layout { display: flex; flex-direction: column; gap: 1.375rem; }
  .gse-game-sidebar {
    width: 100%;
    max-height: none;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.125rem 0.875rem;
    overflow: visible;
  }
  .gse-game-sidebar > * { grid-column: 1 / -1; }
  .gse-mode-switch,
  .gse-variation-section,
  .gse-supporting-info,
  .gse-tip,
  .gse-controls-hint { margin-top: 0; margin-bottom: 0; }
  .gse-mode-copy { max-width: none; }
  .gse-play-surface { min-height: 38.75rem; padding: 1.25rem 1.125rem 1rem; }
}

@media (max-width: 32.5rem) {
  .gse-app-shell { --gse-shell-page-padding-x: 0.75rem; }
  .gse-brand-copy small { display: none; }
  .gse-header-actions > .gse-icon-button,
  .gse-menu-button { width: 2.375rem; height: 2.375rem; }
  .gse-catalog-link { width: 2rem; height: 2rem; }
  .gse-status-pill { max-width: 7.5rem; overflow: hidden; }
  .gse-status-pill > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gse-play-surface { min-height: 36.875rem; padding-inline: 0.75rem; }
  .gse-game-dialog { padding-inline: 1.5rem; }
}
}

@layer gse-shell {
/* source: src/decorations.css */
.gse-scene {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}

.gse-scene::after {
  content: "";
  position: absolute;
  width: clamp(17rem, 25vw, 31rem);
  aspect-ratio: 1;
  left: clamp(-15.5rem, -13vw, -8rem);
  top: 44%;
  border: 1px solid color-mix(in srgb, var(--gse-color-border) 72%, transparent);
  border-radius: 50%;
  opacity: 0.62;
  box-shadow: inset 0 0 0 clamp(1rem, 1.8vw, 2rem) var(--gse-color-canvas), inset 0 0 0 calc(clamp(1rem, 1.8vw, 2rem) + 1px) color-mix(in srgb, var(--gse-color-border) 58%, transparent);
}

.gse-cube-fragment {
  --gse-cube-size: clamp(7rem, 12vw, 12rem);
  --gse-cube-face: var(--gse-decor-right-face);
  --gse-cube-side: var(--gse-decor-right-side);
  --gse-cube-top: var(--gse-decor-right-top);
  position: absolute;
  width: var(--gse-cube-size);
  height: calc(var(--gse-cube-size) * 0.68);
  border-radius: clamp(1rem, 2vw, 2.2rem);
  background: var(--gse-cube-face);
  filter: saturate(0.92);
  transform: rotate(-17deg) skewX(-3deg);
  opacity: 0.88;
}
.gse-cube-fragment::before,
.gse-cube-fragment::after { content: ""; position: absolute; border-radius: inherit; }
.gse-cube-fragment::before {
  width: 42%;
  height: 83%;
  right: -27%;
  top: 14%;
  background: var(--gse-cube-side);
  transform: skewY(-35deg);
  transform-origin: left top;
}
.gse-cube-fragment::after {
  width: 94%;
  height: 42%;
  left: 8%;
  top: -28%;
  background: var(--gse-cube-top);
  transform: skewX(-45deg);
  transform-origin: left bottom;
}
.gse-cube-fragment[data-side="right"] { top: clamp(-7rem, -7vw, -3rem); right: clamp(-7rem, -5vw, -2rem); }
.gse-cube-fragment[data-side="left"] {
  --gse-cube-size: clamp(11rem, 19vw, 20rem);
  --gse-cube-face: var(--gse-decor-left-face);
  --gse-cube-side: var(--gse-decor-left-side);
  --gse-cube-top: var(--gse-decor-left-top);
  left: clamp(-13rem, -9vw, -5rem);
  bottom: clamp(-8rem, -8vw, -3rem);
  transform: rotate(18deg) skewX(-3deg);
  opacity: 0.34;
}

@media (max-width: 1100px) {
  .gse-cube-fragment[data-side="right"] { right: -8rem; opacity: 0.52; }
  .gse-cube-fragment[data-side="left"] { left: -12rem; opacity: 0.2; }
}
@media (max-width: 720px) { .gse-scene { display: none; } }
@media (prefers-reduced-motion: reduce) { .gse-scene *, .gse-scene *::before, .gse-scene *::after { transition: none !important; animation: none !important; } }
}

@layer gse-consumer {
/* source: src/contract-shell.css */
/* Strict consumers only. Page chrome and extension boundaries belong to the engine. */
html { min-width: 320px; min-height: 100%; }
body { min-height: 100%; margin: 0; }
*, *::before, *::after { box-sizing: border-box; }
button { cursor: pointer; }
button:disabled { cursor: default; }
[hidden] { display: none !important; }

.gse-game-slot {
  display: block;
  position: relative;
  isolation: isolate;
  contain: layout paint;
  min-width: 0;
  width: 100%;
}
.gse-game-slot[data-gse-slot="artwork"] { width: max-content; max-width: 100%; padding: 0.5rem; }
.gse-start-card > .gse-game-slot[data-gse-slot="artwork"] { margin: 0 auto 1rem; }
.gse-game-header { flex-wrap: wrap; }
.gse-game-brand > .gse-game-slot[data-gse-slot="artwork"] { flex: 0 0 auto; }
.gse-header-actions { margin-left: auto; }

[data-gse-layout="compact-board"] .gse-app-shell {
  --gse-shell-sidebar-width: 18.75rem;
  --gse-shell-surface-min-width: 32rem;
  --gse-shell-surface-max-width: 42rem;
  --gse-shell-gap: clamp(2rem, 5vw, 4.5rem);
}
[data-gse-layout="compact-board"] .gse-play-surface { min-height: 39rem; }
[data-gse-layout="compact-board"] .gse-play-stage { min-height: 30rem; gap: 1.1rem; padding: 1rem 0 1.25rem; }
[data-gse-layout="timed-choice"] .gse-app-shell {
  --gse-shell-sidebar-width: 18.75rem;
  --gse-shell-surface-min-width: 34rem;
  --gse-shell-surface-max-width: 44rem;
  --gse-shell-gap: clamp(2rem, 5vw, 4.5rem);
}
[data-gse-layout="timed-choice"] .gse-play-surface { min-height: 39rem; }
[data-gse-layout="timed-choice"] .gse-play-stage { padding-block: 1rem 1.35rem; }
[data-gse-layout="timed-choice"] .gse-surface-toolbar { align-items: flex-start; }
[data-gse-layout="board-editor"] .gse-app-shell {
  --gse-shell-sidebar-width: 18.5rem;
  --gse-shell-surface-min-width: 32rem;
  --gse-shell-surface-max-width: 40rem;
  --gse-shell-gap: clamp(2rem, 5vw, 4rem);
}
[data-gse-layout="board-editor"] .gse-play-surface { min-height: 39rem; }
[data-gse-layout="board-editor"] .gse-play-stage { padding: 0.55rem 0 0.8rem; gap: 0.25rem; }
[data-gse-layout="board-editor"] .gse-local-actions { margin-top: 0.55rem; }
.gse-supporting-copy { margin: 0.65rem 0 0; color: var(--gse-color-text-muted); font-size: 0.72rem; line-height: 1.5; }
[data-gse-layout="word-board"] .gse-app-shell {
  --gse-shell-sidebar-width: 18.75rem;
  --gse-shell-surface-min-width: 32rem;
  --gse-shell-surface-max-width: 42rem;
  --gse-shell-gap: clamp(2rem, 5vw, 4.5rem);
}
[data-gse-layout="word-board"] .gse-play-stage { min-height: 0; padding: 0.5rem 0; gap: 0.25rem; }
[data-gse-layout="word-board"] .gse-surface-toolbar { flex-wrap: wrap; gap: 0.6rem; }
[data-gse-layout="word-board"] .gse-toolbar-stats { margin-left: auto; }
[data-gse-layout="word-board"] .gse-variation-button strong { font-size: 0.67rem; }
.gse-toolbar-stats .gse-stat[data-state="error"] { color: var(--gse-color-error); }
.gse-progress-summary { margin: 0.75rem 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.7rem; color: var(--gse-color-text-muted); font-size: 0.72rem; font-weight: 800; }
.gse-word-form { width: min(31.25rem, 100%); margin: 0.7rem auto 0; }
.gse-word-form > label { display: block; margin-bottom: 0.45rem; color: var(--gse-color-text); font-size: 0.8rem; font-weight: 800; }
.gse-input-row { display: flex; gap: 0.5rem; }
.gse-input-row > input { min-width: 0; width: 100%; flex: 1; min-height: 3rem; padding: 0.65rem 0.8rem; border: 1px solid var(--gse-color-border); border-radius: 0.75rem; color: var(--gse-color-text); font: inherit; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; background: var(--gse-color-surface); }
.gse-input-row > input::placeholder { color: var(--gse-color-text-muted); font-size: 0.75rem; letter-spacing: 0; text-transform: none; }
.gse-input-row > input:focus-visible { outline: 2px solid var(--gse-color-focus); outline-offset: 2px; }
.gse-input-row > .gse-button { white-space: nowrap; padding-inline: 0.9rem; font-size: 0.75rem; }
.gse-word-form[data-presentation="keyboard"], .gse-clipboard-buffer { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.gse-option-card, .gse-debug-panel { margin-top: 1rem; padding: 0.9rem; border: 1px solid var(--gse-color-border); border-radius: 0.9rem; background: var(--gse-color-surface); }
.gse-option-card p:not(.gse-eyebrow), .gse-debug-panel p { margin: 0.45rem 0 0; color: var(--gse-color-text-muted); font-size: 0.7rem; line-height: 1.55; }
.gse-option-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.75rem; }
.gse-option-heading h2 { margin: 0; font-size: 0.9rem; }
.gse-option-heading > .gse-icon-button { flex-shrink: 0; }
.gse-state-badge { padding: 0.3rem 0.4rem; border-radius: 0.4rem; color: var(--gse-color-success); font-size: 0.56rem; font-weight: 900; background: var(--gse-color-success-soft); }
.gse-state-badge[data-state="error"] { color: var(--gse-color-error); background: var(--gse-color-error-soft); }
.gse-text-action { margin-top: 0.7rem; padding: 0; border: 0; color: var(--gse-color-success); font: inherit; font-size: 0.75rem; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; background: transparent; }
.gse-debug-panel { background: var(--gse-color-surface-muted); }
.gse-debug-panel > div { margin-top: 0.8rem; }
.gse-debug-panel label { display: block; margin: 0.4rem 0; font-size: 0.7rem; font-weight: 800; }
.gse-debug-panel select { width: 100%; min-height: 2.4rem; padding: 0.4rem; border: 1px solid var(--gse-color-border); border-radius: 0.55rem; color: var(--gse-color-text); font: inherit; font-size: 0.75rem; background: var(--gse-color-surface); }
.gse-settings-list > label { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.35rem 0; text-align: left; }
.gse-settings-list > label > strong { font-size: 0.8rem; }
.gse-settings-list select { flex: 0 1 13rem; min-width: 0; min-height: 2.75rem; padding: 0.5rem 0.75rem; border: 1px solid var(--gse-color-border); border-radius: 0.65rem; color: var(--gse-color-text); font: inherit; font-size: 0.85rem; background: var(--gse-color-surface); }
.gse-settings-list select:focus-visible { outline: 2px solid var(--gse-color-focus); outline-offset: 2px; }
.gse-debug-tags { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.gse-debug-tags > span { padding: 0.25rem 0.4rem; border-radius: 0.35rem; color: var(--gse-color-bonus-strong); font-size: 0.6rem; font-weight: 800; background: var(--gse-color-bonus-soft); }
.gse-debug-tags > span[data-state="empty"] { background: transparent; }
.gse-debug-log { max-height: 13rem; margin: 0.5rem 0; padding: 0; overflow: auto; list-style: none; }
.gse-debug-log li { padding: 0.45rem 0; border-bottom: 1px solid var(--gse-color-border); color: var(--gse-color-text-muted); font-size: 0.65rem; line-height: 1.45; }
.gse-debug-log time { display: inline-block; min-width: 2rem; margin-right: 0.3rem; color: var(--gse-color-success); }
.gse-record-summary { margin: 1rem 0; padding: 0.85rem; display: grid; gap: 0.25rem; border-radius: 0.85rem; background: var(--gse-color-bonus-soft); }
.gse-record-summary span { color: var(--gse-color-text-muted); font-size: 0.65rem; font-weight: 800; }
.gse-record-summary strong { font-size: 1.3rem; }
.gse-dialog-brand { justify-content: center; margin-bottom: 1rem; }
.gse-brand-name { font-size: 1.3rem; font-weight: 900; }
.gse-loading-card { display: grid; justify-items: center; gap: 1rem; text-align: center; }
.gse-loading-title { margin: 0; font-family: var(--gse-font-display); font-size: 2rem; font-weight: 900; }
.gse-loading-dots { display: flex; gap: 0.4rem; }
.gse-loading-dots i { width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--gse-color-primary); animation: gse-loading-pulse 1s infinite alternate; }
.gse-loading-dots i:nth-child(2) { animation-delay: 0.2s; }
.gse-loading-dots i:nth-child(3) { animation-delay: 0.4s; }
@keyframes gse-loading-pulse { to { opacity: 0.3; transform: translateY(-0.25rem); } }

/* Number puzzles use the same theme and chrome, with a compact, variable-size board. */
[data-gse-layout="number-board"] .gse-app-shell {
  --gse-shell-sidebar-width: 18.75rem;
  --gse-shell-surface-min-width: 23rem;
  --gse-shell-surface-max-width: min(38rem, max(23rem, calc(100dvh - 20rem)));
  --gse-shell-gap: clamp(2rem, 5vw, 4.5rem);
}
[data-gse-layout="number-board"] .gse-game-layout { align-items: start; }
[data-gse-layout="number-board"] .gse-play-surface { min-height: 0; }
[data-gse-layout="number-board"] .gse-play-stage { padding: 0.5rem 0; gap: 0.6rem; }
[data-gse-layout="number-board"] .gse-mode-switch { flex-wrap: wrap; }
[data-gse-layout="number-board"] .gse-mode-button { min-width: 5rem; min-height: 2.75rem; flex: 1 1 28%; padding-inline: 0.3rem; font-size: 0.7rem; }
.gse-size-picker { margin: 1rem 0; }
.gse-size-picker > p { margin: 0 0 0.5rem; color: var(--gse-color-text-muted); font-size: 0.7rem; font-weight: 800; }
.gse-size-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4rem; }
.gse-size-options button { min-height: 2.75rem; padding: 0.5rem; border: 1px solid var(--gse-color-border); border-radius: 0.6rem; color: var(--gse-color-text-muted); font: inherit; font-size: 0.8rem; font-weight: 800; background: var(--gse-color-surface); }
.gse-size-options button[aria-checked="true"] { border-color: var(--gse-color-success); color: var(--gse-color-success); background: var(--gse-color-success-soft); }
.gse-step-indicators { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.75rem; }
.gse-step-indicators i { width: 1.5rem; height: 1.5rem; display: grid; place-items: center; border-radius: 50%; font-size: 0.6rem; font-style: normal; color: var(--gse-color-surface); background: var(--gse-color-border-strong); }
.gse-step-indicators i[data-state="done"] { background: var(--gse-color-success); }
.gse-step-indicators i[data-state="current"] { background: var(--gse-color-primary); }
.gse-session-info { margin-top: 1.1rem; padding-top: 0.8rem; border-top: 1px solid var(--gse-color-border); }
.gse-session-info p, .gse-session-info strong { color: var(--gse-color-text-muted); font-size: 0.72rem; line-height: 1.5; }
.gse-session-info p { margin: 0.4rem 0; }
.gse-session-info strong { color: var(--gse-color-text); }
.gse-tap-legend { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-top: 1rem; }
.gse-tap-legend > span { display: flex; align-items: center; gap: 0.3rem; color: var(--gse-color-text-muted); font-size: 0.62rem; }
.gse-tap-count { display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border: 1px solid var(--gse-color-border); border-radius: 0.4rem; font-style: normal; background: var(--gse-color-surface); }
.gse-timer { display: flex; align-items: center; gap: 0.4rem; color: var(--gse-color-text-muted); font-size: 0.85rem; font-variant-numeric: tabular-nums; }
.gse-entry-gate { position: absolute; inset: 0; z-index: 5; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.75rem; padding: 1rem; border-radius: 1rem; text-align: center; background: var(--gse-color-surface); }
.gse-entry-gate > strong { font-family: var(--gse-font-display); font-size: 1.4rem; }
.gse-entry-gate > p { max-width: 25rem; margin: 0; color: var(--gse-color-text-muted); font-size: 0.8rem; line-height: 1.5; }
.gse-text-button { min-height: 2.75rem; padding: 0.5rem 0.75rem; border: 0; border-radius: 0.5rem; color: var(--gse-color-text-muted); font: inherit; font-size: 0.75rem; font-weight: 800; background: transparent; }
.gse-text-button:hover { color: var(--gse-color-text); background: var(--gse-color-surface-muted); }
.gse-game-dialog > .gse-text-button { width: 100%; margin-top: 0.25rem; }
.gse-decision-actions { display: grid; gap: 0.4rem; margin-top: 0.6rem; }
.gse-choice-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6rem; }
.gse-choice-row > .gse-button { min-height: 2.875rem; padding-inline: 0.5rem; }
.gse-decision-actions > p { margin: 0.3rem 0; text-align: center; color: var(--gse-color-text-muted); font-size: 0.75rem; }
.gse-session-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(5rem, 1fr)); gap: 0.25rem; }
.gse-session-actions > .gse-text-button { min-width: 0; padding-inline: 0.25rem; line-height: 1.3; }
.gse-session-actions > span, .gse-decision-actions > span { grid-column: 1 / -1; text-align: center; color: var(--gse-color-text-muted); font-size: 0.65rem; }
.gse-hint-action { background: var(--gse-color-bonus-soft); }
.gse-hint-action b { min-width: 1.1rem; padding: 0.15rem; border-radius: 50%; font-size: 0.6rem; background: var(--gse-color-bonus); }
.gse-visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.gse-tutorial-steps { display: grid; gap: 0.65rem; margin: 1.2rem 0; text-align: left; }
.gse-tutorial-steps > span { display: flex; align-items: center; gap: 0.65rem; font-size: 0.75rem; }
.gse-tutorial-steps i { flex: 0 0 auto; display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: 0.5rem; font-style: normal; color: var(--gse-color-success); background: var(--gse-color-success-soft); }
.gse-reward-card { margin: 1.2rem 0; padding: 1rem; border: 1px solid var(--gse-color-border); border-radius: 1rem; text-align: left; background: var(--gse-color-surface-muted); }
.gse-reward-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.4rem; }
.gse-reward-kicker { margin: 0; color: var(--gse-color-success); font-size: 0.6rem; font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; }
.gse-reward-topic { padding: 0.25rem 0.4rem; border-radius: 0.4rem; color: var(--gse-color-bonus-strong); font-size: 0.6rem; font-weight: 800; background: var(--gse-color-bonus-soft); }
.gse-reward-card h3 { margin: 0.7rem 0 0.5rem; font-family: var(--gse-font-display); font-size: 1.1rem; }
.gse-reward-teaser, .gse-reward-body { margin: 0.5rem 0; font-size: 0.8rem; line-height: 1.55; }
.gse-reward-details summary { display: list-item; min-height: 2.75rem; padding-block: 0.8rem; color: var(--gse-color-success); font-size: 0.75rem; font-weight: 800; cursor: pointer; }
.gse-reward-details summary:focus-visible { outline: 2px solid var(--gse-color-focus); outline-offset: 2px; border-radius: 0.3rem; }
.gse-reward-source { color: var(--gse-color-text-muted); font-size: 0.65rem; line-height: 1.5; }
.gse-share-dialog > label { display: flex; align-items: center; gap: 0.5rem; min-height: 2.75rem; font-size: 0.75rem; text-align: left; }
.gse-share-dialog textarea { width: 100%; min-height: 10rem; resize: vertical; padding: 0.75rem; border: 1px solid var(--gse-color-border); border-radius: 0.7rem; color: var(--gse-color-text); font: inherit; font-size: 0.75rem; background: var(--gse-color-surface-muted); }
.gse-share-id { display: block; overflow-wrap: anywhere; color: var(--gse-color-text-muted); font-size: 0.6rem; }
.gse-share-meta, .gse-share-result { font-size: 0.75rem; }
.gse-toast { position: fixed; z-index: 100; left: 50%; bottom: 1.5rem; max-width: calc(100vw - 2rem); padding: 0.75rem 1rem; border-radius: 0.75rem; color: var(--gse-color-surface); font-size: 0.8rem; text-align: center; background: var(--gse-color-text); box-shadow: var(--gse-shadow-card); opacity: 0; transform: translate(-50%, 0.5rem); pointer-events: none; transition: opacity var(--gse-duration-normal), transform var(--gse-duration-normal); }
.gse-toast[data-visible="true"] { opacity: 1; transform: translate(-50%, 0); }
.gse-orientation-notice { display: none; }
@media (orientation: landscape) and (max-height: 600px) and (pointer: coarse) {
  .gse-orientation-notice { position: fixed; inset: 0; z-index: 50; display: grid; place-content: center; justify-items: center; gap: 1rem; padding: 1.75rem; text-align: center; background: var(--gse-color-canvas); }
  .gse-orientation-notice > span { color: var(--gse-color-bonus-strong); font-size: 3rem; }
  .gse-orientation-notice > p { max-width: 17rem; font-size: 0.9rem; line-height: 1.55; }
}
.gse-toolbar-stats { display: flex; gap: 0.45rem; }
.gse-toolbar-stats .gse-stat { min-width: 5.1rem; display: grid; justify-items: center; gap: 0.2rem; border-radius: 0.65rem; font-variant-numeric: tabular-nums; }
.gse-toolbar-stats small { color: var(--gse-color-text-muted); font-size: 0.5rem; letter-spacing: 0.08em; }
.gse-toolbar-stats strong { font-size: 0.82rem; }
.gse-toolbar-stats .gse-stat[data-state="bonus"] { color: var(--gse-color-bonus-strong); background: var(--gse-color-bonus-soft); }

/* Native value/max provide progress without consumer-owned inline CSS. */
progress.gse-progress {
  --gse-progress-color: var(--gse-color-primary);
  display: block;
  width: 100%;
  height: 0.45rem;
  appearance: none;
  border: 0;
  color: var(--gse-progress-color);
  background: var(--gse-color-surface-sunken);
}
progress.gse-progress::-webkit-progress-bar { border-radius: inherit; background: var(--gse-color-surface-sunken); }
progress.gse-progress::-webkit-progress-value { border-radius: inherit; background: var(--gse-progress-color); }
progress.gse-progress::-moz-progress-bar { border-radius: inherit; background: var(--gse-progress-color); }
progress.gse-progress[data-state="success"] { --gse-progress-color: var(--gse-color-success); }
progress.gse-progress[data-state="error"] { --gse-progress-color: var(--gse-color-error); }
.gse-supporting-info > .gse-progress { height: 0.35rem; margin-top: 0.75rem; }
.gse-play-surface > .gse-progress { margin-bottom: 0.4rem; }
.gse-phase-copy { min-height: 4.6rem; display: grid; align-content: center; justify-items: center; gap: 0.32rem; text-align: center; }
.gse-phase-copy p { margin: 0; color: var(--gse-color-text); font-family: var(--gse-font-display); font-size: clamp(1.35rem, 4vw, 1.9rem); font-weight: 900; letter-spacing: -0.035em; }
.gse-phase-copy span { color: var(--gse-color-text-muted); font-size: 0.74rem; font-weight: 700; line-height: 1.45; }
.gse-field-note { min-height: 1.3rem; color: var(--gse-color-text-muted); font-size: 0.68rem; font-weight: 800; line-height: 1.4; text-align: center; }
.gse-field-note[data-state="error"] { color: var(--gse-color-error); }
.gse-field-note[data-state="success"] { color: var(--gse-color-success); }
.gse-step-list { margin-top: 0.8rem; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.35rem; }
.gse-step-button { min-width: 0; min-height: 2.75rem; padding: 0.25rem; border: 1px solid var(--gse-color-border); border-radius: 0.65rem; color: var(--gse-color-text-muted); font-size: 0.72rem; font-weight: 800; background: var(--gse-color-surface-sunken); }
.gse-step-button[aria-current="step"] { color: var(--gse-color-surface); border-color: var(--gse-color-primary); background: var(--gse-color-primary); }
.gse-step-button[data-complete="true"]::after { content: " ✓"; }
.gse-step-button:disabled { opacity: 0.42; }
.gse-selection-panel { min-height: 4.55rem; padding: 0.72rem 0.8rem; display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; border: 1px solid var(--gse-color-border); border-radius: 0.85rem; background: var(--gse-color-surface); }
.gse-selection-summary { min-width: 0; display: flex; align-items: center; gap: 0.65rem; }
.gse-selection-summary p { min-width: 0; margin: 0; display: grid; gap: 0.22rem; }
.gse-selection-summary strong { font-size: 0.72rem; }
.gse-selection-summary small { color: var(--gse-color-text-muted); font-size: 0.65rem; line-height: 1.4; }
.gse-selection-badge { min-width: 2rem; min-height: 2rem; padding: 0.25rem; flex: 0 0 auto; display: grid; place-items: center; border-radius: 0.58rem; color: var(--gse-color-text); font-size: 0.65rem; font-weight: 900; background: var(--gse-color-surface-sunken); }
.gse-selection-badge[data-state="success"]::after { content: "✓"; color: var(--gse-color-success); }
.gse-selection-badge[data-state="error"]::after { content: "!"; color: var(--gse-color-error); }
.gse-selection-actions { flex: 0 0 auto; display: flex; gap: 0.4rem; }
.gse-selection-actions > .gse-button { padding-inline: 0.65rem; font-size: 0.65rem; }

.gse-blocking-screen {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: grid;
  place-items: center;
  padding: 1.25rem;
  overflow: auto;
  background:
    radial-gradient(circle at 30% 10%, color-mix(in srgb, var(--gse-color-bonus) 18%, transparent), transparent 60%),
    color-mix(in srgb, var(--gse-color-canvas) 95%, transparent);
  backdrop-filter: blur(8px);
}
.gse-start-card { width: min(35rem, 100%); padding: clamp(1.7rem, 6vw, 3.1rem); text-align: center; }
.gse-runtime-start-screen { width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; border: 0; color: var(--gse-color-text); }
.gse-runtime-start-screen:not([open]) { display: none; }
.gse-runtime-start-screen::backdrop { background: transparent; }
.gse-start-card h1 { margin: 0.4rem 0 1.25rem; font-size: clamp(2.8rem, 10vw, 4.9rem); letter-spacing: -0.075em; line-height: 0.92; }
.gse-start-card h1[data-gse-title-size="compact"] { font-size: clamp(2.25rem, 9vw, 4.6rem); }
.gse-start-copy { margin: 1.35rem 0 1.15rem; color: var(--gse-color-text); font-size: 1.05rem; font-weight: 800; }
.gse-start-description { margin: 0 auto 1.1rem; color: var(--gse-color-text-muted); font-size: 0.82rem; line-height: 1.55; }
.gse-callout { margin: 0.85rem 0 1rem; padding: 0.7rem 0.85rem; border: 1px solid var(--gse-color-bonus); border-radius: 0.75rem; color: var(--gse-color-text-muted); font-size: 0.72rem; line-height: 1.45; background: var(--gse-color-bonus-soft); }
.gse-callout b { color: var(--gse-color-text); }
.gse-tutorial-card { margin: 1rem 0; padding: 0.9rem; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 1rem; border-radius: 1rem; text-align: left; background: var(--gse-color-surface-muted); }
.gse-tutorial-copy { display: grid; gap: 0.4rem; }
.gse-tutorial-copy strong { font-size: 0.75rem; }
.gse-tutorial-copy span { color: var(--gse-color-text-muted); font-size: 0.68rem; line-height: 1.45; }
.gse-action-stack { display: grid; gap: 0.65rem; }
.gse-action-stack > .gse-button { width: 100%; }
.gse-result-score { margin: 0.8rem 0 0.7rem; display: grid; gap: 0.15rem; }
.gse-result-score strong { font-size: clamp(2.6rem, 10vw, 4.5rem); letter-spacing: -0.06em; line-height: 1; }
.gse-result-score span { color: var(--gse-color-text-muted); font-size: 0.62rem; font-weight: 800; letter-spacing: 0.11em; text-transform: uppercase; }
.gse-rule-steps { margin: 0 0 1.2rem; display: grid; gap: 0.5rem; text-align: left; }
.gse-rule-steps p { margin: 0; padding: 0.78rem 0.9rem; display: grid; gap: 0.18rem; border-radius: 0.8rem; background: var(--gse-color-surface-muted); }
.gse-rule-steps b { color: var(--gse-color-text); font-size: 0.8rem; }
.gse-rule-steps span { color: var(--gse-color-text-muted); font-size: 0.72rem; line-height: 1.4; }
.gse-start-card > .gse-button, .gse-game-dialog > .gse-button { width: 100%; }
.gse-game-dialog { position: fixed; inset: 0; height: fit-content; max-height: calc(100dvh - 2rem); margin: auto; overflow: auto; overscroll-behavior: contain; }
.gse-game-dialog > p:not(.gse-eyebrow) { color: var(--gse-color-text-muted); font-size: 0.78rem; line-height: 1.55; }
.gse-game-dialog > .gse-game-slot[data-gse-slot="artwork"] { margin: 1rem auto; }
.gse-stats-grid[data-gse-columns="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gse-stats-grid[data-gse-columns="3"] strong { font-size: 1.45rem; }
.gse-stats-grid[data-gse-columns="4"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.gse-stats-grid[data-gse-columns="4"] strong { font-size: 1.25rem; }
.gse-rules-list { margin: 1.2rem 0; display: grid; gap: 0.55rem; text-align: left; }
.gse-rules-list p { margin: 0; padding: 0.78rem; border-radius: 0.75rem; color: var(--gse-color-text-muted); font-size: 0.76rem; line-height: 1.5; background: var(--gse-color-surface-muted); }
.gse-rules-list b { color: var(--gse-color-primary); }
ol.gse-rules-list { padding: 0; list-style: none; }
.gse-rules-list li { padding: 0.75rem; display: flex; align-items: center; gap: 0.7rem; border-radius: 0.75rem; color: var(--gse-color-text-muted); font-size: 0.76rem; line-height: 1.45; background: var(--gse-color-surface-muted); }
.gse-rules-list li b { width: 1.55rem; height: 1.55rem; flex: 0 0 auto; display: grid; place-items: center; border-radius: 0.45rem; color: var(--gse-color-surface); background: var(--gse-color-primary); }

@media (max-width: 49.375rem) {
  [data-gse-layout="number-board"] .gse-play-surface { order: -1; min-height: 0; }
  [data-gse-layout="word-board"] .gse-play-surface { order: -1; min-height: 0; }
  [data-gse-layout="compact-board"] .gse-play-surface { order: -1; min-height: 34rem; }
  [data-gse-layout="compact-board"] .gse-play-stage { min-height: 0; }
  [data-gse-layout="timed-choice"] .gse-play-surface { order: -1; min-height: 32rem; }
  [data-gse-layout="timed-choice"] .gse-play-stage { min-height: 0; }
  [data-gse-layout="board-editor"] .gse-play-surface { order: -1; min-height: 0; }
  .gse-game-sidebar { padding-bottom: 1rem; }
}
@media (max-width: 32.5rem) {
  [data-gse-layout="compact-board"] .gse-surface-toolbar { gap: 0.5rem; }
  [data-gse-layout="compact-board"] .gse-status-pill { display: none; }
  [data-gse-layout="compact-board"] .gse-play-surface { min-height: 31rem; }
  [data-gse-layout="compact-board"] .gse-play-stage { padding-top: 0.35rem; }
  [data-gse-layout="timed-choice"] .gse-surface-toolbar { gap: 0.5rem; }
  [data-gse-layout="timed-choice"] .gse-status-pill { display: none; }
  [data-gse-layout="board-editor"] .gse-toolbar-stats { width: auto; flex-shrink: 0; }
  [data-gse-layout="board-editor"] .gse-status-pill { flex-shrink: 0; }
  .gse-stats-grid[data-gse-columns="4"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gse-toolbar-stats { width: 100%; }
  .gse-toolbar-stats .gse-stat { min-width: 0; flex: 1; }
  .gse-toolbar-stats strong { white-space: nowrap; }
  .gse-phase-copy { min-height: 4.25rem; }
  .gse-phase-copy p { font-size: 1.35rem; }
  .gse-selection-panel { align-items: stretch; flex-direction: column; }
  .gse-selection-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gse-tutorial-card { grid-template-columns: 1fr; justify-items: center; text-align: center; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
}
/* consumer: summarium; theme: parchment; layout: number-board */
