:root{--bg: #f6f3ff;--text: #1b1238;--muted: #6e6790;--card: rgba(255, 255, 255, .6);--border: rgba(124, 58, 237, .18);--accent: #7c3aed;--accent-2: #ec4899;--nav: rgba(255, 255, 255, .7)}[data-theme=dark]{--bg: #0b0718;--text: #f4f1ff;--muted: #a59cc4;--card: rgba(255, 255, 255, .05);--border: rgba(167, 139, 250, .22);--accent: #a78bfa;--accent-2: #f472b6;--nav: rgba(11, 7, 24, .7)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);overflow-x:hidden;transition:background .4s,color .4s}section{scroll-margin-top:90px}.blob{position:fixed;width:520px;height:520px;top:-160px;left:-140px;background:linear-gradient(135deg,var(--accent),var(--accent-2));filter:blur(90px);opacity:.45;z-index:-1;animation:morph 14s ease-in-out infinite alternate,drift 26s ease-in-out infinite}.blob-2{top:auto;left:auto;bottom:-180px;right:-160px;animation-delay:-6s,-10s}@keyframes morph{0%{border-radius:30% 70% 70% 30%/30% 30% 70% 70%}50%{border-radius:58% 42% 30% 70%/45% 60% 40% 55%}to{border-radius:42% 58% 70% 30%/60% 40%}}@keyframes drift{0%{transform:translate(0) rotate(0)}50%{transform:translate(90px,-60px) rotate(180deg)}to{transform:translate(0) rotate(360deg)}}.navbar{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:14px 6vw;background:var(--nav);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.logo{font-weight:800;font-size:1.4rem;color:var(--text);text-decoration:none;transition:letter-spacing .3s}.logo:hover{letter-spacing:3px}.logo span{color:var(--accent-2)}.nav-links{display:flex;gap:26px}.nav-link{position:relative;color:var(--muted);text-decoration:none;transition:color .3s}.nav-link:after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:2px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .35s}.nav-link:hover{color:var(--text)}.nav-link:hover:after{width:100%}.nav-tools{display:flex;align-items:center;gap:12px}.lang-switch{display:flex;background:var(--card);border:1px solid var(--border);border-radius:999px;padding:4px}.lang-switch button{border:none;background:transparent;color:var(--muted);padding:6px 12px;border-radius:999px;cursor:pointer;font-weight:600;transition:all .3s}.lang-switch button:hover{color:var(--text)}.lang-switch button.active{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff}.theme-btn{width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:var(--card);cursor:pointer;font-size:1.1rem;transition:transform .5s,box-shadow .3s}.theme-btn:hover{transform:rotate(360deg) scale(1.1);box-shadow:0 0 20px var(--accent)}main{max-width:1100px;margin:0 auto;padding:0 6vw}.section{padding:110px 0}.section-title{font-size:2.2rem;margin-bottom:36px;min-height:1.3em}.hero{min-height:calc(100vh - 70px);display:grid;grid-template-columns:1.3fr 1fr;align-items:center;gap:48px;padding:60px 0}.greet{color:var(--muted);font-size:1.1rem;margin:0}.hero h1{font-size:clamp(2.4rem,6vw,4.2rem);margin:8px 0;min-height:1.2em}.gradient-text{background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.role{font-size:1.5rem;margin:0 0 14px;color:var(--accent)}.subtitle{color:var(--muted);line-height:1.7;max-width:520px}.caret{color:var(--accent);margin-left:2px;animation:blink 1s steps(1) infinite}.caret.done{display:none}@keyframes blink{50%{opacity:0}}.btn{position:relative;overflow:hidden;display:inline-block;margin-top:26px;padding:14px 30px;border-radius:999px;border:none;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-weight:600;font-size:1rem;text-decoration:none;cursor:pointer;transition:transform .25s,box-shadow .35s}.btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent,rgba(255,255,255,.45),transparent);transform:translate(-100%);transition:transform .7s}.btn:hover{transform:translateY(-4px) scale(1.04);box-shadow:0 14px 35px -8px var(--accent)}.btn:hover:before{transform:translate(100%)}.tilt{transform:perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));transition:transform .2s ease-out}.avatar-card{width:min(340px,100%);aspect-ratio:1;margin-left:auto;border-radius:32px;background:var(--card);border:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);display:grid;place-items:center;box-shadow:0 30px 60px -20px #7c3aed66}.initials{font-size:5rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.acc-item{background:var(--card);border:1px solid var(--border);border-radius:18px;margin-bottom:14px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden;transition:border-color .3s,transform .3s}.acc-item:hover{border-color:var(--accent);transform:translate(6px)}.acc-btn{width:100%;display:flex;justify-content:space-between;align-items:center;background:none;border:none;color:var(--text);font:inherit;font-size:1.1rem;font-weight:600;padding:20px 24px;cursor:pointer;text-align:left}.acc-icon{font-size:1.6rem;color:var(--accent);transition:transform .4s}.acc-item.open .acc-icon{transform:rotate(45deg)}.acc-body{max-height:0;overflow:hidden;transition:max-height .5s ease}.acc-item.open .acc-body{max-height:200px}.acc-body p{margin:0;padding:0 24px 20px;color:var(--muted)}.project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px}.project{position:relative;height:240px;border-radius:24px;background:var(--card);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;flex-direction:column;justify-content:flex-end;padding:24px;overflow:hidden;transition:transform .4s,box-shadow .4s,border-color .4s}.project:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 30%,rgba(167,139,250,.35),transparent 60%);opacity:0;transition:opacity .4s}.project:hover{transform:translateY(-10px);border-color:var(--accent);box-shadow:0 25px 50px -15px var(--accent)}.project:hover:before{opacity:1}.project h3{margin:0;color:var(--muted)}.contact{text-align:center}.contact p{color:var(--muted);max-width:520px;margin:0 auto}.footer{margin-top:80px;padding:48px 6vw 32px;text-align:center;color:var(--muted);background:var(--card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border)}.socials{display:flex;justify-content:center;flex-wrap:wrap;gap:16px;margin-bottom:24px}.social{width:110px;padding:14px 0;border-radius:16px;border:1px solid var(--border);background:var(--bg);color:var(--text);text-decoration:none;font-weight:600;transition:transform .35s cubic-bezier(.34,1.56,.64,1),background .3s,color .3s,box-shadow .3s}.social:hover{transform:translateY(-8px) rotate(-4deg);background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;box-shadow:0 15px 30px -8px var(--accent)}.reveal{opacity:0;transform:translateY(50px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.8,.2,1)}.reveal.in{opacity:1;transform:none}@media (max-width: 800px){.hero{grid-template-columns:1fr}.avatar-card{width:220px;margin:0 auto}.nav-links{gap:14px;font-size:.9rem}.section-title{font-size:1.8rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:200;background:linear-gradient(90deg,var(--accent),var(--accent-2));transform:scaleX(var(--progress, 0));transform-origin:0 50%}.stars{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;pointer-events:none;opacity:.6;background-image:radial-gradient(1.5px 1.5px at 12% 18%,var(--accent),transparent),radial-gradient(1px 1px at 72% 32%,var(--accent-2),transparent),radial-gradient(1.5px 1.5px at 40% 66%,var(--accent),transparent),radial-gradient(1px 1px at 88% 78%,var(--accent-2),transparent),radial-gradient(1px 1px at 25% 90%,var(--accent),transparent);background-size:400px 400px;background-position:0 calc(var(--scroll, 0) * -.25px)}.section-hint{color:var(--muted);margin:-20px 0 40px}.solar{--solar-size: min(560px, 92vw);position:relative;width:var(--solar-size);height:var(--solar-size);margin:0 auto;transform:rotate(calc(var(--scroll, 0) * .03deg))}.sun{position:absolute;left:50%;top:50%;width:calc(var(--solar-size) * .2);height:calc(var(--solar-size) * .2);margin-left:calc(var(--solar-size) * -.1);margin-top:calc(var(--solar-size) * -.1);border-radius:50%;background:radial-gradient(circle at 35% 35%,#fde68a,var(--accent-2) 45%,var(--accent) 100%);box-shadow:0 0 60px var(--accent-2);display:grid;place-items:center;font-weight:800;font-size:calc(var(--solar-size) * .05);color:#fff;animation:pulse 4s ease-in-out infinite}.orbit{position:absolute;left:50%;top:50%;width:0;height:0;rotate:var(--start);animation:spin var(--dur) linear infinite}.orbit:before{content:"";position:absolute;left:calc(var(--r) * -1);top:calc(var(--r) * -1);width:calc(var(--r) * 2);height:calc(var(--r) * 2);border:1px dashed var(--border);border-radius:50%}.planet{--p: calc(var(--solar-size) * .1);position:absolute;left:calc(var(--r) - var(--p) / 2);top:calc(var(--p) / -2);width:var(--p);height:var(--p);border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.55),var(--c) 55%);box-shadow:0 0 22px -4px var(--c);color:#fff;display:grid;place-items:center;text-align:center;font-size:calc(var(--p) * .16);font-weight:700;line-height:1.1;text-shadow:0 1px 3px rgba(0,0,0,.4);animation:spin-back var(--dur) linear infinite;transition:box-shadow .3s}.planet:hover{box-shadow:0 0 40px 2px var(--c)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes spin-back{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes pulse{50%{transform:scale(1.06)}}.tags{display:flex;flex-wrap:wrap;gap:8px;padding:0 24px 20px}.tag{padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--muted);font-size:.9rem}.project{color:var(--text);text-decoration:none}.project .p-name{color:var(--text);margin:0 0 8px}.project p{margin:0 0 10px;color:var(--muted)}.p-stack{font-size:.8rem;color:var(--accent);font-weight:600}.project.soon{border-style:dashed;opacity:.6;justify-content:center;align-items:center;text-align:center}.project.soon:hover{opacity:1}@media (max-width: 800px){.solar{--solar-size: 92vw}}.nav-link.active{color:var(--text)}.nav-link.active:after{width:100%}.mouse-glow{position:fixed;left:0;top:0;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(167,139,250,.18),transparent 60%);transform:translate(calc(var(--mx, -999px) - 210px),calc(var(--my, -999px) - 210px));pointer-events:none;z-index:-1}.page{animation:pageIn .7s cubic-bezier(.2,.8,.2,1) both}@keyframes pageIn{0%{opacity:0;transform:translateY(24px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}.gradient-text{background-size:200% auto;animation:shimmer 6s linear infinite}@keyframes shimmer{to{background-position:200% center}}.marquee{overflow:hidden;margin:40px 0 20px;padding:18px 0;border-block:1px solid var(--border);-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}.marquee-track{display:flex;gap:48px;width:max-content;white-space:nowrap;font-size:1.4rem;font-weight:700;color:var(--muted);animation:marquee 28s linear infinite}.marquee-track span:nth-child(3n+1){color:var(--accent)}@keyframes marquee{to{transform:translate(-50%)}}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:20px}.stat{padding:28px;border-radius:24px;background:var(--card);border:1px solid var(--border);text-align:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .4s,border-color .4s}.stat:hover{transform:translateY(-6px);border-color:var(--accent)}.stat-value{font-size:2.6rem;font-weight:800;background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.stat-label{color:var(--muted)}.text-link{display:inline-block;margin-top:28px;color:var(--accent);font-weight:600;text-decoration:none;transition:letter-spacing .3s}.text-link:hover{letter-spacing:1px}.orbit:has(.planet:hover){animation-play-state:paused;z-index:5}.orbit:has(.planet:hover) .planet{animation-play-state:paused}.planet{transition:scale .35s ease,box-shadow .3s}.planet:hover{scale:1.7;font-size:calc(var(--p) * .2);box-shadow:0 0 40px 4px var(--c);z-index:10}.project.tilt-card{transition:transform .2s ease-out,box-shadow .4s,border-color .4s}.project.tilt-card:hover{transform:perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(-10px)}.review-form{display:grid;gap:14px;max-width:620px;margin:0 auto 60px;padding:28px;border-radius:24px;background:var(--card);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.field-label{display:grid;gap:8px;color:var(--muted);font-size:.9rem}.review-form input,.review-form textarea{font:inherit;padding:12px 16px;border-radius:14px;border:1px solid var(--border);background:var(--bg);color:var(--text);outline:none;transition:border-color .3s,box-shadow .3s}.review-form input:focus,.review-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px #7c3aed26}.review-form textarea{min-height:110px;resize:vertical}.review-form .btn{justify-self:start;margin-top:4px;border:none;cursor:pointer}.rating{display:flex;gap:6px}.rating button{background:none;border:none;font-size:1.6rem;line-height:1;cursor:pointer;color:var(--border);transition:transform .2s,color .2s}.rating button.on{color:#fbbf24}.rating button:hover{transform:scale(1.25)}.form-msg{color:var(--accent);font-weight:600;margin:0}.form-err{color:var(--accent-2);font-weight:600;margin:0}.review-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}.review{padding:24px;border-radius:22px;background:var(--card);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:pageIn .6s ease both;transition:transform .4s,border-color .4s}.review:hover{transform:translateY(-6px);border-color:var(--accent)}.review h4{margin:6px 0 4px}.review .meta{color:var(--muted);font-size:.85rem;margin-bottom:10px}.review p{margin:0;color:var(--muted);line-height:1.6}.r-stars{color:#fbbf24;letter-spacing:2px}.notfound{text-align:center;padding:140px 0}@media (max-width: 800px){.marquee-track{font-size:1.1rem}}.solar{transform:translateY(calc(var(--scroll, 0) * -.04px))}.solar.paused .orbit,.solar.paused .planet{animation-play-state:paused}@keyframes spin-back{0%{transform:rotate(calc(var(--start) * -1))}to{transform:rotate(calc(var(--start) * -1 - 360deg))}}.planet:after{content:attr(data-name);position:absolute;left:50%;bottom:calc(100% + 10px);translate:-50% 0;padding:4px 10px;border-radius:999px;background:var(--bg);border:1px solid var(--accent);color:var(--text);font-size:11px;font-weight:700;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .3s}.planet:hover:after{opacity:1}.sub-title{font-size:1.8rem;margin:0 0 28px}.soft-grid,.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px}.soft-card,.step-card{padding:26px;border-radius:22px;background:var(--card);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .4s,border-color .4s,box-shadow .4s}.soft-card:hover,.step-card:hover{transform:translateY(-8px);border-color:var(--accent);box-shadow:0 20px 40px -18px var(--accent)}.soft-card .idx,.step-card .idx{font-size:2rem;font-weight:800;background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.soft-card h3,.step-card h3{margin:10px 0 8px}.soft-card p,.step-card p{margin:0;color:var(--muted);line-height:1.6}.planet{cursor:pointer;filter:brightness(1);transition:scale .4s cubic-bezier(.34,1.56,.64,1),box-shadow .3s,filter .3s}.planet:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:2px solid var(--c);opacity:0;pointer-events:none}.planet:hover:before{animation:halo 1.2s ease-out infinite}@keyframes halo{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}.planet:hover{scale:1.45;filter:brightness(1.15);box-shadow:0 0 30px 6px var(--c);color:transparent;z-index:10}.planet:after{font-size:10px;letter-spacing:.3px;box-shadow:0 8px 20px -8px var(--c)}@media (prefers-reduced-motion: reduce){.planet:hover:before{animation:none}}.planet{filter:none;text-shadow:none;transition:width .4s cubic-bezier(.34,1.56,.64,1),height .4s cubic-bezier(.34,1.56,.64,1),left .4s cubic-bezier(.34,1.56,.64,1),top .4s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}.planet:hover{scale:1;filter:none;width:calc(var(--p) * 1.4);height:calc(var(--p) * 1.4);left:calc(var(--r) - var(--p) * .7);top:calc(var(--p) * -.7);color:transparent;text-shadow:none;box-shadow:0 0 36px 8px var(--c)}.planet:after{font-size:12px}.planet:hover:before{top:-6px;right:-6px;bottom:-6px;left:-6px}.orbit:before,.sun{pointer-events:none}html.custom-cursor,html.custom-cursor *{cursor:none!important}.cursor-dot{position:fixed;left:0;top:0;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:var(--accent-2);box-shadow:0 0 12px var(--accent-2);pointer-events:none;z-index:9999}.cursor-ring{position:fixed;left:0;top:0;width:36px;height:36px;margin:-18px 0 0 -18px;border:2px solid var(--accent);border-radius:50%;pointer-events:none;z-index:9998;transition:width .3s,height .3s,margin .3s,background .3s,border-color .3s}.cursor-ring.hover{width:64px;height:64px;margin:-32px 0 0 -32px;background:#a78bfa26;border-color:var(--accent-2)}.btn{transition:transform .25s,box-shadow .35s,translate .3s ease-out}.terminal{max-width:760px;margin:0 auto;border-radius:18px;overflow:hidden;background:#0d0a1f;color:#e9e4ff;border:1px solid var(--border);box-shadow:0 30px 60px -25px var(--accent);font-family:ui-monospace,Menlo,Consolas,monospace}.term-bar{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ffffff0f}.term-bar span{width:12px;height:12px;border-radius:50%;background:#f472b6}.term-bar span:nth-child(2){background:#fbbf24}.term-bar span:nth-child(3){background:#34d399}.term-bar em{margin-left:auto;font-style:normal;font-size:12px;color:#a59cc4}.term-body{padding:18px;min-height:200px;max-height:340px;overflow:auto;font-size:14px;line-height:1.6}.term-line{margin-bottom:10px}.term-out{margin:0;white-space:pre-wrap;color:#cbd5e1;font:inherit}.prompt{color:#34d399}.cmd{color:#a78bfa}.term-form{display:flex;align-items:center;gap:8px;padding:0 18px 18px}.term-form input{flex:1;background:transparent;border:none;outline:none;color:#e9e4ff;font:inherit;caret-color:var(--accent-2)}.timeline{position:relative;padding-left:36px;--fill: 0}.timeline:before,.timeline:after{content:"";position:absolute;left:10px;top:0;bottom:0;width:2px}.timeline:before{background:var(--border)}.timeline:after{background:linear-gradient(var(--accent),var(--accent-2));transform-origin:top;transform:scaleY(var(--fill))}.tl-item{position:relative;padding-bottom:36px}.tl-item:before{content:"";position:absolute;left:-32px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);box-shadow:0 0 14px var(--accent)}.tl-item h4{margin:0 0 6px;color:var(--accent);font-size:1.1rem}.tl-item p{margin:0;color:var(--muted);line-height:1.6}.party .orbit,.party .planet{animation-duration:2.5s!important}.party .gradient-text{animation-duration:1.2s!important;filter:hue-rotate(90deg)}.party .blob{filter:blur(90px) hue-rotate(160deg);animation-duration:4s,6s!important}.toast{position:fixed;left:0;right:0;bottom:28px;margin:0 auto;width:max-content;padding:14px 24px;border-radius:999px;background:var(--bg);border:1px solid var(--accent);color:var(--text);font-weight:700;z-index:300;box-shadow:0 20px 40px -12px var(--accent);animation:pageIn .5s ease both}@media (hover: none),(pointer: coarse){.cursor-dot,.cursor-ring{display:none}}.burger{display:none;width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:var(--card);color:var(--text);font-size:1.2rem;cursor:pointer;place-items:center}.to-top{position:fixed;right:24px;bottom:24px;width:48px;height:48px;border-radius:50%;border:1px solid var(--accent);background:var(--card);color:var(--text);font-size:1.3rem;cursor:pointer;z-index:150;opacity:0;transform:translateY(20px);pointer-events:none;transition:opacity .3s,transform .3s,box-shadow .3s}.to-top.show{opacity:1;transform:none;pointer-events:auto}.to-top:hover{box-shadow:0 0 24px var(--accent)}@media (max-width: 800px){.navbar{justify-content:space-between}.burger{display:grid}.nav-links{display:none;width:100%;flex-direction:column;gap:14px;padding:12px 0}.nav-links.open{display:flex}.nav-link{font-size:1.05rem;padding:6px 0}}.term-form input::placeholder{color:#6b6390;opacity:1}.chat-fab{position:fixed;left:24px;bottom:24px;z-index:160;padding:12px 18px;border-radius:999px;border:1px solid var(--accent);background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-weight:700;cursor:pointer;box-shadow:0 14px 30px -10px var(--accent);transition:transform .3s,box-shadow .3s}.chat-fab:hover{transform:translateY(-4px);box-shadow:0 20px 40px -10px var(--accent)}.chat-panel{position:fixed;left:24px;bottom:88px;z-index:170;width:min(380px,calc(100vw - 48px));height:460px;display:flex;flex-direction:column;border-radius:22px;background:var(--bg);border:1px solid var(--border);box-shadow:0 30px 60px -20px var(--accent);overflow:hidden;opacity:0;transform:translateY(20px) scale(.96);pointer-events:none;transition:opacity .3s,transform .3s}.chat-panel.open{opacity:1;transform:none;pointer-events:auto}.chat-head{padding:14px 18px;font-weight:700;background:var(--card);border-bottom:1px solid var(--border)}.chat-body{flex:1;padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.chat-intro{color:var(--muted);margin:auto 0;text-align:center}.chat-msg{max-width:85%;padding:10px 14px;border-radius:16px;line-height:1.5;font-size:.95rem;animation:pageIn .4s ease both}.chat-msg.user{align-self:flex-end;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border-bottom-right-radius:4px}.chat-msg.assistant{align-self:flex-start;background:var(--card);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px}.chat-msg.err{color:var(--accent-2)}.chat-msg.typing{color:var(--muted);font-style:italic}.chat-chips{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 12px}.chat-chips button{padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--muted);font:inherit;font-size:.85rem;cursor:pointer;transition:border-color .3s,color .3s}.chat-chips button:hover{border-color:var(--accent);color:var(--text)}.chat-form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border)}.chat-form input{flex:1;font:inherit;padding:10px 14px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--text);outline:none}.chat-form input:focus{border-color:var(--accent)}.chat-form button{padding:10px 16px;border-radius:999px;border:none;background:var(--accent);color:#fff;font-weight:700;cursor:pointer}.chat-form button:disabled{opacity:.5;cursor:default}@media (max-width: 800px){.chat-fab{left:16px;bottom:16px}.chat-panel{left:16px;bottom:76px}}
