/*! Arcalea Core - shared tokens + nav + footer + CTA + mobile nav.
 *  Linked site-wide via <link rel="stylesheet" href="arcalea-core.css">.
 *  Inline page CSS may override these rules where customization is needed.
 */

/* === Design tokens === */
:root {
  --navy-500: #273673; --navy-600: #233169; --navy-700: #1c2752;
      --navy-800: #151e3f; --navy-900: #101730;
      --orange-300: #efb774; --orange-400: #eca959; --orange-500: #e79430;
      --orange-600: #d2872c; --orange-700: #a46922;
      --grey-50: #f6f6f6; --grey-100: #e9e9e9; --grey-200: #bababa;
      --grey-300: #989898; --grey-400: #6a6a6a; --grey-500: #4d4d4d;
      --grey-900: #202020; --white: #ffffff;
      --blue-500: #56AEE3; --blue-600: #4a9fd4; --blue-700: #2a6fa0;
      --teal-500: #1a7a6e; --teal-600: #156159;
      --purple-500: #6b4fbb; --purple-600: #5a40a0;
}

/* === Reset === */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
body { overflow-x: hidden; }
img { max-width: 100%; height: auto; }

/* === Buttons / CTAs === */
.cta-primary {
  display: inline-flex; align-items: center; gap: 0.5rem;
      background: var(--orange-500); color: var(--white); text-decoration: none;
      font-family: 'Gilroy', sans-serif; font-size: 0.9rem; font-weight: 700;
      letter-spacing: 0.06em; text-transform: uppercase; padding: 1rem 2.25rem;
      border-radius: 4px; transition: background 0.2s, transform 0.2s;
}
.cta-primary:hover {
  background: var(--orange-600); transform: translateY(-2px);
}
/* Live-site primary-button shimmer (matches arcalea.com .cta-primary). Applies to the canonical CTA and the tool-page hero CTA. */
.cta-primary, .hero-cta-primary, .door-ai { position: relative; overflow: hidden; }
.cta-primary::before, .hero-cta-primary::before, .door-ai::before {
  content: ""; position: absolute; top: 0; left: 0; bottom: 0; width: 50%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,0.18), transparent);
  transform: translateX(-180%); animation: btn-shimmer 3.2s ease-in-out 0s infinite;
  pointer-events: none; z-index: 1;
}
/* Forward / Continue buttons reuse the brand button look but must NOT shimmer (shimmer is the hero only). Add the no-shimmer modifier. */
.cta-primary.no-shimmer::before, .hero-cta-primary.no-shimmer::before, .door-ai.no-shimmer::before { content: none; }
@keyframes btn-shimmer { 0% { transform: translateX(-180%); } 100% { transform: translateX(180%); } }
@media (prefers-reduced-motion: reduce) { .cta-primary::before, .hero-cta-primary::before, .door-ai::before { animation: none; } }
.cta-secondary {
  display: inline-flex; align-items: center; gap: 0.5rem;
      background: transparent; color: var(--navy-500); text-decoration: none;
      font-family: 'Gilroy', sans-serif; font-size: 0.9rem; font-weight: 700;
      letter-spacing: 0.04em; text-transform: uppercase; padding: 1rem 2rem;
      border-radius: 4px; border: 1.5px solid var(--grey-200);
      transition: border-color 0.2s, color 0.2s;
}
.cta-secondary:hover {
  border-color: var(--navy-500); color: var(--navy-600);
}

