/* Daniela Shining — accessibility layer (website + portals).
   1) always on: skip link, clearer keyboard focus, contrast / tap-size fixes found in the audit (same design, darker or larger where needed)
   2) only when the visitor turns an option on in the Accessibility menu (classes on <html>, set by a11y.js) */

/* ---------- 1. always on ---------- */
.ds-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.ds-skip{position:fixed;left:12px;top:-80px;z-index:200;background:#0b1736;color:#fff!important;font:700 15px/1.2 'Plus Jakarta Sans',system-ui,sans-serif;padding:12px 18px;border-radius:12px;text-decoration:none;box-shadow:0 10px 30px rgba(2,6,23,.35);transition:top .15s}
.ds-skip:focus{top:calc(12px + env(safe-area-inset-top,0px));outline:3px solid #fbbf24;outline-offset:2px}
main:focus{outline:none}
/* visible keyboard focus everywhere (mouse clicks are not affected) */
:focus-visible{outline:3px solid #1d4ed8!important;outline-offset:2px!important}
:is(input[type=date],input[type=time],input[type=datetime-local],input[type=month]):focus-within{outline:3px solid #1d4ed8!important;outline-offset:2px!important}
footer :focus-visible,.bg-slate-950 :focus-visible,.bg-gradient-to-r :focus-visible,.next :focus-visible,.dsa-btn:focus-visible,.ds-skip:focus-visible,.dsc :focus-visible{outline-color:#fbbf24!important}
/* contrast fixes (WCAG 1.4.3) — same colours, slightly darker/lighter shades */
footer .text-primary{color:#7cb3ff!important}
footer .text-slate-500{color:#94a3b8!important}
.bg-emerald-600{background-color:#047857!important}
.hover\:bg-emerald-500:hover{background-color:#065f46!important}
.bg-emerald-500.text-white{background-color:#047857!important}
.ds-opt-s{color:#475569!important}
.ds-inc-more{color:#047857!important}
.pg-ba .lbl.after{background:#047857!important}
/* tap targets at least 24 × 24 px (WCAG 2.5.8) */
.ds-topacc a{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}
footer a{display:inline-block;min-height:24px;padding-block:2px}
.ds-rv-dot{position:relative}
.ds-rv-dot::before{content:'';position:absolute;inset:-8px}
/* French header on small phones: the longer “Soumission” button no longer pushes the page sideways */
@media (max-width:420px){header>div{gap:6px;padding-inline:12px!important}header .lg\:hidden{gap:4px!important}header .lg\:hidden>a{padding-inline:8px!important}header>div>a:first-child{min-width:0;flex-shrink:1}header>div>a:first-child img{flex-shrink:0}header>div>a:first-child .flex-col{min-width:0}header>div>a:first-child .flex-col span:first-child{font-size:16px}}
@media (max-width:380px){header>div>a:first-child{gap:6px!important}header>div>a:first-child img{height:36px!important;width:auto}header>div>a:first-child .flex-col span:first-child{font-size:14.5px!important}header>div>a:first-child .flex-col span:last-child{font-size:9.5px!important;letter-spacing:.02em}header .lg\:hidden>a{padding-inline:6px!important;font-size:11.5px!important}}
/* v5.3: phones show only the logo and the menu button in the top bar (the calculator stays in the bottom bar) */
@media (max-width:639px){header .lg\:hidden>a.sm\:hidden{display:none!important}}
@media (max-width:345px){.from-blue-950 .ml-auto{flex-wrap:wrap;gap:6px 10px!important;justify-content:flex-end}header .lg\:hidden>a>span{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important}header .lg\:hidden>a{padding:8px!important}}
.tp-list{list-style:disc}.tp-list li::marker{color:#1d4ed8}
/* colour is never the only signal (WCAG 1.4.1): portal calendar status mark */
.ds-st{display:inline-block;margin-right:3px;font-weight:800}

/* ---------- accessibility menu ---------- */
.dsa11y{position:fixed;left:20px;bottom:20px;z-index:72;font-family:'Plus Jakarta Sans',system-ui,-apple-system,sans-serif;color:#0f172a}
@media (max-width:639px){.dsa11y{left:14px;bottom:84px}}
.dsa-btn{width:52px;height:52px;border-radius:50%;border:2px solid #fff;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,#1d4ed8,#0b1736);box-shadow:0 10px 26px rgba(29,78,216,.35),0 2px 6px rgba(15,23,42,.2);transition:transform .2s}
.dsa-btn:hover{transform:translateY(-2px)}
.dsa-panel{position:absolute;left:0;bottom:64px;width:min(360px,calc(100vw - 28px));max-height:min(78vh,640px);display:flex;flex-direction:column;background:#fff;border:1px solid #dbe3ef;border-radius:22px;box-shadow:0 24px 60px rgba(2,6,23,.28);overflow:hidden}
.dsa-panel[hidden]{display:none}
.dsa-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px;background:linear-gradient(90deg,#0b1736,#1d4ed8);color:#fff}
.dsa-head h2{margin:0;font:800 18px/1.2 Outfit,'Plus Jakarta Sans',system-ui,sans-serif;color:#fff}
.dsa-head h2:focus{outline:none}
.dsa-head h2:focus-visible{outline:3px solid #fbbf24!important}
.dsa-x{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.16);color:#fff;font-size:24px;line-height:1;cursor:pointer}
.dsa-body{overflow:auto;padding:6px 16px 10px}
.dsa-body section{padding:12px 0;border-bottom:1px solid #eef2f7}
.dsa-body section:last-child{border-bottom:0}
.dsa-body h3{margin:0 0 8px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#1e3a8a}
.dsa-size{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.dsa-s{min-width:48px;min-height:44px;border:1.5px solid #cbd5e1;border-radius:12px;background:#f8fafc;color:#0f172a;font-family:inherit;font-weight:800;font-size:16px;line-height:1;cursor:pointer}
.dsa-s:disabled{opacity:.45;cursor:not-allowed}
.dsa-sr0{font-size:13px;padding:0 12px;margin-left:auto}
.dsa-sv{min-width:52px;text-align:center;font-weight:800;color:#1d4ed8}
.dsa-t{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:12px;width:100%;min-height:48px;margin:4px 0;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:14px;background:#fff;color:#0f172a;text-align:left;font-family:inherit;font-weight:600;font-size:14.5px;line-height:1.35;cursor:pointer}
.dsa-t:hover{border-color:#93c5fd}
.dsa-tl{grid-column:1}
.dsa-td{grid-column:1;font-size:12px;font-weight:500;color:#475569}
.dsa-sw{grid-column:2;grid-row:1/span 2;width:42px;height:24px;border-radius:999px;background:#cbd5e1;position:relative;transition:background .15s}
.dsa-sw::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:left .15s}
.dsa-t[aria-pressed=true]{border-color:#1d4ed8;background:#eff6ff}
.dsa-t[aria-pressed=true] .dsa-sw{background:#1d4ed8}
.dsa-t[aria-pressed=true] .dsa-sw::after{left:21px}
.dsa-t[aria-pressed=true] .dsa-tl::after{content:' ✓';color:#1d4ed8;font-weight:800}
.dsa-cs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:6px}
.dsa-c{min-height:44px;border:1.5px solid #e2e8f0;border-radius:12px;background:#fff;color:#0f172a;font-family:inherit;font-weight:700;font-size:13.5px;line-height:1.2;cursor:pointer;padding:6px 8px}
.dsa-c[aria-pressed=true]{border-color:#1d4ed8;background:#1d4ed8;color:#fff}
.dsa-c[aria-pressed=true]::before{content:'✓ '}
.dsa-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-top:1px solid #eef2f7;background:#f8fafc}
.dsa-reset{min-height:44px;padding:0 14px;border:1.5px solid #1d4ed8;border-radius:12px;background:#fff;color:#1d4ed8;font-family:inherit;font-weight:800;font-size:13.5px;line-height:1;cursor:pointer}
.dsa-foot a{color:#1d4ed8;font-weight:700;font-size:13.5px;text-decoration:underline;min-height:24px;display:inline-flex;align-items:center}
.dsa-vp{position:absolute;left:10px;bottom:10px;z-index:5;width:36px;height:36px;border-radius:50%;border:2px solid #fff;background:rgba(11,23,54,.78);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}

/* ---------- 2. options (only when turned on) ---------- */
/* text size: done by a11y.js (each text × the chosen size; widths unchanged); long words may wrap */
html:is(.a11y-fs,.a11y-ls) body,html:is(.a11y-fs,.a11y-ls) body *{overflow-wrap:break-word;hyphens:auto}
html:is(.a11y-fs,.a11y-ls) body :is(a,button,h1,h2,h3,h4,h5,h6,p,span,li,label,summary,small,b,strong){white-space:normal!important}
html:is(.a11y-fs,.a11y-ls) body :is(a,button,h1,h2,h3,p,details,summary,li){max-width:100%;min-width:0}
html:is(.a11y-fs,.a11y-ls) body :is(.flex,.inline-flex,.grid)>*{min-width:0}
html:is(.a11y-fs,.a11y-ls) body :is(h1,h2,h3,footer *,.tp-sec h2 span){overflow-wrap:anywhere;min-width:0}
html:is(.a11y-fs,.a11y-ls) body :is(form,aside,section,article,fieldset,main>div){min-width:0;max-width:100%}
html:is(.a11y-fs,.a11y-ls) body :is(input,select,textarea){max-width:100%;min-width:0}
html:is(.a11y-fs-3,.a11y-fs-4,.a11y-fs-5) body :is(.bd-chips,.ds-opts,.bd-grid,.bd-row){grid-template-columns:1fr!important}
html:is(.a11y-fs,.a11y-ls) body :is(.bd-chip,.ds-opt) *{overflow-wrap:anywhere}
html:is(.a11y-fs,.a11y-ls) body :is(header,.bg-gradient-to-r) :is(.flex,.inline-flex){flex-wrap:wrap}
/* bigger text or wider spacing: the full desktop menu would not fit, so the compact ☰ menu is used (same links) */
html:is(.a11y-fs-2,.a11y-fs-3,.a11y-fs-4,.a11y-fs-5,.a11y-ls) .ds-mainnav{display:none!important}
html:is(.a11y-fs-2,.a11y-fs-3,.a11y-fs-4,.a11y-fs-5,.a11y-ls) header .lg\:hidden{display:flex!important}
html:is(.a11y-fs-2,.a11y-fs-3,.a11y-fs-4,.a11y-fs-5,.a11y-ls) header .hidden.sm\:flex{display:none!important}
html.a11y-ls body *{overflow-wrap:break-word;hyphens:auto}
/* spacing (WCAG 1.4.12 values) */
html.a11y-lh body :is(p,li,dd,dt,td,th,label,a,small,blockquote,summary,h1,h2,h3,h4,h5,h6){line-height:1.8!important}
html.a11y-lh body :is(p,li){margin-bottom:.4em}
html.a11y-ls body :is(p,li,dd,dt,td,th,label,a,span,small,button,blockquote,summary,h1,h2,h3,h4,h5,h6){letter-spacing:.12em!important;word-spacing:.16em!important}
html.a11y-font body,html.a11y-font body *:not(svg):not(svg *){font-family:'Atkinson Hyperlegible',Verdana,Tahoma,Arial,sans-serif!important}
/* contrast modes: one solid page colour, text/links/borders recoloured; decorative layers become transparent */
html.a11y-contrast body *:not(svg):not(svg *):not(img):not(video):not(picture):not(canvas):not(iframe):not(.dsa-sw):not(.dsa-sw *){background-image:none!important;text-shadow:none!important;box-shadow:none!important;background-color:transparent!important}
:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body :is(header,.fixed:not([aria-hidden=true]),.sticky,[role=dialog],.ds-dd-menu,.ds-dd-box,.ds-menu,.modal,.dsa-panel,.dsa-btn,.dsc-panel,.dsc-btn,select,input,textarea,option,button,.btn,[role=button],.ds-opt,.dsa-t,.dsa-c,.dsa-s,.dsa-reset,.dsa-x,.dsa-vp,.ds-skip,details,.card,.row,.ev){background-color:var(--a11y-bg)!important}
html.a11y-contrast,html.a11y-contrast body{background:var(--a11y-bg)!important;color:var(--a11y-fg)!important}
html.a11y-contrast body *:not(svg):not(svg *):not(img):not(video):not(picture):not(canvas):not(iframe){color:var(--a11y-fg)!important;border-color:var(--a11y-line)!important}
:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body a,:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body a *:not(svg):not(svg *){color:var(--a11y-link)!important}
html.a11y-contrast a{text-decoration:underline!important}
html.a11y-contrast svg{color:var(--a11y-fg)}
html.a11y-contrast ::placeholder{color:var(--a11y-muted)!important;opacity:1}
:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body :is(button,.btn,[role=button],.ds-opt,.dsa-t,.dsa-c,.dsa-s,.dsa-reset,input,select,textarea,.card,.row,.ev,details){border:2px solid var(--a11y-line)!important}
:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body :is([aria-pressed=true],[aria-checked=true],[aria-selected=true],[aria-current=page],.is-on,.on){outline:3px solid var(--a11y-sel)!important;outline-offset:-3px!important}
:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body .dsa-sw{background:var(--a11y-muted)!important}:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body .dsa-t[aria-pressed=true] .dsa-sw{background:var(--a11y-sel)!important}
:root.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast.a11y-contrast body .dsa-sw::after{background:var(--a11y-bg)!important}
html.a11y-contrast :focus-visible{outline:4px solid var(--a11y-sel)!important}
html.a11y-hc{--a11y-bg:#000;--a11y-fg:#fff;--a11y-link:#ffeb3b;--a11y-line:#fff;--a11y-sel:#ffeb3b;--a11y-muted:#bdbdbd}
html.a11y-dark{--a11y-bg:#0f172a;--a11y-fg:#f1f5f9;--a11y-link:#93c5fd;--a11y-line:#94a3b8;--a11y-sel:#fbbf24;--a11y-muted:#94a3b8}
html.a11y-light{--a11y-bg:#fff;--a11y-fg:#000;--a11y-link:#0033b3;--a11y-line:#1f2937;--a11y-sel:#0033b3;--a11y-muted:#4b5563}
html.a11y-gray{filter:grayscale(100%)}
/* links, headings, cursor */
html.a11y-links a{text-decoration:underline!important;text-underline-offset:3px!important;text-decoration-thickness:2px!important}
html.a11y-links :is(a,button,[role=button],summary,input[type=submit]){outline:2px dashed #1d4ed8!important;outline-offset:2px!important}
html.a11y-heads :is(h1,h2,h3,h4,h5,h6){outline:2px solid #f59e0b!important;outline-offset:4px!important;border-radius:4px}
html.a11y-cursor,html.a11y-cursor *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 24 24'%3E%3Cpath d='M4 2l15 11-6.5 1 3.8 7.3-2.6 1.4-3.8-7.3L5 20z' fill='%23000' stroke='%23fff' stroke-width='1.4'/%3E%3C/svg%3E") 6 3,auto!important}
html.a11y-cursor :is(a,button,[role=button],summary,label,select,input[type=checkbox],input[type=radio]),html.a11y-cursor :is(a,button,[role=button],summary,label) *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 24 24'%3E%3Cpath d='M9 11V4.5a1.5 1.5 0 013 0V10h.5V3.5a1.5 1.5 0 013 0V10h.5V5a1.5 1.5 0 013 0v9c0 4-2.5 7-6.5 7S8 19 6 16.5L3.6 13a1.6 1.6 0 012.6-1.8L8 13z' fill='%23fff' stroke='%23000' stroke-width='1.3'/%3E%3C/svg%3E") 12 4,pointer!important}
html.a11y-cursor :is(input:not([type=checkbox]):not([type=radio]),textarea){cursor:text!important}
/* reduce motion: no animations, transitions, smooth scrolling or moving bubbles; videos are paused by a11y.js */
html.a11y-motion *,html.a11y-motion *::before,html.a11y-motion *::after{animation-duration:.001ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0s!important;scroll-behavior:auto!important}
@media print{.dsa11y,.ds-skip{display:none!important}}
