/* kasrewind — site chrome. The card itself is server-built SVG; this file
   only dresses the page around it and animates the injected SVG's groups.
   No build step, no external fetches: JetBrains Mono comes from the same
   /assets/fonts the PNG renderer reads (fetch-fonts.sh), Inter resolves
   locally or falls back to system-ui. */

@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-Regular.ttf') format('truetype');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-Bold.ttf') format('truetype');
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-ExtraBold.ttf') format('truetype');
  font-weight: 800; font-style: normal; font-display: swap;
}

:root{
  --bg:#0d0a14; --panel:#151021; --panel2:#1b1530; --line:#292140;
  --text:#f1edf8; --muted:#a79dbd; --faint:#6f6488;
  --rw1:#ffc24b; --rw2:#ff7a5c; --ok:#7ef29b; --err:#ff7a8a;
  --era-cpu:#ffcf6d; --era-gpu:#7ef29b; --era-asic:#6cc9ff;
  --era-cre:#c78bff; --era-toc:#49eacb;
  --era:var(--rw1);
  --mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
  --sans:'Inter',system-ui,sans-serif;
  --radius:16px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{color-scheme:dark}
body{background:var(--bg);color:var(--text);font-family:var(--sans);
  font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;min-height:100vh}
.aura{position:fixed;inset:0;z-index:-1;background:
  radial-gradient(70% 55% at 78% -5%,rgba(255,194,75,.06),transparent 60%),
  radial-gradient(60% 45% at 12% 0%,rgba(255,122,92,.04),transparent 55%)}
a{color:inherit;text-decoration:none}
.dim{color:var(--faint)}
.mono{font-family:var(--mono)}
.wrap{max-width:1040px;margin:0 auto;padding:0 24px}
button{font:inherit;cursor:pointer}
[hidden]{display:none !important}

/* gradient text — the brand pair, chrome only */
.grad{background:linear-gradient(100deg,var(--rw1),var(--rw2));
  -webkit-background-clip:text;background-clip:text;color:transparent}

/* ---- nav ---- */
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 24px;max-width:1040px;margin:0 auto;flex-wrap:wrap}
.brand{display:flex;align-items:baseline;gap:10px;font-weight:800;
  font-size:20px;letter-spacing:-.02em;font-family:var(--mono)}
.brand .maker{font-family:var(--sans);font-weight:400;font-size:12.5px;
  color:var(--faint);letter-spacing:0}
.nav-links{display:flex;gap:8px}
.pill{display:inline-block;padding:5px 12px;border:1px solid var(--line);
  border-radius:999px;font-size:13px;color:var(--muted);background:var(--panel)}
.pill:hover{color:var(--text);border-color:var(--faint)}

/* ---- hero ---- */
.hero{padding:56px 0 28px;text-align:center}
.hero h1{font-size:clamp(28px,4.6vw,44px);line-height:1.15;
  letter-spacing:-.02em;font-weight:800;max-width:760px;margin:0 auto}
.hero .lede{margin:16px auto 0;max-width:640px;color:var(--muted);font-size:16.5px}

/* ---- input row ---- */
.inrow{display:flex;gap:10px;justify-content:center;margin-top:28px}
.inrow input{flex:1;max-width:520px;padding:13px 16px;border-radius:12px;
  border:1px solid var(--line);background:var(--panel);color:var(--text);
  font-family:var(--mono);font-size:14.5px;outline:none}
.inrow input:focus{border-color:var(--rw1)}
.inrow input::placeholder{color:var(--faint)}
.btn{border-radius:12px;padding:13px 20px;font-weight:700;border:none;
  white-space:nowrap}
.btn-primary{background:linear-gradient(100deg,var(--rw1),var(--rw2));
  color:#1c1206}
.btn-primary:hover{filter:brightness(1.07)}
.btn-secondary{background:var(--panel);color:var(--text);
  border:1px solid var(--line)}
.btn-secondary:hover{border-color:var(--faint)}
.reassure{margin-top:12px;font-size:13px;color:var(--faint)}
.demo-link{display:inline-block;margin-top:10px;font-size:14px;
  color:var(--muted);background:none;border:none;text-decoration:underline;
  text-underline-offset:3px;text-decoration-color:var(--line)}
.demo-link:hover{color:var(--text)}
.in-err{margin-top:12px;font-size:14px;color:var(--err);max-width:560px;
  margin-left:auto;margin-right:auto}

/* ---- card stage ---- */
.stage{padding:36px 0 8px}
.frame{position:relative;max-width:960px;margin:0 auto;
  aspect-ratio:1200/630;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;background:var(--panel);
  box-shadow:0 0 80px color-mix(in srgb,var(--era) 12%,transparent)}
.frame svg{display:block;width:100%;height:100%}

/* skeleton while the DAG answers */
.skel{display:flex;flex-direction:column;justify-content:center;
  align-items:flex-start;gap:22px;padding:8%;height:100%}
.skel .bar{height:22px;border-radius:8px;width:60%;
  background:linear-gradient(100deg,var(--panel2) 30%,#241c3c 50%,var(--panel2) 70%);
  background-size:220% 100%;animation:shimmer 1.4s linear infinite}
.skel .bar:nth-child(2){width:82%;height:44px}
.skel .bar:nth-child(3){width:48%}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-20% 0}}
.loadline{margin:14px auto 0;text-align:center;font-family:var(--mono);
  font-size:13.5px;color:var(--faint);min-height:1.4em}

