:root{
  --av-ink:#e7ecf3; --av-soft:#9aa7b8; --av-dim:#76839660;
  --av-ground:#11151c; --av-raise:#1a212b; --av-lift:#222b38;
  --av-line:rgba(255,255,255,.1); --av-edge:rgba(255,255,255,.18);
  --av-accent:#f59e0b; --av-accent-ink:#1a1206;
  --av-gutter:clamp(1.25rem,4vw,3rem);
  --av-round:6px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--av-ground);color:var(--av-ink);
  font:17px/1.65 ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased}
h1,h2,h3{font-weight:700;letter-spacing:-.02em;line-height:1.18;margin:0}
h1{font-size:clamp(2.1rem,4.8vw,3.2rem)}
h2{font-size:clamp(1.3rem,2.3vw,1.7rem)}
a{color:var(--av-accent)}
img{max-width:100%;display:block}
.anvil-shell{max-width:1120px;margin:0 auto;padding:0 var(--av-gutter)}
.anvil-skip{position:absolute;left:-9999px}
.anvil-skip:focus{left:1rem;top:1rem;background:var(--av-accent);color:var(--av-accent-ink);
  padding:.6rem 1rem;z-index:99;border-radius:var(--av-round)}

/* the rail — ONE row, not sticky. Beacon has two bands before the page
   starts; Ledger's single bar is sticky. This is neither. */
.anvil-rail{background:var(--av-raise);border-bottom:1px solid var(--av-line)}
.anvil-rail__row{display:flex;align-items:center;gap:1.5rem;min-height:88px}
.anvil-brand{display:flex;align-items:center;gap:.75rem;margin-right:auto;
  text-decoration:none;color:inherit}
/* THE LIGHT PLATE IS THE DARK-PAGE TAX ON LOGOS. A wordmark drawn in dark
   ink on transparency is invisible on this rail, and no rule here can look
   inside the file to find out whether this one is. Every logo gets the
   plate: a visible logo that could have been prettier beats an invisible
   one. The height matches Ledger's and Beacon's 70px so the same upload
   looks the same size in all three. */
.anvil-brand__plate{display:inline-flex;align-items:center;background:#fff;
  border-radius:var(--av-round);padding:.45rem .6rem;flex:0 0 auto}
.anvil-brand__mark{height:70px;width:auto;max-width:min(320px,54vw);object-fit:contain;
  object-position:left center}
.anvil-brand__glyph{width:42px;height:42px;border-radius:var(--av-round);
  background:var(--av-accent);color:var(--av-accent-ink);
  display:grid;place-items:center;font-size:16px;font-weight:800;flex:0 0 auto}
.anvil-brand__name{font-size:17px;font-weight:700;letter-spacing:-.01em}
.anvil-nav{display:flex;align-items:center;gap:1.4rem;font-size:15px;font-weight:500}
.anvil-nav a{color:var(--av-soft);text-decoration:none}
.anvil-nav a:hover,.anvil-nav a[aria-current]{color:var(--av-ink)}
.anvil-dial{background:var(--av-accent);color:var(--av-accent-ink);font-weight:700;
  text-decoration:none;font-size:15px;padding:.6rem 1.1rem;border-radius:var(--av-round);
  white-space:nowrap}
.anvil-dial:hover{filter:brightness(1.08)}

/* the services disclosure — a <details>, so it works with no JavaScript */
.anvil-work{position:relative}
.anvil-work>summary{list-style:none;cursor:pointer;color:var(--av-soft);font-weight:500;
  display:inline-flex;align-items:center;gap:.4rem;-webkit-tap-highlight-color:transparent}
.anvil-work>summary::-webkit-details-marker{display:none}
.anvil-work>summary::after{content:"";width:.34em;height:.34em;margin-top:-.22em;
  border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:rotate(45deg)}
.anvil-work>summary:hover,.anvil-work[open]>summary{color:var(--av-ink)}
.anvil-work[open]>summary::after{margin-top:.1em;transform:rotate(225deg)}
.anvil-work>summary:focus-visible{outline:2px solid var(--av-accent);outline-offset:4px;border-radius:4px}
.anvil-work__list{position:absolute;top:calc(100% + 1.1rem);left:-1rem;z-index:20;
  margin:0;padding:.4rem;list-style:none;min-width:240px;
  background:var(--av-lift);border:1px solid var(--av-edge);border-radius:var(--av-round);
  box-shadow:0 18px 40px rgba(0,0,0,.5)}
