:root{--cream:#fbf4ea;--paper:#fffaf3;--navy:#2d3668;--navy-deep:#1f2550;--ink:#2d3668;--ink-soft:#5b6292;--lavender:#b8b2e3;--lavender-soft:#eeebf9;--peach:#f0a877;--peach-soft:#fdeadb;--pink:#e9738f;--pink-deep:#c9536f;--pink-soft:#fde4ea;--line:#ddd7ee;--space:#161b36;--font-pixel:"Pixelify Sans", ui-monospace, monospace;--font-body:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:12px;--border:3px solid var(--navy);--lift:0 4px 0 var(--navy-deep);--gutter:16px;--px-cream:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' shape-rendering='crispEdges'%3E%3Cpath fill='%231f2550' d='M1 0h7v1h1v7H8v1H1V8H0V1h1z'/%3E%3Cpath fill='%23fffaf3' d='M1 1h7v7H1z'/%3E%3Cpath fill='%23ffffff' d='M1 1h7v1H1z'/%3E%3Cpath fill='%23e6e2f6' d='M1 7h7v1H1z'/%3E%3C/svg%3E");--px-navy:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' shape-rendering='crispEdges'%3E%3Cpath fill='%23141938' d='M1 0h7v1h1v7H8v1H1V8H0V1h1z'/%3E%3Cpath fill='%232d3668' d='M1 1h7v7H1z'/%3E%3Cpath fill='%234a5288' d='M1 1h7v1H1z'/%3E%3Cpath fill='%231f2550' d='M1 7h7v1H1z'/%3E%3C/svg%3E");--px-pink:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' shape-rendering='crispEdges'%3E%3Cpath fill='%231f2550' d='M1 0h7v1h1v7H8v1H1V8H0V1h1z'/%3E%3Cpath fill='%23e9738f' d='M1 1h7v7H1z'/%3E%3Cpath fill='%23f5a3b7' d='M1 1h7v1H1z'/%3E%3Cpath fill='%23c9536f' d='M1 7h7v1H1z'/%3E%3C/svg%3E");--px-lavender:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' shape-rendering='crispEdges'%3E%3Cpath fill='%231f2550' d='M1 0h7v1h1v7H8v1H1V8H0V1h1z'/%3E%3Cpath fill='%23eeebf9' d='M1 1h7v7H1z'/%3E%3Cpath fill='%23ffffff' d='M1 1h7v1H1z'/%3E%3Cpath fill='%23d6d0ee' d='M1 7h7v1H1z'/%3E%3C/svg%3E");--px-peach:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' shape-rendering='crispEdges'%3E%3Cpath fill='%231f2550' d='M1 0h7v1h1v7H8v1H1V8H0V1h1z'/%3E%3Cpath fill='%23fdeadb' d='M1 1h7v7H1z'/%3E%3Cpath fill='%23ffffff' d='M1 1h7v1H1z'/%3E%3Cpath fill='%23f3cfb3' d='M1 7h7v1H1z'/%3E%3C/svg%3E");--px-blue:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' shape-rendering='crispEdges'%3E%3Cpath fill='%231f2550' d='M1 0h7v1h1v7H8v1H1V8H0V1h1z'/%3E%3Cpath fill='%23e8eef9' d='M1 1h7v7H1z'/%3E%3Cpath fill='%23ffffff' d='M1 1h7v1H1z'/%3E%3Cpath fill='%23cdd8f0' d='M1 7h7v1H1z'/%3E%3C/svg%3E");--px-pinksoft:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' shape-rendering='crispEdges'%3E%3Cpath fill='%231f2550' d='M1 0h7v1h1v7H8v1H1V8H0V1h1z'/%3E%3Cpath fill='%23fde4ea' d='M1 1h7v7H1z'/%3E%3Cpath fill='%23ffffff' d='M1 1h7v1H1z'/%3E%3Cpath fill='%23f5c3cf' d='M1 7h7v1H1z'/%3E%3C/svg%3E");--px-shadow:drop-shadow(0 3px 0 var(--navy-deep));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-body);color:var(--ink);background:var(--cream);margin:0;font-size:16px;line-height:1.55}img{max-width:100%;display:block}h1,h2,h3,h4{font-family:var(--font-pixel);letter-spacing:.01em;margin:0;font-weight:600;line-height:1.15}p{margin:0}a{color:var(--navy)}:focus-visible{outline:3px solid var(--peach);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.px{border:9px solid #0000;border-image:var(--px-cream) 3 fill / 9px;background:0 0}.btn{min-height:44px;font:600 15px/1 var(--font-pixel);letter-spacing:.05em;color:var(--navy);border:9px solid #0000;border-image:var(--px-cream) 3 fill / 9px;filter:var(--px-shadow);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:8px;padding:1px 8px;text-decoration:none;transition:transform 80ms,filter 80ms;display:inline-flex}.btn:hover{border-image-source:var(--px-lavender);transform:translateY(-1px)}.btn:active{filter:drop-shadow(0 1px 0 var(--navy-deep));transform:translateY(2px)}.btn--primary,.btn--primary:hover{border-image-source:var(--px-pink);color:#fff}.btn--primary:hover{filter:var(--px-shadow) brightness(1.05)}.btn--small{min-height:36px;padding:0 5px;font-size:13px}.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none}.icon-btn{color:#fff;border:9px solid #0000;border-image:var(--px-pink) 3 fill / 9px;width:36px;height:36px;filter:var(--px-shadow);cursor:pointer;background:0 0;place-items:center;padding:0;display:inline-grid}.icon-btn:active{filter:none;transform:translateY(2px)}.badge{font:600 12px/1.5 var(--font-pixel);letter-spacing:.06em;text-transform:uppercase;border:6px solid #0000;border-image:var(--px-lavender) 3 fill / 6px;padding:0 4px;display:inline-block}.badge--completed{border-image-source:var(--px-lavender)}.badge--learning{border-image-source:var(--px-peach)}.badge--dev{border-image-source:var(--px-pinksoft)}.chips{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.chips li{border:6px solid #0000;border-image:var(--px-cream) 3 fill / 6px;padding:0 5px;font-size:14px;font-weight:700;line-height:1.6}.kbd{min-width:30px;height:30px;font:600 14px/1 var(--font-pixel);color:var(--navy);border:6px solid #0000;border-image:var(--px-cream) 3 fill / 6px;filter:drop-shadow(0 2px 0 var(--navy-deep));place-items:center;padding:0 3px;display:inline-grid}.section-label{font:600 14px/1 var(--font-pixel);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:12px;display:flex}.section-label:after{content:"";background:var(--navy);opacity:.8;flex:1;height:2px}.project{gap:18px;display:grid}.project__head{gap:8px;display:grid}.project__title{font-size:clamp(22px,3vw,30px)}.project__desc{font-size:17px}.project h4{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;font-size:14px}.project ul.points{gap:4px;margin:0;padding-left:20px;display:grid}.project__parts{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.project__part{border:9px solid #0000;border-image:var(--px-lavender) 3 fill / 9px;padding:6px 8px}.project__part h5{font:700 15px/1.3 var(--font-body);margin:0 0 6px}.project__note{color:var(--ink-soft);font-size:14px;font-style:italic}.project__links{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project__links-note{color:var(--ink-soft);font-size:14px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.contact-links{gap:10px;margin:0;padding:0;list-style:none;display:grid}.contact-links li{grid-template-columns:92px 1fr;align-items:baseline;gap:12px;display:grid}.contact-links__label{font:600 13px/1 var(--font-pixel);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.contact-links a{overflow-wrap:anywhere;font-weight:700}.facts{gap:8px;margin:0;display:grid}.facts div{grid-template-columns:110px 1fr;gap:12px;display:grid}.facts dt{font:600 13px/1.6 var(--font-pixel);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.facts dd{margin:0;font-weight:600}.facts__sub{color:var(--ink-soft);font-size:14px;font-weight:400}.btn--icon{min-width:36px;padding:0 2px}.btn--icon .pxicon{width:18px;height:18px}.metrics{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;margin:0;display:grid}.metric{border:9px solid #0000;border-image:var(--px-lavender) 3 fill / 9px;align-content:start;gap:2px;padding:2px 6px;display:grid}.metric--wide{grid-column:span 2}.metric dt{font:600 11px/1.2 var(--font-pixel);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.metric dd{font:800 19px/1.25 var(--font-body);color:var(--navy);font-variant-numeric:tabular-nums;margin:0}.metric--wide dd{font-size:15px}.metric__note{color:var(--ink-soft);font-size:12px}.tech{gap:10px;margin:0;display:grid}.tech>div{grid-template-columns:120px 1fr;align-items:start;gap:10px;display:grid}.tech dt{font:600 12px/1.2 var(--font-pixel);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding-top:8px}.tech dd{margin:0}@media (width<=560px){.tech>div{grid-template-columns:1fr;gap:4px}.tech dt{padding-top:0}}.contact-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px;max-width:760px;margin:0;padding:0;list-style:none;display:grid}.contact-card{height:100%;color:var(--ink);border:9px solid #0000;border-image:var(--px-cream) 3 fill / 9px;filter:drop-shadow(0 3px #1f255059);align-items:center;gap:12px;padding:4px 6px;text-decoration:none;transition:transform 80ms;display:flex}.contact-card:hover{filter:var(--px-shadow);transform:translateY(-2px)}.contact-card:active{transform:translateY(1px)}.contact-card--linkedin{border-image-source:var(--px-blue)}.contact-card--x{border-image-source:var(--px-lavender)}.contact-card--email{border-image-source:var(--px-pinksoft)}.contact-card--github{border-image-source:var(--px-peach)}.contact-card__icon .pxicon{width:28px;height:28px}.contact-card__text{flex:1;gap:1px;min-width:0;display:grid}.contact-card__label{font:600 13px/1.2 var(--font-pixel);letter-spacing:.1em;text-transform:uppercase}.contact-card__note{color:var(--ink-soft);font-size:13px}.contact-card__handle{overflow-wrap:break-word;word-break:break-word;font-size:13.5px;font-weight:800}.contact-card__go{color:var(--ink-soft);align-self:flex-start;font-weight:800}.little-things{gap:8px;display:grid}.little-things__title{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-size:13px}.little-things ul{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.little-things li{border:6px solid #0000;border-image:var(--px-pinksoft) 3 fill / 6px;align-items:center;gap:6px;padding:0 6px 0 3px;display:inline-flex}.little-things__icon .pxicon{width:22px;height:22px}.little-things__label{font-size:14px;font-weight:800}.little-things__note{color:var(--ink-soft);font-size:12px}.artwork{border:9px solid #0000;border-image:var(--px-navy) 3 fill / 9px;margin:0;position:relative}.artwork img{background:var(--lavender-soft);width:100%;height:auto;display:block}.artwork__tag{font:600 11px/1.4 var(--font-pixel);letter-spacing:.08em;text-transform:uppercase;color:var(--cream);background:#1f2550e0;padding:2px 8px;position:absolute;top:8px;left:8px}.artwork-info{justify-items:start;gap:8px;display:grid}.artwork-info__meta{font:600 12px/1 var(--font-pixel);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:8px;display:flex}.artwork-info__num{color:var(--cream);background:var(--navy);padding:3px 5px}.artwork-info__title{font-size:clamp(20px,2.6vw,26px)}
