:root{color:#edf5ff;background:#07111f;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;overflow-x:hidden;background:radial-gradient(circle at 12% 14%,rgba(79,140,255,.28),transparent 28rem),radial-gradient(circle at 86% 8%,rgba(32,214,189,.2),transparent 26rem),linear-gradient(135deg,#07111f,#0b1728 48%,#081827)}body:before,body:after{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;pointer-events:none;content:""}body:before{background-image:linear-gradient(rgba(159,186,224,.065) 1px,transparent 1px),linear-gradient(90deg,rgba(159,186,224,.065) 1px,transparent 1px);background-size:42px 42px;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,.82),transparent);mask-image:linear-gradient(to bottom,rgba(0,0,0,.82),transparent);animation:grid-drift 18s linear infinite}body:after{z-index:-3;background:radial-gradient(circle at 20% 35%,rgba(47,107,255,.2),transparent 22rem),radial-gradient(circle at 78% 58%,rgba(21,184,166,.22),transparent 24rem),radial-gradient(circle at 52% 92%,rgba(122,92,255,.2),transparent 26rem);background-size:130% 130%;animation:aurora-shift 16s ease-in-out infinite alternate}a{color:inherit;text-decoration:none}.animated-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none}.animated-bg span{position:absolute;top:calc((var(--i) * 53px) % 100vh);left:calc((var(--i) * 97px) % 100vw);width:calc(6px + (var(--i) % 4) * 3px);height:calc(6px + (var(--i) % 4) * 3px);border-radius:999px;background:#2f6bff38;box-shadow:0 0 24px #2f6bff38;animation:particle-float calc(8s + (var(--i) % 7) * 1s) ease-in-out infinite;animation-delay:calc(var(--i) * -.42s)}.site-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:18px clamp(20px,5vw,72px);border-bottom:1px solid rgba(159,186,224,.12);background:#07111fc7;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:header-drop .56s ease both}.logo{display:grid;width:46px;height:46px;place-items:center;border-radius:8px;background:linear-gradient(135deg,#4f8cff,#20d6bd);color:#fff;font-weight:900;box-shadow:0 12px 34px #4f8cff42;transition:transform .18s ease}.logo:hover{transform:rotate(-4deg) scale(1.05)}.nav{display:flex;flex-wrap:wrap;gap:clamp(14px,3vw,34px);color:#a9b8cc;font-size:.95rem;font-weight:800}.nav a{position:relative}.nav a:after{position:absolute;right:0;bottom:-7px;left:0;height:2px;transform:scaleX(0);transform-origin:left;background:#73a7ff;content:"";transition:transform .18s ease}.nav a:hover{color:#73a7ff}.nav a:hover:after{transform:scaleX(1)}main{width:min(1160px,calc(100% - 40px));margin:0 auto}.hero{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);gap:clamp(30px,6vw,70px);align-items:center;min-height:calc(100vh - 82px);padding:54px 0 70px}.reveal{animation:rise-in .76s ease both}.hero-visual.reveal{animation-delay:.12s}.scroll-reveal{animation:rise-in linear both;animation-timeline:view();animation-range:entry 8% cover 28%}.section-transition{position:relative;height:96px;margin:12px 0 24px;overflow:hidden}.section-transition:before,.section-transition:after{position:absolute;content:"";pointer-events:none}.section-transition:before{top:50%;left:50%;width:min(760px,92vw);height:1px;transform:translate(-50%,-50%);background:linear-gradient(90deg,transparent,rgba(47,107,255,.16),rgba(21,184,166,.42),rgba(47,107,255,.16),transparent)}.section-transition:after{top:50%;left:50%;width:58px;height:58px;transform:translate(-50%,-50%);border:1px solid rgba(115,167,255,.18);border-radius:999px;background:radial-gradient(circle,rgba(237,245,255,.3),rgba(79,140,255,.1),transparent 68%);box-shadow:0 0 22px #2f6bff1a;animation:transition-pulse 4s ease-in-out infinite}.transition-one:after{animation:transition-soft-sweep 5.8s ease-in-out infinite}.transition-one{height:54px;margin:42px 0 72px;animation:transition-soft-rise linear both;animation-timeline:view();animation-range:entry 0% cover 45%}.transition-one:before{top:44%;width:min(520px,72vw);height:28px;transform:translate(-50%,-50%) rotate(-2deg);border-top:1px solid rgba(47,107,255,.14);border-radius:50%;background:linear-gradient(90deg,transparent,rgba(47,107,255,.08),rgba(21,184,166,.16),transparent);filter:blur(.2px)}.transition-one:after{top:40%;left:28%;width:96px;height:16px;border:0;border-radius:0;background:linear-gradient(90deg,transparent,rgba(47,107,255,.26),rgba(21,184,166,.18),transparent);box-shadow:none;opacity:.32;transform:translate(-50%,-50%) rotate(-6deg)}.transition-two:after{animation-delay:.42s}.transition-three:after{animation-delay:.84s}.transition-four:after{animation-delay:1.26s}.transition-five:after{animation-delay:1.68s}.transition-three,.transition-five{animation:transition-drift-left linear both;animation-timeline:view();animation-range:entry 0% cover 55%}.transition-two,.transition-four{animation:transition-drift-right linear both;animation-timeline:view();animation-range:entry 0% cover 55%}.eyebrow{margin:0 0 12px;color:#73a7ff;font-size:.78rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}h1,h2,h3,p{overflow-wrap:anywhere}h1{width:fit-content;margin:0;background:linear-gradient(90deg,#f5f9ff,#73a7ff,#20d6bd 70%,#f5f9ff);background-size:220% auto;color:transparent;font-size:clamp(4.2rem,10vw,8.6rem);line-height:.92;letter-spacing:0;-webkit-background-clip:text;background-clip:text;animation:text-shimmer 6s ease-in-out infinite}h2{margin:0;font-size:clamp(1.85rem,4vw,3.2rem);line-height:1.14}h3{margin:0;font-size:1.3rem}.hero-title{max-width:760px;margin:24px 0 0;color:#f5f9ff;font-size:clamp(1.45rem,3vw,2.25rem);font-weight:900;line-height:1.35}.hero-text,.intro-content p,.project-card p,.contact-section p{color:#a9b8cc;line-height:1.8}.hero-text{max-width:680px;margin:20px 0 0;font-size:1.08rem}.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}.button{position:relative;display:inline-flex;min-height:50px;align-items:center;justify-content:center;overflow:hidden;border-radius:8px;padding:0 22px;font-weight:900;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.button:after{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-120%) skew(-18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.38),transparent);content:"";transition:transform .54s ease}.button:hover{transform:translateY(-2px)}.button:hover:after{transform:translate(120%) skew(-18deg)}.button.primary{background:linear-gradient(135deg,#4f8cff,#20d6bd);color:#fff;box-shadow:0 18px 36px #2f6bff42}.button.secondary{border:1px solid rgba(159,186,224,.2);background:#0d1b2eb8;color:#edf5ff}.tech-marquee{max-width:640px;overflow:hidden;margin-top:30px;border:1px solid rgba(47,107,255,.12);border-radius:8px;background:#0d1b2ead;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}.tech-marquee div{display:flex;width:max-content;gap:10px;padding:10px;animation:marquee 18s linear infinite}.tech-marquee span{border-radius:999px;background:#4f8cff24;padding:8px 13px;color:#dceaff;font-size:.82rem;font-weight:900;white-space:nowrap}.hero-visual{position:relative;min-height:560px}.hero-visual img{position:relative;z-index:2;width:min(100%,460px);height:560px;object-fit:cover;object-position:center;border:10px solid rgba(237,245,255,.16);border-radius:8px;box-shadow:0 30px 100px #00000075;animation:photo-breathe 5.8s ease-in-out infinite}.photo-glow{position:absolute;top:26px;right:26px;bottom:18px;left:10px;z-index:0;border-radius:8px;background:linear-gradient(135deg,#2f6bff70,#15b8a65c);filter:blur(34px);opacity:.58;animation:glow-pulse 4.8s ease-in-out infinite}.photo-orbit{position:absolute;top:34px;right:-18px;bottom:24px;left:44px;z-index:1;border:1px solid rgba(115,167,255,.34);border-radius:8px;background:linear-gradient(135deg,#2f6bff29,#15b8a62e),#0d1b2e7a;animation:float-panel 5s ease-in-out infinite}.floating-card{position:absolute;z-index:3;display:grid;gap:4px;border:1px solid rgba(159,186,224,.22);border-radius:8px;background:#0c182ad1;padding:16px 18px;box-shadow:0 18px 50px #00000052;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.floating-card span{color:#a9b8cc;font-size:.78rem;font-weight:900;text-transform:uppercase}.floating-card strong{color:#f5f9ff}.code-card{top:88px;right:-8px;animation:float-card 4.5s ease-in-out infinite}.deploy-card{bottom:78px;left:-18px;animation:float-card 4.5s ease-in-out .7s infinite}.intro-section,.contact-section,.project-card{border:1px solid rgba(159,186,224,.14);border-radius:8px;background:#0c182ac2;box-shadow:0 24px 80px #0000003d;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.intro-section{display:grid;grid-template-columns:.9fr 1.1fr;gap:34px;margin-top:8px;padding:clamp(24px,5vw,44px)}.intro-section,.section,.contact-section{position:relative}.intro-section:before,.section:before,.contact-section:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;transform:translateY(18px) scale(.98);border-radius:8px;background:linear-gradient(135deg,#2f6bff1a,#15b8a614);opacity:0;content:"";animation:section-glow-in linear both;animation-timeline:view();animation-range:entry 4% cover 30%}.intro-content p{margin-top:0}.highlight-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:26px}.highlight-grid div{position:relative;overflow:hidden;border-radius:8px;background:#4f8cff1f;padding:18px}.highlight-grid div:after{position:absolute;inset:auto -30% -40% 20%;height:70px;background:#2f6bff1a;border-radius:999px;content:"";animation:highlight-wave 4.8s ease-in-out infinite}.highlight-grid strong{position:relative;z-index:1;display:block;color:#73a7ff;font-size:2rem;line-height:1}.highlight-grid span{position:relative;z-index:1;display:block;margin-top:8px;color:#a9b8cc;font-size:.9rem;font-weight:800}.section{padding:74px clamp(18px,4vw,42px)}.section-heading{margin-bottom:28px}.skill-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.skill-grid span{border:1px solid rgba(47,107,255,.12);border-radius:8px;background:#1e324ed6;padding:18px 20px;color:#edf5ff;font-weight:900;animation:rise-in .62s ease both;animation-delay:var(--delay);transition:transform .18s ease,background .18s ease,box-shadow .18s ease}.skill-grid span:hover{transform:translateY(-6px) scale(1.02);background:#2a4468f5;box-shadow:0 18px 34px #4f8cff2e}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.project-card{position:relative;display:flex;min-height:360px;flex-direction:column;overflow:hidden;background:#1e324ed6;padding:26px;animation:rise-in .68s ease both;animation-delay:var(--delay);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.project-card:before,.project-card:after{position:absolute;content:"";pointer-events:none}.project-card:before{top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(135deg,#4f8cff2e,#20d6bd1f);opacity:0;transition:opacity .22s ease}.project-card:after{top:-20%;right:-70%;bottom:-20%;left:-70%;transform:translate(-55%) rotate(14deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.54),transparent);opacity:0;transition:opacity .22s ease,transform .62s ease}.project-card:hover{transform:translateY(-8px);border-color:#73a7ff61;box-shadow:0 28px 90px #0000005c,0 0 34px #4f8cff1f}.project-card:hover:before{opacity:1}.project-card:hover:after{transform:translate(55%) rotate(14deg);opacity:1}.project-accent{width:fit-content;margin-bottom:22px;border-radius:999px;background:#4f8cff2e;padding:8px 11px;color:#fff;font-size:.76rem;font-weight:900}.project-subtitle{margin:8px 0 12px;color:#73a7ff;font-size:.92rem;font-weight:900}.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:24px}.tag-list span{border-radius:999px;background:#4f8cff24;padding:7px 10px;color:#a9c7ff;font-size:.82rem;font-weight:900}.project-link{margin-top:22px;color:#f5f9ff;font-weight:900}.workflow-section{display:grid;grid-template-columns:.82fr 1.18fr;gap:36px;align-items:start}.workflow-list{display:grid;gap:14px;margin:0;padding:0;counter-reset:step;list-style:none}.workflow-list li{position:relative;border-radius:8px;background:#1e324ed6;padding:20px 20px 20px 68px;color:#edf5ff;font-weight:900;box-shadow:inset 0 0 0 1px #9fbae01f;animation:rise-in .62s ease both;animation-delay:var(--delay);transition:transform .18s ease}.workflow-list li:hover{transform:translate(6px);background:#2a4468f0}.workflow-list li:before{position:absolute;top:16px;left:18px;display:grid;width:36px;height:36px;place-items:center;border-radius:8px;background:linear-gradient(135deg,#4f8cff,#20d6bd);color:#fff;content:counter(step);counter-increment:step;font-size:.9rem;animation:number-pulse 2.8s ease-in-out infinite}.contact-section{display:flex;align-items:center;justify-content:space-between;gap:28px;margin:50px 0 86px;padding:clamp(24px,5vw,44px)}.contact-section p:last-child{max-width:690px}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;width:min(1160px,calc(100% - 40px));margin:0 auto;padding:28px 0 34px;border-top:1px solid rgba(159,186,224,.14);color:#a9b8cc;font-size:.92rem;font-weight:800}.site-footer p{margin:0}.footer-contact{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 18px}.footer-contact a{position:relative;color:#edf5ff;transition:color .18s ease}.footer-contact a:hover{color:#73a7ff}@keyframes rise-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes header-drop{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes float-card{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes float-panel{0%,to{transform:translate(0)}50%{transform:translate(10px,-12px)}}@keyframes aurora-shift{0%{background-position:0% 0%;transform:scale(1)}to{background-position:100% 80%;transform:scale(1.05)}}@keyframes grid-drift{to{background-position:42px 42px}}@keyframes particle-float{0%,to{transform:translateZ(0);opacity:.24}50%{transform:translate3d(34px,-42px,0);opacity:.68}}@keyframes text-shimmer{0%,to{background-position:0% center}50%{background-position:100% center}}@keyframes marquee{to{transform:translate(-50%)}}@keyframes photo-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.01)}}@keyframes glow-pulse{0%,to{opacity:.46;transform:scale(.98)}50%{opacity:.78;transform:scale(1.04)}}@keyframes highlight-wave{0%,to{transform:translate(-18px)}50%{transform:translate(22px)}}@keyframes number-pulse{0%,to{box-shadow:0 0 #2f6bff00}50%{box-shadow:0 0 0 6px #2f6bff1f}}@keyframes transition-pulse{0%,to{opacity:.45;transform:translate(-50%,-50%) scale(.82)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.14)}}@keyframes transition-drift-left{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:translate(0)}}@keyframes transition-drift-right{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:translate(0)}}@keyframes transition-soft-rise{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes transition-soft-sweep{0%{left:24%;opacity:0}35%,65%{opacity:.42}to{left:76%;opacity:0}}@keyframes section-glow-in{0%{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:920px){.hero,.intro-section,.workflow-section{grid-template-columns:1fr}.hero,.hero-visual{min-height:auto}.hero-visual img{width:100%;height:min(560px,110vw)}.project-grid{grid-template-columns:1fr}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.site-header{align-items:flex-start;gap:14px;flex-direction:column}main{width:min(100% - 28px,1160px)}h1{font-size:clamp(3.6rem,18vw,5.5rem)}.highlight-grid,.skill-grid{grid-template-columns:1fr}.floating-card{position:relative;inset:auto;margin-top:12px}.photo-orbit,.photo-glow{display:none}.contact-section{display:grid}.section{padding-right:16px;padding-left:16px}.site-footer{width:min(100% - 28px,1160px);align-items:flex-start;flex-direction:column}.footer-contact{justify-content:flex-start}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