.anvil-work__list a{display:block;padding:.5rem .75rem;border-radius:4px;
  color:var(--av-ink);text-decoration:none;font-size:15px}
.anvil-work__list a:hover{background:var(--av-raise);color:var(--av-accent)}
.anvil-work__all{border-bottom:1px solid var(--av-line);margin-bottom:.35rem;padding-bottom:.35rem}
.anvil-work__all a{font-weight:600}

/* the stage — words ON the photograph, which only reads well dark.
   THE SCRIM IS A PSEUDO-ELEMENT, not a change to the image: the same four
   files serve all three structures, and darkening them would mean a fourth
   variant of every photograph and a build step to make it.
   TWO STOPS, NOT ONE. A flat wash over the whole picture flattens it; a
   gradient weighted to the bottom-left keeps the image readable where there
   are no words and buries it where there are. */
.anvil-stage{position:relative;isolation:isolate;background:var(--av-raise);
  min-height:clamp(26rem,52vw,34rem);display:flex;align-items:flex-end}
.anvil-stage__shot{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.anvil-stage::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(to top,rgba(10,13,18,.94) 0%,rgba(10,13,18,.78) 38%,rgba(10,13,18,.35) 72%,rgba(10,13,18,.2) 100%)}
.anvil-stage--bare{min-height:0}
.anvil-stage--bare::after{display:none}
.anvil-stage__words{padding-top:clamp(3rem,8vw,6rem);padding-bottom:clamp(2.2rem,5vw,3.4rem);
  max-width:min(100%,62rem);width:100%}
.anvil-stage__words h1{text-wrap:balance}
.anvil-stage__said{color:#cfd8e4;font-size:1.1rem;margin:1rem 0 0;max-width:40rem}
.anvil-stage__acts{display:flex;flex-wrap:wrap;gap:.7rem;margin:1.7rem 0 0}
.anvil-act{display:inline-block;text-decoration:none;font-weight:700;font-size:15.5px;
  padding:.78rem 1.4rem;border-radius:var(--av-round);border:1.6px solid transparent}
.anvil-act--solid{background:var(--av-accent);color:var(--av-accent-ink)}
.anvil-act--solid:hover{filter:brightness(1.08)}
/* A GHOST BUTTON ON A PHOTOGRAPH NEEDS ITS OWN GROUND. Transparent over an
   image is a rectangle of whatever happens to be behind it; the faint fill
   plus the blur keeps the label legible over a bright patch. */
.anvil-act--ghost{border-color:var(--av-edge);color:#fff;background:rgba(255,255,255,.08);
  backdrop-filter:blur(3px)}
.anvil-act--ghost:hover{border-color:#fff;background:rgba(255,255,255,.16)}

/* the plate — facts inline on one rule, where Ledger has a <dl> and Beacon
   has three columns in a card */
.anvil-facts{padding:clamp(1.6rem,3vw,2.2rem) 0 0}
.anvil-plate{display:grid;grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--av-line);border-bottom:1px solid var(--av-line)}
.anvil-plate__cell{padding:1.1rem 1.4rem}
.anvil-plate__cell+.anvil-plate__cell{border-left:1px solid var(--av-line)}
.anvil-plate__cell:first-child{padding-left:0}
.anvil-plate__cell span{display:block;font-size:11.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--av-soft);font-weight:700}
.anvil-plate__cell p{margin:.4rem 0 0;font-size:15.5px}
.anvil-plate__cell a{color:var(--av-ink);text-decoration:none}
.anvil-plate__cell a:hover{color:var(--av-accent)}

/* bands and prose */
.anvil-band{padding:clamp(2.6rem,5vw,4.2rem) 0}
/* TWO BANDS IN A ROW PAY THE PADDING ONCE — the rule Beacon had to add after
   its home page opened an eight-rem hole between About and the services.
   Written in the stylesheet, not as inline style in pages.js, so somebody
   reading the CSS can see the layout decision. */
