/* Association Core scoped reset — the resilience layer.
   Unlayered on purpose: .ac-plugin-descendant selectors (specificity 0-1-x)
   beat the active theme's unlayered element global styles (0-0-x, e.g.
   Twenty Twenty-Four's `h1..h6 { font-family: … }`). A CSS @layer would put
   these BELOW the theme's unlayered rules and the theme's serif would win.
   NOTE: no margin/padding/background on .ac-plugin itself — it is applied at
   render_view AND nests in ~9 views, so box props would double-apply. */

.ac-plugin {
  font-family: var(--ac-font-body);
  color: var(--ac-ink);
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
.ac-plugin *, .ac-plugin *::before, .ac-plugin *::after { box-sizing: border-box; }
/* Themes (e.g. Astra) style bare <button> with white text for their own button
   look; that leaks into unstyled plugin buttons (calendar day cells, etc.) as
   white-on-white. Reset to ink here (0-1-1); component buttons re-assert their
   own color at 0-2-x and still win. */
.ac-plugin button { color: var(--ac-ink); }
/* Note: the plugin content is fluid — it fills whatever width its container
   gives it. Page width is a theme/template choice (full-width template or a
   theme with a wider content area), NOT something the plugin hacks around. */

/* Vertical rhythm between stacked sibling scopes (e.g. the member portal
   composes masthead + at-a-glance + dashboard as adjacent wrappers). Only
   between OUTER wrappers (data-preset), so nested legacy wrappers are unaffected. */
.ac-plugin[data-preset] + .ac-plugin[data-preset] { margin-top: 1.25rem; }

.ac-plugin h2, .ac-plugin h3, .ac-plugin h4 { font-family: var(--ac-font-display); margin: 0; color: var(--ac-ink); text-wrap: balance; }
.ac-plugin h2 { font-size: 1.5rem; font-weight: 600; letter-spacing: -.005em; line-height: 1.2; }
.ac-plugin h3 { font-size: 1.15rem; font-weight: 600; line-height: 1.3; }
.ac-plugin p  { margin: 0 0 1rem; }
/* Link color + kill theme underlines. The [data-preset] scope (0-2-1) beats
   aggressive theme rules like Astra's `.ast-single-post .entry-content a`
   (0-2-1) by source order; buttons re-assert no-underline at 0-3-0 in components. */
.ac-plugin a  { color: var(--ac-primary); text-underline-offset: 2px; }
.ac-plugin[data-preset] a { text-decoration: none; }

/* darken the accent for the kicker so small uppercase labels clear AA on white */
.ac-kicker { margin: 0 0 .3rem; color: color-mix(in srgb, var(--ac-accent) 72%, #101418); font-size: .71rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.ac-muted  { color: var(--ac-muted); font-size: .95rem; }
.ac-meta   { color: var(--ac-muted); font-size: .82rem; }
