/* Accessibility controls widget */
:root{
  --access-z: 1200;
  --access-bg: #ffffff;
  --access-text: #161616;
  --access-border: #e6e6e6;
  --access-accent: #ec86b8;
  --access-shadow: 0 12px 36px rgba(0,0,0,.16);
}

.accessibility-controls{
  position:fixed;
  left:14px;
  top:55%;
  transform:translateY(-50%);
  z-index:var(--access-z);
}
.accessibility-toggle{
  width:44px;
  height:44px;
  border-radius:999px;
  border:1px solid var(--access-border);
  background:#fff;
  color:#111;
  display:grid;
  place-items:center;
  cursor:pointer;
  box-shadow:0 6px 18px rgba(0,0,0,.12);
  position:relative;
}
.accessibility-toggle:focus-visible{
  outline:3px solid #0b57d0;
  outline-offset:3px;
}
.accessibility-toggle .accessibility-toggle__aa{
  font-size:1rem;
  font-weight:800;
  line-height:1;
  letter-spacing:-0.02em;
  color:#111;
}
.accessibility-toggle__pill{
  position:absolute;
  left:100%;
  margin-left:10px;
  padding:.35rem .6rem;
  background:#161616;
  color:#fff;
  font-size:.75rem;
  font-weight:600;
  border-radius:999px;
  white-space:nowrap;
  opacity:0;
  pointer-events:none;
  transition:opacity .15s ease;
  box-shadow:0 4px 12px rgba(0,0,0,.2);
}
.accessibility-toggle:hover .accessibility-toggle__pill,
.accessibility-toggle:focus-visible .accessibility-toggle__pill{
  opacity:1;
}

.accessibility-panel{
  position:fixed;
  width:360px;
  max-height:min(70vh, 560px);
  height:auto;
  min-height:200px;
  background:var(--access-bg);
  color:var(--access-text);
  border:1px solid var(--access-border);
  border-radius:12px;
  box-shadow:var(--access-shadow);
  z-index:var(--access-z);
  display:flex;
  flex-direction:column;
  overflow:hidden;
  transition:transform .2s ease;
  --acc-panel-x: 0px;
  --acc-panel-y: 0px;
  visibility:hidden;
  pointer-events:none;
}
.accessibility-panel.is-open{
  visibility:visible;
  pointer-events:auto;
}
.accessibility-panel[data-panel-dock="bl"]{
  left:12px;
  bottom:12px;
  transform:translate(var(--acc-panel-x), calc(var(--acc-panel-y) + 100%));
}
.accessibility-panel[data-panel-dock="bl"].is-open{
  transform:translate(var(--acc-panel-x), var(--acc-panel-y));
}
.accessibility-panel[data-panel-dock="br"]{
  right:12px;
  bottom:12px;
  left:auto;
  transform:translate(calc(var(--acc-panel-x) + 100%), calc(var(--acc-panel-y) + 100%));
}
.accessibility-panel[data-panel-dock="br"].is-open{
  transform:translate(var(--acc-panel-x), var(--acc-panel-y));
}
.accessibility-panel[data-panel-dock="tl"]{
  left:12px;
  top:12px;
  bottom:auto;
  transform:translate(var(--acc-panel-x), calc(var(--acc-panel-y) - 100%));
}
.accessibility-panel[data-panel-dock="tl"].is-open{
  transform:translate(var(--acc-panel-x), var(--acc-panel-y));
}
.accessibility-panel[data-panel-dock="tr"]{
  right:12px;
  top:12px;
  left:auto;
  bottom:auto;
  transform:translate(calc(var(--acc-panel-x) + 100%), calc(var(--acc-panel-y) - 100%));
}
.accessibility-panel[data-panel-dock="tr"].is-open{
  transform:translate(var(--acc-panel-x), var(--acc-panel-y));
}
.accessibility-panel.is-move-mode .accessibility-panel__head{
  cursor:grab;
}
.accessibility-panel.is-move-mode .accessibility-panel__head:active{
  cursor:grabbing;
}
.accessibility-panel__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.6rem;
  padding:1rem 1rem .75rem;
  border-bottom:1px solid var(--access-border);
  flex-shrink:0;
  position:sticky;
  top:0;
  background:var(--access-bg);
  z-index:1;
}
.accessibility-panel__head-actions{
  display:flex;
  gap:.4rem;
  flex-shrink:0;
}
.accessibility-panel__title{
  font-size:1rem;
  margin:0;
  font-weight:700;
}
.accessibility-panel__close,
.accessibility-panel__move{
  border:1px solid var(--access-border);
  background:#fff;
  border-radius:10px;
  padding:.45rem .6rem;
  cursor:pointer;
  font-size:.9rem;
}
.accessibility-panel__move[aria-pressed="true"]{
  border-color:var(--access-accent);
  background:#fff0f7;
}
.accessibility-panel__body{
  padding:.9rem 1rem 1.5rem;
  overflow-y:auto;
  overflow-x:hidden;
  flex:1;
  min-height:0;
  -webkit-overflow-scrolling:touch;
}
.accessibility-panel__footer{
  flex-shrink:0;
  padding:.6rem 1rem 1rem;
  border-top:1px solid var(--access-border);
  display:flex;
  flex-wrap:wrap;
  gap:.35rem;
  align-items:center;
  background:var(--access-bg);
}
.accessibility-panel__footer-label{
  font-size:.75rem;
  color:#666;
  width:100%;
  margin:0 0 .25rem;
}
.accessibility-dock-btn{
  border:1px solid var(--access-border);
  background:#fff;
  border-radius:8px;
  padding:.25rem .5rem;
  font-size:.75rem;
  cursor:pointer;
}
.accessibility-dock-btn[aria-pressed="true"]{
  border-color:var(--access-accent);
  background:#fff0f7;
}
.accessibility-panel__note{
  font-size:.8rem;
  color:#666;
  margin:0 0 .75rem;
  padding-bottom:.5rem;
  border-bottom:1px dashed #eee;
}
.accessibility-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  padding:.65rem 0;
  border-bottom:1px dashed #eee;
}
.accessibility-row:last-child{border-bottom:0}
.accessibility-row__label{
  font-size:.95rem;
  color:#333;
  flex:1;
  min-width:0;
}
.accessibility-actions{
  display:flex;
  gap:.4rem;
  flex-wrap:wrap;
  flex-shrink:0;
}
.accessibility-btn{
  border:1px solid var(--access-border);
  background:#fff;
  border-radius:10px;
  padding:.35rem .6rem;
  font-size:.85rem;
  cursor:pointer;
}
.accessibility-btn[aria-pressed="true"]{
  border-color:var(--access-accent);
  background:#fff0f7;
}

