:root{--font-display:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--max:1120px;--ease:cubic-bezier(.22, 1, .36, 1)}:root[data-theme=dark]{--bg:#0d1012;--bg-soft:#131a1d;--card:#151d21;--border:#2a3940;--text:#eef7f9;--muted:#a6b8bf;--faint:#71858d;--accent:#9fdff2;--accent-2:#82d8ad;--accent-3:#f0b35b;--accent-4:#b7a6ff;--shadow:0 2px 8px #0000001a}:root[data-theme=light]{--bg:#f4f8f9;--bg-soft:#fff;--card:#fff;--border:#d9e5e8;--text:#121819;--muted:#52656b;--faint:#85979d;--accent:#439fbd;--accent-2:#3a9f6e;--accent-3:#b77b21;--accent-4:#756bd6;--shadow:0 2px 8px #141f241a}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:linear-gradient(color-mix(in srgb, var(--accent) 4%, transparent) 1px, transparent 1px) 0 var(--bg-y,0px) / 72px 72px, linear-gradient(90deg, color-mix(in srgb, var(--accent) 4%, transparent) 1px, transparent 1px) calc(var(--bg-y,0px) * -.35) 0 / 72px 72px, radial-gradient(circle, color-mix(in srgb, var(--accent) 16%, transparent) 1px, transparent 1.5px) 0 calc(var(--bg-y,0px) * .55) / 18px 18px, var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;transition:background .4s var(--ease), color .4s var(--ease);line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:#0a0b0d}.grain{z-index:0;pointer-events:none;opacity:.35;background:linear-gradient(color-mix(in srgb, var(--accent) 10%, transparent) 1px, transparent 1px) 0 calc(var(--bg-y,0px) * -.8) / 96px 96px, linear-gradient(90deg, color-mix(in srgb, var(--accent-2) 8%, transparent) 1px, transparent 1px) calc(var(--bg-y,0px) * .5) 0 / 96px 96px;position:fixed;inset:0}main{z-index:1;max-width:var(--max);margin:0 auto;padding:0 24px;position:relative}.nav{z-index:50;max-width:var(--max);background:color-mix(in srgb, var(--bg) 92%, transparent);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin:0 auto;padding:18px 24px;display:flex;position:sticky;top:0}.nav__brand{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.25rem;font-weight:700}.nav__brand span{color:var(--accent)}.nav__links{color:var(--muted);gap:28px;font-size:.92rem;display:flex}.nav__links a{transition:color .2s;position:relative}.nav__links a:hover{color:var(--text)}.nav__links a:after{content:"";background:var(--accent);width:0;height:2px;transition:width .25s var(--ease);position:absolute;bottom:-5px;left:0}.nav__links a:hover:after{width:100%}.theme-toggle{border:1px solid var(--border);background:var(--bg-soft);cursor:pointer;border-radius:8px;width:42px;height:24px;transition:background .3s;position:relative}.theme-toggle__dot{background:var(--accent);width:20px;height:20px;transition:transform .3s var(--ease);border-radius:5px;position:absolute;top:2px;left:2px}.theme-toggle[data-theme=light] .theme-toggle__dot{transform:translate(20px)}.reveal{opacity:0;transition:opacity .7s var(--ease), transform .7s var(--ease);transform:translateY(22px)}.reveal--in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}.hero{margin-top:24px;padding:80px 32px 60px;position:relative;overflow:hidden}.hero__grid{z-index:1;pointer-events:none;grid-template-columns:minmax(0,1fr);align-items:center;gap:40px;display:grid;position:relative}.hero__grid a,.hero__grid button{pointer-events:auto}.hero__eyebrow{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.22em;color:var(--accent);margin-bottom:22px;font-size:.78rem}.hero__title{font-family:var(--font-display);letter-spacing:-.03em;margin-bottom:26px;font-size:clamp(3rem,11vw,7rem);font-weight:700;line-height:.98}.grad{color:var(--accent)}.hero__lead{max-width:640px;color:var(--muted);font-size:clamp(1.05rem,2.2vw,1.3rem)}.hero__lead strong{color:var(--text);font-weight:600}.hero__model{opacity:.7;z-index:0;pointer-events:auto;width:clamp(360px,35vw,520px);height:420px;position:absolute;top:128px;right:32px}.pcb-model{width:100%;height:100%;position:relative;overflow:hidden}.pcb-model__canvas,.pcb-model__canvas canvas{position:absolute;inset:0}.pcb-model__canvas canvas{cursor:grab;width:100%;height:100%;display:block}.pcb-model__canvas canvas:active{cursor:grabbing}.hero__note{max-width:520px;color:var(--faint);margin-top:18px;font-size:.96rem}.hero__cta{flex-wrap:wrap;gap:14px;margin-top:36px;display:flex}.hero__stats{border-top:1px solid var(--border);flex-wrap:wrap;gap:48px;margin-top:64px;padding-top:32px;display:flex}.hero__stats>div{flex-direction:column;display:flex}.stat__num{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.9rem;font-weight:600}.stat__label{color:var(--faint);font-size:.85rem}.btn{border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:13px 24px;font-size:.95rem;font-weight:600;transition:background .18s,border-color .18s,color .18s;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:2px;transition:transform .18s;position:absolute;bottom:0;left:0;transform:scaleX(0)}.btn:hover:after{transform:scaleX(1)}.btn--primary{background:var(--accent);color:#0a0b0d}.btn--ghost{border-color:var(--border);color:var(--text)}.btn--ghost:hover{border-color:var(--accent)}.marquee{border-block:1px solid var(--border);margin:20px 0 70px;padding:16px 0;overflow:hidden}.marquee__track{width:max-content;font-family:var(--font-display);color:var(--muted);font-size:1.1rem;animation:26s linear infinite scroll;display:flex}.marquee__group span{white-space:nowrap;margin-right:26px}.marquee__group i{color:var(--accent);font-style:normal}@keyframes scroll{to{transform:translate(-50%)}}.section{padding:70px 0}.section__title{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700}.section__sub{color:var(--muted);margin-top:10px}.section__head{margin-bottom:44px}.projects{grid-template-columns:repeat(2,1fr);gap:22px;display:grid}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;flex-direction:column;height:100%;padding:24px;transition:background .18s,border-color .18s;display:flex;position:relative;overflow:hidden}.card:before{content:"";background:var(--accent);transform-origin:0;height:3px;transition:transform .4s var(--ease);position:absolute;top:0;left:0;right:0;transform:scaleX(0)}.card[data-accent=cyan]:before{background:var(--accent-2)}.card[data-accent=amber]:before{background:var(--accent-3)}.card:hover{background:color-mix(in srgb, var(--accent) 4%, var(--card));border-color:color-mix(in srgb, var(--accent) 50%, var(--border))}.card:hover:before{transform:scaleX(1)}.card__top{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.card__tag{text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-size:.74rem;font-weight:600}.card[data-accent=cyan] .card__tag{color:var(--accent-2)}.card[data-accent=amber] .card__tag{color:var(--accent-3)}.card__year{color:var(--faint);font-size:.8rem}.card__title{font-family:var(--font-display);letter-spacing:-.01em;margin-bottom:12px;font-size:1.6rem;font-weight:600}.card__desc{color:var(--muted);flex:1;font-size:.97rem}.card__stack{flex-wrap:wrap;gap:8px;margin:22px 0;list-style:none;display:flex}.card__stack li{background:var(--bg-soft);border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:5px 11px;font-size:.78rem}.card__links a{color:var(--text);border-bottom:2px solid var(--accent);align-items:center;gap:4px;padding-bottom:2px;font-size:.92rem;font-weight:600;transition:opacity .2s;display:inline-flex}.card__links a:hover{opacity:.7}.card--cta{background:color-mix(in srgb, var(--accent) 6%, var(--card));flex-direction:column;justify-content:center;align-items:flex-start;display:flex}.about__grid{grid-template-columns:1.3fr 1fr;align-items:start;gap:48px;display:grid}.about__text{color:var(--muted);margin-top:20px;font-size:1.05rem}.about__text em{color:var(--text);font-style:normal;font-weight:600}.about__panel{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:28px}.about__panel h4{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.14em;color:var(--faint);margin-bottom:14px;font-size:.8rem}.about__panel h4:nth-of-type(2){margin-top:26px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips span{background:var(--bg-soft);border:1px solid var(--border);border-radius:6px;padding:6px 13px;font-size:.84rem}.chips--alt span{border-color:color-mix(in srgb, var(--accent) 40%, var(--border));color:var(--text)}.timeline{margin-top:48px;padding-left:28px;list-style:none;position:relative}.timeline:before{content:"";background:var(--border);width:1px;position:absolute;top:8px;bottom:8px;left:7px}.timeline__item{padding-bottom:40px;position:relative}.timeline__item:last-child{padding-bottom:0}.timeline__dot{border:2px solid var(--bg);background:var(--muted);border-radius:3px;width:10px;height:10px;transition:background .2s;position:absolute;top:6px;left:-24px}.timeline__dot[data-type=work]{background:var(--accent)}.timeline__dot[data-type=achievement]{background:var(--accent-2)}.timeline__dot[data-type=experience]{background:var(--accent-3)}.timeline__body{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:20px 22px;transition:border-color .2s}.timeline__item:hover .timeline__body{border-color:color-mix(in srgb, var(--accent) 40%, var(--border))}.timeline__meta{align-items:center;gap:10px;margin-bottom:6px;display:flex}.timeline__period{color:var(--muted);font-size:.78rem;font-weight:500}.timeline__badge{letter-spacing:.04em;text-transform:uppercase;background:color-mix(in srgb, var(--muted) 15%, transparent);color:var(--muted);border-radius:6px;padding:2px 8px;font-size:.68rem;font-weight:600}.timeline__badge[data-type=work]{background:color-mix(in srgb, var(--accent) 15%, transparent);color:var(--accent)}.timeline__badge[data-type=achievement]{background:color-mix(in srgb, var(--accent-2) 15%, transparent);color:var(--accent-2)}.timeline__badge[data-type=experience]{background:color-mix(in srgb, var(--accent-3) 15%, transparent);color:var(--accent-3)}.timeline__badge[data-type=education]{background:color-mix(in srgb, var(--accent-4) 15%, transparent);color:var(--accent-4)}.timeline__role{font-family:var(--font-display);color:var(--text);margin-bottom:2px;font-size:1rem;font-weight:600}.timeline__org{color:var(--accent);margin-bottom:10px;font-size:.83rem;font-weight:500}.timeline__desc{color:var(--muted);font-size:.88rem;line-height:1.6}.contact{text-align:center;padding:100px 0}.contact__inner{max-width:620px;margin:0 auto}.contact__eyebrow{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.22em;color:var(--accent);margin-bottom:16px;font-size:.78rem}.contact__title{font-family:var(--font-display);letter-spacing:-.03em;font-size:clamp(2.4rem,7vw,4rem);font-weight:700;line-height:1}.contact__sub{color:var(--muted);margin:20px 0 34px;font-size:1.08rem}.contact__links{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.footer{z-index:1;max-width:var(--max);color:var(--faint);border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:10px;margin:0 auto;padding:30px 24px 50px;font-size:.85rem;display:flex;position:relative}@media (pointer:fine){body,a,button,.theme-toggle,.card,[data-cursor=hover]{cursor:none}}.cursor{z-index:100;pointer-events:none;border:1px solid var(--accent);width:18px;height:18px;transform:translate3d(var(--x,-40px), var(--y,-40px), 0) translate(-50%, -50%);transition:background .12s,border-color .12s,width .12s,height .12s;position:fixed;top:0;left:0}.cursor:after{content:"";background:var(--accent);width:4px;height:4px;position:absolute;top:6px;left:6px}.cursor.cursor--hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);width:26px;height:26px}@media (max-width:800px){.projects{grid-template-columns:1fr}.about__grid{grid-template-columns:1fr;gap:28px}.nav__links{display:none}.hero__grid{grid-template-columns:1fr;gap:28px}.hero{padding:56px 20px 40px}.hero__model{opacity:.72;width:100%;height:340px;margin-bottom:20px;position:relative;top:auto;right:auto}.hero__stats{gap:32px}}
