body[data-route=\/projects]{background:#030404}body[data-route=\/projects] .site-footer{display:none}.projects-v2{--projects-earth-top:clamp(182px, 20svh, 258px);--projects-earth-safe:clamp(112px, 18svh, 210px);isolation:isolate;color:#dce3e4;background:#030404;min-height:100svh;position:relative;overflow:hidden}.projects-v2:before{z-index:-2;content:"";pointer-events:none;background:radial-gradient(circle at 52% 36%,#172b3133,#0000 35%),linear-gradient(90deg,#01030414,#02040557);position:absolute;inset:0}.projects-v2__space{z-index:-3;position:absolute;inset:0}.projects-v2__space img{object-fit:cover;opacity:.9;width:100%;height:100%;display:block}.projects-v2 .projects-v2__earth{z-index:-1;top:var(--projects-earth-top);width:auto;height:calc(100svh - var(--projects-earth-top));aspect-ratio:256/1152;opacity:.94;filter:saturate(.96)brightness(.94);pointer-events:none;user-select:none;position:absolute;left:0}.projects-v2 .projects-earth picture,.projects-v2 .projects-earth__fallback,.projects-v2 .projects-earth__motion{width:100%;height:100%;display:block;position:absolute;inset:0}.projects-v2 .projects-earth__fallback,.projects-v2 .projects-earth__motion{object-fit:contain;transform:translateZ(0)}.projects-v2 .projects-earth__motion{z-index:2;opacity:0;will-change:opacity}.projects-v2 .projects-earth__fallback{z-index:1;opacity:1}.projects-v2 .projects-earth.is-motion-ready .projects-earth__motion{opacity:1}.projects-v2 .projects-earth.is-motion-ready .projects-earth__fallback{opacity:0}.projects-v2 .projects-earth.has-static-earth .projects-earth__motion{display:none}.projects-v2__workbench{z-index:2;width:min(1060px,100vw - 120px);margin:0 auto;padding:clamp(118px,13svh,138px) 0 250px;position:relative}.projects-v2__header{color:#a8c4ce;border-bottom:1px solid #84afbc33;justify-content:space-between;align-items:center;gap:20px;margin:0 0 12px;padding-bottom:12px;display:flex}.projects-v2__header h1{color:#a8c4ce;font:16px/1.2 var(--mono);letter-spacing:.08em;margin:0;font-weight:450}.projects-v2__header h1 span{color:#d7e3e6;margin-right:14px}.projects-v2__header-actions{align-items:center;gap:18px;min-width:0;display:flex}.projects-v2__header-actions>span{color:#b0c7cdb8;font:11px/1 var(--mono);letter-spacing:.16em;flex:none}.archive-search--projects{backdrop-filter:blur(6px);background:#03060794;border:1px solid #92abb238;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:9px;width:min(250px,100%);height:34px;margin:0;padding:0 11px;transition:border-color .18s,background .18s,box-shadow .18s;display:grid}.archive-search--projects:focus-within{background:#070c0ee0;border-color:#71bad99e;box-shadow:0 0 0 3px #4b98b51a}.archive-search--projects svg{fill:none;stroke:#8ca5ad;stroke-width:1.45px;width:16px;height:16px}.archive-search--projects input{color:#dce3e4;min-width:0;font:12px/1.4 var(--mono);background:0 0;border:0;outline:0;padding:0}.archive-search--projects input::placeholder{color:#aec2c87a}.archive-search--projects kbd{color:#aec2c88a;font:10px/1 var(--mono)}.projects-v2 .project-card-grid{view-transition-name:project-results;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;max-height:calc(100dvh - 380px);margin:0;padding:8px 0 0;scroll-padding-top:8px;display:grid;overflow-y:auto}.projects-v2 .project-card{color:#dce3e4;min-width:0;min-height:146px;box-shadow:none;backdrop-filter:blur(8px);background:#040708ab;border:1px solid #96acb42e;border-radius:0;grid-template-rows:auto 1fr auto;padding:18px 20px 16px;text-decoration:none;transition:border-color .18s,background .18s,transform .18s;display:grid;position:relative;overflow:hidden}.projects-v2 .project-card:before,.projects-v2 .project-card:after{display:none}.projects-v2 .project-card:hover,.projects-v2 .project-card:focus-visible{color:#f0f4f4;box-shadow:none;background:#070c0ed4;border-color:#87bed27a;transform:translateY(-2px)}.projects-v2 .project-card:focus-visible{outline-offset:3px;outline:1px solid #7abed9c2}.projects-v2 .project-card__title{align-items:flex-start;gap:10px;margin:0;display:flex}.projects-v2 .project-card__github-mark{fill:#dee7e8e0;flex:none;width:20px;height:20px;margin-top:1px}.projects-v2 .project-card__title>div{min-width:0}.projects-v2 .project-card__title h2{color:#e5ebeb;font:16px/1.28 var(--sans);letter-spacing:.01em;margin:0;font-weight:620}.projects-v2 .project-card__title span{color:#9cb1b794;font:11px/1.2 var(--mono);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;display:block;overflow:hidden}.projects-v2 .project-card>p{color:#c3cfd1b8;font:12.5px/1.55 var(--sans);align-self:center;margin:10px 0}.projects-v2 .project-card footer{color:#a9bbc0ad;font:10px/1.2 var(--mono);align-items:center;gap:12px;display:flex}.projects-v2 .project-card footer span:first-child:before{content:"";background:#64bce5;border-radius:50%;width:7px;height:7px;margin-right:8px;display:inline-block;box-shadow:0 0 8px #64bce53d}.projects-v2 .project-card footer i{color:#dbe9eb;margin-left:auto;font-size:15px;font-style:normal;transition:transform .18s}.projects-v2 .project-card:hover footer i,.projects-v2 .project-card:focus-visible footer i{transform:translate(2px,-2px)}.projects-v2 .archive-empty{color:#bcccd0ad;place-content:center;justify-items:center;gap:14px;min-height:245px;padding:0;display:grid}.projects-v2 .archive-empty p{font:16px/1.5 var(--sans);margin:0}.projects-v2 .archive-empty a{color:#9ec8d6}.projects-v2 .archive-pagination{color:#aec3c9ad;width:min(430px,100%);font:11px/1.2 var(--mono);white-space:nowrap;grid-template-columns:minmax(86px,1fr) auto minmax(86px,1fr);align-items:center;gap:20px;margin:14px auto 0;padding-top:0;display:grid}.projects-v2 .archive-pagination>:last-child{justify-self:end}.projects-v2 .archive-pagination a{color:inherit;text-decoration:none}.projects-v2 .archive-pagination a:hover,.projects-v2 .archive-pagination a:focus-visible{color:#b8dce7}.projects-v2 .archive-pagination>span[aria-disabled=true]{opacity:.32}.projects-v2 .archive-pagination ol{gap:6px;margin:0;padding:0;list-style:none;display:flex}.projects-v2 .archive-pagination ol.archive-pagination__pages--compact{display:none}.projects-v2 .archive-pagination ol a,.projects-v2 .archive-pagination ol span{place-items:center;width:28px;height:25px;display:grid}.projects-v2 .archive-pagination [aria-current=page]{color:#dce9eb;position:relative}.projects-v2 .archive-pagination [aria-current=page]:after{content:"";background:#b98531;height:1px;position:absolute;bottom:0;left:5px;right:5px}.activity-orbit{z-index:3;pointer-events:none;height:248px;position:absolute;bottom:0;left:0;right:0}.activity-orbit__heading{display:none}.activity-orbit__line{z-index:0;width:100%;height:100%;clip-path:inset(0 0 0 var(--projects-earth-safe));position:absolute;inset:0}.activity-orbit__line path{fill:none;stroke:#adc6cdb3;stroke-width:1px;filter:drop-shadow(0 0 2px #6fb0c533);vector-effect:non-scaling-stroke}.activity-orbit__days{z-index:2;margin:0;padding:0;list-style:none;position:absolute;inset:0}.activity-orbit__day{top:var(--node-top);left:var(--node-left);pointer-events:auto;width:0;height:0;position:absolute}.activity-orbit__trigger{z-index:2;width:28px;height:28px;color:inherit;cursor:pointer;background:0 0;border:0;outline:none;padding:0;position:absolute;top:-14px;left:-14px}.activity-orbit__dot{filter:brightness(.92);transform-origin:50%;background:url(/assets/projects-activity-star-cyan.png) 50%/contain no-repeat;width:22px;height:22px;transition:filter .16s,transform .16s;position:absolute;top:3px;left:3px}.activity-orbit__day.is-current .activity-orbit__dot{background-image:url(/assets/projects-activity-star-amber.png);width:24px;height:24px;top:2px;left:2px}.activity-orbit__trigger:focus-visible .activity-orbit__dot{outline-offset:4px;border-radius:50%;outline:1px solid #97d0e4e6}.activity-orbit__trigger:hover .activity-orbit__dot,.activity-orbit__trigger:focus-visible .activity-orbit__dot,.activity-orbit__day[data-open=true] .activity-orbit__dot{filter:brightness(1.14);transform:scale(1.06)}.activity-orbit__summary{color:#b1c1c6d1;text-align:left;pointer-events:none;gap:3px;width:clamp(142px,11.5vw,188px);transition:color .16s;display:grid;position:absolute;bottom:36px;left:14px}.activity-orbit__day[data-summary-side=below] .activity-orbit__summary{top:36px;bottom:auto}.activity-orbit__day[data-align=center] .activity-orbit__summary{transform:translate(-50%)}.activity-orbit__day[data-align=end] .activity-orbit__summary{left:auto;right:14px}.activity-orbit__trigger:hover .activity-orbit__summary,.activity-orbit__trigger:focus-visible .activity-orbit__summary,.activity-orbit__day[data-open=true] .activity-orbit__summary{color:#cedcdff5}.activity-orbit__summary time,.activity-orbit__summary strong,.activity-orbit__summary small{display:block}.activity-orbit__summary time{color:#b4cdd3c7;font:10px/1.2 var(--mono);letter-spacing:.06em}.activity-orbit__summary strong{color:#d4a24c;font:11px/1.3 var(--sans);font-weight:620}.activity-orbit__summary small{color:#adc0c5b3;font:10px/1.35 var(--mono);overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.activity-orbit__detail{z-index:12;color:#dce7e9;opacity:0;visibility:hidden;pointer-events:none;backdrop-filter:blur(12px);background:#03080af5;border:1px solid #89bbcb6b;width:min(352px,100vw - 32px);max-height:min(430px,100svh - 150px);padding:18px 20px 17px;transition:opacity .16s,transform .18s,visibility .16s;position:absolute;bottom:48px;left:0;overflow-y:auto;transform:translate(-50%,8px);box-shadow:0 18px 54px #00000094,inset 0 1px #d8e9ed0a}.activity-orbit__detail:before{content:"";background:#d3a04a;width:58px;height:1px;position:absolute;top:-1px;left:18px;box-shadow:0 0 12px #d3a04a6b}.activity-orbit__day[data-align=start] .activity-orbit__detail{left:-10px;transform:translateY(8px)}.activity-orbit__day[data-align=end] .activity-orbit__detail{left:auto;right:-10px;transform:translateY(8px)}.activity-orbit__day[data-open=true]{z-index:20}.activity-orbit__day[data-open=true] .activity-orbit__detail{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%)}.activity-orbit__day[data-align=start][data-open=true] .activity-orbit__detail,.activity-orbit__day[data-align=end][data-open=true] .activity-orbit__detail{transform:translate(0)}.activity-orbit__detail-header{border-bottom:1px solid #83b1bf33;justify-content:space-between;align-items:center;gap:14px;margin-bottom:2px;padding-bottom:12px;display:flex}.activity-orbit__detail-header time,.activity-orbit__detail-header strong{color:#b2ccd3b8;font:10px/1.2 var(--mono);letter-spacing:.08em}.activity-orbit__detail-header strong{color:#d3a04a;font-weight:620}.activity-orbit__records{margin:0;padding:0;list-style:none}.activity-orbit__record{margin:0;padding:15px 0 14px;position:relative}.activity-orbit__record+.activity-orbit__record{border-top:1px solid #83b1bf29}.activity-orbit__record-meta{color:#a6c3cbad;font:10px/1.2 var(--mono);letter-spacing:.05em;align-items:center;gap:8px;margin:0 0 8px;display:flex}.activity-orbit__record-meta span:last-child{color:#d3a04a}.activity-orbit__record h3{color:#e5edef;font:15px/1.42 var(--sans);margin:0 0 7px;font-weight:620}.activity-orbit__record>p:not(.activity-orbit__record-meta){color:#c0cfd3c7;font:12px/1.65 var(--sans);margin:0}.activity-orbit__record a{color:#91c7d8db;font:10px/1.2 var(--mono);margin-top:11px;text-decoration:none;display:inline-block}.activity-orbit__record a:hover,.activity-orbit__record a:focus-visible{color:#c2e4ee}.activity-orbit__record a:focus-visible{outline-offset:4px;outline:1px solid #91c7d8ad}.activity-orbit__empty{color:#aec0c57a;font:11px/1.3 var(--mono);letter-spacing:.1em;margin:0;position:absolute;top:60px;right:clamp(220px,20vw,330px)}.activity-orbit__satellite{aspect-ratio:1;pointer-events:auto;width:clamp(138px,10.8vw,174px);position:absolute;top:clamp(-136px,-8.5vw,-104px);right:clamp(6px,1.2vw,24px)}.projects-satellite{width:100%;height:100%;color:inherit;cursor:pointer;background:0 0;border:0;padding:0;display:block;position:relative}.projects-satellite:focus-visible{outline-offset:5px;outline:1px solid #86c5ddb8}.projects-satellite img{object-fit:contain;opacity:.86;filter:brightness(.84)contrast(1.06);width:100%;height:100%;transition:opacity .18s,filter .18s;display:block}.projects-satellite:hover img,.projects-satellite:focus-visible img{opacity:1;filter:brightness()contrast(1.04)}.projects-satellite svg{fill:none;stroke:#c48f38;stroke-width:1.2px;width:86px;position:absolute;bottom:59%;right:73%;overflow:visible}.projects-satellite__signal{opacity:0;stroke-dasharray:1;stroke-dashoffset:1px}html[data-page-settled=true] .activity-orbit__day{animation:orbit-node-in .24s calc(.3s + var(--node-index,0) * 70ms) ease-out both}.projects-satellite.is-signaling img{animation:.72s cubic-bezier(.22,.8,.28,1) satellite-double-bob}.projects-satellite.is-signaling .projects-satellite__signal--one{animation:.42s ease-out both satellite-signal}.projects-satellite.is-signaling .projects-satellite__signal--two{animation:.42s ease-out .12s both satellite-signal}.activity-orbit__day.is-located .activity-orbit__dot{animation:.62s ease-out latest-activity-pulse}@keyframes orbit-node-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes satellite-double-bob{0%,to{transform:translateY(0)}24%{transform:translateY(-8px)}48%{transform:translateY(0)}70%{transform:translateY(-4px)}88%{transform:translateY(0)}}@keyframes satellite-signal{0%{opacity:.7;stroke-dashoffset:1px}to{opacity:0;stroke-dashoffset:0}}@keyframes latest-activity-pulse{0%{filter:brightness(1.5)drop-shadow(0 0 #d7a44a00);transform:scale(1)}55%{filter:brightness(1.35)drop-shadow(0 0 8px #d7a44ab8);transform:scale(1.18)}to{filter:brightness(.92)drop-shadow(0 0 14px #d7a44a00);transform:scale(1)}}@media (prefers-reduced-motion:reduce){.activity-orbit__day,.projects-satellite img,.projects-satellite__signal,.activity-orbit__dot{transition:none;animation:none!important;transform:none!important}.activity-orbit__day.is-located .activity-orbit__dot{filter:brightness(1.25)}.activity-orbit__detail{transition:none}}@media (width<=1199px){.projects-v2__workbench{width:min(860px,100vw - 64px);padding-bottom:278px}}@media (width<=900px){.projects-v2__workbench{width:min(680px,100vw - 48px);padding-bottom:300px}.projects-v2 .project-card-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=767px){.projects-v2{min-height:100svh;overflow:clip visible}.projects-v2__space{height:100svh;bottom:auto}.projects-v2__workbench{width:calc(100vw - 32px);padding:112px 0 32px}.projects-v2__header{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:10px;display:grid}.projects-v2__header h1{font-size:15px}.projects-v2__header-actions,.archive-search--projects{width:100%}.archive-search--projects{min-height:44px;margin-inline:0}.archive-search--projects input{align-self:stretch;min-height:44px}.projects-v2__header-actions>span{display:none}.projects-v2 .project-card-grid{grid-template-columns:minmax(0,1fr);gap:10px;max-height:none;overflow:visible}.projects-v2 .project-card{min-height:0;padding:16px}.projects-v2 .projects-v2__earth{--projects-earth-top:104px;z-index:-1;opacity:.22;height:min(52svh,440px)}.projects-v2 .archive-pagination{grid-template-columns:minmax(44px,1fr) minmax(0,auto) minmax(44px,1fr);gap:clamp(4px,2vw,8px);width:100%}.projects-v2 .archive-pagination>a,.projects-v2 .archive-pagination>span,.projects-v2 .archive-pagination ol a,.projects-v2 .archive-pagination ol span{min-width:44px;min-height:44px}.projects-v2 .archive-pagination>a,.projects-v2 .archive-pagination>span{align-items:center;display:flex}.projects-v2 .archive-pagination ol{gap:4px;min-width:0}.projects-v2 .archive-pagination ol.archive-pagination__pages--full{display:none}.projects-v2 .archive-pagination ol.archive-pagination__pages--compact{display:flex}.projects-v2 .archive-pagination ol a,.projects-v2 .archive-pagination ol span{width:44px;height:44px}.projects-v2 .archive-pagination ol .archive-pagination__ellipsis{width:12px;min-width:12px}.activity-orbit{width:auto;height:auto;margin:22px 0 0 18px;padding:0 0 38px 20px;position:relative;bottom:auto;left:auto;right:auto}.activity-orbit__heading{margin:0 0 16px -18px;display:block}.activity-orbit__line{display:none}.activity-orbit__days{border-left:1px solid #adbec46b;gap:18px;display:grid;position:relative}.activity-orbit__day{width:auto;height:auto;padding-left:22px;position:relative;inset:auto;transform:none}.activity-orbit__trigger{text-align:left;width:100%;height:auto;min-height:44px;display:block;position:relative;inset:auto}.activity-orbit__dot{top:3px;left:-30px}.activity-orbit__day.is-current .activity-orbit__dot{top:2px;left:-31px}.activity-orbit__summary,.activity-orbit__day[data-align=start] .activity-orbit__summary,.activity-orbit__day[data-align=center] .activity-orbit__summary,.activity-orbit__day[data-align=end] .activity-orbit__summary{width:min(100%,420px);position:relative;inset:auto;transform:none}html[data-page-settled=true] .activity-orbit__day{animation-name:orbit-node-in-mobile}.activity-orbit__summary small{max-width:calc(100vw - 120px)}.activity-orbit__detail,.activity-orbit__day[data-align=start] .activity-orbit__detail,.activity-orbit__day[data-align=end] .activity-orbit__detail{width:calc(100% - 8px);max-height:none;margin:12px 0 4px;position:relative;inset:auto;transform:translateY(6px)}.activity-orbit__day[data-open=true] .activity-orbit__detail,.activity-orbit__day[data-align=start][data-open=true] .activity-orbit__detail,.activity-orbit__day[data-align=end][data-open=true] .activity-orbit__detail{transform:translateY(0)}.activity-orbit__empty{padding:16px 0 28px 20px;position:relative;inset:auto}.activity-orbit__satellite{width:96px;margin:22px 0 0 auto;position:relative;inset:auto}}@media (width<=480px){.archive-search--projects kbd{display:none}.projects-v2 .archive-pagination{gap:8px}.projects-v2 .archive-pagination>a span,.projects-v2 .archive-pagination>span>span{display:none}}@keyframes orbit-node-in-mobile{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