@media (max-width: 720px){
  .accessibility-controls{left:12px;bottom:80px;top:auto;transform:none}
  .accessibility-panel{
    width:92vw;
    max-height:min(75vh, 520px);
    height:auto;
  }
  .accessibility-toggle__pill{display:none}
}

/* High contrast & dark theme: CSS variables (applied via html data attributes) */
html[data-access-contrast="on"]{
  --acc-bg:#fff;
  --acc-surface:#fff;
  --acc-text:#000;
  --acc-muted:#333;
  --acc-border:#000;
  --acc-link:#0000ee;
  --acc-focus:#000;
}
html[data-access-contrast="on"] body{
  background:var(--acc-bg) !important;
  color:var(--acc-text) !important;
}
html[data-access-contrast="on"] a:not(.btn){
  color:var(--acc-link) !important;
  text-decoration:underline !important;
  text-underline-offset:2px;
}
html[data-access-contrast="on"] .card,
html[data-access-contrast="on"] .heroV7Card,
html[data-access-contrast="on"] .compare-error,
html[data-access-contrast="on"] .answer-box,
html[data-access-contrast="on"] .i-card,
html[data-access-contrast="on"] .site-header,
html[data-access-contrast="on"] .accessibility-panel{
  background:var(--acc-surface) !important;
  color:var(--acc-text) !important;
  border-color:var(--acc-border) !important;
}
html[data-access-contrast="on"] input,
html[data-access-contrast="on"] button,
html[data-access-contrast="on"] .btn{
  border-color:var(--acc-border) !important;
}
html[data-access-contrast="on"] .accessibility-panel,
html[data-access-contrast="on"] .accessibility-toggle{
  background:var(--acc-bg) !important;
  color:var(--acc-text) !important;
  border-color:var(--acc-border) !important;
}
html[data-access-contrast="on"] .accessibility-toggle .accessibility-toggle__aa{color:var(--acc-text)}
html[data-access-contrast="on"] .accessibility-toggle__pill{background:var(--acc-text);color:var(--acc-bg)}
html[data-access-contrast="on"] .accessibility-panel__close,
html[data-access-contrast="on"] .accessibility-panel__move,
html[data-access-contrast="on"] .accessibility-btn,
html[data-access-contrast="on"] .accessibility-dock-btn{background:var(--acc-surface);color:var(--acc-text);border-color:var(--acc-border)}

