:root{--bg:#090d17;--panel:#121927;--panel-2:#18243a;--text:#f5f7ff;--muted:#b8c4da;--quiet:#8492ac;--line:#293752;--indigo:#6f73ee;--ocean:#55b9e8;--seafoam:#58c7b2;--max:1180px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:linear-gradient(180deg, #4352be33, transparent 430px), var(--bg);color:var(--text);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}::selection{background:#6f73ee73}.site-header{z-index:10;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#090d17e6;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;width:100%;padding:18px clamp(20px,5vw,56px);display:flex;position:sticky;top:0}.brand{color:var(--text);letter-spacing:0;font-size:.95rem;font-weight:800}nav{color:var(--muted);gap:clamp(14px,3vw,34px);font-size:.92rem;font-weight:650;display:flex}nav a:hover,.text-link:hover,.back-link:hover{color:var(--ocean)}nav a:focus-visible{color:var(--ocean)}.text-link:focus-visible{color:var(--ocean)}.back-link:focus-visible{color:var(--ocean)}.section-pad{width:min(var(--max), calc(100% - 40px));margin-inline:auto;padding:clamp(54px,8vw,96px) 0}.hero{grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);align-items:center;gap:clamp(32px,6vw,72px);min-height:min(760px,100vh - 140px);padding-top:clamp(40px,5vw,64px);padding-bottom:clamp(40px,5vw,64px);display:grid}.hero-copy{max-width:820px}.hero h1{max-width:780px;font-size:clamp(3rem,5.4vw,4.8rem)}.eyebrow,.status{color:var(--ocean);letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px;font-size:.78rem;font-weight:850}h1,h2,h3,p{margin-top:0}h1{letter-spacing:0;max-width:950px;margin-bottom:24px;font-size:clamp(3rem,8vw,6.8rem);line-height:.98}h2{letter-spacing:0;margin-bottom:14px;font-size:clamp(2rem,4vw,3.8rem);line-height:1.05}h3{letter-spacing:0;margin-bottom:12px;font-size:clamp(1.25rem,2vw,1.8rem);line-height:1.15}.lead{max-width:700px;color:var(--muted);font-size:clamp(1.08rem,2vw,1.35rem)}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:34px;display:flex}.button{border:1px solid var(--line);min-height:46px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;padding:0 18px;font-weight:800;display:inline-flex}.button.primary{border-color:var(--indigo);background:var(--indigo);color:#fff}.button.secondary{background:#ffffff08}:is(.button:hover,.button:focus-visible){transform:translateY(-1px)}.hero-portrait{justify-self:end;gap:16px;width:min(100%,420px);margin:0;display:grid}.hero-portrait img{aspect-ratio:6/7;border:1px solid var(--line);object-fit:cover;object-position:center top;border-radius:8px;width:100%}.hero-portrait figcaption{padding-inline:2px}.hero-portrait span,.fact span{color:var(--quiet);letter-spacing:.12em;text-transform:uppercase;font-size:.78rem;font-weight:800;display:block}.hero-portrait strong{margin:8px 0;font-size:clamp(1.15rem,2vw,1.55rem);line-height:1.15;display:block}.hero-portrait p,.section-heading p,.project-card p,.skill-card li,.copy-block p,.contribution-card p,.pillar-card p,.implementation-row p,.resource-card p,.contact-band p{color:var(--muted)}.section-heading{max-width:760px;margin-bottom:34px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.project-card,.skill-card,.contribution-card,.pillar-card,.implementation-row,.resource-card{border:1px solid var(--line);background:var(--panel);border-radius:8px}.project-card{transition:border-color .16s,transform .16s;overflow:hidden}.project-media{aspect-ratio:16/9;background:#11141b;display:block;overflow:hidden}.project-media img,.project-hero-media img{object-fit:cover;width:100%;height:100%}.project-card-body{padding:clamp(22px,3vw,30px)}:is(.project-card:hover,.project-card:focus-visible){border-color:#6f73eee6;transform:translateY(-2px)}.project-card h3 a:hover,.project-card:hover h3{color:var(--ocean)}.project-card h3 a:focus-visible{color:var(--ocean)}.tag-list{flex-wrap:wrap;gap:8px;margin:20px 0 24px;padding:0;list-style:none;display:flex}.tag-list li{color:var(--muted);background:#ffffff0a;border:1px solid #ffffff1a;border-radius:999px;padding:6px 10px;font-size:.82rem;font-weight:750}.tag-list.large li{border-radius:8px}.text-link,.back-link{color:var(--text);font-weight:850;display:inline-flex}.project-button{width:fit-content;margin-top:2px}.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.skill-card{padding:24px}.skill-card ul{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.skill-card li{border-left:3px solid var(--seafoam);padding-left:10px;font-weight:700}.contact-band{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(260px,.5fr);align-items:center;gap:34px;display:grid}.contact-links{gap:12px;display:grid}.contact-links a{border:1px solid var(--line);color:var(--muted);overflow-wrap:anywhere;background:#ffffff08;border-radius:8px;padding:14px 16px;font-weight:800}:is(.contact-links a:hover,.contact-links a:focus-visible){border-color:var(--indigo);color:var(--text)}.site-footer{width:min(var(--max), calc(100% - 40px));color:var(--quiet);margin:0 auto;padding:28px 0 42px;font-size:.9rem}.project-hero{grid-template-columns:minmax(0,.98fr) minmax(300px,1.02fr);align-items:center;gap:clamp(30px,5vw,58px);padding-bottom:46px;display:grid}.project-hero h1{font-size:clamp(2.6rem,6vw,5.8rem)}.back-link{color:var(--muted);margin-bottom:28px}.project-hero-media{aspect-ratio:16/10;border:1px solid var(--line);background:var(--panel);border-radius:8px;overflow:hidden}.fact-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding-top:0;display:grid}.fact{border:1px solid var(--line);background:#ffffff08;border-radius:8px;padding:18px}.fact strong{margin-top:8px;font-size:1rem;display:block}.case-study{gap:28px;padding-top:10px;display:grid}.case-section{border-top:1px solid var(--line);grid-template-columns:minmax(220px,.4fr) minmax(0,.6fr);align-items:start;gap:clamp(24px,5vw,70px);padding-top:34px;display:grid}.case-section.wide{display:block}.copy-block{max-width:740px;font-size:1.05rem}.copy-block p:not(:last-child){margin-bottom:18px}.contribution-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:28px;display:grid}.pillar-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px;display:grid}.contribution-card{padding:22px}.pillar-card{background:linear-gradient(135deg, #6f73ee2e, transparent 58%), var(--panel);padding:24px}.contribution-card h3,.pillar-card h3,.implementation-row h3,.resource-card h3{font-size:1.1rem}.implementation-list{gap:14px;margin-top:28px;display:grid}.implementation-row{background:#ffffff06;grid-template-columns:minmax(180px,.35fr) minmax(0,.65fr);gap:clamp(18px,4vw,44px);padding:24px;display:grid}.implementation-row h3,.implementation-row p,.resource-card p{margin-bottom:0}.performance-section{gap:2rem}.performance-table{border:1px solid var(--line);border-radius:6px;overflow:hidden}.performance-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1.2fr) minmax(160px,.65fr) minmax(0,1.35fr);align-items:center;gap:1.25rem;padding:1.1rem 1.25rem;display:grid}.performance-row:first-child{border-top:0}.performance-row span,.performance-row strong{line-height:1.5}.performance-header{background:var(--panel);color:var(--muted);text-transform:uppercase;font-size:.78rem;font-weight:700}.performance-note{max-width:72ch;color:var(--muted);line-height:1.75}.resource-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px;display:grid}.resource-card{background:var(--panel-2);padding:22px}.media-showcase{padding-top:24px}.media-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.project-media-item{border:1px solid var(--line);background:linear-gradient(135deg, #55b9e81a, transparent 48%), var(--panel);border-radius:8px;gap:14px;margin:0;padding:14px;display:grid}.project-media-item.wide{grid-column:span 2}.project-media-item>img,.project-media-item>video{aspect-ratio:16/9;object-fit:cover;background:#090b0f;border:1px solid #ffffff14;border-radius:6px;width:100%}.project-media-item>video{display:block}.media-frame,.resource-thumb{min-height:190px;color:var(--muted);text-align:center;background:linear-gradient(135deg,#58c7b224,#0000 42%),linear-gradient(315deg,#6f73ee33,#0000 46%),#ffffff09;border:1px dashed #f5f2ec52;border-radius:8px;place-items:center;display:grid}.project-media-item.wide .media-frame{min-height:270px}.media-frame span,.resource-thumb span{color:var(--text);letter-spacing:.12em;text-transform:uppercase;background:#0f1115b8;border:1px solid #ffffff1f;border-radius:999px;padding:8px 12px;font-size:.78rem;font-weight:850}.project-media-item figcaption{gap:5px;display:grid}.project-media-item figcaption strong{font-size:1.02rem}.project-media-item figcaption span{color:var(--muted);font-size:.94rem}.code-showcase .case-heading>p:last-child{max-width:680px;color:var(--muted)}.code-grid{gap:18px;margin-top:28px;display:grid}.code-card{border:1px solid var(--line);background:var(--panel);border-radius:8px;grid-template-columns:minmax(230px,.34fr) minmax(0,.66fr);gap:20px;display:grid;overflow:hidden}.code-card-copy{padding:24px 4px 24px 24px}.code-card-copy>span{color:var(--ocean);margin-bottom:12px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.82rem;font-weight:800;display:block}.code-card-copy p{color:var(--muted);margin-bottom:0}.code-card pre{border-left:1px solid var(--line);color:#d9e3f7;tab-size:2;background:#0b0d12;min-width:0;margin:0;padding:24px;font:.86rem/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;overflow:auto}.code-card code{font:inherit}.resource-thumb{min-height:120px;margin-bottom:18px}.resource-meta{color:var(--ocean);letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px;font-size:.78rem;font-weight:850;display:block}.project-links-section{padding-bottom:28px}.project-links{flex-wrap:wrap;gap:12px;margin-top:24px;display:flex}.related-projects-section .case-heading>p:last-child{max-width:680px;color:var(--muted)}.related-projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px;display:grid}.related-project-link{border:1px solid var(--line);background:var(--panel);border-radius:8px;gap:8px;min-height:132px;padding:22px;transition:border-color .16s,transform .16s;display:grid}.related-project-link strong{color:var(--text);font-size:1.14rem}.related-project-link span{color:var(--muted)}:is(.related-project-link:hover,.related-project-link:focus-visible){border-color:var(--indigo);transform:translateY(-2px)}.button.disabled{cursor:not-allowed;opacity:.55}.project-a-little-lost{--indigo:#4d91b8;--ocean:#79c9df;--seafoam:#82cab9;background:linear-gradient(180deg, #35669933, transparent 470px), var(--bg)}.project-a-little-lost .project-hero-media,.project-a-little-lost .project-media-item{background:linear-gradient(145deg, #58c7b229, transparent 45%), linear-gradient(315deg, #6f73ee1f, transparent 50%), var(--panel)}@media (max-width:900px){.hero,.project-hero,.contact-band,.case-section{grid-template-columns:1fr}.hero{min-height:auto}.hero-portrait{grid-template-columns:minmax(150px,210px) minmax(0,1fr);justify-self:start;align-items:end;width:min(100%,600px)}.project-grid,.skills-grid,.fact-strip,.contribution-grid,.pillar-grid,.media-grid,.implementation-row,.resource-grid{grid-template-columns:1fr}.project-media-item.wide{grid-column:auto}.code-card,.related-projects-grid{grid-template-columns:1fr}.code-card-copy{padding:22px}.code-card pre{border-top:1px solid var(--line);border-left:0}.project-hero{padding-top:42px}.performance-row{grid-template-columns:1fr;gap:.4rem}.performance-header{display:none}}@media (max-width:640px){.site-header{flex-direction:column;align-items:flex-start;gap:12px;position:static}nav{justify-content:space-between;width:100%}.section-pad{width:min(var(--max), calc(100% - 28px));padding:46px 0}h1{font-size:clamp(2.55rem,18vw,4.2rem)}.button{width:100%}.project-links{display:grid}.hero-actions{grid-template-columns:1fr;display:grid}.hero-portrait{grid-template-columns:minmax(120px,42vw) minmax(0,1fr)}}
