:root {
      --paper: #ffffff;
      --ink: #0b0b0b;
      --soft: #727272;
      --line: #d8d8d8;
      --pad: clamp(20px, 3vw, 44px);
      --block-color: #cbc3e3;
    }

    * { box-sizing: border-box; }

    [hidden] { display: none !important; }

    html,
    body {
      width: 100%;
      height: 100%;
      overflow: hidden;
    }

    body {
      margin: 0;
      background: var(--paper);
      color: var(--ink);
      font-family: Arial, Helvetica, sans-serif;
      -webkit-font-smoothing: antialiased;
      text-rendering: geometricPrecision;
    }

    a { color: inherit; }

    .sr-only {
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      white-space: nowrap;
      border: 0;
    }

    .site {
      width: 100%;
      height: 100vh;
      height: 100dvh;
      display: grid;
      grid-template-rows: auto minmax(0, 1fr) auto;
      overflow: hidden;
    }

    .header,
    .footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 24px;
      padding: 22px var(--pad);
      font-size: 11px;
      line-height: 1;
      text-transform: uppercase;
      letter-spacing: .13em;
    }

    .header {
      border-bottom: 1px solid var(--line);
    }

    .brand {
      display: inline-flex;
      align-items: center;
      text-decoration: none;
    }

    .brand img {
      display: block;
      width: 79px;
      height: auto;
    }

    .header-meta,
    .footer-meta {
      display: flex;
      align-items: center;
      gap: clamp(18px, 3vw, 42px);
      white-space: nowrap;
    }

    .status {
      display: inline-flex;
      align-items: center;
      gap: 8px;
    }

    .status::before {
      content: "";
      width: 7px;
      height: 7px;
      border-radius: 50%;
      background: var(--ink);
      animation: pulse 2.4s ease-in-out infinite;
    }

    @keyframes pulse {
      0%, 100% { opacity: 1; transform: scale(1); }
      50% { opacity: .25; transform: scale(.72); }
    }

    .social {
      text-decoration: none;
      border-bottom: 1px solid transparent;
      transition: border-color .2s ease;
    }

    .social:hover,
    .social:focus-visible { border-color: currentColor; }

    .hero {
      min-height: 0;
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      overflow: hidden;
    }

    .hero-copy {
      min-width: 0;
      display: flex;
      flex-direction: column;
      padding: clamp(34px, 6vw, 92px) var(--pad) clamp(34px, 5vw, 72px);
      gap: clamp(24px, 4vh, 64px);
      overflow: hidden;
    }

    .model-shell {
      min-width: 0;
      min-height: 0;
      flex: 1 1 auto;
      display: flex;
    }

    .model-stage {
      position: relative;
      width: 100vw;
      margin-left: calc(var(--pad) * -1);
      margin-right: calc(var(--pad) * -1);
      height: 100%;
      min-height: 220px;
      cursor: grab;
      overflow: hidden;
      border-bottom: 1px solid var(--line);
      background:
        linear-gradient(90deg, rgba(11, 11, 11, .05) 1px, transparent 1px) 0 0 / 64px 64px,
        linear-gradient(rgba(11, 11, 11, .05) 1px, transparent 1px) 0 0 / 64px 64px,
        var(--paper);
      touch-action: none;
    }

    .model-stage:active { cursor: grabbing; }

    .model-stage canvas {
      display: block;
      width: 100%;
      height: 100%;
    }

    .model-status {
      position: absolute;
      left: 0;
      bottom: 14px;
      color: var(--soft);
      font-size: 10px;
      line-height: 1;
      letter-spacing: .12em;
      text-transform: uppercase;
      pointer-events: none;
    }

    .hero-bottom {
      min-width: 0;
      display: grid;
      grid-template-columns: minmax(220px, 460px) 1fr;
      align-items: end;
      gap: clamp(32px, 6vw, 96px);
      flex: 0 0 auto;
    }

    .intro {
      margin: 0;
      width: 100%;
      max-width: 430px;
      font-size: clamp(15px, 1.3vw, 19px);
      line-height: 1.45;
      letter-spacing: -.015em;
      overflow-wrap: break-word;
    }

    .index {
      justify-self: end;
      color: var(--soft);
      font-size: 10px;
      line-height: 1.5;
      letter-spacing: .12em;
      text-align: right;
      text-transform: uppercase;
    }

    .signup-panel {
      position: relative;
      min-width: 0;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      padding: clamp(34px, 5vw, 72px) var(--pad);
      background:
        linear-gradient(var(--line), var(--line)) 50% 0 / 1px 100% no-repeat;
    }

    .object-stage {
      position: relative;
      display: grid;
      place-items: center;
      min-height: 270px;
      flex: 1;
      overflow: hidden;
      padding: 10px 0;
    }

    .product-image {
      position: relative;
      z-index: 1;
      width: min(98%, 520px);
      height: auto;
      display: block;
      filter: drop-shadow(0 20px 34px rgba(0, 0, 0, .14));
      animation: float 6s ease-in-out infinite;
    }

    @keyframes float {
      0%, 100% { transform: translateY(0); }
      50% { transform: translateY(-10px); }
    }

    .orbit {
      position: absolute;
      width: min(95%, 380px);
      aspect-ratio: 1;
      border: 1px solid var(--line);
      border-radius: 50%;
      animation: spin 28s linear infinite;
    }

    .orbit::before {
      content: "";
      position: absolute;
      top: -4px;
      left: 50%;
      width: 7px;
      height: 7px;
      border-radius: 50%;
      background: var(--ink);
    }

    @keyframes spin { to { transform: rotate(360deg); } }

    .signup {
      position: relative;
      z-index: 1;
      padding-top: 28px;
      background: var(--paper);
    }

    .signup h2 {
      margin: 0 0 10px;
      font-size: clamp(22px, 2.1vw, 32px);
      line-height: 1;
      letter-spacing: -.04em;
      text-transform: uppercase;
    }

    .signup p {
      margin: 0 0 22px;
      color: var(--soft);
      font-size: 13px;
      line-height: 1.45;
    }

    .form-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      border-bottom: 1px solid var(--ink);
    }

    input,
    button {
      appearance: none;
      border: 0;
      border-radius: 0;
      font: inherit;
    }

    input {
      min-width: 0;
      padding: 14px 0;
      color: var(--ink);
      background: transparent;
      font-size: 14px;
      outline: 0;
    }

    input::placeholder { color: #999; }

    button {
      padding: 14px 0 14px 20px;
      color: var(--ink);
      background: transparent;
      cursor: pointer;
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: .11em;
    }

    button:hover .arrow { transform: translateX(4px); }
    .arrow { display: inline-block; transition: transform .2s ease; }

    .message {
      min-height: 18px;
      margin-top: 12px;
      color: var(--soft);
      font-size: 11px;
      line-height: 1.4;
    }

    .footer {
      border-top: 1px solid var(--line);
    }

    .wordmark {
      display: block;
      width: 60px;
      height: auto;
    }

    .footer-meta {
      margin-left: auto;
      justify-content: flex-end;
      text-align: right;
    }

    .footer-edition {
      line-height: 1.5;
      text-align: right;
    }

    @media (max-width: 820px) {
      .header-meta .location { display: none; }

      .hero {
        grid-template-columns: 1fr;
      }

      .hero-copy {
        border-right: 0;
        border-bottom: 1px solid var(--line);
      }

      .signup-panel {
        min-height: 620px;
      }

      .hero-bottom {
        grid-template-columns: 1fr;
        width: 100%;
      }

      .index {
        justify-self: start;
        text-align: left;
      }

    }

    @media (max-width: 520px) {
      .header,
      .footer { padding-block: 18px; }
      .brand img { width: 68px; }
      .header-meta { gap: 16px; }
      .header-meta .edition { display: none; }
      .hero-copy { padding-top: 42px; }
      .hero-bottom,
      .intro { max-width: calc(100vw - (var(--pad) * 2)); }
      .model-stage { min-height: 180px; }
      .signup-panel { min-height: 560px; }
      .object-stage { min-height: 260px; }
      .footer { font-size: 9px; }
    }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
      }
    }
