html{scrollbar-width:none}html::-webkit-scrollbar{display:none}.hero{isolation:isolate;grid-template-rows:1fr;grid-template-columns:1fr auto;height:calc(100vh - 88px);min-height:0;padding-top:clamp(5rem,13vh,10rem);padding-bottom:2rem;display:grid;position:relative}.hero:before{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(to right, var(--line) 1px, transparent 1px), linear-gradient(to bottom, var(--line) 1px, transparent 1px);opacity:.18;background-size:5.5rem 5.5rem;position:absolute;inset:0 clamp(1.25rem,5vw,5rem);-webkit-mask-image:linear-gradient(#0000,#000 20%,#0000 85%);mask-image:linear-gradient(#0000,#000 20%,#0000 85%)}.project-type{font:500 .69rem var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:0 0 1.25rem}h1{letter-spacing:-.065em;max-width:920px;margin:0 0 2rem;font-size:clamp(3rem,7.3vw,7.2rem);font-weight:600;line-height:.98}.hero-intro{max-width:520px;color:var(--muted);font-size:clamp(1rem,1.35vw,1.15rem)}.hero-tagline{border-left:2px solid var(--accent);max-width:430px;color:var(--text);margin:1.5rem 0 0;padding-left:1rem;font-size:clamp(1rem,1.2vw,1.1rem);font-style:italic;line-height:1.55}.hero-actions{flex-wrap:wrap;gap:.85rem;margin-top:2.1rem;display:flex}.hero-actions .social-links--hero{margin-left:.2rem}.button:disabled{cursor:wait;opacity:.72}.hero-portrait{grid-area:1/2;align-self:center;width:clamp(210px,20vw,320px);margin:0;position:relative}.hero-portrait img{aspect-ratio:1;object-fit:cover;border-radius:48% 52% 50% 50%/46% 47% 53% 54%;width:100%;display:block;-webkit-mask-image:radial-gradient(#000 68%,#0000 100%);mask-image:radial-gradient(#000 68%,#0000 100%)}.scroll-progress{z-index:30;pointer-events:none;background:var(--accent);transform-origin:top;width:3px;height:100vh;transition:background-color var(--theme-transition) ease;position:fixed;top:0;right:0;transform:scaleY(0)}.social-links--hero a{width:3rem;height:3rem;font-size:1.3rem}.projects-section,.about-section,.contact-section{border-top:1px solid var(--line);padding-top:clamp(6rem,11vw,10rem);padding-bottom:clamp(6rem,11vw,10rem)}.section-heading{justify-content:space-between;align-items:end;gap:3rem;margin-bottom:3.5rem;display:flex}h2{letter-spacing:-.055em;max-width:750px;margin-bottom:2rem;font-size:clamp(2.35rem,5vw,5.25rem);font-weight:600;line-height:1.05}.section-summary{max-width:330px;color:var(--muted);margin:0;font-size:.92rem}.section-aside{max-width:330px}.section-aside .section-summary{margin-bottom:1.2rem}.section-count{color:var(--muted);font:500 .68rem var(--mono);text-transform:uppercase;letter-spacing:.07em;margin:0}.section-count span{color:var(--accent);margin-right:.4rem}.projects-grid{grid-template-columns:repeat(2,1fr);gap:1.1rem;display:grid}.project-card{border:1px solid var(--line);background:var(--surface);min-width:0;transition:border-color .25s,background-color .25s,box-shadow .25s}.project-card:hover{border-color:var(--accent);background:var(--surface-2);box-shadow:0 16px 34px #00000029}.project-card--featured{grid-column:1/-1}.project-art{aspect-ratio:16/9;background:#2d333d;overflow:hidden}.project-art img{object-fit:contain;width:100%;height:100%}.project-card-body{padding:1.5rem}.project-status{color:var(--muted);font:500 .62rem var(--mono);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:.45rem;margin:0 0 .75rem;display:inline-flex}.project-status span{background:currentColor;border-radius:50%;width:.48rem;height:.48rem}.project-status--completed{color:var(--status-completed)}.project-status--in-progress{color:var(--status-in-progress)}.project-status--experiment{color:var(--status-experiment)}.project-status--client-work{color:var(--status-client-work)}.project-type{margin-bottom:.6rem}.project-card h3{letter-spacing:-.04em;margin-bottom:.55rem;font-size:1.35rem}.project-card__description{color:var(--muted);min-height:3.2em;font-size:.87rem}.project-meta{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding-top:1.1rem;display:flex}.project-meta ul{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.project-meta li{font:400 .6rem var(--mono);color:var(--muted);border:1px solid var(--line);padding:.28rem .4rem}.text-link{color:var(--text);font:500 .67rem var(--mono);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;background:0 0;border:0;padding:0}.project-card__actions{flex-wrap:wrap;justify-content:flex-end;gap:.45rem;margin-left:auto;display:flex}.project-card__actions a,.card-link{border:1px solid var(--line);min-height:2rem;color:var(--text);font:500 .6rem var(--mono);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;background:0 0;justify-content:center;align-items:center;gap:.35rem;padding:.35rem .55rem;transition:background-color .22s,border-color .22s,color .22s;display:inline-flex}.project-card__actions a:hover,.project-card__actions a:focus-visible,.card-link{border-color:var(--accent);background:var(--accent);color:var(--accent-contrast)}.project-tutorial,.case-study-tutorial{color:var(--muted);font:.6rem/1.55 var(--mono)}.project-tutorial{margin:.8rem 0 0}.case-study-tutorial{margin:1rem 0 0}.project-tutorial a,.case-study-tutorial a{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}.card-link:hover,.card-link:focus-visible{border-color:var(--accent-hover);background:var(--accent-hover);color:var(--accent-contrast)}.card-link span,.text-link span{color:var(--accent)}.about-grid,.contact-grid{grid-template-columns:1.15fr .85fr;gap:clamp(2rem,10vw,12rem);margin-top:2rem;display:grid}.about-grid>div,.contact-grid>div{color:var(--muted)}.about-grid p+p{margin-top:1.2rem}.text-link{color:var(--text);margin-top:1rem;display:inline-block}.text-link--primary{background:var(--accent);color:var(--accent-contrast);border:1px solid var(--accent);align-items:center;gap:.75rem;margin-top:1.5rem;padding:.78rem 1rem;transition:background-color .22s,border-color .22s,color .22s;display:inline-flex}.text-link--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-contrast)}.text-link--primary i{color:inherit;font-size:1rem}.principles{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:1rem;margin:clamp(4rem,8vw,8rem) 0 0;padding:1.3rem 0;font-size:.9rem;list-style:none;display:grid}.skills{border-top:1px solid var(--line);margin-top:clamp(4rem,8vw,7rem);padding-top:1.3rem}.skills-heading{justify-content:space-between;align-items:baseline;gap:2rem;margin-bottom:2rem;display:flex}.skills-heading .eyebrow{margin:0}.skills-heading h3{letter-spacing:-.04em;max-width:390px;margin:0;font-size:clamp(1.35rem,2vw,1.8rem);line-height:1.2}.skills-groups{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.skill-group{background:var(--surface);border:1px solid var(--line);padding:1.25rem}.skill-group h4{color:var(--muted);font:500 .66rem var(--mono);text-transform:uppercase;letter-spacing:.06em;margin:0 0 1.1rem}.skill-tags{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.skill-tags li{border:1px solid var(--line);color:var(--text);font:400 .65rem var(--mono);padding:.35rem .5rem}.enjoy-building{max-width:610px;margin-top:clamp(3rem,6vw,5rem)}.enjoy-building .eyebrow{margin-bottom:1rem}.enjoy-building>p:last-child{color:var(--muted);margin:0;font-size:1rem;line-height:1.65}.principles span{color:var(--accent);font:500 .65rem var(--mono);margin-bottom:.5rem;display:block}.contact-section h2 em{color:var(--accent);font-style:normal}.contact-grid{margin-top:3rem}.email-link{color:var(--text);border-bottom:1px solid var(--accent);gap:.6rem;margin-top:1.5rem;font-size:1.05rem;display:inline-flex}.contact-form{border-top:2px solid var(--accent);gap:1rem;padding:clamp(1.25rem,3vw,2rem) 0 0;display:grid}.form-intro{border-bottom:1px solid var(--line);justify-content:space-between;gap:1rem;padding-bottom:1rem;display:flex}.form-intro p{font:500 .75rem var(--mono);text-transform:uppercase;letter-spacing:.06em;margin:0}.form-intro span{color:var(--muted);font:400 .68rem var(--mono)}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}label{color:var(--muted);font:500 .65rem var(--mono);text-transform:uppercase;letter-spacing:.04em;gap:.45rem;display:grid}input,textarea{border:0;border-bottom:1px solid var(--line);background:var(--bg);width:100%;color:var(--text);resize:vertical;border-radius:0;outline:1px solid #0000;padding:.75rem;transition:border-color .2s,outline-color .2s}input:focus,textarea:focus{border-color:var(--accent);outline-color:#0000}:is(input:user-invalid,textarea:user-invalid){border-color:#d66b6b}.contact-form .button{justify-self:start;margin-top:.55rem}.form-status{min-height:1.5rem;color:var(--accent);margin:0;font-size:.8rem}.project-modal{overscroll-behavior:contain;scroll-behavior:auto;scrollbar-gutter:stable;border:1px solid var(--line);background:var(--surface);width:min(900px,100% - 2rem);max-height:calc(100vh - 2rem);color:var(--text);opacity:0;padding:clamp(1.5rem,4vw,3.5rem);transition:opacity .22s,transform .22s;overflow:hidden auto;transform:translateY(12px)scale(.985)}.project-modal[open].is-visible{opacity:1;transform:translateY(0)scale(1)}.project-modal.is-closing{opacity:0;transform:translateY(12px)scale(.985)}.project-modal::backdrop{backdrop-filter:blur(3px);background:#000000b8}.project-modal[open]::backdrop{animation:.22s both backdrop-in}.project-modal.is-closing::backdrop{animation:.22s both backdrop-out}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes backdrop-out{0%{opacity:1}to{opacity:0}}.modal-close{color:var(--text);background:0 0;border:0;font-size:2rem;line-height:1;transition:color .22s;position:absolute;top:1rem;right:1.1rem}.modal-close:hover,.modal-close:focus-visible{color:var(--accent)}.project-modal,.command-terminal__output{scrollbar-color:var(--accent) var(--surface-2);scrollbar-width:thin}.project-modal::-webkit-scrollbar{width:.55rem}.command-terminal__output::-webkit-scrollbar{width:.55rem}.project-modal::-webkit-scrollbar-track{background:var(--surface-2)}.command-terminal__output::-webkit-scrollbar-track{background:var(--surface-2)}.project-modal::-webkit-scrollbar-thumb{border:2px solid var(--surface-2);background:var(--accent);border-radius:999px}.command-terminal__output::-webkit-scrollbar-thumb{border:2px solid var(--surface-2);background:var(--accent);border-radius:999px}.project-modal::-webkit-scrollbar-thumb:hover{background:var(--accent-hover)}.project-modal::-webkit-scrollbar-thumb:active{background:var(--accent-hover)}.command-terminal__output::-webkit-scrollbar-thumb:hover{background:var(--accent-hover)}.command-terminal__output::-webkit-scrollbar-thumb:active{background:var(--accent-hover)}.project-modal h2{margin-bottom:1.8rem;font-size:clamp(2.4rem,5vw,4.5rem)}.modal-hero{aspect-ratio:16/9;background:#2c313b;align-items:end;display:flex;overflow:hidden}.modal-hero img{object-fit:contain;width:100%;height:100%}.modal-hero--orange{background:#bd6249}.modal-hero--green{background:#639152}.modal-hero--blue{background:#537aa5}.project-updated{color:var(--muted);font:400 .65rem var(--mono);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:.45rem;margin:1rem 0 0;display:flex}.project-updated i{color:var(--accent);font-size:.85rem}.case-study-meta{flex-wrap:wrap;gap:.45rem;margin:-.8rem 0 1.5rem;padding:0;list-style:none;display:flex}.case-study-meta li{border:1px solid var(--line);color:var(--muted);font:400 .6rem var(--mono);text-transform:uppercase;letter-spacing:.04em;padding:.3rem .45rem}.case-study-disclaimer{border-left:2px solid var(--accent);background:var(--surface-2);align-items:flex-start;gap:.75rem;margin-top:1.5rem;padding:1rem;display:flex}.case-study-disclaimer i{color:var(--accent);font-size:1.1rem}.case-study-disclaimer strong{font:500 .7rem var(--mono);text-transform:uppercase;letter-spacing:.05em;display:block}.case-study-disclaimer p{color:var(--muted);margin:.4rem 0 0;font-size:.82rem}.case-study-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 3rem;margin:2rem 0;display:grid}.case-study-section h3{color:var(--muted);font:500 .68rem var(--mono);text-transform:uppercase;letter-spacing:.07em;margin:0 0 .5rem}.case-study-section p,.case-study-section li{color:var(--muted);font-size:.9rem}.case-study-section p{margin:0}.case-study-section ul{margin:0;padding-left:1rem}.case-study-section--tags ul{flex-wrap:wrap;gap:.4rem;padding:0;list-style:none;display:flex}.case-study-section--tags li{border:1px solid var(--line);font:400 .61rem var(--mono);text-transform:uppercase;letter-spacing:.04em;padding:.3rem .45rem}.modal-actions{border-top:1px solid var(--line);flex-wrap:wrap;gap:.8rem;padding-top:1.5rem;display:flex}@media (max-width:760px){.hero{grid-template-columns:1fr;height:calc(100svh - 72px);min-height:0;padding-top:5rem}.hero-portrait{display:none}.hero-actions .social-links--hero{width:100%;margin-left:0}.section-heading,.about-grid,.contact-grid{display:block}.section-summary{margin-top:1.3rem}.section-aside{max-width:none;margin-top:1.3rem}.projects-grid{grid-template-columns:1fr}.principles{grid-template-columns:1fr;gap:1.2rem}.skills-heading{display:block}.skills-heading h3{margin-top:.75rem}.skills-groups{grid-template-columns:1fr}.principles li{grid-template-columns:3rem 1fr;align-items:baseline;display:grid}.principles span{margin:0}.contact-grid>div{margin-bottom:2.5rem}.form-row{grid-template-columns:1fr}.case-study-grid{grid-template-columns:1fr;gap:1.5rem}.form-intro{flex-direction:column;align-items:flex-start;gap:.35rem}}@media (max-width:760px) and (max-height:720px){.hero{padding-top:2.25rem}.hero h1{margin-bottom:1.25rem;font-size:clamp(2.65rem,12vw,3.8rem)}.hero-tagline{margin-top:1rem}.hero-actions{margin-top:1.25rem}.hero-portrait{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}