/* Public access only; reuses the existing V7PCs design tokens. */
.v7-ui.access-page { min-width:0; min-height:100vh; min-height:100dvh; display:flex; flex-direction:column; background:var(--v7-bg); -webkit-font-smoothing:antialiased; }
.access-header,.access-footer,.access-main { width:min(1280px,calc(100% - 64px)); margin-inline:auto; }
.access-header { display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:72px; }
.v7-ui .access-brand .brand-mark { width:42px; height:42px; border-radius:12px; background:var(--v7-blue); color:white; font-size:18px; }
.v7-ui .access-brand .brand-name { font-size:20px; letter-spacing:-.6px; color:var(--v7-heading); }
.access-private { display:inline-flex; align-items:center; gap:8px; color:var(--v7-muted); font-size:12px; white-space:nowrap; }
.access-private svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.5; }
.access-main { flex:1; display:flex; align-items:center; justify-content:center; padding-block:12px; }
.access-footer { display:flex; justify-content:space-between; gap:12px; padding-block:16px; color:var(--v7-muted); font-size:11px; line-height:16px; }
.access-skip { position:absolute; top:8px; left:16px; transform:translateY(-160%); padding:12px; background:white; z-index:10; }
.access-skip:focus { transform:none; }
.access-hero,.access-login-layout { width:100%; min-width:0; border-radius:24px; overflow:hidden; box-shadow:0 24px 70px rgb(16 32 58 / 10%); }
.access-hero { position:relative; min-height:0; height:calc(100dvh - 144px); background:var(--v7-navy); display:flex; align-items:center; }
.access-office { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.access-hero-overlay { position:absolute; inset:0; background:linear-gradient(90deg,rgba(10,24,47,.9),rgba(10,24,47,.68) 35%,rgba(10,24,47,.08) 82%); }
.access-welcome { position:relative; z-index:1; max-width:590px; padding:64px; }
.access-kicker { margin:0 0 18px; font-size:11px; font-weight:700; letter-spacing:2px; color:var(--v7-blue-ink); }
.access-welcome .access-kicker,.access-visual-copy .access-kicker { color:#b8d7ff; }
.v7-ui .access-welcome h1 { margin:0; font-size:clamp(38px,4vw,58px); line-height:1.08; letter-spacing:-2px; font-weight:650; color:white; }
.access-welcome-text { max-width:310px; margin:24px 0 32px; color:#dce5f2; font-size:16px; line-height:1.7; }
.v7-ui.access-page .access-cta { min-height:52px; padding-inline:24px; gap:32px; border-radius:10px; font-size:14px; background:var(--v7-blue-ink); color:white; }
.access-hero-caption { position:absolute; left:64px; bottom:32px; display:flex; align-items:center; gap:9px; color:#dce5f2; font-size:11px; }
.access-dot { width:6px; height:6px; border-radius:50%; background:#7fb2ff; }
.access-login-layout { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(380px,.95fr); background:white; min-height:0; min-height:calc(100dvh - 144px); }
.access-login-visual { position:relative; background:var(--v7-navy); min-width:0; }
.access-login-visual .access-office { object-position:63% center; }
.access-visual-overlay { position:absolute; inset:0; background:linear-gradient(0deg,rgba(10,24,47,.92),rgba(10,24,47,.1) 70%); }
.access-visual-copy { position:absolute; bottom:52px; left:48px; right:36px; }
.v7-ui .access-visual-copy h2 { margin:0; color:white; font-size:clamp(28px,3vw,42px); font-weight:600; line-height:1.12; letter-spacing:-1px; }
.access-login-side { display:flex; align-items:center; justify-content:center; min-width:0; padding:28px 40px; }
.access-login-card { width:100%; max-width:360px; }
.access-login-card .access-kicker { margin-bottom:12px; }
.v7-ui .access-login-card h1 { font-size:30px; line-height:1.15; letter-spacing:-1px; margin:0 0 12px; }
.access-login-intro { margin:0 0 22px; color:var(--v7-muted); font-size:14px; }
.access-login-form { display:grid; gap:16px; margin:0; }
.access-login-form .field { display:grid; gap:8px; margin:0; min-width:0; }
.v7-ui .access-login-form label { font-size:13px; font-weight:600; }
.v7-ui.access-page .access-login-form .field input.form-control:not([type=hidden]) { width:100%; min-width:0; min-height:50px; border:1px solid var(--v7-input-border); border-radius:10px; padding:12px 14px; font:inherit; font-size:16px; color:var(--v7-text); background:white; }
.v7-ui .access-login-form input:focus { outline:2px solid var(--v7-blue); outline-offset:2px; }
.v7-ui .access-submit,.v7-ui .access-microsoft { width:100%; min-height:50px; border-radius:10px; font-size:14px; }
.v7-ui.access-page button.access-submit { justify-content:space-between; padding-inline:18px; background:var(--v7-blue-ink); color:white; }
.v7-ui.access-page .access-submit:hover,.v7-ui.access-page .access-cta:hover { background:var(--v7-navy); }
.access-divider { display:flex; align-items:center; gap:16px; margin:16px 0; color:var(--v7-muted); font-size:12px; }
.access-divider::before,.access-divider::after { content:""; height:1px; flex:1; background:var(--v7-border); }
.v7-ui .access-microsoft { border-color:var(--v7-input-border); gap:12px; background:white; color:var(--v7-text); }
.v7-ui .access-microsoft:hover { background:var(--v7-bg); border-color:var(--v7-blue); }
.access-microsoft-status { margin:10px 0 0; min-height:18px; color:var(--v7-muted); font-size:11px; text-align:center; }
.access-microsoft-status.is-active { color:var(--v7-blue-ink); }
.access-login-help { margin:18px 0 0; padding-top:14px; border-top:1px solid var(--v7-border); color:var(--v7-muted); font-size:12px; text-align:center; }
.access-errors { padding:12px; margin:0; border-radius:8px; overflow-wrap:anywhere; }
.access-errors ul { list-style:none; margin:0; padding:0; }
@media(max-width:900px) {
  .access-header,.access-footer,.access-main { width:calc(100% - 48px); }
  .access-login-layout { grid-template-columns:minmax(0,1fr); }
  .access-login-visual { aspect-ratio:5 / 1; }
  .access-login-visual .access-office { object-position:center 55%; }
  .access-visual-overlay { background:linear-gradient(0deg,rgba(10,24,47,.4),transparent); }
  .access-visual-copy { display:none; }
  .access-login-side { padding:28px; }
  .access-welcome { padding:40px; }
  .access-hero-caption { left:40px; }
}
@media(max-width:600px) {
  .access-header,.access-footer,.access-main { width:calc(100% - 32px); }
  .access-header { min-height:64px; gap:8px; }
  .v7-ui .access-brand .brand-name { font-size:17px; }
  .v7-ui .access-brand .brand-mark { width:36px; height:36px; font-size:16px; }
  .access-private { font-size:10px; gap:5px; }
  .access-private svg { width:14px; height:14px; }
  .access-main { padding-block:8px; }
  .access-hero,.access-login-layout { border-radius:18px; }
  .access-hero { height:calc(100dvh - 124px); min-height:440px; align-items:flex-end; }
  .access-hero .access-office { object-position:65% center; }
  .access-hero-overlay { background:linear-gradient(0deg,rgba(10,24,47,.96),rgba(10,24,47,.68) 48%,rgba(10,24,47,.04) 90%); }
  .access-welcome { padding:28px 24px 72px; max-width:100%; }
  .v7-ui .access-welcome h1 { font-size:36px; letter-spacing:-1.2px; }
  .access-welcome-text { font-size:14px; margin:20px 0 26px; }
  .v7-ui.access-page .access-cta { width:100%; justify-content:space-between; padding-inline:18px; }
  .access-hero-caption { left:24px; bottom:24px; font-size:10px; }
  .access-login-layout { min-height:0; }
  .access-login-visual { aspect-ratio:4 / 1; }
  .access-login-side { padding:22px 20px; }
  .v7-ui .access-login-card h1 { font-size:27px; }
  .access-login-intro { font-size:13px; margin-bottom:20px; }
  .access-footer { font-size:10px; padding-block:12px; flex-wrap:wrap; gap:6px; }
}
@media(prefers-reduced-motion:reduce) { .access-page .button { transition:none; } }

.v7-ui .access-brand .brand-name b { display:inline; }
/* Enrollment must fit the narrowest login card without exposing overflow. */
.access-login-card code { overflow-wrap: anywhere; }
.access-login-card img { max-width: 100%; height: auto; }
