@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/me/fonts/jetbrains-mono-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/me/fonts/jetbrains-mono-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-weight:200 800;font-display:swap;src:url(/me/fonts/atkinson-hyperlegible-next-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-weight:200 800;font-display:swap;src:url(/me/fonts/atkinson-hyperlegible-next-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--sans:"Atkinson Hyperlegible Next", ui-sans-serif, system-ui, -apple-system, sans-serif;--fs-display:clamp(2.2rem, 4.4vw, 3.8rem);--fs-h2:clamp(1.9rem, 5.6vw, 3.1rem);--fs-h3:1.34rem;--fs-lead:clamp(1.02rem, 2.2vw, 1.16rem);--fs-body:1.02rem;--fs-small:.94rem;--fs-chrome:.8rem;--fs-label:.72rem;--fs-micro:.66rem;--lh-body:1.72;--measure:68ch;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-section:clamp(72px, 12vw, 148px);--radius:10px;--radius-control:8px;--maxw:1180px;--gutter:clamp(16px, 4vw, 40px);--bar-h:128px;--ease:cubic-bezier(.22, .68, .24, 1);--dur-fast:.2s;--dur-base:.42s;--dur-slow:.55s;--z-bar:90;--z-scan:9998;--z-boot:9999}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0e09;--bg-panel:#0d120c;--bg-raise:#121a10;--ghost:#1a2a17;--faint:#1f3a1a;--dim:#2f6b26;--mid:#5fbf4f;--bright:#41ff3a;--hot:#b6ffaf;--ink:#dcf2d5;--ink-soft:#a3c49a;--rule:#284d22;--rule-soft:#1a2a17;--rule-strong:#3f8a35;--glow:#41ff3a1a;--scan:#41ff3a08;--shadow:0 18px 50px -28px #000000e6}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fafcf6;--bg-panel:#fdfefb;--bg-raise:#f1f7e9;--ghost:#e5f0d9;--faint:#d4e8c2;--dim:#9cc982;--mid:#2d6a1e;--bright:#1d5c10;--hot:#113d08;--ink:#152510;--ink-soft:#45613b;--rule:#bdd9a9;--rule-soft:#e3eed7;--rule-strong:#6c9a58;--glow:#1d5c1012;--scan:#1d5c1005;--shadow:0 18px 50px -32px #1d5c1047}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--bar-h);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}body:before{content:"";z-index:var(--z-scan);pointer-events:none;background:repeating-linear-gradient(to bottom, var(--scan) 0 1px, transparent 1px 3px);position:fixed;inset:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}h1,h2,h3{text-wrap:balance;margin:0;font-weight:700;line-height:1.12}p{text-wrap:pretty;margin:0}dl,dd{margin:0}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}ul,ol{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--bright);outline-offset:3px;border-radius:4px}::selection{background:var(--bright);color:var(--bg)}.chrome{font-family:var(--mono);font-size:var(--fs-chrome);letter-spacing:.14em;text-transform:uppercase}.label{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.2em;text-transform:uppercase;color:var(--mid)}.mono{font-family:var(--mono)}.shell{width:100%;max-width:var(--maxw);padding-inline:var(--gutter);margin-inline:auto}.leader{font-family:var(--mono);font-size:var(--fs-chrome);align-items:baseline;gap:10px;display:flex}.leader:after{content:"";border-bottom:1px dotted var(--rule);flex:1;order:1;height:0;transform:translateY(-4px)}.leader>:last-child{order:2}.panel{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-panel);position:relative}.panel:before,.panel:after{content:"";border-color:var(--bright);opacity:.55;border-style:solid;width:9px;height:9px;position:absolute}.panel:before{border-top-left-radius:var(--radius);border-width:1px 0 0 1px;top:-1px;left:-1px}.panel:after{border-bottom-right-radius:var(--radius);border-width:0 1px 1px 0;bottom:-1px;right:-1px}@property --glow-a{syntax:"<color>";inherits:false;initial-value:#0000}.glow{--mx:50%;--my:50%;--glow-a:transparent;background-image:radial-gradient(380px circle at var(--mx) var(--my), var(--glow-a), transparent 62%);transition:--glow-a .32s var(--ease)}.glow:hover{--glow-a:var(--glow)}@media (hover:none){.glow{background-image:none}}.caret{background:currentColor;width:.6em;animation:1.06s step-end infinite caret;display:inline-block}@keyframes caret{0%,50%{opacity:1}50.01%,to{opacity:0}}.reveal{opacity:0;transition:opacity .55s var(--ease), transform .55s var(--ease);transition-delay:var(--delay,0s);transform:translateY(14px)}.reveal.in,.reveal-group.in .reveal{opacity:1;transform:none}:root[data-motion=off]{scroll-behavior:auto}:root[data-motion=off] *,:root[data-motion=off] :before,:root[data-motion=off] :after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}:root[data-motion=off] .reveal{opacity:1;transform:none}:root[data-motion=off] body:before{display:none}@media print{.reveal,.reveal-group .reveal{opacity:1!important;transition:none!important;transform:none!important}.boot,.skip-link,.scrollbar-progress,body:before{display:none!important}.topbar{position:static}}.noscript{max-width:640px;padding:0 var(--gutter);font-family:var(--sans);line-height:var(--lh-body);margin:12vh auto}.noscript h1{font-family:var(--mono);color:var(--bright)}.noscript a{color:var(--bright);text-decoration:underline}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--space-3);left:var(--space-3);z-index:calc(var(--z-bar) + 1);padding:var(--space-3) var(--space-4);border-radius:var(--radius-control);background:var(--bright);color:var(--bg);font-family:var(--mono);font-size:var(--fs-chrome);position:fixed;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}main:focus{outline:none}.boot{z-index:var(--z-boot);padding:var(--gutter);background:var(--bg);animation:bootIn .2s var(--ease);flex-direction:column;justify-content:center;display:flex;position:fixed;inset:0}@keyframes bootIn{0%{opacity:0}}.boot-inner{width:100%;max-width:680px;color:var(--mid);margin-inline:auto;font-size:clamp(.72rem,2.4vw,.9rem);line-height:2}.boot-line{animation:bootLine .16s var(--ease)}@keyframes bootLine{0%{opacity:0;transform:translate(-6px)}}.boot-banner{color:var(--ink)}.boot-ok,.boot-cursor{color:var(--bright)}.boot-skip{text-align:center;color:var(--mid);position:absolute;bottom:clamp(20px,5vh,44px);left:0;right:0}.topbar{z-index:var(--z-bar);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--rule-soft);padding-bottom:12px;position:sticky;top:0}.scrollbar-progress{background:var(--bright);transform-origin:0;will-change:transform;height:2px;position:absolute;inset:0 0 auto;transform:scaleX(0)}.statusline{border-bottom:1px solid var(--rule-soft);color:var(--mid)}.statusline-row{white-space:nowrap;justify-content:space-between;align-items:center;gap:16px;height:34px;font-size:.68rem;display:flex;overflow:hidden}.statusline-brand{color:var(--bright)}.statusline-sep{color:var(--rule);margin-inline:10px}.statusline-muted{color:var(--mid)}.statusline-cells{gap:clamp(14px,3vw,34px);display:flex}.statusline-clock{color:var(--bright);font-variant-numeric:tabular-nums}.menubar{background:var(--bg-panel);justify-content:space-between;align-items:center;gap:16px;margin-top:12px;padding:6px 10px 6px 6px;display:flex}.menu{scrollbar-width:none;align-items:center;gap:2px;min-width:0;display:flex;position:relative;overflow-x:auto}.menu::-webkit-scrollbar{display:none}.menu-item{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap;transition:color .2s var(--ease), background .2s var(--ease);border-radius:7px;align-items:center;gap:8px;padding:9px 14px;font-size:.76rem;display:flex}.menu-item:hover{color:var(--bright);background:var(--ghost)}.menu-item{z-index:1;position:relative}.menu-item.active{color:var(--bg)}.menu-item.active:hover{background:0 0}.menu-pill{background:var(--bright);transform-origin:0;height:calc(100% - 4px);transition:transform .42s var(--ease), width .42s var(--ease);pointer-events:none;border-radius:7px;position:absolute;top:50%;left:0;translate:0 -50%}.menu-num{color:var(--mid);font-size:.66rem}.menu-item.active .menu-num{color:inherit}.menu-current{color:var(--bright);padding-left:10px;font-size:.76rem;display:none}.menu-actions{flex-shrink:0;gap:6px;display:flex}.key{border:1px solid var(--rule-strong);font-family:var(--mono);letter-spacing:.12em;color:var(--mid);transition:color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease);border-radius:7px;align-items:center;gap:7px;padding:8px 11px;font-size:.7rem;display:inline-flex}.key:hover{color:var(--bright);border-color:var(--bright);background:var(--ghost)}.key-cap{background:var(--ghost);color:var(--mid);border-radius:3px;padding:1px 4px;font-size:.62rem}.burger{display:none}.footbar{margin:clamp(60px,10vw,120px) 0 clamp(28px,5vw,48px)}.footbar-panel{padding:clamp(24px, 5vw, 42px) var(--gutter);text-align:center;background:var(--bg-panel)}.footbar-prompt{letter-spacing:.1em;color:var(--bright);font-size:clamp(1.1rem,3.6vw,1.7rem);font-weight:700}.footbar-note{color:var(--ink-soft);margin-top:12px}.footbar-meta{color:var(--ink-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:18px;font-size:.68rem;display:flex}.footbar-links{gap:20px;display:flex}.footbar-links a{color:var(--mid);transition:color .2s var(--ease), border-color .2s var(--ease);border-bottom:1px solid #0000}.footbar-links a:hover{color:var(--bright);border-color:var(--bright)}@media (width<=860px){.statusline-cells>:not(.statusline-clock){display:none}.burger{display:inline-flex}.menubar{position:relative}.menu{z-index:1;border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-panel);box-shadow:var(--shadow);overscroll-behavior:contain;flex-direction:column;align-items:stretch;gap:2px;padding:6px;display:none;position:absolute;top:calc(100% + 6px);left:0;right:0}.menu.open{animation:menuUnroll .32s var(--ease) both;display:flex}.menu.open .menu-item{animation:menuLine .28s var(--ease) both;animation-delay:calc(80ms + var(--i) * 55ms)}.menu-pill{display:none}.menu-item.active{background:var(--bright)}.menu-current{align-items:center;gap:8px;display:inline-flex}.menu-actions{margin-left:auto}}@keyframes menuUnroll{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@keyframes menuLine{0%{opacity:0;transform:translate(-10px)}}.key-motion[aria-pressed=false]{color:var(--ink-soft);border-style:dashed}@media (width<=460px){.key .key-cap,.key .key-word{display:none}}.section{margin-top:var(--space-section)}.section-head{border-bottom:1px solid var(--rule-soft);color:var(--mid);justify-content:space-between;align-items:center;gap:16px;margin-bottom:clamp(20px,4vw,34px);padding-bottom:10px;font-size:.72rem;display:flex}.section-head-left{align-items:center;gap:14px;display:flex}.section-num{border:1px solid var(--rule);color:var(--bright);font-size:var(--fs-micro);border-radius:4px;padding:2px 7px}.section-head-right{color:var(--bright);white-space:nowrap}.section-intro{margin-bottom:clamp(28px,5vw,46px)}.section-title{font-family:var(--mono);font-size:var(--fs-h2);letter-spacing:-.02em;color:var(--ink)}.section-title em{color:var(--bright);font-style:normal}.lead,.card p,.proj-desc,.check-list li,.edu-place,.sysinfo-top{font-family:var(--sans);color:var(--ink-soft)}.lead{max-width:var(--measure);margin-top:var(--space-5);font-size:var(--fs-lead)}.card-head{border-bottom:1px solid var(--rule-soft);background:var(--bg-raise);border-radius:var(--radius) var(--radius) 0 0;color:var(--bright);justify-content:space-between;align-items:center;gap:14px;margin:0;padding:11px 16px;font-size:.7rem;display:flex}.card-head>:first-child{flex-shrink:0}.card-head h3{font:inherit;letter-spacing:inherit}.card-head-dim{min-width:0;color:var(--mid);letter-spacing:.1em;text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.inline-link{color:var(--bright);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.inline-link:hover{color:var(--hot)}.btn{border:1px solid var(--rule-strong);border-radius:var(--radius-control);font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mid);transition:color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);align-items:center;gap:12px;padding:13px 20px;font-size:.78rem;display:inline-flex}.btn:hover{color:var(--bright);border-color:var(--bright);background:var(--ghost);transform:translateY(-2px)}.btn:active{transform:none}.btn-primary{background:var(--bright);border-color:var(--bright);color:var(--bg)}.btn-primary:hover{background:var(--hot);border-color:var(--hot);color:var(--bg)}.hero{padding-top:clamp(48px,9vw,96px)}.hero-grid{grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);align-items:end;gap:clamp(32px,5vw,64px);display:grid}.hero-eyebrow{color:var(--mid);margin-bottom:22px}.hero-title{font-family:var(--mono);font-size:var(--fs-display);letter-spacing:-.035em;color:var(--bright);flex-direction:column;gap:2px;display:flex}.hero-line{width:fit-content;display:inline-block;position:relative}.hero-line:after{content:attr(data-text);color:var(--dim);opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease);position:absolute;inset:0;transform:translate(4px)}.hero-title:hover .hero-line:after{opacity:.75;animation:1.1s steps(2,end) infinite slice}@keyframes slice{0%,to{clip-path:inset(12% 0 62%);transform:translate(5px)}50%{clip-path:inset(58% 0 18%);transform:translate(-5px)}}.hero-lead{max-width:var(--measure);font-size:var(--fs-lead);color:var(--ink-soft);margin-top:clamp(24px,4vw,34px)}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:clamp(28px,4vw,40px);display:flex}@property --open{syntax:"<number>";inherits:true;initial-value:0}.sysinfo-frame{--open:0;position:relative}.sysinfo-frame.is-open{--open:1;transition:--open .9s cubic-bezier(.65,0,.2,1)}.sysinfo{clip-path:inset(calc((1 - var(--open)) * 50%) round var(--radius))}.sysinfo:before,.sysinfo:after{display:none}.sysinfo>*{opacity:calc((var(--open) - .55) / .45)}.sysinfo-tick{z-index:1;border:0 solid var(--bright);pointer-events:none;width:9px;height:9px;opacity:calc(1 - var(--open) * .45);position:absolute}.sysinfo-tick.tl{top:calc((1 - var(--open)) * 50% - 1px);left:calc((1 - var(--open)) * 50% - 1px);border-top-left-radius:var(--radius);border-width:1px 0 0 1px}.sysinfo-tick.br{bottom:calc((1 - var(--open)) * 50% - 1px);right:calc((1 - var(--open)) * 50% - 1px);border-bottom-right-radius:var(--radius);border-width:0 1px 1px 0}@media print{.sysinfo-frame{--open:1}}.sysinfo-list{padding:var(--space-5) var(--space-5) var(--space-4)}.sysinfo-list .leader+.leader{margin-top:var(--space-3)}.sysinfo-list dt{color:var(--mid)}.sysinfo-list dd{color:var(--ink);text-align:right}.sysinfo-stat{padding:var(--space-4) var(--space-5) var(--space-5);border-top:1px dashed var(--rule-soft)}.sysinfo-num{color:var(--bright);font-variant-numeric:tabular-nums;font-size:clamp(2.2rem,4.4vw,3rem);font-weight:700;line-height:1}.sysinfo-stat .label{margin-top:var(--space-2)}.sysinfo-top{margin-top:var(--space-3);font-size:var(--fs-small)}.sysinfo-top a{color:var(--bright);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.sysinfo-top a:hover{color:var(--hot)}@media (width<=900px){.hero-grid{grid-template-columns:1fr}}.card-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));align-items:start;gap:18px;display:grid}.card p{padding:20px;font-size:1rem}.cv-grid{grid-template-columns:repeat(6,minmax(0,1fr));align-items:start;gap:18px;display:grid}.cv-grid>*{grid-column:span 2}.cv-grid>.cv-edu,.cv-grid>.cv-skills{grid-column:span 3}@media (width<=1020px){.cv-grid>*{grid-column:span 3}.cv-grid>:last-child{grid-column:1/-1}}@media (width<=680px){.cv-grid{grid-template-columns:1fr}.cv-grid>*,.cv-grid>.cv-edu,.cv-grid>.cv-skills,.cv-grid>:last-child{grid-column:auto}}.cv-block>:not(.card-head){padding-inline:20px}.cv-block>:not(.card-head):first-of-type{padding-top:20px}.cv-block>:last-child{padding-bottom:22px}.edu+.edu{border-top:1px dashed var(--rule-soft);margin-top:18px;padding-top:18px}.edu-role{align-items:center;gap:var(--space-2) var(--space-3);color:var(--ink);flex-wrap:wrap;font-weight:600;display:flex}.edu-badge{background:var(--bright);color:var(--bg);font-size:var(--fs-micro);border-radius:4px;padding:1px 7px;font-weight:500}.edu-place{font-size:var(--fs-small);margin-top:3px}.edu-when{letter-spacing:.08em;color:var(--mid);margin-top:7px;font-size:.74rem}.cert-list li+li{margin-top:var(--space-4)}.skill+.skill{margin-top:18px}.skill-row{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.skill-name{color:var(--ink);font-size:.92rem}.skill-tag{color:var(--mid)}.bar{align-items:center;gap:12px;height:14px;display:flex;position:relative}.bar:before{content:"";border:1px solid var(--rule-soft);background:repeating-linear-gradient(to right, var(--ghost) 0 6px, transparent 6px 9px);flex:1;height:100%}.bar-fill{background:repeating-linear-gradient(to right, var(--bright) 0 6px, transparent 6px 9px);width:0;transition:width 1s var(--ease) .15s;position:absolute;top:1px;bottom:1px;left:1px}.reveal.in .bar-fill{width:calc((100% - 54px) * var(--level) / 100)}.bar-pct{text-align:right;width:42px;color:var(--mid);font-variant-numeric:tabular-nums;font-size:.72rem}.leader-list li+li{margin-top:12px}.leader-list .leader{color:var(--ink);font-size:.86rem}.leader-val{color:var(--mid);text-align:right}.check-list li{gap:11px;font-size:.97rem;display:flex}.check-list li+li{margin-top:11px}.check{color:var(--bright);flex-shrink:0;font-size:.8rem}.cv-cta{margin-top:26px}.tt-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));align-items:start;gap:18px;display:grid}.tt-slot{border-left:3px solid var(--rule);gap:4px;padding:15px 20px;display:grid}.tt-slot+.tt-slot{border-top:1px solid var(--rule-soft)}.tt-slot.lab{border-left-color:var(--bright);background:var(--ghost)}.tt-slot.is-now{box-shadow:inset 0 0 0 1px var(--bright)}.tt-time{align-items:center;gap:var(--space-2);letter-spacing:.08em;color:var(--mid);font-variant-numeric:tabular-nums;font-size:.72rem;display:flex}.tt-flag{border:1px solid var(--bright);color:var(--bright);font-size:var(--fs-micro);border-radius:4px;margin-left:auto;padding:1px 7px}.tt-slot.is-now .tt-flag{background:var(--bright);color:var(--bg)}.tt-name{color:var(--ink);font-size:.98rem;font-weight:600;line-height:1.35}.tt-who{color:var(--ink-soft);font-size:.72rem}.tt-legend{color:var(--ink-soft);gap:26px;margin-top:20px;display:flex}.tt-legend span{align-items:center;gap:9px;display:inline-flex}.tt-legend i{background:var(--rule);width:14px;height:3px}.tt-legend i.lab{background:var(--bright)}.proj-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}@media (width<=1020px){.proj-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.proj-grid{grid-template-columns:1fr}}.proj{transition:border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);flex-direction:column;display:flex;overflow:hidden}.proj:hover,.proj:focus-within{border-color:var(--bright);box-shadow:var(--shadow);transform:translateY(-3px)}.proj-body{flex:1;padding:22px 20px 18px}.proj-ghost{color:var(--ghost);pointer-events:none;transition:transform var(--dur-base) var(--ease);font-size:3.4rem;font-weight:700;line-height:1;position:absolute;top:46px;right:14px}.proj:hover .proj-ghost{transform:translateY(-4px)}.proj-title{max-width:calc(100% - 4.5rem);font-family:var(--mono);font-size:var(--fs-h3);letter-spacing:-.01em;color:var(--bright)}.proj-link:after{content:"";z-index:1;position:absolute;inset:0}.proj-link:focus-visible{outline:none}.proj:has(.proj-link:focus-visible){outline:2px solid var(--bright);outline-offset:3px}.proj-desc{font-size:var(--fs-small);margin-top:12px}.proj-stats{padding:0 20px 18px}.proj-activity{align-items:flex-end;gap:3px;height:30px;display:flex}.proj-activity span{height:calc(4px + 26px * var(--h));background:var(--ghost);border-radius:1px;flex:1}.proj-activity span.on{background:var(--bright)}.proj-meta{color:var(--mid);font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin-top:10px;font-size:.72rem;display:flex}.proj-foot{border-top:1px solid var(--rule-soft);background:var(--bg-raise);font-size:var(--fs-micro);white-space:nowrap;justify-content:space-between;align-items:center;gap:14px;padding:12px 20px;display:flex}.proj-open{color:var(--mid);transition:color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease)}.proj:hover .proj-open{color:var(--bright);transform:translate(3px)}.proj-site{z-index:2;color:var(--mid);text-underline-offset:3px;text-decoration:underline;position:relative}.proj-site:hover{color:var(--bright)}.proj-after{justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-6);flex-wrap:wrap;display:flex}
