@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:#132032;background:#fcfdff;font-family:Space Grotesk,Avenir Next,Segoe UI,sans-serif;line-height:1.5}a{color:inherit}.home-shell,.portfolio-shell{min-height:100vh;position:relative;overflow-x:hidden}.home-shell{color:#f5f5f7;background:#0a0a0a}.home-header,.home-main,.home-footer,.site-header,main,.site-footer{z-index:2;max-width:1120px;margin:0 auto;padding-inline:clamp(20px,4vw,42px);position:relative}.brand{letter-spacing:.08em;color:inherit;margin:0;font-family:IBM Plex Mono,monospace;font-size:.95rem;font-weight:600}.home-header{padding-top:28px}.home-main{padding-top:42px;padding-bottom:40px}.home-intro h1{letter-spacing:-.04em;color:#fff;margin:0;font-size:clamp(2.3rem,6vw,4.2rem)}.home-intro p{color:#c7c7d1;max-width:56ch;margin-top:12px;font-size:1.04rem;line-height:1.65}.home-boards{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:34px;display:grid}.home-board{-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:#ffffff0d;border:1px solid #4da9ff47;border-radius:20px;padding:clamp(20px,3vw,28px);box-shadow:0 18px 34px #0006}.home-board h2{color:#fff;margin:0;font-size:1.45rem}.home-board p{color:#c7c7d1;margin-top:12px;line-height:1.68}.board-btn{color:#fff;background:#2f8dff;border:1px solid #4da9ff80;border-radius:12px;justify-content:center;align-items:center;margin-top:14px;padding:11px 18px;font-family:IBM Plex Mono,monospace;font-size:.9rem;text-decoration:none;transition:transform .18s,box-shadow .18s,background-color .18s;display:inline-flex}.board-btn:hover{background:#1c74e0;transform:translateY(-2px);box-shadow:0 14px 26px #2f8dff5c}.home-footer{color:#86869a;padding-bottom:34px;font-family:IBM Plex Mono,monospace;font-size:.84rem}.particle-layer{z-index:0;pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.particle-network{width:100%;height:100%;animation:26s ease-in-out infinite networkDrift}.particle-reactor-shell{width:min(78vw,78vh);height:min(78vw,78vh);transform:translate3d(var(--reactive-x,0), var(--reactive-y,0), 0) scale(calc(1 + var(--reactive-energy,0) * .018));filter:saturate(calc(1 + var(--reactive-energy,0) * .22)) brightness(calc(1 + var(--reactive-energy,0) * .1));transition:transform .22s ease-out,filter .22s ease-out}.particle-link{stroke-width:.1px;stroke-linecap:round;animation:linkSpark var(--spark-duration,3.8s) ease-in-out var(--spark-delay,0s) infinite}.particle-beam{stroke-width:.15px;stroke-linecap:round;animation:beamBreath var(--beam-glow-duration,4.6s) ease-in-out var(--beam-glow-delay,0s) infinite}.particle-dot{transform-box:fill-box;transform-origin:50%;animation:particleBurn var(--dot-burn-duration,4.5s) ease-in-out var(--dot-burn-delay,0s) infinite, particleDrift var(--dot-drift-duration,9s) ease-in-out var(--dot-burn-delay,0s) infinite}.particle-star{animation:starTwinkle var(--star-duration,6.8s) ease-in-out var(--star-delay,0s) infinite}.particle-hub-pulse{transform-box:fill-box;transform-origin:50%;animation:5.5s ease-in-out infinite hubPulse}.particle-hub-core{animation-duration:3.2s}@keyframes hubPulse{0%{opacity:.82;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}to{opacity:.82;transform:scale(1)}}@keyframes particleBurn{0%{opacity:.72}45%{opacity:1}to{opacity:.72}}@keyframes particleDrift{0%{transform:translate(0,0)}50%{transform:translate3d(var(--dot-drift-x,.25px), var(--dot-drift-y,-.25px), 0)}to{transform:translate(0,0)}}@keyframes linkSpark{0%{opacity:.45}40%{opacity:.82}to{opacity:.45}}@keyframes beamBreath{0%{opacity:.38}50%{opacity:.78}to{opacity:.38}}@keyframes starTwinkle{0%{opacity:calc(var(--star-base-opacity,1) * .5)}45%{opacity:1}to{opacity:calc(var(--star-base-opacity,1) * .5)}}@keyframes networkDrift{0%{transform:translate(0,0)scale(1)}50%{transform:translate(1%,-1.4%)scale(1.015)}to{transform:translate(0,0)scale(1)}}.portfolio-shell{--bg:#0a0a0a;--surface:#ffffff0d;--surface-strong:#121212;--line:#ffffff24;--text:#f5f5f7;--muted:#b7b7c2;--accent:#ff2438;background:var(--bg);color:var(--text)}.site-header,main,.site-footer{max-width:1080px}.site-header{justify-content:space-between;align-items:center;gap:16px;padding-top:24px;display:flex}.header-links{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:14px;font-family:IBM Plex Mono,monospace;font-size:.84rem;display:flex}.header-links a,.header-links span{color:var(--muted);text-decoration:none}.header-links a:hover{color:var(--text)}.copy-chip{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:#ffffff0a;border-radius:999px;padding:5px 12px;font-family:IBM Plex Mono,monospace;font-size:.84rem;transition:color .16s,border-color .16s,background-color .16s}.copy-chip:hover{color:var(--text);border-color:#ff243866}.copy-chip:focus-visible{outline-offset:2px;outline:2px solid #ff243880}main{padding-top:18px;padding-bottom:48px}.hero-section{grid-template-columns:1.2fr 1fr;align-items:center;gap:clamp(20px,4vw,42px);padding-top:30px;padding-bottom:30px;display:grid}.hero-copy h1{letter-spacing:-.04em;color:var(--text);margin:0;font-size:clamp(2.1rem,6vw,3.7rem);line-height:1.04}.title{color:var(--accent);margin-top:10px;font-size:clamp(1.05rem,2.1vw,1.4rem);font-weight:600}.summary{max-width:54ch;color:var(--muted);margin-top:15px;line-height:1.65}.resume-btn{background:var(--accent);color:#fff;border:2px solid #0000;border-radius:12px;justify-content:center;align-items:center;min-width:185px;margin-top:22px;padding:11px 20px;font-family:IBM Plex Mono,monospace;text-decoration:none;transition:transform .17s,box-shadow .17s,background-color .17s;display:inline-flex}.resume-btn:hover{background:#d40e22;transform:translateY(-2px);box-shadow:0 11px 28px #ff243859}.hero-panel{border:1px solid var(--line);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:#ffffff0a;border-radius:22px;gap:14px;padding:clamp(20px,3vw,28px);display:grid;box-shadow:0 22px 44px #00000073}.hero-panel p{border:1px solid var(--line);color:var(--text);background:#ffffff08;border-radius:12px;margin:0;padding:12px;font-family:IBM Plex Mono,monospace}.skills-section,.projects-section{background:var(--surface);border:1px solid var(--line);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);border-radius:24px;margin-top:24px;padding:clamp(20px,4vw,34px)}.skills-section h2,.projects-section h2{color:var(--text);margin:0;font-size:1.46rem}.skill-board-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.skill-board{border:1px solid var(--line);color:var(--text);text-align:center;cursor:pointer;background:#ffffff0a;border-radius:12px;min-height:68px;padding:10px;font-weight:600;line-height:1.35;transition:transform .18s,border-color .18s,background-color .18s}.skill-board:hover{border-color:#ff243873;transform:translateY(-2px)}.skill-board.active{background:#ff243824;border-color:#ff2438bf}.skill-content-panel{border:1px solid var(--line);background:#ffffff08;border-radius:16px;margin-top:16px;padding:18px;animation:.68s contentFade}.skill-content-panel h3{color:var(--text);margin:0;font-size:1.16rem}.skill-content-panel p{color:var(--muted);margin:10px 0 0;line-height:1.62}@keyframes contentFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.projects-carousel{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin-top:18px;display:grid}.projects-viewport{border-radius:18px;overflow:hidden}.projects-track{transition:transform .46s;display:flex}.projects-nav{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#ffffff0d;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.05rem;transition:background-color .16s,border-color .16s,transform .16s;display:inline-flex}.projects-nav:hover{background:#ffffff24;border-color:#ff243880;transform:translateY(-1px)}.projects-nav:focus-visible{outline-offset:2px;outline:2px solid #ff243880}.projects-header-row{justify-content:space-between;align-items:center;gap:14px;display:flex}.projects-next-hint{text-align:right;max-width:min(58ch,48%);color:var(--muted);margin:0;font-family:IBM Plex Mono,monospace;font-size:.8rem;line-height:1.45;animation:2.8s ease-in-out infinite hintPulse}.projects-next-hint.paused{opacity:.9;animation:none}@keyframes hintPulse{0%{opacity:.62}50%{opacity:1}to{opacity:.62}}.project-card{border:1px solid var(--line);background:var(--surface-strong);border-radius:18px;flex:0 0 100%;padding:20px}.project-card h3{color:var(--text);margin:0;font-size:1.2rem}.project-summary{color:var(--muted);margin-top:10px;line-height:1.65}.project-gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.project-image-slot{border:1px solid var(--line);background:#ffffff0a;border-radius:12px;margin:0;overflow:hidden}.project-image-trigger{cursor:zoom-in;background:0 0;border:0;width:100%;margin:0;padding:0;display:block}.project-image-trigger:focus-visible{outline-offset:-3px;outline:3px solid #ff243866}.project-image-slot img{object-fit:cover;background:#ffffff0a;width:100%;height:160px;transition:transform .22s;display:block}.project-image-trigger:hover img{transform:scale(1.03)}.project-details{margin-top:12px}.project-details p{color:var(--muted);margin:10px 0 0;line-height:1.62}.project-tags{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.project-tags span{border:1px solid var(--line);color:var(--text);background:#ffffff0d;border-radius:999px;padding:6px 10px;font-family:IBM Plex Mono,monospace;font-size:.8rem}.image-preview-overlay{z-index:50;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#000000c7;place-items:center;padding:clamp(18px,4vw,40px);display:grid;position:fixed;inset:0}.image-preview-panel{background:#121212;border:1px solid #ffffff29;border-radius:16px;width:min(1080px,100%);max-height:90vh;overflow:hidden;box-shadow:0 32px 70px #0009}.image-preview-panel img{object-fit:contain;background:#121212;width:100%;max-height:90vh;display:block}.site-footer{color:var(--muted);padding-bottom:32px;font-family:IBM Plex Mono,monospace;font-size:.83rem}@media (width<=1020px){.hero-section{grid-template-columns:1fr}.skill-board-grid,.project-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.home-boards{grid-template-columns:1fr}.site-header{flex-direction:column;align-items:flex-start}.header-links{justify-content:flex-start}.projects-carousel{grid-template-columns:1fr;gap:10px}.projects-header-row{flex-direction:column;align-items:flex-start}.projects-next-hint{text-align:left;max-width:100%}.projects-nav{width:34px;height:34px}.projects-nav-left{justify-self:start}.projects-nav-right{justify-self:end}}@media (width<=640px){.skill-board-grid,.project-gallery{grid-template-columns:1fr}}
