:root{--bg: #f5f2e8;--text: #1a1815;--muted: #6f6960;--line: #dbd6c8;--link: #2a5fa8;--mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--max-width: 720px}[data-theme=dark]{--bg: #141210;--text: #e8e3d5;--muted: #8a8178;--line: #2c2921;--link: #7ba8d4}*{box-sizing:border-box}html{font-family:Newsreader,Iowan Old Style,Georgia,serif;background:var(--bg);color:var(--text);line-height:1.6;font-size:17px}body{margin:0;padding:48px 20px 80px}main{max-width:var(--max-width);margin:0 auto}header{margin-bottom:40px}nav{margin-top:10px;font-family:var(--mono);font-size:13px}nav a{margin-right:16px;color:var(--muted);text-decoration:none}nav a:hover{color:var(--text)}.theme-toggle{background:none;border:1px solid var(--line);color:var(--muted);padding:1px 7px;border-radius:999px;cursor:pointer;font-family:var(--mono);font-size:11px;line-height:1.6;vertical-align:middle;margin-left:4px}.theme-toggle:hover{color:var(--text);border-color:var(--muted)}h1,h2,h3{line-height:1.2;font-weight:500}h1{font-size:26px;margin:0 0 6px}h1 a{color:inherit;text-decoration:none}h2{font-size:20px;margin-top:38px;padding-top:18px;border-top:1px solid var(--line)}p{margin:0 0 16px}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}ul{padding-left:22px}li{margin:6px 0}.small,time{color:var(--muted);font-size:14px;font-family:var(--mono)}.project,.post{margin-bottom:18px}.project-title,.post-title{font-weight:500}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px}.project-card{display:block;overflow:hidden;color:inherit;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--bg) 92%,var(--text))}.project-card:hover{text-decoration:none;border-color:var(--muted)}.project-card img{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover;border-bottom:1px solid var(--line)}.project-card-copy{padding:14px 14px 15px}.project-card-copy p{margin:7px 0 10px}footer{margin-top:56px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:13px;font-family:var(--mono)}.footer-wrap{max-width:var(--max-width);margin:0 auto;padding:0 20px}.map-section{height:calc(100vh - 220px);min-height:480px;max-height:680px;margin:24px 0 0;border-top:1px solid var(--line)}@media(max-width:640px){.project-grid{grid-template-columns:1fr}}.now-dashboard{margin:24px 0 32px;border-top:1px solid var(--line);padding-top:18px}.now-pill-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;font-family:var(--mono);font-size:13px}.now-label{color:var(--text)}.now-pill{padding:2px 8px;border-radius:99px;font-size:11px;font-family:var(--mono);border:1px solid currentColor}.now-pill--green{color:#2d7a3a;border-color:#2d7a3a}.now-pill--yellow{color:#8a6d00;border-color:#8a6d00}.now-pill--red{color:#9e2a2a;border-color:#9e2a2a}.now-map{width:100%;height:280px;border-radius:4px;overflow:hidden;margin-bottom:14px}.now-location-dot{width:14px;height:14px;border-radius:50%;background:#2a5fa8;border:2px solid #fff;box-shadow:0 0 #2a5fa880;animation:now-pulse 2s ease-out infinite}@keyframes now-pulse{0%{box-shadow:0 0 #2a5fa880}70%{box-shadow:0 0 0 10px #2a5fa800}to{box-shadow:0 0 #2a5fa800}}.now-chips{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap}.now-chip{font-family:var(--mono);font-size:12px;color:var(--muted);padding:5px 10px;border:1px solid var(--line);border-radius:4px;white-space:nowrap;align-self:center}.now-spotify{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:4px;padding:8px 12px 8px 8px;max-width:300px}.now-album-art{border-radius:3px;flex-shrink:0}.now-spotify-text{min-width:0}.now-track{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.now-track a{color:var(--text);text-decoration:none}.now-track a:hover{text-decoration:underline}.now-fallback{color:var(--muted);font-style:italic}.now-battery{font-family:var(--mono);font-size:12px;color:var(--muted)}@media(max-width:640px){body{padding-top:28px}nav a{display:inline-block;margin-bottom:6px}.map-section{height:70vh;min-height:360px}}
