/* The Sign Catalog Theme 3.0: mobile-first global refinement. */
:root {
  --tsc-navy: #0b3a67;
  --tsc-navy-dark: #062b4d;
  --tsc-blue: #1769aa;
  --tsc-gold: #f3ad19;
  --tsc-ink: #152231;
  --tsc-muted: #586777;
  --tsc-border: #d7e0e8;
  --tsc-surface: #f4f7fa;
  --tsc-white: #fff;
  --tsc-focus: #ffbf47;
  --tsc-radius-sm: .5rem;
  --tsc-radius: .875rem;
  --tsc-radius-lg: 1.25rem;
  --tsc-shadow-sm: 0 .35rem 1rem rgba(6,43,77,.08);
  --tsc-shadow: 0 1.1rem 3rem rgba(6,43,77,.14);
  --tsc-container: 76rem;
  --tsc-space-1: .5rem;
  --tsc-space-2: .75rem;
  --tsc-space-3: 1rem;
  --tsc-space-4: 1.5rem;
  --tsc-space-5: 2rem;
  --tsc-space-6: 3rem;
  --tsc-space-7: 4.5rem;
}

html { scroll-padding-top: 5rem; }
body { overflow-wrap: anywhere; -webkit-font-smoothing: antialiased; }
body.menu-is-open { overflow: hidden; touch-action: none; }
.site-container { width: min(calc(100% - 2rem), var(--tsc-container)); }
.site-main { overflow: clip; }
:where(a, button, input, select, textarea, summary):focus-visible { outline: 3px solid var(--tsc-focus); outline-offset: 3px; }
:where(button, .button, .wp-element-button, input[type="submit"]) { touch-action: manipulation; }

