/* Interaction Batch 1: shared semantics, public progression, no layout framework. */
:root { --interaction-fast:120ms; --interaction-step:160ms; --danger:#8C2433; }
[hidden] { display:none!important; }
a { text-underline-offset:.2em; text-decoration-thickness:1px; transition:color var(--interaction-fast),text-decoration-color var(--interaction-fast); }
a:hover { text-decoration-thickness:2px; }
a:active { color:#073A66; }
:where(a,button,input,select,textarea,summary):focus-visible { outline:3px solid #0B4F8A; outline-offset:4px; }
.primary-nav a:not(.button) { position:relative; text-decoration:none; }
.primary-nav > a[aria-current="page"]:not(.button) { text-decoration:none; }
.primary-nav a:not(.button)::after { content:""; position:absolute; inset:auto 0 .25rem; height:2px; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform var(--interaction-fast); }
.primary-nav a:not(.button):is(:hover,:focus-visible,[aria-current="page"])::after { transform:scaleX(1); }
.text-link { text-decoration:underline; text-underline-offset:.3em; }
.text-link span,.button > span[aria-hidden] { display:inline-block; transition:transform var(--interaction-fast); }
@media(hover:hover) and (pointer:fine) { .text-link:hover span,.button:hover > span[aria-hidden]:not(.submit-motif) { transform:translateX(3px); } }
.text-link:focus-visible span { transform:translateX(3px); }
.service-overview > a { transition:background-color var(--interaction-fast),border-color var(--interaction-fast); }
.service-overview > a:is(:hover,:focus-visible) { background:#F7FAFC; border-color:#71889C; }
.service-overview > a > span:last-child { transition:transform var(--interaction-fast); }
@media(hover:hover) and (pointer:fine) { .service-overview > a:hover > span:last-child { transform:translateX(3px); } }
.service-overview > a:focus-visible h3 { text-decoration:underline; text-underline-offset:.2em; }
.button { min-height:48px; max-width:100%; gap:.5rem; text-decoration:none; font-weight:600; }
.button.button-outline,.button.button-secondary,.button.button-light { color:#0B4F8A; background:#fff; border:1px solid #0B4F8A; }
.button.button-outline:hover,.button.button-secondary:hover,.button.button-light:hover { background:#EAF3FA; color:#073A66; }
.button.button-tertiary { color:#0B4F8A; background:transparent; border:1px solid transparent; text-decoration:underline; text-underline-offset:.25em; }
.button.button-tertiary:hover { background:#EAF3FA; }
.button.button-danger { color:var(--danger); border:1px solid var(--danger); background:#fff; }
.button.button-danger:hover { background:#FBEFF1; }
.button:active:not(:disabled) { box-shadow:inset 0 2px 3px #17324d26; }
.button:disabled,.button[aria-disabled="true"] { opacity:1; color:#536779; border-color:#71889C; background:#EDF1F4; cursor:not-allowed; box-shadow:none; }
.button:disabled > span,.button[aria-disabled="true"] > span { transform:none; }
input,select,textarea { border-radius:8px; border-color:#71889C; font-size:1rem; transition:border-color var(--interaction-fast),box-shadow var(--interaction-fast); }
input:hover,select:hover,textarea:hover { border-color:#0B4F8A; }
input:focus,select:focus,textarea:focus { border-color:#0B4F8A; }
[aria-invalid="true"] { border-color:var(--danger); }
.field-help { margin:.35rem 0 0; color:#536779; font-size:.875rem; line-height:1.5; }
.field-error { font-weight:600; }
.checkbox-label { min-height:44px; align-items:flex-start; padding:.4rem 0; }
input[type="checkbox"],input[type="radio"] { accent-color:#0B4F8A; }
.choice-field { margin:1rem 0; padding:0; border:0; }
.choice-field legend { font-size:1rem; margin-bottom:.65rem; }
.choice-row { display:flex; align-items:center; gap:.75rem; padding:.65rem .8rem; min-height:48px; border:1px solid #71889C; border-radius:8px; margin:.5rem 0; cursor:pointer; }
.choice-row input { width:1.25rem; height:1.25rem; min-height:0; flex:0 0 1.25rem; margin:0; }
.choice-row:has(input:checked) { background:#EAF3FA; border-color:#0B4F8A; box-shadow:inset 3px 0 #0B4F8A; }
summary { position:relative; list-style:none; cursor:pointer; padding-right:2.75rem!important; min-height:44px; }
summary::-webkit-details-marker { display:none; }
summary::after { content:""; position:absolute; right:1rem; top:50%; width:.5rem; height:.5rem; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:translateY(-65%) rotate(45deg); transition:transform var(--interaction-fast); }
details[open] > summary::after { transform:translateY(-20%) rotate(225deg); }
details[open] > summary { background:#EAF3FA; }
.faq-list details[open] { border-left:3px solid #0B4F8A; padding-left:.75rem; }
.faq-list details > div { padding-bottom:1rem; }
.preparation-notice { border-left:3px solid #0B4F8A; }
.preparation-notice > strong { display:block; padding-left:1rem; position:relative; }
.preparation-notice > strong::before { content:""; position:absolute; left:-.43rem; top:.6em; width:.6rem; height:.6rem; border:2px solid #0B4F8A; border-radius:50%; background:#fff; }
.notice[role="alert"],.error-summary { border-left:4px solid var(--danger); background:#FFF6F7; }
.error-summary:focus { outline:3px solid #0B4F8A; outline-offset:4px; }
.error-summary h2 { font-size:1.25rem; margin-top:0; }
.error-summary a { color:var(--danger); }
.notice[role="status"] { border-left:3px solid #0B4F8A; }
.public-shell aside.notice { border-left:3px solid #0B4F8A; }
.care-journey .journey-node { background:#fff; color:#0B4F8A; border:2px solid #0B4F8A; box-shadow:0 0 0 5px #fff; }
.journey-note { border-left:2px solid #0B4F8A; padding-left:1rem; }
.request-intro { padding-block:1.5rem!important; }
.request-intro h1 { font-size:clamp(2rem,4vw,3rem); }
.request-layout { margin-top:1.5rem; }
.care-form.is-staged > fieldset { margin:1.5rem 0 1rem; padding-top:0; border:0; }
.care-form.is-staged > fieldset > legend { font-size:1.5rem; margin-bottom:1.25rem; }
.care-form.is-staged > fieldset > legend::before { display:none; }
.care-form.is-staged legend:focus { outline:3px solid #0B4F8A; outline-offset:4px; }
.care-stepper { margin:0 0 1.5rem; }
.care-stepper ol { list-style:none; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); padding:0; margin:1rem 0; }
.care-stepper li { min-width:0; position:relative; }
.care-stepper li::before { content:""; height:2px; background:#71889C; position:absolute; top:1rem; left:1rem; right:-1rem; }
.care-stepper li:last-child::before { display:none; }
.care-stepper li.is-complete::before { background:#0B4F8A; }
.step-link { display:flex; flex-direction:column; align-items:flex-start; position:relative; width:100%; border:0; padding:0 .4rem .5rem 0; background:transparent; color:#536779; font:inherit; font-size:.8rem; text-align:left; min-height:48px; }
.step-link:disabled { opacity:1; cursor:default; }
.step-node { width:2rem; height:2rem; display:grid; place-items:center; border:2px solid #71889C; border-radius:50%; background:white; margin-bottom:.5rem; font-weight:700; }
.step-link[aria-current="step"] { color:#0B4F8A; font-weight:700; }
.step-link[aria-current="step"] .step-node { color:white; border-color:#0B4F8A; background:#0B4F8A; }
.is-complete .step-node { color:#0B4F8A; border-color:#0B4F8A; }
.step-status { color:#0B4F8A; font-weight:600; margin:0; }
.step-next { font-size:.875rem; color:#536779; margin:.25rem 0; }
.step-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; margin:1.5rem 0; border-top:1px solid #DCE7F0; padding-top:1rem; }
.request-review section { border-bottom:1px solid #DCE7F0; padding-bottom:1rem; margin-bottom:1rem; }
.request-review header { display:flex; justify-content:space-between; align-items:center; gap:1rem; }
.request-review h3 { font-size:1.1rem; margin:0; }
.request-review dl { margin:.5rem 0; }
.request-review dt { font-size:.875rem; color:#536779; }
.request-review dd { margin:0 0 .6rem; white-space:pre-wrap; overflow-wrap:anywhere; }
.copy-reference { display:flex; align-items:center; flex-wrap:wrap; gap:.5rem; }
.copy-feedback { font-size:.9rem; color:#0B4F8A; }
.submit-feedback { border-left:2px solid #0B4F8A; padding-left:1rem; }
.submit-feedback:empty { margin:0; padding:0; border:0; }
.submit-motif { animation:none!important; }
.receipt-mark { animation:none; }
@media(max-width:40rem) {
    .care-stepper .step-label { display:none; }
    .step-link { align-items:center; padding:0; }
    .care-stepper li::before { left:50%; right:-50%; }
    .care-stepper ol { margin-bottom:.5rem; }
    .request-layout { gap:1rem; }
    .care-form.is-staged .form-grid { grid-template-columns:minmax(0,1fr); }
    .step-actions .button { flex:1 1 auto; }
    .request-aside { padding:1rem; }
    .request-review header { align-items:flex-start; }
}
@media(prefers-reduced-motion:no-preference) {
    .step-enter { animation:step-enter var(--interaction-step) ease-out; }
    .faq-list details[open] > div { animation:step-enter var(--interaction-step) ease-out; }
}
@keyframes step-enter { from { opacity:.7; transform:translateY(4px); } to { opacity:1; transform:none; } }
@media(prefers-reduced-motion:reduce) {
    *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
    .text-link span,.button > span[aria-hidden],.service-overview > a > span:last-child { transform:none!important; }
}
@media(forced-colors:active) { .step-node,.choice-row { border-color:ButtonText; } .step-link[aria-current="step"] .step-node { outline:2px solid Highlight; } }
/* Bring the first request controls into view sooner on phones. */
@media(max-width:671px) {
    .public-shell .request-intro { padding-block:1rem!important; }
    .request-intro .eyebrow { margin-bottom:.5rem; }
    .request-intro h1 { margin-bottom:.65rem; }
    .request-intro .lead { font-size:1rem; line-height:1.5; margin-bottom:0; }
    .public-shell .request-intro + .preparation-notice { margin-block:.75rem; padding:.75rem 1rem; }
    .request-intro + .preparation-notice p { margin-bottom:.4rem; }
    .request-layout { margin-top:1rem; }
    .care-stepper { margin-bottom:.75rem; }
    .care-stepper ol { margin-block:.5rem; }
    .care-form > fieldset { margin-top:1rem; padding-top:1rem; }
}
