/* Amity Design & Construct: Ironbark v1.0
   Palette, type scale and setting rules from the brand guidelines.
   Layout system: gallery-led, after Robert Plumb Build and Studio Prineas.
   Photography runs full bleed; text sits in a narrow measure between images.
   Contrast: every pair used here is verified in 04-QA-SIGNOFF.md */

:root{
  --ironbark:#8C6239;   /* primary : mark, large headings, one band, one button */
  --bark:#4A3A2C;       /* text    : all body copy, darkest fill */
  --umber:#6E4A2E;      /* accent  : eyebrows, rules, small print, hover */
  --chalk:#E5E0D6;      /* ground  : the default page */
  --oat:#D6C9B4;        /* secondary: image fields and quiet separation */
  --hair:rgba(74,58,44,.13);
  --hair-rev:rgba(229,224,214,.2);

  --shell:1320px;                       /* wide, so images breathe */
  --measure:34rem;                      /* the narrow text column */
  --gut:clamp(1.25rem,5vw,4rem);
  --sec:clamp(4.5rem,12vw,11rem);       /* generous vertical rhythm */
  --sec-half:clamp(3rem,7vw,6rem);
  --serif:"Source Serif 4",Georgia,"Times New Roman",serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}}

body{
  margin:0;background:var(--chalk);color:var(--bark);
  font-family:var(--serif);font-weight:400;font-size:1.0625rem;line-height:1.65;
  font-synthesis-weight:none;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg,video{max-width:100%;height:auto;display:block}

/* ---------- type ---------- */
h1,h2,h3,h4{margin:0;line-height:1.14;font-weight:400;letter-spacing:-.006em;text-wrap:balance}
.display{font-weight:300;font-size:clamp(2.4rem,6.4vw,5rem);line-height:1.02;letter-spacing:-.022em}
h1{font-weight:300;font-size:clamp(2.1rem,5.2vw,4rem);line-height:1.04;letter-spacing:-.02em}
h2{font-weight:300;font-size:clamp(1.7rem,3.6vw,2.7rem);letter-spacing:-.014em}
h3{font-size:clamp(1.15rem,1.7vw,1.35rem);font-weight:400}
p{margin:0 0 1.15em;max-width:var(--measure)}
.lede{font-size:clamp(1.15rem,1.65vw,1.375rem);line-height:1.5;max-width:32rem;font-weight:400}
.small{font-size:.875rem;line-height:1.6}
.measure{max-width:var(--measure)}

.eyebrow{
  display:block;font-size:.6875rem;font-weight:400;text-transform:uppercase;
  letter-spacing:.26em;color:var(--umber);margin:0 0 1.6rem;text-wrap:balance;
}

a{color:var(--umber);text-underline-offset:.2em;text-decoration-thickness:1px}
a:hover{color:var(--bark)}
a:focus-visible,button:focus-visible,input:focus-visible,
textarea:focus-visible,select:focus-visible{
  outline:2px solid var(--bark);outline-offset:3px;border-radius:1px
}

/* ---------- structure ----------
   .shell = the readable frame.  .bleedfig = edge to edge, photography only. */
.shell{width:min(var(--shell),100%);margin-inline:auto;padding-inline:var(--gut)}
section{padding-block:var(--sec)}
.tight{padding-block:var(--sec-half)}
.flush{padding-block:0}

.skip{position:absolute;left:-9999px;top:0;z-index:100}
.skip:focus{left:.5rem;top:.5rem;background:var(--bark);color:var(--chalk);
  padding:.85rem 1.25rem;text-decoration:none;display:inline-flex;align-items:center;min-height:44px}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  min-height:52px;padding:.85rem 1.5rem;border:1px solid transparent;
  font-family:inherit;text-transform:uppercase;letter-spacing:.14em;
  text-decoration:none;cursor:pointer;text-align:center;white-space:nowrap;
  transition:background-color .18s ease,color .18s ease,border-color .18s ease;
}
.btn svg{width:19px;height:19px;flex:none}
/* Chalk on Ironbark is 4.07:1: WCAG large text only, so this label never goes below 19px/600 */
.btn--primary{background:var(--ironbark);color:var(--chalk);font-size:1.1875rem;font-weight:600;letter-spacing:.05em}
.btn--primary:hover{background:var(--umber)}
@media (max-width:26rem){.btn--primary{padding-inline:1rem;letter-spacing:.02em}}
/* Chalk on Bark is 8.26:1: safe at any size */
.btn--dark{background:var(--bark);color:var(--chalk);font-size:.75rem;font-weight:600;min-height:46px;padding-inline:1.15rem}
.btn--dark:hover{background:var(--umber)}
.btn--ghost{background:transparent;color:var(--bark);border-color:var(--hair);font-size:.75rem;font-weight:600}
.btn--ghost:hover{background:var(--bark);color:var(--chalk);border-color:var(--bark)}
.btn--onband{background:var(--chalk);color:var(--bark);font-size:.875rem;font-weight:600}
.btn--onband:hover{background:var(--oat)}
.btn--block{width:100%}
.btn-row{display:flex;flex-wrap:wrap;gap:.8rem 1rem;align-items:center;margin-top:2.25rem}

