.nvla-access-controlled,
.nvla-member-page,
.nvla-access-notice,
.nvla-access-admin {
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
    letter-spacing: 0;
}

.nvla-access-page-shell *,
.nvla-member-page *,
.nvla-access-notice *,
.nvla-access-admin * { box-sizing: border-box; }

.nvla-access-page-shell,
.nvla-member-page {
    width: 100%;
    padding: 56px 20px 72px;
    background: #f6f8fb;
}

.nvla-access-gate,
.nvla-member-card {
    width: min(100%, 720px);
    margin: 0 auto;
    padding: 42px;
    color: #17191d;
    background: #fff;
    border: 1px solid #dfe3e8;
    border-radius: 8px;
    box-shadow: 0 16px 40px rgba(19, 27, 38, .08);
}

.nvla-access-gate { text-align: center; }
.nvla-access-gate__mark,
.nvla-access-notice__icon {
    display: inline-grid;
    width: 54px;
    height: 54px;
    place-items: center;
    color: #cf132f;
    background: #fff1f3;
    border: 1px solid #ffd2d9;
    border-radius: 8px;
}
.nvla-access-gate__mark svg,
.nvla-access-notice__icon svg { width: 28px; height: 28px; }
.nvla-access-eyebrow {
    margin: 18px 0 7px;
    color: #b80f28;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.4;
    text-transform: uppercase;
    letter-spacing: 0;
}
.nvla-access-gate h1,
.nvla-member-card h1 {
    margin: 0 0 12px;
    color: #101216;
    font-size: clamp(28px, 4vw, 42px);
    line-height: 1.12;
    letter-spacing: 0;
}
.nvla-access-gate > p:not(.nvla-access-eyebrow),
.nvla-member-card > p:not(.nvla-access-eyebrow) {
    margin: 0 auto 24px;
    color: #535b66;
    font-size: 16px;
    line-height: 1.7;
}
.nvla-access-gate__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin-top: 24px;
}
.nvla-access-button {
    display: inline-flex;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    padding: 11px 18px;
    color: #16191d;
    font-weight: 750;
    line-height: 1.25;
    text-decoration: none !important;
    background: #fff;
    border: 1px solid #cfd5dc;
    border-radius: 6px;
    cursor: pointer;
}
.nvla-access-button:hover,
.nvla-access-button:focus-visible { color: #b80f28; border-color: #b80f28; }
.nvla-access-button.is-primary { color: #fff; background: #cf132f; border-color: #cf132f; }
.nvla-access-button.is-primary:hover,
.nvla-access-button.is-primary:focus-visible { color: #fff; background: #a90d24; border-color: #a90d24; }
.nvla-access-button.is-text { border-color: transparent; background: transparent; }
.nvla-access-service-notes {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px 18px;
    margin-top: 28px;
    padding-top: 20px;
    color: #68717c;
    font-size: 12px;
    border-top: 1px solid #e8ebef;
}
.nvla-access-service-notes span::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 7px; vertical-align: 1px; background: #15915b; border-radius: 50%; }

.nvla-member-form { margin-top: 26px; }
.nvla-member-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.nvla-member-form label { display: grid; gap: 7px; color: #22262c; font-size: 13px; font-weight: 750; }
.nvla-member-form label span { color: #cf132f; }
.nvla-member-form label small { color: #747d88; font-weight: 500; }
.nvla-member-form label.is-wide { grid-column: 1 / -1; }
.nvla-member-form input,
.nvla-member-form select {
    width: 100%;
    min-height: 46px;
    padding: 10px 12px;
    color: #17191d;
    background: #fff;
    border: 1px solid #cfd5dc;
    border-radius: 6px;
    box-shadow: none;
}
.nvla-member-form input:focus,
.nvla-member-form select:focus { outline: 2px solid rgba(207, 19, 47, .18); border-color: #cf132f; }
.nvla-member-consent { display: flex !important; grid-template-columns: 20px 1fr; align-items: start; margin: 20px 0; line-height: 1.55; }
.nvla-member-consent input { width: 18px; min-height: 18px; margin-top: 2px; }
.nvla-otp-label { max-width: 340px; }
.nvla-otp-label input { font-size: 24px; font-weight: 750; letter-spacing: 0; }
.nvla-member-help { margin: 16px 0 0; color: #68717c; }
.nvla-member-inline-form { margin-top: 18px; }
.nvla-member-inline-form button { min-height: 44px; color: #b80f28; background: transparent; border: 0; text-decoration: underline; cursor: pointer; }
.nvla-member-alert { margin: 18px 0; padding: 12px 14px; color: #8c1b2d; background: #fff2f4; border-left: 3px solid #cf132f; }
.nvla-member-alert.is-success { color: #09633f; background: #eefaf4; border-color: #15915b; }

.nvla-access-notice { position: fixed; z-index: 100000; inset: 0; display: grid; place-items: center; padding: 20px; }
.nvla-access-notice[hidden] { display: none !important; }
.nvla-access-notice__backdrop { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; background: rgba(13, 17, 23, .68); border: 0; cursor: default; }
.nvla-access-notice__dialog {
    position: relative;
    width: min(100%, 620px);
    max-height: min(720px, calc(100vh - 40px));
    overflow: auto;
    padding: 34px;
    color: #17191d;
    background: #fff;
    border: 1px solid #dfe3e8;
    border-radius: 8px;
    box-shadow: 0 26px 70px rgba(0, 0, 0, .24);
}
.nvla-access-notice__dialog h2 { margin: 10px 0 14px; font-size: 29px; line-height: 1.18; letter-spacing: 0; }
.nvla-access-notice__dialog p { margin: 0 0 11px; color: #505963; line-height: 1.62; }
.nvla-access-notice__dialog strong { display: block; margin: 18px 0; color: #17191d; }
body.nvla-notice-open { overflow: hidden; }

.nvla-access-admin { max-width: 1240px; }
.nvla-access-admin__nav { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0; }
.nvla-access-admin__nav a { padding: 8px 12px; color: #1d2327; text-decoration: none; background: #fff; border: 1px solid #c3c4c7; border-radius: 4px; }
.nvla-access-admin__panel { margin: 18px 0; padding: 22px; background: #fff; border: 1px solid #c3c4c7; border-radius: 6px; }
.nvla-access-admin__panel h2 { margin-top: 0; }
.nvla-access-admin__panel form > label { display: block; margin: 13px 0; font-weight: 600; }
.nvla-access-admin__panel form > label select,
.nvla-access-admin__panel form > label input,
.nvla-access-admin__panel form > label textarea { display: block; margin-top: 6px; }
.nvla-admin-confirm { padding: 10px; background: #fff8e5; border-left: 3px solid #dba617; }
.nvla-mode-badge,
.nvla-risk { display: inline-block; padding: 4px 7px; border-radius: 4px; }
.nvla-mode-badge { color: #fff; background: #1d2327; }
.nvla-risk.is-low { color: #075c36; background: #e8f8ef; }
.nvla-risk.is-medium { color: #785000; background: #fff3d6; }
.nvla-risk.is-high { color: #8c1b2d; background: #ffe9ed; }
.nvla-member-actions { display: flex; gap: 6px; margin-bottom: 6px; }

@media (max-width: 640px) {
    .nvla-access-page-shell,
    .nvla-member-page { padding: 28px 14px 44px; }
    .nvla-access-gate,
    .nvla-member-card { padding: 26px 18px; }
    .nvla-access-gate h1,
    .nvla-member-card h1 { font-size: 29px; }
    .nvla-member-form__grid { grid-template-columns: 1fr; }
    .nvla-member-form label.is-wide { grid-column: auto; }
    .nvla-access-gate__actions { flex-direction: column; }
    .nvla-access-button { width: 100%; }
    .nvla-access-service-notes { align-items: flex-start; flex-direction: column; text-align: left; }
    .nvla-access-notice { align-items: end; padding: 0; }
    .nvla-access-notice__dialog { width: 100%; max-height: calc(100vh - 24px); padding: 24px 18px max(22px, env(safe-area-inset-bottom)); border-radius: 8px 8px 0 0; }
    .nvla-access-notice__dialog h2 { font-size: 25px; }
}
