/* ────────────────────────────────────────────────────────────
   MansionNET — terminal styles
   ──────────────────────────────────────────────────────────── */

/* ─── self-hosted VT323 font ─────────────────────────────── */
/* Apache 2.0 licensed. WOFF2 preferred, TTF fallback, both served from /fonts/. */
@font-face {
    font-family: "VT323";
    src: url("/fonts/vt323/VT323-Regular.woff2") format("woff2"),
         url("/fonts/vt323/VT323-Regular.ttf") format("truetype");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

:root {
    /* base palette — cream */
    --term-fg: #e8e4d9;
    --term-fg-dim: #8a8780;
    --term-fg-glow: #fffff0;
    --term-bg: #0a0a0a;
    --term-bg-card: #121212;
    --term-accent: #22c55e;          /* unified green for status + accents */
    --term-accent-soft: rgba(34, 197, 94, 0.15);
    --term-fg-rgb: 232, 228, 217;
    --term-fg-dim-rgb: 138, 135, 128;

    --scanline-opacity: 0.15;
    --glow-strength: 1;
    --crt-curve: 0;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { font-size: 16px; }

body {
    font-family: "VT323", ui-monospace, monospace;
    background: var(--term-bg);
    color: var(--term-fg);
    min-height: 100vh;
    overflow-x: hidden;
    position: relative;
}

/* scanlines */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    background: repeating-linear-gradient(
        0deg,
        rgba(0, 0, 0, var(--scanline-opacity)),
        rgba(0, 0, 0, var(--scanline-opacity)) 1px,
        transparent 1px,
        transparent 2px
    );
    pointer-events: none;
    z-index: 1000;
}

/* faint phosphor wash */
body::after {
    content: "";
    position: fixed;
    inset: 0;
    background: rgba(var(--term-fg-rgb), 0.008);
    pointer-events: none;
    z-index: 999;
}

.vignette {
    position: fixed;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        transparent 0%,
        transparent 60%,
        rgba(0, 0, 0, 0.45) 100%
    );
    pointer-events: none;
    z-index: 998;
}

/* ─── boot overlay ───────────────────────────────────────── */
.boot-overlay {
    position: fixed;
    inset: 0;
    background: var(--term-bg);
    z-index: 3000;
    padding: 2rem 1.5rem;
    overflow: hidden;
    transition: opacity 0.35s ease;
}
.boot-overlay.is-done {
    opacity: 0;
    pointer-events: none;
}
.boot-log {
    max-width: 900px;
    margin: 0 auto;
    font-size: 1.05rem;
    line-height: 1.5;
    color: var(--term-fg-dim);
    white-space: pre-wrap;
}
.boot-log .ok { color: var(--term-accent); }
.boot-log .hi { color: var(--term-fg); }
.boot-skip {
    position: fixed;
    bottom: 1rem;
    left: 50%;
    transform: translateX(-50%);
    color: var(--term-fg-dim);
    font-size: 0.95rem;
    letter-spacing: 0.1em;
    opacity: 0.6;
}

/* ─── status bar (top) ───────────────────────────────────── */
.statusbar {
    position: sticky;
    top: 0;
    z-index: 50;
    background: var(--term-bg);
    border-bottom: 1px dashed var(--term-fg-dim);
    color: var(--term-fg-dim);
    font-size: 0.95rem;
    padding: 0.4rem 1.5rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}
.statusbar .sb-item { display: flex; align-items: center; gap: 0.4rem; }
.statusbar .sb-item .sb-key { color: var(--term-fg-dim); }
.statusbar .sb-item .sb-val { color: var(--term-fg); }
.statusbar .sb-spacer { flex: 1; }
.now-playing {
    color: var(--term-fg);
    overflow: hidden;
    white-space: nowrap;
    max-width: 360px;
    text-overflow: ellipsis;
}
.now-playing::before { content: "♪ "; color: var(--term-accent); }
.now-playing .np-link {
    color: inherit;
    text-decoration: none;
}
.now-playing .np-link:hover { text-decoration: underline; }

