:root{--bg:#161310;--surface:#1e1a16;--surface-2:#252019;--card:#faf7f2;--ink:#16130f;--text:#f5f1ea;--dim:#9b948a;--faint:#2b2620;--line:#2e2922;--accent:#e8541e;--accent-2:#d8f34a;--accent-ink:#fff;--accent-2-ink:#1d2207;--font-display:var(--font-archivo-black), "Archivo Black", "Archivo", sans-serif;--font-body:var(--font-archivo), "Archivo", sans-serif;--font-mono:var(--font-space-mono), "Space Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.6}::selection{background:var(--accent);color:#fff}.grain{pointer-events:none;z-index:60;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");width:200%;height:200%;position:fixed;inset:-50%}html[data-grain=off] .grain{display:none}.nav{z-index:50;border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#161310d1;border-radius:999px;align-items:center;gap:4px;padding:6px;display:flex;position:fixed;top:24px;left:50%;transform:translate(-50%)}.nav a{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);white-space:nowrap;border-radius:999px;padding:9px 16px;font-size:12px;text-decoration:none;transition:color .2s,background .2s}.nav a:hover{color:var(--text);background:var(--surface-2)}.nav a.cta{background:var(--accent);color:var(--accent-ink)}.nav a.cta:hover{background:var(--accent);filter:brightness(1.1)}.shell{grid-template-columns:430px 1fr;align-items:start;gap:72px;max-width:1480px;margin:0 auto;padding:110px 48px 64px;display:grid}.profile-wrap{position:sticky;top:110px}.profile-card{background:var(--card);color:var(--ink);text-align:center;border-radius:24px;flex-direction:column;align-items:center;padding:40px 36px 36px;display:flex;position:relative}.profile-card .arc{border:2.5px dashed var(--accent);clip-path:polygon(0 0,62% 0,38% 100%,0 100%);pointer-events:none;border-radius:50%;width:320px;height:320px;position:absolute;top:-36px;left:-40px}.portrait-zone{width:100%;position:relative}.portrait-zone .portrait{background:var(--accent);border-radius:18px;width:100%;height:420px;display:block;position:relative;overflow:hidden}.portrait-zone .portrait img{object-fit:cover}.portrait-zone .portrait .portrait-placeholder{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent-ink);opacity:.85;place-items:center;font-size:12px;display:grid;position:absolute;inset:0}.badge-spin{place-items:center;width:112px;height:112px;display:grid;position:absolute;bottom:-44px;left:-20px}.badge-spin svg.ring{width:100%;height:100%;animation:14s linear infinite spin}.badge-spin .ring text{font-family:var(--font-mono);letter-spacing:.18em;fill:var(--ink);text-transform:uppercase;font-size:11.2px}.badge-spin .flame{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:52px;height:52px;display:grid;position:absolute}@keyframes spin{to{transform:rotate(360deg)}}.profile-card h2{font-family:var(--font-display);letter-spacing:-.01em;margin:58px 0 8px;font-size:38px;line-height:1.05}.profile-card .role{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:24px;font-size:13px}@media (max-height:850px){.profile-card{padding:32px 32px 24px}.portrait-zone .portrait{height:320px}.profile-card h2{margin:36px 0 8px}}@media (max-height:700px){.profile-card{padding:24px}.portrait-zone .portrait{height:260px}.profile-card h2{margin:24px 0 8px;font-size:32px}.profile-card .role{margin-bottom:16px}}.profile-card .bio{color:#5d564d;text-wrap:pretty;margin:0 0 26px;font-size:16.5px}.socials{gap:14px;margin-bottom:26px;display:flex}.socials a{border:1.5px solid var(--accent);width:46px;height:46px;color:var(--accent);border-radius:50%;place-items:center;transition:background .2s,color .2s,transform .2s;display:grid}.socials a:hover{background:var(--accent);color:#fff;transform:translateY(-3px)}.socials svg{width:20px;height:20px}.card-meta{width:100%;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:#97907f;border-top:1.5px dashed #d8d2c8;justify-content:space-between;padding-top:16px;font-size:11px;display:flex}.col{min-width:0}section{padding:56px 0}section+section{border-top:1px solid var(--line)}section:first-child{padding-top:8px}.kicker{font-family:var(--font-mono);letter-spacing:.24em;text-transform:uppercase;color:var(--dim);align-items:center;gap:12px;margin:0 0 28px;font-size:12px;display:flex}.kicker:after{content:"";background:var(--line);flex:1;height:1px}.kicker em{color:var(--accent);font-style:normal}.display{font-family:var(--font-display);letter-spacing:-.01em;text-transform:uppercase;margin:0 0 36px;font-size:clamp(56px,6.4vw,108px);line-height:.92}.display .ghost{color:#0000;-webkit-text-stroke:2px #f5f1ea47;display:block}html[data-ghost=faint] .display .ghost{color:var(--faint);-webkit-text-stroke:0}.lede{color:var(--dim);text-wrap:pretty;max-width:560px;margin:0;font-size:19px}.stats{flex-wrap:wrap;gap:64px;margin-top:52px;display:flex}.stat .num{font-family:var(--font-display);color:var(--text);font-size:64px;line-height:1}.stat .num sup{color:var(--accent);font-size:36px;top:-.45em}.stat .lbl{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-top:10px;font-size:11.5px}.marquee{background:var(--accent);color:var(--accent-ink);border-radius:6px;margin:64px -8px 0;overflow:hidden;transform:rotate(-1.6deg)}.marquee .track{gap:0;width:max-content;padding:13px 0;animation:22s linear infinite marquee;display:flex}.marquee span{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;white-space:nowrap;padding:0 18px;font-size:14px}.marquee span:after{content:"✦";opacity:.6;margin-left:36px}@keyframes marquee{to{transform:translate(-50%)}}.skill-cols{grid-template-columns:repeat(3,1fr);gap:32px;margin-top:44px;display:grid}.skill-col{flex-direction:column;display:flex}.skill-col h3{font-family:var(--font-mono);letter-spacing:.1em;color:var(--accent);text-transform:uppercase;align-items:center;gap:12px;margin:0 0 20px;font-size:14px;display:flex}.skill-col h3:after{content:"";background:var(--line);flex:1;height:1px}.skill-col .tools{flex-wrap:wrap;align-content:flex-start;align-items:flex-start;gap:10px;display:flex}@media (max-width:900px){.skill-cols{grid-template-columns:1fr;gap:40px}}.chips{flex-wrap:wrap;gap:10px;display:flex}.chip{font-family:var(--font-mono);letter-spacing:.06em;color:var(--text);border:1.5px solid var(--line);cursor:default;border-radius:999px;padding:9px 18px;font-size:13px;transition:border-color .2s,background .2s,color .2s,transform .2s}.chip:hover{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);transform:translateY(-2px)}.chip.star{border-style:dashed;border-color:var(--accent-2)}.arch-strip{border:1.5px dashed var(--accent-2);border-radius:20px;margin:0;padding:28px 30px 22px;position:relative}.arch-label{background:var(--bg);font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--accent-2);padding:0 12px;font-size:12px;position:absolute;top:-11px;left:26px}.arch-chips{flex-wrap:wrap;gap:10px 28px;display:flex}.arch-chips span{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.01em;color:var(--text);align-items:center;gap:28px;font-size:21px;display:flex}.arch-chips span+span:before{content:"✦";color:var(--accent);font-size:13px}.arch-foot{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin:16px 0 0;font-size:12px}.proj-list{flex-direction:column;display:flex}.proj{border-top:1px solid var(--line);color:var(--text);grid-template-columns:240px 1fr auto;align-items:center;gap:32px;padding:30px 18px;text-decoration:none;transition:background .25s,padding-left .25s;display:grid;position:relative}.proj:last-child{border-bottom:1px solid var(--line)}.proj-thumb-row{background:var(--surface-2);border-radius:16px;justify-content:center;align-items:center;width:240px;height:240px;display:flex;overflow:hidden}.proj-thumb-row video,.proj-thumb-row img{object-fit:cover;width:100%;height:100%;display:block}.proj .idx{font-family:var(--font-mono);color:var(--dim);letter-spacing:.1em;font-size:13px}.proj h3{font-family:var(--font-display);letter-spacing:0;margin:0 0 6px;font-size:34px;transition:color .2s}.proj p{color:var(--dim);max-width:520px;margin:0;font-size:15.5px}.proj .tags{flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:260px;display:flex}.proj .tag{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--dim);border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:6px 14px;font-size:11px}.proj .arrow{color:var(--accent);margin-left:18px;transition:transform .25s}.proj .right{align-items:center;display:flex}.proj:hover{background:var(--surface);padding-left:28px}.proj:hover h3{color:var(--accent)}.proj:hover .arrow{transform:translate(4px,-4px)}@media (hover:hover){.proj:hover .arrow{opacity:0}}.proj-cta{z-index:70;pointer-events:none;background:var(--accent-2);color:var(--accent-2-ink);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;opacity:0;border-radius:999px;align-items:center;gap:9px;padding:13px 22px;font-size:13px;font-weight:700;transition:transform .28s cubic-bezier(.34,1.56,.64,1),opacity .18s;display:flex;position:fixed;top:0;left:0;transform:translate(-50%,-50%)scale(.4)rotate(-4deg);box-shadow:0 10px 30px #0006}.proj-cta.on{opacity:1;transform:translate(-50%,-50%)scale(1)rotate(0)}.modal-layer{z-index:80;justify-content:center;align-items:center;padding:32px;display:none;position:fixed;inset:0}.modal-layer.open{display:flex}.modal-backdrop{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0a0806b3;position:absolute;inset:0}.proj-modal{background:var(--surface);border:1px solid var(--line);border-radius:24px;grid-template-columns:1.05fr 1fr;width:min(1080px,100%);max-height:calc(100vh - 64px);display:none;position:relative;overflow:hidden}.proj-modal.active{display:grid}.proj-modal.no-media{grid-template-columns:1fr;width:min(680px,100%)}@media (prefers-reduced-motion:no-preference){.modal-layer.open .proj-modal.active{animation:.45s cubic-bezier(.2,.9,.25,1) modal-in}@keyframes modal-in{0%{transform:translateY(36px)scale(.97)}to{transform:none}}}.modal-close{z-index:3;border:1.5px solid var(--line);width:44px;height:44px;color:var(--text);cursor:pointer;background:#161310b3;border-radius:50%;place-items:center;transition:background .2s,transform .2s,border-color .2s;display:grid;position:absolute;top:18px;right:18px}.modal-close:hover{background:var(--accent);border-color:var(--accent);transform:rotate(90deg)}.pm-media{background:var(--surface-2);flex-direction:column;min-height:0;max-height:calc(100vh - 64px);padding:24px;display:flex;overflow-y:auto}.pm-carousel{flex-direction:column;gap:24px;display:flex}.pm-slide{background:var(--bg);border:1px solid var(--line);border-radius:16px;width:100%;display:block;position:relative;overflow:hidden}.pm-slide video.pm-vid,.pm-slide img.pm-img{width:100%;height:auto;display:block}.vid-tag{z-index:2;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0a080699;border:1px solid #f5f1ea33;border-radius:999px;padding:7px 14px;font-size:11px;position:absolute;top:14px;left:14px}.pm-body{min-height:0;max-height:calc(100vh - 64px);padding:40px 38px 32px;overflow-y:auto}.pm-body .kicker{margin-bottom:16px}.pm-body h3{font-family:var(--font-display);text-transform:uppercase;margin:0 0 12px;font-size:44px;line-height:1}.pm-hook{color:var(--text);text-wrap:pretty;margin:0 0 22px;font-size:18px;font-weight:600}.pm-hook em{color:var(--accent);font-style:normal}.pm-label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin:26px 0 12px;font-size:11px}.pm-body>p.sum{color:var(--dim);margin:0;font-size:15.5px}.solved{flex-direction:column;gap:10px;display:flex}.solved .row{background:var(--bg);border:1px solid var(--line);border-radius:12px;grid-template-columns:auto 1fr;align-items:start;gap:14px;padding:13px 16px;transition:border-color .2s,transform .2s;display:grid}.solved .row:hover{border-color:var(--accent);transform:translate(4px)}.solved .n{font-family:var(--font-mono);color:var(--accent-2);padding-top:3px;font-size:12px}.solved p{color:var(--dim);margin:0;font-size:14.5px}.solved strong{color:var(--text)}.pm-stack{flex-wrap:wrap;gap:8px;display:flex}.pm-stack .chip{padding:7px 14px;font-size:12px}.pm-links{flex-wrap:wrap;gap:12px;margin:0 0 32px;display:flex}.pm-links a{font-family:var(--font-body);letter-spacing:.03em;text-transform:uppercase;border-radius:999px;align-items:center;gap:8px;padding:13px 22px;font-size:14px;font-weight:700;text-decoration:none;transition:transform .2s,filter .2s,background .2s,color .2s;display:inline-flex}.pm-links a:hover{transform:translateY(-3px)}.pm-links .live{background:var(--accent);color:var(--accent-ink)}.pm-links .live:hover{filter:brightness(1.12)}.pm-links .repo{border:1.5px solid var(--line);color:var(--text)}.pm-links .repo:hover{border-color:var(--text)}.pm-links .case{background:var(--accent-2);color:var(--accent-2-ink)}body.modal-open{overflow:hidden}@media (max-width:900px){.modal-layer{padding:12px}.proj-modal{grid-template-columns:1fr;max-height:calc(100vh - 24px);overflow-y:auto}.pm-media{overflow:visible}.pm-carousel{min-height:260px}.pm-body{padding:28px 24px;overflow:visible}}.xp-list{flex-direction:column;gap:0;display:flex;position:relative}.xp{border-top:1px solid var(--line);grid-template-columns:24px 1fr auto;gap:28px;padding:34px 0;display:grid}.xp:first-of-type{border-top:0}.xp .dot-col{justify-content:center;display:flex;position:relative}.xp .dot{background:var(--bg);border:2.5px solid var(--accent);z-index:1;border-radius:50%;width:12px;height:12px;margin-top:8px}.xp.current .dot{background:var(--accent);box-shadow:0 0 0 6px #e8541e2e}.xp h3{font-family:var(--font-display);margin:0 0 10px;font-size:27px}.xp .xp-role{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:-4px 0 10px;font-size:12px}.xp p{color:var(--dim);max-width:540px;margin:0;font-size:16px}.xp .when{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);white-space:nowrap;padding-top:8px;font-size:12px}.xp.current .when{color:var(--accent-2)}.posts{grid-template-columns:1fr 1fr;gap:24px;display:grid}.post{background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:20px;flex-direction:column;padding:30px;text-decoration:none;transition:transform .25s,border-color .25s;display:flex;position:relative}.post:hover{border-color:var(--accent);transform:translateY(-6px)}.post h3{font-family:var(--font-body);text-wrap:pretty;margin:0 0 14px;padding-right:40px;font-size:23px;font-weight:700;line-height:1.3}.post p{color:var(--dim);flex:1;margin:0 0 26px;font-size:15.5px}.post .meta{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);justify-content:space-between;font-size:12px;display:flex}.post .arrow{color:var(--accent);transition:transform .25s;position:absolute;top:28px;right:26px}.post:hover .arrow{transform:translate(4px,-4px)}.mail-banner{background:var(--accent);color:var(--accent-ink);border-radius:20px;justify-content:space-between;align-items:center;gap:24px;padding:30px 32px;text-decoration:none;transition:transform .25s,filter .25s;display:flex;position:relative;overflow:hidden}.mail-banner:hover{filter:brightness(1.07);transform:translateY(-4px)}.mail-banner:after{content:"";pointer-events:none;border:2.5px dashed #ffffff59;border-radius:50%;width:200px;height:200px;position:absolute;top:-60px;right:-60px}.mb-left{flex-direction:column;gap:6px;min-width:0;display:flex}.mb-label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;opacity:.8;font-size:12px}.mb-mail{font-family:var(--font-display);letter-spacing:-.01em;word-break:break-all;font-size:clamp(26px,3.2vw,44px);line-height:1.05}.mb-note{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;opacity:.75;font-size:12px}.mb-actions{z-index:1;flex:none;align-items:center;gap:12px;display:flex;position:relative}.mb-copy{color:inherit;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:#00000047;border:0;border-radius:999px;align-items:center;gap:9px;padding:13px 20px;font-size:13px;transition:background .2s,transform .15s;display:flex}.mb-copy:hover{background:#00000073}.mb-copy:active{transform:scale(.96)}.mb-copy.copied{background:var(--accent-2);color:var(--accent-2-ink)}.mb-go{border:1.5px solid #fff6;border-radius:50%;place-items:center;width:48px;height:48px;transition:transform .25s;display:grid}.mail-banner:hover .mb-go{transform:rotate(45deg)}.or-divider{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--dim);align-items:center;gap:18px;margin:34px 0 30px;font-size:12px;display:flex}.or-divider:before,.or-divider:after{content:"";background:var(--line);flex:1;height:1px}.field{flex-direction:column;gap:9px;margin-bottom:22px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:22px;display:grid}.field label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--dim);font-size:12px}.field input,.field select,.field textarea{background:var(--surface);border:1.5px solid var(--line);color:var(--text);font-family:var(--font-body);appearance:none;border-radius:12px;outline:none;width:100%;padding:15px 18px;font-size:16.5px;transition:border-color .2s,box-shadow .2s}.field textarea{resize:vertical;min-height:150px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #e8541e2e}.field.invalid input,.field.invalid textarea{border-color:#e8401e}.field .err{color:#ff7a55;font-size:13px;display:none}.field.invalid .err{display:block}.select-wrap{position:relative}.select-wrap:after{content:"";border-right:2px solid var(--dim);border-bottom:2px solid var(--dim);pointer-events:none;width:9px;height:9px;position:absolute;top:50%;right:20px;transform:translateY(-70%)rotate(45deg)}.submit{background:var(--accent);width:100%;color:var(--accent-ink);font-family:var(--font-body);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;will-change:transform;border:0;border-radius:14px;justify-content:center;align-items:center;gap:12px;padding:19px;font-size:18px;font-weight:700;transition:filter .2s,transform .1s;display:flex}.submit:hover{filter:brightness(1.12)}.submit:active{transform:scale(.985)}.form-done{border:1.5px dashed var(--accent-2);text-align:center;border-radius:16px;padding:36px;display:none}.form-done h3{font-family:var(--font-display);color:var(--accent-2);margin:0 0 10px;font-size:30px}.form-done p{color:var(--dim);margin:0}form.sent{display:none}form.sent+.form-done{display:block}footer{border-top:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);justify-content:space-between;padding:26px 0 0;font-size:12px;display:flex}footer a{color:var(--accent);text-decoration:none}@media (prefers-reduced-motion:no-preference){.reveal{transition:transform .7s;transform:translateY(28px)}.reveal.in{transform:none}}@media (max-width:1180px){.shell{grid-template-columns:1fr;gap:48px;padding-top:130px}.profile-wrap{width:100%;max-width:460px;margin:0 auto;position:static}}@media (max-width:760px){.shell{padding:120px 20px 48px}.posts,.form-row,.skill-groups{grid-template-columns:1fr}.proj{grid-template-columns:1fr;gap:10px}.proj .idx{display:none}.proj .tags{justify-content:flex-start;max-width:none}.mail-banner{flex-direction:column;align-items:flex-start}.stats{gap:36px}.nav{max-width:calc(100vw - 24px);overflow-x:auto}}
