

*,
*::before,
*::after {
  box-sizing: border-box;
}

:root {
  color-scheme: light;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
  }
}

:root[data-theme="dark"] {
  color-scheme: dark;
}

:root[data-theme="light"] {
  color-scheme: light;
}

:root body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--f-body);
  font-size: 1rem;
  line-height: 1.85;
  letter-spacing: 0.01em;

  line-break: strict;

  word-break: auto-phrase;
  text-wrap: pretty;
  -webkit-font-smoothing: antialiased;
}

input,
textarea,
select {
  word-break: normal;
  text-wrap-style: auto;
}

h1,
h2,
h3 {
  font-family: var(--f-display);
  line-height: 1.4;
  letter-spacing: 0.02em;
}

a {
  color: var(--accent);
}


:is(.prose, .hero-claim, .hero-lede, .scope, .note-block, .venture,
    .form-state, .form-intro, .form-consent, .plan-group-note)
  a:not([class]) {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

:is(.prose, .hero-claim, .hero-lede, .scope, .note-block, .venture,
    .form-state, .form-intro, .form-consent, .plan-group-note)
  a:not([class]):is(:hover, :focus-visible) {
  color: var(--accent);
}

.wrap {
  max-width: 74rem;
  margin: 0 auto;
  padding: 0 var(--pad);
}

.mast,
.foot {
  border-bottom: 1px solid var(--rule);
}

.foot {
  border-bottom: none;
  border-top: 1px solid var(--rule);
  margin-top: 4rem;
  color: var(--ink-2);
  font-size: 0.8125rem;
}

.mast .wrap,
.foot .wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 1rem 2rem;
  padding-block: 1.25rem;
}

.mast-name {
  margin: 0;
  font-family: var(--f-display);
  font-weight: 700;
}

.mast-name a {
  color: var(--ink);
  text-decoration: none;
}

.mast ul,
.foot ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.875rem;
}

.work-labels {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.25rem 1.5rem;
  margin: 1.5rem 0 2rem;
  padding: 1rem 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  font-size: 1rem;
  line-height: 1.9;
}

.work-labels dt {
  color: var(--ink);
}

.work-labels dd {
  margin: 0;
  color: var(--ink);
  font-weight: 500;
}


@font-face {
  font-family: "MK Rail";
  src: url("../fonts/IBMPlexMono-Regular-latin.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}



.band {
  position: relative;
  border-top: 1px solid var(--rule);
}

.band:first-of-type {
  border-top: none;
}

.row {
  display: grid;
  grid-template-columns: var(--rail) minmax(0, 1fr);
  gap: 0 2.5rem;
  padding-block: clamp(3rem, 7vw, 5.5rem);
}

@media (max-width: 46rem) {
  .row {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
}

.rail {
  margin: 0;
  font-family: "MK Rail", var(--f-mono);
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  color: var(--ink-3);
  line-height: 1.6;
  align-self: start;
}

@media (min-width: 46.0625rem) {
  .rail {
    position: sticky;
    top: 1.5rem;
  }
}

.col {
  min-width: 0;
  max-width: var(--measure);
}

#services .col,
#work .col {
  max-width: none;
}


h1 {
  margin: 0 0 1.5rem;
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  font-weight: 700;
}

h2 {
  margin: 0 0 1.5rem;
  font-size: clamp(1.25rem, 2.2vw, 1.5rem);
  font-weight: 700;
}

.sub-head {
  margin: 3rem 0 1rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rule-2);
  font-size: 1.125rem;
}

.lede {
  max-width: var(--measure);
}

.nb {
  white-space: nowrap;
}

.note {
  color: var(--ink-2);
}


.cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  margin: 2rem 0;
}

.cta {
  display: inline-block;
  padding: 0.75rem 1.5rem;
  border: 1px solid var(--accent);
  border-radius: 2px;
  text-decoration: none;
  font-weight: 500;
  min-height: 44px;
  line-height: 1.6;
}

.cta-main {
  background: var(--accent);
  color: var(--paper);
}

.cta-sub {
  color: var(--accent);
}

.cta:hover,
.cta:focus-visible {
  opacity: 0.85;
}

a:focus-visible,
.cta:focus-visible,
.table-scroll:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}


.plans {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
  gap: 1.5rem;
  margin: 2rem 0;
}

.plan {
  padding: 1.5rem;
  border: 1px solid var(--rule);
  background: var(--surface);
}

.plan-name {
  margin: 0 0 0.5rem;
  font-family: var(--f-display);
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.02em;
}

.plan-group {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
  row-gap: 0;
  padding: 1.25rem 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}

.plan-group-name {
  grid-column: 1 / -1;
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--ink);
}

.plan-group-note {
  grid-column: 1 / -1;
  max-width: var(--measure);
  margin: 0 0 1.25rem;
}

.plan-group-note p:first-child {
  margin-top: 0;
}

.plan-group-note p:last-child {
  margin-bottom: 0;
}

.plan-group-list {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
  row-gap: 1.5rem;
}

.plan-price {
  margin: 0 0 1.25rem;
  font-family: var(--f-display);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--ink);
}

