@font-face{font-family:Archivo;src:url('/assets/fonts/archivo.woff2') format('woff2');font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap}

:root{
  --night:#0f0e0d;      /* the page: the dark around the door */
  --night-2:#181715;    /* one step up: fields, the ledger */
  --line:#2c2a27;
  --bone:#efe9df;       /* text */
  --mute:#9b948a;
  --orange:#ff6600;     /* monero orange: the door, the one action */
  --void:#000;          /* inside the door */
  --font:Archivo,'Helvetica Neue',Arial,sans-serif;
  /* The hero photo and where its door leaf sits, as fractions of the visible frame (see README "Swapping the door").
     Visible frame = the door + its casing, cut out of the 1024px photo: x 232..790, y 0..1016. */
  --frame-ratio:558/1016;
  --wall-w:183.51%;  --wall-x:-41.58%;
  --leaf-x:7.706%;   --leaf-y:2.461%;  --leaf-w:84.946%; --leaf-h:96.26%;
  --leaf-img-w:216.03%; --leaf-img-x:-58.017%; --leaf-img-y:-2.556%;
  --wall-clip:inset(0 22.85% 0.78% 22.66%);
  --bar-x:-4%; --bar-y:9.5%; --bar-w:108%; --bar-h:11.5%;
  color-scheme:dark;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--night);color:var(--bone);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
#page{overflow:clip}
h1,h2,p,figure,dl,dd,ol{margin:0}
a{color:inherit}
button,input{font:inherit;color:inherit}
button{cursor:pointer;border-radius:0}
button:disabled,a[aria-disabled=true]{cursor:default}
img{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--orange);outline-offset:3px}
::selection{background:var(--orange);color:var(--void)}
.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}
.skip-link{position:fixed;left:8px;top:-80px;z-index:40;padding:12px 14px;background:var(--bone);color:var(--void)}
.skip-link:focus-visible{top:8px}

/* ---------- top bar: brand left, X / CA / Buy right ---------- */
.top{position:relative;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px clamp(16px,4vw,56px)}
.brand{display:flex;align-items:center;gap:10px;min-height:44px;text-decoration:none;font-weight:600;font-stretch:88%;font-size:19px;letter-spacing:-.01em}
.brand img{width:28px;height:28px;border-radius:50%}
.ticker{color:var(--mute);font-weight:400;font-size:14px;font-stretch:100%}
.buy-bar{display:flex;align-items:center;gap:10px}
.x-link{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;text-decoration:none;font-size:14px;color:var(--bone)}
.x-link[aria-disabled=true]{color:var(--mute)}
.x-link[href]:hover{text-decoration:underline;text-underline-offset:3px}
.ca-chip{display:flex;align-items:center;gap:10px;height:44px;min-width:0;width:300px;padding:0 12px;background:var(--night-2);border:1px solid var(--line);font-size:13px;text-align:left}
.ca-chip:disabled{color:var(--mute)}
.ca-chip:not(:disabled):hover{border-color:var(--bone)}
.ca-label{font-weight:600;color:var(--mute);font-size:11px;letter-spacing:.04em}
#ca-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-chip svg{flex:none;opacity:.7}
.buy{display:flex;align-items:center;justify-content:center;height:44px;padding:0 20px;background:var(--orange);color:var(--void);font-weight:650;font-size:15px;text-decoration:none;white-space:nowrap}
.buy[aria-disabled=true]{background:transparent;color:var(--orange);box-shadow:inset 0 0 0 1px rgba(255,102,0,.55)}
.buy[href]:hover{background:var(--bone)}
.copy-status{position:absolute;right:clamp(16px,4vw,56px);bottom:-6px;font-size:12px;color:var(--mute);min-height:1em}

