.ffgeo-knowledge,.ffgeo-page-brief{box-sizing:border-box}.ffgeo-knowledge section+section,.ffgeo-page-brief .ffgeo-page-qa{margin-top:1.5rem}.ffgeo-knowledge ul,.ffgeo-page-brief ul{padding-left:1.25rem}.ffgeo-knowledge details,.ffgeo-page-brief details{border-bottom:1px solid rgba(18,36,51,.12);padding:.65rem 0}.ffgeo-knowledge summary,.ffgeo-page-brief summary{cursor:pointer;font-weight:600}.ffgeo-knowledge details p,.ffgeo-page-brief details p{margin:.5rem 0 0}.ffgeo-updated{margin-top:2rem;opacity:.7}

.ffgeo-page-sources{margin-top:1.5rem;padding-top:1rem;border-top:1px solid rgba(0,0,0,.1)}
.ffgeo-page-sources h3{margin-bottom:.65rem}
.ffgeo-page-sources a,.ffgeo-sources a{overflow-wrap:anywhere}

/* The page brief, dressed as part of the page.

   This block is appended to the content, so it lands in whatever the theme
   puts around post content and inherits none of the theme's own section
   styling. Unstyled it reads as raw HTML dropped at the foot of a finished
   page — a hero-sized heading, full-bleed text and the browser's own
   disclosure triangles — which is worse than not publishing it, because the
   page it is supposed to support is the thing that looks broken.

   Everything below is drawn from WordPress preset variables, which any block
   theme with a theme.json provides, and each one carries a fallback for the
   themes that do not. Nothing here names a client or a theme. */

.ffgeo-page-brief{
  box-sizing:border-box;
  /* Up to the wide width, not the content width. Where the theme constrains
     the content — an article at reading width — the container already limits
     it and this ceiling never applies; where the page is built from wide bands
     it fills the row instead of sitting as a narrow column with a band of
     empty page either side of it.

     The bottom margin matters as much as the top: the brief is the last thing
     in the content, so without it the panel ends flush against whatever the
     template puts next and reads as having been cut off. */
  max-width:var(--wp--style--global--wide-size, 75rem);
  margin-inline:auto;
  margin-block:clamp(2rem, 5vw, 3.5rem);
  padding:clamp(1.25rem, 4vw, 2rem);
  border:1px solid var(--wp--preset--color--line, rgba(18,36,51,.12));
  border-radius:10px;
  background:var(--wp--preset--color--surface, #f6f7f9);
}

/* A brief is a supporting note, not a second article, so its heading sits at
   the size of a section label rather than inheriting the page's h2 scale. */
.ffgeo-page-brief > h2{
  margin:0 0 .75rem;
  font-size:var(--wp--preset--font-size--lg, 1.19rem);
  line-height:1.3;
  font-weight:700;
  color:var(--wp--preset--color--primary, inherit);
}

.ffgeo-page-brief > p{
  margin:0 0 1rem;
  font-size:var(--wp--preset--font-size--sm, .95rem);
  line-height:1.6;
}

.ffgeo-page-brief > ul{
  margin:0;
  padding-left:1.15rem;
  display:grid;
  gap:.45rem;
  font-size:var(--wp--preset--font-size--sm, .95rem);
  line-height:1.55;
  color:var(--wp--preset--color--muted, inherit);
}

/* The questions borrow the pattern a reader has already met higher up the
   page: a quiet bar that opens in place, with a plus that becomes a minus.
   The browser's triangle cannot be styled, so it is replaced. */
.ffgeo-page-brief .ffgeo-page-qa{
  margin-top:1.5rem;
  display:grid;
  gap:.5rem;
}

.ffgeo-page-brief details{
  border:1px solid var(--wp--preset--color--line, rgba(18,36,51,.12));
  border-radius:8px;
  background:var(--wp--preset--color--white, #fff);
  padding:.85rem 1.1rem;
}

.ffgeo-page-brief summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  cursor:pointer;
  list-style:none;
  font-size:var(--wp--preset--font-size--sm, .95rem);
  font-weight:600;
}
.ffgeo-page-brief summary::-webkit-details-marker{display:none}
.ffgeo-page-brief summary::after{
  content:"+";
  flex:0 0 auto;
  font-size:1.15rem;
  line-height:1;
  color:var(--wp--preset--color--primary, inherit);
}
.ffgeo-page-brief details[open] summary::after{content:"\2212"}

.ffgeo-page-brief details > :not(summary){
  margin:.65rem 0 0;
  font-size:var(--wp--preset--font-size--xs, .875rem);
  line-height:1.6;
  color:var(--wp--preset--color--muted, inherit);
}

.ffgeo-page-brief .ffgeo-page-sources h3{
  font-size:var(--wp--preset--font-size--sm, .95rem);
}

/* A gutter where the container does not supply one.

   A constrained container has already inset its children, so the brief lines up
   with the text above it and needs nothing. A full-width one has not: there the
   panel ran edge to edge and, on a phone, its border sat on the bezel while
   every card and heading on the same page stood clear of it.

   Shrinking the ceiling rather than setting a margin keeps the centring intact,
   and because the wide width is the smaller of the two on any real desktop,
   this only ever bites on narrow screens. The 1.5rem lands within a pixel of
   the global padding this theme gives everything else. */
:where(.alignfull, .is-layout-flow) > .ffgeo-page-brief{
  max-width:min(var(--wp--style--global--wide-size, 75rem), 100% - 1.5rem);
}

/* The closing gap, stated twice.

   WordPress core ends a constrained layout with
   ":root :where(.is-layout-constrained) > :last-child{margin-block-end:0}",
   which carries the same specificity as a single class and is written later, so
   it wins. The brief is always the last thing in the content, so that rule
   always applies to it and the panel ended flush against the next band. */
.ffgeo-page-brief.ffgeo-page-brief{
  margin-block-end:clamp(2rem, 5vw, 3.5rem);
}

/* Narrow screens: the frame is what costs width, so it goes first. */
@media (max-width:600px){
  .ffgeo-page-brief{
    border-radius:8px;
    padding:1.1rem;
  }
  .ffgeo-page-brief > ul{padding-left:1rem}
}
