.legal-dock,
.consent-card {
  position: fixed;
  z-index: 300;
  right: 20px;
  bottom: 20px;
  color: var(--text-primary);
  background: rgb(255 255 255 / .96);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  backdrop-filter: blur(12px);
}

.legal-dock {
  display: flex;
  max-width: calc(100vw - 40px);
  min-height: 24px;
  align-items: center;
  gap: 6px;
  padding: 2px 0;
  color: var(--text-tertiary);
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  text-shadow: 0 1px 2px rgb(255 255 255 / .95), 0 1px 4px rgb(0 0 0 / .14);
  backdrop-filter: none;
  font: 400 11px/15px Inter, Arial, sans-serif;
}
.legal-dock__copyright, .legal-dock__separator { flex: 0 0 auto; color: var(--text-tertiary); white-space: nowrap; }
.legal-dock__separator { opacity: .72; }
.legal-dock__link { flex: 0 0 auto; color: var(--text-tertiary); text-decoration: none; white-space: nowrap; }
.legal-dock__link:hover { color: var(--text-primary); text-decoration: underline; text-underline-offset: 2px; }
.legal-dock__link--disabled { opacity: .65; }
.legal-dock__manage { flex: 0 0 auto; padding: 0; color: var(--text-tertiary); background: transparent; border: 0; border-radius: 0; font: inherit; cursor: pointer; }
.legal-dock__manage-icon { display: none; }
.legal-dock__manage:hover { color: var(--text-primary); text-decoration: underline; text-underline-offset: 2px; }
.legal-dock.is-feed-footer {
  position: relative;
  z-index: 0;
  right: auto;
  bottom: auto;
  width: 100%;
  max-width: none;
  min-height: 28px;
  justify-content: flex-end;
  order: 4;
  padding-block: 0;
}
.legal-dock :focus-visible,
.consent-card :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
body:has(.portfolio.has-open-case) .legal-dock { visibility: hidden; opacity: 0; pointer-events: none; }

