.privacy-notice {
  position: fixed;
  z-index: 120;
  right: clamp(1rem, 3vw, 2.5rem);
  bottom: clamp(1rem, 3vw, 2.5rem);
  width: min(440px, calc(100% - 2rem));
  padding: 1.25rem;
  border: 1px solid var(--green);
  background: var(--ink-2);
  color: var(--text);
  box-shadow: 0 20px 60px color-mix(in oklch, var(--ink) 72%, transparent);
}
.privacy-notice[hidden],
.accessibility-panel[hidden] { display: none; }
.privacy-notice h2 {
  margin: 0 0 .55rem;
  font-size: 1.2rem;
}
.privacy-notice p {
  margin: 0;
  color: var(--muted);
  font-size: .9rem;
}
.privacy-notice-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: 1rem;
}
.privacy-notice button,
.privacy-notice a,
.accessibility-trigger,
.accessibility-panel button {
  min-height: 44px;
  border: 1px solid var(--green);
  border-radius: 0;
  color: var(--ink);
  background: var(--green);
  font: inherit;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
}
.privacy-notice button,
.privacy-notice a { display: inline-flex; align-items: center; padding: .65rem .9rem; }
.privacy-notice a { color: var(--text); background: transparent; }
.accessibility-trigger {
  position: fixed;
  z-index: 115;
  right: 1rem;
  bottom: 1rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  height: 48px;
  padding: 0 .95rem;
  gap: .6rem;
  border: 2px solid var(--cyan);
  border-radius: 8px;
  color: var(--text);
  background: var(--ink-2);
  box-shadow: 0 8px 24px color-mix(in oklch, var(--ink) 55%, transparent);
  transition: color .18s ease, background-color .18s ease, transform .18s ease;
}
.accessibility-trigger:hover {
  color: var(--ink);
  background: var(--cyan);
  transform: translateY(-2px);
}
.accessibility-trigger svg {
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.accessibility-trigger span:last-child {
  font-size: .78rem;
  letter-spacing: .02em;
}
.privacy-notice:not([hidden]) ~ .accessibility-trigger { bottom: min(19rem, 45vh); }
.accessibility-panel {
  position: fixed;
  z-index: 130;
  right: 1rem;
  bottom: 4.75rem;
  width: min(360px, calc(100% - 2rem));
  padding: 1.25rem;
  border: 1px solid var(--cyan);
  background: var(--ink-2);
  color: var(--text);
  box-shadow: 0 20px 60px color-mix(in oklch, var(--ink) 72%, transparent);
}
.accessibility-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}
.accessibility-panel h2 { margin: 0; font-size: 1.25rem; }
.accessibility-panel-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .6rem;
}
.accessibility-panel button {
  padding: .7rem;
  color: var(--text);
  border-color: color-mix(in oklch, var(--text) 25%, transparent);
  background: var(--surface);
}
.accessibility-panel button[aria-pressed="true"] {
  color: var(--ink);
  border-color: var(--green);
  background: var(--green);
}
.accessibility-panel .accessibility-close { width: 44px; padding: .4rem; }
.accessibility-panel .accessibility-reset { grid-column: 1 / -1; }

html.a11y-large-text { font-size: 118%; }
html.a11y-extra-large-text { font-size: 132%; }
html.a11y-underline-links a:not(.button) { text-decoration: underline !important; text-underline-offset: .2em; }
html.a11y-high-contrast {
  --ink: oklch(.08 .005 220);
  --ink-2: oklch(.12 .005 220);
  --surface: oklch(.16 .005 220);
  --paper: oklch(.98 .004 95);
  --paper-2: oklch(.93 .004 95);
  --text: oklch(.99 .002 95);
  --muted: oklch(.9 .006 95);
  --green: oklch(.9 .24 130);
  --cyan: oklch(.88 .17 215);
}
html.a11y-reduce-motion *,
html.a11y-reduce-motion *::before,
html.a11y-reduce-motion *::after {
  scroll-behavior: auto !important;
  animation-duration: .001ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: .001ms !important;
}
:focus-visible {
  outline: 3px solid var(--warm);
  outline-offset: 4px;
}
@media (max-width: 560px) {
  .privacy-notice { right: 1rem; bottom: 1rem; }
  .privacy-notice:not([hidden]) ~ .accessibility-trigger { display: none; }
  .accessibility-panel-grid { grid-template-columns: 1fr; }
  .accessibility-panel .accessibility-reset { grid-column: auto; }
  .accessibility-trigger {
    width: 48px;
    padding: 0;
    border-radius: 8px;
  }
  .accessibility-trigger span:last-child { display: none; }
}
@media print {
  .privacy-notice,
  .accessibility-trigger,
  .accessibility-panel { display: none !important; }
}
