  :root{
    --ink:#080b13;
    --bone:#f0e9dc;
    --taupe:#caaa98;
    --terra:#d1734a;
    --terra-bright:#f0925e;
    --ember:#ffd9a0;
    --muted:#7e879c;
    --sys:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html,body{height:100%;overflow:hidden;background:var(--ink)}
  body{font-family:var(--sys);color:var(--bone);-webkit-font-smoothing:antialiased}
  #scene{position:fixed;inset:0;touch-action:none;cursor:grab}
  #scene.dragging{cursor:grabbing}

  .vignette{position:fixed;inset:0;pointer-events:none;
    background:radial-gradient(ellipse at 50% 42%, transparent 46%, rgba(4,6,11,.55) 100%)}

  .ui{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity 1.2s ease .3s}
  .ui.on{opacity:1}

  .brand{position:absolute;top:max(22px, env(safe-area-inset-top));left:26px}
  .brand h1{font-weight:600;font-size:32px;letter-spacing:-.02em;color:var(--bone);line-height:1}

  /* centered people counter */
  .counter{position:absolute;top:max(26px, env(safe-area-inset-top));left:0;right:0;
    text-align:center;font-size:12px;letter-spacing:.14em;color:var(--muted)}
  .counter b{font-weight:600;font-size:17px;letter-spacing:.02em;color:var(--ember);
    font-variant-numeric:tabular-nums;vertical-align:-1px}
  .counter b.art{color:#ffffff}

  .caption{position:absolute;left:0;right:0;bottom:calc(max(24px, env(safe-area-inset-bottom)) + 74px);
    text-align:center;font-size:19px;font-weight:500;letter-spacing:-.01em;color:var(--bone);
    opacity:0;transition:opacity .45s ease;pointer-events:none;padding:0 20px}
  .caption.show{opacity:.92}
  .hint{position:absolute;left:0;right:0;bottom:calc(max(24px, env(safe-area-inset-bottom)) + 44px);
    text-align:center;font-size:11px;letter-spacing:.14em;color:var(--muted);
    transition:opacity .6s ease;padding:0 20px}
  .hint.hide{opacity:0}

  .controls{position:absolute;right:22px;bottom:max(24px, env(safe-area-inset-bottom));
    display:flex;flex-direction:column;gap:10px;align-items:flex-end}
  .controls button{
    pointer-events:auto;font-family:var(--sys);font-size:12px;letter-spacing:.06em;
    text-transform:lowercase;color:var(--bone);background:rgba(10,14,24,.55);
    border:1px solid rgba(240,233,220,.22);border-radius:3px;
    padding:13px 16px;min-height:44px;min-width:44px;cursor:pointer;
    backdrop-filter:blur(6px);transition:border-color .25s,color .25s,background .25s}
  .controls button:hover{border-color:rgba(240,233,220,.55)}
  .controls button:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
  .controls button.cta{border-color:rgba(209,115,74,.6);color:var(--terra-bright)}
  .controls button.cta:hover{border-color:var(--terra-bright);background:rgba(209,115,74,.12)}

  /* beta modal */
  .modal{position:fixed;inset:0;display:grid;place-items:center;z-index:20;
    background:rgba(4,6,11,.62);backdrop-filter:blur(8px)}
  .modal[hidden]{display:none}
  .modal-card{width:min(400px, calc(100vw - 40px));background:#0c1220;
    border:1px solid rgba(240,233,220,.18);border-radius:6px;padding:28px 26px;position:relative}
  .modal-card h2{font-size:20px;font-weight:600;letter-spacing:-.01em;margin-bottom:8px}
  .modal-card p{font-size:13px;line-height:1.55;color:var(--muted);margin-bottom:18px}
  .modal-card input{
    width:100%;font-family:var(--sys);font-size:15px;color:var(--bone);
    background:rgba(240,233,220,.05);border:1px solid rgba(240,233,220,.25);border-radius:4px;
    padding:13px 14px;margin-bottom:12px;outline:none;transition:border-color .2s}
  .modal-card input:focus{border-color:var(--ember)}
  .modal-card input::placeholder{color:#5b6478}
  .modal-card .submit{
    width:100%;font-family:var(--sys);font-size:13px;font-weight:600;letter-spacing:.06em;
    text-transform:lowercase;color:#0c1220;background:var(--terra-bright);
    border:none;border-radius:4px;padding:14px;min-height:44px;cursor:pointer;transition:background .2s}
  .modal-card .submit:hover{background:var(--ember)}
  .modal-card .submit:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
  .modal-close{position:absolute;top:10px;right:10px;width:36px;height:36px;
    background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer;border-radius:4px}
  .modal-close:hover{color:var(--bone)}
  .modal-msg{font-size:12.5px;margin-top:12px;min-height:16px;color:var(--taupe)}
  .modal-msg.ok{color:var(--ember)}
  .modal-msg.err{color:#e08585}
  /* honeypot — invisible to humans, filled only by naive bots */
  .trap{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}

  .fallback{position:fixed;inset:0;display:none;place-items:center;text-align:center;
    padding:40px;font-size:13px;line-height:2;color:var(--taupe)}

  @media (max-width:640px){
    .brand h1{font-size:26px}
    .caption{font-size:16px}
  }
  @media (prefers-reduced-motion: reduce){
    .ui{transition:none}
    .caption{transition:opacity .1s linear}
  }