.textlink{font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;font-weight:600;
  color:var(--umber);text-decoration:none;display:inline-flex;align-items:center;
  min-height:44px;border-bottom:1px solid var(--hair);padding-block:.85rem}
.textlink:hover{color:var(--bark);border-bottom-color:var(--bark)}

/* ---------- header: minimal chrome ---------- */
.hdr{position:sticky;top:0;z-index:50;background:var(--chalk);border-bottom:1px solid var(--hair)}
.hdr__in{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  min-height:78px;width:min(var(--shell),100%);margin-inline:auto;padding-inline:var(--gut)}
.hdr__logo{display:flex;align-items:center;min-height:44px}
.hdr__logo img{height:28px;width:auto}
.nav{display:none}
.nav ul{display:flex;align-items:center;gap:clamp(1.1rem,2.4vw,2.4rem);list-style:none;margin:0;padding:0}
.nav a{font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;color:var(--bark);
  text-decoration:none;display:inline-flex;align-items:center;min-height:44px}
.nav a:hover,.nav a[aria-current="page"]{color:var(--umber)}
.hdr__cta{display:none}
.burger{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  min-height:44px;min-width:44px;padding:.5rem .4rem;background:none;border:0;
  color:var(--bark);font-family:inherit;font-size:.6875rem;text-transform:uppercase;
  letter-spacing:.22em;cursor:pointer}
.burger__bars{display:grid;gap:5px;width:20px}
.burger__bars span{height:1px;background:var(--bark);display:block}
.drawer{display:none;border-top:1px solid var(--hair);background:var(--chalk)}
.drawer[data-open="true"]{display:block}
.drawer ul{list-style:none;margin:0;padding:.5rem var(--gut) 2rem}
.drawer li+li{border-top:1px solid var(--hair)}
.drawer a{display:flex;align-items:center;min-height:56px;text-decoration:none;color:var(--bark);
  font-size:1.0625rem;letter-spacing:.01em}
.drawer .sub a{padding-left:1.2rem;font-size:.9375rem;color:var(--umber)}
@media (min-width:64rem){
  .nav{display:block}.burger{display:none}.drawer{display:none!important}
  .hdr__cta{display:inline-flex}.hdr__logo img{height:32px}
}

/* ---------- hero: type left, image bleeding off the right edge ---------- */
.hero{padding-block:clamp(3rem,8vw,7rem) 0}
.hero__grid{display:grid;gap:clamp(2.5rem,5vw,4rem);align-items:center}
@media (min-width:62rem){
  /* the shell steps aside so the image column can reach the viewport edge */
  .hero .shell.hero__grid{width:100%;max-width:none;padding-inline:0}
  .hero__grid{
    grid-template-columns:
      max(var(--gut), calc((100vw - var(--shell)) / 2 + var(--gut)))
      minmax(0, 33rem)
      minmax(0, 1fr);
    column-gap:clamp(3rem,6vw,5rem);
  }
  .hero__grid > :first-child{grid-column:2}
  .hero__media{grid-column:3;width:100%}
}
.hero--wide .display{max-width:16ch}
.hero__foot{padding-top:clamp(3rem,7vw,6rem)}

/* ---------- image fields: never boxed ---------- */
.fig{background:var(--oat);display:grid;place-items:center;position:relative;overflow:hidden;width:100%}
.fig svg{width:clamp(48px,11%,88px);height:auto;color:rgba(74,58,44,.22)}
.fig img{width:100%;height:100%;object-fit:cover}
.fig--hero{aspect-ratio:5/4}
.fig--wide{aspect-ratio:16/9}
.fig--cinema{aspect-ratio:21/9}
.fig--tall{aspect-ratio:4/5}
.fig--square{aspect-ratio:1/1}
@media (max-width:61.99rem){.fig--hero{aspect-ratio:4/3}.fig--cinema{aspect-ratio:16/10}}

/* full-bleed photography. Always placed outside .shell, so plain full width is correct
   and no negative-margin trick is needed. */