/* Header */
.site-header { position: sticky; top: 0; z-index: 1000; box-shadow: 0 1px 0 rgba(6,43,77,.12); }
.utility-bar { display: none; }
.site-header .header-inner { min-height: 4.25rem; padding-block: .5rem; gap: .75rem; }
.site-header .site-branding { min-width: 0; flex: 1 1 auto; }
.site-header .custom-logo-link,
.site-header .site-logo-link { display: inline-flex; align-items: center; max-width: 11rem; }
.site-header .custom-logo,
.site-header .site-logo-image { display: block; width: auto; max-width: 100%; max-height: 3.25rem; }
.header-actions { display: flex; align-items: center; gap: .5rem; }
.header-quote { display: inline-flex; align-items: center; justify-content: center; min-height: 2.75rem; padding: .5rem .8rem; border-radius: .55rem; background: var(--tsc-navy); color: #fff; font-size: .88rem; font-weight: 800; text-decoration: none; }
.header-quote:hover { background: var(--tsc-navy-dark); color: #fff; }
.menu-toggle { display: inline-flex; align-items: center; justify-content: center; gap: .55rem; min-width: 3rem; min-height: 2.75rem; padding: .45rem .65rem; border: 1px solid var(--tsc-border); border-radius: .55rem; background: #fff; }
.menu-toggle-label { font-size: .85rem; font-weight: 800; }
.menu-toggle-icon { display: grid; gap: 4px; width: 1.25rem; }
.menu-toggle-icon span { display: block; height: 2px; border-radius: 2px; background: currentColor; transition: transform .18s ease, opacity .18s ease; }
.menu-toggle[aria-expanded="true"] .menu-toggle-icon span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle-icon span:nth-child(2) { opacity: 0; }
.menu-toggle[aria-expanded="true"] .menu-toggle-icon span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
.primary-navigation { position: fixed; inset: 0 0 0 auto; z-index: 1010; display: block; width: min(92vw, 25rem); max-height: 100dvh; padding: max(1rem, env(safe-area-inset-top)) 1rem max(1.25rem, env(safe-area-inset-bottom)); overflow-y: auto; overscroll-behavior: contain; background: #fff; box-shadow: -1.5rem 0 3rem rgba(6,43,77,.22); transform: translateX(105%); visibility: hidden; transition: transform .24s ease, visibility .24s; }
.primary-navigation.is-open { transform: translateX(0); visibility: visible; }
.mobile-nav-heading { display: flex; align-items: center; justify-content: space-between; min-height: 3rem; padding-bottom: .8rem; border-bottom: 1px solid var(--tsc-border); color: var(--tsc-navy); font-weight: 850; }
.mobile-nav-close { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: 50%; background: var(--tsc-surface); color: var(--tsc-navy); font-size: 2rem; line-height: 1; }
.primary-navigation .menu { display: grid; align-items: stretch; gap: 0; margin: .75rem 0 1rem; padding: 0; list-style: none; }
.primary-navigation .menu > li { position: relative; border-bottom: 1px solid var(--tsc-border); }
.primary-navigation .menu a { display: flex; align-items: center; min-height: 3.25rem; padding: .75rem 3.25rem .75rem .25rem; border-radius: 0; color: var(--tsc-ink); font-weight: 750; text-decoration: none; }
.primary-navigation .menu a:hover { background: transparent; color: var(--tsc-blue); }
.primary-navigation .current-menu-item > a,
.primary-navigation .current-menu-ancestor > a { color: var(--tsc-navy); text-decoration: underline; text-decoration-color: var(--tsc-gold); text-decoration-thickness: 3px; text-underline-offset: .35rem; }
.submenu-toggle { position: absolute; top: .25rem; right: 0; display: grid; place-items: center; width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: .45rem; background: transparent; color: var(--tsc-navy); }
.submenu-toggle span::before { content: "+"; font-size: 1.5rem; font-weight: 500; }
.submenu-toggle[aria-expanded="true"] span::before { content: "−"; }
.primary-navigation .sub-menu { position: static; display: none; min-width: 0; padding: 0 0 .7rem .85rem; border: 0; border-left: 3px solid var(--tsc-gold); border-radius: 0; box-shadow: none; opacity: 1; visibility: visible; transform: none; }
.primary-navigation .submenu-is-open > .sub-menu { display: grid; }
.primary-navigation .sub-menu a { min-height: 2.75rem; padding: .55rem .75rem; font-size: .94rem; font-weight: 650; }
.mobile-nav-actions { display: grid; gap: .7rem; padding-top: .25rem; }
.mobile-nav-actions .button { width: 100%; }
.mobile-nav-actions > a:not(.button) { color: var(--tsc-navy); font-weight: 750; }
.navigation-scrim { position: fixed; inset: 0; z-index: 1005; display: block; width: 100%; height: 100%; padding: 0; border: 0; background: rgba(5,25,44,.62); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .2s ease, visibility .2s; }
.navigation-scrim.is-visible { opacity: 1; visibility: visible; pointer-events: auto; }

/* Shared mobile rhythm */
.section,
.tsc-section { padding-block: clamp(3rem, 11vw, 4.5rem); }
.section-heading,
.tsc-section__header { margin-bottom: 1.5rem; }
.section-heading h2,
.tsc-section__header h2,
.split-section h2,
.callout h2 { font-size: clamp(1.85rem, 8.3vw, 2.65rem); line-height: 1.08; }
.home-hero { padding-block: 3.25rem; }
.home-hero-grid { grid-template-columns: 1fr; gap: 2rem; }
.home-hero h1,
.page-hero h1 { max-width: 13ch; font-size: clamp(2.35rem, 11vw, 3.4rem); line-height: 1; }
.hero-lead,
.page-hero p { font-size: 1.08rem; line-height: 1.6; }
.button,
button.button,
input[type="submit"],
.wp-element-button { min-height: 3rem; padding: .75rem 1rem; border-radius: .6rem; }
.button-row { display: grid; grid-template-columns: 1fr; width: 100%; gap: .75rem; }
.button-row > .button { width: 100%; }
.card-grid,
.image-card-grid,
.benefit-grid,
.material-card-grid,
.tsc-grid--2,
.tsc-grid--3,
.tsc-grid--4,
.archive-grid { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.service-card,
.content-card,
.sidebar-card,
.tsc-card,
.benefit-card { padding: 1.25rem; border-radius: var(--tsc-radius); box-shadow: var(--tsc-shadow-sm); }
.split-section,
.upload-layout { grid-template-columns: 1fr; gap: 2rem; }
.callout,
.tsc-page-cta,
.knowledge-callout { align-items: stretch; flex-direction: column; padding: 1.35rem; gap: 1.25rem; }
.process-list li { padding: 1rem 1rem 1rem 3.75rem; }
.tsc-process-grid { grid-template-columns: 1fr; }
.tsc-process-grid > li { padding: 1rem 1rem 1rem 3.75rem; }
.tsc-process-grid > li::before { top: .9rem; }
.hero-collage { min-height: 19rem; }
.hero-collage-primary { inset: 0 10% 11% 0; }
.hero-collage-secondary { width: 44%; height: 42%; }
.hero-collage-tertiary { width: 45%; height: 38%; }
.prose-layout > :where(p, ul, ol, blockquote, pre),
.prose-layout > :where(h2, h3, h4, h5, h6) { max-width: 100%; }

/* Footer 3.0 */
.tsc-site-footer { margin: 0; padding: 0; border-top: 4px solid var(--tsc-gold); background: linear-gradient(150deg, #062b4d 0%, #0b3a67 70%, #082f54 100%); color: #fff; }
.tsc-site-footer a { color: #fff; }
.tsc-footer-intro { display: grid; gap: 2rem; padding-block: 2.25rem 1.75rem; }
.tsc-footer-brand { max-width: 35rem; }
.tsc-footer-logo { display: inline-flex; width: min(12.5rem, 58vw); min-height: 0; margin: 0 0 1.25rem; padding: 0; background: transparent; }
.tsc-footer-logo img { display: block; width: 100%; max-height: none; filter: brightness(0) invert(1); }
.tsc-footer-summary { max-width: 36rem; margin: 0 0 .9rem; color: rgba(255,255,255,.82); font-size: 1rem; line-height: 1.6; }
.tsc-footer-service { margin: 0; padding: .7rem 0 .7rem .9rem; border-left: 3px solid var(--tsc-gold); color: #fff; font-weight: 800; line-height: 1.5; }
.tsc-footer-contact { display: grid; gap: .35rem; margin-top: 1rem; font-style: normal; }
.tsc-footer-contact a { width: fit-content; font-size: 1.03rem; font-weight: 800; }
.tsc-footer-contact a span { color: var(--tsc-gold); font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; }
.tsc-footer-cta { display: grid; gap: 1.15rem; padding: 1.35rem; border: 1px solid rgba(255,255,255,.18); border-radius: var(--tsc-radius-lg); background: rgba(255,255,255,.055); }
.tsc-footer-cta-kicker { margin: 0 0 .35rem; color: #ffc84f; font-size: .75rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.tsc-footer-cta h2 { max-width: 18ch; margin: 0; color: #fff; font-size: clamp(1.55rem, 7vw, 2.25rem); line-height: 1.12; }
.tsc-footer-cta-actions { display: grid; gap: .7rem; width: 100%; }
.tsc-footer-cta-actions .button { width: 100%; min-height: 3.1rem; }
.tsc-footer-links { padding-bottom: 1rem; }
.tsc-footer-group { border-top: 1px solid rgba(255,255,255,.18); }
.tsc-footer-group:last-child { border-bottom: 1px solid rgba(255,255,255,.18); }
.tsc-footer-group summary { position: relative; display: flex; align-items: center; justify-content: space-between; min-height: 3.5rem; padding: .7rem 2.5rem .7rem 0; color: #fff; font-size: 1rem; font-weight: 800; cursor: pointer; list-style: none; }
.tsc-footer-group summary::-webkit-details-marker { display: none; }
.tsc-footer-group summary::after { content: "+"; position: absolute; right: .25rem; font-size: 1.5rem; font-weight: 400; }
.tsc-footer-group[open] summary::after { content: "−"; }
.tsc-footer-group ul { display: grid; gap: .2rem; margin: 0; padding: 0 0 1rem; list-style: none; }
.tsc-footer-group a { display: inline-flex; min-height: 2.7rem; align-items: center; color: rgba(255,255,255,.82); text-decoration: none; }
.tsc-footer-group a:hover { color: #fff; text-decoration: underline; text-underline-offset: .25rem; }
.tsc-footer-bottom { display: flex; flex-direction: column; align-items: flex-start; gap: .8rem; padding-block: 1rem max(1.25rem, env(safe-area-inset-bottom)); border: 0; }
.tsc-footer-bottom p { margin: 0; color: rgba(255,255,255,.68); font-size: .84rem; }
.tsc-footer-top { font-size: .9rem; font-weight: 800; }

@media (min-width: 48rem) {
  .site-container { width: min(calc(100% - 3rem), var(--tsc-container)); }
  .utility-bar { display: block; }
  .section, .tsc-section { padding-block: clamp(4rem, 8vw, 6rem); }
  .button-row { display: flex; width: auto; }
  .button-row > .button { width: auto; }
  .card-grid, .image-card-grid, .benefit-grid, .material-card-grid, .tsc-grid--2, .archive-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tsc-footer-intro { grid-template-columns: minmax(0, 1fr) minmax(20rem, .85fr); align-items: center; gap: 3rem; padding-block: 3rem 2.25rem; }
  .tsc-footer-cta { padding: 1.6rem; }
  .tsc-footer-links { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 2.5rem; padding-block: 1.5rem 2rem; border-top: 1px solid rgba(255,255,255,.18); }
  .tsc-footer-group, .tsc-footer-group:last-child { border: 0; }
  .tsc-footer-group summary { min-height: 0; padding: 0 0 .8rem; border-bottom: 1px solid rgba(255,255,255,.18); cursor: default; }
  .tsc-footer-group summary::after { display: none; }
  .tsc-footer-group ul { padding-top: .65rem; }
  .tsc-footer-bottom { flex-direction: row; align-items: center; justify-content: space-between; border-top: 1px solid rgba(255,255,255,.18); }
}

@media (min-width: 64.01rem) {
  .site-header { position: relative; }
  .site-header .header-inner { min-height: 5.25rem; padding-block: .65rem; }
  .site-header .site-branding { flex: 0 0 auto; }
  .site-header .custom-logo-link, .site-header .site-logo-link { max-width: 14.5rem; }
  .header-actions, .mobile-nav-heading, .mobile-nav-actions, .navigation-scrim, .submenu-toggle { display: none; }
  .primary-navigation { position: static; display: flex; align-items: center; width: auto; max-height: none; margin-left: auto; padding: 0; overflow: visible; background: transparent; box-shadow: none; transform: none; visibility: visible; }
  .primary-navigation .menu { display: flex; align-items: center; gap: .25rem; margin: 0; }
  .primary-navigation .menu > li { border: 0; }
  .primary-navigation .menu a { min-height: 2.75rem; padding: .65rem .65rem; border-radius: .5rem; font-size: .92rem; }
  .primary-navigation .menu a:hover { background: var(--tsc-surface); }
  .primary-navigation .sub-menu { position: absolute; top: calc(100% + .15rem); left: 0; display: grid; min-width: 15rem; padding: .5rem; border: 1px solid var(--tsc-border); border-radius: var(--tsc-radius); background: #fff; box-shadow: var(--tsc-shadow); opacity: 0; visibility: hidden; transform: translateY(.4rem); }
  .primary-navigation li:hover > .sub-menu, .primary-navigation li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
  .primary-navigation .sub-menu a { padding: .6rem .7rem; }
  .home-hero-grid { grid-template-columns: minmax(0,1.08fr) minmax(22rem,.92fr); gap: clamp(2.5rem,5vw,5rem); }
  .home-hero { padding-block: clamp(4.5rem,7vw,6.75rem); }
  .card-grid, .image-card-grid, .material-card-grid, .tsc-grid--3, .archive-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .benefit-grid, .tsc-grid--4 { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .split-section { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .upload-layout { grid-template-columns: minmax(0,2fr) minmax(17rem,.75fr); }
  .tsc-process-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .callout, .tsc-page-cta, .knowledge-callout { align-items: center; flex-direction: row; padding: clamp(1.75rem,4vw,3rem); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

@media (forced-colors: active) {
  .tsc-footer-logo img { filter: none; background: Canvas; padding: .5rem; }
  .navigation-scrim { background: CanvasText; }
}

/* =========================================================
   3.0.2 DESKTOP FOOTER COMPRESSION
   Preserve the mobile accordion layout. On larger screens the
   footer becomes a compact information band instead of a second
   full-page content section.
   ========================================================= */
@media (min-width: 64.01rem) {
  .tsc-site-footer {
    border-top-width: 3px;
  }

  .tsc-footer-intro {
    display: block;
    padding-block: 1.75rem 1.4rem;
  }

  .tsc-footer-brand {
    display: grid;
    grid-template-columns: 11rem minmax(18rem, 1fr) auto;
    grid-template-areas:
      "logo summary contact"
      "logo service contact";
    align-items: center;
    column-gap: clamp(1.5rem, 3vw, 3.25rem);
    row-gap: .45rem;
    width: 100%;
    max-width: none;
  }

  .tsc-footer-logo {
    grid-area: logo;
    width: 11rem;
    margin: 0;
  }

  .tsc-footer-summary {
    grid-area: summary;
    max-width: 42rem;
    margin: 0;
    font-size: .9rem;
    line-height: 1.45;
  }

  .tsc-footer-service {
    grid-area: service;
    margin: 0;
    padding: .3rem 0 .3rem .75rem;
    font-size: .86rem;
    line-height: 1.35;
  }

  .tsc-footer-contact {
    grid-area: contact;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .3rem;
    margin: 0;
    white-space: nowrap;
  }

  .tsc-footer-contact a {
    font-size: .9rem;
  }

  /* A full CTA already appears directly above the footer on the
     homepage and core templates. Keep this conversion panel on
     phones, but remove the redundant desktop block. */
  .tsc-footer-cta {
    display: none;
  }

  .tsc-footer-links {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: start;
    gap: clamp(2rem, 5vw, 5rem);
    padding-block: 1rem 1.15rem;
    border-top: 1px solid rgba(255,255,255,.16);
  }

  .tsc-footer-group,
  .tsc-footer-group:last-child {
    margin: 0;
    border: 0;
  }

  .tsc-footer-group summary {
    min-height: 0;
    margin: 0;
    padding: 0 0 .55rem;
    border-bottom: 1px solid rgba(255,255,255,.15);
    font-size: .88rem;
    line-height: 1.25;
  }

  .tsc-footer-group ul,
  .tsc-footer-group .tsc-footer-legal {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-content: start;
    gap: .42rem 1.25rem;
    margin: 0;
    padding: .65rem 0 0;
  }

  .tsc-footer-group li {
    margin: 0;
    padding: 0;
  }

  .tsc-footer-group a {
    display: inline;
    min-height: 0;
    padding: 0;
    font-size: .82rem;
    line-height: 1.35;
  }

  .tsc-footer-bottom {
    min-height: 0;
    padding-block: .8rem .9rem;
    gap: 1rem;
  }

  .tsc-footer-bottom p,
  .tsc-footer-top {
    font-size: .78rem;
  }
}

@media (min-width: 64.01rem) and (max-width: 76rem) {
  .tsc-footer-brand {
    grid-template-columns: 9.5rem minmax(15rem, 1fr) auto;
    column-gap: 1.5rem;
  }

  .tsc-footer-logo {
    width: 9.5rem;
  }
}
