/* The Rubber Initiative - shared styles
   These sit on top of Tailwind (loaded via CDN in each page head).
   Keep rules sparse: Tailwind utilities should carry most of the load. */

body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  font-feature-settings: 'ss01', 'cv11';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6, .font-headline {
  font-family: 'Manrope', 'Inter', system-ui, sans-serif;
  letter-spacing: -0.02em;
}

/* Material Symbols baseline */
.material-symbols-outlined {
  font-variation-settings: 'FILL' 0, 'wght' 300, 'GRAD' 0, 'opsz' 24;
  vertical-align: middle;
}

/* The polymer pattern: hexagonal molecular texture at 5% opacity.
   Used as a "subliminal" background per the Industrial Intelligence design system. */
.polymer-pattern {
  background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0l25.98 15v30L30 60 4.02 45V15z' fill-rule='evenodd' stroke='%23002045' stroke-width='0.5' fill='none' opacity='0.08'/%3E%3C/svg%3E");
  background-size: 60px 60px;
}

.polymer-pattern-light {
  background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0l25.98 15v30L30 60 4.02 45V15z' fill-rule='evenodd' stroke='%23ffffff' stroke-width='0.5' fill='none' opacity='0.12'/%3E%3C/svg%3E");
  background-size: 60px 60px;
}

/* An SVG hero placeholder so we never ship a broken <img>.
   Replace with real photography using the image slots marked TODO: image. */
.hero-geo-block {
  background:
    radial-gradient(circle at 20% 20%, rgba(173,199,247,0.25), transparent 55%),
    radial-gradient(circle at 80% 70%, rgba(118,214,213,0.18), transparent 60%),
    linear-gradient(135deg, #002045 0%, #1a365d 100%);
  position: relative;
  overflow: hidden;
}

.hero-geo-block::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0l25.98 15v30L30 60 4.02 45V15z' fill-rule='evenodd' stroke='%23ffffff' stroke-width='0.5' fill='none' opacity='0.18'/%3E%3C/svg%3E");
  background-size: 48px 48px;
  pointer-events: none;
}

/* Small asymmetric offset (used by the prompt's editorial rule) */
.asymmetric-offset { margin-left: 20%; }
@media (max-width: 768px) { .asymmetric-offset { margin-left: 0; } }

/* Horizontal testimonial rail */
.hide-scrollbar { scrollbar-width: none; }
.hide-scrollbar::-webkit-scrollbar { display: none; }

/* Cookie consent banner */
.cookie-banner {
  position: fixed;
  inset-inline: 1rem;
  bottom: 1rem;
  z-index: 60;
  display: none;
  background: #002045;
  color: #ffffff;
  border-radius: 0.75rem;
  padding: 1rem 1.25rem;
  box-shadow: 0 20px 60px rgba(0, 32, 69, 0.25);
  max-width: 56rem;
  margin-inline: auto;
  font-size: 0.875rem;
  line-height: 1.5;
}
.cookie-banner.visible { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
.cookie-banner a { color: #adc7f7; text-decoration: underline; }
.cookie-banner button {
  background: #ffffff;
  color: #002045;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  font-weight: 700;
  font-family: 'Manrope', sans-serif;
}

/* Focus ring, accessible */
:focus-visible {
  outline: 2px solid #002045;
  outline-offset: 3px;
  border-radius: 2px;
}

/* Small helper: prose spacing for bios without bullets */
.prose-bio p { margin-bottom: 1rem; }
.prose-bio p:last-child { margin-bottom: 0; }

/* Scroll reveal: fade and rise 12px on first entry. Single-fire.
   Progressive enhancement: only hides when JS is available (html.js).
   Without JS, content is visible by default - no gating on animation.
   Respects prefers-reduced-motion so users with vestibular concerns stay still. */
.js .reveal {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 400ms ease-out, transform 400ms ease-out;
  will-change: opacity, transform;
}
.js .reveal.is-visible {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
