* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    --safe-top: env(safe-area-inset-top, 0px);
    --safe-right: env(safe-area-inset-right, 0px);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    --safe-left: env(safe-area-inset-left, 0px);
    --space-1: 8px;
    --space-2: 12px;
    --space-3: 16px;
    --space-4: 24px;
    --space-5: 32px;
    --bg: #f7f8f8;
    --bg-alt: #eef1f0;
    --ink: #101828;
    --text-subtle: #5f6b7a;
    --accent: #10a37f;
    --focus-ring: #10a37f;
    --border: rgba(16, 24, 40, 0.2);
    --border-strong: rgba(16, 24, 40, 0.38);
    --font-body: "Courier New", "Lucida Console", monospace;
}

html,
body {
    width: 100%;
    min-height: 100%;
}

body {
    margin: 0;
    color: var(--ink);
    font-family: var(--font-body);
    background: linear-gradient(180deg, var(--bg), var(--bg-alt));
}

body.menu-open::before {
    content: "";
    position: fixed;
    inset: 0;
    background: rgba(247, 248, 248, 0.82);
    z-index: 30;
    pointer-events: none;
}

a {
    color: inherit;
}

.page-menu {
    position: fixed;
    top: calc(var(--safe-top) + var(--space-2));
    left: calc(var(--safe-left) + var(--space-2));
    z-index: 50;
    isolation: isolate;
}

.page-menu details {
    position: relative;
}

.page-menu summary {
    list-style: none;
    border: 1px solid var(--border);
    background: var(--bg);
    color: var(--ink);
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    padding: 0;
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    user-select: none;
}

.page-menu summary::-webkit-details-marker {
    display: none;
}

.page-menu details[open] > summary {
    border-color: var(--border-strong);
    position: relative;
    z-index: 2;
}

.page-menu-items {
    position: absolute;
    top: 100%;
    left: 0;
    margin-top: calc(var(--space-1) / 2);
    min-width: 140px;
    border: 1px solid var(--border);
    background: var(--bg);
    padding: calc(var(--space-1) / 2);
    display: grid;
    gap: calc(var(--space-1) / 4);
    z-index: 3;
}

.page-menu-items a {
    display: block;
    padding: var(--space-1);
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 12px;
    white-space: nowrap;
}

.page-menu-items a:hover {
    background: rgba(16, 24, 40, 0.06);
}

.page-menu-items a[aria-current="page"] {
    color: var(--accent);
}

button,
.next-button,
.hud-btn,
.answer-button {
    font: inherit;
}

a:focus-visible,
button:focus-visible,
.page-menu summary:focus-visible {
    outline: 1px solid var(--focus-ring);
    outline-offset: 1px;
}
