    :root {
      --ink: #0B0B0B;
      --charcoal: #141414;
      --stone: #D8CBB8;
      --bronze: #A67C52;
      --logo: #A67C52;
      --soft: #F5F2EC;
      --header-h: 5.25rem;
      --ease-lux: cubic-bezier(0.22, 1, 0.36, 1);
    }

    html {
      scroll-behavior: auto;
    }

    #home,
    #about,
    #works,
    #process,
    #contact,
    #collection {
      scroll-margin-top: calc(var(--header-h) + 0.35rem);
    }

    .main-nav {
      gap: 1.25rem;
    }

    @media (min-width: 1536px) {
      .main-nav {
        gap: 1.85rem;
      }
    }

    body {
      font-family: Manrope, system-ui, sans-serif;
      background: var(--ink);
      color: var(--soft);
      -webkit-font-smoothing: antialiased;
      overflow-x: hidden;
    }

    .font-display {
      font-family: "Cormorant Garamond", Georgia, serif;
    }

    .focus-ring:focus-visible {
      outline: 2px solid var(--bronze);
      outline-offset: 3px;
    }

    ::selection {
      background: rgba(166, 124, 82, 0.35);
      color: var(--soft);
    }

    html.is-scroll-locked,
    html.is-scroll-locked body {
      overflow: hidden !important;
      overscroll-behavior: none;
    }

    html.is-scroll-locked body {
      touch-action: none;
    }

    html.is-scroll-locked #draftModal,
    html.is-scroll-locked #featureModal,
    html.is-scroll-locked #draftModal .modal-panel,
    html.is-scroll-locked #featureModal .modal-panel,
    html.is-scroll-locked #mobileMenu {
      touch-action: pan-y;
    }

    #siteNav {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 60;
      background: transparent;
      border-bottom: 1px solid transparent;
      transition: background-color 0.45s var(--ease-lux), border-color 0.45s var(--ease-lux), backdrop-filter 0.45s ease;
    }

    #siteNav.is-solid {
      background: rgba(11, 11, 11, 0.88);
      border-bottom-color: rgba(216, 203, 184, 0.12);
      backdrop-filter: blur(14px);
      -webkit-backdrop-filter: blur(14px);
    }

    #siteNav.is-menu-open {
      background: var(--ink);
      border-bottom-color: rgba(216, 203, 184, 0.12);
    }

    .site-logo {
      display: flex;
      flex-direction: column;
      justify-content: center;
      line-height: 0.8;
      font-family: "Cormorant Garamond", Georgia, serif;
      font-weight: 700;
      font-size: 1.35rem;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--logo);
      -webkit-text-stroke: 0.7px currentColor;
    }

    @media (min-width: 768px) {
      .site-logo {
        font-size: 1.55rem;
        letter-spacing: 0.2em;
        -webkit-text-stroke: 0.85px currentColor;
      }
    }

    a.site-logo:hover {
      color: var(--stone);
    }

    .site-logo--hero {
      font-size: 2.5rem;
      letter-spacing: 0.22em;
      -webkit-text-stroke: 0.9px currentColor;
      color: var(--logo);
    }

    @media (min-width: 640px) {
      .site-logo--hero {
        font-size: 3.05rem;
      }
    }

    @media (min-width: 768px) {
      .site-logo--hero {
        font-size: 3.5rem;
        -webkit-text-stroke: 1px currentColor;
      }
    }

    @media (min-width: 1024px) {
      .site-logo--hero {
        font-size: 3.85rem;
      }
    }

    #mobileMenu {
      display: block;
      max-height: 0;
      overflow: hidden;
      opacity: 0;
      pointer-events: none;
      transition: max-height 0.4s var(--ease-lux), opacity 0.3s ease;
    }

    #mobileMenu.is-open {
      max-height: calc(100vh - var(--header-h));
      max-height: calc(100dvh - var(--header-h) - env(safe-area-inset-bottom, 0px));
      overflow-y: auto;
      overscroll-behavior: contain;
      -webkit-overflow-scrolling: touch;
      opacity: 1;
      pointer-events: auto;
      touch-action: pan-y;
    }

    #mobileMenu.is-open nav {
      padding-bottom: calc(1.25rem + env(safe-area-inset-bottom, 0px));
    }

    #mobileMenu.is-open::-webkit-scrollbar {
      width: 4px;
    }

    #mobileMenu.is-open::-webkit-scrollbar-thumb {
      background: rgba(255, 215, 0, 0.35);
      border-radius: 999px;
    }

    .hero-mask {
      overflow: hidden;
      display: block;
    }

    .hero-mask > span {
      display: block;
      will-change: transform;
    }

    .reveal-mask {
      overflow: hidden;
    }

    .reveal-mask > * {
      display: block;
      will-change: transform;
    }

    .work-tile {
      position: relative;
      overflow: hidden;
      background: var(--charcoal);
    }

    .work-tile img {
      transition: transform 1.1s var(--ease-lux);
      will-change: transform;
    }

    .work-tile:hover img,
    .work-tile:focus-within img {
      transform: scale(1.06);
    }

    .work-frame {
      position: relative;
      width: 100%;
      overflow: hidden;
      background: var(--charcoal);
    }

    .work-frame--portrait {
      aspect-ratio: 3 / 4;
    }

    .work-frame img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center 18%;
      display: block;
    }

    .gallery-frame {
      position: relative;
      width: 100%;
      overflow: hidden;
      background: var(--charcoal);
    }

    .gallery-frame--portrait {
      aspect-ratio: 3 / 4;
    }

    @media (min-width: 768px) {
      .gallery-frame--portrait {
        aspect-ratio: 3 / 4;
        min-height: 20rem;
      }
    }

    .gallery-frame img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center 20%;
      display: block;
    }

    /* Experience gallery — fixed frames, equal row heights */
    .experience-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 0.5rem;
    }

    .exp-shot {
      position: relative;
      overflow: hidden;
      background: var(--charcoal);
      margin: 0;
      min-height: 0;
    }

    .exp-shot img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center;
      display: block;
    }

    .exp-shot--a,
    .exp-shot--d {
      aspect-ratio: 16 / 10;
    }

    .exp-shot--b,
    .exp-shot--c {
      aspect-ratio: 4 / 5;
    }

    .exp-shot--b img,
    .exp-shot--c img {
      object-position: center 22%;
    }

    @media (min-width: 640px) {
      .experience-grid {
        grid-template-columns: 1.55fr 1fr;
        grid-template-rows: minmax(16rem, 22rem) minmax(13rem, 18rem);
        gap: 0.625rem;
      }

      .exp-shot--a {
        grid-column: 1;
        grid-row: 1;
        aspect-ratio: auto;
        min-height: 0;
        height: 100%;
      }

      .exp-shot--b {
        grid-column: 2;
        grid-row: 1;
        aspect-ratio: auto;
        min-height: 0;
        height: 100%;
      }

      .exp-shot--c {
        grid-column: 1;
        grid-row: 2;
        aspect-ratio: auto;
        min-height: 0;
        height: 100%;
      }

      .exp-shot--d {
        grid-column: 2;
        grid-row: 2;
        aspect-ratio: auto;
        min-height: 0;
        height: 100%;
      }
    }

    @media (min-width: 768px) {
      .experience-grid {
        grid-template-columns: repeat(12, minmax(0, 1fr));
        grid-template-rows: minmax(22rem, 28rem) minmax(16rem, 20rem);
        gap: 0.75rem;
      }

      .exp-shot--a {
        grid-column: 1 / span 8;
        grid-row: 1;
        min-height: 0;
        height: 100%;
      }

      .exp-shot--b {
        grid-column: 9 / span 4;
        grid-row: 1;
        min-height: 0;
        height: 100%;
      }

      .exp-shot--c {
        grid-column: 1 / span 5;
        grid-row: 2;
        min-height: 0;
        height: 100%;
      }

      .exp-shot--d {
        grid-column: 6 / span 7;
        grid-row: 2;
        min-height: 0;
        height: 100%;
      }
    }

    @media (min-width: 1024px) {
      .experience-grid {
        grid-template-rows: minmax(26rem, 32rem) minmax(18rem, 22rem);
      }
    }

    .work-meta {
      position: absolute;
      inset: auto 0 0 0;
      padding: 1.5rem;
      background: linear-gradient(to top, rgba(11, 11, 11, 0.92) 0%, rgba(11, 11, 11, 0.45) 70%, transparent 100%);
      transform: translateY(0.4rem);
      opacity: 0.92;
      transition: transform 0.5s var(--ease-lux), opacity 0.5s ease;
    }

    .work-tile:hover .work-meta,
    .work-tile:focus-within .work-meta {
      transform: translateY(0);
      opacity: 1;
    }

    .masonry {
      columns: 1;
      column-gap: 1rem;
    }

    @media (min-width: 640px) {
      .masonry { columns: 2; }
    }

    @media (min-width: 1024px) {
      .masonry { columns: 3; column-gap: 1.25rem; }
    }

    .masonry > * {
      break-inside: avoid;
      margin-bottom: 1rem;
    }

    @media (min-width: 1024px) {
      .masonry > * { margin-bottom: 1.25rem; }
    }

    .process-line {
      position: absolute;
      left: 1.15rem;
      top: 0.5rem;
      bottom: 0.5rem;
      width: 1px;
      background: rgba(216, 203, 184, 0.18);
    }

    @media (min-width: 768px) {
      .process-line {
        left: 50%;
        transform: translateX(-50%);
      }
    }

    .process-media {
      position: relative;
      width: 100%;
      aspect-ratio: 4 / 5;
      overflow: hidden;
      background: #1a1a1a;
    }

    @media (min-width: 640px) {
      .process-media {
        aspect-ratio: 5 / 4;
      }
    }

    @media (min-width: 768px) {
      .process-media {
        aspect-ratio: 4 / 3;
      }
    }

    .process-media img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center;
      display: block;
    }

    .btn-bronze {
      background: var(--bronze);
      color: var(--ink);
      transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease;
    }

    .btn-bronze:hover {
      background: var(--stone);
    }

    .btn-ghost {
      border: 1px solid rgba(216, 203, 184, 0.35);
      color: var(--soft);
      transition: border-color 0.3s ease, background-color 0.3s ease, color 0.3s ease;
    }

    .btn-ghost:hover {
      border-color: var(--stone);
      background: rgba(216, 203, 184, 0.06);
    }

    .field {
      width: 100%;
      background: transparent;
      border: 0;
      border-bottom: 1px solid rgba(216, 203, 184, 0.25);
      color: var(--soft);
      padding: 0.85rem 0;
      font-size: 0.95rem;
      transition: border-color 0.3s ease;
    }

    .field:focus {
      outline: none;
      border-bottom-color: var(--bronze);
    }

    .field::placeholder {
      color: rgba(245, 242, 236, 0.35);
    }

    select.field {
      appearance: none;
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23D8CBB8' stroke-width='1.2'/%3E%3C/svg%3E");
      background-repeat: no-repeat;
      background-position: right 0.25rem center;
      padding-right: 1.5rem;
    }

    select.field option {
      background: #141414;
      color: #F5F2EC;
    }

    .modal-panel {
      max-height: 90vh;
      overflow-y: auto;
      overscroll-behavior: contain;
    }

    .wa-float {
      position: fixed;
      right: 1.1rem;
      bottom: 1.1rem;
      z-index: 55;
      width: 3.25rem;
      height: 3.25rem;
      border-radius: 9999px;
      background: var(--bronze);
      color: var(--ink);
      display: inline-flex;
      align-items: center;
      justify-content: center;
      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
      transition: transform 0.35s var(--ease-lux), background-color 0.3s ease;
    }

    .wa-float:hover {
      transform: translateY(-2px);
      background: var(--stone);
    }

    .grain {
      pointer-events: none;
      position: absolute;
      inset: 0;
      opacity: 0.07;
      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
      mix-blend-mode: overlay;
    }

    .section-pad {
      padding-top: clamp(4.5rem, 10vw, 8rem);
      padding-bottom: clamp(4.5rem, 10vw, 8rem);
    }

    .img-fallback {
      background: linear-gradient(145deg, #1a1a1a, #2a241c);
    }

    @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;
      }
    }

    body.is-inner #main {
      padding-top: var(--header-h);
    }

    .page-hero {
      padding-top: 2.5rem;
      padding-bottom: 1.5rem;
    }

    .flash-ok {
      border: 1px solid rgba(166, 124, 82, 0.45);
      background: rgba(11, 11, 11, 0.55);
      color: var(--stone);
      padding: 1rem 1.15rem;
      margin-bottom: 1.5rem;
    }

    .flash-err {
      border: 1px solid rgba(166, 124, 82, 0.45);
      background: rgba(11, 11, 11, 0.55);
      color: var(--soft);
      padding: 1rem 1.15rem;
      margin-bottom: 1.5rem;
    }

    .work-detail-frame {
      position: relative;
      overflow: hidden;
      background: var(--charcoal);
    }

    .work-detail-frame img {
      width: 100%;
      height: auto;
      display: block;
      object-fit: cover;
    }

    .breadcrumb {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem;
      font-size: 0.65rem;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      color: rgba(245, 242, 236, 0.45);
    }

    .breadcrumb a {
      color: var(--stone);
    }

    .work-tile a.work-tile-link {
      color: inherit;
      text-decoration: none;
      display: block;
    }

    .collection-large-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 1rem;
    }

    @media (min-width: 768px) {
      .collection-large-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.25rem;
      }
    }

    .collection-relief-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 0.75rem;
    }

    @media (min-width: 1024px) {
      .collection-relief-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.25rem;
      }
    }

    .collection-masonry > * {
      display: inline-block;
      width: 100%;
      break-inside: avoid;
      -webkit-column-break-inside: avoid;
      page-break-inside: avoid;
      overflow: hidden;
    }

    .collection-thumb {
      width: 100%;
      display: block;
      object-fit: cover;
    }

    .collection-thumb--masonry {
      height: auto;
    }

    .collection-thumb--large {
      aspect-ratio: 1.05 / 1;
    }

    .collection-thumb--relief {
      aspect-ratio: 3 / 4;
    }

    .collection-preview {
      display: grid;
      columns: unset;
      grid-template-columns: 1fr;
      gap: 1rem;
    }

    @media (min-width: 768px) {
      .collection-preview {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.25rem;
      }
    }

    .collection-preview > * {
      display: block;
      width: 100%;
      margin-bottom: 0;
      break-inside: auto;
    }

    .collection-tile {
      isolation: isolate;
    }

    .collection-tile .work-meta {
      transform: none;
      opacity: 1;
    }

    .collection-tag {
      border: 1px solid rgba(216, 203, 184, 0.2);
      padding: 0.375rem 0.75rem;
      background: transparent;
      color: rgba(245, 242, 236, 0.45);
      letter-spacing: 0.16em;
      text-transform: uppercase;
      font-size: 10px;
      line-height: 1;
      cursor: pointer;
    }

    .collection-tag:hover,
    .collection-tag.is-active {
      color: var(--stone);
    }

    .collection-shop-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 1.25rem;
    }

    @media (min-width: 640px) {
      .collection-shop-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
    }

    @media (min-width: 1024px) {
      .collection-shop-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.35rem;
      }
    }

    .collection-shop-card {
      display: flex;
      flex-direction: column;
      background: var(--charcoal);
    }

    .collection-shop-media {
      position: relative;
      overflow: hidden;
    }

    .collection-thumb--shop {
      aspect-ratio: 3 / 4;
      width: 100%;
      height: auto;
      object-fit: cover;
    }

    .collection-badge {
      position: absolute;
      top: 0.75rem;
      left: 0.75rem;
      z-index: 2;
      padding: 0.35rem 0.6rem;
      font-size: 10px;
      font-weight: 600;
      letter-spacing: 0.16em;
      text-transform: uppercase;
    }

    .collection-badge.is-sold {
      background: var(--ink);
      color: var(--stone);
      border: 1px solid rgba(216, 203, 184, 0.35);
    }

    .collection-badge.is-available {
      background: var(--bronze);
      color: var(--ink);
    }

    .collection-shop-card.is-sold img {
      filter: saturate(0.72);
    }

    .collection-shop-info {
      margin: 0;
      padding: 0.95rem 1rem 0.9rem;
      border-top: 1px solid rgba(216, 203, 184, 0.12);
    }

    .collection-shop-info > div {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      gap: 0.85rem;
    }

    .collection-shop-info > div + div {
      margin-top: 0.45rem;
    }

    .collection-shop-info dt {
      margin: 0;
      font-size: 10px;
      font-weight: 500;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      color: rgba(245, 242, 236, 0.45);
    }

    .collection-shop-info dd {
      margin: 0;
      text-align: right;
      font-size: 12px;
      letter-spacing: 0.04em;
      color: var(--soft);
    }

    .collection-shop-info .collection-price {
      color: var(--bronze);
      font-weight: 600;
    }

    .collection-shop-info--detail {
      padding: 0;
      border-top: 0;
      max-width: 22rem;
    }

    .collection-wa-btn {
      display: flex;
      width: 100%;
      min-height: 2.75rem;
      align-items: center;
      justify-content: center;
      border-radius: 0;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      text-decoration: none;
    }

    .hp {
      position: absolute;
      left: -9999px;
      width: 1px;
      height: 1px;
      overflow: hidden;
    }
