.project-card[data-astro-cid-y2vllrex]{flex:0 0 var(--card-width,20rem);width:var(--card-width,20rem);scroll-snap-align:start;border:1px solid var(--border);background:var(--bg);border-radius:.75rem;flex-direction:column;max-width:100%;display:flex;overflow:hidden}@media (hover:hover) and (pointer:fine){.project-card[data-astro-cid-y2vllrex]{transition:transform .2s,box-shadow .2s}.project-card[data-astro-cid-y2vllrex]:hover{transform:translateY(-3px);box-shadow:0 6px 18px #0000001f}}@media (hover:hover) and (pointer:fine) and (prefers-color-scheme:dark){.project-card[data-astro-cid-y2vllrex]:hover{box-shadow:0 6px 18px #00000073}}@media (prefers-reduced-motion:reduce){.project-card[data-astro-cid-y2vllrex]{transition:none}.project-card[data-astro-cid-y2vllrex]:hover{box-shadow:none;transform:none}}.project-card__media[data-astro-cid-y2vllrex]{aspect-ratio:560/320;background:var(--border);width:100%;position:relative;overflow:hidden}.project-card__backdrop[data-astro-cid-y2vllrex]{object-fit:cover;filter:blur(14px)saturate(1.1);width:100%;height:100%;position:absolute;inset:0;transform:scale(1.15)}.project-card__image[data-astro-cid-y2vllrex]{object-fit:contain;width:100%;height:100%;display:block;position:relative}.project-card__placeholder[data-astro-cid-y2vllrex],.project-card__placeholder[data-astro-cid-y2vllrex] svg{width:100%;height:100%;display:block}.project-card__label[data-astro-cid-y2vllrex]{z-index:1;font-family:var(--font-mono);letter-spacing:.02em;text-transform:lowercase;background:var(--accent);color:var(--accent-fg);border-radius:.35rem;padding:.2rem .45rem;font-size:.7rem;font-weight:500;position:absolute;top:.5rem;right:.5rem}.project-card__body[data-astro-cid-y2vllrex]{flex-direction:column;flex:1;gap:.35rem;padding:.85rem .9rem 1rem;display:flex}.project-card__title[data-astro-cid-y2vllrex]{letter-spacing:-.01em;margin:0;font-size:.95rem;font-weight:600;line-height:1.35}.project-card__summary[data-astro-cid-y2vllrex]{color:var(--muted);margin:0;font-size:.8rem;line-height:1.4}.project-card__date[data-astro-cid-y2vllrex]{font-family:var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;margin:0;font-size:.7rem}.project-card__links[data-astro-cid-y2vllrex]{flex-direction:column;gap:.2rem;margin:.25rem 0 0;padding:0;list-style:none;display:flex}.project-card__link[data-astro-cid-y2vllrex]{margin:0;font-size:.8rem}.project-card__link[data-astro-cid-y2vllrex] a[data-astro-cid-y2vllrex]{color:inherit;border-radius:.15rem;align-items:center;gap:.3rem;text-decoration:none;display:inline-flex}.project-card__link-icon[data-astro-cid-y2vllrex]{width:1em;height:1em;color:var(--muted);flex-shrink:0;transition:color .15s;display:inline-flex}.project-card__link-icon[data-astro-cid-y2vllrex] svg{width:100%;height:100%;display:block}.project-card__link-label[data-astro-cid-y2vllrex]{color:var(--muted);text-underline-offset:.15em;text-decoration:underline;transition:color .15s}.project-card__link[data-astro-cid-y2vllrex] a[data-astro-cid-y2vllrex]:hover .project-card__link-icon[data-astro-cid-y2vllrex],.project-card__link[data-astro-cid-y2vllrex] a[data-astro-cid-y2vllrex]:focus-visible .project-card__link-icon[data-astro-cid-y2vllrex],.project-card__link[data-astro-cid-y2vllrex] a[data-astro-cid-y2vllrex]:hover .project-card__link-label[data-astro-cid-y2vllrex],.project-card__link[data-astro-cid-y2vllrex] a[data-astro-cid-y2vllrex]:focus-visible .project-card__link-label[data-astro-cid-y2vllrex]{color:var(--accent)}.project-card__link[data-astro-cid-y2vllrex] a[data-astro-cid-y2vllrex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.projects[data-astro-cid-gjd6qywn]{--projects-gutter:1.5rem;--projects-pad:max(var(--projects-gutter), calc((100vw - 38rem) / 2 + var(--projects-gutter)));--card-gap:.75rem;--card-peek:2.5rem;--card-max:20rem;--card-width:min(var(--card-max), calc(100vw - (2 * var(--projects-pad)) - var(--card-peek)));width:100vw;margin-bottom:3rem;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.projects__head[data-astro-cid-gjd6qywn]{padding:0 var(--projects-pad);margin-bottom:.75rem}.projects__title[data-astro-cid-gjd6qywn]{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700;font-family:var(--font-mono);margin:0 0 .75rem}.projects__filters[data-astro-cid-gjd6qywn]{flex-wrap:wrap;gap:.4rem;display:flex}.projects__chip[data-astro-cid-gjd6qywn]{appearance:none;font:inherit;color:var(--muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;margin:0;padding:.3rem .7rem;font-size:.8rem;transition:color .15s,border-color .15s,background .15s}.projects__chip[data-astro-cid-gjd6qywn]:hover{color:var(--fg);border-color:color-mix(in srgb, var(--accent) 40%, var(--border))}.projects__chip[data-astro-cid-gjd6qywn]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.projects__chip[data-astro-cid-gjd6qywn][aria-pressed=true]{color:var(--fg);border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:0 0}.projects__scroller[data-astro-cid-gjd6qywn]{gap:var(--card-gap);overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--projects-pad);-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;scrollbar-width:none;padding:.75rem var(--projects-pad) 1.25rem;display:flex;overflow-x:auto}.projects__item[data-astro-cid-gjd6qywn]{flex:0 0 var(--card-width);scroll-snap-align:start;min-width:0}.projects__item[data-astro-cid-gjd6qywn][hidden]{display:none}.projects__item[data-astro-cid-gjd6qywn] .project-card{scroll-snap-align:unset;flex:none;width:100%;max-width:none}.projects__scroller[data-astro-cid-gjd6qywn] .project-card{scroll-snap-stop:normal}@media (pointer:coarse){.projects__scroller[data-astro-cid-gjd6qywn] .project-card{scroll-snap-stop:always}}.projects__scroller[data-astro-cid-gjd6qywn]::-webkit-scrollbar{display:none}@media (hover:hover) and (pointer:fine){.projects__scroller[data-astro-cid-gjd6qywn]{cursor:grab;user-select:none}}.projects__scroller[data-astro-cid-gjd6qywn].is-dragging{cursor:grabbing}.projects__scroller[data-astro-cid-gjd6qywn].is-dragging a{pointer-events:none}.projects__scroller[data-astro-cid-gjd6qywn].is-snapless{scroll-snap-type:none}.projects__nav[data-astro-cid-gjd6qywn]{padding:0 var(--projects-pad);justify-content:flex-end;gap:.5rem;margin-top:-.5rem;display:none}@media (hover:hover) and (pointer:fine){.projects__nav[data-astro-cid-gjd6qywn]{display:flex}.projects__nav[data-astro-cid-gjd6qywn][hidden]{display:none}}.projects__arrow[data-astro-cid-gjd6qywn]{border:1px solid var(--border);background:var(--bg);width:2rem;height:2rem;color:var(--muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:color .15s,border-color .15s,transform .12s;display:inline-flex}.projects__arrow[data-astro-cid-gjd6qywn]:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.projects__arrow[data-astro-cid-gjd6qywn]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;color:var(--accent);border-color:var(--accent)}.projects__arrow[data-astro-cid-gjd6qywn]:active:not(:disabled){transform:scale(.95)}.projects__arrow[data-astro-cid-gjd6qywn]:disabled,.projects__arrow[data-astro-cid-gjd6qywn][aria-disabled=true]{opacity:.35;cursor:default}.projects__arrow-icon[data-astro-cid-gjd6qywn]{width:1.1rem;height:1.1rem;display:inline-flex}.projects__arrow-icon[data-astro-cid-gjd6qywn] svg{width:100%;height:100%;display:block}@media (prefers-reduced-motion:reduce){.projects__scroller[data-astro-cid-gjd6qywn]{scroll-behavior:auto}.projects__arrow[data-astro-cid-gjd6qywn],.projects__chip[data-astro-cid-gjd6qywn]{transition:none}.projects__arrow[data-astro-cid-gjd6qywn]:active:not(:disabled){transform:none}}*,:before,:after{box-sizing:border-box}:root{color-scheme:light dark;--bg:#fafafa;--fg:#111;--muted:#555;--border:#ddd;--link:#111;--link-hover:#555;--accent:#e35d05;--accent-fg:#fff;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--bg:#111;--fg:#f5f5f5;--muted:#aaa;--border:#333;--link:#f5f5f5;--link-hover:#aaa;--accent:#f59a56;--accent-fg:#111}}html{background:var(--bg);color:var(--fg);scroll-behavior:smooth;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;overflow-x:clip}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{justify-content:center;min-height:100dvh;margin:0;padding:3rem 1.5rem;display:flex;overflow-x:clip}main{width:100%;max-width:38rem}header{margin-bottom:3rem}.portrait-frame{clip-path:circle(50%);isolation:isolate;border-radius:50%;width:140px;height:140px;margin:0 0 1.25rem;display:block;position:relative;overflow:hidden}.portrait-frame:before{content:"";z-index:1;pointer-events:none;opacity:0;background:linear-gradient(115deg, transparent 38%, #ffffff5c 48%, color-mix(in srgb, var(--accent) 26%, transparent) 54%, transparent 64%);mix-blend-mode:soft-light;position:absolute;inset:-60% 0;transform:translateY(-35%)}.portrait{object-fit:cover;transform-origin:50% 22%;border-radius:50%;width:100%;height:100%;display:block;transform:scale(1.38)}@media (hover:hover) and (pointer:fine){.portrait-frame{transition:transform .25s cubic-bezier(.22,1,.36,1)}.portrait-frame:hover{transform:scale(1.03)}.portrait-frame:hover:before{animation:.7s ease-out holo-sweep}}@keyframes holo-sweep{0%{opacity:0;transform:translateY(-35%)}35%{opacity:1}to{opacity:0;transform:translateY(35%)}}@media (prefers-reduced-motion:reduce){.portrait-frame{transition:none}.portrait-frame:hover{transform:none}.portrait-frame:hover:before{animation:none}}h1{letter-spacing:-.02em;margin:0 0 .75rem;font-size:2.4rem;font-weight:700}.bio{color:var(--muted);margin:0 0 .4rem}.bio:last-of-type{margin-bottom:1.5rem}.section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700;font-family:var(--font-mono);margin:0 0 1rem}#work,#timeline,#contact{scroll-margin-top:1.25rem}nav#contact{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.contact-item{align-items:center;gap:.4rem;display:inline-flex}.contact-prefix{color:var(--muted)}@media (hover:hover) and (pointer:fine){.contact-item:hover .contact-prefix{background:linear-gradient(115deg, var(--muted) 40%, color-mix(in srgb, #fff 45%, var(--muted)) 47%, color-mix(in srgb, var(--accent) 65%, var(--muted)) 53%, var(--muted) 60%);color:#0000;background-position:100% 0;background-size:300% 100%;background-clip:text;animation:.7s ease-out prefix-sheen}}@keyframes prefix-sheen{0%{background-position:0 0}to{background-position:100% 0}}@media (prefers-reduced-motion:reduce){.contact-item:hover .contact-prefix{color:var(--muted);background:0 0;animation:none}}nav#contact a{color:inherit;border-radius:.2rem;text-decoration:none}nav#contact a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.contact-link__label{color:var(--accent);text-underline-offset:.2em;text-decoration:underline;transition:color .15s}.contact-link--primary{color:var(--fg);border:1px solid var(--border);background:0 0;border-radius:999px;gap:.45rem;padding:.35rem .85rem;transition:color .15s,border-color .15s,background .15s}.contact-link--primary .nav-icon{color:var(--muted)}.contact-link--primary .contact-link__label{color:var(--fg);font-weight:500;text-decoration:none}.contact-link--primary:hover,.contact-link--primary:focus-visible{border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.contact-link--primary:hover .nav-icon,.contact-link--primary:focus-visible .nav-icon,.contact-link--primary:hover .contact-link__label,.contact-link--primary:focus-visible .contact-link__label{color:var(--accent)}.contact-item:not(.contact-link--primary) .contact-link__label{color:var(--muted);text-decoration:underline}.contact-item:not(.contact-link--primary):hover .contact-link__label,.contact-item:not(.contact-link--primary):focus-visible .contact-link__label{color:var(--accent)}.nav-icon{width:1.1em;height:1.1em;color:var(--muted);flex-shrink:0;transition:color .15s;display:inline-flex}.contact-item:hover .nav-icon,.contact-item:focus-visible .nav-icon{color:var(--accent)}.nav-icon svg{width:100%;height:100%;display:block}.timeline{margin-top:.5rem}.timeline-era{margin:0 0 1.25rem}.timeline-era:last-child{margin-bottom:0}.timeline-era__summary{cursor:pointer;border-radius:.2rem;align-items:center;gap:.5rem;margin:0 0 .85rem;padding:.15rem 0;list-style:none;display:flex}.timeline-era__summary::-webkit-details-marker{display:none}.timeline-era__summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.timeline-era__title{font-family:var(--font-mono);color:var(--fg);font-size:.875rem;font-weight:600}.timeline-era__summary:hover .timeline-era__title,.timeline-era__summary:focus-visible .timeline-era__title,.timeline-era[open]>.timeline-era__summary .timeline-era__title{color:color-mix(in srgb, var(--accent) 55%, var(--fg))}.timeline-era>.timeline-era__summary .chevron{transform-origin:50%;opacity:.7;width:.45em;height:.45em;color:var(--muted);border-bottom:1.5px solid;border-right:1.5px solid;flex-shrink:0;transition:transform .15s,color .15s,opacity .15s;transform:rotate(45deg)}.timeline-era[open]>.timeline-era__summary .chevron{color:color-mix(in srgb, var(--accent) 55%, var(--fg));opacity:1;transform:rotate(225deg)}.timeline-era>ol{border-left:1px solid var(--border);margin:0;padding:0;list-style:none}.timeline-era>ol>li{grid-template-columns:5.5rem 1fr;gap:1rem;padding:0 0 1.25rem 1.25rem;display:grid;position:relative}.timeline-era>ol>li:last-child{padding-bottom:0}.timeline-era>ol>li:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:.55em;left:-3.5px}.timeline .year-group{padding-bottom:1.25rem;display:block}.timeline .year-group:last-child{padding-bottom:0}.timeline .year-group:before{top:.55em}.timeline .year-group>details{margin:0}.timeline .year-group>details>summary{cursor:pointer;border-radius:.2rem;grid-template-columns:5.5rem 1fr;gap:1rem;list-style:none;display:grid}.timeline .year-group>details>summary::-webkit-details-marker{display:none}.timeline .year-group>details>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.timeline summary .overview{align-items:flex-start;gap:.5rem;transition:color .15s;display:flex}.timeline .year-group>details:not([open])>summary .overview{color:var(--muted)}.timeline .year-group>details:not([open])>summary .chevron{opacity:.9;color:var(--muted)}.timeline .year-group>details>summary:hover .overview,.timeline .year-group>details>summary:focus-visible .overview,.timeline .year-group>details>summary:hover .year,.timeline .year-group>details>summary:focus-visible .year,.timeline .year-group>details[open]>summary .year{color:color-mix(in srgb, var(--accent) 55%, var(--fg))}.timeline .year-group>details[open]>summary .overview{color:var(--fg)}.timeline .year-group .chevron{transform-origin:50%;opacity:.7;border-bottom:1.5px solid;border-right:1.5px solid;flex-shrink:0;width:.45em;height:.45em;margin-top:.45em;transition:transform .15s,color .15s,opacity .15s;transform:rotate(45deg)}.timeline .year-group>details[open]>summary .chevron{color:color-mix(in srgb, var(--accent) 55%, var(--fg));opacity:1;margin-top:.55em;transform:rotate(225deg)}.timeline .year-group>details>ol{margin:.75rem 0 0 -1.25rem;padding:0;list-style:none}.timeline .year-group>details>ol>li{grid-template-columns:5.5rem 1fr;gap:1rem;padding:0 0 1rem 1.25rem;display:grid;position:relative}.timeline .year-group>details>ol>li:last-child{padding-bottom:0}.timeline .year-group>details>ol>li:before{content:"";border:1.5px solid var(--accent);box-sizing:border-box;background:0 0;border-radius:50%;width:5px;height:5px;position:absolute;top:.55em;left:-3.5px}.year{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--muted);font-size:.875rem;line-height:1.5}.event{font-size:.95rem;line-height:1.5}.event-marker{margin-right:.35em}.event-marker--icon{vertical-align:-.125em;width:1em;height:1em;color:var(--muted);display:inline-flex}.event-marker--icon svg{width:100%;height:100%}.event-link{color:inherit;text-underline-offset:.15em;text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--muted) 55%, transparent);transition:color .15s,text-decoration-color .15s}.event-link:hover,.event-link:focus-visible{color:var(--accent);text-decoration-color:var(--accent)}.event-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.timeline .chevron,.timeline summary .overview{transition:none}}@media (width<=480px){.timeline-era>ol>li,.timeline .year-group>details>summary,.timeline .year-group>details>ol>li{grid-template-columns:1fr;gap:.25rem}}
