:root { --ink:#293337; --muted:#626b6f; --paper:#fff; --line:#ddd; --green:#4b5459; --yellow:#ffda00; --charcoal:#465258; }
body.upland-theme { background:#fff; font-family:Arial,Helvetica,sans-serif; color:#666; font-weight:400; }
.upland-theme h1,.upland-theme h2,.upland-theme h3 { color:#4c565c; font-weight:400; }
.upland-theme a:hover { color:#222; }
.preview-bar { background:#f2f2f2; color:#555; border-bottom:1px solid #e4e4e4; }
.contact-top { background:#fff; font-size:13px; color:#30363a; }
.contact-top > div { height:32px; display:flex; justify-content:space-between; align-items:center; }
.contact-top a { text-decoration:none; }
.social-facebook { display:flex; align-items:center; gap:9px; font-weight:700; font-size:19px; }
.social-facebook span { font-size:11px; font-weight:400; }
.upland-masthead { background:var(--yellow); color:#111; text-align:center; padding:14px 18px 13px; }
.masthead-brand { display:inline-flex; align-items:center; justify-content:center; gap:17px; text-decoration:none; color:#15191b; font-size:39px; font-weight:700; line-height:1.1; }
.masthead-brand img { height:72px; width:72px; border-radius:50%; }
.upland-masthead p { font-size:12px; color:#242829; margin:7px 0 0; }
.main-menu { background:var(--charcoal); color:#fff; }
.main-menu > div { display:flex; justify-content:center; align-items:stretch; min-height:46px; gap:0; }
.main-menu a { color:#fff; font-size:14px; text-decoration:none; padding:12px 22px; display:flex; align-items:center; justify-content:center; }
.main-menu a + a { border-left:1px solid rgba(255,255,255,.13); }
.main-menu a:hover,.main-menu a[aria-current] { color:var(--yellow); background:#3b464c; }
.landscape-slider { width:100%; height:480px; position:relative; overflow:hidden; background:#8b947c; }
.landscape-slide { position:absolute; inset:0; opacity:0; visibility:hidden; transition:opacity 900ms ease,visibility 900ms; }
.landscape-slide.is-active { opacity:1; visibility:visible; z-index:1; }
.landscape-slide > img { width:100%; height:100%; object-fit:cover; object-position:center 56%; }
.landscape-slide[data-slide="1"] > img { object-position:center 58%; }
.landscape-slide[data-slide="2"] > img { object-position:center 40%; }
.slide-label { position:absolute; left:0; right:0; bottom:90px; }
.slide-label a { display:inline-block; max-width:min(780px,90%); background:var(--yellow); color:#15191b; text-decoration:none; font-weight:400; font-size:30px; line-height:1.3; padding:12px 16px; }
.slider-controls { position:absolute; z-index:3; bottom:18px; right:max(32px,calc((100% - 1180px)/2)); display:flex; align-items:center; gap:5px; background:rgba(34,43,46,.75); color:#fff; padding:0 5px; border-radius:2px; }
.slider-controls button { width:36px; height:36px; border:0; color:white; background:transparent; cursor:pointer; font-size:29px; line-height:1; }
.slider-controls button:hover { color:var(--yellow); }
.slider-controls [data-slide-pause] { font-size:13px; }
.slide-position { font-size:11px; min-width:33px; text-align:center; }
.welcome-section { padding:52px 0 44px; }
.welcome-section h1 { text-align:center; font-weight:300; font-size:31px; text-transform:uppercase; margin-bottom:12px; }
.welcome-lead { text-align:center; font-size:19px; line-height:1.45; max-width:900px; margin:0 auto 25px; }
.welcome-section > p:last-child { max-width:980px; margin:0 auto; font-size:16px; }
.centred-heading { font-size:27px; line-height:1.3; text-transform:uppercase; font-weight:300 !important; text-align:center; margin:0 0 36px; }
.centred-heading::after { content:''; display:block; width:64px; height:2px; background:var(--yellow); margin:16px auto 0; }
.upland-services { padding:12px 0 58px; }
.upland-service-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:44px; }
.service-tile { text-decoration:none; }
.service-tile img { width:100%; height:235px; transition:filter .25s; }
.service-tile h3 { font-size:19px; margin:22px 0 12px; }
.service-tile h3::after { content:''; display:block; width:52px; height:2px; background:var(--yellow); margin-top:15px; transition:width .25s; }
.service-tile:hover h3::after { width:90px; }
.service-tile p { color:#70777a; font-size:14px; line-height:1.5; }
.featured-section { padding:46px 0; background:#eee; }
.featured-grid,.case-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.case-tile { overflow:hidden; background:#fff; }
.case-tile > a { text-decoration:none; display:block; height:100%; }
.case-tile img { width:100%; height:285px; transition:transform .5s,filter .5s; }
.case-tile:hover img { filter:brightness(1.04); transform:scale(1.015); }
.case-caption { display:block; padding:20px; }
.case-caption small { font-size:12px; color:#797f81; }
.case-caption h3 { font-size:20px; margin:7px 0 14px; }
.case-read { color:#4f5c63; font-size:12px; text-decoration:underline; text-underline-offset:4px; }
.section-action { text-align:center; margin-top:30px; }
.button.yellow { background:var(--yellow); color:#242c30; border-radius:25px; border:0; font-size:13px; font-weight:400; padding:12px 24px; }
.button.yellow:hover { background:#e9c900; color:#111; }
.team-invite { display:flex; align-items:center; justify-content:space-between; gap:30px; padding-block:38px; border-bottom:1px solid #e7e7e7; }
.team-invite h2 { font-size:25px; margin-bottom:8px; text-transform:uppercase; font-weight:300; }
.team-invite p { margin:0; font-size:15px; }
.comment-section { padding-block:48px 60px; text-align:center; }
.comment-section blockquote p { font-size:23px; font-weight:300; margin-bottom:22px; }
.comment-section cite { font-size:14px; color:#495259; }
.comment-section cite span { font-size:11px; color:#929799; margin-top:4px; }
.upland-footer { background:var(--charcoal); color:#fff; padding:48px 0; font-size:14px; }
.footer-columns { display:grid; grid-template-columns:1.3fr 1fr .8fr; gap:48px; }
.footer-columns > div { display:flex; flex-direction:column; align-items:start; gap:8px; }
.footer-columns p { margin:0; }
.footer-columns a { color:#fff; text-decoration:none; overflow-wrap:anywhere; }
.footer-columns a:hover { color:var(--yellow); }
.footer-credit { padding-block:18px; background:#fafafa; font-size:11px; color:#8a9093; }
.footer-credit > div { display:flex; justify-content:space-between; gap:20px; }
.inner-heading { padding:44px 0 38px; background:#f2f2f2; border-bottom:1px solid #e8e8e8; text-align:center; margin-bottom:42px; }
.inner-heading h1 { font-weight:300; font-size:34px; text-transform:uppercase; margin-bottom:12px; }
.inner-heading p { font-size:16px; margin:0; }
.case-index { padding-bottom:45px; }
.case-index .case-tile { background:#f6f6f6; }
.field-notes { padding-top:48px; margin-top:40px; border-top:1px solid #e4e4e4; }
.field-notes > div:first-child { text-align:center; margin-bottom:28px; }
.field-notes h2 { font-size:26px; text-transform:uppercase; }
.site-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.site-gallery .photo-open { height:230px; }
.site-gallery figcaption { color:#777; }
.upland-contact { background:#f2f2f2; padding:32px 0; }
.upland-contact > div { display:flex; justify-content:space-between; align-items:center; gap:24px; }
.upland-contact h2 { font-weight:300; font-size:25px; margin-bottom:7px; }
.upland-contact p { margin:0; font-size:14px; }
.project-story { padding-bottom:45px; }
.story-image { margin-top:25px; }
.story-image .photo-open { height:570px; }
.story-image img { object-position:center 65%; }
.story-image figcaption { font-size:13px; }
.story-copy { display:grid; grid-template-columns:1fr 1.7fr; gap:55px; padding-top:34px; }
.story-copy h2 { font-size:28px; font-weight:300; }
.related-grid { max-width:820px; margin:auto; display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.join-layout { display:grid; grid-template-columns:1fr 1fr; gap:60px; padding-bottom:50px; }
.join-layout > figure img { height:550px; width:100%; object-position:center 40%; }
.join-layout h2 { font-size:28px; font-weight:300; }
.join-contact { padding-top:26px; margin-top:26px; border-top:1px solid #ddd; display:flex; flex-direction:column; gap:8px; }
.join-contact h3 { font-size:20px; margin-bottom:8px; }
.join-contact a { overflow-wrap:anywhere; }
.join-layout .contact-preview { margin-top:24px; }
.service-rows { padding-bottom:30px; }
.service-row { display:grid; grid-template-columns:1fr 1.15fr; gap:55px; align-items:center; padding-bottom:40px; margin-bottom:40px; border-bottom:1px solid #e4e4e4; }
.service-row:nth-child(even) > figure { order:2; }
.service-row img { width:100%; height:300px; }
.service-row h2 { font-size:28px; font-weight:300; }
.contact-layout { margin-top:8px; }
.contact-layout .contact-number { font-weight:400; color:#465258; }
.internal-page .quote-intro { padding-top:40px; }
.internal-page h1 { font-size:38px; font-weight:300; }
.price-panel { background:#f6f6f6; border-top-color:var(--yellow); }
.price-panel .build-price,.price-panel .quote-total strong { color:#354147; }
.price-panel input { accent-color:#59666c; }
.price-panel label:has(input:checked) { border-color:#7a858a; }
.price-panel .ink { background:#465258; }
.review-list { margin-top:20px; }
.reveal-waiting { opacity:.3; transform:translateY(48px); transition:opacity 950ms ease var(--reveal-delay,0ms),transform 950ms cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms); }
.reveal-in { opacity:1; transform:none; }
.reveal-waiting .centred-heading::after,.centred-heading.reveal-waiting::after { transform:scaleX(.15); transition:transform 1100ms cubic-bezier(.16,1,.3,1) 120ms; }
.reveal-in .centred-heading::after,.centred-heading.reveal-in::after { transform:scaleX(1); }
.landscape-slide { transition:opacity 1100ms ease,visibility 1100ms; }
.landscape-slide.is-active > img { animation:landscape-drift 8s ease-out both; animation-play-state:paused; }
.landscape-slider.is-playing .landscape-slide.is-active > img { animation-play-state:running; }
.landscape-slide .slide-label a { opacity:0; transform:translateX(-64px); transition:transform 850ms cubic-bezier(.16,1,.3,1) 200ms,opacity 650ms ease 200ms; }
.landscape-slide.is-active .slide-label a { opacity:1; transform:none; }
.motion-ready .landscape-slide.is-active .slide-label a { animation:caption-arrive 1100ms cubic-bezier(.16,1,.3,1) both; }
.motion-ready .masthead-brand { animation:brand-arrive 800ms cubic-bezier(.16,1,.3,1) both; }
.motion-ready .masthead-brand img { animation:brand-mark-arrive 1100ms cubic-bezier(.16,1,.3,1) both; }
.case-tile { transition:transform 950ms cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms),box-shadow 350ms ease,opacity 950ms ease var(--reveal-delay,0ms); }
.case-tile:hover { transform:translateY(-8px); box-shadow:0 15px 30px rgba(35,44,48,.15); }
.case-tile:hover img { transform:scale(1.07); }
.case-read { display:inline-block; transition:transform 300ms ease; }
.case-tile:hover .case-read { transform:translateX(8px); }
.service-tile { overflow:hidden; }
.service-tile img { transition:transform 650ms cubic-bezier(.16,1,.3,1),filter 650ms; }
.service-tile:hover img { transform:scale(1.045); filter:brightness(1.06); }
.button { transition:transform 250ms ease,box-shadow 250ms ease,background 250ms ease; }
.button:hover { transform:translateY(-3px); box-shadow:0 7px 15px rgba(45,50,48,.14); }
@keyframes landscape-drift { from {transform:scale(1.01) translateX(-.4%);} to {transform:scale(1.14) translateX(1%);} }
@keyframes brand-arrive { from {opacity:.4;transform:translateY(-22px);} to {opacity:1;transform:none;} }
@keyframes brand-mark-arrive { from {transform:rotate(-22deg) scale(.8);} to {transform:rotate(0) scale(1);} }
@keyframes caption-arrive { from {opacity:.2;transform:translateX(-64px);} to {opacity:1;transform:none;} }
@media(max-width:1000px) {
 .upland-service-grid {gap:25px;} .service-tile img {height:210px;}
 .case-tile img {height:235px;} .case-caption {padding:16px;}
 .slide-label a {font-size:26px;}
}
@media(max-width:760px) {
 .masthead-brand {font-size:32px;} .masthead-brand img {width:62px;height:62px;}
 .main-menu a {font-size:12px;padding:12px 13px;}
 .landscape-slider {height:380px;}
 .slide-label {bottom:80px;} .slide-label a {font-size:23px;max-width:90%;}
 .slider-controls {right:18px;}
 .welcome-section {padding-top:36px;padding-bottom:32px;}
 .welcome-section h1 {font-size:26px;} .welcome-lead {font-size:17px;}
 .upland-service-grid {grid-template-columns:1fr;gap:28px;}
 .service-tile {display:grid;grid-template-columns:1fr 1fr;column-gap:25px;align-items:start;}
 .service-tile img {grid-row:span 2;height:220px;}
 .service-tile h3 {margin-top:16px;font-size:20px;} .service-tile p {margin-top:0;}
 .featured-grid,.case-grid {grid-template-columns:1fr;max-width:560px;margin:auto;gap:25px;}
 .case-tile img {height:310px;}
 .case-caption h3 {font-size:22px;}
 .site-gallery {grid-template-columns:1fr;gap:25px;}
 .site-gallery .photo-open {height:330px;}
 .story-image .photo-open {height:460px;}
 .story-copy {grid-template-columns:1fr;gap:8px;}
 .join-layout {grid-template-columns:1fr;gap:30px;}
 .join-layout > figure img {height:400px;}
 .join-layout > div {order:-1;}
 .service-row {grid-template-columns:1fr;gap:25px;}
 .service-row:nth-child(even) > figure {order:0;}
 .service-row img {height:340px;}
 .footer-columns {grid-template-columns:1fr 1fr;gap:28px;}
 .footer-columns > div:last-child {grid-column:1/-1;}
 .inner-heading {margin-bottom:32px;padding:32px 0;}
 .inner-heading h1 {font-size:29px;}
}
@media(max-width:480px) {
 .contact-top > div {height:30px;font-size:11px;}
 .social-facebook span {display:none;}
 .masthead-brand {font-size:29px;gap:12px;} .masthead-brand img {width:55px;height:55px;}
 .upland-masthead p {font-size:10px;line-height:1.5;max-width:320px;margin:8px auto 0;}
 .main-menu > div {width:100%;flex-wrap:wrap;}
 .main-menu a {font-size:11px;padding:10px 9px;min-height:42px;}
 .landscape-slider {height:320px;}
 .slide-label a {font-size:20px;padding:10px 13px;max-width:100%;}
 .slide-label {bottom:78px;}
 .welcome-section h1 {font-size:24px;}
 .welcome-section > p:last-child {font-size:15px;}
 .centred-heading {font-size:24px;}
 .service-tile {display:block;}
 .service-tile img {height:250px;}
 .service-tile h3 {margin-top:18px;}
 .featured-section {padding-block:34px;}
 .case-tile img {height:270px;}
 .team-invite,.upland-contact > div {flex-direction:column;align-items:start;gap:20px;}
 .comment-section blockquote p {font-size:21px;}
 .footer-columns {grid-template-columns:1fr;gap:25px;}
 .footer-columns > div:last-child {grid-column:auto;}
 .footer-credit > div {flex-direction:column;gap:8px;}
 .story-image .photo-open {height:360px;}
 .related-grid {grid-template-columns:1fr;}
 .site-gallery .photo-open {height:280px;}
 .inner-heading h1 {font-size:26px;}
 .internal-page h1 {font-size:32px;}
}
@media(prefers-reduced-motion:reduce) {
 .reveal-waiting {opacity:1;transform:none;} .landscape-slide {transition:none;}
 .landscape-slide.is-active > img,.motion-ready .masthead-brand,.motion-ready .masthead-brand img {animation:none;}
 .landscape-slide .slide-label a {opacity:1;transform:none;transition:none;}
 .motion-ready .landscape-slide.is-active .slide-label a {animation:none;}
 .case-tile:hover,.case-tile:hover img,.case-tile:hover .case-read,.service-tile:hover img,.button:hover {transform:none;}
 .reveal-waiting .centred-heading::after,.centred-heading.reveal-waiting::after {transform:none;}
}
@media print {
 .contact-top,.upland-masthead,.main-menu,.upland-footer,.footer-credit {display:none;}
 .price-panel {background:white;}
}