.scope {
  margin: 0 0 1.25rem;
  color: var(--ink);
}

.scope-label {
  margin: 0 0 0.35rem;
  font-weight: 600;
  color: var(--ink-2);
}

.scope ul {
  margin: 0;
  padding-left: 1.25rem;
}

.scope li {
  margin: 0 0 0.15rem;
}


.note-block {
  margin: 2rem 0;
  padding: 1.25rem 1.5rem;
  border-left: 3px solid var(--accent);
  background: var(--accent-soft);
}

.note-block h3 {
  margin: 0 0 0.5rem;
  font-size: 1.0625rem;
}

.note-block p:last-child {
  margin-bottom: 0;
}


.examples {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
  gap: 1.5rem;
  margin: 1.5rem 0;
}

.example {
  padding: 1.5rem;
  border: 1px solid var(--rule);
}

.example-entry {
  margin: 0 0 0.5rem;
  font-weight: 600;
}

.example-plan {
  margin: 0 0 0.75rem;
  color: var(--ink-2);
}

.example-total {
  margin: 0 0 1rem;
  font-family: var(--f-display);
  font-size: 1.25rem;
  font-weight: 700;
}


.table-scroll {
  overflow-x: auto;
  margin: 1.5rem 0;
}

.options {
  width: 100%;
  border-collapse: collapse;
  font-size: 1rem;
}

.options th,
.options td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--rule);
  text-align: left;
  vertical-align: top;
}

.options thead th {
  border-bottom: 2px solid var(--rule-strong);
  color: var(--ink-2);
  white-space: nowrap;
}

.options tbody th {
  font-weight: 600;
  white-space: nowrap;
}

.opt-price {
  font-family: var(--f-display);
  font-weight: 700;
  white-space: nowrap;
}


.callout {
  margin: 1.5rem 0;
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--rule-strong);
}

.callout-head {
  margin: 0 0 0.5rem;
  font-family: var(--f-display);
  font-size: 1.25rem;
  font-weight: 700;
}

.callout p:last-child {
  margin-bottom: 0;
}

.works {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
  gap: 1.5rem;
  margin: 2rem 0;
}

.work-card {
  padding: 1.5rem;
  border: 1px solid var(--rule);
}

.work-name {
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
}


.venture-group {
  margin: 0 0 1rem;
}

.venture {
  margin: 0 0 2rem;
  max-width: var(--measure);
}

.venture-name {
  margin: 0 0 0.5rem;
  font-family: var(--f-display);
  font-size: 1.0625rem;
  font-weight: 700;
}


#ventures .wrap {
  position: relative;
  z-index: 1;
}

.band-face {
  --face-left:
    max(
      calc(100% - 32rem),
      calc(
        max(0px, (100% - 74rem) / 2)
        + var(--pad)
        + var(--rail)
        + 2.5rem
        + min(
            var(--measure),
            calc(min(74rem, 100%) - 2 * var(--pad) - var(--rail) - 2.5rem)
          )
      )
    );
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: var(--face-left, 100%);
}

.band-face img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}




.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}


.mast-nav ul,
.mast nav ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.875rem;
}

.mast-nav a,
.mast nav a {
  color: var(--ink-2);
  text-decoration: none;
}

.mast-nav a:hover,
.mast nav a:hover {
  color: var(--ink);
  text-decoration: underline;
}

