.ascii-avatar{inline-size:min(100%, var(--ascii-size,420px));max-inline-size:var(--ascii-size,420px);line-height:0;display:block}.ascii-avatar__canvas{aspect-ratio:1;cursor:crosshair;filter:var(--ascii-glow);touch-action:none;inline-size:100%;display:block}.ascii-avatar__source{block-size:auto;inline-size:100%;display:none}.home-page{min-height:calc(100vh - 64px);position:relative;overflow:hidden}.hero-console{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);align-items:center;gap:10px;margin-top:clamp(18px,2.4vw,28px);padding:9px 11px;font-size:12px;display:inline-flex}.hero-console__dot{background:var(--text);block-size:7px;box-shadow:0 0 0 0 var(--pulse-ring);border-radius:999px;inline-size:7px;animation:1.8s ease-in-out infinite pulse-dot}.hero-actions{flex-wrap:wrap;gap:10px;margin-top:clamp(18px,2.8vw,30px);display:flex}.hero-action,.section-link,.contact-link{text-decoration:none}.hero-action,.section-link{border:1px solid var(--line);color:var(--text);font-family:var(--mono);padding:10px 12px;font-size:12px;transition:background-color .18s,border-color .18s,color .18s,transform .18s}.hero-action:hover,.hero-action:focus-visible,.section-link:hover,.section-link:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-2px)}.home-strip{border-bottom:1px solid var(--line-medium);border-top:1px solid var(--line-medium);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.home-strip p{border-right:1px solid var(--line-soft);color:var(--muted);font-family:var(--mono);gap:4px;min-block-size:68px;margin:0;padding:15px 16px;font-size:11px;display:grid}.home-strip p:last-child{border-right:0}.home-strip strong{color:var(--text);font-size:14px;font-weight:600}.home-section{padding-top:clamp(44px,6.5vw,76px);padding-bottom:clamp(44px,6.5vw,76px)}.home-section+.home-section{border-top:1px solid var(--line-soft)}.section-heading{max-width:680px;margin-bottom:clamp(22px,4vw,40px)}.section-heading--split{justify-content:space-between;align-items:end;gap:24px;max-width:none;display:flex}.section-command,.project-card__meta,.timeline-item p{color:var(--muted);font-family:var(--mono);letter-spacing:0;margin:0;font-size:11px}.section-heading h2{color:var(--text);font-family:var(--display);letter-spacing:0;margin:10px 0 0;font-size:clamp(26px,4.2vw,50px);line-height:1}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.project-card,.timeline-item{border:1px solid var(--line-medium);min-inline-size:0;transition:background-color .18s,border-color .18s,transform .18s;position:relative;overflow:hidden}.project-card:before,.timeline-item: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}.project-card:hover,.project-card:focus-within,.timeline-item:hover,.timeline-item:focus-within{background:var(--panel);border-color:var(--line-bright);transform:translateY(-3px)}.project-card:hover:before,.project-card:focus-within:before,.timeline-item:hover:before,.timeline-item:focus-within:before{opacity:.72}.project-card{flex-direction:column;gap:14px;min-block-size:240px;padding:clamp(18px,2.6vw,24px);display:flex}.project-card__meta{justify-content:space-between;align-items:center;gap:10px;display:flex}.project-card__context{border-left:1px solid var(--line-soft);gap:5px;padding-left:12px;display:grid}.project-card__context span{color:var(--text);font-family:var(--mono);font-size:11px}.project-card__context small{color:var(--muted);font-size:12px;line-height:1.45}.project-card__links{flex-wrap:wrap;gap:6px;display:flex}.project-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:6px 8px;font-size:10px;text-decoration:none;transition:background-color .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.project-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}.project-card__links a[data-kind=code]{border-style:dashed}.project-card__links a[data-kind=client],.project-card__links a[data-kind=site]{background:var(--surface-solid-soft)}.project-card__links a[data-kind=employer],.project-card__links a[data-kind=case-study]{border-color:var(--line-bright)}.project-card__links a:hover,.project-card__links a:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-1px)}.project-card__links a:hover small,.project-card__links a:focus-visible small{border-color:color-mix(in srgb, var(--background) 45%, transparent);color:var(--background)}.project-card h3,.timeline-item h3{color:var(--text);font-family:var(--display);letter-spacing:0;margin:0;font-size:clamp(19px,2.1vw,26px);line-height:1.08}.project-card>p,.timeline-item small{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.project-card__stack{border-top:1px solid var(--line-soft);margin:auto 0 0;padding:12px 0 0}.timeline-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.timeline-item{gap:7px;padding:clamp(16px,2.4vw,22px);display:grid}.timeline-item:hover{transform:translateY(-3px)}.timeline-item strong{color:var(--text);font-family:var(--mono);font-size:12px;font-weight:500}.timeline-item span{color:var(--muted);font-family:var(--mono);margin:0;font-size:11px}.timeline-item .tech-stack{margin-top:4px}.timeline-item__links{flex-wrap:wrap;gap:7px;margin-top:4px;display:flex}.timeline-item__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-item__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-item__links a[data-kind=employer],.timeline-item__links a[data-kind=student],.timeline-item__links a[data-kind=case-study]{border-color:var(--line-bright)}.timeline-item__links a:hover,.timeline-item__links a:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-1px)}.timeline-item__links a:hover small,.timeline-item__links a:focus-visible small{border-color:color-mix(in srgb, var(--background) 45%, transparent);color:var(--background)}.contact-panel{border-bottom:1px solid var(--line-soft)}.contact-grid{border-top:1px solid var(--line-medium);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.contact-link{border-bottom:1px solid var(--line);border-right:1px solid var(--line);color:var(--text);font-family:var(--mono);gap:7px;min-inline-size:0;padding:16px;transition:background-color .18s,border-color .18s,color .18s,transform .18s;display:grid}.contact-link:last-child{border-right:0}.contact-link span{color:var(--muted);font-size:11px}.contact-link strong{overflow-wrap:anywhere;font-size:clamp(12px,1.4vw,14px);font-weight:500}.contact-link:hover,.contact-link:focus-visible{background:var(--text);border-color:var(--text);color:var(--background);transform:translateY(-2px)}.contact-link:hover span,.contact-link:focus-visible span{color:var(--inverse-muted)}@keyframes pulse-dot{0%{box-shadow:0 0 0 0 var(--pulse-ring)}70%,to{box-shadow:0 0 0 8px var(--pulse-ring-fade)}}@media (width<=920px){.home-strip,.work-grid,.timeline-list,.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-strip p,.contact-link{border-bottom:1px solid var(--line)}.contact-link:nth-child(2n){border-right:0}}@media (width<=680px){.home-page{min-height:calc(100vh - 96px)}.hero-actions,.section-heading--split{flex-direction:column;align-items:stretch}.hero-action,.section-link{inline-size:100%}.home-strip,.work-grid,.timeline-list,.contact-grid{grid-template-columns:1fr}.home-strip p,.contact-link{border-right:0}.project-card{min-block-size:auto}}@media (prefers-reduced-motion:reduce){.hero-console__dot{animation:none}.hero-action,.section-link,.project-card,.timeline-item,.contact-link,.project-card__links a,.timeline-item__links a{transition:none}}
