/* ReactKing — informational pages and footer. */

.content-page {
    width: min(100%, var(--page-max-width));
    min-height: 100vh;
    margin: 0 auto;
    padding: clamp(var(--spacing-15), 2.5vw, var(--spacing-30));
}

.public-content-header {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-bottom: var(--spacing-15);
}

.content-shell {
    width: min(100%, 52rem);
    margin: 0 auto;
    padding: var(--spacing-100) 0;
}

.recovery-page { min-height: 60vh; }
.recovery-page h1 { font-size: clamp(1.75rem, 5vw, 2.625rem); }
.recovery-page > p:not(.eyebrow) { max-width: 42rem; color: var(--muted); line-height: 1.8; }
.recovery-actions { display: flex; flex-wrap: wrap; gap: var(--spacing-15); margin-top: var(--spacing-30); }
.recovery-details { margin-top: var(--spacing-30); color: var(--muted); font-size: .8rem; overflow-wrap: anywhere; }
.recovery-details summary { cursor: pointer; min-height: 2.75rem; align-content: center; }

.content-hero {
    margin-bottom: var(--spacing-100);
}

.content-hero h1 {
    max-width: 46rem;
    margin: 0 0 var(--spacing-25);
    font-size: clamp(2rem, 6vw, var(--text-display));
}

.content-hero > p:last-child, .content-steps span, .content-empty {
    color: var(--muted);
    font-size: 0.95rem;
    letter-spacing: 0.035em;
    line-height: 1.8;
    text-transform: none;
}

.content-section {
    padding: var(--spacing-30) 0;
    border-top: 1px solid var(--color-ash);
}

.content-section h2 {
    margin: 0 0 var(--spacing-15);
    font-size: 1rem;
}

.content-section p {
    color: var(--muted);
    font-size: 0.95rem;
    letter-spacing: 0.035em;
    line-height: 1.8;
    text-transform: none;
    margin: 0;
}

.content-section p + p {
    margin-top: var(--spacing-20);
}

.content-section a {
    color: var(--color-ghost-white);
    text-decoration: underline;
    text-decoration-color: var(--color-kippo-pink);
    text-underline-offset: 0.3em;
}

.content-steps {
    display: grid;
    gap: var(--spacing-20);
    margin: 0;
    padding: 0;
    list-style: none;
}

.content-steps li {
    display: grid;
    grid-template-columns: minmax(8rem, 0.35fr) 1fr;
    gap: var(--spacing-20);
}

.content-steps strong {
    color: var(--color-ghost-white);
    font-size: 0.75rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.more-games-shell {
    width: 100%;
}

.more-games-hero {
    max-width: 48rem;
    margin-bottom: var(--spacing-25);
}

.more-games-hero h1 {
    margin-bottom: var(--spacing-10);
    font-size: clamp(1.6rem, 3vw, 2.2rem);
}

.more-games-hero > p:last-child, .more-game-card p {
    color: var(--color-text-secondary);
    font-size: 0.95rem;
    line-height: 1.8;
}

.more-games-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--spacing-20);
}

.more-games-divider {
    margin: var(--spacing-50) 0;
    border: 0;
    border-top: 1px solid var(--color-ash);
}

.more-game-card {
    --more-game-card-padding: clamp(var(--spacing-15), 2vw, var(--spacing-20));
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 0;
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-cards);
    background: var(--color-surface-raised);
}

.more-game-card-link {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-height: 100%;
    padding: var(--more-game-card-padding) var(--more-game-card-padding) 0;
    border-radius: inherit;
}

.more-game-card::before {
    pointer-events: none;
}

.more-game-card-link:focus-visible {
    outline: 2px solid var(--color-kippo-pink);
    outline-offset: -3px;
}

.more-game-card-top {
    display: flex;
    justify-content: space-between;
    gap: var(--spacing-10);
    margin-bottom: var(--spacing-10);
    color: var(--muted);
    font-size: var(--text-caption);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    flex-wrap: wrap;
}

.more-game-card-top > span:first-child {
    color: var(--color-ghost-white);
}

.more-game-card-top > span:last-child {
    color: #ff6478;
    text-shadow: 0 0 0.3rem rgba(255, 70, 94, 0.24);
    white-space: nowrap;
}

.more-game-card .game-card-heading {
    margin-bottom: var(--spacing-10);
}

.more-game-card h2 {
    font-size: 0.95rem;
}

.more-game-card p {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.65;
}

.more-games-ranked-link {
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
    margin-top: var(--spacing-25);
}

