html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

.h1 { font-size: clamp(2.4rem, 5vw + .5rem, 4rem); font-weight: 700; line-height: 1.08; letter-spacing: -0.03em; }
.h2 { font-size: clamp(1.75rem, 2.2vw + 1rem, 2.625rem); font-weight: 650; line-height: 1.15; letter-spacing: -0.02em; }
.h3 { font-size: clamp(1.2rem, .4vw + 1.05rem, 1.375rem); font-weight: 600; line-height: 1.3; }
.eyebrow { font-size: .8125rem; font-weight: 600; color: #276558; letter-spacing: .02em; }

.section { padding-block: 72px; }
@media (min-width: 1024px) { .section { padding-block: 120px; } }

.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; padding: 14px 22px; border-radius: 5px; font-weight: 600; font-size: .9375rem; line-height: 1.2; transition: background-color .2s, color .2s, border-color .2s; }
.btn-primary { background: #10483D; color: #fff; }
.btn-primary:hover { background: #276558; }
.btn-secondary { border: 1px solid #111; color: #111; }
.btn-secondary:hover { background: #111; color: #fff; }
.btn:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid #276558; outline-offset: 2px; }

.link { font-weight: 600; color: #10483D; border-bottom: 1px solid currentColor; padding-bottom: 1px; transition: color .2s; }
.link:hover { color: #276558; }

.field { height: 52px; width: 100%; border: 1px solid #D8DDD9; border-radius: 4px; background: #fff; padding: 0 14px; font-size: .9375rem; color: #111; }
textarea.field { height: auto; padding: 12px 14px; }
.field:hover { border-color: #b7bfba; }

.img-zoom { overflow: hidden; }
.img-zoom img { transition: transform .3s ease; }
.img-zoom:hover img, a:hover .img-zoom img { transform: scale(1.02); }

.reveal { opacity: 0; transform: translateY(12px); transition: opacity .5s ease, transform .5s ease; }
.reveal.is-in { opacity: 1; transform: none; }

.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { scrollbar-width: none; }

/* Article typography */
.prose-article { font-size: 1.125rem; line-height: 1.75; color: #1d1f1e; }
.prose-article h2 { font-size: 2rem; font-weight: 650; line-height: 1.2; letter-spacing: -0.02em; margin: 3rem 0 1rem; color: #111; }
.prose-article h3 { font-size: 1.5rem; font-weight: 600; margin: 2rem 0 .75rem; color: #111; }
.prose-article p { margin: 0 0 1.25rem; }
.prose-article ul, .prose-article ol { margin: 0 0 1.5rem 1.25rem; }
.prose-article ul { list-style: disc; }
.prose-article ol { list-style: decimal; }
.prose-article li { margin-bottom: .5rem; padding-left: .25rem; }
.prose-article strong { font-weight: 650; color: #111; }
@media (max-width: 640px) { .prose-article h2 { font-size: 1.625rem; } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .img-zoom img, .btn { transition: none; }
}

/* Dark hero */
.hero { background-color: #1c1c1c; background-image:
  radial-gradient(ellipse 60% 55% at 55% 35%, rgba(255,255,255,.07), transparent 70%),
  radial-gradient(ellipse 90% 70% at 50% 110%, rgba(0,0,0,.45), transparent 70%),
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.hero-portrait {
  -webkit-mask-image: linear-gradient(to bottom, #000 82%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 82%, transparent 100%); }


/* Homepage sections (light card style) */
.sh2 { font-size: clamp(1.6rem, 1.2vw + 1.1rem, 2.25rem); font-weight: 650; line-height: 1.2; letter-spacing: -0.02em; color: #10483D; }
.btn-sm { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; height: 38px; padding: 0 10px; border-radius: 4px; font-size: .8125rem; font-weight: 600; white-space: nowrap; transition: background-color .2s, border-color .2s; }
.btn-sm-outline { display: inline-flex; align-items: center; justify-content: center; height: 42px; padding: 0 22px; border: 1px solid #D8DDD9; border-radius: 4px; font-size: .875rem; font-weight: 600; color: #111; transition: border-color .2s, color .2s; }
.btn-sm-outline:hover { border-color: #10483D; color: #10483D; }

/* Article extras */
.prose-article blockquote { margin: 2rem 0; padding: 1.25rem 1.5rem; border-left: 3px solid #10483D; background: #F7F8F6; border-radius: 0 4px 4px 0; font-size: 1.0625rem; color: #2a2d2b; }
.prose-article hr { margin: 3rem 0; border: 0; border-top: 1px solid #D8DDD9; }
.prose-article h2 + h3, .prose-article hr + h3 { margin-top: 0; }
.prose-article .note { margin-top: 2rem; font-size: .9375rem; line-height: 1.65; color: #6F7471; }
