/* DOCKET — a receipt desk: warm paper, green ledger ink, rubber stamps. */

:root{
  --desk:#23201b;
  --desk-2:#2b2721;
  --paper:#f6f1e5;
  --paper-2:#efe8d8;
  --ink:#2e2a24;
  --ink-2:#5c554a;
  --faint:#8d8474;
  --ledger:#2f6b4f;
  --ledger-2:#3d8a66;
  --stamp-red:#b23a2f;
  --stamp-green:#2f6b4f;
  --line:#d8cfba;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(100% 70% at 50% 0%, #2d2923 0%, var(--desk) 70%),
    var(--desk);
  color:var(--paper);
  font-family:var(--serif);
  font-size:17px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.mono{font-family:var(--mono);font-size:.72rem;letter-spacing:.09em;text-transform:uppercase}
a{color:inherit;text-decoration:none}
[hidden]{display:none !important}
h1,h2{font-weight:400;margin:0}

/* ------------------------------------------------------------- header -- */
header#bar{max-width:980px;margin:0 auto;padding:20px 24px;display:flex;align-items:center;gap:26px}
.brand{display:flex;align-items:center;gap:9px;color:var(--paper);
  font-family:var(--mono);font-size:.8rem;letter-spacing:.26em}
header nav{display:flex;gap:18px}
header nav a{font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint);border-bottom:1px solid transparent;padding-bottom:2px}
header nav a:hover,header nav a.on{color:var(--paper);border-color:var(--ledger-2)}
.who{margin-left:auto;display:flex;align-items:center;gap:12px}
#whoami{color:var(--ledger-2)}
.ghost{background:none;border:1px solid #453f35;color:var(--faint);border-radius:3px;
  font-family:var(--mono);font-size:.63rem;letter-spacing:.11em;text-transform:uppercase;
  padding:6px 12px;cursor:pointer}
.ghost:hover{color:var(--paper);border-color:var(--faint)}
a.ghost{display:inline-block}

main{max-width:980px;margin:0 auto;padding:0 24px 90px}

/* buttons that feel like rubber stamps */
.stamp-btn{position:relative;cursor:pointer;border:2px solid var(--ledger-2);border-radius:4px;
  background:transparent;color:var(--ledger-2);
  font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;
  padding:13px 24px;transition:all .15s}
.stamp-btn:hover{background:var(--ledger);border-color:var(--ledger);color:var(--paper)}
.stamp-btn:active{transform:translateY(1px) rotate(-.5deg)}
.stamp-btn[disabled]{opacity:.45;cursor:wait}
.stamp-btn.big{padding:16px 30px;font-size:.8rem}
.linklike{background:none;border:0;padding:0;color:var(--ledger-2);cursor:pointer;
  font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;
  border-bottom:1px dotted var(--ledger-2)}