.anvil-band+.anvil-band{padding-top:0}
.anvil-facts+.anvil-band{padding-top:clamp(2.6rem,5vw,4.2rem)}
.anvil-band__lede{max-width:46rem;margin-bottom:1.8rem}
.anvil-band__lede p{color:var(--av-soft);margin:.7rem 0 0}
.anvil-prose{max-width:46rem}
.anvil-prose h2{margin:2.1rem 0 .7rem}
.anvil-prose p{margin:0 0 1rem}
.anvil-prose ul{margin:0 0 1rem;padding-left:1.15rem}
.anvil-prose li{margin:0 0 .45rem}
.anvil-lede{font-size:1.12rem;color:#c3cdda}

/* the ladder — full-width rungs, where Ledger numbers two columns and
   Beacon lays out three-up tiles */
.anvil-ladder{list-style:none;margin:0;padding:0;border-top:1px solid var(--av-line)}
.anvil-rung>a,.anvil-rung>span{display:grid;grid-template-columns:4rem 16rem minmax(0,1fr);
  gap:1.5rem;align-items:baseline;padding:1.35rem .25rem;
  border-bottom:1px solid var(--av-line);text-decoration:none;color:inherit}
.anvil-rung>a:hover{background:var(--av-raise)}
.anvil-rung>a:hover .anvil-rung__name{color:var(--av-accent)}
.anvil-rung__tally{font-size:13px;font-weight:800;letter-spacing:.1em;color:var(--av-accent)}
.anvil-rung__name{font-weight:700;font-size:1.1rem}
.anvil-rung__said{color:var(--av-soft);font-size:15px;line-height:1.55}
/* A ROW THAT LOOKS CLICKABLE AND IS NOT IS WORSE THAN ONE THAT PLAINLY IS
   NOT. The services past the body cap are shown and unlinked, so they are
   visibly muted rather than quietly inert. */
.anvil-rung--flat>span{opacity:.5}

/* the hours — seven days ACROSS, under the prose, full width */
.anvil-watch{margin:2.6rem 0 0;border:1px solid var(--av-line);border-radius:var(--av-round);
  background:var(--av-raise);padding:1.3rem 1.5rem}
.anvil-watch h2{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--av-soft);margin-bottom:1rem}
.anvil-watch__row{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;
  background:var(--av-line);border:1px solid var(--av-line);border-radius:4px;overflow:hidden}
.anvil-watch__day{background:var(--av-lift);padding:.8rem .5rem;text-align:center}
.anvil-watch__day span{display:block;font-size:11.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--av-soft)}
.anvil-watch__day strong{display:block;margin-top:.35rem;font-size:14px;font-weight:600}
.anvil-watch--shut strong{color:var(--av-soft);font-weight:400}
.anvil-watch__note{margin:1rem 0 0;font-size:13.5px;color:var(--av-soft)}

/* the map */
.anvil-map iframe{width:100%;height:380px;border:0;border-radius:var(--av-round);
  display:block;filter:grayscale(.3) contrast(1.05) brightness(.92)}

/* the break — RAISED, not deep. Beacon's divider is the dark band among
   light ones; on a dark page the same job needs the opposite move. */
.anvil-break{background:var(--av-raise);border-top:1px solid var(--av-line);
  border-bottom:1px solid var(--av-line);padding:clamp(2rem,3.6vw,3rem) 0}
.anvil-break p{margin:0;text-align:center;font-weight:600;color:#fff;
  font-size:clamp(1.15rem,2.4vw,1.5rem);letter-spacing:-.015em;
  max-width:34rem;margin-inline:auto;text-wrap:balance}
/* A BAND EITHER SIDE KEEPS ITS OWN PADDING. The +.anvil-band rule above
   strips the top padding of whatever follows a band, and a break between two
   of them is exactly where that strip must not apply. */
.anvil-break+.anvil-band{padding-top:clamp(2.6rem,5vw,4.2rem)}

/* the ring sentence */
.anvil-onward{margin:2.6rem 0 0;padding-top:1.4rem;border-top:1px solid var(--av-line);
  color:var(--av-soft);font-size:15.5px}

/* the contact form — full width, facts in three columns beneath */
.anvil-form{background:var(--av-raise);border:1px solid var(--av-line);
  border-radius:var(--av-round);padding:1.7rem;max-width:46rem}