.more-game-card-actions {
    display: flex;
    flex-direction: column;
    gap: .65rem;
    padding-top: var(--spacing-15);
    margin-inline: calc(var(--more-game-card-padding) * -1);
    margin-top: auto;
}

.more-game-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    min-height: 2.75rem;
    padding: .55rem .8rem;
    border-top: 1px solid var(--color-border-subtle);
    background: transparent;
    color: var(--color-text-secondary);
    font-size: .75rem;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: .08em;
    text-align: center;
    text-transform: uppercase;
    touch-action: manipulation;
    transition: border-color 160ms ease, color 160ms ease;
}

.more-game-action-copy {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    transform: translateY(0) scale(1);
    transition: color 160ms ease,
                text-shadow 160ms ease,
                transform 280ms cubic-bezier(0.34, 1.56, 0.64, 1);
}

.more-game-card-link:hover .more-game-action,
.more-game-card-link:focus-visible .more-game-action {
    border-color: color-mix(in srgb, var(--color-kippo-pink) 48%, transparent);
    background: transparent;
    color: var(--color-action-hover);
}

.more-game-card-link:is(:hover, :focus-visible) .more-game-action-copy {
    animation: interactive-text-pulse 1.25s 290ms ease-in-out infinite alternate;
    transform: translateY(-2px) scale(1.025);
}

.more-game-card-link:active .more-game-action {
    filter: brightness(.92);
}

.more-game-modes {
    display: block;
    padding-inline: var(--spacing-15);
    color: var(--color-text-tertiary);
    font-size: .7rem;
    line-height: 1.4;
    text-align: center;
}

:is(.typing-race-entry, .jump-duck-entry, .pattern-recall-entry):has(.game-mode-chooser) {
    display: block;
    width: 100%;
    min-height: 0;
    padding: 0;
    border: 0;
    background: transparent;
    text-align: left;
}

:is(.typing-race-page, .jump-duck-page, .pattern-recall-page, .rocket-riot-page, .gauntlet-page) main.more-game-setup {
    width: min(100%, 44rem);
    margin-inline: auto;
    padding: var(--spacing-30) 0 var(--spacing-50);
}

.more-game-setup .game-mode-chooser {
    width: 100%;
    margin-inline: 0;
}

@media (prefers-reduced-motion: reduce) {
    .more-game-card-link:hover .more-game-action-copy,
    .more-game-card-link:focus-visible .more-game-action-copy {
        animation: none;
        transform: none;
    }
}

.shop-preview {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--spacing-20);
}

.shop-preview article {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: clamp(var(--spacing-15), 2vw, var(--spacing-20));
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-cards);
    background: var(--color-surface-raised);
    box-shadow: 0 0.75rem 2rem rgba(1, 5, 12, 0.08);
    transition: border-color 160ms ease, box-shadow 160ms ease;
}

.shop-preview article:hover, .shop-preview article:focus-within {
    border-color: color-mix(in srgb, var(--color-kippo-pink) 42%, var(--color-border-subtle));
    background: var(--color-surface-raised);
    box-shadow: 0 0.75rem 2rem rgba(1, 5, 12, 0.08),
                inset 0 0 0 1px rgba(238, 31, 102, 0.1);
    transform: none;
}

.shop-preview article::before {
    position: absolute;
    top: 0;
    left: var(--spacing-25);
    width: 3rem;
    height: 2px;
    background: var(--color-kippo-pink);
    content: "";
    opacity: 0.65;
    pointer-events: none;
    transition: width 160ms ease, opacity 160ms ease;
}

.shop-preview article:is(:hover, :focus-within)::before {
    width: 4.5rem;
    opacity: 1;
}

.shop-preview article:has(.shop-primary-action:not(:disabled)) {
    cursor: pointer;
}

.shop-preview h2 {
    margin: 0 0 var(--spacing-10);
    font-size: 0.85rem;
}

.shop-item-preview {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--spacing-5);
    min-height: 2.75rem;
    margin-bottom: var(--spacing-10);
    padding: var(--spacing-5);
    font-size: 0.8rem;
}

.shop-item-preview > strong { max-width: 100%; overflow-wrap: anywhere; }
.shop-preview-player { color: var(--color-ghost-white); font-weight: 700; }
.shop-preview-title {
    padding: 0.25rem 0.4rem;
    border: 1px solid var(--title-rarity-accent);
    background: var(--title-rarity-bg);
    color: var(--title-rarity-accent);
    font-size: 0.62rem;
    letter-spacing: 0.06em;
}

