:root{--bg: #060c16;--bg-layer-1: rgba(61, 112, 255, .28);--bg-layer-2: rgba(0, 182, 217, .2);--bg-layer-3: rgba(197, 89, 255, .16);--text: #edf6ff;--muted: rgba(220, 232, 246, .76);--line: rgba(167, 194, 220, .3);--line-strong: rgba(195, 221, 245, .45);--line-progress: rgba(219, 237, 255, .9);--panel: rgba(13, 23, 35, .8);--panel-soft: rgba(13, 23, 35, .62);--chip: rgba(255, 255, 255, .06);--chip-hover: rgba(255, 255, 255, .12);--shadow: 0 18px 46px rgba(3, 8, 19, .42);--progress: #daf0ff;--card-glow: rgba(255, 255, 255, .15);--glow-rgb: 214, 239, 255;--nav-bg: rgba(7, 15, 26, .74);--stack-content-bg: rgba(6, 12, 20, .88);--radius: 22px;--max: 1120px;--body-size: 16px;--body-line: 1.58;--ease: cubic-bezier(.2, .8, .2, 1);--mono: "IBM Plex Mono", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--sans: "Space Grotesk", "Avenir Next", "Segoe UI", sans-serif;--heading: "Sora", "Space Grotesk", "Avenir Next", "Segoe UI", sans-serif}:root[data-theme=light]{--bg: #f4f8ff;--bg-layer-1: rgba(95, 136, 255, .18);--bg-layer-2: rgba(0, 151, 199, .14);--bg-layer-3: rgba(183, 92, 255, .1);--text: #142134;--muted: rgba(20, 33, 52, .72);--line: rgba(20, 33, 52, .2);--line-strong: rgba(20, 33, 52, .34);--line-progress: rgba(21, 35, 55, .75);--panel: rgba(255, 255, 255, .82);--panel-soft: rgba(255, 255, 255, .67);--chip: rgba(17, 36, 58, .07);--chip-hover: rgba(17, 36, 58, .14);--shadow: 0 14px 34px rgba(16, 34, 56, .14);--progress: #22334d;--card-glow: rgba(26, 45, 70, .12);--glow-rgb: 38, 63, 92;--nav-bg: rgba(255, 255, 255, .8);--stack-content-bg: rgba(255, 255, 255, .86)}:root[data-theme=reading]{--bg: #f8f4ea;--bg-layer-1: rgba(171, 146, 94, .18);--bg-layer-2: rgba(187, 119, 72, .14);--bg-layer-3: rgba(118, 150, 124, .12);--text: #1f2421;--muted: rgba(31, 36, 33, .72);--line: rgba(31, 36, 33, .2);--line-strong: rgba(31, 36, 33, .34);--line-progress: rgba(31, 36, 33, .72);--panel: rgba(255, 255, 255, .9);--panel-soft: rgba(255, 255, 255, .84);--chip: rgba(31, 36, 33, .07);--chip-hover: rgba(31, 36, 33, .12);--shadow: 0 10px 24px rgba(35, 30, 18, .1);--progress: #2b2f2c;--card-glow: rgba(31, 36, 33, .08);--glow-rgb: 42, 44, 38;--nav-bg: rgba(249, 246, 238, .92);--stack-content-bg: rgba(255, 255, 255, .9);--radius: 18px;--max: 980px;--body-size: 18px;--body-line: 1.76;--sans: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", serif;--heading: "Avenir Next", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--sans);font-size:var(--body-size);line-height:var(--body-line);color:var(--text);background:radial-gradient(1200px 800px at 25% -10%,var(--bg-layer-1),transparent 55%),radial-gradient(900px 700px at 110% 20%,var(--bg-layer-2),transparent 55%),radial-gradient(800px 600px at 40% 110%,var(--bg-layer-3),transparent 55%),var(--bg);overflow-x:hidden;transition:color .25s var(--ease),background .3s var(--ease)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}::selection{background:rgba(var(--glow-rgb),.34)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:hidden}.lenis.lenis-smooth iframe{pointer-events:none}.container{width:min(var(--max),calc(100% - 48px));margin:0 auto}.grid{display:grid;gap:16px}.pill{display:inline-flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:999px;background:var(--chip);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.kbd{font-family:var(--mono);font-size:12px;padding:3px 8px;border:1px solid var(--line);background:var(--chip);border-radius:10px}.section{padding:88px 0}.sectionHead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding-bottom:22px;border-bottom:1px solid var(--line);margin-bottom:26px}.sectionKicker{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;font-size:12px;color:var(--muted)}.sectionTitle{font-family:var(--heading);font-size:clamp(28px,4vw,44px);line-height:1.06;margin:10px 0 0}.sectionNote{color:var(--muted);max-width:54ch;line-height:1.45}.card{border:1px solid var(--line);background:linear-gradient(180deg,var(--panel),var(--panel-soft));border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.cardInner{padding:18px}hr.sep{border:0;height:1px;background:var(--line);margin:18px 0}.nav{position:fixed;top:16px;left:0;right:0;z-index:60;pointer-events:none}.navInner{pointer-events:auto;width:min(var(--max),calc(100% - 28px));margin:0 auto;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:999px;border:1px solid var(--line);background:var(--nav-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;border:0;background:transparent;border-radius:999px;padding:7px 8px;cursor:pointer}.brand:hover{background:var(--chip)}.dot{width:9px;height:9px;border-radius:99px;background:rgba(var(--glow-rgb),.94);box-shadow:0 0 0 6px rgba(var(--glow-rgb),.12)}.navLinks{display:flex;align-items:center;gap:6px;margin-left:6px;flex:1}.navLinks a{padding:8px 12px;border-radius:999px;color:var(--muted);border:1px solid transparent;transition:all .2s var(--ease)}.navLinks a:hover{border-color:var(--line);background:var(--chip);color:var(--text)}.navActions{display:flex;align-items:center;gap:8px;margin-left:auto}.smallLabel{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.langToggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;background:var(--chip);padding:8px 12px;cursor:pointer}.langToggle:hover{background:var(--chip-hover)}.themeSwitch{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--chip);padding:3px}.themeSwitch button{border:0;border-radius:999px;background:transparent;padding:6px 10px;cursor:pointer;color:var(--muted);font-size:12px;line-height:1}.themeSwitch button:hover{color:var(--text)}.themeSwitch button.isActive{background:var(--chip-hover);color:var(--text)}.cta{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:999px;border:1px solid var(--line-strong);background:var(--chip);transition:transform .2s var(--ease),background .2s var(--ease)}.cta:hover{transform:translateY(-1px);background:var(--chip-hover)}.mobileOnly{display:none}.mobileMenuBtn{border:1px solid var(--line);border-radius:999px;background:var(--chip);padding:8px 12px;cursor:pointer}.mobilePanel{pointer-events:auto;width:min(var(--max),calc(100% - 28px));margin:10px auto 0;border:1px solid var(--line);border-radius:18px;background:var(--nav-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);padding:12px}.mobilePanelLinks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobilePanelLinks a{border:1px solid var(--line);background:var(--chip);border-radius:10px;padding:10px;text-align:center}.mobilePanelControls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.mobileCta{margin-top:12px;width:100%;justify-content:center}.hero{padding:136px 0 76px}.heroGrid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;align-items:stretch}.hTitle{font-family:var(--heading);font-size:clamp(42px,6vw,84px);line-height:.94;letter-spacing:-.02em;margin:0}.hSubtitle{font-size:1rem;color:var(--muted);line-height:1.62;max-width:62ch}.hMeta{margin-top:18px;display:flex;flex-wrap:wrap;gap:10px}.portrait{position:relative;min-height:360px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(135deg,var(--panel),var(--panel-soft));overflow:hidden;box-shadow:var(--shadow)}.portrait:before{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background:radial-gradient(480px 360px at 20% 20%,rgba(var(--glow-rgb),.28),transparent 55%),radial-gradient(520px 380px at 80% 10%,rgba(var(--glow-rgb),.16),transparent 60%),radial-gradient(620px 420px at 40% 110%,rgba(var(--glow-rgb),.14),transparent 65%);filter:blur(2px)}.portraitSvg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:.92;transform:translateZ(0)}.portraitBadge{position:absolute;left:16px;bottom:16px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:999px;border:1px solid var(--line-strong);background:var(--panel-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.small{font-size:13px;color:var(--muted)}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.tag{font-family:var(--mono);font-size:12px;padding:7px 10px;border-radius:999px;border:1px solid var(--line);background:var(--chip);color:var(--muted)}.skillsGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.skillSection{overflow:clip}.skillStackMain{position:relative;width:100%;margin:0 auto}.skillStackSlot{position:sticky;top:96px;height:88vh;display:flex;align-items:center;justify-content:center;margin-bottom:28px}.skillStackCard{width:min(1600px,100%);height:min(620px,78vh);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);background:linear-gradient(180deg,var(--panel),var(--panel-soft))}.skillStackLayout{display:flex;height:100%}.skillStackLayout.isReverse{flex-direction:row-reverse}.skillStackVisualWrap{flex:1;overflow:hidden}.skillStackVisual{position:relative;height:100%;display:flex;align-items:flex-end;padding:28px;background:radial-gradient(100% 120% at 80% 20%,rgba(var(--glow-rgb),.26),transparent 62%),radial-gradient(80% 80% at 10% 100%,rgba(var(--glow-rgb),.2),transparent 68%),linear-gradient(160deg,#ffffff14,#ffffff05)}.skillStackGradient{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(160deg,transparent 10%,rgba(var(--glow-rgb),.1) 55%,transparent 100%)}.skillStackIndex{position:absolute;left:22px;top:18px;font-family:var(--mono);font-size:clamp(52px,10vw,128px);line-height:1;letter-spacing:.02em;color:rgba(var(--glow-rgb),.24)}.skillStackVisualLabel{position:relative;z-index:1;max-width:8ch;font-family:var(--heading);font-size:clamp(28px,5vw,62px);line-height:.95;letter-spacing:-.02em;color:var(--text)}.skillStackContent{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:30px 32px;background:var(--stack-content-bg)}.skillStackHeading{margin:0;font-family:var(--heading);font-size:clamp(28px,3.5vw,50px);line-height:1.05}.skillStackBody{margin:0;color:var(--muted);line-height:1.6;max-width:48ch}.projectRow{display:grid;grid-template-columns:.95fr 1.05fr;gap:16px;align-items:stretch}.thumb{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);min-height:240px;background:var(--chip)}.thumb svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.projectMeta{display:flex;flex-direction:column;justify-content:space-between}.projectTitle{font-family:var(--heading);font-size:28px;margin:0 0 6px}.projectYear{font-family:var(--mono);color:var(--muted);font-size:12px;letter-spacing:.08em}.projectDesc{color:var(--muted);line-height:1.58;margin:0}.inlineLink{display:inline-flex;gap:10px;align-items:center;padding:10px 12px;border-radius:999px;border:1px solid var(--line-strong);background:var(--chip);width:fit-content}.timeline{position:relative;padding-left:18px}.line{position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--line)}.event{position:relative;padding:14px 14px 14px 18px;border-radius:18px;border:1px solid var(--line);background:var(--chip);margin:12px 0}.event:before{content:"";position:absolute;left:-2px;top:18px;width:10px;height:10px;border-radius:99px;background:rgba(var(--glow-rgb),.86);box-shadow:0 0 0 6px rgba(var(--glow-rgb),.16)}.eventTitle{margin:0;font-size:18px}.eventTime{font-family:var(--mono);font-size:12px;color:var(--muted)}.eventBody{margin:10px 0 0;color:var(--muted);line-height:1.55}.contactGrid{grid-template-columns:1.2fr .8fr}.footer{padding:40px 0 70px;color:var(--muted);font-size:13px}.socials{display:flex;gap:10px;flex-wrap:wrap}.socials a{padding:8px 10px;border-radius:999px;border:1px solid var(--line);background:var(--chip);transition:transform .2s var(--ease),background .2s var(--ease)}.socials a:hover{transform:translateY(-1px);background:var(--chip-hover)}@media(max-width:1120px){.brand span:last-child{font-size:15px}.navLinks a{padding:7px 10px}.themeSwitch button{padding:6px 8px}}@media(max-width:1180px){.desktopOnly{display:none!important}.mobileOnly{display:inline-flex}.navInner{justify-content:space-between}}@media(max-width:1180px){.heroGrid,.skillsGrid,.projectRow,.contactGrid{grid-template-columns:1fr}.skillStackMain{width:min(var(--max),calc(100% - 30px))}.skillStackSlot{position:relative;top:auto;height:auto;margin-bottom:18px}.skillStackCard{height:auto;min-height:460px}.skillStackLayout,.skillStackLayout.isReverse{flex-direction:column}.skillStackVisualWrap{min-height:220px}.skillStackContent{padding:24px}.sectionHead{flex-direction:column;align-items:flex-start}}@media(max-width:680px){.container{width:min(var(--max),calc(100% - 30px))}.hero{padding-top:124px}.mobilePanelLinks{grid-template-columns:1fr}.mobilePanelControls{flex-direction:column;align-items:stretch}.themeSwitch{width:100%;justify-content:space-between}.themeSwitch button{flex:1;text-align:center}.hTitle{font-size:clamp(36px,13vw,56px)}.skillStackHeading{font-size:clamp(24px,7vw,40px)}.skillStackVisualLabel{font-size:clamp(24px,10vw,42px)}}:root[data-theme=reading] .card{box-shadow:none}:root[data-theme=reading] .nav{font-family:var(--heading)}:root[data-theme=reading] .navInner,:root[data-theme=reading] .mobilePanel,:root[data-theme=reading] .pill,:root[data-theme=reading] .portraitBadge{-webkit-backdrop-filter:none;backdrop-filter:none}:root[data-theme=reading] .navInner{gap:6px;padding:8px 10px}:root[data-theme=reading] .navLinks{gap:4px;margin-left:2px}:root[data-theme=reading] .navLinks a{padding:6px 8px;font-size:13px}:root[data-theme=reading] .navActions{gap:6px}:root[data-theme=reading] .langToggle{padding:6px 9px;font-size:13px}:root[data-theme=reading] .smallLabel{display:none}:root[data-theme=reading] .themeSwitch button{padding:5px 7px;font-size:11px}:root[data-theme=reading] .cta{padding:7px 10px;font-size:13px}
