/* v9 delta (TASK E, brief 2026-09-30c section 29-32, on top of the approved v8 centred composition; backup = footer-v7_v3.css):
   (1) identity mark = the DESKTOP 3D object (assets/logo3d/gmax-logo-dark.glb, the GLB behind the desktop footer poster) rendered in
       Blender Cycles (tools/logo3d/v4/render_glb.py, camera FROM-SOURCE 0deg 86deg / fov 30) -> assets/logo/gmax-3d-footer-v4@2x/@3x.webp,
       flattened on exact #000, STILL ONLY. Glyph width 36.4vw = 142px at 390 = 40% of the 358.8px content column; its line box ~25px =
       Cuberto's footer nav line box (2rem x 120% = 24.96px, MEASURED research/phone-v9/footer-cub-390-v9.json). Was 78vw (304px).
   (2) pills size to their widest label (Cuberto CtaButton = intrinsic width, padding 1.4rem/2rem MEASURED) instead of the old mark width.
   (3) legal on ONE line like Cuberto's bgrid (link + copy, copy .5 opacity, 2.4rem apart MEASURED) so the footer ends on one row.
   Until index.html carries the <img> of the v4 still (see integration notes), the still is painted as the link background and the
   v3 video / v3 still / model-viewer are hidden on phone. */
/* Phone footer v8 (TASK G, 2026-09-30b brief section 21): CENTRED composition on one axis, Cuberto discipline.
   Re-measured Cuberto 390 dpr3 (research/phone-v8/footer-cub-390.json + .png): Cuberto's phone footer is LEFT aligned on a 1.5rem
   (4vw) gutter; what reads "centred and deliberate" is its outro (centred) and the full-width symmetric socials row. We keep its
   measured units (gutter 4vw, block rhythm 6rem = 16vw, pill 20.8px/1 padding 14.56/20.8, nav 2rem/120% padding 1rem 0,
   legal 1.4rem) and put every block on the centre axis per the owner call.
   Order: 3D GMAX identity anchor, contact pills (same column width as the mark's glyphs), nav 3x2, legal.
   CSS only, reorders the EXISTING markup via display:contents. <=940px only; desktop untouched. Load AFTER assets/phone.css. */
