.art-1{background:#202a35}.art-grid{position:absolute;inset:0;background-image:linear-gradient(#87a8c90c 1px,transparent 1px),linear-gradient(90deg,#87a8c90c 1px,transparent 1px);background-size:32px 32px;transform:perspective(300px) rotateX(30deg) scale(1.2)}.art-orbit{position:absolute;border:1px solid #81a7ca33;border-radius:50%;width:290px;height:290px;right:-30px;top:-25px}.orbit-b{width:230px;height:230px;right:0;top:5px;border-color:#81a7ca22}.rail-line{position:absolute;display:flex;align-items:center;justify-content:space-around;border-top:2px solid #8db6dd88;width:300px;transform:rotate(-32deg);right:-60px;top:140px;box-shadow:0 -8px #7ea6cc0c,0 8px #7ea6cc0c}.rail-line i{width:7px;height:7px;border-radius:50%;background:#a1c3e4;margin-top:-4.5px;box-shadow:0 0 0 4px #7fa9d119}.rail-two{top:140px;right:5px;transform:rotate(40deg);width:200px;border-color:#6e87ae88}.rail-two i{background:#8096ba}.art-data{position:absolute;top:60px;left:34px}.art-data small{font:14px Cascadia Code,Consolas,monospace;letter-spacing:1.8px;color:#84a1be}.art-data strong{display:block;font-size:25px;color:#bcd2e7;letter-spacing:1px;line-height:1.5;font-weight:450;margin-top:7px}.art-data strong span{display:block;color:#869eb5;font-size:18px}.art-bars{display:flex;align-items:flex-end;gap:5px;height:41px;margin-top:16px}.art-bars i{width:9px;background:#87b1da55;border-top:1px solid #94bde4;height:55%}.art-bars i:nth-child(3n){height:90%}.art-bars i:nth-child(3n+1){height:35%}.art-bars i:nth-child(2n){height:70%}.art-caption{position:absolute;left:20px;bottom:17px;font:14px Cascadia Code,Consolas,monospace;color:#acc1d477;letter-spacing:1.2px}.art-corner{position:absolute;right:20px;top:18px;font:14px Cascadia Code,Consolas,monospace;color:#9fb9d366}.art-2{background:#262a30}.flow-line{position:absolute;width:110px;border-top:1px solid #a6b0c258;top:128px;left:calc(50% - 150px)}.flow-line:after{content:"";display:block;position:absolute;width:3px;height:3px;background:#bdcbe1;box-shadow:0 0 10px #bdcbe1;top:-2px;animation:flow-pulse 3s linear infinite}.line-two{left:calc(50% + 34px)}.flow-node{position:absolute;top:102px;border:1px solid #a6b0c233;background:#262e3c;border-radius:8px;padding:13px 17px;color:#b7c3d4;font-size:14px;box-shadow:0 7px 20px #11151b22;white-space:nowrap}.node-start{left:25px}.node-start span{margin-left:8px}.node-middle{left:50%;transform:translate(-50%);background:#3a4351;border-color:#a6bbd155;z-index:1}.node-end{right:25px}.node-end span{margin-left:8px}.node-dot{width:5px;height:5px;background:#b4cde8;display:inline-block;border-radius:50%;margin-right:7px}.flow-mini{position:absolute;left:50%;transform:translate(-50%);top:174px;font-size:14px;color:#93a1b6}.art-3{background:#293035}.knowledge-page{position:absolute;width:175px;height:170px;border:1px solid #b7c9d62b;background:#3a4147;left:50%;top:47px;border-radius:6px}.page-back{transform:translate(-50%) rotate(-12deg);background:#3b444b}.page-front{transform:translate(-50%) rotate(5deg);padding:21px;box-shadow:0 15px 25px #11161b1f}.page-front>span{font:14px Cascadia Code,Consolas,monospace;letter-spacing:1px;color:#c9c5a5}.page-front>i{display:block;height:3px;background:#d5d1b022;margin-top:13px;border-radius:2px}.page-front>i:nth-child(3){width:75%}.page-front>i:nth-child(4){width:90%}.knowledge-spark{color:#dbd5a5;font-size:38px;position:absolute;bottom:9px;right:20px}.ai-bubble{position:absolute;bottom:46px;left:25px;padding:9px 15px;background:#4c5a65;border:1px solid #ddd8ac33;border-radius:5px;color:#e0ddc3;font-size:14px;transform:rotate(-4deg)}.ai-bubble span{color:#e3deaf;margin-right:8px}.art-5{background:#29303c}.phone-art{position:absolute;width:125px;height:215px;border:3px solid #919fb550;border-radius:21px;background:#313a4a;padding:22px 13px;left:70px;top:40px;transform:rotate(-10deg);box-shadow:8px 8px 30px #131b2733}.phone-notch{position:absolute;top:6px;width:38px;height:5px;border-radius:3px;background:#151e2d;left:40px}.phone-art>span{color:#a9b7ce;font:14px Cascadia Code,Consolas,monospace;letter-spacing:.5px}.health-ring{margin:15px auto;display:grid;place-items:center;width:65px;height:65px;border:5px solid #bccce244;border-right-color:#bccce2;border-top-color:#bccce2;border-radius:50%;transform:rotate(-30deg)}.health-ring span{font-size:23px;color:#c0d1e9;transform:rotate(30deg)}.health-bars{display:flex;gap:5px;align-items:end;height:30px}.health-bars i{width:7px;height:65%;background:#a3b3cb6b;border-radius:2px}.health-bars i:nth-child(2n){height:95%}.health-bars i:nth-child(3n){height:45%}.health-label{position:absolute;right:45px;top:91px;font-size:21px;font-weight:400;color:#d0d8e3;line-height:1.8}.health-label>span{color:#909dae;font-size:14px}.art-4{background:#2a3035}.art-6{background:#283439}.art-7{background:#2a3137}.art-8{background:#2e3033}.system-window{position:absolute;width:72%;left:14%;top:52px;background:#ffffff07;border:1px solid #c4d2df33;border-radius:6px;height:175px;transform:perspective(600px) rotateY(-8deg) rotateX(4deg);box-shadow:10px 15px 30px #10141822}.window-top{display:flex;align-items:center;gap:4px;border-bottom:1px solid #c4d2df19;padding:9px 12px}.window-top>i{width:3px;height:3px;border-radius:50%;background:#9cafc266}.window-top>span{margin-left:auto;font:14px Cascadia Code,Consolas,monospace;letter-spacing:1px;color:#aabccd99}.window-body{display:flex;height:145px}.window-sidebar{width:18%;border-right:1px solid #c4d2df13;padding:17px 8px}.window-sidebar>i{display:block;height:3px;background:#9eb2c533;margin-bottom:13px;border-radius:2px}.window-sidebar>i:first-child{background:#9cbedc66}.window-content{flex:1;padding:15px 15px 0}.mini-metrics{display:flex;gap:8px}.mini-metrics i{width:31%;height:20px;background:#91afcb22;border-radius:3px;border:1px solid #91afcb15}.mini-chart{display:flex;align-items:end;gap:8px;height:48px;padding-top:10px;border-bottom:1px solid #91afcb33;margin-top:4px}.mini-chart i{height:50%;flex:1;background:#91afcb66;border-top:1px solid #a9c8e4}.mini-chart i:nth-child(2n){height:80%}.mini-chart i:nth-child(3n){height:30%}.mini-chart i:last-child{height:95%}.mini-table{margin-top:12px}.mini-table i{display:block;height:2px;background:#b2c1cf21;margin-top:6px;width:100%}.mini-table i:nth-child(2){width:80%}.flow-node-line,.bubble-line{display:block;width:54px;height:5px;border-radius:3px;background:#b7c3d480}*,: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,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:Cascadia Code,Consolas,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}:root{color-scheme:dark;--bg: #101722;--fg: #e8edf5;--accent: #9abfff;--muted: #9ba9be;--line: #ffffff12}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;--tw-bg-opacity: 1;background-color:rgb(16 23 34 / var(--tw-bg-opacity, 1));font-family:Inter,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--fg);font-size:14px;line-height:1.85}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer}::-moz-selection{background:var(--accent);color:var(--bg)}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:5px;border-radius:3px}h1,h2,h3,p{margin:0}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.shell{margin-left:auto;margin-right:auto;width:calc(100% - 64px);max-width:1000px}.\!visible{visibility:visible!important}.visible{visibility:visible}.hidden{display:none}.resize{resize:both}.portfolio{overflow:clip}.skip-link{position:fixed;top:-80px;left:20px;padding:10px 20px;z-index:100;background:var(--accent);color:var(--bg)}.skip-link:focus{top:10px}.scroll-progress{position:fixed;top:0;left:0;width:100%;height:2px;transform:scaleX(0);transform-origin:left;background:var(--accent);z-index:60}.site-header{position:sticky;top:0;background:#101722ed;backdrop-filter:blur(15px);border-bottom:1px solid var(--line);z-index:50}.header-inner{display:flex;align-items:center;gap:30px;height:70px}.brand{font-size:30px;font-weight:700;letter-spacing:-2px;line-height:1}.brand>span{color:var(--accent)}.desktop-nav{display:flex;gap:27px;margin-left:auto}.desktop-nav a{font-size:14px;color:var(--muted);transition:color .2s}.desktop-nav a:hover,.desktop-nav a[aria-current]{color:var(--accent)}.download-link{display:flex;gap:16px;align-items:center;border:1px solid #ffffff26;border-radius:5px;padding:6px 12px;font-size:14px;margin-left:10px;transition:border-color .2s}.download-link:hover{border-color:var(--accent)}.download-link>span{color:var(--accent);font-size:17px}.menu-button{display:none;width:34px;height:34px;padding:7px}.menu-button>span{display:block;width:20px;height:1px;background:var(--fg);margin-block:6px;transition:transform .2s}.menu-button[aria-expanded=true]>span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-button[aria-expanded=true]>span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.mobile-nav{padding:8px 24px 18px;background:var(--bg);border-top:1px solid var(--line)}.mobile-nav a{display:flex;justify-content:space-between;padding:12px 0;font-size:14px}.mobile-nav a>span{color:var(--accent)}.menu-enter-active,.menu-leave-active{transition:opacity .2s,transform .2s}.menu-enter-from,.menu-leave-to{opacity:0;transform:translateY(-10px)}.intro{padding:45px 0 39px;position:relative;isolation:isolate}.intro-content{min-width:0;position:relative;z-index:1;max-width:600px}.intro-heading{display:flex;align-items:center;gap:18px}.intro-heading img{width:62px;height:70px;-o-object-fit:cover;object-fit:cover;border-radius:9px;border:1px solid #9abfff25;box-shadow:0 5px 20px #02081530}.intro h1{font-size:32px;letter-spacing:2px;font-weight:550;line-height:1.4}.intro-role{font-size:14px;color:#a9bad2;margin-top:5px;letter-spacing:1px}.intro-facts{display:flex;gap:17px;align-items:center;margin-top:22px;color:#a5b5ce;font-size:14px}.intro-facts>span+span{border-left:1px solid #9abfff29;padding-left:17px}.intro-description{font-size:14px;color:#b6c3d6;line-height:2;margin-top:10px;max-width:530px}.intro-meta{margin-top:17px}.skill-tags{display:flex;flex-wrap:wrap;gap:7px}.skill-tags>span{font-size:14px;border:1px solid #9abfff1a;background:#9abfff05;color:#a2b8d8;padding:2px 9px;border-radius:4px}.intro-meta>p{font-size:14px;color:#8195b3;margin-top:13px}.intro-meta>p>span{color:#7c90ad;margin-left:10px}.intro-actions{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-top:23px}.intro-contact{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;border-radius:5px;background:#9abfff;color:#15243b;padding:7px 14px;font-size:14px;font-weight:500;transition:background .2s,transform .2s}.intro-contact:hover{background:#b8d3ff;transform:translateY(-1px)}.intro-contact>span{font-size:17px;line-height:1}.intro-email{font-size:14px;color:#869dbf;transition:color .2s}.intro-email:hover{color:var(--accent)}.intro-visual{position:absolute;inset:0 auto 0 50%;width:100vw;height:100%;transform:translate(-50%);overflow:hidden;pointer-events:none;z-index:0}.intro-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#101722eb,#101722c9 30%,#10172255 58%,#1017220d 83%),linear-gradient(0deg,#101722,#10172200 22% 82%,#10172255)}.ribbon-scene,.ribbon-canvas{display:block;width:100%;height:100%}.resume-section{padding-block:33px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:27px}.section-heading h2,.contact-intro h2{font-size:19px;font-weight:550;letter-spacing:.3px}.section-heading>span{font-size:14px;font-family:Cascadia Code,Consolas,monospace;color:#6a7a89}.experience-row:not(:last-child){margin-bottom:29px}.experience-heading{display:flex;justify-content:space-between;gap:20px;align-items:baseline}.experience-heading h3{font-size:16px;font-weight:500}.experience-heading>span{font:14px Cascadia Code,Consolas,monospace;color:#7c8c9c;white-space:nowrap}.job-role{font-size:14px;color:#748494;margin-top:3px}.experience-row ul{padding-left:15px;margin-top:12px;color:#97a5b2;font-size:14px;line-height:2;list-style:disc}.experience-row li{padding-left:3px;margin-top:4px}.experience-row li::marker{color:#576f86;font-size:14px}.projects-list{display:flex;flex-direction:column;gap:0}.project-card{padding-block:21px}.project-card:first-child{padding-top:0}.project-card:not(:last-child){border-bottom:1px solid var(--line)}.project-summary{display:flex;gap:25px;align-items:center}.project-copy{min-width:0;flex:1}.project-heading{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.project-heading h3{font-size:15px;font-weight:500;line-height:1.8}.project-date{font:14px Cascadia Code,Consolas,monospace;white-space:nowrap;color:#718394}.project-description{font-size:14px;color:#91a1b0;line-height:1.95;margin-top:7px}.project-meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:15px;margin-top:12px}.tech-tags{display:flex;flex-wrap:wrap;gap:6px}.tech-tags>span{font-size:14px;color:#7e8fa0;line-height:1.5}.tech-tags>span:not(:last-child):after{content:"/";margin-left:6px;color:#425161}.project-toggle{display:flex;align-items:center;gap:10px;font-size:14px;color:#9ab0c6;white-space:nowrap;padding:4px 0}.project-toggle:hover{color:var(--accent)}.toggle-symbol{font-size:17px;line-height:1;transition:transform .2s}.toggle-symbol.is-open{transform:rotate(45deg)}.project-detail{overflow:hidden}.project-detail ul{list-style:disc;font-size:14px;color:#8c9eaf;line-height:2;margin:0;padding:15px 12px 0 16px;max-width:810px}.project-detail li{padding-left:3px;margin-top:5px}.project-detail li::marker{color:#5b748d;font-size:14px}.project-thumbnail{position:relative;flex-shrink:0;width:136px;height:88px;border-radius:6px;overflow:hidden;opacity:.8;transition:opacity .3s}.project-card:hover .project-thumbnail{opacity:1}.project-art{position:absolute;left:0;top:0;width:544px;height:352px;transform:scale(.25);transform-origin:top left;pointer-events:none}.art-caption,.art-corner{display:none}.art-data{top:88px}.art-orbit{top:20px}.orbit-b{top:50px}.rail-line,.rail-two{top:185px}.flow-node{top:145px}.flow-line{top:172px}.flow-mini{top:217px}.knowledge-page{top:82px}.ai-bubble{bottom:78px}.phone-art{top:65px}.health-label{top:125px}.system-window{top:90px}.contact-section{display:flex;justify-content:space-between;align-items:center;gap:30px;padding-block:30px 38px;border-top:1px solid var(--line)}.contact-intro>p{font-size:14px;color:#748597;margin-top:8px}.contact-links{display:flex;flex-direction:column;gap:7px}.contact-links>a{display:flex;align-items:center;justify-content:space-between;gap:25px;font-size:14px;color:#aabbcb}.contact-links>a:hover{color:var(--accent)}.contact-links>a>span{color:var(--accent)}.phone-row{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:14px;color:#8d9fb1}.copy-button{display:grid;place-items:center;width:24px;height:24px;border-radius:4px;color:#758da5}.copy-button:hover{background:#91bce30b;color:var(--accent)}.copy-button svg{width:13px;height:13px}.site-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);padding-block:21px;color:#5e6f80;font-size:14px}.site-footer a>span{margin-left:9px;color:#809fbd}.toast-message{position:fixed;bottom:25px;left:50%;transform:translate(-50%);background:var(--accent);color:#0c1926;padding:10px 20px;border-radius:6px;font-size:14px;z-index:100;max-width:calc(100% - 32px);text-align:center}.toast-enter-active,.toast-leave-active{transition:opacity .2s,bottom .2s}.toast-enter-from,.toast-leave-to{opacity:0;bottom:15px}@media(max-width:850px){.project-summary{gap:18px}.project-heading{display:block}.project-date{display:block;margin-top:3px}.experience-heading{flex-wrap:wrap;gap:4px 20px}.experience-heading h3{font-size:15px}}@media(max-width:767px){html{scroll-padding-top:80px}.shell{width:calc(100% - 40px)}.header-inner{height:62px;gap:15px}.brand{font-size:27px}.desktop-nav{display:none}.download-link{margin-left:auto;font-size:14px;padding:5px 10px;gap:15px}.menu-button{display:block}.resume-section{padding-block:27px}.section-heading{margin-bottom:22px}.section-heading h2,.contact-intro h2{font-size:18px}.section-heading>span{font-size:14px}.experience-row:not(:last-child){margin-bottom:24px}.experience-heading{display:block}.experience-heading h3{font-size:15px}.experience-heading>span{display:block;font-size:14px;margin-top:5px}.job-role{font-size:14px;margin-top:4px}.experience-row ul{font-size:14px;line-height:2;margin-top:9px;padding-left:14px}.experience-row li{margin-top:5px}.project-card{padding-block:19px}.project-summary{align-items:start;gap:13px}.project-thumbnail{width:66px;height:53px;margin-top:4px;border-radius:4px}.project-art{width:440px;height:353px;transform:scale(.15)}.project-heading h3{font-size:14px;line-height:1.9}.project-date{font-size:14px;margin-top:4px}.project-description{font-size:14px;margin-top:8px}.project-meta{flex-direction:column;align-items:start;gap:9px;margin-top:10px}.tech-tags{gap:3px 5px}.tech-tags>span{font-size:14px;line-height:1.8}.tech-tags>span:not(:last-child):after{margin-left:5px}.project-toggle{font-size:14px;gap:6px;padding-top:2px}.project-detail ul{font-size:14px;padding-top:12px;padding-right:0}.contact-section{display:block;padding-block:26px}.contact-intro>p{font-size:14px;margin-top:7px}.contact-links{margin-top:18px;max-width:320px}.contact-links>a{font-size:14px}.phone-row{font-size:14px}.site-footer{font-size:14px;padding-block:19px}.toast-message{font-size:14px}}@media(max-width:370px){.shell{width:calc(100% - 32px)}.project-thumbnail{width:48px;height:42px}.project-art{width:400px;height:350px;transform:scale(.12)}.project-meta{display:block}.project-toggle{margin-top:5px}.project-summary{gap:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition-duration:0s!important}}@media(max-width:767px){.intro{display:block;padding:29px 0 28px}.intro-heading{gap:15px;min-height:65px}.intro-heading img{width:52px;height:59px;border-radius:7px}.intro h1{font-size:28px;letter-spacing:1px}.intro-role{font-size:14px;margin-top:4px;letter-spacing:.5px}.intro-visual:after{background:linear-gradient(90deg,#101722c9,#10172285 65%,#10172266),linear-gradient(0deg,#101722,#10172200 28% 80%,#10172255)}.intro-facts{font-size:14px;gap:13px;margin-top:20px}.intro-facts>span+span{padding-left:13px}.intro-description{font-size:14px;margin-top:7px}.intro-meta{margin-top:13px}.skill-tags{gap:6px}.skill-tags>span{font-size:14px;padding:2px 7px}.intro-meta>p{font-size:14px;margin-top:11px;line-height:1.9}.intro-meta>p>span{margin-left:7px}.intro-actions{gap:17px;margin-top:20px}.intro-contact{font-size:14px;padding:6px 12px;gap:23px}.intro-email{font-size:14px}}@media(max-width:370px){.intro-heading{gap:11px}.intro-heading img{width:46px;height:53px}.intro h1{font-size:25px}.intro-role{font-size:14px}.intro-actions{gap:13px}.intro-email{font-size:14px}.intro-meta>p>span{margin-left:5px}}@media print{:root{color-scheme:light}body{background:#fff;color:#222}.site-header,.intro-visual,.project-thumbnail,.project-toggle,.copy-button,.scroll-progress,.toast-message{display:none!important}.portfolio{overflow:visible}.shell{width:100%}.intro{display:block;padding-block:10px 20px}.intro h1{font-size:26px}.intro,[data-reveal]{opacity:1!important;transform:none!important}.intro-description,.intro-heading p,.intro-meta>p,.experience-row ul,.project-description,.project-detail ul{color:#555}.resume-section{padding-block:20px;border-color:#ddd}.section-heading{margin-bottom:15px}.experience-row{-moz-column-break-inside:avoid;break-inside:avoid}.project-card{-moz-column-break-inside:avoid;break-inside:avoid;padding-block:15px;border-color:#ddd!important}.contact-section,.site-footer{border-color:#ddd}.contact-links>a,.phone-row{color:#444}.contact-section{padding-block:20px}.site-footer{padding-block:10px}}.back-top-button{position:fixed;right:max(24px,env(safe-area-inset-right));bottom:calc(24px + env(safe-area-inset-bottom));width:44px;height:44px;display:grid;place-items:center;border:1px solid #9abfff38;background:#19263be8;backdrop-filter:blur(14px);border-radius:12px;color:var(--accent);box-shadow:0 5px 20px #03091630;z-index:45;transition:background .2s,border-color .2s,transform .2s}.back-top-button:hover{background:#223651;border-color:#9abfff80;transform:translateY(-2px)}.back-top-button svg{width:20px;height:20px}.back-top-enter-active,.back-top-leave-active{transition:opacity .2s,transform .2s}.back-top-enter-from,.back-top-leave-to{opacity:0;transform:translateY(8px)}@media(max-width:767px){.back-top-button{right:max(16px,env(safe-area-inset-right));bottom:calc(18px + env(safe-area-inset-bottom))}}@media(prefers-reduced-motion:reduce){.back-top-button,.back-top-enter-active,.back-top-leave-active{transition:none}}@media print{.back-top-button{display:none!important}}.ui-icon{display:block;width:16px;height:16px;flex:0 0 16px;stroke-width:1.5}.brand{display:inline-flex;align-items:center;justify-content:center;width:32px;height:36px;font-size:28px;font-weight:650;letter-spacing:-1px;color:#e8edf5}.download-link,.intro-contact,.project-toggle,.contact-links>a,.mobile-nav a{display:inline-flex;align-items:center}.download-link>span,.intro-contact>span{display:block;font-size:inherit;line-height:1.5;color:inherit}.download-link .ui-icon,.intro-contact .ui-icon{width:15px;height:15px;flex-basis:15px;color:inherit}.project-toggle{min-height:28px;line-height:1.5}.project-toggle>span{display:block;line-height:1.5}.project-toggle .toggle-symbol{width:14px;height:14px;flex-basis:14px}.contact-links>a>span{display:block;line-height:1.5;color:inherit}.contact-links>a .ui-icon{width:15px;height:15px;flex-basis:15px;color:var(--accent)}.phone-row{min-height:28px}.copy-button{width:28px;height:28px}.back-top-button .ui-icon{width:20px;height:20px;flex-basis:20px}@media(max-width:767px){.brand{font-size:26px}.download-link>span,.intro-contact>span{font-size:inherit}}@media(max-width:370px){.intro h1{font-size:24px}}
