/* ELSS contractor portal + application (mobile-first, scoped to .elss-portal). */
.elss-portal { --elss-ink:#1d2327; --elss-muted:#5c6670; --elss-line:#d7dce0; --elss-brand:#1f5fa8; --elss-ok:#1a6b2f; --elss-err:#a3261f; max-width:760px; margin:0 auto; color:var(--elss-ink); font-size:16px; line-height:1.5; }
.elss-portal *, .elss-portal *::before, .elss-portal *::after { box-sizing:border-box; }
.elss-portal .elss-card { background:#fff; border:1px solid var(--elss-line); border-radius:10px; padding:16px; margin:0 0 16px; }
.elss-portal h2 { font-size:1.35rem; margin:0 0 8px; }
.elss-portal h3 { font-size:1.1rem; margin:0 0 10px; }
.elss-portal .elss-muted { color:var(--elss-muted); font-size:.92rem; }
.elss-portal .elss-field { margin:0 0 14px; }
.elss-portal .elss-field label, .elss-portal .elss-yesno legend { display:block; font-weight:600; margin-bottom:4px; }
.elss-portal input[type=text], .elss-portal input[type=email], .elss-portal input[type=tel], .elss-portal input[type=password], .elss-portal input[type=number], .elss-portal input[type=date], .elss-portal input[type=file], .elss-portal textarea, .elss-portal select { width:100%; min-height:44px; padding:10px 12px; font-size:16px; border:1px solid #8c959f; border-radius:8px; background:#fff; }
.elss-portal .elss-short { max-width:140px; }
.elss-portal .elss-row { display:flex; flex-wrap:wrap; gap:12px; }
.elss-portal .elss-row .elss-field { flex:1 1 140px; }
.elss-portal .elss-yesno { border:0; padding:0; }
.elss-portal .elss-yesno label { display:inline-flex; align-items:center; gap:6px; margin-right:18px; min-height:44px; font-weight:400; }
.elss-portal .elss-check label { display:flex; gap:10px; align-items:flex-start; }
.elss-portal .elss-check input { width:22px; height:22px; margin-top:2px; flex:0 0 auto; }
.elss-portal .elss-btn { display:inline-block; min-height:44px; padding:10px 18px; border-radius:8px; border:1px solid var(--elss-brand); color:var(--elss-brand); background:#fff; font-size:16px; font-weight:600; text-decoration:none; cursor:pointer; }
.elss-portal .elss-btn-primary { background:var(--elss-brand); color:#fff; }
.elss-portal .elss-btn[disabled] { opacity:.5; cursor:not-allowed; }
.elss-portal .elss-banner { padding:12px 14px; border-radius:8px; margin:0 0 16px; }
.elss-portal .elss-banner ul { margin:0; padding-left:18px; }
.elss-portal .elss-banner-warn { background:#fff4d6; border:1px solid #e0b43a; }
.elss-portal .elss-banner-error { background:#fbe9e7; border:1px solid var(--elss-err); color:var(--elss-err); }
.elss-portal .elss-banner-ok { background:#e8f5ec; border:1px solid var(--elss-ok); color:var(--elss-ok); }
.elss-portal .elss-hp { position:absolute !important; left:-10000px !important; width:1px; height:1px; overflow:hidden; }
.elss-portal .elss-head { margin-bottom:8px; }
.elss-portal .elss-pill { display:inline-block; padding:2px 10px; border-radius:999px; background:#e9eef3; font-size:.85rem; font-weight:600; }
.elss-portal .elss-st-approved { background:#e8f5ec; color:var(--elss-ok); }
.elss-portal .elss-st-suspended, .elss-portal .elss-st-rejected { background:#fbe9e7; color:var(--elss-err); }
.elss-portal .elss-st-draft, .elss-portal .elss-st-changes_requested { background:#fff4d6; color:#7a5200; }
.elss-portal .elss-tabs { display:flex; gap:6px; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:6px; margin-bottom:12px; }
.elss-portal .elss-tabs a { flex:0 0 auto; padding:10px 14px; border-radius:999px; border:1px solid var(--elss-line); text-decoration:none; color:var(--elss-ink); white-space:nowrap; min-height:44px; }
.elss-portal .elss-tabs a.is-active { background:var(--elss-brand); border-color:var(--elss-brand); color:#fff; }
.elss-portal .elss-checklist, .elss-portal .elss-list { list-style:none; margin:0 0 12px; padding:0; }
.elss-portal .elss-checklist li, .elss-portal .elss-list li { padding:10px 0; border-bottom:1px solid var(--elss-line); }
.elss-portal .elss-checklist .is-done .elss-mark { color:var(--elss-ok); font-weight:700; }
.elss-portal .elss-list .is-unread { font-weight:600; }
.elss-portal .elss-agreement { max-height:320px; overflow:auto; border:1px solid var(--elss-line); border-radius:8px; padding:12px; background:#fafbfc; margin-bottom:12px; font-size:.95rem; }
.elss-portal .elss-ok { color:var(--elss-ok); font-weight:600; }
.elss-portal .elss-reason { margin:8px 0; padding:8px 12px; border-left:4px solid #e0b43a; background:#fffbef; }
.elss-portal details summary { cursor:pointer; min-height:44px; padding:10px 0; font-weight:600; color:var(--elss-brand); }
.elss-portal :focus-visible { outline:3px solid var(--elss-brand); outline-offset:2px; }
.elss-portal .screen-reader-text { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
@media (min-width: 640px) { .elss-portal .elss-card { padding:20px 24px; } }
/* Stage 3: client portal */
.elss-portal .elss-perm { display:flex; gap:10px; align-items:flex-start; padding:6px 0; font-weight:400; }
.elss-portal .elss-perm input { width:22px; height:22px; flex:0 0 auto; }
.elss-portal .elss-switch { display:flex; flex-wrap:wrap; gap:8px; align-items:flex-end; }
.elss-portal .elss-switch .elss-field { margin:0; flex:1 1 220px; }
.elss-portal .elss-recipient { border-top:1px solid var(--elss-line); padding:10px 0; }
.elss-portal .elss-address { border:1px solid var(--elss-line); border-radius:8px; padding:10px 12px; margin:0 0 12px; }
.elss-portal .elss-address legend { font-weight:600; padding:0 4px; }
.elss-portal details.elss-card > summary { font-weight:600; }
.elss-portal .elss-list form { display:inline-block; margin-left:8px; }
.elss-login-links { text-align:center; }
.elss-portal .elss-draft { color:#8a1f1f; margin-left:6px; }
/* Stage 4 — service requests */
.elss-portal .elss-st-accepted, .elss-portal .elss-out-green { background:#e8f5ec; color:var(--elss-ok); }
.elss-portal .elss-st-unsupported, .elss-portal .elss-st-cancelled, .elss-portal .elss-out-red { background:#fbe9e7; color:var(--elss-err); }
.elss-portal .elss-st-manual_review, .elss-portal .elss-st-info_requested, .elss-portal .elss-out-yellow { background:#fff4d6; color:#7a5200; }
.elss-portal form.elss-inline { display:inline-block; margin:0 8px 8px 0; }
.elss-portal h4 { margin:1.2em 0 .4em; }
.elss-contact-details { margin:0; }
.elss-contact-details .elss-contact-row { display:flex; flex-wrap:wrap; gap:4px 12px; padding:8px 0; border-bottom:1px solid #d7dce0; }
.elss-contact-details dt { font-weight:600; min-width:120px; }
.elss-contact-details dd { margin:0; }
.elss-portal .elss-table { width:100%; border-collapse:collapse; margin:0 0 12px; font-size:.95rem; }
.elss-portal .elss-table th, .elss-portal .elss-table td { text-align:left; padding:8px 6px; border-bottom:1px solid var(--elss-line); vertical-align:top; }
.elss-portal .elss-table td:last-child { text-align:right; white-space:nowrap; }
.elss-portal .elss-inline { display:inline-block; margin:0 6px 8px 0; }
@media print { .elss-noprint, .elss-tabs, .elss-head, .elss-banner, header, footer, nav { display:none !important; } .elss-portal .elss-doc { border:0; } }
/* Stage 8 — mobile-first field screen */
.elss-portal .elss-field-screen { max-width:720px; }
.elss-portal .elss-kv li { padding:6px 0; border-bottom:1px solid #eef1f4; list-style:none; }
.elss-portal .elss-kv b { display:inline-block; min-width:9em; }
.elss-portal .elss-btn-danger { background:#b3261e; border-color:#b3261e; color:#fff; }
.elss-portal .elss-big { display:block; width:100%; min-height:56px; font-size:18px; margin:8px 0; }
.elss-portal .elss-safety { border:2px solid #b3261e; }
.elss-portal .elss-policy { font-size:.85rem; color:#555; border-left:3px solid #b3261e; padding-left:8px; }
.elss-portal .elss-field { display:block; margin:10px 0; }
.elss-portal .elss-field > span { display:block; font-weight:600; margin-bottom:4px; }
.elss-portal .elss-field input[type=text], .elss-portal .elss-field input[type=date], .elss-portal .elss-field input[type=time], .elss-portal .elss-field textarea, .elss-portal .elss-wide { width:100%; box-sizing:border-box; min-height:44px; font-size:16px; padding:8px; }
.elss-portal .elss-field small { display:block; margin-top:2px; }
.elss-portal .elss-grid2 { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.elss-portal .elss-fs { border:1px solid #dde3e9; border-radius:8px; padding:8px 12px; margin:10px 0; }
.elss-portal .elss-choice, .elss-portal .elss-check { display:block; min-height:44px; padding:10px 4px; font-size:16px; }
.elss-portal .elss-choice input, .elss-portal .elss-check input { width:22px; height:22px; vertical-align:middle; margin-right:8px; }
.elss-portal .elss-attempt { border-top:1px solid #eef1f4; padding:8px 0; }
.elss-portal details > summary { cursor:pointer; min-height:44px; padding:10px 0; font-weight:600; }
@media (max-width:480px) { .elss-portal .elss-grid2 { grid-template-columns:1fr; } .elss-portal .elss-kv b { display:block; } }

/* 0.15.2 Turnstile captcha */
.elss-captcha{margin:14px 0 6px;min-height:65px;max-width:100%;overflow:hidden}
.elss-captcha .cf-turnstile{max-width:100%}
