/* DC Site consent banner and settings panel. Uses the theme's custom properties when present, with token fallbacks. */
.dcs-consent{position:fixed;left:12px;right:12px;bottom:12px;z-index:60;max-height:33vh;overflow:auto;background:var(--dc-ink,#0E0F12);color:var(--dc-paper,#F6F6F4);font-family:var(--font-body,'Poppins',system-ui,sans-serif);font-size:14px;line-height:1.5;box-shadow:var(--shadow-overlay,0 12px 40px rgba(14,15,18,.18))}
.dcs-consent[hidden],.dcs-panel[hidden]{display:none}
.dcs-consent__inner{max-width:1440px;margin:0 auto;padding:20px clamp(20px,4.4vw,72px);display:grid;gap:12px}
.dcs-consent__title{margin:0;font:500 12px/1.4 var(--font-body,'Poppins',sans-serif);letter-spacing:.14em;text-transform:uppercase;color:var(--dc-paper,#F6F6F4)}
.dcs-consent__text{margin:0;max-width:68ch;color:var(--dc-silver,#B9BAC0)}
.dcs-consent__text a{color:var(--dc-paper,#F6F6F4);text-decoration:underline;text-underline-offset:4px}
.dcs-consent__actions,.dcs-panel__actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.dcs-consent__btn{min-height:44px;padding:0 16px;border:1px solid var(--dc-paper,#F6F6F4);background:var(--dc-paper,#F6F6F4);color:var(--dc-ink,#0E0F12);font:500 14px/1 var(--font-body,'Poppins',sans-serif);border-radius:0;cursor:pointer}
.dcs-consent__btn:hover{background:#fff}
.dcs-consent :focus-visible,.dcs-panel :focus-visible{outline:2px solid var(--dc-signal-blue,#4F75FF);outline-offset:3px}
@media (min-width:760px){.dcs-consent{left:auto;right:16px;bottom:16px;max-width:600px;max-height:none}}
/* Decision S6 (David, QA cycle 1): at 1024px and wider the banner sits top right, just below the header, so it never covers the hero calls to action; 760 to 1023px keeps the bottom placement; phones keep the bottom third. */
@media (min-width:1024px){.dcs-consent{top:calc(var(--header-h,88px) + 8px);bottom:auto;max-height:calc(100vh - var(--header-h,88px) - 24px);overflow:auto}}
/* Accessibility re-test N1/N2: at 760px and wider the banner moves to the opposite edge while it would cover the focused element (consent.js clearOfFocus). */
@media (min-width:760px) and (max-width:1023px){.dcs-consent.is-flipped{top:calc(var(--header-h,88px) + 8px);bottom:auto}}
@media (min-width:1024px){.dcs-consent.is-flipped{top:auto;bottom:16px}}
/* Below 760px the banner already covers the mobile dock entirely, so the dock leaves the tab order while it shows; its Close button stays for the open menu's focus trap. */
@media (max-width:759px){html.dcs-banner-open:not(.dc-menu-open) .dc-dock{visibility:hidden}}
/* Mobile: the banner stays within the bottom third (checklist C1), so the text scrolls inside it while the three equal buttons stay side by side and in view. */
@media (max-width:759px){.dcs-consent__actions{position:sticky;bottom:0;padding:8px 0 6px;background:var(--dc-ink,#0E0F12)}.dcs-consent__actions .dcs-consent__btn{padding:4px 6px;line-height:1.2}}
/* Accessibility N3 (QA cycle 3): when the banner's text scrolls inside it, the focused Cookie policy link is scrolled clear of the sticky button row (58px) with room for its focus ring. */
@media (max-width:759px){.dcs-consent{scroll-padding-bottom:64px}}
.dcs-panel{position:fixed;inset:0;z-index:70;background:rgba(14,15,18,.6);display:flex;align-items:flex-end;justify-content:center;font-family:var(--font-body,'Poppins',system-ui,sans-serif);font-size:14px;line-height:1.5}
.dcs-panel__inner{width:min(640px,100%);max-height:90vh;overflow:auto;background:var(--dc-ink,#0E0F12);color:var(--dc-silver,#B9BAC0);padding:24px clamp(20px,4vw,32px);display:grid;gap:16px;box-shadow:var(--shadow-overlay,0 12px 40px rgba(14,15,18,.18))}
@media (min-width:760px){.dcs-panel{align-items:center}}
.dcs-panel__head{display:flex;justify-content:space-between;align-items:center;gap:16px}
.dcs-panel__title{margin:0;font:800 22px/1.15 var(--font-display,'Archivo',sans-serif);letter-spacing:-.02em;color:var(--dc-paper,#F6F6F4)}
.dcs-panel__title:focus{outline:none}
.dcs-panel__close{width:44px;height:44px;border:1px solid var(--dc-ink-3,#2A2B31);background:transparent;color:var(--dc-paper,#F6F6F4);font-size:22px;line-height:1;cursor:pointer}
.dcs-panel__intro{margin:0}
.dcs-panel__group{display:grid;gap:10px;padding-top:12px;border-top:1px solid var(--dc-ink-3,#2A2B31)}
.dcs-panel__group-h{margin:0;font:500 12px/1.4 var(--font-body,'Poppins',sans-serif);letter-spacing:.14em;text-transform:uppercase;color:var(--dc-paper,#F6F6F4)}
.dcs-panel__row{display:flex;gap:14px;align-items:flex-start}
.dcs-panel__row p{margin:0}
.dcs-panel__row strong{color:var(--dc-paper,#F6F6F4);font-weight:600;margin-right:4px}
.dcs-switch{position:relative;flex:0 0 auto;width:44px;height:26px;margin-top:1px}
.dcs-switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.dcs-switch__ui{display:block;width:44px;height:26px;border:1px solid var(--dc-silver,#B9BAC0);background:transparent;position:relative;transition:background .16s}
.dcs-switch__ui::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;background:var(--dc-silver,#B9BAC0);transition:transform .16s}
.dcs-switch input:checked+.dcs-switch__ui{background:var(--dc-signal-blue,#4F75FF);border-color:var(--dc-signal-blue,#4F75FF)}
.dcs-switch input:checked+.dcs-switch__ui::after{transform:translateX(18px);background:#fff}
.dcs-switch input:focus-visible+.dcs-switch__ui{outline:2px solid var(--dc-signal-blue,#4F75FF);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.dcs-switch__ui,.dcs-switch__ui::after{transition:none}}
