/* ============================================================
   Commonwealth Transportation — shared styles (cached across pages)
   Rich warm black-and-white luxury palette.
   ============================================================ */
:root{
  --black:#000000;--ink:#0A0A0A;--ink-2:#101013;--graphite:#1A1A1A;--dusk:#2B2B30;
  --ivory:#F7F5F0;--paper:#FFFFFF;--silver:#C0C0C0;--text-light:#1A1A1A;--text-soft:#4A4A45;
  --line:rgba(255,255,255,0.12);--line-dark:rgba(0,0,0,0.12);--txt-dim:rgba(255,255,255,0.55);
  --display:'Cormorant Garamond',Georgia,serif;--sans:'Raleway','Helvetica Neue',Arial,sans-serif;
  --nav-h:72px;--ease:cubic-bezier(.22,.61,.36,1);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--sans);font-weight:300;background:var(--ink);color:#fff;line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
ul{list-style:none}
::selection{background:var(--silver);color:var(--black)}
a:focus-visible,button:focus-visible,input:focus-visible{outline:1px solid var(--silver);outline-offset:4px}

/* skip link (a11y) */
.skip-link{position:fixed;top:-60px;left:12px;z-index:2000;background:#fff;color:var(--ink);padding:10px 18px;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;transition:top .25s var(--ease)}
.skip-link:focus{top:12px}

/* media wrapper */
.media{position:relative;width:100%;height:100%;overflow:hidden;background:var(--graphite)}
.media video,.media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.media img{transition:transform .6s var(--ease)}
.media.is-empty{background:radial-gradient(120% 80% at 20% 0%,rgba(192,192,192,.10),transparent 55%),linear-gradient(160deg,#15171a 0%,#0c0d0f 55%,#050506 100%)}
.media.is-empty.is-day{background:radial-gradient(120% 90% at 80% 10%,rgba(255,210,150,.16),transparent 55%),linear-gradient(160deg,#2a2622 0%,#171513 60%,#0b0a09 100%)}
.media.is-empty::after{content:attr(data-label);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:2rem;font-family:var(--sans);font-weight:300;font-size:.62rem;letter-spacing:.28em;text-transform:uppercase;color:rgba(255,255,255,.30);line-height:2.2}
.media.is-empty::before{content:"";position:absolute;inset:0;opacity:.45;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E")}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:500;font-size:.7rem;letter-spacing:.25em;text-transform:uppercase;padding:14px 30px;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease),transform .3s var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn--filled{background:#fff;color:var(--ink)}
.btn--filled:hover{background:var(--silver)}
.btn--outline{border:1px solid rgba(255,255,255,.5);color:#fff}
.btn--outline:hover{background:#fff;color:var(--ink);border-color:#fff}
.btn--outline-dark{border:1px solid rgba(0,0,0,.4);color:var(--ink)}
.btn--outline-dark:hover{background:var(--ink);color:#fff;border-color:var(--ink)}

/* nav */
.nav{position:fixed;top:0;left:0;width:100%;height:var(--nav-h);z-index:1000;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1.25rem,4vw,3.5rem);background:transparent;transition:background .4s var(--ease),border-color .4s var(--ease);border-bottom:1px solid transparent}
.nav.scrolled{background:var(--ink);border-bottom:1px solid rgba(255,255,255,.08)}
.lockup{line-height:1.25;user-select:none;display:block}
.lockup .l1{font-family:var(--sans);font-weight:500;font-size:.85rem;letter-spacing:.3em;color:#fff}
.lockup .l2{font-family:var(--sans);font-weight:300;font-size:.6rem;letter-spacing:.3em;color:var(--txt-dim)}
.nav-links{display:flex;gap:clamp(1.25rem,2.5vw,2.6rem)}
.nav-links a{position:relative;font-weight:300;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:#fff;padding:4px 0}
.nav-links a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:#fff;transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{transform:scaleX(1)}
.nav-cta{font-size:.65rem;padding:9px 20px}
.hamburger{display:none;flex-direction:column;gap:5px;padding:6px;z-index:1100}
.hamburger span{width:24px;height:1px;background:#fff;transition:transform .3s var(--ease),opacity .3s var(--ease)}
.hamburger.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.hamburger.open span:nth-child(2){opacity:0}
.hamburger.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.mobile-menu{position:fixed;inset:0;z-index:1050;background:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;opacity:0;visibility:hidden;transition:opacity .4s var(--ease),visibility .4s var(--ease)}
.mobile-menu.open{opacity:1;visibility:visible}
.mobile-menu a{font-size:1rem;letter-spacing:.25em;text-transform:uppercase;color:#fff;font-weight:300}

.label{font-weight:300;font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--silver)}

/* page header (banner) */
.pagehead{position:relative;min-height:46vh;display:flex;align-items:flex-end;overflow:hidden;background:var(--black);padding:0 clamp(1.5rem,6vw,5rem) clamp(2.5rem,5vw,4rem)}
.pagehead .media{position:absolute;inset:0}
.pagehead .media img{transition:transform 8s var(--ease);transform:scale(1.06)}
.pagehead__overlay{position:absolute;inset:0;z-index:2;background:linear-gradient(to bottom,rgba(0,0,0,.45) 0%,rgba(0,0,0,.55) 55%,rgba(0,0,0,.85) 100%)}
.pagehead__inner{position:relative;z-index:3;max-width:1200px;margin:0 auto;width:100%;padding-top:calc(var(--nav-h) + 3rem)}
.pagehead .eyebrow{font-weight:300;font-size:.65rem;letter-spacing:.35em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-bottom:1rem}
.pagehead h1{font-family:var(--display);font-weight:300;text-transform:uppercase;font-size:clamp(2.5rem,6.5vw,5rem);line-height:1.05;letter-spacing:.08em;color:#fff}
.pagehead p{font-weight:300;font-size:clamp(.85rem,1.3vw,1rem);letter-spacing:.12em;color:rgba(255,255,255,.7);margin-top:1.25rem;max-width:60ch;text-wrap:pretty}

/* generic light section + grid + simple tile (services/careers) */
.section{padding:clamp(3.5rem,8vw,7rem) clamp(1.5rem,6vw,5rem)}
.section--light{background:linear-gradient(180deg,var(--ivory) 0%,var(--paper) 60%);color:var(--text-light)}
.section__head{max-width:1200px;margin:0 auto 3rem}
.section__head .label{color:#8a8a82}
.section__head h2{font-family:var(--display);font-weight:300;font-size:clamp(2rem,4vw,3.2rem);letter-spacing:.04em;color:var(--graphite);margin-top:.75rem;text-wrap:balance}
.section__head p{font-weight:300;font-size:.92rem;line-height:1.9;color:var(--text-soft);margin-top:1rem;max-width:64ch;text-wrap:pretty}
.wrap{max-width:1200px;margin:0 auto}
.grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}

/* cta band */
.cta-band{background:var(--ink);color:#fff;padding:clamp(3.5rem,7vw,6rem) clamp(1.5rem,6vw,5rem);text-align:center}
.cta-band h2{font-family:var(--display);font-weight:300;text-transform:uppercase;font-size:clamp(1.8rem,4vw,3rem);letter-spacing:.07em;color:#fff;text-wrap:balance}
.cta-band p{font-weight:300;font-size:.9rem;letter-spacing:.12em;color:rgba(255,255,255,.7);margin:1.25rem 0 2.25rem}
.cta-band .row{display:flex;gap:1.25rem;justify-content:center;flex-wrap:wrap}

/* footer */
.footer{background:#FAF9F6;padding:clamp(3rem,7vw,80px) clamp(1.5rem,6vw,5rem) 40px;color:var(--text-light)}
.footer .lockup .l1{color:var(--graphite)}
.footer .lockup .l2{color:#8a8a82}
.footer__top{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:1.2fr 2fr 1.2fr;gap:2.5rem}
.footer__cols{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.footer__col h4{font-weight:500;font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--graphite);margin-bottom:1.25rem}
.footer__col a{display:block;font-weight:300;font-size:.7rem;letter-spacing:.15em;color:#6a6a64;padding:.35rem 0;transition:color .3s var(--ease)}
.footer__col a:hover{color:var(--graphite)}
.footer__contact{font-weight:300;font-size:.72rem;letter-spacing:.1em;color:#6a6a64;line-height:2}
.footer__contact a{color:inherit;transition:color .3s var(--ease)}
.footer__contact a:hover{color:var(--graphite)}
.footer__bottom{max-width:1200px;margin:48px auto 0;padding-top:30px;border-top:1px solid var(--line-dark);display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem}
.footer__bottom span{font-weight:300;font-size:.65rem;letter-spacing:.1em;color:#9a9a92}

/* scroll reveal */
.reveal{opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.12s}
.reveal[data-delay="2"]{transition-delay:.24s}
.reveal[data-delay="3"]{transition-delay:.36s}

/* live status dot (footer) */
.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#22c55e;margin-right:7px;vertical-align:middle}

@media(max-width:980px){.footer__top{grid-template-columns:1fr;gap:2.5rem}}
@media(max-width:768px){.nav-links,.nav-cta{display:none}.hamburger{display:flex}}
@media(max-width:480px){.footer__cols{grid-template-columns:1fr}.footer__bottom{flex-direction:column}.cta-band .row .btn{width:100%}}
@media(prefers-reduced-motion:no-preference){.live-dot{box-shadow:0 0 0 0 rgba(34,197,94,.5);animation:live-pulse 1.8s ease-in-out infinite}}
@keyframes live-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