@media (max-width: 48rem) {
  .mast nav {
    flex: 1 1 0%;
    min-width: 0;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    -webkit-mask-image: linear-gradient(to left, transparent, #000 1.5rem);
    mask-image: linear-gradient(to left, transparent, #000 1.5rem);
  }

  .mast nav ul {
    flex-wrap: nowrap;
    width: max-content;
    padding-inline-end: 1.5rem;
  }

  .mast nav li {
    flex: none;
  }

  .mast nav:has(:focus-visible) {
    overflow-x: visible;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .mast nav:has(:focus-visible) ul {
    flex-wrap: wrap;
    width: auto;
    padding-inline-end: 0;
  }
}


.hero {
  --hero-gap: clamp(1.5rem, 4vw, 3rem);
  border-top: none;
  min-height: 100svh;
  display: grid;
  align-items: center;
}

.hero > .wrap {
  width: 100%;
}

.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 45fr) minmax(0, 55fr);
  grid-template-areas:
    "rail  shots"
    "title shots"
    "claim shots"
    "lede  shots"
    "cta   shots"
    "more  more";
  gap: 0 var(--hero-gap);
  padding-block: clamp(2rem, 6vw, 4rem);
  align-content: center;
}

.hero-first { display: contents; }

.hero-rail  { grid-area: rail; }
.hero-title { grid-area: title; }
.hero-claim { grid-area: claim; }
.hero-lede  { grid-area: lede; }
.hero-cta   { grid-area: cta; }
.hero-shots { grid-area: shots; }
.hero-more  { grid-area: more; }

.hero-rail {
  position: static;
  margin-bottom: 1.25rem;
  color: var(--ink-2);
}

.hero-title {
  font-size: clamp(1.75rem, 3.6vw, 2.5rem);
  margin-bottom: 1rem;
}

@media (min-width: 48.0625rem) {
  .hero-title {
    font-size: clamp(1.75rem, 6.0vw, 3.5rem);
  }
}

.hero-title,
.hero-title .line {
  text-wrap-style: auto;
}

.hero-claim {
  max-width: var(--measure);
  margin: 0;
  color: var(--ink);
}



.hero-claim > p {
  margin: 0;
}

.hero-captions {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0 0 1.5rem;
}

.hero-caption {
  margin: 0;
}

.hero-note + .hero-captions {
  margin-top: 1rem;
}

.hero-note:last-child {
  margin-bottom: 1.5rem;
}

.hero-note {
  font-weight: 600;
}

.hero-lede {
  max-width: var(--measure);
}

.hero-cta {
  margin: 1.5rem 0 0;
}

.hero-more {
  margin: clamp(1.5rem, 4vw, 2.5rem) 0 0;
  font-size: 0.9375rem;
}

.hero-more a {
  color: var(--ink);
  text-decoration: none;
}

.hero-more a:hover {
  color: var(--accent);
  text-decoration: underline;
}


.hero-shots {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
}

.hero-shots > * {
  grid-area: 1 / 1;
}

.shot {
  display: block;
  height: auto;
  max-width: 100%;
  border: 1px solid var(--rule);
}

.shot-wrap {
  justify-self: end;
  align-self: start;
  width: min(100%, 620px);
}

.shot-wide {
  width: 100%;
}

.shot-tall {
  justify-self: start;
  align-self: end;
  width: 240px;
  max-width: 240px;
  box-shadow: 0 0 0 0.5rem var(--paper);
}


@media (max-width: 48rem) {
  .hero-grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: none;
    gap: 0;
    align-content: start;
  }

  .hero-first,
  .hero-rail,
  .hero-title,
  .hero-claim,
  .hero-shots,
  .hero-more,
  .hero-lede,
  .hero-cta {
    grid-area: auto;
  }

  .hero-first {
    display: flex;
    flex-direction: column;
    min-height: calc(100svh - 11rem);
  }

  .hero-rail {
    display: none;
  }

  .hero-captions {
    margin-bottom: 1rem;
  }

  .hero-note:last-child {
    margin-bottom: 1rem;
  }

  .hero-captions.captions-none {
    margin-bottom: 0;
  }

  .hero-shots {
    flex: 1 1 0;
    min-height: 9rem;
    grid-template-rows: minmax(0, 1fr);
    margin-bottom: 1.5rem;
    place-items: center;
  }

  .hero-shots.shots-none {
    flex: 0 1 0;
    min-height: 0;
    margin-bottom: 0;
  }

  .hero-shots > * {
    max-height: 100%;
  }

  .shot-wrap,
  .caption-wide,
  .captions-none > .hero-caption {
    display: none;
  }

  .shot-tall {
    justify-self: center;
    align-self: center;
    width: auto;
    height: 100%;
    max-height: 100%;
    max-width: 240px;
    object-fit: contain;
    box-shadow: none;
  }

  .hero-more {
    margin-top: 0;
  }

  .hero-lede {
    margin-top: 2rem;
  }
}



@media (min-width: 48.0625rem) {

  .hero > .wrap {
    position: relative;
    z-index: 1;
  }

  .hero {
    --hero-panel:
      calc(
        max(0px, (100% - 74rem) / 2)
        + 0.55 * min(74rem, 100%)
        - 0.1 * var(--pad)
        - 0.05 * var(--hero-gap)
      );

    --hero-c1:
      linear-gradient(
        to right,
        var(--paper) 0 calc(100% - var(--hero-panel)),
        color-mix(in oklab, var(--ink) 4%, var(--paper)) calc(100% - var(--hero-panel)) 100%
      );
  }

  .hero::before,
  .hero::after {
    content: "";
    position: absolute;
    inset: 0;
  }

  .hero::before {
    background-image:
      radial-gradient(
        ellipse at 75% 15%,
        color-mix(in oklab, var(--ink) 3%, var(--paper)) 0%,
        transparent 100%
      ),
      var(--hero-c1);
  }

  .hero::after {
    inset: 0 0 0 auto;
    width: var(--hero-panel);
    background-image:
      repeating-linear-gradient(
        to right,
        var(--rule) 0 1px,
        transparent 1px 8rem
      );
    -webkit-mask-image: linear-gradient(to left, var(--ink) 0%, transparent 100%);
    mask-image: linear-gradient(to left, var(--ink) 0%, transparent 100%);
  }
}


.tband {
  padding-block: clamp(3rem, 8vw, 7.5rem);
}

.tband h2 {
  font-size: clamp(1.5rem, 1rem + 2vw, 2.25rem);
}

.band.band-noline {
  border-top: 0;
}

.band.band-noline:not(.hero)::before {
  content: none;
}

.tone-rev,
.tone-light {
  background: var(--paper);
  color: var(--ink);
}

.tone-dark {
  color: var(--ink);
}


