/* Purse launch page. Loads after styles.css and reuses its tokens and classes.
   JetBrains Mono self-hosted (variable woff2, same files serve 400 and 700). */

/* latin */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* latin-ext */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
/* latin, bold */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* latin-ext, bold */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  --mono:'JetBrains Mono','SFMono-Regular',Consolas,'Liberation Mono',monospace;
  --surface:#FFFFFF;
  --line:#E4E1D8;
  /* muted semantics on cream */
  --ok:#1F7A46;  --ok-bg:#EAF2EC;  --ok-line:#C2D9CA;
  --no:#B0281B;  --no-bg:#F7E9E6;  --no-line:#E3C4BD;
  --warn:#8A6116;--warn-bg:#F5EEDC;--warn-line:#E0D2A8;
  /* semantics on the dark terminal */
  --t-ok:#7FBF9A; --t-no:#E08573; --t-warn:#D9B36A; --t-proof:#8FA0FF; --t-final:#8FD4AD;
}

/* section heads */
.p-head{margin-bottom:44px}
.p-head .body-lg{margin-top:16px}

/* hero */
.p-hero{padding:84px 0 72px}
.p-h1{font-size:clamp(42px,6.4vw,88px);line-height:.96;max-width:19ch;margin-top:22px}
.p-lede{margin-top:28px;font-size:20px;line-height:1.55;max-width:62ch;color:#2b2b2b}

/* boundary diagram */
.pb-grid{display:grid;grid-template-columns:1fr 72px 1fr;align-items:stretch}
.pb-side{background:var(--surface);border:1px solid var(--line);padding:30px 32px}
.pb-name{font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.pb-sub{font-family:var(--serif);font-style:italic;font-size:26px;margin-top:8px}
.pb-chips{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.pb-chips li{font-family:var(--mono);font-size:13px;padding:6px 10px;border:1px solid var(--line);background:var(--paper);color:#2b2b2b;white-space:nowrap}
.pb-can{margin-top:20px;font-size:15px;line-height:1.55;color:#3a3a3a;max-width:40ch}
.pb-wall{position:relative;display:flex;align-items:center;justify-content:center}
.pb-wall::before{content:"";position:absolute;top:-14px;bottom:-14px;left:50%;width:3px;margin-left:-1.5px;
  background:repeating-linear-gradient(to bottom,var(--ink) 0 10px,transparent 10px 16px)}
.pb-wall span{position:relative;background:var(--ink);color:var(--paper);font-family:var(--mono);
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;padding:8px 10px;
  writing-mode:vertical-rl;white-space:nowrap}

/* the run, terminal */
.term{background:var(--ink);border:2px solid var(--ink);box-shadow:0 2px 34px rgba(14,14,14,.14)}
.term-bar{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#1C1B18;border-bottom:1px solid #2E2C27}
.term-bar .dot{width:10px;height:10px;border-radius:50%;background:#3A382F}
.term-title{margin-left:8px;font-family:var(--mono);font-size:12.5px;color:#A8A29A;letter-spacing:.04em}
.term-body{margin:0;padding:24px 20px 26px;overflow-x:auto;font-family:var(--mono);font-size:13.5px;
  line-height:1.75;color:#D6D2C7}
.term-body code{font-family:inherit}
.t-ok{color:var(--t-ok)}
.t-no{color:var(--t-no)}
.t-warn{color:var(--t-warn)}
.t-proof{color:var(--t-proof)}
.t-final{color:var(--t-final);font-weight:700}

/* the ledger */
.lg-row{display:grid;grid-template-columns:64px 1fr 220px;gap:28px;align-items:start;
  padding:32px 0;border-top:1px solid var(--line)}
.lg-row:first-of-type{border-top:2px solid var(--ink)}
.lg-row .num{font-family:var(--serif);font-size:34px;color:var(--muted);line-height:1}
.lg-main h3{font-family:var(--serif);font-weight:400;font-size:30px;line-height:1}
.lg-req{display:inline-block;margin-top:12px;font-family:var(--mono);font-size:13.5px;color:var(--accent);
  background:var(--surface);border:1px solid var(--line);padding:6px 10px}
.lg-main p{margin-top:12px;font-size:16px;line-height:1.6;color:#3a3a3a;max-width:60ch}
.lg-main p em{font-style:italic;font-family:var(--serif);font-size:17px}
.lg-stamps{display:flex;flex-direction:column;align-items:flex-start;gap:8px;justify-self:end}
.stamp{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  padding:6px 10px;border:1px solid;white-space:nowrap}
.stamp.ok{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-line)}
.stamp.no{color:var(--no);background:var(--no-bg);border-color:var(--no-line)}
.stamp.warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}

/* explainability */
.why-card{background:var(--surface);border:1px solid var(--line);padding:36px 40px;max-width:820px}
.why-cap{font-size:17px;line-height:1.6;color:#3a3a3a;max-width:62ch}
.why-dl{margin-top:28px}
.why-pair{display:grid;grid-template-columns:150px 1fr;gap:24px;padding:13px 0;border-top:1px solid var(--line)}
.why-pair dt{font-family:var(--mono);font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);padding-top:2px}
.why-pair dd{margin:0;font-size:16px;color:var(--ink)}
.why-pair dd code{font-family:var(--mono);font-size:14px;color:var(--accent)}

/* the verdict */
.v-grid{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:28px;align-items:center}
.v-metric{border-top:2px solid var(--ink);padding-top:18px}
.v-num{display:block;font-family:var(--serif);font-size:clamp(56px,7vw,92px);line-height:1}
.v-lab{display:block;margin-top:8px;font-family:var(--mono);font-size:12.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted)}
.v-stamp{justify-self:center;transform:rotate(-6deg);border:2.5px solid var(--ok);color:var(--ok);
  padding:16px 22px;text-align:center;font-family:var(--mono);text-transform:uppercase}
.v-stamp-top{display:block;font-size:17px;font-weight:700;letter-spacing:.14em}
.v-stamp-sub{display:block;margin-top:6px;font-size:11px;letter-spacing:.18em}

/* under the hood */
.hood-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.hood-card{background:var(--surface);border:1px solid var(--line);padding:26px 28px}
.hood-card h3{font-family:var(--serif);font-weight:400;font-size:26px;line-height:1.05}
.hood-card p{margin-top:12px;font-size:15.5px;line-height:1.6;color:#3a3a3a}

/* honest note */
.honest{margin-top:36px;border-left:3px solid var(--accent);background:var(--surface);
  border-top:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:24px 28px;max-width:820px}
.honest-body{margin-top:8px;font-size:16px;line-height:1.6;color:#2b2b2b;max-width:66ch}

/* cta */
.cta-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.cmd{font-family:var(--mono);font-size:14.5px;background:var(--ink);color:#D6D2C7;padding:14px 18px;white-space:nowrap}
.cta-row .btn{display:inline-flex;align-items:center;gap:8px}
.cta-row .arw{display:inline-block;transition:transform .18s ease}
.cta-row .btn:hover .arw{transform:translate(3px,-3px)}
.wp-read{color:var(--accent);font-weight:600;font-size:15px}
.wp-read:hover{text-decoration:underline}

/* scroll reveal, only when purse.js has run */
html.js .rv{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .55s ease}
html.js .rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html.js .rv{opacity:1;transform:none;transition:none}
}

/* responsive */
@media (max-width:900px){
  .v-grid{grid-template-columns:1fr 1fr;row-gap:36px}
  .v-stamp{justify-self:start;margin-left:8px}
}
@media (max-width:820px){
  .p-hero{padding:60px 0 52px}
  .pb-grid{grid-template-columns:1fr}
  .pb-wall{min-height:72px}
  .pb-wall::before{top:50%;bottom:auto;left:-8px;right:-8px;width:auto;height:3px;margin:-1.5px 0 0;
    background:repeating-linear-gradient(to right,var(--ink) 0 10px,transparent 10px 16px)}
  .pb-wall span{writing-mode:horizontal-tb}
  .lg-row{grid-template-columns:40px 1fr;gap:16px}
  .lg-stamps{grid-column:2;flex-direction:row;flex-wrap:wrap;justify-self:start;margin-top:4px}
  .why-card{padding:26px 22px}
  .why-pair{grid-template-columns:1fr;gap:4px}
  .hood-grid{grid-template-columns:1fr}
}
@media (max-width:560px){
  .v-grid{grid-template-columns:1fr}
  .cmd{white-space:normal;word-break:break-word}
}
