@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,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::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;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]){appearance:button}::file-selector-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}.block{display:block}.flex{display:flex}.flex-shrink{flex-shrink:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-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))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}:root{color:#172033;font-synthesis:none;text-rendering:geometricprecision;-webkit-font-smoothing:antialiased;--paper:#ffffffdb;--ink:#172033;--muted:#637086;--line:#4797ff2e;--line-strong:#4797ff52;--accent:#1677ff;--warm:#ffd8b8;--shadow-soft:0 24px 70px #387bcc21;--shadow-hard:0 34px 90px #3479cd33;--side-nav-width:60px;--ai-panel-width:min(400px, calc(100vw - var(--side-nav-width)));--layout-transition:.44s cubic-bezier(.22, 1, .36, 1);background:#f6f9fc;font-family:PingFang SC,PingFang HK,PingFang TC,PingFang,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(74vw 44vw at 46% -12%,#acd7ff57,#0000 62%),radial-gradient(38vw 30vw at 8% 18%,#ffffffc7,#0000 66%),radial-gradient(34vw 26vw at 78% 74%,#c4ece733,#0000 68%),radial-gradient(32vw 24vw at 22% 96%,#ffdebf38,#0000 70%),linear-gradient(135deg,#fbfdff,#f3f9ff 52%,#fff8f1);min-width:320px;margin:0;overflow-x:hidden}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}.app-shell{min-height:100vh;padding:0;overflow-x:hidden}.app-shell.ai-panel-open{background:0 0}.app-shell.ai-panel-open .page-section{width:calc(100vw - var(--ai-panel-width) - var(--side-nav-width));min-width:0;padding-right:clamp(16px,2.2vw,34px)}.app-shell.ai-panel-open .content-section{padding-right:clamp(16px,2.2vw,34px)}.page-section{width:100vw;min-height:100vh;transition:width var(--layout-transition),padding var(--layout-transition);align-items:center;padding:20px clamp(16px,3vw,44px);scroll-margin-top:0;display:flex;position:relative;overflow:hidden}.section-shell{transition:max-width var(--layout-transition)}.resume-screen{isolation:isolate}.content-section{padding-right:clamp(72px,9vw,152px)}.content-section:before,.content-section:after{content:none;display:none}.app-shell.is-contact-torn .section-portfolio .section-heading,.app-shell.is-contact-torn .section-thinking .section-heading,.app-shell.is-contact-torn .section-portfolio .showcase-project,.app-shell.is-contact-torn .section-thinking .article-project-card{transition:opacity .22s;opacity:0!important;pointer-events:none!important}.physics-drop-layer{z-index:45;pointer-events:none;visibility:hidden;position:fixed;inset:0;overflow:hidden}.physics-drop-layer.is-active{visibility:visible}.physics-drop-piece{z-index:1;-webkit-user-select:none;user-select:none;will-change:transform;transform-origin:50%;backface-visibility:hidden;contain:layout paint style;max-width:none;position:absolute!important}.physics-drop-piece.is-settled{pointer-events:auto!important}.physics-drop-piece.is-draggable{cursor:grab}.physics-drop-piece.is-dragging{z-index:8;cursor:grabbing}.physics-drop-piece.showcase-project{rotate:none!important}.physics-drop-accessory{z-index:2;overflow:visible;pointer-events:none!important}.section-shell{z-index:1;width:min(100%,1180px);margin:0 auto;position:relative}.section-heading{max-width:720px;margin-bottom:clamp(26px,4vw,44px)}.section-heading p,.showcase-eyebrow{color:#1677ff;letter-spacing:0;text-transform:uppercase;margin:0;font-size:12px;font-weight:800}.section-heading h2{color:#172033;letter-spacing:0;margin:10px 0 0;font-size:clamp(32px,3.5vw,42px);line-height:1}.contact-footer{width:100%;padding:22px var(--side-nav-width) 58px 0;justify-items:center;display:grid}.contact-footer-inner{justify-items:center;gap:34px;width:100%;display:grid;position:relative}.contact-footer-card{z-index:4;text-align:center;background:#ffffff9e;border:1px solid #70b4ff3d;border-radius:12px;justify-content:center;align-items:center;gap:28px;width:min(100%,520px);padding:18px 22px;display:flex;position:relative;box-shadow:0 18px 44px #3a7ccb17}.contact-footer-copy{justify-items:center;gap:8px;min-width:0;display:grid}.contact-footer-copy p{color:#172033;margin:0 0 2px;font-size:15px;font-weight:760}.contact-copy-button{color:#445066;font:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:8px;padding:0;font-size:14px;line-height:1.3;display:inline-flex}.contact-copy-button:hover{color:#1677ff}.contact-copy-button.is-copied{color:#16a34a}.contact-copy-button svg:last-child{opacity:.72;flex:none}.contact-footer-qr{color:#637086;justify-items:center;gap:7px;font-size:12px;display:grid}.contact-footer-qr img{background:#fff;border-radius:8px;width:104px;height:104px;display:block}.contact-tear-strip{--tear-progress:8.8889%;--tear-fold-surface-width:1125%;z-index:1;width:100vw;height:60px;box-shadow:none;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;border:0;border-radius:0;position:relative;left:calc(50% - 50vw);overflow:visible}.contact-tear-strip:focus-visible{outline-offset:4px;outline:3px solid #1677ff47}.contact-tear-strip.is-dragging{cursor:grabbing}.contact-tear-strip.is-open{cursor:default}.contact-tear-reveal,.contact-tear-cover{letter-spacing:0;place-items:center;font-size:24px;font-weight:500;line-height:34px;transition:clip-path .72s cubic-bezier(.22,1,.36,1);display:grid;position:absolute;inset:0;overflow:hidden}.contact-tear-reveal{color:#fff;clip-path:inset(0 calc(100% - var(--tear-progress)) 0 0);background:url(/contact/tear-orange-complete.svg) 0/1441px 61px repeat-x;box-shadow:inset 0 4px 6px #41393333}.contact-tear-reveal span{z-index:1;text-align:center;max-width:min(94vw,980px);padding:0 18px;font-weight:600;position:relative}.contact-tear-cover{color:#1c7aff;clip-path:inset(0 0 0 var(--tear-progress));background:0 0;position:absolute}.contact-tear-cover:after{z-index:0;content:"";pointer-events:none;background-image:url(/contact/tear-closed-start.svg),url(/contact/tear-closed-tile.svg);background-position:0,0;background-repeat:no-repeat,repeat-x;background-size:39px 60px,39px 60px;position:absolute;inset:0}.contact-tear-prompt{z-index:1;background:0 0;align-items:center;gap:10px;padding:0 10px;display:flex;position:relative}.contact-tear-prompt img{width:95px;height:11px}.contact-tear-fold{top:50%;right:calc(100% - var(--tear-progress) + 5px);z-index:3;width:var(--tear-progress);filter:drop-shadow(0 2px 4px #2c486a38);transform-origin:100%;pointer-events:none;background:0 0;border:0;height:60px;transition:right .72s cubic-bezier(.22,1,.36,1),width .72s cubic-bezier(.22,1,.36,1),opacity .16s;display:block;position:absolute;overflow:hidden;transform:translateY(-50%)rotate(170deg)}.contact-tear-fold img{width:var(--tear-fold-surface-width);max-width:none;height:60px;display:block;position:absolute;inset:0 auto 0 0}.contact-tear-strip.is-dragging .contact-tear-reveal,.contact-tear-strip.is-dragging .contact-tear-cover,.contact-tear-strip.is-dragging .contact-tear-fold{transition:none}.contact-tear-strip.is-open .contact-tear-fold{opacity:0;transition:right .72s cubic-bezier(.22,1,.36,1),width .72s cubic-bezier(.22,1,.36,1),opacity .28s .72s}.contact-tear-strip.is-at-zero .contact-tear-fold{opacity:0}.contact-drop-catch{pointer-events:none;width:100%;height:270px}.showcase-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,22px);display:grid}.article-note-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:clamp(30px,3.2vw,46px) clamp(20px,2.6vw,34px);padding:30px 8px 18px;display:grid}.project-showcase-grid{isolation:isolate;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(30px,3.2vw,46px) clamp(20px,2.6vw,34px);padding:30px 8px 18px;position:relative}.portfolio-connection-line{z-index:0;pointer-events:none;width:116%;height:68%;position:absolute;inset:19% -8% 13%;overflow:visible}.portfolio-connection-line path{fill:none;stroke:#4d739d47;stroke-dasharray:8 9;stroke-linecap:round;stroke-width:2px;vector-effect:non-scaling-stroke}.showcase-card{background:#ffffffad;border:1px solid #70b4ff47;border-radius:8px;min-height:260px;transition:transform .36s cubic-bezier(.22,1,.36,1),border-color .22s,box-shadow .26s;position:relative;overflow:hidden;box-shadow:0 20px 56px #3a7ccb1f}.showcase-card:hover{border-color:#1677ff75;transform:translateY(-5px);box-shadow:0 28px 70px #3a7ccb2b}.showcase-project{--visual-angle:var(--card-angle,0deg);z-index:1;color:#172033;min-height:330px;rotate:var(--visual-angle);transform-origin:50% 0;background:#fff;border-color:#5c799a1f;border-radius:16px;grid-template-rows:auto 1fr;align-content:start;padding:14px;transition:rotate .46s cubic-bezier(.2,.76,.3,1),border-color .22s,box-shadow .26s;display:grid;overflow:visible;box-shadow:0 2px #d5dee86b,0 16px 34px #2c486a1c;transform:none!important}.showcase-project:hover,.showcase-project:focus,.showcase-project:focus-visible{--visual-angle:-5deg;border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.showcase-project:hover,.showcase-project:focus,.showcase-project:focus-visible{border-color:color-mix(in srgb,var(--accent) 26%,white)}}.showcase-project:hover,.showcase-project:focus,.showcase-project:focus-visible{rotate:var(--visual-angle);box-shadow:0 2px #d5dee85c,0 22px 44px #2c486a26;transform:none!important}.portfolio-pin{z-index:4;width:50px;height:50px;transform:translate(-50%) rotate(calc(var(--visual-angle,0deg) * -1));transition:transform .46s cubic-bezier(.2,.76,.3,1);display:block;position:absolute;top:-30px;left:56%}.portfolio-connection-line-mobile{display:none}.portfolio-pin img{object-fit:contain;width:100%;height:100%;filter:var(--pin-filter,none);display:block}.portfolio-clip{z-index:4;width:52px;height:65px;transform:translate(-50%) rotate(calc(var(--visual-angle,0deg) * -1));transition:transform .46s cubic-bezier(.2,.76,.3,1);display:block;position:absolute;top:-35px;left:50%}.portfolio-clip img{object-fit:contain;width:100%;height:100%;display:block}.showcase-cover-frame{aspect-ratio:16/9;background:#eef4fb;border-radius:12px;display:block;position:relative;overflow:hidden}.showcase-cover-frame img{object-fit:cover;width:100%;height:100%;display:block}.showcase-cover-link{color:#172033;background:#ffffffeb;border:1px solid #5d70881f;border-radius:50%;place-items:center;width:30px;height:30px;display:grid;position:absolute;bottom:10px;right:10px;box-shadow:0 5px 14px #22354e24}.showcase-copy{align-content:start;padding:18px 8px 8px;display:grid}.showcase-project time{color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.showcase-project time{color:color-mix(in srgb,var(--accent) 78%,#405066)}}.showcase-project time{font-size:12px;font-weight:600;line-height:1.45}.article-project-source{color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.article-project-source{color:color-mix(in srgb,var(--accent) 78%,#405066)}}.article-project-source{font-size:12px;font-weight:600;line-height:1.45}.showcase-project strong{color:#172033;max-width:calc(100% - 22px);margin-top:10px;font-size:clamp(19px,1.8vw,24px);line-height:1.15}.showcase-project p{color:#536075;margin:8px 0 0;font-size:13px;line-height:1.55}.showcase-cover-link svg{position:static}.info-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);flex-direction:column;justify-content:space-between;min-height:330px;padding:clamp(22px,3vw,32px);display:flex}.info-card>strong{color:#1677ff6b;font-size:clamp(42px,5vw,72px);line-height:.9}.info-card h3{color:#172033;margin:22px 0 10px;font-size:clamp(22px,2.5vw,32px);line-height:1.08}.info-card p{color:#4a566a;margin:0;font-size:14px;line-height:1.76}.card-tags{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.card-tags span{color:#1677ff;background:#e2f3ffbd;border:1px solid #62a9ff52;border-radius:999px;min-height:26px;padding:4px 9px;font-size:12px;font-weight:700}.side-navigation{z-index:90;width:var(--side-nav-width);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);height:100vh;transition:right var(--layout-transition),background .22s ease,box-shadow .22s ease;background:#ffffffa8;border-left:1px solid #70b4ff38;border-right:0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px 6px;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-8px 12px 24px #3777c612}.app-shell.ai-panel-open .side-navigation{right:var(--ai-panel-width);background:#ffffffbd;border-right:1px solid #70b4ff3d;box-shadow:-8px 0 24px #3777c614}.chat-guide-sticker{z-index:86;top:clamp(550px,65vh,660px);right:calc(var(--side-nav-width) + clamp(8px,1.4vw,10px));pointer-events:none;will-change:opacity;width:clamp(104px,8.2vw,156px);height:auto;transition:opacity .12s linear;position:fixed;transform:translateY(-50%)}.side-nav-main{justify-items:center;gap:6px;width:44px;display:grid}.side-nav-item{color:#a9b5ce;width:44px;height:44px;font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;font-size:13px;font-weight:800;transition:background .18s,color .18s;display:grid;position:relative;overflow:visible}.side-nav-icon{color:currentColor;background:0 0;border-radius:7px;place-items:center;width:44px;height:44px;transition:background .18s,color .18s;display:grid}.side-nav-icon svg{width:24px;height:24px;display:block}.side-nav-avatar{place-items:center;width:44px;height:44px;display:grid}.side-nav-avatar img{object-fit:cover;width:44px;height:44px;box-shadow:none;background:0 0;border:2px solid #0000;border-radius:999px;transition:border-color .18s,box-shadow .18s;display:block}.side-nav-item:hover .side-nav-icon,.side-nav-item.is-active .side-nav-icon{color:#1677ff;background:#1677ff1a}.side-nav-item>span:last-child{z-index:2;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#172033;opacity:0;pointer-events:none;background:#ffffffe0;border:1px solid #70b4ff38;border-radius:7px;min-width:max-content;padding:6px 10px;transition:opacity .18s,transform .18s;position:absolute;top:50%;right:calc(100% + 12px);transform:translate(8px,-50%);box-shadow:0 12px 32px #3777c61f}.side-nav-item:hover>span:last-child,.side-nav-item:focus-visible>span:last-child{opacity:1;transform:translateY(-50%)}.side-nav-item:hover,.side-nav-item.is-active{color:#1677ff;background:0 0}.side-nav-ai:hover,.side-nav-ai.is-active{background:0 0}.side-nav-ai:hover .side-nav-avatar img{border-color:#1677ff75;box-shadow:0 0 0 3px #1677ff14}.side-nav-item.is-active:before{display:none}.side-nav-ai{justify-self:center;margin-top:18px}.side-nav-ai.is-active .side-nav-avatar img{border-color:#1677ff;box-shadow:0 0 0 3px #1677ff1a}.ai-panel{z-index:88;width:var(--ai-panel-width);opacity:0;pointer-events:none;background:#f7fafc;border:0;border-left:1px solid #11182714;border-radius:0;grid-template-rows:auto minmax(0,1fr) auto;height:100vh;transition:opacity .18s,transform .44s cubic-bezier(.22,1,.36,1);display:grid;position:fixed;top:0;right:0;overflow:hidden;transform:translate(100%);box-shadow:0 1px 2px #0f172a0a,-18px 0 52px #0f172a1a}.ai-panel.is-open{opacity:1;pointer-events:auto;transform:translate(0)}.ai-panel-header{border-bottom:1px solid #1118271a;justify-content:space-between;align-items:center;gap:14px;min-height:88px;padding:18px 20px;display:flex}.ai-panel-header h2{color:#09090b;margin:0;font-size:16px;font-weight:760;line-height:1.2}.ai-panel-header span{color:#71717a;margin-top:5px;font-size:14px;line-height:1.3;display:block}.ai-panel-actions{gap:8px;display:flex}.ai-panel-icon-button{color:#09090b;cursor:pointer;background:#fff;border:1px solid #1118271a;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background .16s,color .16s,transform .16s;display:grid}.ai-panel-icon-button:hover{color:#09090b;background:#f4f4f5;transform:translateY(-1px)}@keyframes section-rise{0%{opacity:.28;transform:translateY(42px)}to{opacity:1;transform:translateY(0)}}@supports (animation-timeline:view()){.section-heading,.showcase-card{animation:both section-rise;animation-timeline:view();animation-range:entry 8% cover 34%}.showcase-card:nth-child(2n){animation-range:entry 14% cover 40%}}.topbar,.page-topbar{justify-content:space-between;align-items:center;gap:16px;max-width:1320px;margin:0 auto;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand-mark{letter-spacing:0;color:#1677ff;background:#ffffffd1;border:1px solid #6faeff70;border-radius:8px;place-items:center;width:38px;height:38px;font-size:12px;font-weight:800;display:grid;box-shadow:0 12px 30px #4192f621}.brand strong,.brand small{display:block}.brand strong{font-size:14px}.brand small{color:var(--muted);margin-top:2px;font-size:12px}.hero-copy{max-width:1320px;margin:42px auto 24px}.hero-copy p,.resume-kicker,.project-stage-header span,.project-hero p,.slide p,.image-board p{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.hero-copy h1{letter-spacing:0;max-width:760px;margin:8px 0 0;font-size:clamp(30px,4.8vw,68px);font-weight:760;line-height:.98}.workbench{--workbench-shift:clamp(24px, 3.6vw, 58px);perspective:1800px;width:min(100%,1320px);max-width:1320px;min-height:calc(100vh - 40px);transform:translate(calc(-1 * var(--workbench-shift)));transition:width var(--layout-transition),max-width var(--layout-transition);grid-template-columns:minmax(520px,.94fr) minmax(360px,.64fr);align-items:center;gap:clamp(14px,1vw,28px);margin:0 auto;display:grid}.resume-stage,.project-stage{transform-style:preserve-3d;transition:transform .52s cubic-bezier(.22,1,.36,1),filter .42s,opacity .42s}.resume-stage{transform-origin:0;justify-content:flex-end;display:flex}.resume-cluster{--resume-width:720px;--resume-zoom:1;width:min(100%,var(--resume-width));transform-style:preserve-3d;flex-direction:column;align-items:center;gap:8px;display:flex;transform:translateY(clamp(10px,2vh,20px))}.resume-export{min-width:132px;box-shadow:0 14px 36px #4494f42e}.resume-toolbar{align-items:center;gap:18px;display:flex}.resume-zoom-group{gap:2px;display:flex}.resume-zoom-btn{border-radius:6px;min-width:34px;min-height:34px;padding:0}.resume-zoom-btn:disabled{opacity:.35;cursor:not-allowed;transform:none}.resume-zoom-btn:disabled:hover{transform:none}.resume-cluster .resume-sheet .resume-meta-line,.resume-cluster .resume-sheet .resume-meta-copy{font-size:calc(12.5px * var(--resume-zoom,1))}.resume-cluster .resume-sheet .resume-skill-line,.resume-cluster .resume-sheet .resume-skill-line span,.resume-cluster .resume-sheet .resume-paragraph-list p,.resume-cluster .resume-sheet .resume-paragraph-list li,.resume-cluster .resume-sheet .resume-label-block{font-size:calc(12px * var(--resume-zoom,1))}.resume-cluster .resume-sheet .resume-paragraph-list strong,.resume-cluster .resume-sheet .resume-label-block strong{font-size:calc(12.5px * var(--resume-zoom,1))}.resume-cluster .resume-sheet .resume-entry-heading h4{font-size:calc(13.5px * var(--resume-zoom,1))}.resume-cluster .resume-sheet .resume-entry-heading time,.resume-cluster .resume-sheet .resume-work-heading,.resume-cluster .resume-sheet .resume-work-heading strong,.resume-cluster .resume-sheet .resume-work-heading time{font-size:calc(13px * var(--resume-zoom,1))}.resume-cluster .resume-sheet .resume-education-row{font-size:calc(12px * var(--resume-zoom,1))}.resume-cluster .resume-sheet .resume-header h2{font-size:calc(25px * var(--resume-zoom,1))}.resume-cluster .resume-sheet .resume-section-title h3{font-size:calc(14px * var(--resume-zoom,1))}.focus-idle .resume-stage,.focus-projects .resume-stage{filter:saturate(.96);transform:rotateY(16deg)translate(22px)translateZ(-34px)}.project-stage{transform-origin:0}.focus-idle .project-stage,.focus-resume .project-stage{opacity:.9;transform:rotateY(-14deg)translate(-12px)translateZ(-42px)}.focus-projects .project-stage{transform:rotateY(0)translateZ(42px)}.project-stage:has(.project-cover:hover),.project-stage:has(.project-cover:focus-visible){opacity:1;transform:rotateY(0)translateZ(42px)}.resume-sheet{width:min(100%,var(--resume-width));aspect-ratio:210/297;background:radial-gradient(circle at 90% 0%,#d2e9ffb8,transparent 18rem),linear-gradient(180deg,#ffffffeb,#f7fcffe6),var(--paper);max-height:min(88vh,1260px);box-shadow:var(--shadow-hard);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);scrollbar-width:none;border:1px solid #7abbff5c;border-radius:8px;padding:clamp(24px,3vw,42px);overflow:auto}.resume-sheet::-webkit-scrollbar{width:0;height:0}.resume-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:24px;padding-bottom:18px;display:flex}.resume-header h2{color:#1677ff;letter-spacing:0;margin:7px 0 6px;font-size:clamp(30px,4vw,42px);line-height:1}.resume-title,.resume-summary,.timeline-heading p,.education-block span{color:var(--muted);margin:0}.resume-title{font-size:15px;font-weight:650}.resume-contact{color:#3f4654;gap:8px;min-width:172px;font-size:12px;display:grid}.resume-contact span{align-items:center;gap:7px;display:flex}.resume-summary{margin:20px 0 18px;font-size:14px;line-height:1.72}.resume-section{margin-top:17px}.resume-section-title{color:#1677ff;align-items:center;gap:8px;margin-bottom:10px;display:flex}.resume-section-title h3{letter-spacing:0;margin:0;font-size:14px}.resume-projects{gap:8px;display:grid}.resume-project-link{background:#f6fbffc2;border:1px solid #74b8ff61;border-radius:7px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;transition:border-color .18s,transform .18s,background .18s;display:flex}.resume-project-link:hover{background:#e8f4fff0;border-color:#1677ff8f;transform:translateY(-1px)}.resume-project-link strong,.resume-project-link small{display:block}.resume-project-link strong{font-size:13px}.resume-project-link small{color:var(--muted);margin-top:3px;font-size:11px}.timeline{gap:13px;display:grid}.timeline-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.timeline-heading h4{margin:0 0 3px;font-size:14px}.timeline-heading p,.timeline-heading time{font-size:12px}.timeline-heading time{color:#4f5664;flex:none}.timeline ul,.slide ul{margin:8px 0 0;padding-left:18px}.timeline li{color:#343c4b;margin:4px 0;font-size:12px;line-height:1.62}.resume-grid{grid-template-columns:1.1fr .9fr;gap:18px;display:grid}.skill-list{flex-wrap:wrap;gap:7px;display:flex}.education-block{gap:4px;font-size:13px;display:grid}.education-block time{color:#4f5664;font-size:12px}.resume-sheet-long{aspect-ratio:auto;color:#111;background:radial-gradient(circle at 88% 7%,#1677ff1f,#0000 13rem),radial-gradient(circle at 4% 42%,#76b9ff14,#0000 15rem),linear-gradient(#fffffff5,#f8fcfff5),#fff;border:1px solid #cfdae8c7;min-height:min(88vh,1180px);padding:clamp(32px,4vw,50px) clamp(34px,4.2vw,48px);box-shadow:0 28px 72px #275a9429}.resume-sheet-long .resume-header{border-bottom:0;align-items:flex-start;gap:24px;padding-bottom:18px}.resume-sheet-long .resume-header h2{color:#1677ff;margin:0 0 8px;font-size:25px;font-weight:800;line-height:1.15}.resume-meta-line{color:#111;flex-wrap:wrap;gap:0;margin-top:4px;font-size:12.5px;line-height:1.45;display:flex}.resume-meta-line span{align-items:center;display:inline-flex}.resume-meta-line>*+:before{color:#333;content:"|";margin:0 6px}.resume-meta-copy{color:#111;gap:4px;font-size:12.5px;line-height:1.45}.resume-meta-copy:hover{color:#1677ff}.resume-meta-copy span{display:inline}.resume-sheet-long .resume-section{margin-top:23px}.resume-sheet-long .resume-section-title{color:#1677ff;border-bottom:1px solid #e4e7ec;margin-bottom:10px;padding-bottom:7px;display:block}.resume-sheet-long .resume-section-title h3{color:#1677ff;margin:0;font-size:14px;font-weight:800;line-height:1.2}.resume-education-row{color:#111;grid-template-columns:1fr 1fr 1fr;align-items:center;min-height:18px;font-size:12.5px;font-weight:700;line-height:1.55;display:grid}.resume-education-row span:nth-child(2){text-align:center}.resume-education-row span:last-child{text-align:right}.resume-paragraph-list,.resume-entry-list{gap:12px;display:grid}.resume-paragraph-list p,.resume-label-block,.resume-numbered-block,.resume-numbered-block li{color:#111;text-align:justify;margin:0;font-size:12px;font-weight:420;line-height:1.7}.resume-paragraph-list strong,.resume-label-block strong,.resume-numbered-block>strong{color:#111;font-size:12.5px;font-weight:800}.resume-link{color:#2563eb;text-underline-offset:2px;word-break:break-all;text-decoration:underline}.resume-link:hover{color:#1d4ed8}.resume-entry{gap:5px;display:grid}.resume-entry+.resume-entry{margin-top:8px}.resume-entry-heading,.resume-work-heading{color:#333;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:18px;display:grid}.resume-entry-heading h4{color:#333;margin:0;font-size:13.5px;font-weight:800;line-height:1.35}.resume-entry-heading time,.resume-work-heading time{color:#333;white-space:nowrap;font-size:13px;font-weight:700;line-height:1.35}.resume-numbered-block{gap:1px;display:grid}.resume-numbered-block ol{counter-reset:resume-item;gap:1px;margin:0;padding:0;list-style:none;display:grid}.resume-numbered-block li{counter-increment:resume-item}.resume-numbered-block li:before{content:counter(resume-item) "、"}.resume-work-heading{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;font-size:13px;line-height:1.35}.resume-work-heading strong{color:#111;font-size:13px;font-weight:800}.resume-skill-line{color:#111;flex-wrap:wrap;gap:7px 12px;font-size:12px;line-height:1.6;display:flex}.resume-skill-line span{align-items:center;display:inline-flex}.resume-skill-line span+span:before{color:#c4c9d2;content:"·";margin-right:12px}.project-stage-header{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:14px;padding-left:8px;display:flex}.project-stage-header strong{text-align:right;max-width:230px;font-size:15px}.project-viewport{scrollbar-width:none;max-height:min(75vh,760px);padding:8px;overflow:hidden;-webkit-mask-image:linear-gradient(#0000 0,#000 4% 96%,#0000 100%);mask-image:linear-gradient(#0000 0,#000 4% 96%,#0000)}.project-viewport:hover,.project-viewport:focus-within{overflow-y:auto;-webkit-mask-image:linear-gradient(#0000 0,#000 2% 98%,#0000 100%);mask-image:linear-gradient(#0000 0,#000 2% 98%,#0000)}.project-viewport::-webkit-scrollbar{width:0;height:0}.project-stack{backface-visibility:hidden;transform-style:preserve-3d;will-change:transform;gap:16px;animation:72s linear infinite cover-loop;display:grid}.project-viewport:hover .project-stack,.project-viewport:focus-within .project-stack{animation-play-state:paused}@keyframes cover-loop{0%{transform:translateY(0)}to{transform:translateY(-33.333%)}}.loop-anchor{justify-content:center;align-items:center;height:22px;display:flex}.loop-anchor span{background:linear-gradient(90deg,#0000,#567fa68f,#0000);border-radius:999px;width:min(52%,240px);height:1px;display:block}.project-cover{aspect-ratio:16/9;transform-origin:0;will-change:transform;background:#d8ecff;border:1px solid #ffffff9e;border-radius:8px;min-height:154px;transition:transform .76s cubic-bezier(.16,1,.3,1),border-color .52s,box-shadow .68s,filter .68s;display:block;position:relative;overflow:hidden;box-shadow:0 20px 54px #3880d62b}.project-cover img{object-fit:cover;filter:saturate(1.02)brightness(1.02);width:100%;height:100%;display:block}.cover-blueprint{background:#cfe8ff}.cover-greenprint{background:#e4f4ff}.cover-warmprint{background:#fff0e2}.focus-idle .project-cover,.focus-resume .project-cover{transform:rotateY(-16deg)translateZ(-18px)}.focus-projects .project-cover,.project-stage:has(.project-cover:hover) .project-cover,.project-stage:has(.project-cover:focus-visible) .project-cover{filter:saturate(.96);transform:rotateY(-12deg)translateZ(-14px)}.focus-projects .project-cover:hover,.focus-projects .project-cover:focus-visible,.project-stage:has(.project-cover:hover) .project-cover:hover,.project-stage:has(.project-cover:focus-visible) .project-cover:focus-visible{z-index:3;filter:saturate(1.08)brightness(1.03);border-color:#1677ffeb;transition:transform .36s cubic-bezier(.22,1,.36,1),border-color .22s,box-shadow .28s,filter .28s;transform:none;box-shadow:0 0 0 2px #1677ff52,0 24px 62px #2b7ee033}.ui-button{min-height:38px;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-size:13px;font-weight:700;transition:transform .16s,border-color .16s,background .16s;display:inline-flex}.ui-button:hover{transform:translateY(-1px)}.ui-button--primary{color:#fff;background:#172033}.ui-button--secondary{color:#1677ff;background:#ffffffc7;border-color:#68acff6b;box-shadow:0 12px 30px #4494f41f}.ui-button--ghost{color:#172033;background:0 0}.ui-badge{color:#1677ff;background:#e2f3ffb8;border:1px solid #62a9ff57;border-radius:999px;align-items:center;min-height:25px;padding:0 9px;font-size:12px;font-weight:650;display:inline-flex}.ui-card{background:#ffffffbd;border:1px solid #68acff3d;border-radius:8px;box-shadow:0 18px 45px #4890dc17}.ui-avatar{width:32px;height:32px;box-shadow:none;background:#e5e7eb;border:0;border-radius:999px;flex:none;place-items:center;display:grid;position:relative;overflow:hidden}.ui-avatar-image{object-fit:cover;width:100%;height:100%}.ui-avatar-fallback{color:#18181b;font-size:11px;font-weight:760}.ui-message-scroller-provider,.ui-message-scroller{min-height:0}.ui-message-scroller{grid-template-rows:minmax(0,1fr);height:100%;padding:0 10px;display:grid;position:relative}.ui-message-scroller-viewport{scrollbar-width:none;min-height:0;overflow-y:auto}.ui-message-scroller-viewport::-webkit-scrollbar{width:0;height:0}.ui-message-scroller-content{gap:16px;padding:28px 4px 24px;display:grid}.ui-message{align-items:flex-start;gap:10px;display:flex}.ui-message--end{justify-content:flex-end}.ui-message-avatar{flex:none}.ui-message-content{gap:5px;max-width:min(78%,286px);display:grid}.ui-message--end .ui-message-content{justify-items:end}.ui-message-header,.ui-message-footer{color:#71717a;padding:0 2px;font-size:11px;font-weight:520}.ui-message-footer{opacity:.72}.ui-bubble{color:#18181b;box-shadow:none;background:#f4f4f5;border:0;border-radius:24px}.ui-message--end .ui-bubble{color:#fff;background:#1d4ed8}.ui-bubble-content{padding:9px 14px;font-size:14px;line-height:1.45}.chat-bubble{overflow-wrap:anywhere;white-space:pre-wrap;max-width:100%}.chat-bubble.is-user{color:#fff;background:#1d4ed8}.chat-bubble.is-assistant{color:#18181b;background:#fff}.chat-bubble.is-user .chat-bubble-content{color:#fff}.chat-bubble.is-assistant .chat-bubble-content{color:#18181b}.chat-avatar{width:44px;height:44px}.ai-empty-state{text-align:center;align-content:center;place-items:center;min-height:100%;padding:22px;display:grid}.ai-empty-content{justify-items:center;gap:12px;width:min(100%,286px);display:grid;transform:translateY(-18px)}.ai-quick-prompts{gap:8px;width:252px;margin-top:28px;display:grid}.ai-quick-prompts button{color:#3f4b5f;min-height:38px;font:inherit;letter-spacing:0;text-align:left;cursor:pointer;background:#ffffffb8;border:1px solid #1677ff24;border-radius:8px;padding:8px 12px;font-size:13px;transition:border-color .16s,background-color .16s,color .16s}.ai-quick-prompts button:hover,.ai-quick-prompts button:focus-visible{color:#1267dc;background:#eef6ff;border-color:#1677ff7a}.ai-quick-prompts button:focus-visible{outline-offset:2px;outline:2px solid #1677ff38}.ai-quick-prompts button:disabled{opacity:.48;cursor:not-allowed}@media(max-height:760px){.ai-empty-state{padding-block:8px}.ai-empty-content{gap:8px;transform:translateY(-4px)}.yunyun-lanyard{zoom:.76}.ai-quick-prompts{gap:5px;margin-top:18px}.ai-quick-prompts button{min-height:32px;padding-block:5px}}.yunyun-lanyard{opacity:0;transform-origin:50% 0;justify-items:center;width:min(100%,286px);margin:-54px 0 0;animation:.76s cubic-bezier(.16,1,.3,1) .18s both lanyard-drop;display:grid;position:relative}.yunyun-lanyard-swing{transform-origin:50% 0;justify-items:center;animation:1.35s cubic-bezier(.19,1,.22,1) .18s both lanyard-swing;display:grid}.yunyun-lanyard-cord{z-index:6;background:linear-gradient(90deg,#ffffff24,#0000 22% 78%,#0f172a2e),repeating-linear-gradient(90deg,#ffffff14 0 1px,#0000 1px 5px),linear-gradient(#647891,#465a72);border-radius:3px;width:30px;height:160px;margin-bottom:-24px;position:relative;box-shadow:inset 1px 0 #ffffff29,inset -1px 0 #0f172a33}.yunyun-lanyard-cord:after{content:"";background:linear-gradient(90deg,#ffffff47,#0000 28% 74%,#0f172a29),linear-gradient(#9da4aa,#747b82 52%,#666d75);border:1px solid #ffffff47;border-radius:2px;width:36px;height:50px;position:absolute;top:70px;left:50%;transform:translate(-50%);box-shadow:inset 0 1px #ffffff5c,inset 0 -1px #0f172a2e,0 6px 12px #2f405229}.yunyun-lanyard-card{background:linear-gradient(#f8f9fa,#eff1f3);border:1px solid #ffffffb8;border-radius:18px;align-content:start;justify-items:center;gap:10px;width:252px;min-height:372px;margin-top:0;padding:50px 20px 18px;display:grid;position:relative;box-shadow:inset 0 1px #ffffffeb,inset 0 -1px #0000000a,0 26px 46px #4c65803d,0 8px 18px #4c658029}.yunyun-lanyard-card:before{content:"";z-index:4;background:0 0;border:2px solid #426f9d;border-radius:999px;width:50px;height:14px;position:absolute;top:16px;left:50%;transform:translate(-50%);box-shadow:0 1px #ffffffc7}.yunyun-lanyard-portrait{background:#eaf4ff;border:0;border-radius:20px;place-items:center;width:140px;height:152px;display:grid;overflow:hidden}.section-portfolio,.section-thinking,.contact-footer{content-visibility:auto;contain-intrinsic-size:auto 1000px}.yunyun-lanyard-portrait img{object-fit:cover;border-radius:20px;width:136px;height:136px;display:block}.yunyun-lanyard-copy{text-align:center;justify-items:center;gap:7px;width:100%;display:grid}.yunyun-lanyard-copy strong{color:#09090b;border:0;min-width:62px;padding:0;font-size:16px;font-weight:760;line-height:1.18;display:block}.yunyun-lanyard-copy b{color:#18181b;border:0;width:min(100%,136px);padding:0;font-size:13px;font-weight:780;line-height:1.25;display:block}.yunyun-lanyard-copy p{color:#71717a;text-align:left;border:0;width:100%;margin:0;padding:4px 4px 0;font-size:12px;font-weight:420;line-height:1.62}@keyframes lanyard-drop{0%{opacity:0;transform:translateY(-138px)scale(.98)}58%{opacity:1;transform:translateY(12px)scale(1)}76%{transform:translateY(-6px)scale(1)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes lanyard-swing{0%{transform:rotate(-10deg)}42%{transform:rotate(5.5deg)}62%{transform:rotate(-3deg)}80%{transform:rotate(1.4deg)}to{transform:rotate(0)}}.ai-chat{min-height:0}.ai-message-sources{flex-wrap:wrap;gap:8px 14px;margin-top:10px;padding:0 4px 2px;display:flex}.ai-message-sources a{color:#52525b;align-items:center;gap:3px;width:fit-content;font-size:13px;font-weight:650;line-height:1.2;text-decoration:none;display:inline-flex}.ai-message-sources a:hover{color:#1d4ed8;text-underline-offset:3px;text-decoration:underline}.ai-message-sources a svg{flex:none;transform:translateY(-1px)}.ai-composer{background:#fff;border:0;border-radius:20px;gap:8px;margin:0 20px 6px;padding:12px;display:grid}.ai-composer textarea{resize:none;scrollbar-color:#09090b80 transparent;scrollbar-width:thin;color:#09090b;width:100%;min-height:1.45em;max-height:7.25em;font:inherit;box-shadow:none;background:0 0;border:0;border-radius:0;outline:0;padding:0;font-size:14px;line-height:1.45;overflow-y:auto}.ai-composer textarea::-webkit-scrollbar{width:6px}.ai-composer textarea::-webkit-scrollbar-track{background:0 0}.ai-composer textarea::-webkit-scrollbar-thumb{background:#09090b80;border-radius:999px}.ai-composer textarea:focus{box-shadow:none}.ai-composer textarea::placeholder{color:#71717a;opacity:.52}.ai-composer textarea:disabled::placeholder{color:#71717a;opacity:.56}.ai-composer-footer{justify-content:space-between;align-items:center;gap:12px;display:flex}.ai-composer-footer span{color:#71717a;font-size:12px;font-weight:620}.ai-composer button{color:#fff;width:32px;height:32px;box-shadow:none;cursor:pointer;background:#1d4ed8;border:0;border-radius:999px;flex:none;place-items:center;transition:opacity .16s,transform .16s;display:grid}.ai-composer button:hover{transform:translateY(-1px)}.ai-composer button:disabled{opacity:.42;cursor:not-allowed;transform:none}.ai-composer button svg{transform:rotate(-90deg)}.ai-storage-disclosure{color:#71717a;text-align:center;margin:0 20px 18px;font-size:11px;line-height:1.45}.ui-separator{background:var(--line);max-width:1180px;height:1px;margin:32px auto}.project-page{min-height:100vh;padding:24px clamp(16px,4vw,56px) 56px}.page-topbar{max-width:1180px}.page-topbar a{color:#303849;align-items:center;gap:8px;font-size:13px;font-weight:700;display:inline-flex}.project-hero{grid-template-columns:1fr minmax(260px,380px);align-items:center;gap:28px;max-width:1180px;margin:56px auto 28px;display:grid}.project-hero h1{letter-spacing:0;max-width:780px;margin:0;font-size:clamp(36px,5vw,68px);line-height:1.02}.project-hero-tags{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.project-live-link{color:#fff;background:#1677ff;border:1px solid #1677ff;border-radius:7px;justify-content:center;align-items:center;gap:7px;width:fit-content;min-height:42px;margin-top:22px;padding:10px 15px;font-size:14px;font-weight:750;transition:background-color .18s,border-color .18s,transform .18s;display:flex}.project-live-link:hover,.project-live-link:focus-visible{background:#0f66dc;border-color:#0f66dc;transform:translateY(-2px)}.project-hero-card{aspect-ratio:16/9;box-shadow:var(--shadow-soft);background:#edf4fb;border:1px solid #6384a938;border-radius:8px;padding:0;display:block;position:relative;overflow:hidden}.project-hero-card img{object-fit:cover;width:100%;height:100%;display:block}.project-summary{grid-template-columns:repeat(3,1fr);gap:16px;max-width:1180px;margin:0 auto;display:grid}.project-summary .ui-card{padding:18px}.project-summary span{color:var(--accent);text-transform:uppercase;font-size:12px;font-weight:800}.project-summary p{color:#3c4556;margin:10px 0 0;font-size:14px;line-height:1.72}.pdf-portfolio{gap:18px;max-width:1180px;margin:0 auto;display:grid}.pdf-page{aspect-ratio:16/9;background:#fff;border:1px solid #6784a638;border-radius:6px;min-width:0;position:relative;overflow:hidden;box-shadow:0 18px 48px #2b4c731f}.pdf-page canvas{opacity:0;max-width:100%;transition:opacity .18s;display:block;height:auto!important}.pdf-page canvas[data-ready=true]{opacity:1}.pdf-page>span{color:#fff;background:#121d2cb8;border-radius:4px;padding:4px 7px;font-size:10px;font-weight:750;position:absolute;bottom:10px;right:12px}.pdf-viewer-state{color:#172033;background:#ffffffc2;border:1px solid #6784a638;border-radius:6px;align-content:center;place-items:center;gap:10px;max-width:1180px;min-height:280px;margin:0 auto;display:grid}.pdf-viewer-state p{color:#5b6678;margin:0}.pdf-loading-indicator{border:2px solid #1677ff2e;border-top-color:#1677ff;border-radius:50%;width:24px;height:24px;animation:.8s linear infinite pdf-loading-spin}@keyframes pdf-loading-spin{to{transform:rotate(360deg)}}.slide{border:1px solid var(--line);min-height:min(76vh,680px);box-shadow:var(--shadow-soft);background:linear-gradient(135deg,#ffffffeb,#f7f9fcdb),radial-gradient(circle at 84% 16%,#2f6fed24,#0000 20rem);border-radius:8px;align-content:center;padding:clamp(26px,6vw,68px);display:grid}.slide h2{max-width:800px;margin:12px 0 16px;font-size:clamp(32px,5vw,64px);line-height:1}.slide span{color:#3f4756;max-width:720px;font-size:clamp(16px,1.7vw,20px);line-height:1.75}.slide li{color:#263247;margin:8px 0;font-weight:680}.image-board{aspect-ratio:16/10;color:#fff;min-height:min(72vh,640px);box-shadow:var(--shadow-soft);border-radius:8px;align-items:end;padding:clamp(26px,5vw,58px);display:grid}.image-board h2{margin:10px 0;font-size:clamp(34px,5vw,68px)}.image-board span{color:#ffffffd1;max-width:560px;font-size:18px;line-height:1.7;display:block}.image-warm{background:radial-gradient(circle at 72% 20%,#ffdab75c,#0000 18rem),linear-gradient(135deg,#a56558,#342530)}.image-blue{background:radial-gradient(circle at 78% 22%,#aecdff57,#0000 18rem),linear-gradient(135deg,#355f9a,#14233f)}.image-ink{background:radial-gradient(circle at 72% 20%,#ffffff2e,#0000 18rem),linear-gradient(135deg,#1d2534,#06080d)}.not-found{text-align:center;max-width:720px;margin:18vh auto 0}.not-found h1{font-size:48px}.not-found a{font-weight:800;text-decoration:underline}@media(max-width:1020px){.app-shell.ai-panel-open .page-section{width:100vw;padding-right:14px}.page-section{min-height:auto;padding:28px 14px}.resume-screen{min-height:100vh}.content-section{padding-right:14px}.workbench{grid-template-columns:1fr;min-height:auto;transform:none}.resume-stage,.project-stage,.focus-idle .resume-stage,.focus-idle .project-stage,.focus-idle .project-cover,.focus-projects .resume-stage,.focus-resume .project-stage,.focus-projects .project-stage,.focus-resume .project-cover,.focus-projects .project-cover,.project-stage:has(.project-cover:hover),.project-stage:has(.project-cover:focus-visible),.project-stage:has(.project-cover:hover) .project-cover,.project-stage:has(.project-cover:focus-visible) .project-cover,.focus-projects .project-cover:hover,.focus-projects .project-cover:focus-visible,.project-stage:has(.project-cover:hover) .project-cover:hover,.project-stage:has(.project-cover:focus-visible) .project-cover:focus-visible{transform:none}.project-stack{animation:none}.project-stage-header strong{text-align:left}.resume-stage{justify-content:center}.resume-cluster{width:100%;transform:none}.project-cover{min-height:180px}.project-hero,.project-summary,.showcase-grid{grid-template-columns:1fr}.article-note-grid,.project-showcase-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-footer{padding:20px 82px 92px 0}.contact-footer-card{text-align:center;flex-direction:column;gap:16px;width:min(100%,360px);padding:18px}.contact-footer-inner{gap:26px}.contact-tear-strip{height:60px}.contact-tear-reveal,.contact-tear-cover{font-size:14px;line-height:22px}.contact-tear-prompt{gap:8px;padding:0;transform:translate(62px)}.contact-footer-copy{justify-items:center}.side-navigation{border:1px solid #70b4ff38;border-radius:10px;width:60px;height:auto;max-height:calc(100vh - 28px);padding:7px 6px;top:auto;bottom:14px;right:12px;box-shadow:-14px 18px 44px #3777c629}.app-shell.ai-panel-open .side-navigation{border-right:0;right:12px}.chat-guide-sticker{width:112px;top:auto;bottom:0;right:80px;transform:none}.side-nav-main{gap:5px}.side-nav-item{justify-content:center}.side-nav-item>span:last-child{display:none}.ai-panel{width:100vw;height:100vh;right:0}}@media(max-width:680px){.article-note-grid{grid-template-columns:1fr;gap:34px;padding:24px 74px 12px 26px}.project-page{padding-inline:14px}.topbar,.resume-header,.timeline-heading{flex-direction:column;align-items:flex-start}.hero-copy{margin-top:28px}.resume-sheet{aspect-ratio:auto;width:100%;min-height:auto;max-height:none;padding:22px}.resume-sheet-long .resume-header{flex-direction:row}.resume-sheet-long{padding:28px 22px}.resume-meta-line{font-size:11px}.resume-work-heading{grid-template-columns:1fr;gap:3px}.resume-work-heading time{justify-self:start}.resume-grid{grid-template-columns:1fr}.project-stack{gap:12px}.project-showcase-grid{grid-template-columns:1fr;gap:34px;padding:24px 74px 12px 26px}.portfolio-connection-line-desktop,.project-showcase-grid:before,.project-showcase-grid:after{display:none}.portfolio-connection-line-mobile{width:124%;height:102%;display:block;inset:-1% -12%}.showcase-project,.showcase-project:hover,.showcase-project:focus,.showcase-project:focus-visible{min-height:320px;transform:none}.portfolio-pin{top:-30px;left:50%;transform:translate(-50%)}.section-heading h2{font-size:30px}.ai-panel{width:100vw}.ai-panel-header{padding:20px 16px 14px}.ui-message-scroller{padding-inline:12px}.ui-message-content{max-width:min(82%,320px)}.ai-composer{padding:12px 14px 16px}.slide,.image-board{min-height:62vh}}@media(hover:none){.showcase-project,.showcase-project:hover,.showcase-project:focus,.showcase-project:focus-visible{transition:none;transform:none!important}.portfolio-pin,.portfolio-clip{transition:none}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{@page{size:A4;margin:0}:root,body{color:#111827!important;background:#fff!important}body{width:210mm}.no-print,.topbar,.hero-copy,.side-navigation,.content-section,.project-stage,.page-topbar,.project-page{display:none!important}.app-shell{min-height:auto;padding:0;overflow:visible;background:#fff!important}.resume-screen{min-height:auto;padding:0;display:block;overflow:visible}.workbench{perspective:none;max-width:none;min-height:auto;margin:0;display:block;transform:none}.resume-stage,.focus-idle .resume-stage,.focus-projects .resume-stage{display:block;filter:none!important;transform:none!important}.resume-sheet{aspect-ratio:auto;border:0;border-radius:0;width:210mm;min-height:auto;padding:14mm 15mm;box-shadow:none!important;background:#fff!important;overflow:visible!important}.resume-header,.resume-summary,.resume-section,.timeline-item,.resume-project-link,.resume-grid,.education-block,.skill-list{break-inside:avoid;page-break-inside:avoid}.resume-header h2{font-size:30px}.resume-summary,.timeline li{color:#273142!important}.resume-project-link,.ui-badge{background:#fff!important;border-color:#d4d8df!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ease{syntax:"*";inherits:false}
