@font-face{font-family:Courier Prime;src:url(/fonts/courier-prime-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+??,U+2010-2027,U+20AC}@font-face{font-family:Courier Prime;src:url(/fonts/courier-prime-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+??,U+2010-2027,U+20AC}@font-face{font-family:Courier Prime;src:url(/fonts/courier-prime-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+??,U+2010-2027,U+20AC}:root{color-scheme:light;--bg:#fff;--bg-elevated:#f5f5f7;--ink:#1d1d1f;--ink-soft:#6e6e73;--line:#d2d2d7;--hairline:color-mix(in srgb, var(--ink) 8%, transparent);--accent:#0071e3;--accent-hover:#0077ed;--accent-ink:#fff;--badge:#e8e8ed;--font:"Courier Prime", "Noto Serif SC", "Songti SC", "STSong", SimSun, serif;--font-mono:"Courier Prime", "Noto Serif SC", "Songti SC", "STSong", SimSun, serif;--radius:18px;--ease:.2s ease}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#000;--bg-elevated:#1d1d1f;--ink:#f5f5f7;--ink-soft:#a1a1a6;--line:#424245;--hairline:#ffffff1f;--accent:#2997ff;--accent-hover:#47a3ff;--accent-ink:#fff;--badge:#2c2c2e}}:root[data-theme=dark]{color-scheme:dark;--bg:#000;--bg-elevated:#1d1d1f;--ink:#f5f5f7;--ink-soft:#a1a1a6;--line:#424245;--hairline:#ffffff1f;--accent:#2997ff;--accent-hover:#47a3ff;--accent-ink:#fff;--badge:#2c2c2e}:root[data-theme=light]{color-scheme:light}*,:before,:after{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);min-height:100vh;color:var(--ink);font-family:var(--font);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.75;overflow-x:clip}body.menu-open{overflow:hidden}img{max-width:100%;height:auto}a{color:var(--accent);transition:color var(--ease), background-color var(--ease);text-decoration:none}a:hover{text-underline-offset:.18em;text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skip{left:1rem;top:calc(.5rem + env(safe-area-inset-top));background:var(--accent);color:var(--accent-ink);z-index:60;border-radius:999px;padding:.4rem .75rem;position:absolute;transform:translateY(-150%)}.skip:focus{transform:none}.shell{width:min(61rem, calc(100% - 40px - env(safe-area-inset-left) - env(safe-area-inset-right)));margin-inline:auto}.site-header{z-index:40;background:var(--bg);border-bottom:.5px solid var(--hairline);padding-top:env(safe-area-inset-top);position:sticky;top:0}.header-bar{align-items:center;gap:.5rem;height:52px;display:flex}.header-tools{align-items:center;gap:.15rem;margin-left:auto;display:flex}.brand{min-width:0;color:inherit;align-items:center;gap:.55rem;text-decoration:none;display:flex}.brand:hover{text-decoration:none}.mark{background:var(--accent);width:1.75rem;height:1.75rem;color:var(--accent-ink);border-radius:50%;flex:none;place-items:center;font-size:.85rem;font-weight:600;line-height:1;display:grid}.brand-name{letter-spacing:0;font-size:1.05rem;font-weight:600;line-height:1.2}.nav-desktop{display:none}.menu-button{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;display:grid}.menu-button svg{width:1.25rem;height:1.25rem}.menu-button .icon-close,.menu-button[aria-expanded=true] .icon-open{display:none}.menu-button[aria-expanded=true] .icon-close{display:block}.nav-sheet{z-index:35;inset:calc(52px + env(safe-area-inset-top)) 0 0 0;background:var(--bg);padding:.35rem 0 calc(1.25rem + env(safe-area-inset-bottom));position:fixed;overflow:auto}.nav-sheet[hidden]{display:none}.nav-sheet .shell{background:var(--bg-elevated);border-radius:14px;margin-top:.75rem;padding:.15rem 0}.nav-sheet a{min-height:52px;color:var(--ink);letter-spacing:0;align-items:center;padding:0 18px;font-size:1.35rem;font-weight:600;text-decoration:none;display:flex;position:relative}.nav-sheet a:not(:last-child):after{content:"";background:var(--hairline);height:.5px;position:absolute;bottom:0;left:18px;right:18px}.nav-sheet a[aria-current=page]{color:var(--accent)}.nav-desktop a{color:var(--ink-soft);text-decoration:none}.nav-desktop a:hover,.nav-desktop a[aria-current=page]{color:var(--ink);text-decoration:none}.nav-desktop a[aria-current=page]{font-weight:600}.theme-toggle{width:44px;height:44px;color:var(--ink);cursor:pointer;transition:background-color var(--ease);background:0 0;border:0;border-radius:999px;place-items:center;display:grid}.theme-toggle:hover{background:var(--bg-elevated)}.theme-toggle svg{width:1.05rem;height:1.05rem}.icon-sun,:root[data-theme=dark] .icon-moon{display:none}:root[data-theme=dark] .icon-sun{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .icon-moon{display:none}:root:not([data-theme=light]) .icon-sun{display:block}}main{padding:1.35rem 0 2.5rem}.site-footer{border-top:.5px solid var(--hairline);padding:.85rem 0 calc(.9rem + env(safe-area-inset-bottom));color:var(--ink-soft);font-size:.75rem;line-height:1.45}.site-footer .shell{flex-wrap:wrap;align-items:baseline;gap:.35rem 1.25rem;display:flex}.site-footer p{margin:0}.site-footer a{color:var(--ink-soft)}.site-footer a:hover{color:var(--accent)}.footer-note{flex-basis:100%}.home{gap:2rem;display:grid}.hero h1,.page-header h1,.entry-header h1,.section-heading h2,.not-found h1{letter-spacing:0;font-weight:700;line-height:1.2}.hero h1,.page-header h1,.entry-header h1,.not-found h1{margin:.4rem 0 .85rem}.hero h1{margin-bottom:.45rem;font-size:clamp(2rem,5vw + 1rem,5rem)}.role,.lede,.page-header p,.entry-meta{margin:0}.role{max-width:36rem;color:var(--ink);letter-spacing:0;font-size:1.125rem;font-weight:600;line-height:1.75}.lede{max-width:40rem;color:var(--ink-soft);margin-top:.7rem;font-size:1rem;line-height:1.6}.todo-flag{letter-spacing:0;color:var(--accent);margin:0;font-size:.8125rem;font-weight:600}.home-sections{display:none}.home-sections a{min-height:44px;color:var(--ink);letter-spacing:0;align-items:center;padding:0 16px;font-weight:600;text-decoration:none;display:flex;position:relative}.home-sections a:not(:last-child):after{content:"";background:var(--hairline);height:.5px;position:absolute;bottom:0;left:16px;right:16px}.home-sections a:hover{color:var(--accent);text-decoration:none}.section-heading{margin-bottom:1.15rem}.section-heading h2,.page-header h1{font-size:clamp(1.75rem,3vw + 1rem,2.75rem)}.section-heading h2{margin:0}.post-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.post-list article{background:var(--bg-elevated);border-radius:var(--radius);padding:.95rem 1rem .9rem}.post-kicker,.kicker{color:var(--accent);flex-wrap:wrap;align-items:center;gap:.4rem .55rem;margin:0 0 .35rem;font-size:.8125rem;font-weight:600;display:flex}.post-kicker a,.kicker a{color:inherit;text-decoration:none}.post-kicker a:hover,.kicker a:hover{text-underline-offset:.18em;text-decoration:underline}.post-list h3{letter-spacing:0;margin:0;font-size:1.35rem;font-weight:600;line-height:1.35}.post-list h3 a{min-height:44px;color:inherit;align-items:center;text-decoration:none;display:flex}.post-list h3 a:hover{color:var(--accent)}.desc{color:var(--ink-soft);margin:.4rem 0 .55rem;font-size:.975rem;line-height:1.5}.post-list time,.entry-meta{color:var(--ink-soft);font-size:.8125rem}.badge{background:var(--badge);color:var(--ink-soft);border-radius:999px;padding:.08rem .45rem;font-size:.75rem;font-weight:500;display:inline-block}.sample-banner,.todo-box,.visa-cta,.callout{background:var(--bg-elevated);border-radius:var(--radius)}.sample-banner{color:var(--ink-soft);margin:1.35rem 0 0;padding:.9rem 1.05rem;font-size:.9375rem;line-height:1.5}.page-header{max-width:40rem;margin-bottom:1.15rem}.page-header p{color:var(--ink-soft);margin-top:.75rem;font-size:1.125rem;line-height:1.5}.article-layout.has-series{display:block}.series-panel-desktop{display:none}.series-panel-mobile{background:var(--bg-elevated);border-radius:14px;margin:0 0 1.25rem}.series-panel-mobile summary{cursor:pointer;align-items:center;min-height:44px;padding:0 16px;font-weight:600;display:flex}.series-panel ol{margin:0;padding:0 16px .75rem;list-style:none}.series-panel li{border-left:.5px solid var(--hairline);padding:.35rem 0 .55rem .85rem}.series-panel li.is-current{border-left-color:var(--accent)}.series-panel a{color:inherit;text-decoration:none;display:block}.series-panel li.is-current a{color:var(--accent);font-weight:600}.series-panel time{color:var(--ink-soft);font-size:.75rem;line-height:1.4;display:block}.series-panel li.is-current time{color:var(--accent)}.series-label{color:var(--ink-soft);margin:0 0 .65rem;font-size:.8125rem;font-weight:600}.entry{max-width:40rem}.entry-header{margin-bottom:1.25rem}.entry-header h1{font-size:clamp(2rem,2.5vw + 1.15rem,3.25rem)}.content{overflow-wrap:break-word;font-size:17px;line-height:1.75}.content code,.content pre,.content kbd{font-family:Courier Prime,ui-monospace,monospace}.content>:first-child{margin-top:0}.content img{border-radius:12px;width:100%;height:auto;display:block}.content h2,.content h3{letter-spacing:0;margin:2.25rem 0 .65rem;font-weight:600;line-height:1.35}.content h2{font-size:1.5rem}.content h3{font-size:1.2rem}.content p,.content ul,.content ol,.content pre,.content table,.content blockquote{margin:.95rem 0}.content ul,.content ol{padding-left:1.2rem}.content li+li{margin-top:.3rem}.content blockquote{border-left:.5px solid var(--hairline);color:var(--ink-soft);margin-left:0;padding-left:1rem}.content a{text-underline-offset:.16em;text-decoration:underline}.content code{font-family:var(--font-mono);background:var(--bg-elevated);border-radius:6px;padding:.12em .35em;font-size:.88em}.content pre,.content .astro-code{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.content pre{background:var(--bg-elevated);border-radius:12px;padding:1rem 1.05rem;line-height:1.55}.content pre code{background:0 0;padding:0;font-size:.85rem}.content table{border-collapse:collapse;-webkit-overflow-scrolling:touch;width:100%;max-width:100%;font-size:.975rem;display:block;overflow-x:auto}.content th,.content td{text-align:left;vertical-align:top;border-bottom:.5px solid var(--hairline);padding:.65rem .35rem}.content th{color:var(--ink-soft);font-size:.8125rem;font-weight:600}.astro-code,.astro-code span{color:var(--shiki-light);background-color:var(--shiki-light-bg)}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark);background-color:var(--shiki-dark-bg)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark);background-color:var(--shiki-dark-bg)}}.tag-list{border-top:.5px solid var(--hairline);flex-wrap:wrap;gap:.4rem;margin:2.25rem 0 0;padding:1.15rem 0 0;font-size:.8125rem;list-style:none;display:flex}.tag-list li{background:var(--bg-elevated);color:var(--ink-soft);border-radius:999px;padding:.15rem .55rem}.visa-cta{margin-top:2.5rem;padding:1.5rem 1.4rem 1.45rem}.visa-cta h2{letter-spacing:0;margin:0 0 .4rem;font-size:1.5rem;font-weight:700}.visa-cta p{color:var(--ink-soft);margin:0}.visa-cta a{background:var(--accent);min-height:44px;color:var(--accent-ink);border-radius:980px;justify-content:center;align-items:center;margin-top:1.1rem;padding:.55rem 1.15rem;font-size:.95rem;text-decoration:none;display:inline-flex}.visa-cta a:hover{background:var(--accent-hover);text-decoration:none}.visa-placeholder{color:var(--ink-soft);margin-top:.65rem;font-size:.8125rem;display:block}.callout{color:var(--ink-soft);margin:1.25rem 0;padding:.95rem 1.05rem;font-size:.975rem}.about-layout{gap:.85rem;margin-top:.15rem;display:grid}.about-portrait{align-items:center;gap:.75rem;margin:0;display:flex}.about-portrait .mark{width:3.25rem;height:3.25rem;font-size:1.35rem}.about-portrait figcaption{margin-top:.55rem}.todo-box{margin-top:2.5rem;padding:1.25rem 1.3rem 1.3rem}.todo-box h2{letter-spacing:0;margin:0 0 .55rem;font-size:1.15rem;font-weight:600}.todo-box ul{color:var(--ink-soft);margin:0;padding-left:1.15rem}.empty{color:var(--ink-soft)}.not-found{max-width:36rem;padding-top:1.5rem}.not-found p{color:var(--ink-soft);font-size:1.125rem}@media (width>=900px){.menu-button{display:none}.nav-desktop{flex-wrap:nowrap;align-items:center;gap:1.15rem;margin-left:auto;font-size:.875rem;display:flex}.header-tools{margin-left:.25rem}.nav-sheet{display:none}main{padding:4.5rem 0 6rem}.home{gap:2.75rem}.role{font-size:1.35rem;line-height:1.35}.lede{margin-top:1rem;font-size:1.0625rem}.home-sections{background:0 0;border-radius:0;flex-wrap:wrap;gap:.25rem 1.5rem;display:flex;overflow:visible}.home-sections a{padding:0}.home-sections a:after{display:none}.article-layout.has-series{grid-template-columns:13.5rem minmax(0,40rem);justify-content:start;align-items:start;gap:2rem 2.5rem;display:grid}.series-panel-desktop{top:calc(52px + env(safe-area-inset-top) + 1rem);display:block;position:sticky}.series-panel-mobile{display:none}.page-header,.entry-header{margin-bottom:2rem}.post-list article{padding:1.35rem 1.4rem 1.3rem}.about-layout{grid-template-columns:auto 1fr;align-items:start;gap:2rem}.about-portrait{display:block}.about-portrait .mark{width:6.5rem;height:6.5rem;font-size:2.5rem}.site-footer{padding:1.35rem 0 2.25rem;font-size:.8125rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}
