/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}@layer theme{:root,:host{--spacing:.25rem;--default-font-family:var(--font-display);--default-mono-font-family:var(--font-terminal)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.start{inset-inline-start:var(--spacing)}.table{display:table}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}}@font-face{font-family:"Source Sans 3";src:url(/fonts/source-sans-3-latin-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Source Sans 3";src:url(/fonts/source-sans-3-latin-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:"Source Sans 3";src:url(/fonts/source-sans-3-latin-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"Source Sans 3";src:url(/fonts/source-sans-3-latin-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--bg:#030817;--panel:#07132b;--panel-soft:#0c1a37db;--text:#f7fbff;--muted:#a7b3cd;--cyan:#22f7ff;--pink:#ff3da7;--violet:#8d7dff;--line:#4a8dc533;--font-display:"Source Sans 3";--font-terminal:"IBM Plex Mono"}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(circle at 72% 0%, #ff3da71f, transparent 32rem), radial-gradient(circle at 10% 30%, #22f7ff17, transparent 28rem), var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-display), Arial, Helvetica, sans-serif;margin:0}body:before{content:none}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}::selection{background:#ff3da759}.site-header{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(#030817e0,#0308173d);justify-content:space-between;align-items:center;gap:1.5rem;padding:1.25rem clamp(1rem,5vw,4.8rem);display:flex;position:fixed;top:0;left:0;right:0}.brand,.site-header nav,.header-actions{animation:.7s both float-down}.brand{font-family:var(--font-display), Arial, Helvetica, sans-serif;letter-spacing:0;align-items:center;gap:.9rem;font-weight:500;display:inline-flex}.brand-icon,.footer-icon{color:var(--pink);filter:drop-shadow(0 0 8px #ff3da7ad);stroke-width:1.45rem;flex:none}.brand-icon{width:2.55rem;height:2.55rem}.footer-icon{width:3.05rem;height:3.05rem}.site-header nav{color:#dfe7ff;font-family:var(--font-terminal), monospace;align-items:center;gap:clamp(1rem,3vw,2.4rem);font-size:.88rem;font-weight:500;display:flex}.site-header nav a,.section-title-row a,.project-card a{transition:color .18s,text-shadow .18s}.site-header nav a:hover,.section-title-row a:hover,.project-card a:hover{color:var(--cyan);text-shadow:0 0 12px #22f7ffa6}.header-actions{align-items:center;gap:.85rem;display:flex}.hire-button,.button,form button{border:1px solid var(--pink);min-height:2.9rem;color:var(--pink);font-family:var(--font-terminal), monospace;letter-spacing:0;background:#ff3da70e;border-radius:.38rem;font-weight:500;transition:transform .18s,box-shadow .18s,border-color .18s;box-shadow:inset 0 0 14px #ff3da71f,0 0 16px #ff3da747}.hire-button{place-items:center;min-width:8.7rem;padding:0 1.5rem;display:inline-grid}.hire-button:hover,.button:hover,form button:hover{transform:translateY(-2px);box-shadow:inset 0 0 20px #ff3da72e,0 0 24px #ff3da76b}.language-switch{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.language-control{align-items:center;gap:.45rem;display:inline-flex}.language-switch input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;overflow:hidden}.language-track{background:linear-gradient(135deg,#07132beb,#13264ed1);border:1px solid #22f7ff80;border-radius:999px;justify-content:space-between;align-items:center;width:2.45rem;height:1.35rem;padding:0;transition:border-color .18s,box-shadow .18s;display:inline-flex;position:relative;box-shadow:inset 0 0 12px #22f7ff14,0 0 12px #22f7ff1f}.language-switch input:checked+.language-track{border-color:#ff3da79e;box-shadow:inset 0 0 12px #ff3da71a,0 0 14px #ff3da729}.language-switch:focus-within .language-track{outline-offset:3px;outline:2px solid #22f7ff6b}.language-flag{width:1.8rem;height:1.2rem;box-shadow:none;border:0;border-radius:0;display:block;overflow:hidden}.language-knob{background:#22f7ff21;border:1px solid #22f7ff80;border-radius:999px;width:.95rem;height:.95rem;transition:transform .2s,border-color .2s,background .2s,box-shadow .2s;position:absolute;top:.18rem;left:.18rem;box-shadow:0 0 14px #22f7ff47}.language-switch input:checked+.language-track .language-knob{background:#ff3da721;border-color:#ff3da79e;transform:translate(1.1rem);box-shadow:0 0 14px #ff3da74d}.hero{background:linear-gradient(90deg,#030817e0,#03081761 54%,#0308171f),url(/hero-space-bg.png) 50%/cover no-repeat;align-items:center;min-height:100svh;padding:9rem clamp(1.15rem,6vw,5rem) 5rem;display:grid;position:relative;overflow:hidden}#particles-js,.hero-shade{position:absolute;inset:0}#particles-js{z-index:1;opacity:.62}#particles-js canvas{display:block}.hero-shade{z-index:2;background:linear-gradient(90deg,#030817b8 0%,#03081770 40%,#03081714 82%),linear-gradient(#03081733,#030817b8)}.hero-content{z-index:3;width:min(44rem,100%);position:relative}.eyebrow,.section-kicker,.find-me>span{color:var(--cyan);font-family:var(--font-terminal), monospace;letter-spacing:0;text-transform:uppercase;font-size:.82rem;font-weight:500}h1,h2,h3,p{margin:0}h1{font-size:clamp(3.5rem,9vw,7rem);font-family:var(--font-display), Arial, Helvetica, sans-serif;letter-spacing:0;margin-top:1.1rem;font-weight:600;line-height:1}h1 span{color:var(--pink);text-shadow:0 0 26px #ff3da742;display:block}.role{color:var(--violet);font-family:var(--font-terminal), monospace;margin-top:1.35rem;font-size:clamp(1.6rem,4vw,2.6rem);font-weight:500}.hero-copy{color:#c5cee2;width:min(37rem,100%);margin-top:1.6rem;font-size:1.08rem;line-height:1.75}.hero-actions,.find-me div,.project-card footer,.social-boxes,.field-pair{align-items:center;gap:1.1rem;display:flex}.hero-actions{flex-wrap:wrap;margin-top:2.35rem}.button{justify-content:center;align-items:center;gap:.72rem;min-width:13rem;padding:0 1.25rem;font-size:.86rem;display:inline-flex}.button-cyan{border-color:var(--cyan);color:var(--cyan);background:#22f7ff0b;box-shadow:inset 0 0 14px #22f7ff1a,0 0 14px #22f7ff2e}.find-me{margin-top:2.2rem}.find-me div{margin-top:.8rem}.find-me a,.social-boxes a{width:2.35rem;height:2.35rem;color:var(--pink);border:1px solid #0000;place-items:center;transition:border-color .18s,color .18s,transform .18s;display:inline-grid}.find-me a:hover,.social-boxes a:hover{border-color:var(--pink);color:var(--cyan);transform:translateY(-2px)}.section{border-top:1px solid var(--line);background:linear-gradient(105deg,#08122af5,#040d1feb)}.section-inner{width:min(72rem,100% - 2rem);margin:0 auto;padding:clamp(3.2rem,7vw,5rem) 0}.about-section{border-radius:0 .8rem 0 0}.split{grid-template-columns:minmax(0,1fr) minmax(20rem,36rem);align-items:center;gap:clamp(2.2rem,6vw,5rem);display:grid}.section-kicker{margin-bottom:.8rem;margin-left:2rem;display:inline-block;position:relative}.section-kicker:before{border-top:1px solid var(--cyan);border-left:1px solid var(--pink);content:"";width:2.35rem;height:1.8rem;position:absolute;top:-.8rem;left:-2rem}h2{font-size:clamp(2rem,4vw,3rem);font-family:var(--font-display), Arial, Helvetica, sans-serif;letter-spacing:0;margin-bottom:1.1rem;font-weight:500}.section p{color:var(--muted);line-height:1.8}.info-grid{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.info-grid article,.skill-card,.project-card{background:linear-gradient(135deg,#0f1c3dd1,#07132bb8);border:1px solid #ff3da759;border-radius:.45rem;box-shadow:inset 0 0 28px #6f4dff0f}.info-grid article{text-align:center;min-height:10rem;padding:1.45rem}.info-grid article:nth-child(2),.project-card:nth-child(2),.skill-card:nth-child(2){border-color:#8d7dff6b}.info-grid article:nth-child(3),.project-card:nth-child(3){border-color:#22f7ff59}.card-icon{color:#83a7ff;stroke-width:1.8px;width:2.25rem;height:2.25rem}.info-grid h3,.skill-card h3{color:#7deeff;font-family:var(--font-terminal), monospace;letter-spacing:0;text-transform:uppercase;margin:.9rem 0;font-size:.78rem;font-weight:500}.skills-grid,.projects-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.35rem;margin-top:1.6rem;display:grid}.skill-card{padding:clamp(1.1rem,2.4vw,1.6rem)}.skill-card header{align-items:center;gap:.85rem;margin-bottom:1.25rem;display:flex}.skill-icon{color:var(--cyan);stroke-width:1.8px;width:1.7rem;height:1.7rem}.skill-card header h3{color:#eef4ff;letter-spacing:0;text-transform:none;margin:0}.skill-row+.skill-row{margin-top:1rem}.skill-row div{color:#eaf2ff;justify-content:space-between;align-items:center;font-size:.92rem;display:flex}.skill-row strong{color:#dfe8ff;font-size:.78rem}.skill-track{background:#4673b06b;height:.18rem;margin-top:.55rem;display:block;position:relative;overflow:hidden}.skill-fill{width:var(--value);background:linear-gradient(90deg, var(--pink), #c35cff, var(--cyan));transform-origin:0;animation:1.2s cubic-bezier(.21,.82,.32,1) both skill-grow;position:absolute;inset:0 auto 0 0;box-shadow:0 0 12px #ff3da7b8}.section-title-row{justify-content:space-between;align-items:end;gap:1rem;display:flex}.section-title-row a{color:var(--cyan);font-family:var(--font-terminal), monospace;align-items:center;gap:.45rem;font-size:.95rem;font-weight:500;display:inline-flex}.projects-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.project-card{flex-direction:column;min-height:25rem;padding:1rem;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex}.project-card:hover{border-color:var(--pink);transform:translateY(-5px);box-shadow:0 1rem 2.5rem #00000047,0 0 24px #ff3da729}.project-preview{color:#f4f8ff;border-radius:.32rem;place-items:center;min-height:9rem;font-weight:500;display:grid;position:relative;overflow:hidden}.project-preview:before,.project-preview:after{content:"";position:absolute}.project-preview:before{background-color:#0000;background-image:linear-gradient(90deg,#ffffff0a 1px,#0000 1px),linear-gradient(#ffffff0d 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:24px 24px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;inset:0}.project-preview:after{border:1px solid #ffffff29;inset:1.4rem}.project-preview span{z-index:1;position:relative}.book{background:linear-gradient(135deg,#4b1a78,#a63ab8)}.task{background:linear-gradient(135deg,#162441,#176e83)}.weather{background:linear-gradient(135deg,#111d39,#5466aa)}.blog{background:linear-gradient(135deg,#141827,#42465d)}.project-card h3{color:var(--pink);font-family:var(--font-terminal), monospace;margin-top:1rem;font-size:1rem;font-weight:500}.stack{flex-wrap:wrap;gap:.45rem;margin:.85rem 0 1rem;display:flex}.stack span{color:#9ba8c7;font-family:var(--font-terminal), monospace;background:#536fa729;border-radius:.22rem;padding:.28rem .55rem;font-size:.68rem}.project-card p{flex:1;font-size:.92rem}.project-card footer{color:var(--cyan);font-family:var(--font-terminal), monospace;justify-content:space-between;margin-top:1.35rem;font-size:.8rem;font-weight:500}.project-card footer a{align-items:center;gap:.35rem;display:inline-flex}.project-card footer a:first-child{color:var(--pink)}.contact-grid{grid-template-columns:minmax(0,1.1fr) minmax(18rem,.9fr);gap:clamp(2rem,6vw,4rem);display:grid}form{gap:1rem;display:grid}.field-pair{align-items:stretch}.field-pair input{min-width:0}input,textarea{color:#eef5ff;background:#152549c7;border:1px solid #5b80be42;border-radius:.2rem;outline:none;width:100%;transition:border-color .18s,box-shadow .18s}input{min-height:2.9rem;padding:0 1rem}textarea{resize:vertical;min-height:8.5rem;padding:.9rem 1rem}input:focus,textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #22f7ff1a}form button{cursor:pointer;justify-content:center;align-items:center;gap:.7rem;width:fit-content;padding:0 1.45rem;display:inline-flex}form button:disabled{cursor:wait;opacity:.68}.honeypot{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;left:-9999px}.form-feedback{font-family:var(--font-terminal), monospace;margin:-.2rem 0 0;font-size:.8rem;font-weight:500}.form-feedback.success{color:var(--cyan)}.form-feedback.error{color:var(--pink)}.contact-copy{align-self:center}.contact-copy h3{color:var(--pink);font-family:var(--font-terminal), monospace;margin-bottom:.8rem;font-size:1.05rem;font-weight:500}.contact-copy ul{color:var(--muted);gap:1rem;margin:1.7rem 0;padding:0;list-style:none;display:grid}.contact-copy li{align-items:center;gap:1rem;display:flex}.contact-copy li svg{width:1.35rem;height:1.35rem;color:var(--pink);stroke-width:1.9px;flex:none}.social-boxes a{border-color:#ff3da76b;border-radius:.25rem}.site-footer{background:#040b1b;border-top:1px solid #ff3da733;padding:1.5rem clamp(1rem,5vw,4.8rem) 2rem}.footer-lines{grid-template-columns:1fr auto 1fr;align-items:center;gap:2rem;margin-bottom:1.6rem;display:grid}.footer-lines>span{background:linear-gradient(90deg,#0000,#ff3da7bf,#22f7ff73);height:1px}.footer-lines>span:last-child{background:linear-gradient(90deg,#22f7ff73,#ff3da7bf,#0000)}.footer-copy{color:#8390ab;justify-content:center;gap:clamp(1.4rem,14vw,18rem);font-size:.82rem;display:flex}.reveal{animation:.9s both reveal-up}@keyframes reveal-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes float-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes skill-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media (width<=980px){.site-header{padding:1rem}.site-header nav{display:none}.header-actions{gap:.65rem}.split,.contact-grid,.info-grid,.skills-grid{grid-template-columns:1fr}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.brand span:last-child{text-overflow:ellipsis;white-space:nowrap;max-width:9rem;overflow:hidden}.hire-button{min-width:auto;padding:0 1rem}.language-control{gap:.35rem}.hero{min-height:92svh;padding-top:7.5rem}.hero-shade{background:linear-gradient(#030817d1,#03081785),radial-gradient(circle at 60% 26%,#22f7ff24,#0000 22rem)}.eyebrow,.section-kicker,.find-me>span{letter-spacing:0;font-size:.72rem}h1{font-size:clamp(3.1rem,16vw,4.6rem)}.hero-copy{font-size:1rem}.button{width:100%}.section-inner{width:min(100% - 1.4rem,72rem)}.projects-grid{grid-template-columns:1fr}.section-title-row,.footer-copy,.field-pair{flex-direction:column;align-items:stretch}.footer-copy{text-align:center;gap:.6rem}.footer-lines{gap:1rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
