/* THEME LAYER core: only what site.js + shared partials need, so every theme starts clean. Themes override freely. */
[hidden]{display:none!important}
.hidden{display:none!important}
[x-cloak]{display:none!important}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* site.js reveal hook: elements with [data-animate] start hidden only while JS runs (html.js), get .in-view when seen */
html.js [data-animate]{opacity:0;transform:translateY(18px);transition:opacity .7s cubic-bezier(.16,1,.3,1) var(--d,0s),transform .7s cubic-bezier(.16,1,.3,1) var(--d,0s)}
html.js [data-animate].in-view{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){html.js [data-animate]{opacity:1;transform:none;transition:none}}
/* consent bar (markup from inc/analytics.php mktConsentBanner) — neutral; themes restyle via --consent-* vars */
.consent-bar{position:fixed;z-index:80;left:.75rem;right:.75rem;bottom:calc(.75rem + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:.75rem;padding:.6rem .65rem .6rem .9rem;border-radius:14px;background:var(--consent-bg,#fff);color:var(--consent-fg,#333);border:1px solid var(--consent-border,rgba(0,0,0,.08));box-shadow:0 10px 30px rgba(0,0,0,.15);font:500 12.5px/1.35 system-ui,sans-serif;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .3s}
.consent-bar[hidden]{display:none!important}
.consent-bar.consent-tucked{transform:translateY(calc(100% + 1.5rem));opacity:0;pointer-events:none}
.consent-text{flex:1;min-width:0;margin:0}
.consent-text i{display:none}
.consent-actions{display:flex;gap:.4rem;flex-shrink:0}
.consent-btn{border:1px solid var(--consent-border,rgba(0,0,0,.12));background:transparent;color:inherit;border-radius:999px;padding:.45rem .9rem;font:600 12.5px system-ui,sans-serif;cursor:pointer}
.consent-btn.btn-iris{background:var(--consent-accent,#111);color:var(--consent-accent-fg,#fff);border-color:transparent}
@media (min-width:768px){.consent-bar{left:auto;right:1.25rem;bottom:1.25rem;max-width:380px;flex-wrap:wrap}.consent-text{flex-basis:100%}.consent-actions{margin-left:auto}}
/* lead form error line (site.js toggles .hidden on [data-lead-error]) */
[data-lead-error]{margin:.5rem 0 0;font-size:.85rem;font-weight:600;color:var(--form-error,#d33)}
