/* W.G Maginess & Son: brand layer on top of Tailwind CDN */
:root { --navy:#073846; --slate:#1F4853; --cyan:#5EC7D5; --ice:#D8F9FF; }
html { -webkit-text-size-adjust:100%; }
body { font-family:'Raleway', system-ui, sans-serif; font-feature-settings:"lnum"; }
.font-display { font-family:'Playfair Display', Georgia, serif; font-weight:600; letter-spacing:-0.02em; }
.text-hero { font-size:clamp(2.4rem, 4.3vw, 3.75rem); line-height:1.06; letter-spacing:-0.028em; }
.text-display-xl { font-size:clamp(2.6rem, 6.4vw, 5.6rem); line-height:1.02; letter-spacing:-0.03em; }
.text-display-lg { font-size:clamp(2.3rem, 5vw, 4.4rem); line-height:1.06; letter-spacing:-0.025em; }
.text-display-md { font-size:clamp(2rem, 3.8vw, 3.3rem); line-height:1.1; letter-spacing:-0.02em; }
.eyebrow { font-size:.78rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; }

/* header */
.site-header { background:rgba(255,255,255,.82); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); border-bottom:1px solid rgba(7,56,70,.06); }
.site-header.scrolled { background:rgba(255,255,255,.95); box-shadow:0 10px 30px -18px rgba(7,56,70,.35); }
.nav-link { position:relative; padding:.4rem 0; }
.nav-link::after { content:""; position:absolute; left:0; right:0; bottom:-2px; height:2px; background:var(--cyan); transform:scaleX(0); transform-origin:left; transition:transform .3s ease; }
.nav-link:hover::after, .nav-link[aria-current="page"]::after { transform:scaleX(1); }

