:root{--bg: #0b0b0c;--bg-raised: #141416;--fg: #f2f2f3;--fg-muted: #8d8d94;--fg-faint: #5a5a61;--line: #26262a;--accent: #e8e8ea;--accent-live: #4ade80;--max: 1440px;--gutter: clamp(1.25rem, 4vw, 3rem);--radius: 3px;--font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--step-0: clamp(.9375rem, .9rem + .2vw, 1rem);--step-1: clamp(1.125rem, 1rem + .5vw, 1.375rem);--step-2: clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);--step-3: clamp(2rem, 1.4rem + 3vw, 4rem);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:var(--step-0);line-height:1.6;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}h1,h2,h3{font-weight:600;line-height:1.15;letter-spacing:-.02em;margin:0}:focus-visible{outline:2px solid var(--accent-live);outline-offset:3px}.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}.muted{color:var(--fg-muted)}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.site-header .wrap{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding-block:1.125rem;flex-wrap:wrap}@media(max-width:620px){.site-header .wrap{gap:.75rem;padding-block:.8rem}.brand span{display:none}.nav{gap:.9rem;font-size:.875rem}}.brand{font-weight:600;letter-spacing:.01em;white-space:nowrap}.brand span{color:var(--fg-muted);font-weight:400;margin-left:.6rem;font-size:.85em}.nav{display:flex;gap:clamp(1rem,3vw,2rem);font-size:.9375rem}.nav a{color:var(--fg-muted);transition:color .15s ease}.nav a:hover,.nav a[aria-current=page]{color:var(--fg)}.nav-menu{position:relative}.nav-menu summary{display:inline-flex;align-items:center;gap:.35rem;color:var(--fg-muted);cursor:pointer;list-style:none;transition:color .15s ease}.nav-menu summary::-webkit-details-marker{display:none}.nav-menu summary::marker{content:""}.nav-menu summary:hover,.nav-menu[open] summary{color:var(--fg)}.nav-menu summary svg{transition:transform .18s ease}.nav-menu[open] summary svg{transform:rotate(180deg)}.nav-menu ul{position:absolute;top:calc(100% + .85rem);right:0;z-index:60;min-width:max(11rem,100%);margin:0;padding:.35rem;list-style:none;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 32px #00000073}.nav-menu ul a{display:block;padding:.5rem .7rem;border-radius:2px;white-space:nowrap}.nav-menu ul a:hover{background:var(--bg);color:var(--fg)}@media(max-width:480px){.nav-menu ul{right:auto;left:0}}.hero{padding-block:clamp(3rem,9vw,7rem) clamp(2rem,5vw,3.5rem)}.hero h1{font-size:var(--step-3);max-width:18ch}.hero p{color:var(--fg-muted);font-size:var(--step-1);max-width:52ch;margin:1.25rem 0 0}.badges{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0 0 1.5rem;padding:0}.badge,.badge>a{display:inline-flex;align-items:center;gap:.5rem}.badge{padding:.3rem .75rem;border:1px solid var(--line);border-radius:100px;font-size:.8125rem;color:var(--fg-muted);transition:border-color .15s ease,color .15s ease}.badge>a:hover{color:var(--fg)}.badge:has(a:hover){border-color:var(--fg-faint)}.badge-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-live);flex:none}.identity{display:flex;align-items:center;justify-content:space-between;gap:clamp(1.5rem,4vw,3rem);flex-wrap:wrap;max-width:min(100%,820px)}.identity h1{font-size:var(--step-2)}.identity-role{color:var(--fg-muted);margin:.4rem 0 1rem}.identity .badges{margin-bottom:0}.avatar{width:clamp(104px,17vw,168px);height:clamp(104px,17vw,168px);border-radius:50%;object-fit:cover;border:1px solid var(--line);flex:none}.icon{flex:none}.button-row{display:flex;flex-wrap:wrap;gap:.6rem;padding-top:1.5rem;margin:0}.link-list{list-style:none;margin:0;padding:0;display:grid;gap:1px;background:var(--line);border-block:1px solid var(--line);max-width:68ch}.link-list a{display:flex;align-items:center;gap:.85rem;padding:.85rem .25rem;background:var(--bg);color:var(--fg-muted);transition:color .15s ease}.link-list a:hover{color:var(--fg)}.link-name{color:var(--fg);font-weight:500}.link-url{margin-left:auto;font-size:.8125rem;color:var(--fg-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:520px){.link-url{display:none}}.carousel{position:relative}.carousel+.hero{padding-top:clamp(2rem,5vw,3.5rem)}.carousel-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:auto;scrollbar-width:none;gap:0}.carousel-track::-webkit-scrollbar{display:none}.carousel-slide{position:relative;flex:0 0 100%;scroll-snap-align:start}.carousel-slide img{width:100%;aspect-ratio:3 / 1;min-height:220px;max-height:560px;object-fit:cover;background:var(--bg-raised)}@media(max-width:700px){.carousel-slide img{aspect-ratio:2 / 1;max-height:360px}}.carousel-caption{position:absolute;left:var(--gutter);bottom:1.25rem;padding:.35rem .8rem;border-radius:100px;font-size:.875rem;color:var(--fg);background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(8px)}.carousel-arrow{position:absolute;top:50%;translate:0 -50%;display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(8px);color:var(--fg);cursor:pointer;opacity:0;transition:opacity .2s ease,background .15s ease}.carousel:hover .carousel-arrow,.carousel-arrow:focus-visible{opacity:1}@media(hover:none){.carousel-arrow{opacity:1}}.carousel-arrow:hover{background:var(--bg)}.carousel-arrow--prev{left:clamp(.5rem,2vw,1.25rem)}.carousel-arrow--next{right:clamp(.5rem,2vw,1.25rem)}.carousel-dots{position:absolute;bottom:1rem;left:50%;translate:-50% 0;display:flex;gap:.45rem}.carousel-dots button{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:color-mix(in srgb,var(--fg) 40%,transparent);cursor:pointer;transition:background .2s ease,scale .2s ease}.carousel-dots button[aria-current=true]{background:var(--accent-live);scale:1.3}.filters{display:flex;flex-wrap:wrap;gap:.5rem;padding-block:0 2rem}.filters button{font:inherit;font-size:.875rem;color:var(--fg-muted);background:none;border:1px solid var(--line);border-radius:100px;padding:.4rem .9rem;cursor:pointer;transition:color .15s ease,border-color .15s ease}.filters button:hover{color:var(--fg)}.filters button[aria-pressed=true]{color:var(--bg);background:var(--fg);border-color:var(--fg)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(310px,100%),1fr));gap:clamp(.75rem,1.5vw,1.25rem);padding-bottom:clamp(3rem,8vw,6rem);list-style:none;margin:0;padding-inline:0}.card{position:relative;display:block;overflow:hidden;border-radius:var(--radius);background:var(--bg-raised);aspect-ratio:4 / 5}.card img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.2,.6,.2,1)}.card:hover img,.card:focus-visible img{transform:scale(1.04)}.card-meta{position:absolute;inset:auto 0 0;padding:2.5rem 1rem 1rem;background:linear-gradient(to top,rgb(0 0 0 / .85),transparent);opacity:0;transition:opacity .25s ease}.card:hover .card-meta,.card:focus-visible .card-meta{opacity:1}@media(hover:none){.card-meta{opacity:1}}.card-meta h2{font-size:1rem}.card-meta p{margin:.15rem 0 0;font-size:.8125rem;color:var(--fg-muted);text-transform:capitalize}.project-head{padding-block:clamp(2.5rem,6vw,4.5rem) 2rem;display:grid;gap:2rem;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start}@media(max-width:800px){.project-head{grid-template-columns:1fr}}.project-head h1{font-size:var(--step-2)}.project-head .summary{color:var(--fg-muted);margin:1rem 0 0;max-width:60ch}.spec{display:grid;gap:.75rem;font-size:.875rem;border-left:1px solid var(--line);padding-left:1.5rem}@media(max-width:800px){.spec{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:1.5rem}}.spec dt{color:var(--fg-faint);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.spec dd{margin:.15rem 0 0}.section-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--fg-faint);padding-block:3rem 1.25rem;border-top:1px solid var(--line);margin-top:3rem}.stack{display:grid;gap:clamp(.75rem,2vw,1.5rem);padding-bottom:2rem}.stack figure{margin:0}.stack figcaption{color:var(--fg-muted);font-size:.8125rem;padding-top:.6rem}.stack img,.stack video{border-radius:var(--radius);width:100%;height:auto;display:block;background:var(--bg-raised)}.stack--pairs{grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr))}.embed{aspect-ratio:16 / 9;width:100%;border:0;border-radius:var(--radius);background:var(--bg-raised)}.prose{max-width:68ch}.prose p{color:var(--fg-muted)}.timeline{display:grid;gap:2rem;max-width:68ch;padding:0;list-style:none}.timeline li{display:grid;grid-template-columns:10rem 1fr;gap:1.5rem}@media(max-width:640px){.timeline li{grid-template-columns:1fr;gap:.35rem}}.timeline .period{color:var(--fg-faint);font-size:.875rem;padding-top:.2rem}.timeline h3{font-size:1.0625rem}.timeline .company{color:var(--fg-muted);font-size:.9375rem}.timeline p{color:var(--fg-muted);margin:.5rem 0 0;font-size:.9375rem}.skills{display:grid;grid-template-columns:minmax(6rem,9rem) 1fr;gap:1rem 1.75rem;align-items:baseline;margin:0;max-width:68ch}.skills dt{color:var(--fg-faint);font-size:.8125rem}.skills dd{margin:0}@media(max-width:560px){.skills{grid-template-columns:1fr;gap:.4rem}.skills dt:not(:first-of-type){margin-top:.75rem}}.tags{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:0}.tags li{border:1px solid var(--line);border-radius:100px;padding:.25rem .7rem;font-size:.8125rem;color:var(--fg-muted)}.button{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--line);border-radius:var(--radius);padding:.65rem 1.1rem;font-family:inherit;font-size:.9375rem;line-height:1.4;color:inherit;background:none;cursor:pointer;transition:background .15s ease,border-color .15s ease}.button:hover{background:var(--bg-raised);border-color:var(--fg-faint)}.button--solid{background:var(--fg);color:var(--bg);border-color:var(--fg)}.button--solid:hover{background:var(--fg-muted);border-color:var(--fg-muted)}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(420px,100%),1fr));gap:clamp(1rem,2vw,1.5rem);list-style:none;margin:0;padding:0 0 clamp(3rem,8vw,6rem)}.product-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-raised);transition:border-color .15s ease}.product-card:hover{border-color:var(--fg-faint)}.product-card img{width:100%;aspect-ratio:16 / 10;object-fit:cover}.product-body{padding:1.1rem 1.25rem 1.35rem}.product-body h2{font-size:1.125rem}.product-body p{color:var(--fg-muted);margin:.35rem 0 0;font-size:.9375rem}.product-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-top:.9rem;font-size:.8125rem}.pill{border:1px solid var(--line);border-radius:100px;padding:.2rem .6rem;color:var(--fg-muted)}.pill--available{border-color:#2f6f45;color:#6ee7a0}.pill--free{border-color:#2f5a6f;color:#6ec8e7}.price{color:var(--fg);font-weight:500}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:1.5rem 2rem;list-style:none;margin:0;padding:0;max-width:100%}.features h3{font-size:1rem}.features p{color:var(--fg-muted);margin:.35rem 0 0;font-size:.9375rem}.pager{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1.5rem;padding-block:3rem 5rem;margin-top:3rem;border-top:1px solid var(--line);padding-top:2rem}.pager-link{display:grid;gap:.2rem;color:var(--fg-muted);transition:color .15s ease;min-width:0}.pager-link:hover{color:var(--fg)}.pager-link--next{text-align:right;justify-items:end}.pager-dir{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-faint)}.pager-title{font-weight:500;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}@media(max-width:640px){.pager{grid-template-columns:1fr;justify-items:center;text-align:center;gap:1.25rem}.pager-link--next{text-align:center;justify-items:center}}.lightbox{width:100vw;max-width:100vw;height:100vh;max-height:100vh;padding:0;border:0;background:transparent;overflow:hidden}.lightbox::backdrop{background:#000000eb}.lightbox[open]{display:grid;place-items:center}.lightbox-figure{margin:0;display:grid;place-items:center;gap:.9rem;width:100%;height:100%;padding:clamp(1rem,4vw,3rem)}.lightbox-figure img{max-width:100%;max-height:calc(100vh - 8rem);width:auto;object-fit:contain;border-radius:var(--radius)}.lightbox-figure figcaption{color:var(--fg-muted);font-size:.875rem;text-align:center}.lightbox-close,.lightbox-nav{position:fixed;z-index:2;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:color-mix(in srgb,var(--bg) 80%,transparent);color:var(--fg);cursor:pointer;transition:background .15s ease}.lightbox-close:hover,.lightbox-nav:hover{background:var(--bg-raised)}.lightbox-close{top:1.25rem;right:1.25rem;width:44px;height:44px;font-size:1.75rem;line-height:1;padding-bottom:4px}.lightbox-nav{top:50%;translate:0 -50%;width:52px;height:52px}.lightbox-nav--prev{left:clamp(.5rem,2vw,1.5rem)}.lightbox-nav--next{right:clamp(.5rem,2vw,1.5rem)}.lightbox.is-single .lightbox-nav{display:none}.viewer{width:min(1000px,94vw);height:min(88vh,1100px);padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-raised);color:var(--fg);overflow:hidden}.viewer::backdrop{background:#000000b3;backdrop-filter:blur(3px)}.viewer[open]{display:flex;flex-direction:column}.viewer-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem .75rem .75rem 1rem;border-bottom:1px solid var(--line);font-size:.9375rem;flex:none}.viewer-actions{display:flex;align-items:center;gap:1rem;font-size:.875rem;color:var(--fg-muted)}.viewer-actions a:hover{color:var(--fg)}.viewer-actions button{font:inherit;font-size:1.5rem;line-height:1;background:none;border:0;color:var(--fg-muted);cursor:pointer;padding:0 .35rem}.viewer-actions button:hover{color:var(--fg)}.viewer-frame{flex:1;width:100%;border:0;background:var(--bg)}.viewer-fallback{margin:0;padding:.75rem 1rem;font-size:.8125rem;color:var(--fg-faint);border-top:1px solid var(--line);flex:none}.viewer-fallback a{text-decoration:underline;text-underline-offset:3px}.site-footer{margin-top:auto;border-top:1px solid var(--line);padding-block:2.5rem;font-size:.875rem;color:var(--fg-muted)}.site-footer .wrap{display:flex;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.socials{display:flex;gap:1.25rem;flex-wrap:wrap;list-style:none;margin:0;padding:0}.socials a{display:inline-flex;align-items:center;gap:.45rem;transition:color .15s ease}.socials a:hover{color:var(--fg)}.prose a,.summary a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--fg-faint);text-underline-offset:3px;transition:text-decoration-color .15s ease;overflow-wrap:anywhere}.prose a:hover,.summary a:hover{text-decoration-color:var(--accent-live)}.empty{border:1px dashed var(--line);border-radius:var(--radius);padding:3rem 1.5rem;text-align:center;color:var(--fg-muted);margin-bottom:4rem}