.shop-preview p, .shop-guest-note {
    margin: 0;
    color: var(--muted);
    font-size: 0.8rem;
    line-height: 1.6;
}

.shop-price {
    margin-top: var(--spacing-10);
    color: var(--color-kippo-pink);
    font-size: 0.75rem;
}

.shop-action {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    min-height: 2.75rem;
    margin-top: auto;
    padding: var(--spacing-10) 0 0;
    border: 0;
    background: transparent;
    color: var(--color-kippo-pink);
    cursor: pointer;
    font: inherit;
    font-size: 0.68rem;
    font-weight: 700;
    text-align: left;
}

.shop-primary-action {
    color: var(--color-text-secondary);
}
.shop-primary-action-copy {
    position: relative;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    transform: translateY(0) scale(1);
    transition: color 160ms ease,
                text-shadow 160ms ease,
                transform 280ms cubic-bezier(0.34, 1.56, 0.64, 1);
}
.shop-primary-action-copy > span { color: inherit; font-size: .9rem; }
.shop-primary-action:not(:disabled)::after {
    position: absolute;
    z-index: 1;
    inset: 0;
    content: "";
}
.shop-preview article:is(:hover, :focus-within) .shop-primary-action:not(:disabled) .shop-primary-action-copy {
    animation: interactive-text-pulse 1.25s 290ms ease-in-out infinite alternate;
    color: var(--color-ghost-white);
    transform: translateY(-2px) scale(1.025);
}
.shop-preview article:is(:hover, :focus-within) .shop-primary-action:not(:disabled) .shop-primary-action-copy > span { color: var(--color-kippo-pink); }
.shop-action:hover { text-decoration: underline; }
.shop-primary-action:hover { text-decoration: none; }
.shop-action:disabled { color: var(--muted); cursor: default; text-decoration: none; }
.shop-action:focus-visible { outline: 2px solid var(--color-kippo-pink); outline-offset: 2px; }
.shop-primary-action:focus-visible { outline: none; }
.shop-preview article:has(.shop-primary-action:focus-visible) {
    outline: 2px solid var(--color-kippo-pink);
    outline-offset: 2px;
}
.shop-preview article > .shop-action:not(.shop-primary-action) {
    position: relative;
    z-index: 3;
}

@media (prefers-reduced-motion: reduce) {
    .shop-preview article:is(:hover, :focus-within) .shop-primary-action:not(:disabled) .shop-primary-action-copy {
        animation: none;
        transform: none;
    }
}

@media (min-width: 1100px) {
    .more-games-list, .shop-preview { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-15); }
}
.shop-message { margin: 0 0 var(--spacing-20); color: var(--color-kippo-pink); }
.shop-message.is-error { color: var(--color-feedback-error); }

.shop-guest-note { margin-top: var(--spacing-30); }
.shop-guest-note a { color: var(--color-kippo-pink); text-decoration: underline; }

.reaction-practice-arena [hidden] {
    display: none !important;
}

.reaction-practice-arena .arena-header {
    z-index: 4;
}

.reaction-practice-mode {
    position: absolute;
    left: 50%;
    display: grid;
    justify-items: center;
    font-family: var(--mono);
    text-transform: uppercase;
    transform: translateX(-50%);
}

.reaction-practice-mode strong {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .1em;
}

.reaction-practice-mode small {
    color: rgba(255, 255, 255, .58);
    font-size: .56rem;
    letter-spacing: .08em;
}

.reaction-practice-trial {
    position: relative;
    display: flex;
    min-height: 0;
    flex: 1;
}

.reaction-practice-target {
    width: 100%;
    padding: 5rem 1rem 4.5rem;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: crosshair;
    touch-action: manipulation;
    user-select: none;
}

.reaction-practice-target:disabled {
    opacity: 1;
    cursor: default;
}

.reaction-practice-target:focus-visible {
    outline: 2px solid rgba(255, 255, 255, .75);
    outline-offset: -4px;
}

.reaction-practice-progress {
    position: absolute;
    top: clamp(.65rem, 2.4vh, 1.35rem);
    right: 1rem;
    left: 1rem;
    z-index: 3;
    display: grid;
    justify-items: center;
    gap: .5rem;
    pointer-events: none;
}