.ghost {
  margin: 0;
  font-family: "MK Rail", var(--f-mono);
  font-weight: 400;
  font-size: clamp(3.5rem, calc(18vw - 0.5rem), 5.5rem);
  letter-spacing: 0;
  line-height: 1;
  color: var(--rule-strong);
}

.tone-light .ghost {
  color: var(--ink);
}

.ghost span {
  display: block;
}


.band-head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 2rem;
}

.band-head h2,
.band-go {
  margin: 0;
}

.band-head-main {
  display: grid;
  gap: 1rem;
}

.band-go {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5rem;
}

@media (min-width: 64rem) {
  .band-head {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
  }

  .band-go {
    flex-direction: row;
    align-items: baseline;
    gap: 1.5rem;
  }
}

.cta-ink {
  border-color: var(--ink);
  color: var(--ink);
}

.band-link {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.works-arrow {
  display: inline-grid;
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid currentColor;
  border-radius: 50%;
  line-height: 1;
  vertical-align: middle;
}


.biz-cards {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: biz;
}

@media (min-width: 48.0625rem) {
  .biz-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 64rem) {
  .biz-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.biz-card {
  counter-increment: biz;
}

.biz-link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.biz-face {
  position: relative;
  display: block;
  overflow: hidden;
  height: 8rem;
  background: var(--paper);
}

.biz-face img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

@media (min-width: 48.0625rem) {
  .biz-face {
    height: 10rem;
  }
}

.biz-face-top img {
  object-position: 50% 10%;
}

.biz-face::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--paper);
  opacity: 0.55;
}

.biz-meta {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: 1fr auto auto;
  column-gap: 1rem;
  padding: clamp(1rem, 2.5vw, 1.5rem);
}

.biz-meta::before {
  content: counter(biz, decimal-leading-zero);
  content: counter(biz, decimal-leading-zero) / "";
  grid-area: 1 / 1 / 2 / 3;
  font-size: 0.8125rem;
  line-height: 1.6;
  color: var(--ink-3);
}

.biz-en {
  grid-area: 2 / 1;
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  line-height: 1.6;
}

.biz-name {
  grid-area: 3 / 1;
  font-size: 1rem;
}

a.biz-link .biz-meta::after {
  content: "→";
  content: "→" / "";
  grid-area: 2 / 2 / 4 / 3;
  align-self: end;
  display: grid;
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid currentColor;
  border-radius: 50%;
}

.biz-link:hover .biz-name,
.biz-link:focus-visible .biz-name {
  text-decoration: underline;
}

.biz-note {
  margin: 1.5rem 0 0;
  font-size: 1rem;
  color: var(--ink);
}


.works-cards {
  display: grid;
  gap: 3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 64rem) {
  .works-cards {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
  }

  .works-card:not(.works-card-wide, .works-card-tall) {
    flex: 0 0 100%;
  }

  .works-card:not(.works-card-wide, .works-card-tall) > * {
    max-width: calc((100% - 3rem) * 2 / 3);
  }

  .works-card-wide {
    flex: 0 0 calc((100% - 3rem) * 2 / 3);
  }

  .works-card-tall {
    flex: 0 0 calc((100% - 3rem) / 3);
  }
}

.works-card {
  min-width: 0;
}

.works-card img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--rule);
}

.works-card-tall img {
  max-width: 240px;
}

.works-card .work-name {
  margin: 1.25rem 0 0;
}

.works-card .work-labels {
  margin: 1rem 0;
}

.works-count {
  margin: 0;
  font-size: 1rem;
}


.split {
  display: grid;
  gap: 1rem;
}

.split-body > * {
  max-width: 27rem;
}

.split-body > :last-child {
  margin-bottom: 0;
}

@media (min-width: 64rem) {
  .split {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 3rem;
    align-items: start;
    background: linear-gradient(var(--rule), var(--rule)) 50% 0 / 1px 100% no-repeat content-box;
  }
}


.band-contact {
  overflow: hidden;
  isolation: isolate;
}

.band-photo,
.band-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.band-photo {
  z-index: -2;
}

.band-photo img {
  object-fit: cover;
  object-position: 50% 100%;
}

.band-contact::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--paper);
  opacity: 0.25;
}


.page-band {
  border-top: none;
}

.prose > :first-child {
  margin-top: 0;
}

.prose > :last-child {
  margin-bottom: 0;
}

.back {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rule);
}


.facts {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.75rem 2rem;
  margin: 0;
  padding: 1.5rem 0 0;
  border-top: 1px solid var(--rule-strong);
}

.facts dt {
  color: var(--ink-2);
}

.facts dd {
  margin: 0;
  color: var(--ink);
}

@media (max-width: 34rem) {
  .facts {
    grid-template-columns: 1fr;
    gap: 0.15rem 0;
  }

  .facts dd {
    margin-bottom: 1rem;
  }
}


.mk-page-service .col {
  max-width: none;
}

.mk-page-works .col {
  max-width: none;
}

.mk-page-works .works {
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
}

.mk-page-works .work-card {
  padding: 2rem 0;
  border: none;
  border-top: 1px solid var(--rule);
}

