.tw-button { display: inline-flex; min-height: 3.25rem; align-items: center; justify-content: center; gap: .75rem; padding: .85rem 1.35rem; border: 1px solid var(--tw-navy); border-radius: var(--tw-radius-sm); background: var(--tw-navy); color: var(--tw-white); font-size: .78rem; font-weight: 800; letter-spacing: .075em; line-height: 1; text-decoration: none; text-transform: uppercase; transition: transform var(--tw-transition), background var(--tw-transition), color var(--tw-transition), border-color var(--tw-transition); }
.tw-button:hover { transform: translateY(-2px); background: var(--tw-blue); border-color: var(--tw-blue); color: var(--tw-white); text-decoration: none; }
.tw-button--outline { background: transparent; color: var(--tw-navy); }
.tw-button--blue { border-color: var(--tw-blue); background: var(--tw-blue); }
.tw-eyebrow { margin-bottom: 1.25rem; color: var(--tw-blue); font-size: .72rem; font-weight: 800; letter-spacing: .17em; text-transform: uppercase; }
.tw-script { font-family: "Segoe Print", "Bradley Hand", "Comic Sans MS", cursive; font-weight: 700; }
.tw-skip-link { position: fixed; top: 1rem; left: 1rem; z-index: 9999; transform: translateY(-200%); padding: .75rem 1rem; background: var(--tw-white); color: var(--tw-navy); }
.tw-skip-link:focus { transform: translateY(0); }

.tw-site-header { position: relative; z-index: 1000; background: rgba(245,242,234,.96); border-bottom: 1px solid rgba(7,31,54,.08); transition: box-shadow var(--tw-transition), background var(--tw-transition); }
.tw-site-header.is-sticky { position: sticky; top: 0; box-shadow: 0 10px 30px rgba(7,31,54,.08); backdrop-filter: blur(14px); }
.tw-site-header__inner { display: flex; min-height: 6rem; align-items: center; gap: clamp(1.25rem, 3vw, 3rem); }
.tw-site-branding { flex: 0 0 auto; }
.tw-site-branding .custom-logo { width: auto; max-width: 14rem; max-height: 4.25rem; }
.tw-site-title { color: var(--tw-navy); font-size: 1.35rem; font-weight: 900; text-decoration: none; text-transform: uppercase; }
.tw-desktop-nav { margin-left: auto; }
.tw-menu { display: flex; align-items: center; gap: clamp(1.15rem, 2vw, 2rem); margin: 0; padding: 0; list-style: none; }
.tw-menu a { position: relative; color: var(--tw-navy); font-size: .76rem; font-weight: 800; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; }
.tw-menu a::after { content: ""; position: absolute; right: 0; bottom: -.55rem; left: 0; height: 2px; transform: scaleX(0); transform-origin: right; background: var(--tw-blue); transition: transform var(--tw-transition); }
.tw-menu a:hover::after, .tw-menu .current-menu-item > a::after { transform: scaleX(1); transform-origin: left; }
.tw-header-cta { flex: 0 0 auto; }
.tw-menu-toggle { display: none; margin-left: auto; border: 0; background: transparent; color: var(--tw-navy); }
.tw-menu-toggle__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.tw-menu-toggle__icon { display: grid; width: 2rem; gap: .45rem; }
.tw-menu-toggle__icon span { display: block; height: 2px; background: currentColor; transition: transform var(--tw-transition); }
.tw-menu-toggle[aria-expanded="true"] .tw-menu-toggle__icon span:first-child { transform: translateY(.225rem) rotate(45deg); }
.tw-menu-toggle[aria-expanded="true"] .tw-menu-toggle__icon span:last-child { transform: translateY(-.225rem) rotate(-45deg); }
.tw-mobile-menu { position: fixed; inset: 0; z-index: 999; padding-top: 6rem; background: var(--tw-navy); color: var(--tw-white); }
.tw-mobile-menu__inner { display: flex; min-height: calc(100dvh - 6rem); flex-direction: column; justify-content: space-between; padding-block: 3rem; }
.tw-mobile-menu__nav { margin: 0; padding: 0; list-style: none; }
.tw-mobile-menu__nav a { display: block; padding: .2em 0; color: var(--tw-white); font-size: clamp(2.5rem, 12vw, 4.75rem); font-weight: 850; letter-spacing: -.045em; line-height: 1.05; text-decoration: none; }
.tw-mobile-menu__footer { display: grid; gap: 1.25rem; }
.tw-mobile-menu__phone { color: var(--tw-white); font-size: 1.15rem; font-weight: 700; text-decoration: none; }
body.tw-menu-open { overflow: hidden; }
@media (max-width: 899px) {
  .tw-site-header { position: sticky; top: 0; }
  .tw-site-header__inner { min-height: 5rem; }
  .tw-site-branding .custom-logo { max-width: 10.5rem; max-height: 3.25rem; }
  .tw-desktop-nav, .tw-header-cta { display: none; }
  .tw-menu-toggle { display: inline-flex; }
}