/* ---------- hero: the script on the left, the door standing in the dark on the right ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:clamp(24px,5vw,80px);min-height:min(calc(100svh - 80px),860px);padding:8px clamp(16px,6vw,120px) 48px}
.hero-copy{display:flex;flex-direction:column;gap:36px;max-width:620px}
.script{min-height:calc(3 * 1.04em);font-size:clamp(34px,5vw,74px);line-height:1.04;font-weight:560;font-stretch:84%;letter-spacing:-.025em}
.line{transition:opacity .35s ease}
.line.them{padding-left:1.2em;color:var(--orange)}
.script.is-playing .line{opacity:0}
.script.is-playing .line.is-said{opacity:1}
.actions{display:flex;gap:12px}
.knock,.enter{display:inline-flex;align-items:center;justify-content:center;min-width:132px;height:52px;padding:0 24px;font-size:17px;font-weight:600;text-decoration:none;border:1px solid var(--bone)}
.knock{background:transparent}
.knock:hover{background:var(--bone);color:var(--void)}
.enter{background:var(--orange);color:var(--void);border-color:var(--orange)}
.enter:hover:not(:disabled){background:var(--bone);border-color:var(--bone)}
.enter:disabled{opacity:.45}
.walked{font-size:15px;color:var(--mute)}
.walked b,.gone-count b{color:var(--bone);font-weight:600}

.door-figure{display:flex;flex-direction:column;align-items:center;gap:0;justify-self:center}
.door{position:relative;height:min(calc(100svh - 190px),700px);min-height:380px;aspect-ratio:var(--frame-ratio);perspective:1600px;transform-origin:44% 52%;transition:transform 1.15s cubic-bezier(.7,0,.84,0)}
.door-wall{position:absolute;top:0;left:var(--wall-x);width:var(--wall-w);max-width:none;height:auto;clip-path:var(--wall-clip)}
/* the redaction: over the photo, not on the door, so it stays put while the door swings */
.bar{position:absolute;left:var(--bar-x);top:var(--bar-y);width:var(--bar-w);height:var(--bar-h);background:#050505;pointer-events:none}
.gap{position:absolute;left:var(--leaf-x);top:var(--leaf-y);width:var(--leaf-w);height:var(--leaf-h);background:var(--void)}
.leaf{position:absolute;left:var(--leaf-x);top:var(--leaf-y);width:var(--leaf-w);height:var(--leaf-h);overflow:hidden;transform-origin:100% 50%;transition:transform .7s cubic-bezier(.3,.7,.2,1)}
.leaf img{position:absolute;left:var(--leaf-img-x);top:var(--leaf-img-y);width:var(--leaf-img-w);max-width:none;height:auto}
.shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.55),rgba(0,0,0,.1));opacity:0;transition:opacity .7s}
.door-hit{position:absolute;inset:0;background:transparent;border:0;cursor:pointer}
.door-figure figcaption{width:150%;padding-top:12px;border-top:1px solid;border-image:linear-gradient(90deg,transparent,#3a3733 22%,#3a3733 78%,transparent) 1;text-align:center;font-size:13px;color:var(--mute)}
@media (hover:hover){.door:hover .leaf{transform:rotateY(-11deg)}.door:hover .shade{opacity:.35}}
.door.is-knocked{animation:thud .26s linear}
@keyframes thud{0%,100%{translate:0}20%{translate:2px 0}45%{translate:-1px 0}70%{translate:1px 0}}
.door.is-open .leaf{transform:rotateY(-80deg)}
.door.is-open .shade{opacity:1}
body.is-entering .door{transform:scale(11)}
.door.no-anim,.door.no-anim .leaf,.door.no-anim .shade{transition:none}

/* ---------- the void ---------- */
.void{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;background:var(--void);opacity:0;transition:opacity .9s ease .35s;cursor:none;padding:24px;text-align:center}
.void[hidden]{display:none}
.void.is-shown{opacity:1}
.void.is-leaving{opacity:0;transition:opacity .6s ease}
.void .gone-text{font-size:clamp(34px,6vw,84px);font-weight:560;font-stretch:84%;letter-spacing:-.025em;opacity:0;transition:opacity 1s ease}
.void .gone-count{font-size:15px;color:var(--mute);opacity:0;transition:opacity .8s ease}
.void .come-back{background:none;border:0;padding:12px 8px;min-height:44px;font-size:15px;color:var(--bone);text-decoration:underline;text-underline-offset:4px;opacity:0;visibility:hidden;transition:opacity .8s ease}
.void.say .gone-text{opacity:1}
.void.done{cursor:auto}
.void.done .gone-count{opacity:1}
.void.done .come-back{opacity:1;visibility:visible}
.void .come-back:hover{color:var(--orange)}

/* ---------- rewards ---------- */
.rewards,.maker,.how{padding:72px clamp(16px,6vw,120px);border-top:1px solid var(--line)}
h2{font-size:clamp(26px,3vw,40px);line-height:1.08;font-weight:560;font-stretch:86%;letter-spacing:-.02em}
.rewards{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px 64px;align-items:start}
.rewards-head{grid-row:span 2}
.rewards-note{margin-top:16px;max-width:420px;color:var(--mute)}
.ledger{padding:28px;background:var(--night-2)}
.paid-total{font-size:clamp(36px,4.4vw,60px);line-height:1;font-weight:600;font-stretch:86%;letter-spacing:-.02em;overflow-wrap:anywhere}
.counter-status{margin-top:12px;font-size:14px;color:var(--mute)}
.ledger-rows{margin-top:24px;border-top:1px solid var(--line)}
.ledger-rows div{display:flex;justify-content:space-between;align-items:center;min-height:46px;border-bottom:1px solid var(--line);font-size:15px}
.ledger-rows dt{color:var(--mute)}
#last-payout{text-decoration:none}
#last-payout[href]{color:var(--orange);text-decoration:underline;text-underline-offset:3px}
#last-payout[aria-disabled=true]{color:var(--mute)}
.lookup label{display:block;font-size:15px;margin-bottom:10px}
.field{display:flex;height:50px;border:1px solid var(--line);background:var(--night-2)}
.field:focus-within{border-color:var(--bone)}
.field input{flex:1;min-width:0;border:0;background:transparent;padding:0 14px;font-size:16px}
.field input:focus{outline:0}
.field input::placeholder{color:var(--mute);opacity:1}
.field button{flex:none;border:0;border-left:1px solid var(--line);background:var(--bone);color:var(--void);padding:0 18px;font-weight:600;min-width:96px}
.field button:hover:not(:disabled){background:var(--orange)}
.field button:disabled{opacity:.55}
#wallet-result{margin-top:10px;font-size:14px;color:var(--mute);min-height:2.9em;overflow-wrap:anywhere}
#wallet-result[data-state=error]{color:#ff8a4a}
#wallet-result[data-state=success]{color:var(--bone)}

/* ---------- maker ---------- */
.maker-head p{margin-top:12px;color:var(--mute)}
.maker-grid{display:grid;grid-template-columns:minmax(0,540px) minmax(0,1fr);gap:48px;margin-top:36px;align-items:start}
.maker-preview canvas{display:block;width:100%;height:auto;aspect-ratio:1;background:var(--void)}
.maker-controls{display:flex;flex-direction:column;gap:18px;max-width:520px}
.upload-row{display:flex;align-items:center;gap:16px}
.upload{position:relative;display:inline-flex;align-items:center;height:48px;padding:0 18px;border:1px dashed var(--mute);cursor:pointer}
.upload:hover,.upload:focus-within{border-color:var(--bone);border-style:solid}
.upload input{position:absolute;inset:0;opacity:0;cursor:pointer}
.text-button{background:none;border:0;padding:10px 4px;min-height:44px;color:var(--mute);text-decoration:underline;text-underline-offset:3px}
.text-button:hover:not(:disabled){color:var(--bone)}
.text-button:disabled{opacity:.4}
.status{font-size:14px;color:var(--mute);min-height:1.45em}
.status[data-state=error]{color:#ff8a4a}
.range{display:grid;grid-template-columns:auto 1fr 3.2em;align-items:center;gap:16px}
.range input{accent-color:var(--orange);width:100%;height:44px}
.range output{text-align:right;color:var(--mute)}
.caption-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
#meme-caption{font-size:20px;font-stretch:88%}
.export{display:flex;gap:12px;flex-wrap:wrap}
.fine{font-size:13px;color:var(--mute)}
.fine a{text-underline-offset:3px}

/* ---------- how ---------- */
.how{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 64px}
.how ol{list-style:none;padding:0;counter-reset:s}
.how li{counter-increment:s;display:flex;gap:20px;padding:16px 0;border-bottom:1px solid var(--line);font-size:19px}
.how li::before{content:counter(s);color:var(--orange);font-weight:600;min-width:1ch}
.how li:first-child{padding-top:0}
.how .fine{grid-column:2}

.foot{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:28px clamp(16px,6vw,120px) calc(28px + env(safe-area-inset-bottom));border-top:1px solid var(--line);font-size:14px;color:var(--mute)}
.foot-top{min-height:44px;display:flex;align-items:center;text-underline-offset:3px}
.noscript{position:fixed;bottom:0;left:0;right:0;margin:0;padding:12px 16px;background:var(--night-2);font-size:14px}

/* ---------- tablet ---------- */
@media (max-width:1100px){
  .ca-chip{width:220px}
  .hero{grid-template-columns:minmax(0,1fr) minmax(0,.8fr)}
}

/* ---------- phone ---------- */
@media (max-width:760px){
  .top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;padding:8px 16px 4px}
  .brand{font-size:17px}
  .buy-bar{display:contents}
  .x-link{grid-column:2;grid-row:1;padding:0 2px 0 12px;font-size:13px}
  .ca-chip{grid-column:1;grid-row:2;width:auto}
  .buy{grid-column:2;grid-row:2;padding:0 16px}
  .copy-status{position:static;grid-column:1 / -1;margin:0;min-height:0}
  .copy-status:empty{display:none}
  .hero{grid-template-columns:minmax(0,1fr);min-height:0;gap:18px;padding:10px 16px 40px}
  .hero-copy{display:contents}
  .script{order:1;font-size:clamp(28px,8.4vw,36px)}
  .door-figure{order:2}
  .actions{order:3}
  .walked{order:4;margin-top:-4px;font-size:14px}
  .door{height:min(44svh,360px);min-height:300px}
  .door-figure figcaption{margin-top:8px;font-size:12px}
  .actions .knock,.actions .enter{flex:1;min-width:0}
  .rewards,.maker,.how{padding:48px 16px}
  .rewards,.how{grid-template-columns:minmax(0,1fr)}
  .rewards-head{grid-row:auto}
  .how .fine{grid-column:auto}
  .ledger{padding:20px}
  .maker-grid{grid-template-columns:minmax(0,1fr);gap:24px;margin-top:24px}
  .foot{flex-direction:column;align-items:flex-start;gap:4px;padding-inline:16px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .leaf,.shade,.door,.line,.void,.void *{transition-duration:.01ms!important;transition-delay:0s!important;animation:none!important}
  .void{transition:opacity .35s ease!important}
  .door:hover .leaf{transform:none}
  body.is-entering .door{transform:none}
  .door.is-open .leaf{transform:none}
}

.lost{min-height:100svh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:16px;padding:24px clamp(16px,8vw,120px)}
.lost h1{font-size:clamp(40px,7vw,96px);font-weight:560;font-stretch:84%;letter-spacing:-.025em;line-height:1}
.lost p{color:var(--mute);margin-bottom:12px}
