:root{--bg:#0d1013;--panel:#161a20;--panel-2:#12151b;--line:#262c36;--line-soft:#1c222b;--text:#edeff2;--text-dim:#8b93a1;--text-faint:#525a66;--amber:#ff8a3d;--teal:#4fd1c5;--max:1120px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);background-image:linear-gradient(var(--line-soft) 1px, transparent 1px), linear-gradient(90deg, var(--line-soft) 1px, transparent 1px);color:var(--text);-webkit-font-smoothing:antialiased;background-size:48px 48px;font-family:Space Grotesk,sans-serif;line-height:1.5;position:relative;overflow-x:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.mono{font-family:IBM Plex Mono,monospace}a{color:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--amber);outline-offset:3px}.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}.accent-amber{color:var(--amber)}#circuit-bg{z-index:0;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}header,main,footer{z-index:1;position:relative}header{z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#0d1013d1;position:sticky;top:0}nav.wrap{justify-content:space-between;align-items:center;height:64px;display:flex}.brand{letter-spacing:.02em;font-family:IBM Plex Mono,monospace;font-size:.9rem}.brand span{color:var(--amber)}.navlinks{gap:28px;list-style:none;display:flex}.navlinks a{color:var(--text-dim);font-family:IBM Plex Mono,monospace;font-size:.8rem;text-decoration:none;transition:color .15s}.navlinks a:hover{color:var(--amber)}.reveal{opacity:0;transform:translateY(22px)}.reveal.in{opacity:1;transform:translateY(0)}.panel{background:var(--panel);border:1px solid var(--line);position:relative}.panel:before,.panel:after,.panel .tick-br,.panel .tick-bl{content:"";pointer-events:none;width:12px;height:12px;position:absolute}.panel:before{border-top:2px solid var(--amber);border-left:2px solid var(--amber);top:-1px;left:-1px}.panel:after{border-top:2px solid var(--amber);border-right:2px solid var(--amber);top:-1px;right:-1px}.panel .tick-bl{border-bottom:2px solid var(--amber);border-left:2px solid var(--amber);bottom:-1px;left:-1px}.panel .tick-br{border-bottom:2px solid var(--amber);border-right:2px solid var(--amber);bottom:-1px;right:-1px}.tag{letter-spacing:.03em;color:var(--teal);background:#4fd1c50f;border:1px solid #4fd1c559;padding:3px 9px;font-family:IBM Plex Mono,monospace;font-size:.72rem;display:inline-block}.tag.amber{color:var(--amber);background:#ff8a3d0f;border-color:#ff8a3d59}.hero{padding:120px 0 90px;position:relative}#hero-model{z-index:0;opacity:.6;width:100%;height:100%;position:absolute;inset:0}.hero-content{z-index:1;text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.badge{color:var(--teal);border:1px solid #4fd1c54d;border-radius:999px;align-items:center;gap:8px;margin-bottom:36px;padding:8px 18px;font-family:IBM Plex Mono,monospace;font-size:.82rem;display:inline-flex}.badge .dot{background:var(--teal);width:6px;height:6px;box-shadow:0 0 8px var(--teal);border-radius:50%}.hero h1{letter-spacing:-.02em;background:linear-gradient(#fff 0%,#a7aebb 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:26px;font-size:clamp(3.2rem,8vw,6rem);font-weight:700;line-height:1}.typewriter-line{color:var(--text-dim);justify-content:center;align-items:center;gap:10px;min-height:1.6em;margin-bottom:34px;font-family:IBM Plex Mono,monospace;font-size:clamp(1.1rem,2.4vw,1.5rem);display:flex}.typewriter-line .prompt{color:var(--amber)}.typewriter-line .cursor{background:var(--teal);width:2px;height:1.1em;margin-left:2px;animation:.9s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero p.lede{color:var(--text-dim);max-width:56ch;margin-bottom:40px;font-size:1.08rem}.hero-ctas{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.btn{border:1px solid var(--line);border-radius:999px;align-items:center;gap:8px;padding:12px 24px;font-family:IBM Plex Mono,monospace;font-size:.85rem;text-decoration:none;transition:border-color .15s,background .15s,transform .15s;display:inline-flex}.btn.primary{background:var(--amber);color:#161414;border-color:var(--amber);font-weight:500}.btn.primary:hover{background:#ffa261;transform:translateY(-1px)}.btn.ghost{color:var(--text);background:#ffffff05}.btn.ghost:hover{border-color:var(--teal);color:var(--teal);transform:translateY(-1px)}.scroll-cue{color:var(--text-faint);letter-spacing:.1em;flex-direction:column;align-items:center;gap:8px;margin-top:64px;font-family:IBM Plex Mono,monospace;font-size:.7rem;display:flex}.scroll-cue .line{background:linear-gradient(var(--teal), transparent);width:1px;height:32px;animation:1.8s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.3}50%{opacity:1}}.telemetry{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel-2)}.telemetry-inner{color:var(--text-dim);letter-spacing:.02em;flex-wrap:wrap;justify-content:center;gap:36px;padding:10px 28px;font-size:.72rem;display:flex}.telemetry .t-label{color:var(--text-faint);margin-right:6px}.telemetry .t-dot{background:var(--teal);width:6px;height:6px;box-shadow:0 0 6px var(--teal);border-radius:50%;margin-right:5px;display:inline-block}@media (width<=600px){.telemetry .hide-sm{display:none}}section{padding:96px 0}.section-head{text-align:center;margin-bottom:56px}.section-head .eyebrow{letter-spacing:.15em;color:var(--teal);justify-content:center;align-items:center;gap:16px;margin-bottom:14px;font-family:IBM Plex Mono,monospace;font-size:.78rem;display:flex}.section-head .eyebrow:before,.section-head .eyebrow:after{content:"";background:var(--line);width:64px;height:1px}.section-head h2{color:var(--text-dim);font-size:1.5rem;font-weight:400}.about-grid{grid-template-columns:1.3fr 1fr;gap:40px;display:grid}.about-grid p{color:var(--text-dim);max-width:60ch;margin-bottom:16px}.stat-panel{padding:22px 24px}.stat-row{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:baseline;padding:12px 0;font-family:IBM Plex Mono,monospace;font-size:.85rem;display:flex}.stat-row:last-child{border-bottom:none}.stat-row .k{color:var(--text-dim)}.stat-row .v{color:var(--text)}.exed-grid{grid-template-columns:1fr 1fr;gap:24px;display:grid}.exed-card{padding:32px}.exed-top{justify-content:space-between;align-items:flex-start;margin-bottom:28px;display:flex}.exed-mark{color:var(--text);letter-spacing:-.01em;font-family:IBM Plex Mono,monospace;font-size:1.3rem;font-weight:700}.exed-mark small{color:var(--text-faint);margin-top:2px;font-size:.6rem;font-weight:400;display:block}.exed-card h3{margin-bottom:8px;font-size:1.4rem}.exed-card .sub{color:var(--text-dim);margin-bottom:18px;font-family:IBM Plex Mono,monospace;font-size:.82rem}.exed-card p{color:var(--text-dim)}.exed-link{color:var(--teal);align-items:center;gap:6px;margin-top:18px;font-family:IBM Plex Mono,monospace;font-size:.82rem;text-decoration:none;display:inline-flex}.exed-link:hover{color:var(--amber)}.skills-grid{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:1px;display:grid}.skill-col{background:var(--panel-2);padding:28px 24px}.skill-col h3{letter-spacing:.04em;color:var(--amber);margin-bottom:18px;font-family:IBM Plex Mono,monospace;font-size:.8rem}.skill-col ul{list-style:none}.skill-col li{color:var(--text-dim);border-bottom:1px solid var(--line-soft);padding:8px 0;font-size:.94rem}.skill-col li:last-child{border-bottom:none}.tilt-scene{perspective:1200px}.proj-grid{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.proj-card{transform-style:preserve-3d;will-change:transform;cursor:pointer;flex-direction:column;padding:28px;transition:transform .2s,border-color .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.proj-card:after{content:"";pointer-events:none;opacity:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%), #ffffff12, transparent 55%);transition:opacity .3s;position:absolute;inset:0}.proj-card:hover:after{opacity:1}.proj-card:hover{border-color:#4fd1c566;box-shadow:0 16px 32px #0006}.proj-top{justify-content:space-between;align-items:flex-start;margin-bottom:20px;display:flex}.proj-icon{width:40px;height:40px;color:var(--teal);background:#4fd1c514;border:1px solid #4fd1c54d;justify-content:center;align-items:center;font-family:IBM Plex Mono,monospace;font-size:.9rem;display:flex}.proj-num{color:var(--text-faint);font-family:IBM Plex Mono,monospace;font-size:.72rem}.proj-card h3{margin-bottom:10px;font-size:1.2rem}.proj-card p.desc{color:var(--text-dim);flex-grow:1;margin-bottom:20px;font-size:.92rem}.stack{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.stack span{color:var(--text-dim);border:1px solid var(--line);padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:.7rem}.proj-link{color:var(--teal);align-items:center;gap:6px;font-family:IBM Plex Mono,monospace;font-size:.8rem;text-decoration:none;display:inline-flex}.proj-link:hover{color:var(--amber)}.view-all-wrap{text-align:center;margin-top:44px}.view-all-btn{color:var(--text);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:10px;padding:14px 28px;font-family:IBM Plex Mono,monospace;font-size:.85rem;transition:border-color .15s,color .15s;display:inline-flex}.view-all-btn:hover{border-color:var(--teal);color:var(--teal)}.view-all-btn .chev{transition:transform .25s;display:inline-block}.view-all-btn.open .chev{transform:rotate(180deg)}#more-projects{opacity:0;grid-template-columns:repeat(3,1fr);gap:20px;height:0;margin-top:0;display:grid;overflow:hidden}.pinout{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:1px;display:grid}.pin{background:var(--panel-2);text-align:center;padding:26px 20px;text-decoration:none;transition:background .15s}.pin:hover{background:#1e2530}.pin .pin-num{color:var(--text-faint);margin-bottom:10px;font-family:IBM Plex Mono,monospace;font-size:.68rem;display:block}.pin .pin-label{color:var(--teal);margin-bottom:6px;font-family:IBM Plex Mono,monospace;font-size:.78rem;display:block}.pin .pin-value{color:var(--text);font-size:.92rem}footer{border-top:1px solid var(--line);color:var(--text-faint);flex-wrap:wrap;justify-content:space-between;gap:8px;padding:28px 0;font-family:IBM Plex Mono,monospace;font-size:.75rem;display:flex}.modal-overlay{z-index:200;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;pointer-events:none;background:#06080ac7;justify-content:center;align-items:center;padding:24px;transition:opacity .25s;display:flex;position:fixed;inset:0}.modal-overlay.open{opacity:1;pointer-events:auto}.modal-panel{width:100%;max-width:640px;max-height:85vh;transition:transform .3s;overflow-y:auto;transform:translateY(18px)}.modal-overlay.open .modal-panel{transform:translateY(0)}.modal-close{z-index:2;background:var(--panel);border:1px solid var(--line);width:32px;height:32px;color:var(--text-dim);cursor:pointer;font-size:.85rem;transition:color .15s,border-color .15s;position:absolute;top:16px;right:16px}.modal-close:hover{color:var(--amber);border-color:var(--amber)}.modal-banner{border-bottom:1px solid var(--line);background:repeating-linear-gradient(135deg,#4fd1c514 0 2px,#0000 2px 14px),linear-gradient(135deg,#ff8a3d24,#4fd1c514);height:120px}.modal-body{padding:28px 32px 34px}.modal-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.modal-top h3{font-size:1.5rem}.modal-body .stack{margin-bottom:22px}.modal-section{margin-bottom:18px}.modal-section h4{letter-spacing:.1em;color:var(--teal);text-transform:uppercase;margin-bottom:6px;font-family:IBM Plex Mono,monospace;font-size:.72rem}.modal-section p{color:var(--text-dim);font-size:.95rem}@media (width<=860px){.navlinks{display:none}.about-grid,.exed-grid,.skills-grid,.proj-grid,#more-projects{grid-template-columns:1fr}.pinout{grid-template-columns:repeat(2,1fr)}section{padding:64px 0}#hero-model{opacity:.35}.telemetry-inner{gap:20px}}