/* ─── container ──────────────────────────────────────────── */
.container {
    max-width: 900px;
    margin: 0 auto;
    padding: 2rem 1.5rem 8rem;
    position: relative;
    z-index: 1;
}

/* ─── ascii header ───────────────────────────────────────── */
.ascii-header {
    text-align: center;
    font-size: 0.7rem;
    line-height: 1.2;
    white-space: pre;
    color: var(--term-fg);
    text-shadow:
        0 0 calc(10px * var(--glow-strength)) var(--term-fg-glow),
        0 0 calc(20px * var(--glow-strength)) rgba(var(--term-fg-rgb), 0.3);
    animation: glow 3s ease-in-out infinite alternate;
    margin-bottom: 1rem;
    overflow-x: auto;
}
.ascii-header-mobile {
    display: none;
    text-align: center;
    font-size: 1.4rem;
    letter-spacing: 0.15em;
    color: var(--term-fg);
    text-shadow:
        0 0 calc(8px * var(--glow-strength)) var(--term-fg-glow);
    margin-bottom: 1rem;
    padding: 0.5rem 1rem;
    border: 1px solid var(--term-fg-dim);
    display: inline-block;
}
.ascii-header-mobile-wrap { display: none; text-align: center; }

@keyframes glow {
    from {
        text-shadow:
            0 0 calc(8px * var(--glow-strength)) var(--term-fg-glow),
            0 0 calc(15px * var(--glow-strength)) rgba(var(--term-fg-rgb), 0.15);
    }
    to {
        text-shadow:
            0 0 calc(12px * var(--glow-strength)) var(--term-fg-glow),
            0 0 calc(25px * var(--glow-strength)) rgba(var(--term-fg-rgb), 0.25);
    }
}

.tagline {
    text-align: center;
    font-size: 1.4rem;
    letter-spacing: 0.2em;
    color: var(--term-fg-dim);
    margin-bottom: 2rem;
}
.tagline::before { content: "──── "; }
.tagline::after { content: " ────"; }

.mission {
    text-align: center;
    color: var(--term-fg-dim);
    margin: 1rem 0 2.5rem;
    letter-spacing: 0.08em;
}

.about { margin-bottom: 2rem; }
.about-text { color: var(--term-fg-dim); line-height: 1.5; font-size: 1.05rem; }
.why-privacy { margin-top: 0.75rem; font-size: 1.05rem; color: var(--term-fg); }

.privacy-cta { text-align: center; margin: 1.5rem 0 2.5rem; }
.privacy-trigger {
    font-family: inherit;
    font-size: 1rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    background: transparent;
    color: var(--term-fg);
    border: 1px dashed var(--term-fg-dim);
    padding: 0.85rem 1.5rem;
    cursor: pointer;
    transition: border-color 0.2s, color 0.2s, box-shadow 0.2s;
}
.privacy-trigger:hover, .privacy-trigger:focus-visible {
    border-color: var(--term-fg);
    color: var(--term-fg-glow);
    box-shadow: 0 0 12px rgba(var(--term-fg-rgb), 0.2);
    outline: none;
}

/* ─── section header ─────────────────────────────────────── */
.section-header {
    font-size: 1.5rem;
    margin-bottom: 1.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px dashed var(--term-fg-dim);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.section-header::before {
    content: ">";
    animation: blink 1s step-end infinite;
}
@keyframes blink { 50% { opacity: 0; } }

/* ─── service cards ──────────────────────────────────────── */
.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-bottom: 3rem;
}

