/* ============================================================
   portal.css — shared base for login.html and login_error.html
   ============================================================ */

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

:root {
    --bg:          #010101;
    --surface:     #0a0a0a;
    --border:      #1a1a1a;
    --border-focus:#fd5457;
    --text:        #ffffff;
    --muted:       rgba(255,255,255,0.4);
    --accent:      #fd5457;
    --accent-dim:  rgba(253,84,87,0.12);
    --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

html, body {
    width: 100%; min-height: 100dvh;
    background: var(--bg); color: var(--text);
    font-family: var(--font); overflow-x: hidden;
}

/* ── grain overlay ── */
body::before {
    content: '';
    position: fixed; inset: 0;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
    opacity: 0.035;
    pointer-events: none;
    z-index: 0;
}

/* ── corner accent brackets ── */
.corner { position: fixed; width: 60px; height: 60px; z-index: 1; }
.corner.tl { top: 2rem; left: 2rem;    border-top:    1px solid rgba(253,84,87,0.35); border-left:  1px solid rgba(253,84,87,0.35); }
.corner.tr { top: 2rem; right: 2rem;   border-top:    1px solid rgba(253,84,87,0.35); border-right: 1px solid rgba(253,84,87,0.35); }
.corner.bl { bottom: 2rem; left: 2rem; border-bottom: 1px solid rgba(253,84,87,0.35); border-left:  1px solid rgba(253,84,87,0.35); }
.corner.br { bottom: 2rem; right: 2rem;border-bottom: 1px solid rgba(253,84,87,0.35); border-right: 1px solid rgba(253,84,87,0.35); }

/* ── page wrap ── */
.page {
    position: relative; z-index: 2;
    min-height: 100dvh;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    padding: 3rem 2rem;
}

/* ── brand logo / wordmark ── */
.brand {
    text-align: center; margin-bottom: 3.5rem;
    text-decoration: none; display: inline-flex;
    flex-direction: column; align-items: center;
    transition: opacity 0.2s;
}
.brand:hover { opacity: 0.7; }
.brand img {
    height: 38px; width: auto;
    filter: brightness(0) invert(1);
    margin-bottom: 0.75rem;
}
.brand-wordmark {
    font-size: 0.85rem; font-weight: 800;
    letter-spacing: 3px; text-transform: uppercase;
    color: var(--text);
}
.brand-wordmark span { color: var(--accent); }
.brand-eyebrow {
    margin-top: 0.6rem;
    font-size: 0.65rem; letter-spacing: 2.5px;
    text-transform: uppercase; color: var(--muted);
}

/* ── footer stamp ── */
.foot {
    position: fixed; bottom: 1.5rem; left: 50%;
    transform: translateX(-50%);
    font-size: 0.6rem; letter-spacing: 2px;
    text-transform: uppercase; color: rgba(255,255,255,0.18);
    white-space: nowrap; z-index: 3;
}