.consent-card { width: min(410px, calc(100vw - 40px)); padding: 18px; }
.consent-card h2 { margin: 0; font: 500 20px/1.2 Inter, Arial, sans-serif; }
.consent-card > div > p { margin: 10px 0 0; color: var(--text-secondary); font: 400 13px/1.45 Inter, Arial, sans-serif; }
.consent-card__links { display: flex; margin-top: 10px; flex-wrap: wrap; gap: 5px 12px; }
.consent-card__links a { color: var(--accent-text); font-size: 12px; text-underline-offset: 2px; }
.consent-card__actions { display: flex; margin-top: 16px; gap: 8px; }
.consent-card__actions--choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.consent-button { min-height: 36px; padding: 8px 12px; border-radius: var(--radius-md); font: 500 12px/16px Inter, Arial, sans-serif; cursor: pointer; }
.consent-button--choice { flex: 1; color: #fff; background: var(--accent); border: 1px solid var(--accent); }
.consent-button--choice:hover { background: var(--accent-text); border-color: var(--accent-text); }
.consent-button--secondary { grid-column: 1 / -1; order: 3; color: var(--text-primary); background: var(--surface-sunken); border: 1px solid var(--border-default); }
.consent-button--secondary:hover { background: #efefed; }
.consent-card__details-head { display: flex; align-items: center; gap: 10px; }
.consent-card__back { display: grid; width: 30px; height: 30px; padding: 0; place-items: center; background: var(--surface-sunken); border: 1px solid var(--border-default); border-radius: var(--radius-md); cursor: pointer; }
.consent-category { display: grid; padding: 13px 0; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 12px; border-bottom: 1px solid var(--border-default); }
.consent-category strong { font: 500 13px/18px Inter, Arial, sans-serif; }
.consent-category p { margin: 3px 0 0; color: var(--text-secondary); font: 400 12px/1.4 Inter, Arial, sans-serif; }
.consent-switch { position: relative; display: inline-flex; width: 38px; height: 22px; margin-top: 1px; }
.consent-switch input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.consent-switch > span:last-child { width: 38px; height: 22px; background: #d5d5d1; border-radius: 999px; transition: background-color .18s ease; }
.consent-switch > span:last-child::after { display: block; width: 18px; height: 18px; margin: 2px; background: #fff; border-radius: 50%; box-shadow: 0 1px 2px rgb(0 0 0 / .16); content: ""; transition: transform .18s ease; }
.consent-switch input:checked + span { background: var(--accent); }
.consent-switch input:checked + span::after { transform: translateX(16px); }
.consent-switch input:disabled + span { background: var(--text-tertiary); opacity: .72; }
.consent-switch input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }

body.page { height: auto; min-height: 100%; overflow: auto; background: var(--canvas-surface); }
.legal-page { width: min(960px, calc(100% - 40px)); min-height: 100dvh; margin: 0 auto; padding: 24px 0 96px; }
.legal-page__nav { display: flex; min-height: 44px; align-items: center; gap: 8px; color: var(--text-secondary); font-size: 13px; }
.legal-page__nav a { color: var(--text-primary); font-weight: 600; text-decoration: none; }
.legal-page__nav strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.legal-document { overflow: hidden; margin-top: 18px; background: var(--surface-base); border: 1px solid var(--border-default); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); }
.legal-document__header { padding: clamp(24px, 5vw, 56px); border-bottom: 1px solid var(--border-default); }
.legal-document__header p { margin: 0 0 8px; color: var(--text-tertiary); font-size: 13px; }
.legal-document__header h1 { max-width: 760px; margin: 0; font: 600 clamp(32px, 6vw, 58px)/1.05 Inter, Arial, sans-serif; text-wrap: balance; }
.legal-document__header time { display: block; margin-top: 18px; color: var(--text-secondary); font-size: 12px; }
.legal-document__content { max-width: 760px; padding: clamp(24px, 5vw, 56px); color: var(--text-primary); font-size: 16px; line-height: 1.65; }
.legal-document__content > :first-child { margin-top: 0; }
.legal-document__content > :last-child { margin-bottom: 0; }
.legal-document__content h2 { margin: 2em 0 .65em; font-size: 28px; line-height: 1.2; text-wrap: balance; }
.legal-document__content h3 { margin: 1.6em 0 .55em; font-size: 20px; line-height: 1.3; }
.legal-document__content p,
.legal-document__content li { text-wrap: pretty; }
.legal-document__content a { color: var(--accent-text); text-underline-offset: 3px; }
.legal-document__content ul,
.legal-document__content ol { padding-left: 1.4em; }
.legal-document__empty { color: var(--text-tertiary); }
.legal-document__links { display: flex; padding: 20px clamp(24px, 5vw, 56px); flex-wrap: wrap; gap: 8px 18px; border-top: 1px solid var(--border-default); }
.legal-document__links a { color: var(--text-secondary); font-size: 13px; text-underline-offset: 3px; }
.legal-document__links a[aria-current="page"] { color: var(--text-primary); font-weight: 600; }
.legal-document__footer { padding: 16px clamp(24px, 5vw, 56px); color: var(--text-tertiary); background: var(--surface-sunken); border-top: 1px solid var(--border-default); font-size: 12px; }

@media (max-width: 820px) {
  .portfolio__feed-grid:has(.legal-dock.is-feed-footer) { padding-bottom: var(--feed-toolbar-clearance); }
  .legal-dock.is-feed-footer { margin-top: calc(-1 * var(--feed-card-gap)); }
}

@media (max-width: 700px) {
  .legal-dock { right: 12px; bottom: max(68px, calc(env(safe-area-inset-bottom) + 58px)); left: auto; max-width: calc(100vw - 24px); }
  .legal-dock.is-feed-footer { right: auto; bottom: auto; left: auto; width: 100%; max-width: none; justify-content: flex-start; padding-inline: 2px; }
  .legal-dock--mobile-icon { width: 44px; min-width: 44px; max-width: 44px; min-height: var(--mobile-control-height); height: var(--mobile-control-height); padding: 0; text-shadow: none; }
  .legal-dock--mobile-icon:not(.is-feed-footer) { bottom: var(--mobile-control-bottom); }
  .legal-dock--mobile-icon .legal-dock__copyright,
  .legal-dock--mobile-icon .legal-dock__separator,
  .legal-dock--mobile-icon .legal-dock__link { display: none; }
  .legal-dock--mobile-icon .legal-dock__manage {
    display: grid;
    width: 44px;
    height: 44px;
    padding: 0;
    place-items: center;
    color: var(--text-tertiary);
    border-radius: 50%;
    touch-action: manipulation;
  }
  .legal-dock--mobile-icon .legal-dock__manage:hover { color: var(--text-primary); text-decoration: none; }
  .legal-dock--mobile-icon .legal-dock__manage-label { display: none; }
  .legal-dock--mobile-icon .legal-dock__manage-icon {
    display: block;
    width: 20px;
    height: 20px;
    background: currentColor;
    -webkit-mask: url("../icons/legal/cookies.svg") center / contain no-repeat;
    mask: url("../icons/legal/cookies.svg") center / contain no-repeat;
  }
  .legal-dock--mobile-icon.is-feed-footer {
    width: 44px;
    max-width: 44px;
    min-height: 44px;
    margin-inline-start: auto;
    align-self: flex-end;
    justify-content: center;
    padding: 0;
  }
  .consent-card { right: 12px; bottom: max(12px, env(safe-area-inset-bottom)); left: 12px; width: auto; padding: 16px; }
  .legal-page { width: calc(100% - 24px); padding-top: 12px; }
  .legal-document { margin-top: 8px; }
  .legal-document__header h1 { font-size: 34px; }
  .legal-document__content { font-size: 15px; }
}

@media (prefers-reduced-motion: reduce) {
  .consent-switch > span:last-child,
  .consent-switch > span:last-child::after { transition: none; }
}
