@font-face{font-family:Syne;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/syne-greek-800-normal-n2LZS_yH.woff2)format("woff2"),url(/assets/syne-greek-800-normal-DtzFnRR0.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Syne;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/syne-latin-ext-800-normal-CAQAsWuS.woff2)format("woff2"),url(/assets/syne-latin-ext-800-normal-B2iBRfEf.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/syne-latin-800-normal-EehdNYzx.woff2)format("woff2"),url(/assets/syne-latin-800-normal-BuJcbPcX.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2)format("woff2"),url(/assets/dm-sans-latin-500-normal-Dr3UlScf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-mono-latin-ext-400-normal-C2zvOubV.woff2)format("woff2"),url(/assets/dm-mono-latin-ext-400-normal-1aZr6b2b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-mono-latin-400-normal-4GdczIuU.woff2)format("woff2"),url(/assets/dm-mono-latin-400-normal--0xN8mdc.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--night:#1d1828;--panel:#f6efe2;--panel-ink:#1d2230;--panel-soft:#565b6b;--line:#1d223024;--cream:#f6efe2;--dim:#a9b1c4;--amber:#ffb35c;--coral:#d9583f;--display:"Syne", "Arial Black", sans-serif;--body:"DM Sans", "Segoe UI", sans-serif;--mono:"DM Mono", Consolas, monospace}*{box-sizing:border-box;margin:0}html,body{background:var(--night);height:100%;color:var(--cream);font:16px/1.5 var(--body);overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}a{color:inherit}:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:4px}#scene{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:fixed;inset:0}#scene.dragging{cursor:grabbing}#scene.pointing{cursor:pointer}.brand{z-index:2;pointer-events:none;transition:opacity .4s,transform .6s cubic-bezier(.2,.8,.2,1);position:fixed;top:clamp(16px,3vw,36px);left:clamp(18px,3vw,44px)}h1{font:800 clamp(40px, 5vw, 76px)/.95 var(--display);letter-spacing:-.03em}.brand p{color:var(--dim);max-width:16em;margin-top:12px;font-size:clamp(16px,1.5vw,20px)}.brand b{color:var(--amber);font-weight:500}body.open .brand{opacity:0;transform:translateY(-14px)}.menu{z-index:3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);scrollbar-width:none;background:#1d1828d9;border:1px solid #fff2;border-radius:999px;gap:2px;max-width:calc(100vw - 20px);padding:5px;display:flex;position:fixed;bottom:clamp(14px,3vh,28px);left:50%;overflow-x:auto;transform:translate(-50%)}.menu button{color:var(--dim);white-space:nowrap;border-radius:999px;padding:8px 15px;font-size:14px;transition:background .2s,color .2s}.menu button:hover{color:var(--cream)}.menu button[aria-current=true]{background:var(--cream);color:var(--panel-ink)}#tip{z-index:4;background:var(--cream);color:var(--panel-ink);pointer-events:none;opacity:0;white-space:nowrap;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;transition:opacity .15s;position:fixed;top:0;left:0}#panel{z-index:3;visibility:hidden;border-radius:18px;width:min(470px,100vw - 20px);padding:clamp(22px,2.6vw,34px);transition:transform .65s cubic-bezier(.2,.85,.2,1);position:fixed;top:clamp(10px,2vw,28px);bottom:76px;right:clamp(10px,2vw,28px);overflow-y:auto;transform:translate(calc(100% + 40px))}body.open #panel{visibility:visible;transform:none}#loader{z-index:9;background:var(--night);font:700 22px var(--display);place-items:center;transition:opacity .7s;display:grid;position:fixed;inset:0}#fallback{padding:24px;display:none;position:fixed;inset:0;overflow:auto}@media (width<=800px){#panel{width:auto;height:62vh;inset:auto 10px 66px;transform:translateY(calc(100% + 80px))}.brand p{max-width:18em}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}#panel{--sec:#7cf2c8;background:color-mix(in srgb, var(--sec) 11%, #0b101ee8);color:var(--cream);border:1px solid color-mix(in srgb, var(--sec) 38%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);scrollbar-color:color-mix(in srgb, var(--sec) 45%, transparent) transparent;scrollbar-width:thin;overflow-anchor:none;box-shadow:0 24px 70px #0009}#panel .eyebrow{font:12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--sec)}#panel h2{font:700 clamp(29px, 2.9vw, 40px)/1.03 var(--display);letter-spacing:-.02em;margin-top:8px;padding-right:36px}#panel .lead{color:var(--dim);margin-top:9px;font-size:15px}#close{width:38px;height:38px;color:var(--cream);border:1px solid #ffffff2e;border-radius:50%;font-size:18px;line-height:1;transition:background .2s,color .2s,transform .25s;position:absolute;top:16px;right:16px}#close:hover{background:var(--sec);color:#0b101e;transform:rotate(90deg)}#panel .view{gap:12px;margin-top:20px;display:grid}#panel .sub{font:600 13px var(--body);color:var(--dim);margin-top:6px}#panel small{color:var(--dim)}.in{animation:.55s cubic-bezier(.2,.85,.2,1) both card-in;animation-delay:calc(var(--i,0) * 55ms + .12s)}@keyframes card-in{0%{opacity:0;transform:translate(26px)}}.acc{background:#ffffff0a;border:1px solid #ffffff1c;border-radius:14px;list-style:none;transition:border-color .25s,background .25s,transform .25s}.acc:hover{border-color:color-mix(in srgb, var(--sec) 60%, transparent);transform:translate(-3px)}.acc.open{border-color:var(--sec);background:color-mix(in srgb, var(--sec) 10%, #ffffff06)}.acc-head{text-align:left;align-items:center;gap:13px;width:100%;padding:13px 14px;display:flex}.acc-title{flex:1;gap:2px;min-width:0;display:grid}.acc-title strong{font:700 16px/1.2 var(--display)}.acc-title small{font-size:13px;line-height:1.3}.acc-title .tagline{font:11px var(--mono);color:var(--sec)}.badge{background:var(--sec);color:#0b101e;width:50px;height:34px;font:500 13px var(--mono);border-radius:9px;flex:none;place-items:center;display:grid}.chev{border-right:2px solid var(--sec);border-bottom:2px solid var(--sec);flex:none;width:9px;height:9px;margin-right:5px;transition:transform .3s;transform:rotate(45deg)}.acc.open .chev{transform:rotate(-135deg)}.acc-body{grid-template-rows:0fr;transition:grid-template-rows .4s cubic-bezier(.2,.85,.2,1);display:grid}.acc-body>div{visibility:hidden;min-height:0;padding-inline:14px;transition:visibility .4s;overflow:hidden}.acc.open .acc-body{grid-template-rows:1fr}.acc.open .acc-body>div{visibility:visible;padding-bottom:15px}.acc-body p{color:#dbe0ec;font-size:14.5px}.acc-body .meta{font:12px var(--mono);margin-bottom:7px;display:block}.acc-body ul{gap:7px;margin:10px 0 0;padding:0;list-style:none;display:grid}.acc-body li{color:var(--dim);padding-left:15px;font-size:14px;position:relative}.acc-body li:before{content:"";background:var(--sec);border-radius:2px;width:6px;height:6px;position:absolute;top:.55em;left:0}.tags{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.tags span{color:var(--sec);border:1px solid color-mix(in srgb, var(--sec) 45%, transparent);border-radius:999px;padding:3px 10px;font-size:12.5px}.tags.strong span{background:var(--sec);color:#0b101e;border-color:#0000;font-weight:600}.timeline{gap:11px;margin:0;padding:0 0 0 16px;display:grid;position:relative}.timeline:before{content:"";background:color-mix(in srgb, var(--sec) 40%, transparent);width:2px;position:absolute;top:16px;bottom:16px;left:3px}.timeline .acc{position:relative}.timeline .acc:before{content:"";border:2px solid var(--sec);background:#0e1422;border-radius:50%;width:10px;height:10px;transition:background .2s;position:absolute;top:24px;left:-18px}.timeline .acc.open:before{background:var(--sec);box-shadow:0 0 12px var(--sec)}.projects{gap:11px;display:grid}.project[hidden]{display:none}.project .acc-head img,.thumb{object-fit:cover;object-position:top;border-radius:9px;flex:none;width:66px;height:50px}.thumb{background:color-mix(in srgb, var(--sec) 25%, #0b101e);color:var(--sec);font:700 17px var(--display);text-transform:uppercase;place-items:center;display:grid}.project.open .acc-head img{opacity:0;width:0;margin-right:-13px}.project .acc-head img{transition:opacity .2s}img.wide{aspect-ratio:16/9;object-fit:cover;object-position:top;border-radius:10px;width:100%;margin-bottom:11px;display:block}.actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.action{border:1px solid color-mix(in srgb, var(--sec) 55%, transparent);color:var(--cream);font:600 14px var(--body);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:5px;padding:10px 15px;text-decoration:none;transition:background .2s,color .2s,transform .2s;display:inline-flex}.action:hover{background:var(--sec);color:#0b101e;transform:translateY(-2px)}.action.solid{background:var(--sec);color:#0b101e;border-color:#0000}.action.solid:hover{background:var(--cream)}.filters{flex-wrap:wrap;gap:6px;display:flex}.filters button{color:var(--dim);border:1px solid #ffffff26;border-radius:999px;padding:7px 13px;font-size:13.5px;transition:all .2s}.filters button:hover{color:var(--cream);border-color:var(--sec)}.filters button[aria-pressed=true]{background:var(--sec);color:#0b101e;border-color:#0000;font-weight:600}.stats{grid-template-columns:repeat(4,1fr);gap:8px;margin:0;display:grid}.stat{text-align:center;background:#ffffff0d;border-radius:12px;padding:12px 6px}.stat dd{font:800 27px/1 var(--display);color:var(--sec);margin:0}.stat dt{color:var(--dim);margin-top:5px;font-size:11.5px}.grid2{grid-template-columns:1fr 1fr;gap:9px;display:grid}.tile{text-align:left;background:#ffffff0a;border:1px solid #ffffff1c;border-radius:13px;align-content:start;gap:5px;padding:13px;transition:all .25s;display:grid}.tile strong{font:700 14.5px/1.2 var(--display)}.tile span{color:var(--dim);font-size:12.5px;line-height:1.35;display:none}.tile:hover{border-color:var(--sec);transform:translateY(-2px)}.tile[aria-pressed=true]{border-color:var(--sec);background:color-mix(in srgb, var(--sec) 12%, transparent);order:-1;grid-column:1/-1}.tile[aria-pressed=true] span{color:#dbe0ec;font-size:14px;display:block}.card.static{background:#ffffff0a;border:1px solid #ffffff1c;border-radius:13px;gap:2px;padding:13px 14px;display:grid}.card.static strong{font:700 15.5px var(--display)}.card.static span{color:var(--dim);font-size:13.5px}.skill-list{flex-wrap:wrap;align-content:flex-start;gap:7px;min-height:76px;display:flex}.skill{background:#ffffff0a;border:1px solid #ffffff24;border-radius:10px;padding:8px 13px;font-size:14px;transition:all .2s}.skill:hover{border-color:var(--sec);transform:translateY(-2px)}.skill[aria-pressed=true]{border-color:var(--sec);color:var(--sec);background:color-mix(in srgb, var(--sec) 14%, transparent)}.evidence{border:1px dashed color-mix(in srgb, var(--sec) 50%, transparent);border-radius:13px;min-height:88px;padding:14px}.evidence p{color:var(--dim);margin-top:6px;font-size:14px}.certs{gap:8px;margin:0;padding:0;list-style:none;display:grid}.cert{text-align:left;background:#ffffff0a;border:1px solid #ffffff1c;border-radius:12px;align-items:center;gap:13px;width:100%;padding:10px 13px 10px 10px;transition:all .22s;display:flex}.cert:hover,.cert:focus-visible,.cert[aria-pressed=true]{border-color:var(--sec);background:color-mix(in srgb, var(--sec) 12%, transparent);transform:translate(-6px)}.spine{background:var(--book);border-radius:3px;flex:none;width:13px;height:42px;transition:transform .22s;box-shadow:inset -3px 0 #0003}.cert:hover .spine,.cert[aria-pressed=true] .spine{transform:translateY(-3px)rotate(-5deg)}.mail{background:var(--sec);color:#0b101e;text-align:left;border-radius:13px;grid-template-columns:1fr auto;align-items:center;gap:2px 12px;width:100%;padding:14px;transition:transform .2s;display:grid}.mail:hover{transform:translateY(-2px)}#panel .mail small{color:#0b101ec0;grid-column:1;font-size:12px}.mail strong{font:700 15.5px var(--display);overflow-wrap:anywhere;grid-column:1}.mail span{color:var(--cream);background:#0b101e;border-radius:999px;grid-area:1/2/3;padding:6px 12px;font-size:13px}.letter{background:#ffffff0a;border:1px solid #ffffff1c;border-radius:13px;gap:6px;padding:14px;display:grid}.letter label{color:var(--dim);margin-top:4px;font-size:13px}.letter input,.letter textarea{width:100%;color:var(--cream);font:15px var(--body);resize:vertical;background:#0b101e99;border:1px solid #ffffff2a;border-radius:9px;padding:10px 12px}.letter input:focus,.letter textarea:focus{border-color:var(--sec);outline:none}.letter .action{border:0;margin-top:8px}.panel-nav{border-top:1px solid #ffffff1c;justify-content:space-between;gap:8px;margin-top:18px;padding-top:13px;display:flex}.panel-nav button{color:var(--dim);border-radius:999px;padding:7px 11px;font-size:13.5px;transition:color .2s,background .2s}.panel-nav button:hover{color:#0b101e;background:var(--sec)}#bubble{z-index:6;background:var(--cream);width:min(440px,100vw - 28px);color:var(--panel-ink);opacity:0;visibility:hidden;border-radius:16px;padding:16px 17px;position:fixed;bottom:82px;left:calc(50% + -1*min(220px,50vw - 14px));box-shadow:0 18px 50px #0009}#bubble.show{opacity:1;visibility:visible;animation:.4s cubic-bezier(.2,1.3,.4,1) bubble-pop}@keyframes bubble-pop{0%{opacity:0;scale:.9}}#bubble p{font-size:15.5px;font-weight:500;line-height:1.42}.bubble-actions{justify-content:flex-end;align-items:center;gap:8px;margin-top:12px;display:flex}.bubble-actions .count{font:12px var(--mono);color:var(--panel-soft);margin-right:auto}.bubble-actions button{color:var(--panel-ink);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600}.bubble-actions .quiet{color:var(--panel-soft);font-weight:500}.bubble-actions .quiet:hover{color:var(--panel-ink)}.bubble-actions .go{background:var(--panel-ink);color:var(--cream)}.bubble-actions .go:hover{background:var(--coral)}#ring{z-index:2;pointer-events:none;opacity:0;width:92px;height:92px;position:fixed;top:-46px;left:-46px}#ring.show{opacity:1}#ring:before,#ring:after{content:"";border:3px solid var(--amber);border-radius:50%;position:absolute;inset:0}#ring:after{animation:1.5s ease-out infinite ring-pulse}@keyframes ring-pulse{to{opacity:0;transform:scale(1.75)}}.menu .tour-btn{color:var(--amber)}@media (width<=800px){#bubble{bottom:74px}.stats{grid-template-columns:repeat(2,1fr)}}@media (prefers-reduced-motion:reduce){.in,#bubble.show,#ring:after{animation:none}}.simple-link{color:var(--dim);white-space:nowrap;border-radius:999px;padding:8px 15px;font-size:14px;text-decoration:none}.simple-link:hover{color:var(--cream)}
