/*! locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */html.has-scroll-smooth{overflow:hidden}html.has-scroll-dragging{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.has-scroll-smooth body{overflow:hidden}.has-scroll-smooth [data-scroll-container]{min-height:100vh}[data-scroll-direction=horizontal] [data-scroll-container]{height:100vh;display:inline-block;white-space:nowrap}[data-scroll-direction=horizontal] [data-scroll-section]{display:inline-block;vertical-align:top;white-space:nowrap;height:100%}.c-scrollbar{position:absolute;right:0;top:0;width:11px;height:100%;transform-origin:center right;transition:transform .3s,opacity .3s;opacity:0}.c-scrollbar:hover{transform:scaleX(1.45)}.c-scrollbar:hover,.has-scroll-scrolling .c-scrollbar,.has-scroll-dragging .c-scrollbar{opacity:1}[data-scroll-direction=horizontal] .c-scrollbar{width:100%;height:10px;top:auto;bottom:0;transform:scaleY(1)}[data-scroll-direction=horizontal] .c-scrollbar:hover{transform:scaleY(1.3)}.c-scrollbar_thumb{position:absolute;top:0;right:0;background-color:#000;opacity:.5;width:7px;border-radius:10px;margin:2px;cursor:-webkit-grab;cursor:grab}.has-scroll-dragging .c-scrollbar_thumb{cursor:-webkit-grabbing;cursor:grabbing}[data-scroll-direction=horizontal] .c-scrollbar_thumb{right:auto;bottom:0}:root{--green: #6db33f;--green-bright: #8fd957;--cyan: #22d3ee;--purple: #c792ea;--orange: #f0883e;--font-display: "Space Grotesk", system-ui, sans-serif;--font-body: "Manrope", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--maxw: 1180px;--radius: 14px;--radius-sm: 9px}:root,[data-theme=dark]{--bg: #080c0b;--bg-2: #0c1210;--surface: #101815;--surface-2: #141e1a;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .18);--text: #eaf2ee;--text-2: #a8b8b2;--text-3: #6a7a74;--accent: var(--green);--accent-text: var(--green-bright);--glow: 0 0 0 1px rgba(109, 179, 63, .22), 0 10px 40px -12px rgba(109, 179, 63, .35);--glow-hero: radial-gradient(ellipse 70% 50% at 50% 100%, rgba(109,179,63,.12) 0%, transparent 70%);--grid-line: rgba(255, 255, 255, .028);--shadow: 0 24px 64px -28px rgba(0, 0, 0, .8);--term-bar: #090e0c;color-scheme:dark}[data-theme=light]{--bg: #f3f6f4;--bg-2: #eef2ef;--surface: #ffffff;--surface-2: #f7faf8;--border: rgba(13, 30, 24, .1);--border-strong: rgba(13, 30, 24, .2);--text: #0c1714;--text-2: #3f4f49;--text-3: #6c7a74;--accent: #4f8f28;--accent-text: #3d7a1c;--glow: 0 0 0 1px rgba(79, 143, 40, .2), 0 12px 36px -14px rgba(79, 143, 40, .28);--grid-line: rgba(13, 30, 24, .045);--shadow: 0 20px 50px -28px rgba(13, 30, 24, .3);--term-bar: #eef2ef;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;transition:background .4s ease,color .4s ease}::selection{background:var(--accent);color:#06140a}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.08;margin:0;letter-spacing:-.01em}p{margin:0}.bg-fx{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:46px 46px;-webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000 30%,transparent 100%);mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000 30%,transparent 100%);opacity:1;transition:opacity .4s ease}body.mode-plain .bg-fx{opacity:0}.toolbar{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;gap:14px;padding:14px clamp(16px,4vw,40px);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb,var(--bg) 72%,transparent);border-bottom:1px solid var(--border)}.tb-brand{font-family:var(--font-mono);font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--text);display:flex;align-items:center;gap:9px}.tb-brand .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent)}.tb-spacer{flex:1}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:999px}.seg button{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.02em;padding:7px 14px;border:0;border-radius:999px;background:transparent;color:var(--text-3);cursor:pointer;transition:color .2s,background .2s;white-space:nowrap}.seg button:hover{color:var(--text)}.seg button.on{background:var(--accent);color:#06140a}[data-theme=light] .seg button.on{color:#fff}.tb-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--text-2);cursor:pointer;transition:all .2s}.tb-icon:hover{color:var(--text);border-color:var(--border-strong);transform:translateY(-1px)}.tb-icon svg{width:17px;height:17px}.btn-pdf{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;font-weight:600;padding:9px 16px;border-radius:999px;cursor:pointer;background:var(--accent);color:#06140a;border:0;transition:transform .15s,box-shadow .2s}[data-theme=light] .btn-pdf{color:#fff}.btn-pdf:hover{transform:translateY(-1px);box-shadow:var(--glow)}.btn-pdf svg{width:15px;height:15px}@media (max-width: 720px){.tb-brand .name-full,.btn-pdf .label{display:none}.btn-pdf{padding:9px}body{font-size:16px}}.shell{position:relative;z-index:1}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 clamp(16px,4vw,40px)}.section{padding:clamp(64px,9vw,130px) 0;position:relative}.section-head{margin-bottom:44px}.section-num{font-family:var(--font-mono);font-size:13px;color:var(--accent-text);letter-spacing:.05em;margin-bottom:10px;display:block}.section-title{font-size:clamp(28px,4.4vw,46px)}.section-sub{color:var(--text-2);margin-top:12px;max-width:60ch;font-size:16px}.reveal{opacity:0}.reveal.in{animation:reveal-in .7s cubic-bezier(.2,.7,.2,1) both}@keyframes reveal-in{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}body.mode-plain .reveal{opacity:1!important;transform:none!important;animation:none!important}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none;animation:none}}.hero{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;padding-top:90px;overflow:hidden}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--glow-hero, radial-gradient(ellipse 70% 50% at 50% 100%, rgba(109,179,63,.1) 0%, transparent 70%));pointer-events:none;z-index:0}.hero-deco{position:absolute;right:clamp(10px,3vw,60px);top:50%;transform:translateY(-50%);z-index:2;pointer-events:none;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:0;animation:deco-drift 22s ease-in-out infinite alternate}.hero-deco-bracket{font-family:var(--font-display);font-size:clamp(180px,20vw,320px);font-weight:700;line-height:1;letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1.5px color-mix(in srgb,var(--accent) 18%,transparent);filter:drop-shadow(0 0 60px color-mix(in srgb,var(--accent) 8%,transparent));flex-shrink:0;opacity:.85}.hero-deco-bracket--close{animation-delay:-9s}.hero-deco-inner{padding:0 6px;display:flex;align-items:center}.hero-deco-code{font-family:var(--font-mono);font-size:clamp(10px,.82vw,12.5px);line-height:1.72;color:var(--accent-text);opacity:.22;white-space:pre;margin:0;padding:0;min-width:220px}.hero-deco-cursor{color:var(--accent-text);animation:blink 1s steps(1) infinite;opacity:.6}@keyframes deco-drift{0%{transform:translateY(-50%) translateY(0)}to{transform:translateY(-50%) translateY(-14px)}}body.mode-plain .hero-deco{display:none}@media print{.hero-deco{display:none!important}}@media (max-width: 1024px){.hero-deco{display:none}}[data-theme=light] .hero-deco-bracket{-webkit-text-stroke:1.5px color-mix(in srgb,var(--accent) 22%,transparent)}[data-theme=light] .hero-deco-code{opacity:.18}.hero-left{position:relative;z-index:4;max-width:820px;width:100%;padding:0 clamp(24px,5vw,64px)}.hero-status:empty{display:none}.hero-status{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-mono);font-size:11.5px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--accent-text);background:color-mix(in srgb,var(--surface) 55%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);padding:8px 16px 8px 10px;border-radius:999px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent),0 0 28px -4px color-mix(in srgb,var(--accent) 22%,transparent),inset 0 1px #ffffff12}[data-theme=light] .hero-status{background:color-mix(in srgb,var(--surface) 75%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.hero-status .pulse{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 var(--accent);animation:pulse 2.2s infinite;flex-shrink:0}@keyframes pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--accent) 70%,transparent)}70%{box-shadow:0 0 0 9px transparent}to{box-shadow:0 0 0 0 transparent}}.hero-name{font-size:clamp(60px,10.5vw,132px);line-height:.92;letter-spacing:-.04em;background:linear-gradient(148deg,#ffffff 0%,var(--text) 38%,var(--accent-text) 78%,color-mix(in srgb,var(--accent) 60%,var(--accent-text)) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 2px 0 rgba(255,255,255,.04)) drop-shadow(0 0 64px color-mix(in srgb,var(--accent) 28%,transparent)) drop-shadow(0 24px 48px color-mix(in srgb,var(--accent) 12%,transparent));will-change:transform,filter;isolation:isolate}[data-theme=light] .hero-name{background:linear-gradient(148deg,#1a2e1a 0%,color-mix(in srgb,var(--text) 55%,var(--accent)) 50%,var(--accent) 100%);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 0 32px color-mix(in srgb,var(--accent) 22%,transparent))}.hero-role{font-family:var(--font-mono);font-size:clamp(13px,1.6vw,17px);font-weight:400;letter-spacing:.03em;color:var(--text-3);margin-top:28px;display:flex;align-items:center}.hero-role:before{content:"$ ";color:var(--accent);font-weight:600;margin-right:8px;opacity:.8}.hero-role .caret{display:inline-block;width:2px;height:1.1em;vertical-align:-.14em;background:var(--accent-text);margin-left:3px;border-radius:1px;animation:blink 1.05s steps(1) infinite;box-shadow:0 0 6px var(--accent)}@keyframes blink{50%{opacity:0}}.hero-tag{color:var(--text-2);margin-top:22px;max-width:48ch;font-size:clamp(16px,1.4vw,18px);line-height:1.7;font-family:var(--font-body);padding-left:18px;border-left:2px solid color-mix(in srgb,var(--accent) 30%,transparent)}.hero-cta{display:flex;flex-direction:column;gap:14px;margin-top:42px}.hero-cta-secondary{display:flex;flex-wrap:wrap;gap:9px}.chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12.5px;font-weight:500;padding:8px 15px;border-radius:999px;border:1px solid var(--border);background:color-mix(in srgb,var(--surface) 50%,transparent);color:var(--text-2);transition:border-color .18s,color .18s,transform .18s,box-shadow .18s,background .18s;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.chip:hover{border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent-text);transform:translateY(-2px);box-shadow:0 6px 20px -6px color-mix(in srgb,var(--accent) 22%,transparent);background:color-mix(in srgb,var(--surface) 65%,transparent)}.chip svg{width:15px;height:15px;flex-shrink:0}.chip.primary{background:var(--accent);color:#06140a;border-color:transparent;font-weight:700;font-size:13.5px;padding:13px 24px;letter-spacing:.02em;box-shadow:inset 0 1px #ffffff38,0 0 0 1px color-mix(in srgb,var(--accent) 50%,transparent),0 8px 28px -6px color-mix(in srgb,var(--accent) 45%,transparent);transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s}.chip.primary:hover{transform:translateY(-3px) scale(1.02);box-shadow:inset 0 1px #ffffff40,0 0 0 1px color-mix(in srgb,var(--accent) 60%,transparent),0 14px 40px -6px color-mix(in srgb,var(--accent) 55%,transparent);color:#06140a;background:var(--accent)}[data-theme=light] .chip.primary,[data-theme=light] .chip.primary:hover{color:#fff}.scroll-cue{position:absolute;bottom:32px;left:clamp(24px,5vw,64px);z-index:4;font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);display:flex;flex-direction:column;align-items:center;gap:10px;writing-mode:vertical-lr;transform:rotate(180deg);opacity:.6;transition:opacity .2s}.scroll-cue:hover{opacity:1}.scroll-cue .bar{width:1px;height:40px;background:linear-gradient(180deg,transparent 0%,var(--accent) 40%,color-mix(in srgb,var(--accent) 40%,transparent) 100%);animation:bar-flow 2.4s ease-in-out infinite;flex-shrink:0}@keyframes bar-flow{0%{transform:scaleY(0);transform-origin:top;opacity:0}30%{opacity:1}to{transform:scaleY(1);transform-origin:top;opacity:.55}}@media (max-width: 720px){.hero{min-height:auto;padding-top:110px;padding-bottom:60px}.scroll-cue,.hero-deco{display:none}}.term{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-2);overflow:hidden;box-shadow:var(--shadow)}.term-bar{display:flex;align-items:center;gap:8px;padding:12px 15px;background:var(--term-bar);border-bottom:1px solid var(--border)}.term-bar .tl{width:11px;height:11px;border-radius:50%}.term-bar .tl.r{background:#ff5f57}.term-bar .tl.y{background:#febc2e}.term-bar .tl.g{background:#28c840}.term-bar .title{font-family:var(--font-mono);font-size:12px;color:var(--text-3);margin-left:8px}.term-body{padding:clamp(20px,3vw,34px);font-family:var(--font-mono);font-size:14.5px;line-height:1.75}.term-body .ln{display:block}.term-body .cmt{color:var(--text-3)}.term-body .kw{color:var(--purple)}.term-body .fn{color:var(--cyan)}.term-body .str{color:var(--accent-text)}.term-prompt{color:var(--accent)}.term-prose{color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.7;margin-top:6px}.timeline{position:relative;display:grid;gap:26px}.tl-item{position:relative;padding-left:38px;border-left:1px solid var(--border);padding-bottom:4px}.tl-item:before{content:"";position:absolute;left:-6.5px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 14%,transparent)}.tl-item.cur:before{background:var(--accent)}.xp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:clamp(20px,2.6vw,30px);transition:border-color .25s,transform .25s,box-shadow .25s}.xp-card:hover{border-color:var(--border-strong);transform:translateY(-3px);box-shadow:var(--shadow)}.xp-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 18px;align-items:baseline}.xp-role{font-size:clamp(19px,2.4vw,25px)}.xp-company{color:var(--accent-text);font-weight:600;font-size:16px;margin-top:3px}.xp-period{font-family:var(--font-mono);font-size:12.5px;color:var(--text-3);white-space:nowrap;border:1px solid var(--border);padding:5px 11px;border-radius:999px}.xp-period.cur{color:var(--accent-text);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.xp-summary{color:var(--text-2);margin-top:14px;font-size:16px}.xp-bullets{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:11px}.xp-bullets li{position:relative;padding-left:24px;color:var(--text);font-size:15.5px;line-height:1.6}.xp-bullets li:before{content:"▸";position:absolute;left:2px;top:0;color:var(--accent);font-size:13px}.taglist{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}.tag{font-family:var(--font-mono);font-size:12px;color:var(--text-2);padding:5px 10px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border)}.xp-card:hover .tag{border-color:var(--border)}.stack-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(28px,5vw,64px);align-items:center}.sphere-wrap{position:relative;aspect-ratio:1;max-width:460px;margin:0 auto;width:100%}.sphere-wrap canvas{display:block;width:100%;height:100%;cursor:grab}.sphere-wrap canvas:active{cursor:grabbing}.sphere-hint{text-align:center;font-family:var(--font-mono);font-size:11.5px;color:var(--text-3);margin-top:8px}.stack-cats{display:grid;gap:18px}.cat-row{border-top:1px solid var(--border);padding-top:16px}.cat-name{font-family:var(--font-mono);font-size:12.5px;color:var(--accent-text);letter-spacing:.04em;margin-bottom:11px}.cat-items{display:flex;flex-wrap:wrap;gap:8px}.proj-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.proj-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:clamp(22px,2.8vw,32px);position:relative;overflow:hidden;transition:border-color .25s,transform .25s,box-shadow .25s}.proj-card:after{content:"";position:absolute;top:0;right:0;width:120px;height:120px;background:radial-gradient(circle at top right,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%);opacity:0;transition:opacity .3s}.proj-card:hover{border-color:var(--border-strong);transform:translateY(-4px);box-shadow:var(--shadow)}.proj-card:hover:after{opacity:1}.proj-tag{font-family:var(--font-mono);font-size:11.5px;color:var(--accent-text);letter-spacing:.03em}.proj-name{font-size:clamp(20px,2.6vw,27px);margin-top:10px}.proj-summary{color:var(--text-2);margin-top:12px;font-size:15.5px}.proj-bullets{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:9px}.proj-bullets li{position:relative;padding-left:22px;font-size:14.5px;color:var(--text);line-height:1.55}.proj-bullets li:before{content:"›";position:absolute;left:4px;color:var(--accent)}@media (max-width: 860px){.proj-grid,.stack-grid{grid-template-columns:1fr}.sphere-wrap{max-width:380px}}.split{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,4vw,56px);align-items:start}@media (max-width: 860px){.split{grid-template-columns:1fr}}.edu-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:clamp(22px,3vw,34px)}.edu-degree{font-size:clamp(20px,2.6vw,27px)}.edu-school{color:var(--accent-text);font-weight:600;margin-top:5px}.edu-fac{color:var(--text-2);font-size:15px;margin-top:4px}.edu-meta{font-family:var(--font-mono);font-size:12.5px;color:var(--text-3);margin-top:10px}.edu-label{font-family:var(--font-mono);font-size:12px;color:var(--text-3);letter-spacing:.04em;margin:22px 0 11px}.skills-grid{display:grid;gap:14px}.skill-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:18px 20px;transition:border-color .2s,transform .2s}.skill-card:hover{border-color:var(--accent);transform:translate(3px)}.skill-t{font-family:var(--font-display);font-weight:600;font-size:17px;display:flex;align-items:center;gap:10px}.skill-t:before{content:"//";font-family:var(--font-mono);color:var(--accent);font-size:14px}.skill-d{color:var(--text-2);font-size:14.5px;margin-top:6px}.fact-rows{display:grid;gap:16px;margin-top:8px}.fact-label{font-family:var(--font-mono);font-size:12px;color:var(--text-3);letter-spacing:.04em;margin-bottom:8px}.gh-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:clamp(22px,3vw,34px)}.gh-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;margin-bottom:24px}.gh-handle{font-family:var(--font-mono);font-size:15px;display:flex;align-items:center;gap:10px}.gh-handle svg{width:20px;height:20px}.heatmap{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:3px;overflow:hidden}.heat-cell{width:100%;aspect-ratio:1;border-radius:2.5px;background:var(--surface-2)}.gh-legend{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11px;color:var(--text-3);margin-top:14px;justify-content:flex-end}.gh-legend .sq{width:11px;height:11px;border-radius:2.5px}.gh-note{color:var(--text-3);font-size:13px;margin-top:16px;font-family:var(--font-mono)}.contact{text-align:center}.contact-big{font-size:clamp(30px,6vw,68px);letter-spacing:-.02em}.contact-mail{color:var(--accent-text)}.contact-row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:36px}.footer{padding:40px 0 60px;text-align:center;font-family:var(--font-mono);font-size:12px;color:var(--text-3)}.footer .sep{opacity:.4;margin:0 8px}body.mode-plain .hero{min-height:auto;flex-direction:column;align-items:flex-start;padding-top:96px}body.mode-plain .hero-left{padding:0 clamp(24px,5vw,64px)}body.mode-plain .scroll-cue,body.mode-plain .hero-role .caret{display:none}body.mode-plain .section{padding:30px 0}body.mode-plain .hero{padding-bottom:0}body.mode-plain .hero-name{font-size:clamp(36px,6vw,56px);-webkit-text-fill-color:var(--text);background:none;filter:none;letter-spacing:-.02em}body.mode-plain .stack-grid{grid-template-columns:1fr}body.mode-plain .hero-status .pulse{animation:none}body.mode-plain .section+.section .section-head{border-top:1px solid var(--border);padding-top:36px}@media print{@page{margin:14mm}.toolbar,.bg-fx,.scroll-cue,.hero-canvas-wrap,.sphere-wrap,.sphere-hint,.graph-hint,.hero-status .pulse{display:none!important}body{background:#fff!important;color:#111!important;font-size:11pt}:root{--text: #111;--text-2: #333;--text-3: #666;--border: #ccc;--surface: #fff;--surface-2: #f7f7f7;--accent-text: #2f6a14;--accent: #4f8f28}.shell{z-index:auto}.section{padding:14px 0!important;break-inside:avoid}.hero{min-height:auto!important;grid-template-columns:1fr!important;padding-top:0!important;gap:0}.hero-name{font-size:30pt!important}.xp-card,.proj-card,.edu-card,.gh-card,.term,.skill-card{box-shadow:none!important;break-inside:avoid}.xp-card:hover,.proj-card:hover{transform:none!important}.reveal{opacity:1!important;transform:none!important;animation:none!important}a{color:#111!important}.heatmap{display:none}}html.has-scroll-smooth,.has-scroll-smooth body{overflow:hidden}[data-scroll-container]{min-height:100vh}.hero-canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 55% 65% at 35% 115%,color-mix(in srgb,var(--accent) 16%,transparent) 0%,transparent 62%),radial-gradient(ellipse 35% 35% at 15% 45%,color-mix(in srgb,var(--cyan) 7%,transparent) 0%,transparent 70%),radial-gradient(ellipse 25% 25% at 85% 20%,color-mix(in srgb,var(--accent) 5%,transparent) 0%,transparent 70%);pointer-events:none;z-index:1}.section-num{text-shadow:0 0 24px color-mix(in srgb,var(--accent) 55%,transparent);font-size:11.5px;letter-spacing:.1em}.section-title{overflow:hidden;display:block}.xp-card{background:color-mix(in srgb,var(--surface) 60%,transparent)!important;backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);box-shadow:inset 0 1px #ffffff0e,inset 0 -1px #00000014,0 2px #ffffff05,0 40px 80px -24px #0000008c,0 0 0 1px color-mix(in srgb,var(--accent) 6%,transparent)!important;transition:box-shadow .3s,border-color .3s!important;transform-style:preserve-3d;will-change:transform}.xp-card:hover{border-color:color-mix(in srgb,var(--accent) 35%,transparent)!important;box-shadow:inset 0 1px #ffffff12,0 40px 80px -20px #000000a6,0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent),0 0 60px -10px color-mix(in srgb,var(--accent) 12%,transparent)!important;transform:none!important}.xp-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 7%,transparent) 0%,transparent 55%,color-mix(in srgb,var(--cyan) 4%,transparent) 100%);opacity:0;transition:opacity .4s;pointer-events:none;z-index:0}.xp-card:hover:before{opacity:1}.xp-card>*{position:relative;z-index:1}.proj-card{backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3);background:color-mix(in srgb,var(--surface) 65%,transparent)!important;box-shadow:inset 0 1px #ffffff0d,0 32px 60px -20px #00000080!important;transform-style:preserve-3d;will-change:transform;transition:box-shadow .3s,border-color .3s!important}.proj-card:hover{border-color:color-mix(in srgb,var(--accent) 30%,transparent)!important;transform:none!important;box-shadow:inset 0 1px #ffffff12,0 0 0 1px color-mix(in srgb,var(--accent) 20%,transparent),0 0 50px -8px color-mix(in srgb,var(--accent) 10%,transparent),0 40px 80px -20px #0009!important}.proj-card-glow{position:absolute;top:-60px;right:-60px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 20%,transparent),transparent 70%);opacity:0;transition:opacity .4s;pointer-events:none}.proj-card:hover .proj-card-glow{opacity:1}.skill-card{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:color-mix(in srgb,var(--surface) 70%,transparent)!important;transform-style:preserve-3d;will-change:transform;transition:border-color .25s,box-shadow .25s!important}.skill-card:hover{transform:none!important;border-color:color-mix(in srgb,var(--accent) 40%,transparent)!important;box-shadow:0 0 30px -8px color-mix(in srgb,var(--accent) 15%,transparent)!important}.edu-card,.gh-card{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:color-mix(in srgb,var(--surface) 65%,transparent)!important;transform-style:preserve-3d;will-change:transform}.term{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb,var(--bg-2) 80%,transparent)!important;box-shadow:inset 0 1px #ffffff0a,0 30px 60px -20px #00000080!important}.xp-card,.proj-card,.edu-card,.gh-card,.skill-card{transform-style:preserve-3d}.tl-item:before{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 14%,transparent),0 0 20px -4px color-mix(in srgb,var(--accent) 40%,transparent)!important}.tl-item.cur:before{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 25%,transparent),0 0 28px -2px color-mix(in srgb,var(--accent) 60%,transparent)!important;animation:dot-pulse 2s ease-in-out infinite}@keyframes dot-pulse{0%,to{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 25%,transparent),0 0 28px -2px color-mix(in srgb,var(--accent) 60%,transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 12%,transparent),0 0 44px color-mix(in srgb,var(--accent) 80%,transparent)}}.section:not(.hero):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--accent) 18%,transparent) 30%,color-mix(in srgb,var(--accent) 18%,transparent) 70%,transparent 100%);pointer-events:none}.bg-fx{background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px),radial-gradient(ellipse 80% 60% at 50% 0%,color-mix(in srgb,var(--accent) 5%,transparent) 0%,transparent 70%)!important;background-size:46px 46px,46px 46px,100% 100%!important;-webkit-mask-image:none!important;mask-image:none!important;opacity:.9}.tag:hover{border-color:color-mix(in srgb,var(--accent) 40%,transparent);color:var(--accent-text);background:color-mix(in srgb,var(--accent) 8%,var(--surface-2));transition:all .18s}.contact-mail{text-shadow:0 0 60px color-mix(in srgb,var(--accent) 30%,transparent)}[data-theme=light] .xp-card,[data-theme=light] .proj-card,[data-theme=light] .edu-card,[data-theme=light] .gh-card,[data-theme=light] .skill-card{-webkit-backdrop-filter:blur(20px) saturate(1.5);backdrop-filter:blur(20px) saturate(1.5);background:color-mix(in srgb,var(--surface) 80%,transparent)!important}[data-theme=light] .hero-canvas-wrap{display:none}[data-theme=light] .hero{background:linear-gradient(160deg,#f4f9f4,#eef6ee)}[data-theme=light] .hero:before{background:radial-gradient(ellipse 65% 55% at 22% 88%,rgba(109,179,63,.22) 0%,transparent 65%),radial-gradient(ellipse 50% 45% at 80% 25%,rgba(34,211,238,.1) 0%,transparent 60%),radial-gradient(ellipse 40% 45% at 55% 5%,rgba(109,179,63,.15) 0%,transparent 60%),radial-gradient(ellipse 30% 30% at 35% 50%,rgba(109,179,63,.06) 0%,transparent 70%)}[data-theme=light] .hero:after{background:radial-gradient(ellipse 55% 60% at 28% 110%,rgba(109,179,63,.14) 0%,transparent 62%),radial-gradient(ellipse 30% 30% at 12% 45%,rgba(34,211,238,.06) 0%,transparent 70%),radial-gradient(ellipse 20% 20% at 82% 18%,rgba(109,179,63,.04) 0%,transparent 70%)}.c-scrollbar{width:5px!important}.c-scrollbar_thumb{background:var(--accent)!important;border-radius:999px!important;opacity:.45!important;cursor:grab}.c-scrollbar_thumb:active{cursor:grabbing;opacity:.7!important}@media (prefers-reduced-motion: reduce){.xp-card,.proj-card,.skill-card,.edu-card,.gh-card{-webkit-backdrop-filter:none;backdrop-filter:none}.tl-item.cur:before{animation:none}.scroll-cue .bar{animation:none}}.tb-term-btn{color:var(--accent-text);border:1px solid rgba(143,217,87,.3);border-radius:var(--radius-sm);transition:border-color .2s,background .2s}.tb-term-btn:hover{background:#8fd9571a;border-color:#8fd95799}.tb-term-btn svg{width:18px;height:18px}.term-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9000;background:#000000a6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;animation:fadeOverlay .18s ease}@keyframes fadeOverlay{0%{opacity:0}to{opacity:1}}.term-win{width:min(820px,100%);max-height:85vh;background:#080d0b;border:1px solid rgba(143,217,87,.25);border-radius:14px;box-shadow:0 32px 80px -16px #000000e6,0 0 0 1px #8fd9571a;display:flex;flex-direction:column;font-family:var(--font-mono);animation:slideUp .2s cubic-bezier(.22,1,.36,1);overflow:hidden}@keyframes slideUp{0%{transform:translateY(20px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.term-scroll{overflow-y:auto;flex:1;padding:16px 20px;min-height:200px;max-height:calc(85vh - 100px);scrollbar-width:thin;scrollbar-color:rgba(143,217,87,.3) transparent}.tl-line{font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.tl-sys{color:#8fd957b3}.tl-out{color:#c8d8d2}.tl-acc{color:var(--green-bright);font-weight:600}.tl-err{color:#ff6b6b}.tl-sha{color:#74b9ff}.tl-cmd{color:#c8d8d2;padding-left:1ch}.tl-prompt{color:#c8d8d2}.tl-ps1{color:var(--green-bright);font-weight:700}.tl-lnk{color:var(--green-bright)}.tl-lnk-a{color:var(--green-bright);text-decoration:underline;text-decoration-color:#8fd95766;text-underline-offset:3px;transition:text-decoration-color .15s}.tl-lnk-a:hover{text-decoration-color:var(--green-bright)}.term-input-row{display:flex;align-items:center;padding:12px 20px;border-top:1px solid rgba(143,217,87,.1);background:#060b09;gap:0}.term-input{flex:1;background:transparent;border:none;outline:none;color:#e0ede8;font-family:var(--font-mono);font-size:13px;caret-color:var(--green-bright)}.term-input::placeholder{color:#c8d8d24d}.tetris-wrap{display:flex;gap:20px;align-items:flex-start;margin:12px 0;padding:16px;background:#0000004d;border-radius:10px;border:1px solid rgba(143,217,87,.15)}.tetris-canvas{border:1px solid rgba(143,217,87,.2);border-radius:4px;display:block;image-rendering:pixelated}.tetris-panel{display:flex;flex-direction:column;gap:8px;min-width:100px}.tet-stat{display:flex;flex-direction:column;gap:2px}.tet-label{font-size:10px;color:#8fd95799;letter-spacing:.12em}.tet-val{font-size:20px;font-weight:700;color:var(--green-bright)}.tet-next-canvas{margin-top:6px;display:block;border:1px solid rgba(143,217,87,.15);border-radius:3px}.tet-keys{margin-top:16px;font-size:10px;color:#c8d8d266;line-height:1.8}