.service-card {
    background: var(--term-bg-card);
    border: 1px solid var(--term-fg-dim);
    padding: 1.25rem 1.5rem 1.5rem;
    position: relative;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
}
.service-card:focus-visible,
.service-card.is-focused {
    outline: 1px solid var(--term-fg);
    outline-offset: 2px;
    box-shadow: 0 0 12px rgba(var(--term-fg-rgb), 0.15);
}
.service-card::before {
    content: "";
    position: absolute;
    inset: 0;
    border: 1px solid var(--term-fg);
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}
.service-card:hover {
    background: rgba(var(--term-fg-rgb), 0.03);
    box-shadow: 0 0 20px rgba(var(--term-fg-rgb), 0.05);
}
.service-card:hover::before { opacity: 1; }

.service-header {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}
.service-icon {
    font-size: 1.4rem;
    width: 2.5rem;
    text-align: center;
    color: var(--term-fg);
    opacity: 0.9;
}
.service-name {
    font-size: 1.4rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.service-description {
    color: var(--term-fg-dim);
    font-size: 1.1rem;
    margin-bottom: 1rem;
    line-height: 1.4;
    flex: 1;
}

.service-url {
    color: var(--term-fg);
    text-decoration: none;
    display: inline-block;
    padding: 0.25rem 0;
    border-bottom: 1px dashed var(--term-fg-dim);
    transition: all 0.2s ease;
    word-break: break-all;
}
.service-url:visited, .service-badge a:visited { color: var(--term-fg); }
.service-url:hover {
    color: var(--term-fg-glow);
    border-bottom-color: var(--term-fg);
    text-shadow: 0 0 8px var(--term-fg-glow);
}

.service-badge {
    display: inline-block;
    font-size: 0.9rem;
    padding: 0.2rem 0.5rem;
    background: rgba(var(--term-fg-rgb), 0.05);
    border: 1px solid var(--term-fg-dim);
    margin-top: 0.5rem;
}
.service-badge.cta {
    border-color: var(--term-accent);
    color: var(--term-accent);
}
.service-badge.cta a { color: var(--term-accent); text-decoration: none; }
.service-badge.cta a:hover { text-decoration: underline; }

/* ─── system status ──────────────────────────────────────── */
.system-status {
    background: var(--term-bg-card);
    border: 1px solid var(--term-fg-dim);
    padding: 1.5rem;
    margin-top: 2rem;
}
.status-header {
    font-size: 1.2rem;
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px dashed var(--term-fg-dim);
}
.status-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 0.75rem 2rem;
}
.status-list { display: flex; flex-direction: column; gap: 0.35rem; }
.status-item {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    font-size: 1.1rem;
    padding: 0.4rem 0;
    border-bottom: 1px dotted rgba(var(--term-fg-dim-rgb), 0.3);
}
.status-item:last-child { border-bottom: none; }
.status-label { color: var(--term-fg-dim); }
.status-label::after { content: ":"; margin-left: 0.2rem; }
.status-value { color: var(--term-fg); }

/* ─── donations ──────────────────────────────────────────── */
.donations {
    margin: 2rem 0;
    padding: 1.5rem;
    border: 1px solid var(--term-fg-dim);
    background: rgba(0, 0, 0, 0.3);
}
.donate-row {
    margin: 0.75rem 0;
    padding: 0.6rem 0.85rem;
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid rgba(var(--term-fg-dim-rgb), 0.25);
    line-height: 1.7;
    word-break: break-all;
}
.donate-row .prompt-symbol { color: var(--term-accent); }
.donate-row .prompt { color: var(--term-fg-dim); }
.crypto-address { color: var(--term-fg); user-select: all; }
.copy-btn {
    background: none;
    border: 1px solid var(--term-fg-dim);
    color: var(--term-accent);
    font-family: inherit;
    font-size: 0.95rem;
    cursor: pointer;
    padding: 0.05rem 0.4rem;
    margin-left: 0.5rem;
    transition: all 0.2s ease;
}
.copy-btn:hover {
    border-color: var(--term-accent);
    background: var(--term-accent-soft);
}
.coffee-link {
    color: var(--term-accent);
    text-decoration: none;
    border-bottom: 1px dashed var(--term-accent);
    margin-left: 0.25rem;
}
.coffee-link:hover { background: var(--term-accent-soft); }
.coffee-link:visited { color: var(--term-accent); }

