:root{--paper:#fafafa;--ink:#1c1c1c;--soft:#dcdcdc;--gutter:4vw;--max-width:1500px;font-family:'PT Serif',Georgia,serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}img{display:block;max-width:100%}a{color:inherit;text-underline-offset:4px}button,input,textarea{font:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,.gallery:focus-visible{outline:2px solid currentColor;outline-offset:4px}[hidden]{display:none!important}h1,h2,h3,.button{font-family:'Marcellus',Georgia,serif;font-weight:400}h2{font-size:clamp(2rem,3.1vw,2.8rem);line-height:1.2;margin:0 0 28px}h3{font-size:2.2rem;margin:24px 0 16px}p{line-height:1.7;margin:0 0 24px}.skip-link{position:absolute;top:0;left:12px;transform:translateY(-150%);z-index:10;padding:12px;background:white}.skip-link:focus{transform:none}
.site-header{max-width:var(--max-width);margin:auto;padding:24px var(--gutter) 20px;text-align:center}.site-header h1{font-size:1.5rem;line-height:1.3;letter-spacing:.04em;text-transform:uppercase;margin:0}.site-header h1 a{text-decoration:none}.site-header nav{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 26px;margin-top:18px;font-size:.9rem}.site-header nav a{text-decoration:none}.site-header nav a:hover,.site-header nav a[aria-current]{text-decoration:underline}.section{max-width:var(--max-width);margin:auto;padding:64px var(--gutter)}
.hero{position:relative;margin:0 var(--gutter);height:clamp(280px,35vw,520px);overflow:hidden;display:grid;place-items:center}.hero-background{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center}.hero:after{content:'';position:absolute;inset:0;background:#0004}.hero-logo{position:relative;z-index:1;width:auto;height:100%;object-fit:contain}.about{display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:center}.about p{font-size:1.1rem}.about img{width:100%;max-height:560px;object-fit:cover}.services{text-align:center;background:#fff}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4vw}.service-grid article{display:flex;flex-direction:column;align-items:center}.service-grid img{width:100%;aspect-ratio:1;object-fit:contain}.service-grid p{flex-grow:1}.button{display:inline-block;background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:100px;padding:18px 30px;text-decoration:none;text-align:center;font-size:1rem}.button:hover{background:#444}
.gallery{max-width:var(--max-width);margin:0 auto;padding:0 var(--gutter) 24px}.gallery-stage{position:relative;background:var(--paper)}.gallery-slide{margin:0;height:clamp(260px,68vh,820px)}.gallery-slide img{width:100%;height:100%;object-fit:contain}.gallery-arrow{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border:0;border-radius:50%;background:#fafafae6;color:var(--ink);font-size:22px;box-shadow:0 1px 6px #0002}.previous{left:12px}.next{right:12px}.thumbnails{display:flex;gap:10px;overflow-x:auto;max-width:760px;margin:16px auto 0;padding:5px;scrollbar-width:thin}.thumbnails button{flex:0 0 80px;width:80px;height:64px;padding:0;border:2px solid transparent;background:none;opacity:.5}.thumbnails button[aria-pressed=true]{opacity:1;border-color:var(--ink)}.thumbnails button:hover{opacity:1}.thumbnails img{width:100%;height:100%;object-fit:cover}.gallery-status{text-align:center;font-size:.8rem;margin:12px 0 0}
.contact{display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:center}.contact-image{width:100%;height:100%;max-height:620px;object-fit:contain}.contact h2{font-size:clamp(2.5rem,5vw,4rem)}dl{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin:30px 0}dl div:last-child{grid-column:1/-1}dt{font-weight:bold;margin-bottom:8px}dd{margin:0;line-height:1.7;overflow-wrap:anywhere}.inquiry{max-width:850px}.inquiry h2{text-align:center}.inquiry form{display:grid;gap:24px}fieldset{padding:0;border:0;margin:0;min-width:0}legend{padding:0;margin-bottom:12px}.name-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}label{display:block}label span,legend span{font-size:.8em;opacity:.7}input,textarea{display:block;width:100%;margin-top:8px;padding:14px 18px;border:1px solid var(--ink);border-radius:24px;color:var(--ink);background:transparent}textarea{resize:vertical;min-height:140px}.inquiry button{justify-self:center;min-width:140px}.form-note{text-align:center;font-size:.8rem;margin:0}footer{display:flex;justify-content:center;gap:24px;padding:32px;font-size:.85rem}
@media(max-width:700px){:root{--gutter:6vw}.site-header{padding-top:24px}.site-header nav{gap:12px 18px;font-size:.85rem}.section{padding-block:40px}.about,.contact{grid-template-columns:1fr;gap:30px}.about img{max-height:400px}.service-grid{grid-template-columns:1fr;gap:48px}.service-grid article{max-width:420px;margin:auto}.service-grid img{max-width:300px}.hero{height:300px}.gallery-slide{height:55vh;min-height:280px;max-height:600px}.gallery-arrow{width:40px;height:40px}.previous{left:4px}.next{right:4px}.thumbnails button{flex-basis:64px;height:54px}.contact-image{max-height:380px}.contact h2{font-size:2.5rem}.name-fields{gap:12px}}
/* Client reviews, shared by every page. Native scrolling needs no script. */
.reviews{border-top:1px solid var(--soft);scroll-margin-top:24px}
.reviews-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:28px}
.reviews-heading small{display:block;margin-bottom:12px}
.reviews-heading h2{margin:0}
.reviews-swipe{font-size:.85rem;white-space:nowrap}
.reviews-list{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 48px)/3);gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin;padding:4px 4px 20px}
.review-item{scroll-snap-align:start;border:1px solid var(--soft);padding:28px;background:#fff;min-width:0}
.review-meta{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.review-stars{letter-spacing:.12em}
.review-item p{margin:0;font-size:.95rem;overflow-wrap:anywhere}
.reviews-list:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
@media(max-width:1000px){.reviews-list{grid-auto-columns:calc((100% - 24px)/2)}}
@media(max-width:700px){.reviews-heading{display:block}.reviews-swipe{display:block;margin-top:16px}.reviews-list{grid-auto-columns:88%;gap:16px}.review-item{padding:22px}}

/* Google review invitation copied from the NFC landing page. */
.google-review-card {
  position: relative;
  grid-column: span 2;
  display: grid;
  grid-template-columns: 128px 1fr 68px;
  gap: 24px;
  align-items: center;
  min-height: 142px;
  padding: 20px 24px;
  overflow: hidden;
  border: 1px solid #e1e4e9;
  border-radius: 22px;
  color: #202124;
  background: #fff;
  box-shadow: 0 12px 30px rgba(32, 33, 36, .07);
  text-decoration: none;
  transition: transform .35s ease, box-shadow .35s ease;
}

.google-review-card::after {
  content: "";
  position: absolute;
  z-index: 0;
  width: 190px;
  height: 190px;
  right: -92px;
  bottom: -110px;
  border: 24px solid #eef3fd;
  border-radius: 50%;
  pointer-events: none;
}

.google-review-card:hover,
.google-review-card:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 20px 42px rgba(32, 33, 36, .14);
  outline: none;
}

.google-mark {
  position: relative;
  z-index: 1;
  display: block;
  width: 96px;
  height: 96px;
  border-radius: 28px;
  filter: drop-shadow(0 10px 12px rgba(32, 33, 36, .1));
}

.google-shape {
  position: absolute;
  width: 46px;
  height: 46px;
}

.google-red {
  top: 0;
  left: 0;
  border-radius: 31px 10px 31px 10px;
  background: #f25349;
  transform: rotate(-4deg);
}

.google-blue {
  top: 0;
  right: 0;
  border-radius: 10px 31px 10px 31px;
  background: #5389ee;
  transform: rotate(4deg);
}

.google-yellow {
  bottom: 0;
  left: 0;
  border-radius: 10px 31px 10px 31px;
  background: #ffc23a;
  transform: rotate(4deg);
}

.google-green {
  right: 0;
  bottom: 0;
  border-radius: 31px 10px 31px 10px;
  background: #4caf62;
  transform: rotate(-4deg);
}

.google-mark > strong {
  position: absolute;
  z-index: 2;
  inset: 22px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #202124;
  background: #fff;
  font: 700 42px/1 Arial, sans-serif;
}

.google-review-copy {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 9px;
}

.google-review-copy small {
  color: #656970;
  font: 400 clamp(10px, .9vw, 13px)/1.2 Arial, sans-serif;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.google-review-copy > strong {
  font: 700 clamp(20px, 2vw, 28px)/1.1 Arial, sans-serif;
  letter-spacing: -.035em;
}

.google-review-arrow {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  color: #fff;
  background: #202124;
  font: 400 27px/1 Arial, sans-serif;
  transition: transform .35s ease;
}

.google-review-card:hover .google-review-arrow { transform: translate(3px, -3px); }
.review-invitation{max-width:850px;padding-top:0;padding-bottom:24px}
.google-review-card:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
@media(max-width:700px){.google-review-card{grid-template-columns:68px minmax(0,1fr) 36px;gap:12px;padding:18px 14px;min-height:110px}.google-mark{width:68px;height:68px}.google-shape{width:33px;height:33px}.google-mark>strong{inset:15px;font-size:30px}.google-review-copy small{font-size:9px;line-height:1.5}.google-review-copy>strong{font-size:18px}.google-review-arrow{width:36px;height:36px;font-size:21px}}
@media(prefers-reduced-motion:reduce){.google-review-card,.google-review-arrow{transition:none}.google-review-card:hover,.google-review-card:focus-visible,.google-review-card:hover .google-review-arrow{transform:none}}
/* Persistent footer; reserve its full height so it never covers page content. */
body{padding-bottom:calc(73px + env(safe-area-inset-bottom,0px))}
html{scroll-padding-bottom:calc(89px + env(safe-area-inset-bottom,0px))}
.site-footer{position:fixed;inset:auto 0 0;z-index:20;display:flex;justify-content:center;padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--soft);background:var(--paper)}
.site-footer nav{display:flex;align-items:center;justify-content:center;gap:24px}
.site-footer a{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;color:var(--ink);text-decoration:none}
.site-footer a:hover{background:var(--soft)}
.site-footer svg{display:block;width:26px;height:26px}
@media print{body{padding-bottom:0}.site-footer{position:static}}