/* Dark theme (only when high contrast is off) */
html[data-access-theme="dark"]:not([data-access-contrast="on"]){
  --acc-bg:#0f1115;
  --acc-surface:#171a21;
  --acc-text:#f2f4f8;
  --acc-muted:#b7beca;
  --acc-border:rgba(255,255,255,0.14);
  --acc-link:#9cc6ff;
  --acc-focus:#7aa7ff;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) body{
  background:var(--acc-bg) !important;
  color:var(--acc-text) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) body,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) h1,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) h2,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) h3,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) h4,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) p,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) li{
  color:var(--acc-text) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) a:not(.btn){
  color:var(--acc-link) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) a:not(.btn):hover{
  text-decoration:underline;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .top-nav a{
  color:var(--acc-text) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .top-nav a:hover,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .top-nav a.active{
  color:var(--acc-link) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .card,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroV7Card,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroV4Card,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroV4Benefit,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroV4Video,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroPanel,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .compare-error,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .answer-box,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .i-card,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .site-header{
  background:var(--acc-surface) !important;
  color:var(--acc-text) !important;
  border-color:var(--acc-border) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .card h3,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroV7Card *,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroV4Card *,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .heroPanel *{
  color:inherit !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) input,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) textarea,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) select,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .postcode-form input,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .postcode-form__controls{
  background:#1e2229 !important;
  color:var(--acc-text) !important;
  border-color:var(--acc-border) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-panel,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-toggle{
  background:var(--acc-surface) !important;
  color:var(--acc-text) !important;
  border-color:var(--acc-border) !important;
}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-toggle .accessibility-toggle__aa{color:var(--acc-text)}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-panel__close,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-panel__move,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-btn,
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-dock-btn{background:#1e2229;color:var(--acc-text);border-color:var(--acc-border)}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-row__label{color:var(--acc-muted)}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-panel__note{color:var(--acc-muted);border-bottom-color:var(--acc-border)}
html[data-access-theme="dark"]:not([data-access-contrast="on"]) .accessibility-row{border-bottom-color:var(--acc-border)}

/* Light theme override (only when high contrast off) */
html[data-access-theme="light"]:not([data-access-contrast="on"]) body{
  background:#ffffff !important;
  color:#161616 !important;
}

/* Data attribute driven settings */
html[data-access-font="90"]{font-size:90%}
html[data-access-font="100"]{font-size:100%}
html[data-access-font="110"]{font-size:110%}
html[data-access-font="120"]{font-size:120%}
html[data-access-font="130"]{font-size:130%}

html[data-access-readable="on"] body,
html[data-access-readable="on"] button,
html[data-access-readable="on"] input,
html[data-access-readable="on"] select,
html[data-access-readable="on"] textarea{
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif !important;
}

html[data-access-spacing="on"] body{line-height:1.8}
html[data-access-spacing="on"] main p,
html[data-access-spacing="on"] main li{margin-bottom:.75rem}
html[data-access-spacing="on"] .site-header,
html[data-access-spacing="on"] .top-nav{line-height:1.2}

html[data-access-motion="on"] *{animation:none !important;transition:none !important}
html[data-access-motion="on"]{scroll-behavior:auto !important}

html[data-access-links="on"] a:not(.btn){
  text-decoration:underline;
  text-decoration-thickness:2px;
  text-underline-offset:3px;
}
html[data-access-links="on"] a:not(.btn):visited{color:#5a1aa5}

html[data-access-focus="on"] :focus-visible{
  outline:4px solid #0b57d0;
  outline-offset:3px;
}
html[data-access-focus="on"] .accessibility-toggle:focus-visible{
  outline:4px solid #0b57d0;
  outline-offset:3px;
}

/* Image description overlays: compact, on hover/focus by default */
.access-img-layer{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:1199;
}
.access-img-desc{
  position:fixed;
  background:rgba(0,0,0,.88);
  color:#fff;
  font-size:12px;
  line-height:1.35;
  padding:8px 10px;
  border-radius:8px;
  pointer-events:none;
  z-index:1200;
  max-width:280px;
  box-shadow:0 4px 16px rgba(0,0,0,.3);
  border:1px solid rgba(255,255,255,.15);
}
.access-img-desc__label{
  display:block;
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:.05em;
  opacity:.9;
  margin-bottom:4px;
}
.access-img-desc__text{
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
  word-break:break-word;
}
.access-img-desc--missing .access-img-desc__text{font-style:italic;opacity:.95}
