.industrial-border { border: 1px solid #30363D; }
.industrial-border-premium { border: 1px solid #F0F6FC; }
.texture-brushed { background-image: repeating-linear-gradient(45deg, transparent, transparent 1px, rgba(255,255,255,0.05) 1px, rgba(255,255,255,0.05) 2px); }
.hero-gradient { background: linear-gradient(to right, #0b141c 20%, transparent 80%); }

/* Client logo ticker (home page "Trusted By" strip). */
.ticker-viewport { overflow: hidden; width: 100%; -webkit-mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent); }
.ticker-track { display: flex; align-items: flex-start; gap: 24px; width: max-content; animation: ticker-scroll 60s linear infinite; }
.ticker-viewport:hover .ticker-track { animation-play-state: paused; }
.ticker-item { flex: 0 0 auto; width: 160px; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.ticker-logo-box { width: 100%; height: 72px; display: flex; align-items: center; justify-content: center; background: #eef1f4; padding: 12px 16px; }
.ticker-item img { max-width: 100%; max-height: 100%; object-fit: contain; }
.ticker-item .ticker-wordmark { font-family: 'Hanken Grotesk', sans-serif; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; color: #45474b; font-size: 15px; text-align: center; line-height: 1.3; }
.ticker-caption { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #8f9095; font-size: 11px; text-align: center; line-height: 1.3; }
@keyframes ticker-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .ticker-track { animation: none; } }

/* Shared form controls (footer newsletter signup, contact form). */
.input-industrial, input.input-industrial, textarea.input-industrial, select.input-industrial { background-color: #141c24 !important; border: none; border-bottom: 1px solid #45474b; color: #dae3ee !important; padding-left: 1rem !important; padding-right: 1rem !important; transition: border-color 0.3s ease; width: 100%; }
.input-industrial:focus { outline: none; border-bottom-color: #247fd5; box-shadow: none; }
.btn-primary { background-color: #dfe2eb; color: #0d1117; border: 1px solid transparent; transition: all 0.3s ease; }
.btn-primary:hover { background-color: white; box-shadow: 0 0 15px rgba(255,255,255,0.1); }

/* Mobile type scale, per the "Industrial Precision" design system's own mobile guidance:
   headlines scale down significantly so technical terms don't wrap awkwardly. Hero section
   heights are handled per-page via responsive Tailwind classes (mobile-first min-h, vh sizing
   gated behind md:) rather than a global override, so every hero's mobile floor matches its
   actual content instead of one blanket value. */
@media (max-width: 767px) {
    .text-display-xl { font-size: 40px !important; letter-spacing: -0.02em !important; }
    .text-headline-lg { font-size: 32px !important; }
    .text-headline-md { font-size: 24px !important; }
}

/* Keep browser autofill from painting form controls white; matches the request-a-quote field colour. */
.input-industrial:-webkit-autofill, .input-industrial:-webkit-autofill:hover, .input-industrial:-webkit-autofill:focus { -webkit-box-shadow: 0 0 0 1000px #141c24 inset !important; -webkit-text-fill-color: #dae3ee !important; caret-color: #dae3ee; }
.input-industrial::placeholder { color: #8f9095; opacity: 1; }
