@layer blocks {
  /* Universal block container — every Phase F block carries data-block="core.X". */
  [data-block] { color-scheme: light; }
  [data-block] > * + * { margin-block-start: var(--space-sm); }

  [data-block="core.section"] {
    padding-block: var(--space-2xl);
    container-type: inline-size;
  }
  [data-block="core.section"] > .pa-container,
  [data-block="core.section"] > * {
    max-inline-size: var(--layout-containerMaxWidth, 1200px);
    margin-inline: auto;
    padding-inline: var(--space-md);
  }

  [data-block="core.columns"] {
    display: grid;
    gap: var(--layout-gutter, var(--space-md));
    grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
    container-type: inline-size;
  }

  [data-block="core.spacer"] { display: block; block-size: var(--space-md); }
  [data-block="core.spacer"].pa-spacer-sm { block-size: var(--space-sm); }
  [data-block="core.spacer"].pa-spacer-md { block-size: var(--space-md); }
  [data-block="core.spacer"].pa-spacer-lg { block-size: var(--space-2xl); }

  [data-block="core.hero"] {
    padding-block: var(--space-3xl);
    padding-inline: var(--space-md);
    text-align: center;
    background: var(--color-surface-card, transparent);
    color: var(--color-text-default, inherit);
    container-type: inline-size;
    background-size: cover;
    background-position: center;
  }
  [data-block="core.hero"] h1 {
    font-size: var(--type-step-6);
    margin-block-end: var(--space-md);
    max-inline-size: 24ch;
    margin-inline: auto;
  }
  [data-block="core.hero"] p {
    max-inline-size: 50ch;
    margin: 0 auto var(--space-lg);
    color: var(--color-text-muted, inherit);
    font-size: var(--type-step-1);
  }
  @container (max-width: 30em) {
    [data-block="core.hero"] { padding-block: var(--space-2xl); }
    [data-block="core.hero"] h1 { font-size: var(--type-step-4); }
  }

  [data-block="core.heading"] { font-family: var(--font-heading, inherit); }
  [data-block="core.heading"].pa-align-left   { text-align: left; }
  [data-block="core.heading"].pa-align-center { text-align: center; }
  [data-block="core.heading"].pa-align-right  { text-align: right; }

  [data-block="core.text"] {
    max-inline-size: var(--measure);
    line-height: var(--leading-normal);
  }
  [data-block="core.text"].pa-align-center { margin-inline: auto; text-align: center; }
  [data-block="core.text"].pa-align-right  { text-align: right; }

  [data-block="core.image"] { margin-inline: auto; max-inline-size: 100%; }
  [data-block="core.image"] img {
    inline-size: 100%;
    block-size: auto;
    border-radius: var(--radius-md, 8px);
    box-shadow: var(--shadow-sm);
  }
  [data-block="core.image"] figcaption {
    margin-block-start: var(--space-xs);
    font-size: var(--type-step--1);
    color: var(--color-text-muted, #718096);
    text-align: center;
  }

  [data-block="core.button"], a.pa-btn, button.pa-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2xs);
    min-block-size: 44px;
    padding: var(--space-xs) var(--space-lg);
    border-radius: var(--radius-md, 8px);
    border: 1px solid transparent;
    font-weight: var(--font-weight-medium, 500);
    text-decoration: none;
    cursor: pointer;
    transition: background var(--motion-duration-fast) var(--motion-ease-out),
                color var(--motion-duration-fast) var(--motion-ease-out),
                box-shadow var(--motion-duration-fast) var(--motion-ease-out),
                transform var(--motion-duration-fast) var(--motion-ease-out);
  }
  .pa-btn-primary, [data-block="core.button"].pa-btn-primary {
    background: var(--color-brand-primary, #2b6cb0);
    color: var(--color-on-brand-primary, #fff);
  }
  .pa-btn-primary:hover { background: var(--color-brand-primary-hover, var(--color-brand-primary)); }
  .pa-btn-primary:active { background: var(--color-brand-primary-active, var(--color-brand-primary)); transform: translateY(1px); }
  .pa-btn-secondary, [data-block="core.button"].pa-btn-secondary {
    background: transparent;
    border-color: var(--color-brand-primary, #2b6cb0);
    color: var(--color-brand-primary, #2b6cb0);
  }
  .pa-btn-secondary:hover { background: var(--color-brand-primary, #2b6cb0); color: var(--color-on-brand-primary, #fff); }
  .pa-btn[disabled], .pa-btn[aria-disabled="true"] {
    opacity: var(--opacity-disabled, 0.5);
    cursor: not-allowed;
  }

  [data-block="core.embed"] {
    aspect-ratio: 16 / 9;
    inline-size: 100%;
    background: var(--color-surface-muted, #edf2f7);
    border-radius: var(--radius-md, 8px);
    overflow: hidden;
  }
  [data-block="core.embed"] iframe { inline-size: 100%; block-size: 100%; border: 0; }

  [data-block="core.content-list"] {
    display: grid;
    gap: var(--space-lg);
    grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr));
    container-type: inline-size;
  }

  [data-block="core.form"] {
    display: block;
    max-inline-size: var(--measure);
  }

  [data-block="core.search"], [data-block="core.login"] {
    display: block;
    max-inline-size: 32rem;
    margin-inline: auto;
  }

  /* core.text content gets prose treatment. */
  [data-block="core.text"] { font-family: var(--font-body, inherit); }

  /* ── Forms & interactive baseline (Phase D) ── */
  .pz-button {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5em;
    min-block-size: 44px;
    padding: var(--space-xs) var(--space-lg);
    border-radius: var(--radius-md, 8px);
    border: 1px solid transparent;
    font: inherit; font-weight: var(--font-weight-medium, 500);
    cursor: pointer;
    transition: background var(--motion-duration-fast) var(--motion-ease-out),
                color var(--motion-duration-fast) var(--motion-ease-out),
                border-color var(--motion-duration-fast) var(--motion-ease-out);
  }
  .pz-button--primary { background: var(--color-brand-primary, #2b6cb0); color: var(--color-on-brand-primary, #fff); }
  .pz-button--primary:hover  { background: var(--color-brand-primary-hover, var(--color-brand-primary)); }
  .pz-button--primary:active { background: var(--color-brand-primary-active, var(--color-brand-primary)); }
  .pz-button--secondary { background: var(--color-surface-card, #f7fafc); color: var(--color-text-default, #1a202c); border-color: var(--color-border-default, #e2e8f0); }
  .pz-button--secondary:hover { background: var(--color-surface-muted, #edf2f7); }
  .pz-button--ghost { background: transparent; color: var(--color-brand-primary, #2b6cb0); }
  .pz-button--ghost:hover { background: var(--color-surface-muted, #edf2f7); }
  .pz-button[disabled], .pz-button[aria-disabled="true"] { opacity: var(--opacity-disabled, 0.5); cursor: not-allowed; }

  .pz-input, .pz-select, .pz-textarea {
    display: block;
    inline-size: 100%;
    min-block-size: 44px;
    padding: var(--space-xs) var(--space-sm);
    border: 1px solid var(--color-border-default, #e2e8f0);
    border-radius: var(--radius-md, 8px);
    background: var(--color-surface-page, #fff);
    color: var(--color-text-default, #1a202c);
    font: inherit;
    line-height: var(--leading-snug);
    transition: border-color var(--motion-duration-fast) var(--motion-ease-out),
                box-shadow var(--motion-duration-fast) var(--motion-ease-out);
  }
  .pz-textarea { min-block-size: 6em; resize: vertical; }
  .pz-input:focus-visible, .pz-select:focus-visible, .pz-textarea:focus-visible {
    border-color: var(--color-border-focus, var(--color-brand-primary, #3b82f6));
    box-shadow: 0 0 0 3px var(--color-brand-primary-focus-ring, rgba(43,108,176,0.3));
    outline: none;
  }
  .pz-input[aria-invalid="true"], .pz-select[aria-invalid="true"], .pz-textarea[aria-invalid="true"] {
    border-color: var(--color-semantic-danger, #e53e3e);
  }

  .pz-checkbox, .pz-radio { inline-size: 1.15em; block-size: 1.15em; accent-color: var(--color-brand-primary, #2b6cb0); }

  .pz-switch {
    --switch-w: 2.4em; --switch-h: 1.4em;
    position: relative;
    inline-size: var(--switch-w);
    block-size: var(--switch-h);
    background: var(--color-border-default, #e2e8f0);
    border-radius: 999px;
    appearance: none;
    cursor: pointer;
    transition: background var(--motion-duration-fast) var(--motion-ease-out);
  }
  .pz-switch::before {
    content: "";
    position: absolute;
    inset: 2px auto 2px 2px;
    inline-size: calc(var(--switch-h) - 4px);
    background: #fff;
    border-radius: 999px;
    transition: transform var(--motion-duration-fast) var(--motion-ease-out);
  }
  .pz-switch:checked { background: var(--color-brand-primary, #2b6cb0); }
  .pz-switch:checked::before { transform: translateX(calc(var(--switch-w) - var(--switch-h))); }

  .pz-link {
    color: var(--color-text-link, var(--color-brand-primary, #2b6cb0));
    text-decoration: underline;
    text-underline-offset: 0.15em;
  }
  .pz-link:hover { color: var(--color-text-linkHover, var(--color-brand-primary, #2b6cb0)); }

  /* Container-query helpers for blocks. */
  [data-block] { container-type: inline-size; }
}