/* Construct self-hosted cookie preferences R29. Scoped to avoid theme conflicts. */
.km-consent-root { --km-red:#bd1421; --km-navy:#232341; --km-muted:#596071; --km-border:#e3e6ed; font: 15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif; color:#25283a; }
.km-consent-root *, .km-consent-root *::before, .km-consent-root *::after { box-sizing:border-box; }
.km-consent-root [hidden] { display:none !important; }
.km-consent-root button { font-family:inherit; cursor:pointer; }
.km-consent-root button:focus-visible, .km-consent-root a:focus-visible, .km-consent-root input:focus-visible + span { outline:3px solid #2464b9; outline-offset:3px; }
.km-consent-revisit { position:fixed; bottom:18px; left:18px; z-index:2147482001; width:48px; height:48px; background:var(--km-red); border:2px solid #fff; border-radius:999px; display:flex; justify-content:center; align-items:center; padding:0; color:#fff; box-shadow:0 3px 14px rgba(0,0,0,.2); transition:transform .15s, box-shadow .15s; }
.km-consent-revisit:hover { transform:scale(1.06); box-shadow:0 6px 19px rgba(0,0,0,.25); }
.km-consent-banner { position:fixed; left:50%; transform:translateX(-50%); bottom:17px; z-index:2147482002; width:min(920px,calc(100vw - 34px)); background:#fff; border:1px solid var(--km-border); border-radius:10px; box-shadow:0 12px 42px rgba(24,26,38,.21); display:flex; align-items:center; gap:24px; padding:22px 26px; }
.km-consent-banner-copy { flex:1; min-width:0; }
.km-consent-banner h2 { font-family:inherit; color:var(--km-navy); font-size:19px; line-height:1.25; font-weight:700; padding:0; margin:0 0 5px; }
.km-consent-banner p { font-size:13px; line-height:1.65; color:#454b56; padding:0; margin:0 0 7px; }
.km-consent-root a { color:#ad111e; text-decoration:underline; font-size:13px; }
.km-consent-banner-actions { display:flex; gap:8px; flex:0 0 250px; flex-wrap:wrap; }
.km-consent-btn { text-align:center; min-height:43px; line-height:1.3; font-family:inherit; font-size:13px; font-weight:600; padding:10px 13px; border-radius:4px; transition:background .16s, border-color .16s; box-shadow:none; }
.km-consent-btn-outline { border:1px solid var(--km-red); background:#fff; color:var(--km-red); }
.km-consent-btn-outline:hover { background:#fff4f5; color:#a8111b; }
.km-consent-btn-neutral { border:1px solid var(--km-navy); background:var(--km-navy); color:#fff; }
.km-consent-btn-neutral:hover { background:#3c3c64; color:#fff; }
.km-consent-banner-actions .km-consent-btn { flex:1 1 115px; }
.km-consent-banner-actions .km-consent-btn:last-child { flex:1 1 100%; }
.km-consent-overlay { position:fixed; inset:0; z-index:2147482005; display:flex; align-items:center; justify-content:center; padding:16px; }
.km-consent-backdrop { position:absolute; inset:0; background:rgba(15,18,32,.58); }
.km-consent-dialog { position:relative; display:flex; flex-direction:column; width:min(830px,100%); max-height:min(92vh,850px); background:#fff; color:#262934; border-radius:10px; box-shadow:0 25px 75px rgba(0,0,0,.22); overflow:hidden; }
.km-consent-dialog-head { display:flex; align-items:center; justify-content:space-between; padding:20px 26px; border-bottom:1px solid var(--km-border); flex-shrink:0; }
.km-consent-dialog h2 { font-family:inherit; color:var(--km-navy); font-size:21px; font-weight:700; line-height:1.3; margin:0; padding:0; }
.km-consent-close { width:32px; height:32px; background:transparent; border:0; font-size:27px; color:#676c79; padding:0; line-height:1; }
.km-consent-close:hover { color:#111; }
.km-consent-dialog-scroll { overflow-y:auto; padding:21px 26px 12px; flex:1 1 auto; }
.km-consent-intro { margin:0 0 6px; color:#444957; font-size:14px; line-height:1.75; }
.km-consent-privacy-link { margin:0 0 12px; }
.km-consent-category { border-top:1px solid var(--km-border); padding:17px 0 15px; }
.km-consent-category-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.km-consent-category strong { font-size:15px; color:var(--km-navy); font-weight:700; }
.km-consent-category p { color:#565c68; font-size:13px; line-height:1.65; margin:8px 65px 0 0; padding:0; }
.km-consent-always { white-space:nowrap; color:#16753b; font-size:12px; font-weight:700; }
.km-consent-switch { display:block; position:relative; width:44px; min-width:44px; height:25px; margin:0; }
.km-consent-switch input { position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; }
.km-consent-switch span { display:block; width:44px; height:25px; background:#a4aabb; border-radius:100px; position:relative; transition:background .15s; }
.km-consent-switch span::after { content:""; position:absolute; width:19px; height:19px; left:3px; top:3px; border-radius:50%; background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.2); transition:transform .15s; }
.km-consent-switch input:checked + span { background:var(--km-red); }
.km-consent-switch input:checked + span::after { transform:translateX(19px); }
.km-consent-switch input:disabled + span { opacity:.4; cursor:not-allowed; }
.km-consent-dialog-actions { display:flex; gap:9px; padding:17px 26px 22px; border-top:1px solid var(--km-border); flex-shrink:0; }
.km-consent-dialog-actions .km-consent-btn { flex:1; }
body.km-consent-dialog-open { overflow:hidden !important; }
/* Apply to a link in the old footer while preserving its typography. */
.construct-consent-footer-link { border:0; padding:0; margin:0; background:none; color:inherit; font:inherit; font-size:inherit; line-height:inherit; cursor:pointer; }
.construct-consent-footer-link:hover { color:#fff; text-decoration:underline; }
/* Functional Google Maps embed stays unloaded until an explicit choice. */
.km-consent-embed { position:relative; width:100%; min-height:420px; line-height:normal; }
.km-consent-embed iframe { display:block; width:100%; height:500px; border:0; }
.km-consent-embed [hidden] { display:none !important; }
.km-consent-map-placeholder { width:100%; min-height:420px; display:flex; flex-direction:column; gap:13px; justify-content:center; align-items:center; background:#f2f4f7; color:var(--km-navy); padding:32px 20px; text-align:center; }
.km-consent-map-placeholder p { font-size:16px; line-height:1.5; max-width:520px; margin:0; }
.km-consent-map-placeholder .km-consent-btn { font-size:14px; padding:13px 25px; }
@media (max-width:780px) {
 .km-consent-banner { bottom:12px; width:calc(100vw - 24px); flex-direction:column; gap:13px; align-items:stretch; padding:17px 18px; }
 .km-consent-banner-actions { flex:0 0 auto; }
 .km-consent-dialog-head { padding:17px 17px; }
 .km-consent-dialog-scroll { padding:16px 17px 8px; }
 .km-consent-dialog-actions { padding:13px 17px 18px; flex-wrap:wrap; }
 .km-consent-dialog-actions .km-consent-btn { flex:1 1 135px; }
 .km-consent-category p { margin-right:0; }
 .km-consent-revisit { left:12px; bottom:12px; width:45px; height:45px; }
 .km-consent-embed iframe { height:380px; }
}
@media (max-width:400px) { .km-consent-btn { font-size:12px; padding:9px; } .km-consent-dialog { max-height:96vh; } }
/* The visually styled track must not intercept clicks on its real checkbox. */
.km-consent-switch span { pointer-events:none; }
.km-consent-embed, .km-consent-embed * { box-sizing:border-box; }
.footer-wrapper .construct-consent-footer-link { color:#d8d8e6; }
.footer-wrapper .construct-consent-footer-link:hover { color:#fff; }
