:root {
  --navy:#15233e; --navy-deep:#101c32; --gold:#d7ac52; --gold-dark:#77581d;
  --paper:#f8f5ee; --white:#fffdf8; --ink:#202b3c; --muted:#535d69; --rule:#dcd6c8;
  --serif:Georgia,"Times New Roman",serif; --sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font:16px/1.6 var(--sans); }
img,video { display:block; max-width:100%; }
a { color:inherit; }
a:hover { text-underline-offset:.24em; }
:focus-visible { outline:3px solid #9c691a; outline-offset:4px; }
.dark :focus-visible,.header :focus-visible,.footer :focus-visible { outline-color:var(--gold); }
[hidden] { display:none !important; }
section[id] { scroll-margin-top:22px; }
.wrap { width:min(100% - 112px,1224px); margin-inline:auto; }
.section { padding-block:clamp(60px,7vw,104px); }
.narrow { max-width:900px; }
h1,h2,h3,p { margin:0; }
h1,h2 { color:var(--navy); font-family:var(--serif); font-weight:700; letter-spacing:-.045em; line-height:1.06; }
h1 { font-size:clamp(2.75rem,5.6vw,5rem); }
h2 { font-size:clamp(2.3rem,4.1vw,3.7rem); }
h3 { color:var(--navy); font-size:1.2rem; line-height:1.3; }
p + p { margin-top:1em; }
small,.small { font-size:.87rem; }
.muted { color:var(--muted); }
.eyebrow { display:flex; align-items:center; gap:10px; margin-bottom:16px; color:var(--gold-dark); font-size:.72rem; font-weight:800; letter-spacing:.15em; text-transform:uppercase; }
.eyebrow span { display:inline-block; width:24px; height:1px; background:currentColor; }
.skip { position:fixed; top:8px; left:8px; z-index:9; padding:12px 18px; background:var(--white); transform:translateY(-150%); }
.skip:focus { transform:none; }
.dark,.header,.footer { background:var(--navy); color:var(--paper); }
.dark h1,.dark h2,.dark h3 { color:var(--paper); }
.dark .eyebrow { color:var(--gold); }
.header { position:relative; z-index:1; border-bottom:1px solid #ffffff24; }
.topbar { min-height:88px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.brand { flex:none; display:block; }
.brand img { width:75px; height:auto; }
.topbar nav,.foot-row nav { display:flex; align-items:center; gap:clamp(16px,3vw,42px); font-size:.9rem; font-weight:650; }
.topbar nav a,.foot-row nav a { text-decoration:none; }
.topbar nav a:hover,.foot-row nav a:hover { text-decoration:underline; }
.button,.text-link { display:inline-flex; align-items:center; justify-content:center; gap:10px; font-weight:750; text-decoration:none; }
.button { min-height:48px; padding:11px 17px; border:1px solid transparent; border-radius:4px; font-size:.9rem; line-height:1.25; font-family:inherit; cursor:pointer; }
.button svg,.text-link svg { flex:none; width:18px; height:18px; }
.button-gold { background:var(--gold); color:var(--navy-deep); }
.button-gold:hover { background:#e9c572; }
.button-outline { border-color:currentColor; color:inherit; }
.button-outline:hover,.button-quiet:hover { background:#ffffff13; }
.button-quiet { color:var(--paper); padding-inline:10px; }
button:disabled { opacity:.7; cursor:default; }
.actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.text-link { border-bottom:1px solid currentColor; padding-bottom:3px; }
.text-link:hover { color:var(--gold-dark); }
.dark .text-link { color:var(--gold); }

.hero { position:relative; isolation:isolate; background:var(--navy-deep); }
.hero-image { position:absolute; z-index:-1; inset:0 0 0 43%; background:linear-gradient(90deg,var(--navy-deep),#101c3226 48%),linear-gradient(0deg,#101c32a0,transparent 41%),url("main-street.webp") 54% center / cover no-repeat; }
.hero-layout { display:grid; grid-template-columns:1.2fr .8fr; align-items:end; min-height:clamp(500px,44vw,640px); }
.hero-copy { padding-block:clamp(68px,8vw,112px); }
.hero-copy h1 em { color:var(--gold); font-weight:inherit; }
.hero-intro { margin:23px 0 25px; max-width:395px; color:#e0e6ef; font-size:clamp(1.03rem,1.5vw,1.18rem); }
.hero-note { margin-top:12px; color:#c2cbd9; font-size:.84rem; }
.hero-caption { display:flex; gap:12px; align-items:center; justify-self:end; align-self:end; margin-bottom:27px; padding:9px 15px 9px 9px; color:white; border:1px solid #ffffff50; border-radius:5px; background:#101c32df; text-decoration:none; }
.hero-caption:hover { background:var(--navy); }
.hero-caption small,.hero-caption strong { display:block; line-height:1.4; }
.hero-caption small { color:#f0cf83; text-transform:uppercase; font-size:.62rem; letter-spacing:.1em; }
.hero-caption strong { font-size:.89rem; }
.caption-play { display:grid; place-items:center; width:38px; height:38px; border:1px solid #ffffff5e; border-radius:50%; }
.route-bar { border-block:1px solid var(--rule); background:#ede8dc; }
.route-inner { min-height:68px; display:grid; grid-template-columns:1fr 1.35fr 1fr; gap:20px; align-items:center; font-size:.83rem; color:var(--navy); font-weight:650; }
.route-inner > span,.route-inner > a { display:inline-flex; align-items:center; gap:8px; }
.route-inner > a { justify-self:end; white-space:nowrap; text-decoration:none; }
.route-inner > a:hover { text-decoration:underline; }
.route-inner svg { width:18px; height:18px; color:var(--gold-dark); }
.route-line { display:flex; align-items:center; justify-content:center; gap:10px; }
.route-line i { flex:1; max-width:44px; min-width:10px; height:1px; background:#a88d57; }
.route-line strong { white-space:nowrap; }
.section-head { display:grid; grid-template-columns:1.65fr 1fr; gap:25px 40px; align-items:end; margin-bottom:35px; }
.section-head > p { max-width:340px; color:var(--muted); padding-bottom:4px; }
.service-list { border-top:1px solid var(--rule); }
.service-row { display:grid; grid-template-columns:55px minmax(0,1fr) auto; gap:18px; align-items:center; min-height:103px; padding:18px 0; border-bottom:1px solid var(--rule); }
.service-icon { display:grid; place-items:center; width:48px; height:48px; border-radius:5px; color:var(--navy); background:#eee7d8; }
.service-row h3 a { text-decoration:none; }
.service-row h3 a:hover { text-decoration:underline; }
.service-row p { margin-top:4px; color:var(--muted); font-size:.92rem; }
.service-meta { display:flex; align-items:center; gap:20px; color:var(--gold-dark); font-weight:750; font-size:.9rem; }
.service-meta a { display:grid; place-items:center; width:42px; height:42px; color:var(--navy); border:1px solid #bdb5a4; border-radius:50%; }
.service-meta a:hover { background:var(--navy); color:var(--paper); }
.work { background:var(--navy-deep); }
.work .section-head > p { color:#c8d1df; }
.film-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.film-card { min-width:0; }
.film-card video { width:100%; aspect-ratio:16 / 9; border-radius:5px; background:#0a1221; }
.film-meta { display:flex; justify-content:space-between; gap:8px; color:#e6c477; margin:15px 0 6px; font-weight:750; text-transform:uppercase; letter-spacing:.1em; font-size:.68rem; }
.film-card p { margin-top:7px; color:#c8d1df; font-size:.91rem; }
.work-bottom { margin-top:28px; }
.about { display:grid; grid-template-columns:1.25fr .75fr; gap:clamp(30px,6vw,100px); align-items:center; }
.about h2 { margin-bottom:19px; }
.about .text-link { margin-top:20px; }
.project { padding:26px 30px; border:1px solid var(--rule); border-top:3px solid var(--gold); background:var(--white); }
.project p:not(.eyebrow) { margin-top:10px; }
.contact { color:var(--ink); background:#eae3d4; border-top:1px solid var(--rule); }
.contact-grid { display:grid; grid-template-columns:.9fr 1.1fr; align-items:start; gap:clamp(34px,7vw,105px); }
.contact-copy > p:not(.eyebrow) { max-width:385px; margin-top:20px; }
.contact-links { display:flex; flex-wrap:wrap; gap:8px 18px; margin-top:24px; }
.contact-links a { display:inline-flex; align-items:center; gap:6px; min-height:44px; color:var(--navy); font-weight:750; text-decoration:none; }
.contact-links a:hover { text-decoration:underline; }
.contact-links svg { width:18px; height:18px; }
.email-link { overflow-wrap:anywhere; color:var(--navy); }
.lead-form { background:var(--white); border:1px solid #d0c8b7; border-radius:7px; padding:clamp(18px,3vw,30px); display:grid; gap:12px; }
.field-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.lead-form label { display:block; min-width:0; font-size:.85rem; font-weight:700; }
.lead-form label span { color:var(--gold-dark); }
.lead-form label .optional { color:var(--muted); font-size:.78rem; font-weight:500; }
.lead-form input,.lead-form select,.lead-form textarea { display:block; width:100%; min-height:44px; margin-top:5px; padding:9px 10px; color:var(--ink); background:white; border:1px solid #ada99e; border-radius:4px; font:400 1rem/1.3 var(--sans); }
.lead-form textarea { resize:vertical; }
.form-actions { display:flex; flex-wrap:wrap; gap:10px 15px; align-items:center; margin-top:2px; }
.form-actions p,.form-status,.email-fallback { color:var(--muted); font-size:.8rem; }
.form-status:empty { display:none; }
.trap { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.footer { padding:29px 0; }
.foot-row { display:flex; justify-content:space-between; align-items:center; gap:15px; }
.foot-row p { color:#c7cfdd; margin-top:3px; font-size:.84rem; }
.mobile-contact { display:none; }

.subhero { padding-block:40px 64px; border-bottom:4px solid var(--gold); }
.subhero .breadcrumb { display:inline-flex; align-items:center; min-height:44px; margin-bottom:25px; color:#e2e8f2; }
.subhero h1 { max-width:850px; font-size:clamp(2.8rem,6vw,4.7rem); }
.subhero p:not(.eyebrow) { max-width:590px; margin:20px 0 23px; color:#dce4f0; }
.narrow > p { margin-top:14px; }
.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:15px; margin-top:25px; }
.detail-card { padding:23px; border:1px solid var(--rule); border-left:3px solid var(--gold); background:var(--white); }
.narrow > .detail-card { margin-top:22px; }
.detail-card h3,.terms-content h3 { margin-bottom:8px; }
.detail-card p,.terms-content p { margin-top:8px; }
.terms-content { margin-top:30px; }
.terms-content h3:not(:first-child) { margin-top:22px; }
.terms-content ul,.detail-card ul { padding-left:22px; }
.terms { margin-top:22px; border:1px solid var(--rule); background:var(--white); padding:14px 18px; }
.terms summary { cursor:pointer; color:var(--navy); font-weight:750; }
.service-end { padding:34px 0 40px; }
.service-end .actions { margin-top:15px; }
.service-end h2 { font-size:clamp(1.9rem,3vw,2.7rem); }

@media (max-width:1050px) {
  .wrap { width:calc(100% - 72px); }
  .route-inner { grid-template-columns:auto 1fr auto; gap:12px; }
  .hero-layout { grid-template-columns:1.3fr .7fr; }
}
@media (max-width:760px) {
  .wrap { width:calc(100% - 36px); }
  .topbar { min-height:68px; gap:12px; }
  .brand img { width:53px; }
  .topbar nav { gap:12px; font-size:.82rem; }
  .header-cta { min-height:42px; padding:7px 9px; font-size:.75rem; }
  .header-cta svg { display:none; }
  .hero-layout { display:flex; flex-direction:column; align-items:stretch; min-height:0; }
  .hero-copy { padding:40px 0 28px; }
  .hero-image { inset:auto 0 0; height:230px; background:linear-gradient(180deg,var(--navy-deep),transparent 31%),linear-gradient(0deg,#101c3260,transparent 45%),url("main-street.webp") center 52% / cover no-repeat; }
  .hero-caption { margin-top:150px; margin-bottom:15px; align-self:flex-end; }
  .hero-intro { margin:15px 0 19px; }
  .hero-note { margin-top:10px; }
  .route-inner { padding-block:11px; grid-template-columns:1fr; gap:3px; text-align:center; }
  .route-inner > span { justify-self:center; }
  .route-inner > a { display:none; }
  .route-line { gap:7px; font-size:.77rem; }
  .section-head,.about,.contact-grid { grid-template-columns:1fr; }
  .section-head { gap:12px; margin-bottom:22px; }
  .section-head br { display:none; }
  .film-grid { grid-template-columns:1fr; gap:28px; }
  .film-card { max-width:540px; }
  .mobile-contact { display:grid; grid-template-columns:.8fr .8fr 1.4fr; position:fixed; z-index:4; inset:auto 0 0; background:var(--navy); color:var(--paper); border-top:1px solid #ffffff46; padding:0 0 env(safe-area-inset-bottom); }
  .mobile-contact a { display:flex; min-height:50px; align-items:center; justify-content:center; gap:7px; font-weight:750; font-size:.84rem; text-decoration:none; }
  .mobile-contact a:last-child { background:var(--gold); color:var(--navy); }
  .mobile-contact a + a { border-left:1px solid #ffffff37; }
  .mobile-contact svg { width:17px; height:17px; }
  .mobile-contact a:focus-visible { outline-offset:-4px; }
  .footer { padding-bottom:calc(75px + env(safe-area-inset-bottom)); }
}
@media (max-width:490px) {
  .service-row { grid-template-columns:36px minmax(0,1fr) 36px; gap:9px 10px; }
  .service-icon { width:35px; height:35px; align-self:start; }
  .service-icon svg { width:19px; height:19px; }
  .service-row h3 { font-size:1.02rem; }
  .service-row p { font-size:.85rem; }
  .service-meta { display:contents; }
  .service-meta span { grid-column:2; grid-row:2; font-size:.82rem; }
  .service-meta a { grid-column:3; grid-row:1 / span 2; width:36px; height:44px; border-radius:5px; }
  .field-grid,.detail-grid { grid-template-columns:1fr; }
  .foot-row { align-items:flex-start; flex-direction:column; }
  .hero-copy h1 br { display:none; }
  .hero-copy .button-quiet { padding-inline:5px; }
}
@media (max-width:355px) {
  .topbar { gap:6px; }
  .topbar nav { gap:7px; font-size:.75rem; }
  .header-cta { font-size:.7rem; padding-inline:7px; }
  .brand img { width:46px; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
.film-card[id],.service-row[id] { scroll-margin-top:20px; }
@media (max-width:760px) {
  .topbar nav a { white-space:nowrap; }
}