/* v0.4.0 header + footer refinement */
.tw-site-header__inner { min-height: 5.35rem; }
.tw-site-branding .custom-logo { max-width: 12.75rem; max-height: 3.7rem; }
.tw-header-cta { min-height: 2.9rem; padding: .78rem 1.15rem; }
.tw-site-footer { padding-block: clamp(2.5rem, 5vw, 4.5rem); }
.tw-site-footer p { margin: 1.5rem 0 0; color: rgba(255,255,255,.62); font-size: .78rem; }
.tw-site-footer a { color: var(--tw-white); }
@media (max-width: 899px) {
  .tw-site-header__inner { min-height: 4.75rem; }
}

/* v0.5.0 — Projects / portfolio system */
.tw-work-archive h1,.tw-project-single h1{max-width:12ch;margin:0;font-size:clamp(3rem,7vw,7rem);line-height:.9;letter-spacing:-.06em}.tw-work-archive__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2rem,5vw,5rem) clamp(1.5rem,3vw,3rem);margin-top:clamp(3rem,6vw,6rem)}.tw-work-archive__image{display:block;overflow:hidden;aspect-ratio:4/3;background:#ddd}.tw-work-archive__image img{width:100%;height:100%;object-fit:cover}.tw-work-archive h2{margin:.5rem 0;font-size:clamp(1.6rem,2.5vw,2.5rem)}.tw-work-archive h2 a{color:var(--tw-navy);text-decoration:none}.tw-project-single__hero{padding-bottom:clamp(2.5rem,5vw,5rem)}.tw-project-single__services{margin:1.5rem 0 0;color:rgba(7,31,54,.62);font-weight:700}.tw-project-single__feature{margin-bottom:clamp(1rem,3vw,3rem)}.tw-project-single__feature img{width:100%;height:auto}.tw-prose{max-width:56rem}.tw-prose>*+*{margin-top:1.35em}.tw-prose p{font-size:clamp(1.05rem,1.5vw,1.2rem)}@media(max-width:760px){.tw-work-archive__grid{grid-template-columns:1fr}}
.tw-site-footer__grid{display:grid;grid-template-columns:1.25fr .75fr .75fr;gap:clamp(2rem,5vw,6rem);align-items:start}.tw-site-footer__brand .custom-logo{max-width:13rem;height:auto;filter:brightness(0) invert(1)}.tw-site-footer__brand>p{max-width:29rem}.tw-footer-menu{margin:0;padding:0;list-style:none}.tw-footer-menu li+li{margin-top:.65rem}.tw-footer-menu a{font-weight:750;text-decoration:none}.tw-site-footer__contact p{margin:0 0 .65rem}.tw-site-footer__bottom{display:flex;justify-content:space-between;gap:2rem;margin-top:clamp(3rem,6vw,6rem);padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.14)}.tw-site-footer__bottom p{margin:0}@media(max-width:760px){.tw-site-footer__grid{grid-template-columns:1fr}.tw-site-footer__bottom{display:block}.tw-site-footer__bottom p+p{margin-top:.5rem}}


/* v1.0.2 — reusable interior hero foundation
   Inner pages intentionally use a shorter hero than the homepage.
   Page templates can extend this class with their own imagery/copy treatments. */
.tw-interior-hero{isolation:isolate}
.tw-interior-hero + .tw-section{scroll-margin-top:5rem}