.mk-page-works .work-name a,
.mk-page-work .work-name a {
  color: var(--ink);
  text-decoration: none;
}

.mk-page-works .work-name a:hover {
  text-decoration: underline;
}

.mk-page-flow .col,
.mk-page-privacy .col,
.mk-page-legal .col {
  max-width: var(--measure);
}

.mk-page-privacy .prose,
.mk-page-legal .prose {
  line-height: 2;
}

.mk-page-company .col {
  max-width: none;
}


.form-estimate {
  margin: 0;
}


.form-state {
  margin: 0 0 2.5rem;
  padding: 1.25rem 1.5rem;
  border-left: 3px solid;
}

.form-state > :first-child {
  margin-top: 0;
}

.form-state > :last-child {
  margin-bottom: 0;
}

.form-state-alert {
  border-left-color: var(--tbd);
  background: var(--tbd-bg);
}

.form-state-done {
  border-left-color: var(--accent);
  background: var(--accent-soft);
}

.form-errors {
  margin: 0 0 1.25rem;
  padding-left: 1.25rem;
  line-height: 1.8;
}

.form-errors li {
  margin-bottom: 0.35rem;
}

.form-mailto {
  margin: 1.25rem 0;
}

.form-copy-head {
  margin: 1.25rem 0 0.5rem;
}


.form-intro {
  margin: 0 0 2.5rem;
  padding-bottom: 2.5rem;
  border-bottom: 1px solid var(--rule);
}

.form-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
  margin: 1.25rem 0 0;
}


.form-field {
  margin: 0 0 2.5rem;
}

.form-fieldset {
  min-width: 0;
  padding: 0;
  border: 0;
}

.form-label,
.form-legend {
  display: block;
  margin: 0 0 0.25rem;
  padding: 0;
  line-height: 1.6;
  letter-spacing: 0.02em;
}


.form-badge {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0 0.5rem;
  border: 1px solid;
  border-radius: 2px;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.6;
  white-space: nowrap;
}

.form-badge-req {
  border-color: var(--ink-2);
  color: var(--ink);
}

.form-badge-opt {
  border-color: transparent;
  color: var(--ink-2);
}

.form-badge-alert {
  border-color: var(--tbd);
  color: var(--ink);
}


.form-hint {
  margin: 0 0 0.5rem;
  color: var(--ink-2);
  line-height: 1.7;
  letter-spacing: 0.02em;
}

.form-error {
  margin: 0 0 0.5rem;
  color: var(--ink);
  line-height: 1.7;
  letter-spacing: 0.02em;
}


.form-input,
.form-textarea,
.form-select,
.form-copy {
  display: block;
  width: 100%;
  padding: 0.75rem 0.875rem;
  border: 1px solid var(--rule-strong);
  border-radius: 2px;
  background: var(--surface);
  color: var(--ink);
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.7;
  letter-spacing: 0;
}

.form-input,
.form-select {
  min-height: 3rem;
}

.form-textarea,
.form-copy {
  resize: vertical;
}

.form-copy {
  border-color: var(--ink-2);
  background: transparent;
}


.form-radios {
  display: grid;
  gap: 0.25rem;
}

.form-radio {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0 0.75rem;
  align-items: start;
  min-height: 44px;
  padding: 0.5rem 0;
  line-height: 1.6;
  cursor: pointer;
}

.form-radio input {
  width: 1.125rem;
  height: 1.125rem;
  margin: 0.25rem 0 0;
}


.form-field-invalid .form-input,
.form-field-invalid .form-textarea,
.form-field-invalid .form-select {
  border-color: var(--tbd);
  border-width: 2px 2px 2px 3px;
}

.form-field-invalid .form-radios {
  padding-left: 0.75rem;
  border-left: 3px solid var(--tbd);
}


.form-input:focus-visible,
.form-textarea:focus-visible,
.form-select:focus-visible,
.form-copy:focus-visible,
.form-radio input:focus-visible,
.form-submit:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}


.form-actions {
  margin: 0;
}

.form-consent {
  margin: 0 0 2.5rem;
  padding-bottom: 2.5rem;
  border-bottom: 1px solid var(--rule);
}

.form-consent:has(+ .form-consent) {
  margin-bottom: 1rem;
  padding-bottom: 0;
  border-bottom: 0;
}

.form-submit {
  display: block;
  width: 100%;
  min-height: 3.25rem;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 700;
  text-align: center;
  cursor: pointer;
}


@media (max-width: 34rem) {
  .form-field,
  .form-fieldset {
    margin-bottom: 2rem;
  }

  .form-state {
    padding: 1.25rem 1.125rem;
  }
}



.progress {
  position: fixed;
  inset: 0 0 auto;
  z-index: 100;
  height: 2px;
  pointer-events: none;
}

.progress > span {
  display: block;
  height: 100%;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: left center;
}


@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}



.hero h1 .line {
  display: block;
  overflow: hidden;
}

.hero h1 .line > span {
  display: block;
  will-change: transform;
  animation: mk-rise 620ms cubic-bezier(0.16, 1, 0.3, 1) both;
}

.hero h1 .line:nth-child(2) > span {
  animation-delay: 90ms;
}

