:root{--ink: #0b1c24;--ink-soft: #1a3340;--paper: #f3f6f4;--paper-deep: #e4ebe7;--mist: #c5d4ce;--accent: #0f7a6c;--accent-bright: #14a090;--accent-glow: rgba(20, 160, 144, .28);--hero-text: #e8f0f4;--muted: #5a6f78;--line: rgba(11, 28, 36, .12);--danger: #b42318;--ok: #0f7a6c;--font-sans: "Outfit", system-ui, sans-serif;--font-serif: "Source Serif 4", Georgia, serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--radius: 4px;--max: 1120px;--header-h: 4.25rem}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);font-size:1.05rem;line-height:1.6;color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,rgba(20,160,144,.12),transparent 55%),radial-gradient(900px 500px at 100% 20%,rgba(26,51,64,.08),transparent 50%),linear-gradient(180deg,var(--paper) 0%,var(--paper-deep) 100%);background-attachment:fixed;min-height:100vh}img{max-width:100%;display:block}a{color:var(--accent);text-underline-offset:.18em}a:hover{color:var(--ink)}a:focus-visible,button:focus-visible{outline:3px solid var(--accent-bright);outline-offset:3px}.skip-link{position:absolute;left:1rem;top:-100px;background:var(--ink);color:var(--hero-text);padding:.6rem 1rem;z-index:100;border-radius:var(--radius)}.skip-link:focus{top:1rem}.site-header{position:sticky;top:0;z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f3f6f4d1;border-bottom:1px solid var(--line)}.header-inner{max-width:var(--max);margin:0 auto;padding:.85rem 1.25rem;display:flex;align-items:center;gap:1.25rem;min-height:var(--header-h)}.brand{display:inline-flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--ink);font-weight:600;letter-spacing:-.02em}.brand-mark{font-family:var(--font-mono);font-size:.75rem;font-weight:500;padding:.35rem .45rem;border:1px solid var(--ink);background:var(--accent-glow)}.nav{display:none;gap:1.1rem;margin-left:.5rem}.nav a{color:var(--ink-soft);text-decoration:none;font-size:.95rem;font-weight:500}.nav a:hover{color:var(--accent)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:.75rem}.lang-switch{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:#ffffff8c}.lang-btn{border:0;background:transparent;font-family:var(--font-mono);font-size:.72rem;padding:.4rem .65rem;cursor:pointer;color:var(--muted)}.lang-btn.is-active{background:var(--ink);color:var(--hero-text)}.nav-toggle{display:inline-flex;flex-direction:column;justify-content:center;gap:5px;width:2.5rem;height:2.5rem;border:1px solid var(--line);background:transparent;cursor:pointer;padding:.55rem}.nav-toggle span{display:block;height:2px;background:var(--ink)}.mobile-nav{display:flex;flex-direction:column;gap:.25rem;padding:.5rem 1.25rem 1rem;border-top:1px solid var(--line);background:#f3f6f4f5}.mobile-nav a{text-decoration:none;color:var(--ink);padding:.65rem 0;font-weight:500}.mobile-nav[hidden]{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.8rem 1.25rem;border-radius:999px;border:1px solid transparent;font-family:var(--font-sans);font-weight:600;font-size:.95rem;text-decoration:none;cursor:pointer;transition:transform .2s ease,background .2s ease,color .2s ease,border-color .2s ease}.btn:hover{transform:translateY(-1px)}.btn-sm{padding:.5rem .95rem;font-size:.85rem}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--ink);color:#fff}.btn-ghost{background:transparent;border-color:#e8f0f473;color:var(--hero-text)}.btn-ghost:hover{border-color:#e8f0f4d9;background:#e8f0f41a;color:#fff}.section:not(.work) .btn-ghost,.contact .btn-ghost{border-color:var(--line);color:var(--ink)}.section:not(.work) .btn-ghost:hover,.contact .btn-ghost:hover{border-color:var(--ink);background:var(--ink);color:#fff}.work .btn-ghost{border-color:#e8f0f473;color:var(--hero-text)}.work .btn-ghost:hover{border-color:#e8f0f4e6;background:#e8f0f41f;color:#fff}.hero{position:relative;overflow:hidden;background:radial-gradient(900px 480px at 85% 15%,rgba(20,160,144,.18),transparent 55%),radial-gradient(700px 400px at 0% 100%,rgba(20,160,144,.08),transparent 50%),linear-gradient(165deg,#0b1c24,#122a33 55%,#0b1c24);color:var(--hero-text);min-height:auto}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(232,240,244,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(232,240,244,.035) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.55),transparent 85%);mask-image:linear-gradient(180deg,rgba(0,0,0,.55),transparent 85%);pointer-events:none}.hero-copy{position:relative;z-index:1;max-width:var(--max);width:100%;margin:0 auto;padding:4.5rem 1.25rem 3.25rem;animation:riseIn .9s ease both}.hero-identity{display:flex;align-items:center;gap:1.1rem;margin-bottom:1.35rem}.hero-avatar{width:4.5rem;height:4.5rem;border-radius:50%;object-fit:cover;object-position:center top;border:2px solid rgba(20,160,144,.55);box-shadow:0 0 0 4px #14a0901f;flex-shrink:0}.hero-identity-text{min-width:0}.hero-kicker{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-bright);margin:0 0 .4rem}.hero h1{margin:0;font-size:clamp(2.4rem,6.5vw,4.4rem);line-height:.95;letter-spacing:-.04em;font-weight:700}.hero-lead{margin:1.25rem 0 0;max-width:34rem;font-family:var(--font-serif);font-size:clamp(1.15rem,2.4vw,1.4rem);font-weight:500;color:#e8f0f4e6}.hero-ctas{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem}.hero-meta{list-style:none;display:flex;flex-wrap:wrap;gap:.65rem 1.25rem;padding:0;margin:2.25rem 0 0;font-family:var(--font-mono);font-size:.78rem;color:#e8f0f4b8}.hero-meta li{position:relative}.hero-meta li:not(:last-child):after{content:"";position:absolute;right:-.7rem;top:50%;width:4px;height:4px;border-radius:50%;background:var(--accent-bright);transform:translateY(-50%)}.open-to{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .65rem;padding:0;margin:1.5rem 0 0}.open-to li:first-child{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#e8f0f48c;margin-right:.25rem}.open-to li:not(:first-child){font-size:.85rem;font-weight:500;padding:.35rem .75rem;border:1px solid rgba(232,240,244,.2);color:#e8f0f4e6}.project-grid{display:grid;gap:1.75rem;margin-top:2.5rem}.project{display:flex;min-width:0;padding:1.5rem;border:1px solid rgba(232,240,244,.16);background:#e8f0f409}.project-copy{display:flex;flex:1;flex-direction:column;align-items:flex-start;min-width:0}.project.featured{padding:2rem;border-color:#14a0908c;background:radial-gradient(600px 300px at 100% 0%,rgba(20,160,144,.1),transparent 70%),#e8f0f40b}.section{padding:5rem 1.25rem}.section-inner{max-width:var(--max);margin:0 auto}.section-label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0 0 .75rem}.section h2{margin:0;font-size:clamp(1.85rem,4vw,2.75rem);letter-spacing:-.03em;line-height:1.15;max-width:18ch}.section-lead{margin:1rem 0 0;max-width:42rem;color:var(--muted);font-size:1.08rem}.about{background:linear-gradient(180deg,transparent,rgba(255,255,255,.45)),repeating-linear-gradient(-12deg,transparent,transparent 22px,rgba(15,122,108,.035) 22px,rgba(15,122,108,.035) 23px)}.about-grid{display:grid;gap:1.25rem;margin-top:2rem;max-width:48rem}.about-grid p{margin:0;font-size:1.08rem}.timeline{list-style:none;margin:2.5rem 0 0;padding:0;border-left:2px solid var(--line)}.timeline-item{position:relative;padding:0 0 2.25rem 1.5rem;opacity:0;transform:translateY(18px);transition:opacity .55s ease,transform .55s ease}.timeline-item.is-visible{opacity:1;transform:none}.timeline-item:before{content:"";position:absolute;left:-5px;top:.35rem;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.timeline-when{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);margin-bottom:.35rem}.timeline-item h3{margin:0;font-size:1.15rem;letter-spacing:-.02em}.timeline-where{margin:.25rem 0 .75rem;color:var(--muted);font-size:.95rem}.timeline-item ul{margin:0;padding-left:1.1rem;color:var(--ink-soft)}.timeline-item li+li{margin-top:.35rem}.work{background:var(--ink);color:var(--hero-text)}.work .section-label{color:var(--accent-bright)}.work .section-lead{color:#e8f0f4b8}.project-kicker{font-family:var(--font-mono);font-size:.78rem;color:var(--accent-bright);margin:0 0 .5rem}.project-logo{display:block;width:4rem;height:4rem;margin-bottom:1rem;border-radius:.75rem}.project-logo--rado{object-fit:contain;background-color:#c5d1d7}.project h3{margin:0;font-size:clamp(1.5rem,3vw,2rem);letter-spacing:-.03em;max-width:22ch}.project-copy>p{max-width:40rem;color:#e8f0f4db}.project-copy>.project-status{display:inline-flex;margin:.6rem 0 0;padding:.25rem .65rem;border:1px solid rgba(20,160,144,.5);border-radius:999px;color:#8ee4d8;font-family:var(--font-mono);font-size:.75rem}.project-tags{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:1.25rem 0 0}.project-tags li{font-family:var(--font-mono);font-size:.72rem;padding:.35rem .65rem;border:1px solid rgba(232,240,244,.18);color:#e8f0f4d9}.project-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:auto;padding-top:1.5rem}.build-list{display:grid;gap:.8rem;max-width:52rem;margin:1.75rem 0 0;padding-left:1.3rem;color:var(--ink-soft)}.stack-label{margin:2rem 0 .75rem;font-size:.9rem;font-family:var(--font-mono);font-weight:500;color:var(--accent)}.stack-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}.stack-tags li{padding:.3rem .65rem;border:1px solid var(--line);color:var(--ink-soft);font-family:var(--font-mono);font-size:.72rem}.edu{margin:1.25rem 0 0;font-family:var(--font-serif);font-size:1.15rem}.cert-list{margin:1.5rem 0 0;padding:0;list-style:none;display:grid;gap:.65rem}.cert-list li{padding:.85rem 0;border-bottom:1px solid var(--line);color:var(--ink-soft)}.faq-list{margin-top:2rem;max-width:44rem}.faq-list details{border-bottom:1px solid var(--line);padding:1rem 0}.faq-list summary{cursor:pointer;font-weight:600;letter-spacing:-.01em}.faq-list p{margin:.75rem 0 0;color:var(--muted)}.contact{background:radial-gradient(700px 400px at 90% 10%,var(--accent-glow),transparent 60%),linear-gradient(180deg,var(--paper-deep),#dfe8e3)}.contact-inner{display:grid;gap:2.5rem}.contact-channels{list-style:none;padding:0;margin:1.75rem 0 0;display:grid;gap:.55rem}.contact-channels a{color:var(--ink);font-weight:500;text-decoration:none;border-bottom:1px solid transparent}.contact-channels a:hover{border-bottom-color:var(--accent);color:var(--accent)}.contact-form{display:grid;gap:1rem;padding:1.5rem;background:#ffffffa6;border:1px solid var(--line);box-shadow:0 20px 50px #0b1c240f}.field-row{display:grid;gap:1rem}.field{display:grid;gap:.4rem}.field label{font-size:.85rem;font-weight:500;color:var(--ink-soft)}.field input,.field select,.field textarea{width:100%;padding:.75rem .85rem;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--ink);font:inherit}.field textarea{resize:vertical;min-height:8rem}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent-glow);border-color:var(--accent)}.gotcha{position:absolute;left:-9999px;opacity:0;height:0;width:0}.form-status{min-height:1.4em;margin:0;font-size:.92rem}.form-status.is-error{color:var(--danger)}.form-status.is-ok{color:var(--ok)}.site-footer{border-top:1px solid var(--line);padding:1.75rem 1.25rem;background:var(--paper)}.footer-inner{max-width:var(--max);margin:0 auto;display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;justify-content:space-between;color:var(--muted);font-size:.9rem}.footer-links a{color:var(--muted);text-decoration:none}.footer-links a:hover{color:var(--accent)}@keyframes riseIn{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}@media(min-width:800px){.nav{display:flex}.nav-toggle{display:none}.header-actions .btn-sm{display:inline-flex}.hero-copy{padding-top:5.5rem;padding-bottom:4.25rem}.hero-avatar{width:5.5rem;height:5.5rem}.about-grid{grid-template-columns:1fr 1fr}.contact-inner{grid-template-columns:.9fr 1.1fr;align-items:start}.field-row,.project-grid{grid-template-columns:1fr 1fr}.project.featured{grid-column:1 / -1}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy,.timeline-item{animation:none!important;transition:none!important;opacity:1!important;transform:none!important}}
