/*
 * Portal footer (pkg/cmsportal/theme portal_shell.tmpl cmsportal_footer_content
 * and its legal links / cookie-settings trigger). Every portal page loads it
 * after portal.css; product shells outside the portal render the same footer
 * through theme.FooterHTML and link it via theme.ChromeAssets, without the
 * rest of portal.css. The reset below is the portal.css base reset scoped to
 * the footer and consent dialog with zero specificity: a no-op on portal
 * pages (same values as the global reset), the missing base on other shells.
 */
:where(.portal-footer, .portal-consent), :where(.portal-footer, .portal-consent) *,
:where(.portal-footer, .portal-consent) *::before, :where(.portal-footer, .portal-consent) *::after {
  box-sizing: border-box; border-style: solid; border-width: 0; border-color: var(--portal-border);
}
:where(.portal-footer) { font-family: var(--portal-font); line-height: 1.5; color: var(--portal-text); }

/* Footer: 3-column (brand / legal / mission), then centered copyright rule */
.portal-footer { background: var(--portal-footer-bg); border-color: var(--portal-border); border-top-width: 1px; padding: 3rem 1.5rem; }
@media (width>=48rem) {
  .portal-footer { padding-block: 6rem; }
}
.portal-footer-inner { max-width: var(--portal-max-width); margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2.5rem; }
.portal-footer-heading { font-size: .75rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--portal-accent); margin-bottom: 1rem; }
.portal-footer-tagline { font-size: .625rem; letter-spacing: .2em; text-transform: uppercase; color: var(--portal-subtle); margin: 1rem 0 0; max-width: 18rem; line-height: 1.625; }
.portal-footer-links { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; font-size: .875rem; font-weight: 500; }
.portal-footer-links a, .portal-footer-link-button { display: flex; align-items: center; gap: .75rem; color: var(--portal-muted); }
.portal-footer-link-button { font: inherit; border-width: 0; padding: 0; background: none; cursor: pointer; }
.portal-footer-links a:hover, .portal-footer-link-button:hover { color: var(--portal-text); }
.portal-footer-mission p { margin: 0; color: var(--portal-muted); font-size: .875rem; line-height: 1.625; }
/* Footer credit row (legacy footer.templ, after the mission paragraph):
   "flex items-center gap-2 text-[10px] font-medium uppercase tracking-widest
   text-text-low" inside the mission column's space-y-6, with a 12px red
   heart (h-3 w-3, fill/stroke red literal on both hosts). text-text-low is
   a no-op on prod, so the words inherit the footer colour. */
.portal-footer-credit { display: flex; align-items: center; gap: .5rem; margin-top: 1.5rem; font-size: 10px; font-weight: 500; text-transform: uppercase; letter-spacing: .1em; }
.portal-footer-credit svg { width: .75rem; height: .75rem; flex-shrink: 0; }
.portal-footer-copyright { max-width: var(--portal-max-width); margin: 3rem auto 0; padding-top: 3rem; border-color: var(--portal-border); border-top-width: 1px; text-align: center; font-size: .625rem; letter-spacing: .1em; text-transform: uppercase; color: var(--portal-subtle); }
/* Blanket AI notice (ThemeData.ai_notice, AI Act Art. 50): body-size text in
   the footer's main text colour, never the small subtle copyright style. */
.portal-footer-ai-notice { max-width: var(--portal-max-width); margin: 3rem auto 0; text-align: center; font-size: .9375rem; line-height: 1.5; color: var(--portal-text); }
.portal-footer-ai-notice a { color: inherit; text-decoration: underline; text-underline-offset: .2em; }
.portal-footer-ai-notice a:hover { color: var(--portal-accent); }
.portal-footer-report { margin: .75rem auto 0; text-align: center; font-size: .875rem; }
.portal-footer-report a { display: inline-flex; align-items: center; min-height: 44px; color: var(--portal-muted); text-decoration: underline; text-underline-offset: .2em; }
.portal-footer-report a:hover { color: var(--portal-text); }
@media (max-width: 767px) {
  .portal-footer-inner { grid-template-columns: 1fr; gap: 2rem; }
}

/* Brand wordmark (header and footer; moved from portal.css so product shells
   that link only the chrome draw the footer brand in the store colours). */
.portal-brand { display: inline-flex; align-items: center; font-weight: 700; font-size: 1.25rem; line-height: calc(1.75 / 1.25); letter-spacing: -.05em; white-space: normal; color: var(--portal-text); }
.portal-brand:hover { color: var(--portal-text); }
@media (width>=48rem) {
  .portal-brand { font-size: 1.5rem; line-height: calc(2 / 1.5); }
}
.portal-brand-accent { color: var(--portal-accent); white-space: pre; }
.portal-brand-logo { height: 2rem; width: auto; }
/* Stacked wordmark (two-line brand, e.g. "HASIČSKÝ" / "ŠPORT"): Wordmark.Stacked
   (pkg/cmsportal/site.go) reuses Text as line 1 and Accent as line 2. Line 1
   takes the theme text colour like the inline wordmark, so it stays readable on
   a light host (zasah.online) as well as a dark one (hasicskysport.sk). */
.portal-brand-stack { display: inline-flex; flex-direction: column; align-items: flex-start; text-transform: uppercase; line-height: .82; }
.portal-brand-stack-line1 { font-size: .72em; font-weight: 700; letter-spacing: .22em; color: var(--portal-text); }
.portal-brand-stack-line2 { margin-top: .125rem; font-size: .58em; font-weight: 700; letter-spacing: .32em; color: var(--portal-accent); }
