/* V2 content offsets remain independent from the V3 section height. */
.page-canvas:has(.site-footer[data-v3-footer-height]) {
  /* Show real footer overflow without creating a hidden vertical scroller. */
  overflow-x:clip;
  overflow-y:visible;
}
.page-canvas:has(.site-footer[data-v3-footer-height]) .page-scene-background {
  /* The tall background artwork still ends at the page's layout boundary. */
  max-height:var(--v3-page-clip-height);
  overflow:clip;
}
.page-canvas:has(.site-footer[data-v3-footer-height]) .hero-artboard::before {
  max-height:var(--v3-page-clip-height);
}
.site-footer[data-v3-footer-height] {
  box-sizing:border-box;
  /* The explicit height owns the outer spacing, including heights below the
     old bottom padding. Children keep their own flow, offsets and sizes. */
  padding-block:0;
  overflow:visible;
}
.site-footer .footer-content-group {
  position:relative;
  transform:translateY(var(--footer-content-group-offset-y,0px));
  will-change:transform;
}
/* This is a real flow slot: reducing it moves the grid and footer bottom up. */
.site-footer .footer-wordmark {
  block-size:var(--footer-content-slot-height,235px);
  box-sizing:border-box;
  padding:var(--footer-top-padding,16px) var(--footer-side-padding,32px) 0;
  align-items:flex-start;
  overflow:visible;
}
.site-footer :is(.footer-grid,.footer-bottom) { width:calc(100% - 2 * var(--footer-side-padding,32px)); max-width:none; margin-inline:auto; }
.site-footer .footer-grid { padding-top:var(--footer-content-gap,20px); padding-bottom:var(--footer-bottom-padding,16px); }
.site-footer .footer-brand-slot { width:var(--footer-logo-size,64px); max-width:100%; }
.site-footer .footer-brand h2 { font-size:calc(clamp(1.45rem,1.75vw,2rem) * var(--footer-text-scale,1)); }
.site-footer .footer-intro { font-size:calc(.78rem * var(--footer-text-scale,1)); }
.site-footer .footer-kicker { font-size:calc(.58rem * var(--footer-text-scale,1)); }
.site-footer .footer-label { font-size:calc(.62rem * var(--footer-text-scale,1)); }
.site-footer .footer-links a { font-size:calc(.82rem * var(--footer-text-scale,1)); }
.site-footer .footer-bottom { font-size:calc(.68rem * var(--footer-text-scale,1)); }
.site-footer .footer-top-link { font-size:calc(.67rem * var(--footer-text-scale,1)); }
[data-cim-layout-mode="mobile"] .site-footer .footer-brand h2 { font-size:calc(clamp(1.7rem,7vw,2.2rem) * var(--footer-text-scale,1)); }
[data-cim-layout-mode="mobile"] .site-footer :is(.footer-intro,.footer-links a) { font-size:calc(1rem * var(--footer-text-scale,1)); }
[data-cim-layout-mode="mobile"] .site-footer :is(.footer-label,.footer-kicker) { font-size:calc(.875rem * var(--footer-text-scale,1)); }
[data-cim-layout-mode="mobile"] .site-footer :is(.footer-bottom,.footer-top-link) { font-size:calc(.8125rem * var(--footer-text-scale,1)); }
/* A wide side margin still leaves a usable reading area on a phone. */
[data-cim-layout-mode="mobile"] .site-footer :is(.footer-grid,.footer-bottom) { width:calc(100% - 2 * min(var(--footer-side-padding,16px),15vw)); }
[data-cim-layout-mode="mobile"] .site-footer .footer-wordmark { padding-inline:min(var(--footer-side-padding,16px),15vw); }
.builder-footer-shortcut { order:-2; margin:8px 0; }
.builder-footer-edit { position:absolute; right:12px; top:8px; z-index:5; }
.builder-mode .site-footer { outline:1px dashed #5cd2ff55; outline-offset:-1px; }

.site-footer .footer-bottom { padding-right:56px; } /* Room for the pointer menu button. */

/* Keeps the +300 px visual title position inside the existing footer paint area. */
.site-footer { padding-bottom:12px; }

/* Constrain sideways title adjustment to the free space at the current width. */
.site-footer { --footer-effective-side:var(--footer-side-padding,32px); --footer-inner-width:max(1px,calc(var(--content-viewport-width,100vw) - 2 * var(--footer-effective-side))); }
[data-cim-layout-mode="mobile"] .site-footer { --footer-effective-side:min(var(--footer-side-padding,16px),15vw); }
.site-footer .footer-wordmark .hero-title-art {
  /* The saved local offset stays independent from footer-height compression. */
  flex:0 0 auto;
  margin:0;
  transform:translate(
    clamp(calc((min(var(--hero-title-art-width),var(--footer-inner-width)) - var(--footer-inner-width)) / 2),var(--hero-title-art-x),calc((var(--footer-inner-width) - min(var(--hero-title-art-width),var(--footer-inner-width))) / 2)),
    calc(
      var(--footer-title-vertical-offset,0px)
    )
  );
}

.site-footer { --footer-content-slot-baseline:235px; }
[data-cim-layout-mode="mobile"] .site-footer { --footer-content-slot-baseline:129px; }

/* Reserve a viewport-sized footer lane for the floating Carisma launcher.
   The pointer control keeps its own slot beside the footer links above it. */
.site-footer:not([data-v3-footer-height]) {
  padding-bottom:90px;
}
.site-footer:not([data-v3-footer-height]) .cursor-garage-trigger {
  bottom:90px;
}
[data-cim-layout-mode="desktop"] .site-footer:not([data-v3-footer-height]) {
  padding-bottom:max(12px,calc(90px / var(--mq-initial-page-scale,1)));
}
[data-cim-layout-mode="desktop"] .site-footer:not([data-v3-footer-height]) .cursor-garage-trigger {
  bottom:max(9px,calc(90px / var(--mq-initial-page-scale,1)));
}