.bleedfig{width:100%}

/* two images side by side, no gutter, like a printed spread */
.spread{display:grid;grid-template-columns:1fr;gap:0}
@media (min-width:52rem){.spread{grid-template-columns:1fr 1fr}}

/* ---------- editorial block: narrow text, generous air ---------- */
.ed{display:grid;gap:clamp(1.5rem,4vw,3.5rem)}
@media (min-width:62rem){
  .ed{grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:clamp(3rem,7vw,7rem)}
  .ed__side{position:sticky;top:7rem;align-self:start}
}
.ed__body>*:last-child{margin-bottom:0}
.ed__body p{max-width:38rem}

/* ---------- trust line: one quiet rule, not a bar of bullets ---------- */
.trust{border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.trust ul{display:flex;flex-wrap:wrap;gap:0 clamp(1.5rem,4vw,3.5rem);list-style:none;margin:0;padding:0}
.trust li{font-size:.6875rem;text-transform:uppercase;letter-spacing:.16em;color:var(--umber);
  display:flex;align-items:center;min-height:56px}

/* ---------- index rows ---------- */
.rows{border-top:1px solid var(--hair)}
.rowitem{display:grid;grid-template-columns:1fr;gap:.5rem;
  padding-block:1.75rem;border-bottom:1px solid var(--hair);align-items:start}
@media (min-width:52rem){
  .rowitem{grid-template-columns:3rem minmax(12rem,18rem) minmax(0,1fr);gap:2.5rem;padding-block:2.5rem}
}
.rowitem__n{font-size:.6875rem;letter-spacing:.2em;color:var(--umber);padding-top:.5rem}
.rowitem__t{font-size:clamp(1.25rem,2.1vw,1.6rem);font-weight:300;letter-spacing:-.01em;margin:0}
.rowitem__d{margin:0;max-width:38rem;color:var(--bark)}
@media (min-width:52rem){.rowitem__d{padding-top:.35rem}}
.rowitem__role{display:block;font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;
  color:var(--umber);margin-top:.5rem}
a.rowitem{text-decoration:none;color:inherit;transition:opacity .18s ease}
a.rowitem:hover{opacity:.62}

/* ---------- project tiles: image, then a line of type. No box. ---------- */
.tiles{display:grid;gap:clamp(2rem,4vw,3.5rem) clamp(1.25rem,2.5vw,2rem)}
@media (min-width:44rem){.tiles--2{grid-template-columns:1fr 1fr}}
@media (min-width:52rem){.tiles--3{grid-template-columns:repeat(3,1fr)}}
@media (min-width:44rem) and (max-width:51.99rem){.tiles--3{grid-template-columns:1fr 1fr}}
.tile{display:block;text-decoration:none;color:inherit}
.tile__cap{padding-top:1.1rem}
.tile__t{font-size:clamp(1.2rem,1.8vw,1.45rem);font-weight:300;margin:0 0 .4rem}
.tile__k{font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;color:var(--umber);margin:0}
.tile .fig{transition:opacity .2s ease}
.tile:hover .fig{opacity:.86}

/* ---------- the single primary band ---------- */
.band{background:var(--ironbark);color:var(--chalk)}
.band h2{color:var(--chalk);max-width:18ch}
/* Chalk on Ironbark is 4.07:1, so nothing here sits below 19px/600 */
.band p{color:var(--chalk);font-size:1.1875rem;font-weight:600;line-height:1.5;max-width:42ch;margin:1.25rem 0 0}
.band__in{display:grid;gap:2.25rem;align-items:end}
@media (min-width:56rem){.band__in{grid-template-columns:minmax(0,1fr) auto;gap:4rem}}
.band .btn-row{margin-top:0}

.dark{background:var(--bark);color:var(--chalk)}
.dark h2,.dark h3{color:var(--chalk)}
.dark p{color:var(--chalk)}
.dark .eyebrow{color:var(--oat)}
.dark a{color:var(--oat)}
.dark a:hover{color:var(--chalk)}
.dark .rows,.dark .rowitem{border-color:var(--hair-rev)}
.dark .rowitem__n,.dark .rowitem__role{color:var(--oat)}
.dark .facts,.dark .facts li{border-color:var(--hair-rev)}
.dark .facts b,.dark .facts dt{color:var(--oat)}
.dark .textlink{color:var(--oat);border-bottom-color:var(--hair-rev)}
.dark .textlink:hover{color:var(--chalk);border-bottom-color:var(--chalk)}

/* ---------- quotes: large, light, no box ---------- */
.quote{margin:0;max-width:36rem}
.quote blockquote{margin:0 0 1.4rem;font-size:clamp(1.4rem,2.7vw,2rem);font-weight:300;
  line-height:1.3;letter-spacing:-.012em;text-wrap:balance}
.quote figcaption{font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;color:var(--umber)}
.dark .quote figcaption{color:var(--oat)}

/* review list: hairline separated, no card */
.reviews{border-top:1px solid var(--hair)}
.review{margin:0;padding-block:clamp(1.75rem,3.5vw,2.75rem);border-bottom:1px solid var(--hair)}
@media (min-width:62rem){
  .review{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:clamp(3rem,7vw,7rem)}
}
.review blockquote{margin:0;font-size:1.0625rem;line-height:1.65;max-width:42rem}
.review figcaption{font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;
  color:var(--umber);margin-bottom:.9rem}
@media (min-width:62rem){.review figcaption{margin-bottom:0}}
.dark .reviews,.dark .review{border-color:var(--hair-rev)}
.dark .review figcaption{color:var(--oat)}

/* ---------- facts ---------- */
.facts{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair)}
.facts li{padding-block:1.15rem;border-bottom:1px solid var(--hair);display:grid;gap:.3rem}
@media (min-width:44rem){.facts li{grid-template-columns:minmax(8rem,11rem) 1fr;gap:2rem}}
.facts b,.facts dt{font-weight:400;color:var(--umber);font-size:.6875rem;
  text-transform:uppercase;letter-spacing:.18em;padding-top:.2rem}
