this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

NYC colors + colorful tab bar, simplified stats

Move color treatment from stats bar to tab navigation. Each tab gets
its own NYC color when active (brick red, midnight navy, Central Park
green). Stats are now plain inline text.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+79 -75
+1
dist/_astro/index.B168e4C1.css
··· 1 + .profile-header[data-astro-cid-j77egsiz]{max-width:720px;margin:0 auto;padding:0;border-bottom:6px solid var(--black)}.profile-top[data-astro-cid-j77egsiz]{display:flex;align-items:center;gap:24px;padding:24px;border-bottom:3px solid var(--black)}.avatar-wrap[data-astro-cid-j77egsiz]{width:100px;height:100px;flex-shrink:0;overflow:hidden;border:4px solid var(--black);background:var(--blue)}.avatar-wrap[data-astro-cid-j77egsiz] img[data-astro-cid-j77egsiz]{width:100%;height:100%;object-fit:cover}.display-name[data-astro-cid-j77egsiz]{font-size:3rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:.95;color:var(--text);margin-bottom:4px}.handle[data-astro-cid-j77egsiz]{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.handle[data-astro-cid-j77egsiz] a[data-astro-cid-j77egsiz]{color:var(--blue)}.bio[data-astro-cid-j77egsiz]{font-size:1rem;color:var(--text-light);padding:16px 24px;border-bottom:3px solid var(--black);white-space:pre-line;line-height:1.6}.stats[data-astro-cid-j77egsiz]{display:flex;gap:16px;padding:12px 24px}.stat[data-astro-cid-j77egsiz]{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.stat[data-astro-cid-j77egsiz] strong[data-astro-cid-j77egsiz]{font-weight:900;color:var(--text);margin-right:3px}@media(max-width:600px){.profile-top[data-astro-cid-j77egsiz]{flex-direction:column;align-items:flex-start;gap:16px}.avatar-wrap[data-astro-cid-j77egsiz]{width:80px;height:80px}.display-name[data-astro-cid-j77egsiz]{font-size:2rem}.stats[data-astro-cid-j77egsiz]{flex-wrap:wrap}.stat[data-astro-cid-j77egsiz]{padding:10px 16px}}.tabs[data-astro-cid-3mumooez]{max-width:720px;margin:0 auto;display:flex;gap:0;border-bottom:6px solid var(--black);overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--yellow)}.tab[data-astro-cid-3mumooez]{flex:1;padding:10px 12px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--black);cursor:pointer;border:none;background:none;font-family:Futura,Century Gothic,Arial,sans-serif;transition:all .2s;white-space:nowrap;text-align:center;border-right:3px solid var(--black)}.tab[data-astro-cid-3mumooez]:last-child{border-right:none}.tab[data-astro-cid-3mumooez]:hover{background:#00000014}.tab[data-astro-cid-3mumooez].active{color:var(--white);background:var(--red)}.tab[data-astro-cid-3mumooez]:nth-child(2).active{background:var(--blue)}.tab[data-astro-cid-3mumooez]:nth-child(3).active{background:var(--green)}.tab[data-astro-cid-3mumooez]:nth-child(4).active{background:var(--red)}.tab[data-astro-cid-3mumooez]:nth-child(5).active{background:var(--blue)}.tab[data-astro-cid-3mumooez]:nth-child(6).active{background:var(--green)}.tab[data-astro-cid-3mumooez]:nth-child(7).active{background:var(--black)}.tab[data-astro-cid-3mumooez]:nth-child(8).active{background:var(--blue)}.post-card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease}.post-card:last-child{border-bottom:none}.post-meta{display:flex;align-items:center;gap:10px;margin-bottom:8px}.post-meta-avatar{width:36px;height:36px;object-fit:cover;border:2px solid var(--black)}.post-meta-info{flex:1}.post-author{font-weight:800;font-size:.88rem;color:var(--text);text-transform:uppercase;letter-spacing:.02em}.post-time{font-size:.75rem;color:var(--text-muted);font-weight:700}.post-text{font-size:.95rem;line-height:1.6;color:var(--text);margin-bottom:12px;word-wrap:break-word}.post-text a{color:var(--blue);text-decoration:none;border-bottom:2px solid var(--blue)}.post-text a:hover{background:var(--yellow)}.post-images{display:grid;gap:3px;margin-bottom:12px;overflow:hidden;border:3px solid var(--black)}.post-images.grid-1{grid-template-columns:1fr}.post-images.grid-2,.post-images.grid-3,.post-images.grid-4{grid-template-columns:1fr 1fr}.post-images img{width:100%;height:240px;object-fit:cover;cursor:pointer}.embed-external{border:3px solid var(--black);overflow:hidden;margin-bottom:12px;text-decoration:none;display:block;transition:background .2s}.embed-external:hover{background:#ffde0014}.embed-external-thumb{width:100%;height:180px;object-fit:cover;border-bottom:3px solid var(--black)}.embed-external-info{padding:12px 16px}.embed-external-domain{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:700;margin-bottom:4px}.embed-external-title{font-size:1rem;font-weight:800;color:var(--text);margin-bottom:4px}.embed-external-desc{font-size:.82rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.embed-quote{border:3px solid var(--black);padding:16px;margin-bottom:12px;background:#ffde000f}.embed-quote .post-meta{margin-bottom:6px}.embed-quote .post-text{font-size:.88rem;margin-bottom:0}.post-engagement{display:flex;gap:20px;font-size:.75rem;color:var(--text-muted);font-weight:700;text-transform:uppercase}.post-engagement span{display:flex;align-items:center;gap:4px}.repost-indicator{font-size:.75rem;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.thread-toggle{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:6px 14px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--green);cursor:pointer;transition:all .2s}.thread-toggle:hover{background:var(--green);color:var(--white)}.thread-toggle .arrow{display:inline-block;transition:transform .25s;font-size:.65rem}.thread-toggle.open .arrow{transform:rotate(90deg)}.thread-replies{display:none;margin-top:12px;padding-left:20px;border-left:6px solid var(--green)}.thread-replies.open{display:block}.thread-replies .thread-reply{padding:14px 0;border-bottom:3px solid var(--black);animation:fadeIn .3s ease}.thread-replies .thread-reply:last-child{border-bottom:none}.thread-replies .post-meta-avatar{width:28px;height:28px}.thread-replies .post-text{font-size:.9rem}.thread-replies .post-engagement{font-size:.72rem}.thread-loading{padding:16px 0;font-size:.8rem;color:var(--text-muted);font-weight:700;display:flex;align-items:center;gap:8px}@media(max-width:600px){.post-images img{height:180px}}.writing-card[data-astro-cid-6arjpkwv]{display:block;text-decoration:none;color:var(--text)}.pub-badge[data-astro-cid-6arjpkwv]{color:var(--blue);font-weight:700}.tags[data-astro-cid-6arjpkwv]{margin-bottom:6px}.track-card[data-astro-cid-cbe3opy5]{display:flex;align-items:center;gap:16px}.track-artwork[data-astro-cid-cbe3opy5]{width:64px;height:64px;object-fit:cover;flex-shrink:0;border:3px solid var(--black)}.track-info[data-astro-cid-cbe3opy5]{flex:1;min-width:0}.track-play[data-astro-cid-cbe3opy5]{width:40px;height:40px;border:3px solid var(--black);background:transparent;font-size:1rem;cursor:pointer;flex-shrink:0;color:var(--blue);transition:all .2s;display:flex;align-items:center;justify-content:center;font-weight:800}.track-play[data-astro-cid-cbe3opy5]:hover{background:var(--blue);color:var(--white)}.repo-card[data-astro-cid-kmjt4cc7],.annotation-card[data-astro-cid-l3ldzmym]{display:block;text-decoration:none;color:var(--text)}.annotation-quote[data-astro-cid-l3ldzmym]{font-style:normal;color:var(--text-light);border-left:6px solid var(--green);padding-left:12px;margin-bottom:8px;font-size:.88rem;font-weight:700}.annotation-body[data-astro-cid-l3ldzmym]{font-size:.9rem;margin-bottom:8px}.note-body[data-astro-cid-fa3pki4p]{font-size:.88rem;white-space:pre-wrap}.follow-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0;max-width:720px;margin:0 auto;padding:0}.follow-card{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:3px solid var(--black);border-right:3px solid var(--black);text-decoration:none;color:var(--text);transition:background .2s;background:var(--white)}.follow-card:hover{background:#ffde0014}.follow-avatar{width:40px;height:40px;object-fit:cover;flex-shrink:0;border:2px solid var(--black)}.follow-info{display:flex;flex-direction:column;overflow:hidden}.follow-name{font-weight:800;font-size:.85rem;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.follow-handle{font-size:.72rem;color:var(--text-muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:600px){.follow-grid{grid-template-columns:1fr}.follow-card{border-right:none}}.content{max-width:720px;margin:0 auto;padding:0 24px 64px}.tab-panel{display:none}.tab-panel.active{display:block}
-1
dist/_astro/index.Cy3ggYju.css
··· 1 - .profile-header[data-astro-cid-j77egsiz]{max-width:720px;margin:0 auto;padding:0;border-bottom:6px solid var(--black)}.profile-top[data-astro-cid-j77egsiz]{display:flex;align-items:center;gap:24px;padding:24px;border-bottom:3px solid var(--black)}.avatar-wrap[data-astro-cid-j77egsiz]{width:100px;height:100px;flex-shrink:0;overflow:hidden;border:4px solid var(--black);background:var(--blue)}.avatar-wrap[data-astro-cid-j77egsiz] img[data-astro-cid-j77egsiz]{width:100%;height:100%;object-fit:cover}.display-name[data-astro-cid-j77egsiz]{font-size:3rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:.95;color:var(--text);margin-bottom:4px}.handle[data-astro-cid-j77egsiz]{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.handle[data-astro-cid-j77egsiz] a[data-astro-cid-j77egsiz]{color:var(--blue)}.bio[data-astro-cid-j77egsiz]{font-size:1rem;color:var(--text-light);padding:16px 24px;border-bottom:3px solid var(--black);white-space:pre-line;line-height:1.6}.stats[data-astro-cid-j77egsiz]{display:flex;gap:0;background:var(--yellow)}.stat[data-astro-cid-j77egsiz]{flex:1;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--black);padding:12px 24px;border-right:3px solid var(--black)}.stat[data-astro-cid-j77egsiz]:last-child{border-right:none}.stat[data-astro-cid-j77egsiz] strong[data-astro-cid-j77egsiz]{font-weight:900;font-size:1.1rem;margin-right:4px;display:inline}@media(max-width:600px){.profile-top[data-astro-cid-j77egsiz]{flex-direction:column;align-items:flex-start;gap:16px}.avatar-wrap[data-astro-cid-j77egsiz]{width:80px;height:80px}.display-name[data-astro-cid-j77egsiz]{font-size:2rem}.stats[data-astro-cid-j77egsiz]{flex-wrap:wrap}.stat[data-astro-cid-j77egsiz]{padding:10px 16px}}.tabs[data-astro-cid-3mumooez]{max-width:720px;margin:0 auto;display:flex;gap:0;border-bottom:6px solid var(--black);overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--white)}.tab[data-astro-cid-3mumooez]{flex:1;padding:12px 16px;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);cursor:pointer;border:none;background:none;font-family:Futura,Century Gothic,Arial,sans-serif;transition:all .2s;white-space:nowrap;text-align:center;border-right:3px solid var(--black)}.tab[data-astro-cid-3mumooez]:last-child{border-right:none}.tab[data-astro-cid-3mumooez]:hover{background:#ffde0026;color:var(--black)}.tab[data-astro-cid-3mumooez].active{color:var(--white);background:var(--black)}.post-card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease}.post-card:last-child{border-bottom:none}.post-meta{display:flex;align-items:center;gap:10px;margin-bottom:8px}.post-meta-avatar{width:36px;height:36px;object-fit:cover;border:2px solid var(--black)}.post-meta-info{flex:1}.post-author{font-weight:800;font-size:.88rem;color:var(--text);text-transform:uppercase;letter-spacing:.02em}.post-time{font-size:.75rem;color:var(--text-muted);font-weight:700}.post-text{font-size:.95rem;line-height:1.6;color:var(--text);margin-bottom:12px;word-wrap:break-word}.post-text a{color:var(--blue);text-decoration:none;border-bottom:2px solid var(--blue)}.post-text a:hover{background:var(--yellow)}.post-images{display:grid;gap:3px;margin-bottom:12px;overflow:hidden;border:3px solid var(--black)}.post-images.grid-1{grid-template-columns:1fr}.post-images.grid-2,.post-images.grid-3,.post-images.grid-4{grid-template-columns:1fr 1fr}.post-images img{width:100%;height:240px;object-fit:cover;cursor:pointer}.embed-external{border:3px solid var(--black);overflow:hidden;margin-bottom:12px;text-decoration:none;display:block;transition:background .2s}.embed-external:hover{background:#ffde0014}.embed-external-thumb{width:100%;height:180px;object-fit:cover;border-bottom:3px solid var(--black)}.embed-external-info{padding:12px 16px}.embed-external-domain{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:700;margin-bottom:4px}.embed-external-title{font-size:1rem;font-weight:800;color:var(--text);margin-bottom:4px}.embed-external-desc{font-size:.82rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.embed-quote{border:3px solid var(--black);padding:16px;margin-bottom:12px;background:#ffde000f}.embed-quote .post-meta{margin-bottom:6px}.embed-quote .post-text{font-size:.88rem;margin-bottom:0}.post-engagement{display:flex;gap:20px;font-size:.75rem;color:var(--text-muted);font-weight:700;text-transform:uppercase}.post-engagement span{display:flex;align-items:center;gap:4px}.repost-indicator{font-size:.75rem;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.thread-toggle{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:6px 14px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--blue);cursor:pointer;transition:all .2s}.thread-toggle:hover{background:var(--blue);color:var(--white)}.thread-toggle .arrow{display:inline-block;transition:transform .25s;font-size:.65rem}.thread-toggle.open .arrow{transform:rotate(90deg)}.thread-replies{display:none;margin-top:12px;padding-left:20px;border-left:6px solid var(--red)}.thread-replies.open{display:block}.thread-replies .thread-reply{padding:14px 0;border-bottom:3px solid var(--black);animation:fadeIn .3s ease}.thread-replies .thread-reply:last-child{border-bottom:none}.thread-replies .post-meta-avatar{width:28px;height:28px}.thread-replies .post-text{font-size:.9rem}.thread-replies .post-engagement{font-size:.72rem}.thread-loading{padding:16px 0;font-size:.8rem;color:var(--text-muted);font-weight:700;display:flex;align-items:center;gap:8px}@media(max-width:600px){.post-images img{height:180px}}.writing-card[data-astro-cid-6arjpkwv]{display:block;text-decoration:none;color:var(--text)}.pub-badge[data-astro-cid-6arjpkwv]{color:var(--blue);font-weight:700}.tags[data-astro-cid-6arjpkwv]{margin-bottom:6px}.track-card[data-astro-cid-cbe3opy5]{display:flex;align-items:center;gap:16px}.track-artwork[data-astro-cid-cbe3opy5]{width:64px;height:64px;object-fit:cover;flex-shrink:0;border:3px solid var(--black)}.track-info[data-astro-cid-cbe3opy5]{flex:1;min-width:0}.track-play[data-astro-cid-cbe3opy5]{width:40px;height:40px;border:3px solid var(--black);background:transparent;font-size:1rem;cursor:pointer;flex-shrink:0;color:var(--blue);transition:all .2s;display:flex;align-items:center;justify-content:center;font-weight:800}.track-play[data-astro-cid-cbe3opy5]:hover{background:var(--blue);color:var(--white)}.repo-card[data-astro-cid-kmjt4cc7],.annotation-card[data-astro-cid-l3ldzmym]{display:block;text-decoration:none;color:var(--text)}.annotation-quote[data-astro-cid-l3ldzmym]{font-style:normal;color:var(--text-light);border-left:6px solid var(--red);padding-left:12px;margin-bottom:8px;font-size:.88rem;font-weight:700}.annotation-body[data-astro-cid-l3ldzmym]{font-size:.9rem;margin-bottom:8px}.note-body[data-astro-cid-fa3pki4p]{font-size:.88rem;white-space:pre-wrap}.follow-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0;max-width:720px;margin:0 auto;padding:0}.follow-card{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:3px solid var(--black);border-right:3px solid var(--black);text-decoration:none;color:var(--text);transition:background .2s;background:var(--white)}.follow-card:hover{background:#ffde0014}.follow-avatar{width:40px;height:40px;object-fit:cover;flex-shrink:0;border:2px solid var(--black)}.follow-info{display:flex;flex-direction:column;overflow:hidden}.follow-name{font-weight:800;font-size:.85rem;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.follow-handle{font-size:.72rem;color:var(--text-muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:600px){.follow-grid{grid-template-columns:1fr}.follow-card{border-right:none}}.content{max-width:720px;margin:0 auto;padding:0 24px 64px}.tab-panel{display:none}.tab-panel.active{display:block}
+2 -2
dist/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Nate Spilman</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Nate Spilman</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 2 </style> 3 - <link rel="stylesheet" href="/_astro/index.Cy3ggYju.css"></head> <body> <div class="page"> <div class="banner" data-astro-cid-j77egsiz><img src="https://cdn.bsky.app/img/banner/plain/did:plc:c7frv4rcitff3p2nh7of5bcv/bafkreies6omq36whvreselkdjj2xl4mf2iw4jkqfg7bpwshoesmila6eh4" alt="Banner" data-astro-cid-j77egsiz></div><div class="profile-header" data-astro-cid-j77egsiz> <div class="profile-top" data-astro-cid-j77egsiz> <div class="avatar-wrap" data-astro-cid-j77egsiz> <img src="https://cdn.bsky.app/img/avatar/plain/did:plc:c7frv4rcitff3p2nh7of5bcv/bafkreia2ueoja2p4k2mqcmjhphtqdh4nqa7wdhbmlc34fuqt7cnp3fmgga" alt="Nate Spilman" data-astro-cid-j77egsiz> </div> <div class="profile-info" data-astro-cid-j77egsiz> <h1 class="display-name" data-astro-cid-j77egsiz>Nate Spilman</h1> <p class="handle" data-astro-cid-j77egsiz> <a href="https://bsky.app/profile/natespilman.com" target="_blank" rel="noopener" data-astro-cid-j77egsiz>@natespilman.com</a> </p> </div> </div> <p class="bio" data-astro-cid-j77egsiz>Software - urban biking - music 3 + <link rel="stylesheet" href="/_astro/index.B168e4C1.css"></head> <body> <div class="page"> <div class="banner" data-astro-cid-j77egsiz><img src="https://cdn.bsky.app/img/banner/plain/did:plc:c7frv4rcitff3p2nh7of5bcv/bafkreies6omq36whvreselkdjj2xl4mf2iw4jkqfg7bpwshoesmila6eh4" alt="Banner" data-astro-cid-j77egsiz></div><div class="profile-header" data-astro-cid-j77egsiz> <div class="profile-top" data-astro-cid-j77egsiz> <div class="avatar-wrap" data-astro-cid-j77egsiz> <img src="https://cdn.bsky.app/img/avatar/plain/did:plc:c7frv4rcitff3p2nh7of5bcv/bafkreia2ueoja2p4k2mqcmjhphtqdh4nqa7wdhbmlc34fuqt7cnp3fmgga" alt="Nate Spilman" data-astro-cid-j77egsiz> </div> <div class="profile-info" data-astro-cid-j77egsiz> <h1 class="display-name" data-astro-cid-j77egsiz>Nate Spilman</h1> <p class="handle" data-astro-cid-j77egsiz> <a href="https://bsky.app/profile/natespilman.com" target="_blank" rel="noopener" data-astro-cid-j77egsiz>@natespilman.com</a> </p> </div> </div> <p class="bio" data-astro-cid-j77egsiz>Software - urban biking - music 4 4 5 5 Happy to be here. </p> <div class="stats" data-astro-cid-j77egsiz> <span class="stat" data-astro-cid-j77egsiz><strong data-astro-cid-j77egsiz>2.6K</strong> POSTS</span> <span class="stat" data-astro-cid-j77egsiz><strong data-astro-cid-j77egsiz>5.8K</strong> FOLLOWING</span> <span class="stat" data-astro-cid-j77egsiz><strong data-astro-cid-j77egsiz>2.1K</strong> FOLLOWERS</span> </div> </div> <nav class="tabs" id="tabs" data-astro-cid-3mumooez> <button class="tab active" data-tab="posts" data-astro-cid-3mumooez> Posts </button><button class="tab " data-tab="writing" data-astro-cid-3mumooez> Writing </button><button class="tab " data-tab="music" data-astro-cid-3mumooez> Music </button><button class="tab " data-tab="repos" data-astro-cid-3mumooez> Repos </button><button class="tab " data-tab="annotations" data-astro-cid-3mumooez> Annotations </button><button class="tab " data-tab="notes" data-astro-cid-3mumooez> Notes </button><button class="tab " data-tab="follows" data-astro-cid-3mumooez> Follows </button><button class="tab " data-tab="feeds" data-astro-cid-3mumooez> Feeds </button> </nav> <script> 6 6 document.getElementById('tabs')?.addEventListener('click', (e) => {
+2 -2
dist/writing/grind-75-problem-1-two-sum/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 1 - Two Sum — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 1 - Two Sum — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 Problem 1 - Two Sum</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 11, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-tags" data-astro-cid-zgcwdgoy> <span class="tag" data-astro-cid-zgcwdgoy>learning</span><span class="tag" data-astro-cid-zgcwdgoy>ds&amp;a</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m5g2erfwyc2o" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-10-middle-of-linked-list/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 10 - Middle of Linked List — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 10 - Middle of Linked List — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 10 - Middle of Linked List</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>December 10, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m7orqq6mkk2g" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-11-3-sum/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 11 - 3 Sum — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 11 - 3 Sum — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 11 - 3 Sum</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>December 30, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-tags" data-astro-cid-zgcwdgoy> <span class="tag" data-astro-cid-zgcwdgoy>learning</span><span class="tag" data-astro-cid-zgcwdgoy>ds&amp;a</span><span class="tag" data-astro-cid-zgcwdgoy>leetcode</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3mb7suozcms2k" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-12-rotting-oranges/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 12 - Rotting Oranges — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 12 - Rotting Oranges — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 12 - Rotting Oranges</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>December 30, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3mb7wg3m4hc2p" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-13-letter-combination-of-a-phone-number/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 13 - Letter Combination of a Phone Number — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 13 - Letter Combination of a Phone Number — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 13 - Letter Combination of a Phone Number</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>December 31, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-tags" data-astro-cid-zgcwdgoy> <span class="tag" data-astro-cid-zgcwdgoy>ds&amp;a</span><span class="tag" data-astro-cid-zgcwdgoy>learning</span><span class="tag" data-astro-cid-zgcwdgoy>leetcode</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3mbcersy6vs2q" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-2-longest-substring-without-repeating/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 2 - Longest Substring Without Repeating — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 2 - Longest Substring Without Repeating — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 Problem 2 - Longest Substring Without Repeating</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 13, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m5kw3yc4ak2b" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-3-longest-palindromic-substring/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 3 - Longest Palindromic Substring — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 3 - Longest Palindromic Substring — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 Problem 3 - Longest Palindromic Substring</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 15, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m5p4hj4br22j" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-4-clone-graph/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 4 - Clone Graph — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 4 - Clone Graph — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 Problem 4 - Clone Graph</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 19, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m5yo2raoas2o" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-5-ransom-note/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 5 - Ransom Note — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 5 - Ransom Note — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 5 - Ransom Note</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 21, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <p class="article-desc" data-astro-cid-zgcwdgoy>https://leetcode.com/problems/ransom-note/</p> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m65yr6qous2n" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-6-string-to-integer-atoi/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 6 - String to Integer (atoi) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 Problem 6 - String to Integer (atoi) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 Problem 6 - String to Integer (atoi)</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 26, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m6k7xkg6bc2b" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-7-container-with-most-water/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 7 - Container With Most Water — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 7 - Container With Most Water — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 7 - Container With Most Water</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 26, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m6kfiwtues2t" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-8-word-break-attempt-2/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 8 - Word Break (Attempt 2) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 8 - Word Break (Attempt 2) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 8 - Word Break (Attempt 2)</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>December 9, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m7merpfops2m" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-8-word-break-failed-attempt/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 8 - Word Break (Failed attempt) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 8 - Word Break (Failed attempt) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 8 - Word Break (Failed attempt)</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 29, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m6sjyjd4l22g" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-problem-9-linked-list-cycle/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 9 - Linked List Cycle — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 problem 9 - Linked List Cycle — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 problem 9 - Linked List Cycle</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>December 10, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m7nfixpszk2x" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/grind-75-study-plan/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 study plan — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grind 75 study plan — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>Grind 75 study plan</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>November 11, 2025</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate learns Data Structures and Algorithms</span> </div> <div class="article-tags" data-astro-cid-zgcwdgoy> <span class="tag" data-astro-cid-zgcwdgoy>learning</span><span class="tag" data-astro-cid-zgcwdgoy>ds&amp;a</span> </div> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://nate-learns-dsa.leaflet.pub/3m5fu64cl7c2h" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate learns Data Structures and Algorithms &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/the-bluesky-ecosystem-has-the-juice-atproto-for-normies/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>The Bluesky ecosystem has the juice (ATProto for normies) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>The Bluesky ecosystem has the juice (ATProto for normies) — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>The Bluesky ecosystem has the juice (ATProto for normies)</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>March 13, 2026</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate Spilman</span> </div> <p class="article-desc" data-astro-cid-zgcwdgoy>An explanation for people who don&#39;t care about software protocols Bluesky is built on top of a new software protocol - https://atproto.com/ - for building distributed networks. If you&#39;re coming to Bluesky from X with zero care about the underlying tech, that&#39;s chill. Right now, your experience is basically the same. Under the hood, Bluesky is hosting your account information and everything. Just like X would. So, so far, same same. But here&#39;s where it starts getting cool.</p> <div class="article-content" data-astro-cid-zzqtqdyh> <p><em>An explanation for people who don&#39;t care about software protocols</em></p><p>Bluesky is built on top of a new software protocol - <a href="https://atproto.com/" target="_blank" rel="noopener">https://atproto.com/</a> - for building distributed networks. If you&#39;re coming to Bluesky from X with zero care about the underlying tech, that&#39;s chill. Right now, your experience is basically the same. Under the hood, Bluesky is hosting your account information and everything. Just like X would.</p><p>So, so far, same same. But here&#39;s where it starts getting cool.</p><p>You see a photo sharing app that&#39;s competing with Instagram. You take a look, and look - you can log directly into it using your Bluesky account. No new password. No new account creation. Then you find a blogging site. Your blog is already reserved at your Bluesky handle. When you want to add an image to your first post, your photo sharing app uploads show up as options. A podcast app, a Goodreads alternative, a neighborhood forum - each one recognizes you instantly. And none of these are made by Bluesky.</p><p>Think of it like email. You can have a Gmail account and send a message to someone on Outlook. Nobody owns &quot;email.&quot; The AT Protocol is trying to do that for social media. <strong>Your identity is yours, and every app knows it.</strong></p><p>It&#39;s already happening. AT Proto stuff that I actually use. And to be clear - these are all built by separate individuals of groups of people. It&#39;s the protocol that links it all together. </p><ul></ul><p>All of these apps recognize your single Bluesky identity. No new accounts. No new passwords. Your data moves with you.</p><p>If you want to try it, <a href="https://bsky.app/" target="_blank" rel="noopener">join Bluesky</a> - it&#39;s free and open. And if you want to nerd out about the protocol stuff, hit me up.</p> </div> <a class="external-link" href="https://pioneer.pckt.blog/the-bluesky-ecosystem-has-the-juice-atproto-for-normies-1w4f8wv" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate Spilman &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/this-is-a-canvas-test/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>This is a Canvas test — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>This is a Canvas test — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>This is a Canvas test</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>March 13, 2026</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate Spilman</span> </div> <p class="article-desc" data-astro-cid-zgcwdgoy>Can I really post a Leaflet canvas to my pckt blog?!</p> <div class="article-content" data-astro-cid-zzqtqdyh> </div> <a class="external-link" href="https://pioneer.pckt.blog/3mgxgn42ex224" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate Spilman &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+2 -2
dist/writing/this-is-lovely/index.html
··· 1 - <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>This is lovely — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #FF0000;--blue: #0000FF;--yellow: #FFDE00;--black: #000000;--white: #FFFFFF;--text: #000000;--text-light: #333333;--text-muted: #666666;--stroke: #000000;--border: 6px solid #000000}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:saturate(0) contrast(1.2)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#ffde0014}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--yellow)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 - .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--red);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 1 + <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>This is lovely — natespilman.com</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800;900&display=swap" rel="stylesheet"><style>:root{--red: #C0392B;--blue: #1B2A4A;--yellow: #F7C948;--green: #2D6A4F;--steel: #7B8794;--black: #1A1A2E;--white: #FAF9F6;--text: #1A1A2E;--text-light: #3D3D5C;--text-muted: #7B8794;--stroke: #1A1A2E;--border: 6px solid #1A1A2E}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Futura,Century Gothic,Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.5;min-height:100vh}a{color:var(--blue);text-decoration:none}a:hover{color:var(--black)}.page{position:relative;z-index:1}.banner{width:100%;height:200px;position:relative;overflow:hidden;border-bottom:var(--border)}.banner img{width:100%;height:100%;object-fit:cover;filter:contrast(1.1) saturate(.85)}.section-content{max-width:720px;margin:0 auto;padding:0}.card{padding:20px 24px;border-bottom:3px solid var(--black);animation:fadeIn .3s ease;transition:background .2s}.card:hover{background:#f7c9481a}.card:last-child{border-bottom:none}.card-title{font-size:1.1rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--text);margin-bottom:4px}.card-meta{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:8px}.card-desc{font-size:.9rem;color:var(--text-light);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tag{display:inline-block;font-size:.7rem;color:var(--white);background:var(--black);padding:2px 8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-right:4px;margin-bottom:4px}.loading{text-align:center;padding:40px 0;color:var(--text-muted);font-size:.9rem;font-weight:700;text-transform:uppercase}.loading-dot{display:inline-block;width:8px;height:8px;background:var(--red);margin:0 3px;animation:pulse 1.4s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s;background:var(--blue)}.loading-dot:nth-child(3){animation-delay:.4s;background:var(--green)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.error-state{text-align:center;padding:40px 20px;color:var(--red);font-weight:700;text-transform:uppercase}.load-more{display:block;margin:24px auto;padding:12px 32px;border:3px solid var(--black);background:transparent;font-family:Futura,Century Gothic,Arial,sans-serif;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--black);cursor:pointer;transition:all .2s}.load-more:hover{background:var(--blue);color:var(--white)}.load-more:disabled{opacity:.4;cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.lightbox{position:fixed;inset:0;background:#000000e6;z-index:1000;display:none;align-items:center;justify-content:center;cursor:pointer}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:var(--border)}@media(max-width:600px){.banner{height:120px}} 2 + .article-content[data-astro-cid-zzqtqdyh]{font-size:.95rem;line-height:1.7}.article-content[data-astro-cid-zzqtqdyh] p{margin-bottom:1em}.article-content[data-astro-cid-zzqtqdyh] h2{font-size:1.6rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;margin:1.5em 0 .5em;color:var(--text);border-bottom:3px solid var(--black);padding-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] h3{font-size:1.15rem;font-weight:800;text-transform:uppercase;margin:1.2em 0 .4em;color:var(--text)}.article-content[data-astro-cid-zzqtqdyh] pre{background:var(--black);color:#fff;padding:16px;border:3px solid var(--black);overflow-x:auto;margin:1em 0;font-size:.82rem;line-height:1.5}.article-content[data-astro-cid-zzqtqdyh] code{font-family:SF Mono,Fira Code,monospace;font-size:.85em}.article-content[data-astro-cid-zzqtqdyh] p code{background:#0000ff14;padding:2px 5px;color:var(--text);border:1px solid rgba(0,0,0,.15)}.article-content[data-astro-cid-zzqtqdyh] ul{margin:.5em 0 1em 1.5em}.article-content[data-astro-cid-zzqtqdyh] li{margin-bottom:.3em}.article-content[data-astro-cid-zzqtqdyh] a{color:var(--blue);border-bottom:2px solid var(--blue)}.article-content[data-astro-cid-zzqtqdyh] a:hover{background:var(--yellow)}.image-placeholder[data-astro-cid-zzqtqdyh]{color:var(--text-muted);font-weight:700;text-transform:uppercase}.article-page[data-astro-cid-zgcwdgoy]{max-width:680px;margin:0 auto;padding:48px 24px 80px}.back-link[data-astro-cid-zgcwdgoy]{display:inline-block;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);text-decoration:none;margin-bottom:32px;border-bottom:3px solid transparent}.back-link[data-astro-cid-zgcwdgoy]:hover{border-bottom-color:var(--blue)}.article-title[data-astro-cid-zgcwdgoy]{font-size:2.5rem;font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:var(--text);margin-bottom:12px;line-height:.95}.article-meta[data-astro-cid-zgcwdgoy]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:16px}.pub-name[data-astro-cid-zgcwdgoy]{color:var(--blue)}.article-tags[data-astro-cid-zgcwdgoy]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.article-desc[data-astro-cid-zgcwdgoy]{font-size:1.05rem;color:var(--text-light);margin-bottom:32px;line-height:1.6;border-left:6px solid var(--green);padding-left:16px}.external-link[data-astro-cid-zgcwdgoy]{display:inline-block;margin-top:40px;padding:12px 24px;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--white);background:var(--blue);border:3px solid var(--black);text-decoration:none;transition:all .2s}.external-link[data-astro-cid-zgcwdgoy]:hover{background:var(--yellow);color:var(--black)}@media(max-width:600px){.article-page[data-astro-cid-zgcwdgoy]{padding:32px 16px 60px}.article-title[data-astro-cid-zgcwdgoy]{font-size:1.8rem}} 3 3 </style></head> <body> <div class="page"> <article class="article-page" data-astro-cid-zgcwdgoy> <a class="back-link" href="/" data-astro-cid-zgcwdgoy>&larr; Back</a> <h1 class="article-title" data-astro-cid-zgcwdgoy>This is lovely</h1> <div class="article-meta" data-astro-cid-zgcwdgoy> <time data-astro-cid-zgcwdgoy>March 13, 2026</time> <span class="pub-name" data-astro-cid-zgcwdgoy> · Nate Spilman</span> </div> <div class="article-tags" data-astro-cid-zgcwdgoy> <span class="tag" data-astro-cid-zgcwdgoy>first-post</span> </div> <p class="article-desc" data-astro-cid-zgcwdgoy>This is my first post on pckt.blog. My first impressions are positive. Things look nice. Everything seems to be put in an obvious place. Like, i click a dropdown and see my options and think &quot;Right - that makes sense to be there.&quot; Here&#39;s an image. It&#39;s only here to demonstrate image add. It IS missing alt text adding, though, which feels like an oddly large accessibility miss.</p> <div class="article-content" data-astro-cid-zzqtqdyh> <p>This is my first post on pckt.blog. My first impressions are positive. Things look nice. Everything seems to be put in an obvious place. Like, i click a dropdown and see my options and think &quot;Right - that makes sense to be there.&quot; </p><p>Here&#39;s an image. It&#39;s only here to demonstrate image add. </p><p>It IS missing alt text adding, though, which feels like an oddly large accessibility miss. </p><p><strong>This is bold.</strong></p><h2>Nice. I can use markdown syntax to make section headers and etc.</h2><p>Nice to see the out of the box support for markdown. I intentionally set a different thumbnail from the image I added above. I can&#39;t see the thumbnail I uploaded anywhere though, so that also feels like a missing nice to have. </p><h2>update - customization</h2><p>They also give you full freedom to make a bunch of bad design decisions while something keeping it looking good. </p> </div> <a class="external-link" href="https://pioneer.pckt.blog/this-is-lovely-h9wvt4e" target="_blank" rel="noopener" data-astro-cid-zgcwdgoy> 4 4 Read on Nate Spilman &rarr; 5 5 </a> </article> </div> <div class="lightbox" id="lightbox" onclick="this.classList.remove('open')"> <img id="lightboxImg" src="" alt=""> </div> <script>
+5 -10
src/components/ProfileHeader.astro
··· 84 84 } 85 85 .stats { 86 86 display: flex; 87 - gap: 0; 88 - background: var(--yellow); 87 + gap: 16px; 88 + padding: 12px 24px; 89 89 } 90 90 .stat { 91 - flex: 1; 92 91 font-size: 0.75rem; 93 92 font-weight: 700; 94 93 text-transform: uppercase; 95 94 letter-spacing: 0.06em; 96 - color: var(--black); 97 - padding: 12px 24px; 98 - border-right: 3px solid var(--black); 95 + color: var(--text-muted); 99 96 } 100 - .stat:last-child { border-right: none; } 101 97 .stat strong { 102 98 font-weight: 900; 103 - font-size: 1.1rem; 104 - margin-right: 4px; 105 - display: inline; 99 + color: var(--text); 100 + margin-right: 3px; 106 101 } 107 102 108 103 @media (max-width: 600px) {
+14 -7
src/components/TabNav.astro
··· 39 39 display: flex; gap: 0; 40 40 border-bottom: 6px solid var(--black); 41 41 overflow-x: auto; -webkit-overflow-scrolling: touch; 42 - background: var(--white); 42 + background: var(--yellow); 43 43 } 44 44 .tab { 45 45 flex: 1; 46 - padding: 12px 16px; 47 - font-size: 0.8rem; 46 + padding: 10px 12px; 47 + font-size: 0.72rem; 48 48 font-weight: 800; 49 49 text-transform: uppercase; 50 - letter-spacing: 0.08em; 51 - color: var(--text-muted); 50 + letter-spacing: 0.06em; 51 + color: var(--black); 52 52 cursor: pointer; 53 53 border: none; 54 54 background: none; ··· 59 59 border-right: 3px solid var(--black); 60 60 } 61 61 .tab:last-child { border-right: none; } 62 - .tab:hover { background: rgba(255, 222, 0, 0.15); color: var(--black); } 62 + .tab:hover { background: rgba(0, 0, 0, 0.08); } 63 63 .tab.active { 64 64 color: var(--white); 65 - background: var(--black); 65 + background: var(--red); 66 66 } 67 + .tab:nth-child(2).active { background: var(--blue); } 68 + .tab:nth-child(3).active { background: var(--green); } 69 + .tab:nth-child(4).active { background: var(--red); } 70 + .tab:nth-child(5).active { background: var(--blue); } 71 + .tab:nth-child(6).active { background: var(--green); } 72 + .tab:nth-child(7).active { background: var(--black); } 73 + .tab:nth-child(8).active { background: var(--blue); } 67 74 </style>
+1 -1
src/components/annotations/AnnotationList.astro
··· 35 35 .annotation-card { display: block; text-decoration: none; color: var(--text); } 36 36 .annotation-quote { 37 37 font-style: normal; color: var(--text-light); 38 - border-left: 6px solid var(--red); 38 + border-left: 6px solid var(--green); 39 39 padding-left: 12px; margin-bottom: 8px; 40 40 font-size: 0.88rem; 41 41 font-weight: 700;
+3 -3
src/components/posts/PostFeed.astro
··· 224 224 .post-engagement { display: flex; gap: 20px; font-size: 0.75rem; color: var(--text-muted); font-weight: 700; text-transform: uppercase; } 225 225 .post-engagement span { display: flex; align-items: center; gap: 4px; } 226 226 .repost-indicator { font-size: 0.75rem; color: var(--text-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 8px; } 227 - .thread-toggle { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; padding: 6px 14px; border: 3px solid var(--black); background: transparent; font-family: "Futura", "Century Gothic", "Arial", sans-serif; font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--blue); cursor: pointer; transition: all 0.2s; } 228 - .thread-toggle:hover { background: var(--blue); color: var(--white); } 227 + .thread-toggle { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; padding: 6px 14px; border: 3px solid var(--black); background: transparent; font-family: "Futura", "Century Gothic", "Arial", sans-serif; font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--green); cursor: pointer; transition: all 0.2s; } 228 + .thread-toggle:hover { background: var(--green); color: var(--white); } 229 229 .thread-toggle .arrow { display: inline-block; transition: transform 0.25s; font-size: 0.65rem; } 230 230 .thread-toggle.open .arrow { transform: rotate(90deg); } 231 - .thread-replies { display: none; margin-top: 12px; padding-left: 20px; border-left: 6px solid var(--red); } 231 + .thread-replies { display: none; margin-top: 12px; padding-left: 20px; border-left: 6px solid var(--green); } 232 232 .thread-replies.open { display: block; } 233 233 .thread-replies .thread-reply { padding: 14px 0; border-bottom: 3px solid var(--black); animation: fadeIn 0.3s ease; } 234 234 .thread-replies .thread-reply:last-child { border-bottom: none; }
+1 -1
src/pages/writing/[...slug].astro
··· 112 112 color: var(--text-light); 113 113 margin-bottom: 32px; 114 114 line-height: 1.6; 115 - border-left: 6px solid var(--red); 115 + border-left: 6px solid var(--green); 116 116 padding-left: 16px; 117 117 } 118 118 .external-link {
+16 -14
src/styles/global.css
··· 1 - /* De Stijl — Mondrian-inspired geometric layout */ 1 + /* De Stijl × NYC — Mondrian meets Manhattan */ 2 2 3 3 :root { 4 - --red: #FF0000; 5 - --blue: #0000FF; 6 - --yellow: #FFDE00; 7 - --black: #000000; 8 - --white: #FFFFFF; 9 - --text: #000000; 10 - --text-light: #333333; 11 - --text-muted: #666666; 12 - --stroke: #000000; 13 - --border: 6px solid #000000; 4 + --red: #C0392B; /* brick red */ 5 + --blue: #1B2A4A; /* midnight navy */ 6 + --yellow: #F7C948; /* taxi cab yellow */ 7 + --green: #2D6A4F; /* Central Park green */ 8 + --steel: #7B8794; /* bridge steel gray */ 9 + --black: #1A1A2E; /* deep night */ 10 + --white: #FAF9F6; /* concrete white */ 11 + --text: #1A1A2E; 12 + --text-light: #3D3D5C; 13 + --text-muted: #7B8794; 14 + --stroke: #1A1A2E; 15 + --border: 6px solid #1A1A2E; 14 16 } 15 17 16 18 * { margin: 0; padding: 0; box-sizing: border-box; } ··· 30 32 31 33 /* ── Banner ── */ 32 34 .banner { width: 100%; height: 200px; position: relative; overflow: hidden; border-bottom: var(--border); } 33 - .banner img { width: 100%; height: 100%; object-fit: cover; filter: saturate(0) contrast(1.2); } 35 + .banner img { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.1) saturate(0.85); } 34 36 35 37 /* ── Shared card / section styles ── */ 36 38 .section-content { max-width: 720px; margin: 0 auto; padding: 0; } ··· 42 44 transition: background 0.2s; 43 45 } 44 46 .card:hover { 45 - background: rgba(255, 222, 0, 0.08); 47 + background: rgba(247, 201, 72, 0.1); 46 48 } 47 49 .card:last-child { 48 50 border-bottom: none; ··· 96 98 animation: pulse 1.4s infinite ease-in-out; 97 99 } 98 100 .loading-dot:nth-child(2) { animation-delay: 0.2s; background: var(--blue); } 99 - .loading-dot:nth-child(3) { animation-delay: 0.4s; background: var(--yellow); } 101 + .loading-dot:nth-child(3) { animation-delay: 0.4s; background: var(--green); } 100 102 .empty-state { text-align: center; padding: 60px 20px; color: var(--text-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; } 101 103 .error-state { text-align: center; padding: 40px 20px; color: var(--red); font-weight: 700; text-transform: uppercase; } 102 104