:root{--accent-h:250;--ground-c:0.012;--color-bg:oklch(95.8% var(--ground-c) var(--accent-h));--color-surface:oklch(93% var(--ground-c) var(--accent-h));--color-text:oklch(20% 0.01 var(--accent-h));--color-divider:color-mix(in srgb,var(--color-text) 16%,#0000);--color-accent:oklch(58% 0.09 var(--accent-h));--color-accent-100:oklch(93% 0.03 var(--accent-h));--color-accent-600:oklch(52% 0.09 var(--accent-h));--color-accent-700:oklch(45% 0.09 var(--accent-h));--color-accent-800:oklch(37% 0.08 var(--accent-h));--color-accent-900:oklch(28% 0.06 var(--accent-h));--color-neutral-300:oklch(86% 0.008 var(--accent-h));--color-neutral-600:oklch(54.5% 0.012 var(--accent-h));--color-neutral-700:oklch(44% 0.012 var(--accent-h));--color-neutral-900:oklch(24% 0.01 var(--accent-h));--font-heading:"Barlow Condensed",system-ui,sans-serif;--font-heading-weight:600;--font-body:"Barlow",system-ui,sans-serif;--font-mono:ui-monospace,Menlo,monospace;--space-1:3.4px;--space-2:6.8px;--space-3:10.2px;--shadow-md:0 3px 10px color-mix(in srgb,var(--color-neutral-900) 16%,#0000);--shadow-lg:0 12px 32px color-mix(in srgb,var(--color-neutral-900) 22%,#0000);--overlay:oklch(20% 0.02 var(--accent-h)/0.78)}@media (prefers-color-scheme:dark){:root{--ground-c:0.014;--color-bg:oklch(17.5% var(--ground-c) var(--accent-h));--color-surface:oklch(20% var(--ground-c) var(--accent-h));--color-text:oklch(93% 0.006 var(--accent-h));--color-divider:oklch(42% 0.02 var(--accent-h));--color-accent:oklch(70% 0.09 var(--accent-h));--color-accent-100:oklch(25% 0.03 var(--accent-h));--color-accent-600:oklch(76% 0.08 var(--accent-h));--color-accent-700:oklch(81% 0.07 var(--accent-h));--color-accent-800:oklch(87% 0.05 var(--accent-h));--color-accent-900:oklch(91% 0.04 var(--accent-h));--color-neutral-300:oklch(42% 0.02 var(--accent-h));--color-neutral-600:oklch(70% 0.016 var(--accent-h));--color-neutral-700:oklch(84% 0.012 var(--accent-h));--color-neutral-900:oklch(95% 0.006 var(--accent-h));--shadow-md:0 2px 8px #0000008c;--shadow-lg:0 6px 20px #0009}}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:oklch(95.8% .012 250);background:var(--color-bg);color:oklch(20% .01 250);color:var(--color-text);font-family:Barlow,system-ui,sans-serif;font-family:var(--font-body);font-size:15px;font-weight:400;line-height:1.55;margin:0;padding-right:0;padding-right:var(--sbw,0)}h1,h2,h3,h4,h5,h6{font-family:Barlow Condensed,system-ui,sans-serif;font-family:var(--font-heading);font-weight:600;font-weight:var(--font-heading-weight);letter-spacing:-.015em;line-height:1.12;margin:0 0 6.8px;margin:0 0 var(--space-2)}p{margin:0 0 10.2px;margin:0 0 var(--space-3)}a{color:oklch(45% .09 250);color:var(--color-accent-700);text-underline-offset:3px}a:hover{color:oklch(28% .06 250);color:var(--color-accent-900)}img{display:block;max-width:100%}section[id]{scroll-margin-top:64px}:focus{outline:none}:focus-visible{outline:2px solid oklch(58% .09 250);outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:color-mix(in srgb,oklch(58% .09 250) 30%,#0000);background:color-mix(in srgb,var(--color-accent) 30%,#0000)}.blueprint{border:1px solid color-mix(in srgb,oklch(20% .01 250) 16%,#0000);border:1px solid var(--color-divider);border-radius:0;position:relative}.blueprint>.corner{color:color-mix(in srgb,oklch(20% .01 250) 55%,#0000);color:color-mix(in srgb,var(--color-text) 55%,#0000);height:11px;pointer-events:none;position:absolute;width:11px}.blueprint>.corner:after,.blueprint>.corner:before{background:currentColor;content:"";position:absolute}.blueprint>.corner:before{height:100%;left:5px;top:0;width:1px}.blueprint>.corner:after{height:1px;left:0;top:5px;width:100%}.blueprint>.corner.tl{left:-6px;top:-6px}.blueprint>.corner.tr{right:-6px;top:-6px}.blueprint>.corner.bl{bottom:-6px;left:-6px}.blueprint>.corner.br{bottom:-6px;right:-6px}.card{background:#0000;border:1px solid color-mix(in srgb,oklch(20% .01 250) 16%,#0000);border:1px solid var(--color-divider);border-radius:0;display:flex;flex-direction:column;gap:6.8px;gap:var(--space-2);padding:10.2px;padding:var(--space-3)}.card.hoverable{transition:border-color .15s ease,box-shadow .15s ease}.card.hoverable:hover{border-color:oklch(58% .09 250);border-color:var(--color-accent);box-shadow:0 3px 10px color-mix(in srgb,oklch(24% .01 250) 16%,#0000);box-shadow:var(--shadow-md)}.btn{align-items:center;background:#0000;border:1px solid color-mix(in srgb,oklch(20% .01 250) 16%,#0000);border:1px solid var(--color-divider);border-radius:0;cursor:pointer;display:inline-flex;font-family:Barlow Condensed,system-ui,sans-serif;font-family:var(--font-heading);font-size:14px;font-weight:600;font-weight:var(--font-heading-weight);gap:6px;justify-content:center;line-height:1.2;padding:6.8px 12.24px;padding:var(--space-2) calc(var(--space-3)*1.2);text-decoration:none}.btn,.btn:hover{color:oklch(20% .01 250);color:var(--color-text)}.btn:disabled{cursor:not-allowed;opacity:.45}.btn-primary{background:oklch(58% .09 250);background:var(--color-accent);border-color:oklch(58% .09 250);border-color:var(--color-accent)}.btn-primary,.btn-primary:hover{color:oklch(95.8% .012 250);color:var(--color-bg)}.btn-primary:hover{background:oklch(52% .09 250);background:var(--color-accent-600)}.btn-primary:active{background:oklch(45% .09 250);background:var(--color-accent-700)}.btn-secondary{border-color:color-mix(in srgb,oklch(20% .01 250) 16%,#0000);border-color:var(--color-divider)}.btn-secondary:hover{background:color-mix(in srgb,oklch(20% .01 250) 7%,#0000);background:color-mix(in srgb,var(--color-text) 7%,#0000)}.btn-secondary:active{background:color-mix(in srgb,oklch(20% .01 250) 14%,#0000);background:color-mix(in srgb,var(--color-text) 14%,#0000)}.btn-ghost{border-color:#0000;padding-inline:3.4px;padding-inline:var(--space-1)}.btn-ghost,.btn-ghost:hover{color:oklch(58% .09 250);color:var(--color-accent)}.btn-ghost:hover{background:color-mix(in srgb,oklch(58% .09 250) 10%,#0000);background:color-mix(in srgb,var(--color-accent) 10%,#0000)}.btn-ghost:active{background:color-mix(in srgb,oklch(58% .09 250) 18%,#0000);background:color-mix(in srgb,var(--color-accent) 18%,#0000)}.field>label{color:color-mix(in srgb,oklch(20% .01 250) 70%,#0000);color:color-mix(in srgb,var(--color-text) 70%,#0000);display:block;font-family:ui-monospace,Menlo,monospace;font-family:var(--font-mono);font-size:12px;margin-bottom:5px}.input{background:oklch(93% .012 250);background:var(--color-surface);border:1px solid color-mix(in srgb,oklch(20% .01 250) 16%,#0000);border:1px solid var(--color-divider);border-radius:0;caret-color:oklch(58% .09 250);caret-color:var(--color-accent);color:oklch(20% .01 250);color:var(--color-text);font:inherit;font-size:14px;min-height:36px;padding:6px 10px;width:100%}.input:hover{border-color:color-mix(in srgb,oklch(20% .01 250) 45%,#0000);border-color:color-mix(in srgb,var(--color-text) 45%,#0000)}.input:focus-visible{border-color:oklch(58% .09 250);border-color:var(--color-accent);outline-offset:0}textarea.input{min-height:110px;resize:vertical}.tag{align-items:center;border-radius:0;display:inline-flex;font-size:11px;letter-spacing:.02em;padding:3px 10px}.tag-accent{background:oklch(93% .03 250);background:var(--color-accent-100);color:oklch(37% .08 250);color:var(--color-accent-800)}.tag-outline{border:1px solid oklch(58% .09 250);border:1px solid var(--color-accent);color:oklch(58% .09 250);color:var(--color-accent)}.table{border-collapse:collapse;font-size:14px;width:100%}.table th{border-bottom:1px solid color-mix(in srgb,oklch(20% .01 250) 16%,#0000);border-bottom:1px solid var(--color-divider);color:color-mix(in srgb,oklch(20% .01 250) 60%,#0000);color:color-mix(in srgb,var(--color-text) 60%,#0000);font-size:11px;letter-spacing:.08em;text-align:left;text-transform:uppercase}.table td,.table th{padding:6.8px;padding:var(--space-2)}.table td{border-bottom:1px solid color-mix(in srgb,oklch(20% .01 250) 8%,#0000);border-bottom:1px solid color-mix(in srgb,var(--color-text) 8%,#0000);vertical-align:top}.table tbody tr:hover{background:color-mix(in srgb,oklch(20% .01 250) 4%,#0000);background:color-mix(in srgb,var(--color-text) 4%,#0000)}@media (prefers-color-scheme:dark){.table td,.table th{border-color:color-mix(in srgb,oklch(20% .01 250) 16%,#0000);border-color:var(--color-divider)}}@keyframes drawLine{to{stroke-dashoffset:0}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pop{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card,path,text{animation-delay:0ms!important;animation-duration:.01ms!important}}.nav{align-items:center;background:var(--color-bg);border-bottom:1px solid var(--color-neutral-300);color:var(--color-accent-700);display:flex;font-family:var(--font-mono);font-size:clamp(10.5px,1.3vw,13px);gap:16px;justify-content:space-between;left:0;letter-spacing:.08em;padding:14px 24px;padding:14px calc(24px + var(--sbw, 0px)) 14px 24px;position:fixed;right:0;top:0;z-index:40}.nav-brand{background:none;border:0;color:inherit;cursor:pointer;flex:1 1;font:inherit;letter-spacing:inherit;min-width:0;overflow:hidden;padding:0;text-align:left;text-overflow:ellipsis;white-space:nowrap}.nav-brand:hover{color:var(--color-accent-900)}.nav-links{align-items:center;display:flex;flex-shrink:0;gap:clamp(5px,1vw,10px);text-transform:uppercase;white-space:nowrap}.nav-links a{color:var(--color-accent-700);text-decoration:none}.nav-links a:hover{color:var(--color-accent-900)}.nav-spacer{height:48px}@media (max-width:560px){.nav{align-items:stretch;flex-direction:column;gap:6px;padding:10px 16px;padding:10px calc(16px + var(--sbw, 0px)) 10px 16px}.nav-brand{text-align:center}.nav-links{justify-content:center;letter-spacing:.05em}.nav-spacer{height:66px}section[id]{scroll-margin-top:80px}}.hero-zone{position:relative}.hero-grid{background-image:linear-gradient(var(--color-neutral-300) 1px,#0000 1px),linear-gradient(90deg,var(--color-neutral-300) 1px,#0000 1px);background-size:32px 32px;inset:0;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 50%,#0000 96%);mask-image:linear-gradient(180deg,#000 0,#000 50%,#0000 96%);opacity:.45;pointer-events:none;position:absolute}.hero{margin:0 auto;max-width:1100px;padding:44px 24px 8px;position:relative}.hero h1{font-size:clamp(36px,6vw,52px);letter-spacing:.01em;line-height:1.05;margin:10px 0 6px;text-align:center;text-transform:uppercase}.hero-bio{color:var(--color-neutral-700);font-size:17px;margin:0 auto;max-width:60ch;text-align:center}.diagram-wrap{padding:12px 0 36px}.diagram-frame,.diagram-wrap{overflow:hidden;position:relative}.diagram-frame{width:100%}.diagram-stage{height:680px;position:relative;transform-origin:top left;width:1120px}.diagram-svg{inset:0;overflow:visible;position:absolute}.diagram-svg path{fill:none;stroke:var(--color-accent);stroke-width:1.5}.diagram-svg path.ln-sql{stroke-dasharray:1;stroke-dashoffset:1;animation:drawLine .7s ease forwards}.diagram-svg path.ln-mongo{stroke-dasharray:.05 .03;animation:pop .5s ease forwards;opacity:0}.diagram-svg path.ln-dynamo{stroke-width:2.5;stroke-dasharray:.012 .028;stroke-linecap:round;animation:pop .5s ease forwards;opacity:0}.diagram-svg text{fill:var(--color-accent-700);animation:pop .3s ease forwards;font-family:var(--font-mono);font-size:11px;opacity:0}.ent{animation:rise .5s ease both;background:var(--color-bg);gap:0;padding:0;position:absolute}.ent-link{cursor:pointer;text-decoration:none}.ent-link,.ent-link:hover{color:inherit}.ent-head{align-items:center;border-bottom:1px solid var(--color-neutral-300);display:flex;gap:10px;justify-content:space-between;padding:10px 14px}.ent-head.mongo{background:var(--color-accent-100)}.ent-head.dynamo{border-bottom:2px solid var(--color-accent)}.ent-head.person{background:var(--color-accent-900);color:var(--color-bg)}.ent-head.person .ent-badge{font-family:var(--font-mono);font-size:11px;white-space:nowrap}.ent-title.sql{font-family:var(--font-heading);font-size:17px;font-weight:600;letter-spacing:.1em}.ent-title.mongo{font-family:var(--font-mono);font-size:13.5px}.ent-title.dynamo{font-family:var(--font-mono);font-size:13px;letter-spacing:.14em;text-transform:uppercase}.ent-badge.tag{font-size:11px;white-space:nowrap}.ent-body{font-family:var(--font-mono);font-size:12.5px;padding:8px 0}.ent-row{display:flex;gap:12px;justify-content:space-between;padding:4px 14px}.ent-row.indent{padding-left:28px}.ent-row.key{background:var(--color-accent-100)}.ent-row b{color:var(--color-accent-700)}.ent-val{color:var(--color-neutral-600);text-align:right}.ent-val.accent{color:var(--color-accent-700)}.main{display:flex;flex-direction:column;gap:64px;margin:0 auto;max-width:1100px;padding:0 24px 80px}.section-title{font-size:30px;letter-spacing:.04em;margin:0 0 4px;text-transform:uppercase}.kicker{color:var(--color-accent-700);font-family:var(--font-mono);font-size:12.5px;margin-bottom:16px}.table-scroll{overflow-x:auto}.table-scroll .table{min-width:640px}.nowrap{white-space:nowrap}.grid-projects{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.grid-skills{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.grid-edu{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.proj{gap:0;padding:18px}.proj-head{align-items:baseline;display:flex;gap:8px;justify-content:space-between}.proj-head h3{font-size:21px;letter-spacing:.03em;margin:0;text-transform:uppercase}.proj-head .tag{flex-shrink:0;font-size:11px}.proj p{color:var(--color-neutral-700);flex:1 1;font-size:14px;line-height:1.55;margin:8px 0 12px}.proj-meta{font-family:var(--font-mono);font-size:12px}.proj-meta .k{color:var(--color-accent-700)}.proj .btn{align-self:flex-start;margin-top:12px}.skill{gap:0;padding:16px}.skill-cat{color:var(--color-neutral-600);font-family:var(--font-mono);font-size:12px;margin-bottom:8px}.skill-tags{display:flex;flex-wrap:wrap;gap:6px}.edu{align-items:flex-start;gap:0;padding:18px}.edu h3{font-size:21px;margin:10px 0 2px}.edu-detail{color:var(--color-neutral-700);font-size:13.5px}.contact{border-top:1px solid var(--color-neutral-300);padding:40px 0 0;text-align:center}.contact .kicker{margin-bottom:0}.contact h2{font-size:34px;margin:10px 0 18px;text-transform:uppercase}.contact-btns{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.contact-btns .btn{text-decoration:none}.overlay{align-items:center;background:var(--overlay);display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:60}.modal{background:var(--color-bg);box-shadow:var(--shadow-lg);gap:0;padding:0;width:min(1000px,96vw)}.modal.narrow{width:min(480px,96vw)}.modal-head{align-items:center;border-bottom:1px solid var(--color-neutral-300);display:flex;gap:12px;justify-content:space-between;padding:10px 16px}.modal-title{font-family:var(--font-heading);font-size:19px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.modal.play{width:min(1000px,96vw,calc(100dvh*16/9 - 195.55556px))}.modal-media{aspect-ratio:16/9;background:#111}.modal-media iframe,.modal-media video{border:0;display:block;height:100%;width:100%}.modal-media iframe{touch-action:none}@media (max-height:560px),(max-width:700px){.overlay-play{padding:0}.modal.play{border:0;box-shadow:none;display:flex;flex-direction:column;height:100vh;height:100dvh;width:100%}.modal.play>.corner{display:none}.modal.play .modal-head{padding:max(8px,env(safe-area-inset-top)) 12px 8px}.modal.play .modal-media{aspect-ratio:auto;flex:1 1;min-height:0}}.contact-form{display:flex;flex-direction:column;gap:14px;padding:18px 16px 20px}.contact-form .err{color:#b3453c;font-family:var(--font-mono);font-size:12.5px}.contact-form .btn{align-self:flex-start}.contact-sent{padding:28px 16px 24px;text-align:center}.contact-sent h3{font-size:24px;letter-spacing:.04em;margin:6px 0 4px;text-transform:uppercase}.contact-sent p{color:var(--color-neutral-700);font-size:14px}.contact-sent-btns{display:flex;gap:10px;justify-content:center;margin-top:12px}
/*# sourceMappingURL=main.69ea2e79.css.map*/