:root{--bg: #f4f4f0;--surface: #ffffff;--surface2: #f4f4f0;--surface3: #e9e9e1;--border: #000000;--text: #000000;--text2: #4a4a44;--text3: #7d7d74;--pink: #ff90e8;--lime: #90ee90;--yellow: #ffc900;--orange: #ff7051;--lav: #dbd7f7;--teal: #23a094;--green: #0b7a5f;--red: #c9330f;--amber: #a45c00;--blue: #2a5fa8;--shadow: 4px 4px 0 #000;--shadow-sm: 2px 2px 0 #000;--shadow-lg: 6px 6px 0 #000;--font-sans: "Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--maxw: 1120px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.5;background-image:radial-gradient(#dcdcd2 1px,transparent 1px);background-size:22px 22px;display:flex;flex-direction:column}img{max-width:100%;height:auto}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.skip-link{position:absolute;left:-9999px;top:0;background:var(--yellow);border:1px solid #000;padding:10px 16px;font-weight:700;z-index:100}.skip-link:focus{left:8px;top:8px}.app{max-width:var(--maxw);margin:0 auto;padding:28px 20px 90px;width:100%}main{flex:1}.site-nav{border-bottom:1px solid #000;background:var(--surface)}.site-nav-inner{max-width:var(--maxw);margin:0 auto;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand{font-size:15px;font-weight:700;letter-spacing:-.4px;text-decoration:none;color:#000;display:inline-flex;align-items:center;gap:8px}.brand .brand-mark{background:var(--pink);border:1px solid #000;box-shadow:var(--shadow-sm);padding:1px 8px;transform:rotate(-1deg)}.nav-links{display:flex;align-items:center;gap:6px;list-style:none;flex-wrap:wrap}.nav-links a{display:inline-block;padding:6px 12px;font-size:12.5px;font-weight:700;color:#000;text-decoration:none;border:1px solid transparent;transition:background .1s,box-shadow .1s,transform .1s}.nav-links a:hover{background:var(--lav);border-color:#000;box-shadow:var(--shadow-sm);transform:translate(-1px,-1px)}.nav-links a[aria-current=page]{background:#000;color:#fff;border-color:#000}.nav-links a.nav-kofi{background:var(--yellow);border-color:#000;box-shadow:var(--shadow-sm)}.nav-links a.nav-kofi:hover{background:var(--orange)}.site-footer{border-top:1px solid #000;background:var(--surface);margin-top:auto}.site-footer-inner{max-width:var(--maxw);margin:0 auto;padding:26px 20px;display:flex;gap:24px;justify-content:space-between;flex-wrap:wrap;font-size:12.5px;color:var(--text2)}.site-footer a{color:#000;font-weight:600;text-decoration:none;border-bottom:2px solid var(--pink)}.site-footer a:hover{background:var(--pink)}.footer-col h3{font-size:11px;text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px;color:#000}.footer-col ul{list-style:none;display:flex;flex-direction:column;gap:5px}.header{margin-bottom:26px}.header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.header h1{font-size:32px;font-weight:700;letter-spacing:-1px;line-height:1.15}.header h1 .hl{display:inline-block;background:var(--pink);border:1px solid #000;box-shadow:var(--shadow-sm);padding:0 9px;transform:rotate(-1deg)}.header p{color:var(--text2);font-size:14px;margin-top:12px;max-width:60ch}.year-badge{background:var(--yellow);border:1px solid #000;box-shadow:var(--shadow-sm);padding:6px 13px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.panel{background:var(--surface);border:1px solid #000;box-shadow:var(--shadow)}.panel-header{padding:11px 16px;border-bottom:1px solid #000;display:flex;align-items:center;gap:8px}.panel-header h2{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#000}.panel-icon{color:#000;display:inline-flex}.ph-pink{background:var(--pink)}.ph-yellow{background:var(--yellow)}.ph-lav{background:var(--lav)}.ph-lime{background:var(--lime)}.ph-teal{background:var(--teal)}.ph-orange{background:var(--orange)}.panel-body{padding:18px 16px}.lc{display:block;flex-shrink:0}.prose{max-width:72ch;font-size:15px;line-height:1.75;color:var(--text)}.prose>*+*{margin-top:1.1em}.prose h2{font-size:22px;letter-spacing:-.5px;margin-top:2em;padding-bottom:6px;border-bottom:1px solid #000}.prose h3{font-size:17px;margin-top:1.7em}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose a{color:#000;font-weight:600;text-decoration:none;border-bottom:2px solid var(--pink)}.prose a:hover{background:var(--pink)}.prose strong{font-weight:700}.prose blockquote{border-left:4px solid #000;background:var(--lav);padding:12px 16px;font-size:14px}.prose code{font-family:var(--font-mono);font-size:.88em;background:var(--surface3);border:1px solid #000;padding:1px 5px}.prose pre{background:#000;color:#fff;padding:14px 16px;overflow-x:auto;border:1px solid #000;box-shadow:var(--shadow)}.prose pre code{background:none;border:none;color:inherit;padding:0}.prose table{width:100%;border-collapse:collapse;font-size:13.5px;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid #000;padding:8px 10px;text-align:left}.prose th{background:var(--surface3);font-weight:700}.prose hr{border:none;border-top:1px solid #000}.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}.post-card{background:var(--surface);border:1px solid #000;box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:9px;text-decoration:none;color:inherit;transition:transform .1s,box-shadow .1s}.post-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}.post-card h2{font-size:17px;letter-spacing:-.4px;line-height:1.25}.post-card p{font-size:13px;color:var(--text2);line-height:1.6}.post-meta{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);display:flex;gap:8px;flex-wrap:wrap;align-items:center}.tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:var(--lav);border:1px solid #000;padding:2px 7px}.kofi-box{background:var(--yellow);border:1px solid #000;box-shadow:var(--shadow);padding:20px;display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}.kofi-box h2{font-size:17px;letter-spacing:-.4px}.kofi-box p{font-size:13px;margin-top:6px;max-width:56ch;line-height:1.6}.btn{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid #000;box-shadow:var(--shadow-sm);padding:11px 18px;font-family:inherit;font-size:13px;font-weight:700;color:#000;text-decoration:none;cursor:pointer;transition:transform .08s,box-shadow .08s,background .1s;white-space:nowrap}.btn:hover{background:var(--pink);transform:translate(-1px,-1px);box-shadow:var(--shadow)}.btn:active{transform:translate(2px,2px);box-shadow:none}.btn-primary{background:#000;color:#fff}.btn-primary:hover{background:var(--pink);color:#000}.faq-list{display:flex;flex-direction:column;gap:10px}.faq-item{background:var(--surface);border:1px solid #000;box-shadow:var(--shadow-sm)}.faq-item summary{padding:13px 15px;font-size:13.5px;font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:12px}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:"+";font-family:var(--font-mono);font-size:17px;line-height:1}.faq-item[open] summary:after{content:"−"}.faq-item[open] summary{background:var(--lav);border-bottom:1px solid #000}.faq-answer{padding:13px 15px;font-size:13px;line-height:1.7;color:var(--text2)}.faq-answer a{color:#000;font-weight:600;border-bottom:2px solid var(--pink);text-decoration:none}.mono{font-family:var(--font-mono);font-weight:600}.stack{display:flex;flex-direction:column;gap:20px}.section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;margin-bottom:14px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