.supporters-button {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-top: 1.5rem;
    padding: 1rem 1.25rem;
    border: 1px solid var(--term-accent);
    background: var(--term-accent-soft);
    color: var(--term-fg);
    text-decoration: none;
    transition: background 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.supporters-button:hover {
    background: rgba(34, 197, 94, 0.22);
    border-color: var(--term-fg-glow);
    box-shadow:
        0 0 14px var(--term-accent-soft),
        inset 0 0 12px rgba(34, 197, 94, 0.1);
}
.supporters-button:hover .supporters-button-text strong { text-shadow: 0 0 8px var(--term-accent-soft); }
.supporters-button-icon { color: var(--term-accent); font-size: 1.4rem; flex-shrink: 0; }
.supporters-button-text { flex: 1; display: flex; flex-direction: column; gap: 0.15rem; }
.supporters-button-text strong {
    font-weight: normal;
    font-size: 1.25rem;
    letter-spacing: 0.15em;
    color: var(--term-fg);
    transition: text-shadow 0.2s ease;
}
.supporters-button-sub { color: var(--term-fg-dim); font-size: 0.95rem; letter-spacing: 0.05em; }
.supporters-button-arrow {
    color: var(--term-accent);
    font-size: 1.4rem;
    transition: transform 0.2s;
}
.supporters-button:hover .supporters-button-arrow { transform: translateX(4px); }

/* ─── footer ─────────────────────────────────────────────── */
.footer {
    text-align: center;
    margin-top: 3rem;
    padding-top: 1.5rem;
    border-top: 1px dashed var(--term-fg-dim);
    color: var(--term-fg-dim);
    font-size: 1rem;
}
.footer-ascii {
    font-size: 0.8rem;
    margin-bottom: 1rem;
    white-space: pre;
}
.footer-note { margin-top: 1.5rem; opacity: 0.5; }
.prompt-symbol { color: var(--term-fg); }
.prompt { color: var(--term-fg-dim); }
.footer .service-url { font-size: inherit; }

/* ─── interactive prompt (bottom strip) ──────────────────── */
.repl {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 200;
    background: var(--term-bg);
    border-top: 1px solid var(--term-fg-dim);
    font-family: inherit;
    display: flex;
    flex-direction: column;
}
.repl-output {
    display: none;
    max-height: calc(60vh - 2.5rem);
    overflow-y: auto;
    padding: 0.75rem 1.5rem 0.5rem;
    font-size: 1.05rem;
    line-height: 1.4;
    color: var(--term-fg-dim);
}
.repl.is-open .repl-output { display: block; }
.repl-output .out-cmd { color: var(--term-fg); }
.repl-output .out-cmd::before { content: "$ "; color: var(--term-accent); }
.repl-output .out-block {
    margin: 0.25rem 0 0.75rem;
    white-space: pre-wrap;
}
.repl-output .out-err { color: #c66; }
.repl-output .out-ok { color: var(--term-accent); }
.repl-input-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 1.5rem;
    border-top: 1px dashed rgba(var(--term-fg-dim-rgb), 0.3);
    background: var(--term-bg);
}
.repl.is-open .repl-input-row { border-top: 1px dashed var(--term-fg-dim); }
.repl:not(.is-open) .repl-input-row { border-top: none; }
.repl-prompt { color: var(--term-accent); font-size: 1.05rem; }
.repl-input {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    color: var(--term-fg);
    font-family: inherit;
    font-size: 1.05rem;
    caret-color: var(--term-fg);
}
.repl-input::placeholder { color: var(--term-fg-dim); opacity: 0.6; }
.repl-hint {
    color: var(--term-fg-dim);
    font-size: 0.9rem;
    letter-spacing: 0.05em;
    opacity: 0.7;
}

/* keyboard help overlay */
.help-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2500;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s;
    padding: 1.5rem;
}
.help-overlay.is-open { opacity: 1; pointer-events: auto; }
.help-window {
    background: var(--term-bg);
    border: 1px solid var(--term-fg-dim);
    padding: 1.5rem 2rem;
    width: min(560px, 100%);
    font-size: 1.05rem;
    line-height: 1.5;
}
.help-window h3 {
    font-size: 1.2rem;
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px dashed var(--term-fg-dim);
    color: var(--term-fg);
    font-weight: normal;
    letter-spacing: 0.1em;
}
.help-window dl {
    display: grid;
    grid-template-columns: 7rem 1fr;
    gap: 0.4rem 1rem;
    color: var(--term-fg-dim);
}
.help-window dt {
    color: var(--term-fg);
    font-weight: normal;
}
.help-window kbd {
    display: inline-block;
    padding: 0 0.4rem;
    border: 1px solid var(--term-fg-dim);
    border-radius: 2px;
    font-family: inherit;
    margin-right: 0.25rem;
    font-size: 0.95rem;
}

