:root {
  --dpc-ink: var(--step-color-ink-primary);
  --dpc-muted: var(--step-color-ink-secondary);
  --dpc-green: var(--step-color-brand-forest);
  --dpc-green-dark: var(--step-color-brand-forestDark);
  --dpc-green-soft: var(--step-color-surface-forestSoft);
  --dpc-line: var(--step-color-surface-line);
  --dpc-paper: var(--step-color-surface-white);
  --dpc-surface: var(--step-color-surface-panel);
}

[data-dpc-public] body {
  margin: 0;
  font-family: var(--step-typography-family-sans);
}

.dpc-site-footer,
.dpc-cookie-banner,
.dpc-cookie-dialog,
.dpc-site-footer *,
.dpc-site-footer *::before,
.dpc-site-footer *::after,
.dpc-cookie-banner *,
.dpc-cookie-banner *::before,
.dpc-cookie-banner *::after,
.dpc-cookie-dialog *,
.dpc-cookie-dialog *::before,
.dpc-cookie-dialog *::after {
  box-sizing: border-box;
}

.dpc-site-footer {
  border-top: 1px solid var(--dpc-line);
  background: var(--step-color-surface-panel);
  color: var(--dpc-ink);
  font-family: var(--step-typography-family-sans);
}

.dpc-site-footer-inner {
  display: grid;
  width: min(1190px, calc(100% - var(--step-spacing-exception-64)));
  min-height: 142px;
  margin: 0 auto;
  padding: calc(var(--step-spacing-24) + var(--step-spacing-6)) 0;
  grid-template-columns: minmax(210px, 1fr) minmax(360px, auto);
  align-items: start;
  gap: calc(var(--step-spacing-24) + var(--step-spacing-4)) var(--step-spacing-exception-48);
}

.dpc-site-footer-brand {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  text-decoration: none;
}

.dpc-site-footer-logo {
  display: block;
  width: 154px;
  height: auto;
}

.dpc-site-footer-note {
  max-width: 390px;
  margin: 8px 0 0;
  color: var(--dpc-muted);
  font-size: var(--step-typography-scale-14);
}

.dpc-site-footer-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--step-spacing-12) var(--step-spacing-24);
}

