:root{--accent:#1f1f1f;--accent-dark:#1f1f1f;--lang:#e2863b;--bar-bg:#111;--card-bg:#fff;--ink:#111;--ink-soft:#555;--border:#e5e5e5;--paper-radius:8px;--shadow:0 2px 10px #0000001f;--shadow-sm:0 1px 4px #0000001a;--maxw:1100px;--bar-h:88px;--font-body:"Inter", "Segoe UI", system-ui, sans-serif;--font-head:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}img,picture,svg{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}a{color:inherit}ul{padding:0;list-style:none}html{background:linear-gradient(to bottom, #0a0a0cc7, #08080aed), var(--bg-image,none) center / cover no-repeat fixed, #0d0d0f;min-height:100%}body{font-family:var(--font-body);color:var(--ink);flex-direction:column;min-height:100dvh;line-height:1.6;display:flex}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}@media (width<=700px){html{background-attachment:scroll}}.topbar{z-index:400;min-height:var(--bar-h);backdrop-filter:blur(10px)saturate(0);box-shadow:var(--shadow-sm);background:#1111118c;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem clamp(1rem,4vw,3rem);transition:transform .25s;display:flex;position:fixed;inset:0 0 auto}.topbar.is-hidden{pointer-events:none;transform:translateY(-100%)}.topbar .logo img{width:auto;height:clamp(52px,8vw,76px)}.main-nav ul{gap:clamp(.25rem,1.5vw,1rem);display:flex}.main-nav a{color:#f2f2f2;font-family:var(--font-head);padding:.6rem .9rem;font-size:.95rem;text-decoration:none;transition:color .2s;display:block;position:relative}.main-nav a:after{content:"";transform-origin:0;background:currentColor;height:2px;transition:transform .2s;position:absolute;bottom:.35rem;left:.9rem;right:.9rem;transform:scaleX(0)}.main-nav a:hover,.main-nav a[aria-current=page]{color:#fff}.main-nav a:hover:after,.main-nav a[aria-current=page]:after{transform:scaleX(1)}.nav-toggle{cursor:pointer;background:0 0;border:0;padding:.5rem;display:none}.nav-toggle span,.nav-toggle span:before,.nav-toggle span:after{content:"";background:#f2f2f2;border-radius:3px;width:28px;height:3px;transition:transform .25s,opacity .25s;display:block}.nav-toggle span:before{transform:translateY(-9px)}.nav-toggle span:after{transform:translateY(6px)}.nav-toggle[aria-expanded=true] span{background:0 0}.nav-toggle[aria-expanded=true] span:before{transform:rotate(45deg)}.nav-toggle[aria-expanded=true] span:after{transform:rotate(-45deg)translateY(0)}@media (width<=760px){.nav-toggle{display:block}.main-nav{background:var(--bar-bg);box-shadow:var(--shadow-sm);visibility:hidden;border-radius:0 0 6px 6px;max-height:0;transition:max-height .3s,visibility .3s;position:absolute;top:100%;right:clamp(1rem,4vw,3rem);overflow:hidden}.main-nav.open{visibility:visible;max-height:320px}.main-nav ul{flex-direction:column;gap:0;padding:.5rem}.main-nav a{padding:.85rem 2.5rem .85rem 1.25rem}.main-nav a:after{bottom:.5rem;left:1.25rem;right:1.25rem}}main{width:min(100% - 2rem, var(--maxw));padding-top:calc(var(--bar-h) + clamp(1.5rem, 6vw, 4rem));flex:1;margin-inline:auto;padding-bottom:clamp(2rem,6vw,5rem)}.hero{text-align:center;font-family:var(--font-head);color:#fff;padding-bottom:clamp(1.5rem,5vw,3rem)}.hero h1{font-family:var(--font-head);text-shadow:0 2px 12px #0009;font-size:clamp(2rem,6vw,3.25rem);font-weight:400}.hero .page-logo{width:auto;height:clamp(90px,18vw,150px);margin-inline:auto}.hero .headshot{object-fit:cover;width:clamp(160px,30vw,240px);height:clamp(160px,30vw,240px);box-shadow:var(--shadow);border:4px solid #ffffffd9;border-radius:50%;margin:0 auto 1rem;transition:opacity .8s}.hero .headshot:hover{opacity:.55}.rule{border:0;border-bottom:1px solid #ffffff47;width:min(40%,320px);margin:1.5rem auto 0}.paper{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--paper-radius);box-shadow:var(--shadow);max-width:800px;margin-inline:auto;padding:clamp(1.5rem,4vw,3rem)}.paper p+p{margin-top:1rem}.prose{color:var(--ink-soft);font-size:clamp(1rem,2.4vw,1.2rem)}.btn{color:#111;cursor:pointer;background:#fff;border:1.5px solid #111;border-radius:6px;padding:.75rem 1.6rem;text-decoration:none;transition:transform .1s,box-shadow .1s,background .2s,color .2s;display:inline-block;box-shadow:4px 4px #111}.btn:hover{color:#fff;background:#111;transform:translate(2px,2px);box-shadow:2px 2px #111}.btn:active{transform:translate(4px,4px);box-shadow:0 0 #111}.hero-cta .btn,.cs-cta .btn{color:#fff;background:0 0;border-color:#fff;box-shadow:4px 4px #fff}.hero-cta .btn:hover,.cs-cta .btn:hover{color:#111;background:#fff;transform:translate(2px,2px);box-shadow:2px 2px #fff}.hero-cta .btn:active,.cs-cta .btn:active{transform:translate(4px,4px);box-shadow:0 0 #fff}.section-menu{text-align:center;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:clamp(1rem,4vw,2.5rem);margin-top:clamp(3rem,10vw,6rem);display:grid}.section-menu a{color:#fff;font-family:var(--font-head);text-shadow:0 2px 10px #0009;flex-direction:column;align-items:center;gap:.75rem;font-size:1.15rem;text-decoration:none;display:flex}.section-menu img{width:auto;height:clamp(70px,14vw,110px);transition:transform .25s}.section-menu a:hover img{transform:translateY(-6px)scale(1.05)}.contact-form{gap:.4rem;max-width:640px;margin-inline:auto;display:grid}.contact-form label{color:var(--ink);margin-top:.75rem;font-weight:600}.contact-form input,.contact-form textarea{background:#fff;border:1px solid #d4d4d4;border-radius:6px;width:100%;padding:.7rem .9rem;transition:border-color .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent);outline:none}.contact-form textarea{resize:vertical;min-height:160px}.contact-form .btn{justify-self:start;margin-top:1rem}.form-note{color:var(--ink-soft);margin-top:.75rem;font-size:.9rem}.site-footer{text-align:center;color:#eaeaea;text-shadow:0 1px 6px #000000b3;padding:clamp(2rem,6vw,4rem) 1rem}.site-footer a{color:#d4d4d4;text-decoration:none}.site-footer a:hover{text-decoration:underline}.site-footer .socials{justify-content:center;gap:1.25rem;margin-bottom:1.25rem;display:flex}.site-footer .socials a{font-size:1.5rem}.site-footer .copyright{margin-top:.5rem;font-size:.9rem;display:block}.hero-sub{max-width:46ch;font-family:var(--font-head);color:#f3f3f3;text-shadow:0 2px 10px #0009;margin:1rem auto 0;font-size:clamp(1.05rem,2.6vw,1.35rem);font-weight:300}.hero-cta{flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:1.75rem;display:flex}.home-services{grid-template-columns:repeat(3,1fr);gap:clamp(1rem,3vw,1.5rem);margin-top:clamp(2rem,6vw,3.5rem);display:grid}@media (width<=640px){.home-services{grid-template-columns:1fr}}.home-service{color:var(--ink);background:#fff;border:1.5px solid #fff;border-radius:8px;padding:1.5rem;text-decoration:none;transition:transform .1s,box-shadow .1s,background .2s,color .2s;display:block;box-shadow:4px 4px #fff}.home-service:hover{background:#111;transform:translate(2px,2px);box-shadow:2px 2px #fff}.home-service:active{transform:translate(4px,4px);box-shadow:0 0 #fff}.home-service h3{font-family:var(--font-head);color:var(--ink);margin-bottom:.5rem;transition:color .2s}.home-service p{color:var(--ink-soft);transition:color .2s}.home-service:hover h3{color:#fff}.home-service:hover p{color:#e5e5e5}.home-personal{margin-top:clamp(2rem,6vw,3.5rem)}.services-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:clamp(1rem,3vw,1.75rem);margin-top:clamp(1.5rem,5vw,3rem);display:grid}.service-card{color:var(--ink);scroll-margin-top:calc(var(--bar-h) + 1rem);background:#fff;border:1.5px solid #fff;border-radius:8px;padding:clamp(1.5rem,3vw,2rem);transition:transform .1s,box-shadow .1s,background .2s,color .2s;box-shadow:4px 4px #fff}.service-card:hover{background:#111;transform:translate(2px,2px);box-shadow:2px 2px #fff}.service-card:active{transform:translate(4px,4px);box-shadow:0 0 #fff}.service-card h2{font-family:var(--font-head);color:var(--ink);font-size:1.3rem;transition:color .2s}.service-tagline{color:var(--ink);margin:.5rem 0 1rem;font-style:italic;transition:color .2s}.service-outcomes{gap:.5rem;display:grid}.service-outcomes li{color:var(--ink-soft);padding-left:1.6rem;transition:color .2s;position:relative}.service-outcomes li:before{content:"✓";color:var(--accent-dark);font-weight:700;transition:color .2s;position:absolute;left:0}.service-demo{color:var(--accent-dark);margin-top:1.25rem;font-weight:600;text-decoration:none;transition:color .2s;display:inline-block}.service-demo:hover{text-decoration:underline}.service-note{border-left:3px solid var(--accent-dark);color:var(--ink-soft);margin-top:1rem;padding-left:.9rem;font-size:.95rem;font-style:italic;transition:color .2s}.service-card:hover h2,.service-card:hover .service-tagline,.service-card:hover .service-demo,.service-card:hover .service-note,.service-card:hover .service-outcomes li:before{color:#fff}.service-card:hover .service-outcomes li{color:#e5e5e5}.cs-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:clamp(1rem,3vw,1.75rem);margin-top:clamp(1.5rem,5vw,3rem);display:grid}.cs-card{color:var(--ink);background:#fff;border:1.5px solid #fff;border-radius:8px;flex-direction:column;text-decoration:none;transition:transform .1s,box-shadow .1s,background .2s,color .2s;display:flex;overflow:hidden;box-shadow:4px 4px #fff}.cs-card:hover{background:#111;transform:translate(2px,2px);box-shadow:2px 2px #fff}.cs-card:active{transform:translate(4px,4px);box-shadow:0 0 #fff}.cs-media{aspect-ratio:16/10;border-bottom:1px solid var(--border);position:relative;overflow:hidden}.cs-media img{object-fit:cover;width:100%;height:100%}.cs-placeholder{text-align:center;color:#555;width:100%;height:100%;font-family:var(--font-head);background:#f4f4f5;place-items:center;padding:1rem;font-size:1.2rem;display:grid}.cs-body{flex-direction:column;flex:1;gap:.4rem;padding:1.25rem 1.5rem 1.5rem;display:flex}.cs-title{font-family:var(--font-head);font-size:1.25rem;transition:color .2s}.cs-problem{color:var(--ink-soft);font-size:.95rem;transition:color .2s}.cs-stack{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.cs-stack li{color:#3f3f46;background:#f4f4f5;border-radius:4px;padding:.2rem .6rem;font-size:.78rem;transition:background .2s,color .2s}.cs-more{color:var(--accent-dark);margin-top:auto;padding-top:.75rem;font-weight:600;transition:color .2s}.cs-card:hover .cs-title,.cs-card:hover .cs-more{color:#fff}.cs-card:hover .cs-problem{color:#e5e5e5}.cs-card:hover .cs-stack li{color:#e5e5e5;background:#2a2a2a}.case-study{flex-direction:column;gap:clamp(1.25rem,4vw,2rem);display:flex}.back-link{color:#d4d4d4;align-self:flex-start;text-decoration:none}.back-link:hover{text-decoration:underline}.cs-header{text-align:center;color:#fff;text-shadow:0 2px 10px #0009}.cs-header h1{font-family:var(--font-head);font-size:clamp(1.8rem,5vw,2.6rem);font-weight:400}.cs-service{margin-top:.5rem}.cs-service a{color:#d4d4d4}.cs-hero-img{border:1px solid var(--border);width:100%;height:auto;box-shadow:var(--shadow);border-radius:8px}.case-study .prose h2{font-family:var(--font-head);color:var(--ink);margin-top:1.5rem}.case-study .prose h2:first-child{margin-top:0}.tag-list{flex-wrap:wrap;gap:.5rem;display:flex}.tag-list li{color:#3f3f46;background:#f4f4f5;border-radius:4px;padding:.3rem .7rem;font-size:.85rem}.cs-cta{text-align:center;color:#fff;text-shadow:0 2px 10px #0009;margin-top:clamp(2.5rem,8vw,4rem)}.cs-cta p{font-family:var(--font-head);margin-bottom:1rem;font-size:1.2rem}.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}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