/* ─── privacy modal (unchanged behavior) ─────────────────── */
.privacy-modal {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.75);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
    z-index: 2000;
    padding: 1.5rem;
}
.privacy-modal.is-open { opacity: 1; pointer-events: auto; }
.privacy-window {
    background: #050505;
    border: 1px solid var(--term-fg-dim);
    box-shadow: 0 0 30px rgba(0, 0, 0, 0.6);
    width: min(760px, 100%);
    max-height: 85vh;
    overflow: auto;
}
.privacy-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--term-fg-dim);
    color: var(--term-fg-dim);
    letter-spacing: 0.1em;
}
.modal-close {
    font-family: inherit;
    font-size: 1rem;
    background: transparent;
    color: var(--term-fg);
    border: 1px solid var(--term-fg-dim);
    padding: 0.2rem 0.5rem;
    cursor: pointer;
}
.modal-close:hover, .modal-close:focus-visible {
    border-color: var(--term-fg);
    color: var(--term-fg-glow);
    outline: none;
}
.privacy-text {
    padding: 1.5rem;
    white-space: pre-wrap;
    line-height: 1.4;
    font-size: 1rem;
    color: var(--term-fg);
}
body.modal-open { overflow: hidden; }

/* ─── responsive ─────────────────────────────────────────── */
@media (max-width: 700px) {
    .ascii-header { display: none; }
    .ascii-header-mobile-wrap { display: block; }
    .ascii-header-mobile { display: inline-block; }
    .tagline { font-size: 1.1rem; letter-spacing: 0.1em; }
    .tagline::before { content: "── "; }
    .tagline::after { content: " ──"; }
    .services-grid { grid-template-columns: 1fr; }
    .container { padding: 1rem 1rem 7rem; }
    .statusbar { font-size: 0.85rem; gap: 0.75rem; padding: 0.4rem 1rem; }
    .now-playing { max-width: 180px; }
    .sup-row { grid-template-columns: 1.5rem 1fr; }
    .sup-row .msg { grid-column: 2; padding-left: 0; font-size: 1rem; }
    .ops-row { grid-template-columns: 1.5rem 1fr; }
    .ops-row .role,
    .ops-row .channels { grid-column: 2; padding-left: 0; font-size: 0.95rem; }
}

/* ─── selection + scrollbar ──────────────────────────────── */
::selection { background: var(--term-fg); color: var(--term-bg); }
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: var(--term-bg); }
::-webkit-scrollbar-thumb { background: var(--term-fg-dim); }
::-webkit-scrollbar-thumb:hover { background: var(--term-fg); }

/* ─── supporters page (Hall of Fame) ─────────────────────── */
/* HALL OF FAME subhead — same font + glow as the main logo */
.ascii-subhead {
    text-align: center;
    font-size: clamp(0.4rem, 1.05vw, 0.65rem);
    line-height: 1.1;
    white-space: pre;
    color: var(--term-fg);
    text-shadow:
        0 0 calc(10px * var(--glow-strength)) var(--term-fg-glow),
        0 0 calc(20px * var(--glow-strength)) rgba(var(--term-fg-rgb), 0.3);
    animation: glow 3s ease-in-out infinite alternate;
    margin: 0.25rem 0 1.25rem;
    overflow-x: auto;
    overflow-y: hidden;
}

