@font-face{font-family:GeistSans;src:url(../media/Geist_Variable-s.p.06.f0v_2js29o.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}.geistsans_d5a4f12f-module__Ur3q_a__className{font-family:GeistSans,GeistSans Fallback}.geistsans_d5a4f12f-module__Ur3q_a__variable{--font-geist-sans:"GeistSans", "GeistSans Fallback"}
@font-face{font-family:GeistMono;src:url(../media/GeistMono_Variable.p.1216mhqx6y_is.woff2)format("woff2");font-display:swap;font-weight:100 900}.geistmono_157ca88a-module__iaM1Ya__className{font-family:GeistMono,ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}.geistmono_157ca88a-module__iaM1Ya__variable{--font-geist-mono:"GeistMono", ui-monospace, SFMono-Regular, Roboto Mono, Menlo, Monaco, Liberation Mono, DejaVu Sans Mono, Courier New, monospace}
.portfolio{--bg:#f6f6f4;--fg:#0b0b0c;--muted:#6a6a66;--border:#0b0b0c1a;--border-strong:#0b0b0c38;--border-faint:#0b0b0c0f;--card:#fff;--accent:#3a6cff;--accent-fg:#fff;--accent-press:#2e5ae3;--accent-tint:#3a6cff14;--soft:#efefeb;--ink-2:#0b0b0cb8;--mono:var(--font-geist-mono), ui-monospace, monospace;--sans:var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;--t-display:clamp(2.75rem, 1.4rem + 4.7vw, 5.5rem);--t-h2:clamp(2.125rem, 1.55rem + 2vw, 3.5rem);--t-h3:clamp(1.875rem, 1.65rem + .9vw, 2.5rem);--t-h4:clamp(1.375rem, 1.3rem + .35vw, 1.75rem);--t-quote:clamp(1.75rem, 1.4rem + 1.4vw, 2.75rem);--t-email:clamp(1.25rem, .6rem + 3vw, 3.25rem);--t-lead:clamp(1.125rem, 1.08rem + .2vw, 1.25rem);--t-body:1.0625rem;--t-small:.9375rem;--t-metric:clamp(1.25rem, 1.18rem + .3vw, 1.375rem);--t-label:.6875rem;--t-micro:.625rem;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--sect-top:clamp(3rem, 2.3rem + 2.2vw, 4.25rem);--sect-pad:clamp(3.5rem, 2.6rem + 3vw, 5.25rem);--title-gap:clamp(2.5rem, 2rem + 1.8vw, 3.5rem);--header-h:48px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-io:cubic-bezier(.65, 0, .35, 1);--d-fast:.12s;--d-base:.2s;background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:var(--t-body);-webkit-font-smoothing:antialiased;min-height:100vh;accent-color:var(--accent)}.portfolio *,.portfolio :before,.portfolio :after{box-sizing:border-box}.portfolio h1,.portfolio h2,.portfolio h3,.portfolio h4,.portfolio p,.portfolio ul,.portfolio ol,.portfolio figure,.portfolio pre{margin:0;padding:0}.portfolio ::selection{background:var(--accent);color:var(--accent-fg)}.portfolio a{color:inherit;text-decoration:none}.portfolio ul,.portfolio ol{list-style:none}.portfolio img{max-width:100%;display:block}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.portfolio [id]{scroll-margin-top:calc(var(--header-h) + var(--s-5))}.portfolio .wrap{max-width:1400px;margin:0 auto;padding:0 24px}@media (min-width:768px){.portfolio .wrap{padding:0 40px}}.portfolio .sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portfolio .mono{font-family:var(--mono)}.portfolio .dot{background:var(--accent);border-radius:99px;width:6px;height:6px;display:inline-block}.portfolio .pulse{animation:1.6s ease-in-out infinite p-pulse}@keyframes p-pulse{0%,to{opacity:1}50%{opacity:.35}}.portfolio :focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);outline:none}.portfolio .skip{z-index:100;top:var(--s-3);left:var(--s-3);background:var(--fg);color:var(--bg);font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;padding:var(--s-3) var(--s-4);transition:transform var(--d-fast) ease-out;position:fixed;transform:translateY(-300%)}.portfolio .skip:focus-visible{transform:translateY(0)}.portfolio header{z-index:40;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#f6f6f4d1;position:sticky;top:0}.portfolio .p-nav{height:var(--header-h);font-family:var(--mono);font-size:var(--t-label);justify-content:space-between;align-items:center;display:flex}.portfolio .p-nav .brand{align-items:center;gap:var(--s-3);text-transform:uppercase;letter-spacing:.18em;white-space:nowrap;display:flex}.portfolio .p-nav .brand .sub{color:var(--muted)}@media (max-width:760px){.portfolio .p-nav .brand .sub{display:none}}.portfolio .p-nav nav{align-items:center;gap:clamp(10px,2vw,24px);display:flex}.portfolio .p-nav nav a{text-transform:uppercase;letter-spacing:.18em;padding:var(--s-3) 2px;transition:color var(--d-base) ease;align-items:center;gap:6px;display:inline-flex}.portfolio .p-nav nav a:hover{color:var(--accent)}.portfolio .p-nav nav a .idx{color:var(--muted);transition:color var(--d-base) ease}.portfolio .p-nav nav a[aria-current=true] .idx{color:var(--accent)}@media (max-width:899px){.portfolio .p-nav nav a .lbl{display:none}}@media (max-width:559px){.portfolio .p-nav nav>a:not(.hirebtn):not(.back){display:none}}.portfolio .p-nav nav a.hirebtn{background:var(--accent);color:var(--accent-fg);text-transform:uppercase;letter-spacing:.18em;border:1px solid var(--accent);transition:background var(--d-fast) ease-out, color var(--d-fast) ease-out;white-space:nowrap;padding:8px 12px}.portfolio .p-nav nav a.hirebtn:hover{color:var(--accent);background:0 0}.portfolio .p-nav nav a.hirebtn:active{background:var(--accent-press);color:var(--accent-fg)}.portfolio .langswitch{font-family:var(--mono);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.18em;border:1px solid var(--border);align-items:center;gap:2px;padding:3px 8px;display:flex}.portfolio .langswitch button{cursor:pointer;font-family:var(--mono);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);transition:color var(--d-base) ease;background:0 0;border:none;padding:6px 3px;line-height:1}.portfolio .langswitch button.active{color:var(--fg)}.portfolio .langswitch button:hover{color:var(--accent)}.portfolio .langswitch .sep{color:var(--border);-webkit-user-select:none;user-select:none}.portfolio .hero{padding:var(--s-7) 0 var(--sect-pad)}.portfolio .meta{gap:var(--s-4);font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;margin-bottom:var(--s-6);grid-template-columns:repeat(12,1fr);display:grid}.portfolio .meta>div{color:var(--muted);grid-column:span 6}.portfolio .meta>div .v{color:var(--fg);align-items:center;gap:var(--s-2);margin-top:6px;display:flex}@media (min-width:768px){.portfolio .meta>div{grid-column:span 3}}.portfolio h1.headline{font-size:var(--t-display);letter-spacing:-.035em;max-width:18ch;font-weight:500;line-height:.98}.portfolio h1.headline .dim{color:var(--muted)}.portfolio .hcaret{background:var(--accent);width:.14em;height:.78em;margin-left:.12em;animation:1.1s step-end infinite p-caret;display:inline-block;transform:translateY(.06em)}@keyframes p-caret{0%,54%{opacity:1}55%,to{opacity:0}}.portfolio .heroGrid{gap:var(--s-5);margin-top:var(--s-7);grid-template-columns:repeat(12,1fr);display:grid}.portfolio .heroCopy{grid-column:span 12}@media (min-width:768px){.portfolio .heroCopy{grid-column:span 5}}.portfolio .heroCopy p.lead{font-size:var(--t-lead);max-width:44ch;color:var(--ink-2);line-height:1.5}.portfolio .heroCopy p.sub{font-size:var(--t-small);color:var(--muted);margin-top:var(--s-4);max-width:44ch;line-height:1.6}.portfolio .term{border:1px solid var(--border);background:var(--card);grid-column:span 12}@media (min-width:768px){.portfolio .term{grid-column:7/span 6}}.portfolio .term .bar{padding:var(--s-2) var(--s-4);border-bottom:1px solid var(--border);font-family:var(--mono);justify-content:space-between;align-items:center;display:flex}.portfolio .term .bar .l{align-items:center;gap:var(--s-2);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);display:flex}.portfolio .term .bar .l .d{background:var(--accent);border-radius:99px;width:8px;height:8px}.portfolio .term .bar .r{gap:6px;display:flex}.portfolio .term .bar .r span{background:var(--border);border-radius:99px;width:10px;height:10px;display:inline-block}.portfolio .term pre{font-family:var(--mono);padding:var(--s-5);color:var(--fg);font-size:12.5px;line-height:1.7;overflow-x:auto}.portfolio .term .tl{white-space:pre;display:block}.portfolio .term .tcaret{color:var(--accent);animation:1.06s step-end infinite p-caret;display:inline-block}.portfolio .term.js .tl{opacity:0}.portfolio .term.js .tcaret{opacity:0;animation:none}.portfolio .term.boot .tl{animation:1ms linear forwards p-tl-on;animation-delay:var(--d)}.portfolio .term.boot .tcaret{animation:1.06s step-end infinite p-caret;animation-delay:var(--d)}@keyframes p-tl-on{0%{opacity:0}to{opacity:1}}.portfolio .term .ft{padding:var(--s-2) var(--s-4);border-top:1px solid var(--border);font-family:var(--mono);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);justify-content:space-between;align-items:center;display:flex}.portfolio .term .ft .live{color:var(--accent)}.portfolio .ticker{border-top:1px solid var(--border);border-bottom:1px solid var(--border);overflow:hidden}.portfolio .ticker .track{gap:var(--s-6);white-space:nowrap;width:max-content;font-family:var(--mono);padding:13px 0;animation:48s linear infinite p-marquee;display:flex}.portfolio .ticker:hover .track{animation-play-state:paused}.portfolio .ticker span{text-transform:uppercase;letter-spacing:.18em;color:var(--muted);align-items:center;gap:var(--s-3);font-size:12px;display:inline-flex}.portfolio .ticker span i{color:var(--accent);font-style:normal}@keyframes p-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.portfolio section.pad{padding:var(--sect-top) 0 var(--sect-pad)}.portfolio .alt{background:var(--soft);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.portfolio .sec-title{gap:var(--s-5);border-top:1px solid var(--border);padding-top:var(--s-6);grid-template-columns:repeat(12,1fr);display:grid}.portfolio .sec-title .l{font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.2em;align-items:center;gap:var(--s-3);grid-column:span 12;display:flex}.portfolio .sec-title .l .i{color:var(--accent)}.portfolio .sec-title .l .k{color:var(--muted)}.portfolio .sec-title .r{grid-column:span 12}@media (min-width:768px){.portfolio .sec-title .l{grid-column:span 3}.portfolio .sec-title .r{grid-column:span 9}}.portfolio .sec-title h2{font-size:var(--t-h2);letter-spacing:-.03em;max-width:22ch;font-weight:500;line-height:1.02}.portfolio .sec-title p.sub{color:var(--muted);margin-top:var(--s-4);max-width:60ch;font-size:1rem;line-height:1.55}.portfolio .work{margin-top:var(--title-gap);border:1px solid var(--border);background:var(--card)}.portfolio .work article{border-top:1px solid var(--border)}.portfolio .work article:first-child{border-top:0}.portfolio .work .row{gap:var(--s-5);padding:var(--s-5);grid-template-columns:repeat(12,1fr);display:grid}@media (min-width:768px){.portfolio .work .row{padding:28px var(--s-6)}}.portfolio .work .meta-l{gap:var(--s-2);flex-direction:column;grid-column:span 12;display:flex}@media (min-width:1000px){.portfolio .work .meta-l{grid-column:span 3}}.portfolio .work .meta-l .top{font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;align-items:center;gap:var(--s-3);display:flex}.portfolio .work .meta-l .top .n{color:var(--accent)}.portfolio .work .meta-l .top .y{color:var(--muted)}.portfolio .work h3{font-size:var(--t-h3);letter-spacing:-.025em;margin-top:var(--s-2);font-weight:500;line-height:.98}.portfolio .work .role{font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);margin-top:var(--s-1)}.portfolio .work .copy{grid-column:span 12}@media (min-width:1000px){.portfolio .work .copy{grid-column:span 5}}.portfolio .work .copy p{font-size:var(--t-body);max-width:58ch;line-height:1.5}.portfolio .work .stack{margin-top:var(--s-5);font-family:var(--mono);flex-wrap:wrap;gap:6px;display:flex}.portfolio .work .stack span{font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.14em;border:1px solid var(--border);color:var(--muted);padding:4px 8px}.portfolio .work .metrics{border-top:1px solid var(--border-faint);padding-top:var(--s-4);grid-column:span 12}@media (min-width:1000px){.portfolio .work .metrics{border-top:0;border-left:1px solid var(--border);padding-top:0;padding-left:var(--s-5);grid-column:span 4}}.portfolio .work .metrics .g{grid-template-columns:1fr 1fr;display:grid}.portfolio .work .metrics .g div{padding:var(--s-3);border-style:solid;border-color:var(--border-faint);border-width:0}.portfolio .work .metrics .g div:first-child{border-bottom-width:1px;border-right-width:1px;padding-top:0;padding-left:0}.portfolio .work .metrics .g div:nth-child(2){border-bottom-width:1px;padding-top:0}.portfolio .work .metrics .g div:nth-child(3){border-right-width:1px;padding-bottom:0;padding-left:0}.portfolio .work .metrics .g div:nth-child(4){padding-bottom:0}.portfolio .work .metrics .g .k{font-family:var(--mono);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.16em;color:var(--muted)}.portfolio .work .metrics .g .v{font-family:var(--mono);font-size:var(--t-metric);margin-top:var(--s-2);font-variant-numeric:tabular-nums;line-height:1.15}.portfolio .work .ft{padding:var(--s-3) var(--s-5);border-top:1px solid var(--border);font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;justify-content:space-between;align-items:center;display:flex;position:relative;overflow:hidden}@media (min-width:768px){.portfolio .work .ft{padding:var(--s-3) var(--s-6)}}.portfolio .work a.ft:before{content:"";background:var(--accent);transform-origin:0;transition:transform .24s var(--ease-io);position:absolute;inset:0;transform:scaleX(0)}.portfolio .work .ft>span{transition:color var(--d-fast) ease-out;position:relative}.portfolio .work a.ft:hover:before,.portfolio .work a.ft:focus-visible:before{transform:scaleX(1)}.portfolio .work a.ft:hover>span,.portfolio .work a.ft:focus-visible>span{color:var(--accent-fg)}.portfolio .work .ft .sm{color:var(--muted)}.portfolio .work a.ft:hover .sm,.portfolio .work a.ft:focus-visible .sm{color:#ffffffb3}.portfolio .princ{margin-top:var(--title-gap);gap:var(--s-6) var(--s-5);grid-template-columns:repeat(12,1fr);display:grid}@media (min-width:1000px){.portfolio .princ{gap:var(--s-7) var(--s-5)}}.portfolio .princ li{padding-right:var(--s-5);grid-column:span 12}@media (min-width:768px){.portfolio .princ li{grid-column:span 6}}@media (min-width:1000px){.portfolio .princ li{grid-column:span 4}}.portfolio .princ .n{font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.2em;color:var(--accent);margin-bottom:var(--s-3)}.portfolio .princ h4{font-size:var(--t-h4);letter-spacing:-.02em;font-weight:500;line-height:1.1}.portfolio .princ p{font-size:var(--t-small);color:var(--muted);margin-top:var(--s-3);max-width:36ch;line-height:1.55}.portfolio .dd{margin-top:var(--title-gap);border:1px solid var(--border);background:var(--card);grid-template-columns:1fr;display:grid}@media (min-width:768px){.portfolio .dd{grid-template-columns:1fr 1fr}}.portfolio .dd .col.no{background:var(--soft);border-top:1px solid var(--border)}@media (min-width:768px){.portfolio .dd .col.no{border-top:0;border-left:1px solid var(--border)}}.portfolio .dd .hd{padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--border);font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;justify-content:space-between;align-items:center;display:flex}.portfolio .dd .hd .ic{color:var(--accent)}.portfolio .dd .hd .ct{color:var(--muted);font-size:var(--t-micro)}.portfolio .dd ul li{padding:var(--s-4) var(--s-5);align-items:baseline;gap:var(--s-4);border-top:1px solid var(--border);display:flex}.portfolio .dd ul li:first-child{border-top:0}.portfolio .dd ul li .num{font-family:var(--mono);font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums}.portfolio .dd ul li .tx{font-size:var(--t-body)}.portfolio .dd .no .tx{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}.portfolio .specs{margin-top:var(--title-gap);border:1px solid var(--border);background:var(--card);grid-template-columns:1fr;display:grid}@media (min-width:900px){.portfolio .specs{grid-template-columns:repeat(3,1fr)}}.portfolio .spec{border-top:1px solid var(--border)}.portfolio .spec:first-child{border-top:0}@media (min-width:900px){.portfolio .spec{border-top:0;border-left:1px solid var(--border)}.portfolio .spec:first-child{border-left:0}}.portfolio .spec .h{padding:var(--s-3) var(--s-5);border-bottom:1px solid var(--border);font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;justify-content:space-between;align-items:center;display:flex}.portfolio .spec .h i{color:var(--accent);font-style:normal}.portfolio .spec li{padding:var(--s-3) var(--s-5);align-items:flex-end;gap:var(--s-2);border-top:1px solid var(--border);display:flex}.portfolio .spec li:first-child{border-top:0}.portfolio .spec li:after{content:"";margin:0 var(--s-1) 5px;min-width:var(--s-4);border-bottom:1px dotted #0b0b0c33;flex:1;order:1}.portfolio .spec .k{font-size:var(--t-small);order:0;font-weight:500}.portfolio .spec .v{font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.16em;color:var(--muted);text-align:right;order:2}.portfolio .tst{gap:var(--s-5);grid-template-columns:repeat(12,1fr);display:grid}.portfolio .tst .l{font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);grid-column:span 12}@media (min-width:768px){.portfolio .tst .l{grid-column:span 2}}.portfolio .tst .r{grid-column:span 12}@media (min-width:768px){.portfolio .tst .r{grid-column:span 10}}.portfolio .tst p.q{font-size:var(--t-quote);letter-spacing:-.02em;max-width:28ch;font-weight:500;line-height:1.12}.portfolio .tst p.q .qq{color:var(--accent)}.portfolio .tst .by{margin-top:var(--s-6);font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;align-items:center;gap:var(--s-1) var(--s-4);flex-wrap:wrap;display:flex}.portfolio .tst .by .m{color:var(--muted)}.portfolio .ctc{gap:var(--s-5);margin-top:var(--title-gap);grid-template-columns:repeat(12,1fr);display:grid}.portfolio .ctc .big{border:1px solid var(--border);background:var(--card);padding:var(--s-6);transition:background var(--d-base) ease-out, color var(--d-base) ease-out, border-color var(--d-base) ease-out;grid-column:span 12;display:block;container-type:inline-size}@media (min-width:768px){.portfolio .ctc .big{padding:var(--s-7)}}@media (min-width:1000px){.portfolio .ctc .big{grid-column:span 7}}.portfolio .ctc .big:hover{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.portfolio .ctc .big:active{background:var(--accent-press);border-color:var(--accent-press)}.portfolio .ctc .big .top{font-family:var(--mono);font-size:var(--t-label);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);justify-content:space-between;align-items:center;display:flex}.portfolio .ctc .big .top span:last-child{transition:transform var(--d-fast) ease-out}.portfolio .ctc .big:hover .top span:last-child{transform:translate(2px,-2px)}.portfolio .ctc .big:hover .top{color:#ffffffb3}.portfolio .ctc .big .email{font-size:min(var(--t-email), 7cqi);letter-spacing:-.03em;margin-top:var(--s-4);overflow-wrap:anywhere;font-weight:500;line-height:1.05}.portfolio .ctc .big .nt{font-family:var(--mono);text-transform:uppercase;letter-spacing:.18em;margin-top:var(--s-5);font-size:12px}.portfolio .ctc .grid{border:1px solid var(--border);background:var(--card);grid-column:span 12;grid-template-columns:1fr 1fr;align-self:start;gap:0;display:grid}@media (min-width:1000px){.portfolio .ctc .grid{grid-column:span 5}}.portfolio .ctc .grid>a,.portfolio .ctc .grid>.tile{padding:var(--s-5);transition:background var(--d-fast) ease-out;display:block}.portfolio .ctc .grid>:nth-child(2){border-left:1px solid var(--border)}.portfolio .ctc .grid>:nth-child(3){border-top:1px solid var(--border);grid-column:1/-1}.portfolio .ctc .grid>a:hover{background:var(--accent-tint)}.portfolio .ctc .grid>a .l,.portfolio .ctc .grid>.tile .l{font-family:var(--mono);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);transition:color var(--d-fast) ease-out}.portfolio .ctc .grid>a:hover .l{color:var(--accent)}.portfolio .ctc .grid>a .v,.portfolio .ctc .grid>.tile .v{font-size:var(--t-small);margin-top:var(--s-2);font-weight:500}.portfolio .ctc .grid>a .s,.portfolio .ctc .grid>.tile .s{font-family:var(--mono);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);margin-top:var(--s-3)}.portfolio footer{border-top:1px solid var(--border);font-family:var(--mono)}.portfolio footer .row{padding:var(--s-5) 0;gap:var(--s-3);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.2em;color:var(--muted);flex-direction:column;justify-content:space-between;display:flex}@media (min-width:768px){.portfolio footer .row{flex-direction:row}}.portfolio footer .plink{color:var(--muted);margin-right:var(--s-4);transition:color var(--d-fast) ease-out}.portfolio footer .plink:hover{color:var(--fg)}.portfolio .legal{max-width:68ch;padding-top:var(--sect-top);padding-bottom:var(--sect-pad)}.portfolio .legal h1{font-size:var(--t-h2);letter-spacing:-.03em;margin-bottom:var(--s-6);font-weight:500;line-height:1.02}.portfolio .legal p{margin-bottom:var(--s-4);line-height:1.7;font-size:var(--t-small);color:var(--ink-2)}.portfolio .legal-toggle{cursor:pointer;color:var(--muted);font:inherit;transition:color var(--d-fast) ease-out;background:0 0;border:none}.portfolio .legal-toggle:hover{color:var(--fg)}.portfolio .nf{padding:var(--sect-pad) 0 var(--sect-pad)}.portfolio .nf .code{font-size:var(--t-display);letter-spacing:-.035em;font-weight:500;line-height:.98}.portfolio .nf .term{margin-top:var(--title-gap);max-width:640px}.portfolio .nf .term .tl{opacity:0;animation:1ms linear forwards p-tl-on;animation-delay:var(--d)}.portfolio .nf .term .tcaret{opacity:0;animation:1.06s step-end infinite p-caret;animation-delay:var(--d)}.portfolio .nf .term a{color:var(--accent)}.portfolio .nf .term a:hover{text-underline-offset:3px;text-decoration:underline}.portfolio .rv{opacity:0;transition:opacity .45s ease, transform .45s var(--ease-out);transform:translateY(12px)}.portfolio .rv-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.portfolio *,.portfolio :before,.portfolio :after{transition:none!important;animation:none!important}.portfolio .ticker{overflow-x:auto}.portfolio .term .tl,.portfolio .term .tcaret,.portfolio .nf .term .tl,.portfolio .nf .term .tcaret{opacity:1!important}.portfolio .rv{opacity:1;transform:none}}
