*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root,[data-theme=dark]{--bg:#000;--fg:#fff;--fg-dim:#ffffff47;--fg-38:#ffffff8f;--fg-48:#ffffffa6;--fg-42:#fff9;--fg-26:#ffffff70;--fg-35:#ffffff85;--fg-32:#ffffff80;--fg-72:#ffffffd1;--fg-18:#ffffff5c;--fg-55:#ffffffad;--surface-04:#ffffff0a;--surface-06:#ffffff0f;--surface-08:#ffffff14;--surface-10:#ffffff1a;--border:#ffffff1a;--border-16:#ffffff29;--border-06:#ffffff0f;--border-22:#ffffff38;--card-hover-bg:#ffffff14;--card-hover-border:#ffffff38;--chip-hover-bg:#ffffff1a;--chip-hover-border:#ffffff47;--btn-solid-bg:#fff;--btn-solid-fg:#000;--btn-solid-hover:#ffffffd9;--btn-outline-fg:#ffffffb8;--btn-outline-border:#fff3;--btn-outline-hover-bg:#ffffff12;--btn-outline-hover-border:#fff6;--nav-bg:#141414c7;--nav-indicator:#ffffff21;--nav-indicator-border:#fff3;--nav-btn-fg:#ffffff80;--nav-btn-active:#fff;--nav-divider:#ffffff2e;--nav-tooltip-bg:#0f0f0fe0;--cursor-bg:#fff;--tag-bg:#ffffff0f;--tag-fg:#fff9;--sec-label-fg:#ffffff70;--sk-group-fg:#ffffff85;--sk-group-line:#ffffff1a;--sk-chip-bg:#ffffff0d;--sk-chip-fg:#ffffffd1;--sk-chip-icon:#ffffff8f;--sk-chip-top:#ffffff26;--c-row-border:#ffffff14;--c-icon-bg:#ffffff0f;--c-icon-border:#ffffff1f;--c-icon-stroke:#ffffffa6;--c-label-fg:#ffffff70;--c-val-fg:#ffffffd1;--c-arrow-fg:#ffffff5c;--proj-num-fg:#ffffff5c;--proj-title-fg:#fff;--proj-desc-fg:#fff9;--proj-card-top:#ffffff24;--proj-shimmer:#ffffff0d;--shadow-nav:#000000a6;--shadow-tooltip:#00000080;--cursor-mix:difference}[data-theme=light]{--bg:#f5f4f0;--fg:#111;--fg-dim:#0000002e;--fg-38:#0000006b;--fg-48:#0000008a;--fg-42:#0000007a;--fg-26:#0000004d;--fg-35:#00000061;--fg-32:#0000005c;--fg-72:#000000c2;--fg-18:#0003;--fg-55:#00000080;--surface-04:#00000008;--surface-06:#0000000a;--surface-08:#0000000f;--surface-10:#00000012;--border:#0000001a;--border-16:#00000024;--border-06:#00000012;--border-22:#0000002e;--card-hover-bg:#0000000f;--card-hover-border:#0000002e;--chip-hover-bg:#00000014;--chip-hover-border:#00000038;--btn-solid-bg:#111;--btn-solid-fg:#f5f4f0;--btn-solid-hover:#333;--btn-outline-fg:#00000094;--btn-outline-border:#0000002e;--btn-outline-hover-bg:#0000000f;--btn-outline-hover-border:#00000052;--nav-bg:#f0eeeae0;--nav-indicator:#0000001a;--nav-indicator-border:#00000024;--nav-btn-fg:#00000059;--nav-btn-active:#111;--nav-divider:#0000001f;--nav-tooltip-bg:#f5f4f0eb;--cursor-bg:#111;--tag-bg:#0000000d;--tag-fg:#0000007a;--sec-label-fg:#0000004d;--sk-group-fg:#00000061;--sk-group-line:#00000014;--sk-chip-bg:#0000000a;--sk-chip-fg:#000000b8;--sk-chip-icon:#0006;--sk-chip-top:#0000001a;--c-row-border:#00000012;--c-icon-bg:#0000000d;--c-icon-border:#0000001a;--c-icon-stroke:#00000080;--c-label-fg:#0000004d;--c-val-fg:#000000b8;--c-arrow-fg:#00000038;--proj-num-fg:#0003;--proj-title-fg:#111;--proj-desc-fg:#00000075;--proj-card-top:#0000001a;--proj-shimmer:#0000000a;--shadow-nav:#00000026;--shadow-tooltip:#00000026;--cursor-mix:normal}html,body{background:var(--bg);height:100%;color:var(--fg);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,sans-serif;font-size:17px;overflow:hidden}.viewport{background:var(--bg);width:100%;height:100vh;color:var(--fg);transition:background .4s cubic-bezier(.16,1,.3,1),color .4s cubic-bezier(.16,1,.3,1);overflow:hidden}.page-track{width:100%;height:100%;transform:translate3d(calc(var(--active-offset,0vw) + var(--wheel-offset,0px)), 0, 0);will-change:transform;transition:transform .76s cubic-bezier(.22,1,.36,1);display:flex}.page-track--wheel{transition:transform 90ms linear}.page{scrollbar-width:none;text-align:center;box-sizing:border-box;flex-direction:column;flex-shrink:0;align-items:center;width:100vw;min-width:100vw;height:100vh;padding:64px 48px 120px;display:flex;overflow:hidden auto}.page>*{width:100%;max-width:800px}.page::-webkit-scrollbar{display:none}@media (width<=600px){.page{padding:48px 24px 100px}}.hero-tag{letter-spacing:.18em;text-transform:uppercase;color:var(--fg-32);margin-bottom:20px;font-size:11px}.hero-name{letter-spacing:-.025em;color:var(--fg);margin-bottom:8px;font-family:Playfair Display,Georgia,serif;font-size:clamp(40px,9vw,86px);font-weight:700;line-height:1.04}.hero-name .dim{color:var(--fg-dim)}.hero-role{color:var(--fg-38);letter-spacing:.04em;margin-bottom:28px;font-size:15px}.hero-bio{color:var(--fg-48);max-width:480px;margin-bottom:36px;font-size:16px;line-height:1.78}.hero-btns{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.btn{cursor:pointer;letter-spacing:.01em;border-radius:100px;align-items:center;gap:7px;padding:12px 24px;font-family:Inter,sans-serif;font-size:14px;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-solid{background:var(--btn-solid-bg);color:var(--btn-solid-fg);border:none}.btn-solid:hover{background:var(--btn-solid-hover)}.btn-outline{color:var(--btn-outline-fg);border:.5px solid var(--btn-outline-border);background:0 0}.btn-outline:hover{background:var(--btn-outline-hover-bg);color:var(--fg);border-color:var(--btn-outline-hover-border)}.page-heading{width:100%;max-width:800px;margin-bottom:36px}.page-heading-tag{letter-spacing:.18em;text-transform:uppercase;color:var(--fg-32);margin-bottom:10px;font-size:11px}.page-heading-title{letter-spacing:-.02em;color:var(--fg);margin-bottom:6px;font-family:Playfair Display,Georgia,serif;font-size:clamp(28px,6vw,52px);font-weight:700;line-height:1.08}.page-heading-title .dim{color:var(--fg-dim)}.page-heading-sub{color:var(--fg-38);letter-spacing:.02em;font-size:13px}.sec-label{letter-spacing:.22em;text-transform:uppercase;color:var(--sec-label-fg);margin-bottom:28px;font-size:10px}.proj-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (width<=600px){.proj-grid{grid-template-columns:1fr}}.proj-card{background:var(--surface-04);border:.5px solid var(--border);color:inherit;border-radius:16px;flex-direction:column;padding:0;transition:border-color .3s,background-color .3s,transform .3s cubic-bezier(.16,1,.3,1);display:flex;position:relative;overflow:hidden}.proj-card:before{content:"";background:radial-gradient(350px circle at var(--mouse-x,50%) var(--mouse-y,50%), var(--proj-shimmer), transparent 80%);opacity:0;pointer-events:none;z-index:0;transition:opacity .3s;position:absolute;inset:0}.proj-card:after{content:"";background:linear-gradient(90deg, transparent, var(--proj-card-top), transparent);z-index:1;height:1px;position:absolute;top:0;left:0;right:0}.proj-card:hover{background:var(--card-hover-bg);border-color:var(--card-hover-border);transform:translateY(-3px)}.proj-card:hover:before{opacity:1}.proj-card-inner{z-index:1;text-align:left;flex:1;padding:22px 22px 14px;position:relative}.proj-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.proj-num{color:var(--proj-num-fg);letter-spacing:.12em;font-size:10px}.proj-category{letter-spacing:.14em;text-transform:uppercase;color:var(--fg-26);background:var(--surface-06);border:.5px solid var(--border);border-radius:100px;padding:2px 8px;font-size:9px}.proj-title{color:var(--proj-title-fg);margin-bottom:7px;font-size:14px;font-weight:500}.proj-desc{color:var(--proj-desc-fg);margin-bottom:14px;font-size:12px;line-height:1.65}.tags{flex-wrap:wrap;gap:5px;display:flex}.tag{background:var(--tag-bg);color:var(--tag-fg);border:.5px solid var(--border);border-radius:100px;padding:3px 9px;font-size:10px}.proj-actions{border-top:.5px solid var(--border-06);z-index:1;gap:6px;padding:12px 22px;display:flex;position:relative}.proj-action-btn{letter-spacing:.01em;color:var(--fg-42);background:var(--surface-06);border:.5px solid var(--border);cursor:pointer;border-radius:100px;align-items:center;gap:5px;padding:5px 12px;font-family:Inter,sans-serif;font-size:11px;font-weight:500;text-decoration:none;transition:background .18s,color .18s,border-color .18s;display:inline-flex}.proj-action-btn:hover{background:var(--surface-10);color:var(--fg);border-color:var(--border-22)}.proj-action-btn--live{color:var(--fg-72)}.proj-action-btn--live:hover{color:var(--fg)}.proj-action-btn--soon{opacity:.38;cursor:default;font-size:10px;font-style:italic}.skills-page>*{max-width:920px}.skills-focus{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:22px;display:flex}.skills-focus-item{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-48);border:.5px solid var(--border);background:var(--surface-04);border-radius:100px;padding:7px 12px;font-size:11px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.skill-card{border:.5px solid var(--border);background:var(--surface-04);text-align:left;border-radius:16px;min-height:220px;padding:24px;transition:background .22s,border-color .22s,transform .22s;position:relative;overflow:hidden}.skill-card:before{content:"";background:var(--sk-chip-top);height:.5px;position:absolute;top:0;left:18px;right:18px}.skill-card:hover{background:var(--card-hover-bg);border-color:var(--card-hover-border);transform:translateY(-2px)}.skill-card-head{align-items:center;gap:10px;margin-bottom:14px;display:flex}.skill-card-icon{width:32px;height:32px;color:var(--fg-55);background:var(--surface-06);border:.5px solid var(--border);border-radius:10px;justify-content:center;align-items:center;font-size:16px;display:inline-flex}.skill-card-title{color:var(--fg);letter-spacing:0;font-size:16px;font-weight:600}.skill-card-summary{min-height:44px;color:var(--fg-48);margin-bottom:16px;font-size:13px;line-height:1.7}.skill-primary-list{flex-wrap:wrap;gap:7px;margin-bottom:16px;display:flex}.skill-primary{color:var(--sk-chip-fg);background:var(--sk-chip-bg);border:.5px solid var(--border);border-radius:100px;padding:6px 10px;font-size:12px}.skill-secondary{color:var(--fg-35);font-size:12px;line-height:1.75}@media (width<=760px){.skills-grid{grid-template-columns:1fr}.skill-card{min-height:auto}}.contact-list{flex-direction:column;display:flex}.c-row{border-bottom:.5px solid var(--c-row-border);color:inherit;align-items:center;gap:16px;padding:18px 0;text-decoration:none;transition:background .15s;display:flex}.c-row:first-child{border-top:.5px solid var(--c-row-border)}.c-row:hover .c-val{color:var(--fg)}.c-icon{background:var(--c-icon-bg);border:.5px solid var(--c-icon-border);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.c-icon svg{width:18px;height:18px;stroke:var(--c-icon-stroke);fill:none;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.c-label{color:var(--c-label-fg);text-transform:uppercase;letter-spacing:.12em;margin-bottom:3px;font-size:10px}.c-val{color:var(--c-val-fg);font-size:14px;transition:color .15s}.c-arrow{color:var(--c-arrow-fg);margin-left:auto;font-size:18px}.glass-nav{z-index:200;background:var(--nav-bg);border:.5px solid var(--border-16);-webkit-backdrop-filter:blur(30px)saturate(1.8);box-shadow:0 8px 40px var(--shadow-nav), inset 0 .5px 0 #ffffff26, inset 0 -.5px 0 #00000047;box-sizing:border-box;white-space:nowrap;touch-action:none;border-radius:100px;align-items:center;gap:2px;max-width:calc(100% - 32px);padding:10px 14px;transition:background .4s cubic-bezier(.16,1,.3,1),box-shadow .4s;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.nav-indicator{background:var(--nav-indicator);border:.5px solid var(--nav-indicator-border);pointer-events:none;border-radius:100px;height:calc(100% - 20px);transition:left .34s cubic-bezier(.4,0,.2,1),width .34s cubic-bezier(.4,0,.2,1);position:absolute;top:10px;box-shadow:inset 0 .5px #fff3}.nav-indicator.no-transition{transition:none!important}.nav-btn{cursor:pointer;width:48px;height:44px;color:var(--nav-btn-fg);z-index:1;background:0 0;border:none;border-radius:100px;flex-shrink:0;justify-content:center;align-items:center;transition:color .2s;display:flex;position:relative}.nav-btn svg{stroke:currentColor;fill:none;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px;transition:stroke .2s}.nav-btn.active{color:var(--nav-btn-active)}.nav-divider{background:var(--nav-divider);border-radius:1px;flex-shrink:0;width:.5px;height:24px;margin:0 4px}.nav-theme-btn svg{width:18px;height:18px}@media (width<=400px){.glass-nav{max-width:calc(100% - 24px);padding:8px 10px;bottom:20px}.nav-btn{width:40px;height:38px}.nav-indicator{height:calc(100% - 16px);top:8px}}.animate-slide-up{opacity:1;animation:none;transform:translateY(0)}.page-active .animate-slide-up{animation:.72s cubic-bezier(.16,1,.3,1) both slideInUp}@keyframes slideInUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.type-cursor{color:#fff9;margin-left:4px;font-weight:300;animation:1s step-end infinite blink}@keyframes blink{0%,to{color:#0000}50%{color:#fff9}}.glass-nav.dragging{cursor:grabbing}.glass-nav.dragging .nav-indicator{transition:none!important}.glass-nav.snapping .nav-indicator{transition:left .6s cubic-bezier(.175,.885,.45,1.4),width .6s cubic-bezier(.175,.885,.45,1.4)!important}.nav-tooltip{-webkit-backdrop-filter:blur(16px);color:#fff;pointer-events:none;opacity:0;letter-spacing:.05em;text-transform:uppercase;z-index:10;background:#0f0f0fe0;border:.5px solid #ffffff29;border-radius:12px;padding:5px 10px;font-size:10px;font-weight:500;transition:opacity .22s cubic-bezier(.16,1,.3,1),transform .22s cubic-bezier(.16,1,.3,1);position:absolute;bottom:58px;left:50%;transform:translate(-50%,6px)scale(.9);box-shadow:0 4px 12px #00000080}.nav-btn.drag-hovered .nav-tooltip,body:not(.is-dragging) .nav-btn:hover .nav-tooltip{opacity:1;transform:translate(-50%)scale(1)}.custom-cursor{display:none}@media (hover:hover) and (pointer:fine){body,a,button,select,input,textarea,[role=button]{cursor:none!important}.custom-cursor{background-color:var(--cursor-bg);pointer-events:none;z-index:99999;width:10px;height:10px;mix-blend-mode:var(--cursor-mix);border-radius:50%;transition:width .2s cubic-bezier(.16,1,.3,1),height .2s cubic-bezier(.16,1,.3,1),background-color .2s;display:block;position:fixed;transform:translate(-50%,-50%)}.custom-cursor.hovered{background-color:var(--cursor-bg);width:22px;height:22px}}
