/* Michael Oracle / Michael Oracle Solutions.
   OraclePulse-based hierarchy; enlarged one step site-wide on 20 October 2026.
   A named layer makes these important typography rules authoritative over
   legacy unlayered template overrides. Layout and icon fonts stay separate. */
@font-face{font-family:Poppins;src:url(poppins-latin-400-normal.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Poppins;src:url(poppins-latin-500-normal.woff2) format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Poppins;src:url(poppins-latin-600-normal.woff2) format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Montserrat;src:url(montserrat-latin-600-normal.woff2) format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Montserrat;src:url(montserrat-latin-700-normal.woff2) format('woff2');font-weight:700;font-display:swap}
@layer brandTypography {
  .oracle-type {
    --mo-font-body: Poppins, Arial, sans-serif;
    --mo-font-heading: Montserrat, Arial, sans-serif;
    --mo-type-hero: clamp(34px, 3.3vw, 47px);
    --mo-type-section: 28px;
    --mo-type-card: 22px;
    --mo-type-small-heading: 20px;
    --mo-type-body: 16px;
    --mo-type-secondary: 15px;
    --mo-type-label: 14px;
    --mo-type-meta: 13px;
    --mo-type-caption: 12px;
    --mo-type-button: 14px;
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-body) !important;
    line-height: 1.9 !important;
  }
  /* Semantic hierarchy: the same role has the same size on every page. */
  .oracle-type :is(h1,h2,h3,h4,h5,h6) {
    font-family: var(--mo-font-heading) !important;
    font-weight: 600 !important;
    letter-spacing: -.03em !important;
    line-height: 1.35 !important;
  }
  .oracle-type h1 { font-size: var(--mo-type-hero) !important; line-height:1.2 !important; }
  .oracle-type h2 { font-size: var(--mo-type-section) !important; }
  .oracle-type h3 { font-size: var(--mo-type-card) !important; }
  .oracle-type :is(h4,h5) { font-size: var(--mo-type-small-heading) !important; }
  .oracle-type h6 { font-size: 18px !important; }
  .oracle-type :is(h1,h2,h3,h4,h5,h6) :is(a,span) { font-size: inherit !important; font-family: inherit !important; line-height: inherit !important; }
  .oracle-type :is(p,li,dd,dt,blockquote) {
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-body) !important;
    line-height: 1.9 !important;
    letter-spacing: normal !important;
  }
  .oracle-type :is(.lead,.disc,.description,.card-para,.service-para,.ex-para,.edu-para,.box-para,.testimonial-copy,.case-lead,.intro-copy,.oracle-years-body,.field-guide,.case-role) {
    font-size: var(--mo-type-body) !important;
    line-height: 1.9 !important;
    font-family: var(--mo-font-body) !important;
  }
  .oracle-type a { font-family: inherit !important; }
  .oracle-type :is(nav,.topbar,.portfolio-site-switcher,.case-index,.app-tabs) a,
  .oracle-type :is(.text-link,.text-button,.case-text-link,.back-link) {
    font-size: var(--mo-type-secondary) !important;
    line-height: 1.8 !important;
  }
  .oracle-type :is(.button,.header-cta,.tmp-btn,.primary-button,.secondary-button,.submit-button,.case-read,.oracle-carousel-pause),
  .oracle-type button:not([class*="arrow"]):not(#menu-toggle):not([data-case-prev]):not([data-case-next]),
  .oracle-type .btn-text {
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-button) !important;
    font-weight: 500 !important;
    line-height: 1.6 !important;
    letter-spacing: normal !important;
  }
  .oracle-type :is(input,select,textarea,label,summary) {
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-label) !important;
    line-height: 1.8 !important;
    letter-spacing: normal !important;
  }
  .oracle-type textarea { font-size: var(--mo-type-body) !important; }
  /* Small text remains purposeful; body copy never becomes a micro label. */
  .oracle-type :is(.eyebrow,.subtitle,.oracle-hero-kicker,.ex-subtitle,.case-kicker,.sub-title,.price-sub-title,.step-num) {
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-caption) !important;
    font-weight: 500 !important;
    line-height: 1.8 !important;
    letter-spacing: .12em !important;
  }
  .oracle-type :is(small,figcaption,.blog-status,.blog-preview-note,.report-meta,.case-breadcrumb,.case-slider-bottom,.case-image-label,.case-facts small,.case-browser-bar,.case-browser-bar small,.catalogue-note,.review-preview-note) {
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-meta) !important;
    line-height: 1.8 !important;
  }
  .oracle-type :is(.case-facts strong,.blog-byline strong,.blog-byline span,.case-editorial p,.case-editorial li,.case-stack dt,.case-stack dd,.case-results p,.feedback-details,.signature small) {
    font-size: var(--mo-type-secondary) !important;
    line-height: 1.9 !important;
  }
  .oracle-type :is(.case-tagline,.custom-title,.oracle-years-title,.ft-title) {
    font-family: var(--mo-font-heading) !important;
    font-size: var(--mo-type-card) !important;
    font-weight: 600 !important;
    line-height: 1.4 !important;
  }
  .oracle-type :is(.main-price,.laptop-price,.product-price,.case-results strong) {
    font-family: var(--mo-font-heading) !important;
    font-size: 28px !important;
    line-height: 1.35 !important;
    font-weight: 600 !important;
  }
  .oracle-type :is(.per-month,.ex-title,.edu-title,.case-slider-bar > p) {
    font-size: var(--mo-type-secondary) !important;
    line-height: 1.8 !important;
  }
  .oracle-type :is(.topbar,.portfolio-site-switcher,.brief-header) :is(span,a) {
    font-size: var(--mo-type-label) !important;
    line-height: 1.8 !important;
  }
  /* The same footer appears on company, portfolio, review and project pages. */
  .oracle-type .footer-area .description,
  .oracle-type .footer-area .description span {
    font-family: var(--mo-font-heading) !important;
    font-size: var(--mo-type-section) !important;
    line-height: 1.4 !important;
    letter-spacing: -.02em !important;
  }
  .oracle-type .footer-area .ft-title { font-size: var(--mo-type-card) !important; }
  .oracle-type .footer-area :is(.ft-link,.ft-link li,.ft-link a) {
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-secondary) !important;
    line-height: 1.9 !important;
  }
  .oracle-type :is(.copyright-area-one,.chooser-legal) :is(p,li,a,span) {
    font-family: var(--mo-font-body) !important;
    font-size: var(--mo-type-caption) !important;
    line-height: 1.9 !important;
  }
  .oracle-type .chooser-footer { font-size: var(--mo-type-secondary) !important; }
  /* Portfolio text classes use semantic tokens, including old mobile rules. */
  .oracle-type .oracle-about-carousel .card-title { font-size: var(--mo-type-card) !important; }
  .oracle-type .oracle-about-carousel .card-para { font-size: var(--mo-type-body) !important; }
  .oracle-type .case-slide h3 { font-size: var(--mo-type-card) !important; }
  .oracle-type .case-slide-body > p:not(.case-kicker) { font-size: var(--mo-type-body) !important; }
  .oracle-type .case-slider-bottom > span { font-size: var(--mo-type-meta) !important; }
  .oracle-type .case-read { font-size: var(--mo-type-button) !important; }
  .oracle-type .article-body :is(p,li),
  .oracle-type .post-body :is(p,li),
  .oracle-type .entry-content :is(p,li) { font-size: var(--mo-type-body) !important; }
  @media (max-width:767px) {
    .oracle-type { --mo-type-hero:38px; --mo-type-section:26px; --mo-type-card:20px; }
    .oracle-type :is(input,select,textarea) { font-size:16px !important; }
    .oracle-type :is(.main-price,.laptop-price,.product-price,.case-results strong) { font-size:26px !important; }
  }
  @media (max-width:380px) { .oracle-type { --mo-type-hero:34px; } }
  @media print {
    .oracle-type { --mo-type-body:11pt; --mo-type-secondary:10pt; --mo-type-label:10pt; --mo-type-meta:9pt; --mo-type-caption:9pt; }
  }
}