.reaction-practice-round {
    margin: 0;
    color: rgba(255, 255, 255, .72);
    font-family: var(--mono);
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.reaction-practice-live-results {
    display: flex;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: var(--radius-buttons);
    background: rgba(0, 0, 0, .26);
    font-family: var(--mono);
    font-variant-numeric: tabular-nums;
}

.reaction-practice-live-results > span {
    display: flex;
    min-width: 5.7rem;
    align-items: baseline;
    justify-content: center;
    gap: .45rem;
    padding: .45rem .65rem;
    border-left: 1px solid rgba(255, 255, 255, .16);
}

.reaction-practice-live-results > span:first-child {
    border-left: 0;
}

.reaction-practice-live-results small {
    color: rgba(255, 255, 255, .55);
    font-size: .52rem;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.reaction-practice-live-results strong {
    color: var(--color-ghost-white);
    font-size: .65rem;
}

.reaction-practice-live-average strong {
    color: var(--color-kippo-pink);
}

.reaction-practice-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--spacing-20);
    margin-top: var(--spacing-25);
}

.reaction-practice-round-actions {
    position: absolute;
    bottom: clamp(.75rem, 3vh, var(--spacing-30));
    left: 50%;
    z-index: 3;
    margin: 0;
    transform: translateX(-50%);
    pointer-events: none;
    white-space: nowrap;
}

.reaction-practice-round-actions button {
    pointer-events: auto;
}

.reaction-practice-arena .reaction-practice-round-actions .button.game-action-button {
    min-width: 12.5rem;
    min-height: 3.1rem;
    justify-content: space-between;
    padding: .7rem .85rem .7rem 1rem;
    border: 1px solid rgba(255, 255, 255, .58);
    border-left: 3px solid var(--color-kippo-pink);
    border-radius: 0;
    background: rgba(10, 14, 21, .88);
    color: var(--color-ghost-white);
    letter-spacing: .1em;
}

.reaction-practice-arena .reaction-practice-round-actions .button.game-action-button:hover,
.reaction-practice-arena .reaction-practice-round-actions .button.game-action-button:focus-visible {
    border-color: var(--color-kippo-pink);
    background: #17131d;
}

.reaction-practice-arena .reaction-practice-round-actions .button.game-action-button > span {
    color: var(--color-kippo-pink);
    font-size: .95rem;
}

.reaction-practice-arena[data-phase="false-start"] .reaction-practice-message,
.reaction-practice-arena[data-phase="paused"] .reaction-practice-message {
    font-size: clamp(2.2rem, 8vw, 5.5rem);
    line-height: .95;
}

.reaction-practice-arena[data-phase="complete-round"] .reaction-practice-message {
    letter-spacing: .035em !important;
}

.reaction-practice-arena[data-phase="complete-round"],
.reaction-practice-arena[data-phase="paused"] {
    background: var(--color-carbon);
}

.reaction-practice-summary h2 {
    margin: var(--spacing-10) 0 var(--spacing-30);
    font-size: clamp(2rem, 5vw, 3rem);
}

.reaction-practice-results {
    margin: 0;
    padding: 0;
    list-style: none;
}

.reaction-practice-results li,
.reaction-practice-average {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-15);
    padding: var(--spacing-15) 0;
    border-bottom: 1px solid var(--color-ash);
}

.reaction-practice-results li span,
.reaction-practice-average span {
    color: var(--muted);
    font-size: 0.8rem;
    text-transform: uppercase;
}

.reaction-practice-results li strong {
    font-size: 1.25rem;
}

.reaction-practice-results li strong, .reaction-practice-average strong,
.typing-race-lane-heading small {
    font-variant-numeric: tabular-nums;
}

.reaction-practice-average {
    margin-top: var(--spacing-20);
    border-bottom-color: var(--color-kippo-pink);
}

.reaction-practice-average strong {
    color: var(--color-kippo-pink);
    font-size: clamp(1.75rem, 5vw, 2.5rem);
}

.jump-duck-shell {
    width: min(100%, 62.5rem);
    margin-inline: auto;
    padding: var(--spacing-35) 0 var(--spacing-50);
}

.jump-duck-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-30);
    margin-bottom: var(--spacing-25);
}

.jump-duck-heading h1 {
    margin-bottom: var(--spacing-5);
    font-size: clamp(2rem, 5vw, 3.25rem);
}

.jump-duck-heading p:last-child {
    max-width: 48rem;
    color: #c7c7ca;
    line-height: 1.5;
}

.jump-duck-entry {
    display: grid;
    min-height: 26rem;
    place-content: center;
    justify-items: center;
    padding: var(--spacing-30);
    border: 1px solid #2b313b;
    border-radius: var(--radius-cards);
    text-align: center;
}