/* buttons */
.btn-primary,.btn-ghost-light,.btn-dark,.btn-outline { display:inline-flex; align-items:center; gap:.6rem; border-radius:999px; font-weight:700; padding:1rem 1.6rem; min-height:3.25rem; transition:transform .25s ease, background-color .25s ease, color .25s ease, box-shadow .25s ease, border-color .25s; }
.btn-primary { background:var(--cyan); color:var(--navy); box-shadow:0 12px 30px -12px rgba(94,199,213,.7); }
.btn-primary:hover { background:#fff; transform:translateY(-2px); }
.btn-primary:disabled { opacity:.6; cursor:wait; transform:none; }
.btn-ghost-light { border:1.5px solid rgba(255,255,255,.4); color:#fff; justify-content:center; }
.btn-ghost-light:hover { border-color:var(--cyan); color:var(--cyan); transform:translateY(-2px); }
.btn-dark { background:var(--navy); color:#fff; }
.btn-dark:hover { background:var(--slate); transform:translateY(-2px); }
.btn-outline { border:1.5px solid rgba(7,56,70,.2); color:var(--navy); }
.btn-outline:hover { border-color:var(--cyan); background:#EAF7F9; transform:translateY(-2px); }
.btn-lift:hover { transform:translateY(-1px); }

/* service tiles */
.svc-tile { position:relative; display:flex; flex-direction:column; overflow:hidden; border-radius:2rem; isolation:isolate; background:var(--navy); }
.svc-tile img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; transition:transform 1s cubic-bezier(.2,.7,.2,1); }
.svc-shade { position:absolute; inset:0; z-index:-1; background:linear-gradient(to top, rgba(7,56,70,.96) 10%, rgba(7,56,70,.55) 55%, rgba(7,56,70,.15)); transition:background .4s; }
.svc-tile:hover img { transform:scale(1.06); }
.svc-tile:hover .svc-shade { background:linear-gradient(to top, rgba(7,56,70,.98) 15%, rgba(31,72,83,.7) 65%, rgba(7,56,70,.3)); }
.img-zoom { overflow:hidden; }
.img-zoom img { transition:transform 1s cubic-bezier(.2,.7,.2,1); }
.img-zoom:hover img { transform:scale(1.05); }

.logo-tile { display:flex; align-items:center; justify-content:center; height:6rem; padding:.75rem 1.25rem; border-radius:1rem; background:#fff; border:1px solid #e5ecee; transition:transform .25s, box-shadow .25s; }
.logo-tile img { max-height:100%; width:auto; object-fit:contain; }
.logo-tile:hover { transform:translateY(-3px); box-shadow:0 18px 30px -20px rgba(7,56,70,.4); }
.area-chip { display:inline-flex; align-items:center; gap:.5rem; padding:.8rem 1.2rem; border-radius:999px; background:#fff; color:var(--navy); font-weight:600; box-shadow:0 10px 25px -18px rgba(7,56,70,.5); border:1px solid #e3eef0; }
.value-card { border-radius:1.5rem; background:#fff; padding:2rem; border:1px solid #e3e9ea; transition:transform .3s, box-shadow .3s; }
.value-card:hover { box-shadow:0 24px 40px -26px rgba(7,56,70,.45); }
.value-card h3 { margin-top:1.25rem; font-size:1.25rem; font-weight:700; color:var(--navy); }
.value-card p { margin-top:.6rem; color:#4F4F4F; line-height:1.7; }
.chip-link { display:inline-flex; align-items:center; gap:.4rem; padding:.55rem 1rem; border-radius:999px; background:#EAF7F9; color:var(--navy); font-weight:600; font-size:.92rem; transition:background .2s; }
.chip-link:hover { background:var(--cyan); }
.social { width:2.75rem; height:2.75rem; display:inline-flex; align-items:center; justify-content:center; border-radius:999px; border:1px solid rgba(255,255,255,.18); transition:all .25s; }
.social:hover { background:var(--cyan); color:var(--navy); border-color:var(--cyan); }
.footer-h { color:#fff; font-weight:700; margin-bottom:.9rem; font-size:.8rem; letter-spacing:.2em; text-transform:uppercase; }

/* forms */
.field { display:grid; gap:.45rem; font-weight:600; font-size:.92rem; color:var(--navy); }
.field em { font-weight:400; font-style:normal; opacity:.65; }
.field input,.field textarea,.field select { width:100%; border-radius:.9rem; border:1.5px solid #d6e2e4; background:#F8FBFB; padding:.85rem 1rem; font-weight:500; font-size:1rem; color:#1d2b30; transition:border-color .2s, box-shadow .2s, background .2s; }
.field input:focus,.field textarea:focus,.field select:focus { outline:none; border-color:var(--cyan); background:#fff; box-shadow:0 0 0 4px rgba(94,199,213,.2); }
.dark-form .field { color:#fff; }
.dark-form .field input,.dark-form .field textarea,.dark-form .field select { background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.2); color:#fff; color-scheme:dark; }
.dark-form .field select option { color:#073846; }
.dark-form .field input:focus,.dark-form .field textarea:focus,.dark-form .field select:focus { background:rgba(255,255,255,.12); }
.hp { position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden; }
.form-status:empty { display:none; }
.form-status { border-radius:1rem; padding:1rem 1.2rem; font-weight:600; line-height:1.5; }
.form-status.ok { background:#E3F7EE; color:#0f5132; border:1px solid #a8dfc3; }
.form-status.err { background:#FDECEC; color:#8a1c1c; border:1px solid #f3b9b9; }

/* motion */
/* Reveal never hides content: elements stay fully opaque and only glide up a
   few pixels when enhanced by JS. Without JS, before the observer fires, or in a
   full-page capture, everything is visible. */
.js-motion .reveal { transform:translateY(18px); transition:transform .9s cubic-bezier(.2,.7,.2,1); }
.js-motion .reveal.in { transform:none; }
.hero-zoom { animation:heroZoom 14s ease-out both; }
@keyframes heroZoom { from { transform:scale(1.08); } to { transform:scale(1); } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  .js-motion .reveal { transform:none; transition:none; }
  .hero-zoom { animation:none; }
  *,*::before,*::after { transition-duration:.01ms !important; animation-duration:.01ms !important; }
}