.hero h1 .line:nth-child(3) > span {
  animation-delay: 180ms;
}

@keyframes mk-rise {
  from { transform: translateY(0.6em); }
  to   { transform: translateY(0); }
}


@supports (animation-timeline: view()) {
  body:not(.mk-page-estimate) .band:not(.hero):not(:first-of-type) .col {
    animation: mk-reveal 1s ease-out both;
    animation-timeline: view();
    animation-range: entry 0% cover 25%;
  }
}

@keyframes mk-reveal {
  from {
    translate: 0 1.6rem;
  }
  to {
    translate: 0 0;
  }
}


@supports (animation-timeline: view()) {
  .band {
    view-timeline-name: --mk-band;
  }

  .rail {
    animation: mk-rail-in 1s ease-out both;
    animation-timeline: --mk-band;
    animation-range: entry 0% cover 18%;
  }
}

@keyframes mk-rail-in {
  from {
    translate: -0.5rem 0;
  }
  to {
    translate: 0 0;
  }
}


@supports (animation-timeline: view()) {
  .band:not(.hero) {
    border-top-color: transparent;
  }

  .band:not(.hero)::before {
    content: "";
    position: absolute;
    top: -1px;
    left: 0;
    right: 0;
    height: 1px;
    background: var(--rule);
    transform: scaleX(0);
    transform-origin: left center;
    animation: mk-rule-in 1s ease-out both;
    animation-timeline: view();
    animation-range: cover 12% cover 42%;
  }
}

@keyframes mk-rule-in {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}


@supports (animation-timeline: view()) {
  .plan {
    animation: mk-card-in 1s ease-out both;
    animation-timeline: view();
    animation-range: entry 0% cover 20%;
  }

  .plan:nth-child(2) { animation-range: entry 7% cover 27%; }
  .plan:nth-child(3) { animation-range: entry 14% cover 34%; }
  .plan:nth-child(4) { animation-range: entry 21% cover 41%; }
  .plan:nth-child(5) { animation-range: entry 28% cover 48%; }
}

@keyframes mk-card-in {
  from { translate: 0 1.4rem; }
  to   { translate: 0 0; }
}

@media (hover: hover) {
  .plan {
    transition: transform 180ms ease-out;
  }

  .plan:hover {
    transform: translateY(-3px);
  }
}


@supports (animation-timeline: scroll()) {
  .progress > span {
    animation: mk-progress 1s linear both;
    animation-timeline: scroll(root block);
  }
}

@keyframes mk-progress {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}


@view-transition {
  navigation: auto;
}


.cta {
  transition: opacity 150ms ease-out, background-color 150ms ease-out;
}


@media (prefers-reduced-motion: reduce) {
  .hero h1 .line > span,
  .band:not(.hero) .col,
  .rail,
  .plan,
  .band:not(.hero)::before,
  .progress > span {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    translate: none !important;
  }

  .band:not(.hero)::before {
    transform: scaleX(1) !important;
  }

  .rail {
    position: static !important;
  }

  .progress {
    display: none !important;
  }

  @view-transition {
    navigation: none;
  }
}



.mk-curtain {
  display: none;
}

.is-curtained .mk-curtain {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: flex;
  flex-direction: column;
  visibility: hidden;
  color: var(--ink);
  font-family: var(--f-body);
  animation: mk-curtain 2000ms linear both;
}

