/* V4 application tokens: inherited Tully web colors and supporting type roles.
   These are local web design decisions, not official brand specifications. */
:root {
  --primitive-color-ink:#171a17;
  --primitive-color-paper:#ffffff;
  --primitive-color-green:#008b45;
  --primitive-color-action:#006d36;
  --primitive-color-soft:#f1f3ee;
  --primitive-color-muted:#576056;
  --primitive-color-line:#d9ded8;
  --primitive-font-reading:"Helvetica Neue",Arial,sans-serif;
  --primitive-font-display:Impact,"Arial Narrow",sans-serif;
  --primitive-size-body:1rem;
  --primitive-size-title:1.375rem;
  --primitive-size-title-mobile:1.25rem;
  --primitive-size-control:.875rem;
  --primitive-size-meta:.75rem;
  --primitive-leading-body:1.6;
  --primitive-leading-title:1.3;
  --semantic-surface:var(--primitive-color-paper);
  --semantic-text:var(--primitive-color-ink);
  --semantic-muted:var(--primitive-color-muted);
  --semantic-action:var(--primitive-color-action);
  --semantic-size-title:var(--primitive-size-title);
  --component-caption-title:var(--semantic-size-title);
  --component-button-bg:var(--semantic-action);
  color-scheme:light;
}
@media(max-width:650px){:root{--semantic-size-title:var(--primitive-size-title-mobile)}}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:1.5rem}
body{margin:0;background:var(--semantic-surface);color:var(--semantic-text);font:400 var(--primitive-size-body)/var(--primitive-leading-body) var(--primitive-font-reading);overflow-wrap:break-word}
body.photo-open{overflow:hidden}
img{display:block;max-width:100%;height:auto}
figure,p,h1,h2,h3{margin:0}
a{color:inherit;text-decoration:none;touch-action:manipulation}
button,summary{font:inherit;touch-action:manipulation}
button,a,summary{ -webkit-tap-highlight-color:transparent }
:focus-visible{outline:3px solid var(--semantic-action);outline-offset:5px}
::selection{background:var(--semantic-action);color:white}
.shell{width:min(1240px,calc(100% - 96px));margin-inline:auto}
.shell>*{min-width:0}
.section-space{padding-block:56px}
.skip{position:fixed;top:-100px;left:20px;z-index:30;background:white;padding:12px 20px}
.skip:focus{top:12px}
.eyebrow{font:600 var(--primitive-size-meta)/1.5 var(--primitive-font-reading);letter-spacing:.1em;color:var(--semantic-action);margin-bottom:12px}
h2{font:600 clamp(2rem,3.2vw,3rem)/1.12 var(--primitive-font-reading);letter-spacing:-.035em;max-width:24ch}
h3{font:600 var(--semantic-size-title)/var(--primitive-leading-title) var(--primitive-font-reading);letter-spacing:-.02em}
p+p{margin-top:16px}
.button{display:inline-flex;justify-content:center;align-items:center;gap:24px;min-height:50px;padding:14px 24px;background:var(--component-button-bg);color:white;font:500 var(--primitive-size-control)/1.5 var(--primitive-font-reading);border:1px solid transparent;transition:background-color .15s}
.button:hover{background:var(--primitive-color-ink)}
.button-light{background:white;color:var(--semantic-text)}
.button-light:hover{background:var(--primitive-color-soft);color:var(--semantic-action)}
.text-link{display:inline-flex;align-items:center;gap:16px;min-height:44px;border-bottom:1px solid currentColor;font:500 var(--primitive-size-control)/1.5 var(--primitive-font-reading);color:var(--semantic-action)}
.text-link:hover{color:var(--semantic-text)}
.utility-bar{background:var(--semantic-action);color:white;font-size:var(--primitive-size-control)}
.utility-bar>.shell{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:39px}
.utility-bar a{display:flex;gap:12px;align-items:center;min-height:39px}
.utility-bar a:focus-visible{outline-color:white}
.utility-separator{margin-inline:8px}
.masthead{min-height:92px;display:flex;align-items:center;justify-content:space-between;gap:30px;position:relative}
.brand-logo{display:block;flex:none;width:192px}
.brand-logo img{width:100%;height:auto;object-fit:contain}
.primary-nav{display:flex;align-items:center;gap:28px;font-size:var(--primitive-size-control);font-weight:500}
.primary-nav a{padding-block:16px}
.primary-nav a:hover{color:var(--semantic-action)}
.header-quote{flex-shrink:0}
.mobile-menu{display:none}
.hero{position:relative;isolation:isolate;background:var(--primitive-color-ink);color:white;min-height:480px;display:flex;align-items:center}
.hero-photo,.hero-shade{position:absolute;inset:0;z-index:-2;width:100%;height:100%}
.hero-photo{object-fit:cover;object-position:center 82%}
.hero-shade{z-index:-1;background:linear-gradient(90deg,rgba(10,23,13,.85),rgba(10,23,13,.56) 43%,rgba(10,23,13,.04) 78%)}
.hero-inner{padding-block:52px 64px}
.hero .eyebrow{color:white}
.hero h1{font:400 clamp(3.8rem,6.3vw,6rem)/1.02 var(--primitive-font-display);letter-spacing:0;max-width:14ch}
.hero-description{margin-top:26px;max-width:45ch}
.hero-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin-top:30px}
.hero-link{display:inline-flex;align-items:center;gap:16px;min-height:48px;font-size:var(--primitive-size-control);text-decoration:underline;text-underline-offset:5px}
.hero :focus-visible{outline-color:white}
.hero-credit{position:absolute;bottom:22px;right:max(48px,calc((100% - 1240px)/2));font-size:var(--primitive-size-meta);text-align:right;background:rgba(10,23,13,.8);padding:10px 14px}
.hero-credit span{display:block}
.section-heading{display:grid;grid-template-columns:1.35fr 1fr;gap:48px;align-items:end;margin-bottom:28px}
.section-heading>p{max-width:42ch;justify-self:end;color:var(--semantic-muted)}
.service-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.service-card{border-bottom:2px solid var(--semantic-action);display:flex;flex-direction:column;min-width:0}
.service-photo{display:block;overflow:hidden}
.service-photo img{width:100%;aspect-ratio:8/5;object-fit:cover;object-position:center 70%}
.service-card-copy{padding:18px 0;display:flex;flex-direction:column;align-items:flex-start;flex:1}
.service-card p{color:var(--semantic-muted);margin-top:12px;margin-bottom:18px}
.service-card .text-link{margin-top:auto}
.service-secondary{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:28px}
.service-secondary article{display:flex;flex-direction:column;align-items:start}
.service-secondary p{color:var(--semantic-muted);margin:10px 0 16px}
.service-secondary .text-link{margin-top:auto}
.section-note{font-size:var(--primitive-size-meta);color:var(--semantic-muted);margin-top:20px;max-width:100ch}
.about{background:var(--primitive-color-soft);padding-block:48px}
.about-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center}
.fleet{position:relative}
.fleet img{width:100%;height:380px;object-fit:cover;object-position:center 78%}
.fleet figcaption{position:absolute;left:16px;bottom:16px;right:16px;padding:9px 12px;background:white;font-size:var(--primitive-size-meta)}
.about-copy>p:not(.eyebrow){margin-top:22px;color:var(--semantic-muted)}
.owner-signoff{display:grid;font-style:normal;gap:4px;margin-block:26px}
.owner-signoff strong{font:600 var(--semantic-size-title)/var(--primitive-leading-title) var(--primitive-font-reading);letter-spacing:-.02em}
.owner-signoff span{font-size:var(--primitive-size-control);color:var(--semantic-muted)}
.area{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:center;padding-block:32px}
.area h2{font:600 var(--semantic-size-title)/var(--primitive-leading-title) var(--primitive-font-reading);letter-spacing:-.02em;max-width:30ch}
.area>div>p:not(.eyebrow){color:var(--semantic-muted)}
.area .text-link{margin-top:12px}
.work{background:var(--primitive-color-soft);border-top:1px solid var(--primitive-color-line)}
.project+.project{margin-top:40px}
.project-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:22px}
.project-heading p{font-size:var(--primitive-size-control);color:var(--semantic-muted);margin-top:5px}
.project-heading .text-link{flex-shrink:0}
.comparison{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.project-image{display:block;position:relative;background:var(--primitive-color-soft);overflow:hidden;cursor:zoom-in;aspect-ratio:4/3}
.project-image img{width:100%;height:100%;object-fit:cover}
.photo-tag{position:absolute;top:16px;left:16px;padding:6px 12px;background:white;color:var(--semantic-text);font-size:var(--primitive-size-meta);letter-spacing:.08em;font-weight:600}
.after-tag{background:var(--semantic-action);color:white}
.image-open{position:absolute;bottom:12px;right:12px;width:44px;height:44px;display:grid;place-items:center;background:white;color:var(--semantic-text);font-size:1.5rem}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:20px}
.detail-grid figure{display:grid;grid-template-columns:minmax(112px,38%) minmax(0,1fr);gap:20px;align-items:center}
.detail-grid .project-image{aspect-ratio:4/3}
.detail-grid figcaption{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding-top:0}
.detail-grid figcaption strong{font:600 var(--component-caption-title)/var(--primitive-leading-title) var(--primitive-font-reading);letter-spacing:-.02em}
.detail-grid figcaption>span{font-size:var(--primitive-size-body);line-height:var(--primitive-leading-body);color:var(--semantic-muted)}
.work-more{margin-top:20px}
.contact{border-top:1px solid var(--primitive-color-line)}
.contact-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:center}
.contact-intro>p:not(.eyebrow){margin-top:24px;max-width:45ch;color:var(--semantic-muted)}
.contact-intro .owner-signoff{margin-bottom:0}
.contact-panel{padding:28px;background:var(--primitive-color-soft);border-top:3px solid var(--semantic-action)}
.contact-panel>p{margin-top:12px;color:var(--semantic-muted)}
.contact-phone{display:grid;gap:4px;margin-block:23px;color:var(--semantic-action)}
.contact-phone>span{font-size:var(--primitive-size-control)}
.contact-phone>strong{font:600 var(--semantic-size-title)/var(--primitive-leading-title) var(--primitive-font-reading);letter-spacing:-.02em}
.contact-panel .button{width:100%}
.email-address{display:block;overflow-wrap:anywhere;margin-top:14px;font-size:var(--primitive-size-control);text-decoration:underline;text-underline-offset:3px}
.contact-panel .quiet{font-size:var(--primitive-size-meta);margin-top:16px}
.footer{background:var(--primitive-color-ink);color:white;padding-block:36px 20px}
.footer-grid{display:grid;grid-template-columns:1.2fr .7fr 1fr;gap:50px}
.footer-name{font:400 3rem/1 var(--primitive-font-display);letter-spacing:.015em}
.footer-descriptor{display:block;font-size:var(--primitive-size-meta);letter-spacing:.08em;margin-top:6px}
.footer-grid p{margin-top:20px;font-size:var(--primitive-size-control);color:#d9ded8}
.footer-grid nav,.footer-contact{display:flex;flex-direction:column;align-items:start;font-size:var(--primitive-size-control);gap:6px}
.footer a{min-height:32px;display:inline-flex;align-items:center;overflow-wrap:anywhere}
.footer a:hover{text-decoration:underline;text-underline-offset:4px}
.footer :focus-visible{outline-color:white}
.footer-contact span{margin-bottom:8px;color:#d9ded8}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:28px;margin-top:24px;padding-top:18px;border-top:1px solid #465046;font-size:var(--primitive-size-meta);color:#d9ded8}
.mobile-contact{display:none}
.lightbox{width:min(1120px,calc(100% - 48px));max-height:calc(100dvh - 48px);padding:22px 26px;border:0;color:var(--semantic-text);background:white;overflow:auto;overscroll-behavior:contain}
.lightbox::backdrop{background:#08150eeb}
.lightbox-header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px}
.lightbox h2{font:600 var(--semantic-size-title)/var(--primitive-leading-title) var(--primitive-font-reading);letter-spacing:-.02em}
.lightbox-close{display:flex;align-items:center;gap:16px;min-width:100px;min-height:44px;padding:8px 13px;border:1px solid var(--primitive-color-line);background:white;color:var(--semantic-text);cursor:pointer;font-size:var(--primitive-size-control)}
#lightbox-image{width:100%;height:auto;max-height:calc(100dvh - 255px);object-fit:contain;background:var(--primitive-color-soft)}
#photo-caption{margin-top:17px;max-width:90ch}
.lightbox-credit{color:var(--semantic-muted);margin-top:8px;font-size:var(--primitive-size-meta)}
@media(min-width:1700px){.hero{min-height:540px}}
@media(max-width:1100px){.shell{width:calc(100% - 64px)}.primary-nav{gap:20px}.brand-logo{width:185px}.masthead{gap:24px}.header-quote{padding-inline:18px}.section-heading,.about-grid,.area,.contact-grid{gap:45px}.service-cards{gap:22px}.hero-credit{right:32px}.fleet img{height:380px}}
@media(max-width:950px){.header-quote{display:none}.masthead{min-height:88px}.hero{min-height:480px}.hero h1{font-size:4.5rem}.section-heading{grid-template-columns:1fr 1fr;gap:35px}.service-cards{gap:20px}.service-secondary{gap:35px}.about-grid{gap:35px}.fleet img{height:400px}.contact-grid{gap:35px}.contact-panel{padding:26px}.footer-grid{gap:30px;grid-template-columns:1fr .7fr 1.2fr}}
@media(max-width:750px){.shell{width:calc(100% - 40px)}.section-space{padding-block:36px}.utility-bar{font-size:var(--primitive-size-meta)}.utility-bar>.shell>span{max-width:25ch}.utility-bar a{gap:7px}.utility-separator{margin-inline:3px}.masthead{min-height:80px}.brand-logo{width:166px}.primary-nav{display:none}.mobile-menu{display:block;margin-left:auto}.mobile-menu summary{display:flex;gap:20px;align-items:center;list-style:none;min-height:48px;padding-left:15px;font-size:var(--primitive-size-control);cursor:pointer}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu summary span{font-size:1.5rem}.mobile-menu[open] summary span{transform:rotate(45deg)}.mobile-menu nav{position:absolute;top:100%;left:-20px;right:-20px;z-index:5;background:white;display:grid;padding:10px 24px 22px;border-top:1px solid var(--primitive-color-line);box-shadow:0 10px 15px #00000012}.mobile-menu nav a{padding:13px 0;border-bottom:1px solid var(--primitive-color-line)}.hero{min-height:0;display:flex;flex-direction:column;background:var(--primitive-color-ink);align-items:stretch}.hero-inner{order:0;padding-block:24px 28px}.hero-photo{position:static;order:1;z-index:auto;aspect-ratio:4/3;object-fit:contain;height:auto}.hero-shade{display:none}.hero h1{font-size:clamp(2.8rem,10.2vw,4.4rem)}.hero-description{margin-top:16px;max-width:37ch}.hero-description br{display:none}.hero-actions{gap:16px;margin-top:20px}.hero-credit{position:static;order:2;display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;text-align:left;padding:15px 20px;background:var(--primitive-color-ink)}.section-heading{grid-template-columns:1fr;gap:20px;margin-bottom:28px}.section-heading>p{justify-self:start;max-width:48ch}.service-cards{grid-template-columns:1fr;gap:24px}.service-card{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding-bottom:20px}.service-card-copy{padding:0}.service-secondary{gap:28px}.about{padding-block:36px}.about-grid{grid-template-columns:1fr;gap:24px}.fleet img{height:320px;object-position:center 78%}.about-copy{max-width:55ch}.area{grid-template-columns:1fr;gap:16px;padding-block:28px}.area>div:last-child{max-width:55ch}.project-heading{align-items:start;flex-direction:column;gap:8px}.project-heading .text-link{min-height:38px}.comparison{gap:14px}.detail-grid{grid-template-columns:1fr;gap:16px}.detail-grid figure{grid-template-columns:144px minmax(0,1fr);gap:20px}.contact-grid{grid-template-columns:1fr;gap:24px}.contact-intro{max-width:55ch}.contact-panel{padding:28px}.footer-grid{grid-template-columns:1fr 1fr;gap:32px}.footer-contact{grid-column:1/-1}.footer-bottom{align-items:start;flex-direction:column;gap:10px}.lightbox{width:calc(100% - 24px);max-height:calc(100dvh - 24px);padding:16px}.lightbox-header{gap:10px}.lightbox h2{max-width:18ch}#lightbox-image{max-height:calc(100dvh - 280px)}}
@media(max-width:550px){body{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}.utility-bar>.shell{gap:12px}.utility-bar>.shell>span{max-width:none;flex:1;min-width:0;padding-block:6px}.utility-bar a{display:block;text-align:right;align-content:center}.utility-bar a strong{display:block}.hero-actions{display:grid;gap:8px}.hero-link{justify-content:center}.service-card{display:flex;gap:20px}.service-card-copy{display:flex;flex:1}.service-secondary{grid-template-columns:1fr;gap:25px}.service-secondary article+article{border-top:1px solid var(--primitive-color-line);padding-top:25px}.fleet img{height:280px}.comparison{grid-template-columns:1fr;gap:16px}.detail-grid{gap:16px}.detail-grid figure{grid-template-columns:120px minmax(0,1fr);gap:16px}.detail-grid .project-image{aspect-ratio:4/3}.project+.project{margin-top:32px}.footer-grid{grid-template-columns:1fr;gap:28px}.footer-contact{grid-column:auto}.mobile-contact{display:grid;grid-template-columns:.8fr 1.2fr;gap:10px;position:fixed;bottom:0;left:0;right:0;z-index:10;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:white;border-top:1px solid var(--primitive-color-line)}.mobile-contact a{min-height:50px;display:grid;place-items:center;padding:12px;border:1px solid var(--semantic-action);color:var(--semantic-action);font-size:var(--primitive-size-control);font-weight:500}.mobile-contact a:last-child{background:var(--semantic-action);color:white}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}

/* Service routes use the same title, body, caption and control roles. */
.breadcrumb{display:flex;gap:12px;flex-wrap:wrap;padding-block:16px;font-size:var(--primitive-size-control);color:var(--semantic-muted)}
.breadcrumb a{text-decoration:underline;text-underline-offset:4px;min-height:28px}
.service-intro{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;align-items:center;padding-block:16px 48px}
.service-intro h1,.preview-notes h1{font:600 clamp(2.5rem,4.4vw,4rem)/1.08 var(--primitive-font-reading);letter-spacing:-.035em;max-width:22ch}
.service-short{font:600 var(--semantic-size-title)/var(--primitive-leading-title) var(--primitive-font-reading);letter-spacing:-.02em;margin-top:24px}
.service-intro p:not(.eyebrow):not(.service-short){margin-top:16px;color:var(--semantic-muted)}
.service-intro .button{margin-top:28px}
.service-main-photo img{width:100%;aspect-ratio:4/3;object-fit:cover;object-position:center 70%}
.service-main-photo.service-fleet img{object-position:center 78%}
.service-main-photo figcaption{font-size:var(--primitive-size-meta);color:var(--semantic-muted);margin-top:12px}
.service-information{padding-block:48px;background:var(--primitive-color-soft)}
.service-information-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:48px}
.scope-list{margin:28px 0 0;padding:0;list-style:none}
.scope-list li{padding:13px 0;border-top:1px solid var(--primitive-color-line)}
.scope-list li:last-child{border-bottom:1px solid var(--primitive-color-line)}
.service-information-grid>div>p:not(.eyebrow){margin-top:16px;color:var(--semantic-muted)}
.service-information-grid .text-link{margin-top:20px}
.related-services{padding-block:24px 40px}
.related-services h2{font-size:var(--semantic-size-title);line-height:var(--primitive-leading-title);letter-spacing:-.02em}
.related-services>div{display:flex;flex-wrap:wrap;gap:14px 35px;margin-top:18px}
.preview-notes{max-width:960px}
.notes-lede{margin-top:24px;color:var(--semantic-muted)}
.preview-notes section{margin-top:32px}
.preview-notes section h2{font-size:clamp(1.7rem,2.5vw,2rem);margin-bottom:18px}
.preview-notes section p{color:var(--semantic-muted)}
.preview-notes section a{text-decoration:underline;text-underline-offset:4px;color:var(--semantic-action)}
.preview-notes li{margin-block:10px}
.preview-notes>.button{margin-top:40px}
.evidence-list{display:grid;gap:25px}
.evidence-list h3{margin-bottom:8px}
@media(max-width:1100px){.service-intro,.service-information-grid{gap:45px}}
@media(max-width:750px){.service-photo img{aspect-ratio:1/1}.service-intro{grid-template-columns:1fr;gap:24px;padding-block:12px 36px}.service-information{padding-block:36px}.service-information-grid{grid-template-columns:1fr;gap:35px}.service-main-photo{max-width:600px}.related-services{padding-bottom:32px}}
@media(max-width:550px){.service-photo img{aspect-ratio:8/5}}
