*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.absolute{position:absolute}.relative{position:relative}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.border{border-width:1px}.uppercase{text-transform:uppercase}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--bg: #000000;--bg-soft: #050505;--panel: rgba(15, 17, 21, .7);--panel-solid: #0f1115;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .15);--text: #ffffff;--muted: #8b95a5;--dim: #4b5563;--accent: #2563eb;--accent-light: #3b82f6;--accent-glow: rgba(37, 99, 235, .15);--radius-lg: 16px;--radius-md: 12px;--radius-sm: 8px;--max: 1300px}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{margin:0;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,1),transparent 100%);mask-image:linear-gradient(to bottom,rgba(0,0,0,1),transparent 100%);z-index:-1}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent-light);outline-offset:2px}.app-shell{display:flex;min-height:100vh}.main-content{flex:1;display:flex;flex-direction:column;width:100%;position:relative;margin-top:34px}.container{width:min(var(--max),calc(100% - 48px));margin:0 auto}.top-nav{position:absolute;top:40px;left:0;right:0;z-index:30;pointer-events:none}.mobile-top-nav{display:none}.top-nav-inner{min-height:0;display:flex;align-items:center;justify-content:flex-end}.top-nav-links{display:inline-flex;gap:8px;padding:6px;border-radius:999px;border:1px solid var(--line);background:#ffffff08;pointer-events:auto}.top-nav-links button{background:transparent;border:none;color:var(--muted);text-align:center;padding:9px 16px;border-radius:999px;font-weight:600;font-size:13px;letter-spacing:.06em;text-transform:uppercase;transition:all .2s ease}.top-nav-links button:hover{color:var(--text);background:#ffffff0f}.top-nav-links button.active{color:var(--accent-light);background:var(--accent-glow)}.sidebar{width:260px;border-right:1px solid var(--line);background:var(--bg-soft);display:flex;flex-direction:column;padding:42px 24px 32px;position:sticky;top:72px;height:calc(100vh - 72px);z-index:50}.sidebar-profile{margin-bottom:28px;display:flex;flex-direction:column;align-items:center}.sidebar-avatar-wrap{width:112px;height:112px;border-radius:50%;overflow:hidden;border:1px solid rgba(147,197,253,.45);box-shadow:0 0 0 4px #2563eb1f,0 8px 24px #00000059;margin-bottom:14px}.sidebar-avatar{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.sidebar-brand{display:flex;align-items:center;justify-content:center;gap:12px}.sidebar-brand-text{font-weight:700;font-size:14px;letter-spacing:.05em;text-transform:uppercase;text-align:center}.sidebar-brand-text small{display:block;font-size:11px;color:var(--muted);font-weight:500;text-transform:none;margin-top:4px;line-height:1.4}.sidebar-contact{margin-top:20px;display:flex;flex-direction:column;gap:8px}.sidebar-contact-item{display:flex;align-items:center;gap:10px;border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 10px;color:var(--muted);background:transparent;transition:transform .2s ease,background .2s ease,border-color .2s ease,color .2s ease}button.sidebar-contact-item{width:100%;text-align:left}.sidebar-contact-icon{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:var(--accent-light);background:#ffffff0a;transition:transform .2s ease,background .2s ease,box-shadow .2s ease}.sidebar-contact-text{display:flex;flex-direction:column;gap:1px;min-width:0}.sidebar-contact-text b{font-size:12px;line-height:1.25}.sidebar-contact-text small{font-size:11px;color:var(--dim);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-contact-item:hover{color:var(--text);transform:translate(3px);background:#ffffff08;border-color:var(--line)}.sidebar-contact-item:hover .sidebar-contact-icon{transform:scale(1.08);background:var(--accent-glow);box-shadow:0 0 0 1px #3b82f659}.sidebar-download-item{border-color:#3b82f647;background:#2563eb14;color:#d9e6ff}.sidebar-download-item .sidebar-contact-icon{color:#fff;background:var(--accent)}.sidebar-contact-item:focus-visible{outline:2px solid var(--accent-light);outline-offset:1px}.sidebar-copy{margin-top:auto;padding-top:16px;font-size:12px;color:var(--dim)}.primary-btn{background:transparent;border:1px solid var(--accent);color:var(--accent-light);padding:10px 20px;border-radius:999px;font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.05em;display:inline-flex;align-items:center;gap:8px;transition:all .2s ease}.primary-btn:hover{background:var(--accent-glow)}.primary-btn.solid{background:var(--accent);color:#fff;border:none}.primary-btn.solid:hover{background:var(--accent-light);box-shadow:0 4px 20px var(--accent-glow)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px}.panel-header{font-size:12px;font-weight:700;color:var(--accent-light);text-transform:uppercase;letter-spacing:.05em;margin-bottom:16px}.panel h2,.panel h3{margin:0 0 12px;font-size:24px;letter-spacing:-.02em}.panel p{color:var(--muted);line-height:1.6;font-size:14px;margin:0}.page-kicker-placeholder{display:flex;align-items:center;min-height:16px;margin-bottom:16px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.section.projects-page{padding-top:96px}.container.section.resume-page{width:min(1040px,calc(100% - 32px));padding-top:96px;padding-left:clamp(14px,2vw,24px);padding-right:clamp(14px,2vw,24px)}.resume-page .page-kicker-placeholder{display:none}.resume-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:16px;background:#0b0e14c7;border-color:#94a3b847;box-shadow:none;position:relative;overflow:hidden;padding:32px}.resume-header-copy{min-width:0;position:relative;z-index:1}.resume-download-link{flex:0 0 auto;position:relative;z-index:1;margin-top:2px;white-space:nowrap}.resume-header:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,rgba(59,130,246,.08) 0%,transparent 48%);pointer-events:none}.resume-header h1{font-size:clamp(30px,3vw,40px)!important;letter-spacing:-.03em}.resume-header p{font-size:14px}.resume-meta{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted);text-align:right}.resume-meta-inline{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:12px;letter-spacing:.02em}.resume-meta-inline span{border:1px solid rgba(148,163,184,.25);background:#ffffff04;border-radius:999px;padding:4px 10px;transition:border-color .2s ease,background .2s ease}.resume-meta-inline span:hover{border-color:#3b82f65c;background:#2563eb1c}.resume-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:20px}.resume-main,.resume-side{display:flex;flex-direction:column;gap:20px}.resume-section-heading{margin:0 0 12px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-light);display:inline-flex;align-items:center;gap:10px}.resume-section-icon{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:var(--accent-light);background:#ffffff0a;box-shadow:inset 0 0 0 1px #3b82f638}.resume-entry{padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--line)}.resume-entry:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.resume-entry h3{margin:0 0 6px;font-size:16px;letter-spacing:-.01em}.resume-entry span{display:block;margin-bottom:10px;font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.resume-section ul{margin:0;padding-left:18px;color:#97a5bb;display:flex;flex-direction:column;gap:8px;line-height:1.6}.resume-section p,.resume-block>p{color:#9aa8be;line-height:1.7;font-size:14px}.resume-two-column-list{-moz-columns:2;columns:2;-moz-column-gap:26px;column-gap:26px}.resume-main-panel{display:flex;flex-direction:column;background:#0a0d12b8;border:1px solid rgba(148,163,184,.2);box-shadow:none;box-shadow:inset 0 0 0 1px #2563eb0f;padding:32px}.resume-block{padding:2px}.resume-block+.resume-block{margin-top:20px;padding-top:24px;border-top:1px solid rgba(148,163,184,.2);position:relative}.resume-block+.resume-block:before{content:"";position:absolute;top:-1px;left:0;width:120px;height:1px;background:linear-gradient(90deg,#3b82f6a3,#3b82f600)}.resume-section-animate{opacity:0;transform:translateY(8px);animation:resumeFadeUp .42s ease-out forwards}.resume-page .resume-section-animate:nth-of-type(1){animation-delay:.04s}.resume-page .resume-section-animate:nth-of-type(2){animation-delay:.09s}.resume-page .resume-section-animate:nth-of-type(3){animation-delay:.14s}.resume-page .resume-section-animate:nth-of-type(4){animation-delay:.19s}.resume-page .resume-section-animate:nth-of-type(5){animation-delay:.24s}.resume-page .resume-section-animate:nth-of-type(6){animation-delay:.29s}.resume-page .resume-section-animate:nth-of-type(7){animation-delay:.34s}@keyframes resumeFadeUp{to{opacity:1;transform:translateY(0)}}.section{padding:96px 0 48px}.home-page{padding-bottom:60px}.home-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.8fr);gap:24px;align-items:stretch;margin-bottom:22px}.home-hero-copy{min-height:320px;display:flex;flex-direction:column;justify-content:center;border:1px solid rgba(148,163,184,.2);border-radius:var(--radius-lg);background:linear-gradient(135deg,rgba(37,99,235,.15),transparent 42%),#0a0d12b8;padding:clamp(26px,3.2vw,40px)}.home-hero-copy h1{max-width:760px;margin:0 0 16px;font-size:clamp(32px,4.1vw,48px);line-height:1.04;letter-spacing:0}.home-hero-copy p{max-width:760px;margin:0 0 14px;color:var(--muted);font-size:14px;line-height:1.65}.home-hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px}.home-profile-panel{display:flex;flex-direction:column;justify-content:center;gap:10px;border:1px solid var(--line);border-radius:var(--radius-lg);background:#0f111594;padding:18px}.home-profile-row{display:grid;grid-template-columns:38px minmax(0,1fr);gap:12px;align-items:start;padding:11px 0;border-bottom:1px solid var(--line)}.home-profile-row:last-child{border-bottom:none}.home-profile-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--accent-light);background:#ffffff0a;box-shadow:inset 0 0 0 1px #3b82f63d}.home-profile-row b{display:block;margin-bottom:4px;font-size:13px;color:var(--text)}.home-profile-row small{display:block;color:var(--muted);font-size:12px;line-height:1.45}.home-section-heading{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:18px}.home-section-heading span{color:var(--accent-light);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.home-section-heading h2{margin:0;font-size:28px;letter-spacing:0}.home-skills-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-bottom:0}.home-skill-panel{background:linear-gradient(180deg,rgba(37,99,235,.1),transparent 55%),#0a0d12c7}.home-skill-panel h3{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:var(--text);font-size:16px}.home-skill-panel h3 svg{color:var(--accent-light)}.skill-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.skill-list li{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px}.skill-list li:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}.project-category-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}.project-category-filter{border:1px solid var(--line);background:#ffffff05;color:var(--muted);padding:8px 14px;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;transition:all .2s ease}.project-category-filter:hover{color:var(--text);border-color:var(--line-strong);background:#ffffff0d}.project-category-filter.active{color:var(--accent-light);border-color:#2563eb73;background:var(--accent-glow)}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.project-card{background:var(--panel);border:1px solid rgba(37,99,235,.58);border-radius:var(--radius-lg);overflow:hidden;transition:all .2s ease;display:flex;flex-direction:column;box-shadow:0 0 0 1px #2563eb29,0 18px 50px #2563eb14}.project-card-button{width:100%;padding:0;text-align:inherit;color:inherit;background:var(--panel)}.project-card:hover{border-color:var(--line-strong);box-shadow:0 10px 40px #00000080;transform:translateY(-2px)}.project-image{height:190px;background:var(--bg-soft);overflow:hidden;position:relative}.project-image img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.8;transition:opacity .3s ease,transform .5s ease}.project-card:hover .project-image img{opacity:1;transform:scale(1.02)}.project-content{padding:16px 16px 18px;flex:1;display:flex;flex-direction:column;gap:8px}.project-content h3{margin:0;font-size:17px}.project-content p{margin:0;color:var(--muted);font-size:13px;line-height:1.5;display:-webkit-box;line-clamp:3;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.case-header{margin-bottom:24px}.case-header h1{font-size:32px;letter-spacing:-.02em;margin:0 0 12px}.case-header .kicker{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:16px;cursor:pointer}.case-header .kicker:hover{color:var(--text)}.kicker-button{border:none;background:transparent;padding:0}.featured-tag{background:var(--accent-glow);color:var(--accent-light);border:1px solid rgba(37,99,235,.3);padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase}.case-grid-top{display:grid;grid-template-columns:1fr;gap:24px;margin-bottom:24px}.case-grid-middle{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;margin-bottom:24px}.embed-container{position:relative;background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.embed-header{padding:12px 16px;border-bottom:1px solid var(--line);font-size:13px;font-weight:600;background:#ffffff05;display:flex;justify-content:flex-end}.embed-stage{position:relative;overflow:hidden}.embed-frame{height:clamp(620px,68vh,780px);width:100%;display:flex;flex-direction:column}.embed-frame iframe,.embed-frame video{width:100%;height:100%;border:none;display:block}.embed-frame video{flex:1;min-height:0;-o-object-fit:contain;object-fit:contain;background:#000}.embed-fill,.embed-video-fit{width:100%;height:100%;flex:1;min-height:0}.embed-video-fit{container-type:size;display:grid;place-items:center;background:#000}.embed-video-fit iframe{width:min(100cqw,calc(100cqh * 16 / 9));height:min(100cqh,56.25cqw);max-width:100%;max-height:100%;aspect-ratio:16 / 9}.video-source-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:10px 16px;border-bottom:1px solid var(--line);background:#ffffff04}.video-source-tabs button{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:650;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.video-source-tabs button.active{border-color:#2563eb85;background:var(--accent-glow);color:var(--text)}.project-image-viewer{position:relative;display:grid;place-items:center;overflow:hidden;background:#000}.synced-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0 0 24px}.synced-gallery-item{aspect-ratio:16 / 10;margin:0;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#ffffff08;cursor:zoom-in;transition:border-color .2s ease,transform .2s ease}.synced-gallery-video{position:relative;display:grid;place-items:center;gap:10px;cursor:pointer;color:var(--text);text-align:center}.synced-gallery-video:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 30%,rgba(37,99,235,.22),transparent 58%);pointer-events:none}.synced-gallery-video-icon{position:relative;z-index:2;width:46px;height:46px;display:grid;place-items:center;border:1px solid rgba(96,165,250,.42);border-radius:50%;color:var(--accent-light);background:#020617b8}.synced-gallery-video .synced-gallery-video-icon:first-child{margin-top:18px}.synced-gallery-video img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.synced-gallery-video-play{position:absolute;left:12px;top:12px;z-index:2;width:34px;height:34px;display:grid;place-items:center;border:1px solid rgba(96,165,250,.5);border-radius:50%;color:var(--accent-light);background:#020617c7}.synced-gallery-video span:last-child{position:absolute;left:0;right:0;bottom:0;z-index:2;max-width:100%;padding:10px 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:12px;font-weight:700;background:linear-gradient(180deg,transparent,rgba(0,0,0,.82))}.synced-gallery-item:hover,.synced-gallery-item:focus-visible{border-color:var(--line-strong);transform:translateY(-2px);outline:none}.synced-gallery-item img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.viewer-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:0;overflow:hidden;background:#030712e0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.viewer-contained-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;display:block}.viewer-image-nav{position:absolute;top:50%;z-index:3;width:clamp(40px,5vw,52px);height:clamp(52px,8vw,72px);display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:#0f172ab8;color:var(--text);cursor:pointer;transform:translateY(-50%);transition:border-color .2s ease,background .2s ease,transform .2s ease}.viewer-image-nav.previous{left:clamp(10px,2vw,22px)}.viewer-image-nav.next{right:clamp(10px,2vw,22px)}.viewer-image-nav:hover,.viewer-image-nav:focus-visible{border-color:var(--line-strong);background:#1e293beb;outline:none}.viewer-image-nav.previous:hover,.viewer-image-nav.previous:focus-visible{transform:translateY(-50%) translate(-2px)}.viewer-image-nav.next:hover,.viewer-image-nav.next:focus-visible{transform:translateY(-50%) translate(2px)}.viewer-image-close{position:absolute;top:12px;right:12px;z-index:4;width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:#0f172ae0;color:var(--text);cursor:pointer;transition:border-color .2s ease,background .2s ease}.viewer-image-close:hover,.viewer-image-close:focus-visible{border-color:var(--line-strong);background:#1e293bf2;outline:none}.case-grid-bottom{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.info-list{display:flex;flex-direction:column;gap:16px}.info-item{display:flex;flex-direction:column;gap:6px}.info-item b{font-size:13px;color:var(--text)}.info-item span{font-size:13px;color:var(--muted);line-height:1.5}.contact-list{display:flex;flex-direction:column;gap:0}.contact-item{display:flex;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}.contact-item:last-child{border-bottom:none}.contact-item .icon{width:36px;height:36px;border-radius:50%;background:#ffffff08;display:grid;place-items:center;color:var(--accent-light)}.contact-item div{display:flex;flex-direction:column;gap:2px}.contact-item b{font-size:14px;font-weight:600}.contact-item span{font-size:13px;color:var(--muted)}.contact-page{padding-top:96px}.contact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.contact-card{display:flex;align-items:center;gap:14px;color:var(--text);transition:border-color .2s ease,background .2s ease,transform .2s ease}button.contact-card{width:100%;text-align:left}.contact-card:hover{border-color:var(--line-strong);background:#ffffff0a;transform:translateY(-2px)}.contact-card-icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:var(--accent-light);background:var(--accent-glow);flex:0 0 auto}.contact-card span:last-child{min-width:0;display:flex;flex-direction:column;gap:3px}.contact-card b{font-size:14px}.contact-card small{color:var(--muted);font-size:13px;overflow-wrap:anywhere}.viewer-grid{position:relative;height:clamp(620px,68vh,780px)}.viewer-canvas{width:100%;height:100%;background:var(--bg-soft);position:relative;overflow:hidden}.viewer-toolbar{position:absolute;bottom:16px;right:16px;display:flex;gap:8px;background:var(--panel);border:1px solid var(--line);padding:8px;border-radius:var(--radius-md)}.viewer-toolbar button{background:transparent;border:none;color:var(--muted);padding:6px;border-radius:var(--radius-sm);transition:all .2s}.viewer-toolbar button:hover{color:var(--text);background:#ffffff0d}.viewer-toolbar button.active{color:var(--accent-light)}.viewer-load-prompt{min-height:100%;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,rgba(37,99,235,.14),transparent 42%),radial-gradient(circle at 74% 24%,rgba(34,211,238,.1),transparent 32%),var(--bg-soft)}.viewer-load-panel{width:min(420px,100%);border:1px solid rgba(148,163,184,.22);border-radius:var(--radius-md);background:#080b11db;padding:22px;text-align:left;box-shadow:0 18px 42px #00000057}.viewer-load-kicker{margin-bottom:8px;color:var(--accent-light);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.viewer-load-panel h3{margin:0 0 8px;font-size:22px}.viewer-load-panel p{margin:0 0 18px;color:var(--muted);font-size:14px;line-height:1.5}.viewer-load-button{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(59,130,246,.46);border-radius:var(--radius-sm);background:var(--accent);color:#fff;padding:10px 14px;font-size:13px;font-weight:700;transition:background .2s ease,transform .2s ease}.viewer-load-button:hover{background:var(--accent-light);transform:translateY(-1px)}.viewer-loading-panel{min-width:190px;border:1px solid rgba(148,163,184,.24);border-radius:var(--radius-md);background:#05070de0;padding:14px 16px;color:var(--text);text-align:center;box-shadow:0 12px 32px #00000061}.viewer-loading-panel strong,.viewer-loading-panel span{display:block}.viewer-loading-panel strong{margin-bottom:4px;font-size:14px}.viewer-loading-panel span{color:var(--muted);font-size:12px}.coming-soon-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.coming-soon-card{width:min(640px,100%);border-radius:var(--radius-lg);border:1px solid var(--line);background:linear-gradient(180deg,#0f1115eb,#080a0ef2);padding:36px;box-shadow:0 20px 80px #0000008c,inset 0 0 0 1px #ffffff05}.coming-soon-kicker{margin:0 0 10px;color:var(--accent-light);text-transform:uppercase;letter-spacing:.09em;font-weight:700;font-size:12px}.coming-soon-card h1{margin:0;font-size:clamp(28px,4vw,42px);line-height:1.12;letter-spacing:-.02em}.coming-soon-subtext{margin:18px 0 0;color:var(--muted);line-height:1.7;font-size:15px}.coming-soon-meta{margin:26px 0;border:1px solid var(--line);border-radius:var(--radius-md);padding:14px 16px;display:grid;gap:2px;background:#ffffff05}.coming-soon-meta span{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.coming-soon-meta strong{font-size:18px;color:var(--text)}@media(max-width:1024px){.app-shell{flex-direction:column}.main-content{margin-top:18px}.sidebar{width:100%;height:auto;position:static;padding:20px;border-right:none;border-bottom:1px solid var(--line)}.sidebar-profile{margin-bottom:18px}.sidebar-avatar-wrap{width:86px;height:86px}.sidebar-brand{margin-bottom:0}.desktop-top-nav{display:none}.mobile-top-nav{display:block;order:-2;position:sticky;top:0;z-index:80;pointer-events:auto;margin-top:0;padding:10px 0;border-bottom:1px solid var(--line);background:#050505f0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.top-nav-inner{justify-content:center;min-height:64px}.top-nav-links{width:100%;justify-content:center}.home-hero{grid-template-columns:1fr}.home-hero-copy{min-height:0}.home-skills-grid{grid-template-columns:1fr 1fr}.case-grid-top,.case-grid-middle{grid-template-columns:1fr}.case-grid-bottom{grid-template-columns:1fr 1fr}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-grid{grid-template-columns:1fr}.embed-frame,.viewer-grid{height:clamp(520px,66vh,680px)}.section,.section.projects-page,.contact-page{padding-top:74px}.container.section.resume-page{width:min(1040px,calc(100% - 24px));padding-top:74px;padding-left:clamp(10px,2vw,18px);padding-right:clamp(10px,2vw,18px)}.resume-header{flex-direction:column}.resume-download-link{width:100%;justify-content:center}.resume-meta{text-align:left}.resume-layout{grid-template-columns:1fr}.resume-two-column-list{-moz-columns:1;columns:1}.resume-block+.resume-block{margin-top:14px;padding-top:18px}.resume-header,.resume-main-panel{padding:24px}}@media(max-width:640px){.container{width:min(var(--max),calc(100% - 24px))}.top-nav-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-radius:var(--radius-md)}.top-nav-links button{width:100%}.home-section-heading{display:block}.home-section-heading span{display:block;margin-bottom:8px}.home-skills-grid,.case-grid-bottom,.project-grid{grid-template-columns:1fr}.embed-frame,.viewer-grid{height:clamp(420px,62vh,560px)}}