.jump-duck-entry p {
    max-width: 35rem;
    color: #c7c7ca;
}

.jump-duck-arena {
    position: relative;
    overflow: hidden;
    border: 1px solid #2b313b;
    border-radius: var(--radius-cards);
}

.jump-duck-arena canvas {
    display: block;
    width: 100%;
    height: min(58vh, 34rem);
    min-height: 23rem;
}

.jump-duck-controls {
    display: flex;
    gap: var(--spacing-15);
    margin-top: var(--spacing-20);
    touch-action: manipulation;
}

.jump-duck-controls button {
    display: grid;
    flex: 1;
    min-height: 4.5rem;
    place-content: center;
    gap: 0.2rem;
    border: 1px solid #2b313b;
    border-radius: var(--radius-buttons);
    background: #0d1117;
    color: var(--color-ghost-white);
    cursor: pointer;
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    user-select: none;
    transition: border-color 160ms ease, color 160ms ease, background-color 160ms ease;
}

.jump-duck-controls button:hover:not(:disabled),
.jump-duck-controls button:focus-visible {
    border-color: #2fffd0;
    color: #2fffd0;
}

.jump-duck-controls button:active {
    background: #171b22;
}

.jump-duck-controls button:disabled {
    opacity: 0.5;
    cursor: default;
}

.jump-duck-controls small {
    color: var(--muted);
    font-size: 0.6rem;
}

/* Live Jukeschool owns the viewport; setup retains the normal site layout. */
.jump-duck-page.is-playing {
    position: fixed;
    z-index: 10;
    inset: 0;
    width: 100%;
    height: 100dvh;
    min-height: 0;
    max-width: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background: #0d1117;
}

.jump-duck-shell.is-playing {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    width: 100%;
    height: 100%;
    min-height: 0;
    margin: 0;
    padding: 0;
}

.jump-duck-shell.is-playing .jump-duck-live-header {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    min-height: 3.75rem;
    align-items: center;
    gap: var(--spacing-15);
    padding: var(--spacing-15) clamp(var(--spacing-15), 3vw, var(--spacing-35));
    border-bottom: 1px solid #2b313b;
    background: rgba(8, 12, 17, 0.94);
}

.jump-duck-live-header h1 {
    margin: 0;
    font-size: clamp(0.8rem, 1.5vw, 1rem);
}

.jump-duck-live-header h1 a {
    display: inline-block;
    color: inherit;
    text-decoration: none;
    transform: translateY(0) scale(1);
    transition: color 160ms ease, text-shadow 160ms ease,
                transform 280ms cubic-bezier(0.34, 1.56, 0.64, 1);
}

.jump-duck-live-header h1 a:is(:hover, :focus-visible) {
    animation: jump-duck-copy-pulse 1.25s 290ms ease-in-out infinite alternate;
    color: #2fffd0;
    text-shadow: 0 0 0.8rem rgba(47, 255, 208, 0.55);
    transform: translateY(-2px) scale(1.025);
}

.jump-duck-live-header .versus-chip {
    min-width: 0;
    max-width: 45vw;
    flex-direction: row;
    align-items: center;
    gap: var(--spacing-10);
}

.jump-duck-live-header .versus-chip > span:last-child {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    opacity: 0.58;
}

.jump-duck-live-header .versus-chip > span:first-child {
    color: #2fffd0;
}

.jump-duck-live-header .versus-chip i {
    display: grid;
    flex: none;
    width: 1.5rem;
    height: 1.5rem;
    opacity: 0.48;
}

.jump-duck-live-mode {
    justify-self: end;
    color: var(--muted);
    font: 0.6rem var(--mono);
    text-transform: uppercase;
}

.jump-duck-shell.is-playing .jump-duck-arena {
    min-width: 0;
    min-height: 0;
    border: 0;
    border-radius: 0;
}

.jump-duck-shell.is-playing .jump-duck-arena canvas {
    width: 100%;
    height: 100%;
    min-height: 0;
}

.jump-duck-shell.is-playing .jump-duck-controls {
    justify-content: center;
    gap: var(--spacing-10);
    margin: 0;
    padding: var(--spacing-10) max(var(--spacing-15), env(safe-area-inset-right)) max(var(--spacing-10), env(safe-area-inset-bottom)) max(var(--spacing-15), env(safe-area-inset-left));
    border-top: 1px solid #2b313b;
    background: rgba(8, 12, 17, 0.94);
}

