:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}button{cursor:pointer}button:focus,button:focus-visible{outline:none}.glass-nav{position:fixed;top:20px;left:50%;transform:translate(-50%);background:var(--nav-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--nav-border);padding:12px 32px;border-radius:100px;z-index:100;box-shadow:var(--nav-shadow);transition:all .3s ease;font-family:ui-rounded,SF Pro Rounded,SF Pro,-apple-system,BlinkMacSystemFont,sans-serif}.glass-nav:hover{background:var(--nav-bg);border-color:var(--color-text-muted);filter:brightness(1.1)}.glass-nav ul{display:flex;list-style:none;gap:32px;margin:0;padding:0}.glass-nav a{text-decoration:none;color:var(--color-text-muted);font-size:.95rem;font-weight:600;transition:color .2s ease}.glass-nav a:hover{color:var(--color-text)}.fixed-controls{position:fixed;top:24px;right:24px;display:flex;align-items:center;gap:16px;z-index:100}#clock{font-size:.9rem;color:var(--color-text);font-family:ui-rounded,SF Pro Rounded,SF Pro,-apple-system,BlinkMacSystemFont,sans-serif;font-variant-numeric:tabular-nums;border:var(--nav-border) 1px solid;padding:6px 12px;border-radius:8px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.theme-toggle{background:transparent;border:1px solid var(--color-border);color:var(--color-text);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;outline:none}.theme-toggle:hover{background:var(--color-accent-subtle);border-color:var(--color-text-muted)}.theme-toggle i{font-size:1.1rem}body.light-mode .moon-icon{display:block}body.light-mode .sun-icon{display:none}body:not(.light-mode) .moon-icon{display:none}body:not(.light-mode) .sun-icon{display:block}.hero-section{min-height:100vh;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:1fr auto;align-items:center;position:relative;overflow:hidden;background:var(--background-color);padding:0 5vw;gap:0 2vw}.hero-fader{opacity:var(--swipe-opacity, 1);transform:translateY(var(--swipe-translate, 0px));will-change:opacity,transform}.hero-bg-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(82,60,208,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(82,60,208,.04) 1px,transparent 1px);background-size:60px 60px;z-index:0;pointer-events:none}.hero-glow{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none;z-index:0}.hero-glow-1{width:500px;height:500px;top:-100px;left:-100px;background:radial-gradient(circle,rgba(82,60,208,.18) 0%,transparent 70%);animation:glow-drift-1 8s ease-in-out infinite}.hero-glow-2{width:400px;height:400px;bottom:-80px;right:-80px;background:radial-gradient(circle,rgba(124,92,232,.14) 0%,transparent 70%);animation:glow-drift-2 10s ease-in-out infinite}@keyframes glow-drift-1{0%,to{transform:translate(0)}50%{transform:translate(40px,30px)}}@keyframes glow-drift-2{0%,to{transform:translate(0)}50%{transform:translate(-30px,-20px)}}.hero-left{grid-column:1;grid-row:1;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;padding:0 0 0 2vw;animation:slide-in-left .8s cubic-bezier(.22,1,.36,1) both}@keyframes slide-in-left{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}.hero-greeting{font-size:clamp(.9rem,1.2vw,1.1rem);color:#7c5ce8;font-weight:500;letter-spacing:.1em;text-transform:uppercase;margin:0;animation:fade-up .6s .2s ease both}.hero-name{display:flex;flex-direction:column;margin:0;line-height:1.05;gap:.05em}.hero-name span{display:block;font-size:clamp(2.8rem,4.5vw,5.6rem);font-weight:700;letter-spacing:-.04em;background:var(--gradient-heading);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:fade-up .7s ease both}.hero-name span:nth-child(1){animation-delay:.3s}.hero-name span:nth-child(2){animation-delay:.45s}.hero-name span:nth-child(3){animation-delay:.6s}.hero-title{font-size:clamp(.9rem,1.3vw,1.15rem);color:var(--color-text-muted);font-weight:400;margin:.4rem 0 0;letter-spacing:.02em;animation:fade-up .6s .75s ease both}.hero-cta-row{display:flex;gap:12px;margin-top:1.6rem;flex-wrap:wrap;animation:fade-up .6s .9s ease both}.hero-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 24px;border-radius:50px;font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;letter-spacing:.02em}.hero-btn-primary{background:linear-gradient(135deg,#523cd0,#7c5ce8);color:#fff;box-shadow:0 4px 20px #523cd066}.hero-btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 28px #523cd08c}.hero-btn-ghost{background:transparent;color:var(--color-text);border:1.5px solid var(--color-border)}.hero-btn-ghost:hover{background:var(--color-accent-subtle);border-color:#523cd066;transform:translateY(-2px)}.hero-stage{grid-column:2;grid-row:1;z-index:2;position:relative;width:clamp(240px,28vw,400px);height:clamp(240px,28vw,400px);display:flex;align-items:center;justify-content:center;flex-shrink:0}.orbit{position:absolute;border-radius:50%;border:1px solid rgba(82,60,208,.18);animation:spin-orbit linear infinite}.orbit-1{width:86%;height:86%;border-style:dashed;animation-duration:22s;border-color:#523cd026}.orbit-2{width:100%;height:100%;animation-duration:32s;animation-direction:reverse;border-color:#7c5ce81a}.orbit-3{width:115%;height:115%;border-style:dashed;animation-duration:48s;border-color:#523cd012}@keyframes spin-orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.orbit-tag{position:absolute;font-family:var(--font-family, "Inter", sans-serif);font-size:.65rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:20px;background:#523cd026;border:1px solid rgba(82,60,208,.3);color:#c8b4f0;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:tag-float 4s ease-in-out infinite}.orbit-tag-react{top:2%;left:50%;transform:translate(-50%);animation-delay:0s;animation-name:tag-float}.orbit-tag-spring{top:26%;right:-4%;transform:translateY(-50%);animation-delay:.8s;animation-name:tag-float-side}.orbit-tag-django{bottom:6%;left:73%;transform:translate(-50%);animation-delay:1.6s;animation-name:tag-float}.orbit-tag-git{bottom:6%;left:27%;transform:translate(-50%);animation-delay:2.4s;animation-name:tag-float}.orbit-tag-docker{top:26%;left:-4%;transform:translateY(-50%);animation-delay:3.2s;animation-name:tag-float-side-rev}@keyframes tag-float{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(-5px)}}@keyframes tag-float-side{0%,to{transform:translateY(-50%) translate(0)}50%{transform:translateY(-50%) translate(5px)}}@keyframes tag-float-side-rev{0%,to{transform:translateY(-50%) translate(0)}50%{transform:translateY(-50%) translate(-5px)}}.hero-char-slot{position:relative;z-index:5}.hero-stage:after{content:"";position:absolute;bottom:6%;left:50%;transform:translate(-50%);width:40%;height:20px;background:radial-gradient(ellipse,rgba(82,60,208,.5) 0%,transparent 70%);filter:blur(10px);border-radius:50%;animation:platform-pulse 3s ease-in-out infinite;pointer-events:none}@keyframes platform-pulse{0%,to{opacity:.6;transform:translate(-50%) scaleX(1)}50%{opacity:1;transform:translate(-50%) scaleX(1.15)}}.hero-right{grid-column:3;grid-row:1;z-index:2;display:flex;flex-direction:column;gap:14px;padding:0 2vw 0 0;animation:slide-in-right .8s .3s cubic-bezier(.22,1,.36,1) both}@keyframes slide-in-right{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.hero-card{display:flex;align-items:center;gap:14px;padding:14px 18px;background:#ffffff08;border:1px solid rgba(82,60,208,.15);border-radius:16px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .25s ease,border-color .25s ease,background .25s ease;animation:fade-up .5s ease both}.hero-card:hover{transform:translate(6px);border-color:#523cd066;background:#523cd012}.hero-card-delay-1{animation-delay:.5s}.hero-card-delay-2{animation-delay:.65s}.hero-card-delay-3{animation-delay:.8s}.hero-card-delay-4{animation-delay:.95s}.hero-card-icon{font-size:1.4rem;flex-shrink:0;line-height:1}.hero-card p{margin:0;line-height:1.3}.hero-card-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.hero-card-value{font-size:.9rem;font-weight:600;color:var(--color-text)}.hero-footer{grid-column:1 / -1;grid-row:2;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:20px 4vw 28px;color:var(--color-text-muted);font-size:.78rem;border-top:1px solid var(--color-border);opacity:.65;animation:fade-up .6s 1.1s ease both}.hero-footer p{margin:0}.hero-footer-tagline{font-style:italic;color:#c8b4f099}.hero-swipe-hint{position:absolute;bottom:52px;left:50%;transform:translate(-50%);z-index:3;display:flex;flex-direction:column;align-items:center;gap:6px;opacity:0;animation:fade-in .5s 1s ease forwards}@keyframes fade-in{to{opacity:.45}}.swipe-line{width:1px;height:36px;background:linear-gradient(to bottom,transparent,rgba(124,92,232,.8));animation:swipe-drip 2s ease-in-out infinite}@keyframes swipe-drip{0%,to{transform:scaleY(1);opacity:.6}50%{transform:scaleY(1.2);opacity:1}}.hero-swipe-hint span{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.15em;color:#7c5ce8b3}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}body.light-mode .hero-btn-ghost{border-color:#523cd040;color:var(--color-text)}body.light-mode .hero-card{background:#523cd00a;border-color:#523cd01a}body.light-mode .hero-footer-tagline{color:#523cd099}body.light-mode .hero-bg-grid{background-image:linear-gradient(rgba(82,60,208,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(82,60,208,.06) 1px,transparent 1px)}@media(max-width:1100px){.hero-section{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto;padding:80px 5vw 20px;gap:32px}.hero-left{grid-column:1;grid-row:1}.hero-stage{grid-column:2;grid-row:1;width:auto;height:clamp(220px,35vw,340px)}.hero-right{grid-column:1 / -1;grid-row:2;flex-direction:row;flex-wrap:wrap;padding:0}.hero-footer{grid-column:1 / -1;grid-row:3}.hero-card{flex:1 1 calc(50% - 14px);min-width:160px}.hero-swipe-hint{display:none}}@media(max-width:700px){.hero-section{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;padding:80px 5vw 20px;text-align:center;gap:24px}.hero-left{grid-column:1;grid-row:1;align-items:center;padding:0}.hero-stage{grid-column:1;grid-row:2;width:clamp(200px,70vw,300px);height:clamp(200px,70vw,300px);margin:0 auto}.hero-right{grid-column:1;grid-row:3;flex-direction:column;padding:0;gap:10px}.hero-card{flex:1 1 100%}.hero-footer{grid-column:1;grid-row:4;flex-direction:column;text-align:center;gap:4px}.hero-name span{font-size:clamp(2.4rem,10vw,3.6rem)}.hero-cta-row{justify-content:center}.orbit-tag-spring,.orbit-tag-git{display:none}}.projects-section{position:relative;overflow:visible}.projects-glow{position:absolute;top:-100px;right:-200px;width:600px;height:600px;background:radial-gradient(circle,rgba(82,60,208,.1) 0%,transparent 65%);pointer-events:none;z-index:0}.projects-stage{display:grid;grid-template-columns:260px 80px 1fr;align-items:center;gap:0;position:relative;z-index:1;opacity:0;transform:translate(-20px);transition:opacity .7s ease,transform .7s ease}.projects-visible .projects-stage{opacity:1;transform:translate(0)}.projects-char-area{display:flex;justify-content:center;align-items:center;position:relative;padding-right:16px}.projects-char-slot{position:relative;width:100%;min-height:280px;display:flex;align-items:center;justify-content:center}.projects-rope-area{display:flex;align-items:center;justify-content:center;height:100%;position:relative}.rope-wrap{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%}.rope-svg{width:100%;height:40px;overflow:visible}.rope-path{fill:none;stroke:#c8b4f0;stroke-width:3;stroke-linecap:round;opacity:.7;animation:rope-tension 1.4s ease-in-out infinite}@keyframes rope-tension{0%,to{d:path("M 0 20 Q 15 8 30 20 Q 45 32 60 20");stroke-width:3}50%{d:path("M 0 20 Q 15 5 30 20 Q 45 35 60 20");stroke-width:2.5}}.rope-hook{animation:hook-sway 1.4s ease-in-out infinite;transform-origin:top center}@keyframes hook-sway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}.projects-cards-area{overflow:visible}.projects-grid{display:grid;grid-template-columns:1fr;gap:18px}.project-card{position:relative;background:#ffffff05;border:1px solid rgba(82,60,208,.15);border-radius:20px;overflow:hidden;display:grid;grid-template-columns:160px 1fr;align-items:stretch;opacity:0;transform:translate(40px);transition:transform .35s cubic-bezier(.22,1,.36,1),border-color .3s ease,box-shadow .35s ease,opacity .5s ease,background .25s ease;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.projects-visible .project-card{opacity:1;transform:translate(0);transition-delay:var(--delay, 0s)}.project-card:hover{border-color:#523cd073;box-shadow:0 12px 40px -8px #523cd04d,0 4px 20px #00000059;background:#523cd00a}.project-card.card-featured{border-color:#7c5ce880;box-shadow:0 0 0 1px #7c5ce833,0 16px 48px -8px #523cd066,0 0 40px #523cd01f;transform:translate(-4px) scale(1.01);background:#523cd00f}.card-glow{position:absolute;inset:0;border-radius:20px;background:radial-gradient(circle at 0% 50%,rgba(82,60,208,.12),transparent 60%);opacity:0;transition:opacity .35s ease;pointer-events:none}.project-card:hover .card-glow,.project-card.card-featured .card-glow{opacity:1}.card-number{position:absolute;top:12px;right:14px;font-size:.6rem;font-weight:800;letter-spacing:.12em;color:#7c5ce866;z-index:3}.card-image{background-size:cover;background-position:center;position:relative;min-height:140px}.card-image-placeholder{background:linear-gradient(135deg,#0e0b1e,#1a1040 60%,#0e0b1e)}.card-placeholder-inner{height:100%;display:flex;align-items:center;justify-content:center}.card-placeholder-icon{font-size:2rem;opacity:.2;filter:grayscale(1)}.card-image-overlay{position:absolute;inset:0;background:linear-gradient(to right,rgba(5,5,5,.6) 0%,transparent 80%)}.card-content{padding:18px 20px}.card-title{margin:0 0 8px;font-size:1.1rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.tags span{font-size:.63rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;background:#523cd01f;border:1px solid rgba(82,60,208,.25);border-radius:100px;color:#c8b4f0}.card-desc{font-size:.85rem;color:var(--color-text-muted);line-height:1.6;margin:0 0 14px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.btn-link{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;color:#c8b4f0;text-decoration:none;transition:gap .2s ease,color .2s ease}.btn-link svg{transition:transform .25s ease}.btn-link:hover{color:#fff;gap:10px}.btn-link:hover svg{transform:translate(3px)}body.light-mode .project-card{background:#523cd008;border-color:#523cd01a}body.light-mode .tags span{background:#523cd014;color:#523cd0}body.light-mode .btn-link{color:#523cd0}body.light-mode .btn-link:hover{color:#3a2ba0}body.light-mode .rope-path{stroke:#523cd0}@media(max-width:1000px){.projects-stage{grid-template-columns:200px 60px 1fr}.project-card{grid-template-columns:130px 1fr}}@media(max-width:750px){.projects-stage{grid-template-columns:1fr;gap:24px}.projects-char-area{justify-content:center;padding-right:0}.projects-rope-area{display:none}.projects-grid,.project-card{grid-template-columns:1fr}.card-image{min-height:160px}.card-image-overlay{background:linear-gradient(to top,rgba(5,5,5,.8) 0%,transparent 60%)}}.about-section{position:relative;overflow:hidden}.about-glow{position:absolute;bottom:-150px;left:-200px;width:600px;height:600px;background:radial-gradient(circle,rgba(82,60,208,.1) 0%,transparent 65%);pointer-events:none;z-index:0}.section-header{text-align:center;margin-bottom:3.5rem;position:relative;z-index:1}.section-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#7c5ce8;margin:0 0 .6rem}.section-title{font-size:clamp(2rem,4vw,3rem);font-weight:700;margin:0 0 1.2rem;letter-spacing:-.03em;background:var(--gradient-heading);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.section-divider{width:48px;height:3px;background:linear-gradient(90deg,#523cd0,#7c5ce8);border-radius:4px;margin:0 auto}.about-stage{display:grid;grid-template-columns:1fr 60px 300px;align-items:start;gap:0;position:relative;z-index:1;opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease}.about-visible .about-stage{opacity:1;transform:translateY(0)}.about-content{display:flex;flex-direction:column;gap:0}.about-photo-row{display:flex;align-items:center;gap:32px;margin-bottom:32px}.about-photo-frame{position:relative;width:160px;height:160px;flex-shrink:0}.about-photo-ring{position:absolute;inset:-6px;border-radius:50%;border:2px solid transparent;background:linear-gradient(135deg,#523cd0,#7c5ce8,#523cd0) border-box;-webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);-webkit-mask-composite:destination-out;mask-composite:exclude;animation:ring-spin 8s linear infinite}@keyframes ring-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.about-photo{width:100%;height:100%;object-fit:cover;border-radius:50%;filter:grayscale(15%);transition:filter .4s ease;border:3px solid rgba(82,60,208,.3)}.about-photo:hover{filter:grayscale(0%)}.about-badge{position:absolute;bottom:0;right:-20px;display:flex;align-items:center;gap:7px;background:#0a081eeb;border:1px solid rgba(82,60,208,.35);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:100px;padding:5px 12px;font-size:.65rem;font-weight:700;color:var(--color-text);white-space:nowrap;box-shadow:0 4px 20px #523cd033}.about-badge-dot{width:6px;height:6px;border-radius:50%;background:#4ade80;box-shadow:0 0 8px #4ade80b3;animation:dot-pulse 2s ease-in-out infinite}@keyframes dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}.about-stats{display:flex;flex:1;min-width:200px;border:1px solid rgba(82,60,208,.15);border-radius:16px;overflow:hidden;background:#ffffff05}.about-stat{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 8px;border-right:1px solid rgba(82,60,208,.12)}.about-stat:last-child{border-right:none}.about-stat-value{font-size:1.3rem;font-weight:800;letter-spacing:-.04em;background:linear-gradient(135deg,#c8b4f0,#7c5ce8);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.about-stat-label{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-top:3px;text-align:center}.about-lead{font-size:1.15rem;font-weight:500;color:var(--color-text);line-height:1.6;margin:0 0 16px}.about-lead strong{background:linear-gradient(135deg,#c8b4f0,#7c5ce8);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:700}.about-body{font-size:.95rem;color:var(--color-text-muted);line-height:1.7;margin:0 0 16px}.about-body strong{color:var(--color-text);font-weight:600}.about-skills{margin:24px 0 32px;display:flex;flex-direction:column;gap:12px}.about-skills-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:#7c5ce8;margin:0 0 4px}.skill-row{display:flex;flex-direction:column;gap:6px}.skill-meta{display:flex;justify-content:space-between;align-items:baseline}.skill-name{font-size:.85rem;font-weight:600;color:var(--color-text)}.skill-pct{font-size:.7rem;font-weight:600;color:var(--color-text-muted)}.skill-bar{height:5px;background:#523cd01f;border-radius:100px;overflow:hidden}.skill-fill{height:100%;width:0;background:linear-gradient(90deg,#523cd0,#c8b4f0);border-radius:100px;transition:width 1.2s cubic-bezier(.22,1,.36,1) .3s}.about-visible .skill-fill{width:var(--skill-w)}.about-cta{display:inline-flex;align-items:center;gap:8px;padding:12px 26px;background:linear-gradient(135deg,#523cd0,#7c5ce8);color:#fff;border-radius:100px;font-size:.88rem;font-weight:700;text-decoration:none;align-self:flex-start;box-shadow:0 4px 20px #523cd059;transition:transform .2s ease,box-shadow .2s ease}.about-cta svg{transition:transform .25s ease}.about-cta:hover{transform:translateY(-2px);box-shadow:0 8px 28px #523cd080}.about-cta:hover svg{transform:translate(4px)}.about-vdivider{display:flex;justify-content:center;height:100%;padding:0 20px}.about-vline{width:2px;height:100%;border-radius:2px;background:linear-gradient(to bottom,transparent,rgba(82,60,208,.2) 20%,rgba(82,60,208,.2) 80%,transparent)}.about-char-area{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;min-height:400px}.about-char-label{font-size:.8rem;font-weight:700;color:#c8b4f0;letter-spacing:.05em;margin:0 0 20px;transform:rotate(5deg);animation:label-float 3s ease-in-out infinite}@keyframes label-float{0%,to{transform:rotate(5deg) translateY(0)}50%{transform:rotate(3deg) translateY(-4px)}}.about-char-slot{width:100%;display:flex;align-items:center;justify-content:center}body.light-mode .about-badge{background:#ffffffeb;color:#1a1a2e}body.light-mode .about-stats{background:#523cd008}@media(max-width:1000px){.about-stage{grid-template-columns:1fr;gap:40px}.about-vdivider{display:none}.about-char-area{min-height:300px;order:-1}.about-char-label{display:none}.about-photo-row{flex-direction:column;align-items:flex-start}.about-stats{width:100%}}.contact-section{position:relative;overflow:visible}.contact-glow{position:absolute;top:-100px;right:-200px;width:600px;height:600px;background:radial-gradient(circle,rgba(82,60,208,.12) 0%,transparent 65%);pointer-events:none;z-index:0}.contact-tagline{margin:1rem auto 0;max-width:480px;font-size:.95rem;color:var(--color-text-muted);line-height:1.65;text-align:center}.contact-stage{display:grid;grid-template-columns:320px 1.5fr 250px;gap:40px;align-items:start;position:relative;z-index:1;opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease}.contact-visible .contact-stage{opacity:1;transform:translateY(0)}.contact-left{display:flex;flex-direction:column;gap:14px}.contact-reach-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:#7c5ce8;margin:0 0 6px}.contact-link-card{display:flex;align-items:center;gap:16px;padding:16px 18px;background:#ffffff05;border:1px solid rgba(82,60,208,.15);border-radius:16px;text-decoration:none;color:var(--color-text);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .25s ease,border-color .25s ease,transform .25s ease}.contact-link-card:hover{background:#523cd012;border-color:#523cd066;transform:translate(5px)}.clc-icon-wrap{width:40px;height:40px;border-radius:12px;background:#523cd026;border:1px solid rgba(82,60,208,.2);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1rem;color:#c8b4f0;transition:background .25s ease}.contact-link-card:hover .clc-icon-wrap{background:#523cd040}.clc-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.clc-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.clc-value{font-size:.9rem;font-weight:500;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clc-arrow{color:#7c5ce866;flex-shrink:0;transition:transform .25s ease,color .25s ease}.contact-link-card:hover .clc-arrow{transform:translate(3px);color:#c8b4f0}.contact-middle{display:flex;flex-direction:column}.contact-form{display:flex;flex-direction:column;gap:24px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-group{position:relative}.form-group input,.form-group textarea{width:100%;padding:28px 16px 8px;background:#ffffff08;border:1px solid rgba(82,60,208,.18);border-radius:14px;color:var(--color-text);font-size:.95rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .25s ease,background .25s ease;resize:none}.form-group textarea{min-height:130px;resize:vertical}.form-group input:focus,.form-group textarea:focus{border-color:#7c5ce88c;background:#523cd00a}.form-group label{position:absolute;left:17px;top:50%;transform:translateY(-50%);color:var(--color-text-muted);font-size:.93rem;font-weight:500;pointer-events:none;transition:top .22s ease,transform .22s ease,font-size .22s ease,color .22s ease}.form-group textarea~label{top:4px;transform:none}.form-group input:focus~label,.form-group input:not(:placeholder-shown)~label{top:0;transform:none;font-size:.65rem;color:#7c5ce8;font-weight:700;letter-spacing:.06em}.form-group textarea:focus~label,.form-group textarea:not(:placeholder-shown)~label{top:-1px;font-size:.65rem;color:#7c5ce8;font-weight:700;letter-spacing:.06em}.form-border{position:absolute;bottom:1px;left:8px;right:8px;height:2px;border-radius:0 0 14px 14px;background:linear-gradient(90deg,#523cd0,#c8b4f0);transform:scaleX(0);transform-origin:center;transition:transform .3s cubic-bezier(.22,1,.36,1);pointer-events:none}.form-group input:focus~.form-border,.form-group textarea:focus~.form-border{transform:scaleX(1)}.btn-submit{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;padding:14px 32px;background:linear-gradient(135deg,#523cd0,#7c5ce8);color:#fff;border:none;border-radius:100px;font-size:.95rem;font-weight:700;font-family:inherit;cursor:pointer;box-shadow:0 4px 20px #523cd066;transition:transform .2s ease,box-shadow .2s ease,background .3s ease}.btn-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 28px #523cd08c}.btn-submit:disabled{cursor:not-allowed;opacity:.75}.btn-submit.success{background:linear-gradient(135deg,#16a34a,#4ade80);box-shadow:0 4px 20px #4ade804d}.btn-submit.error{background:linear-gradient(135deg,#dc2626,#f87171);box-shadow:0 4px 20px #dc26264d}.contact-char-area{display:flex;align-items:center;justify-content:center;position:relative;min-height:250px}.contact-char-slot{width:100%;display:flex;align-items:center;justify-content:center}body.light-mode .contact-link-card{background:#523cd008;border-color:#523cd01a}body.light-mode .form-group input,body.light-mode .form-group textarea{background:#523cd008;border-color:#523cd026;color:var(--color-text)}body.light-mode .form-group input:focus,body.light-mode .form-group textarea:focus{background:#523cd00f}@media(max-width:1100px){.contact-stage{grid-template-columns:260px 1fr 200px;gap:24px}}@media(max-width:900px){.contact-stage{grid-template-columns:1fr;gap:40px}.contact-char-area{order:-1;min-height:200px}.form-row{grid-template-columns:1fr;gap:20px}}.guide-character line,.guide-character path,.guide-character circle{stroke-linecap:round;stroke-linejoin:round}.char-shadow{fill:#0000004d;animation:shadow-breathe 3s ease-in-out infinite}.char-neck,.char-shoulders{stroke:#c8b4f0;stroke-width:4.5;fill:none}.char-body-fill{fill:#523cd0;opacity:.95;stroke:#7c5ce8;stroke-width:1}.char-collar{fill:#fff;stroke:#c8b4f0;stroke-width:.8}.char-leg-left,.char-leg-right{stroke:#c8b4f0;stroke-width:4;fill:none}.char-foot-left,.char-foot-right{stroke:#9b8fc4;stroke-width:3.5;fill:none}.char-arm-left line,.char-arm-right line{stroke:#c8b4f0;stroke-width:4;fill:none}.char-hand{fill:#f5cba7;stroke:#e8a87c;stroke-width:1.5}.char-head-circle{fill:#f5cba7;stroke:#e8a87c;stroke-width:2}.char-hair{fill:#2c1a6b;stroke:#1a0f45;stroke-width:.5}.char-eye{fill:#fff;stroke:#3d2b1f;stroke-width:1.2}.char-pupil{fill:#2c1a1a}.char-eye-shine{fill:#fff;opacity:.9}.char-eye-arc{fill:none;stroke:#3d2b1f;stroke-width:2.5;stroke-linecap:round}.char-eye-line{stroke:#3d2b1f;stroke-width:2;fill:none}.char-mouth-smile,.char-mouth-happy,.char-mouth-neutral,.char-mouth-listen,.char-brow,.char-brow-confident{fill:none;stroke:#3d2b1f;stroke-width:2}.char-ear-cup path{fill:none;stroke:#c8b4f0;stroke-width:3}.char-ear-cup-circle{fill:#c8b4f0;opacity:.3;stroke:#c8b4f0;stroke-width:1.5}.char-pointer line{stroke:#f0e040;stroke-width:2;fill:none}.char-pointer-tip{fill:#f0e040}.sparkle-star{fill:#f0e040;font-family:sans-serif;opacity:0}.aura-ring{fill:none;stroke:#523cd0;opacity:0}.char-eyes-happy,.char-eyes-listen,.char-eyes-confident,.char-mouth-happy,.char-mouth-neutral,.char-mouth-listen,.char-brow-confident,.char-ear-cup,.char-pointer,.char-sparkles,.char-aura{opacity:0;transition:opacity .4s ease}.char-eyes-default,.char-mouth-smile,.char-brow{opacity:1;transition:opacity .4s ease}.guide-overlay{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:0;transition:opacity .5s ease}.guide-overlay.overlay-visible{opacity:1}.char-mount{position:absolute;display:flex;flex-direction:column;align-items:center;gap:8px;transition:filter .5s ease}.guide-character{overflow:visible;transition:width .8s ease,filter .8s ease}.state-home .guide-character{width:var(--home-char-size, clamp(130px, 18vw, 220px));filter:drop-shadow(0 0 30px rgba(82,60,208,.45)) drop-shadow(0 16px 32px rgba(0,0,0,.6));animation:hero-char-float 4s ease-in-out infinite .5s}.state-projects .guide-character,.state-about .guide-character,.state-contact .guide-character{width:clamp(170px,15vw,230px);filter:drop-shadow(0 0 40px rgba(82,60,208,.5)) drop-shadow(0 20px 48px rgba(0,0,0,.55));animation:section-float 4s ease-in-out infinite}.hero-bubble{position:absolute;top:-24px;right:-10px;background:#fff;color:#1a1a2e;font-family:var(--font-family, "Inter", sans-serif);font-size:clamp(.85rem,1.2vw,1.05rem);font-weight:800;padding:8px 16px;border-radius:20px 20px 20px 4px;white-space:nowrap;box-shadow:0 0 0 2px #523cd040,0 8px 32px #523cd066;animation:hero-bubble-pop .5s .9s cubic-bezier(.34,1.56,.64,1) both,hero-bubble-float 3s 1.5s ease-in-out infinite;z-index:10}.hero-bubble-tail{position:absolute;bottom:-7px;left:14px;width:0;height:0;border-left:8px solid transparent;border-right:4px solid transparent;border-top:8px solid #ffffff}.section-bubble{position:absolute;background:#fffffff2;color:#1a1a2e;font-family:var(--font-family, "Inter", sans-serif);font-size:.8rem;font-weight:700;padding:8px 14px;white-space:nowrap;box-shadow:0 4px 20px #523cd04d;z-index:10}.state-projects .section-bubble{top:12px;left:calc(100% + 12px);right:auto;border-radius:16px 16px 16px 4px;animation:section-bubble-pop .4s cubic-bezier(.34,1.56,.64,1) both,bubble-float 3s .5s ease-in-out infinite}.state-projects .section-bubble-tail{position:absolute;bottom:-6px;left:12px;width:0;height:0;border-left:8px solid transparent;border-right:4px solid transparent;border-top:8px solid rgba(255,255,255,.95)}.state-about .section-bubble,.state-contact .section-bubble{top:12px;right:calc(100% + 12px);left:auto;border-radius:16px 16px 4px;animation:section-bubble-pop-left .4s cubic-bezier(.34,1.56,.64,1) both,bubble-float 3s .5s ease-in-out infinite}.state-about .section-bubble-tail,.state-contact .section-bubble-tail{position:absolute;bottom:-6px;right:12px;width:0;height:0;border-right:8px solid transparent;border-left:4px solid transparent;border-top:8px solid rgba(255,255,255,.95)}@keyframes hero-char-float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes hero-bubble-pop{0%{opacity:0;transform:scale(.4) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes hero-bubble-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes section-float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes section-bubble-pop{0%{opacity:0;transform:scale(.6) translate(-8px)}to{opacity:1;transform:scale(1) translate(0)}}@keyframes section-bubble-pop-left{0%{opacity:0;transform:scale(.6) translate(8px)}to{opacity:1;transform:scale(1) translate(0)}}@keyframes bubble-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.state-home .char-arm-right{transform-origin:85px 118px;animation:wave-arm 1s ease-in-out infinite}.state-home .char-head{animation:nod-hello 2.5s ease-in-out infinite}.state-home .char-sparkles{opacity:1}.state-home .sparkle-star{animation:sparkle-pop 2s ease-in-out infinite}.state-home .sparkle-2{animation-delay:.5s}.state-home .sparkle-3{animation-delay:1s}.state-home .char-eyes-happy{opacity:1}.state-home .char-eyes-default{opacity:0}.state-home .char-mouth-happy{opacity:1}.state-home .char-mouth-smile{opacity:0}@keyframes wave-arm{0%{transform:rotate(0)}20%{transform:rotate(-40deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(-45deg)}80%{transform:rotate(-15deg)}to{transform:rotate(0)}}@keyframes nod-hello{0%,to{transform:rotate(0) translateY(0)}30%{transform:rotate(-5deg) translateY(-3px)}60%{transform:rotate(3deg) translateY(0)}}@keyframes sparkle-pop{0%,to{opacity:0;transform:scale(.5) rotate(0)}50%{opacity:1;transform:scale(1.2) rotate(20deg)}}.state-projects .char-arm-right{transform-origin:85px 118px;animation:pull-arm-big 1.4s ease-in-out infinite!important}.state-projects .char-pointer{opacity:0!important}@keyframes pull-arm-big{0%,to{transform:rotate(-65deg)}50%{transform:rotate(-50deg)}}.state-projects.project-step-0 .char-arm-right{animation:pull-step-0 1.4s ease-in-out infinite!important}.state-projects.project-step-1 .char-arm-right{animation:pull-step-1 1.4s ease-in-out infinite!important}.state-projects.project-step-2 .char-arm-right{animation:pull-step-2 1.4s ease-in-out infinite!important}@keyframes pull-step-0{0%,to{transform:rotate(-75deg)}50%{transform:rotate(-60deg)}}@keyframes pull-step-1{0%,to{transform:rotate(-55deg)}50%{transform:rotate(-40deg)}}@keyframes pull-step-2{0%,to{transform:rotate(-35deg)}50%{transform:rotate(-20deg)}}.state-about .char-eyes-confident{opacity:1}.state-about .char-eyes-default{opacity:0}.state-about .char-brow-confident{opacity:1}.state-about .char-brow{opacity:0}.state-about .char-mouth-neutral{opacity:1}.state-about .char-mouth-smile{opacity:0}.state-about .char-aura{opacity:1}.state-about .aura-ring-1{animation:aura-pulse-1 3s ease-in-out infinite}.state-about .aura-ring-2{animation:aura-pulse-2 3s ease-in-out infinite .4s}.state-about .char-arm-right{transform-origin:85px 118px;animation:introduce-arm 3.5s ease-in-out infinite!important}.state-about .char-arm-left{transform-origin:35px 118px;animation:introduce-arm-left 3.5s ease-in-out infinite!important}.state-about .char-head{animation:proud-nod 3.5s ease-in-out infinite!important}@keyframes introduce-arm{0%,to{transform:rotate(-25deg)}40%{transform:rotate(-10deg)}70%{transform:rotate(-20deg)}}@keyframes introduce-arm-left{0%,to{transform:rotate(15deg)}40%{transform:rotate(5deg)}70%{transform:rotate(12deg)}}@keyframes chest-puff-big{0%,to{transform:scaleX(1) scaleY(1) translateY(0)}50%{transform:scaleX(1.06) scaleY(1.03) translateY(-2px)}}@keyframes proud-nod{0%,to{transform:translateY(0) rotate(0)}30%{transform:translateY(-5px) rotate(-3deg)}70%{transform:translateY(-2px) rotate(2deg)}}.state-contact .char-eyes-listen{opacity:1}.state-contact .char-eyes-default{opacity:0}.state-contact .char-mouth-listen{opacity:1}.state-contact .char-mouth-smile{opacity:0}.state-contact .char-ear-cup{opacity:1;animation:ear-cup-pulse 3s ease-in-out infinite}.state-contact .guide-character{animation:lean-listen-big 3s ease-in-out infinite!important}.state-contact .char-arm-left{transform-origin:24px 112px;animation:ear-lift-big 3s ease-in-out infinite!important}.state-contact .char-head{animation:tilt-listen-big 3s ease-in-out infinite!important}@keyframes lean-listen-big{0%,to{transform:rotate(0) translate(0)}50%{transform:rotate(-8deg) translate(-8px)}}@keyframes ear-lift-big{0%,to{transform:rotate(60deg) translateY(-12px)}50%{transform:rotate(45deg) translateY(-8px)}}@keyframes tilt-listen-big{0%,to{transform:rotate(-15deg) translate(-4px)}50%{transform:rotate(-10deg) translate(-2px)}}@keyframes shadow-breathe{0%,to{transform:scaleX(1);opacity:.3}50%{transform:scaleX(.85);opacity:.15}}@keyframes aura-pulse-1{0%,to{opacity:0;transform:scale(.95)}50%{opacity:.18;transform:scale(1.05)}}@keyframes aura-pulse-2{0%,to{opacity:0;transform:scale(.9)}50%{opacity:.1;transform:scale(1.1)}}@keyframes ear-cup-pulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.guide-project-dots{display:flex;gap:5px;justify-content:center}.dot{width:6px;height:6px;border-radius:50%;background:#c8b4f059;transition:background .3s ease,transform .3s ease}.dot-active{background:#c8b4f0;transform:scale(1.3)}body.light-mode .hero-bubble{box-shadow:0 0 0 2px #523cd033,0 8px 24px #523cd040}body.light-mode .section-bubble{background:#1a1a2e;color:#fff;box-shadow:0 4px 20px #00000040}body.light-mode .state-projects .section-bubble-tail,body.light-mode .state-about .section-bubble-tail,body.light-mode .state-contact .section-bubble-tail{border-top-color:#1a1a2e}@media(max-width:768px){.hero-bubble{font-size:.8rem;padding:6px 14px;top:-20px;right:-6px}.section-bubble{font-size:.72rem;padding:6px 11px}.state-projects .section-bubble{left:calc(100% + 6px);top:8px}.state-about .section-bubble,.state-contact .section-bubble{right:calc(100% + 6px);top:8px}}.main-container{height:100vh;width:100vw;position:relative;overflow:hidden}.section-wrapper{position:absolute;inset:0;opacity:0;pointer-events:none;visibility:hidden;overflow-y:auto;scrollbar-width:none}.section-wrapper::-webkit-scrollbar{display:none}.section-wrapper.is-active{pointer-events:auto;visibility:visible}.section-wrapper.phase-entering.is-active{animation:section-enter .3s cubic-bezier(.22,1,.36,1) both}.section-wrapper.phase-idle.is-active{opacity:1;transform:translateY(0)}.section-wrapper.phase-moving.is-active{opacity:0;transform:translateY(40px)}.section-wrapper.phase-exiting.is-active{animation:section-exit .2s ease both}@keyframes section-enter{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes section-exit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}.social-sidebar{position:fixed;left:32px;bottom:32px;display:flex;flex-direction:column;gap:20px;z-index:10}.social-sidebar a{color:var(--color-text-muted);font-size:1.4rem;transition:all .2s ease}.social-sidebar a:hover{color:var(--color-text);transform:translateY(-2px)}:root{--grid: rgba(255, 255, 255, .12);--axis: rgba(255, 255, 255, .35)}body.light-mode{--grid: rgba(0, 0, 0, .18);--axis: rgba(0, 0, 0, .55)}.cycling-scope{--primary: #2b6ef7;--primary-hover: #1a56d6;--bg: #101010;--text: #e0e0e0;--border: #2a2a2a;--card-bg: #1a1a1a;--card-shadow: 0 4px 12px rgba(0, 0, 0, .5);--muted: #888888;--gray-bg: #1a1a1a;min-height:100vh;margin:0;padding:0;background-color:var(--bg);color:var(--text);font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cycling-scope.no-scroll{height:100vh;overflow:hidden;display:flex;flex-direction:column}.centered-content-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;overflow:hidden}.cycling-scope.allow-scroll{height:100vh;overflow-y:auto;overflow-x:hidden}body.light-mode .cycling-scope{--bg: #ffffff;--text: #1a1a1a;--border: #e1e4e8;--card-bg: #f8f9fa;--card-shadow: 0 4px 12px rgba(0, 0, 0, .05);--muted: #666666;--gray-bg: #f8f9fa}.cycling-scope a{font-weight:500;color:var(--primary);text-decoration:inherit}.cycling-scope a:hover{color:var(--primary-hover)}.cycling-scope h1{font-size:3.2em;line-height:1.1;color:var(--text)}.cycling-scope button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:600;font-family:inherit;background-color:var(--primary);color:#fff;cursor:pointer;transition:all .2s}.cycling-scope button:hover{background-color:var(--primary-hover)}.cycling-scope button:focus,.cycling-scope button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(max-width:768px){.cycling-scope h1{font-size:2.5em}}.cycling-scope{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.cycling-main-nav{padding:.75rem 1.5rem;background:var(--bg);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:3000;border-bottom:1px solid var(--border);transition:background .3s,border-color .3s}.nav-links{display:flex;gap:1.5rem;align-items:center}.theme-toggle-btn{background:var(--card-bg)!important;border:1px solid var(--border)!important;color:var(--text)!important;padding:8px 12px!important;border-radius:50%!important;width:40px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.2rem;transition:all .2s cubic-bezier(.4,0,.2,1)}.theme-toggle-btn:hover{transform:rotate(15deg) scale(1.1);background:var(--border)!important}.nav-link{color:var(--primary);text-decoration:none;padding:.5rem .75rem;border-radius:6px;transition:all .2s;font-weight:500;font-size:.95rem}.nav-link:hover{background-color:var(--card-bg);color:var(--primary-hover)}@media(max-width:480px){.cycling-main-nav{padding:.75rem}.nav-links{gap:.5rem}.nav-link{font-size:.9rem;padding:.4rem .6rem}}body.hide-header .cycling-main-nav{display:none!important}:root{--bg: var(--bg);--card: var(--card-bg);--text: var(--text);--accent: var(--primary);--accent-neg: #ef4444;--muted: #64748b}*{box-sizing:border-box}.container{max-width:640px;margin:0 auto;padding:24px;display:flex;flex-direction:column;width:100%}h1{margin:0 0 16px;font-size:1.5rem;font-weight:600}.reading{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:24px;display:grid;gap:12px;box-shadow:var(--card-shadow)}.value{display:flex;align-items:baseline;gap:8px;font-variant-numeric:tabular-nums}#gradientValue{font-size:3.5rem;font-weight:700;letter-spacing:-.02em}.unit{font-size:1.25rem;color:var(--muted);font-weight:500}@media(max-width:480px){.container{padding:16px}#gradientValue{font-size:5rem}.reading{padding:16px;gap:8px}.btn{flex:1 1 100%;width:100%;padding:14px 16px;font-size:1rem;text-align:center}.debug{font-size:.8rem}}@media(max-width:350px){#gradientValue{font-size:4rem}.unit{font-size:1rem}}.status{font-size:.95rem;color:var(--muted)}.controls{width:100%;display:flex;gap:12px;margin-top:16px;flex-wrap:wrap}.btn{flex:1;min-width:120px;background:var(--accent);color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:.95rem;font-weight:600;cursor:pointer;text-align:center;transition:background .2s}.btn:hover:not(:disabled){background:#1a56d6}.btn:disabled{opacity:.2;cursor:not-allowed}.debug{margin-top:16px;font-size:.9rem;color:var(--muted);display:grid;gap:6px}.positive{color:var(--accent)}.negative{color:var(--accent-neg)}.neutral{color:var(--text)}.power-page{--accent: var(--primary, #2b6ef7);--blue: var(--primary, #2b6ef7);--blue-hover: var(--primary-hover, #1a56d6)}.power-page{font-family:Inter,-apple-system,blinkmacsystemfont,Segoe UI,Roboto,sans-serif;padding:24px;width:100%}h1{margin:0 0 24px;font-size:24px;font-weight:700;color:var(--text)}textarea{width:100%;min-height:200px;font-family:monospace}.drop-zone{width:100%;max-width:800px;margin:0 auto 24px;padding:40px 20px;border:2px dashed var(--border);border-radius:12px;background:var(--gray-bg);text-align:center;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;align-items:center;justify-content:center}.drop-zone:hover,.drop-zone.dragging{border-color:var(--blue);background:#2b6ef70d}.drop-zone.has-file{border-style:solid;border-color:#4caf50;background:#4caf500d}.drop-hint strong,.file-info strong{display:block;font-size:18px;margin-bottom:8px}.drop-hint p,.file-info p{margin:0;color:var(--muted);font-size:14px}.main-controls{display:flex;justify-content:center;gap:12px;margin-bottom:32px}.primary-button{padding:8px 12px;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer;font-family:inherit;font-weight:500}.primary-btn{padding:10px 24px;background:var(--blue);color:#fff;font-weight:600;border-radius:8px;transition:background .2s;border:none;cursor:pointer}.primary-btn:hover{background:var(--blue-hover)}.secondary-btn{padding:10px 24px;background:var(--card-bg);color:var(--text);border:1px solid var(--border);font-weight:600;border-radius:8px;cursor:pointer}.secondary-btn:hover{background:var(--gray-bg)}.controls{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:16px;background:var(--gray-bg);padding:20px;border-radius:12px;border:1px solid var(--border);max-width:1000px;margin:0 auto 24px}.controls>div{display:flex;flex-direction:column;gap:6px}.controls input,.controls select{padding:8px;border:1px solid var(--border);border-radius:6px;font-size:14px;background-color:var(--card-bg);color:var(--text)}label{font-size:13px;font-weight:500}.chart-wrapper{margin-top:20px}.chart-container{width:100%;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:0;position:relative;box-shadow:var(--card-shadow);overflow:hidden}.chart-row{display:flex;align-items:stretch;border-bottom:1px solid var(--border)}.chart-row:last-child{border-bottom:none}.chart-main{flex:1;position:relative;padding:10px;min-width:0}.chart-info-side{width:100px;padding:15px 12px;display:flex;flex-direction:column;justify-content:flex-start;border-right:1px solid var(--border);background:var(--gray-bg)}.chart-label-mini{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase}.chart-stats-mini{font-size:10px;color:var(--muted);margin-top:4px}.chart-stats-side{width:160px;padding:15px;display:flex;flex-direction:column;gap:8px;border-left:1px solid var(--border);background:var(--gray-bg)}.chart-value-side{width:130px;padding:15px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;border-left:1px solid var(--border)}.chart-row-value{font-size:24px;font-weight:800;color:var(--text);line-height:1}.chart-row-unit{font-size:11px;color:var(--muted);font-weight:600;margin-top:4px}canvas{display:block;width:100%}#chartPower,#chartSpeed{height:110px}#chartElev{height:140px}@media(max-width:768px){.chart-info-side{width:60px;padding:10px 8px}.chart-label-mini{font-size:9px}.chart-stats-mini{font-size:8px}.chart-stats-side{width:120px;padding:10px;gap:6px}.chart-value-side{width:90px;padding:10px}.chart-row-value{font-size:18px}.chart-row-unit{font-size:9px}#chartPower,#chartSpeed{height:90px}#chartElev{height:120px}.hover-item{gap:2px}.hover-label{font-size:8px}.hover-value{font-size:12px}.hover-unit{font-size:8px}}@media(max-width:768px){body{padding:16px}h1{font-size:20px;margin-bottom:20px}.drop-zone{padding:24px 16px;margin-bottom:20px}.drop-hint strong,.file-info strong{font-size:16px}.controls{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;padding:16px}.stats{font-size:14px;padding:10px 12px;width:100%;box-sizing:border-box}}@media(max-width:480px){.main-controls{flex-direction:column;width:100%}.primary-btn,.secondary-btn{width:100%;text-align:center;padding:12px}.controls{grid-template-columns:1fr}.controls>div{width:100%}.controls input,.controls select{width:100%;box-sizing:border-box}.chart-container{padding:8px;border-radius:8px}#chartPower{height:180px}#chartElev{height:100px}.drop-zone{min-height:15px}}#hoverBox{position:absolute;top:16px;right:16px;pointer-events:none;background:var(--card-bg);border:1px solid var(--border);border-radius:6px;padding:10px;font-size:13px;color:var(--text);box-shadow:0 4px 12px #0003;display:none;z-index:10;min-width:100px;flex-direction:column;gap:8px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hover-item{display:flex;flex-direction:column;align-items:flex-end}.hover-label{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:600}.hover-value{font-size:16px;font-weight:700;color:var(--text)}.hover-unit{font-size:10px;font-weight:500;color:var(--muted);margin-left:2px}.note{text-align:center;color:var(--muted);font-size:14px;margin-bottom:24px}.stats{background:var(--blue);color:#fff;padding:12px 20px;border-radius:8px;font-weight:500;text-align:center;margin-top:24px;box-shadow:var(--shadow)}.power-placeholder{width:100%;min-height:300px;display:flex;align-items:center;justify-content:center;background:var(--card-bg);border:2px dashed var(--border);border-radius:12px;margin-top:20px}.placeholder-content{text-align:center;color:var(--muted)}.placeholder-icon{font-size:3rem;margin-bottom:12px;opacity:.5}.map-container{width:100%;height:380px;border-radius:12px;overflow:hidden;margin-bottom:24px;border:1px solid var(--border);box-shadow:var(--shadow);z-index:1}@keyframes map-pulse{0%{transform:scale(.95);box-shadow:0 0 #2b6ef7bf}70%{transform:scale(1.15);box-shadow:0 0 0 10px #2b6ef700}to{transform:scale(.95);box-shadow:0 0 #2b6ef700}}.map-hover-dot{width:14px;height:14px;background:#2b6ef7;border:2.5px solid #ffffff;border-radius:50%;box-shadow:0 2px 8px #0006;animation:map-pulse 1.4s infinite ease-in-out}.ride-controls-drawer{position:fixed;bottom:-100%;left:0;right:0;background:var(--bg);opacity:.98;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:bottom .4s cubic-bezier(.4,0,.2,1);z-index:2000;padding:20px 10px 40px;display:flex;flex-direction:column;align-items:center;border-top:1px solid var(--border)}.ride-controls-drawer.open{bottom:0}.controls-header{width:100%;display:flex;flex-direction:column;align-items:center;margin-bottom:25px}.controls-header h3{color:var(--text);margin:0 0 15px;font-size:1.2rem;font-weight:600}.close-controls-btn{background:#2b6ef7;color:#fff;border:none;border-radius:8px;padding:8px 24px;font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .2s}.close-controls-btn:active{transform:scale(.95)}.controls-actions{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.controls-actions button{background:#2b6ef7;color:#fff;border:none;border-radius:8px;padding:12px 20px;font-size:.85rem;font-weight:600;cursor:pointer;flex:1;min-width:140px;max-width:200px;white-space:nowrap;transition:all .2s}.controls-actions button:active{transform:scale(.98);background:#1a56d6}.finish-btn{background:#d32f2f!important}.finish-btn:active{background:#b71c1c!important}.cancel-edit-btn{background:#444!important;color:#bbb!important}.finish-edit-btn{background:#2b6ef7!important}.profile-management{width:100%;max-width:500px;margin-bottom:20px}.profile-management h4{color:var(--muted);font-size:.8rem;text-transform:uppercase;margin-bottom:10px;padding-left:5px}.profile-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.profile-item{display:flex;align-items:center;background:var(--card-bg);border:1px solid var(--border);border-radius:6px;padding:2px 5px;transition:border-color .2s}.profile-item.active{border-color:var(--blue)}.profile-item input{background:transparent;border:none;color:var(--text);font-size:.85rem;padding:6px;width:80px;outline:none}.del-profile-btn{background:transparent!important;border:none!important;color:#666!important;padding:0 4px!important;min-width:unset!important;font-size:1.1rem!important}.del-profile-btn:hover{color:#d32f2f!important}.add-profile-btn{background:var(--card-bg)!important;color:var(--muted)!important;border:1px dashed var(--border)!important;border-radius:6px!important;padding:6px 12px!important;font-size:.8rem!important;min-width:unset!important}.add-profile-btn:hover{color:var(--text)!important;border-color:var(--muted)!important}.ride-settings-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:4000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow-y:auto;padding:20px}.ride-settings-modal{background:var(--bg);width:90%;max-width:400px;border-radius:16px;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;margin-top:auto;margin-bottom:auto}.settings-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--card-bg)}.settings-header h3{margin:0;font-size:1.1rem;color:var(--text)}.close-btn{background:none;border:none;font-size:1.5rem;color:var(--muted);cursor:pointer}.settings-body{padding:20px;display:flex;flex-direction:column;gap:16px}.setting-group{display:flex;flex-direction:column;gap:8px}.setting-group label{font-size:.85rem;font-weight:500;color:var(--muted)}.setting-group input,.setting-group select{padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:1rem;width:100%;box-sizing:border-box}.settings-row{display:flex;gap:16px}.settings-row .setting-group{flex:1}.settings-footer{padding:16px 20px;border-top:1px solid var(--border);display:flex;gap:10px;background:var(--card-bg)}.save-btn{flex:2;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:opacity .2s}.save-btn:hover{opacity:.9}.cancel-btn{flex:1;padding:12px;background:var(--border);color:var(--text);border:none;border-radius:8px;font-weight:500;cursor:pointer}body.hide-header .ride-settings-modal{background:#2a2a2a;color:#fff;border:1px solid #444}body.hide-header .settings-header,body.hide-header .settings-footer{background:#1a1a1a;border-color:#444}body.hide-header .settings-header h3,body.hide-header .setting-group label{color:#ccc}body.hide-header .setting-group input,body.hide-header .setting-group select{background:#333;border-color:#555;color:#fff}.realtime-ride-page{width:100%;height:100%;background:var(--bg);color:var(--text);font-family:Inter,sans-serif;display:flex;flex-direction:column;position:relative;overflow:hidden}.dashboard-container{width:100%;height:100%;display:grid;grid-template-rows:8fr 1fr;overflow:hidden;background-color:var(--bg)}.ride-dashboard{height:100%;overflow:hidden;position:relative}.dashboard-grid{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(6,1fr);gap:2px;padding:0;height:100%;box-sizing:border-box;overflow:hidden;background:var(--border)}.dashboard-footer{display:flex;justify-content:center;align-items:center;padding:0 20px;background-color:var(--bg);border-top:1px solid var(--border);z-index:10}.dashboard-slot{background:var(--bg);overflow:hidden;position:relative;min-height:80px}.ride-setup-container{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);color:var(--text);padding:20px;text-align:center}.ride-setup-container h2{font-size:2.5rem;margin-bottom:40px;font-weight:800;letter-spacing:-1px}.setup-actions{display:flex;flex-wrap:wrap;gap:20px;justify-content:center;max-width:600px}.setup-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;width:140px;height:140px;background:var(--card-bg)!important;border:1px solid var(--border)!important;border-radius:20px!important;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);font-size:.9rem!important;font-weight:600!important;color:var(--muted)!important}.setup-btn:hover{transform:translateY(-5px);background:var(--gray-bg)!important;border-color:var(--muted)!important;color:var(--text)!important;box-shadow:var(--card-shadow)}.setup-btn .icon{font-size:2.5rem;margin-bottom:12px}.setup-btn.settings-btn{border-style:dashed!important}.dashboard-slot.editing{border:2px dashed #444;cursor:pointer}.dashboard-slot.editing:hover{border-color:var(--blue);background:var(--gray-bg)}.slot-select-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#000000b3;z-index:10;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.slot-select-overlay select{background:var(--card-bg);color:var(--text);padding:8px;border:1px solid var(--border);border-radius:6px;font-size:1rem}.data-field{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2px;box-sizing:border-box}.data-field .label{font-size:.7rem;text-transform:uppercase;color:var(--muted);margin-bottom:0;letter-spacing:1px;font-weight:800}.data-field .value-container{display:flex;align-items:baseline;gap:4px}.data-field .value{font-size:2.8rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--text)}.data-field .unit{font-size:.8rem;color:var(--muted);font-weight:700}.dashboard-slot.span-2{grid-column:span 2}.dashboard-slot.large .value{font-size:4rem}.graph-slot{padding:0!important;display:flex;flex-direction:column}.graph-slot-header{position:absolute;top:8px;left:12px;z-index:2;font-size:.8rem;color:var(--muted);text-transform:uppercase}.graph-slot-value{position:absolute;top:8px;right:12px;z-index:2;font-size:1.2rem;color:var(--text);font-weight:700}.profile-nav{position:absolute;bottom:20px;left:0;width:100%;display:flex;justify-content:center;align-items:center;gap:20px;pointer-events:none}.nav-arrow{background:var(--card-bg);border:1px solid var(--border);color:var(--text);width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;cursor:pointer;pointer-events:auto;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);transition:all .2s ease}.nav-arrow:active{transform:scale(.95);background:var(--blue)}.profile-dots{display:flex;gap:6px;pointer-events:auto}.dot{width:8px;height:8px;border-radius:50%;background:var(--border);transition:background .2s}.dot.active{background:var(--blue);transform:scale(1.2)}body.hide-header header{display:none!important}.ride-summary{width:100%;max-width:800px;margin:0 auto;padding:20px;display:flex;flex-direction:column;height:100%;overflow-y:auto}.ride-summary h2{text-align:center;margin-bottom:20px}.summary-charts-container{flex:1;min-height:0}.summary-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;background:var(--card-bg);padding:15px;border-radius:12px;margin:15px 0;border:1px solid var(--border)}.training-calendar-container{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;background-color:var(--bg);color:var(--text)}.calendar-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;border-bottom:1px solid var(--border);flex-shrink:0}.calendar-title-group{display:flex;align-items:center;gap:2rem}.calendar-title-group h2{margin:0;font-size:1.5rem;font-weight:600;min-width:200px}.calendar-nav-buttons{display:flex;gap:.5rem}.header-right-controls{display:flex;align-items:center;gap:1rem}.edit-mode-btn{background:transparent;border:2px solid var(--primary);color:var(--primary);padding:.5rem 1rem;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.5rem}.edit-mode-btn:hover{background:var(--primary);color:#fff;transform:translateY(-1px)}.edit-mode-btn.active{background:linear-gradient(135deg,#4caf50,#45a049);border-color:#4caf50;color:#fff;box-shadow:0 4px 12px #4caf504d}.edit-mode-btn.active:hover{background:linear-gradient(135deg,#45a049,#3d8b40)}.view-switcher{display:flex;background:var(--card-bg);border-radius:6px;padding:2px;border:1px solid var(--border)}.view-switcher button{background:transparent;border:none;padding:.4rem 1rem;font-size:.9rem;color:var(--muted);border-radius:4px;cursor:pointer}.view-switcher button.active{background:var(--primary);color:#fff}.calendar-content{flex:1;overflow:auto;padding:1rem}.month-view-grid{display:grid;grid-template-columns:repeat(7,1fr) 60px;gap:1px;background-color:var(--border);border:1px solid var(--border)}.month-cell{background-color:var(--bg);min-height:120px;padding:6px;display:flex;flex-direction:column;position:relative;transition:background .2s}.month-cell:hover{background-color:var(--card-bg)}.month-cell.different-month{opacity:.4;background-color:#050505}.light-mode .month-cell.different-month{background-color:#f0f0f0}.day-header{background-color:var(--card-bg);padding:10px;text-align:center;font-weight:600;font-size:.8rem;text-transform:uppercase;color:var(--muted)}.date-label{font-size:.9rem;font-weight:600;margin-bottom:4px;display:flex;justify-content:space-between}.tss-pill{font-size:.75rem;padding:1px 4px;border-radius:2px;background:#333;color:#fff}.tss-low{border-left:3px solid #4CAF50}.tss-med{border-left:3px solid #FFC107}.tss-high{border-left:3px solid #ff9800}.tss-extreme{border-left:3px solid #F44336}.week-summary-col{background-color:var(--card-bg);display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;color:var(--muted);border-left:1px solid var(--border)}.workout-list{display:flex;flex-direction:column;gap:2px;margin-top:4px}.workout-mini-card{font-size:.7rem;padding:2px 4px;background:var(--card-bg);border-radius:2px;display:flex;justify-content:space-between;align-items:center;gap:4px}.wo-type{font-weight:600;color:var(--text);font-size:.65rem}.wo-detail{color:var(--muted);font-size:.6rem}.date-label-right{display:flex;align-items:center;gap:6px}.add-workout-btn{width:22px;height:22px;border-radius:50%;border:none;background:linear-gradient(135deg,var(--primary),#5b9cd9);color:#fff;font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;box-shadow:0 2px 8px #0003;line-height:1}.add-workout-btn:hover{transform:scale(1.15);box-shadow:0 4px 12px rgba(var(--primary-rgb, 74, 144, 226),.4)}.add-workout-btn:active{transform:scale(.95)}.month-cell.edit-mode{cursor:default}.month-cell.edit-mode:hover{background-color:rgba(var(--primary-rgb, 74, 144, 226),.08)}.workout-mini-card.editable{cursor:pointer;transition:all .2s ease;border:1px solid transparent}.workout-mini-card.editable:hover{background:var(--primary);color:#fff;border-color:var(--primary);transform:translate(2px)}.workout-mini-card.editable:hover .wo-type,.workout-mini-card.editable:hover .wo-detail{color:#fff}.ftp-indicator{position:fixed;bottom:20px;right:20px;background:linear-gradient(135deg,#1a1a2e,#16213e);color:#4caf50;padding:8px 16px;border-radius:20px;font-size:.85rem;font-weight:600;box-shadow:0 4px 20px #0000004d;border:1px solid rgba(76,175,80,.3);z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.year-view-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;padding:1rem}.year-month-card{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:1rem;cursor:pointer;transition:all .3s ease;display:flex;flex-direction:column;gap:.75rem}.year-month-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0003;border-color:var(--primary)}.year-month-name{font-size:1.1rem;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.5px}.year-sparkline{width:100%;height:40px;margin:.5rem 0}.year-sparkline svg{display:block}.year-month-stats{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-top:.5rem;border-top:1px solid var(--border)}.stat-item{display:flex;align-items:baseline;gap:.25rem}.stat-value{font-size:1.5rem;font-weight:700;color:var(--primary)}.stat-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.week-view-container{display:flex;flex-direction:column;gap:1.5rem;height:100%}.week-summary-bar{background:var(--card-bg);padding:1rem 1.5rem;border-radius:12px;border:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.week-summary-bar h3{margin:0;font-size:1.5rem;font-weight:700}.week-subtitle{margin:4px 0 0;font-size:.9rem;color:var(--muted)}.week-legend-bar{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1rem 1.5rem;display:flex;flex-direction:column;gap:.5rem;margin-top:auto}.legend-label{font-size:.75rem;font-weight:700;color:var(--muted);letter-spacing:.05em}.legend-content{font-size:.9rem;color:var(--text);line-height:1.5}.notes-editor{width:100%;min-height:80px;background:#ffffff08;border:1px solid var(--primary);border-radius:8px;padding:.75rem;color:var(--text);font-family:inherit;resize:vertical;font-size:.9rem}.notes-editor:focus{outline:none;box-shadow:0 0 0 2px rgba(var(--primary-rgb, 74, 144, 226),.2)}.notes-display{white-space:pre-wrap}.week-tss-total{display:flex;flex-direction:column;align-items:flex-end}.tss-label{font-size:.7rem;text-transform:uppercase;font-weight:700;color:var(--muted);letter-spacing:.05em}.tss-value{color:var(--primary);font-weight:800;font-size:1.5rem}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;flex:1;overflow-y:auto;padding-bottom:20px}.week-day-column{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;display:flex;flex-direction:column;padding:16px;transition:all .2s ease;min-height:400px}:global(body.light-mode) .week-day-column{background:#fff;border:none;box-shadow:0 4px 20px #00000008}.week-day-column.edit-mode{border:1px dashed var(--primary);background:rgba(var(--primary-rgb, 43, 110, 247),.02)}.week-day-header{background:transparent;padding:0 0 16px;border:none;display:flex;flex-direction:column;gap:4px}.day-name{font-weight:700;text-transform:uppercase;font-size:.7rem;letter-spacing:.05em;color:var(--muted);margin-bottom:0}.day-date{font-size:.8rem;color:var(--text);opacity:.7}.week-workout-list{padding:0;display:flex;flex-direction:column;gap:16px;flex:1}.rest-day{color:var(--muted);font-size:.9rem;margin-top:1rem;opacity:.5}.week-workout-card{background:transparent;border:none;border-radius:0;transition:opacity .2s;border-left:2px solid transparent;padding:0 0 0 8px;position:relative}.week-workout-card:hover{border-left-color:var(--primary);transform:none;background:transparent}.week-workout-card.editable:hover{cursor:pointer;opacity:.8}.wo-card-header{margin-bottom:4px}.wo-period-label{font-size:.65rem;font-weight:700;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:2px}.wo-title{font-size:1rem;font-weight:700;margin-bottom:4px;line-height:1.2;color:var(--text)}.wo-badge{display:inline-block;font-size:.7rem;padding:2px 6px;border-radius:4px;background:var(--bg);border:1px solid var(--border);color:var(--text);margin-bottom:6px;font-weight:500}:global(body.light-mode) .wo-badge{background:#f5f5f7;border-color:#e1e1e6;color:#333}.wo-stats-list{display:flex;flex-direction:column;gap:2px}.wo-stat-item{font-size:.75rem;color:var(--muted);display:flex;align-items:center;gap:6px}.wo-stat-item:before{content:"•";font-size:.6rem;color:var(--border)}@media(max-width:1200px){.week-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:768px){.week-grid{grid-template-columns:repeat(1,1fr)}.week-day-column{min-height:auto}}@media(max-width:480px){.week-grid,.year-view-grid{grid-template-columns:1fr}}.workout-modal-overlay{position:fixed;inset:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.workout-modal{background:var(--card-bg, #1a1a2e);border-radius:16px;width:90%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0006;border:1px solid var(--border, #333);animation:slideUp .3s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border, #333)}.modal-header h3{margin:0;font-size:1.25rem;font-weight:600;color:var(--text, #fff)}.modal-header .close-btn{background:transparent;border:none;font-size:1.5rem;color:var(--muted, #888);cursor:pointer;padding:0;line-height:1;transition:color .2s,transform .2s}.modal-header .close-btn:hover{color:var(--text, #fff);transform:scale(1.1)}.workout-modal form{padding:1.5rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.5rem;font-size:.85rem;font-weight:600;color:var(--muted, #888);text-transform:uppercase;letter-spacing:.5px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem 1rem;border:1px solid var(--border, #333);border-radius:8px;background:var(--bg, #0a0a0f);color:var(--text, #fff);font-size:1rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary, #4a90e2);box-shadow:0 0 0 3px #4a90e233}.form-group textarea{resize:vertical;min-height:80px}.modal-actions{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid var(--border, #333);margin-top:.5rem}.tss-estimate{display:flex;flex-direction:column;gap:4px;font-size:.9rem;color:var(--muted, #888)}.tss-estimate strong{color:var(--primary, #4a90e2);font-size:1.1rem}.ftp-badge{font-size:.75rem;color:#4caf50;background:#4caf5026;padding:2px 8px;border-radius:10px;display:inline-block}.button-group{display:flex;gap:.75rem}.button-group .cancel-btn{background:transparent;border:1px solid var(--border, #333);color:var(--text, #fff);padding:.6rem 1.25rem;border-radius:8px;font-size:.9rem;cursor:pointer;transition:all .2s}.button-group .cancel-btn:hover{background:var(--border, #333)}.button-group .save-btn{background:linear-gradient(135deg,var(--primary, #4a90e2),#5b9cd9);border:none;color:#fff;padding:.6rem 1.5rem;border-radius:8px;font-size:.9rem;cursor:pointer;transition:all .2s;box-shadow:0 4px 12px #4a90e233}.button-group .save-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px #4a90e24d}.form-group.animated{position:relative;margin-bottom:1.25rem}.form-group.animated input,.form-group.animated select,.form-group.animated textarea{width:100%;padding:1.5rem 1rem .5rem;min-height:56px;border:1px solid var(--border, #333);border-radius:8px;background:var(--bg, #0a0a0f);color:var(--text, #fff);font-size:1rem;transition:all .2s ease;box-sizing:border-box;appearance:none}.form-group.animated textarea{min-height:100px;line-height:1.5}.form-group.animated input:focus,.form-group.animated select:focus,.form-group.animated textarea:focus{outline:none;border-color:var(--primary, #4a90e2);box-shadow:0 0 0 3px #4a90e233;background:#ffffff0d}.form-group.animated label{position:absolute;left:1rem;top:18px;color:var(--muted, #888);font-size:.95rem;font-weight:500;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);transform-origin:left top;text-transform:none;margin:0}.form-group.animated input:focus~label,.form-group.animated input:not(:placeholder-shown)~label,.form-group.animated textarea:focus~label,.form-group.animated textarea:not(:placeholder-shown)~label,.form-group.animated select:focus~label,.form-group.animated select:valid~label{top:10px;transform:scale(.75);color:var(--primary, #4a90e2);font-weight:600}.form-group.animated select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8.825L1.175 4 2.238 2.938 6 6.7 9.763 2.938 10.825 4z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;background-size:12px}.button-group .save-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px #4a90e266}.button-group .save-btn:active{transform:translateY(0)}.week-day-column.edit-mode .week-day-header{background-color:#4a90e20d}.week-add-btn.add-workout-btn{margin:.5rem auto 0;width:28px;height:28px;font-size:18px}.week-workout-card.editable{cursor:pointer;position:relative}.week-workout-card.editable:hover{border-color:var(--primary);box-shadow:0 4px 12px #0003;transform:translateY(-2px)}.week-workout-card.editable:after{content:"✎";position:absolute;top:6px;right:6px;font-size:12px;opacity:0;transition:opacity .2s;color:var(--primary)}.week-workout-card.editable:hover:after{opacity:1}.workout-modal.wide{max-width:1000px;height:85vh;display:flex;flex-direction:column}.workout-modal-content{display:flex;flex:1;overflow:hidden}.modal-left-panel{flex:0 0 350px;padding:1.5rem;overflow-y:auto;border-right:1px solid var(--border)}.modal-right-panel{flex:1;display:flex;flex-direction:column;padding:1.5rem;background-color:#0003;overflow:hidden}.workout-visualizer{height:120px;background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-bottom:1.5rem;padding:10px 10px 0;display:flex;align-items:flex-end;gap:1px;position:relative;overflow:hidden}.visualizer-bar{background:var(--primary);min-width:4px;border-top-left-radius:2px;border-top-right-radius:2px;transition:height .3s ease,background .3s ease;cursor:help}.visualizer-bar:hover{filter:brightness(1.2)}.visualizer-bar.rec{background:#888}.visualizer-bar.end{background:#4caf50}.visualizer-bar.tmp{background:#8bc34a}.visualizer-bar.sst{background:#ffc107}.visualizer-bar.thr{background:#ff9800}.visualizer-bar.vo2{background:#ff5722}.visualizer-bar.ana{background:#f44336}.block-list-container{flex:1;overflow-y:auto;margin-bottom:1.5rem;padding-right:5px}.workout-block-item{background:var(--card-bg);border:1px solid var(--border);border-radius:6px;padding:10px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;cursor:grab;transition:all .2s;-webkit-user-select:none;user-select:none}.workout-block-item:active{cursor:grabbing}.workout-block-item.selected{border-color:var(--primary);background:#4a90e21a;box-shadow:0 0 0 1px var(--primary)}.workout-block-item.dragging{opacity:.5;background:var(--bg)}.block-info{display:flex;align-items:center;gap:10px}.block-index{width:24px;height:24px;background:var(--bg);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--muted);font-weight:700}.block-detail{display:flex;flex-direction:column}.block-summary{font-weight:600;font-size:.9rem}.block-meta{font-size:.75rem;color:var(--muted)}.block-actions{opacity:0;transition:opacity .2s}.workout-block-item:hover .block-actions,.workout-block-item.selected .block-actions{opacity:1}.delete-block-btn{background:transparent;border:none;color:var(--muted);cursor:pointer;padding:4px;border-radius:4px}.delete-block-btn:hover{color:#f44336;background:#f443361a}.add-block-form{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:1rem;display:flex;gap:10px;align-items:flex-end}.add-block-input-group{flex:1;display:flex;flex-direction:column;gap:4px}.add-block-input-group label{font-size:.75rem;color:var(--muted);text-transform:uppercase;font-weight:700}.add-block-input-group input,.add-block-input-group select{width:100%;padding:.5rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:.9rem}.add-block-btn{flex:0 0 auto;background:var(--primary);color:#fff;border:none;padding:.6rem 1.2rem;border-radius:6px;font-weight:600;cursor:pointer;height:36px;transition:all .2s}.add-block-btn:hover{filter:brightness(1.1);transform:translateY(-1px)}.total-stats-bar{display:flex;gap:1.5rem;padding:.75rem 0;border-top:1px solid var(--border);margin-top:.5rem;font-size:.9rem}.stat-pill{display:flex;gap:.5rem;align-items:center}.stat-pill strong{color:var(--text)}.goal-type-switcher{display:flex;gap:2px;background:var(--bg);padding:2px;border-radius:6px;border:1px solid var(--border)}.goal-type-switcher button{flex:1;padding:6px 12px;border:none;border-radius:4px;background:transparent;color:var(--muted);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}.goal-type-switcher button.active{background:var(--primary);color:#fff}.workout-detail-modal{background:var(--card-bg);border-radius:12px;width:95%;max-width:800px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000080;border:1px solid var(--border);display:flex;flex-direction:column}.detail-header{padding:24px;border-bottom:1px solid var(--border)}.detail-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.detail-title-row h2{margin:0;font-size:1.5rem;font-weight:700}.detail-main-metrics{display:flex;align-items:center;gap:40px}.metric-icon{font-size:2rem}.metric-item{display:flex;flex-direction:column}.metric-value{font-size:2.2rem;font-weight:700;font-family:Inter,system-ui,sans-serif;color:var(--text)}.metric-item.primary-goal .metric-value{color:var(--primary)}.metric-unit{font-size:.9rem;color:var(--muted);font-weight:700;text-transform:uppercase;margin-left:4px}.detail-visualizer-container{padding:0;background:#004d80;margin:0}.workout-visualizer.large{height:80px;background:transparent;border:none;border-radius:0}.detail-body{padding:24px;display:grid;grid-template-columns:350px 1fr;gap:40px}.detail-stats-table{display:flex;flex-direction:column}.table-header{display:grid;grid-template-columns:120px 80px 80px 1fr;padding-bottom:8px;border-bottom:1px solid var(--border);margin-bottom:8px}.col-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;font-weight:700;text-align:right}.col-label:first-child{text-align:left}.table-row{display:grid;grid-template-columns:120px 80px 80px 1fr;padding:10px 0;align-items:center}.row-label{font-size:.85rem;color:var(--text);font-weight:500;text-align:right;padding-right:12px}.row-val{font-size:.95rem;font-family:monospace;text-align:right;padding:4px 8px;border-radius:4px}.row-val.planned{background:var(--bg);border:1px solid var(--border)}.row-val.completed{background:#ffffff0d;height:28px;margin-left:8px}.row-unit{font-size:.75rem;color:var(--muted);padding-left:12px}.detail-description h3{margin:0 0 12px;font-size:.85rem;color:var(--muted);text-transform:uppercase;font-weight:700}.description-content{font-size:.95rem;line-height:1.6;color:var(--text);white-space:pre-wrap;background:#fdfdfd;padding:16px;border-radius:8px;border:1px solid #eee;color:#333}:global(body.light-mode) .description-content{background:#fff}body:not(.light-mode) .description-content{background:#1e1e1e;border-color:#333;color:#ddd}.detail-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:12px;background:var(--bg)}.close-bottom-btn{padding:8px 20px;border:1px solid var(--border);background:transparent;color:var(--text);border-radius:6px;font-weight:600}.close-bottom-btn:hover{background:var(--card-bg)}.workout-mini-card.clickable,.week-workout-card.clickable{cursor:pointer}.workout-mini-card.clickable:hover,.week-workout-card.clickable:hover{background:rgba(var(--primary-rgb, 74, 144, 226),.1);border-color:var(--primary)}.week-legend-bar{margin-top:2rem;background:var(--card-bg);padding:1.5rem;border-radius:12px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;gap:12px;flex-shrink:0}:global(body.light-mode) .week-legend-bar{background:#fff;border:none;box-shadow:0 4px 20px #00000008}.legend-label{font-size:.75rem;font-weight:800;color:var(--muted);letter-spacing:.1em}.legend-content{font-size:.8rem;color:var(--muted);text-align:center;line-height:1.6;max-width:800px}.delete-wo-btn,.delete-mini-wo-btn{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:1rem;padding:2px 6px;border-radius:4px;transition:all .2s;display:flex;align-items:center;justify-content:center}.delete-wo-btn:hover,.delete-mini-wo-btn:hover{color:#f44;background:#ff444426}.delete-mini-wo-btn{font-size:.75rem;padding:1px 4px;margin-left:4px}.wo-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:4px}.wo-mini-content{display:flex;flex-direction:column;overflow:hidden;flex:1}.workout-mini-card{display:flex;justify-content:space-between;align-items:center;padding:6px 8px}.wo-mini-time{font-weight:700;color:var(--primary);font-size:.65rem;text-transform:uppercase}.wo-period-label{font-size:.7rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.cycling-home{padding:60px 20px;max-width:1200px;margin:0 auto;color:var(--text-primary);font-family:Inter,system-ui,-apple-system,sans-serif}.home-header{text-align:center;margin-bottom:60px;animation:fadeInDown .8s ease-out}.home-header h1{font-size:3.5rem;font-weight:800;margin-bottom:15px;background:#3764e1;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-1px}.home-header p{color:var(--muted, #a0a0a0);font-size:1.25rem;max-width:600px;margin:0 auto;line-height:1.6}.tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:30px;animation:fadeInUp 1s ease-out}.tool-card,.auth-section-card{background:#1a1a1a99;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:35px 30px;border-radius:20px;text-decoration:none;color:#3e6def;transition:all .4s cubic-bezier(.175,.885,.32,1.275);border:1px solid rgba(255,255,255,.05);display:flex;flex-direction:column;align-items:flex-start;position:relative;overflow:hidden;box-shadow:0 8px 32px #0000001a}.tool-card:before,.auth-section-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at top left,rgba(255,255,255,.05) 0%,transparent 50%);pointer-events:none}.tool-card:hover,.auth-section-card:hover{transform:translateY(-8px) scale(1.02);box-shadow:0 20px 40px #0003;border-color:#4facfe4d}.tool-card:hover .tool-icon{transform:scale(1.1) rotate(5deg)}.tool-icon{font-size:3rem;margin-bottom:20px;transition:transform .3s ease;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}.tool-card h3{margin:0 0 12px;font-size:1.5rem;font-weight:700;color:#fff}.tool-card p{margin:0;color:var(--muted, #a0a0a0);line-height:1.6;font-size:.95rem}.auth-section-card{border:1px solid rgba(79,172,254,.2);justify-content:center;align-items:center;text-align:center}.auth-section-card h3{margin:0 0 12px;color:#fff;font-size:1.6rem}.auth-section-card p{color:var(--muted, #a0a0a0);margin-bottom:25px}.action-btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 28px;border-radius:12px;text-decoration:none;font-weight:600;font-size:1rem;transition:all .3s ease;cursor:pointer;border:none}.primary-btn{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#000;box-shadow:0 4px 15px #4facfe4d}.primary-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px #4facfe80;color:#000}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}:root{--background-color: #050505;--background-card: #111111;--color-text: #ffffff;--color-text-emphasis: #ffffff;--color-text-muted: #888888;--color-border: #222222;--color-accent: #ffffff;--color-accent-subtle: rgba(255, 255, 255, .05);--subtitle: #523cd0;--subtitle-shadow: #523cd0;--gradient-heading: linear-gradient(to bottom right, #ffffff 40%, #dddddd);--nav-bg: rgba(30, 30, 30, .7);--nav-border: rgba(255, 255, 255, .08);--nav-shadow: 0 8px 32px rgba(0, 0, 0, .3);--font-family: "Inter", system-ui, -apple-system, sans-serif;--font-heading: "Inter", system-ui, sans-serif;--container-width: 1200px;--section-padding: 100px 0;--shadow-soft: 0 10px 40px -10px rgba(0, 0, 0, .5);--radius-lg: 24px;--radius-md: 12px}html{scroll-behavior:smooth}#root{width:100%}body{margin:0;padding:0;background-color:var(--background-color);color:var(--color-text);font-family:var(--font-family);line-height:1.6;-webkit-font-smoothing:antialiased;overflow:hidden;width:100%}body.light-mode{--background-color: #ffffff;--background-card: #f5f5f5;--color-text: #1a1a1a;--color-text-emphasis: #000000;--color-text-muted: #666666;--color-border: #e0e0e0;--color-accent: #000000;--color-accent-subtle: rgba(0, 0, 0, .03);--subtitle-shadow: #ffffff;--gradient-heading: linear-gradient(to bottom right, #000000 40%, #666666);--nav-bg: rgba(255, 255, 255, .85);--nav-border: rgba(0, 0, 0, .1);--nav-shadow: 0 8px 32px rgba(0, 0, 0, .1)}.section-container{max-width:var(--container-width);margin:0 auto;padding:40px;min-height:100vh;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box}@media(max-width:900px){.container{width:100%;padding:0 16px}.about-grid,.contact-wrapper{grid-template-columns:1fr;gap:40px}.contact-wrapper{padding:32px}.about-image{margin-bottom:20px}}@media(max-width:850px){.glass-nav{width:90%;gap:16px;bottom:20px;top:auto;left:50%;transform:translate(-50%);padding:12px 20px}.social-sidebar{bottom:100px}.hero-footer{bottom:100px;right:32px;left:auto;width:auto;text-align:right}.glass-nav ul{justify-content:center;gap:15%;width:100%}.social-sidebar{display:flex}.fixed-controls{top:20px;right:20px}.hero-content{position:absolute;top:25%;left:5%;transform:translateY(-50%);text-align:left;padding-top:0;margin-bottom:0;max-width:80%}.bio-snippet{position:relative;bottom:auto;right:auto;transform:none;text-align:left;align-items:flex-start;margin:2rem 0 0}}
