:root{--color-bg: #fafafa;--color-surface: #ffffff;--color-text: #1a1a1a;--color-text-muted: #5c5c5c;--color-accent: #e04141;--color-accent-hover: #c73636;--color-border: #e8e8e8;--font-sans: "Outfit", "DM Sans", system-ui, sans-serif;--font-body: "DM Sans", system-ui, sans-serif;--max-width: 1100px;--section-padding: clamp(3rem, 8vw, 6rem)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-main{flex:1}a{color:var(--color-accent);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-accent-hover)}h1,h2,h3{font-family:var(--font-sans);font-weight:600}section{padding:var(--section-padding) 1.5rem;max-width:var(--max-width);margin:0 auto}.section-title{font-size:clamp(1.75rem,4vw,2.25rem);margin:0 0 2rem;color:var(--color-text)}.accent{color:var(--color-accent)}.header{position:sticky;top:0;z-index:100;width:100%;background:#fafafae6;-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--color-border)}.header-inner{display:flex;align-items:center;justify-content:flex-start;gap:1rem;padding:.75rem 1.5rem;max-width:var(--max-width);margin:0 auto}.header-brand{display:flex;align-items:center;gap:.65rem;flex-shrink:0;min-width:0}.header-logo{display:flex;align-items:center;gap:.5rem;flex-shrink:0;color:var(--color-text);font-family:var(--font-sans);font-weight:600;font-size:1.1rem}.header-inner .header-right{margin-left:auto;display:flex;align-items:center;gap:1rem}.lang-toggle{font-family:var(--font-sans);font-size:.8rem;font-weight:600;letter-spacing:.04em;padding:.4rem .65rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:color .2s,border-color .2s,background .2s}.lang-toggle:hover{color:var(--color-accent);border-color:var(--color-accent);background:#e041410f}.header-logo:hover{color:var(--color-accent)}.logo-icon{width:36px;height:36px;object-fit:contain;display:block;flex-shrink:0}.menu-btn{display:none;flex-direction:column;gap:5px;padding:8px;background:none;border:none;cursor:pointer}.menu-btn span{width:22px;height:2px;background:var(--color-text);border-radius:1px}.header-nav{display:flex;align-items:center;gap:1.5rem}.nav-link{color:var(--color-text-muted);font-weight:500;font-size:.95rem}.nav-link:hover{color:var(--color-accent)}.nav-link.active{color:var(--color-accent);text-decoration:underline;text-underline-offset:4px}.nav-social{display:flex;gap:.75rem}.social-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--color-text-muted);border-radius:8px;transition:color .2s,background .2s}.social-icon:hover{color:var(--color-accent);background:#e0414114}@media (max-width: 768px){.menu-btn{display:flex}.header-nav{position:fixed;top:0;right:0;bottom:0;width:min(280px,85vw);flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:4rem 1.5rem 1.5rem;gap:1rem;background:var(--color-surface);border-left:1px solid var(--color-border);box-shadow:-4px 0 20px #0000000f;transform:translate(100%);transition:transform .25s ease}.header-nav.open{transform:translate(0)}.nav-social{margin-top:auto}}.hero{position:relative;min-height:70vh;display:flex;align-items:center;padding:var(--section-padding) 1.5rem;max-width:var(--max-width);margin:0 auto;overflow-x:hidden;overflow-y:visible}.hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#e041411f,#e041410a 40%,#fff9);pointer-events:none}.hero-tech-bg{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:0}.hero-tech-line{position:absolute;height:1px;background:linear-gradient(90deg,transparent,rgba(224,65,65,.12),transparent);animation:techLineMove 20s linear infinite}.hero-tech-line-1{top:15%;left:-20%;width:40%;animation-delay:0s}.hero-tech-line-2{top:50%;left:-10%;width:35%;animation-delay:-7s}.hero-tech-line-3{bottom:25%;right:-15%;width:30%;animation-delay:-14s}.hero-tech-char{position:absolute;font-family:var(--font-sans);font-size:clamp(1rem,2vw,1.5rem);font-weight:600;color:#e0414114;animation:techCharFloat 18s ease-in-out infinite}.hero-tech-char-1{top:20%;right:15%;animation-delay:0s}.hero-tech-char-2{top:60%;left:10%;animation-delay:-4s}.hero-tech-char-3{bottom:30%;right:25%;animation-delay:-8s}.hero-tech-char-4{bottom:15%;left:20%;animation-delay:-12s}@keyframes techLineMove{0%{transform:translate(0);opacity:.5}50%{opacity:1}to{transform:translate(100vw);opacity:.5}}@keyframes techCharFloat{0%,to{transform:translate(0) scale(1);opacity:.08}33%{transform:translate(8px,-12px) scale(1.05);opacity:.12}66%{transform:translate(-5px,8px) scale(.98);opacity:.06}}.hero-chat-anchor{position:absolute;right:8%;bottom:12%;z-index:1;pointer-events:none;max-width:min(280px,46vw);display:flex;flex-direction:column;align-items:center;gap:.4rem}.walking-robot--hero{flex-shrink:0;display:flex;justify-content:center}.walking-robot--hero .hero-robot-inner{width:clamp(64px,10vw,102px)}.hero-chat{width:100%;border-radius:12px;overflow:hidden;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:0 4px 24px #0000000f,0 0 0 1px #00000005}.hero-chat-chrome{display:flex;align-items:center;gap:.5rem;padding:.45rem .65rem;background:linear-gradient(180deg,#f7f7f8,#ececf1);border-bottom:1px solid var(--color-border)}.hero-chat-dots{display:flex;gap:4px}.hero-chat-dots span{width:6px;height:6px;border-radius:50%;background:#c4c4c8;opacity:.85}.hero-chat-title{font-size:.7rem;font-weight:600;color:var(--color-text-muted);letter-spacing:.02em}.hero-chat-body{background:#fff;padding:.45rem .5rem .55rem}.hero-chat-scroll{display:flex;flex-direction:column;gap:.4rem;min-height:4.5rem;max-height:min(44vh,300px);overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.hero-chat-row{display:flex;width:100%}.hero-chat-row--user{justify-content:flex-end}.hero-chat-row--assistant{justify-content:flex-start}.hero-chat-bubble{max-width:92%;padding:.35rem .55rem;border-radius:12px;font-size:.68rem;line-height:1.35;color:var(--color-text);white-space:pre-line}.hero-chat-bubble--user{background:#f4f4f5;border:1px solid #e8e8ea}.hero-chat-bubble--assistant{background:#fff;border:1px solid #e8e8ea;box-shadow:0 1px 2px #0000000a}.hero-chat-bubble--streaming{position:relative;padding-right:.35rem}.hero-chat-caret{display:inline-block;width:2px;height:.75em;margin-left:1px;background:var(--color-accent);border-radius:1px;animation:heroChatCaret .85s ease-in-out infinite;vertical-align:-.1em}@keyframes heroChatCaret{0%,45%{opacity:1}50%,to{opacity:.2}}.hero-robot-inner{width:clamp(70px,12vw,100px)}.walking-robot--hero .hero-robot-inner{animation:robotFloat 3s ease-in-out infinite}.walking-robot--contact .hero-robot-inner{animation:robotPhoneBody 3.2s ease-in-out infinite}.walking-robot .hero-robot-svg{width:100%;height:auto;color:var(--color-accent);filter:drop-shadow(0 4px 12px rgba(224,65,65,.25))}.walking-robot--contact .hero-robot-svg{filter:drop-shadow(0 6px 18px rgba(224,65,65,.32))}.walking-robot .hero-robot-svg .robot-phone{fill:#ffffff8c;stroke:currentColor;stroke-width:1.25}.walking-robot .hero-robot-svg .robot-head,.walking-robot .hero-robot-svg .robot-body{fill:currentColor;stroke:currentColor;stroke-width:1.5}.walking-robot .hero-robot-svg .robot-panel{fill:#fff6;stroke:currentColor;stroke-width:1}.walking-robot .hero-robot-svg .robot-eye,.walking-robot .hero-robot-svg .robot-antenna-tip,.walking-robot .hero-robot-svg .robot-foot{fill:currentColor}.walking-robot .hero-robot-svg .robot-antenna,.walking-robot .hero-robot-svg .robot-mouth,.walking-robot .hero-robot-svg .robot-cheek,.walking-robot .hero-robot-svg .robot-arm,.walking-robot .hero-robot-svg .robot-leg{stroke:currentColor;fill:none}.walking-robot--hero .hero-robot-svg .robot-antenna,.walking-robot--hero .hero-robot-svg .robot-antenna-tip{transform-origin:40px 8px;animation:robotAntennaSway 2.5s ease-in-out infinite}.walking-robot--contact .hero-robot-svg .robot-antenna,.walking-robot--contact .hero-robot-svg .robot-antenna-tip{transform-origin:40px 8px;animation:robotAntennaSway 3s ease-in-out infinite}.walking-robot--hero .hero-robot-svg .robot-leg-left{transform-origin:32px 90px;animation:robotLegIdle 3.5s ease-in-out infinite}.walking-robot--hero .hero-robot-svg .robot-leg-right{transform-origin:48px 90px;animation:robotLegIdle 3.5s ease-in-out infinite reverse}.walking-robot--contact .hero-robot-svg .robot-leg-left{transform-origin:32px 90px;animation:robotLegIdle 3.5s ease-in-out infinite}.walking-robot--contact .hero-robot-svg .robot-leg-right{transform-origin:48px 90px;animation:robotLegIdle 3.5s ease-in-out infinite reverse}.walking-robot--hero .hero-robot-svg .robot-arm-left{transform-origin:22px 62px;animation:robotArmIdle 2.8s ease-in-out infinite}.walking-robot--hero .hero-robot-svg .robot-arm-right{transform-origin:58px 62px;animation:robotArmWave 1.15s ease-in-out infinite}.walking-robot--contact .hero-robot-svg .robot-arm-left{transform-origin:22px 62px;animation:robotPhoneArmL 3s ease-in-out infinite}.walking-robot--contact .hero-robot-svg .robot-phone-arm{transform-origin:58px 62px;animation:robotPhoneArmR 2.9s ease-in-out infinite}.walking-robot .hero-robot-svg .robot-eye,.walking-robot .hero-robot-svg .robot-eye-wink{animation:robotEyeBlink 5s ease-in-out infinite}.walking-robot .hero-robot-svg .robot-eye-wink{animation-delay:.06s}@keyframes robotFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes robotAntennaSway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes robotLegIdle{0%,to{transform:rotate(0)}50%{transform:rotate(3deg)}}@keyframes robotArmIdle{0%,to{transform:rotate(4deg)}50%{transform:rotate(-3deg)}}@keyframes robotArmWave{0%,to{transform:rotate(-28deg)}20%{transform:rotate(-48deg)}40%{transform:rotate(-18deg)}60%{transform:rotate(-40deg)}80%{transform:rotate(-24deg)}}@keyframes robotEyeBlink{0%,92%,to{opacity:1}94%,96%{opacity:.2}}@keyframes robotPhoneBody{0%,to{transform:translate(0)}50%{transform:translateY(-4px)}}@keyframes robotPhoneArmL{0%,to{transform:rotate(0)}50%{transform:rotate(2.5deg)}}@keyframes robotPhoneArmR{0%,to{transform:rotate(0)}50%{transform:rotate(-3deg)}}@media (prefers-reduced-motion: reduce){.walking-robot--contact .hero-robot-inner{animation:robotFloat 4s ease-in-out infinite}.walking-robot--contact .hero-robot-svg .robot-antenna,.walking-robot--contact .hero-robot-svg .robot-antenna-tip{animation:robotAntennaSway 3s ease-in-out infinite}.walking-robot--contact .hero-robot-svg .robot-arm-left,.walking-robot--contact .hero-robot-svg .robot-phone-arm{animation:none}.walking-robot--contact .hero-robot-svg .robot-leg-left,.walking-robot--contact .hero-robot-svg .robot-leg-right{animation:robotLegIdle 4s ease-in-out infinite}.walking-robot--contact .hero-robot-svg .robot-leg-right{animation-delay:0}.seated-robot-inner,.seated-robot-svg .robot-antenna,.seated-robot-svg .robot-antenna-tip,.seated-robot-svg .seated-arm-left,.seated-robot-svg .seated-arm-right,.seated-robot-svg .seated-leg-left,.seated-robot-svg .seated-leg-right{animation:none}.seated-robot-svg .seated-pc-code-line{animation:none;opacity:.5}}@media (max-width: 900px){.hero-chat-anchor{right:4%;bottom:4%;max-width:min(240px,54vw)}.hero-chat-scroll{min-height:3.75rem;max-height:min(40vh,260px)}.hero-chat-bubble{font-size:.62rem}}@media (max-width: 520px){.hero-chat-anchor{max-width:min(220px,58vw);right:3%;bottom:2%}}.hero-content{position:relative;z-index:2;width:100%;max-width:640px}.hero-heading-bg{position:absolute;left:-1rem;right:1rem;top:-.5rem;bottom:-.25rem;background:#ffffffd9;border-radius:12px;box-shadow:0 2px 24px #0000000f;z-index:-1}.hero-greeting{margin:0 0 .25rem;font-size:1.1rem;color:var(--color-text-muted)}.hero-title{margin:0 0 1rem;font-size:clamp(2rem,5vw,3rem);line-height:1.15}.hero-title-accent{color:var(--color-accent)}.hero-bio{max-width:520px;margin-top:1rem}.hero-bio p{margin:0 0 1rem;color:var(--color-text-muted)}.hero-stats{display:flex;gap:2rem;margin-top:1.5rem}.stat{display:flex;flex-direction:column;padding:.5rem 0}.stat-value{font-family:var(--font-sans);font-size:2rem;font-weight:700;color:var(--color-text);line-height:1.2}.stat-value.accent{color:var(--color-accent)}.stat-label{font-size:.9rem;color:var(--color-text-muted)}@media (max-width: 900px){.hero{min-height:auto;padding-bottom:2rem}}.about-grid{display:grid;grid-template-columns:340px 1fr;gap:2.5rem;align-items:start}.about-image{border-radius:16px;overflow:hidden;box-shadow:0 12px 40px #00000014}.about-image img{width:100%;height:auto;display:block;object-fit:cover}.about-content p{margin:0 0 1rem;color:var(--color-text-muted)}@media (max-width: 768px){.about-grid{grid-template-columns:1fr}.about-image-wrap{max-width:400px}}.languages-frameworks{padding:clamp(1.2rem,3.5vw,2.25rem) 1.5rem var(--section-padding);max-width:var(--max-width);margin:0 auto}.logo-section{margin-bottom:2.5rem}.logo-section:last-of-type{margin-bottom:0}.logo-section-title{font-family:var(--font-sans);font-size:1.35rem;font-weight:600;color:var(--color-text);margin:0 0 1rem;padding-bottom:.35rem;border-bottom:2px solid var(--color-accent)}.logo-section-title-stack{margin-bottom:1rem}.logo-section-title-stack-robot{display:flex;justify-content:flex-start;margin-bottom:.25rem}.logo-section-title--stacked{margin:0 0 1rem;padding-bottom:.35rem;border-bottom:2px solid var(--color-accent);text-align:left}.seated-robot{flex-shrink:0;color:var(--color-accent)}.seated-robot-inner{width:clamp(96px,14vw,148px);animation:seatedChillBob 4.2s ease-in-out infinite;animation-delay:.12s}.seated-robot-svg{width:100%;height:auto;display:block;color:inherit;filter:drop-shadow(0 3px 10px rgba(224,65,65,.22))}.seated-robot-seat{fill:currentColor;opacity:.14}.seated-robot-stem{fill:currentColor;opacity:.18}.seated-robot-svg .seated-desk-top{fill:currentColor;opacity:.12}.seated-robot-svg .seated-desk-edge{fill:currentColor;opacity:.2}.seated-robot-svg .seated-desk-leg{fill:currentColor;opacity:.16}.seated-robot-svg .robot-head,.seated-robot-svg .robot-body{fill:currentColor;stroke:currentColor;stroke-width:1.5}.seated-robot-svg .robot-panel{fill:#fff6;stroke:currentColor;stroke-width:1}.seated-robot-svg .robot-eye,.seated-robot-svg .robot-antenna-tip,.seated-robot-svg .robot-foot{fill:currentColor}.seated-robot-svg .robot-antenna,.seated-robot-svg .robot-mouth,.seated-robot-svg .robot-cheek,.seated-robot-svg .seated-arm,.seated-robot-svg .seated-leg{stroke:currentColor;fill:none}.seated-robot-svg .seated-pc-screen-outer{fill:#202026f5;stroke:currentColor;stroke-width:1.25}.seated-robot-svg .seated-pc-bezel-inner{fill:#141416}.seated-robot-svg .seated-pc-code-line{stroke:var(--color-accent);stroke-width:2.25;fill:none;opacity:.55;animation:seatedCodeLinePulse 2.2s ease-in-out infinite}.seated-robot-svg .seated-pc-code-line--2{animation-delay:.25s}.seated-robot-svg .seated-pc-code-line--3{animation-delay:.5s}.seated-robot-svg .seated-pc-code-line--4{animation-delay:.75s}.seated-robot-svg .seated-pc-keyboard{fill:#303038fa;stroke:currentColor;stroke-width:1}.seated-robot-svg .seated-pc-key-hint{stroke:currentColor;stroke-width:1.25;opacity:.2}.seated-robot-svg .robot-antenna,.seated-robot-svg .robot-antenna-tip{transform-origin:28px 12px;animation:seatedAntennaLazy 5s ease-in-out infinite}.seated-robot-svg .robot-eye,.seated-robot-svg .robot-eye-wink{animation:robotEyeBlink 5s ease-in-out infinite}.seated-robot-svg .seated-arm-left{transform-origin:75px 71px;animation:seatedTypingArmL .45s ease-in-out infinite}.seated-robot-svg .seated-arm-right{transform-origin:44px 56px;animation:seatedTypingArmR .45s ease-in-out infinite;animation-delay:.12s}.seated-robot-svg .seated-leg-left{transform-origin:42px 78px;animation:seatedLegDangle 5.2s ease-in-out infinite}.seated-robot-svg .seated-leg-right{transform-origin:32px 74px;animation:seatedLegDangle 5.2s ease-in-out infinite reverse;animation-delay:.4s}@keyframes seatedChillBob{0%,to{transform:translateY(0)}50%{transform:translateY(-2.5px)}}@keyframes seatedAntennaLazy{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes seatedTypingArmL{0%,to{transform:rotate(0)}50%{transform:rotate(-6deg)}}@keyframes seatedTypingArmR{0%,to{transform:rotate(0)}50%{transform:rotate(6deg)}}@keyframes seatedCodeLinePulse{0%,to{opacity:.35}50%{opacity:.75}}@keyframes seatedLegDangle{0%,to{transform:rotate(.5deg)}50%{transform:rotate(-2deg)}}@media (max-width: 480px){.seated-robot-inner{width:clamp(78px,24vw,118px)}}.logo-grid{display:flex;flex-wrap:wrap;gap:1rem 1.5rem}.logo-item{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--color-surface);border-radius:12px;border:1px solid var(--color-border);min-width:80px;transition:box-shadow .2s ease}.logo-item:hover{box-shadow:0 6px 20px #00000014}.logo-img{width:40px;height:40px;object-fit:contain}.logo-name{font-size:.8rem;font-weight:500;color:var(--color-text-muted);text-align:center}.runner-game{padding:0 1.5rem;max-width:var(--max-width);margin:-.5rem auto .4rem}.runner-game-track{width:100%;padding:.75rem .85rem .7rem;border-radius:14px;border:1px solid var(--color-border);background:var(--color-surface);box-shadow:0 4px 16px #0000000f;cursor:pointer;text-align:left}.runner-game-score{font-size:.85rem;color:var(--color-text-muted)}.runner-game-meta{margin-bottom:.45rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.runner-game-auto-btn{padding:.28rem .62rem;border:1px solid var(--color-border);border-radius:999px;font-size:.74rem;font-weight:600;color:var(--color-text-muted);background:var(--color-surface);cursor:pointer}.runner-game-auto-btn.is-on{border-color:var(--color-accent);color:var(--color-accent)}.runner-game-world{position:relative;width:100%;height:132px;border-radius:10px;background:linear-gradient(180deg,#fff,#fbfbfb 65%,#f7f7f7);overflow:hidden}.runner-game-ground{position:absolute;left:0;right:0;top:124px;height:2px;background:#1a1a1a59}.runner-game-robot{position:absolute;left:0;top:86px;width:34px;height:38px;color:var(--color-accent);transition:transform 45ms linear}.runner-game-robot svg{width:100%;height:100%;display:block}.runner-game-robot .runner-robot-head,.runner-game-robot .runner-robot-body{fill:currentColor;stroke:currentColor;stroke-width:1.5}.runner-game-obstacle{position:absolute;top:94px;height:30px;border-radius:4px 4px 2px 2px;background:#e041414d;border:1.5px solid var(--color-accent)}.runner-game-hint{margin-top:.45rem;font-size:.8rem;color:var(--color-text-muted)}.my-projects-link{padding:var(--section-padding) 1.5rem;max-width:var(--max-width);margin:0 auto;text-align:center}.my-projects-title{margin:0 0 .45rem;font-family:var(--font-sans);font-size:clamp(1.9rem,4vw,2.35rem);font-weight:700;color:var(--color-text)}.my-projects-subtitle{margin:0 auto 1.5rem;max-width:420px;font-size:.95rem;color:var(--color-text-muted)}.my-projects-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.6rem 1.8rem}.my-projects-card{display:block;text-align:left;color:inherit}.my-projects-card-image{border-radius:14px;overflow:hidden;border:1px solid var(--color-border);background:var(--color-border);margin-bottom:.8rem}.my-projects-card-image img{width:100%;height:230px;object-fit:cover;display:block}.my-projects-card-meta{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem}.my-projects-card-title{margin:0 0 .3rem;font-family:var(--font-sans);font-size:1.08rem;font-weight:700;color:var(--color-text)}.my-projects-card-desc{margin:0;font-size:.92rem;line-height:1.45;color:var(--color-text-muted)}.my-projects-card-arrow{margin-top:.1rem;font-size:1.3rem;line-height:1;color:var(--color-accent);transition:transform .2s ease}.my-projects-card:hover .my-projects-card-arrow{transform:translate(4px)}@media (max-width: 900px){.my-projects-cards{grid-template-columns:1fr;gap:1.25rem}.my-projects-card-image img{height:210px}}.my-projects-cta{display:inline-flex;align-items:center;gap:.5rem;padding:.9rem 1.75rem;background:var(--color-accent);color:#fff!important;font-family:var(--font-sans);font-weight:600;font-size:1.1rem;border-radius:12px;box-shadow:0 4px 20px #e0414159;transition:background .2s,box-shadow .2s,transform .2s}.my-projects-cta:hover{background:var(--color-accent-hover);box-shadow:0 6px 28px #e0414166;transform:translateY(-2px);color:#fff!important}.my-projects-arrow{font-size:1.2rem;transition:transform .2s ease}.my-projects-cta:hover .my-projects-arrow{transform:translate(4px)}.timeline{position:relative;padding-left:1.5rem;border-left:2px solid var(--color-border)}.timeline-item{position:relative;padding-bottom:2rem}.timeline-item:last-child{padding-bottom:0}.timeline-marker{position:absolute;left:-1.5rem;top:.25rem;transform:translate(-50%);width:12px;height:12px;border-radius:50%;background:var(--color-accent);border:3px solid var(--color-bg);box-shadow:0 0 0 2px var(--color-accent)}.timeline-content{margin-left:.5rem}.timeline-header{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:.25rem}.timeline-logo{width:40px;height:40px;object-fit:contain;border-radius:8px;flex-shrink:0;background:var(--color-bg)}.timeline-header-text{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem}.timeline-role{margin:0;font-size:1.1rem;font-weight:600}.timeline-company{font-size:.95rem;font-weight:600}.timeline-meta{margin:0 0 .5rem;font-size:.9rem;color:var(--color-text-muted)}.timeline-bullets{margin:0;padding-left:1.25rem;color:var(--color-text-muted);font-size:.95rem;line-height:1.6}.timeline-bullets li{margin-bottom:.35rem}.resume-projects-list{display:flex;flex-direction:column;gap:1.25rem}.resume-project-item{padding:1.25rem 1.5rem;background:var(--color-surface);border-radius:12px;border:1px solid var(--color-border);transition:box-shadow .2s ease}.resume-project-item:hover{box-shadow:0 6px 24px #0000000f}.resume-project-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem;margin-bottom:.25rem}.resume-project-title{margin:0;font-size:1.1rem;font-weight:600}.resume-project-category{font-size:.85rem;color:var(--color-text-muted);font-weight:500}.resume-project-meta{margin:0 0 .5rem;font-size:.9rem;color:var(--color-text-muted)}.resume-project-description{margin:0 0 .5rem;font-size:.95rem;color:var(--color-text-muted);line-height:1.5}.resume-project-stack{margin:0 0 .5rem;font-size:.85rem;color:var(--color-text-muted)}.resume-project-link{font-size:.9rem;font-weight:600}.resume-projects-more{margin:1.5rem 0 0;text-align:center}.resume-projects-more-link{font-weight:600;font-size:1rem}.education-list{display:flex;flex-direction:column;gap:1rem}.education-card{padding:1.25rem 1.5rem;background:var(--color-surface);border-radius:12px;border:1px solid var(--color-border);transition:box-shadow .2s ease}.education-card:hover{box-shadow:0 8px 24px #0000000f}.education-header{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:.25rem}.education-logo{width:44px;height:44px;object-fit:contain;border-radius:8px;flex-shrink:0;background:var(--color-bg)}.education-header-text{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;flex:1;min-width:0}.education-name{margin:0;font-size:1.1rem;font-weight:600}.education-date{font-size:.9rem;color:var(--color-text-muted)}.education-location{margin:0 0 .35rem;font-size:.9rem;color:var(--color-text-muted)}.education-degree{margin:0;font-size:.95rem;color:var(--color-text-muted)}.skills-grid{display:flex;flex-direction:column;gap:1.5rem}.skills-group-title{margin:0 0 .75rem;font-size:1rem;font-weight:600;color:var(--color-text)}.skills-tags{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.skill-tag{padding:.4rem .85rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;font-size:.9rem;color:var(--color-text);cursor:default}.projects-categories-nav{margin:0 0 1.8rem}.projects-categories-nav-title{margin:0 0 .6rem;font-family:var(--font-sans);font-size:1rem;font-weight:600;color:var(--color-text)}.projects-categories-links{display:flex;flex-wrap:wrap;gap:.55rem}.projects-category-link{display:inline-flex;align-items:center;padding:.45rem .85rem;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text);font-size:.86rem;font-weight:600;transition:border-color .2s ease,color .2s ease,transform .2s ease}.projects-category-link:hover{border-color:var(--color-accent);color:var(--color-accent);transform:translateY(-1px)}.projects-category{margin-bottom:3rem}.projects-category:last-child{margin-bottom:0}.projects-category-title{font-family:var(--font-sans);font-size:1.35rem;font-weight:600;color:var(--color-text);margin:0 0 1.25rem;padding-bottom:.5rem;border-bottom:2px solid var(--color-accent)}.projects-list{display:flex;flex-direction:column;gap:2rem}.project-row{display:grid;grid-template-columns:42% 1fr;gap:0;align-items:stretch;background:var(--color-surface);border-radius:16px;overflow:hidden;border:1px solid var(--color-border);box-shadow:0 4px 20px #0000000d;transition:box-shadow .25s ease}.project-row:hover{box-shadow:0 12px 40px #00000014}.project-row--reverse .project-row-image{order:2}.project-row--reverse .project-row-body{order:1}.project-row-image{min-height:220px;overflow:hidden;background:var(--color-border)}.project-row-image img{width:100%;height:100%;min-height:220px;object-fit:cover;display:block}.project-row-body{padding:1.5rem 1.75rem;display:flex;flex-direction:column;justify-content:center}.project-row-title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600}.project-row-date{margin:0 0 .5rem;font-size:.9rem;color:var(--color-text-muted)}.project-row-description{margin:0 0 .75rem;font-size:.95rem;color:var(--color-text-muted);line-height:1.55}.project-row-stack{margin:0 0 .75rem;font-size:.85rem;color:var(--color-text-muted)}.project-row-link{font-weight:600;font-size:.95rem;align-self:flex-start}@media (max-width: 768px){.project-row{grid-template-columns:1fr}.project-row--reverse .project-row-image,.project-row--reverse .project-row-body{order:unset}.project-row-image,.project-row-image img{min-height:200px}}.contact-layout{display:grid;grid-template-columns:1fr auto;gap:2rem 2.5rem;align-items:end}.contact-main{min-width:0}.contact-robot-stack{flex-shrink:0;align-self:end;display:flex;flex-direction:column;align-items:center;gap:.45rem;max-width:min(220px,100%)}.contact-robot-quote{margin:0;padding:.5rem .75rem;font-family:var(--font-sans);font-size:.8rem;font-weight:600;line-height:1.3;text-align:center;letter-spacing:.01em;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;box-shadow:0 2px 10px #0000000f;position:relative}.contact-robot-quote:after{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;margin-left:-5px;background:var(--color-surface);border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);transform:rotate(45deg);box-shadow:2px 2px 4px #0000000a}.walking-robot--contact{flex-shrink:0;display:flex;justify-content:center}.walking-robot--contact .hero-robot-inner{width:clamp(100px,17vw,168px)}.contact-intro{max-width:480px;margin:0 0 1.5rem;color:var(--color-text-muted)}.contact-links{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:0}.contact-link{display:inline-flex;align-items:center;padding:.6rem 1.2rem;background:var(--color-accent);color:#fff!important;border-radius:10px;font-weight:600;font-size:.95rem;transition:background .2s,transform .2s}.contact-link:hover{background:var(--color-accent-hover);color:#fff!important}@media (max-width: 700px){.contact-layout{grid-template-columns:1fr;justify-items:center;text-align:center}.contact-intro{margin-left:auto;margin-right:auto}.contact-links{justify-content:center}.contact-robot-stack{margin-top:1.25rem}}.footer{padding-top:2rem;border-top:1px solid var(--color-border);text-align:center;font-size:.9rem;color:var(--color-text-muted)}.footer p{margin:0}.password-gate{min-height:60vh;display:flex;align-items:center;justify-content:center;padding:2rem 1.5rem}.password-gate-card{width:100%;max-width:360px;padding:2rem;background:var(--color-surface);border-radius:16px;border:1px solid var(--color-border);box-shadow:0 10px 40px #00000014}.password-gate-title{margin:0 0 .5rem;font-family:var(--font-sans);font-size:1.5rem;font-weight:600;color:var(--color-text)}.password-gate-text{margin:0 0 1.5rem;font-size:.95rem;color:var(--color-text-muted)}.password-gate-form{display:flex;flex-direction:column;gap:.75rem}.password-gate-input{width:100%;padding:.75rem 1rem;font-size:1rem;font-family:var(--font-body);border:1px solid var(--color-border);border-radius:10px;background:var(--color-bg);color:var(--color-text);transition:border-color .2s}.password-gate-input:focus{outline:none;border-color:var(--color-accent)}.password-gate-input::placeholder{color:var(--color-text-muted)}.password-gate-button{padding:.75rem 1.25rem;font-size:1rem;font-weight:600;font-family:var(--font-sans);color:#fff;background:var(--color-accent);border:none;border-radius:10px;cursor:pointer;transition:background .2s,transform .2s}.password-gate-button:hover{background:var(--color-accent-hover);transform:translateY(-1px)}.password-gate-error{margin:1rem 0 0;font-size:.9rem;color:var(--color-accent)}.site-footer{margin-top:auto;padding:2.5rem 1.5rem;background:var(--color-accent);color:#fff}.site-footer-inner{max-width:var(--max-width);margin:0 auto;display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:start}.site-footer-brand{max-width:360px}.site-footer-logo{display:inline-block;font-family:var(--font-sans);font-weight:700;font-size:1.25rem;color:#fff;text-decoration:none;margin-bottom:.5rem}.site-footer-logo:hover{color:#ffffffe6;text-decoration:underline}.site-footer-tagline{margin:0 0 .5rem;font-size:.95rem;line-height:1.5;color:#fffffff2}.site-footer-credit{margin:0;font-size:.9rem;color:#ffffffd9}.site-footer-visitors{margin:1.2rem 0 0;text-align:center;font-size:.86rem;font-weight:600;color:#fffffff5}.site-footer-contact{text-align:right}.site-footer-heading{margin:0 0 .75rem;font-family:var(--font-sans);font-size:1rem;font-weight:600;color:#fff}.site-footer-links{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-end}.site-footer-link{display:inline-block;padding:.4rem .9rem;background:#fff3;color:#fff;font-weight:600;font-size:.9rem;border-radius:8px;transition:background .2s,color .2s}.site-footer-link:hover{background:#ffffff59;color:#fff}@media (max-width: 640px){.site-footer-inner{grid-template-columns:1fr;text-align:center}.site-footer-contact{text-align:center}.site-footer-links{justify-content:center}}.music-toggle{position:fixed;bottom:1.5rem;right:1.5rem;z-index:50;width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:50%;box-shadow:0 4px 16px #0000001a;cursor:pointer;transition:transform .2s,box-shadow .2s}.music-toggle:hover{transform:scale(1.08);box-shadow:0 6px 20px #e0414133}.music-player-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:flex-end;justify-content:flex-end;padding:1rem 1.5rem 5rem;pointer-events:none}.music-player{pointer-events:auto;width:100%;max-width:320px;padding:1rem 1.25rem;background:var(--color-surface);border-radius:16px;box-shadow:0 10px 40px #00000026;border:1px solid var(--color-border)}.music-player-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.music-label{font-weight:600;font-size:.95rem}.music-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;line-height:1;background:none;border:none;color:var(--color-text-muted);cursor:pointer;border-radius:8px;transition:background .2s,color .2s}.music-close:hover{background:var(--color-border);color:var(--color-text)}.music-embed-wrap{width:100%;border-radius:12px;overflow:hidden;border:1px solid var(--color-border);margin-bottom:.75rem;background:#000}.music-embed{display:block;width:100%;height:180px;border:0}.music-hint{margin:.5rem 0 0;font-size:.75rem;color:var(--color-text-muted)}.music-play-pause{width:100%;padding:.5rem;font-size:1.2rem;background:var(--color-accent);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:background .2s,transform .2s}.music-play-pause:hover{background:var(--color-accent-hover);transform:scale(1.02)}