.jump-duck-shell.is-playing .jump-duck-controls button {
    flex: 0 1 18rem;
    min-height: 3.25rem;
    border-color: rgba(120, 135, 151, 0.34);
    background: transparent;
    font-size: 0.8rem;
    transform: none;
}

.jump-duck-control-copy {
    display: grid;
    place-items: center;
    gap: 0.2rem;
    transform: translateY(0) scale(1);
    transition: color 160ms ease, text-shadow 160ms ease,
                transform 280ms cubic-bezier(0.34, 1.56, 0.64, 1);
}

.jump-duck-shell.is-playing .jump-duck-controls button:is(:hover, :focus-visible):not(:disabled) {
    border-color: rgba(47, 255, 208, 0.72);
    background: rgba(47, 255, 208, 0.045);
    color: #2fffd0;
}

.jump-duck-shell.is-playing .jump-duck-controls button:is(:hover, :focus-visible):not(:disabled) .jump-duck-control-copy {
    animation: jump-duck-copy-pulse 1.25s 290ms ease-in-out infinite alternate;
    text-shadow: 0 0 0.85rem rgba(47, 255, 208, 0.62);
    transform: translateY(-2px) scale(1.025);
}

@keyframes jump-duck-copy-pulse {
    from {
        scale: 1;
        translate: 0 0;
        text-shadow: 0 0 0.55rem rgba(47, 255, 208, 0.42);
    }

    to {
        scale: 1.035;
        translate: 0 -1px;
        text-shadow: 0 0 0.95rem rgba(47, 255, 208, 0.78);
    }
}

.jump-duck-shell.is-playing > .match-chat-error {
    margin: 0;
    padding: var(--spacing-5) var(--spacing-15);
    text-align: center;
}

@media (max-width: 600px) {
    .jump-duck-shell.is-playing .jump-duck-live-header {
        grid-template-columns: auto minmax(0, 1fr);
        min-height: 3.25rem;
        padding-block: var(--spacing-10);
    }

    .jump-duck-live-header .versus-chip {
        max-width: none;
        justify-self: end;
        font-size: 0.6rem;
    }

    .jump-duck-live-mode {
        display: none;
    }

    .jump-duck-shell.is-playing .jump-duck-controls button {
        flex: 1;
    }
}

