:root{--ink:#1c2b30;--slate:#334D55;--blue:#006699;--sky:#0FA3D2;--hover:#0D87AD;--sand:#FCDA93;--gold:#FFCC66;--paper:#FBF6EA}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:'Inter',system-ui,sans-serif;color:#22343a;background:#fff;line-height:1.7}
.font-display{font-family:'Barlow Condensed','Inter',sans-serif;letter-spacing:-0.01em}
.t-hero{font-size:clamp(2.6rem,5.4vw,4.5rem);line-height:.95;letter-spacing:-0.02em}
.t-1{font-size:clamp(2.4rem,5.2vw,4.5rem);line-height:.95;letter-spacing:-0.015em}
.t-2{font-size:clamp(2rem,3.8vw,3.25rem);line-height:1;letter-spacing:-0.01em}
.t-3{font-size:clamp(1.4rem,2.2vw,1.85rem);line-height:1.1}
.lead{font-size:clamp(1.05rem,1.4vw,1.25rem);line-height:1.7}
.eyebrow{font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.18em;font-weight:600;font-size:.85rem}
.grain{background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:22px 22px}
.grid-lines{background-image:linear-gradient(rgba(51,77,85,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(51,77,85,.07) 1px,transparent 1px);background-size:56px 56px}
/* .reveal content is always visible at rest. When the head script has flagged html.js, site.js adds
   .is-in to sections that are about to scroll into view, which plays a one-off rise animation. */
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
html.js .reveal.is-in{animation:rise .65s cubic-bezier(.2,.7,.2,1) both}
html.js .reveal-d1.is-in{animation-delay:.06s}html.js .reveal-d2.is-in{animation-delay:.12s}html.js .reveal-d3.is-in{animation-delay:.18s}
.card-lift{transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s,background-color .35s}
.card-lift:hover{transform:translateY(-4px);box-shadow:0 22px 40px -22px rgba(28,43,48,.45)}
.btn{display:inline-flex;align-items:center;gap:.6rem;font-weight:600;border-radius:999px;padding:.95rem 1.6rem;transition:transform .25s,background-color .25s,color .25s,box-shadow .25s;min-height:48px}
.btn:hover{transform:translateY(-2px)}
.btn svg{transition:transform .25s}.btn:hover svg{transform:translateX(3px)}
.btn-sand{background:var(--sand);color:var(--ink);box-shadow:0 10px 30px -12px rgba(252,218,147,.7)}
.btn-sand:hover{background:var(--gold)}
.btn-ghost{border:1.5px solid rgba(255,255,255,.45);color:#fff}
.btn-ghost:hover{background:rgba(255,255,255,.1);border-color:#fff}
.btn-blue{background:var(--blue);color:#fff}.btn-blue:hover{background:var(--hover)}
.link-u{background:linear-gradient(currentColor,currentColor) 0 100%/0 2px no-repeat;transition:background-size .3s}
.link-u:hover{background-size:100% 2px}
.img-zoom{overflow:hidden}.img-zoom img{transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}.img-zoom:hover img{transform:scale(1.05)}
.clip-diag{clip-path:polygon(0 0,100% 0,100% 88%,0 100%)}
.grecaptcha-badge{visibility:hidden}
.field{width:100%;border:1.5px solid #d9d2c0;border-radius:.75rem;background:#fff;padding:.85rem 1rem;font-size:1rem;transition:border-color .2s,box-shadow .2s}
.field:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,102,153,.15)}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
:focus-visible{outline:3px solid var(--sky);outline-offset:3px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}html.js .reveal.is-in{animation:none}.card-lift,.btn,.img-zoom img{transition:none}.card-lift:hover,.btn:hover{transform:none}}
/* header is fixed; on md+ it starts below the 40px contact bar and site.js pins it to top:0 once the bar scrolls away */
#site-header{top:0}
@media (min-width:768px){#site-header{top:40px}}