.facts span{max-width:40rem}
.facts a{display:inline-flex;align-items:center;min-height:44px}
.facts li:has(a){padding-block:.3rem}

.ticks{list-style:none;margin:0 0 1.75rem;padding:0;max-width:38rem}
.ticks li{padding:0 0 1rem 1.6rem;position:relative}
.ticks li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:7px;
  border-left:1px solid var(--ironbark);border-bottom:1px solid var(--ironbark);transform:rotate(-45deg)}

/* ---------- form ---------- */
.form{display:grid;gap:1.25rem;max-width:32rem}
.field{display:grid;gap:.45rem}
.field label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.18em;color:var(--umber)}
.field input,.field select{
  font-family:inherit;font-size:1rem;color:var(--bark);background:transparent;
  border:0;border-bottom:1px solid var(--umber);padding:.75rem .1rem;min-height:52px;
  width:100%;border-radius:0}
.field textarea{font-family:inherit;font-size:1rem;color:var(--bark);background:transparent;
  min-height:8rem;resize:vertical;border:1px solid var(--umber);padding:.9rem;width:100%;border-radius:0}
.field .hint{font-size:.8125rem;color:var(--bark)}
.hp{position:absolute;left:-9999px}

/* ---------- footer ---------- */
.ftr{background:var(--bark);color:var(--chalk);padding-block:clamp(4rem,8vw,6.5rem) 2rem}
.ftr a{color:var(--oat);text-decoration:none}
.ftr a:hover{color:var(--chalk);text-decoration:underline}
.ftr__grid{display:grid;gap:2.5rem}
@media (min-width:44rem){.ftr__grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:64rem){.ftr__grid{grid-template-columns:1.4fr 1fr 1fr 1.1fr}}
.ftr__logo img{height:58px;width:auto;margin-bottom:1.5rem}
.ftr__tag{font-size:1.0625rem;color:var(--chalk);font-weight:600;max-width:22ch}
.ftr h2{font-size:.6875rem;text-transform:uppercase;letter-spacing:.24em;color:var(--oat);
  margin:0 0 1.25rem;font-weight:400}
.ftr ul{list-style:none;margin:0;padding:0}
.ftr li a{display:inline-flex;align-items:center;min-height:44px;font-size:.9375rem}
.ftr__legal{border-top:1px solid var(--hair-rev);margin-top:3.5rem;padding-top:.5rem;
  display:flex;flex-wrap:wrap;align-items:center;gap:0 2rem;font-size:.75rem;color:var(--oat)}
.ftr__legal>span{display:inline-flex;align-items:center;min-height:44px}
.ftr__legal a{display:inline-flex;align-items:center;min-height:44px}

/* ---------- the discreet call rail ----------
   Kept, per the brief's priority seat, but Bark rather than Ironbark and slimmer
   than an app bar, so it reads as a footer rail rather than shouting. */
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;
  background:var(--bark);padding-bottom:env(safe-area-inset-bottom)}
.callbar a{flex:1;display:flex;align-items:center;justify-content:center;gap:.55rem;
  min-height:52px;color:var(--chalk);text-decoration:none;
  font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.16em}
