:root{--bg-base:#0a0f1a;--bg-surface:#0d1424;--bg-card:#101929;--border:#1a2d42;--border-light:#1e3a52;--accent:#38bdf8;--accent-dim:#0ea5e9;--accent-glow:#38bdf81a;--text-primary:#f0f6fc;--text-secondary:#7d9ab5;--text-muted:#3d5a73;--white:#fff;--font-display:"Fira Code", monospace;--font-body:"Open Sans", sans-serif;--font-mono:"Fira Code", monospace;--radius:6px;--radius-lg:14px;--radius-xl:20px;--transition:.3s ease;--shadow:0 4px 24px #00000080;--shadow-accent:0 4px 32px #38bdf826;--success:#34d399;--success-glow:#34d39926;--error:#f87171;--code-string:#86efac;--code-number:#fbbf24;--scroll-offset:85px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{background:var(--bg-base);color:var(--text-primary);font-family:var(--font-body);line-height:1.7;overflow-x:hidden}::selection{background:var(--accent);color:var(--bg-base)}a{color:var(--accent);transition:color var(--transition);text-decoration:none}@media (hover:hover){a:hover{color:var(--accent-dim)}}img{max-width:100%;display:block}.container{width:min(1280px,92vw);margin:0 auto;padding:0 20px}.section-label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);align-items:center;gap:12px;margin-bottom:16px;font-size:.75rem;display:flex}.section-label:before{content:"";background:var(--accent);width:32px;height:1px;display:block}.section-heading{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-primary);margin-bottom:48px;font-size:clamp(2rem,5vw,3rem);font-weight:600;line-height:1.1}section{padding:100px 0}section[id]{scroll-margin-top:var(--scroll-offset)}body.js-loaded .reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(30px)}body.js-loaded .reveal.visible{opacity:1;transform:translateY(0)}.hover-invert:focus-visible{background:var(--text-primary)}.hover-invert:has(:focus-visible){background:var(--text-primary)}.hover-invert:focus-visible *{color:var(--bg-base)}.hover-invert:has(:focus-visible) *{color:var(--bg-base)}@media (hover:hover){.hover-invert:hover{background:var(--text-primary)}.hover-invert:hover *{color:var(--bg-base)}}.btn-primary{background:var(--accent);color:var(--bg-base);font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;border-radius:var(--radius);transition:all var(--transition);border:1px solid var(--accent);cursor:pointer;white-space:nowrap;padding:13px 28px;font-size:.78rem;font-weight:600;display:inline-block}@media (hover:hover){.btn-primary:hover{background:var(--accent-dim);border-color:var(--accent-dim);color:var(--bg-base);box-shadow:var(--shadow-accent);transform:translateY(-2px)}}.btn-outline{color:var(--text-primary);font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;border-radius:var(--radius);border:1px solid var(--border-light);transition:all var(--transition);cursor:pointer;white-space:nowrap;background:0 0;padding:13px 28px;font-size:.78rem;font-weight:600;display:inline-block}@media (hover:hover){.btn-outline:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}}@media (width<=768px){section{padding:72px 0}.section-heading{margin-bottom:32px}}@media (width<=480px){.btn-primary,.btn-outline{text-align:center;width:100%}}.intro-overlay{z-index:9999;background:var(--bg-base);-webkit-backdrop-filter:blur(28px)saturate(120%);opacity:1;background:radial-gradient(70% 60% at 50% 38%,#38bdf80f 0%,#0000 65%),#0a0f1ae0;flex-direction:column;justify-content:center;align-items:center;transition:opacity .5s;display:flex;position:fixed;inset:0;overflow:hidden}.intro-overlay.is-exiting{opacity:0;pointer-events:none}.intro-overlay__glow{background:radial-gradient(ellipse 55% 45% at 50% 42%, var(--accent-glow) 0%, transparent 70%);pointer-events:none;position:absolute;inset:0}.intro-overlay__noise{opacity:.05;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");position:absolute;inset:-10%}.intro-overlay__content{z-index:1;flex-direction:column;align-items:center;gap:32px;padding:24px;display:flex;position:relative}.intro-monogram{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);position:relative;transform:scale(.8)}.intro-monogram.is-in{opacity:1;transform:scale(1)}.intro-monogram.is-exiting{transition:opacity .5s,transform .5s;transform:scale(.92)}.intro-monogram__text{font-family:var(--font-display);color:var(--text-primary);letter-spacing:.02em;text-shadow:0 0 40px var(--accent-glow), 0 0 80px var(--accent-glow);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(96px,16vw,160px);font-weight:700;line-height:1;display:block}.intro-name{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-secondary);align-items:baseline;min-height:1.4em;font-size:clamp(.95rem,2.2vw,1.15rem);display:flex}.intro-name__text{color:var(--text-primary)}.intro-cursor{background:var(--accent);width:2px;height:1em;margin-left:3px;animation:1s step-end infinite intro-blink;display:inline-block;box-shadow:0 0 8px #38bdf899}@keyframes intro-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.intro-skip{opacity:.55;padding:10px 20px;font-size:.68rem;position:absolute;bottom:24px;right:24px}.intro-skip:focus-visible{opacity:1}@media (hover:hover){.intro-skip:hover{opacity:1}}@media (width<=480px){.intro-overlay__content{gap:24px}.intro-skip{right:16px;bottom:max(16px, calc(env(safe-area-inset-bottom) + 16px));align-items:center;min-height:44px;padding:14px 20px;display:flex}}@media (prefers-reduced-motion:reduce){.intro-overlay,.intro-monogram,.intro-cursor{transition:none;animation:none}}#navbar{z-index:1000;position:fixed;top:0;left:0;right:0}.nav-shell{-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);background:#0a0f1ad9;padding:20px 0;transition:background .32s cubic-bezier(.22,1,.36,1),border-color .32s cubic-bezier(.22,1,.36,1),padding .32s cubic-bezier(.22,1,.36,1)}#navbar.scrolled .nav-shell{-webkit-backdrop-filter:none;background:0 0;border-bottom-color:#0000;padding:14px 0}.nav-inner{box-shadow:none;will-change:transform, border-radius, box-shadow, background, border-color;background:0 0;border:1px solid #0000;border-radius:0;justify-content:space-between;align-items:center;padding:0;transition:transform .32s cubic-bezier(.22,1,.36,1),border-radius .32s cubic-bezier(.22,1,.36,1),box-shadow .32s cubic-bezier(.22,1,.36,1),background .32s cubic-bezier(.22,1,.36,1),border-color .32s cubic-bezier(.22,1,.36,1),padding .32s cubic-bezier(.22,1,.36,1),max-width .32s cubic-bezier(.22,1,.36,1);display:flex;transform:translateY(0)scale(1)}#navbar.scrolled .nav-inner{-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-light);max-width:min(1120px,92vw);box-shadow:var(--shadow);background:#0d14248c;border-radius:999px;margin:0 auto;padding:12px 24px;transform:translateY(10px)scale(.985)}@media (prefers-reduced-motion:reduce){.nav-shell,.nav-inner{transition:none}#navbar.scrolled .nav-inner{transform:none}}.nav-logo{font-family:var(--font-display);color:var(--text-primary);letter-spacing:.02em;font-size:1.5rem;font-weight:400}.nav-logo strong{font-weight:700}.nav-links{align-items:center;gap:36px;list-style:none;display:flex}.nav-links a{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);transition:color var(--transition);padding-bottom:6px;font-size:.78rem;display:inline-block;position:relative}.nav-links a:after{content:"";background:var(--accent);transform-origin:50%;border-radius:999px;height:2px;transition:transform .2s;position:absolute;bottom:0;left:12px;right:12px;transform:scaleX(0)}@media (hover:hover){.nav-links a:hover{color:var(--accent)}.nav-links a:hover:after{transform:scaleX(1)}}.nav-links a.active{color:var(--accent)}.nav-links a.active:after{transform:scaleX(1)}.nav-links a.nav-cta{font-family:var(--font-body);border:1px solid var(--accent);color:var(--accent);border-radius:999px;padding:8px 20px;font-weight:600;transition:background .2s}.nav-toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:4px;display:none}.nav-toggle span{background:var(--text-primary);width:24px;height:2px;transition:transform var(--transition), opacity var(--transition);display:block}.nav-toggle.open span:first-child{transform:translateY(7px)rotate(45deg)}.nav-toggle.open span:nth-child(2){opacity:0}.nav-toggle.open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}@media (width<=768px){.nav-shell,#navbar.scrolled .nav-shell{-webkit-backdrop-filter:none}.nav-inner,#navbar.scrolled .nav-inner{-webkit-backdrop-filter:none;will-change:auto;transform:none}#navbar.scrolled .nav-inner{background:#0d1424eb}.nav-links{z-index:999;background:#070b0ffa;flex-direction:column;justify-content:center;align-items:center;gap:32px;display:none;position:fixed;inset:0}.nav-links.open{display:flex}.nav-links a{padding:10px 0;font-size:1rem}.nav-toggle{z-index:1001;justify-content:center;align-items:center;width:44px;height:44px;padding:0;display:flex}.nav-logo{font-size:1.15rem}}@media (width<=400px){.nav-logo{font-size:1rem}}#hero{padding:120px 0 64px;position:relative;overflow:hidden}.hero-bg{background:radial-gradient(70% 60% at 70% 10%,#38bdf812 0%,#0000 60%),radial-gradient(50% 70% at 5% 90%,#0ea5e90f 0%,#0000 60%);position:absolute;inset:0}.hero-grid{background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);opacity:.18;background-size:52px 52px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 80% at 30%,#000 20%,#0000 100%);mask-image:radial-gradient(80% 80% at 30%,#000 20%,#0000 100%)}#hero:after{content:"";pointer-events:none;z-index:1;border-bottom:1px solid #38bdf81a;border-left:1px solid #38bdf81a;border-radius:0 0 0 100%;width:420px;height:420px;position:absolute;top:0;right:0}#hero:before{content:"";background:var(--accent);opacity:.6;pointer-events:none;z-index:1;border-radius:50%;width:8px;height:8px;position:absolute;top:36px;right:36px;box-shadow:0 0 12px #38bdf880}.hero-inner{z-index:2;position:relative}.hero-columns{grid-template-columns:1.05fr .95fr;align-items:start;gap:56px;display:grid}.hero-content{min-width:0}.hero-kicker{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:var(--bg-card);border:1px solid var(--border);opacity:0;border-radius:999px;align-items:center;margin-bottom:24px;padding:8px 16px;font-size:.72rem;animation:.8s .1s forwards fadeUp;display:inline-flex}.hero-headline{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-primary);opacity:0;margin-bottom:22px;font-size:clamp(40px,4.2vw,64px);font-weight:600;line-height:1.08;animation:.8s .25s forwards fadeUp}.hero-subtitle{font-family:var(--font-body);color:var(--text-secondary);opacity:0;max-width:540px;margin-bottom:32px;font-size:clamp(1rem,1.6vw,1.1rem);font-weight:400;animation:.8s .4s forwards fadeUp}.hero-subtitle strong{color:var(--text-primary);font-weight:600}.hero-cta{opacity:0;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:32px;animation:.8s .55s forwards fadeUp;display:flex}.hero-cta .btn-primary,.hero-cta .btn-outline{border-radius:999px}.hero-resume-link{font-family:var(--font-body);color:var(--accent);transition:gap var(--transition), color var(--transition);align-items:center;gap:4px;font-size:.95rem;font-weight:600;display:inline-flex}@media (hover:hover){.hero-resume-link:hover{color:var(--accent-dim);gap:8px}}.hero-badges{opacity:0;flex-wrap:wrap;align-items:center;gap:7px;animation:.8s .7s forwards fadeUp;display:flex}.hero-badge{font-family:var(--font-body);letter-spacing:.03em;color:var(--accent);background:var(--accent-glow);transition:all var(--transition);white-space:nowrap;border:1px solid #38bdf833;border-radius:999px;padding:9px 13px;font-size:.66rem;font-weight:600}@media (hover:hover){.hero-badge:hover{border-color:var(--accent);background:#38bdf829}}.hero-panel{opacity:0;min-width:0;animation:.8s .5s forwards fadeUp}.code-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);position:relative;overflow:hidden}.code-panel:after{content:"";background:linear-gradient(to bottom, transparent, var(--bg-card));pointer-events:none;height:48px;position:absolute;bottom:0;left:0;right:0}.code-panel-header{background:var(--bg-surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 16px;display:flex}.code-panel-dots{gap:6px;display:flex}.code-panel-dots span{background:var(--border-light);border-radius:50%;width:10px;height:10px}.code-panel-lang{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-secondary);font-size:.72rem}.code-panel-hint{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-muted);min-height:1em;margin-left:auto;font-size:.68rem}.code-panel-body{font-family:var(--font-mono);color:var(--text-primary);white-space:pre;min-height:320px;margin:0;padding:22px 24px;font-size:.82rem;line-height:1.7;overflow:auto}.code-token--string{color:var(--code-string)}.code-token--number{color:var(--code-number)}.code-token--keyword,.code-token--key{color:var(--accent)}.code-token--comment{color:var(--text-muted)}.code-cursor{background:var(--accent);vertical-align:text-bottom;width:8px;height:1.1em;margin-left:1px;animation:1s step-end infinite code-blink;display:inline-block}.hero-bottom{border-top:1px solid var(--border);opacity:0;flex-direction:column;gap:20px;margin-top:48px;padding-top:32px;animation:.8s .85s forwards fadeUp;display:flex}.hero-row{justify-content:space-between;align-items:center;gap:24px;display:flex}.hero-row-text{flex:260px;min-width:0}.hero-row-text h3{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-primary);margin-bottom:3px;font-size:1rem;font-weight:600}.hero-row-text p{font-family:var(--font-body);color:var(--text-secondary);font-size:.85rem;line-height:1.4}.hero-row-pills{flex-wrap:wrap;flex:auto;place-content:flex-start flex-end;gap:11px;display:flex}@media (width<=980px){.hero-columns{grid-template-columns:1fr;gap:40px}.hero-subtitle{max-width:none}.hero-row{flex-direction:column;align-items:flex-start;gap:12px}.hero-row-text,.hero-row-pills{flex:none;width:100%}.hero-row-pills{justify-content:flex-start}}@media (width<=768px){#hero{padding:100px 0 56px}}@media (width<=480px){.hero-cta{flex-direction:column;align-items:flex-start}.hero-resume-link{padding:10px 0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes code-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.hero-kicker,.hero-headline,.hero-subtitle,.hero-cta,.hero-badges,.hero-panel,.hero-bottom{opacity:1;animation:none}.code-cursor{animation:none}}.tech-pill{font-family:var(--font-body);letter-spacing:.02em;color:var(--text-secondary);background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow);white-space:nowrap;transition:transform var(--transition), background var(--transition), border-color var(--transition);border-radius:999px;align-items:center;gap:9px;padding:10px 14px;font-size:.72rem;font-weight:600;display:inline-flex}@media (hover:hover){.tech-pill:hover{background:var(--border);border-color:var(--border-light);transform:translateY(-1px)}}.tech-pill-icon{object-fit:contain;flex-shrink:0;width:18px;height:18px}.tech-pill-gear{color:var(--text-muted);flex-shrink:0}#about{background:var(--bg-surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border);position:relative;overflow:hidden}.about-text-wrap{position:relative}.about-watermark{object-fit:contain;object-position:right center;opacity:.18;mix-blend-mode:screen;-webkit-mask-composite:source-over, source-in;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;width:auto;max-width:48vw;height:94%;max-height:94%;position:absolute;top:50%;right:calc(-50vw + min(1280px,92vw)/2 - 20px);transform:translateY(-50%);-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 18% 100%),linear-gradient(#0000 0%,#000 12% 88%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0%,#000 18% 100%),linear-gradient(#0000 0%,#000 12% 88%,#0000 100%);-webkit-mask-composite:source-in;mask-composite:intersect}@media (width<=1240px){.about-watermark{width:min(260px,24vw)}}@media (width<=980px){.about-watermark{width:min(90px,10vw)}}.about-text{z-index:1;flex-direction:column;max-width:80ch;display:flex;position:relative}.about-text p{color:var(--text-secondary);margin-bottom:16px;font-size:.98rem;line-height:1.75}.about-text p:last-of-type{margin-bottom:0}.about-stats{grid-template-columns:repeat(2,1fr);gap:16px;margin:24px 0;display:grid}.stat-card{border:1px solid var(--border);text-align:center;transition:border-color var(--transition);background:#10192966;border-radius:24px;padding:20px 24px}@media (hover:hover){.stat-card:hover{border-color:var(--accent)}}.stat-number{font-family:var(--font-display);color:var(--accent);margin-bottom:6px;font-size:2rem;font-weight:700;line-height:1}.stat-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);font-size:.7rem;line-height:1.6}@media (width<=640px){.about-stats{grid-template-columns:1fr}}.about-current{background:var(--bg-card);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;margin-top:0;padding:18px 22px}.about-current-label{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:.7rem}.about-current p{color:var(--text-secondary);margin:0;font-size:.95rem}.about-skills{border-top:1px solid var(--border);margin-top:56px;padding-top:48px}.about-skills-header{margin-bottom:28px}.about-skills-columns{align-items:flex-start;gap:16px;display:flex}.about-skills-column{flex-direction:column;flex:1 1 0;gap:16px;min-width:0;display:flex}.skill-card{border:1px solid var(--border);background:var(--bg-surface);border-radius:22px;padding:24px 26px;transition:background .2s}.skill-card-header{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;padding:0;display:flex}.skill-card-title{font-family:var(--font-body);color:var(--text-secondary);font-size:1.1rem;transition:color .2s}.skill-chevron{color:var(--text-muted);transition:color .2s ease, transform var(--transition);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.skill-chevron-open{transform:rotate(180deg)}.skill-card-panel{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.skill-card-panel-open{grid-template-rows:1fr}.skill-card-panel-inner{min-height:0;overflow:hidden}.skill-card-text{font-family:var(--font-mono);color:var(--text-primary);margin:14px 0 0;font-size:.92rem;line-height:1.7;transition:color .2s}@media (width<=760px){.about-skills-columns{flex-direction:column}.skill-card-header{min-height:44px}}@media (width<=640px){.about-watermark{display:none}}.project-row{cursor:pointer;outline:none;align-items:stretch;gap:40px;display:grid}.project-row-media{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);width:100%;position:relative;overflow:hidden}.project-row-media img{object-fit:cover;width:100%;height:100%;transition:transform .6s;transform:scale(1.01)}.project-row:focus-visible .project-row-media img{transform:scale(1.04)}@media (hover:hover){.project-row:hover .project-row-media img{transform:scale(1.04)}}.project-row-media-fallback{background:linear-gradient(135deg, var(--bg-card), var(--bg-surface));justify-content:center;align-items:center;width:100%;height:100%;display:flex}.project-row-media-fallback span{opacity:.7;font-size:3rem}.project-row-info{flex-direction:column;justify-content:space-between;min-width:0;display:flex}.project-row-title{font-family:var(--font-display);color:var(--text-primary);margin-bottom:6px;font-weight:600;line-height:1.2}.project-row-subtitle{font-family:var(--font-mono);letter-spacing:.04em;color:var(--accent);margin-bottom:14px;font-size:.78rem}.project-row-desc{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:18px;font-size:.92rem;line-height:1.7;display:-webkit-box;overflow:hidden}.project-row-chips{flex-wrap:wrap;gap:11px;margin-bottom:22px;display:flex}.project-chip{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-secondary);background:var(--bg-card);border:1px solid var(--border);white-space:nowrap;border-radius:999px;padding:7px 14px;font-size:.72rem}.project-row-footer{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.project-row-cta{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);transition:border-color var(--transition), color var(--transition);border-bottom:1px solid #0000;align-items:center;gap:8px;padding-bottom:2px;font-size:.78rem;font-weight:600;display:inline-flex}.project-row-cta svg{width:16px;height:16px;transition:transform var(--transition)}@media (hover:hover){.project-row:hover .project-row-cta,.project-row-cta:hover{border-color:var(--accent)}.project-row:hover .project-row-cta svg{transform:translate(4px)}}.project-row-github{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-secondary);transition:color var(--transition);font-size:.75rem}@media (hover:hover){.project-row-github:hover{color:var(--accent)}}.project-row--featured{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.project-row--featured .project-row-media{height:340px}.project-row--featured .project-row-title{font-size:clamp(1.5rem,2.4vw,2rem)}.project-row--featured .project-row-desc{font-size:.98rem}.project-row--listing{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,2fr) minmax(0,3fr);padding:48px 0}.project-row--listing:first-child{padding-top:0}.project-row--listing:last-child{border-bottom:none}.project-row--listing .project-row-media{height:260px}.project-row--listing .project-row-title{font-size:clamp(1.25rem,1.8vw,1.6rem)}@media (width<=860px){.project-row--featured,.project-row--listing{grid-template-columns:1fr;gap:24px}.project-row-footer{gap:16px}}@media (width<=640px){.project-row--featured .project-row-media,.project-row--listing .project-row-media{height:220px}}#projects{background:var(--bg-surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.projects-header{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:48px;display:flex}.projects-header .section-heading{margin-bottom:0}.projects-view-all{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);white-space:nowrap;transition:color var(--transition);font-size:.78rem}@media (hover:hover){.projects-view-all:hover{color:var(--accent-dim)}}@media (width<=768px){.projects-header{flex-direction:column;align-items:flex-start;gap:12px}.projects-view-all{padding:10px 0;display:inline-block}}#experience{background:var(--bg-base)}.exp-table{border-top:1px solid var(--border)}.exp-row{border-bottom:1px solid var(--border)}.exp-row-header{width:100%;font:inherit;text-align:left;cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:none;grid-template-columns:180px 1fr 1fr 24px;align-items:center;column-gap:24px;padding:28px 8px;display:grid}.exp-col{min-width:0}.exp-logo{background:var(--bg-card);border:1px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex;overflow:hidden}.exp-logo img{object-fit:contain;width:100%;height:100%;padding:7px}.exp-logo-initials{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-secondary);font-size:.7rem;font-weight:600}.exp-row-header:hover .exp-logo-initials,.exp-row-header:focus-visible .exp-logo-initials{color:var(--text-secondary)}.exp-row-header:has(:focus-visible) .exp-logo-initials{color:var(--text-secondary)}.exp-col-date{font-family:var(--font-body);color:var(--text-primary);transition:color var(--transition);flex-direction:column;gap:4px;font-size:1.05rem;display:flex}.exp-duration{color:var(--text-muted);transition:color var(--transition);font-size:.78rem}.exp-row-header:focus-visible .exp-duration{opacity:.7}@media (hover:hover){.exp-row-header:hover .exp-duration{opacity:.7}}.exp-col-company{font-family:var(--font-body);color:var(--text-primary);transition:color var(--transition);text-overflow:ellipsis;white-space:nowrap;font-size:1.15rem;font-weight:500;overflow:hidden}.exp-col-role{font-family:var(--font-mono);color:var(--text-secondary);letter-spacing:.02em;transition:color var(--transition);text-overflow:ellipsis;white-space:nowrap;font-size:1.05rem;overflow:hidden}.exp-chevron{color:var(--text-muted);transition:color var(--transition), transform var(--transition);justify-content:center;align-items:center;display:inline-flex}.exp-chevron-open{transform:rotate(180deg)}.exp-panel-wrapper{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.exp-panel-open{grid-template-rows:1fr}.exp-panel-inner{min-height:0;overflow:hidden}.exp-panel-content{background:var(--bg-surface);border-top:1px solid var(--border);padding:28px 32px 32px}.exp-company-full{font-family:var(--font-body);color:var(--text-primary);margin-bottom:4px;font-size:1.15rem;font-weight:500}.exp-role-block{margin-bottom:8px}.exp-role-block:last-child{margin-bottom:0}.exp-role-title{color:var(--accent);font-size:.85rem;font-family:var(--font-mono);letter-spacing:.04em;margin-bottom:14px}.exp-role-sep{color:var(--text-muted);margin:0 4px}.exp-role-divider{background:var(--border);height:1px;margin:20px 0}.exp-retained{font-family:var(--font-mono);color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;margin-bottom:20px;padding:12px 16px;font-size:.72rem;display:flex}.exp-retained span{color:var(--text-secondary);display:block}.exp-retained span:before{content:"—";color:var(--text-muted);margin-right:8px}.exp-list code{font-family:var(--font-mono);color:var(--accent);background:var(--accent-glow);border-radius:3px;padding:1px 6px;font-size:.82em}.exp-link{font-family:var(--font-mono);color:var(--text-muted);transition:color var(--transition);align-items:center;gap:4px;margin-bottom:16px;font-size:.75rem;text-decoration:none;display:inline-flex}.exp-link:hover{color:var(--accent)}.exp-list{flex-direction:column;gap:10px;list-style:none;display:flex}.exp-list li{color:var(--text-secondary);padding-left:20px;font-size:.92rem;line-height:1.7;position:relative}.exp-list li:before{content:"▸";color:var(--accent);font-size:.8rem;position:absolute;top:2px;left:0}.exp-list li strong{color:var(--text-primary);font-weight:600}.exp-footer{text-align:right;color:var(--text-muted);margin-top:24px;font-size:.85rem;font-style:italic}@media (width<=760px){.exp-row-header{grid-template-columns:auto 1fr auto;grid-template-areas:"date date chevron""company company chevron""role role chevron";gap:8px 14px;padding:22px 8px}.exp-col-date{grid-area:date}.exp-col-company{white-space:normal;grid-area:company}.exp-col-role{white-space:normal;grid-area:role}.exp-chevron{grid-area:chevron;align-self:start}.exp-panel-content{padding:24px 20px 28px}}#contact{background:var(--bg-surface);border-top:1px solid var(--border);padding:120px 0}.contact-sub{color:var(--text-secondary);max-width:560px;margin-bottom:48px;font-size:1.05rem}.contact-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);max-width:980px;box-shadow:var(--shadow);overflow:hidden}.contact-panel-top{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:16px;padding:24px 28px;display:flex}.email-pill{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);cursor:pointer;transition:border-color var(--transition), background var(--transition);flex:320px;align-items:center;gap:14px;min-width:0;padding:10px 12px 10px 10px;font-family:inherit;display:flex}@media (hover:hover){.email-pill:hover{border-color:var(--accent);background:var(--accent-glow)}}.email-icon{background:var(--accent-glow);width:36px;height:36px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.email-icon svg{width:18px;height:18px}.email-text{text-align:left;flex-direction:column;gap:2px;min-width:0;display:flex}.email-label{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);font-size:.68rem}.email-value{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:600;overflow:hidden}.copy-chip{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);border:1px solid var(--border-light);transition:all var(--transition);border-radius:999px;flex-shrink:0;margin-left:auto;padding:6px 12px;font-size:.7rem}.copy-chip.copied{color:var(--success);border-color:var(--success);background:var(--success-glow)}.contact-socials{flex-shrink:0;gap:10px;display:flex}.social-btn{border:1px solid var(--border-light);width:44px;height:44px;color:var(--text-secondary);transition:all var(--transition);border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.social-btn svg{width:18px;height:18px}.social-hint{background:var(--bg-surface);border:1px solid var(--border-light);width:16px;height:16px;color:var(--text-muted);transition:all var(--transition);border-radius:50%;justify-content:center;align-items:center;font-size:.6rem;line-height:1;display:flex;position:absolute;top:-4px;right:-4px}@media (hover:hover){.social-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-glow);transform:translateY(-2px)}.social-btn:hover .social-hint{border-color:var(--accent);color:var(--accent)}}.response-badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);white-space:nowrap;align-items:center;gap:8px;margin-left:auto;font-size:.72rem;display:flex}.response-time{color:var(--text-primary)}.pulse-dot{background:var(--success);border-radius:50%;flex-shrink:0;width:8px;height:8px;position:relative}.pulse-dot:after{content:"";background:var(--success);border-radius:50%;animation:2s ease-out infinite pulse-dot;position:absolute;inset:0}@keyframes pulse-dot{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(2.6)}}.contact-form{flex-direction:column;gap:20px;padding:28px;display:flex}.field-row{grid-template-columns:1fr 1fr;gap:20px;display:grid}.field-row-3{grid-template-columns:1fr 1fr 1fr}.field-row:has(>.field:only-child){grid-template-columns:1fr}.field{position:relative}.field input,.field select,.field textarea{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);width:100%;color:var(--text-primary);font-family:var(--font-body);transition:border-color var(--transition), box-shadow var(--transition);padding:22px 14px 10px;font-size:.95rem}.field textarea{resize:vertical;min-height:130px;padding-top:26px}.field select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237d9ab5' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:16px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow);outline:none}.field label{color:var(--text-muted);pointer-events:none;transition:all var(--transition);background:0 0;font-size:.95rem;position:absolute;top:16px;left:15px}.field input::placeholder,.field textarea::placeholder{color:#0000;transition:color var(--transition)}.field input:focus::placeholder,.field textarea:focus::placeholder{color:var(--text-muted)}.field input:focus~label,.field textarea:focus~label,.field input:not(:placeholder-shown)~label,.field textarea:not(:placeholder-shown)~label,.field.filled label{letter-spacing:.05em;text-transform:uppercase;font-size:.68rem;font-family:var(--font-mono);color:var(--accent);background:var(--bg-card);border-radius:3px;padding:0 4px;top:7px;left:11px}.contact-submit{width:100%;margin-top:4px}.form-status{text-align:center;font-size:.9rem}.form-status-error{color:var(--error)}.form-status-success{color:var(--success)}.form-status-sending{color:var(--text-secondary)}@media (width<=768px){.contact-panel-top{flex-direction:column;align-items:stretch;padding:18px 16px}.email-pill{flex:none;width:100%}.email-value{font-size:.85rem}.contact-socials{justify-content:center}.response-badge{justify-content:center;margin-left:0}}@media (width<=640px){.field-row,.field-row-3{grid-template-columns:1fr}.contact-form{padding:20px}}footer{background:var(--bg-base);border-top:1px solid var(--border);padding:28px 0}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.footer-copy{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.08em;font-size:.75rem}.footer-back-top{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);transition:color var(--transition);align-items:center;gap:6px;font-size:.72rem;display:flex}@media (hover:hover){.footer-back-top:hover{color:var(--accent)}}@media (width<=768px){.footer-inner{text-align:center;justify-content:center}.footer-back-top{padding:12px 0}}.projects-page{padding:160px 24px 120px}.projects-list{margin-top:48px}
