:root{--bg:#111c16;--bg2:#0c1510;--text:#d4e8d0;--muted:#4d6b55;--accent:#39ff8a;--accent-dim:#39ff8a0f;--accent-mid:#39ff8a26;--border:#39ff8a1a;--border-dim:#39ff8a0f;--subtle:#111c14}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;max-width:700px;margin:0 auto;padding:0 2.2rem;font-family:Space Mono,monospace;font-size:.8rem;font-weight:400;line-height:1.8}body:before{content:"";pointer-events:none;z-index:100;background:repeating-linear-gradient(0deg,#0000,#0000 2px,#00000012 2px 4px);position:fixed;inset:0}nav{opacity:0;justify-content:space-between;align-items:center;margin-bottom:6rem;padding:2.4rem 0 0;animation:.5s 50ms forwards up;display:flex}.nav-left{align-items:center;gap:1rem;display:flex}.nav-avatar-wrap{cursor:pointer;flex-shrink:0;width:52px;height:52px;position:relative}.nav-avatar-wrap input[type=file]{opacity:0;cursor:pointer;z-index:2;width:100%;height:100%;position:absolute;inset:0}.nav-avatar-bg{border:1.5px solid var(--border);background:var(--subtle);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;transition:border-color .2s,box-shadow .2s;display:flex;overflow:hidden}.nav-avatar-wrap:hover .nav-avatar-bg{border-color:var(--accent);box-shadow:0 0 12px #39ff8a33}.nav-avatar-bg svg{opacity:.18;width:24px;margin-top:6px}#nav-avatar-img{object-fit:cover;border-radius:50%;width:200px;height:200px;margin-bottom:2rem;display:block}.avatar-hint{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;text-align:center;pointer-events:none;margin-top:.3rem;font-size:.58rem}.logo-group{flex-direction:column;gap:.1rem;display:flex}.logo{color:var(--text);letter-spacing:-.02em;font-family:Syne,sans-serif;font-size:1.25rem;font-weight:800;line-height:1;text-decoration:none}.logo-sub{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-size:.62rem}.nav-links{justify-content:space-between;gap:2rem;list-style:none;display:flex}.nav-links a{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.68rem;text-decoration:none;transition:color .15s}.nav-links a:hover{color:var(--accent)}#hero{opacity:0;margin-bottom:8rem;padding:2.4rem 0 0;animation:.55s .15s forwards up}.status{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--border);background:var(--accent-dim);align-items:center;gap:.5rem;margin-bottom:2rem;padding:.3rem .8rem;font-size:.65rem;display:inline-flex}.status-dot{background:var(--accent);width:5px;height:5px;box-shadow:0 0 8px var(--accent);border-radius:50%;animation:2.5s ease-in-out infinite blink}h1{letter-spacing:-.03em;color:var(--text);margin-bottom:1.8rem;font-family:Syne,sans-serif;font-size:clamp(3.5rem,10vw,6rem);font-weight:800;line-height:.98}h1 .line2{color:var(--accent);display:block}h1 .dim{color:var(--muted);letter-spacing:0;margin-top:.3rem;font-size:.65em;font-style:italic;font-weight:400;display:block}.hero-bio{color:var(--muted);max-width:420px;margin-bottom:2.2rem;font-size:.78rem;line-height:1.9}.hero-bio strong{color:var(--text);font-weight:700}.hero-links{flex-wrap:wrap;gap:.6rem;display:flex}.hero-links a{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--border);padding:.45rem 1rem;font-size:.65rem;text-decoration:none;transition:all .15s}.hero-links a:hover{color:var(--accent);background:var(--accent-dim);border-color:#39ff8a4d}.hero-links a.primary{color:var(--bg);background:var(--accent);border-color:var(--accent);font-weight:700}.hero-links a.primary:hover{color:var(--bg);background:#5dffaa;border-color:#5dffaa}section{opacity:0;margin-bottom:6rem;animation:.55s forwards up}section:first-of-type{animation-delay:.25s}section:nth-of-type(2){animation-delay:.32s}section:nth-of-type(3){animation-delay:.39s}.section-header{border-bottom:1px solid var(--border-dim);justify-content:space-between;align-items:center;margin-bottom:1.8rem;padding-bottom:.8rem;display:flex}.section-label{letter-spacing:.15em;text-transform:uppercase;color:var(--accent);font-size:.6rem}.section-count{color:var(--muted);letter-spacing:.05em;font-size:.6rem}.project{border-bottom:1px solid var(--border-dim);padding:1.4rem 0}.project:last-child{border-bottom:none}.project-row{grid-template-columns:130px 1fr;align-items:start;gap:1.2rem;display:grid}.thumb-wrap{flex-shrink:0;width:130px;height:82px;position:relative}.thumb-placeholder{border:1px dashed var(--border);background:var(--subtle);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;width:130px;height:82px;transition:border-color .15s,background .15s;display:flex;position:relative}.thumb-placeholder:hover{background:var(--accent-dim);border-color:#39ff8a40}.thumb-placeholder input[type=file]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.thumb-placeholder svg{opacity:.2}.thumb-hint{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;pointer-events:none;font-size:.5rem}.thumb-img{object-fit:cover;border:1px solid var(--border);cursor:zoom-in;width:130px;height:82px;transition:opacity .15s,border-color .15s}.thumb-img:hover{opacity:.82;border-color:#39ff8a40}.project-body{min-width:0}.project-top{justify-content:space-between;align-items:baseline;gap:.8rem;margin-bottom:.3rem;display:flex}.project-name{letter-spacing:-.01em;color:var(--text);font-family:Syne,sans-serif;font-size:.95rem;font-weight:700}.project-links-inline{flex-shrink:0;gap:.7rem;display:flex}.project-link{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;font-size:.62rem;text-decoration:none;transition:color .15s}.project-link:hover{color:var(--accent)}.project-desc{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:.7rem;font-size:.73rem;line-height:1.7;display:-webkit-box;overflow:hidden}.project-tags{flex-wrap:wrap;gap:.35rem;display:flex}.tag{color:var(--muted);letter-spacing:.05em;background:var(--subtle);border:1px solid var(--border-dim);padding:.1rem .45rem;font-size:.58rem}.archive-btn{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;border:none;border-bottom:1px solid var(--border);cursor:pointer;background:0 0;align-items:center;gap:.4rem;margin-top:1.8rem;padding-bottom:2px;font-family:inherit;font-size:.65rem;transition:color .15s,border-color .15s;display:inline-flex}.archive-btn:hover{color:var(--accent);border-bottom-color:#39ff8a4d}.exp-item{border-bottom:1px solid var(--border-dim);grid-template-columns:1fr auto;gap:1rem;padding:1.4rem 0;display:grid}.exp-item:last-child{border-bottom:none}.exp-role{letter-spacing:-.01em;color:var(--text);margin-bottom:.15rem;font-family:Syne,sans-serif;font-size:.92rem;font-weight:700}.exp-company{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.5rem;font-size:.65rem}.exp-desc{color:var(--muted);font-size:.75rem;line-height:1.75}.exp-date{color:var(--muted);white-space:nowrap;text-align:right;letter-spacing:.04em;padding-top:.25rem;font-size:.62rem}.skills-list{flex-wrap:wrap;gap:.45rem;display:flex}.skill{color:var(--muted);border:1px solid var(--border-dim);letter-spacing:.04em;cursor:default;padding:.3rem .8rem;font-size:.68rem;transition:all .15s}.skill:hover{color:var(--accent);background:var(--accent-dim);border-color:#39ff8a40}#archive-page{padding-top:2.4rem;display:none}#archive-page.active{animation:.4s forwards up;display:block}.back-btn{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;border:none;border-bottom:1px solid var(--border);cursor:pointer;background:0 0;align-items:center;gap:.4rem;margin-bottom:3.5rem;padding-bottom:2px;font-family:inherit;font-size:.65rem;transition:color .15s,border-color .15s;display:inline-flex}.back-btn:hover{color:var(--accent);border-bottom-color:#39ff8a4d}.archive-title{letter-spacing:-.03em;color:var(--text);margin-bottom:.4rem;font-family:Syne,sans-serif;font-size:2.5rem;font-weight:800}.archive-sub{color:var(--muted);margin-bottom:3rem;font-size:.75rem}.archive-table{border-collapse:collapse;width:100%}.archive-table th{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--border-dim);padding:0 0 .9rem;font-size:.58rem;font-weight:400}.archive-table th:last-child{text-align:right}.archive-table td{border-bottom:1px solid var(--border-dim);color:var(--muted);vertical-align:middle;padding:1rem 0;font-size:.73rem}.archive-table tr:last-child td{border-bottom:none}.archive-table td:first-child{color:var(--text);white-space:nowrap;padding-right:1.2rem;font-family:Syne,sans-serif;font-size:.88rem;font-weight:700}.archive-table td:last-child{text-align:right;white-space:nowrap}.archive-table a{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-left:.9rem;font-size:.65rem;text-decoration:none;transition:color .15s}.archive-table a:first-child{margin-left:0}.archive-table a:hover{color:var(--accent)}footer{border-top:1px solid var(--border-dim);justify-content:space-between;align-items:center;padding:3rem 0 5rem;display:flex}.footer-email{letter-spacing:-.02em;color:var(--text);font-family:Syne,sans-serif;font-size:1.15rem;font-weight:800;text-decoration:none;transition:color .15s}.footer-email:hover{color:var(--accent)}.footer-links{gap:1.5rem;display:flex}.footer-links a{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.65rem;text-decoration:none;transition:color .15s}.footer-links a:hover{color:var(--accent)}.lightbox{z-index:999;cursor:zoom-out;background:#000000eb;justify-content:center;align-items:center;padding:2rem;display:none;position:fixed;inset:0}.lightbox.open{display:flex}.lightbox img{object-fit:contain;border:1px solid var(--border);max-width:100%;max-height:88vh}.lightbox-close{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:.65rem;transition:color .15s;position:fixed;top:1.4rem;right:1.6rem}.lightbox-close:hover{color:var(--accent)}@keyframes up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.25}}
