.modal-backdrop { position:fixed; inset:0; z-index:40; display:grid; place-items:center; padding:20px; background:rgba(44,40,66,.38); backdrop-filter:blur(5px); }
.application-modal,.login-modal { position:relative; width:min(620px,96vw); max-height:90vh; overflow:auto; padding:28px; border:1px solid #e4ddf2; border-radius:20px; background:#fff; box-shadow:0 25px 70px rgba(44,40,66,.25); }
.application-modal h2,.login-modal h2 { margin:8px 0; font-size:24px; }
.modal-close { position:absolute; top:13px; right:15px; border:0; background:none; color:#9993aa; font-size:25px; }
.login-help { margin:0 0 17px; color:var(--muted); font-size:12px; line-height:1.7; }
.login-field { display:grid; gap:6px; margin-top:11px; color:#837b95; font-size:12px; font-weight:700; }
.login-field input { width:100%; border:1px solid var(--line); border-radius:9px; padding:10px 11px; color:var(--ink); background:#fcfbff; }
.login-field input[aria-invalid="true"] { border-color:#b54747; }
.application-field-error { color:#a72f36; font-size:14px; line-height:1.5; font-weight:700; }
.application-account-grid,.application-roster-entry { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.application-bulk-entry { margin-top:12px; }
.application-bulk-entry textarea { width:100%; min-height:112px; resize:vertical; border:1px solid var(--line); border-radius:9px; padding:10px 11px; color:var(--ink); background:#fcfbff; line-height:1.6; font-family:inherit; }
.bulk-entry-hint { margin:6px 0 8px; color:var(--muted); font-size:11px; }
.application-roster-entry { align-items:end; margin-top:12px; }
.application-roster-entry .btn { margin-bottom:0; }
.file-upload { display:grid; gap:5px; margin-top:17px; padding:13px; border:1px dashed #d7cbea; border-radius:12px; color:#6e5a9b; font-size:12px; font-weight:700; background:#fbf9ff; }
.file-upload input { font-size:12px; }
.file-upload small { color:var(--muted); font-weight:400; }
.application-roster { margin-top:17px; padding-top:14px; border-top:1px solid var(--line); color:var(--muted); font-size:12px; }
.application-roster strong { color:var(--ink); }
.application-roster ol { display:grid; gap:6px; max-height:150px; overflow:auto; margin:10px 0 0; padding-left:24px; }
.application-roster li { display:flex; align-items:center; justify-content:space-between; gap:8px; color:var(--ink); }
.application-roster li .btn { padding:4px 7px; font-size:10px; }
.application-message,.login-message { margin:12px 0; color:var(--danger); font-size:12px; }
.application-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:20px; }
.entry-choice-modal { width:min(680px,96vw); }
.entry-choice-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:22px; }
.entry-choice-grid .btn,.entry-choice-admin .btn { min-height:54px; font-size:16px; }
.entry-choice-admin { margin-top:10px; }
.entry-choice-section { margin-top:22px; padding-top:16px; border-top:1px solid var(--line); }
.entry-choice-section h3 { margin:0 0 10px; font-size:16px; }
.entry-choice-section p { color:var(--muted); line-height:1.6; }
.entry-choice-list { display:grid; gap:8px; }
.entry-choice-row { display:flex; justify-content:space-between; align-items:center; gap:12px; width:100%; min-height:48px; padding:10px 14px; border:1px solid var(--line); border-radius:12px; background:#fbfaff; color:var(--ink); text-align:left; cursor:pointer; }
.entry-choice-row span { color:var(--muted); font-size:13px; }
.entry-choice-row:hover { border-color:#aa9bd1; background:#f4f0ff; }
@media (max-width:600px) { .entry-choice-grid { grid-template-columns:1fr; } .entry-choice-row { align-items:flex-start; flex-direction:column; gap:4px; } }
@media (max-width:600px) { .application-account-grid,.application-roster-entry { grid-template-columns:1fr; } .application-modal,.login-modal { padding:22px 17px; } }

/* Shared forms: readable labels and touch-friendly controls. */
.application-modal .login-help,.login-modal .login-help,.login-field,.file-upload,.application-roster { font-size:16px; }
.bulk-entry-hint,.file-upload small,.entry-choice-row span { font-size:14px; line-height:1.65; }
.login-field input,.login-field select,.login-field textarea,.file-upload input { font:inherit; min-height:44px; }
.application-bulk-entry textarea { font-size:16px; min-height:140px; }
.application-message,.login-message { font-size:16px; line-height:1.6; }
.application-roster li .btn { font-size:14px; min-height:40px; }
.modal-close { width:44px; height:44px; top:6px; right:6px; color:#615d76; }
.application-actions { position:sticky; bottom:-28px; padding:16px 0; background:#fff; border-top:1px solid var(--line); z-index:1; flex-wrap:wrap; }
.application-actions .btn { min-height:48px; }
.entry-choice-row { font-size:17px; padding:15px; }
.entry-choice-section h3 { font-size:18px; }
@media(max-width:600px){.application-actions{bottom:-22px}.application-actions .btn{flex:1}.entry-choice-row span{overflow-wrap:anywhere}}

/* Keep the entire modal inside the phone viewport, including backdrop padding. */
.application-modal,.login-modal { width:min(620px,100%); max-height:calc(100dvh - 40px); }
.entry-choice-modal { width:min(680px,100%); }