/* v1.1.4 — compact, closable mobile navigation */
@media (max-width: 899px) {
  .tw-site-header { z-index: 1100; }
  .tw-menu-toggle { position: relative; z-index: 1202; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center; padding: 0; cursor: pointer; }
  .tw-menu-toggle__icon { width: 1.65rem; gap: .38rem; }
  .tw-menu-toggle[aria-expanded="true"] { color: #fff; }
  .tw-mobile-menu { z-index: 1090; padding-top: 5rem; overflow-y: auto; }
  .tw-mobile-menu__inner { min-height: calc(100dvh - 5rem); justify-content: flex-start; gap: 2rem; padding-block: 1.5rem 2rem; }
  .tw-mobile-menu__nav { display: grid; gap: 0; }
  .tw-mobile-menu__nav li { margin: 0; border-bottom: 1px solid rgba(255,255,255,.12); }
  .tw-mobile-menu__nav a { padding: .9rem 0; font-size: clamp(1.15rem, 5vw, 1.45rem); font-weight: 750; letter-spacing: -.015em; line-height: 1.15; }
  .tw-mobile-menu__footer { margin-top: auto; gap: 1rem; }
  .tw-mobile-menu__footer .tw-button { width: 100%; min-height: 3rem; }
  .tw-mobile-menu__phone { font-size: 1rem; text-align: center; }
  body.tw-menu-open .tw-site-header { background: var(--tw-navy); border-bottom-color: rgba(255,255,255,.12); }
  body.tw-menu-open .tw-brand-logo--dark { display: none; }
  body.tw-menu-open .tw-brand-logo--light { display: block; }
}


/* v1.1.7 — mobile menu must remain viewport-fixed above sticky/scrolled page content */
@media (max-width:899px){
  .tw-site-header{z-index:3000}
  .tw-mobile-menu{
    position:fixed;
    inset:0;
    z-index:2900;
    width:100vw;
    height:100dvh;
    min-height:100vh;
    padding-top:4.75rem;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
    background:var(--tw-navy);
  }
  .tw-mobile-menu[hidden]{display:none !important}
  .tw-mobile-menu__inner{
    min-height:calc(100dvh - 4.75rem);
    padding-block:1.5rem 2rem;
  }
  body.tw-menu-open .tw-menu-toggle{
    position:relative;
    z-index:3100;
  }
}

/* v1.1.14 — shared site chrome migrated out of homepage-only polish.
   These rules were historically stored in home-polish.css even though they
   style the global header/footer. Keep them global here so page CSS can remain isolated. */
.tw-site-header__container{width:min(calc(100% - (2 * var(--tw-gutter))),88rem)}
.tw-site-header__inner{min-height:5.1rem}
.tw-site-branding{display:flex;align-items:center}
.tw-site-branding .custom-logo{max-width:11.75rem;max-height:3.35rem}
.tw-brand-link{display:block;line-height:0}
.tw-brand-logo{display:block;width:auto;height:auto;max-width:12rem;max-height:3.7rem}
.tw-brand-logo--light{display:none}
.tw-menu{gap:clamp(1.1rem,1.7vw,1.75rem)}
.tw-menu a{font-size:.69rem;letter-spacing:.055em}
.tw-header-cta{min-height:2.65rem;padding:.7rem 1.15rem;border-radius:999px;font-size:.68rem}
.tw-site-header .tw-menu--fallback{display:flex}

.tw-site-footer{padding-block:2.4rem;background:#061a2d}
.tw-site-footer__grid{grid-template-columns:1.2fr .65fr .7fr;gap:clamp(2rem,5vw,5rem)}
.tw-site-footer__brand .custom-logo{max-width:10rem}
.tw-site-footer__brand>p{max-width:25rem;margin-top:1rem;font-size:.72rem;line-height:1.5}
.tw-footer-menu li+li{margin-top:.35rem}
.tw-footer-menu a,.tw-site-footer__contact{font-size:.72rem}
.tw-site-footer__contact p{margin-bottom:.35rem}
.tw-site-footer__bottom{margin-top:2.25rem;padding-top:1rem}
.tw-site-footer__bottom p{font-size:.64rem;letter-spacing:.04em}

@media(max-width:899px){
  .tw-site-header__inner{min-height:4.75rem}
  .tw-site-branding .custom-logo{max-width:9.75rem;max-height:3rem}
  .tw-brand-logo{max-width:9.6rem;max-height:3rem}
  .tw-site-header .tw-menu--fallback{display:none}
}
@media(max-width:700px){
  .tw-site-footer__grid{grid-template-columns:1fr}
  .tw-site-footer__bottom{display:block}
}