/* ------------------------------------------------------------ landing -- */
.hero{padding:70px 0 30px;max-width:660px}
.eyebrow{color:var(--faint);margin:0 0 20px;letter-spacing:.18em}
h1{font-size:clamp(2.4rem,6vw,4rem);line-height:1.04;letter-spacing:-.025em;margin-bottom:22px}
.lede{color:#cfc7b4;font-size:1.08rem;max-width:58ch}
.lede b{color:var(--paper);font-weight:400;font-family:var(--mono);font-size:.95em;letter-spacing:.1em}
.lede em{color:var(--paper);font-style:italic}
.cta-row{margin:30px 0 12px}
.rubric{color:var(--faint);text-transform:none;letter-spacing:.03em}

.paper-demo{display:flex;justify-content:flex-start;padding:26px 0 8px}
.mini-receipt{background:var(--paper);color:var(--ink);border-radius:3px;padding:22px 26px 18px;
  transform:rotate(-1.2deg);box-shadow:0 24px 60px -24px rgba(0,0,0,.7);
  -webkit-mask:radial-gradient(6px at 8px 100%,transparent 97%,#000) -8px/16px 100% repeat-x;
          mask:radial-gradient(6px at 8px 100%,transparent 97%,#000) -8px/16px 100% repeat-x;
  padding-bottom:26px}
.mr-head{font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;color:var(--ink-2);margin:0 0 8px}
.mr-amt{font-size:1.9rem;margin:0;letter-spacing:-.01em}
.mr-line{color:var(--ink-2);margin:4px 0 14px}
.mr-stamps{display:flex;gap:10px;flex-wrap:wrap}

.stamp{display:inline-block;font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;
  padding:5px 10px;border-radius:3px;transform:rotate(-2deg)}
.stamp.payer{color:var(--stamp-red);border:2px solid var(--stamp-red)}
.stamp.payee{color:var(--stamp-green);border:2px solid var(--stamp-green);transform:rotate(1.5deg)}

.how{list-style:none;counter-reset:s;display:grid;grid-template-columns:repeat(4,1fr);gap:26px;
  padding:34px 0 0;margin:50px 0 0;border-top:1px solid #3a352d}
.how li{counter-increment:s;display:flex;flex-direction:column;gap:8px}
.how li::before{content:counter(s,decimal-leading-zero);font-family:var(--mono);font-size:.65rem;
  letter-spacing:.1em;color:var(--ledger-2)}
.how b{font-weight:400;font-size:1.12rem}
.how span{color:var(--faint);font-size:.9rem;line-height:1.6}

/* ---------------------------------------------------------------- new -- */
.pagetitle{font-size:2.2rem;letter-spacing:-.02em;padding:44px 0 22px}
.deskform{display:flex;flex-direction:column;gap:15px;max-width:620px}
label{display:flex;flex-direction:column;gap:8px;color:var(--faint)}
input{font-family:var(--mono);font-size:.88rem;color:var(--paper);letter-spacing:.02em;
  background:var(--desk-2);border:1px solid #453f35;border-radius:3px;padding:12px 14px;outline:none}
input:focus{border-color:var(--ledger-2)}
.err{color:#e08a7a;text-transform:none;letter-spacing:.03em;font-size:.8rem;margin:0}
.working{color:var(--ledger-2);margin:0;animation:breathe 1.5s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.5}50%{opacity:1}}
.sectionlabel{color:var(--faint);margin:30px 0 12px}
.legs{display:flex;flex-direction:column;gap:8px;max-width:620px;margin-bottom:26px}
.leg{display:grid;grid-template-columns:1fr auto;gap:2px 14px;align-items:center;text-align:left;
  background:var(--desk-2);border:1px solid #453f35;border-radius:4px;padding:13px 16px;cursor:pointer;
  color:var(--paper);font-family:var(--serif);font-size:1rem;transition:border-color .15s}
.leg:hover{border-color:var(--faint)}
.leg.on{border-color:var(--ledger-2);box-shadow:0 0 0 1px var(--ledger-2)}
.leg .l-amt{font-size:1.15rem}
.leg .l-role{font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ledger-2);grid-row:span 2;text-align:right}
.leg .l-role.none{color:var(--faint)}
.leg .l-who{font-family:var(--mono);font-size:.64rem;letter-spacing:.05em;color:var(--faint)}

/* --------------------------------------------------------------- mine -- */
.minehead{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.minelist{display:flex;flex-direction:column;margin-top:6px}
.mrow{display:grid;grid-template-columns:1fr auto;gap:4px 18px;padding:18px 6px;
  border-bottom:1px solid #3a352d;align-items:center}
.mrow:hover{background:#262218}
.mrow .m-amt{font-size:1.2rem}
.mrow .m-memo{color:var(--faint);font-style:italic}
.mrow .m-side{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;color:var(--faint);text-transform:uppercase;text-align:right}
.mrow .m-stamps{text-align:right}
.mrow .m-stamps .stamp{font-size:.5rem;padding:3px 7px}
.empty{color:var(--faint);padding:40px 0;font-size:1.02rem}

/* ------------------------------------------------------------ receipt -- */
.receipt-actions{display:flex;justify-content:space-between;align-items:center;padding:26px 0 18px}
.paper{background:var(--paper);color:var(--ink);max-width:680px;margin:0 auto;border-radius:3px;
  padding:38px 44px 30px;box-shadow:0 30px 80px -30px rgba(0,0,0,.75);
  background-image:repeating-linear-gradient(0deg, transparent 0 27px, rgba(47,107,79,.07) 27px 28px)}
.p-head{display:flex;justify-content:space-between;align-items:flex-start;
  border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:22px}
.p-brand{font-family:var(--mono);font-size:.95rem;letter-spacing:.3em;margin:0}
.p-id{color:var(--ink-2);margin:4px 0 0}
.p-chain{color:var(--ink-2);margin:0}
.p-amount p:first-child{font-size:2.6rem;letter-spacing:-.02em;margin:0;line-height:1.1}
.p-usd{color:var(--ink-2);margin:4px 0 0;text-transform:none;letter-spacing:.03em}
.p-plain{font-size:1.06rem;color:var(--ink);margin:18px 0 6px;line-height:1.55}
.p-plain b{font-weight:400;border-bottom:1px dotted var(--ink-2)}
.p-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 28px;margin:26px 0;padding:0}
.p-grid dt{color:var(--faint);margin-bottom:3px}
.p-grid dd{margin:0;font-size:.78rem;word-break:break-all;color:var(--ink);text-transform:none;letter-spacing:.02em}
.p-grid a{border-bottom:1px dotted var(--ink-2)}
.p-memo{border-left:3px solid var(--ledger);padding:6px 0 6px 16px;margin:26px 0}
.p-memolabel{color:var(--faint);margin:0 0 4px}
.p-memo p:last-child{font-size:1.25rem;font-style:italic;margin:0}
.p-stamps{display:flex;gap:18px;flex-wrap:wrap;margin:30px 0 8px}
.stampbox{display:flex;flex-direction:column;gap:7px}
.stampbox .stamp{font-size:.66rem;padding:7px 13px}
.stampbox.missing .stamp{opacity:.25;border-style:dashed;color:var(--faint);border-color:var(--faint)}
.s-meta{color:var(--ink-2);margin:0;text-transform:none;letter-spacing:.02em;font-size:.62rem}
.p-countersign{margin:16px 0 4px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.p-countersign .rubric{color:var(--ink-2)}
.p-foot{border-top:1px solid var(--line);margin-top:22px;padding-top:14px}
.p-foot .mono{color:var(--ink-2);text-transform:none;letter-spacing:.03em;line-height:1.7;font-size:.68rem}
.p-foot summary{cursor:pointer;color:var(--faint)}
.p-foot pre{white-space:pre-wrap;word-break:break-all;font-size:.6rem;color:var(--ink-2);
  background:var(--paper-2);padding:12px;border-radius:3px;max-height:260px;overflow:auto}
#verify-out{color:var(--ledger)}

.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);z-index:99;
  background:var(--paper);border-left:3px solid var(--ledger);color:var(--ink);
  border-radius:3px;padding:12px 18px;font-family:var(--mono);font-size:.7rem;
  letter-spacing:.05em;max-width:84vw;animation:rise .3s ease;box-shadow:0 10px 40px rgba(0,0,0,.5)}
@keyframes rise{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.toast.bad{border-left-color:var(--stamp-red)}

@media (max-width:760px){
  .how{grid-template-columns:1fr 1fr}
  .paper{padding:26px 22px}
  .p-grid{grid-template-columns:1fr}
  .mrow{grid-template-columns:1fr}
  .mrow .m-side,.mrow .m-stamps{text-align:left}
}
@media print{
  body{background:#fff}
  header#bar,.noprint,.toast{display:none !important}
  main{padding:0;max-width:none}
  .paper{box-shadow:none;max-width:none;border:1px solid #ccc}
}
