:root{color-scheme:dark;--bg: #04060d;--bg-rgb: 4 6 13;--bg-alt: #070b16;--surface: rgba(18, 26, 48, .55);--surface-strong: rgba(24, 34, 60, .75);--surface-solid: #0b1120;--surface-card: rgba(16, 24, 45, .8);--border: rgba(59, 130, 246, .16);--border-strong: rgba(96, 165, 250, .4);--text: #e9eefb;--text-rgb: 233 238 251;--text-dim: #8b96b3;--text-faint: #4c5573;--accent: #60a5fa;--accent-soft: rgba(96, 165, 250, .14);--on-accent: #020308;--topbar-bg: rgba(4, 6, 13, .6);--dock-bg: rgba(9, 13, 24, .75);--track: rgba(255, 255, 255, .08);--track-soft: rgba(255, 255, 255, .02);--orb-tint: #0e1a33;--shadow-dock: 0 12px 40px rgba(0, 0, 0, .6);--shadow-panel: 0 24px 70px rgba(0, 0, 0, .55);--scene-fog: #04060d}[data-theme=light]{color-scheme:light;--bg: #eef2fb;--bg-rgb: 238 242 251;--bg-alt: #ffffff;--surface: rgba(255, 255, 255, .72);--surface-strong: rgba(255, 255, 255, .92);--surface-solid: #ffffff;--surface-card: rgba(255, 255, 255, .86);--border: rgba(37, 99, 235, .18);--border-strong: rgba(37, 99, 235, .42);--text: #0c1424;--text-rgb: 12 20 36;--text-dim: #4a5670;--text-faint: #78849f;--accent: #1d4ed8;--accent-soft: rgba(29, 78, 216, .1);--on-accent: #ffffff;--topbar-bg: rgba(238, 242, 251, .72);--dock-bg: rgba(255, 255, 255, .84);--track: rgba(12, 20, 36, .1);--track-soft: rgba(12, 20, 36, .03);--orb-tint: #d7e3fb;--shadow-dock: 0 12px 40px rgba(24, 45, 90, .16);--shadow-panel: 0 24px 70px rgba(24, 45, 90, .18);--scene-fog: #eef2fb}html.theme-ready body,html.theme-ready .topbar,html.theme-ready .dock-glass,html.theme-ready .glass,html.theme-ready .bot-panel{transition:background-color .35s ease,color .35s ease,border-color .35s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body{background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}ul{list-style:none}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea{font:inherit;color:inherit}::selection{background:#3b82f6;color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}@media (pointer: fine){body,a,button{cursor:none}}h1,h2,h3,h4,h5{font-family:Space Grotesk,ui-sans-serif,sans-serif;letter-spacing:-.01em;font-weight:700}.gradient-text{background:linear-gradient(135deg,#3b82f6,#06b6d4);-webkit-background-clip:text;background-clip:text;color:transparent}.eyebrow{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:8px;margin-bottom:14px}.eyebrow:before{content:"";width:22px;height:1px;background:var(--accent)}.section-title{font-size:clamp(28px,3.6vw,42px);font-weight:700;margin-bottom:14px}.section-lede{color:var(--text-dim);font-size:16px;max-width:620px;margin-bottom:44px}.page-header{margin-bottom:48px}.glass{background:var(--surface-card);border:1px solid var(--border);border-radius:20px;transition:border-color .25s ease}.glass:hover{border-color:var(--border-strong)}.tag{font-size:11.5px;font-weight:500;padding:5px 11px;border-radius:999px;background:#3b82f614;border:1px solid var(--border);color:var(--text-dim)}.btn{display:inline-flex;align-items:center;gap:8px;padding:13px 24px;border-radius:999px;font-weight:600;font-size:14px;border:1px solid transparent;transition:transform box-shadow border-color .18s ease}.btn.btn-primary{background:linear-gradient(135deg,#3b82f6,#06b6d4);color:var(--on-accent)}.btn.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 30px #3b82f666}.btn.btn-ghost{background:var(--surface);color:var(--text);border-color:var(--border)}.btn.btn-ghost:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 0 24px #3b82f673}.status-pill{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:500;color:var(--text-dim);padding:6px 14px;border-radius:999px;margin-bottom:20px;background:var(--surface);border:1px solid var(--border)}.status-pill .blip{width:7px;height:7px;border-radius:50%;background:#34d399;box-shadow:0 0 10px #34d399;animation:blip 1.8s ease-in-out infinite}@keyframes blip{50%{opacity:.4}}.scene-3d{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;display:block;transition:opacity .4s ease}[data-theme=light] .scene-3d{opacity:.42}.reveal-ready [data-reveal]{opacity:0;transform:perspective(1200px) translate3d(0,40px,-90px) rotateX(-11deg);transform-origin:50% 100%;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .95s cubic-bezier(.16,1,.3,1);will-change:transform,opacity}.reveal-ready [data-reveal].reveal-in{opacity:1;transform:none;will-change:auto}.reveal-ready [data-reveal=left]{transform:perspective(1200px) translate3d(-52px,12px,-70px) rotateY(9deg)}.reveal-ready [data-reveal=right]{transform:perspective(1200px) translate3d(52px,12px,-70px) rotateY(-9deg)}.reveal-ready [data-reveal=zoom]{transform:perspective(1200px) scale(.9) translateZ(-60px)}.reveal-ready [data-reveal=flip]{transform:perspective(1000px) rotateX(-28deg) translateZ(-60px);transform-origin:50% 0%}@media (prefers-reduced-motion: reduce){.reveal-ready [data-reveal]{opacity:1!important;transform:none!important}}[data-tilt3d]{--sp: 0;transform-style:preserve-3d;transform:perspective(1500px) rotateX(calc(var(--sp) * -5deg)) translateY(calc(var(--sp) * -10px));will-change:transform}@media (prefers-reduced-motion: reduce){[data-tilt3d]{transform:none}}.depth-layer{transform:translate3d(var(--tx, 0px),var(--ty, 0px),var(--layer-z, 30px));transition:transform .18s ease-out;will-change:transform}.theme-toggle{width:40px;height:40px;flex-shrink:0;border-radius:50%;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--accent);perspective:320px;transition:border-color box-shadow transform .22s ease}.theme-toggle:hover{border-color:var(--border-strong);box-shadow:0 0 24px #3b82f673;transform:translateY(-2px)}.theme-toggle .theme-toggle-cube{position:relative;width:18px;height:18px;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.16,1,.3,1)}.theme-toggle .face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden}.theme-toggle .face-light,.theme-toggle.is-light .theme-toggle-cube{transform:rotateY(180deg)}.topbar-actions{display:flex;align-items:center;gap:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.app-shell{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,64px);position:sticky;top:0;z-index:40;background:var(--topbar-bg);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--border)}.topbar .brand{display:flex;align-items:center;gap:10px;background:none;border:none;padding:0;cursor:pointer;text-decoration:none;color:var(--text)}.topbar .brand .brand-mark{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-family:Space Grotesk,ui-sans-serif,sans-serif;font-weight:700;font-size:14px;background:linear-gradient(135deg,#3b82f6,#06b6d4);color:var(--on-accent);box-shadow:0 0 24px #3b82f673}.topbar .brand .brand-name{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-weight:600;font-size:16px}.page-container{flex:1;width:100%;max-width:1180px;margin:0 auto;padding:40px clamp(20px,5vw,64px) 130px;animation:page-in .45s ease backwards}@keyframes page-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.dock{position:fixed;left:0;right:0;bottom:22px;display:flex;justify-content:center;z-index:50;padding:0 16px}.dock .dock-glass{display:flex;gap:4px;padding:8px;background:var(--dock-bg);border:1px solid var(--border-strong);border-radius:999px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow-dock),0 0 30px #3b82f614}.dock .dock-item{display:flex;align-items:center;gap:7px;padding:10px 16px;border-radius:999px;color:var(--text-dim);font-size:13px;font-weight:500;transition:color background .2s ease;white-space:nowrap;text-decoration:none}.dock .dock-item span{display:none}.dock .dock-item:hover{color:var(--text);background:#3b82f61a}.dock .dock-item.active{color:var(--on-accent);background:linear-gradient(135deg,#3b82f6,#06b6d4);box-shadow:0 0 24px #3b82f673}@media (min-width: 640px){.dock .dock-item span{display:inline}}.site-footer{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:24px clamp(20px,5vw,64px) 100px;font-size:12.5px;color:var(--text-faint);max-width:1180px;margin:0 auto;width:100%}.site-footer .footer-socials{display:flex;gap:14px}.site-footer .footer-socials a{color:var(--text-dim);transition:color .2s ease;display:flex;align-items:center}.site-footer .footer-socials a:hover{color:var(--accent)}.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;border-radius:50%;pointer-events:none;z-index:998;will-change:transform}.cursor-dot{width:6px;height:6px;background:var(--accent);box-shadow:0 0 8px var(--accent)}.cursor-ring{width:32px;height:32px;border:1px solid var(--border-strong);transition:scale .2s ease,border-color .2s ease;scale:1}.cursor-ring.active{scale:1.62;border-color:var(--accent)}@media (pointer: coarse){.cursor-dot,.cursor-ring{display:none}}.scroll-progress{position:fixed;top:0;left:0;height:2.5px;width:100%;background:linear-gradient(135deg,#3b82f6,#06b6d4);box-shadow:0 0 24px #3b82f673;z-index:60;transform:scaleX(0);transform-origin:0 50%;will-change:transform}.back-to-top{position:fixed;right:30px;bottom:94px;width:44px;height:44px}@media (max-width: 640px){.back-to-top{right:22px;bottom:156px}}.back-to-top{border-radius:50%;background:var(--surface-strong);border:1px solid var(--border-strong);display:flex;align-items:center;justify-content:center;color:var(--accent);z-index:50;opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity transform .25s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer}.back-to-top.show{opacity:1;pointer-events:auto;transform:translateY(0)}.back-to-top.show:hover{box-shadow:0 0 24px #3b82f673;border-color:var(--accent)}.toast{position:fixed;top:20px;right:20px;z-index:200;background:var(--surface-strong);border:1px solid var(--border-strong);border-radius:20px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:14px 18px;display:flex;align-items:center;gap:10px;font-size:13px;box-shadow:var(--shadow-panel);transform:translate(140%);transition:transform .4s cubic-bezier(.16,1,.3,1)}.toast.show{transform:translate(0)}.toast .toast-dot{width:8px;height:8px;border-radius:50%;background:#06b6d4;box-shadow:0 0 8px #06b6d4;flex-shrink:0}.loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;background:var(--bg);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;transition:opacity .5s ease,visibility .5s ease}.loader.hide{opacity:0;visibility:hidden;pointer-events:none}.loader .loader-mark{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-weight:700;font-size:34px;background:linear-gradient(135deg,#3b82f6,#06b6d4);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:.02em;animation:pulse-text 1.4s ease-in-out infinite}.loader .loader-bar{width:220px;height:3px;border-radius:99px;background:var(--track);overflow:hidden}.loader .loader-bar .loader-fill{height:100%;width:0%;background:linear-gradient(135deg,#3b82f6,#06b6d4);box-shadow:0 0 24px #3b82f673;transition:width .1s linear}.loader .loader-pct{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:12px;color:var(--text-faint);letter-spacing:.08em}@keyframes pulse-text{0%,to{opacity:1}50%{opacity:.5}}.particles-canvas{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}.hero{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center;padding-bottom:104px}@media (max-width: 860px){.hero{grid-template-columns:1fr}}.hero h1{font-size:clamp(34px,5.6vw,58px);line-height:1.08;font-weight:700;margin-bottom:14px;min-height:calc(2.2*clamp(34px,5.6vw,58px))}.hero .typed-role{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:clamp(16px,2vw,20px);color:var(--accent);margin-bottom:18px;display:block;min-height:28px}.hero .typed-role .cursor-blink{display:inline-block;width:2px;height:1em;background:var(--accent);margin-left:2px;vertical-align:-2px;animation:blink 1s step-end infinite}.hero .hero-lede{color:var(--text-dim);font-size:17px;max-width:520px;margin-bottom:26px;line-height:1.7}.hero .hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}.hero .hero-stats{display:flex;gap:28px;flex-wrap:wrap}.hero .hero-stats div{display:flex;flex-direction:column;gap:2px}.hero .hero-stats .num{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:26px;font-weight:700}.hero .hero-stats .lbl{font-size:12px;color:var(--text-faint)}@keyframes blink{50%{opacity:0}}.orb-frame{aspect-ratio:1/1;border-radius:32px;padding:3px;background:linear-gradient(135deg,#3b82f6,#06b6d4);box-shadow:0 0 60px #3b82f640;position:relative;transform-style:preserve-3d;transition:transform .12s ease-out}.orb-frame:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%),rgba(96,165,250,.16),transparent 60%);opacity:0;transition:opacity .25s;pointer-events:none;z-index:0}.orb-frame:hover:before{opacity:1}.orb-frame .orb-frame-inner{width:100%;height:100%;border-radius:29px;background:radial-gradient(circle at 35% 25%,var(--orb-tint),var(--bg) 70%);display:flex;align-items:center;justify-content:center;font-family:Space Grotesk,ui-sans-serif,sans-serif;font-weight:700;font-size:56px;color:var(--text);position:relative;overflow:hidden}.orb-frame .orb-frame-inner img{width:100%;height:100%;object-fit:cover;object-position:top center}.orb-frame .orb-chip{position:absolute;background:var(--surface-strong);border:1px solid var(--border-strong);border-radius:12px;padding:8px 12px;font-size:12px;font-weight:600;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:float 6s ease-in-out infinite;z-index:2}.orb-frame .orb-chip.c1{top:10%;left:8%}.orb-frame .orb-chip.c2{bottom:14%;right:6%;animation-delay:-2s}.orb-frame .orb-chip.c3{bottom:8%;left:14%;animation-delay:-4s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.home-section{padding-top:70px}.home-section .home-section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:32px;flex-wrap:wrap;align-items:flex-end}.home-section .link-arrow{color:var(--accent);font-size:14px;font-weight:600;display:inline-flex;gap:6px;align-items:center;text-decoration:none;transition:text-decoration .15s ease}.home-section .link-arrow:hover{text-decoration:underline}.home-section .skill-strip{display:flex;flex-wrap:wrap;gap:10px}.pillar-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}@media (max-width: 860px){.pillar-grid{grid-template-columns:1fr}}.pillar-card{padding:26px 24px 28px;position:relative;transform-style:preserve-3d;transition:transform .12s ease-out}.pillar-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%),rgba(96,165,250,.16),transparent 60%);opacity:0;transition:opacity .25s;pointer-events:none;z-index:0}.pillar-card:hover:before{opacity:1}.pillar-card h3{font-size:17px;margin:16px 0 9px;position:relative;z-index:1}.pillar-card p{color:var(--text-dim);font-size:14px;line-height:1.68;position:relative;z-index:1}.pillar-card .pillar-icon{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:#3b82f61f;border:1px solid var(--border);color:var(--accent);position:relative;z-index:1}.filter-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:32px}.filter-row .filter-btn{padding:9px 16px;border-radius:999px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;transition:all .18s ease}.filter-row .filter-btn:hover{color:var(--text);border-color:var(--border-strong)}.filter-row .filter-btn.active{background:linear-gradient(135deg,#3b82f6,#06b6d4);color:var(--on-accent);border-color:transparent;box-shadow:0 0 24px #3b82f673}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px}.project-thumb{position:relative;height:158px;flex-shrink:0;overflow:hidden;display:flex;flex-direction:column;background:radial-gradient(circle at 28% 0%,#0f1c38,#04060d 78%);border-bottom:1px solid var(--border)}.project-thumb .thumb-wash{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.18;transition:opacity .4s ease}.project-thumb:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(96,165,250,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(96,165,250,.07) 1px,transparent 1px);background-size:22px 22px;pointer-events:none}.project-thumb .thumb-sheen{position:absolute;top:0;bottom:0;width:45%;left:-60%;background:linear-gradient(100deg,transparent,rgba(96,165,250,.14),transparent);pointer-events:none;z-index:3}.project-thumb .thumb-chrome{position:relative;z-index:2;display:flex;align-items:center;gap:5px;padding:10px 12px 8px;flex-shrink:0}.project-thumb .thumb-chrome .thumb-dot{width:6px;height:6px;border-radius:50%;background:#60a5fa52}.project-thumb .thumb-chrome .thumb-dot:first-child{background:#f8717180}.project-thumb .thumb-chrome .thumb-dot:nth-child(2){background:#fbbf2480}.project-thumb .thumb-chrome .thumb-dot:nth-child(3){background:#34d39980}.project-thumb .thumb-chrome .thumb-crumb{display:inline-flex;align-items:center;gap:5px;margin-left:6px;padding:3px 9px;border-radius:999px;background:#04060d8c;border:1px solid var(--border);font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:78%;transition:color .25s ease}.project-thumb .thumb-chrome .thumb-crumb svg{flex-shrink:0;color:#60a5fa}.project-thumb .thumb-stage{position:relative;z-index:2;flex:1;min-height:0;padding:0 10px 10px}.project-thumb .thumb-stage svg{width:100%;height:100%;display:block;overflow:visible}.thumb-stage .tl-dim{fill:#e9eefb1a}.thumb-stage .tl-mid{fill:#60a5fa57}.thumb-stage .tl-accent{fill:#60a5fa}.thumb-stage .tl-track{fill:#3b82f60d;stroke:#3b82f624;stroke-width:1}.thumb-stage .tl-card{fill:#101c36d9;stroke:#3b82f633;stroke-width:1}.thumb-stage .tl-grid{stroke:#e9eefb12;stroke-width:1}.thumb-stage .tl-num{fill:#e9eefb;font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:15px;font-weight:700}.thumb-stage .tl-cell{transform-origin:center;animation:tl-pop .4s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i) * 22ms)}.thumb-stage .tl-s0{fill:#e9eefb0f}.thumb-stage .tl-s1{fill:#06b6d48c}.thumb-stage .tl-s2{fill:#fbbf24b3}.thumb-stage .tl-s3{fill:#3b82f62e;stroke:#60a5fa;stroke-width:1.5}.thumb-stage .tl-ring-bg{fill:none;stroke:#e9eefb12;stroke-width:7}.thumb-stage .tl-ring-fill{fill:none;stroke:#06b6d4;stroke-width:7;stroke-linecap:round;transform:rotate(-90deg);transform-origin:228px 58px;stroke-dasharray:var(--c);stroke-dashoffset:var(--off);animation:tl-ring 1.3s cubic-bezier(.16,1,.3,1) .15s both}.thumb-stage .tl-kcard{animation:tl-rise .5s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i) * 60ms)}.thumb-stage .tl-card-live{stroke:#60a5fa;stroke-width:1.4;fill:#3b82f629}.thumb-stage .tl-finder{fill:none;stroke:#60a5fa;stroke-width:3.5}.thumb-stage .tl-qr{fill:#06b6d49e;animation:tl-fade .5s ease both;animation-delay:calc(var(--i) * 55ms)}.thumb-stage .tl-link{stroke:#e9eefb1f;stroke-width:2;stroke-dasharray:4 4}.thumb-stage .tl-link-done{stroke:#06b6d499;stroke-dasharray:none}.thumb-stage .tl-step{animation:tl-fade .45s ease both;animation-delay:calc(var(--i) * .11s)}.thumb-stage .tl-node-done{fill:#06b6d4d9;stroke:none}.thumb-stage .tl-node-live{fill:#3b82f633;stroke:#60a5fa;stroke-width:2}.thumb-stage .tl-node-idle{fill:none;stroke:#e9eefb29;stroke-width:2;stroke-dasharray:3 3}.thumb-stage .tl-node-pulse{fill:none;stroke:#60a5fa;stroke-width:1.5;transform-origin:186px 34px;animation:tl-pulse 2.2s ease-out infinite}.thumb-stage .tl-check{fill:none;stroke:#041022;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.thumb-stage .tl-sign{fill:none;stroke:#60a5fabf;stroke-width:2;stroke-linecap:round;stroke-dasharray:60;animation:tl-draw 1.6s ease .4s both}.thumb-stage .tl-bar{fill:#3b82f666;transform-origin:bottom;animation:tl-grow .65s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i) * 55ms)}.thumb-stage .tl-trend{fill:none;stroke:#06b6d4;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:340;animation:tl-draw 1.5s ease .3s both}.thumb-stage .tl-point{fill:#04060d;stroke:#06b6d4;stroke-width:2;animation:tl-fade .4s ease both;animation-delay:calc(.6s + var(--i) * 60ms)}.thumb-stage .tl-up{fill:#34d399}.thumb-stage .tl-avatar-pulse{transform-origin:24px 20px}.thumb-stage .tl-bubble{animation:tl-rise .5s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i) * .14s)}.thumb-stage .tl-bubble-user{fill:#3b82f64d;stroke:#60a5fa8c;stroke-width:1}.thumb-stage .tl-typing{fill:#60a5fa;animation:tl-bob 1.25s ease-in-out infinite;animation-delay:calc(var(--i) * .16s)}.thumb-stage .tl-row{animation:tl-rise .5s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i) * 90ms)}.thumb-stage .tl-dot-ok{fill:#34d399}.thumb-stage .tl-dot-idle{fill:#e9eefb2e}@keyframes tl-pop{0%{opacity:0;transform:scale(.4)}}@keyframes tl-fade{0%{opacity:0}}@keyframes tl-rise{0%{opacity:0;transform:translateY(10px)}}@keyframes tl-grow{0%{transform:scaleY(0)}}@keyframes tl-bob{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@keyframes tl-draw{0%{stroke-dashoffset:340}to{stroke-dashoffset:0}}@keyframes tl-ring{0%{stroke-dashoffset:var(--c)}}@keyframes tl-pulse{0%{opacity:.7;transform:scale(1)}70%,to{opacity:0;transform:scale(1.75)}}@keyframes tl-sheen{to{left:115%}}.project-card{background:var(--surface-card);border:1px solid var(--border);border-radius:20px;transition:border-color .25s ease}.project-card:hover{border-color:var(--border-strong)}.project-card{position:relative;transform-style:preserve-3d;transition:transform .12s ease-out}.project-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%),rgba(96,165,250,.16),transparent 60%);opacity:0;transition:opacity .25s;pointer-events:none;z-index:0}.project-card:hover:before{opacity:1}.project-card{overflow:hidden;display:flex;flex-direction:column;cursor:pointer;color:inherit;text-decoration:none}.project-card:hover .project-thumb .thumb-wash,.project-card:focus-visible .project-thumb .thumb-wash{opacity:.3}.project-card:hover .project-thumb .thumb-crumb,.project-card:focus-visible .project-thumb .thumb-crumb{color:var(--text)}.project-card:hover .thumb-sheen,.project-card:focus-visible .thumb-sheen{animation:tl-sheen .9s ease-out}.project-card:hover .click-hint,.project-card:focus-visible .click-hint{color:var(--accent)}.project-card .project-body{padding:22px;display:flex;flex-direction:column;gap:12px;flex:1}.project-card .project-body h3{font-size:17px;font-weight:600}.project-card .project-body p{font-size:13.5px;color:var(--text-dim);flex:1;line-height:1.6}.project-card .project-body .project-tech{display:flex;flex-wrap:wrap;gap:6px}.project-card .project-body .project-category{width:fit-content}.project-card .project-body .click-hint{font-size:12.5px;font-weight:600;color:var(--text-faint);display:inline-flex;align-items:center;gap:4px;margin-top:4px;transition:color .2s ease}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:rgb(var(--bg-rgb)/.78);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:150;display:none;padding:24px;overflow-y:auto;overscroll-behavior:contain}@media (max-width: 640px){.modal-backdrop{padding:14px}}.modal-backdrop.show{display:flex;align-items:center;justify-content:center}.modal-backdrop .modal{background:var(--surface-card);border:1px solid var(--border);border-radius:20px;transition:border-color .25s ease}.modal-backdrop .modal:hover{border-color:var(--border-strong)}.modal-backdrop .modal{backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);max-width:560px;width:100%;max-height:min(85vh,780px);position:relative;display:flex;flex-direction:column;overflow:hidden}.modal-backdrop .modal .modal-close{position:absolute;top:14px;right:14px;width:32px;height:32px;border-radius:50%;background:var(--surface-strong);border:1px solid var(--border-strong);display:flex;align-items:center;justify-content:center;font-size:18px;z-index:10;cursor:pointer;color:var(--text)}.modal-backdrop .modal .modal-thumb{height:200px;flex-shrink:0;border-radius:20px 20px 0 0}.modal-backdrop .modal .modal-thumb .thumb-wash{opacity:.26}@media (max-width: 640px){.modal-backdrop .modal .modal-thumb{height:150px}}.modal-backdrop .modal .modal-body{padding:28px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.modal-backdrop .modal .modal-body::-webkit-scrollbar{width:8px}.modal-backdrop .modal .modal-body::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}.modal-backdrop .modal .modal-body .modal-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.modal-backdrop .modal .modal-body .modal-category{display:inline-block}.modal-backdrop .modal .modal-body .status-tag{background:#34d3991f;border-color:#34d39959;color:#34d399}.modal-backdrop .modal .modal-body .modal-subhead{font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);margin-bottom:12px}.modal-backdrop .modal .modal-body .modal-highlights{margin-bottom:20px;display:flex;flex-direction:column;gap:9px}.modal-backdrop .modal .modal-body .modal-highlights li{position:relative;padding-left:20px;font-size:13.8px;line-height:1.6;color:var(--text-dim)}.modal-backdrop .modal .modal-body .modal-highlights li:before{content:"";position:absolute;left:3px;top:8px;width:6px;height:6px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#06b6d4)}.modal-backdrop .modal .modal-body .modal-metrics{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.modal-backdrop .modal .modal-body .modal-metrics .metric{flex:1;min-width:130px;padding:12px 14px;border-radius:10px;background:#3b82f612;border:1px solid var(--border);display:flex;flex-direction:column;gap:2px}.modal-backdrop .modal .modal-body .modal-metrics .metric-v{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:15px;font-weight:600;color:var(--text)}.modal-backdrop .modal .modal-body .modal-metrics .metric-k{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.modal-backdrop .modal .modal-body h3{font-size:22px;margin-bottom:10px}.modal-backdrop .modal .modal-body p{color:var(--text-dim);font-size:14.5px;margin-bottom:18px;line-height:1.7}.modal-backdrop .modal .modal-body .project-tech{display:flex;flex-wrap:wrap;gap:8px}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}.skill-card{background:var(--surface-card);border:1px solid var(--border);border-radius:20px;transition:border-color .25s ease}.skill-card:hover{border-color:var(--border-strong)}.skill-card{padding:26px}.skill-card .skill-card-label{display:flex;align-items:center;gap:9px;font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin-bottom:22px}.skill-card .skill-card-icon{width:28px;height:28px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#3b82f61f;border:1px solid var(--border);color:var(--accent)}.skill-card.is-accent .skill-card-label{color:var(--accent)}.skill-card.is-accent .skill-card-icon{background:#3b82f633;border-color:var(--border-strong)}.ring-row{display:flex;align-items:center;gap:14px;margin-bottom:18px}.ring-row:last-child{margin-bottom:0}.ring-row .ring-svg{flex-shrink:0;transform:rotate(-90deg)}.ring-row .ring-bg{fill:none;stroke:var(--track);stroke-width:5}.ring-row .ring-fill{fill:none;stroke:url(#ringGrad);stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset 1.2s cubic-bezier(.16,1,.3,1)}.ring-row .ring-name{font-size:13.5px;color:var(--text)}.ring-row .ring-pct{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:11.5px;color:var(--text-faint);margin-top:2px}.about-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:40px;align-items:start}@media (max-width: 860px){.about-grid{grid-template-columns:1fr}}.about-photo{aspect-ratio:4/5;border-radius:20px;padding:3px;background:linear-gradient(135deg,#3b82f6,#06b6d4);box-shadow:0 0 50px #3b82f633}.about-photo .about-photo-inner{width:100%;height:100%;border-radius:17px;background:radial-gradient(circle at 30% 20%,var(--orb-tint),var(--bg) 75%);overflow:hidden}.about-photo .about-photo-inner img{width:100%;height:100%;object-fit:cover;object-position:top center}.about-facts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}.about-facts .fact-card{background:var(--surface-card);border:1px solid var(--border);border-radius:20px;transition:border-color .25s ease}.about-facts .fact-card:hover{border-color:var(--border-strong)}.about-facts .fact-card{padding:16px}.about-facts .fact-card .fact-label{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.about-facts .fact-card .fact-value{font-size:14px;font-weight:600}.about-copy p{color:var(--text-dim);font-size:15px;line-height:1.75;margin-bottom:16px}.about-copy p:last-child{margin-bottom:0}.timeline{position:relative;padding-left:26px;margin-top:8px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:1px;background:var(--border-strong)}.timeline .timeline-item{position:relative;padding-bottom:32px}.timeline .timeline-item:last-child{padding-bottom:0}.timeline .timeline-item:before{content:"";position:absolute;left:-26px;top:4px;width:11px;height:11px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#06b6d4);box-shadow:0 0 10px #3b82f699}.timeline .timeline-item .item-period{font-size:12px;color:var(--accent);font-weight:600;margin-bottom:4px}.timeline .timeline-item h4{font-size:16px;font-weight:600;margin-bottom:6px}.timeline .timeline-item p{font-size:13.5px;color:var(--text-dim);line-height:1.65}.contact-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:24px}@media (max-width: 860px){.contact-grid{grid-template-columns:1fr}}.contact-info{background:var(--surface-card);border:1px solid var(--border);border-radius:20px;transition:border-color .25s ease}.contact-info:hover{border-color:var(--border-strong)}.contact-info{padding:28px;display:flex;flex-direction:column;gap:22px}.contact-info .contact-info-title h3{font-size:18px;margin-bottom:6px}.contact-info .contact-info-title p{color:var(--text-dim);font-size:14px}.contact-info .contact-links{display:flex;flex-direction:column;gap:14px}.contact-info .contact-links a,.contact-info .contact-links .contact-location{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text-dim);transition:color .2s ease;text-decoration:none}.contact-info .contact-links a:hover,.contact-info .contact-links .contact-location:hover{color:var(--accent)}.contact-info .contact-links a .icon-wrap,.contact-info .contact-links .contact-location .icon-wrap{width:34px;height:34px;border-radius:10px;background:#3b82f614;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--accent)}.contact-form{background:var(--surface-card);border:1px solid var(--border);border-radius:20px;transition:border-color .25s ease}.contact-form:hover{border-color:var(--border-strong)}.contact-form{padding:28px;display:flex;flex-direction:column;gap:16px}.contact-form .field{display:flex;flex-direction:column;gap:7px}.contact-form .field label{font-size:12px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em}.contact-form .field input,.contact-form .field textarea{background:var(--track-soft);border:1px solid var(--border);border-radius:10px;padding:12px 14px;color:var(--text);font-size:14px;resize:vertical;width:100%;transition:border-color .2s ease}.contact-form .field input:focus,.contact-form .field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #3b82f626;outline:none}.contact-form .field input:disabled,.contact-form .field textarea:disabled{opacity:.55;cursor:not-allowed}.contact-form .field .field-error{font-size:11.5px;color:#f87171;display:none}.contact-form .field.invalid input,.contact-form .field.invalid textarea{border-color:#f87171}.contact-form .field.invalid .field-error{display:block}.contact-form .form-submit{align-self:flex-start}.contact-form .form-submit:disabled{opacity:.6;cursor:wait;transform:none;box-shadow:none}.contact-form .form-submit .spin{animation:spin .8s linear infinite}.contact-form .hp-field{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}.contact-form .form-success,.contact-form .form-error,.contact-form .form-note{display:none;align-items:flex-start;gap:8px;padding:11px 14px;border-radius:10px;font-size:13px;line-height:1.55}.contact-form .form-success svg,.contact-form .form-error svg,.contact-form .form-note svg{flex-shrink:0;margin-top:1px}.contact-form .form-success.show,.contact-form .form-error.show,.contact-form .form-note.show{display:flex}.contact-form .form-note{border:1px solid rgba(251,191,36,.35);background:#fbbf2412;color:#fbbf24}.contact-form .form-note strong{color:var(--text);font-weight:600}.contact-form .form-success{border:1px solid rgba(6,182,212,.3);background:#06b6d40f;color:#06b6d4}.contact-form .form-error{border:1px solid rgba(248,113,113,.35);background:#f8717112;color:#f87171}.contact-form .form-error a{color:var(--text);text-decoration:underline;text-underline-offset:2px;white-space:nowrap}.contact-form .form-error a:hover{color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}.bot-launcher-wrap{position:fixed;right:24px;bottom:26px;z-index:120;display:flex;align-items:center;gap:10px}@media (max-width: 640px){.bot-launcher-wrap{bottom:92px;right:16px}}.bot-launcher{position:relative;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#06b6d4);color:var(--on-accent);display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #3b82f66b,0 0 24px #3b82f673;transition:transform box-shadow .25s ease;cursor:pointer}.bot-launcher .bot-launcher-face{display:flex;align-items:center;justify-content:center;transition:transform .35s cubic-bezier(.16,1,.3,1)}.bot-launcher:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 16px 40px #3b82f68c,0 0 40px #3b82f6a6}.bot-launcher.is-open{background:var(--surface-strong);color:var(--accent);border:1px solid var(--border-strong);box-shadow:var(--shadow-panel)}.bot-launcher.is-open .bot-launcher-face{transform:rotate(90deg)}.bot-launcher .bot-launcher-pulse{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2px solid rgba(96,165,250,.55);animation:bot-pulse 2.6s ease-out infinite;pointer-events:none}@keyframes bot-pulse{0%{transform:scale(1);opacity:.7}70%{transform:scale(1.55);opacity:0}to{transform:scale(1.55);opacity:0}}.bot-teaser{position:relative;background:var(--surface-strong);border:1px solid var(--border-strong);border-radius:20px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:10px 30px 10px 14px;font-size:12.5px;font-weight:500;color:var(--text);white-space:nowrap;box-shadow:var(--shadow-panel);animation:teaser-in .5s cubic-bezier(.16,1,.3,1) both}@media (max-width: 640px){.bot-teaser{display:none}}.bot-teaser .bot-teaser-close{position:absolute;top:6px;right:7px;color:var(--text-faint);display:flex}.bot-teaser .bot-teaser-close:hover{color:var(--text)}@keyframes teaser-in{0%{opacity:0;transform:translate(14px) scale(.94)}to{opacity:1;transform:none}}.bot-panel{position:fixed;right:24px;bottom:96px;z-index:120;width:382px;max-width:calc(100vw - 32px);max-height:min(620px,100vh - 150px);display:flex;flex-direction:column;overflow:hidden;background:var(--surface-strong);border:1px solid var(--border-strong);border-radius:20px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow-panel);opacity:0;visibility:hidden;pointer-events:none;transform-origin:100% 100%;transform:perspective(1200px) rotateX(14deg) translate3d(0,26px,-60px) scale(.94);transition:opacity .28s ease,transform .42s cubic-bezier(.16,1,.3,1),visibility 0s linear .42s}.bot-panel.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition:opacity .28s ease,transform .42s cubic-bezier(.16,1,.3,1),visibility 0s}@media (max-width: 640px){.bot-panel{right:8px;left:8px;bottom:158px;width:auto;max-width:none;max-height:calc(100vh - 240px)}}.bot-head{display:flex;align-items:center;gap:11px;padding:13px 12px 13px 15px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(59,130,246,.1),transparent);flex-shrink:0}.bot-head .bot-head-meta{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.bot-head .bot-head-meta strong{font-family:Space Grotesk,ui-sans-serif,sans-serif;font-size:14px;font-weight:600}.bot-head .bot-status{font-size:11px;color:var(--text-dim);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bot-head .bot-status-dot{width:6px;height:6px;border-radius:50%;background:#34d399;box-shadow:0 0 8px #34d399;flex-shrink:0;animation:blip 1.8s ease-in-out infinite}.bot-icon-btn{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--text-dim);flex-shrink:0;transition:color background .18s ease}.bot-icon-btn:hover{color:var(--text);background:#3b82f61f}.bot-log{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:16px 15px 6px;display:flex;flex-direction:column;gap:14px;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.bot-log::-webkit-scrollbar{width:7px}.bot-log::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}.bot-msg{display:flex;gap:9px;align-items:flex-end;animation:msg-in .4s cubic-bezier(.16,1,.3,1) both}.bot-msg.is-user{justify-content:flex-end}.bot-msg.is-user .bot-bubble{background:linear-gradient(135deg,#3b82f6,#06b6d4);color:var(--on-accent);border:none;border-bottom-right-radius:5px;font-weight:500}.bot-msg.is-bot .bot-bubble{border-bottom-left-radius:5px}.bot-msg .bot-avatar{flex-shrink:0;margin-bottom:2px}@keyframes msg-in{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}.bot-bubble{max-width:84%;padding:11px 13px;border-radius:15px;background:var(--surface);border:1px solid var(--border);font-size:13.4px;line-height:1.62;color:var(--text);word-break:break-word}.bot-bubble p+p{margin-top:9px}.bot-bubble .bot-bullets{margin:9px 0 2px;padding:0;display:flex;flex-direction:column;gap:6px}.bot-bubble .bot-bullets li{position:relative;padding-left:15px;color:var(--text-dim);font-size:12.8px}.bot-bubble .bot-bullets li:before{content:"";position:absolute;left:2px;top:8px;width:5px;height:5px;border-radius:50%;background:var(--accent)}.bot-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.bot-action{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;font-size:12.2px;font-weight:600;color:var(--on-accent);background:linear-gradient(135deg,#3b82f6,#06b6d4);border:none;cursor:pointer;text-decoration:none;transition:transform box-shadow .18s ease}.bot-action:hover{transform:translateY(-1px);box-shadow:0 6px 18px #3b82f666}.bot-typing{display:flex;gap:5px;padding:14px 15px}.bot-typing i{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:typing 1.3s ease-in-out infinite}.bot-typing i:nth-child(2){animation-delay:.16s}.bot-typing i:nth-child(3){animation-delay:.32s}@keyframes typing{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.bot-chips{display:flex;flex-wrap:wrap;gap:7px;padding:10px 15px 4px;flex-shrink:0}.bot-chip{padding:6px 12px;border-radius:999px;font-size:12px;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid var(--border);cursor:pointer;transition:background border-color transform .18s ease}.bot-chip:hover{border-color:var(--border-strong);transform:translateY(-1px)}.bot-input{display:flex;align-items:center;gap:9px;padding:12px 13px 13px;border-top:1px solid var(--border);flex-shrink:0}.bot-input input{flex:1;min-width:0;padding:11px 14px;border-radius:999px;background:var(--track-soft);border:1px solid var(--border);font-size:13.2px;color:var(--text);outline:none;transition:border-color background .18s ease}.bot-input input::placeholder{color:var(--text-faint)}.bot-input input:focus{border-color:var(--border-strong);background:#3b82f60f}.bot-input input:disabled{opacity:.6}.bot-input button{width:40px;height:40px;flex-shrink:0;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#06b6d4);color:var(--on-accent);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform box-shadow opacity .18s ease}.bot-input button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 22px #3b82f673}.bot-input button:disabled{opacity:.4;cursor:not-allowed}.bot-avatar{position:relative;width:var(--size, 38px);height:var(--size, 38px);display:inline-block;flex-shrink:0;perspective:260px}.bot-avatar .bot-avatar-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:1px solid rgba(96,165,250,.45);transform-style:preserve-3d}.bot-avatar .bot-avatar-ring.r1{animation:ring-spin-a 5.5s linear infinite}.bot-avatar .bot-avatar-ring.r2{top:12%;right:12%;bottom:12%;left:12%;border-color:#06b6d480;animation:ring-spin-b 4s linear infinite}.bot-avatar .bot-avatar-core{position:absolute;top:22%;right:22%;bottom:22%;left:22%;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#06b6d4);box-shadow:0 0 12px #3b82f699;display:flex;align-items:center;justify-content:center;gap:16%}.bot-avatar .bot-eye{width:15%;height:32%;min-width:2px;border-radius:99px;background:var(--on-accent);animation:bot-blink 4.2s ease-in-out infinite}.bot-avatar .bot-mouth{position:absolute;bottom:18%;left:50%;width:34%;height:2px;border-radius:99px;background:var(--on-accent);opacity:.75;transform:translate(-50%);transform-origin:center}.bot-avatar.is-thinking .bot-avatar-ring.r1{animation-duration:1.4s;border-color:#60a5facc}.bot-avatar.is-thinking .bot-avatar-ring.r2{animation-duration:1s}.bot-avatar.is-thinking .bot-eye{animation:bot-think .9s ease-in-out infinite}.bot-avatar.is-thinking .bot-mouth{animation:bot-mouth .9s ease-in-out infinite}@keyframes ring-spin-a{to{transform:rotateY(360deg)}}@keyframes ring-spin-b{to{transform:rotateX(360deg)}}@keyframes bot-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.14)}}@keyframes bot-think{0%,to{transform:scaleY(1)}50%{transform:scaleY(.45)}}@keyframes bot-mouth{0%,to{transform:translate(-50%) scaleX(1)}50%{transform:translate(-50%) scaleX(.5)}}.bot-panel:not(.is-open) .bot-avatar-ring,.bot-panel:not(.is-open) .bot-eye,.bot-panel:not(.is-open) .bot-mouth,.bot-panel:not(.is-open) .bot-typing i{animation:none}@media (prefers-reduced-motion: reduce){.bot-avatar-ring,.bot-eye,.bot-mouth,.bot-launcher-pulse{animation:none!important}}@media (pointer: fine){.bot-panel input,.bot-panel textarea{cursor:text}}