@media (max-height: 480px) {
    .jump-duck-shell.is-playing .jump-duck-live-header {
        min-height: 2.75rem;
        padding-block: var(--spacing-5);
    }

    .jump-duck-shell.is-playing .jump-duck-controls {
        padding-top: var(--spacing-5);
        padding-bottom: max(var(--spacing-5), env(safe-area-inset-bottom));
    }

    .jump-duck-shell.is-playing .jump-duck-controls button {
        min-height: 2.75rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .jump-duck-live-header h1 a:is(:hover, :focus-visible),
    .jump-duck-shell.is-playing .jump-duck-controls button:is(:hover, :focus-visible) .jump-duck-control-copy {
        animation: none;
        transform: none;
    }
}

.typing-race-shell {
    padding: var(--spacing-50) 0 var(--spacing-100);
}

.typing-race-page.is-playing {
    display: flex;
    flex-direction: column;
}

.typing-race-shell.is-playing {
    flex: 1;
    display: grid;
    place-items: center;
    padding: var(--spacing-15) 0;
}

.typing-race-shell.is-playing .typing-race-heading {
    display: none;
}

.typing-race-heading {
    display: flex;
    justify-content: space-between;
    gap: var(--spacing-30);
    margin-bottom: var(--spacing-35);
}

.typing-race-heading h1 {
    font-size: clamp(2.2rem, 5vw, 4rem);
}

.typing-race-heading p:last-child,
.typing-race-entry p,
.typing-race-hint {
    color: #c7c7ca;
    line-height: 1.7;
}

.typing-race-entry {
    display: grid;
    min-height: 26rem;
    place-content: center;
    justify-items: center;
    padding: var(--spacing-30);
    border: 1px solid var(--color-ash);
    border-radius: var(--radius-cards);
    text-align: center;
}

.typing-race-entry > .button + .button,
.jump-duck-entry > .button + .button {
    margin-top: var(--spacing-10);
}

.typing-race-invite-fallback {
    width: min(100%, 28rem);
    padding: var(--spacing-10);
    border: 1px solid var(--color-ghost-white);
    background: transparent;
    color: var(--color-ghost-white);
    font: inherit;
}

.typing-race-arena {
    --typing-you: #60e5d2;
    --typing-opponent: #b19aeb;
    position: relative;
    width: min(100%, 56rem);
    min-height: 27rem;
    padding: var(--spacing-20);
    border: 1px solid var(--color-ash);
}

.typing-race-lanes {
    display: grid;
    gap: var(--spacing-15);
    margin-bottom: var(--spacing-20);
}

.typing-race-lane {
    padding: var(--spacing-15);
    border: 1px solid var(--color-ash);
    border-left: 3px solid var(--lane-accent);
    border-radius: var(--radius-buttons);
}

.typing-race-lane-you {
    --lane-accent: var(--typing-you);
    --lane-remaining: #f0f7f6;
    border-color: #60e5d25c;
    border-left-color: var(--lane-accent);
    background: #101f25;
}
.typing-race-lane-opponent {
    --lane-accent: var(--typing-opponent);
    --lane-remaining: #a9adbb;
    background: #10121b;
}
.typing-race-opponent-name { display: flex; align-items: baseline; flex-wrap: wrap; gap: .35rem .75rem; min-width: 0; overflow-wrap: anywhere; }
.typing-race-lane-role { color: var(--lane-accent); }
.typing-race-lane-heading > span:last-child { color: var(--lane-accent); flex-shrink: 0; font-variant-numeric: tabular-nums; }
.typing-race-lane-you .typing-race-lane-heading > span:first-child { color: var(--lane-accent); }
.typing-race-lane-opponent .typing-race-lane-text {
    min-height: 0;
    margin-block: .75rem;
    font-size: clamp(.9rem, 1.7vw, 1.1rem);
    font-weight: 400;
}
.typing-race-lane-you .typing-race-progress { height: 5px; }

.typing-race-lane-heading {
    display: flex;
    justify-content: space-between;
    gap: var(--spacing-20);
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.typing-race-status {
    margin: 0 0 var(--spacing-10);
    min-height: 2.5rem;
    color: var(--color-kippo-pink);
    font-size: var(--text-caption);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-align: center;
}

.typing-race-status.is-countdown {
    font-size: clamp(2rem, 6vw, 3rem);
    line-height: 1;
}

.typing-race-lane-text {
    min-height: 3.5rem;
    margin: var(--spacing-15) 0;
    font-size: clamp(1.1rem, 2.5vw, 1.8rem);
    font-weight: 700;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.typing-race-lane-text span:first-child {
    color: var(--lane-accent);
}

.typing-race-lane-text.is-hidden {
    visibility: hidden;
}

.typing-race-lane-text span:last-child {
    color: var(--lane-remaining);
}

.typing-race-arena label {
    display: block;
    margin-bottom: var(--spacing-10);
    font-size: var(--text-caption);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.typing-race-input {
    width: 100%;
    resize: vertical;
    padding: var(--spacing-15);
    border: 1px solid var(--color-ghost-white);
    border-radius: var(--radius-buttons);
    background: var(--color-void-black);
    color: var(--color-ghost-white);
    font: inherit;
    line-height: 1.5;
}

.typing-race-input-field { position: relative; }
.typing-race-input:focus:not(.is-error) { border-color: var(--typing-you); outline: 2px solid var(--typing-you); outline-offset: 1px; }
.typing-race-input-field .typing-race-input {
    display: block;
    position: relative;
    margin: 0;
    white-space: pre-wrap;
    overflow-wrap: break-word;
    tab-size: 8;
}
.typing-race-input-highlight {
    display: none;
    position: absolute;
    inset: 1px;
    overflow: hidden;
    pointer-events: none;
    border-radius: var(--radius-buttons);
    background: var(--color-void-black);
    color: var(--color-ghost-white);
}
.typing-race-input-highlight > div {
    box-sizing: border-box;
    padding: var(--spacing-15);
    font: inherit;
    line-height: 1.5;
    white-space: pre-wrap;
    overflow-wrap: break-word;
    tab-size: 8;
}
.typing-race-input-field.has-feedback .typing-race-input-highlight { display: block; }
.typing-race-input-field.has-feedback .typing-race-input {
    background: transparent;
    color: transparent;
    -webkit-text-fill-color: transparent;
    caret-color: var(--color-ghost-white);
}
.typing-race-input-highlight .is-wrong {
    color: var(--color-feedback-error);
    background: #ff526b30;
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 3px;
}
.typing-race-input.is-error {
    border-color: var(--color-feedback-error);
    outline: 2px solid var(--color-feedback-error);
    outline-offset: 1px;
}
.typing-race-error { min-height: 1.5em; margin: .5rem 0 0; color: var(--color-feedback-error); font-size: .8rem; }
.typing-race-leave-practice { margin-top: .75rem; }
@media (forced-colors: active) {
    .typing-race-input-field.has-feedback .typing-race-input-highlight { display: none; }
    .typing-race-input-field.has-feedback .typing-race-input { color: CanvasText; -webkit-text-fill-color: CanvasText; caret-color: CanvasText; }
}

.typing-race-progress {
    height: 3px;
    margin-top: var(--spacing-15);
    background: var(--color-ash);
}

.typing-race-progress span {
    display: block;
    width: 0;
    height: 100%;
    background: var(--lane-accent);
}

.typing-race-head-to-head {
    display: grid;
    gap: var(--spacing-5);
    margin: var(--spacing-15) 0;
    font-family: var(--mono);
    text-transform: uppercase;
}

.typing-race-head-to-head > span,
.typing-race-head-to-head > small {
    color: var(--muted);
    font-size: var(--text-caption);
}

.typing-race-head-to-head > strong {
    font-size: 1.5rem;
}

.typing-race-result-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--spacing-10);
}

.typing-race-result-actions button:disabled {
    cursor: default;
    opacity: 0.6;
}

.typing-race-rematch-status {
    color: var(--color-kippo-pink);
    font-size: var(--text-caption);
    text-transform: uppercase;
}

@media (max-width: 900px) {
    .more-games-list {
        grid-template-columns: 1fr;
    }

    .shop-preview { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
    .typing-race-heading {
        flex-direction: column;
    }

    .typing-race-arena {
        padding: var(--spacing-20);
    }

    .typing-race-lane {
        padding: var(--spacing-15);
    }

    .jump-duck-heading {
        flex-direction: column;
    }

    .jump-duck-arena canvas {
        height: 50vh;
    }
}

.site-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-25);
    padding: var(--spacing-30) 0;
    border-top: 1px solid var(--color-ash);
    color: var(--muted);
    font-size: var(--text-caption);
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.site-footer nav {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem var(--spacing-20);
}

.site-footer a {
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
    color: var(--muted);
}

.site-footer a:hover, .site-footer a:focus-visible {
    color: var(--color-kippo-pink);
}

.leaderboard-intro {
    color: var(--muted);
    font-size: 0.95rem;
    letter-spacing: 0.035em;
    line-height: 1.8;
    text-transform: none;
    max-width: 46rem;
    margin: var(--spacing-25) 0 var(--spacing-35);
}

@media (max-width: 600px) {
    .content-page {
        padding: var(--spacing-15);
    }

    .content-shell {
        padding: var(--spacing-50) 0;
    }

    .content-hero {
        margin-bottom: var(--spacing-50);
    }

    .content-steps li {
        grid-template-columns: 1fr;
        gap: var(--spacing-5);
    }

    .site-footer {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* Entry instructions share a readable scale without changing live game surfaces. */
:is(.jump-duck-heading, .typing-race-heading, .pattern-recall-heading) .text-link-light {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
    white-space: nowrap;
}

:is(.jump-duck-entry, .typing-race-entry) {
    min-height: 22rem;
    padding: clamp(1.25rem, 4vw, 2.5rem);
    border-color: var(--color-border-subtle);
    background: var(--color-surface-raised);
}

:is(.jump-duck-entry, .typing-race-entry, .pattern-recall-entry) h2 {
    font-size: clamp(1.1rem, 3vw, 1.5rem);
    overflow-wrap: anywhere;
}

:is(.jump-duck-entry, .typing-race-entry, .pattern-recall-entry) p {
    font-size: .875rem;
    line-height: 1.7;
}

@media (max-width: 600px) {
    .jump-duck-heading { align-items: flex-start; gap: .75rem; }
    .jump-duck-heading p:last-child { margin-bottom: 0; }
    .typing-race-shell:not(.is-playing) { padding: var(--spacing-30) 0 var(--spacing-50); }
    .reaction-practice-progress { right: .5rem; left: .5rem; }
    .reaction-practice-live-results { width: min(100%, 24rem); }
    .reaction-practice-live-results > span { min-width: 0; flex: 1; gap: .25rem; padding: .4rem .25rem; }
    .reaction-practice-live-results strong { font-size: .58rem; }
    .reaction-practice-arena .reaction-practice-round-actions .button.game-action-button { min-width: 11.5rem; }
}
