:root{--ink: #0e1116;--ink-raised: #131922;--ink-deep: #090b0f;--ink-tile: #1b232e;--line: #222b36;--line-soft: #1f2630;--line-strong: #2f3946;--line-button: #3a4554;--paper: #f3f1ec;--paper-text: #16191f;--paper-muted: #3a3f47;--paper-subtle: #5b616b;--paper-rule: #cfcbc2;--text: #f3f1ec;--text-muted: #b4bdc9;--text-subtle: #9aa4b2;--text-faint: #7d8796;--accent: #3d8bff;--accent-hover: #6aa6ff;--cyan: #57d6ff;--cyan-hover: #9be6ff;--cyan-deep: #0a6e93;--error: #ff8a7a;--success: #5ee0a0;--font-display: "Bricolage Grotesque", "Helvetica Neue", Arial, sans-serif;--font-body: "Instrument Sans", "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--container: 77.5rem;--gutter: 1.5rem;--section-space: 5rem;--header-height: 4.75rem;--radius: 1rem;--radius-pill: 999px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--header-height)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--text);background-color:var(--ink);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:block;max-width:100%}a{color:var(--cyan);text-decoration:none}a:hover{color:var(--cyan-hover)}a:focus-visible,button:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}h1,h2,h3{font-family:var(--font-display);font-weight:800;letter-spacing:-.03em;text-wrap:balance}h2{font-size:clamp(2.25rem,4.5vw,3.75rem);line-height:1}.container{max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}.text-accent{color:var(--accent)}.eyebrow{font-family:var(--font-mono);font-size:.8125rem;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan)}.eyebrow-rule{display:flex;align-items:center;gap:.75rem}.eyebrow-rule:before{content:"";width:1.75rem;height:2px;background:var(--cyan)}.section-heading{display:flex;flex-direction:column;gap:1.125rem;margin-bottom:3rem}.cta-button,.outline-button,.submit-button{display:inline-flex;align-items:center;justify-content:center;gap:.625rem;min-height:3.25rem;padding:.875rem 1.75rem;border-radius:var(--radius-pill);font-family:var(--font-body);font-size:1.0625rem;font-weight:600;line-height:1.2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.cta-button.primary,.submit-button{background:var(--accent);color:var(--ink);border:0}.cta-button.primary:hover,.submit-button:hover{background:var(--accent-hover);color:var(--ink)}.cta-button.secondary,.outline-button{background:transparent;color:var(--text);border:1.5px solid var(--line-button)}.cta-button.secondary:hover,.outline-button:hover{border-color:var(--cyan);color:var(--text)}.text-link{display:inline-flex;align-items:center;gap:.5rem;min-height:2.75rem;font-weight:600;font-size:1.0625rem}.header{position:sticky;top:0;z-index:1000;background:#0e1116e0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft)}.nav{position:relative;max-width:var(--container);margin:0 auto;padding:.75rem var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:1rem}.logo{display:flex;align-items:center}.logo img{height:2.5rem;width:auto}.hamburger{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:1.5px solid var(--line-button);border-radius:.75rem;background:transparent;color:var(--text);font-size:1.375rem;cursor:pointer}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:.25rem;padding:.75rem var(--gutter) 1.25rem;background:var(--ink);border-bottom:1px solid var(--line-soft)}.nav-links.active{display:flex}.nav-links a{display:flex;align-items:center;min-height:2.75rem;color:#c9d1db;font-size:1.0625rem;font-weight:500}.nav-links a:hover{color:#fff}.nav-links a.nav-cta{justify-content:center;margin-top:.5rem;padding:0 1.25rem;border-radius:var(--radius-pill);background:var(--accent);color:var(--ink);font-weight:600}.nav-links a.nav-cta:hover{background:var(--accent-hover);color:var(--ink)}.hero{background-color:var(--ink);background-image:linear-gradient(rgba(87,214,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(87,214,255,.07) 1px,transparent 1px);background-size:48px 48px;border-bottom:1px solid var(--line-soft);overflow:hidden}.hero-inner{display:flex;flex-direction:column;gap:3.5rem;padding-top:4rem;padding-bottom:4.5rem}.hero-content{display:flex;flex-direction:column;gap:1.75rem}.hero-content h1{font-size:clamp(3rem,7vw,6rem);line-height:.95;letter-spacing:-.035em}.hero-lead{font-size:1.1875rem;line-height:1.55;color:var(--text-muted);max-width:34em;text-wrap:pretty}.hero-buttons{display:flex;flex-wrap:wrap;gap:.875rem;padding-top:.5rem}.hero-visual{position:relative;padding:1.75rem 0}.wireframe{background:var(--ink-raised);border:1.5px solid var(--line);border-radius:var(--radius);box-shadow:0 40px 80px #00000073;overflow:hidden}.wireframe-bar{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid var(--line)}.wireframe-dot{width:10px;height:10px;border-radius:50%;background:var(--line-strong)}.wireframe-address{margin-left:.75rem;width:40%;height:8px;border-radius:4px;background:var(--line)}.wireframe-body{display:flex;min-height:15rem}.wireframe-sidebar{width:26%;padding:1.125rem .875rem;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:.75rem}.wireframe-main{flex:1;padding:1.125rem;display:flex;flex-direction:column;gap:.875rem}.wireframe-line{display:block;height:8px;border-radius:4px;background:#283240}.wireframe-line:nth-child(2n){width:80%}.wireframe-line:nth-child(3n){width:64%}.wireframe-line-accent{height:10px;width:70%;background:var(--cyan);opacity:.85}.wireframe-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.625rem}.wireframe-tile{height:4rem;border-radius:.625rem;background:var(--ink-tile)}.wireframe-tile-selected{border:1.5px dashed var(--cyan);background:#57d6ff0f}.wireframe-panel{flex:1;padding:.875rem;border-radius:.625rem;background:var(--ink-tile);display:flex;flex-direction:column;gap:.625rem}.wireframe-tag{position:absolute;font-family:var(--font-mono);font-size:.75rem;line-height:1.4;padding:.3rem .625rem;border-radius:.375rem}.wireframe-tag-cyan{top:0;right:8%;background:var(--cyan);color:var(--ink)}.wireframe-tag-accent{bottom:.25rem;left:0;background:var(--accent);color:var(--ink)}.wireframe-tag-outline{bottom:.25rem;right:4%;background:var(--ink);color:var(--text);border:1.5px solid var(--line-button)}.hero-stats{border-top:1px solid var(--line-soft);background:#0e1116b3}.stats{display:flex;flex-wrap:wrap;gap:1.5rem 4rem;padding-top:1.75rem;padding-bottom:1.75rem}.stat{display:flex;align-items:baseline;gap:.875rem}.stat-value{font-family:var(--font-display);font-weight:800;font-size:3rem;line-height:1;color:var(--accent)}.stat-label{font-family:var(--font-mono);font-size:.8125rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.about,.services{background:var(--paper);color:var(--paper-text)}.about .eyebrow,.services .eyebrow,.about a.text-link{color:var(--cyan-deep)}.about a.text-link:hover{color:var(--paper-text)}.about-content{display:flex;flex-direction:column;gap:4rem;padding-top:var(--section-space);padding-bottom:var(--section-space)}.about-text{display:flex;flex-direction:column;gap:1.375rem}.about-text p:not(.eyebrow){font-size:1.1875rem;line-height:1.65;color:var(--paper-muted);max-width:36em}.about-image-link{display:flex;flex-direction:column;gap:1.25rem;max-width:23.75rem;padding-right:1rem;color:var(--paper-text)}.about-image-link:hover{color:var(--paper-text)}.about-image{position:relative;display:block}.about-image:before{content:"";position:absolute;inset:1rem -1rem -1rem 1rem;border-radius:1.25rem;background:var(--accent);transition:inset .25s ease}.about-image-link:hover .about-image:before{inset:.5rem -.5rem -.5rem .5rem}.about-image img{position:relative;width:100%;aspect-ratio:4 / 5;object-fit:cover;border-radius:1.25rem;border:2px solid var(--paper-text)}.about-caption{padding-top:1rem;font-family:var(--font-mono);font-size:.8125rem}.projects{background:var(--ink);padding:var(--section-space) 0}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(21.25rem,100%),1fr));gap:1.25rem}.project-card{display:flex;flex-direction:column;gap:.875rem;padding:1.75rem;background:var(--ink-raised);border:1.5px solid var(--line);border-radius:var(--radius);transition:border-color .2s ease}.project-card:hover{border-color:var(--cyan)}.project-meta{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;font-family:var(--font-mono);font-size:.8125rem}.project-year{color:var(--accent);font-weight:600}.project-category{color:var(--text-subtle);text-align:right}.project-card h3{font-weight:700;font-size:1.625rem;line-height:1.15;letter-spacing:-.015em}.project-description{flex:1;color:var(--text-muted)}.project-technologies{display:flex;flex-wrap:wrap;gap:.5rem}.tech-tag{font-family:var(--font-mono);font-size:.75rem;color:#c9d1db;border:1px solid var(--line-strong);border-radius:.375rem;padding:.2rem .5rem}.project-link{align-self:flex-start;display:inline-flex;align-items:center;min-height:2.75rem;font-weight:600;font-size:.9375rem}.projects-toggle{margin-top:2.5rem}.services{padding:var(--section-space) 0}.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(20rem,100%),1fr));border-top:2px solid var(--paper-text)}.service-card{display:flex;flex-direction:column;gap:1.125rem;padding:2.25rem 2rem 2.5rem 0;border-bottom:1px solid var(--paper-rule)}.service-card-top{display:flex;justify-content:space-between;align-items:center}.service-number{font-family:var(--font-mono);font-size:.875rem;color:var(--paper-subtle)}.service-icon{width:3.25rem;height:3.25rem;border-radius:.875rem;background:var(--paper-text);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:1.625rem}.service-card h3{font-weight:700;font-size:1.875rem;line-height:1.1;letter-spacing:-.02em}.service-card p{font-size:1.0625rem;color:var(--paper-muted)}.contact{background:var(--ink)}.contact-content{display:flex;flex-direction:column;gap:4rem;padding-top:var(--section-space);padding-bottom:var(--section-space)}.contact-info{display:flex;flex-direction:column;gap:1.75rem}.contact-info h2{font-size:clamp(2.5rem,5.5vw,4.75rem);line-height:.98;letter-spacing:-.035em}.contact-details{display:flex;flex-direction:column;gap:1.25rem;padding-top:.5rem}.contact-item{display:flex;flex-direction:column;gap:.125rem;font-size:1.25rem;font-weight:500;overflow-wrap:anywhere}.contact-label{font-family:var(--font-mono);font-size:.75rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--text-subtle)}.contact-form{display:flex;flex-direction:column;gap:1.25rem;padding:1.75rem;background:var(--ink-raised);border:1.5px solid var(--line);border-radius:1.25rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-label{font-size:.9375rem;font-weight:600}.required{color:var(--accent)}.form-input{width:100%;font:inherit;font-size:1rem;color:var(--text);background:var(--ink);border:1.5px solid var(--line);border-radius:.625rem;padding:.875rem 1rem;transition:border-color .2s ease,box-shadow .2s ease}.form-input::placeholder{color:var(--text-faint)}.form-input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px #57d6ff40}.form-input.error{border-color:var(--error)}.form-input.error:focus{box-shadow:0 0 0 3px #ff8a7a40}.form-input:disabled{opacity:.6;cursor:not-allowed}textarea.form-input{min-height:8rem;resize:vertical}.error-message{font-size:.875rem;color:var(--error)}.submit-button{align-self:flex-start}.submit-button:disabled,.submit-button.submitting{opacity:.7;cursor:not-allowed}.submit-status{display:flex;align-items:flex-start;gap:.75rem;padding:1rem 1.125rem;border-radius:.75rem;font-weight:500}.submit-status.success{color:var(--success);background:#5ee0a01a;border:1px solid rgba(94,224,160,.4)}.submit-status.error{color:var(--error);background:#ff8a7a1a;border:1px solid rgba(255,138,122,.4)}.status-icon{flex-shrink:0;font-size:1.25rem;margin-top:.125rem}.footer{background:var(--ink-deep);border-top:1px solid var(--line-soft);color:var(--text-muted);padding:4rem 0 2rem}.footer-content{display:flex;flex-direction:column;gap:2.5rem}.footer-brand{display:flex;flex-direction:column;align-items:flex-start;gap:1rem;max-width:22.5rem;font-size:.9375rem}.footer-logo{height:3rem;width:auto}.social-link{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:1.5px solid var(--line-strong);border-radius:.75rem;color:var(--text);font-size:1.25rem}.social-link:hover{border-color:var(--cyan);color:var(--text)}.footer-columns{display:flex;flex-wrap:wrap;gap:2.5rem 4rem}.footer-section h3{font-family:var(--font-mono);font-size:.75rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--text);margin-bottom:.625rem}.footer-section ul{list-style:none;display:flex;flex-direction:column;gap:.25rem;font-size:.9375rem}.footer-section a{display:inline-flex;min-height:2rem;align-items:center;color:var(--text-muted)}.footer-section a:hover{color:var(--text)}.footer-bottom{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line-soft);font-size:.875rem;color:var(--text-faint)}@media(min-width:768px){:root{--section-space: 7.5rem}.logo img{height:2.875rem}.hamburger{display:none}.nav-links,.nav-links.active{position:static;display:flex;flex-direction:row;align-items:center;gap:1.75rem;padding:0;background:none;border:0}.nav-links a{font-size:.9375rem}.nav-links a.nav-cta{margin-top:0}.contact-form{padding:2.25rem}.footer-content{flex-direction:row;justify-content:space-between}}@media(min-width:1024px){.hero-inner{flex-direction:row;align-items:center;gap:4rem;padding-top:6rem;padding-bottom:7rem}.hero-content{flex:1 1 32.5rem;min-width:0}.hero-visual{flex:1 1 27.5rem;min-width:0}.wireframe-tag-accent{left:-.75rem}.about-content{flex-direction:row;align-items:center}.about-text{flex:1 1 35rem}.about-image-link{flex:0 1 23.75rem}.contact-content{flex-direction:row}.contact-info{flex:1 1 25rem;min-width:0}.contact-form{flex:1 1 30rem;min-width:0}}
