:root{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--ink:#18181b;--ink-soft:#27272a;--muted:#52525b;--faint:#8a8a93;--accent:#2563eb;--rule:#ececef;--hover:#f4f4f5;--bg:#fff}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);width:min(620px,100% - 48px);color:var(--muted);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 auto;font-size:16px;line-height:1.6}#master{margin-top:64px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.site-header{align-items:center;gap:14px;margin-bottom:4px;display:flex}.site-avatar{flex:none;width:46px;height:46px}.site-name{letter-spacing:-.02em;color:var(--ink);margin:0;font-size:30px;font-weight:800}#projects{margin-top:40px}.year-row{margin-top:52px}.year-row:first-child{margin-top:0}.year{border-bottom:1px solid var(--rule);color:var(--faint);letter-spacing:.01em;font-variant-numeric:tabular-nums;margin:0 0 16px;padding-bottom:4px;font-size:19px;font-weight:700;line-height:1.3}.project{border-radius:10px;margin:0 -14px 4px;padding:12px 14px;text-decoration:none;transition:background-color .14s;display:block}.project:last-child{margin-bottom:0}.project:hover{background-color:var(--hover);text-decoration:none}.project:hover .project_title{color:var(--accent)}.project_row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project_title{color:var(--ink-soft);letter-spacing:-.005em;font-size:18px;font-weight:700;line-height:1.3;transition:color .14s}.project_desc{color:var(--muted);margin:5px 0 0;font-size:15.5px;line-height:1.55}.tag{text-transform:uppercase;letter-spacing:.06em;border-radius:6px;flex:none;padding:3px 8px;font-size:10.5px;font-weight:700;line-height:1.2;display:inline-block}.tag-ai{color:#6d28d9;background:#ede9fe}.tag-ios{color:#1d4ed8;background:#dbeafe}.tag-macos{color:#be185d;background:#fce7f3}.tag-web{color:#047857;background:#d1fae5}.tag-swift{color:#c2410c;background:#ffedd5}.tag-legacy{color:#4b5563;background:#e5e7eb}.tag-hardware{color:#92400e;background:#fef3c7}.tag-article{color:#0f766e;background:#ccfbf1}.site-footer{border-top:1px solid var(--rule);align-items:center;gap:22px;margin-top:64px;padding:32px 0 80px;display:flex}.portrait{border-radius:10px;flex:none;width:92px;height:auto;box-shadow:0 1px 3px #00000024}.contact{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.contact a{color:var(--ink-soft);font-size:15px}.contact a:hover{color:var(--accent)}#md_container{padding-bottom:40px}#md_container h1,#md_container h2,#md_container h3,#md_container h4,#md_container h5,#md_container h6{font-family:var(--font-sans);color:var(--ink);letter-spacing:-.02em;margin:1.6em 0 .5em;font-weight:800;line-height:1.2}#md_container h1{margin-top:64px;font-size:32px}#md_container h2{font-size:24px}#md_container h3{font-size:20px}#md_container p,#md_container ul,#md_container ol{font-family:var(--font-sans);color:#3f3f46;margin-bottom:1.25em;font-size:17px;line-height:1.65}#md_container pre{font:13.5px/1.5 var(--font-mono);background:#f6f6f7;border-radius:8px;padding:16px;overflow-x:auto}#md_container code{font-family:var(--font-mono);font-size:.88em}#md_container :not(pre)>code{background:#f1f1f3;border-radius:4px;padding:1px 5px}#md_container img{border-radius:6px;max-width:210px;margin:6px 24px 6px 0;box-shadow:0 2px 8px #0000002e}#md_container .appstrbut,#md_container .noshadow{box-shadow:none}#md_container .full{max-width:690px}#md_container .half{max-width:320px}#md_footer{border-top:1px solid var(--rule);margin-top:56px;padding:18px 0 60px}#md_footer p{color:var(--muted);margin:0;font-size:15px}@media (width<=640px){#master{margin-top:40px}#projects{margin-top:32px}.year-row{margin-top:40px}.year{margin-bottom:14px}.project{margin-left:-10px;margin-right:-10px;padding:10px}.site-footer{flex-direction:column;align-items:flex-start;gap:16px}#md_container img{max-width:100%;margin-right:0;display:block}}