.anvil-form__pair{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.anvil-form label{display:block;font-size:12.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--av-soft);margin:1.1rem 0 .4rem}
.anvil-form__pair label{margin-top:0}
.anvil-form input,.anvil-form textarea{width:100%;font:inherit;font-size:16px;color:var(--av-ink);
  background:var(--av-ground);border:1px solid var(--av-edge);border-radius:4px;padding:.7rem .85rem}
.anvil-form textarea{min-height:8rem;resize:vertical}
.anvil-form input:focus,.anvil-form textarea:focus{outline:2px solid var(--av-accent);outline-offset:1px}
.anvil-form button{margin-top:1.4rem;font:inherit;font-weight:700;font-size:15.5px;cursor:pointer;
  background:var(--av-accent);color:var(--av-accent-ink);border:0;
  border-radius:var(--av-round);padding:.8rem 1.6rem}
.anvil-form__note{margin:1.1rem 0 0;font-size:14px;color:var(--av-soft)}
.anvil-threes{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.5rem,3vw,2.5rem);
  margin-top:2.8rem}
.anvil-threes h2{font-size:1.05rem;margin:0 0 .6rem}

/* colophon */
.anvil-colophon{background:#0b0e13;border-top:1px solid var(--av-line);
  color:var(--av-soft);padding:clamp(2.4rem,4vw,3.4rem) 0 1.5rem}
.anvil-colophon a{color:var(--av-ink);text-decoration:none}
.anvil-colophon a:hover{color:var(--av-accent)}
.anvil-colophon__spread{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:1.8rem}
.anvil-colophon__title{font-size:12px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--av-soft)}
.anvil-colophon p{margin:.75rem 0 0;font-size:15px;line-height:1.6}
.anvil-colophon ul{list-style:none;margin:.75rem 0 0;padding:0;font-size:15px}
.anvil-colophon li{margin:0 0 .45rem}
.anvil-marks{display:flex;gap:.7rem}
.anvil-marks svg{width:19px;height:19px;fill:var(--av-soft)}
.anvil-marks a:hover svg{fill:var(--av-accent)}
.anvil-colophon__foot{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;margin-top:2.2rem;
  padding-top:1.3rem;border-top:1px solid var(--av-line);font-size:13.5px}

@media (max-width:900px){
  .anvil-rung>a,.anvil-rung>span{grid-template-columns:3rem minmax(0,1fr);gap:.4rem 1rem}
  .anvil-rung__said{grid-column:2}
  .anvil-threes{grid-template-columns:1fr}
  .anvil-colophon__spread{grid-template-columns:1fr}
  /* SEVEN COLUMNS DO NOT FIT A TABLET. Four then three reads as a calendar
     rather than as a squeezed row of unreadable stubs. */
  .anvil-watch__row{grid-template-columns:repeat(4,1fr)}
}

@media (max-width:620px){
  /* THE ROW WRAPS RATHER THAN COLLAPSING INTO A HAMBURGER, because these
     sites ship no JavaScript to open one with. The number goes first so it
     is reachable with a thumb before anything else. */
  .anvil-rail__row{flex-wrap:wrap;min-height:0;padding:.8rem 0 .2rem;gap:.7rem 1.1rem}
  .anvil-brand__mark{height:56px;max-width:min(240px,50vw)}
  .anvil-dial{order:2;margin-left:auto}
  .anvil-nav{order:3;flex-basis:100%;flex-wrap:wrap;gap:.4rem 1.1rem;font-size:14.5px;
    border-top:1px solid var(--av-line);margin-top:.2rem;padding:.7rem 0}
  .anvil-work__list{top:calc(100% + .7rem);left:-.9rem}
  .anvil-stage{min-height:0}
  .anvil-stage__words{padding-top:clamp(2.4rem,9vw,3.4rem)}
  .anvil-plate{grid-template-columns:1fr}
  .anvil-plate__cell{padding-left:0}
  .anvil-plate__cell+.anvil-plate__cell{border-left:0;border-top:1px solid var(--av-line)}
  .anvil-watch__row{grid-template-columns:repeat(2,1fr)}
  .anvil-form__pair{grid-template-columns:1fr}
}
