:root{--bg: #0d0f12;--bg-soft: #14171c;--ink: #d7dce3;--muted: #6b7280;--line: #20252d;--accent: #6ee7a8;--amber: #e8c07d;--blue: #5aa9e6;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--display: "Fraunces Variable", "Fraunces", Georgia, serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--mono);font-size:15px;line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;position:relative;overflow-x:hidden}.bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.bg>*{position:absolute;inset:0;width:100%;height:100%}.mesh-glow{background:radial-gradient(40% 50% at 18% 22%,rgba(110,231,168,.16),transparent 70%),radial-gradient(38% 45% at 82% 30%,rgba(90,169,230,.12),transparent 70%),radial-gradient(45% 50% at 60% 85%,rgba(232,192,125,.08),transparent 72%);filter:blur(14px);animation:drift 26s ease-in-out infinite alternate;will-change:transform}@keyframes drift{0%{transform:translate(0) scale(1)}50%{transform:translate(2%,-2%) scale(1.06)}to{transform:translate(-2%,2%) scale(1.02)}}.circuits{opacity:.5;transition:transform .3s ease-out}.circuits .trace path{fill:none;stroke:#5aa9e638;stroke-width:1.4;stroke-dasharray:10 14;animation:flow 8s linear infinite}.circuits .trace-pads circle{fill:#5aa9e659}@keyframes flow{to{stroke-dashoffset:-48}}.mesh{opacity:.85;transition:transform .3s ease-out}.mesh .edges use{stroke:#6ee7a81a;stroke-width:1;fill:none}.mesh .dnode{fill:#6ee7a88c;animation:pulse 4s ease-in-out infinite;animation-delay:var(--nd, 0s)}@keyframes pulse{0%,to{opacity:.35;r:3}50%{opacity:.9;r:4.5}}.mesh .packet{r:2.2;fill:#aef5cfb3;filter:drop-shadow(0 0 2px rgba(110,231,168,.45))}.vignette{background:radial-gradient(120% 80% at 50% 25%,transparent 35%,rgba(13,15,18,.55) 100%)}.center-veil{background:linear-gradient(90deg,transparent 0%,rgba(13,15,18,.55) 28%,rgba(13,15,18,.62) 50%,rgba(13,15,18,.55) 72%,transparent 100%)}.grain{opacity:.04;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.wrap{position:relative;z-index:2;max-width:720px;margin:0 auto;padding:clamp(3.5rem,12vh,8rem) clamp(1.25rem,5vw,2rem) 4rem}.sigil{color:var(--accent)}.block{margin-top:clamp(3.5rem,11vh,6rem)}.hero{margin-bottom:0}.prompt{font-size:.82rem;letter-spacing:.04em;color:var(--muted);margin-bottom:1.6rem}.name{font-family:var(--display);font-weight:380;font-size:clamp(2.6rem,9vw,4.6rem);line-height:1.02;letter-spacing:-.02em;color:#fff;margin-bottom:1.1rem;text-shadow:0 2px 40px rgba(110,231,168,.12)}.name .surname{font-weight:300;color:#6b7480;text-shadow:none}.roles{font-size:.92rem;text-transform:lowercase;letter-spacing:.02em;color:var(--amber);margin-bottom:1.4rem}.roles .sep{color:var(--line);margin:0 .5rem}.blurb{max-width:54ch;color:#aab2bd;font-size:.95rem;margin-bottom:1.8rem}.stack{display:flex;flex-wrap:wrap;gap:.45rem;max-width:56ch}.chip{font-size:.7rem;color:#9aa4b1;background:#ffffff05;border:1px solid var(--line);border-radius:5px;padding:.18rem .55rem;letter-spacing:.02em;transition:color .2s ease,border-color .2s ease,transform .2s ease}.chip:hover{color:var(--accent);border-color:#6ee7a866;transform:translateY(-2px)}.section-head{display:flex;align-items:baseline;gap:.4rem;font-size:.85rem;letter-spacing:.04em;color:var(--ink);padding-bottom:.9rem;margin-bottom:1.4rem;border-bottom:1px solid var(--line)}.section-head .cmd{color:var(--blue)}.section-head .path{color:var(--ink)}.section-head .op{color:var(--muted)}.count{margin-left:auto;color:var(--muted);font-size:.72rem;border:1px solid var(--line);border-radius:999px;padding:.05rem .55rem}.timeline{list-style:none;position:relative;padding-left:1.6rem}.timeline:before{content:"";position:absolute;left:4px;top:6px;bottom:6px;width:1px;background:linear-gradient(var(--line),transparent)}.job{position:relative;padding-bottom:2rem}.job:before{content:"";position:absolute;left:-1.6rem;top:7px;width:9px;height:9px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);box-shadow:0 0 10px #6ee7a866}.job:last-child{padding-bottom:0}.job-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.job-role{color:#fff;font-weight:500;font-size:.98rem}.job-period{color:var(--muted);font-size:.74rem;white-space:nowrap}.job-company{color:var(--amber);font-size:.82rem;margin:.15rem 0 .6rem}.job-company a{color:inherit;text-decoration:none;text-underline-offset:3px;text-decoration-color:#e8c07d66;transition:color .2s ease,text-decoration-color .2s ease}.job-company a:hover,.job-company a:focus-visible{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent)}.job-summary{color:#a3acb9;font-size:.88rem;max-width:58ch;margin-bottom:.7rem}.repo-list{list-style:none}.repo{border-bottom:1px solid var(--line)}.repo:last-child{border-bottom:none}.repo-link{display:block;text-decoration:none;color:inherit;padding:1.25rem .9rem;margin:0 -.9rem;border-radius:8px;position:relative;transition:background .25s ease,padding-left .25s ease}.repo-link:before{content:"";position:absolute;left:0;top:12%;bottom:12%;width:2px;background:var(--accent);border-radius:2px;opacity:0;transform:scaleY(.3);transition:opacity .25s ease,transform .25s ease}.repo-link:hover,.repo-link:focus-visible{background:linear-gradient(90deg,rgba(110,231,168,.05),transparent 60%);padding-left:1.5rem;outline:none}.repo-link:hover:before,.repo-link:focus-visible:before{opacity:1;transform:scaleY(1)}.repo-top{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.arrow{color:var(--accent);transition:transform .25s ease}.repo-link:hover .arrow{transform:translate(3px)}.repo-name{font-weight:500;color:#fff;font-size:1rem}.repo-badge{font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);border:1px solid rgba(110,231,168,.35);border-radius:999px;padding:.05rem .45rem}.repo[data-internal=true] .goto{opacity:.55}.repo-link:hover .repo[data-internal=true] .goto{opacity:1}.tags{display:inline-flex;gap:.4rem;flex-wrap:wrap}.tag{font-size:.68rem;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:.08rem .42rem;letter-spacing:.02em;transition:color .2s ease,border-color .2s ease}.tag:hover{color:var(--accent);border-color:#6ee7a866}.goto{margin-left:auto;color:var(--muted);opacity:0;transform:translate(-4px,4px);transition:opacity .25s ease,transform .25s ease}.repo-link:hover .goto,.repo-link:focus-visible .goto{opacity:1;transform:translate(0);color:var(--accent)}.repo-desc{color:#a3acb9;font-size:.86rem;margin-top:.5rem;padding-left:1.3rem;max-width:60ch}.repo[data-featured=true] .repo-name{color:var(--accent)}.repo[data-featured=true] .arrow:after{content:"★";margin-left:.5rem;color:var(--amber);font-size:.7rem;vertical-align:middle}.avail{color:#aab2bd;font-size:.95rem;margin-bottom:1.6rem;max-width:50ch}.contact-links{display:flex;flex-direction:column;gap:.2rem}.contact-links a{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--ink);font-size:1rem;padding:.7rem .9rem;margin:0 -.9rem;border-radius:8px;transition:background .2s ease,color .2s ease,padding-left .2s ease}.contact-links a:hover{background:var(--bg-soft);color:var(--accent);padding-left:1.4rem}.contact-links .goto{margin-left:0}.contact-links a:hover .goto{opacity:1;transform:none}.term-form{margin-top:2.2rem}.form-prompt{color:#c8cfd8;font-size:.9rem;font-weight:500;margin-bottom:1.1rem}.form-prompt .sigil{color:var(--blue)}.hp{position:absolute;left:-9999px;opacity:0;pointer-events:none}.field{display:block;margin-bottom:1rem}.field-label{display:block;color:#b3bcc6;font-size:.78rem;letter-spacing:.04em;margin-bottom:.4rem}.field-label:before{content:"› ";color:var(--accent)}.term-form input[type=text],.term-form input[type=email],.term-form textarea{width:100%;font-family:var(--mono);font-size:.9rem;color:var(--ink);background:#ffffff0d;border:1px solid rgba(255,255,255,.16);border-radius:6px;padding:.7rem .8rem;resize:vertical;box-shadow:inset 0 1px 2px #00000040;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.term-form input::placeholder,.term-form textarea::placeholder{color:#6b7480}.term-form input:hover,.term-form textarea:hover{border-color:#ffffff47}.term-form input:focus,.term-form textarea:focus{outline:none;border-color:#6ee7a899;background:#6ee7a80d;box-shadow:0 0 0 3px #6ee7a81f,inset 0 1px 2px #0003}.send-btn{font-family:var(--mono);font-size:.88rem;color:var(--bg);background:var(--accent);border:none;border-radius:6px;padding:.6rem 1.3rem;cursor:pointer;font-weight:500;display:inline-flex;align-items:center;gap:.4rem;margin-top:.3rem;transition:transform .15s ease,box-shadow .2s ease,opacity .2s ease}.send-btn .sigil{color:var(--bg)}.send-btn .goto{margin-left:0;opacity:.7;transform:none;color:var(--bg)}.send-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #6ee7a840}.send-btn:disabled{opacity:.5;cursor:wait;transform:none;box-shadow:none}.form-status{font-size:.82rem;margin-top:.9rem;min-height:1.2em}.form-status[data-state=pending]{color:var(--muted)}.form-status[data-state=ok]{color:var(--accent)}.form-status[data-state=error]{color:#e8836e}.foot{margin-top:clamp(3rem,9vh,5rem);padding-top:1.4rem;border-top:1px solid var(--line);font-size:.82rem}.line,.muted{color:var(--muted)}.cursor{display:inline-block;margin-left:2px;color:var(--accent);animation:blink 1.1s step-end infinite}@keyframes blink{50%{opacity:0}}.rise{opacity:0;transform:translateY(12px);animation:rise .7s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:var(--d, 0ms)}@keyframes rise{to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}.reveal.in{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){.rise{animation:none;opacity:1;transform:none}.reveal{transition:none;opacity:1;transform:none}.cursor,.mesh-glow,.circuits .trace path,.mesh .dnode{animation:none}.mesh .packet{display:none}html{scroll-behavior:auto}}