/* reveal: the injected SVG's own groups rise in, staggered */
.card-live #hdr,.card-live #idn,.card-live #hero,
.card-live #stats,.card-live #ftr{
  animation:rise .6s cubic-bezier(.2,.7,.2,1) both}
.card-live #hdr{animation-delay:.05s}
.card-live #idn{animation-delay:.15s}
.card-live #hero{animation-delay:.3s;
  animation-name:rise,thump;animation-duration:.6s,.6s;
  animation-delay:.3s,.3s;
  animation-timing-function:cubic-bezier(.2,.7,.2,1)}
.card-live #stats{animation-delay:.45s}
.card-live #ftr{animation-delay:.55s}
@keyframes rise{from{opacity:0;transform:translateY(12px)}}
@keyframes thump{0%{transform:scale(1.03)}100%{transform:scale(1)}}
/* the rewind beat: the timeline marker travels backwards from "now"
   to the wallet's birth position — JS sets --dx from data-mx */
.card-live #tl .mk{animation:rewind 1.1s cubic-bezier(.16,.84,.28,1) .5s both}
@keyframes rewind{from{transform:translateX(var(--dx,0px))}}
/* deep links and skip-clicks land on the finished card */
.card-instant *{animation:none !important}
@media (prefers-reduced-motion: reduce){
  *{animation:none !important;transition:none !important}
}

/* ---- action row ---- */
.actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;
  margin:20px auto 0;max-width:960px}
.actions .btn{font-size:14.5px;padding:11px 18px}

/* ---- below-card extras (page-only; never on the card) ---- */
.extras{max-width:960px;margin:22px auto 0;display:flex;flex-direction:column;
  gap:10px;font-size:14.5px;color:var(--muted)}
.extras a{color:var(--text);text-decoration:underline;
  text-underline-offset:3px;text-decoration-color:var(--line)}
.extras .stat-line strong{color:var(--text);font-family:var(--mono);font-weight:700}
.reveal-bal{align-self:flex-start;background:var(--panel);color:var(--muted);
  border:1px solid var(--line);border-radius:10px;padding:8px 14px;font-size:13.5px}
.reveal-bal:hover{color:var(--text);border-color:var(--faint)}
.stale-note,.cover-note{font-size:13.5px;color:var(--faint)}

/* ---- "Now you" (deep-link mode) ---- */
.nowyou{max-width:960px;margin:34px auto 0;text-align:center}
.nowyou h2{font-size:22px;font-weight:800;letter-spacing:-.01em}

/* ---- honesty strip ---- */
.honesty{max-width:960px;margin:40px auto 0;padding:16px 20px;
  background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--rw1);border-radius:12px;
  font-size:14.5px;color:var(--muted)}
.honesty a{color:var(--text);text-decoration:underline;
  text-underline-offset:3px;text-decoration-color:var(--line)}

/* ---- error / empty states (distinct: outage is red, no-history is not) ---- */
.banner{max-width:960px;margin:24px auto 0;padding:18px 20px;border-radius:12px;
  font-size:15px}
.banner-err{border:1px solid color-mix(in srgb,var(--err) 40%,transparent);
  background:color-mix(in srgb,var(--err) 6%,var(--panel));color:var(--text)}
.banner-err .btn{margin-top:12px}
.banner-empty{border:1px solid var(--line);background:var(--panel);
  color:var(--muted);text-align:center;padding:34px 24px}
.banner-empty .glyph{font-size:34px;color:var(--faint);opacity:.6;
  font-family:var(--mono);display:block;margin-bottom:10px}

/* ---- footer ---- */
footer{margin-top:64px;padding:28px 24px 40px;border-top:1px solid var(--line)}
.legend{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;
  font-size:13px;color:var(--muted)}
.legend .era-dot{display:inline-block;width:9px;height:9px;border-radius:50%;
  margin-right:6px;vertical-align:baseline}
.legend .arch{color:var(--faint)}
.foot-links{margin-top:18px;text-align:center;font-size:13.5px;color:var(--faint)}
.foot-links a{color:var(--muted);text-decoration:underline;
  text-underline-offset:3px;text-decoration-color:var(--line)}
.foot-links a:hover{color:var(--text)}

/* ---- /how page prose ---- */
.doc{max-width:760px;margin:0 auto;padding:32px 24px 80px}
.doc h1{font-size:32px;letter-spacing:-.02em;margin-bottom:6px}
.doc .sub{color:var(--muted);margin-bottom:36px}
.doc h2{font-size:20px;margin:36px 0 10px;letter-spacing:-.01em}
.doc p{color:var(--muted);margin:10px 0}
.doc strong{color:var(--text)}
.doc code{font-family:var(--mono);font-size:.92em;background:var(--panel);
  border:1px solid var(--line);border-radius:6px;padding:1.5px 6px;color:var(--text)}
.doc table{width:100%;border-collapse:collapse;margin:14px 0;font-size:14px}
.doc th,.doc td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}
.doc th{color:var(--faint);font-weight:600}
.doc td{color:var(--muted)}
.doc td:first-child{color:var(--text);font-family:var(--mono);white-space:nowrap}
.doc ul{margin:10px 0 10px 22px;color:var(--muted)}
.doc li{margin:6px 0}

/* ---- mobile ---- */
@media (max-width:640px){
  .hero{padding:36px 0 20px}
  .inrow{flex-direction:column;align-items:stretch}
  .inrow input{max-width:none}
  .frame{border-radius:12px}
  .actions{flex-direction:column;align-items:stretch}
  .nav{justify-content:center;text-align:center}
}
