@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&display=swap";
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-base:1rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.fixed{position:fixed}.start{inset-inline-start:var(--spacing)}.block{display:block}.flex{display:flex}.hidden{display:none}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}@font-face{font-family:HK Grotesk;src:url(/public/fonts/HKGrotesk-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--bg:#050505;--bg-1:#080808;--bg-2:#0a0a0a;--bg-3:#0c0c0c;--bg-4:#0e0e0e;--border:#111;--border-1:#161616;--border-2:#1e1e1e;--border-3:#222;--border-4:#2a2a2a;--text-white:#f0f0f0;--text-bright:#e8e8e8;--text-base:#d0d0d0;--text-muted:#a0a0a0;--text-dim:gray;--text-dark:#606060;--text-darker:#404040;--text-faint:#333;--accent-green:#4ade80;--accent-green-bg:#4ade8012;--accent-green-border:#4ade802e;--accent-green-pulse:#22c55e4d;--accent-green-solid:#22c55e;--accent-gold:#e0b13b;--accent-gold-bg:#fbbf2412;--accent-gold-border:#fbbf242e;--nav-bg:#0a0a0ae0;--nav-border:#ffffff14;--nav-link-hover-bg:#ffffff12;--nav-btn-hover-bg:#ffffff12;--card-bg:var(--bg-1);--card-border:var(--border-1);--chip-bg:#ffffff0a;--chip-border:#ffffff12;--chip-bg-hover:#ffffff14;--chip-border-hover:#ffffff24;--chip-color:#999;--chip-color-hover:#e8e8e8;--stack-icon-bg:var(--bg-4);--stack-icon-border:var(--border-2);--stack-icon-hover-bg:var(--bg-3);--stack-icon-hover-border:var(--border-4);--stack-tooltip-bg:var(--bg-4);--stack-tooltip-border:var(--border-4);--scrollbar-thumb:#1a1a1a;--scrollbar-thumb-hover:var(--border-4);--btn-dark-bg:#1c1c1c;--btn-dark-border:#2e2e2e;--btn-dark-color:var(--text-white);--btn-dark-hover-bg:#242424;--btn-dark-hover-border:#3a3a3a;--btn-ghost-border:#2a2a2a;--btn-ghost-color:var(--text-bright);--btn-ghost-hover-border:#444;--btn-ghost-hover-color:var(--text-white);--btn-ghost-hover-bg:#ffffff0a;--font-display:"Plus Jakarta Sans", sans-serif;--font-body:"Plus Jakarta Sans", sans-serif;--font-mono:"IBM Plex Mono", monospace;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-extrabold:800;--fs-10:10px;--fs-11:11px;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-15:15px;--fs-16:16px;--fs-section:36px;--fs-contact-h:clamp(40px, 6vw, 68px);--gap-xs:6px;--gap-sm:10px;--gap-md:14px;--gap-lg:18px;--r-sm:6px;--r-md:8px;--r-lg:10px;--r-xl:14px;--r-2xl:16px;--r-pill:100px;--shadow-nav:0 1px 0 #ffffff0a inset, 0 8px 40px #0009, 0 2px 8px #00000080;--transition-fast:all .15s ease;--transition-base:all .25s cubic-bezier(.16, 1, .3, 1);--transition-reveal:opacity .75s cubic-bezier(.16, 1, .3, 1), transform .75s cubic-bezier(.16, 1, .3, 1);--page-max-width:780px;--page-padding:0 28px 120px}html.light{--bg:#ede9e0;--bg-1:#e8e4da;--bg-2:#e3ded3;--bg-3:#ddd8cc;--bg-4:#d8d2c5;--border:#d2cbbf;--border-1:#c9c1b3;--border-2:#c0b7a8;--border-3:#b6ac9c;--border-4:#aca08f;--text-white:#111;--text-bright:#1a1a1a;--text-base:#2a2a2a;--text-muted:#4a4a4a;--text-dim:#5e5e5e;--text-dark:#787878;--text-darker:#909090;--text-faint:#adadad;--accent-gold:#9a6a06;--accent-gold-bg:#9a6a0617;--accent-gold-border:#9a6a0638;--accent-green:#15803d;--accent-green-bg:#15803d14;--accent-green-border:#15803d38;--accent-green-solid:#15803d;--accent-green-pulse:#15803d38;--nav-bg:#fffcf5ad;--nav-border:#0000001a;--nav-link-hover-bg:#0000000e;--nav-btn-hover-bg:#0000000e;--card-bg:#fffcf599;--card-border:var(--border-1);--chip-bg:#fffcf58c;--chip-border:#a0948061;--chip-bg-hover:#fffcf5d9;--chip-border-hover:#8c806c8c;--chip-color:#565046;--chip-color-hover:#1a1714;--stack-icon-bg:#fffcf58c;--stack-icon-border:#a0948061;--stack-icon-hover-bg:#fffcf5e6;--stack-icon-hover-border:#8c806c8c;--stack-tooltip-bg:#1c1c1c;--stack-tooltip-border:#333;--scrollbar-thumb:#c5bcad;--scrollbar-thumb-hover:var(--border-4);--btn-dark-bg:#1c1c1c;--btn-dark-border:#333;--btn-dark-color:#f0f0f0;--btn-dark-hover-bg:#2a2a2a;--btn-dark-hover-border:#444;--btn-ghost-border:#a094808c;--btn-ghost-color:var(--text-bright);--btn-ghost-hover-border:#827662b3;--btn-ghost-hover-color:var(--text-white);--btn-ghost-hover-bg:#0000000a;--shadow-nav:0 1px 0 #ffffffe6 inset, 0 8px 32px #5a4b321f, 0 2px 6px #5a4b3214}html.light .nav-bar{background:var(--nav-bg);-webkit-backdrop-filter:blur(32px)saturate(200%)brightness(1.06);border:1px solid #afa28c4d;box-shadow:inset 0 1px #ffffffeb,inset 0 -1px #7869500f,0 8px 28px #5a4b321c,0 2px 6px #5a4b3212}html.light .exp-card,html.light .proj-card{background:var(--card-bg);-webkit-backdrop-filter:blur(24px)saturate(180%)brightness(1.04);border:1px solid #afa28c47;box-shadow:inset 0 1px #ffffffe0,inset 0 -1px #7869500d,0 4px 20px #5a4b3217,0 1px 4px #5a4b320f}html.light .stack-icon{background:var(--stack-icon-bg);-webkit-backdrop-filter:blur(14px)saturate(160%)brightness(1.05);border:1px solid #afa28c52;box-shadow:inset 0 1px #ffffffd1,0 2px 8px #5a4b3214}html.light .stack-icon:hover{background:var(--stack-icon-hover-bg);border-color:#9b8c7680;box-shadow:inset 0 1px #fffffff2,0 12px 28px #5a4b3224,0 2px 6px #5a4b3217}html.light .exp-tech-chip{background:var(--chip-bg);-webkit-backdrop-filter:blur(10px);border:1px solid var(--chip-border);box-shadow:inset 0 1px #ffffffb8}html.light .exp-tech-chip:hover{background:var(--chip-bg-hover);border-color:var(--chip-border-hover)}html.light .proj-tech-icon{background:var(--chip-bg);-webkit-backdrop-filter:blur(10px);border:1px solid var(--chip-border);box-shadow:inset 0 1px #ffffffb8}html.light .proj-tech-icon:hover{background:var(--chip-bg-hover);border-color:var(--chip-border-hover)}html.light .exp-header{border-bottom-color:#aa9e884d}html.light .proj-img-wrap{background:#dcd6cc80}html{background:var(--bg);scroll-behavior:auto}html.theme-transitioning :not(html):not(body):not(img):not(svg):not(canvas):not(.theme-ripple-svg){transition-property:background-color,border-color,color,box-shadow;transition-duration:.32s;transition-timing-function:cubic-bezier(.4,0,.2,1)}html.theme-transitioning,html.theme-transitioning body{transition:none!important}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text-base);font-family:var(--font-body);font-size:var(--fs-16);font-weight:var(--fw-regular);-webkit-font-smoothing:antialiased;line-height:1.6;overflow-x:hidden}a{text-decoration:none}body:before{content:"";z-index:9998;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");position:fixed;inset:0;transition:none!important}.theme-ripple-svg{pointer-events:none;z-index:9999;width:100%;height:100%;position:fixed;inset:0;transition:none!important}@keyframes theme-ripple-expand{0%{r:0px;opacity:1}to{r:2200px;opacity:1}}[data-reveal]{opacity:0;transform:translateY(18px);transition:var(--transition-reveal)!important}[data-reveal].in{opacity:1;transform:none}@keyframes livepulse{0%,to{opacity:1;box-shadow:0 0 0 0 var(--accent-green-pulse)}50%{opacity:.8;box-shadow:0 0 0 5px #22c55e00}}@keyframes mq{0%{transform:translate(0)}to{transform:translate(-50%)}}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.nav-mask{z-index:99;pointer-events:none;height:110px;position:fixed;top:0;left:0;right:0;transition:none!important}.nav-mask:before{content:"";background:linear-gradient(to bottom, var(--bg) 0%, var(--bg) 20%, var(--bg) 50%, var(--bg) 75%, transparent 100%);position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.nav-mask:before{background:linear-gradient(to bottom, var(--bg) 0%, color-mix(in srgb, var(--bg) 95%, transparent) 20%, color-mix(in srgb, var(--bg) 70%, transparent) 50%, color-mix(in srgb, var(--bg) 20%, transparent) 75%, transparent 100%)}}.nav-mask:after{content:"";-webkit-backdrop-filter:blur(16px);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0% 30%,#0000 100%);mask-image:linear-gradient(#000 0% 30%,#0000 100%)}.nav{z-index:100;pointer-events:none;justify-content:center;padding:0 16px;display:flex;position:fixed;top:14px;left:0;right:0}.nav-pill{pointer-events:all;background:var(--nav-bg);-webkit-backdrop-filter:blur(32px)saturate(180%);border:1px solid var(--nav-border);border-radius:var(--r-xl);box-shadow:var(--shadow-nav);align-items:center;width:100%;max-width:660px;padding:5px 8px 5px 12px;display:flex}.nav-brand{align-items:center;gap:var(--gap-sm);margin-right:4px;display:flex}.nav-avatar{background:var(--bg-2);border:1px solid var(--border-4);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:flex;overflow:hidden}.nav-name{font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-bold);color:var(--text-white);letter-spacing:-.02em;white-space:nowrap}.nav-div{background:var(--border-2);width:1px;height:18px;margin:0 var(--gap-sm);flex-shrink:0}.nav-links{flex:1}.nav-cta{align-items:center;gap:var(--gap-xs);font-family:var(--font-body);font-size:var(--fs-12);font-weight:var(--fw-semibold);background:var(--text-white);color:var(--bg);border-radius:var(--r-lg);white-space:nowrap;transition:var(--transition-fast);flex-shrink:0;padding:7px 15px;display:inline-flex}.nav-cta:hover{opacity:.88;transform:translateY(-1px)}.ldot{background:var(--accent-green-solid);border-radius:50%;flex-shrink:0;width:6px;height:6px;animation:2s infinite livepulse;display:inline-block}.page>*{width:100%}.nav-bar{z-index:100;max-width:var(--page-max-width);background:var(--nav-bg);width:100%;-webkit-backdrop-filter:blur(24px) saturate(160%) brightness(var(--nav-blur-brightness,1));border-radius:var(--r-xl);border:1px solid var(--nav-border);margin:16px auto 0;position:sticky;top:16px}.nav-inner{align-items:center;gap:4px;padding:8px 12px;display:flex}.nav-avatar-img{background:var(--bg-2);border:1px solid var(--border-2);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;margin-right:4px;font-size:16px;display:flex;overflow:hidden}.nav-avatar-img img{object-fit:cover;width:100%;height:100%}.nav-links{flex:1;align-items:center;gap:2px;display:flex}.nav-a{font-family:var(--font-body);font-size:var(--fs-14);font-weight:var(--fw-medium);color:var(--text-muted);border-radius:var(--r-md);transition:var(--transition-fast);white-space:nowrap;padding:5px 12px}.nav-a:hover{color:var(--text-white);background:var(--nav-link-hover-bg)}.nav-theme-btn{border-radius:var(--r-md);width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:flex;position:relative;overflow:hidden;transition:background .15s,color .15s!important}.nav-theme-btn:hover{background:var(--nav-btn-hover-bg);color:var(--text-white)}.theme-icon{justify-content:center;align-items:center;display:flex;position:absolute;transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .35s cubic-bezier(.4,0,.2,1)!important}.theme-icon--moon{opacity:1;transform:rotate(0)scale(1)}.theme-icon--sun{opacity:0;transform:rotate(90deg)scale(.4)}html.light .theme-icon--moon{opacity:0;transform:rotate(-90deg)scale(.4)}html.light .theme-icon--sun{opacity:1;transform:rotate(0)scale(1)}.page{max-width:var(--page-max-width);width:100%;margin:0 auto;padding:0 28px 120px}.hero{min-height:100vh;padding-top:100px;padding-bottom:80px}.hero-avatar{background:var(--bg-2);border:2px solid var(--border-4);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:72px;height:72px;margin-bottom:24px;font-size:32px;display:flex;overflow:hidden}.hero-avatar img{object-fit:cover;width:100%;height:100%}.hero-h1{font-family:var(--font-body);font-size:clamp(28px,4vw,38px);font-weight:var(--fw-extrabold);letter-spacing:-.03em;color:var(--text-white);margin-bottom:20px;line-height:1.2}.hero-h1-muted{color:var(--text-dim)}.hero-desc{font-family:var(--font-body);font-size:var(--fs-16);font-weight:var(--fw-regular);color:var(--text-muted);max-width:620px;margin-bottom:32px;line-height:1.85}.hero-desc strong{color:var(--text-bright);font-weight:var(--fw-bold)}.inline-badge{border-radius:var(--r-md);background:var(--chip-bg);border:1px solid var(--chip-border);font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-medium);color:var(--text-base);vertical-align:middle;white-space:nowrap;align-items:center;gap:5px;margin:0 1px;padding:2px 10px 2px 7px;line-height:1.6;display:inline-flex}.inline-badge-icon{font-size:13px;line-height:1}.hero-btns{flex-wrap:wrap;gap:10px;margin-bottom:36px;display:flex}.btn-dark{border-radius:var(--r-lg);background:var(--btn-dark-bg);border:1px solid var(--btn-dark-border);color:var(--btn-dark-color);font-family:var(--font-body);font-size:var(--fs-14);font-weight:var(--fw-semibold);white-space:nowrap;transition:var(--transition-fast);align-items:center;gap:8px;padding:11px 20px;display:inline-flex}.btn-dark:hover{background:var(--btn-dark-hover-bg);border-color:var(--btn-dark-hover-border);transform:translateY(-1px)}.btn-ghost{border-radius:var(--r-lg);border:1px solid var(--btn-ghost-border);color:var(--btn-ghost-color);font-family:var(--font-body);font-size:var(--fs-14);font-weight:var(--fw-medium);white-space:nowrap;transition:var(--transition-fast);background:0 0;align-items:center;gap:8px;padding:11px 20px;display:inline-flex}.btn-ghost:hover{border-color:var(--btn-ghost-hover-border);color:var(--btn-ghost-hover-color);background:var(--btn-ghost-hover-bg);transform:translateY(-1px)}.hero-socials{align-items:center;gap:20px;display:flex}.hero-social{color:var(--text-dark);align-items:center;transition:color .15s;display:flex}.hero-social:hover{color:var(--text-muted)}.div{background:var(--border);height:1px;margin:72px 0}.hero-stack-wrap{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.stack-icon{border-radius:var(--r-xl);background:var(--stack-icon-bg);border:1px solid var(--stack-icon-border);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex;position:relative;transition:transform .45s cubic-bezier(.34,1.56,.64,1),background .25s,border-color .25s,box-shadow .35s cubic-bezier(.16,1,.3,1)!important}.stack-icon img,.stack-icon svg{width:32px;height:32px;display:block;transition:transform .45s cubic-bezier(.34,1.56,.64,1)!important}.stack-icon:hover{background:var(--stack-icon-hover-bg);border-color:var(--stack-icon-hover-border);transform:translateY(-6px)scale(1.06);box-shadow:0 12px 32px #00000040,inset 0 0 0 1px #ffffff0f}.stack-icon:hover img,.stack-icon:hover svg{transform:scale(1.08)}.stack-tooltip{color:#f0f0f0;font-family:var(--font-body);font-size:var(--fs-12);font-weight:var(--fw-medium);white-space:nowrap;border-radius:var(--r-md);pointer-events:none;opacity:0;z-index:10;letter-spacing:.01em;background:#1a1a1a;border:1px solid #333;padding:5px 10px;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)translateY(6px);box-shadow:0 4px 16px #0006;transition:opacity .22s,transform .35s cubic-bezier(.34,1.56,.64,1)!important}.stack-tooltip:before{content:"";z-index:1;border:4px solid #0000;border-top-color:#1a1a1a;margin-top:-1px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.stack-tooltip:after{content:"";border:5px solid #0000;border-top-color:var(--stack-tooltip-border);position:absolute;top:100%;left:50%;transform:translate(-50%)}.stack-tooltip:before{content:"";border:4px solid #0000;border-top-color:var(--stack-tooltip-bg);z-index:1;margin-top:-1px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.stack-icon:hover .stack-tooltip{opacity:1;transform:translate(-50%)translateY(0)}.stack-label{font-family:var(--font-body);font-size:var(--fs-14);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-top:48px;margin-bottom:24px}.exp-section{padding-bottom:100px}.exp-label{font-family:var(--font-body);font-size:var(--fs-12);font-weight:var(--fw-medium);color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}.exp-heading{font-family:var(--font-body);font-size:28px;font-weight:var(--fw-extrabold);color:var(--text-white);letter-spacing:-.03em;margin-bottom:28px}.exp-list{border:none;flex-direction:column;gap:2px;display:flex}.exp-card{background:var(--card-bg);border-radius:var(--r-xl);border:none;padding:28px 32px}.exp-card:last-child{border-bottom:none}.exp-header{border-bottom:1px solid var(--border-2);align-items:center;gap:14px;margin-bottom:0;padding-bottom:20px;display:flex}.exp-logo{width:44px;min-width:44px;height:44px;font-size:var(--fs-13);font-weight:var(--fw-bold);letter-spacing:-.02em;flex-shrink:0;justify-content:center;align-items:center;display:flex}.exp-meta{flex:1;min-width:0}.exp-company-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.exp-company{font-family:var(--font-body);font-size:var(--fs-15);font-weight:var(--fw-bold);color:var(--text-white);letter-spacing:-.01em}.exp-status-badge{border-radius:var(--r-pill);background:var(--accent-green-bg);border:1px solid var(--accent-green-border);font-family:var(--font-body);font-size:var(--fs-11);font-weight:var(--fw-semibold);color:var(--accent-green);letter-spacing:.01em;align-items:center;gap:5px;padding:2px 8px;display:inline-flex}.exp-role{font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-regular);color:var(--text-muted);margin-top:2px}.exp-period-col{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.exp-period{font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-medium);color:var(--text-dim);white-space:nowrap}.exp-location{font-family:var(--font-body);font-size:var(--fs-12);color:var(--text-dark);white-space:nowrap}.exp-bullets{flex-direction:column;gap:14px;margin:22px 0 0;padding:0;list-style:none;display:flex}.text-gold{color:var(--accent-gold);font-weight:var(--fw-bold)}.exp-bullet{font-family:var(--font-body);font-size:15px;font-weight:var(--fw-regular);color:var(--text-muted);align-items:flex-start;gap:12px;line-height:1.85;display:flex}.exp-bullet-dot{background:var(--text-dim);border-radius:50%;flex-shrink:0;width:4px;height:4px;margin-top:11px}.exp-bullet-dot--gold{background:var(--accent-gold)}.exp-saas-link{color:var(--accent-gold);font-weight:var(--fw-semibold);letter-spacing:-.01em;transition:var(--transition-fast);text-decoration:none}.exp-saas-link:hover{opacity:.8}.exp-stack{margin-top:28px}.exp-stack-label{font-family:var(--font-body);font-size:var(--fs-11);font-weight:var(--fw-semibold);color:var(--text-dim);text-transform:uppercase;letter-spacing:.12em;margin-bottom:14px}.exp-stack-chips{flex-wrap:wrap;gap:8px;display:flex}.exp-tech-chip{border-radius:var(--r-md);background:var(--chip-bg);border:1px solid var(--chip-border);font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-medium);color:var(--chip-color);white-space:nowrap;transition:var(--transition-fast);cursor:default;align-items:center;gap:7px;padding:5px 12px 5px 9px;display:inline-flex}.exp-tech-chip:hover{background:var(--chip-bg-hover);border-color:var(--chip-border-hover);color:var(--chip-color-hover)}.exp-tech-chip-icon{opacity:.9;filter:brightness(1.1)}.proj-section{padding-bottom:100px}.proj-grid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}@media (max-width:620px){.proj-grid{grid-template-columns:1fr}}.proj-card{background:var(--card-bg);border-radius:var(--r-2xl);flex-direction:column;transition:background .2s;display:flex;overflow:hidden}.proj-card:hover{background:var(--bg-2)}.proj-img-wrap{aspect-ratio:16/9;width:100%;position:relative;overflow:hidden}.proj-img{object-fit:cover;object-position:top center;transition:transform .5s cubic-bezier(.16,1,.3,1);width:100%!important;height:100%!important}.proj-card:hover .proj-img{cursor:pointer;transform:scale(1.03)}.proj-img-placeholder{width:100%;height:100%}.proj-body{flex-direction:column;flex:1;gap:10px;padding:20px 22px 18px;display:flex}.proj-title-row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.proj-title{font-family:var(--font-body);font-size:var(--fs-16);font-weight:var(--fw-bold);color:var(--text-white);letter-spacing:-.02em;line-height:1.3}.proj-links{flex-shrink:0;align-items:center;gap:6px;margin-top:2px;display:flex}.proj-link-btn{border-radius:var(--r-md);width:28px;height:28px;color:var(--text-bright);transition:var(--transition-fast);justify-content:center;align-items:center;display:flex}.proj-link-btn:hover{color:var(--text-muted);background:var(--chip-bg-hover)}.proj-desc{font-size:var(--fs-12);color:var(--text-dark);flex:1;line-height:1.7;transition:color .2s}.proj-card:hover .proj-desc{color:var(--text-dim)}.proj-tech-wrap{flex-direction:column;gap:8px;display:flex}.proj-tech-label{font-family:var(--font-body);font-size:var(--fs-11);font-weight:var(--fw-medium);color:var(--text-dark);text-transform:uppercase;letter-spacing:.1em}.proj-tech-icons{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.proj-tech-icon{border-radius:var(--r-sm);background:var(--chip-bg);border:1px solid var(--chip-border);width:28px;height:28px;transition:var(--transition-fast);justify-content:center;align-items:center;display:flex}.proj-tech-icon:hover{background:var(--chip-bg-hover);border-color:var(--chip-border-hover)}.proj-tech-icon-img{opacity:.85;filter:brightness(1.05)}.proj-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:auto;padding-top:12px;display:flex}.proj-status{font-family:var(--font-body);font-size:var(--fs-12);font-weight:var(--fw-semibold);border-radius:var(--r-pill);align-items:center;gap:6px;padding:4px 10px 4px 8px;display:inline-flex}.proj-status--live{font-size:var(--fs-11);font-weight:var(--fw-medium);color:var(--accent-green);background:0 0;border:none;align-items:center;gap:5px;padding:0;display:inline-flex}.proj-status--wip{background:var(--accent-gold-bg);border:1px solid var(--accent-gold-border);color:var(--accent-gold)}.ldot--gold{background:var(--accent-gold);animation:none}.proj-view-link{font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-medium);color:var(--text-dim);transition:var(--transition-fast);white-space:nowrap;text-decoration:none}.proj-view-link:hover{color:var(--text-white)}@media (max-width:540px){.exp-bullets{padding-left:0}.exp-period-col{display:none}}.hero-hackathons{flex-direction:column;gap:6px;margin-bottom:32px;display:flex}.ach-meta{white-space:nowrap;flex-shrink:0;align-items:center;gap:8px;display:flex}.hack-chip{border-radius:var(--r-lg);border:1px solid var(--border-2);width:fit-content;transition:var(--transition-fast);background:#ffffff08;align-items:center;gap:10px;padding:7px 14px 7px 10px;display:inline-flex}.hack-chip:hover{border-color:var(--border-4);background:#ffffff0d}.hack-chip--live{background:var(--accent-gold-bg);border-color:var(--accent-gold-border)}.hack-medal{flex-shrink:0;font-size:15px;line-height:1}.hack-body{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.hack-label{font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-semibold);color:var(--text-bright);white-space:nowrap}.hack-event{font-family:var(--font-body);font-size:var(--fs-13);font-weight:var(--fw-regular);color:var(--text-dim);white-space:nowrap}html.light .hack-chip{background:#00000008}html.light .hack-chip:hover{background:#0000000e}html.light .hack-chip--live{background:var(--accent-gold-bg)}.hero-inline-link{color:var(--accent-gold);font-weight:var(--fw-semibold);text-decoration:none;transition:opacity .15s}.hero-inline-link:hover{opacity:.75}.hero-strong{color:var(--text-bright);font-weight:var(--fw-bold)}.ach-section{padding-bottom:100px}.ach-list{background:var(--border-1);border-radius:var(--r-xl);flex-direction:column;gap:1px;display:flex;overflow:hidden}.ach-row{background:var(--bg-1);cursor:default;grid-template:"rank meta""rank body"/36px 1fr;gap:0 16px;padding:20px;transition:background .35s cubic-bezier(.16,1,.3,1);display:grid;position:relative}.ach-row:before{content:"";background:var(--accent-gold);transform-origin:50%;border-radius:0 1px 1px 0;width:2px;transition:transform .4s cubic-bezier(.34,1.56,.64,1);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.ach-row:hover{background:var(--bg-3)}.ach-row:hover:before{transform:scaleY(1)}.ach-rank{font-family:var(--font-mono);font-size:var(--fs-14);font-weight:var(--fw-medium);color:var(--text-dim);font-variant-numeric:tabular-nums;grid-area:rank;padding-top:3px;transition:color .25s}.ach-rank--first{color:var(--accent-gold)}.ach-row:hover .ach-rank{color:var(--text-bright)}.ach-row:hover .ach-rank--first{color:var(--accent-gold);filter:brightness(1.15)}.ach-top{border-bottom:1px solid var(--border-2);flex-wrap:wrap;grid-area:meta;align-items:center;gap:8px;padding-bottom:10px;transition:border-color .3s;display:flex}.ach-row:hover .ach-top{border-color:var(--border-4)}.ach-prize{font-size:var(--fs-11);font-weight:var(--fw-semibold);color:var(--accent-gold);white-space:nowrap;flex-shrink:0;padding:2px 9px;transition:background .25s,border-color .25s}.ach-row:hover .ach-prize{background:#fbbf241f;border-color:#fbbf2447}.ach-event{font-size:var(--fs-12);color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;min-width:0;line-height:1.5;transition:color .3s;overflow:hidden}.ach-row:hover .ach-event{color:var(--text-muted)}.ach-divider-el{display:none}.ach-body{flex-direction:column;grid-area:body;min-width:0;padding-top:10px;display:flex}.ach-title{font-size:var(--fs-14);font-weight:var(--fw-semibold);color:var(--text-bright);letter-spacing:-.02em;line-height:1.3;transition:color .25s,letter-spacing .3s}.ach-row:hover .ach-title{color:var(--text-white);letter-spacing:-.025em}.ach-desc{font-size:var(--fs-12);color:var(--text-dim);opacity:0;max-height:0;margin-top:0;line-height:1.7;transition:max-height .5s cubic-bezier(.16,1,.3,1),opacity .4s cubic-bezier(.16,1,.3,1) 50ms,margin-top .5s cubic-bezier(.16,1,.3,1),transform .45s cubic-bezier(.16,1,.3,1) 50ms;overflow:hidden;transform:translateY(-4px)}.ach-row:hover .ach-desc{opacity:1;max-height:80px;margin-top:8px;transform:translateY(0)}@media (min-width:640px){.ach-row{grid-template:"rank meta divider body"/36px minmax(160px,200px) 1px 1fr;align-items:start;gap:20px;padding:22px 28px}.ach-top{border-bottom:none;flex-direction:column;align-items:flex-start;gap:5px;padding-top:2px;padding-bottom:0}.ach-body{padding-top:2px}.ach-divider-el{background:var(--border-2);align-self:stretch;width:1px;transition:background .3s;display:block}.ach-row:hover .ach-divider-el{background:var(--border-4)}}@media (max-width:380px){.ach-row{gap:0 10px;padding:16px 14px}.ach-rank{font-size:var(--fs-12)}.ach-title{font-size:var(--fs-13)}}.ach-event--shiny{background:linear-gradient(90deg, var(--text-dim) 0%, var(--text-dim) 30%, #fffc 48%, #fffffff2 50%, #fffc 52%, var(--text-dim) 70%, var(--text-dim) 100%);-webkit-text-fill-color:transparent;background-size:250%;-webkit-background-clip:text;background-clip:text;animation:3.5s linear infinite sheen}html.light .ach-event--shiny{background:linear-gradient(90deg, var(--text-dim) 0%, var(--text-dim) 30%, #b48c3ce6 48%, #d2aa50 50%, #b48c3ce6 52%, var(--text-dim) 70%, var(--text-dim) 100%);-webkit-text-fill-color:transparent;background-size:250%;-webkit-background-clip:text;background-clip:text}@keyframes sheen{0%{background-position:200%}to{background-position:-50%}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
