:root {
    --bg: #0a0c10;
    --text: #c6d0cb;
    --dim: #5d6b64;
    --line: #1b242c;
    --accent: #7ee0b8;
    --accent-dim: #2f5a4a;
    --warn: #d4a24a;
    --danger: #d76a78;
    --mono: 'Share Tech Mono', ui-monospace, 'Courier New', monospace;
}

* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }

body {
    background-color: var(--bg);
    /* a faint dot-grid — texture you only notice if you look */
    background-image: radial-gradient(rgba(126, 224, 184, 0.045) 1px, transparent 1.4px);
    background-size: 24px 24px;
    color: var(--text);
    font-family: var(--mono);
    font-size: 15px;
    letter-spacing: 0.02em;
    line-height: 1.5;
}

#app { position: relative; z-index: 1; }

.boot {
    position: fixed; inset: 0;
    display: grid; place-items: center;
    color: var(--dim);
    font-size: 0.9rem; letter-spacing: 0.25em;
    text-transform: uppercase;
}

#blazor-error-ui {
    position: fixed; bottom: 0; left: 0; width: 100%;
    display: none; z-index: 1000;
    background: #15080c;
    border-top: 1px solid var(--danger);
    color: var(--danger);
    padding: 0.7rem 1rem;
    font-family: var(--mono);
    letter-spacing: 0.05em;
}
#blazor-error-ui a { color: var(--accent); }
.blazor-error-boundary { background: #15080c; color: var(--danger); padding: 1rem; font-family: var(--mono); }
.blazor-error-boundary::after { content: "process terminated."; }
