/* Element-level base styles: page background, links and typography. */
html {
    min-height: 100%;
}

body {
    min-height: 100vh;
    color: var(--app-text);
    font-family: var(--app-font-body);
    background-color: var(--app-bg);
    background-image:
        radial-gradient(ellipse 80% 50% at 50% -10%, rgba(201, 164, 76, 0.16), transparent 70%),
        radial-gradient(ellipse 60% 40% at 100% 100%, rgba(157, 123, 44, 0.08), transparent 70%),
        linear-gradient(180deg, var(--app-bg-soft), var(--app-bg) 40%);
    background-attachment: fixed;
}

/* Faint vignette so the edges recede and cards read as lit surfaces. */
body::before {
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    content: "";
    background: radial-gradient(ellipse at center, transparent 55%, rgba(0, 0, 0, 0.55) 100%);
}

a {
    color: var(--app-gold);
    text-decoration-thickness: 1px;
    text-underline-offset: 0.2em;
}

a:hover {
    color: var(--app-gold-soft);
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: var(--app-font-display);
    font-weight: 600;
    line-height: 1.15;
    color: var(--app-text-strong);
    letter-spacing: 0.01em;
    text-wrap: balance;
}

h1 {
    font-size: clamp(1.75rem, 1.2rem + 2.2vw, 2.6rem);
}

h2 {
    font-size: clamp(1.35rem, 1.1rem + 1vw, 1.75rem);
}

h3 {
    font-size: 1.2rem;
}

h4,
h5,
h6 {
    font-size: 1rem;
}

p {
    margin-bottom: 1rem;
}

p:last-child {
    margin-bottom: 0;
}

small,
.app-small {
    font-size: 0.85rem;
}

.app-lead {
    font-size: 1.1rem;
    color: var(--app-muted);
}

.app-muted {
    color: var(--app-muted);
}

.app-text-center {
    text-align: center;
}

code,
pre {
    font-family: var(--app-font-mono);
    font-size: 0.9em;
}

hr {
    border: 0;
    border-top: 1px solid var(--app-border);
    margin: 1.5rem 0;
}

/* Screen-reader-only text, e.g. flag button labels. */
.app-visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