.callbar a+a{border-left:1px solid var(--hair-rev)}
.callbar svg{width:17px;height:17px;flex:none}
@media (min-width:64rem){.callbar{display:none}}
@media (max-width:63.99rem){body{padding-bottom:calc(52px + env(safe-area-inset-bottom))}}

/* ---------- breadcrumbs ---------- */
.crumbs{font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--umber);
  border-bottom:1px solid var(--hair)}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:0 .6rem;margin:0;padding:0}
.crumbs li{display:inline-flex;align-items:center;min-height:48px}
.crumbs li+li::before{content:"/";margin-right:.6rem;color:var(--hair)}
.crumbs a{color:var(--umber);text-decoration:none;display:inline-flex;align-items:center;min-height:48px}
.crumbs a:hover{color:var(--bark)}

.note{font-size:.875rem;max-width:38rem;color:var(--umber);
  border-left:1px solid var(--hair);padding-left:1.25rem}
.dark .note{color:var(--oat);border-left-color:var(--hair-rev)}

/* inline links in prose reach 44px without shifting the line box */
.note a,.small a{display:inline-block;padding-block:.72rem;margin-block:-.72rem}


/* ---------- project film ---------- */
.filmstrip{width:100%;height:auto;display:block;background:var(--bark);aspect-ratio:16/9;object-fit:cover}

/* Shown only when the browser cannot play the film. It sits inside the
   video element, which paints Bark, so it needs Chalk to stay legible. */
.vidfall{
  margin:0;
  padding:clamp(1.5rem,4vw,2.5rem);
  color:var(--chalk);
  background:var(--bark);
}
.vidfall a{color:var(--oat)}

/* Project gallery. Edge to edge, hairline gaps, no cards and no rounded
   corners: the photographs sit against the page the way they do in the
   rest of the site. Two up on a phone, three up from tablet width. */
.gallery{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:2px;
  margin-top:clamp(1.5rem,4vw,2.5rem);
}
.gallery img{
  display:block;
  width:100%;
  height:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  background:var(--oat);
}
@media (min-width:48rem){ .gallery{grid-template-columns:repeat(3,1fr)} }

/* ---------- location pages: the visual hook ----------
   Bark field with the place name set large. With a photograph the image
   fills the frame and a Bark gradient keeps the name legible. */
.hook{position:relative;aspect-ratio:5/4;background:var(--bark);color:var(--chalk);
  overflow:hidden;display:grid;align-content:end}
@media (max-width:61.99rem){.hook{aspect-ratio:4/3}}
.hook>svg{position:absolute;top:clamp(1.25rem,3vw,2rem);right:clamp(1.25rem,3vw,2rem);
  width:clamp(44px,9%,72px);height:auto;color:rgba(229,224,214,.28)}
.hook>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hook--photo::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(74,58,44,.92) 0%,rgba(74,58,44,.55) 38%,rgba(74,58,44,0) 70%)}
.hook__cap{position:relative;z-index:1;padding:clamp(1.5rem,4vw,2.5rem);display:grid;gap:.9rem}
.hook__name{font-size:clamp(2.6rem,7vw,5.25rem);font-weight:300;line-height:.95;letter-spacing:-.03em;color:var(--chalk)}
.hook__line{font-size:.6875rem;text-transform:uppercase;letter-spacing:.2em;color:var(--oat)}
.hook--photo .hook__line{color:var(--chalk)}

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--hair)}
.faq__i{border-bottom:1px solid var(--hair)}
.faq__i summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr auto;
  gap:1.5rem;align-items:center;min-height:56px;padding-block:1.1rem}
.faq__i summary::-webkit-details-marker{display:none}
.faq__i summary h3{font-size:clamp(1.1rem,1.6vw,1.3rem);font-weight:300;margin:0}
.faq__i summary::after{content:"+";font-size:1.5rem;font-weight:300;color:var(--umber);line-height:1}
.faq__i[open] summary::after{content:"\2212"}
.faq__i p{margin:0 0 1.5rem;max-width:38rem}

/* small grouping label above a block of service rows */
.group{margin-top:clamp(3rem,6vw,5rem)}
.group:first-child{margin-top:0}
.group__h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 2rem;
  margin-bottom:clamp(1.25rem,3vw,2rem)}
.group__h h2{margin:0}
.links-inline{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0 1.75rem}
.links-inline a{display:inline-flex;align-items:center;min-height:44px}
.group__h h2 a{display:inline-flex;align-items:center;min-height:44px}
