.bg-canvas{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.grain{z-index:1;pointer-events:none;opacity:.035;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.vignette{z-index:1;pointer-events:none;background:radial-gradient(at 50% 40%,#0000 40%,#03050a8c 100%);position:fixed;inset:0}.navbar{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:linear-gradient(#060910b8,#06091000);justify-content:space-between;align-items:center;padding:28px 8vw;transition:padding .4s;display:flex;position:fixed;top:0;left:0;right:0}.navbar.scrolled{border-bottom:1px solid var(--line);background:#080c14c7;padding:16px 8vw}.nav-mark{font-family:var(--mono);letter-spacing:.14em;text-transform:none;color:var(--ink-soft);font-size:11.5px;transition:color .3s}.nav-mark:hover{color:var(--ink)}.nav-links{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;gap:38px;font-size:11.5px;display:flex}.nav-links a{color:var(--ink-soft);padding-bottom:6px;transition:color .3s;position:relative}.nav-links a:after{content:"";background:var(--moon);width:0%;height:1px;transition:width .35s;position:absolute;bottom:0;left:0}.nav-links a:hover{color:var(--ink)}.nav-links a:hover:after{width:100%}.nav-cta{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:999px;padding:10px 22px;font-size:11px;transition:all .3s}.nav-cta:hover{color:var(--ink);border-color:var(--moon-soft);box-shadow:0 0 24px -6px #bcd6f759}@media (width<=860px){.nav-links{display:none}}@media (width<=480px){.nav-cta{padding:9px 16px;font-size:10px}}.hero{flex-direction:column;justify-content:center;min-height:100svh;padding-top:120px;display:flex}h1.name{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-size:clamp(48px,8.4vw,118px);font-weight:400;line-height:.98}h1.name .last{color:var(--moon);font-style:italic;font-weight:400;display:block}.role-line{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--moon-soft);margin-top:30px;font-size:12.5px}.hero-statement{font-family:var(--sans);color:var(--ink-soft);max-width:620px;margin-top:26px;font-size:clamp(17px,2vw,22px);font-weight:300;line-height:1.6}.hero-links{flex-wrap:wrap;gap:34px;margin-top:48px;display:flex}.hero-links a{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);border-bottom:1px solid var(--line-strong);padding-bottom:8px;font-size:12px;transition:all .3s}.hero-links a:hover{color:var(--ink);border-color:var(--moon)}.about-heading{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);margin-bottom:44px;font-size:clamp(40px,4vw,48px);font-weight:400}.about-grid{grid-template-columns:1fr 1fr;align-items:stretch;gap:80px;display:grid}.about-text{max-width:460px}.about-text p{font-family:var(--sans);color:var(--ink-soft);margin-bottom:24px;font-size:15.5px;font-weight:300;line-height:1.8}.about-text p:last-child{margin-bottom:0}.about-text p strong{color:var(--ink);font-weight:500}.about-facts{grid-template-columns:1fr 1fr;align-content:start;align-self:stretch;gap:48px;display:grid}.about-group{flex-direction:column;height:100%;display:flex}.about-group-label{border-bottom:1px solid var(--line);font-family:var(--mono);color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase;padding:0 0 16px;font-size:12.5px}.about-list{flex:1;margin:0;padding:16px 0 0;list-style:none}.about-list-item{font-family:var(--mono);color:var(--ink-soft);align-items:baseline;gap:10px;padding:8px 0;font-size:12.5px;display:flex}.about-list-bullet{color:var(--ink-faint);flex-shrink:0}@media (width<=860px){.about-grid{grid-template-columns:1fr;gap:40px}.about-text{max-width:none}.about-facts{gap:40px}}@media (width<=560px){.about-facts{grid-template-columns:1fr;gap:32px}.about-heading{margin-bottom:36px}}@media (width<=700px){.about-grid{gap:30px}}.project-card-wrap{perspective:1000px;height:100%}.project-card-link{text-align:left;cursor:pointer;width:100%;height:100%;font:inherit;color:inherit;background:0 0;border:none;padding:0;display:block}.project-card{border:1px solid var(--line);background:var(--bg-deep);border-radius:12px;flex-direction:column;height:100%;padding:14px;transition:border-color .4s cubic-bezier(.16,1,.3,1),box-shadow .4s cubic-bezier(.16,1,.3,1);display:flex;position:relative;overflow:hidden}.project-card[data-hovered=true]{border-color:var(--line-strong);box-shadow:0 0 0 1px #bcd6f70f,0 20px 48px -24px #060910cc,0 0 32px -8px #8cafe11f}.project-preview{aspect-ratio:16/10;background:var(--bg-mid);border-radius:8px;position:relative;overflow:hidden}.project-preview--photo{background:var(--bg-mid)}.project-preview-image{object-fit:cover;object-position:center top;transform-origin:top;width:100%;height:100%;transition:transform .5s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.project-card-link:hover .project-preview-image{transform:scale(1.04)}.project-preview-media{transform-origin:top;transition:transform .5s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.project-preview-media:before,.project-preview-media:after{pointer-events:none}.project-card-link:hover .project-preview-media{transform:scale(1.04)}.project-preview-shade{pointer-events:none;opacity:0;background:linear-gradient(#0000 45%,#06091073 100%);transition:opacity .5s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.project-card-link:hover .project-preview-shade{opacity:1}.project-preview--systems{background:linear-gradient(160deg,#0d1424 0%,#111a2c 45%,#0a0f1c 100%)}.project-preview--systems .project-preview-media{background-image:radial-gradient(circle at 22% 38%,#7f9dc724 0 2px,#0000 3px),radial-gradient(circle at 68% 28%,#7f9dc71f 0 2px,#0000 3px),radial-gradient(circle at 48% 72%,#7f9dc71a 0 2px,#0000 3px),linear-gradient(#c8d7f00a 1px,#0000 1px),linear-gradient(90deg,#c8d7f00a 1px,#0000 1px);background-size:100% 100%,100% 100%,100% 100%,28px 28px,28px 28px}.project-preview--systems .project-preview-media:after{content:"";background:linear-gradient(135deg,#0000 48%,#bcd6f70f 49%,#0000 50%),linear-gradient(45deg,#0000 48%,#bcd6f70a 49%,#0000 50%);border:1px solid #bcd6f714;border-radius:4px;position:absolute;inset:18% 14% 22%}.project-preview--cloud{background:linear-gradient(#0a101c 0%,#111a2c 100%)}.project-preview--cloud .project-preview-media{background-image:radial-gradient(80% 40% at 50% 30%,#7f9dc71a,#0000 70%),linear-gradient(#c8d7f00f 1px,#0000 1px);background-size:100% 100%,100% 18px}.project-preview--cloud .project-preview-media:before,.project-preview--cloud .project-preview-media:after{content:"";background:#bcd6f71a;height:1px;position:absolute;left:12%;right:12%}.project-preview--cloud .project-preview-media:before{top:38%}.project-preview--cloud .project-preview-media:after{top:58%;left:22%;right:22%}.project-preview--distributed{background:linear-gradient(145deg,#0b111f 0%,#131e32 100%)}.project-preview--distributed .project-preview-media{background-image:radial-gradient(circle at 30%,#7f9dc714 0 40px,#0000 41px),radial-gradient(circle at 70%,#7f9dc714 0 40px,#0000 41px)}.project-preview--distributed .project-preview-media:after{content:"";background:linear-gradient(90deg,#0000,#bcd6f726 20% 80%,#0000);height:1px;position:absolute;top:50%;left:30%;right:30%;transform:translateY(-50%)}.project-preview--ai{background:linear-gradient(160deg,#0a0f1c 0%,#152238 100%)}.project-preview--ai .project-preview-media{background-image:radial-gradient(circle at 50% 45%,#7f9dc71f,#0000 55%)}.project-preview--ai .project-preview-media:before{content:"";border:1px solid #bcd6f714;border-radius:50%;position:absolute;inset:20% 18%;box-shadow:0 0 0 12px #bcd6f708,0 0 0 24px #bcd6f705}.project-preview--data{background:linear-gradient(#0c1220 0%,#101828 100%)}.project-preview--data .project-preview-media{background-image:linear-gradient(#c8d7f00d 1px,#0000 1px),linear-gradient(90deg,#c8d7f00d 1px,#0000 1px);background-size:24px 24px}.project-preview--data .project-preview-media:after{content:"";background:repeating-linear-gradient(#bcd6f70a 0 1px,#0000 1px 14px);border:1px solid #bcd6f712;position:absolute;inset:24% 16% 20%}.project-preview--pipeline{background:linear-gradient(135deg,#0a0f1c 0%,#121c30 100%)}.project-preview--pipeline .project-preview-media{background-image:linear-gradient(90deg,#0000 0%,#7f9dc70f 25%,#7f9dc71a 50%,#7f9dc70f 75%,#0000 100%)}.project-preview--pipeline .project-preview-media:before{content:"";background:linear-gradient(90deg,#bcd6f70d,#bcd6f72e 50%,#bcd6f70d);border-radius:2px;height:2px;position:absolute;top:50%;left:10%;right:10%;transform:translateY(-50%)}.project-body{flex-direction:column;flex:1;margin-top:13px;display:flex}.project-body-top{flex:1}.project-name{font-family:var(--serif);color:var(--moon);font-size:clamp(18px,1.6vw,22px);font-weight:400;line-height:1.25}.project-desc{font-family:var(--sans);color:var(--ink-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:8px;font-size:14px;font-weight:300;line-height:1.6;display:-webkit-box;overflow:hidden}.project-body-bottom{margin-top:auto}.project-meta{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.project-tag{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--moon-soft);border:1px solid var(--line-strong);border-radius:999px;padding:4px 10px;font-size:10px}.project-footer{border-top:1px solid #c8d7f014;align-items:center;margin-top:12px;padding-top:12px;display:flex}.project-link{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:8px;font-size:11px;transition:color .3s;display:inline-flex}.project-card-link:hover .project-link{color:var(--moon)}.project-link-arrow{transition:transform .3s cubic-bezier(.16,1,.3,1);display:inline-block}.project-card-link:hover .project-link-arrow{transform:translate(3px)}@media (prefers-reduced-motion:reduce){.project-preview-media,.project-preview-image,.project-preview-shade,.project-card{transition:none}.project-card-link:hover .project-preview-media,.project-card-link:hover .project-preview-image{transform:none}}@media (width<=560px){.project-card{padding:14px}.project-name{font-size:18px}}.project-modal-root{z-index:100;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.project-modal-backdrop{background:color-mix(in srgb, var(--bg-void) 72%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;border:none;position:absolute;inset:0}.project-modal{background:var(--bg-deep);border:1px solid var(--line);width:min(1240px,92vw);height:min(900px,91vh);box-shadow:0 40px 120px -20px color-mix(in srgb, var(--bg-void) 55%, transparent);z-index:1;border-radius:6px;flex-direction:column;display:flex;position:relative;overflow:hidden}.modal-header{border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:40px;padding:28px 36px 18px;display:flex}.header-left{flex:1;min-width:0;max-width:calc(100% - 148px);padding-right:16px}.proj-title{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-size:clamp(24px,3vw,32px);font-weight:400;line-height:1.15}.proj-subtitle{font-family:var(--sans);color:var(--moon-soft);opacity:.88;max-width:820px;margin-top:10px;font-size:14.5px;font-weight:300;line-height:1.6}.chip-row{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.chip{font-family:var(--mono);letter-spacing:.04em;color:var(--ink-soft);background:color-mix(in srgb, var(--bg-deep) 75%, transparent);border:1px solid var(--line-strong);border-radius:20px;padding:5px 11px;font-size:10.5px;transition:border-color .28s,background .28s,transform .28s,box-shadow .28s,color .28s}.chip:hover{color:var(--ink);border-color:color-mix(in srgb, var(--moon-soft) 50%, transparent);background:color-mix(in srgb, var(--moon-soft) 8%, transparent);box-shadow:0 3px 14px -4px color-mix(in srgb, var(--moon) 20%, transparent);transform:translateY(-2px)}.header-actions{flex-shrink:0;gap:10px;margin-left:auto;padding-top:2px;display:flex}.icon-btn{border:1px solid var(--line-strong);width:38px;height:38px;color:var(--ink-soft);background:color-mix(in srgb, var(--bg-deep) 60%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;line-height:1;text-decoration:none;transition:all .25s;display:flex}.icon-btn svg{width:16px;height:16px}.icon-btn:hover{color:var(--ink);border-color:var(--moon-soft);box-shadow:0 0 20px -6px color-mix(in srgb, var(--moon) 40%, transparent)}.modal-body{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex:1;overflow:hidden auto}.modal-body::-webkit-scrollbar{width:8px}.modal-body::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:4px}.case-study{--card-pad:24px;--heading-gap:18px;padding:28px 32px 36px}.case-study>.case-section{width:100%;max-width:none;margin:0;padding:0;position:static}.case-study>.case-section+.case-section{margin-top:44px}.section-label{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb, var(--moon) 62%, var(--moon-soft));margin-bottom:var(--heading-gap);align-items:center;gap:9px;font-size:10.5px;display:flex}.section-label:before{content:"—";color:color-mix(in srgb, var(--moon-soft) 75%, var(--moon-dim))}.gallery{grid-template-columns:1.85fr .95fr;gap:8px;min-width:0;height:clamp(330px,47vh,500px);display:grid}.gallery-shot{border-radius:4px;min-width:0;min-height:0;transition:transform .35s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}.gallery-sub-stack{flex-direction:column;gap:8px;min-height:0;display:flex}.gallery-sub{flex:1;min-height:0}.gallery-shot .project-placeholder,.gallery-shot .gallery-image{border:1px solid var(--line);border-radius:4px;width:100%;height:100%;transition:border-color .35s}.gallery-shot .gallery-image{object-fit:cover;object-position:center top;display:block}.gallery-shot:hover{transform:scale(1.01)}.gallery-shot:hover .project-placeholder,.gallery-shot:hover .gallery-image{border-color:color-mix(in srgb, var(--moon-soft) 35%, transparent)}.gallery .project-placeholder-label{letter-spacing:.1em;background:color-mix(in srgb, var(--bg-deep) 50%, transparent);padding:3px 8px;font-size:9.5px;bottom:12px;left:14px}.case-study>.case-section .case-prose{width:78%;max-width:none}.body-text{font-family:var(--sans);color:var(--ink-soft);font-size:14px;font-weight:300;line-height:1.7}.body-text+.body-text{margin-top:10px}.ps-grid{grid-template-columns:1fr 1fr;gap:24px;display:grid}.ps-cell{border:1px solid var(--line);padding:var(--card-pad);border-radius:4px;flex-direction:column;display:flex}.ps-cell .section-label{margin-bottom:14px}.stack-panel{border:1px solid var(--line);border-radius:4px;padding:18px 22px}.stack-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 0;display:grid}.stack-group{border-left:1px solid var(--line);flex-direction:column;gap:5px;min-width:0;padding:0 14px;display:flex}.stack-group:first-child{border-left:none;padding-left:0}.stack-cat{font-family:var(--mono);color:var(--moon);letter-spacing:.08em;text-transform:uppercase;font-size:9.5px}.stack-items{flex-direction:column;gap:3px;list-style:none;display:flex}.stack-items li{font-family:var(--sans);color:var(--ink-soft);font-size:11.5px;line-height:1.5}.notes-grid{grid-template-columns:1fr 1fr;align-items:start;gap:40px;display:grid}.notes-col{flex-direction:column;display:flex}.highlight-list,.learnings-list{flex-direction:column;gap:9px;display:flex}.highlight-item,.learnings-item{font-family:var(--sans);color:var(--ink-soft);gap:10px;font-size:13px;font-weight:300;line-height:1.55;display:flex}.highlight-item:before,.learnings-item:before{content:"";background:var(--moon-soft);border-radius:50%;flex-shrink:0;width:5px;height:5px;margin-top:6px}.highlight-keyword{color:var(--moon-soft)}.project-placeholder{background:var(--bg-mid);position:relative;overflow:hidden}.project-placeholder-media{position:absolute;inset:0}.project-placeholder-label{font-family:var(--mono);text-transform:uppercase;color:var(--ink-faint);border:1px dashed var(--line-strong);border-radius:2px;position:absolute}.project-placeholder--systems,.project-placeholder--cloud,.project-placeholder--ai,.project-placeholder--data{background:radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--moon-soft) 14%, transparent), transparent 55%), linear-gradient(160deg, var(--bg-lifted-2), var(--bg-mid))}.project-placeholder--systems .project-placeholder-media{background-image:linear-gradient(color-mix(in srgb, var(--moon) 4%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--moon) 4%, transparent) 1px, transparent 1px);background-size:28px 28px}.project-placeholder--cloud .project-placeholder-media{background-image:linear-gradient(to bottom, color-mix(in srgb, var(--moon) 6%, transparent) 1px, transparent 1px);background-size:100% 18px}.project-placeholder--ai .project-placeholder-media{background-image:radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--moon-soft) 12%, transparent), transparent 55%)}.project-placeholder--data .project-placeholder-media{background-image:linear-gradient(color-mix(in srgb, var(--moon) 5%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--moon) 5%, transparent) 1px, transparent 1px);background-size:24px 24px}@media (width<=900px){.case-study{padding:24px 24px 32px}.modal-header{gap:24px;padding:24px 24px 16px}.header-left{max-width:calc(100% - 148px)}}@media (width<=680px){.project-modal-root{padding:8px}.project-modal{width:96vw;height:94vh}.modal-header{flex-direction:column;gap:18px;padding:24px 20px 16px}.header-left{max-width:none;padding-right:0}.header-actions{align-self:flex-end}.case-study{padding:24px 20px 28px}.case-study>.case-section+.case-section{margin-top:36px}.gallery{grid-template-columns:1fr;height:auto}.gallery-sub-stack{flex-direction:row;height:clamp(120px,22vw,160px)}.gallery-sub{flex:1}.case-study>.case-section .case-prose{width:100%;max-width:none}.ps-grid{grid-template-columns:1fr}.stack-grid{grid-template-columns:1fr;gap:20px}.stack-group{padding:0;border-left:none!important}.notes-grid{grid-template-columns:1fr;gap:32px}}@media (prefers-reduced-motion:reduce){.icon-btn,.chip,.gallery-shot,.gallery-shot .project-placeholder,.gallery-shot .gallery-image{transition:none}.gallery-shot:hover,.chip:hover{transform:none}}.project-grid{grid-template-columns:repeat(3,1fr);gap:28px;display:grid}@media (width<=1279px){.project-grid{grid-template-columns:repeat(2,1fr);gap:28px}}@media (width<=680px){.project-grid{grid-template-columns:1fr;gap:24px}}.experience-sections{flex-direction:column;gap:72px;display:flex}.experience-subsection{flex-direction:column;gap:36px;display:flex}.experience-subtitle{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:20px;font-size:24px;font-weight:400}.timeline{padding-bottom:32px;padding-left:48px;position:relative}.timeline:before{content:"";background:linear-gradient(to bottom, var(--moon-dim), var(--line) 90%);pointer-events:none;width:1px;position:absolute;top:10px;bottom:0;left:0}.tl-item{padding-bottom:58px;position:relative}.tl-item:last-child{padding-bottom:0}.tl-dot{background:var(--bg-deep);border:1.5px solid var(--moon-soft);z-index:1;border-radius:50%;width:9px;height:9px;position:absolute;top:6px;left:-53px}.tl-date{font-family:var(--mono);letter-spacing:.1em;color:var(--ink-faint);text-transform:uppercase;font-size:11.5px}.tl-role{font-family:var(--serif);color:var(--ink);margin-top:10px;font-size:23px}.tl-org{font-family:var(--sans);color:var(--moon-soft);margin-top:4px;font-size:14px}.tl-desc{font-family:var(--sans);color:var(--ink-soft);max-width:min(840px,100%);margin-top:14px;font-size:15px;font-weight:300;line-height:1.7}.tl-item.minor .tl-role{color:var(--ink-soft);font-size:18px}.tl-item.minor .tl-desc{font-size:14px}@media (width<=700px){.experience-sections{gap:56px}.experience-subtitle{font-size:21px}}.edu-list{flex-direction:column;display:flex}.edu-item{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:start;gap:40px;padding:36px 0;display:grid}.edu-item:last-child{border-bottom:none}.edu-item:first-child{border-top:1px solid var(--line)}.edu-degree{font-family:var(--serif);color:var(--ink);font-size:24px;font-weight:400;line-height:1.2}.edu-institution{font-family:var(--sans);color:var(--moon-soft);margin-top:8px;font-size:15px}.edu-summary{font-family:var(--sans);color:var(--ink-soft);max-width:560px;margin-top:16px;font-size:15px;font-weight:300;line-height:1.7}.edu-meta{flex-direction:column;gap:16px;min-width:140px;display:flex}.edu-meta-row{text-align:right;flex-direction:column;gap:4px;display:flex}.edu-meta-key{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:10.5px}.edu-meta-value{font-family:var(--mono);color:var(--ink-soft);font-size:12.5px}@media (width<=700px){.edu-item{grid-template-columns:1fr;gap:24px;padding:28px 0}.edu-meta{flex-direction:row;gap:32px}.edu-meta-row{text-align:left}.edu-degree{font-size:21px}}.skills-grid{grid-template-columns:repeat(3,1fr);gap:44px 60px;display:grid}.skill-group-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--moon-soft);border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:14px;font-size:11px}.skill-tags{flex-wrap:wrap;gap:10px;display:flex}.skill-tag{font-family:var(--sans);color:var(--ink-soft);border:1px solid var(--line);border-radius:20px;padding:7px 14px;font-size:13.5px;transition:all .3s}.skill-tag:hover{color:var(--ink);border-color:var(--moon-soft);box-shadow:0 0 18px -4px #bcd6f74d}@media (width<=860px){.skills-grid{grid-template-columns:1fr 1fr}}@media (width<=560px){.skills-grid{grid-template-columns:1fr}}.contact-section{text-align:center;padding-bottom:64px}.contact-title{font-family:var(--serif);max-width:820px;margin:0 auto;font-size:clamp(34px,5.5vw,68px);font-weight:400;line-height:1.08}.contact-support{font-family:var(--sans);color:var(--ink-faint);max-width:540px;margin:24px auto 0;font-size:16px;font-weight:300;line-height:1.65}.contact-title .accent{color:var(--moon);font-style:italic}.contact-email{font-family:var(--mono);letter-spacing:.02em;color:var(--ink);border-bottom:1px solid var(--moon-soft);margin-top:44px;padding-bottom:10px;font-size:clamp(15px,2vw,19px);transition:all .3s;display:inline-block}.contact-email:hover{color:var(--moon);box-shadow:0 12px 30px -10px #bcd6f766}.contact-socials{justify-content:center;gap:32px;margin-top:64px;display:flex}.contact-socials a{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:11.5px;transition:color .3s}.contact-socials a:hover{color:var(--ink)}@media (width<=700px){.contact-section{padding-bottom:52px}.contact-socials{flex-wrap:wrap;gap:24px;margin-top:48px}}.site-footer{text-align:center;font-family:var(--mono);letter-spacing:.1em;color:var(--ink-faint);z-index:2;padding:22px 8vw 52px;font-size:10.5px;position:relative}.section-divider-wrap{max-width:1280px;margin:0 auto;padding:0 8vw}.section-divider{background:var(--line);border:none;width:100%;height:1px;margin:0}@media (width<=700px){.section-divider-wrap{padding:0 7vw}}:root{--bg-void:#060910;--bg-deep:#0a0f1c;--bg-mid:#111a2c;--bg-lifted:#182338;--bg-lifted-2:#1e2c46;--line:#c8d7f017;--line-strong:#c8d7f029;--moon:#bcd6f7;--moon-soft:#7f9dc7;--moon-dim:#4d6086;--warm:#f2e2c4;--ink:#eceef4;--ink-soft:#9aa4bd;--ink-faint:#5b6480;--serif:"Fraunces", Georgia, serif;--sans:"Inter", -apple-system, sans-serif;--mono:"IBM Plex Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg-deep);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}::selection{background:var(--moon-dim);color:var(--bg-void)}a{color:inherit;text-decoration:none}:focus-visible{outline:1.5px solid var(--moon);outline-offset:4px}main{z-index:2;position:relative}section{max-width:1280px;margin:0 auto;padding:70px 8vw;position:relative}.eyebrow{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint);align-items:center;gap:10px;margin-bottom:12px;font-size:11px;display:flex}.eyebrow:before{content:"";background:var(--moon-dim);width:14px;height:1px}.eyebrow--center{justify-content:center}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:64px;display:flex}h2.section-title{font-family:var(--serif);letter-spacing:-.01em;font-size:clamp(32px,4vw,52px);font-weight:400}.section-title--spaced{margin-bottom:56px}.section-note{font-family:var(--sans);color:var(--ink-faint);text-align:right;max-width:280px;font-size:14px}.reveal{opacity:0;transition:opacity .9s cubic-bezier(.16,.8,.24,1),transform .9s cubic-bezier(.16,.8,.24,1);transform:translateY(26px)}.reveal.in{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}@media (width<=700px){section{padding:60px 7vw}.section-note{text-align:left}}
