/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--default-mono-font-family:var(--font-ibm-plex-mono)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.static{position:static}.start{inset-inline-start:var(--spacing)}.block{display:block}.hidden{display:none}.table{display:table}.resize{resize:both}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--background:#05070a;--surface:#0b0f15;--surface-raised:#111722;--foreground:#f2f5f8;--muted:#a3aab5;--subtle:#737b87;--line:#e0eaf629;--line-strong:#e0eaf652;--accent:#67b3f1;--header-height:72px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 24px);background:var(--background)}body{background:var(--background);min-width:320px;color:var(--foreground);font-family:var(--font-ibm-plex-mono), "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;text-rendering:optimizelegibility;margin:0;overflow-x:hidden}:where([lang=en],time,.latin,.nav-brand,.name-pill,.hero-kicker,.hero h1,.profile-caption span,.site-footer,.work-title-block>p,.work-metadata,.project-card-copy span,.project-card-copy p){font-family:var(--font-ibm-plex-mono), monospace;font-weight:400}::selection{color:var(--foreground);background:#67b3f147}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;font:inherit}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.section-shell{width:min(100% - 80px,1440px);margin-inline:auto}.section-label{color:var(--accent);font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.14em;text-transform:uppercase;margin:0 0 22px;font-size:.78rem}.primary-button{min-height:54px;color:var(--foreground);white-space:nowrap;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0a0d1280;border:1px solid #f2f5f894;border-radius:999px;justify-content:center;align-items:center;gap:18px;padding:0 18px 0 26px;font-size:.94rem;font-weight:520;transition:transform .28s cubic-bezier(.16,1,.3,1),border-color .28s cubic-bezier(.16,1,.3,1),background-color .28s cubic-bezier(.16,1,.3,1);display:inline-flex}.primary-button svg{background:var(--foreground);width:38px;height:38px;color:var(--background);border-radius:999px;padding:9px;display:grid}.primary-button:hover{border-color:var(--foreground);background:#121821d1;transform:translateY(-2px)}.primary-button:active{transform:translateY(0)scale(.98)}.site-header{z-index:30;min-height:var(--header-height);-webkit-backdrop-filter:blur(20px)saturate(135%);backdrop-filter:blur(20px)saturate(135%);background:#05070a9e;border-bottom:1px solid #e0eaf61a;position:fixed;inset:0 0 auto}.nav-shell{width:min(100% - 48px,1504px);height:var(--header-height);grid-template-columns:auto 1fr auto;align-items:center;gap:clamp(24px,3vw,62px);margin-inline:auto;display:grid}.nav-brand{color:var(--foreground);font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.02em;white-space:nowrap;align-items:center;gap:12px;font-size:.78rem;display:flex}.nav-brand span:first-child{color:var(--accent)}.nav-brand-return{color:var(--foreground);gap:9px}.nav-brand-return span:first-child{color:inherit}.desktop-nav{justify-content:flex-start;align-items:center;gap:clamp(22px,2.4vw,48px);min-width:0;display:flex}.desktop-nav a{color:var(--muted);white-space:nowrap;font-size:.88rem;transition:color .22s}:is(.desktop-nav a:hover,.desktop-nav a:focus-visible,.desktop-nav a.is-active){color:var(--accent)}:is(.desktop-nav a:hover,.desktop-nav a:focus-visible){color:var(--foreground)}:is(.desktop-nav a.is-active:hover,.desktop-nav a.is-active:focus-visible){color:var(--accent)}.name-pill{min-height:38px;color:var(--foreground);font-family:var(--font-ibm-plex-mono), monospace;white-space:nowrap;border:1px solid #f2f5f8ad;border-radius:999px;align-items:center;gap:7px;padding:0 18px;font-size:.76rem;transition:background-color .22s,color .22s;display:inline-flex}.name-pill:hover{background:var(--foreground);color:var(--background)}.menu-button{border:1px solid var(--line-strong);cursor:pointer;background:#111722b8;border-radius:999px;justify-content:center;align-items:center;width:42px;height:42px;display:none}.mobile-nav{display:none}.hero{isolation:isolate;place-items:center;min-height:100dvh;display:grid;position:relative;overflow:hidden}.hero-media{z-index:-2;pointer-events:none;touch-action:pan-y;background:#070a10;position:absolute;inset:0;overflow:hidden}.hero-image{object-fit:cover;object-position:50% 50%;-webkit-user-select:none;user-select:none;will-change:transform;width:calc(100% + 52px);max-width:none;height:calc(100% + 36px);position:absolute;inset:-18px -26px}.hero-image-base{filter:brightness(.29)saturate(.7)contrast(1.08)}.hero-highlight{animation:8s ease-in-out infinite alternate hero-highlight-breathe;position:absolute;inset:0}.hero-image-lit{filter:brightness(1.02)saturate(.84)contrast(1.02)}.hero-light-field{z-index:1;opacity:.88;mix-blend-mode:screen;width:100%;height:100%;position:absolute;inset:0}.hero-corona{z-index:0;aspect-ratio:1;filter:blur(18px);opacity:.78;background:radial-gradient(circle,#d2e6ff1f 0%,#6fa6ec0f 28%,#0000 68%);border-radius:50%;width:min(46vw,760px);animation:7.5s ease-in-out infinite alternate hero-corona-breathe;position:absolute;top:47%;left:63%;transform:translate(-50%,-50%)}.hero-orbit{z-index:0;opacity:.5;border:1px solid #bbdaff1a;border-radius:50%;width:min(61vw,990px);height:min(31vw,500px);animation:12s ease-in-out infinite alternate hero-orbit-breathe;position:absolute;top:49%;left:63%;transform:translate(-50%,-50%)rotate(8deg)}.hero-media-scrim{pointer-events:none;background:linear-gradient(#05070a70,#0000 28%),linear-gradient(#0000 64%,#05070ab3);position:absolute;inset:0}.hero-content{z-index:1;width:min(100% - 80px,1440px);min-height:calc(100dvh - var(--header-height));margin-top:var(--header-height);text-align:left;grid-template-rows:1fr auto auto;align-items:end;padding:clamp(48px,7vh,74px) 0 30px;display:grid;position:relative}.hero-meta{color:#f2f5f8b3;font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.12em;align-self:start;gap:16px;margin-top:clamp(12px,4vh,44px);font-size:clamp(.64rem,.72vw,.74rem);line-height:1.72;display:flex}.hero-meta-marker{background:linear-gradient(180deg, var(--accent), #67b3f114);width:1px;height:54px;margin-top:4px;position:relative}.hero-meta-marker:before{background:var(--accent);content:"";border-radius:50%;width:6px;height:6px;animation:3.4s ease-in-out infinite hero-marker-pulse;position:absolute;top:-2px;left:50%;transform:translate(-50%);box-shadow:0 0 18px #67b3f1cc}.hero-meta p{margin:0}.hero h1{color:#f2f5f8e3;font-family:var(--font-montserrat), sans-serif;letter-spacing:-.082em;white-space:nowrap;text-shadow:0 8px 50px #05070a61;align-items:baseline;margin:0;font-size:clamp(4.8rem,12.9vw,12.8rem);font-weight:700;line-height:.82;display:flex}.hero-title-outline{color:#05070a14;-webkit-text-stroke:1.2px #f2f5f8c2;text-shadow:0 0 34px #a7cfff12}.hero-footer{border-top:1px solid #e0eaf62e;grid-template-columns:auto 1fr;align-items:center;gap:32px;margin-top:clamp(30px,4vh,48px);padding-top:18px;display:grid}.hero .primary-button{min-width:214px}.hero-project-index{color:#f2f5f8a3;font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.12em;justify-self:end;gap:clamp(18px,3vw,46px);margin:0;font-size:.7rem;display:flex}@keyframes hero-highlight-breathe{0%{opacity:.88}to{opacity:1}}@keyframes hero-corona-breathe{0%{opacity:.48;transform:translate(-50%,-50%)scale(.94)}to{opacity:.88;transform:translate(-50%,-50%)scale(1.06)}}@keyframes hero-orbit-breathe{0%{opacity:.22;transform:translate(-50%,-50%)rotate(6deg)scale(.98)}to{opacity:.52;transform:translate(-50%,-50%)rotate(10deg)scale(1.02)}}@keyframes hero-marker-pulse{0%,to{opacity:.56;transform:translate(-50%)scale(.78)}50%{opacity:1;transform:translate(-50%)scale(1.18)}}.about{padding-block:clamp(110px,14vw,210px)}.about-intro{max-width:900px}.work-heading h2,.contact-heading h2{color:var(--foreground);letter-spacing:-.055em;margin:0;font-size:clamp(2.55rem,5.2vw,5.9rem);font-weight:430;line-height:1.05}.about-intro>p:last-child{max-width:630px;color:var(--muted);margin:0;font-size:1.05rem;line-height:1.9}.about-grid{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:24px;margin-top:clamp(70px,9vw,132px);display:grid}.profile-frame{grid-column:1/span 5}.profile-portrait{margin:0}.profile-stage{--portrait-x:50%;--portrait-y:50%;--portrait-radius:156px;--portrait-shift-x:0px;--portrait-shift-y:0px;aspect-ratio:.62;cursor:crosshair;isolation:isolate;background:#111419;width:100%;position:relative;overflow:hidden}.profile-photo{object-fit:cover;object-position:7% 100%;width:104%;height:104%;transform:translate3d(calc(var(--portrait-shift-x) + 3%), calc(var(--portrait-shift-y) - 6%), 0) scale(1.16);will-change:transform, mask-image;transition:filter .48s;position:absolute;inset:-2%}.profile-photo-base{filter:contrast(1.01)saturate(.9)brightness(.92)}.profile-photo-reveal{opacity:0;filter:contrast(1.03)saturate(1.04)brightness(.98);-webkit-mask-image:radial-gradient(circle var(--portrait-radius) at var(--portrait-x) var(--portrait-y), #000 0, #000 48%, #000000e6 64%, #00000080 79%, #00000029 91%, transparent 100%);-webkit-mask-image:radial-gradient(circle var(--portrait-radius) at var(--portrait-x) var(--portrait-y), #000 0, #000 48%, #000000e6 64%, #00000080 79%, #00000029 91%, transparent 100%);-webkit-mask-image:radial-gradient(circle var(--portrait-radius) at var(--portrait-x) var(--portrait-y), #000 0, #000 48%, #000000e6 64%, #00000080 79%, #00000029 91%, transparent 100%);mask-image:radial-gradient(circle var(--portrait-radius) at var(--portrait-x) var(--portrait-y), #000 0, #000 48%, #000000e6 64%, #00000080 79%, #00000029 91%, transparent 100%);-webkit-mask-image:radial-gradient(circle var(--portrait-radius) at var(--portrait-x) var(--portrait-y), #000 0, #000 48%, #000000e6 64%, #00000080 79%, #00000029 91%, transparent 100%);transition:filter .48s,opacity .18s}.profile-stage[data-active=true] .profile-photo-reveal.is-selected{opacity:1}.profile-stage[data-mobile-active=true] .profile-photo-reveal.is-selected{opacity:1;-webkit-mask-image:none;mask-image:none}.portrait-hint{z-index:3;color:#f2f5f8e0;min-height:34px;font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.02em;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#05070aad;border:1px solid #f2f5f847;border-radius:999px;align-items:center;gap:9px;padding:0 13px;font-size:.66rem;transition:opacity .22s,transform .26s cubic-bezier(.16,1,.3,1);animation:2.8s ease-in-out 3 portrait-hint-breathe;display:inline-flex;position:absolute;top:16px;right:16px}.portrait-hint-dot{background:var(--accent);border-radius:999px;width:6px;height:6px;box-shadow:0 0 14px #67b3f1bf}.profile-stage[data-active=true] .portrait-hint{opacity:0;transform:translateY(-4px)}@keyframes portrait-hint-breathe{0%,to{border-color:#f2f5f838;box-shadow:0 0 #67b3f100}50%{border-color:#67b3f194;box-shadow:0 0 0 4px #67b3f114}}.profile-caption{border-top:1px solid var(--line);padding:0 0 16px;justify-content:space-between;align-items:baseline;gap:16px;padding-top:14px;display:flex}.profile-caption strong{color:var(--foreground);font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.08em;font-size:.72rem;font-weight:400}.profile-caption span{color:var(--subtle);font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.08em;font-size:.72rem}.experience-panel{grid-column:7/span 6;padding-top:clamp(8px,3vw,48px)}.experience-panel h3,.about-secondary h3{color:var(--subtle);letter-spacing:.06em;margin:0 0 22px;font-size:.84rem;font-weight:480}.experience-list{border-top:1px solid var(--line)}.experience-item{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:24px;padding:24px 0;display:grid}.experience-item div{gap:8px;display:grid}.experience-company{align-items:center;gap:11px!important;display:flex!important}.company-logo{flex:0 0 36px;place-items:center;width:36px;height:26px;display:grid}.company-logo img{object-fit:contain;width:auto;max-width:36px;height:auto;max-height:22px}.experience-item strong,.education-item strong{font-size:1.12rem;font-weight:520}.experience-item span,.education-item span{color:var(--muted);font-size:.92rem}.experience-item time,.education-item time{color:var(--subtle);font-family:var(--font-ibm-plex-mono), monospace;white-space:nowrap;font-size:.74rem}.about-secondary{grid-template-columns:1.2fr 1fr;gap:clamp(36px,6vw,86px);margin-top:72px;display:grid}.education-item{grid-template-columns:1fr auto;gap:7px 18px;margin-bottom:22px;display:grid}.education-item span{grid-column:1}.education-item time{grid-area:1/2}.award-card{grid-template-columns:minmax(76px,112px) 1fr;align-items:center;gap:20px;padding-top:2px;display:grid}.award-card img{filter:brightness(0)invert();opacity:.84;width:100%;height:auto}.award-card div{gap:7px;display:grid}.award-card strong{font-family:var(--font-montserrat), sans-serif;letter-spacing:-.02em;font-size:1.06rem;font-weight:700}.award-card span{color:var(--muted);font-family:var(--font-ibm-plex-mono), monospace;letter-spacing:.04em;font-size:.76rem}.work{padding-block:60px clamp(120px,16vw,230px)}.work-heading{max-width:970px}.project-grid{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:clamp(34px,4vw,64px) 24px;margin-top:clamp(64px,9vw,130px);display:grid}.project-card-liclick{grid-column:1/span 7}.project-card-anker{grid-column:8/span 5;margin-top:clamp(76px,9vw,144px)}.project-card-vibeplus{grid-column:3/span 8;margin-top:clamp(24px,4vw,56px)}.project-card>a{display:block}.project-cover{border:1px solid var(--line);background:var(--surface);border-radius:16px;position:relative;overflow:hidden}.project-cover img{object-fit:cover;width:100%;height:100%;transition:transform .65s cubic-bezier(.16,1,.3,1),filter .42s}.project-card-copy{justify-content:space-between;align-items:flex-start;gap:24px;padding:22px 2px 0;display:flex}.project-card-copy>div{gap:9px;display:grid}.project-card-copy span:first-child{color:var(--accent);letter-spacing:.04em;font-size:.78rem}.project-card-copy h3{font-family:var(--font-montserrat), sans-serif;letter-spacing:-.035em;margin:0;font-size:clamp(1.5rem,2.4vw,2.25rem);font-weight:700}.project-card-copy p{color:var(--muted);margin:0;font-size:.96rem}.project-link-icon{border:1px solid var(--line-strong);width:48px;height:48px;color:var(--foreground);border-radius:999px;flex:none;place-items:center;transition:transform .3s cubic-bezier(.16,1,.3,1),background-color .3s,color .3s;display:grid}.project-card a:hover .project-cover img{filter:brightness(1.04);transform:scale(1.025)}.project-card a:hover .project-link-icon{background:var(--foreground);color:var(--background);transform:translate(2px,-2px)}.portfolio-download{border-top:1px solid var(--line);padding-block:clamp(88px,11vw,150px)}.portfolio-download-copy{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:40px;margin-top:44px;display:grid}.portfolio-download-copy h2{font-family:var(--font-montserrat), sans-serif;letter-spacing:-.055em;margin:0;font-size:clamp(2rem,4.3vw,4.7rem);font-weight:700;line-height:1}.portfolio-download-copy p{max-width:620px;color:var(--muted);margin:20px 0 0;line-height:1.8}.contact{border-top:1px solid var(--line);padding-block:clamp(110px,14vw,190px);position:relative}.contact-heading{max-width:980px}.contact-heading>p:last-child{max-width:620px;color:var(--muted);margin:30px 0 0;line-height:1.8}.contact-list{border-top:1px solid var(--line);width:min(100%,1040px);margin:clamp(62px,8vw,112px) 0 0 auto}.contact-item-wrap{--qr-x:50%;--qr-y:50%;border-bottom:1px solid var(--line);position:relative}.contact-item{text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;width:100%;min-height:112px;padding:18px 4px;transition:color .26s,padding .3s cubic-bezier(.16,1,.3,1);display:grid}:is(.contact-item:hover,.contact-item:focus-visible){color:var(--accent);padding-inline:16px}.contact-item:active{transform:translateY(1px)}.contact-icon{border:1px solid var(--line-strong);color:currentColor;border-radius:999px;place-items:center;width:48px;height:48px;display:grid}.contact-copy{gap:8px;display:grid}.contact-copy>span{color:var(--subtle);font-size:.78rem}.contact-copy strong{color:currentColor;overflow-wrap:anywhere;font-size:clamp(1.08rem,2.3vw,1.75rem);font-weight:460}.contact-copy-icon{color:var(--subtle)}.contact-qr{left:var(--qr-x);top:var(--qr-y);z-index:2;visibility:hidden;border:1px solid var(--line-strong);color:#111722;opacity:0;pointer-events:none;background:#f2f5f8;border-radius:16px;width:236px;padding:12px;transition:opacity .22s,transform .22s cubic-bezier(.16,1,.3,1),visibility .22s;position:absolute;transform:translate(-50%,calc(-100% - 20px))scale(.96);box-shadow:0 24px 70px #03050880}.contact-qr img{object-fit:contain;border-radius:10px;width:100%;height:auto;max-height:300px;display:block}.contact-qr span{text-align:center;padding:10px 6px 3px;font-size:.76rem;display:block}.contact-item-wrap:hover .contact-qr,.contact-item-wrap:focus-within .contact-qr{visibility:visible;opacity:1;transform:translate(-50%,calc(-100% - 14px))scale(1)}.copy-toast{z-index:50;visibility:hidden;border:1px solid var(--line-strong);min-height:46px;color:var(--foreground);opacity:0;background:#111722f0;border-radius:999px;align-items:center;gap:10px;padding:0 18px;font-size:.88rem;transition:opacity .22s,transform .28s cubic-bezier(.16,1,.3,1),visibility .22s;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%,14px);box-shadow:0 16px 48px #03050875}.copy-toast svg{color:var(--accent)}.copy-toast[data-visible=true]{visibility:visible;opacity:1;transform:translate(-50%)}.site-footer{border-top:1px solid var(--line);min-height:132px;color:var(--subtle);font-family:var(--font-ibm-plex-mono), monospace;justify-content:space-between;align-items:center;gap:24px;font-size:.74rem;display:flex}.work-detail{min-height:100dvh}.work-detail-hero{padding-top:clamp(132px,15vw,210px);padding-bottom:clamp(74px,9vw,130px)}.back-link{color:var(--muted);align-items:center;gap:10px;font-size:.9rem;transition:color .22s,transform .26s;display:inline-flex}.back-link:hover{color:var(--foreground);transform:translate(-3px)}.work-title-block{margin-top:clamp(54px,8vw,110px)}.work-title-block>p{color:var(--accent);margin:0 0 20px;font-size:.86rem}.work-title-block h1{max-width:1150px;font-family:var(--font-montserrat), sans-serif;letter-spacing:-.068em;margin:0;font-size:clamp(3.45rem,8.5vw,9.4rem);font-weight:700;line-height:.94}.work-title-block h2{color:var(--muted);letter-spacing:-.02em;margin:28px 0 0;font-size:clamp(1.15rem,2.3vw,2rem);font-weight:380}.work-metadata{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;width:min(100%,980px);margin:clamp(62px,8vw,108px) 0 0 auto;padding-top:22px;display:grid}.work-metadata div{gap:10px;display:grid}.work-metadata dt{color:var(--subtle);font-size:.76rem}.work-metadata dd{color:var(--foreground);margin:0;font-size:.96rem}.work-gallery{gap:0;padding-bottom:clamp(90px,12vw,180px);display:grid}.gallery-figure{margin:0}.gallery-image{background:var(--surface-raised);display:block;overflow:hidden}.gallery-image img{object-fit:contain;touch-action:pan-y pinch-zoom;width:100%;height:100%}.image-error{border:1px solid var(--line);background:var(--surface);min-height:260px;color:var(--muted);text-align:center;border-radius:16px;place-content:center;justify-items:center;gap:12px;display:grid}.image-error strong{color:var(--foreground);font-weight:520}.image-error span{color:var(--subtle);font-size:.84rem}.work-end{gap:26px;padding-block:0 120px;display:grid}.work-end>.section-label{margin-bottom:0}.work-end-actions{flex-wrap:wrap;gap:12px;display:flex}.secondary-button{border:1px solid var(--line-strong);min-height:52px;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;gap:12px;padding:0 20px;font-size:.88rem;transition:border-color .22s,color .22s,transform .26s;display:inline-flex}.secondary-button:hover{color:var(--foreground);border-color:#f0f4f8b8;transform:translateY(-2px)}.portfolio-download-link{border-top:1px solid var(--line);border-bottom:1px solid var(--line);width:min(100%,760px);color:var(--foreground);grid-template-columns:1fr auto auto;align-items:center;gap:16px;margin-top:18px;padding:22px 0;display:grid}.portfolio-download-link span{color:var(--subtle);font-family:var(--font-ibm-plex-mono), monospace;font-size:.7rem}.back-to-top{z-index:24;visibility:hidden;border:1px solid var(--line-strong);width:54px;height:54px;color:var(--foreground);opacity:0;cursor:pointer;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0b0f15db;border-radius:999px;place-items:center;transition:opacity .2s,transform .24s cubic-bezier(.16,1,.3,1),visibility .2s,background-color .2s,color .2s;display:grid;position:fixed;bottom:clamp(18px,2.5vw,38px);right:clamp(18px,2.5vw,38px);transform:translateY(12px)scale(.92);box-shadow:0 16px 44px #00000047}.back-to-top[data-visible=true]{visibility:visible;opacity:1;transform:translateY(0)scale(1)}:is(.back-to-top:hover,.back-to-top:focus-visible){background:var(--accent);color:#03111c}.not-found{min-height:100dvh;padding:calc(var(--header-height) + 64px) 24px 64px;text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.not-found>p{color:var(--accent);font-family:var(--font-ibm-plex-mono), monospace;margin:0 0 20px;font-size:.86rem}.not-found h1{letter-spacing:-.055em;margin:0;font-size:clamp(2.8rem,7vw,6rem);font-weight:460}.not-found>span{color:var(--muted);margin:22px 0 38px}@media (max-width:1180px){.desktop-nav a:nth-child(n+3):nth-child(-n+5){display:none}.about-grid{gap:36px}.profile-frame{grid-column:1/span 5}.experience-panel{grid-column:6/span 7}}@media (max-width:860px){:root{--header-height:64px}.section-shell{width:min(100% - 40px,1440px)}.nav-shell{grid-template-columns:1fr auto;width:calc(100% - 32px)}.nav-brand span:first-child,.desktop-nav,.name-pill{display:none}.nav-brand{font-size:.76rem}.menu-button{display:inline-flex}.mobile-nav{visibility:hidden;opacity:0;background:#0b0f15fa;border:1px solid #0000;border-radius:16px;width:calc(100% - 32px);max-height:0;margin-inline:auto;transition:max-height .36s cubic-bezier(.16,1,.3,1),opacity .24s,transform .3s cubic-bezier(.16,1,.3,1),visibility .24s;display:grid;overflow:hidden;transform:translateY(-8px)}.mobile-nav[data-open=true]{visibility:visible;border-color:var(--line);opacity:1;max-height:620px;transform:translateY(10px)}.mobile-nav a{color:var(--muted);padding:15px 18px;font-size:.94rem;display:block}.mobile-nav a.is-active{color:var(--accent)}.mobile-nav-identity{border-bottom:1px solid var(--line);font-family:var(--font-ibm-plex-mono), monospace;color:var(--foreground)!important;font-size:.82rem!important}.mobile-nav-identity span{color:var(--subtle)}.mobile-nav-group{border-bottom:1px solid var(--line);padding-block:5px;display:grid}.mobile-nav-group:last-child{border-bottom:0}.hero-image{object-position:61% 50%}.hero-content{width:calc(100% - 36px);padding-top:36px;padding-bottom:24px}.hero h1{letter-spacing:-.082em;font-size:clamp(3.55rem,17.6vw,7.4rem);line-height:.86}.hero-meta{margin-top:26px}.hero-footer{gap:18px}.hero-project-index{gap:12px;font-size:.62rem}.work-heading h2,.contact-heading h2{font-size:clamp(2.4rem,11vw,4.4rem)}.about-grid{grid-template-columns:1fr}.profile-frame,.experience-panel{grid-column:auto}.profile-frame{width:min(100%,520px)}.profile-stage{cursor:default}.profile-photo-base{filter:contrast(1.01)saturate(.92)brightness(.96)}.profile-photo-reveal{transition:opacity .7s;-webkit-mask-image:none;mask-image:none}.portrait-hint{display:none}.experience-panel{padding-top:34px}.project-grid{grid-template-columns:1fr;gap:72px}.project-card-liclick,.project-card-anker,.project-card-vibeplus{grid-column:auto;margin-top:0}.work-metadata{grid-template-columns:1fr;gap:24px}.portfolio-download-copy{grid-template-columns:1fr;align-items:start}}@media (max-width:560px){.section-shell{width:calc(100% - 32px)}.hero .primary-button{min-width:178px;min-height:48px}.hero-footer{margin-top:18px;padding-top:14px}.hero-meta{margin-top:10px;font-size:.58rem;line-height:1.6}.hero-meta-marker{height:46px}.hero-project-index{display:none}.about,.contact{padding-block:92px}.portfolio-download{padding-block:84px}.work{padding-block:28px 112px}.about-secondary{grid-template-columns:1fr}.profile-caption{flex-direction:column;align-items:flex-start;gap:6px}.experience-item{grid-template-columns:1fr;gap:14px}.project-card-copy{gap:14px}.project-link-icon{width:42px;height:42px}.contact-item{gap:14px;min-height:104px}.contact-icon{width:42px;height:42px}.contact-copy strong{font-size:1rem}.contact-copy-icon{display:none}.contact-qr{width:min(220px,74vw);top:50%;left:50%}.site-footer{flex-direction:column;justify-content:center;align-items:flex-start;gap:8px;min-height:150px}.work-title-block h1{font-size:clamp(3rem,15vw,5.1rem)}.work-gallery{width:100%}.gallery-image,.image-error{border-left:0;border-right:0;border-radius:0}.work-end-actions{grid-template-columns:1fr;display:grid}.work-end-actions>a{width:100%}.portfolio-download-link{grid-template-columns:1fr auto}.portfolio-download-link span{grid-column:1/-1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.hero-image{will-change:auto}.hero-light-field,.hero-corona,.hero-orbit{display:none}.profile-photo-base{filter:contrast(1.01)saturate(.92)brightness(.96)}.profile-photo-reveal,.portrait-hint{display:none}}@media (hover:none),(pointer:coarse){.hero-light-field,.hero-corona,.hero-orbit{display:none}.hero-highlight{animation:none}.profile-stage{cursor:default}.profile-photo-base{filter:contrast(1.01)saturate(.92)brightness(.96)}.profile-photo-reveal{transition:opacity .7s;-webkit-mask-image:none;mask-image:none}.portrait-hint{display:none}}@media (prefers-reduced-transparency:reduce){.site-header,.primary-button{-webkit-backdrop-filter:none;backdrop-filter:none}.site-header{background:#05070a}}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
