.legal-header { padding-block: 32px 24px; }
.legal-back { display: inline-flex; min-height: 44px; align-items: center; margin-bottom: 16px; color: var(--ui-muted); }
.legal-heading-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; }
.legal-header h1 { margin: 0 0 12px; font-size: clamp(28px, 3vw, 36px); line-height: 1.25; }
.legal-header p { max-width: 760px; margin-block: 8px; color: var(--ui-muted); }
.legal-header .eyebrow { color: var(--ui-accent); }
.legal-print { flex-shrink: 0; }
.legal-updated { font-size: 13px; }
.legal-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 24px; align-items: start; padding-bottom: 48px; }
.legal-index { position: sticky; top: 96px; background: var(--ui-surface); border: 1px solid var(--ui-border); border-radius: 8px; padding: 20px; }
.legal-index h2 { margin: 0 0 12px; font-size: 16px; }
.legal-index nav { display: flex; flex-direction: column; }
.legal-index nav a { padding: 10px 0; color: var(--ui-muted); line-height: 1.4; }
.legal-index nav a:hover { color: var(--ui-accent); }
.legal-related { display: block; margin-top: 12px; padding-top: 16px; border-top: 1px solid var(--ui-border); }
.legal-content { min-width: 0; padding: 32px; border: 1px solid var(--ui-border); border-radius: 8px; background: var(--ui-surface); overflow-wrap: anywhere; }
.legal-content section { scroll-margin-top: 104px; }
.legal-content section + section { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--ui-border); }
.legal-content h2 { margin: 0 0 12px; font-size: 20px; line-height: 1.4; }
.legal-content p { margin: 0 0 12px; line-height: 1.8; }
.legal-content section > :last-child { margin-bottom: 0; }
.legal-content a, .privacy-help a, .privacy-note a, .privacy-banner a { text-decoration: underline; text-underline-offset: 3px; }
.legal-contact { display: flex; flex-wrap: wrap; gap: 12px 24px; font-style: normal; }
.legal-back-top { display: inline-flex; min-height: 44px; align-items: center; margin-top: 24px; }
.privacy-data-list { margin: 20px 0; }
.privacy-data-list > div { padding-block: 16px; border-bottom: 1px solid var(--ui-border); }
.privacy-data-list dt { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; font-weight: 600; }
.privacy-data-list dd { margin: 8px 0 0; line-height: 1.7; color: var(--ui-muted); }
.privacy-status { display: inline-block; white-space: nowrap; font-size: 12px; font-weight: 600; color: var(--ui-success); }
.privacy-status-optional { color: var(--ui-muted); }
.privacy-settings { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(240px, .7fr); gap: 32px; align-items: start; padding-bottom: 56px; }
.privacy-settings-panel { padding: 28px; border: 1px solid var(--ui-border); border-radius: 8px; background: var(--ui-surface); }
.privacy-settings h2, .privacy-dialog h2 { margin: 0 0 12px; font-size: 20px; line-height: 1.4; }
.privacy-current { color: var(--ui-muted); margin: 0 0 24px; }
.privacy-option { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding-block: 20px; border-top: 1px solid var(--ui-border); }
.privacy-option h3, .privacy-option label { display: block; font-size: 16px; font-weight: 600; margin: 0 0 8px; }
.privacy-option label { cursor: pointer; }
.privacy-option p { margin: 0; color: var(--ui-muted); line-height: 1.7; }
.privacy-option > .privacy-status { margin-top: 3px; }
.privacy-option input[type="checkbox"] { width: 24px; height: 24px; flex: 0 0 24px; margin-top: 3px; accent-color: var(--ui-accent); cursor: pointer; }
.privacy-note { color: var(--ui-muted); padding-block: 12px; line-height: 1.6; }
.privacy-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 12px; }
.privacy-feedback { color: var(--ui-success); margin-bottom: 0; }
.privacy-feedback:empty { display: none; }
.privacy-help { padding-block: 24px; }
.privacy-help p { color: var(--ui-muted); line-height: 1.7; }
.privacy-banner { position: fixed; bottom: max(16px, env(safe-area-inset-bottom)); left: 24px; right: 24px; z-index: 100; display: flex; align-items: center; gap: 24px; max-width: 1184px; margin-inline: auto; padding: 20px 24px; background: var(--ui-surface); color: var(--ui-text); border: 1px solid var(--ui-border); border-radius: 8px; box-shadow: 0 6px 32px rgb(0 0 0 / 14%); }
.privacy-banner-copy { flex: 1; min-width: 0; }
.privacy-banner h2 { font-size: 16px; margin: 0 0 6px; }
.privacy-banner p { margin: 0; font-size: 13px; color: var(--ui-muted); line-height: 1.6; }
.privacy-banner-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.privacy-banner-actions .button { white-space: nowrap; }
.privacy-dialog { width: min(580px, calc(100% - 32px)); max-height: calc(100dvh - 32px); padding: 0; overflow: auto; color: var(--ui-text); background: var(--ui-surface); border: 1px solid var(--ui-border); border-radius: 8px; box-shadow: 0 16px 64px rgb(0 0 0 / 25%); }
.privacy-dialog::backdrop { background: rgb(12 19 29 / 60%); }
.privacy-dialog[open] { display: flex; flex-direction: column; }
.privacy-dialog-header { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 24px; border-bottom: 1px solid var(--ui-border); }
.privacy-dialog-header h2 { margin: 0; }
.privacy-close { display: grid; place-items: center; width: 44px; height: 44px; flex: 0 0 44px; color: var(--ui-muted); background: var(--ui-surface); border: 1px solid var(--ui-border); border-radius: 6px; font-size: 28px; cursor: pointer; }
.privacy-close:hover { background: var(--ui-soft); color: var(--ui-text); }
.privacy-dialog-body { padding: 8px 24px 24px; overflow-y: auto; overscroll-behavior: contain; }
.privacy-dialog-body > p { color: var(--ui-muted); }
.privacy-dialog-footer { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 12px; padding: 16px 24px; border-top: 1px solid var(--ui-border); }
.privacy-dialog-header, .privacy-dialog-footer { flex-shrink: 0; }
.privacy-global-feedback { position: fixed; z-index: 110; bottom: max(20px, env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); width: max-content; max-width: min(620px, calc(100% - 32px)); margin: 0; padding: 16px 20px; color: var(--ui-text); background: var(--ui-surface); border: 1px solid var(--ui-border); border-left: 3px solid var(--ui-success); border-radius: 8px; box-shadow: 0 4px 24px rgb(0 0 0 / 15%); }
.privacy-banner[hidden], .privacy-global-feedback[hidden], .legal-print[hidden] { display: none; }
body:has(.privacy-banner:not([hidden])) { padding-bottom: 156px; }
html:has(.privacy-dialog[open]) { overflow: hidden; }
@media (max-width: 1023px) {
    .privacy-banner { align-items: flex-start; flex-direction: column; gap: 16px; }
    body:has(.privacy-banner:not([hidden])) { padding-bottom: 200px; }
}
@media (max-width: 767px) {
    .legal-header { padding-block: 24px 16px; }
    .legal-heading-row { flex-direction: column; gap: 12px; }
    .legal-layout { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    .legal-index { position: static; padding: 20px; }
    .legal-index nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
    .legal-index nav a { min-height: 44px; }
    .legal-content { padding: 24px 20px; }
    .privacy-settings { grid-template-columns: minmax(0, 1fr); gap: 8px; }
    .privacy-settings-panel { padding: 20px; }
    .privacy-help { padding-block: 16px; }
    .privacy-banner { left: 12px; right: 12px; bottom: max(12px, env(safe-area-inset-bottom)); padding: 16px; }
    .privacy-banner-actions { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
    .privacy-banner-actions .button:first-child { grid-column: 1 / -1; }
    .privacy-banner-actions .button { padding-inline: 12px; }
    body:has(.privacy-banner:not([hidden])) { padding-bottom: 310px; }
}
@media (max-width: 399px) {
    .privacy-option { gap: 12px; }
    .privacy-option:has(> .privacy-status) { flex-direction: column; }
    .privacy-dialog-header, .privacy-dialog-footer { padding-inline: 16px; }
    .privacy-dialog-body { padding-inline: 16px; }
    .privacy-dialog-footer .button { flex: 1 1 100%; }
    .privacy-actions .button { width: 100%; }
    .legal-index nav { grid-template-columns: minmax(0, 1fr); }
}
@media print {
    header, footer, .announcement, .site-header, .site-footer, .legal-index, .legal-print, .legal-back, .legal-back-top,
    .privacy-banner, .privacy-dialog, .privacy-global-feedback, .skip-link { display: none !important; }
    :root, html[data-bs-theme], html.dark-mode { color-scheme: light; --ui-bg: #fff; --ui-surface: #fff; --ui-soft: #f6f6f6; --ui-text: #111; --ui-muted: #333; --ui-accent: #111; --ui-success: #111; --ui-border: #ccc; }
    body { padding: 0 !important; background: white !important; color: #111 !important; }
    .container { max-width: none !important; width: 100% !important; }
    .legal-header { padding-top: 0; }
    .legal-layout { display: block; }
    .legal-content { padding: 0; border: 0; }
    .legal-content h2 { break-after: avoid; }
    .legal-content a { color: #111; }
}