/* Shared CTA geometry. Text metrics and touch-target height are independent. */
@layer brandButtons {
  .oracle-type :is(.tmp-btn,.button,.header-cta) {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    height: auto !important;
    min-height: 48px !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 12px 24px !important;
    gap: 12px !important;
    vertical-align: middle !important;
    text-align: center !important;
    white-space: normal !important;
  }
  .oracle-type .tmp-btn .icon-reverse-wrapper {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    position: static !important;
    gap: 10px !important;
    height: auto !important;
    min-height: 0 !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
  }
  .oracle-type .tmp-btn .btn-text {
    display: block !important;
    position: relative !important;
    z-index: 2 !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    text-align: center !important;
    transition: none !important;
  }
  .oracle-type .tmp-btn .btn-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    position: relative !important;
    z-index: 2 !important;
    flex: 0 0 auto !important;
    margin: 0 !important;
    padding: 0 !important;
    opacity: 1 !important;
    transform: none !important;
    order: 0 !important;
    line-height: 1 !important;
    transition: none !important;
  }
  .oracle-type .tmp-btn .btn-icon + .btn-icon { display: none !important; }
  .oracle-type .tmp-btn .btn-icon i {
    top: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
    transform: none !important;
    opacity: 1 !important;
  }
  .oracle-type .button > span,
  .oracle-type .header-cta > span { display:inline-flex !important; align-items:center !important; line-height:1 !important; }
  .oracle-type .tmp-btn :is(.btn-bg,.btn-bg-hover,.btn-hack) { pointer-events:none !important; }
  .oracle-type .button-area-banner-one {
    display: flex !important;
    align-items: stretch !important;
    flex-wrap: wrap !important;
    gap: 12px !important;
  }
  .oracle-type :is(.tmp-btn,.button,.header-cta):focus-visible {
    outline: 2px solid #83d8ff !important;
    outline-offset: 4px !important;
  }
  @media (max-width:767px) {
    .oracle-type .button-area-banner-one .tmp-btn { flex:1 1 180px !important; }
  }
}
