/* Enrollment pages (RP-8): HF-02 and HF-14 layouts on the shell tokens. Nothing here changes size with state:
   controls have fixed widths and every swapped sentence has reserved space (SPEC-100). */
.en-full { max-width: 760px; } /* the sign-ups page: one card, no side panel */
.en-two { display: grid; grid-template-columns: 1.28fr 1fr; gap: 28px; align-items: start; }
.en-card h1 { font-size: 30px; margin-bottom: 24px; }
.en-signin { margin: -12px 0 20px; } /* register: the sign-in door sits under the title, a static line */
.en-card h2 { margin-bottom: 6px; }
.en-group { border: 0; padding: 0; margin: 0 0 22px; min-width: 0; }
.en-group[aria-invalid="true"] { box-shadow: none; } /* the group is marked through its choices and message, not by a box through its legend */
.en-group[aria-invalid="true"] .en-seg label { border-color: var(--red); }
.en-group legend { padding: 0; margin-bottom: 8px; font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
.en-step-hint { margin: 0 0 12px; } /* register only: the tile is step one, the email step two (client round 7) */
.en-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.en-tile { position: relative; display: block; min-height: 84px; padding: 18px 20px; border: 1px solid var(--border); border-radius: 8px; background: #fff; cursor: pointer; }
.en-tile input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.en-tile b { display: block; font-size: 16px; margin-bottom: 6px; color: var(--navy); }
.en-tile span { display: block; font-size: 14px; }
.en-tile:has(input:checked) { box-shadow: inset 0 0 0 2px var(--teal); background: var(--info-bg); }
.en-tile:has(input:focus-visible) { outline: 3px solid var(--teal); outline-offset: 2px; }
.en-tile:has(input:disabled) { opacity: 0.55; cursor: not-allowed; }
.en-seg { display: flex; gap: 6px; flex-wrap: wrap; }
.en-seg label { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 152px; height: 40px; border: 1px solid var(--border); border-radius: 6px; background: #fff; font-weight: 600; cursor: pointer; }
.en-seg input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.en-seg label:has(input:checked) { background: var(--teal); border-color: var(--teal); color: #fff; }
.en-seg label:has(input:focus-visible) { outline: 3px solid var(--teal); outline-offset: 2px; }
/* Reserved space: shown or not, the line keeps its height. */
.en-slot { min-height: 44px; margin: 8px 0 0; font-size: 14px; }
.en-slot.warn { color: var(--red); font-weight: 600; }
.en-code { min-height: 78px; }
.en-vstate { min-height: 20px; margin: 4px 0 0; font-size: 13px; font-weight: 700; color: var(--muted); }
.en-vstate.ok { color: var(--green, #1b7a3a); }
.en-side { margin-top: 22px; }
.en-select { height: 46px; width: 100%; max-width: 320px; }
.en-textarea { width: 100%; min-height: 120px; }
.en-num { font-variant-numeric: tabular-nums; }
/* Contributor names (Scott, 2026-09-22): a disclosure the entrant opens by checking "others contributed". It opens
   below the checkbox they clicked, which stays put; no JavaScript. Without :has() the box simply stays visible. */
.en-contrib-names { margin: 0 0 0 30px; }
.en-contrib-names .en-textarea { min-height: 92px; resize: none; }
.en-contrib:not(:has(input[name=has_contributors]:checked)) .en-contrib-names { display: none; }
.en-consents { list-style: none; margin: 0 0 16px; padding: 0; }
/* Consent and other check-box errors (RP-V1-62): a summary above the list on the submit response, and each box's own reserved
   message slot (the shared .rp-field-msg) beside it, indented under the label text; marked boxes use the shared aria-invalid style. */
.en-summary { margin: 0 0 14px; }
.en-check-msg { margin: 0 0 6px 30px; }
.en-saved { margin: 16px 0 0; }
.en-saved .kv b, .en-saved-kv b { overflow-wrap: anywhere; }
.en-confirmed { margin: 0 0 16px; } /* the sign-up record above the permissions list (ISS-TR9QM) */
.en-confirmed-title { margin: 0 0 4px; font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
.en-table th, .en-table td { padding: 10px 8px; text-align: left; }
.en-table td.en-num, .en-table th.en-num { text-align: right; width: 96px; }
@media (max-width: 900px) { .en-two { grid-template-columns: 1fr; } .en-seg label { width: 100%; } }
