/* ============================================================
   Latent Heat — "engineering quad pad" theme
   paper #EDEFE3 · grid rgba(122,146,100,.20) · graphite #2A2E26
   stamp-red #B3382C · ink-blue #2F5A7C · verified #3F6D3D
   ============================================================ */
:root{
  --paper:#EDEFE3; --grid:rgba(122,146,100,.20);
  --ink:#2A2E26; --ink-soft:#565B4F;
  --red:#B3382C; --blue:#2F5A7C; --green:#3F6D3D;
  --mono:ui-monospace,"Cascadia Code","JetBrains Mono",Menlo,Consolas,monospace;
  --serif:Charter,Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  color:var(--ink);
  font-family:var(--serif);
  background-color:var(--paper);
  background-image:
    repeating-linear-gradient(0deg,transparent 0 23px,var(--grid) 23px 24px),
    repeating-linear-gradient(90deg,transparent 0 23px,var(--grid) 23px 24px);
  line-height:1.65;
}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
a:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
img{max-width:100%;height:auto}

/* ---- page frame ---- */
.sheet{max-width:66rem;margin:0 auto;padding:0 1.25rem 4rem;position:relative;min-height:100vh;
  display:flex;flex-direction:column}
.sheet main{flex:1 0 auto}
@media(min-width:980px){
  .sheet{padding:0 2rem 5rem}
}
.row{display:block}
@media(min-width:980px){
  .row{display:grid;grid-template-columns:11rem minmax(0,44rem);column-gap:4rem}
}
.marginalia{font:600 .72rem/1.7 var(--mono);color:var(--ink-soft);
  text-transform:uppercase;letter-spacing:.08em;padding-top:.35rem}
@media(min-width:980px){.marginalia{text-align:right}}

/* ---- masthead ---- */
header.mast{padding:3rem 0 2.25rem}
.masthead-title{font:800 1.9rem/1.1 var(--mono);letter-spacing:.06em;color:var(--ink)}
.masthead-title a{color:inherit}
.masthead-title a:hover{text-decoration:none;color:var(--red)}
.masthead-sub{font:400 1rem/1.5 var(--serif);font-style:italic;color:var(--ink-soft);margin-top:.5rem}
nav.mast{margin-top:1.1rem;font:600 .78rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase}
nav.mast a{margin-right:1.4rem;color:var(--blue);display:inline-block;padding:.2rem 0}
nav.mast a.active{color:var(--red)}

/* ---- stamps: the signature ---- */
.stamp{display:inline-block;font:700 .7rem/1 var(--mono);letter-spacing:.14em;
  text-transform:uppercase;color:var(--red);border:2px solid currentColor;
  border-radius:3px;padding:.5em .75em;transform:rotate(-3deg);
  box-shadow:inset 0 0 0 2px var(--paper),inset 0 0 0 3.5px currentColor;
  opacity:.88;background:transparent}
.stamp.green{color:var(--green);transform:rotate(-2deg)}
.stamp.pencil{color:#6a7062;border-style:dashed;box-shadow:none;transform:rotate(2deg);opacity:.8}

/* ---- log (home + tag pages) ---- */
.log-head{font:800 1.05rem/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink);border-bottom:2px solid var(--ink);display:inline-block;
  padding-bottom:.4rem;margin-bottom:.25rem}
ul.log{list-style:none}
ul.log>li{padding:2.4rem 0;border-bottom:1px dashed rgba(42,46,38,.28)}
ul.log>li:last-child{border-bottom:none}
.eyebrow{font:700 .7rem/1 var(--mono);letter-spacing:.14em;color:var(--ink-soft);
  text-transform:uppercase;margin-bottom:.55rem}
