:root{--bg:#f4f5f7;--surface:#fff;--text:#1f2328;--muted:#5b6470;--border:#dfe3e8;--accent:#2f4f7f;--accentHover:#243e64;--accentTint:#e4e9f1;--onAccent:#fff;--scrim:#1f232873;--shadow:0 1px 2px #1f23280d, 0 10px 28px -14px #1f23282e;--modalShadow:0 24px 64px -24px #00000073;--fh:"Manrope", system-ui, sans-serif;--fb:"Inter", system-ui, sans-serif;--fhero:var(--fh);--hw:700;--heroW:700;--heroTrack:-.025em;--hTrack:-.015em;--pad:72px;--gap:40px;--secPad:88px;--heroPad:120px;--hero:60px;--sub:21px;--h2:36px;--body:16px;--aboutSize:18px;--heroCols:minmax(0, 1fr) clamp(360px, 30vw, 440px);--heroGap:clamp(56px, 6vw, 96px);--heroImgMax:440px;--discX:32px;--discY:-24px;--projCols:repeat(3, minmax(0, 1fr));--techSplit:260px minmax(0, 1fr);--techCols:200px minmax(0, 1fr);--modalTop:96px;--modalPad:24px;--modalInner:40px;--videoTop:24px;--videoInner:24px;--scrollOffset:16px}@media (width>=768px) and (width<=1099.98px){:root{--pad:48px;--hero:48px;--heroCols:minmax(0, 1fr) 280px;--heroGap:48px;--heroImgMax:280px;--discX:22px;--discY:-17px;--projCols:repeat(2, minmax(0, 1fr));--techSplit:1fr}}@media (width<=767.98px){:root{--pad:22px;--secPad:56px;--heroPad:56px;--hero:36px;--sub:18px;--h2:28px;--aboutSize:17px;--heroCols:1fr;--heroGap:32px;--heroImgMax:240px;--discX:18px;--discY:-14px;--projCols:1fr;--techSplit:1fr;--techCols:1fr;--modalTop:24px;--modalPad:12px;--modalInner:24px;--videoTop:24px;--videoInner:14px}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--fb);font-size:var(--body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.65}img{max-width:100%;display:block}a{color:inherit}button{font:inherit;color:inherit}h1,h2,h3,p,ul{margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}[tabindex="-1"]:focus{outline:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.h2{font-family:var(--fh);font-weight:var(--hw);font-size:var(--h2);letter-spacing:var(--hTrack);line-height:1.2}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:13px;font-weight:600;line-height:1.65}.container{box-sizing:content-box;max-width:1200px;padding-inline:var(--pad);margin-inline:auto}.section{padding-block:var(--secPad);border-top:1px solid var(--border)}.text-link{color:var(--text);text-decoration:none;transition:color .12s}.text-link:hover{color:var(--accent)}.text-link--muted{color:var(--muted)}.btn{min-height:44px;font-family:var(--fb);cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:0 20px;font-size:15px;line-height:1.2;text-decoration:none;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.btn--sm{gap:6px;min-height:40px;padding:0 14px;font-size:14px}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--onAccent);font-weight:600}.btn--primary:hover{background:var(--accentHover);border-color:var(--accentHover)}.btn--secondary{border-color:var(--border);color:var(--text);background:0 0;font-weight:500}.btn--secondary:hover{border-color:var(--accent);color:var(--accent)}.btn-row{flex-wrap:wrap;gap:12px;display:flex}.icon-btn{border:1px solid var(--border);width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;transition:border-color .12s,color .12s;display:flex}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.site-header{border-bottom:1px solid var(--border);position:relative}.site-header-inner{justify-content:space-between;align-items:center;gap:24px;padding-block:22px;display:flex}.brand{font-family:var(--fh);font-weight:var(--hw);letter-spacing:var(--hTrack);color:var(--text);align-items:center;gap:12px;font-size:19px;text-decoration:none;display:flex}.brand-avatar{border:1px solid var(--border);object-fit:cover;border-radius:999px;width:36px;height:36px}.nav-desktop{align-items:center;gap:28px;font-size:15px;font-weight:500;display:flex}.nav-button{font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.nav-divider{background:var(--border);width:1px;height:18px}.menu-button,.nav-mobile{display:none}@media (width<=767.98px){.nav-desktop{display:none}.menu-button{border:1px solid var(--border);min-height:44px;color:var(--text);font:500 15px var(--fb);cursor:pointer;background:0 0;border-radius:8px;align-items:center;padding:0 14px;display:flex}.menu-button[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.nav-mobile:not([hidden]){z-index:50;padding:8px var(--pad) 16px;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:var(--shadow);flex-direction:column;font-size:17px;font-weight:500;animation:.15s ease-out menu-fade;display:flex;position:absolute;top:calc(100% + 1px);left:0;right:0}.nav-mobile>a,.nav-mobile>button{text-align:left;align-items:center;min-height:48px;display:flex}.nav-mobile-divider{background:var(--border);height:1px;margin:8px 0}}@keyframes menu-fade{0%{opacity:0}}.hero{padding-block:var(--heroPad) var(--secPad);isolation:isolate;position:relative;overflow:hidden}.hero-sky{z-index:0;pointer-events:none;background:url(/assets/sky-silhouette-_ibmpd2A.png) 100% 100%/auto 100% no-repeat;position:absolute;bottom:0;-webkit-mask-image:linear-gradient(90deg,#0000 0% 30%,#000 65%);mask-image:linear-gradient(90deg,#0000 0% 30%,#000 65%)}.hero-sky--front{opacity:.14;width:62%;height:72%;animation:50s ease-in-out infinite alternate sky-drift;right:0}.hero-sky--back{opacity:.06;width:78%;height:96%;animation:60s ease-in-out infinite alternate sky-back;right:-4%;transform:scaleX(-1);-webkit-mask-image:linear-gradient(270deg,#0000 0% 30%,#000 65%);mask-image:linear-gradient(270deg,#0000 0% 30%,#000 65%)}@keyframes sky-drift{0%{transform:translate(0)}to{transform:translate(-48px)}}@keyframes sky-back{0%{transform:translate(0)scaleX(-1)}to{transform:translate(40px)scaleX(-1)}}@media (prefers-reduced-motion:reduce){.hero-sky{animation:none}}@media (width<=767.98px){.hero-sky--back{display:none}.hero-sky--front{width:100%;height:140px;animation:none}}.hero-inner{grid-template-columns:var(--heroCols);gap:var(--heroGap);align-items:center;display:grid}.hero-text{z-index:1;min-width:0;position:relative}.hero-title{max-width:17em;font-family:var(--fhero);font-weight:var(--heroW);font-size:var(--hero);letter-spacing:var(--heroTrack);text-wrap:balance;line-height:1.12}.wave{vertical-align:-.08em;transform-origin:70% 85%;margin:0 .06em 0 .14em;animation:1.8s ease-in-out .4s 2 wave;display:inline-block;transform:rotate(-12deg)}.wave--replay{animation:1.8s ease-in-out wave}.hero-hand{color:currentColor;width:.82em;height:.82em;display:block}@keyframes wave{0%,60%,to{transform:rotate(-12deg)}10%{transform:rotate(4deg)}20%{transform:rotate(-20deg)}30%{transform:rotate(4deg)}40%{transform:rotate(-16deg)}50%{transform:rotate(0)}}@media (prefers-reduced-motion:reduce){.wave{animation:none}}.hero-sub{max-width:36em;font-size:var(--sub);color:var(--muted);text-wrap:pretty;margin-top:24px;line-height:1.55}.hero-actions{margin-top:32px}.hero-photo{z-index:1;width:100%;max-width:var(--heroImgMax);justify-self:end;position:relative}.hero-disc{background:var(--accentTint);transform:translate(var(--discX), var(--discY));border-radius:999px;position:absolute;inset:0}.hero-photo-circle{aspect-ratio:1;border:1px solid var(--border);box-shadow:var(--shadow);background:var(--surface);border-radius:999px;position:relative;overflow:hidden}.hero-photo-circle img{object-fit:cover;width:100%;height:100%}@media (width<=767.98px){.hero-photo{order:-1;justify-self:start}}.projects-title{margin-bottom:36px}.projects-grid{grid-template-columns:var(--projCols);gap:var(--gap);display:grid}.project-card{flex-direction:column;gap:16px;min-width:0;display:flex}.project-shot{aspect-ratio:16/10;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;overflow:hidden}.project-shot img{object-fit:cover;object-position:top left;width:100%;height:100%}.project-name{font-family:var(--fh);font-weight:var(--hw);letter-spacing:var(--hTrack);margin-top:8px;font-size:22px;line-height:1.25}.project-desc{color:var(--text);text-wrap:pretty}.chips{flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chips--stack{gap:6px}.chips--stack .chip{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:3px 10px;font-size:13px}.project-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.tech{grid-template-columns:var(--techSplit);gap:var(--gap);display:grid}.tech-list{flex-direction:column;margin:0;display:flex}.tech-row{grid-template-columns:var(--techCols);border-top:1px solid var(--border);gap:10px 24px;padding:16px 0;display:grid}.tech-label{color:var(--muted);padding-top:3px;font-size:14px;font-weight:600}.tech-items{margin:0}.chips--tech{gap:8px}.chips--tech .chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 12px;font-size:14px}.contact-eyebrow{margin-bottom:8px}.contact-title{overflow-wrap:anywhere;line-height:1.3}.contact-email{color:var(--accent);text-underline-offset:.18em;text-decoration:underline;text-decoration-thickness:1px;transition:color .12s}.contact-email:hover{color:var(--accentHover)}.contact-actions{margin-top:28px}.site-footer{border-top:1px solid var(--border);color:var(--muted);font-size:14px}.site-footer-inner{flex-wrap:wrap;justify-content:space-between;gap:12px;padding-block:28px;display:flex}.footer-links{gap:20px;display:flex}.modal-scrim{z-index:100;padding:var(--modalTop) var(--modalPad) var(--modalPad);background:var(--scrim);justify-content:center;align-items:flex-start;animation:.15s ease-out modal-fade;display:flex;position:fixed;inset:0}.modal-scrim--video{padding-top:var(--videoTop);align-items:safe center}.modal-panel{width:100%;max-height:calc(100dvh - var(--modalTop) - var(--modalPad));overscroll-behavior:contain;background:var(--bg);color:var(--text);border:1px solid var(--border);box-shadow:var(--modalShadow);border-radius:16px;overflow-y:auto}.modal-panel--about{max-width:640px;padding:var(--modalInner)}.modal-panel--video{max-width:960px;max-height:calc(100dvh - var(--videoTop) - var(--modalPad));padding:var(--videoInner);margin-block:auto}.modal-header{justify-content:space-between;gap:16px;display:flex}.modal-header--about{align-items:flex-start;margin-bottom:20px}.modal-header--about .modal-eyebrow{margin-bottom:6px}.modal-header--video{align-items:center;margin-bottom:16px}.modal-header--video .modal-eyebrow{margin-bottom:4px}.modal-close{font-size:22px;font-weight:400;line-height:1}@keyframes modal-fade{0%{opacity:0}}.about-body{max-width:36em;font-size:var(--aboutSize);text-wrap:pretty;flex-direction:column;gap:18px;line-height:1.75;display:flex}.about-intro{font-family:var(--fh);font-weight:var(--hw);font-size:1.25em}.about-actions{margin-top:28px}.video-title{font-family:var(--fh);font-weight:var(--hw);letter-spacing:var(--hTrack);font-size:24px;line-height:1.2}.video-tabs{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.video-tab{border:1px solid var(--border);min-height:36px;color:var(--text);font:500 14px var(--fb);cursor:pointer;background:0 0;border-radius:999px;padding:0 14px;transition:background-color .12s,border-color .12s,color .12s}.video-tab:hover{border-color:var(--accent);color:var(--accent)}.video-tab[aria-selected=true]{border-color:var(--accent);background:var(--accent);color:var(--onAccent);font-weight:600}.video-frame{aspect-ratio:16/9;border:1px solid var(--border);background:#111;border-radius:12px;overflow:hidden}.video-frame iframe{border:0;width:100%;height:100%;display:block}.video-placeholder{color:#cfcac2;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.video-placeholder-icon{border:1px solid #ffffff4d;border-radius:999px;justify-content:center;align-items:center;width:64px;height:64px;padding-left:3px;display:flex}.video-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:18px;display:flex}.video-desc{max-width:36em;color:var(--muted);font-size:15px}
