/* Observable cookie banner: bottom edge, 24/20px inset, 8px action gaps,
   40px round buttons, phone actions stacked; existing Aptornis colors. */
.cookie-banner[hidden] {display:none}
.cookie-banner {position:fixed;inset:auto 0 0;z-index:25;display:flex;flex-direction:column;gap:20px;padding:20px;background:rgba(247,249,251,.96);border-top:1px solid var(--border);color:var(--text);max-height:80dvh;overflow:auto;overscroll-behavior:contain}
.cookie-banner-copy {display:flex;flex-direction:column;gap:8px;max-width:840px;min-width:0}
.cookie-banner h2 {font-size:17px;line-height:28px;font-weight:400;margin:0}
.cookie-banner p {font-size:14px;line-height:23px;color:var(--steel);margin:0}
.cookie-banner a,.cookie-dialog-copy a {color:var(--steel);text-decoration:underline;text-underline-offset:2px}
.cookie-banner-actions {display:flex;flex-direction:column;gap:8px;flex:none}
.cookie-banner button,.cookie-dialog-actions button {min-height:40px;padding:0 20px;border-radius:var(--radius);background:#e9eef4;color:var(--navy);font-size:14px;line-height:20px;white-space:nowrap;text-align:center}
.cookie-banner button:hover,.cookie-dialog-actions button:hover {background:#dce5ef}
.cookie-banner button:focus-visible,.cookie-banner a:focus-visible,.cookie-preferences-dialog button:focus-visible,.cookie-preferences-dialog a:focus-visible {outline:2px solid var(--focus);outline-offset:3px}
.cookie-banner-open .shell {height:calc(var(--app-height,100dvh) - var(--cookie-banner-height,0px) - 33px)}
.public-open.cookie-banner-open #public-view {padding-bottom:calc(var(--cookie-banner-height,0px) + 16px)}
.cookie-preferences-dialog {width:min(560px,calc(100% - 32px));max-height:calc(var(--app-height,100dvh) - 32px);padding:24px;border:1px solid var(--border);border-radius:var(--radius);background:var(--canvas);color:var(--text);overflow:auto}
.cookie-preferences-dialog::backdrop {background:#0006}
.cookie-dialog-head {display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}
.cookie-dialog-head h2 {font-size:20px;line-height:28px;margin:0;font-weight:500}
.cookie-close {width:32px;min-height:32px;border-radius:var(--radius);font-size:24px;line-height:24px;background:transparent}
.cookie-dialog-copy {font-size:14px;line-height:22px;color:var(--steel)}
.cookie-dialog-copy p {margin:0}
.cookie-dialog-copy section {padding-top:16px;margin-top:16px;border-top:1px solid var(--border)}
.cookie-dialog-copy h3 {display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;font-size:14px;line-height:22px;font-weight:500;color:var(--navy);margin:0 0 8px}
.cookie-dialog-copy h3 span {font-size:12px;font-weight:400;color:var(--steel)}
.cookie-dialog-actions {display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:24px}
@media(min-width:768px) {.cookie-banner {flex-direction:row;align-items:center;justify-content:space-between;padding:24px}.cookie-banner-actions {flex-direction:row}.cookie-banner-copy {flex:1}}
@media(max-width:599px) {.cookie-banner-open .shell {height:calc(var(--app-height,100dvh) - var(--cookie-banner-height,0px) - var(--footer-height,0px))}.cookie-preferences-dialog {padding:20px}.cookie-dialog-actions {flex-direction:column}.cookie-banner {padding-bottom:max(20px,env(safe-area-inset-bottom,0px))}}
@media(prefers-reduced-motion:reduce) {.cookie-banner,.cookie-preferences-dialog {transition:none;animation:none}}

/* Reserve the measured complete guest footer above the cookie banner. */
@media(min-width:600px) {.cookie-banner-open:has(#prototype-footer .public-footer-complete) .shell {height:calc(var(--app-height,100dvh) - var(--cookie-banner-height,0px) - var(--footer-height,0px))}}