.is-curtained .mk-curtain-top {
  flex: 0 0 auto;
  height: calc(50% + clamp(3rem, 14vw, 6rem) / 2 + 2.05rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  background: var(--paper);
  animation: mk-curtain-up 500ms cubic-bezier(0.7, 0, 0.84, 0) 1500ms both;
}

.is-curtained .mk-curtain-bottom {
  flex: 1 1 auto;
  background: var(--paper);
  animation: mk-curtain-down 500ms cubic-bezier(0.7, 0, 0.84, 0) 1500ms both;
}

.mk-curtain-name {
  margin: 0;
  font-size: clamp(3rem, 14vw, 6rem);
  line-height: 1;
  animation: mk-curtain-in 320ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.mk-curtain-block {
  width: max-content;
  max-width: 100%;
  margin-top: 1rem;
}

.mk-curtain-tag {
  margin: 0;
  font-size: 1rem;
  line-height: 1.6;
  letter-spacing: 0.08em;
  text-align: center;
  animation: mk-curtain-in 300ms cubic-bezier(0.22, 1, 0.36, 1) 220ms both;
}

.mk-curtain-rule {
  display: block;
  height: 1px;
  margin-top: 1.5rem;
  background: var(--rule);
  transform: scaleX(0);
  transform-origin: center;
  animation: mk-curtain-rule 300ms cubic-bezier(0.22, 1, 0.36, 1) 520ms both;
}


@keyframes mk-curtain {
  0%,
  99% {
    visibility: visible;
  }

  100% {
    visibility: hidden;
  }
}

@keyframes mk-curtain-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes mk-curtain-rule {
  from {
    transform: scaleX(0);
  }

  to {
    transform: scaleX(1);
  }
}

@keyframes mk-curtain-up {
  to {
    transform: translateY(-100%);
  }
}

@keyframes mk-curtain-down {
  to {
    transform: translateY(100%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .is-curtained .mk-curtain {
    display: none;
  }
}



.mk-page-homepage .band:not(.hero) {
  border-top-color: var(--rule);
}

.mk-page-homepage .band:not(.hero)::before {
  content: none;
}

.mk-page-homepage ::selection {
  background: var(--accent-soft);
  color: var(--ink);
}

.mk-page-homepage .mast .wrap,
.mk-lp-entry .mast .wrap {
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  padding-block: 0.25rem;
}

.mast-go {
  margin: 0;
  flex: none;
}

.mast-go .cta {
  padding: 0.5rem 1rem;
}

.lp-first .wrap {
  padding-block: 0.5rem 2.5rem;
}

.lp-bill {
  padding: 0.75rem;
  border: 1px solid var(--rule);
  background: var(--surface);
  color: var(--ink);
}

.lp-title {
  margin: 0 0 0.5rem;
  font-size: 1.125rem;
  line-height: 1.35;
  text-wrap-style: auto;
}

@media (min-width: 24rem) {
  .lp-title {
    font-size: 1.375rem;
  }
}

.lp-title-lead {
  display: block;
}

.lp-price {
  font-size: clamp(2.25rem, 1.75rem + 1.5vw, 3rem);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}

.lp-terms {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.45;
  color: var(--ink);
}

.lp-term {
  padding-top: 0.5rem;
  border-top: 1px solid var(--rule);
}

.lp-term + .lp-term {
  margin-top: 0.5rem;
}

.lp-term dt {
  margin: 0;
  font-weight: inherit;
}

.lp-term dd {
  margin: 0;
}

.lp-term ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.lp-next {
  margin-top: 1rem;
}

.lp-next p {
  margin: 0 0 0.75rem;
}

.lp-next p:last-child {
  margin-bottom: 0;
}

.lp-next .lp-after {
  margin-bottom: 0.25rem;
}

.lp-go {
  margin: 2rem 0 0;
}

.lp-next .lp-go {
  margin: 0 0 0.75rem;
}

.lp-next .lp-go .cta,
.lp-go-final .cta {
  display: block;
  text-align: center;
}

.lp-go-final .cta {
  padding: 0.875rem 2.5rem;
  font-size: 1.125rem;
}

.lp-glance-list {
  margin: 0;
  font-size: 1rem;
  font-weight: 400;
  color: var(--ink);
}

.lp-glance-item {
  padding-block: 1rem;
}

.lp-glance-item + .lp-glance-item {
  border-top: 1px solid var(--rule);
}

.lp-glance-item dt {
  margin: 0 0 0.5rem;
  font-weight: 500;
}

.lp-glance-item dd {
  margin: 0;
}

.lp-glance-item ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 48rem) {
  .lp-glance-list {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }

  .lp-glance-item:first-child {
    padding-inline-end: 2rem;
  }

  .lp-glance-item + .lp-glance-item {
    padding-inline-start: 2rem;
    border-top: 0;
    border-inline-start: 1px solid var(--rule);
  }
}

.lp-sec .wrap {
  padding-block: clamp(3rem, 7vw, 5.5rem);
}

.lp-sec h2 {
  margin: 0 0 1.5rem;
}

.lp-sec p {
  max-width: var(--measure);
}

.lp-sec a:not([class]) {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.lp-sec a:not([class]):is(:hover, :focus-visible) {
  color: var(--accent);
}

.lp-plan,
.lp-contact {
  background: var(--surface);
}

.lp-rows {
  margin: 2rem 0;
  border-top: 1px solid var(--rule);
}

.lp-row {
  padding-block: 1.25rem;
  border-bottom: 1px solid var(--rule);
}

.lp-row h3 {
  margin: 0 0 0.5rem;
  font-size: 1.125rem;
}

.lp-row-body p {
  margin: 0 0 0.5rem;
}

.lp-row-body p:last-child {
  margin-bottom: 0;
}

.lp-row .work-labels {
  margin: 0;
  padding: 0;
  border: 0;
}

.lp-more {
  margin: 0;
}

.lp-example {
  max-width: 44rem;
  margin: 0 0 2.5rem;
  padding: 1.25rem;
  border: 1px solid var(--rule);
}

.lp-example h3 {
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
}

.lp-example p:last-child {
  margin-bottom: 0;
}

.lp-plan h3 {
  font-size: 1.125rem;
}

.lp-plan .options thead th {
  color: var(--ink);
}

.lp-cost-note p {
  margin: 0;
}

.lp-own-item + .lp-own-item {
  margin-top: 2.5rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--rule);
}

.lp-own-item h3 {
  margin: 0 0 1rem;
  font-size: 1.125rem;
}

.lp-own-shot img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--rule);
}

.lp-own .work-labels {
  margin: 1rem 0;
}

.lp-steps {
  margin: 2rem 0;
  padding: 0;
  list-style: none;
  counter-reset: lp-step;
  border-top: 1px solid var(--rule);
}

.lp-steps li {
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr);
  column-gap: 0.75rem;
  padding-block: 1rem;
  border-bottom: 1px solid var(--rule);
  counter-increment: lp-step;
}

