body {
    background: #313a46;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    margin: 0;
}
.login-card {
    background: #fff;
    border-radius: 1rem;
    padding: 1.6rem;
    max-width: 400px;
    width: 100%;
    box-shadow: 0 18px 40px rgba(0,0,0,.25);
}
.login-icon {
    width: 3.2rem;
    height: 3.2rem;
    border-radius: 1rem;
    background: #313a46;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.8rem;
    margin-bottom: 1rem;
}
.login-card h4 { margin: 0 0 .25rem; font-weight: 800; }
.login-card p  { margin: 0 0 1.2rem; color: #6c757d; font-size: .9rem; }

.fn-code-input {
    font-family: 'SF Mono', 'Monaco', 'Menlo', 'Consolas', monospace;
    font-size: 1.4rem;
    font-weight: 700;
    text-align: center;
    letter-spacing: .25em;
    padding: .85rem;
}
.fn-code-input::placeholder {
    color: #ced4da;
    letter-spacing: .25em;
}

.btn-fn-primary {
    background: #313a46;
    color: #fff;
    border: 0;
    border-radius: 999px;
    padding: .85rem 1rem;
    font-weight: 800;
    font-size: 1rem;
    width: 100%;
    transition: filter .15s;
}
.btn-fn-primary:hover { filter: brightness(1.15); color: #fff; }
.btn-fn-primary:disabled { opacity: .5; }


/* ─────────────────────────────────────────────────────────────────────────
 * Demo button — floats in the bottom-right corner of the login page,
 * pointing at /response/demo/. Exists primarily so Apple App Review
 * reviewers (who don't have a real department access code) can launch
 * a stubbed read-only build of the app and evaluate it.
 *
 * Style: glass pill on the dark slate body. Reads as a clearly secondary
 * action — visible enough to find, subtle enough not to compete with
 * the centered SIGN IN card.
 *
 * Safe-area aware so it doesn't tuck under the home indicator on iPhone
 * or get clipped by the rounded corner of iPad in landscape.
 * ──────────────────────────────────────────────────────────────────────── */
.fn-demo-btn {
    position: fixed;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 1rem);
    right:  calc(env(safe-area-inset-right,  0px) + 1rem);
    z-index: 10;

    display: inline-flex;
    align-items: center;
    gap: .4rem;

    padding: .65rem 1.1rem;
    border-radius: 999px;

    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.22);
    backdrop-filter: blur(12px) saturate(140%);
    -webkit-backdrop-filter: blur(12px) saturate(140%);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.20);

    text-decoration: none;
    font-weight: 700;
    font-size: .9rem;
    letter-spacing: .03em;
    line-height: 1;

    transition: background .15s, transform .12s, filter .15s;
    -webkit-tap-highlight-color: transparent;
}
.fn-demo-btn:hover,
.fn-demo-btn:focus {
    background: rgba(255, 255, 255, 0.20);
    color: #fff;
    outline: none;
}
.fn-demo-btn:active {
    transform: scale(.96);
    filter: brightness(.92);
}
.fn-demo-btn .mdi {
    font-size: 1.15rem;
    line-height: 1;
}