@media (max-width:940px){
  html body footer{--flogo-g:36.4vw;--fwm-w:calc(var(--flogo-g) / .9091);--flogo-gap:calc(5.3333vw - var(--fwm-w) * .0318);   /* v9 round 2: glyph-to-pill = 2rem, Cuberto's intra-group gap (location__action margin 2rem MEASURED) */
               /* v9: glyph 36.4vw; the still carries a 2.84% pad each side (post_glb.py) */
    background:#000!important;padding:16vw 0 16vw!important;text-align:center}
  html body footer .wrap{display:flex!important;flex-direction:column!important;align-items:center!important;
    padding-left:4vw!important;padding-right:4vw!important}
  html body footer .fcols, html body footer .fbrand, html body footer .fbar{display:contents!important}
  html body footer .fsocial, html body footer .fmeta, html body footer .fmotto, html body footer .fphone, html body footer .fmail{display:none!important}

  /* 1. identity anchor, centred (v8 was the 78vw v3 loop; v9 = the desktop GLB still at 36.4vw glyph, overrides below) */
  html body footer .fwm{order:1;display:block!important;width:var(--fwm-w)!important;margin:0 auto!important;align-self:center!important}
  html body footer .fwm a{display:block!important;width:100%!important}
  html body footer .fwm{margin:calc(var(--fwm-w) * -.0195) auto 0!important}          /* pull the still's own top pad (2.84% of its width, same px on every side) so the GLYPH sits at the 6rem top padding */
  /* v5 (2026-10-02): the footer mark is a crisp 7 s yaw loop of the desktop object (880x180, on #000); poster behind it, RGBA still for reduced motion */
  html body footer .fwm a{aspect-ratio:880/180;background:#000 url(../../logo/gmax-3d-footer-v5-poster.webp?v=2) center/100% 100% no-repeat}
  html body footer .fwm a .fwm-ph, html body footer .fwm model-viewer, html body footer .fwm a .fwm-v4{display:none!important}
  html body footer .fwm a .fwm-loop{display:block!important;width:100%!important;height:auto!important;aspect-ratio:880/180!important;margin:0!important;background:#000}
  html body footer .fwm a .fwm-v5-still{display:none!important}

  /* 2. contact actions hang directly off the mark: 3rem (8vw) below it, both pills the width of the glyph span, 1rem apart */
  html body footer .fctas{order:2;display:grid!important;grid-template-columns:max-content!important;justify-content:center!important;
    gap:2.6667vw!important;margin:var(--flogo-gap) auto 0!important;width:auto!important;align-self:center!important}
  html body footer .fcta{display:flex!important;justify-content:center!important;width:100%!important}
  html body footer .fcta-t{padding:.16em 0!important;margin:-.16em 0!important}          /* keep descenders inside the roll mask */

  /* 3. nav: 3 x 2 centred grid, Cuberto 2rem/120% w400, padding 1rem 0; column gap 4vw so the block spans ~ the pill column */
  html body footer .fnav{order:3;display:grid!important;grid-template-columns:repeat(3,auto)!important;justify-content:center!important;
    justify-items:center!important;column-gap:4vw!important;row-gap:0!important;width:100%!important;margin:16vw 0 0!important}
  /* v9 correction round 1 (footer-sbs-r0.png): repeat(3,auto) put the MIDDLE column at cx 177.7 at 390 (17px left of the 195 axis,
     MEASURED footer-ours-cur.json) because the three auto columns differ in width. Equal outer tracks around a max-content middle
     put the middle column ON the axis and mirror the outer ones; gap = 1rem (Cuberto's unit). minmax(max-content,..) = no overlap
     in any language even if a label outgrows its track. */
  html body footer .fnav{grid-template-columns:minmax(max-content,1fr) max-content minmax(max-content,1fr)!important;justify-content:stretch!important;column-gap:2.6667vw!important}
  html body footer .fnav a{font-size:5.3333vw!important;line-height:1.2!important;font-weight:400!important;letter-spacing:0!important;
    color:#fff!important;padding:2.6667vw 0!important;text-align:center!important;justify-self:center!important}

  /* 4. legal: Cuberto 1.4rem/110%, links white, copyright .5; links centred on line 1, copyright centred on line 2 (1rem below),
     so the block stays inside the pill column instead of running gutter to gutter */
  html body footer .flegal{order:4;display:flex!important;flex-wrap:wrap;justify-content:center!important;column-gap:6.4vw!important;row-gap:2.6667vw!important;
    margin:16vw 0 0!important;width:100%!important;font-size:3.7333vw!important;line-height:1.1!important}
  html body footer .flegal a{color:#fff!important}
  html body footer .fcopy{color:#fff!important;opacity:.5;flex-basis:auto;text-align:center}
}
/* v9: the phone-only identity still (<img class="fwm-v4">, see integration notes) never shows on desktop, which keeps its model-viewer footer. */
@media (min-width:941px){html body footer .fwm-v4,html body footer .fwm-v5-still,html body footer .fwm-loop{display:none!important}}
@media (max-width:940px) and (prefers-reduced-motion:reduce){ html body footer .fwm a .fwm-loop{display:none!important} html body footer .fwm a .fwm-v5-still{display:block!important;width:100%!important;height:auto!important;aspect-ratio:880/180} }
/* pass 8 (2026-10-01): optical breathing room only, footer stays compact: logo -> contact CTAs 17 -> ~32 px, between the two pills 10 -> 16 px */
@media (max-width:940px){
  html body footer .fctas{margin-top:calc(var(--flogo-gap) + 4vw)!important;gap:4.2667vw!important}
}