h2.entry-title{font:700 1.35rem/1.35 var(--mono);letter-spacing:-.01em;margin:.2rem 0 .6rem}
h2.entry-title a{color:var(--ink)}
h2.entry-title a:hover{color:var(--red);text-decoration:none}
.entry-lead{color:#3d4237;max-width:60ch}
.entry-foot{margin-top:.9rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.readmore{font:700 .78rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.tags{font:600 .74rem/1.9 var(--mono);color:var(--ink-soft)}
.tags a{color:var(--ink-soft)}
.tags a:hover{color:var(--blue)}
.tagcloud{font:600 .85rem/2.2 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.tagcloud a{margin-right:1rem}
.tagcloud .count{color:var(--ink-soft);font-size:.75em}

/* margin extras */
.chips{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.8rem}
@media(min-width:980px){.chips{justify-content:flex-end}}
.chip{font:700 .64rem/1 var(--mono);letter-spacing:.1em;color:var(--ink-soft);
  border:1.5px solid rgba(86,91,79,.55);border-radius:2px;padding:.35em .5em;
  text-transform:uppercase;background:rgba(255,255,255,.35)}
.bench{margin-top:1.4rem;border:1.5px solid rgba(42,46,38,.4);background:rgba(255,255,255,.45);
  padding:.8rem .9rem;font:600 .68rem/1.8 var(--mono);letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-soft);text-align:left}
.bench b{display:block;color:var(--ink);letter-spacing:.12em;margin-bottom:.2rem}
.bench.disabled{color:#85897e;border-color:rgba(86,91,79,.22);background:rgba(128,128,128,.08);opacity:.65}
.bench.disabled b{color:#74786f}

/* ---- post page ---- */
.post-head{padding-top:1rem}
h1.post-title{font:700 1.9rem/1.3 var(--mono);letter-spacing:-.015em;margin:.4rem 0 1rem}
@media(min-width:768px){h1.post-title{font-size:2.3rem}}
.verdict{margin:.4rem 0 1.6rem;display:flex;gap:.8rem;flex-wrap:wrap}

/* rendered markdown */
.prose{font-size:1.05rem;max-width:62ch}
.prose p{margin:1rem 0;color:#333830}
.prose h2{font:700 .95rem/1.3 var(--mono);letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink);margin:2.4rem 0 .8rem;padding-bottom:.35rem;
  border-bottom:1.5px solid rgba(42,46,38,.35)}
.prose h3{font:700 .85rem/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink);margin:1.8rem 0 .6rem}
.prose ul,.prose ol{margin:1rem 0 1rem 1.4rem;color:#333830}
.prose li{margin:.35rem 0}
.prose blockquote{margin:1.2rem 0;padding:.2rem 0;
  color:var(--ink-soft);font-style:italic}
.prose code{font-family:var(--mono);font-size:.86em;background:rgba(255,255,255,.55);
  border:1px solid rgba(86,91,79,.35);border-radius:2px;padding:.1em .35em}
.prose pre{margin:1.2rem 0;padding:1rem;background:#E3E6D6;border:1.5px solid rgba(86,91,79,.45);
  overflow-x:auto;font-family:var(--mono);font-size:.85rem;line-height:1.55}
.prose pre code{background:none;border:none;padding:0;font-size:inherit}
.prose table{border-collapse:collapse;margin:1.2rem 0;font-size:.92rem;width:100%}
.prose th{font:700 .72rem/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;
  text-align:left;border-bottom:2px solid var(--ink);padding:.4rem .6rem}
.prose td{border-bottom:1px dashed rgba(42,46,38,.3);padding:.45rem .6rem}
.prose figure{margin:1.4rem 0;border:1.5px solid rgba(42,46,38,.4);
  background:rgba(255,255,255,.5);padding:1rem}
.prose figcaption{font:600 .68rem/1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-soft);margin-top:.5rem}
.prose hr{border:none;border-top:1px dashed rgba(42,46,38,.4);margin:2rem 0}

.ghline{margin-top:2.4rem;padding-top:1.1rem;border-top:1.5px solid rgba(42,46,38,.35);
  font:600 .78rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.comments-block{margin-top:1.6rem}
.post-tags{margin-top:1.8rem}
.post-tags h3{font:700 .68rem/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-soft);margin-bottom:.3rem}
.backhome{margin-top:2.2rem;font:700 .78rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}

/* ---- footer ---- */
footer.site{margin-top:4rem;padding:1.6rem 0 0;border-top:2px solid var(--ink);
  font:600 .7rem/1.9 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
footer.site a{color:var(--ink-soft)}
footer.site a:hover{color:var(--blue)}

@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---- votes ---- */
.votes{display:flex;align-items:center;gap:.6rem;margin-top:2.4rem;padding-top:1.1rem;
  border-top:1.5px solid rgba(42,46,38,.35)}
.votes-label{font:600 .7rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-soft);margin-right:.2rem}
.vote{font:700 .78rem/1 var(--mono);letter-spacing:.06em;color:var(--ink);cursor:pointer;
  background:rgba(255,255,255,.55);border:1.5px solid rgba(42,46,38,.4);border-radius:2px;
  padding:.4rem .7rem}
.vote:hover:not(:disabled){border-color:var(--ink);background:#fff}
.vote:disabled{opacity:.5;cursor:progress}
.vote.cast{border-color:var(--green);color:var(--green);background:rgba(63,109,61,.08)}
.vote[data-vote="down"].cast{border-color:var(--red);color:var(--red);background:rgba(179,56,44,.08)}

/* ---- comments ---- */
.comments h3{font:700 .68rem/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-soft);margin-bottom:.6rem}
.comment-list{list-style:none;margin:0 0 1.4rem}
.comment-list li{border-left:2px solid rgba(42,46,38,.3);padding:.1rem 0 .1rem .8rem;margin:.9rem 0}
.comment-head{font:600 .68rem/1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-soft)}
.comment-list p{white-space:pre-wrap}
.comment-form{display:flex;flex-direction:column;gap:.5rem;max-width:34rem}
.comment-form label{display:flex;flex-direction:column;gap:.2rem}
.comment-form span{font:600 .68rem/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-soft)}
.comment-form input,.comment-form textarea{font:inherit;font-size:.95rem;color:var(--ink);
  background:rgba(255,255,255,.6);border:1.5px solid rgba(42,46,38,.4);border-radius:2px;
  padding:.4rem .5rem}
.comment-form input:focus,.comment-form textarea:focus{outline:none;border-color:var(--ink)}
.comment-form button{align-self:flex-start;font:700 .72rem/1 var(--mono);letter-spacing:.1em;
  text-transform:uppercase;color:var(--paper);background:var(--ink);cursor:pointer;
  border:1.5px solid var(--ink);border-radius:2px;padding:.55rem .9rem}
.comment-form button:hover{background:var(--blue);border-color:var(--blue)}
.comment-status{font:600 .7rem/1.5 var(--mono);color:var(--ink-soft)}
.comment-form .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
