:root{color-scheme:dark;--bg:#08111c;--panel:#0d1927;--panel-2:#101f30;--text:#edf4f7;--muted:#96a8b7;--line:rgba(200,224,239,.12);--cyan:#55e1d0;--blue:#68b6ff;--mono:"DM Mono",monospace;--sans:"Manrope",sans-serif;--page:1120px}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.7;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:12px;left:12px;z-index:20;padding:10px 16px;background:var(--cyan);color:#08111c;transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header{height:80px;padding:0 max(32px,calc((100vw - var(--page))/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:5;background:#08111ceb;backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:11px}.brand-mark{font-weight:800;font-size:1.25rem;letter-spacing:-.08em}.brand-mark span{color:var(--cyan)}.brand-name{font-size:.84rem;font-weight:700;letter-spacing:.01em}.site-nav{display:flex;align-items:center;gap:35px}.site-nav a{font-size:.78rem;color:#becbd4;transition:color .2s}.site-nav a:hover,.site-nav a:focus-visible{color:var(--cyan)}.site-nav .nav-contact{color:var(--text);border:1px solid #436273;border-radius:3px;padding:9px 14px}.nav-contact span{color:var(--cyan);margin-left:7px}.menu-toggle{display:none}
.hero{min-height:650px;max-width:none;position:relative;overflow:hidden;display:flex;align-items:center;padding:96px max(32px,calc((100vw - var(--page))/2)) 120px;border-bottom:1px solid var(--line);background:radial-gradient(ellipse at 75% 55%,#123d4938,transparent 42%),linear-gradient(90deg,#08111c 10%,#08111ceb 52%,#08111c90 100%)}.hero-content{position:relative;z-index:1;max-width:660px}.eyebrow,.section-label,.project-type,.hero-index,.visual-caption,.skill-group h3 span,.about-meta,.skills-footnote{font-family:var(--mono);font-size:.68rem;letter-spacing:.09em}.eyebrow{color:#b3c3cd;margin:0 0 27px}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cyan);margin-right:10px;box-shadow:0 0 14px #55e1d0}.hero h1{font-size:clamp(3.1rem,7vw,5.55rem);line-height:1.07;letter-spacing:-.07em;margin:0;font-weight:700}.hero h1 span,.section h2 span,.contact-inner h2 span{color:var(--cyan)}.hero-intro{max-width:510px;color:#a8b8c4;font-size:1rem;line-height:1.9;margin:25px 0 30px}.hero-actions{display:flex;align-items:center;gap:27px}.button{display:inline-flex;align-items:center;gap:18px;padding:12px 16px;font-size:.79rem;font-weight:700;border:1px solid transparent;transition:transform .2s,background .2s,color .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--cyan);color:#07151b}.button-primary:hover{background:#8cf3e7}.button-primary span{font-size:1rem}.text-link{font-size:.76rem;color:#d5dfe5}.text-link span{color:var(--cyan);padding-left:5px}.hero-index{position:absolute;right:max(32px,calc((100vw - var(--page))/2));top:50%;writing-mode:vertical-rl;display:flex;gap:15px;color:#b2c3ce;opacity:.75}.scroll-cue{position:absolute;bottom:30px;left:max(32px,calc((100vw - var(--page))/2));display:flex;align-items:center;gap:12px;color:#718494;font-family:var(--mono);font-size:.65rem}.scroll-cue span{height:26px;width:1px;background:var(--cyan)}
.section{max-width:var(--page);margin:auto;padding:112px 32px}.section-label{color:#8296a5;display:flex;gap:12px;align-items:center}.section-label span{color:var(--cyan)}.about-section{display:grid;grid-template-columns:230px 1fr;gap:55px}.about-copy{max-width:740px}.section h2{font-size:clamp(2.2rem,4.7vw,3.45rem);line-height:1.13;letter-spacing:-.06em;margin:0 0 24px}.about-copy p{color:var(--muted);font-size:.93rem;max-width:700px;margin:0 0 17px}.about-copy p.lead{font-size:1.14rem;line-height:1.85;color:#d8e1e6}.about-copy p a{color:var(--cyan);border-bottom:1px solid #55e1d044}.about-meta{border-top:1px solid var(--line);margin-top:30px;padding-top:17px;display:flex;gap:28px;color:#7890a0;letter-spacing:.02em;font-size:.64rem}
.projects-section{max-width:none;border-top:1px solid var(--line);background:linear-gradient(180deg,#0a1521 0%,#08111c 100%);padding-left:max(32px,calc((100vw - var(--page))/2));padding-right:max(32px,calc((100vw - var(--page))/2))}.section-heading{max-width:var(--page);margin:0 auto 38px;display:flex;justify-content:space-between;align-items:flex-end;gap:40px}.section-heading h2{margin:14px 0 0}.section-heading>p{max-width:320px;color:var(--muted);font-size:.82rem;margin:0 0 7px}.project-card{max-width:var(--page);margin:0 auto;background:var(--panel);border:1px solid var(--line);padding:12px}.project-visual{display:block;height:370px;position:relative;overflow:hidden;background:#142335}.project-visual::after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#07111bd1)}.project-visual img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 43%;opacity:.8;transition:transform .5s,opacity .5s}.project-visual:hover img{transform:scale(1.025);opacity:1}.project-open{position:absolute;z-index:1;right:18px;top:18px;width:42px;height:42px;display:grid;place-items:center;border:1px solid #ffffff61;background:#07111b88;font-size:1.2rem}.visual-caption{position:absolute;z-index:1;bottom:18px;left:20px;right:20px;color:#e5f0f4;display:flex;justify-content:space-between;font-size:.62rem}.project-info{padding:23px 13px 12px;display:flex;align-items:flex-end;justify-content:space-between;gap:30px}.project-type{color:var(--cyan);font-size:.61rem;margin:0 0 8px}.project-info h3{font-size:1.45rem;letter-spacing:-.04em;margin:0 0 7px}.project-info p:not(.project-type){font-size:.8rem;color:var(--muted);margin:0;max-width:620px}.project-link{white-space:nowrap;font-size:.75rem;color:#dce6eb;border-bottom:1px solid #55e1d080;padding-bottom:5px}.project-link span{color:var(--cyan);padding-left:6px}.tag-list{display:flex;gap:8px;padding:13px;flex-wrap:wrap}.tag-list span{font-family:var(--mono);font-size:.61rem;color:#9eb1be;background:#172638;padding:5px 9px;border:1px solid var(--line)}.projects-note{max-width:var(--page);margin:25px auto 0;color:#7c91a0;font-size:.77rem}.projects-note span{color:var(--cyan);margin-right:9px}
.skills-section{padding-top:110px;padding-bottom:120px}.skills-heading{margin-top:18px}.skills-heading h2{margin:0}.skill-groups{margin-top:35px;border-top:1px solid var(--line)}.skill-group{display:grid;grid-template-columns:230px 1fr;gap:45px;align-items:start;border-bottom:1px solid var(--line);padding:25px 0}.skill-group h3{font-size:.82rem;font-weight:600;margin:9px 0}.skill-group h3 span{color:#607585;margin-right:12px}.skill-chips{display:flex;flex-wrap:wrap;gap:10px}.skill-chip{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);background:#0d1927;padding:8px 12px;color:#c5d2da;font-size:.73rem}.skill-chip img{width:20px;height:20px;object-fit:contain}.skills-footnote{color:#708391;margin:20px 0 0;font-size:.63rem;letter-spacing:.02em}
.contact-section{position:relative;overflow:hidden;background:#10212c;border-top:1px solid #21404a;border-bottom:1px solid #21404a}.contact-grid{position:absolute;inset:0;background-image:linear-gradient(#b5e8eb09 1px,transparent 1px),linear-gradient(90deg,#b5e8eb09 1px,transparent 1px);background-size:55px 55px;mask-image:linear-gradient(90deg,transparent,#000 75%);pointer-events:none}.contact-inner{position:relative;max-width:var(--page);margin:auto;padding:94px 32px 85px}.contact-inner h2{font-size:clamp(2.8rem,6vw,4.8rem);line-height:1.1;letter-spacing:-.07em;margin:23px 0 16px}.contact-inner>p{max-width:500px;color:#a8bac4;font-size:.88rem;margin:0 0 27px}.button-light{background:var(--cyan);color:#07151b;font-size:.77rem}.button-light:hover{background:#8cf3e7}.social-links{display:flex;gap:24px;margin-top:43px}.social-links a{display:flex;align-items:center;gap:8px;color:#b4c4cd;font-size:.72rem}.social-links a span{color:var(--cyan)}.social-links img{width:17px;height:17px;object-fit:contain;filter:grayscale(1);opacity:.8}.site-footer{max-width:var(--page);margin:auto;padding:22px 32px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;align-items:center;color:#728493;font-size:.65rem}.site-footer p{margin:0}.back-top{text-align:center}.copyright{text-align:right;font-family:var(--mono);font-size:.61rem}.site-footer .brand-mark{font-size:1rem}
.reveal{opacity:0;transform:translateY(18px);transition:opacity .65s ease,transform .65s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
@media(max-width:760px){.site-header{height:70px;padding:0 23px}.brand-name{font-size:.78rem}.menu-toggle{display:flex;width:40px;height:40px;padding:10px 7px;background:none;border:1px solid var(--line);flex-direction:column;justify-content:center;gap:5px;color:var(--text)}.menu-toggle span:not(.sr-only){height:1px;width:100%;background:var(--text);transition:transform .2s}.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(3px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:nth-child(2){transform:translateY(-3px) rotate(-45deg)}.site-nav{display:none;position:absolute;top:69px;left:0;right:0;padding:18px 23px 24px;background:#08111c;border-bottom:1px solid var(--line);align-items:stretch;gap:0;flex-direction:column}.site-nav.is-open{display:flex}.site-nav a{padding:12px 0}.site-nav .nav-contact{margin-top:8px;padding:10px 12px}.hero{min-height:590px;padding:83px 23px 110px}.hero h1{font-size:clamp(2.85rem,11vw,4.4rem)}.hero-intro{font-size:.9rem}.hero-index{display:none}.scroll-cue{left:23px}.section{padding:82px 23px}.about-section{display:block}.about-section>.section-label{margin-bottom:29px}.section h2{font-size:2.55rem}.about-copy p.lead{font-size:1.03rem}.about-meta{flex-direction:column;gap:8px}.projects-section{padding-left:23px;padding-right:23px}.section-heading{display:block;margin-bottom:26px}.section-heading>p{margin:14px 0 0}.project-visual{height:270px}.project-info{display:block;padding:19px 10px 10px}.project-link{display:inline-block;margin-top:16px}.skill-groups{margin-top:25px}.skill-group{grid-template-columns:1fr;gap:12px;padding:19px 0}.skill-group h3{margin:0}.contact-inner{padding:75px 23px}.contact-inner h2{font-size:3.1rem}.social-links{gap:19px;flex-wrap:wrap}.site-footer{padding:21px 23px;grid-template-columns:1fr 1fr;gap:13px}.site-footer p{grid-column:1 / -1;grid-row:2}.back-top{text-align:right}.copyright{grid-column:1 / -1;text-align:left}}
@media(max-width:420px){.hero-actions{align-items:flex-start;flex-direction:column;gap:17px}.hero{min-height:620px}.project-visual{height:220px}.social-links{gap:14px}.social-links a{font-size:.67rem}.contact-inner h2{font-size:2.65rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}.reveal{opacity:1;transform:none}}
.project-grid{max-width:var(--page);margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.project-grid .project-card{width:100%;margin:0}.project-grid .project-visual{height:280px}.project-grid .project-visual::after{display:none}.project-grid .project-info{align-items:flex-start;padding:20px 13px 8px}.project-grid .project-info h3{font-size:1.2rem}.project-grid .project-info p:not(.project-type){min-height:72px}.project-grid .tag-list{padding-top:12px}.homelab-visual,.weather-visual{padding:19px 22px;color:#dceaf0;font-family:var(--mono);background:radial-gradient(ellipse at 50% 45%,#174451 0%,#102432 60%,#0b1722 100%);display:flex!important;flex-direction:column;justify-content:space-between}.lab-topline,.weather-topline{font-size:.54rem;letter-spacing:.09em;color:#9ab0bb;display:flex;justify-content:space-between}.lab-topline i{display:inline-block;width:6px;height:6px;background:var(--cyan);border-radius:50%;margin-right:6px;box-shadow:0 0 9px var(--cyan)}.lab-layout{display:flex;align-items:center;justify-content:center;gap:15px}.lab-server{width:37%;min-height:120px;background:linear-gradient(135deg,#172d3d,#0e1c29);border:1px solid #55e1d04a;display:flex;flex-direction:column;justify-content:center;padding:15px;box-shadow:0 14px 35px #02090d66}.lab-server b{font-size:.78rem;color:#f2fbfc;letter-spacing:.05em}.lab-server small,.lab-services small{font-size:.48rem;color:#80a2b2;margin-top:6px;letter-spacing:.09em}.server-lights{display:flex;gap:5px;margin-bottom:15px}.server-lights i{width:5px;height:5px;border-radius:50%;background:var(--cyan);box-shadow:0 0 7px var(--cyan)}.server-lights i:nth-child(2){background:#70baff;box-shadow:0 0 7px #70baff}.server-lights i:nth-child(3){background:#647785;box-shadow:none}.lab-connector{width:28px;height:1px;background:linear-gradient(90deg,#55e1d0,#70baff)}.lab-services{display:grid;gap:9px;width:38%}.lab-services div{border:1px solid #b1dae02a;background:#102432d9;padding:11px 12px;display:flex;flex-direction:column}.lab-services b{font-size:.66rem;color:#e5f2f5}.lab-footer{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.lab-footer span{font-size:.48rem;color:#8eb0bf;border:1px solid #a9d2db2e;padding:5px 8px}.weather-visual{background:radial-gradient(ellipse at 60% 60%,#254141 0%,#152632 56%,#0b1722 100%)}.weather-topline i{font-size:.48rem;font-style:normal;color:var(--cyan);margin-left:8px}.weather-display{display:grid;grid-template-columns:.8fr 1.2fr;gap:16px;align-items:center}.weather-reading{border-right:1px solid #b7d9dc2a;display:flex;flex-direction:column}.weather-reading small,.weather-chart>small{font-size:.48rem;letter-spacing:.1em;color:#94aeb9}.weather-reading strong{font-family:var(--sans);font-size:2.7rem;letter-spacing:-.08em;line-height:1.2;color:#f1f7f7}.weather-reading strong span{font-size:1.2rem;color:var(--cyan);vertical-align:top;margin-left:3px}.weather-reading em{font-style:normal;font-size:.53rem;color:var(--cyan);margin-top:5px}.weather-chart svg{display:block;width:100%;height:87px;overflow:visible}.chart-fill{fill:#55e1d019}.chart-line{fill:none;stroke:var(--cyan);stroke-width:2.4;vector-effect:non-scaling-stroke}.chart-labels{display:flex;justify-content:space-between;color:#7993a1;font-size:.43rem}.weather-footer{display:flex;align-items:center;justify-content:center;gap:9px;color:#9bb4c0;font-size:.45rem;letter-spacing:.05em;flex-wrap:wrap}.weather-footer span:nth-child(even){color:var(--cyan)}.experience-section{border-top:1px solid var(--line)}.experience-list{border-top:1px solid var(--line)}.experience-item{display:grid;grid-template-columns:230px 1fr;gap:45px;padding:27px 0;border-bottom:1px solid var(--line)}.experience-date{font-family:var(--mono);font-size:.72rem;color:var(--cyan);padding-top:2px}.experience-item h3{margin:2px 0 9px;font-size:1.1rem}.experience-item ul{margin:0;padding-left:17px;color:var(--muted);font-size:.8rem}.experience-item li+li{margin-top:4px}.profile-details{display:grid;grid-template-columns:1fr 1fr;gap:50px;border-top:1px solid var(--line);margin-top:44px;padding-top:30px}.profile-details h3{font-size:.78rem;margin:0 0 12px;color:#dce6eb}.profile-details p{color:var(--muted);font-size:.77rem;line-height:1.9;margin:0 0 16px}.profile-details p strong{color:#dce6eb;font-weight:600}.profile-details p span{color:#8499a7}.profile-details .qualities-title{margin-top:22px}.quality-list{display:flex;flex-wrap:wrap;gap:7px}.quality-list span{border:1px solid var(--line);padding:5px 9px;color:#a9bbc5;font-size:.67rem}
@media(max-width:760px){.project-grid{grid-template-columns:1fr;gap:16px}.project-grid .project-visual{height:260px}.project-grid .project-info p:not(.project-type){min-height:0}.experience-item{grid-template-columns:1fr;gap:9px;padding:22px 0}.profile-details{gap:25px}.weather-reading strong{font-size:2.3rem}}
@media(max-width:420px){.project-grid .project-visual{height:225px}.homelab-visual,.weather-visual{padding:15px}.lab-layout{gap:9px}.lab-server{padding:10px;min-height:100px}.lab-services div{padding:8px}.lab-server b{font-size:.65rem}.lab-connector{width:15px}.weather-display{gap:10px}.weather-reading strong{font-size:1.8rem}.weather-footer{font-size:.39rem;gap:5px}.profile-details{grid-template-columns:1fr}}
.skill-chip .skill-icon{width:20px;height:20px;flex:0 0 20px;fill:none;stroke:var(--cyan);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.site-footer{grid-template-columns:1fr auto 1fr}.site-footer .back-top{text-align:center}@media(max-width:760px){.site-footer{grid-template-columns:1fr 1fr}.site-footer .back-top{text-align:right}}
.converter-card{grid-column:1/-1;display:grid;grid-template-columns:1.08fr 1fr;gap:0 22px;align-items:center}.converter-card .project-visual{grid-row:1 / span 2;height:290px;background:#171a1c}.converter-card .project-visual img{object-fit:contain;object-position:center;opacity:1}.converter-card .project-info{padding:16px 12px 5px;align-items:flex-start}.converter-card .project-info p:not(.project-type){min-height:0}.converter-card .project-info h3{font-size:1.35rem}.converter-card .project-link{display:inline-block;margin-top:15px}.converter-card .tag-list{align-self:start;padding:8px 12px 16px}
@media(max-width:760px){.converter-card{grid-column:auto;grid-template-columns:1fr;gap:0}.converter-card .project-visual{grid-row:auto;height:260px}.converter-card .project-info{padding:20px 13px 8px}}
.skill-chip{min-height:42px;gap:10px;padding:6px 11px;border:1px solid rgba(172,207,219,.14);border-radius:8px;background:linear-gradient(145deg,#101f30,#0c1724);box-shadow:0 3px 10px rgba(0,0,0,.12);transition:background .2s,border-color .2s,transform .2s}.skill-chip:hover{transform:translateY(-2px);border-color:rgba(85,225,208,.4);background:#112330}.skill-chip img,.skill-chip .skill-icon{box-sizing:border-box;width:26px;height:26px;flex:0 0 26px;padding:4px;border:1px solid rgba(85,225,208,.22);border-radius:6px;background:rgba(85,225,208,.07)}.skill-chip img{object-fit:contain;filter:grayscale(1) brightness(0) saturate(100%) invert(80%) sepia(27%) saturate(732%) hue-rotate(118deg) brightness(96%) contrast(92%)}.skill-chip .skill-icon{fill:none;stroke:var(--cyan);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

.hero{background:radial-gradient(ellipse at 80% 38%,rgba(85,225,208,.09),transparent 31%),radial-gradient(ellipse at 88% 78%,rgba(104,182,255,.08),transparent 28%),linear-gradient(125deg,#08111c 0%,#0a1722 55%,#0d1b29 100%)}
