*,: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: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}:root{color:#24231f;background:#f6f1e8;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--ink: #24231f;--muted: #6d685f;--soft: #948d82;--paper: rgba(255, 252, 245, .76);--paper-solid: #fffaf2;--surface: #eee5d8;--line: rgba(36, 35, 31, .13);--line-strong: rgba(36, 35, 31, .25);--green: #6e806d;--blue: #697986;--wine: #7d4449;--brown: #9b7e60;--shadow: 0 28px 80px rgba(83, 67, 45, .1);--mouse-x: 50%;--mouse-y: 50%}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0;color:var(--ink);font-family:Inter,Noto Sans SC,ui-sans-serif,system-ui,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:radial-gradient(circle at 14% 16%,rgba(105,121,134,.18),transparent 25rem),radial-gradient(circle at 86% 18%,rgba(125,68,73,.1),transparent 24rem),radial-gradient(circle at 72% 72%,rgba(110,128,109,.1),transparent 30rem),#f6f1e8;isolation:isolate}body:before,body:after{position:fixed;inset:0;z-index:0;pointer-events:none;content:""}body:before{opacity:.5;background-image:linear-gradient(rgba(36,35,31,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(36,35,31,.028) 1px,transparent 1px),radial-gradient(rgba(36,35,31,.13) .55px,transparent .55px),radial-gradient(rgba(255,255,255,.64) .55px,transparent .55px);background-position:0 0,0 0,0 0,10px 12px;background-size:84px 84px,84px 84px,22px 22px,22px 22px;-webkit-mask-image:linear-gradient(to bottom,black 0%,rgba(0,0,0,.55) 46%,transparent 100%);mask-image:linear-gradient(to bottom,black 0%,rgba(0,0,0,.55) 46%,transparent 100%)}body:after{background:radial-gradient(280px circle at var(--mouse-x) var(--mouse-y),rgba(255,255,255,.46),rgba(155,126,96,.12) 26%,transparent 64%);mix-blend-mode:soft-light}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}img{display:block;max-width:100%}h1,h2,h3,.hero-kicker,.eyebrow,.link-button,.chip,.nav-brand,.site-nav nav a,.site-nav nav button{word-break:keep-all;overflow-wrap:normal}h1,h2,h3{text-wrap:balance}p{overflow-wrap:break-word}.page-shell{position:relative;z-index:1;overflow:hidden}.cursor-sparkle{position:fixed;z-index:2;width:5px;height:5px;border-radius:50%;pointer-events:none;opacity:0;background:#ffffffdb;box-shadow:0 0 10px #ffffffb8,0 0 16px #9b7e6047;transform:translate(-50%,-50%) scale(.35)}.cursor-sparkle.is-active{animation:sparkleTrail .76s ease-out both}.site-nav{position:fixed;top:18px;left:50%;z-index:30;display:flex;width:min(1120px,calc(100% - 48px));min-height:54px;align-items:center;justify-content:space-between;padding:10px 12px 10px 18px;border:1px solid rgba(36,35,31,.1);border-radius:999px;background:#fffcf5c7;box-shadow:0 18px 55px #53432d14;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transform:translate(-50%)}.nav-brand{font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:1.08rem;font-weight:700;white-space:nowrap}.site-nav nav{display:flex;align-items:center;gap:4px}.site-nav nav a,.site-nav nav button{display:inline-flex;min-height:34px;align-items:center;border:0;border-radius:999px;padding:8px 12px;color:var(--muted);background:transparent;font-size:.88rem;white-space:nowrap;cursor:pointer;transition:color .22s ease,background .22s ease}.site-nav nav a:hover,.site-nav nav button:hover,.nav-resume{color:var(--ink);background:#6e806d1f}.hero-section,.section-shell{min-height:100vh;padding:120px 24px}.section-inner,.hero-content,.site-footer,.detail-page,.resume-page{width:min(1120px,100%);margin:0 auto}.narrow-inner{width:min(760px,100%);margin:0 auto}.hero-section{position:relative;display:grid;align-items:center}.hero-section:before{position:absolute;top:20%;left:max(24px,calc((100vw - 1120px)/2 - 70px));width:210px;height:290px;border:1px solid rgba(125,68,73,.16);border-radius:50% 50% 43% 57%;content:"";transform:rotate(-16deg)}.hero-section:after{position:absolute;right:max(24px,calc((100vw - 1120px)/2 - 80px));bottom:16%;width:290px;height:170px;border:1px solid rgba(110,128,109,.18);border-radius:999px;content:"";transform:rotate(-10deg)}.hero-content{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,400px);gap:clamp(48px,8vw,96px);align-items:center;animation:heroEnter .85s ease-out both}.hero-copy{width:min(620px,100%)}.hero-kicker,.eyebrow{margin:0;color:var(--green);font-size:.72rem;font-weight:760;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap}.hero-content h1{margin:20px 0 18px;color:#1f1e1a;font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:clamp(2.9rem,6vw,5.05rem);font-weight:560;line-height:.95}.hero-title{width:min(620px,100%);margin:0;color:#3c3933;font-size:clamp(1.02rem,1.7vw,1.24rem);font-weight:520;line-height:1.82}.hero-direction{width:min(620px,100%);margin:12px 0 0;color:var(--muted);font-size:.98rem;line-height:1.86}.hero-portrait{position:relative;justify-self:end;width:min(400px,100%)}.hero-portrait:before{position:absolute;inset:10% -8% auto auto;width:58%;height:72%;border-radius:52% 48% 48% 52%;background:#ded2c2;content:"";transform:rotate(9deg)}.avatar-ring{position:relative;z-index:1;width:min(340px,82vw);aspect-ratio:.82;margin-left:auto;overflow:hidden;border:1px solid rgba(36,35,31,.13);border-radius:46% 46% 8px 8px;background:var(--paper-solid);box-shadow:var(--shadow)}.avatar-ring img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;filter:saturate(.94) contrast(.98)}.hero-portrait p{position:relative;z-index:1;margin:14px 0 0;color:var(--soft);font-size:.74rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;text-align:right}.hero-actions,.project-actions,.contact-actions,.detail-actions,.resume-actions{display:flex;flex-wrap:wrap;gap:10px}.hero-actions{margin-top:30px}.link-button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:999px;padding:10px 17px;color:var(--ink);background:#fffcf552;font-size:.88rem;font-weight:650;line-height:1;white-space:nowrap;cursor:pointer;transition:transform .22s ease,border-color .22s ease,background .22s ease,color .22s ease}.link-button:hover{border-color:var(--green);background:#6e806d1a;transform:translateY(-2px)}.link-button--primary{border-color:#6e806d70;color:var(--ink);background:#e0d7c8b8}.link-button--secondary,.link-button--ghost{background:transparent}.scroll-cue{position:absolute;bottom:28px;left:50%;display:grid;width:42px;height:42px;place-items:center;border:1px solid var(--line);border-radius:999px;color:var(--muted);transform:translate(-50%);animation:floatCue 2.4s ease-in-out infinite}.section-header{width:min(760px,100%);margin:0 auto 48px;text-align:center}.section-heading{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.section-heading h2{margin:0;color:#22201c;font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:clamp(2.25rem,4.8vw,4.2rem);font-weight:560;line-height:1}.section-heading span{color:var(--green);font-size:.76rem;font-weight:850;letter-spacing:.16em;line-height:1;text-transform:uppercase;white-space:nowrap}.section-intro{width:min(760px,100%);margin:18px auto 0;color:var(--muted);font-size:.98rem;line-height:1.86}.fade-up{opacity:0;transform:translateY(28px);transition:opacity .76s ease-out,transform .76s ease-out}.fade-up.is-visible{opacity:1;transform:translateY(0)}.glass-card,.skill-card,.project-card,.timeline-item,.education-card,.contact-panel,.detail-block{border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:var(--shadow)}.glass-card{padding:clamp(30px,5vw,54px)}.about-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(280px,.82fr);gap:clamp(34px,7vw,76px);align-items:start}.about-copy{width:min(680px,100%)}.about-copy p,.about-focus p,.skill-card p,.project-body p,.timeline-item p,.detail-summary,.detail-block p,.detail-list{color:var(--muted);line-height:1.88}.detail-list{margin:14px 0 0;padding-left:1.1rem}.detail-list li+li{margin-top:10px}.about-copy p{margin:0;font-size:1rem}.about-copy p+p{margin-top:18px}.about-focus{padding:28px;border-left:2px solid var(--green);background:#eee5d894}.about-focus span,.contact-label,.timeline-period,.project-subtitle{color:var(--wine);font-size:.78rem;font-weight:760;letter-spacing:.04em}.about-focus strong{display:block;margin-top:10px;color:#2a2925;font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:1.5rem;font-weight:560;line-height:1.28;text-wrap:balance}.trait-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:20px}.trait-list span{display:inline-flex;min-height:38px;align-items:center;border:1px solid rgba(36,35,31,.1);border-radius:999px;padding:8px 12px;color:#4b4943;background:#fffcf5a3;font-size:.8rem;font-weight:600;white-space:nowrap}.skills-grid,.education-grid,.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.skill-card,.timeline-item,.education-card,.detail-block{padding:26px}.skill-card{display:flex;min-height:190px;flex-direction:column;justify-content:center;background:#fffcf594;transition:transform .24s ease-out,background .24s ease-out,border-color .24s ease-out}.skill-card:hover{border-color:#6e806d4d;background:#fffcf5db;transform:translateY(-4px)}.skill-card h3,.project-body h3,.timeline-item h3,.education-card h3,.detail-block h2{margin:0;color:#22201c;font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:1.48rem;font-weight:600;line-height:1.18}.tag-row{display:flex;flex-wrap:wrap;gap:7px}.chip{display:inline-flex;min-height:27px;align-items:center;border:1px solid rgba(36,35,31,.12);border-radius:999px;padding:6px 10px;color:#5f5b52;background:#ffffff61;font-size:.75rem;line-height:1;white-space:nowrap}.projects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:stretch}.project-card{display:flex;min-height:620px;overflow:hidden;flex-direction:column;background:#fffcf5bd;transition:transform .26s ease-out,box-shadow .26s ease-out,border-color .26s ease-out}.project-card:hover{border-color:#6e806d57;box-shadow:0 30px 90px #53432d1f;transform:translateY(-5px)}.project-media{position:relative;aspect-ratio:16 / 10;overflow:hidden;flex:0 0 auto;background:var(--surface)}.project-media:after{position:absolute;inset:0;content:"";background:linear-gradient(to top,rgba(36,35,31,.2),transparent 56%);pointer-events:none}.project-media img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;filter:saturate(.86) contrast(.96);transition:transform .5s ease-out,filter .5s ease-out}.project-card:hover .project-media img{filter:saturate(.96) contrast(1);transform:scale(1.025)}.project-media span{position:absolute;top:14px;left:14px;z-index:1;border:1px solid rgba(255,252,245,.55);border-radius:999px;padding:7px 11px;color:#fffaf2;background:#24231f47;font-size:.72rem;font-weight:760;white-space:nowrap;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.project-body{display:flex;flex:1;flex-direction:column;gap:13px;padding:25px;text-align:left}.project-body h3{margin-top:8px;font-size:1.78rem}.project-body p{margin:0}.project-actions{margin-top:auto}.project-actions .link-button{min-height:35px;padding:8px 12px;font-size:.8rem}.project-actions .link-button--primary{border-color:#6e806d9e;background:#6e806d24}.project-actions .link-button--primary:hover{background:#6e806d33;transform:translateY(-2px)}.timeline{position:relative;display:grid;gap:16px}.timeline:before{position:absolute;top:22px;bottom:22px;left:11px;width:1px;background:#24231f2e;content:""}.timeline-item{position:relative;margin-left:34px;background:#fffcf594}.research-title-link{text-decoration-color:transparent;text-decoration-line:underline;text-underline-offset:.18em;transition:color .18s ease,text-decoration-color .18s ease}.research-title-link:hover{color:var(--green);text-decoration-color:currentColor}.timeline-dot{position:absolute;top:28px;left:-29px;width:11px;height:11px;border:2px solid #f6f1e8;border-radius:50%;background:var(--wine)}.education-card p{margin:0 0 14px;color:var(--wine);font-weight:720}.education-card span{display:block;margin-top:10px;color:var(--muted);line-height:1.75}.contact-panel{display:grid;grid-template-columns:minmax(0,.9fr) minmax(320px,auto);gap:28px;align-items:center;padding:clamp(26px,4vw,38px);background:#fffcf5b3}.contact-section{min-height:auto;padding-top:84px;padding-bottom:84px}.contact-panel>div:first-child a{overflow-wrap:anywhere;color:#22201c;font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:clamp(1.4rem,3vw,2.35rem);font-weight:560}.contact-actions{justify-content:flex-end}.site-footer{display:flex;padding:30px 24px 38px;justify-content:space-between;gap:14px;border-top:1px solid var(--line);color:var(--soft);font-size:.88rem}.modal-backdrop{position:fixed;inset:0;z-index:60;display:grid;padding:24px;place-items:center;background:#24231f57;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.wechat-modal,.resume-modal{position:relative;border:1px solid var(--line);border-radius:8px;background:var(--paper-solid);box-shadow:0 30px 90px #53432d2e}.wechat-modal{width:min(360px,100%);padding:26px;text-align:center}.resume-modal{display:flex;width:min(980px,calc(100vw - 36px));max-height:min(88vh,900px);flex-direction:column;overflow:hidden}.resume-modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line)}.resume-modal-header h3{margin:7px 0 0;color:var(--ink);font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:1.7rem;font-weight:600}.resume-modal object,.resume-modal iframe{display:block;width:100%;height:min(70vh,760px);min-height:520px;border:0;background:#f7f4ec}.resume-modal-fallback{display:none;padding:16px 20px 20px;border-top:1px solid var(--line)}.wechat-modal h3{margin:8px 0 18px;color:var(--ink);font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:1.65rem;font-weight:600}.wechat-modal img{width:100%;border-radius:8px}.modal-close{position:absolute;top:10px;right:10px;display:grid;width:34px;height:34px;place-items:center;border:1px solid var(--line);border-radius:999px;color:var(--ink);background:#ffffff8a;cursor:pointer}.modal-enter-active,.modal-leave-active{transition:opacity .22s ease}.modal-enter-from,.modal-leave-to{opacity:0}.detail-page,.resume-page{padding:42px 24px 86px}.back-link{display:inline-flex;margin-bottom:28px;color:var(--green);font-weight:700;white-space:nowrap}.detail-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.86fr);gap:36px;align-items:center;min-height:72vh}.detail-hero h1{margin:12px 0 10px;color:var(--ink);font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:clamp(2.55rem,5.6vw,4.55rem);font-weight:560;line-height:1.02;overflow-wrap:normal;word-break:keep-all}.detail-subtitle{margin:0;color:var(--wine);font-size:1.16rem;font-weight:700}.detail-hero img{width:100%;max-height:430px;border:1px solid var(--line);border-radius:8px;-o-object-fit:contain;object-fit:contain;background:#fffcf58c;box-shadow:var(--shadow)}.detail-actions{justify-content:flex-start;margin-top:24px}.resume-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.resume-actions{justify-content:flex-end}.resume-preview{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--paper-solid);box-shadow:var(--shadow)}.resume-copy{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:22px 24px;border-bottom:1px solid var(--line)}.resume-copy h1{margin:8px 0 0;color:var(--ink);font-family:Cormorant Garamond,Playfair Display,"Noto Serif SC",serif;font-size:clamp(1.35rem,2.2vw,2rem);font-weight:560;line-height:1.18}.resume-copy p:last-child{width:min(360px,100%);margin:0;color:var(--muted);line-height:1.65}.resume-preview object,.resume-preview iframe{display:block;width:100%;height:min(78vh,940px);min-height:680px;border:0;background:#f7f4ec}.fade-up .skill-card,.fade-up .project-card,.fade-up .timeline-item,.fade-up .education-card{opacity:0;transform:translateY(18px);transition:opacity .72s ease-out,transform .72s ease-out}.fade-up.is-visible .skill-card,.fade-up.is-visible .project-card,.fade-up.is-visible .timeline-item,.fade-up.is-visible .education-card{opacity:1;transform:translateY(0)}.fade-up.is-visible .skill-card:nth-child(2),.fade-up.is-visible .project-card:nth-child(2),.fade-up.is-visible .timeline-item:nth-child(2),.fade-up.is-visible .education-card:nth-child(2){transition-delay:90ms}.fade-up.is-visible .skill-card:nth-child(3),.fade-up.is-visible .project-card:nth-child(3),.fade-up.is-visible .timeline-item:nth-child(3){transition-delay:.15s}.fade-up.is-visible .project-card:nth-child(4){transition-delay:.15s}@keyframes heroEnter{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes floatCue{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,7px)}}@keyframes sparkleTrail{0%{opacity:0;transform:translate(-50%,-50%) scale(.25)}18%{opacity:.9}to{opacity:0;transform:translate(calc(-50% - 10px),calc(-50% + 8px)) scale(1.1)}}@media(max-width:920px){.site-nav{align-items:flex-start;border-radius:22px;gap:10px}.site-nav nav{flex-wrap:wrap;justify-content:flex-end}.site-nav nav a,.site-nav nav button{min-height:32px;padding:7px 9px;font-size:.82rem}.hero-section,.section-shell{min-height:auto;padding:104px 24px}.hero-content,.about-grid,.contact-panel,.detail-hero{grid-template-columns:1fr}.hero-portrait{justify-self:start}.avatar-ring{margin-left:0}.hero-portrait p{text-align:left}.section-header{margin-bottom:34px}.trait-list,.skills-grid,.projects-grid,.education-grid,.detail-grid{grid-template-columns:1fr}.project-card{min-height:auto}.contact-actions{justify-content:flex-start}.resume-topbar,.resume-copy,.resume-modal-header{align-items:flex-start;flex-direction:column}.resume-modal object,.resume-modal iframe{height:52vh;min-height:0}}@media(max-width:620px){.site-nav{position:absolute;top:12px;width:calc(100% - 24px);padding:10px}.nav-brand{display:none}.site-nav nav{width:100%;justify-content:center}.hero-section,.section-shell{padding:92px 18px}.hero-content h1{font-size:clamp(2.75rem,15vw,3.8rem)}.hero-actions,.project-actions,.contact-actions,.resume-actions{width:100%}.hero-actions .link-button,.contact-actions .link-button,.resume-actions .link-button{flex:1 1 136px}.glass-card,.skill-card,.project-body,.timeline-item,.education-card,.contact-panel,.detail-block{padding:20px}.project-media{aspect-ratio:16 / 11}.site-footer{flex-direction:column;padding-right:18px;padding-left:18px}.resume-preview object,.resume-preview iframe{min-height:560px}.resume-modal object,.resume-modal iframe{display:none}.resume-modal-fallback{display:block}}@media(pointer:coarse){body:after,.cursor-sparkle{display:none}}
