/* FRAZ opt-in role classes. No element resets and no page-wide overrides.
   Adopt a role only while deleting its former page-owned declarations. */
@layer base {
  :where(.fraz-site) :where(p,h1,h2,h3,figure,blockquote,ul,ol) { margin: 0; }
  .fraz-type-display { font-family: var(--fraz-heading-font); font-size: var(--fraz-type-display-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-display-leading); letter-spacing: var(--fraz-type-display-tracking); }
  .fraz-type-legal-title { font-family: var(--fraz-heading-font); font-size: var(--fraz-type-legal-title-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-legal-title-leading); letter-spacing: var(--fraz-type-heading-tracking); }
  .fraz-type-heading { font-family: var(--fraz-heading-font); font-size: var(--fraz-type-heading-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-heading-leading); letter-spacing: var(--fraz-type-heading-tracking); }
  .fraz-type-service-title { font-family: var(--fraz-heading-font); font-size: var(--fraz-type-service-title-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-service-title-leading); letter-spacing:var(--fraz-type-service-title-tracking); }
  .fraz-type-card-title { font-family: var(--fraz-heading-font); font-size: var(--fraz-type-card-title-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-card-leading); letter-spacing: var(--fraz-type-card-tracking); }
  .fraz-type-card-title--dense { line-height: var(--fraz-type-card-dense-leading); letter-spacing: var(--fraz-type-card-dense-tracking); }
  .fraz-type-subheading { font-family: var(--fraz-heading-font); font-size: var(--fraz-type-subheading-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-subheading-leading); }
  .fraz-type-lead { font-family: var(--fraz-body-font); font-size: var(--fraz-type-lead-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-lead-leading); letter-spacing: var(--fraz-type-lead-tracking); }
  .fraz-type-body { font-family: var(--fraz-body-font); font-size: var(--fraz-type-body-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-body-leading); }
  .fraz-type-body-small { font-family: var(--fraz-body-font); font-size: var(--fraz-type-body-small-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-body-leading); }
  .fraz-type-fine { font-family: var(--fraz-body-font); font-size: var(--fraz-type-fine-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-body-leading); }
  .fraz-type-label { font-family: var(--fraz-mono-font); font-size: var(--fraz-type-label-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-label-leading); letter-spacing: var(--fraz-type-label-tracking); text-transform: uppercase; }
  .fraz-type-meta { font-family: var(--fraz-mono-font); font-size: var(--fraz-type-meta-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-meta-leading); }
  .fraz-type-control { font-family: var(--fraz-mono-font); font-size: var(--fraz-type-control-size); font-weight: var(--fraz-type-control-weight); line-height: var(--fraz-type-control-leading); letter-spacing: var(--fraz-type-control-tracking); text-transform: uppercase; }
  .fraz-type-navigation { font-family: var(--fraz-mono-font); font-size: var(--fraz-type-navigation-size); font-weight: var(--fraz-weight-regular); line-height: var(--fraz-type-control-leading); letter-spacing: var(--fraz-type-navigation-tracking); }
  .fraz-layout-section { margin-block-start: var(--fraz-layout-section-gap); }
  .fraz-layout-panel { padding-block: var(--fraz-layout-panel-space); }
  .fraz-layout-hero { padding-block-start: var(--fraz-layout-hero-top); }
  .fraz-layout-title-lead { margin-block-start: var(--fraz-layout-title-lead-gap); }
  .fraz-layout-lead-action { margin-block-start: var(--fraz-layout-lead-action-gap); }
  .fraz-layout-heading-text { margin-block-end: var(--fraz-layout-heading-text-gap); }
  .fraz-layout-label-title { margin-block-end: var(--fraz-layout-label-gap); }
  .fraz-layout-hero-lead { width: var(--fraz-layout-lead-measure); max-width: 100%; }
  .fraz-foundation-container { box-sizing: border-box; width: 100%; max-width: var(--fraz-layout-container); margin-inline: auto; padding-inline: var(--fraz-layout-gutter); }
  .fraz-foundation-lead { max-width: var(--fraz-layout-lead-measure); }
  .fraz-foundation-legal { max-width: var(--fraz-layout-legal-measure); }
  .fraz-foundation-scope :where(a,button,input,textarea,select,summary):focus-visible { outline: var(--fraz-line-frame) solid var(--fraz-color-accent-hover,var(--fraz-color-ice-hover)); outline-offset: var(--fraz-focus-offset); }
  .fraz-contact-form::after { content:''; position:absolute; top:0; left:0; right:0; border-top:var(--fraz-line-hairline) solid var(--fraz-color-line-strong); pointer-events:none; }
}