/* === Main Nav === */
.nav-links {
  display: flex; gap: 2.25rem; align-items: center;
}
.nav-cta {
  background: var(--orange-500) !important; color: var(--white) !important; line-height: 1.2 !important;
      padding: 0.65rem 1.75rem !important; border-radius: 4px; text-transform: uppercase !important;
      letter-spacing: 0.08em !important; font-size: 0.8rem !important; font-weight: 700 !important;
      transition: all 0.2s !important;
}
.nav-cta:hover {
  background: var(--orange-600) !important; transform: translateY(-1px);
}
.nav-cta::after {
  display: none !important;
}
.nav-dropdown {
  position: relative;
}
.nav-dropdown-trigger {
  background: none; border: none; cursor: pointer; color: var(--grey-500);
      font-size: 0.85rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
      font-family: 'Gilroy', sans-serif; padding: 0; display: flex; align-items: center;
      gap: 0.28rem; transition: color 0.2s;
}
.nav-dropdown-trigger:hover {
  color: var(--navy-500);
}
.nav-caret {
  font-size: 0.58em; transition: transform 0.2s ease; display: inline-block; line-height: 1;
}
.nav-dropdown:hover .nav-caret, .nav-dropdown:focus-within .nav-caret {
  transform: rotate(180deg);
}
.nav-dropdown-menu {
  position: absolute; top: calc(100% + 0.9rem); left: -1rem;
      background: #fff; border-radius: 8px; box-shadow: 0 8px 28px rgba(0,0,0,0.12);
      padding: 0.4rem; min-width: 168px; opacity: 0; visibility: hidden;
      transform: translateY(-6px); transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s; z-index: 200;
}
.nav-dropdown:hover .nav-dropdown-menu, .nav-dropdown:focus-within .nav-dropdown-menu {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.nav-dropdown-menu a {
  display: block; padding: 0.55rem 1rem; border-radius: 5px;
      color: var(--navy-500); font-family: 'Gilroy', sans-serif; font-size: 0.8rem; font-weight: 700;
      letter-spacing: 0.04em; text-transform: uppercase; text-decoration: none; white-space: nowrap;
      transition: background 0.15s, color 0.15s;
}
.nav-dropdown-menu a:hover {
  background: var(--grey-50); color: var(--orange-500);
}
.nav-hamburger {
  display: none; flex-direction: column; gap: 5px; background: none;
      border: none; cursor: pointer; padding: 0.25rem;
}
.nav-hamburger span {
  display: block; width: 24px; height: 2px; background: var(--grey-500);
      border-radius: 2px; transition: all 0.3s;
}

/* === Mobile Nav === */
.mobile-nav {
  position: fixed !important; inset: 0; background: var(--navy-900) !important; z-index: 200;
      display: flex; flex-direction: column; padding: 1.5rem 2rem !important; overflow-y: auto !important;
      opacity: 0; pointer-events: none;
      transition: opacity 0.25s ease, transform 0.35s cubic-bezier(0.16,1,0.3,1);
}
.mobile-nav.open {
  opacity: 1; pointer-events: all; transform: translateX(0);
}
.mobile-nav-close {
  background: none; border: none; color: rgba(255,255,255,0.5); font-size: 1.75rem;
      cursor: pointer; align-self: flex-end; margin-bottom: 1.5rem; line-height: 1;
      transition: color 0.2s;
}
.mobile-nav-close:hover { color: var(--white); }
.mobile-nav-links {
  display: flex !important; flex-direction: column !important; gap: 0 !important;
      align-items: stretch !important;
      max-width: 280px; margin: 0 auto; width: 100%;
}
.mobile-nav-group {
  margin-bottom: 1.75rem !important;
}
.mobile-nav-group:last-child { margin-bottom: 0.75rem !important; }
.mobile-group-label {
  font-family: 'Gilroy', sans-serif; font-size: 0.62rem !important; font-weight: 700;
      color: rgba(255,255,255,0.3) !important; letter-spacing: 0.18em; text-transform: uppercase;
      display: block !important; margin-bottom: 0.4rem; padding-bottom: 0.4rem;
      border-bottom: 1px solid rgba(255,255,255,0.06);
}
.mobile-nav-links a, .mobile-sub {
  display: block !important; padding: 0.55rem 0 !important;
      font-family: 'Gilroy', sans-serif; font-size: 0.95rem !important; font-weight: 700;
      color: rgba(255,255,255,0.8) !important; text-decoration: none !important;
      text-transform: uppercase !important; letter-spacing: 0.04em;
      border-bottom: 1px solid rgba(255,255,255,0.06) !important;
}
.mobile-nav-links a:hover { color: var(--white) !important; }
.mobile-nav-links .mobile-cta {
  display: block !important; margin-top: 1rem; background: var(--orange-500);
      color: var(--white) !important; padding: 0.85rem 2rem !important; border-radius: 4px;
      font-size: 0.82rem !important; letter-spacing: 0.08em; text-align: center;
      border-bottom: none !important; transition: background 0.2s;
      text-transform: uppercase !important;
}
.mobile-nav-links .mobile-cta:hover { background: var(--orange-600); }

/* === Global Mobile Nav === */
@media (max-width: 960px) {
  .nav-links { display: none !important; }
  .nav-hamburger { display: flex !important; }
}

/* === Global Tablet (≤ 900px) === */
@media (max-width: 900px) {
  nav { padding: 0.9rem 1.5rem !important; }
  nav.scrolled { padding: 0.6rem 1.5rem !important; }
}

/* === Global Phone (≤ 480px) === */
@media (max-width: 480px) {
  nav { padding: 0.75rem 1rem !important; }
  nav.scrolled { padding: 0.5rem 1rem !important; }
}

/* Footer rules intentionally NOT included here.
 * Each page's inline CSS owns the footer to avoid variant conflicts
 * (the reference page carried both compact and full footer rules,
 * which collided when collapsed into a single stylesheet).
 */

/* === Global Table Standards ===
 * th:  navy-500 bg, white text - always, regardless of section background
 * td:  explicit white bg (odd rows) so tables read on both white AND grey sections
 * even rows: #f7f9fc (blue-tinted) - creates stripe contrast against white odd rows
 * hover: #e8f0fa - visible over both stripe colors
 * No per-page overrides needed; explicit backgrounds handle the grey-section exception.
 */
/* Responsive table wrapper - prevents horizontal overflow on mobile */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; width: 100%; }
table { width: 100%; border-collapse: collapse; font-size: 0.84rem; }
@media (max-width: 680px) { table { font-size: 0.78rem; } table th, table td { padding: 0.65rem 0.75rem; } }
table th { background: var(--navy-500); color: var(--white); font-family: 'Gilroy', sans-serif; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 0.75rem 1rem; text-align: left; }
table td { padding: 1rem; border-bottom: 1px solid var(--grey-100); color: var(--grey-500); vertical-align: top; background: var(--white); }
table tr:last-child td { border-bottom: none; }
table tr:nth-child(even) td { background: #f7f9fc; }
table tr:hover td { background: #e8f0fa; }

/* === Related Reading (shared across blog posts and service/platform pages) === */
.section-related { background: var(--white); padding: 4.5rem 2rem; }
.section-related .inner { max-width: 1100px; margin: 0 auto; }
.section-related h2 { font-family: 'Gilroy', sans-serif; font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; color: var(--navy-500); letter-spacing: -0.02em; margin-bottom: 0.5rem; }
.section-related .related-sub { font-size: 0.95rem; color: var(--grey-400); line-height: 1.6; margin-bottom: 0; }
.related-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; margin-top: 2.5rem; }
.related-card { border: 1px solid var(--grey-100); border-radius: 8px; padding: 1.75rem; transition: all 0.3s; }
.related-card:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0,0,0,0.07); }
a.related-card { text-decoration: none; color: inherit; display: block; }
a.related-card:hover { text-decoration: none; }
.related-tag { font-family: 'Gilroy', sans-serif; font-size: 0.66rem; font-weight: 700; color: var(--orange-400); letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 0.6rem; }
.related-card h3 { font-size: 0.95rem; font-weight: 700; color: var(--navy-500); margin-bottom: 0.6rem; line-height: 1.4; }
.related-card p { font-size: 0.82rem; color: var(--grey-400); line-height: 1.65; margin-bottom: 1.1rem; }
.related-read { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--orange-500); font-family: 'Gilroy', sans-serif; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.02em; margin-top: 0.2rem; }
@media (max-width: 900px) { .related-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .related-grid { grid-template-columns: 1fr; } }

