:root { --ink:#1a1a1a; --muted:#5f6368; --line:#e6e6e6; --accent:#1f4e8c; --soft:#f5f8fc; }
* { box-sizing:border-box; }
body { margin:0; font:17px/1.6 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color:var(--ink); background:#fff; }
.wrap { max-width:760px; margin:0 auto; padding:0 24px; }
main.wrap { padding-top:40px; padding-bottom:40px; }
a { color:var(--accent); text-decoration:none; }
a:hover { text-decoration:underline; }

/* nav */
.nav { border-bottom:1px solid var(--line); }
.nav .wrap { display:flex; justify-content:space-between; align-items:center; height:56px; }
.brand { font-weight:600; color:var(--ink); }
.navlinks a { margin-left:20px; color:var(--muted); font-size:15px; }
.navlinks a.on { color:var(--ink); font-weight:600; }

/* home */
header { display:flex; gap:28px; align-items:center; }
header img { width:150px; height:150px; border-radius:50%; object-fit:cover; object-position:50% 20%; flex:none; }
header h1 { font-size:34px; line-height:1.15; margin:0 0 6px; letter-spacing:-0.5px; }
.title { color:var(--muted); margin:0; }
.links { margin-top:12px; display:flex; flex-wrap:wrap; gap:6px 16px; font-size:15px; }
.lead { font-size:21px; line-height:1.45; margin:40px 0 0; }
h2 { font-size:13px; letter-spacing:1.5px; text-transform:uppercase; color:var(--muted); margin:48px 0 14px; padding-bottom:8px; border-bottom:1px solid var(--line); }
ul { padding-left:20px; }
li { margin:6px 0; }
.item { margin:0 0 18px; }
.item b { display:block; }
.item span { color:var(--muted); font-size:15px; }
.box { background:var(--soft); border-left:3px solid var(--accent); padding:16px 20px; border-radius:4px; }
.box p:first-child { margin-top:0; } .box p:last-child { margin-bottom:0; }
.note { color:var(--muted); font-size:15px; }

/* inner pages */
.crumb { margin:0 0 8px; font-size:15px; }
.ptitle { font-size:32px; line-height:1.2; margin:0 0 6px; letter-spacing:-0.4px; }
.psub { color:var(--muted); margin:0 0 28px; font-size:18px; }
.cards { display:grid; gap:14px; margin:20px 0 28px; }
.card { display:grid; grid-template-columns:150px 1fr; gap:18px; padding:14px; border:1px solid var(--line); border-radius:8px; color:var(--ink); }
.card:hover { border-color:var(--accent); text-decoration:none; }
.card img { width:150px; height:105px; object-fit:contain; background:#fff; }
.card b { display:block; color:var(--accent); }
.card i { display:block; font-style:normal; font-size:15px; margin:2px 0 4px; }
.card span { display:block; color:var(--muted); font-size:14px; line-height:1.5; }

/* long-form write-ups */
.prose img { max-width:100%; height:auto; display:block; margin:12px auto; }
.prose .img_row { margin:16px 0; }
.prose blockquote { margin:8px 0 24px; padding:0 0 0 14px; border-left:3px solid var(--line); color:var(--muted); font-size:15px; }
.prose hr { border:0; border-top:1px solid var(--line); margin:32px 0; }
.prose h2 { font-size:22px; letter-spacing:0; text-transform:none; color:var(--ink); border:0; margin:32px 0 10px; padding:0; }
.prose h3 { font-size:20px; margin:28px 0 8px; } .prose h4 { font-size:17px; margin:22px 0 6px; }
.prose pre { background:#f6f8fa; padding:14px 16px; border-radius:6px; overflow-x:auto; font-size:13.5px; line-height:1.45; }
.prose code { font-family:ui-monospace, SFMono-Regular, Menlo, monospace; }
.prose table { border-collapse:collapse; width:100%; font-size:15px; }
.prose th, .prose td { border-bottom:1px solid var(--line); padding:6px 8px; text-align:left; }
mjx-container[display="true"] { overflow-x:auto; overflow-y:hidden; }
/* rouge syntax colors (subset) */
.highlight .k, .highlight .kn, .highlight .kd { color:#cf222e; } .highlight .nf, .highlight .nc { color:#8250df; }
.highlight .s, .highlight .s1, .highlight .s2 { color:#0a3069; } .highlight .mi, .highlight .mf { color:#0550ae; }
.highlight .c, .highlight .c1 { color:#6e7781; font-style:italic; } .highlight .o { color:#cf222e; }

.foot { color:var(--muted); font-size:14px; padding-top:24px; padding-bottom:48px; border-top:1px solid var(--line); }

@media (max-width:560px) {
  header { flex-direction:column; text-align:center; }
  .links { justify-content:center; }
  header h1 { font-size:29px; }
  .card { grid-template-columns:1fr; } .card img { width:100%; height:160px; }
  .navlinks a { margin-left:14px; }
}
