:root{color-scheme:light;--bg:#f5f4ef;--surface:#eceae3;--card:#faf9f5;--text:#171816;--muted:#686b64;--line:#d6d4cb;--accent:#6842c2;--accent-soft:#e4dcf5;--success:#2f7d4f;--warning:#9a5a13;--danger:#b33a47;--code:#1e201e;--code-text:#e9ebe6;--sans:"Manrope", system-ui, sans-serif;--mono:"DM Mono", ui-monospace, monospace;--max:1120px}:root[data-theme=dark]{color-scheme:dark;--bg:#141513;--surface:#1c1e1b;--card:#181a17;--text:#ecede8;--muted:#9b9f96;--line:#30332e;--accent:#ad8cff;--accent-soft:#32274d;--success:#58c788;--warning:#f0a85b;--danger:#ff7b86;--code:#0c0d0c;--code-text:#e9ebe6}::view-transition-old(root),::view-transition-new(root){animation-duration:.6s;animation-timing-function:cubic-bezier(.22,1,.36,1)}.theme-transition *,.theme-transition :before,.theme-transition :after{transition-property:color,background-color,border-color,fill,stroke;transition-duration:.6s;transition-timing-function:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg);overflow-x:clip}body{max-width:100vw;min-height:100vh;color:var(--text);background:var(--bg);font-family:var(--sans);text-rendering:optimizelegibility;margin:0;font-size:17px;line-height:1.65;overflow-x:clip}a{color:inherit}img{max-width:100%}button,input{font:inherit}::selection{color:var(--text);background:var(--accent-soft)}.site-header{z-index:50;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(14px);position:sticky;top:0}.header-inner{width:min(calc(100% - 40px), var(--max));align-items:center;gap:32px;height:68px;margin:auto;display:flex}.wordmark{font-family:var(--mono);margin-right:auto;font-size:19px;font-weight:500;text-decoration:none;position:relative}.wordmark[aria-current=page]:after{background:var(--accent);content:"";height:2px;position:absolute;bottom:-23px;left:0;right:0}nav{align-items:center;gap:26px;display:flex}nav a{color:var(--muted);font-size:15px;font-weight:600;text-decoration:none;position:relative}nav a:hover,nav a[aria-current=page]{color:var(--text)}nav a[aria-current=page]:after{background:var(--accent);content:"";height:2px;position:absolute;bottom:-23px;left:0;right:0}.theme-toggle{border:1px solid var(--line);width:34px;height:34px;color:var(--text);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;display:grid}.theme-toggle:hover{border-color:var(--muted)}.theme-dark,[data-theme=dark] .theme-light{display:none}[data-theme=dark] .theme-dark{display:inline}.hero{border-bottom:1px solid var(--line);background:var(--bg);cursor:grab;align-items:center;width:100%;min-height:500px;display:flex;position:relative;overflow:hidden}.hero.is-dragging{cursor:grabbing}.hero.has-packet-hover:not(.is-dragging){cursor:pointer}.eyebrow{color:var(--accent);font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;margin:0 0 18px;font-size:15px;font-weight:500}.hero-content{z-index:2;max-width:650px;margin-left:max(20px, calc((100vw - var(--max)) / 2));position:relative}.hero-avatar{border:1px solid var(--line);object-fit:cover;border-radius:50%;width:58px;height:58px;margin-bottom:32px;display:block}.hero h1{letter-spacing:-.08em;margin:0;font-size:clamp(64px,10vw,112px);font-weight:800;line-height:.9}.hero-description{max-width:540px;min-height:3.3em;color:var(--muted);cursor:pointer;text-align:left;background:0 0;border:0;margin:28px 0 0;padding:0;font-family:inherit;font-size:17px;line-height:1.65;display:block}.hero-description:hover{color:var(--text)}.hero-description.is-rerolling{animation:.44s cubic-bezier(.22,1,.36,1) bio-reroll}@keyframes bio-reroll{0%,to{opacity:1;transform:translateY(0)}40%{opacity:0;transform:translateY(-4px)}41%{opacity:0;transform:translateY(4px)}}.hero-links{flex-wrap:wrap;gap:10px 22px;margin-top:28px;display:flex}.hero-links a{color:var(--muted);font-family:var(--mono);font-size:14px;font-weight:500;text-decoration:none}.hero-links a:hover{color:var(--accent)}.hero-canvas{--scene-opacity:1;z-index:1;opacity:0;pointer-events:none;width:100%;height:100%;transition:opacity .9s cubic-bezier(.22,1,.36,1);position:absolute;inset:0;mask-image:linear-gradient(90deg,#0000 0% 30%,#0000002e 42%,#000 56%)}.hero-canvas.is-ready{opacity:var(--scene-opacity)}.home-section,.listing-page{width:min(calc(100% - 40px), var(--max));margin:auto;padding:72px 0}.listing-page{width:min(100% - 40px,920px);padding:82px 0 110px}.listing-page .page-header{border-bottom:1px solid var(--line);max-width:none;margin-bottom:52px;padding-bottom:34px}.listing-page .page-header h1{letter-spacing:-.055em;font-size:clamp(39px,6vw,65px);line-height:1.04}.listing-page .page-header>p:last-child{max-width:680px;margin:20px 0 0}.section-heading{justify-content:space-between;align-items:end;gap:20px;margin-bottom:32px;display:flex}.section-heading .eyebrow{margin-bottom:6px}.section-heading h2,.page-header h1{letter-spacing:-.045em;margin:0;font-size:clamp(34px,5vw,50px);line-height:1.05}.section-heading>a{color:var(--muted);font-size:14px;font-weight:700;text-decoration:none}.section-heading>a:hover{color:var(--accent)}.blog-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.blog-card{border:1px solid var(--line);background:var(--card);flex-direction:column;text-decoration:none;transition:transform .18s,border-color .18s;display:flex;overflow:hidden}.blog-card:hover{border-color:var(--muted);transform:translateY(-3px)}.card-image{aspect-ratio:16/9;border-bottom:1px solid var(--line);background:var(--surface);overflow:hidden}.card-image img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.blog-card:hover .card-image img{transform:scale(1.025)}.card-body{flex-direction:column;flex:1;min-height:215px;padding:22px;display:flex}.card-body time{color:var(--accent);font-family:var(--mono);text-transform:uppercase;font-size:14px}.card-body h2{letter-spacing:-.025em;margin:11px 0 8px;font-size:21px;line-height:1.3}.card-body p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:15px;display:-webkit-box;overflow:hidden}.card-link{margin-top:auto;padding-top:20px;font-size:13px;font-weight:700}.writeup-list{border-top:1px solid var(--line)}.writeup-row{border-bottom:1px solid var(--line);grid-template-columns:32px minmax(160px,1fr) minmax(180px,.7fr) 150px 20px;align-items:center;gap:12px;min-height:72px;text-decoration:none;display:grid}.writeup-row:hover .writeup-name,.writeup-row:hover .row-arrow{color:var(--accent)}.category-symbol{color:var(--accent);grid-column:1;place-items:center;display:grid}.category-icon{width:19px;height:19px}.writeup-main{flex-direction:column;grid-column:2;gap:4px;min-width:0;display:flex}.writeup-name{font-size:16px;font-weight:700}.writeup-tags{gap:5px;display:flex;overflow:hidden}.writeup-tags>span{color:var(--muted);font-family:var(--mono);white-space:nowrap;font-size:12px}.writeup-tags>span+span:before{color:var(--line);content:"/";margin-right:5px}.competition-name,.category-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.competition-name{grid-column:3}.category-name{font-family:var(--mono);grid-column:4;font-size:19px}.writeup-list.without-categories .writeup-row{grid-template-columns:32px minmax(160px,1fr) 20px}.writeup-list.without-categories.with-competitions .writeup-row{grid-template-columns:32px minmax(160px,1fr) minmax(180px,.7fr) 20px}.writeup-list.without-categories .row-arrow,.writeup-list.without-categories.with-competitions .competition-name{grid-column:3}.writeup-list.without-categories.with-competitions .row-arrow{grid-column:4}.row-arrow{color:var(--muted);grid-column:5}.writeup-archive{margin-top:0}.year-group+.year-group{margin-top:80px}.year-heading{border-bottom:2px solid var(--text);justify-content:space-between;align-items:baseline;margin-bottom:30px;padding-bottom:12px;display:flex}.year-heading h2{font-family:var(--mono);letter-spacing:-.04em;margin:0;font-size:32px}.year-heading span{color:var(--muted);font-family:var(--mono);font-size:14px}.competition-group+.competition-group{margin-top:42px}.competition-heading{justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:12px;text-decoration:none;display:flex}.competition-heading h3{letter-spacing:-.025em;margin:0;font-size:21px}.competition-heading span{color:var(--muted);font-family:var(--mono);flex:none;font-size:13px}.competition-heading:hover h3,.competition-heading:hover span{color:var(--accent)}.page-header{max-width:700px;margin-bottom:54px}.page-header>p:last-child{color:var(--muted);font-size:19px}.article-shell{grid-template-columns:minmax(0,1fr);gap:70px;width:min(100% - 40px,920px);min-height:70vh;margin:auto;padding:82px 0 110px;display:grid}.article-shell.has-toc{width:min(calc(100% - 40px), var(--max));grid-template-columns:minmax(0,790px) 220px}.article-header{border-bottom:1px solid var(--line);margin-bottom:52px;padding-bottom:34px}.article-header h1{letter-spacing:-.055em;margin:0;font-size:clamp(39px,6vw,65px);line-height:1.04}.article-description{max-width:680px;color:var(--muted);margin:20px 0 0;font-size:19px}.article-header time{color:var(--muted);font-family:var(--mono);margin-top:22px;font-size:15px;display:block}.article-tags{flex-wrap:wrap;gap:7px;margin:22px 0 0;padding:0;list-style:none;display:flex}.article-tags li{border:1px solid var(--line);color:var(--muted);background:var(--surface);font-family:var(--mono);padding:4px 8px;font-size:13px}.toc{border-left:1px solid var(--line);height:fit-content;max-height:calc(100vh - 130px);padding-left:18px;position:sticky;top:100px;overflow:auto}.toc>p{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:16px;font-weight:500}.toc ol{margin:0;padding:0;list-style:none}.toc li{margin:7px 0;line-height:1.3}.toc li.nested{padding-left:12px}.toc a{color:var(--muted);font-size:14px;text-decoration:none}.toc a:hover{color:var(--accent)}.prose{overflow-wrap:anywhere}.prose h1,.prose h2,.prose h3,.prose h4{letter-spacing:-.035em;margin:2em 0 .65em;scroll-margin-top:90px;line-height:1.25}.prose h1{font-size:2.1rem}.prose h2{font-size:1.65rem}.prose h3{font-size:1.25rem}.prose h4{font-size:1.05rem}.prose h3:is(.achievement,.experience){border-left:4px solid var(--accent);background:color-mix(in srgb, var(--surface) 65%, transparent);margin-bottom:.35em;padding:12px 16px}.prose h3:is(.achievement,.experience)+p{margin-top:.45em;padding-left:20px}.prose h3.achievement-gold{border-left-color:#c69622}.prose h3.achievement-silver{border-left-color:#9299a6}.prose h3.achievement-bronze{border-left-color:#a96538}.prose p,.prose li{color:color-mix(in srgb, var(--text) 88%, var(--muted))}.prose p{margin:1.1em 0}.prose a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}.prose img{border:1px solid var(--line);height:auto;margin:28px auto;display:block}.prose :not(pre)>code{border:1px solid var(--line);color:var(--text);background:var(--surface);font-family:var(--mono);padding:.15em .35em;font-size:calc(.84em + 2px)}.prose pre{font-family:var(--mono);border:1px solid #343734;border-radius:0;margin:24px 0;padding:20px;font-size:15px;line-height:1.6;overflow-x:auto}.prose blockquote{border-left:3px solid var(--accent);background:var(--surface);margin:24px 0;padding:16px 20px}.prose blockquote p{margin:.25em 0}.prose blockquote.markdown-alert{--callout-color:var(--accent);border-left-color:var(--callout-color);background:color-mix(in srgb, var(--callout-color) 8%, var(--surface))}.prose blockquote.markdown-alert-tip{--callout-color:var(--success)}.prose blockquote.markdown-alert-warning{--callout-color:var(--warning)}.prose blockquote.markdown-alert-caution{--callout-color:var(--danger)}.prose .markdown-alert-title{color:var(--callout-color);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:7px;margin-bottom:6px;font-size:14px;font-weight:500;display:flex}.prose .markdown-alert-title svg{fill:currentColor;width:14px;height:14px}.prose blockquote p:first-child strong:first-child{color:var(--accent);font-family:var(--mono);letter-spacing:.05em;font-size:15px}.prose table{border-collapse:collapse;width:100%;margin:28px 0;font-size:14px;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:10px 12px}.prose th{background:var(--surface);font-weight:700}.prose hr{background:var(--line);border:0;height:1px;margin:46px 0}.challenge-list{margin-top:60px}.site-footer{border-top:1px solid var(--line)}.site-footer>div{width:min(calc(100% - 40px), var(--max));min-height:100px;color:var(--muted);font-family:var(--mono);justify-content:space-between;align-items:center;margin:auto;font-size:14px;display:flex}@media (width<=900px){.blog-grid{grid-template-columns:repeat(2,1fr)}.blog-card:last-child:nth-child(odd){display:none}.writeup-row{grid-template-columns:28px minmax(130px,1fr) 140px 20px}.category-name{grid-column:3}.row-arrow{grid-column:4}.competition-name{display:none}.article-shell.has-toc{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media (width<=680px){.header-inner{width:min(calc(100% - 28px), var(--max));gap:15px}nav{gap:14px}nav a{font-size:12px}.wordmark{font-size:17px}.hero{min-height:auto;padding:90px 0}.hero h1{font-size:clamp(62px,20vw,88px)}.hero-description{max-width:330px;min-height:4.95em;font-size:15px}.hero-canvas{--scene-opacity:.55;mask-image:radial-gradient(72% 68% at 72%,#000 0%,#000000d9 44%,#0000 82%)}.home-section,.listing-page{width:min(calc(100% - 28px), var(--max));padding:52px 0}.blog-grid{grid-template-columns:1fr}.blog-card:last-child:nth-child(odd){display:flex}.writeup-row{grid-template-columns:26px minmax(0,1fr) 20px;padding:10px 0}.row-arrow{grid-column:3}.category-name{display:none}.writeup-archive{margin-top:0}.year-group+.year-group{margin-top:60px}.competition-group+.competition-group{margin-top:36px}.competition-heading{flex-direction:column;align-items:start;gap:3px}.section-heading{align-items:start}.section-heading>a{padding-top:7px;font-size:0}.section-heading>a:after{content:"→";font-size:20px}.article-shell,.article-shell.has-toc{width:min(calc(100% - 28px), var(--max));padding:58px 0 80px}.article-header{margin-bottom:38px}.listing-page{padding:58px 0 80px}.listing-page .page-header{margin-bottom:38px}.article-header h1,.listing-page .page-header h1{font-size:clamp(37px,12vw,52px)}.prose pre{margin-left:-14px;margin-right:-14px;padding:16px 14px}.footer-note{display:none}}