/* === Skip link (a11y) === */
.skip-link{position:absolute;left:-9999px;top:0;z-index:9999;background:#273673;color:#fff;padding:.75rem 1.25rem;border-radius:0 0 6px 0;text-decoration:none;font-weight:600;font-size:.9rem}
.skip-link:focus{left:0;outline:3px solid #f59e0b;outline-offset:2px}

/* === Tool Action Row (shared across all diagnostic tool pages) === */
.tool-actions-wrap { max-width: 860px; margin: 0 auto; padding: 0 2.5rem 1.5rem; }
/* Action row = utilities (Share, Download PDF), centered and natural-width, never a full-width primary bar. Navy is a heading color, never an action role (CTA convention, June 26 2026). */
.calc-action-row { display: flex; justify-content: center; gap: 0.65rem; padding-top: 1.25rem; border-top: 1px solid var(--grey-100); margin-top: 1.25rem; }
.action-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; padding: 0.6rem 1.4rem; border-radius: 6px; font-family: 'Gilroy', sans-serif; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; cursor: pointer; border: none; transition: all 0.2s; flex: 0 1 auto; }
.action-btn svg { flex-shrink: 0; }
.action-btn-primary { background: #fff; color: var(--teal-600,#0f766e); border: 1.5px solid var(--teal-500,#1a7a6e); }
.action-btn-primary:hover { background: #e1f5ee; border-color: var(--teal-600,#0f766e); transform: translateY(-1px); }
.action-btn-primary:disabled { opacity: 0.55; cursor: default; transform: none; }
.action-btn-secondary { background: var(--white); color: var(--navy-500); border: 1.5px solid var(--navy-300); }
.action-btn-secondary:hover { background: var(--grey-50); transform: translateY(-1px); }
.action-btn-secondary:disabled { opacity: 0.55; cursor: default; transform: none; }
.autosave-row { display: flex; align-items: center; justify-content: flex-end; gap: 0.35rem; margin-top: 0.5rem; height: 16px; opacity: 0; transition: opacity 1.8s; }
.autosave-row .as-dot { width: 6px; height: 6px; border-radius: 50%; background: #059669; flex-shrink: 0; }
.autosave-row .as-text { font-size: 0.7rem; color: var(--grey-400); font-family: 'Avenir LT Std', sans-serif; }