.sup-intro {
    text-align: center;
    color: var(--term-fg-dim);
    line-height: 1.5;
    margin-bottom: 2.5rem;
    font-size: 1.1rem;
}

/* tier card — mirrors .system-status / .service-card vocabulary */
.sup-tier {
    background: var(--term-bg-card);
    border: 1px solid var(--term-fg-dim);
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.5rem;
    position: relative;
    transition: background 0.3s ease, box-shadow 0.3s ease;
}
.sup-tier:hover {
    background: rgba(var(--term-fg-rgb), 0.03);
    box-shadow: 0 0 20px rgba(var(--term-fg-rgb), 0.05);
}
.sup-tier-head {
    font-size: 1.2rem;
    color: var(--term-fg);
    letter-spacing: 0.15em;
    padding-bottom: 0.5rem;
    margin-bottom: 0.75rem;
    border-bottom: 1px dashed var(--term-fg-dim);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.sup-tier-head::before {
    content: ">";
    color: var(--term-accent);
    animation: blink 1s step-end infinite;
}
.sup-tier.ops-tier .sup-tier-head::before {
    content: "⚙";
    animation: none;
}

/* supporter rows — patron / regular / one-off */
.sup-row {
    display: grid;
    grid-template-columns: 2rem minmax(8rem, 14rem) 1fr;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.5rem 0;
    font-size: 1.1rem;
    line-height: 1.4;
    border-bottom: 1px dotted rgba(var(--term-fg-dim-rgb), 0.3);
}
.sup-row:last-child { border-bottom: none; }
.sup-row .marker { color: var(--term-accent); text-align: center; }
.sup-row .handle { color: var(--term-fg); }
.sup-row .msg    { color: var(--term-fg-dim); }
.sup-row.anon .handle { color: var(--term-fg-dim); font-style: italic; }

/* ops rows — handle / role / channels */
.ops-row {
    display: grid;
    grid-template-columns: 2rem minmax(8rem, 14rem) minmax(10rem, 14rem) 1fr;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.5rem 0;
    font-size: 1.1rem;
    line-height: 1.4;
    border-bottom: 1px dotted rgba(var(--term-fg-dim-rgb), 0.3);
}
.ops-row:last-child { border-bottom: none; }
.ops-row .marker   { color: var(--term-accent); text-align: center; }
.ops-row .handle   { color: var(--term-fg); }
.ops-row .role     { color: var(--term-accent); font-size: 0.95rem; letter-spacing: 0.05em; }
.ops-row .channels { color: var(--term-fg-dim); font-size: 0.95rem; }

.sup-empty   { color: var(--term-fg-dim); font-style: italic; padding: 0.5rem 0; text-align: center; }
.sup-loading { color: var(--term-fg-dim); font-style: italic; text-align: center; padding: 2rem 0; }

/* CTA — match donations panel vocabulary */
.sup-cta {
    margin-top: 2rem;
    padding: 1rem 1.25rem;
    border: 1px dashed var(--term-fg-dim);
    background: rgba(0, 0, 0, 0.3);
    color: var(--term-fg-dim);
    line-height: 1.6;
    font-size: 1.05rem;
}
.sup-cta a {
    color: var(--term-accent);
    border-bottom: 1px dashed var(--term-accent);
    text-decoration: none;
}
.sup-cta a:hover { background: var(--term-accent-soft); }
.sup-cta strong  { color: var(--term-fg); font-weight: normal; }

.statusbar .sb-home { text-decoration: none; }

/* ─── reduced motion ─────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    .ascii-header { animation: none; }
    .ascii-subhead { animation: none; }
}
