body{margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--bg-primary: #0b151b;--bg-secondary: #13232c;--bg-card: #1d3440;--bg-card-hover: #254350;--text-primary: #dce3e8;--text-secondary: #b4c6d1;--text-muted: #8499a6;--accent: #8fafbc;--accent-hover: #bfd2dc;--accent-glow: rgba(143, 175, 188, .18);--accent-dark: #6f8f9f;--accent-warm: #b07d55;--accent-warm-soft: #8c6547;--earth: #9db4c0;--earth-light: #ecf1f4;--border: #2e4a58;--card-border: #3b5b6a;--card-border-hover: #567786;--success: #8fafbc;--warning: #ee9b00;--danger: #d62828;--radius: 16px;--max-width: 1200px;--font-body: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: "Spectral", Georgia, "Times New Roman", serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:linear-gradient(180deg,var(--bg-primary) 0%,#101d25 50%,var(--bg-secondary) 100%);background-attachment:fixed;color:var(--text-primary);line-height:1.6;overflow-x:hidden}.skip-link{position:absolute;left:-9999px;top:8px;background:var(--accent);color:var(--bg-primary);padding:10px 14px;border-radius:8px;font-weight:700;z-index:200}.skip-link:focus-visible{left:12px}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1}a{color:var(--accent);text-decoration:none;transition:color .2s}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.navbar{position:sticky;top:0;z-index:100;background:#0b151be6;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:2px solid var(--border);box-shadow:0 4px 24px #0000004d}.nav-container{max-width:var(--max-width);margin:0 auto;padding:0 24px;height:64px;display:flex;align-items:center;justify-content:space-between}.nav-logo{display:inline-flex;align-items:center;gap:10px;font-size:1.35rem;font-weight:600;font-family:var(--font-display);background:linear-gradient(135deg,var(--accent-hover),var(--earth));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:.01em;transition:all .3s ease}.nav-logo-icon{width:24px;height:24px;flex-shrink:0;filter:drop-shadow(0 0 8px rgba(143,175,188,.35))}.nav-logo:hover{filter:brightness(1.2);transform:translateY(-1px)}.nav-links{display:flex;align-items:center;gap:8px}.nav-link{padding:8px 16px;border-radius:8px;font-size:.9rem;font-weight:500;color:var(--text-secondary);transition:all .2s}.nav-link:hover,.nav-link.active{color:var(--text-primary);background:var(--accent-glow)}.nav-toggle{display:none;background:none;border:none;color:var(--text-primary);font-size:1.4rem;cursor:pointer;padding:8px}.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;border:none;text-decoration:none}.btn-primary{background:linear-gradient(135deg,var(--accent-dark),var(--accent));color:var(--bg-primary);font-weight:700;box-shadow:0 2px 8px var(--accent-glow)}.btn-primary:hover{background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:var(--bg-primary);transform:translateY(-2px);box-shadow:0 6px 24px #8fafbc59}.btn-outline{background:transparent;color:var(--accent);border:2px solid var(--accent)}.btn-outline:hover{background:var(--accent-glow);color:var(--accent-hover);transform:translateY(-2px)}.hero{display:flex;align-items:flex-start;justify-content:center;padding:60px 24px 36px}.hero-content{max-width:980px;width:100%;margin:0 auto}.hero-layout{--hero-block-height: 400px;display:grid;grid-template-columns:minmax(0,350px) minmax(240px,320px);justify-content:center;gap:32px;align-items:stretch}.hero-copy{text-align:left;max-width:500px;min-height:var(--hero-block-height);display:flex;flex-direction:column;justify-content:center}.hero-greeting{font-size:1.1rem;color:var(--accent);font-weight:500;margin-bottom:8px}.hero-name{font-size:clamp(2.5rem,8vw,5rem);font-weight:800;font-family:var(--font-display);letter-spacing:.01em;line-height:1.1;margin-bottom:12px;background:linear-gradient(135deg,var(--earth-light) 0%,var(--accent-hover) 50%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-title{font-size:clamp(1.2rem,3vw,1.8rem);color:var(--text-secondary);font-weight:400;margin-bottom:16px}.hero-tagline{font-size:1.1rem;color:var(--text-muted);max-width:640px;margin:0 0 20px}.hero-cta{display:flex;gap:16px;justify-content:flex-start;flex-wrap:wrap;margin-bottom:16px}.hero-social{display:flex;flex-wrap:wrap;gap:20px;justify-content:flex-start}.hero-social a{font-size:1.4rem;color:var(--text-muted);transition:all .2s}.hero-social a:hover{color:var(--accent);transform:translateY(-3px)}.hero-portrait{justify-self:start;align-self:stretch;display:flex}.hero-portrait-frame{position:relative;width:min(320px,84vw);height:var(--hero-block-height);border-radius:24px;padding:10px;background:linear-gradient(160deg,#bfd2dc38,#2e4a5873),linear-gradient(180deg,#0b151bd9,#13232cf2);border:1px solid var(--card-border);box-shadow:0 16px 40px #00000059,0 0 0 1px #bfd2dc29 inset}.hero-portrait-frame:after{content:"";position:absolute;inset:10px;pointer-events:none;border-radius:18px;background:linear-gradient(12deg,#152a3657,#8fafbc1a)}.hero-portrait-image{display:block;width:100%;height:100%;object-fit:cover;object-position:54% 18%;border-radius:18px;filter:saturate(1.08) contrast(1.03) brightness(1.02) sepia(.06)}.section{padding:24px;max-width:var(--max-width);margin:0 auto}.section-title{font-size:2rem;font-weight:800;font-family:var(--font-display);letter-spacing:.01em;margin-bottom:16px;text-align:center;position:relative}.section-title:after{content:"";display:block;width:80px;height:3px;background:linear-gradient(90deg,var(--accent-dark) 0%,var(--accent) 50%,var(--accent-hover) 100%);margin:12px auto 0;border-radius:8px;box-shadow:0 1px 5px #8fafbc40}.section-cta{text-align:center;margin-top:16px}.page{max-width:var(--max-width);margin:0 auto;padding:60px 24px 80px}.page-title{font-size:2.5rem;font-weight:800;font-family:var(--font-display);letter-spacing:.01em;margin-bottom:12px}.page-subtitle{color:var(--text-muted);font-size:1.1rem;margin-bottom:40px}.about-content{max-width:700px;margin:0 auto;text-align:center;color:var(--text-secondary);font-size:1.1rem;line-height:1.8}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:30px}.skills-preview .skills-grid{align-items:stretch;justify-items:stretch}.skill-category{background:var(--bg-card);padding:28px;border-radius:var(--radius);border:1px solid var(--card-border);transition:all .3s ease}.skills-preview .skill-category{width:100%;min-width:0;max-width:100%;min-height:240px;display:flex;flex-direction:column}.skill-category:hover{border-color:var(--card-border-hover);box-shadow:0 4px 16px var(--accent-glow);transform:translateY(-2px)}.skill-category h3{font-size:1.1rem;font-family:var(--font-display);color:var(--accent);margin-bottom:20px;text-transform:uppercase;letter-spacing:1px;font-weight:600}.skill-tags{display:flex;flex-wrap:wrap;column-gap:6px;row-gap:8px}.skill-tag{display:inline-flex;padding:6px 12px;background:linear-gradient(135deg,#8fafbc1f,#8fafbc33);color:var(--accent-hover);border-radius:20px;font-size:.85rem;font-weight:500;border:1px solid rgba(143,175,188,.3);transition:all .2s;max-width:100%;white-space:normal;overflow-wrap:anywhere}.skill-tag:hover{border-color:var(--accent);background:linear-gradient(135deg,#8fafbc3d,#8fafbc52);transform:translateY(-2px);box-shadow:0 4px 12px var(--accent-glow)}.certification-pill{align-items:center;gap:6px}.certification-pill svg{font-size:.9rem}.certifications-card{width:fit-content;max-width:min(100%,980px);margin:0 auto;padding:22px 24px}.certifications-card .skill-tags{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px}.certifications-card .skill-tag{width:fit-content}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:30px}.filter-btn{padding:6px 16px;border-radius:20px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:.85rem;cursor:pointer;transition:all .2s}.filter-btn:hover,.filter-btn.active{background:linear-gradient(135deg,var(--accent-dark),var(--accent));color:var(--bg-primary);border-color:var(--accent);box-shadow:0 2px 8px var(--accent-glow);transform:translateY(-1px)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:24px}.project-card{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--card-border);overflow:hidden;transition:all .3s}.project-card.clickable{cursor:pointer}.project-card.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project-card:hover{border-color:var(--card-border-hover);transform:translateY(-4px);box-shadow:0 12px 40px #8fafbc40}.project-card.featured{border-color:var(--card-border-hover);background:linear-gradient(135deg,var(--bg-card) 0%,rgba(143,175,188,.08) 100%)}.project-card-content{padding:28px;position:relative}.project-card h3{font-size:1.3rem;font-family:var(--font-display);margin-bottom:12px}.project-card p{color:var(--text-secondary);font-size:.95rem;margin-bottom:16px;line-height:1.6}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:0}.tag{padding:4px 10px;background:var(--accent-glow);color:var(--accent-hover);border-radius:8px;font-size:.8rem;font-weight:500;border:1px solid rgba(143,175,188,.24);transition:all .2s ease}.tag:hover{background:#8fafbc42;border-color:var(--accent)}.project-links{display:flex;gap:16px;margin-top:16px}.project-links:empty{display:none}.project-links a{display:flex;align-items:center;gap:6px;font-size:.9rem;font-weight:500}.experience-tree-stage{position:relative}.experience-tree-stage .timeline{position:relative;z-index:1}.timeline{position:relative;max-width:800px;margin:0 auto;padding-top:172px}.timeline:before{content:"";position:absolute;top:110px;left:50%;transform:translate(-50%);width:4px;height:calc(100% - 110px);background:linear-gradient(180deg,#8c6547b8,#b07d55b3,#8c6547b8);box-shadow:inset -1px 0 2px #0000004d,inset 1px 0 2px #b07d5533;border-radius:2px}.timeline:after{content:"";position:absolute;top:-114px;left:50%;transform:translate(-50%);width:218px;height:224px;background:linear-gradient(180deg,#203b4aeb,#0f212bf5);clip-path:polygon(50% 0%,64% 22%,58% 22%,74% 44%,65% 44%,84% 66%,72% 66%,96% 88%,62% 88%,50% 100%,38% 88%,4% 88%,28% 66%,16% 66%,35% 44%,26% 44%,42% 22%,36% 22%);filter:drop-shadow(0 4px 10px rgba(0,0,0,.2))}.timeline-item{position:relative;margin-bottom:40px;width:100%}.timeline-content{position:relative;background:var(--bg-card);padding:24px;border-radius:var(--radius);border:1px solid rgba(176,125,85,.54);width:45%;transition:all .3s}.timeline-content:hover{border-color:var(--accent-warm)}@keyframes leaf-breeze-sway{0%{transform:rotate(-30deg)}25%{transform:rotate(-24deg) translateY(-.5px)}50%{transform:rotate(-35deg) translateY(.5px)}75%{transform:rotate(-26deg) translateY(-.5px)}to{transform:rotate(-30deg)}}@keyframes branch-breeze-left{0%{transform:rotate(0) translate(0)}25%{transform:rotate(.7deg) translate(-.5px)}50%{transform:rotate(-1.1deg) translate(.6px)}75%{transform:rotate(.6deg) translate(-.4px)}to{transform:rotate(0) translate(0)}}@keyframes branch-breeze-right{0%{transform:rotate(0) translate(0)}25%{transform:rotate(-.7deg) translate(.5px)}50%{transform:rotate(1.1deg) translate(-.6px)}75%{transform:rotate(-.6deg) translate(.4px)}to{transform:rotate(0) translate(0)}}@keyframes twig-breeze-left{0%{transform:rotate(20deg)}30%{transform:rotate(24deg)}60%{transform:rotate(16deg)}to{transform:rotate(20deg)}}@keyframes twig-breeze-right{0%{transform:rotate(-20deg)}30%{transform:rotate(-24deg)}60%{transform:rotate(-16deg)}to{transform:rotate(-20deg)}}@keyframes wind-gust-sweep{0%{transform:translate(42px) translateY(0) scaleX(.92);opacity:0}20%{opacity:.32}50%{transform:translate(0) translateY(-2px) scaleX(1);opacity:.4}85%{opacity:.16}to{transform:translate(-40px) translateY(1px) scaleX(1.06);opacity:0}}@keyframes tree-sway{0%{transform:rotate(0) translate(0)}50%{transform:rotate(-.25deg) translate(-.5px)}to{transform:rotate(0) translate(0)}}.experience-wind{position:absolute;inset:0;width:min(800px,100%);margin:0 auto;height:100%;pointer-events:none;z-index:2}.experience-wind .wind-gust{position:absolute;left:0;width:100%;height:2px;border-radius:999px;background:linear-gradient(90deg,#bfd2dc00,#bfd2dcd9,#bfd2dc00);box-shadow:0 0 8px #bfd2dc33,0 0 18px #8fafbc24;opacity:0}.experience-wind .wind-gust:after{content:"";position:absolute;top:-5px;left:6%;width:26%;height:12px;border-top:2px solid rgba(191,210,220,.55);border-radius:50%;transform:rotate(8deg)}.experience-wind .wind-gust-1{top:8%}.experience-wind .wind-gust-2{top:28%}.experience-wind .wind-gust-3{top:48%}.experience-wind .wind-gust-4{top:68%}.experience-wind .wind-gust-5{top:88%}.experience-page.experience-breeze-active .experience-wind .wind-gust{animation:wind-gust-sweep 1.3s ease-in-out 3}.experience-page.experience-breeze-active .experience-wind .wind-gust-2{animation-delay:.2s}.experience-page.experience-breeze-active .experience-wind .wind-gust-3{animation-delay:.4s}.experience-page.experience-breeze-active .experience-tree-stage{animation:tree-sway 2.7s ease-in-out 1;transform-origin:50% 100%}.timeline-item.left .timeline-content{margin-left:0}.experience-page.experience-breeze-active .timeline-item.left .timeline-content,.experience-page.experience-breeze-active .timeline-item.right .timeline-content{animation:none}.timeline-item.left .timeline-content:before,.timeline-item.right .timeline-content:before{content:"";position:absolute;top:auto;bottom:0;width:42px;height:3px;border-radius:2px;background:linear-gradient(90deg,#8c6547b8,#b07d55b3 60%,#8c6547b8);box-shadow:0 1px 2px #00000059,inset 0 1px #b07d552e}.timeline-item.left .timeline-content:before{right:-42px;transform:rotate(20deg);transform-origin:left bottom}.timeline-item.right .timeline-content:before{left:-42px;transform:rotate(-20deg);transform-origin:right bottom}.experience-page.experience-breeze-active .timeline-item.left .timeline-content:before,.experience-page.experience-breeze-active .timeline-item.right .timeline-content:before{animation:none}.experience-page.experience-breeze-active .timeline-item.left .timeline-content:before{animation:none}.experience-page.experience-breeze-active .timeline-item.right .timeline-content:before{animation:none}.timeline-item.right .timeline-content{margin-left:auto}.timeline-period{font-size:.85rem;color:var(--accent);font-weight:600}.timeline-content h3{font-size:1.2rem;font-family:var(--font-display);margin:8px 0 4px}.timeline-content h4{color:var(--text-muted);font-weight:400;margin-bottom:12px}.timeline-content p{color:var(--text-secondary);font-size:.95rem;margin-bottom:12px}.timeline-highlights{list-style:none;padding:0}.timeline-highlights li{position:relative;padding-left:22px;color:var(--text-secondary);font-size:.9rem;margin-bottom:6px}.timeline-highlights li:before{content:"";position:absolute;left:0;top:.38em;width:8px;height:12px;border-radius:90% 20% 80% 15%;background:linear-gradient(155deg,var(--accent-hover) 0%,var(--accent-dark) 72%);border:1px solid rgba(143,175,188,.42);transform:rotate(-30deg);transform-origin:45% 92%}.experience-page.experience-breeze-active .timeline-highlights li:before{animation:leaf-breeze-sway 1.7s ease-in-out 2}.experience-page.experience-breeze-active .timeline-highlights li:nth-child(2n):before{animation-delay:.08s}.experience-page.experience-breeze-active .timeline-highlights li:nth-child(3n):before{animation-delay:.16s}.timeline-highlights li:hover:before{animation:leaf-breeze-sway 1.9s ease-in-out infinite}.timeline-highlights li:nth-child(2n):hover:before{animation-delay:.12s}.timeline-highlights li:nth-child(3n):hover:before{animation-delay:.24s}@media(prefers-reduced-motion:reduce){.timeline-highlights li:hover:before{animation:none}.experience-page.experience-breeze-active .experience-wind .wind-gust{animation:none}}.experience-root-transition{position:relative;margin:-6px auto 12px;width:min(760px,100%);height:84px;background:transparent;border-radius:0 0 18px 18px}.experience-root-transition .root-line{position:absolute;top:10px;width:3px;border-radius:99px;background:linear-gradient(180deg,#b07d55b3,#8c6547b8);box-shadow:inset -1px 0 2px #00000040,inset 1px 0 2px #b07d552e}.experience-root-transition .root-line-left{left:40%;height:70px;transform:rotate(22deg);transform-origin:top center}.experience-root-transition .root-line-center{left:calc(50% - 1px);height:80px}.experience-root-transition .root-line-right{left:60%;height:72px;transform:rotate(-22deg);transform-origin:top center}.experience-roots{padding-top:8px}.experience-roots .section-title{margin-bottom:14px}.roots-subtitle{text-align:center;color:var(--text-muted);max-width:760px;margin:0 auto 28px}.experience-roots .skills-grid{align-items:start;justify-items:center}.experience-roots .skill-category{width:fit-content;min-width:0;max-width:100%}.blog-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:24px}.blog-card{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--card-border);transition:all .3s}.blog-card:hover{border-color:var(--card-border-hover);transform:translateY(-4px)}.blog-card-content{padding:28px}.blog-meta{margin-bottom:12px}.blog-date{display:flex;align-items:center;gap:6px;color:var(--text-muted);font-size:.85rem}.blog-card h3{font-size:1.3rem;font-family:var(--font-display);margin-bottom:12px}.blog-card p{color:var(--text-secondary);line-height:1.6;margin-bottom:16px}.blog-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}.blog-link{display:inline-flex;align-items:center;gap:6px;font-weight:500}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.contact-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:40px;align-items:start}.contact-info{display:flex;flex-direction:column;gap:24px}.contact-item{display:flex;gap:16px;align-items:flex-start}.contact-item>div{min-width:0}.contact-item svg{font-size:1.3rem;color:var(--accent);margin-top:4px;flex-shrink:0}.contact-item h4{font-size:.9rem;margin-bottom:4px}.contact-item p,.contact-item a{color:var(--text-secondary);font-size:.9rem;overflow-wrap:anywhere}.contact-form{display:flex;flex-direction:column;gap:20px}.form-group label{display:block;margin-bottom:6px;font-size:.9rem;font-weight:500;color:var(--text-secondary)}.form-group input,.form-group textarea{width:100%;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:1rem;font-family:inherit;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-muted)}.form-success{text-align:center;padding:40px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--card-border)}.form-success h3{color:var(--success);margin-bottom:12px}.form-success p{color:var(--text-secondary);margin-bottom:20px}.form-error{color:#ff8e8e;font-size:.9rem}.contact-form button:disabled{opacity:.75;cursor:not-allowed}.footer{border-top:1px solid var(--border);padding:30px 24px;margin-top:auto}.footer-container{max-width:var(--max-width);margin:0 auto;text-align:center}.footer-links{display:flex;justify-content:center;gap:20px;margin-bottom:16px}.footer-links a{font-size:1.2rem;color:var(--text-muted);transition:all .2s}.footer-links a:hover{color:var(--accent);transform:translateY(-2px)}.footer p{color:var(--text-muted);font-size:.85rem}@media(max-width:768px){.navbar{-webkit-backdrop-filter:none;backdrop-filter:none}.nav-container{position:relative}.nav-links{display:none;position:absolute;top:64px;left:0;right:0;height:calc(100dvh - 64px);background:var(--bg-primary);flex-direction:column;align-items:stretch;padding:18px 16px 24px;gap:10px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;z-index:200}.nav-links.active{display:flex}.nav-link{display:block;width:100%;padding:12px 14px}.nav-toggle{display:block}.hero-name{font-size:2.5rem}.hero{padding:60px 24px}.hero-layout{grid-template-columns:1fr;gap:20px;justify-items:center}.hero-copy{text-align:center;min-height:0;display:block}.hero-tagline{margin:0 auto 20px}.hero-portrait{order:-1;display:block;justify-self:center;width:100%;text-align:center}.hero-portrait-frame{width:min(260px,76vw);height:auto;aspect-ratio:4 / 5;margin:0 auto}.hero-cta{flex-direction:column;align-items:center;justify-content:center}.hero-social{justify-content:center}.projects-grid,.blog-grid,.skills-grid,.contact-grid{grid-template-columns:1fr}.timeline:before{top:82px;left:20px;width:3px;height:calc(100% - 82px)}.timeline:after{top:-48px;left:20px;width:120px;height:130px}.timeline{padding-top:100px}.timeline-content{width:calc(100% - 50px);margin-left:50px!important}.timeline-item.left .timeline-content:before,.timeline-item.right .timeline-content:before{inset:auto auto 0 -32px;width:32px;transform:rotate(-16deg);transform-origin:right bottom}.experience-root-transition{width:100%;height:72px;margin:0 auto 8px}.experience-root-transition .root-line-left{left:28%;height:60px;transform:rotate(28deg)}.experience-root-transition .root-line-center{height:66px}.experience-root-transition .root-line-right{left:72%;height:60px;transform:rotate(-28deg)}.section{padding:60px 24px}}@media(max-width:480px){.page{padding:44px 16px 56px}.section{padding:44px 16px}.nav-container{padding:0 16px}.hero{padding:44px 16px 24px}.btn{width:100%;justify-content:center}.hero-cta{width:100%}.hero-cta .btn{max-width:320px}.timeline{padding-top:84px}.timeline:before{top:68px;height:calc(100% - 68px)}.timeline:after{top:-37px;width:98px;height:105px}.timeline-content{width:calc(100% - 44px);margin-left:44px!important;padding:18px}.timeline-item.left .timeline-content:before,.timeline-item.right .timeline-content:before{inset:auto auto 0 -25px;width:25px;transform:rotate(-14deg);transform-origin:right bottom}.roots-subtitle{margin-bottom:20px}.certifications-card{width:100%;padding:18px 16px}.certifications-card .skill-tags{align-items:stretch}.certifications-card .skill-tag{width:100%;justify-content:space-between;text-align:left}}.project-detail-back{display:inline-flex;align-items:center;gap:.5rem;color:var(--accent);text-decoration:none;font-size:.92rem;margin-bottom:1rem;transition:color .2s,transform .2s}.project-detail-back:hover{color:var(--accent-hover);transform:translate(-2px)}.project-detail-page{max-width:980px}.project-detail-page .page-title{font-size:clamp(2rem,4vw,2.7rem);line-height:1.15;margin-bottom:10px}.project-detail-page .page-subtitle{margin-bottom:20px;line-height:1.72}.project-detail-page .page-subtitle code{font-family:JetBrains Mono,Fira Code,monospace;font-size:.9em}.project-detail-page .project-detail-tags{margin-top:0;margin-bottom:10px}.project-detail-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.5rem}.project-detail-tag{padding:.35rem .72rem;background:#8fafbc24;color:var(--accent-hover);border:1px solid rgba(143,175,188,.32);border-radius:999px;font-size:.8rem;font-weight:600}.project-detail-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.6rem}.project-detail-links .btn{display:inline-flex;align-items:center;gap:.5rem;min-height:44px}.project-detail-source-link{margin-top:.45rem;margin-bottom:0;font-size:.92rem}.project-detail-source-link a{display:inline-flex;align-items:center;gap:.45rem;color:var(--text-muted);text-decoration:none;border-bottom:1px dashed rgba(143,175,188,.5);padding-bottom:1px;transition:color .2s ease,border-color .2s ease}.project-detail-source-link a:hover{color:var(--accent-hover);border-color:#8fafbce6}.chat-widget{margin-top:3rem;background:var(--bg-card);border:1px solid var(--card-border);border-radius:var(--radius);padding:1.25rem;box-shadow:0 8px 26px #0000002e}.chat-widget-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.chat-widget-title{font-family:var(--font-display);font-size:1.3rem;color:var(--text-primary);margin-bottom:.25rem}.chat-widget-subtitle{font-size:.9rem;color:var(--text-muted);line-height:1.6}.chat-clear-btn{background:transparent;border:1px solid var(--border);color:var(--text-muted);padding:.3rem .75rem;border-radius:8px;font-size:.8rem;cursor:pointer;transition:all .2s;flex-shrink:0}.chat-clear-btn:hover{border-color:var(--accent);color:var(--accent)}.chat-starters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.chat-starter-chip{padding:.52rem .9rem;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary);border-radius:999px;font-size:.82rem;cursor:pointer;transition:all .2s;font-family:var(--font-body)}.chat-starter-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-glow)}.chat-messages{max-height:430px;overflow-y:auto;margin-bottom:1rem;display:flex;flex-direction:column;gap:.75rem;padding-right:.5rem}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:transparent}.chat-messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.chat-message{max-width:85%}.chat-message-user{align-self:flex-end}.chat-message-assistant{align-self:flex-start}.chat-message-label{display:block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.25rem}.chat-message-user .chat-message-label{text-align:right}.chat-message-content{padding:.75rem 1rem;border-radius:12px;font-size:.92rem;line-height:1.6;white-space:pre-wrap}.chat-message-user .chat-message-content{background:var(--accent-glow);color:var(--text-primary);border:1px solid var(--accent-dark)}.chat-message-assistant .chat-message-content{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border)}.chat-typing{color:var(--text-muted);font-style:italic}.chat-error{color:var(--danger);font-size:.85rem;padding:.5rem}.chat-input-form{display:flex;gap:.5rem}.chat-input{flex:1;padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;color:var(--text-primary);font-size:.9rem;font-family:var(--font-body);outline:none;transition:border-color .2s}.chat-input:focus{border-color:var(--accent)}.chat-input::placeholder{color:var(--text-muted)}.chat-input:disabled{opacity:.6}.chat-send-btn{flex-shrink:0;padding:.75rem 1.25rem;font-size:.85rem}.chat-send-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.writeup{margin-top:3rem;display:grid;gap:1rem}.writeup-section{margin-bottom:0;background:linear-gradient(180deg,#1d3440c7,#13232cc7);border:1px solid rgba(59,91,106,.9);border-radius:var(--radius);padding:1.3rem 1.25rem;box-shadow:0 8px 20px #00000024}.writeup-section h2{font-family:var(--font-display);font-size:clamp(1.35rem,2.8vw,1.58rem);font-weight:700;color:var(--text-primary);margin-bottom:.95rem;padding-bottom:.6rem;border-bottom:1px solid rgba(59,91,106,.9)}.writeup-section h3{font-family:var(--font-display);font-size:1.17rem;font-weight:600;color:var(--text-primary);margin-top:1.2rem;margin-bottom:.65rem}.writeup-section p{color:var(--text-secondary);line-height:1.75;margin-bottom:.85rem;font-size:.98rem}.writeup-section strong{color:var(--text-primary)}.writeup-section em{color:var(--text-muted)}.writeup-diagram{background:#11212a;border:1px solid rgba(59,91,106,.95);border-radius:var(--radius);padding:1.1rem;overflow-x:auto;width:fit-content;max-width:100%;margin:1.25rem auto}.writeup-diagram pre{font-family:JetBrains Mono,Fira Code,monospace;font-size:.77rem;line-height:1.5;color:#bdd0db;margin:0 auto;width:max-content;white-space:pre}.writeup-table{width:100%;border-collapse:collapse;margin:1rem 0 .35rem;font-size:.9rem;min-width:640px}.writeup-table-wrap{overflow-x:auto;padding-bottom:.15rem}.writeup-table th{text-align:left;padding:.75rem 1rem;background:#13232cf2;color:var(--text-primary);font-weight:600;border-bottom:2px solid rgba(59,91,106,.9);white-space:nowrap}.writeup-table td{padding:.68rem 1rem;color:var(--text-secondary);border-bottom:1px solid rgba(59,91,106,.7);vertical-align:top}.writeup-table tr:last-child td{border-bottom:none}.writeup-table tr:hover td{background:#13232ca6}.writeup-tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin:1.25rem 0}.writeup-tech-card{background:var(--bg-card);border:1px solid var(--card-border);border-radius:var(--radius);padding:1.25rem;transition:border-color .2s,transform .2s}.writeup-tech-card:hover{border-color:var(--card-border-hover);transform:translateY(-2px)}.writeup-tech-card h4{font-family:var(--font-display);font-size:1rem;font-weight:600;color:var(--accent);margin-bottom:.5rem}.writeup-tech-card p{color:var(--text-secondary);font-size:.88rem;line-height:1.6;margin:0}.writeup-section ul{color:var(--text-secondary);font-size:.96rem;line-height:1.7;padding-left:1.1rem;margin-bottom:.75rem}.writeup-section li{margin-bottom:.4rem}.writeup-section code{background:#13232cd9;padding:.12rem .4rem;border-radius:4px;font-size:.85em;font-family:JetBrains Mono,Fira Code,monospace;color:var(--accent)}.writeup-callout{background:#13232ce6;border-left:3px solid rgba(143,175,188,.9);border-radius:0 12px 12px 0;padding:1rem 1.25rem;margin:1rem 0 .2rem}.writeup-callout p{margin:0;font-size:.9rem;color:var(--text-secondary);line-height:1.6}.writeup-divider{border:none;border-top:1px solid var(--border);margin:2.5rem 0}@media(max-width:768px){.project-detail-page .page-subtitle{margin-bottom:16px}.project-detail-links .btn{width:100%;justify-content:center}.writeup-section{padding:1.05rem .95rem}.writeup-diagram pre{font-size:.65rem}.writeup-table{font-size:.8rem}.writeup-table th,.writeup-table td{padding:.5rem .65rem}.writeup-tech-grid{grid-template-columns:1fr}.writeup-section h2{font-size:1.3rem}}@media(max-width:768px){.chat-messages{max-height:300px}.chat-message{max-width:95%}.chat-input-form{flex-direction:column}.chat-send-btn{width:100%}.chat-widget-header{flex-direction:column;gap:.75rem}.chat-widget{padding:1rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.architecture-flow{display:grid;gap:.75rem;margin:1.1rem 0 1.25rem}.architecture-tier{background:#13232ce6;border:1px solid rgba(59,91,106,.9);border-radius:12px;padding:.9rem 1rem}.architecture-tier h4{font-family:var(--font-display);color:var(--accent);margin-bottom:.35rem;font-size:1rem}.architecture-tier p{margin:.2rem 0;font-size:.9rem}.architecture-arrow{text-align:center;color:var(--text-muted);font-size:1rem;line-height:1}.architecture-arrow-mobile{display:none}.architecture-fanout{display:grid;grid-template-columns:repeat(3,1fr);align-items:center;justify-items:center;color:var(--text-muted);margin-top:-.1rem}.architecture-fanout span{font-size:1rem;line-height:1}.architecture-fanout-arrow{display:inline-block}.architecture-fanout-arrow-left{transform:rotate(28deg)}.architecture-fanout-arrow-center{transform:rotate(0)}.architecture-fanout-arrow-right{transform:rotate(-28deg)}.architecture-system-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.7rem}.architecture-system-card{background:#13232ce6;border:1px solid rgba(59,91,106,.9);border-radius:12px;padding:.75rem .85rem}.architecture-system-card h5{font-family:var(--font-display);color:var(--text-primary);margin-bottom:.3rem;font-size:.95rem}.architecture-system-card p{margin:0;font-size:.85rem}@media(max-width:768px){.writeup-table{min-width:0;border-collapse:separate;border-spacing:0;margin-top:.75rem}.writeup-table thead{display:none}.writeup-table,.writeup-table tbody,.writeup-table tr,.writeup-table td{display:block;width:100%}.writeup-table tr{border:1px solid rgba(59,91,106,.85);border-radius:12px;overflow:hidden;margin-bottom:.65rem;background:#13232cb3}.writeup-table tr:hover td{background:transparent}.writeup-table td{display:grid;grid-template-columns:minmax(90px,38%) 1fr;gap:.6rem;align-items:start;border-bottom:1px solid rgba(59,91,106,.6);padding:.56rem .7rem}.writeup-table td:last-child{border-bottom:none}.writeup-table td:before{content:attr(data-label);color:var(--text-muted);font-size:.74rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;line-height:1.35}.writeup-table-wrap{overflow-x:visible}.architecture-fanout{display:none}.architecture-arrow-mobile{display:block}.architecture-system-grid{grid-template-columns:1fr}}
