/* ==========================================================================
   Footer per design — v311
   footer.php renders one markup for every design:
     #site-footer[.has-atmosphere] > .container
       > .footer-grid.footer-grid--cols-N > .footer-brand (.site-logo, p, .social-links)
                                          + .footer-col (h4 + ul / table) x N
       > .footer-bottom (p, p.footer-powered, .footer-bottom-links)
       > p.footer-ai-disclaimer
   The preset sheets only recoloured it (dark ground + light text), so every
   design ended with the same four-column strip. Here each design gets its own
   footer language: rules, colour blocks, edges, heading + logo treatment.
   Loaded after the preset sheet + cross-fixes (includes/design-skins.php).

   Readability contract (normal / dark / light modes, footer photo, studio colour):
   - Text colours are left to the preset + mode sheets, EXCEPT inside colour
     blocks, which always declare their own ground AND ink (palette pairs:
     --color-primary / --color-text-on-primary), so they read in every mode.
   - A light-ground treatment (gazette) uses the --zg-cm-* mode markers and is
     skipped on a footer photo (.has-atmosphere) and a studio footer colour.
   - Photo footer: every design's loose text is light on the dark scrim; card
     columns (frost) turn into dark glass so their text stays readable.
   aurora / nimbus / glowarc / silk are styled in their own sheets.
   ========================================================================== */

/* ---------- shared: footer photo = light text on the scrim ---------- */
/* (also over a studio footer colour: the photo + scrim cover it completely;
   nielsen / rams hide the photo and keep their light footer) */
