.about-page{min-height:calc(100vh - 64px)}.about-lead{border-bottom:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) minmax(260px,.55fr);align-items:start;gap:clamp(24px,5vw,72px);padding-top:clamp(44px,6.5vw,76px);padding-bottom:clamp(44px,6.5vw,76px);display:grid}.about-copy{gap:14px;max-width:760px;display:grid}.about-copy p{color:var(--muted);margin:0;font-size:clamp(15px,1.45vw,18px);line-height:1.6}.about-facts{border-top:1px solid var(--line)}.about-facts p{border-bottom:1px solid var(--line);font-family:var(--mono);gap:4px;margin:0;padding:15px 0;display:grid}.about-facts strong{color:var(--text);font-size:14px}.about-facts span{color:var(--muted);font-size:10px}.about-section{border-bottom:1px solid var(--line-soft);padding-top:clamp(44px,6.5vw,76px);padding-bottom:clamp(44px,6.5vw,76px)}.about-heading{margin-bottom:clamp(22px,4vw,40px)}.about-heading p{color:var(--muted);font-family:var(--mono);margin:0;font-size:11px}.about-heading h2{color:var(--text);font-family:var(--display);margin:10px 0 0;font-size:clamp(26px,4.2vw,50px);line-height:1}.principle-grid,.service-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.principle-grid{margin:0;padding:0;list-style:none}.principle-grid li,.service-card{border:1px solid var(--line-medium);transition:background-color .18s,border-color .18s,transform .18s;position:relative;overflow:hidden}.principle-grid li{color:var(--text);font-family:var(--mono);padding:16px;font-size:12px}.principle-grid li:before{color:var(--muted);content:"+ "}.service-card:before{background:linear-gradient(90deg, var(--text), transparent);content:"";opacity:0;width:72px;height:1px;transition:opacity .18s;position:absolute;inset:0 auto auto 0}.service-card{gap:13px;padding:clamp(18px,2.6vw,24px);display:grid}.principle-grid li:hover,.service-card:hover{background:var(--panel);border-color:var(--line-bright);transform:translateY(-3px)}.service-card:hover:before{opacity:.72}.service-card h3{color:var(--text);font-family:var(--display);margin:0;font-size:clamp(20px,2.3vw,28px);line-height:1.08}.service-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.service-card ul{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.service-card li{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);padding:5px 7px;font-size:10px}.about-actions{padding-bottom:var(--page-bottom);flex-wrap:wrap;gap:10px;padding-top:clamp(34px,5vw,58px);display:flex}.about-actions a{border:1px solid var(--line);color:var(--text);font-family:var(--mono);padding:10px 12px;font-size:12px;text-decoration:none;transition:background-color .18s,color .18s,transform .18s}.about-actions a:hover,.about-actions a:focus-visible{background:var(--text);color:var(--background);transform:translateY(-2px)}@media (width<=860px){.about-lead,.principle-grid,.service-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.principle-grid li,.service-card,.about-actions a{transition:none}}.contact-page{min-height:calc(100vh - 64px)}.contact-status{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);align-items:center;gap:10px;margin-top:clamp(18px,2.4vw,26px);padding:9px 11px;font-size:12px;display:inline-flex}.contact-status span{background:var(--text);border-radius:999px;block-size:7px;inline-size:7px;animation:1.8s ease-in-out infinite status-pulse}.contact-status p{margin:0}.contact-body{border-bottom:1px solid var(--line-soft);padding-top:clamp(44px,6.5vw,76px);padding-bottom:clamp(44px,6.5vw,76px)}.contact-body>p,.contact-note p{color:var(--muted);max-width:760px;margin:0;font-size:clamp(15px,1.45vw,18px);line-height:1.6}.contact-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:clamp(24px,4vw,42px);display:grid}.contact-card{border:1px solid var(--line-medium);color:var(--text);font-family:var(--mono);gap:7px;min-inline-size:0;padding:16px;text-decoration:none;transition:background-color .18s,border-color .18s,color .18s,transform .18s;display:grid;position:relative;overflow:hidden}.contact-card:before{background:linear-gradient(90deg, var(--text), transparent);content:"";opacity:0;width:72px;height:1px;transition:opacity .18s;position:absolute;inset:0 auto auto 0}.contact-card span{color:var(--muted);font-size:11px}.contact-card strong{overflow-wrap:anywhere;font-size:clamp(12px,1.35vw,14px);font-weight:500}.contact-card:hover,.contact-card:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-3px)}.contact-card:hover:before,.contact-card:focus-visible:before{opacity:.72}.contact-card:hover span,.contact-card:focus-visible span{color:var(--inverse-muted)}.contact-social{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:end;gap:24px;padding-top:clamp(44px,6.5vw,76px);padding-bottom:clamp(44px,6.5vw,76px);display:flex}.contact-social p{color:var(--muted);font-family:var(--mono);margin:0;font-size:11px}.contact-social h2{color:var(--text);font-family:var(--display);margin:10px 0 0;font-size:clamp(26px,4.2vw,50px);line-height:1}.social-links{flex-wrap:wrap;gap:10px;display:flex}.social-links a{border:1px solid var(--line);color:var(--text);font-family:var(--mono);padding:10px 12px;font-size:12px;text-decoration:none;transition:background-color .18s,color .18s,transform .18s}.social-links a:hover,.social-links a:focus-visible{background:var(--text);color:var(--background);transform:translateY(-2px)}.contact-note{padding-bottom:var(--page-bottom);padding-top:clamp(34px,5vw,58px)}@keyframes status-pulse{0%{box-shadow:0 0 0 0 var(--pulse-ring)}70%,to{box-shadow:0 0 0 8px var(--pulse-ring-fade)}}@media (width<=860px){.contact-grid{grid-template-columns:1fr}.contact-social{flex-direction:column;align-items:stretch}}@media (prefers-reduced-motion:reduce){.contact-status span{animation:none}.contact-card,.social-links a{transition:none}}.content-page{min-height:calc(100vh - 64px)}@media (width<=640px){.content-page{min-height:calc(100vh - 96px)}}.experience-page{min-height:calc(100vh - 64px)}.experience-command{color:var(--muted);font-family:var(--mono);margin:clamp(18px,2.4vw,26px) 0 0;font-size:11px}.experience-summary{border-bottom:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) minmax(280px,.7fr);align-items:start;gap:clamp(24px,5vw,72px);padding-top:clamp(34px,5vw,58px);padding-bottom:clamp(34px,5vw,58px);display:grid}.experience-summary__copy{gap:18px;display:grid}.experience-summary__copy>p{color:var(--muted);max-width:680px;margin:0;font-size:clamp(15px,1.45vw,18px);line-height:1.6}.experience-summary__copy a{border:1px solid var(--line-bright);color:var(--text);font-family:var(--mono);inline-size:fit-content;padding:8px 10px;font-size:11px;text-decoration:none;transition:background-color .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.experience-summary__copy a:hover,.experience-summary__copy a:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-1px)}.experience-stats{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.experience-stats p{border-bottom:1px solid var(--line);border-right:1px solid var(--line);font-family:var(--mono);gap:4px;margin:0;padding:14px 12px;display:grid}.experience-stats p:last-child{border-right:0}.experience-stats strong{color:var(--text);font-size:14px}.experience-stats span{color:var(--muted);font-size:10px}.experience-columns{padding-bottom:var(--page-bottom);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-top:clamp(44px,6.5vw,76px);display:grid}.timeline-column{min-inline-size:0}.timeline-column h2{color:var(--text);font-family:var(--display);margin:0 0 18px;font-size:clamp(24px,3.6vw,42px);line-height:1}.timeline-list{gap:10px;display:grid}.timeline-card{border:1px solid var(--line-medium);gap:7px;padding:clamp(16px,2.4vw,22px);transition:background-color .18s,border-color .18s,transform .18s;animation:.42s both timeline-in;display:grid;position:relative;overflow:hidden}.timeline-card:before{background:linear-gradient(90deg, var(--text), transparent);content:"";opacity:0;width:72px;height:1px;transition:opacity .18s;position:absolute;inset:0 auto auto 0}.timeline-card:hover,.timeline-card:focus-within{background:var(--panel);border-color:var(--line-bright);transform:translateY(-3px)}.timeline-card:hover:before,.timeline-card:focus-within:before{opacity:.72}.timeline-card p,.timeline-card span{color:var(--muted);font-family:var(--mono);margin:0;font-size:11px}.timeline-card h3{color:var(--text);font-family:var(--display);margin:0;font-size:clamp(19px,2.1vw,26px);line-height:1.08}.timeline-card strong{color:var(--text);font-family:var(--mono);font-size:12px;font-weight:500}.timeline-card small{color:var(--muted);font-size:13px;line-height:1.55}.timeline-card .tech-stack{margin-top:4px}.timeline-card__links{flex-wrap:wrap;gap:7px;margin-top:4px;display:flex}.timeline-card__links a{background:var(--surface-floating);border:1px solid var(--line-bright);color:var(--text);font-family:var(--mono);text-transform:lowercase;align-items:center;gap:7px;padding:7px 9px;font-size:10px;text-decoration:none;transition:background-color .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.timeline-card__links small{border-left:1px solid var(--line-medium);color:var(--muted);padding-left:7px;font-size:9px;font-weight:500;line-height:1}.timeline-card__links a[data-kind=employer],.timeline-card__links a[data-kind=student],.timeline-card__links a[data-kind=case-study]{border-color:var(--line-bright)}.timeline-card__links a:hover,.timeline-card__links a:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-1px)}.timeline-card__links a:hover small,.timeline-card__links a:focus-visible small{border-color:color-mix(in srgb, var(--background) 45%, transparent);color:var(--background)}@keyframes timeline-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=860px){.experience-summary,.experience-columns{grid-template-columns:1fr}}@media (width<=640px){.experience-stats{grid-template-columns:1fr}.experience-stats p{border-right:0}}@media (prefers-reduced-motion:reduce){.timeline-card,.experience-summary__copy a,.timeline-card__links a{transition:none;animation:none}}.lab-page{min-height:calc(100vh - 64px)}.lab-command{color:var(--muted);font-family:var(--mono);margin:clamp(18px,2.4vw,26px) 0 0;font-size:11px}.lab-summary{border-bottom:1px solid var(--line-soft);padding-top:clamp(34px,5vw,58px);padding-bottom:clamp(34px,5vw,58px)}.lab-summary p{color:var(--muted);max-width:760px;margin:0;font-size:clamp(15px,1.45vw,18px);line-height:1.6}.lab-focus{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-top:clamp(44px,6.5vw,76px);padding-bottom:clamp(44px,6.5vw,76px);display:grid}.focus-card,.skill-group{border:1px solid var(--line-medium);transition:background-color .18s,border-color .18s,transform .18s;position:relative;overflow:hidden}.focus-card{animation:.52s both focus-in;animation-delay:calc(var(--i) * 45ms);gap:14px;min-block-size:230px;padding:clamp(18px,2.6vw,24px);display:grid}.focus-card:before,.skill-group:before{background:linear-gradient(90deg, var(--text), transparent);content:"";opacity:0;width:72px;height:1px;transition:opacity .18s;position:absolute;inset:0 auto auto 0}.focus-card:hover,.skill-group:hover{background:var(--panel);border-color:var(--line-bright);transform:translateY(-3px)}.focus-card:hover:before,.skill-group:hover:before{opacity:.72}.focus-card h2,.skill-heading h2{color:var(--text);font-family:var(--display);margin:0;line-height:1}.focus-card h2{font-size:clamp(21px,2.4vw,30px)}.focus-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.focus-card .tech-stack{margin-top:auto}.focus-card__links{flex-wrap:wrap;gap:7px;display:flex}.focus-card__links a{background:var(--surface-floating);border:1px solid var(--line-bright);color:var(--text);font-family:var(--mono);text-transform:lowercase;align-items:center;gap:7px;padding:7px 9px;font-size:10px;text-decoration:none;transition:background-color .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.focus-card__links small{border-left:1px solid var(--line-medium);color:var(--muted);padding-left:7px;font-size:9px;font-weight:500;line-height:1}.focus-card__links a:hover,.focus-card__links a:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-1px)}.focus-card__links a:hover small,.focus-card__links a:focus-visible small{border-color:color-mix(in srgb, var(--background) 45%, transparent);color:var(--background)}.skill-section{border-top:1px solid var(--line-soft);padding-bottom:var(--page-bottom);padding-top:clamp(44px,6.5vw,76px)}.skill-heading{margin-bottom:clamp(22px,4vw,40px)}.skill-heading p{color:var(--muted);font-family:var(--mono);margin:0;font-size:11px}.skill-heading h2{margin-top:10px;font-size:clamp(26px,4.2vw,50px)}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.skill-group{gap:0;display:grid}.skill-group header{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;padding:13px 14px;display:flex}.skill-group header span,.skill-group header strong{font-family:var(--mono);font-size:11px}.skill-group header span{color:var(--text);text-transform:lowercase}.skill-group header strong{color:var(--muted);font-weight:500}.skill-group__items{display:grid}.skill-card{border-bottom:1px solid var(--line-soft);padding:13px 14px;display:grid}.skill-card:last-child{border-bottom:0}.skill-card div{justify-content:space-between;align-items:center;gap:12px;display:flex}.skill-card h3{color:var(--text);font-family:var(--mono);margin:0;font-size:12px}.skill-card span{color:var(--muted);font-family:var(--mono);font-size:10px}@keyframes focus-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=920px){.lab-focus,.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.lab-focus,.skill-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.focus-card,.skill-group,.focus-card__links a{transition:none;animation:none}}.log-page{min-height:calc(100vh - 64px)}.log-command{color:var(--muted);font-family:var(--mono);margin:clamp(18px,2.4vw,26px) 0 0;font-size:11px}.log-summary{border-bottom:1px solid var(--line-soft);padding-top:clamp(28px,4vw,48px);padding-bottom:clamp(30px,4.5vw,52px)}.log-summary p{color:var(--muted);max-width:680px;margin:0;font-size:clamp(14px,1.25vw,16px);line-height:1.65}.log-featured{padding-top:clamp(34px,5vw,58px)}.featured-post{border:1px solid var(--line-medium);color:inherit;grid-template-columns:.22fr minmax(0,1fr) .24fr;gap:clamp(20px,4vw,48px);min-height:240px;padding:clamp(18px,3vw,30px);text-decoration:none;transition:background-color .22s,border-color .22s,transform .22s;display:grid;position:relative;overflow:hidden}.featured-post:before{background:linear-gradient(120deg, transparent, var(--line-soft), transparent);content:"";width:35%;transition:left .52s;position:absolute;inset:0 auto 0 -45%;transform:skew(-18deg)}.featured-post:hover,.featured-post:focus-visible{background:var(--panel);border-color:var(--line-bright);transform:translateY(-3px)}.featured-post:hover:before,.featured-post:focus-visible:before{left:115%}.featured-post__label{color:var(--muted);font-family:var(--mono);text-transform:lowercase;font-size:10px}.featured-post time,.log-post time{color:var(--muted);font-family:var(--mono);font-size:11px}.featured-post h2{color:var(--text);font-family:var(--display);letter-spacing:0;max-width:720px;margin:clamp(14px,2.2vw,22px) 0 0;font-size:clamp(30px,5.2vw,58px);line-height:.98}.featured-post p{color:var(--muted);max-width:680px;margin:16px 0 0;font-size:clamp(14px,1.4vw,17px);line-height:1.6}.featured-post ul,.log-post ul{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.featured-post ul{place-content:start flex-end}.featured-post li,.log-post li{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);padding:6px 7px;font-size:10px;line-height:1}.log-empty{color:var(--muted);font-family:var(--mono);padding-top:clamp(34px,5vw,58px);font-size:12px}.log-list{padding-bottom:var(--page-bottom);gap:10px;padding-top:clamp(18px,3vw,32px);display:grid}.log-post{animation:.46s both log-in;animation-delay:calc(var(--i) * 45ms);border:1px solid var(--line-medium);color:inherit;grid-template-columns:minmax(120px,.24fr) minmax(0,1fr);gap:clamp(18px,4vw,48px);padding:clamp(16px,2.4vw,24px);text-decoration:none;transition:background-color .18s,border-color .18s,transform .18s;display:grid}.log-post:hover,.log-post:focus-visible{background:var(--panel);border-color:var(--line-bright);transform:translateY(-3px)}.log-post h2{color:var(--text);font-family:var(--display);margin:0;font-size:clamp(20px,2.2vw,28px);line-height:1.08}.log-post p{color:var(--muted);margin:10px 0 0;font-size:13px;line-height:1.55}.log-post ul{margin:14px 0 0}@keyframes log-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=780px){.featured-post{grid-template-columns:1fr;min-height:auto}.featured-post ul{justify-content:flex-start}.log-post{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.featured-post,.featured-post:before,.log-post{transition:none;animation:none}.featured-post:before{display:none}}.work-page{min-height:calc(100vh - 64px)}.work-command{color:var(--muted);font-family:var(--mono);margin:clamp(18px,2.4vw,26px) 0 0;font-size:11px}.work-summary{border-bottom:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) minmax(260px,.52fr);align-items:start;gap:clamp(22px,5vw,72px);padding-top:clamp(34px,5vw,58px);padding-bottom:clamp(34px,5vw,58px);display:grid}.work-summary p{color:var(--muted);max-width:720px;margin:0;font-size:clamp(15px,1.45vw,18px);line-height:1.6}.work-summary ul,.work-card__links{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.work-summary li{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);padding:5px 7px;font-size:10px}.work-grid{padding-bottom:var(--page-bottom);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-top:clamp(44px,6.5vw,76px);display:grid}.work-card{animation:.52s both work-card-in;animation-delay:calc(var(--i) * 35ms);border:1px solid var(--line-medium);flex-direction:column;gap:14px;min-block-size:240px;padding:clamp(18px,2.6vw,24px);scroll-margin-top:96px;transition:background-color .18s,border-color .18s,transform .18s;display:flex;position:relative;overflow:hidden}.work-card:before{background:linear-gradient(90deg, var(--text), transparent);content:"";opacity:0;width:76px;height:1px;transition:opacity .18s;position:absolute;inset:0 auto auto 0}.work-card:hover,.work-card:focus-within{background:var(--panel);border-color:var(--line-bright);transform:translateY(-3px)}.work-card:hover:before,.work-card:focus-within:before{opacity:.72}.work-card__meta{color:var(--muted);font-family:var(--mono);justify-content:space-between;gap:10px;font-size:11px;display:flex}.work-card h2{color:var(--text);font-family:var(--display);margin:0;font-size:clamp(21px,2.4vw,30px);line-height:1.05}.work-card>p{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.work-card__context{border-left:1px solid var(--line-soft);gap:5px;padding-left:12px;display:grid}.work-card__context span{color:var(--text);font-family:var(--mono);font-size:11px}.work-card__context small{color:var(--muted);font-size:12px;line-height:1.45}.work-card__stack{border-top:1px solid var(--line-soft);margin-top:auto;padding-top:12px}.work-card__links a,.work-card__links>span{background:var(--surface-floating);border:1px solid var(--line-bright);color:var(--text);font-family:var(--mono);text-transform:lowercase;align-items:center;gap:7px;padding:7px 9px;font-size:10px;text-decoration:none;transition:background-color .16s,color .16s,transform .16s;display:inline-flex}.work-card__links small{border-left:1px solid var(--line-medium);color:var(--muted);padding-left:7px;font-size:9px;font-weight:500;line-height:1}.work-card__links a[data-kind=code]{border-style:dashed}.work-card__links>span[data-pending]{color:var(--muted);background:0 0;border-style:dashed}.work-card__links a[data-kind=client],.work-card__links a[data-kind=site]{background:var(--surface-solid-soft)}.work-card__links a[data-kind=employer],.work-card__links a[data-kind=student],.work-card__links a[data-kind=policy],.work-card__links a[data-kind=case-study]{border-color:var(--line-bright)}.work-card__links a:hover,.work-card__links a:focus-visible{background:var(--text);color:var(--background);transform:translateY(-1px)}.work-card__links a:hover small,.work-card__links a:focus-visible small{border-color:color-mix(in srgb, var(--background) 45%, transparent);color:var(--background)}@keyframes work-card-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=860px){.work-summary,.work-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.work-card{transition:none;animation:none}.work-card__links a{transition:none}}