.dpc-site-footer-links a,
.dpc-cookie-link {
  border: 0;
  background: transparent;
  color: var(--dpc-green);
  cursor: pointer;
  font: inherit;
  font-size: var(--step-typography-scale-14);
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.dpc-site-footer-links a,
.dpc-site-footer-links .dpc-cookie-link {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  padding: 0 4px;
}


.dpc-legal-main {
  min-height: 65vh;
  background: var(--dpc-paper);
  color: var(--dpc-ink);
  font-family: var(--step-typography-family-sans);
}

.dpc-legal-hero {
  border-bottom: 1px solid var(--dpc-line);
  background: var(--dpc-green-soft);
}

.dpc-legal-hero-inner,
.dpc-legal-content {
  width: min(var(--dpc-content-canvas), calc(100% - 2 * var(--dpc-content-gutter)));
  margin: 0 auto;
}

.dpc-legal-hero-inner {
  padding: var(--dpc-public-section-space) 0;
}

.dpc-legal-kicker {
  margin: 0 0 10px;
  color: var(--dpc-green);
  font-size: var(--step-typography-scale-12);
  font-weight: var(--step-typography-weight-medium);
  text-transform: uppercase;
}

.dpc-legal-hero h1 {
  max-width: 760px;
  margin: 0;
  font-size: var(--dpc-public-title-size);
  line-height: 1.2;
  font-weight: var(--dpc-public-heading-weight);
}

.dpc-legal-summary {
  max-width: 720px;
  margin: 18px 0 0;
  color: var(--dpc-muted);
  font-size: 18px;
}

.dpc-legal-content {
  max-width: var(--dpc-reading-measure);
  padding: var(--step-spacing-exception-48) 0 var(--step-spacing-exception-64);
}

.dpc-legal-content section + section {
  margin-top: 40px;
  padding-top: 40px;
  border-top: 1px solid var(--dpc-line);
}

.dpc-legal-content h2 {
  margin: 0 0 14px;
  font-size: 24px;
  line-height: 1.25;
  font-weight: var(--dpc-public-heading-weight);
}

.dpc-legal-content h3 {
  margin: 24px 0 10px;
  font-size: 18px;
  font-weight: var(--dpc-public-heading-weight);
}

.dpc-legal-content p,
.dpc-legal-content li {
  color: var(--step-color-ink-secondary);
  font-size: 16px;
  line-height: 1.7;
}

.dpc-legal-main--terms .dpc-legal-hero h1 {
  font-weight: var(--step-typography-weight-regular);
}

.dpc-legal-main--privacy .dpc-legal-content li + li {
  margin-top: var(--step-spacing-12);
}

.dpc-legal-content code {
  font-family: var(--step-typography-family-mono);
  font-size: var(--step-typography-scale-14);
  background: var(--step-color-surface-forestSoft);
  padding: var(--step-spacing-2) var(--step-spacing-4);
  border-radius: var(--step-radius-control);
  overflow-wrap: anywhere;
}

.dpc-legal-fields p {
  margin-top: var(--step-spacing-8);
  margin-bottom: var(--step-spacing-8);
}

.dpc-legal-content a {
  color: var(--dpc-green);
}
.dpc-legal-content a:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

.dpc-draft-notice {
  margin: 0 0 30px;
  border-left: 4px solid #a15b00;
  background: #fff3dc;
  padding: 16px 18px;
  color: #6d3d00;
  font-weight: 500;
}

.dpc-cookie-banner {
  display: grid;
  width: 100%;
  border-top: 1px solid #bed8cf;
  border-bottom: 1px solid #bed8cf;
  background: var(--dpc-green-soft);
  padding: var(--step-spacing-16) max(var(--dpc-content-gutter), calc((100% - var(--dpc-content-canvas)) / 2));
  color: var(--dpc-ink);
  font-family: var(--step-typography-family-sans);
  grid-template-columns: minmax(0, 1fr) minmax(410px, auto);
  grid-template-areas:
    "title actions"
    "copy actions";
  align-items: center;
  gap: 14px 32px;
}

.dpc-cookie-banner h2,
.dpc-cookie-dialog h2 {
  margin: 0 0 8px;
  font-size: 20px;
  font-weight: var(--dpc-public-heading-weight);
}

.dpc-cookie-banner h2 {
  margin-bottom: 4px;
  grid-area: title;
}

.dpc-cookie-banner > p {
  grid-area: copy;
}

.dpc-cookie-banner p,
.dpc-cookie-dialog p {
  margin: 0;
  color: var(--dpc-muted);
  font-size: 14px;
  line-height: 1.55;
}

.dpc-cookie-actions {
  display: grid;
  margin-top: 18px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.dpc-cookie-banner .dpc-cookie-actions {
  grid-area: actions;
  margin-top: 0;
}

.dpc-cookie-button {
  min-height: var(--step-spacing-exception-48);
  border: 1px solid var(--dpc-green);
  border-radius: 4px;
  background: rgba(255, 255, 255, .72);
  color: var(--dpc-green);
  cursor: pointer;
  font: inherit;
  font-size: var(--step-typography-scale-14);
  font-weight: var(--step-typography-weight-medium);
  padding: 9px 12px;
}

.dpc-cookie-button.primary {
  background: rgba(255, 255, 255, .72);
  color: var(--dpc-green);
}

.dpc-cookie-dialog {
  width: min(640px, calc(100% - 2 * var(--step-spacing-16)));
  max-height: calc(100dvh - 2 * var(--step-spacing-16));
  overflow: hidden;
  border: 1px solid var(--dpc-line);
  border-radius: 8px;
  padding: 0;
  color: var(--dpc-ink);
  font-family: var(--step-typography-family-sans);
}

.dpc-cookie-dialog::backdrop {
  background: rgba(16, 29, 49, .46);
}

.dpc-cookie-dialog-inner {
  display: flex;
  flex-direction: column;
  max-height: calc(100dvh - 2 * var(--step-spacing-16) - 2px);
  margin: 0;
}
.dpc-cookie-dialog-content {overflow-y:auto;min-height:0;padding:var(--step-spacing-24);overscroll-behavior:contain}
.dpc-cookie-dialog-inner > .dpc-cookie-actions {flex:none;margin:0;padding:var(--step-spacing-16) var(--step-spacing-24);border-top:1px solid var(--dpc-line);background:var(--dpc-paper)}

.dpc-cookie-option {
  display: grid;
  margin-top: 20px;
  border-top: 1px solid var(--dpc-line);
  padding-top: 18px;
  grid-template-columns: 1fr auto;
  gap: 6px 18px;
}

.dpc-cookie-option strong {
  font-size: 15px;
  font-weight: var(--dpc-public-heading-weight);
}

.dpc-cookie-option small {
  color: var(--dpc-muted);
  line-height: 1.45;
}

.dpc-cookie-option input {
  accent-color: var(--step-color-brand-forest);
  width: 20px;
  height: 20px;
  grid-column: 2;
  grid-row: 1 / span 2;
}

@media (max-width: 960px) {
  .dpc-cookie-banner {
    padding: var(--step-spacing-16) var(--dpc-content-gutter);
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "title"
      "copy"
      "actions";
    gap: 8px;
  }

  .dpc-cookie-banner .dpc-cookie-actions {
    margin-top: 6px;
  }
}

@media (max-width: 720px) {
  .dpc-site-footer-inner {
    width: calc(100% - 32px);
  }

  .dpc-site-footer-inner {
    min-height: 0;
    padding: var(--step-spacing-24) 0;
    grid-template-columns: 1fr;
    gap: var(--step-spacing-16);
  }

  .dpc-site-footer-links {
    display: grid;
    border-top: 1px solid var(--dpc-line);
    grid-template-columns: repeat(2, minmax(0, 1fr));
    justify-content: stretch;
    gap: 0 var(--step-spacing-16);
  }

  .dpc-site-footer-links a,
  .dpc-site-footer-links .dpc-cookie-link {
    display: inline-flex;
    min-height: var(--step-spacing-exception-48);
    align-items: center;
    border-bottom: 1px solid var(--dpc-line);
    padding: var(--step-spacing-6) 0;
    font-size: var(--step-typography-scale-12);
    line-height: 1.25;
  }


  .dpc-legal-hero-inner {
    padding: var(--dpc-public-section-space) 0;
  }

  .dpc-legal-content {
    padding: var(--step-spacing-32) 0 var(--step-spacing-exception-48);
  }

  .dpc-cookie-banner {
    padding: var(--step-spacing-16) var(--dpc-content-gutter);
  }

  .dpc-cookie-actions {
    grid-template-columns: 1fr;
  }
}

/* Public footer places its single copyright beside the policy links. */
.dpc-site-footer--public .dpc-site-footer-inner {width:calc(100% - 2 * var(--dpc-shell-gutter));max-width:var(--dpc-content-canvas);min-height:0;align-items:center}
.dpc-site-footer--public, .dpc-site-footer--public :is(p,a,small,.dpc-cookie-link) {font-size:var(--step-typography-scale-16);font-weight:var(--step-typography-weight-regular);line-height:1.5}
.dpc-site-footer--public .dpc-site-footer-note {margin:0}
.dpc-site-footer--public .dpc-site-footer-links :is(a,.dpc-cookie-link) {color:var(--dpc-green)}

@media (min-width: 721px) and (max-width: 1439px) {
  .dpc-site-footer--public .dpc-site-footer-inner {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--step-spacing-24, 24px);
    align-items: start;
  }
  .dpc-site-footer--public .dpc-site-footer-links {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--step-spacing-16, 16px) var(--step-spacing-24, 24px);
    justify-content: start;
    align-items: center;
  }
}

/* Reading width is independent of the shared outer hero/header/footer frame. */
.dpc-legal-main {overflow-wrap:break-word}
.dpc-legal-content ul,.dpc-legal-content ol {padding-inline-start:var(--step-spacing-24)}
.dpc-legal-summary {line-height:1.55}
.dpc-cookie-option small {font-size:var(--step-typography-scale-14)}
@media(max-width:699px) {.dpc-cookie-dialog-content {padding:var(--step-spacing-16)} .dpc-cookie-dialog-inner > .dpc-cookie-actions {padding:var(--step-spacing-12) var(--step-spacing-16)}}
@media(max-height:480px) {.dpc-cookie-dialog-inner > .dpc-cookie-actions {grid-template-columns:repeat(3,minmax(0,1fr));padding:var(--step-spacing-8) var(--step-spacing-16)} .dpc-cookie-option {margin-top:var(--step-spacing-12);padding-top:var(--step-spacing-12)}}