.lp-steps li::before {
  content: counter(lp-step);
  grid-row: 1 / span 3;
  font-family: var(--f-display);
  font-weight: 700;
  font-size: 1.125rem;
  line-height: 1.4;
  font-variant-numeric: tabular-nums;
}

.lp-steps li > * {
  grid-column: 2;
  margin: 0;
}

.lp-steps h3 {
  font-size: 1.125rem;
}

.lp-step-who {
  margin-top: 0.25rem;
}

.lp-qa {
  max-width: 44rem;
  padding-block: 1.25rem;
  border-top: 1px solid var(--rule);
}

.lp-qa:last-child {
  border-bottom: 1px solid var(--rule);
}

.lp-qa h3 {
  margin: 0 0 0.5rem;
  font-size: 1.0625rem;
}

.lp-qa p {
  margin: 0;
}

.lp-contact h2 {
  font-size: clamp(1.5rem, 1.2rem + 1.4vw, 2rem);
}

.lp-contact .wrap > p:not(.lp-go) {
  margin: 0 0 0.75rem;
}

.lp-contact .lp-go {
  margin: 1.5rem 0 0.75rem;
}

.mk-page-homepage .foot {
  margin-top: 0;
}

@media (min-width: 48.0625rem) {
  .mk-page-homepage .mast .wrap,
  .mk-lp-entry .mast .wrap {
    padding-block: 0.5rem;
  }

  .lp-first .wrap {
    padding-block: 2rem 3.5rem;
  }

  .lp-bill {
    padding: 2rem;
  }

  .lp-title {
    margin-bottom: 1rem;
    font-size: clamp(1.375rem, 1.1rem + 1.2vw, 2rem);
  }

  .lp-terms {
    line-height: 1.6;
  }

  .lp-term {
    padding-top: 0.75rem;
  }

  .lp-term + .lp-term {
    margin-top: 0.75rem;
  }

  .lp-next .lp-go .cta,
  .lp-go-final .cta {
    display: inline-block;
  }

  .lp-steps li {
    grid-template-columns: 2.5rem minmax(0, 1fr) 10rem;
    column-gap: 1.5rem;
  }

  .lp-steps li > .lp-step-who {
    grid-column: 3;
    grid-row: 1;
    margin-top: 0;
  }
}

@media (min-width: 64rem) {
  .lp-terms {
    font-size: 1.25rem;
  }

  .lp-term {
    display: grid;
    grid-template-columns: 8em minmax(0, 1fr);
    column-gap: 1.5rem;
    padding-top: 0;
    border-top: 0;
  }

  .lp-term + .lp-term {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--rule);
  }

  .lp-term dt {
    margin: 0;
  }

  .lp-next {
    display: grid;
    grid-template-columns: auto auto;
    justify-content: start;
    align-items: center;
    column-gap: 2rem;
    margin-top: 1.25rem;
  }

  .lp-next p,
  .lp-next .lp-go {
    margin: 0;
  }

  .lp-next .lp-after {
    grid-column: 1 / -1;
  }

  .lp-next .lp-go + .lp-after {
    margin-top: 0.75rem;
  }

  .lp-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
    column-gap: 2.5rem;
  }

  .lp-row h3 {
    margin: 0;
  }

  .lp-own-item:has(> .lp-own-shot) {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    column-gap: 2.5rem;
    align-items: start;
  }

  .lp-own-item:has(> .lp-own-shot) > * {
    grid-column: 2;
  }

  .lp-own-item > .lp-own-shot {
    grid-column: 1;
    grid-row: 1 / span 6;
  }

  .lp-own .work-labels {
    margin-top: 0;
  }
}

@media (min-width: 80rem) {
  .lp-bill {
    display: grid;
    grid-template-columns: 5fr 7fr;
    padding: 2rem 0;
  }

  .lp-title {
    margin: 0;
    padding-inline: 2rem 1.5rem;
  }

  .lp-terms {
    padding-inline: 2rem;
    border-left: 1px solid var(--rule);
  }
}

@supports (grid-template-rows: subgrid) {
  @media (min-width: 80rem) {
    .lp-first .wrap {
      display: grid;
      grid-template-columns: 5fr 7fr;
      grid-template-rows: auto 1fr;
    }

    .lp-bill {
      grid-column: 1 / -1;
      grid-row: 1 / 3;
      grid-template-columns: subgrid;
      grid-template-rows: subgrid;
    }

    .lp-title {
      grid-column: 1;
      grid-row: 1;
    }

    .lp-terms {
      grid-column: 2;
      grid-row: 1 / 3;
    }

    .lp-next {
      display: block;
      grid-column: 1;
      grid-row: 2;
      align-self: start;
      margin-top: 1.5rem;
      padding-inline: 2rem 1.5rem;
    }

    .lp-next p,
    .lp-next .lp-go {
      margin: 0 0 0.75rem;
    }

    .lp-next p:last-child {
      margin: 0;
    }
  }
}
