/* ==========================================================================
   EdwardsX — the only stylesheet.

   THE BUDGET IS 3 EXCEPTIONS FOR THE WHOLE SITE.

   Custom CSS is the thing that needs a developer, and after 25 September 2026
   there is no developer. So this file holds three kinds of thing only:

     1. The brand fonts.
     2. The design tokens, as custom properties.
     3. A backstop for two rules in DESIGN.md that must never break.

   Everything else belongs in the Kadence settings or in a block pattern.

   Before you add a rule here, try to simplify the design instead. If you must
   add one, write it in the ledger below, with the date and the reason.

   THE EXCEPTION LEDGER
   --------------------
   1. SPENT, 2026-09-08. The client logo strip. Two reasons, both real:
              the core Gallery block writes a column width for 3 to 8 columns
              ONLY, so "columns-9" falls back to two per row at full size; and
              the 9 logo files have different shapes, so they need one height.
              Section 4 below.
   2. (open)
   3. (open)

   NEVER use Appearance > Customize > Additional CSS.
   NEVER use the Custom CSS box on a block.
   That CSS lives in the database. It is invisible in git, and it is how the
   build site and the live site slowly become different.
   ========================================================================== */


/* --------------------------------------------------------------------------
   1. The fonts. Self-hosted, so no request goes to Google.
   Turn Kadence's Google Fonts off in the settings, or the fonts load twice.
   -------------------------------------------------------------------------- */

/* Inter 300-700 — latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(../font/inter-300-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Inter 300-700 — latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(../font/inter-300-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Libre Baskerville 400 — latin */
@font-face {
  font-family: 'Libre Baskerville';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/libre-baskerville-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Libre Baskerville 400 — latin-ext */
@font-face {
  font-family: 'Libre Baskerville';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/libre-baskerville-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}


/* --------------------------------------------------------------------------
   2. The tokens.

   These are a REFERENCE COPY of DESIGN.md. The site does not get its colours
   from here. It gets them from the Kadence palette, so that a new section
   that a staff member makes is the correct colour with no work.

   Keep the two the same. If you change a colour, change it in the Kadence
   settings FIRST, then copy it here.

   The Kadence slot number is written beside each colour. The slot ORDER
   comes from the designer's own Kadence site, because his sections name the
   colours by slot. Do not renumber the slots.
   -------------------------------------------------------------------------- */

:root {
  /* Ground and ink */
  --ink:        #1a1b23;   /* Kadence slot 3 */
  --ink-soft:   #3a3b45;   /* Kadence slot 4 */
  --muted:      #6e6e6e;   /* Kadence slot 5. Use on light grounds only. */
  --rule:       #d8d5d0;   /* Kadence slot 7 */
  --bone:       #f7f5f2;   /* Kadence slots 6 and 9 */
  --paper:      #ffffff;   /* Kadence slot 8 */
  --muted-dark: #9c9ca6;   /* Kadence slot 10. Use on ink only. */

  /* Red. TWO reds, and they are not interchangeable. */
  --red-deep:   #d0362a;   /* Kadence slot 2. Buttons, links, red text below 24px. */
  --red:        #ef4738;   /* Kadence slot 1. Display text at 24px and above ONLY. */
  --red-press:  #b52d22;   /* No Kadence slot. The pressed state of a button. */

  /* Type */
  --serif: "Libre Baskerville", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  --track-display: -0.04em;   /* Headings in Libre Baskerville */
  --track-caps:     0.125em;  /* Eyebrows and labels */
  --track-ui:       0.05em;   /* Buttons and navigation */
  --track-body:     0.037em;  /* Body text in Inter */

  /* Layout */
  --container: 1300px;
}


/* --------------------------------------------------------------------------
   3. The backstop.

   DESIGN.md says: do not round a corner, and do not add a card shadow.
   theme.json removes those controls from the editor. These two rules catch
   anything that arrives another way, for example a Kadence default.
   -------------------------------------------------------------------------- */

:root {
  --global-border-radius: 0;
}


/* --------------------------------------------------------------------------
   4. EXCEPTION 1 — the client logo strip.

   The core Gallery block is the right tool here: "add a client" is then "add
   an image to a gallery", which is a job any staff member can do. But it
   cannot do this shape on its own.

   1. WordPress writes a column width for columns-3 to columns-8 only. With
      nine logos the class is "columns-9", no rule matches, and every logo
      falls back to half the width of the row. This gives it the ninth width.
   2. The 9 files have different shapes. One height and "contain" makes them
      one strip instead of nine different sizes.

   Below 782px WordPress stacks the gallery two across. The comp asks for
   three, so the width is set again there.

   TRAP: the core rule is written as "figure.wp-block-image:not(#individual-image)".
   The ":not(#id)" carries the weight of an ID, so a plain class selector NEVER
   wins against it. These rules repeat the same guard on purpose.
   -------------------------------------------------------------------------- */

.edx-logo-strip .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) {
  width: calc(33.333% - var(--wp--style--unstable-gallery-gap, 16px) * 0.667);
}
.edx-logo-strip .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) img {
  height: 26px;
  width: auto;
  object-fit: contain;
}

@media (min-width: 782px) {
  .edx-logo-strip .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) {
    width: calc(11.111% - var(--wp--style--unstable-gallery-gap, 16px) * 0.889);
  }
  .edx-logo-strip .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) img {
    height: 30px;
  }
}
