/* Portfolio additions on top of style.css (same tokens). */

/* Spam trap: invisible to people, filled in by bots */
.hp { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }

/* Long-form text from Markdown (case studies + blog) */
.prose { color: var(--grey); font-size: var(--fs-body); line-height: 1.7; max-width: 68ch; }
.prose > * + * { margin-top: 1.1em; }
.prose h2, .prose h3, .prose h4 { color: var(--bone); line-height: 1.15; margin-top: 2em; }
.prose h2 { font-family: var(--f-display); text-transform: uppercase; font-weight: 400; font-size: clamp(30px, 3.2vw, 44px); line-height: 1; }
.prose h3 { font-size: 22px; font-weight: 600; }
.prose h4 { font-family: var(--f-mono); font-size: var(--fs-mono); text-transform: uppercase; letter-spacing: .08em; color: var(--lime); }
.prose a { color: var(--bone); text-decoration: underline; text-decoration-color: var(--lime); text-underline-offset: 3px; }
.prose a:hover { color: var(--lime); }
.prose strong { color: var(--bone); font-weight: 600; }
.prose ul, .prose ol { padding-left: 1.3em; }
.prose ul { list-style: none; padding-left: 0; }
.prose ul > li { position: relative; padding-left: 1.6em; }
.prose ul > li::before { content: '—'; position: absolute; left: 0; color: var(--lime); }
.prose ol { list-style: decimal; }
.prose ol > li::marker { color: var(--lime); font-family: var(--f-mono); font-size: .9em; }
.prose li + li { margin-top: .4em; }
.prose blockquote { border-left: 2px solid var(--lime); padding: 4px 0 4px 22px; color: var(--bone); font-size: clamp(20px, 1.6vw, 24px); line-height: 1.45; }
.prose code { font-family: var(--f-mono); font-size: .88em; background: var(--panel); border: 1px solid var(--line); padding: .1em .4em; border-radius: 4px; color: var(--bone); }
.prose pre { background: var(--panel-2); border: 1px solid var(--line); padding: 18px 20px; overflow-x: auto; border-radius: 6px; line-height: 1.55; }
.prose pre code { background: none; border: 0; padding: 0; font-size: 14px; }
.prose img { width: 100%; height: auto; border: 1px solid var(--line); }
.prose hr { border: 0; border-top: 1px solid var(--line); margin: 2.4em 0; }
.prose table { width: 100%; border-collapse: collapse; font-size: var(--fs-small); }
.prose th, .prose td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.prose th { font-family: var(--f-mono); font-size: var(--fs-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--meta); font-weight: 500; }
.prose > :first-child { margin-top: 0; }
.prose--post { font-size: 18px; }
.post-aside { align-self: start; }
@media (min-width: 900px) { .post-aside { position: sticky; top: calc(var(--header-h) + 24px); } }