html body:not(.zg-preset-nielsen):not(.zg-preset-rams):not(#zg-fa1):not(#zg-fa2) #site-footer.has-atmosphere :is(h2, h3, h4, h5, .site-logo, .site-logo-name, strong) { color: #fff !important; }
html body:not(.zg-preset-nielsen):not(.zg-preset-rams):not(#zg-fa1):not(#zg-fa2) #site-footer.has-atmosphere :is(p, li, td, th, small, address, time, .footer-bottom, .footer-ai-disclaimer) { color: rgba(255, 255, 255, .9) !important; }
html body:not(.zg-preset-nielsen):not(.zg-preset-rams):not(#zg-fa1):not(#zg-fa2) #site-footer.has-atmosphere a:not(.btn):not([class*="btn"]):not(.social-link) { color: #fff !important; }
/* the small print was .45 white (~4:1) — AA on every dark footer */
html:not(:has(#zg-footer-color)) body:not(.zg-preset-frost):not(.zg-preset-nielsen):not(.zg-preset-rams):not(.zg-preset-techminimal):not(.zg-preset-gazette) #site-footer .footer-ai-disclaimer { color: rgba(255, 255, 255, .72); }
html:not(:has(#zg-footer-color)) body:not(.zg-preset-frost):not(.zg-preset-nielsen):not(.zg-preset-rams):not(.zg-preset-techminimal):not(.zg-preset-gazette) #site-footer .footer-ai-disclaimer a { color: rgba(255, 255, 255, .88); }
/* colour blocks never carry the photo scrim's ink */
#site-footer .footer-brand { position: relative; }

/* ==========================================================================
   POSTER — thick ink rules, a red colour block, a yellow slab shadow
   ========================================================================== */
body.zg-preset-poster #site-footer { border-top: 10px solid var(--pt-yellow, #FFD21F); box-shadow: inset 0 4px 0 #111; }
body.zg-preset-poster #site-footer .footer-brand {
  background: var(--color-primary, #E4262D);
  border: var(--pt-bw, 5px) solid #fff;
  box-shadow: 10px 10px 0 var(--pt-yellow, #FFD21F);
  padding: clamp(1.4rem, 3vw, 2.2rem);
  align-self: start;
}
html body.zg-preset-poster:not(#zg-fp1):not(#zg-fp2) #site-footer .footer-brand :is(.site-logo, p, span, strong) { color: var(--color-text-on-primary, #fff) !important; }
body.zg-preset-poster #site-footer .footer-brand .site-logo { font-size: clamp(1.7rem, 3vw, 2.4rem); font-weight: 900; line-height: .95; text-transform: uppercase; letter-spacing: -.02em; }
body.zg-preset-poster #site-footer .footer-brand .social-link { border-color: var(--color-text-on-primary, #fff); }
body.zg-preset-poster #site-footer .footer-col h4 { padding-bottom: .7rem; border-bottom: var(--pt-bw, 5px) solid #fff; display: inline-block; }
body.zg-preset-poster #site-footer .footer-col a { font-weight: 700; }
body.zg-preset-poster #site-footer .footer-bottom { border-top-width: var(--pt-bw, 5px); font-weight: 700; }

/* ==========================================================================
   VIBRANT — stepped top edge in three colour blocks, teal brand block
   ========================================================================== */
body.zg-preset-vibrant #site-footer {
  clip-path: polygon(0 36px, 33.33% 36px, 33.33% 18px, 66.66% 18px, 66.66% 0, 100% 0, 100% 100%, 0 100%);
  padding-top: calc(4rem + 36px);
  background-image:
    linear-gradient(var(--p-teal, #1FB5B0), var(--p-teal, #1FB5B0)),
    linear-gradient(var(--p-mag, #E0457B), var(--p-mag, #E0457B)),
    linear-gradient(var(--p-sun, #FFC53D), var(--p-sun, #FFC53D));
  background-size: 33.34% 10px, 33.34% 10px, 33.34% 10px;
  background-position: 0 36px, 50% 18px, 100% 0;
  background-repeat: no-repeat;
}
body.zg-preset-vibrant #site-footer::before { display: none; }
body.zg-preset-vibrant #site-footer .footer-brand {
  background: var(--color-primary, #1FB5B0);
  padding: clamp(1.4rem, 3vw, 2rem);
  border: var(--p-bw, 3px) solid #fff;
  box-shadow: 10px 10px 0 var(--p-mag, #E0457B);
  transform: rotate(-1.2deg);
  align-self: start;
}
html body.zg-preset-vibrant:not(#zg-fp1):not(#zg-fp2) #site-footer .footer-brand :is(.site-logo, p, span, strong) { color: var(--color-text-on-primary, #fff) !important; }
body.zg-preset-vibrant #site-footer .footer-brand .site-logo { font-size: clamp(1.6rem, 2.8vw, 2.2rem); font-weight: 900; line-height: 1; }
body.zg-preset-vibrant #site-footer .footer-col h4 { font-size: 1.05rem; font-weight: 900; }
body.zg-preset-vibrant #site-footer .footer-col h4::after { content: ""; display: block; width: 44px; height: 6px; margin-top: .55rem; background: var(--p-grad); }
@media (max-width: 768px) {
  body.zg-preset-vibrant #site-footer { clip-path: polygon(0 24px, 33.33% 24px, 33.33% 12px, 66.66% 12px, 66.66% 0, 100% 0, 100% 100%, 0 100%); padding-top: calc(3rem + 24px); background-position: 0 24px, 50% 12px, 100% 0; }
  body.zg-preset-vibrant #site-footer .footer-brand { transform: none; box-shadow: 6px 6px 0 var(--p-mag, #E0457B); }
}

/* ==========================================================================
   COLLAGE — rounded soft: curved top, soft rounded tiles, round chips
   (collage.css targeted .site-footer — a class the footer does not carry)
   ========================================================================== */
body.zg-preset-collage #site-footer {
  background-color: var(--cl-dark, #1F1A17);
  border-radius: var(--cl-r-lg, 32px) var(--cl-r-lg, 32px) 0 0;
  margin-top: clamp(1rem, 3vw, 2rem);
  overflow: hidden;
}
body.zg-preset-collage #site-footer .footer-grid { gap: clamp(1rem, 2vw, 1.4rem); }
body.zg-preset-collage #site-footer:not(.has-atmosphere) :is(.footer-brand, .footer-col) {
  background: rgba(255, 255, 255, .06);
  border-radius: var(--cl-r, 24px);
  padding: clamp(1.2rem, 2.4vw, 1.8rem);
}
body.zg-preset-collage #site-footer .footer-brand { transform: rotate(-1deg); }
body.zg-preset-collage #site-footer .footer-col:nth-child(odd) { transform: rotate(.6deg); }
body.zg-preset-collage #site-footer .footer-brand .site-logo { font-family: var(--cl-round, inherit); font-size: clamp(1.5rem, 2.6vw, 2rem); }
body.zg-preset-collage #site-footer .footer-col h4 { font-family: var(--cl-round, inherit); text-transform: none; letter-spacing: 0; font-size: 1.05rem; display: inline-flex; align-items: center; gap: .55rem; }
body.zg-preset-collage #site-footer .footer-col h4::before { content: ""; width: 12px; height: 12px; border-radius: 50%; background: var(--cl-accent, var(--color-primary)); box-shadow: 0 0 0 4px rgba(255, 255, 255, .12); }
body.zg-preset-collage #site-footer .social-link { border-radius: 50%; }
body.zg-preset-collage #site-footer .footer-bottom { border-top: 0; background: rgba(255, 255, 255, .06); border-radius: 999px; padding: .9rem 1.6rem; }
@media (max-width: 768px) {
  body.zg-preset-collage #site-footer :is(.footer-brand, .footer-col) { transform: none !important; }
  body.zg-preset-collage #site-footer .footer-bottom { border-radius: var(--cl-r, 24px); }
}

/* ==========================================================================
   TECHMINIMAL — hairline minimal: 1px rules, small quiet labels
   ========================================================================== */
body.zg-preset-techminimal #site-footer { border-top: 1px solid var(--color-border, rgba(0, 0, 0, .08)); padding: clamp(3rem, 6vw, 4.5rem) 0 1.75rem; }
body.zg-preset-techminimal #site-footer .footer-col h4 { font-size: .75rem; font-weight: 600; letter-spacing: .02em; text-transform: none; margin-bottom: .9rem; }
body.zg-preset-techminimal #site-footer .footer-col a { font-size: .82rem; }
body.zg-preset-techminimal #site-footer .footer-brand .site-logo { font-weight: 600; letter-spacing: -.02em; font-size: 1.15rem; }
body.zg-preset-techminimal #site-footer .social-link { width: 32px; height: 32px; }
body.zg-preset-techminimal #site-footer .footer-bottom { border-top: 1px solid var(--color-border, rgba(0, 0, 0, .08)); padding-top: 1.25rem; font-size: .75rem; }
@media (min-width: 769px) {
  body.zg-preset-techminimal #site-footer .footer-col { border-inline-start: 1px solid var(--color-border, rgba(0, 0, 0, .08)); padding-inline-start: clamp(1rem, 2vw, 1.75rem); }
}

/* ==========================================================================
   FORGE — industrial: blueprint grid, numbered columns, accent plate logo
   ========================================================================== */
body.zg-preset-forge #site-footer:not(.has-atmosphere) { background-image: var(--p-grid-lines, none); background-size: 64px 100%; }
body.zg-preset-forge #site-footer .footer-grid { counter-reset: zgfoot; }
body.zg-preset-forge #site-footer .footer-col h4 { counter-increment: zgfoot; font-size: 1.25rem; text-transform: uppercase; letter-spacing: .04em; display: flex; align-items: baseline; gap: .6rem; }
body.zg-preset-forge #site-footer .footer-col h4::before { content: counter(zgfoot, decimal-leading-zero); font-size: .8rem; letter-spacing: .12em; color: var(--p-accent-on-dark, #fff); }
body.zg-preset-forge #site-footer .footer-brand .site-logo { text-transform: uppercase; font-size: clamp(1.4rem, 2.4vw, 1.9rem); font-weight: 800; letter-spacing: .02em; display: inline-flex; align-items: center; gap: .6rem; }
body.zg-preset-forge #site-footer .footer-brand .site-logo::before { content: ""; width: 14px; height: 14px; background: var(--p-accent, var(--color-primary)); flex: 0 0 auto; }
body.zg-preset-forge #site-footer .footer-bottom { border-top: 4px solid var(--p-accent, var(--color-primary)); text-transform: uppercase; letter-spacing: .06em; font-size: .75rem; }
@media (min-width: 769px) {
  body.zg-preset-forge #site-footer .footer-col { border-inline-start: 1px solid var(--p-line-d2, rgba(255, 255, 255, .22)); padding-inline-start: 1.5rem; }
}

/* ==========================================================================
   INSTITUTE — academic: double rule, small-caps labels, ruled brand column
   ========================================================================== */
body.zg-preset-institute #site-footer { box-shadow: inset 0 5px 0 var(--p-block, #0b1422), inset 0 6px 0 rgba(255, 255, 255, .35); }
body.zg-preset-institute #site-footer .footer-col h4 { font-size: .78rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 700; }
body.zg-preset-institute #site-footer .footer-col h4::after { content: ""; display: block; width: 32px; height: 2px; margin-top: .6rem; background: var(--p-accent-line, var(--color-primary)); }
body.zg-preset-institute #site-footer .footer-brand .site-logo { font-family: var(--font-heading); font-size: clamp(1.4rem, 2.4vw, 1.8rem); font-weight: 600; }
body.zg-preset-institute #site-footer .footer-bottom { text-align: center; justify-content: center; }
@media (min-width: 769px) {
  body.zg-preset-institute #site-footer .footer-brand { border-inline-end: 1px solid rgba(255, 255, 255, .16); padding-inline-end: 2rem; }
}

/* ==========================================================================
   AURELIA (boutique hotel) — centred, serif wordmark, gold ornament rules
   ========================================================================== */
body.zg-preset-aurelia #site-footer { text-align: center; padding-top: clamp(4rem, 8vw, 6rem); }
body.zg-preset-aurelia #site-footer .footer-grid { display: flex !important; flex-wrap: wrap; justify-content: center; gap: 2.5rem clamp(2rem, 6vw, 5rem); }
body.zg-preset-aurelia #site-footer .footer-brand { flex: 0 0 100%; }
body.zg-preset-aurelia #site-footer .footer-brand > p { max-width: 640px; margin-inline: auto; }
body.zg-preset-aurelia #site-footer .footer-col { flex: 0 1 220px; }
body.zg-preset-aurelia #site-footer .footer-col ul { align-items: center; }
body.zg-preset-aurelia #site-footer .footer-col li { justify-content: center; }
body.zg-preset-aurelia #site-footer .footer-brand .site-logo { font-family: var(--font-heading); font-weight: 400; font-size: clamp(2rem, 4.4vw, 3.2rem); letter-spacing: .02em; line-height: 1.05; }
body.zg-preset-aurelia #site-footer .footer-brand .site-logo::after { content: ""; display: block; width: 120px; height: 1px; margin: 1.1rem auto 0; background: linear-gradient(90deg, transparent, var(--a-accent-on-dark, #d8c7a4), transparent); }
body.zg-preset-aurelia #site-footer .social-links { justify-content: center; }
body.zg-preset-aurelia #site-footer .footer-col h4 { font-size: .74rem; letter-spacing: .28em; font-weight: 500; }
body.zg-preset-aurelia #site-footer .footer-col h4::before { content: "\2726"; display: block; margin-bottom: .5rem; font-size: .7rem; letter-spacing: 0; color: var(--a-accent-on-dark, #d8c7a4); }
body.zg-preset-aurelia #site-footer .hours-table { margin-inline: auto; }
body.zg-preset-aurelia #site-footer .footer-bottom { justify-content: center; text-align: center; }

/* ==========================================================================
   BOUTIQUE — asymmetric, lots of air: offset accent rule, light wordmark
   ========================================================================== */
body.zg-preset-boutique #site-footer { padding-top: clamp(4.5rem, 9vw, 7rem); }
body.zg-preset-boutique #site-footer::before { content: ""; position: absolute; top: 0; inset-inline-start: 0; width: 38%; height: 2px; background: var(--color-secondary, #A1662F); }
body.zg-preset-boutique #site-footer { position: relative; }
body.zg-preset-boutique #site-footer .footer-brand .site-logo { font-size: clamp(2rem, 4.6vw, 3.4rem); font-weight: 300; letter-spacing: -.03em; line-height: 1; }
body.zg-preset-boutique #site-footer .footer-grid { counter-reset: zgbq; }
body.zg-preset-boutique #site-footer .footer-col { counter-increment: zgbq; }
body.zg-preset-boutique #site-footer .footer-col h4 { font-size: .8rem; font-weight: 500; letter-spacing: .12em; }
body.zg-preset-boutique #site-footer .footer-col h4::before { content: counter(zgbq, decimal-leading-zero) " \2014  "; opacity: .75; }
body.zg-preset-boutique #site-footer .footer-col:nth-child(3) { margin-top: clamp(0rem, 3vw, 2.5rem); }
body.zg-preset-boutique #site-footer .social-link { border-radius: 0; }

/* ==========================================================================
   BRUTAL — boxed columns, hard offset shadows, primary label blocks
   ========================================================================== */
body.zg-preset-brutal #site-footer .footer-grid { gap: 1.25rem; }
body.zg-preset-brutal #site-footer:not(.has-atmosphere) :is(.footer-brand, .footer-col) { border: 3px solid #fff; padding: 1.25rem; box-shadow: 6px 6px 0 var(--br-accent, var(--color-primary)); }
body.zg-preset-brutal #site-footer .footer-col h4 {
  display: inline-block; padding: .3rem .65rem; margin-bottom: 1rem;
  background: var(--color-primary, #FACC15); border: 3px solid #fff;
  font-weight: 900; letter-spacing: .04em;
}
html body.zg-preset-brutal:not(#zg-fp1):not(#zg-fp2) #site-footer .footer-col h4 { color: var(--color-text-on-primary, #000) !important; }
body.zg-preset-brutal #site-footer .footer-brand .site-logo { font-size: clamp(1.5rem, 2.6vw, 2.1rem); font-weight: 900; text-transform: uppercase; }
body.zg-preset-brutal #site-footer .social-link { border-radius: 0; border: 3px solid #fff; }
body.zg-preset-brutal #site-footer .footer-bottom { border-top: 3px solid #fff; font-weight: 700; }

/* ==========================================================================
   HONEY — warm serif: fine inset frame, italic labels, ornament
   ========================================================================== */
body.zg-preset-honey #site-footer .footer-grid { outline: 1px solid var(--p-line-d, rgba(255, 255, 255, .16)); outline-offset: clamp(.8rem, 2vw, 1.4rem); padding-block: .5rem; }
body.zg-preset-honey #site-footer .footer-grid { margin-bottom: clamp(3.5rem, 6vw, 4.5rem); }
body.zg-preset-honey #site-footer .footer-col h4 { font-family: var(--font-heading); font-style: italic; text-transform: none; letter-spacing: 0; font-size: 1.2rem; font-weight: 500; }
body.zg-preset-honey #site-footer .footer-brand .site-logo { font-family: var(--font-heading); font-style: italic; font-size: clamp(1.6rem, 2.8vw, 2.2rem); font-weight: 500; }
body.zg-preset-honey #site-footer .footer-brand .site-logo::after { content: "\2767"; display: block; font-style: normal; font-size: 1.1rem; margin-top: .4rem; color: var(--p-acc-d, #e8cfa8); }
body.zg-preset-honey #site-footer .social-link { border-radius: 50%; }
body.zg-preset-honey #site-footer .footer-bottom { justify-content: center; text-align: center; border-top-style: dotted; }

/* ==========================================================================
   HYP — rounded navy panel, tinted rounded column cards
   ========================================================================== */
body.zg-preset-hyp #site-footer { border-radius: var(--h-radius, 24px) var(--h-radius, 24px) 0 0; margin-inline: clamp(0px, 1.2vw, 16px); }
body.zg-preset-hyp #site-footer:not(.has-atmosphere) :is(.footer-brand, .footer-col) {
  background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .1);
  border-radius: calc(var(--h-radius, 24px) - 6px); padding: clamp(1.1rem, 2.2vw, 1.6rem);
}
body.zg-preset-hyp #site-footer .footer-grid { gap: 1rem; }
body.zg-preset-hyp #site-footer .footer-col h4 { text-transform: none; letter-spacing: 0; font-size: 1rem; display: inline-flex; align-items: center; gap: .5rem; }
body.zg-preset-hyp #site-footer .footer-col h4::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--h-accent-on-dark, var(--color-primary)); box-shadow: 0 0 0 4px rgba(255, 255, 255, .08); }
body.zg-preset-hyp #site-footer .social-link { border-radius: 12px; }

/* ==========================================================================
   NORMA — calm and centred: brand on top in a soft pill, columns below
   ========================================================================== */
body.zg-preset-norma #site-footer { border-radius: var(--n-radius, 24px) var(--n-radius, 24px) 0 0; text-align: center; }
body.zg-preset-norma #site-footer .footer-grid { display: flex !important; flex-wrap: wrap; justify-content: center; gap: 2rem clamp(2rem, 6vw, 4.5rem); }
body.zg-preset-norma #site-footer .footer-brand { flex: 0 0 100%; padding-bottom: 2rem; border-bottom: 1px solid rgba(255, 255, 255, .12); }
body.zg-preset-norma #site-footer .footer-brand > p { max-width: 620px; margin-inline: auto; }
body.zg-preset-norma #site-footer .footer-col { flex: 0 1 220px; }
body.zg-preset-norma #site-footer .footer-col ul { align-items: center; }
body.zg-preset-norma #site-footer .footer-col li { justify-content: center; }
body.zg-preset-norma #site-footer .footer-brand .site-logo { display: inline-block; padding: .55rem 1.4rem; border-radius: 999px; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .14); font-weight: 600; font-size: 1.15rem; }
body.zg-preset-norma #site-footer .social-links { justify-content: center; }
body.zg-preset-norma #site-footer .social-link { border-radius: 50%; }
body.zg-preset-norma #site-footer .footer-col h4 { text-transform: none; letter-spacing: 0; font-size: 1rem; }
body.zg-preset-norma #site-footer .hours-table { margin-inline: auto; }
body.zg-preset-norma #site-footer .footer-bottom { justify-content: center; text-align: center; }

/* ==========================================================================
   PATHONE — oversized wordmark, ruled rows, arrow links
   ========================================================================== */
body.zg-preset-pathone #site-footer .footer-brand .site-logo { font-family: var(--font-heading); font-size: clamp(2.2rem, 6vw, 4.4rem); font-weight: 400; line-height: .95; letter-spacing: -.03em; }
body.zg-preset-pathone #site-footer .footer-col { border-top: 1px solid var(--o-line-d, rgba(255, 255, 255, .14)); padding-top: 1.1rem; }
body.zg-preset-pathone #site-footer .footer-col h4 { font-size: .74rem; letter-spacing: .18em; font-weight: 500; }
body.zg-preset-pathone #site-footer .footer-col:not(.footer-col--contact) ul a::before { content: "\2197"; display: inline-block; margin-inline-end: .45rem; font-size: .8em; transform: scaleX(-1); opacity: .7; transition: transform .35s var(--o-ease-out, ease), opacity .2s; }
body.zg-preset-pathone #site-footer .footer-col ul a:hover::before { transform: scaleX(-1) translate(3px, -2px); opacity: 1; }
body.zg-preset-pathone #site-footer .social-link { border-radius: 50%; }

/* ==========================================================================
   SPINX — gradient hairline + gradient bars, glass logo mark
   ========================================================================== */
body.zg-preset-spinx #site-footer { position: relative; }
body.zg-preset-spinx #site-footer::before { content: ""; position: absolute; top: -1px; inset-inline: 0; height: 2px; background: var(--p-grad); pointer-events: none; }
body.zg-preset-spinx #site-footer .footer-col h4 { text-transform: none; letter-spacing: 0; font-size: 1rem; }
body.zg-preset-spinx #site-footer .footer-col h4::after { content: ""; display: block; width: 36px; height: 3px; border-radius: 3px; margin-top: .6rem; background: var(--p-grad); }
body.zg-preset-spinx #site-footer .footer-brand .site-logo { font-size: clamp(1.4rem, 2.4vw, 1.8rem); font-weight: 800; letter-spacing: -.02em; padding-inline-start: .9rem; border-inline-start: 4px solid; border-image: var(--p-grad) 1; }
body.zg-preset-spinx #site-footer .social-link { border-radius: 12px; }

/* ==========================================================================
   TIETAE — soft round: pill labels, round chips, pill bottom bar
   ========================================================================== */
body.zg-preset-tietae #site-footer .footer-col h4 { display: inline-block; padding: .4rem 1rem; border-radius: 999px; background: rgba(255, 255, 255, .09); text-transform: none; letter-spacing: 0; font-size: .92rem; }
body.zg-preset-tietae #site-footer .footer-brand .site-logo { font-size: clamp(1.4rem, 2.4vw, 1.8rem); font-weight: 700; }
body.zg-preset-tietae #site-footer .social-link { border-radius: 50%; }
body.zg-preset-tietae #site-footer .footer-bottom { border-top: 0; background: rgba(255, 255, 255, .06); border-radius: var(--p-r, 28px); padding: .9rem 1.5rem; }

/* ==========================================================================
   WAABI — technical: square markers, letter-spaced labels, ruled columns
   ========================================================================== */
body.zg-preset-waabi #site-footer .footer-col h4 { font-size: .72rem; letter-spacing: .2em; font-weight: 600; display: flex; align-items: center; gap: .6rem; }
body.zg-preset-waabi #site-footer .footer-col h4::before { content: ""; width: 7px; height: 7px; background: var(--p-acc-d, var(--color-primary)); flex: 0 0 auto; }
body.zg-preset-waabi #site-footer .footer-brand .site-logo { text-transform: uppercase; letter-spacing: .14em; font-size: 1.05rem; font-weight: 600; }
body.zg-preset-waabi #site-footer .footer-col { border-top: 1px solid var(--p-line-d, rgba(255, 255, 255, .14)); padding-top: 1rem; }
body.zg-preset-waabi #site-footer .social-link { border-radius: 0; }
body.zg-preset-waabi #site-footer .footer-bottom { text-transform: uppercase; letter-spacing: .1em; font-size: .7rem; }

/* ==========================================================================
   NEON — dark plan cards with a gradient edge
   ========================================================================== */
body.zg-preset-neon #site-footer:not(.has-atmosphere) :is(.footer-brand, .footer-col) {
  background: var(--nx-surface, #111A2E); border: 1px solid var(--nx-line, #26324A);
  border-radius: var(--nx-radius, 14px); padding: clamp(1.1rem, 2.2vw, 1.5rem); position: relative; overflow: hidden;
}
body.zg-preset-neon #site-footer:not(.has-atmosphere) :is(.footer-brand, .footer-col)::before { content: ""; position: absolute; top: 0; inset-inline: 0; height: 2px; background: var(--nx-grad); }
body.zg-preset-neon #site-footer .footer-grid { gap: 1rem; }
body.zg-preset-neon #site-footer .footer-col h4 { text-transform: none; letter-spacing: 0; font-size: 1rem; }
body.zg-preset-neon #site-footer .social-link { border-radius: var(--nx-radius-btn, 10px); }

/* ==========================================================================
   DUBAI — black & gold: double gold hairline, diamond labels, centred base
   ========================================================================== */
body.zg-preset-dubai #site-footer { box-shadow: inset 0 4px 0 var(--p-black, #0b0b0b), inset 0 5px 0 rgba(201, 169, 110, .55); }
body.zg-preset-dubai #site-footer .footer-col h4 { letter-spacing: .24em; font-size: .76rem; font-weight: 500; display: flex; align-items: center; gap: .6rem; }
body.zg-preset-dubai #site-footer .footer-col h4::before { content: ""; width: 7px; height: 7px; transform: rotate(45deg); background: var(--p-gold, #c9a96e); flex: 0 0 auto; }
body.zg-preset-dubai #site-footer .footer-brand .site-logo { font-family: var(--font-heading); letter-spacing: .12em; text-transform: uppercase; font-size: clamp(1.2rem, 2.2vw, 1.6rem); font-weight: 500; }
body.zg-preset-dubai #site-footer .social-link { border-radius: 0; border: 1px solid rgba(201, 169, 110, .55); }
body.zg-preset-dubai #site-footer .footer-bottom { justify-content: center; text-align: center; border-top: 1px solid rgba(201, 169, 110, .35); }

/* ==========================================================================
   RESIDENCE — architectural: vertical hairlines, small-caps labels
   ========================================================================== */
body.zg-preset-residence #site-footer .footer-col h4 { letter-spacing: .18em; font-size: .74rem; font-weight: 600; }
body.zg-preset-residence #site-footer .footer-brand .site-logo { font-family: var(--font-heading); font-size: clamp(1.6rem, 3vw, 2.3rem); font-weight: 400; letter-spacing: .01em; }
body.zg-preset-residence #site-footer .social-link { border-radius: 0; }
body.zg-preset-residence #site-footer .footer-bottom { justify-content: center; text-align: center; }
@media (min-width: 769px) {
  body.zg-preset-residence #site-footer .footer-col { border-inline-start: 1px solid rgba(245, 241, 234, .2); padding-inline-start: 1.6rem; }
}

/* ==========================================================================
   STUDIO — portfolio: statement wordmark row, ruled columns
   ========================================================================== */
body.zg-preset-studio #site-footer .footer-grid { display: flex !important; flex-wrap: wrap; gap: 2rem clamp(2rem, 5vw, 4rem); }
body.zg-preset-studio #site-footer .footer-brand { flex: 0 0 100%; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1rem 3rem; align-items: end; padding-bottom: 2rem; border-bottom: 1px solid var(--p-rule-dark, rgba(255, 255, 255, .18)); }
body.zg-preset-studio #site-footer .footer-brand .site-logo { font-size: clamp(2.4rem, 7vw, 5.2rem); font-weight: 800; line-height: .92; letter-spacing: -.04em; margin: 0; grid-row: span 2; }
body.zg-preset-studio #site-footer .footer-brand p { margin: 0; }
body.zg-preset-studio #site-footer .footer-col { flex: 1 1 180px; }
body.zg-preset-studio #site-footer .footer-col h4 { font-size: .74rem; letter-spacing: .16em; }
body.zg-preset-studio #site-footer .social-link { border-radius: 0; }
@media (max-width: 768px) {
  body.zg-preset-studio #site-footer .footer-brand { grid-template-columns: minmax(0, 1fr); }
  body.zg-preset-studio #site-footer .footer-brand .site-logo { grid-row: auto; }
}

/* ==========================================================================
   GAZETTE — newspaper: paper ground, masthead double rule, column rules
   (light ground only without a footer photo / studio colour; mode markers keep
   the dark / light modes readable)
   ========================================================================== */
html:not(:has(#zg-footer-color)) body.zg-preset-gazette:not(#zg-fp1) #site-footer:not(.has-atmosphere) {
  background: var(--zg-cm-surface, var(--g-news, #f7f5f0)) !important;
  border-top: 4px solid var(--zg-cm-ink, var(--g-ink, #1a1a1a));
  box-shadow: inset 0 4px 0 var(--zg-cm-surface, var(--g-news, #f7f5f0)), inset 0 5px 0 var(--zg-cm-ink, var(--g-ink, #1a1a1a));
}
html:not(:has(#zg-footer-color)) body.zg-preset-gazette:not(#zg-fp1):not(#zg-fp2) #site-footer:not(.has-atmosphere) :is(h2, h3, h4, .site-logo, strong, .hours-table td:first-child) { color: var(--zg-cm-ink, var(--g-ink, #1a1a1a)) !important; }
html:not(:has(#zg-footer-color)) body.zg-preset-gazette:not(#zg-fp1):not(#zg-fp2) #site-footer:not(.has-atmosphere) :is(p, li, td, th, span, small, .footer-bottom, .footer-ai-disclaimer, .footer-brand p, .footer-col ul) { color: var(--zg-cm-text, var(--g-ink-2, #3d3d3d)) !important; }
html:not(:has(#zg-footer-color)) body.zg-preset-gazette:not(#zg-fp1):not(#zg-fp2) #site-footer:not(.has-atmosphere) a:not(.btn):not([class*="btn"]):not(.social-link) { color: var(--zg-cm-ink, var(--g-ink, #1a1a1a)) !important; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
html:not(:has(#zg-footer-color)) body.zg-preset-gazette:not(#zg-fp1):not(#zg-fp2) #site-footer:not(.has-atmosphere) a:not(.btn):not([class*="btn"]):not(.social-link):hover { color: var(--zg-cm-link, var(--g-accent, #1a1a1a)) !important; }
body.zg-preset-gazette #site-footer .footer-brand .site-logo { font-family: var(--font-heading); font-size: clamp(1.8rem, 3.6vw, 2.8rem); font-weight: 900; letter-spacing: -.02em; line-height: 1; }
body.zg-preset-gazette #site-footer .footer-col h4 { font-family: var(--font-heading); text-transform: none; letter-spacing: 0; font-size: 1.1rem; font-weight: 800; padding-bottom: .5rem; border-bottom: 2px solid currentColor; }
body.zg-preset-gazette #site-footer .social-link { border-radius: 0; }
body.zg-preset-gazette #site-footer .footer-bottom { border-top: 1px solid var(--g-rule, rgba(0, 0, 0, .16)); }
body.zg-preset-gazette #site-footer.has-atmosphere .footer-bottom { border-top-color: rgba(255, 255, 255, .2); }
@media (min-width: 769px) {
  body.zg-preset-gazette #site-footer .footer-col { border-inline-start: 1px solid var(--g-rule, rgba(0, 0, 0, .16)); padding-inline-start: 1.5rem; }
  body.zg-preset-gazette #site-footer.has-atmosphere .footer-col { border-inline-start-color: rgba(255, 255, 255, .2); }
}

/* ==========================================================================
   CLINIC — soft medical: rounded top, tinted dots, pill base
   ========================================================================== */
body.zg-preset-clinic #site-footer { border-radius: var(--p-r-xl, 40px) var(--p-r-xl, 40px) 0 0; }
body.zg-preset-clinic #site-footer .footer-col h4 { text-transform: none; letter-spacing: 0; font-size: 1rem; display: inline-flex; align-items: center; gap: .55rem; }
body.zg-preset-clinic #site-footer .footer-col h4::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: color-mix(in srgb, var(--color-primary) 60%, #fff); }
body.zg-preset-clinic #site-footer .footer-bottom { border-top: 0; background: rgba(255, 255, 255, .06); border-radius: 999px; padding: .85rem 1.5rem; }
@media (max-width: 768px) { body.zg-preset-clinic #site-footer .footer-bottom { border-radius: var(--p-r-md, 20px); } }

/* ==========================================================================
   FESTIVE — wavy underlined labels, bouncy logo
   ========================================================================== */
body.zg-preset-festive #site-footer .footer-col h4 { text-transform: none; letter-spacing: 0; font-size: 1.1rem; text-decoration: underline wavy var(--color-primary); text-decoration-thickness: 2px; text-underline-offset: 8px; }
body.zg-preset-festive #site-footer .footer-brand .site-logo { font-size: clamp(1.6rem, 2.8vw, 2.2rem); font-weight: 800; display: inline-block; transform: rotate(-2deg); }

/* ==========================================================================
   MARCOTTE — organic: clay dots, heading-font wordmark
   ========================================================================== */
body.zg-preset-marcotte #site-footer .footer-col h4 { text-transform: none; letter-spacing: 0; font-size: 1.05rem; display: inline-flex; align-items: center; gap: .55rem; }
body.zg-preset-marcotte #site-footer .footer-col h4::before { content: ""; width: 10px; height: 10px; border-radius: 42% 58% 63% 37% / 41% 44% 56% 59%; background: var(--p-clay, var(--color-primary)); }
body.zg-preset-marcotte #site-footer .footer-brand .site-logo { font-family: var(--font-heading); font-size: clamp(1.6rem, 3vw, 2.3rem); }

/* ==========================================================================
   Built-in skins with weaker footers
   ========================================================================== */
/* schoger — SaaS: quiet cards with an accent cap */
body.zg-preset-schoger #site-footer:not(.has-atmosphere) .footer-col { background: rgba(255, 255, 255, .04); border-radius: 12px; padding: 1.2rem 1.3rem; box-shadow: inset 0 3px 0 var(--color-primary); }
body.zg-preset-schoger #site-footer .footer-grid { gap: 1.25rem 2rem; }
/* hustwit — cinematic: oversized uppercase wordmark, hairline rows */
body.zg-preset-hustwit #site-footer .footer-brand .site-logo { font-size: clamp(2rem, 5vw, 3.8rem); font-weight: 800; text-transform: uppercase; letter-spacing: -.02em; line-height: .95; }
body.zg-preset-hustwit #site-footer .footer-col { border-top: 1px solid rgba(255, 255, 255, .16); padding-top: 1rem; }
body.zg-preset-hustwit #site-footer .footer-col h4 { font-size: .72rem; letter-spacing: .22em; }
/* wroblewski — mobile-first: thumb-size pill links on phones */
@media (max-width: 768px) {
  body.zg-preset-wroblewski #site-footer .footer-col:not(.footer-col--contact) ul { flex-direction: row; flex-wrap: wrap; gap: .5rem; }
  body.zg-preset-wroblewski #site-footer .footer-col:not(.footer-col--contact) ul a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1rem; border-radius: 999px; background: rgba(255, 255, 255, .08); }
}

/* ==========================================================================
   FROST on a footer photo — the card columns turn into dark glass so their
   (now light) text stays readable over the scrim.
   ========================================================================== */
html body.zg-preset-frost:not(#zg-fp1) #site-footer.has-atmosphere :is(.footer-brand, .footer-col, .footer-bottom) {
  background: rgba(10, 12, 16, .55) !important; border-color: rgba(255, 255, 255, .16) !important;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
html body.zg-preset-frost:not(#zg-fp1) #site-footer.has-atmosphere .footer-col h4 { border-bottom-color: rgba(255, 255, 255, .2); }

/* ---------- colour blocks keep their ink over a photo / studio colour ---------- */
html body:is(.zg-preset-poster, .zg-preset-vibrant):not(#zg-fp1):not(#zg-fp2) #site-footer .footer-brand :is(.site-logo, p, span, strong) { -webkit-text-fill-color: currentColor; }

@media (prefers-reduced-motion: reduce) {
  body.zg-preset-pathone #site-footer .footer-col:not(.footer-col--contact) ul a::before { transition: none; }
}

/* v314 — contact card, every preset: each row is [icon][value] starting at the RIGHT (RTL),
   the phone sits right next to its icon like the address row — never a separate pill on
   the left. Centred presets (aurelia / norma) keep their centred rows. */
html[dir="rtl"] body #site-footer .footer-col--contact ul { display: flex; flex-direction: column; flex-wrap: nowrap; }
html[dir="rtl"] body #site-footer .footer-col--contact li { display: flex; flex-direction: row; flex-wrap: nowrap; }
html[dir="rtl"] body #site-footer .footer-col--contact li > span { flex: 0 1 auto !important; text-align: right; }
body:not(.zg-preset-aurelia):not(.zg-preset-norma) #site-footer .footer-col--contact li { justify-content: flex-start; }
html[dir="rtl"] body #site-footer .footer-col--contact li a:is([href^="tel:"], [href^="mailto:"]) { display: inline-block; min-height: 0; padding: 0; border-radius: 0; background: none; margin: 0; }
html[dir="rtl"] body #site-footer .footer-col--contact .zg-fc-phone__val { display: block; }
