:root{--bg:#fff;--bg-alt:#f5f5f7;--bg-dark:#161617;--text:#1d1d1f;--text-2:#6e6e73;--text-3:#86868b;--text-on-dark:#f5f5f7;--blue:#0071e3;--blue-hover:#0077ed;--blue-soft:#2997ff;--border:#0000001a;--radius:18px;--nav-h:52px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.55}img{max-width:100%;display:block}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1068px;margin:0 auto;padding:0 22px}section{scroll-margin-top:calc(var(--nav-h) + 8px)}.nav{z-index:50;height:var(--nav-h);-webkit-backdrop-filter:saturate(180%)blur(20px);background:#ffffffd1;border-bottom:1px solid #0000000f;position:fixed;top:0;left:0;right:0}.nav-inner{justify-content:space-between;align-items:center;max-width:1068px;height:100%;margin:0 auto;padding:0 22px;display:flex}.brand{color:var(--text);letter-spacing:-.01em;cursor:pointer;align-items:center;gap:8px;font-size:17px;font-weight:600;text-decoration:none;display:flex}.brand:hover{text-decoration:none}.brand-mark{color:#fff;background:linear-gradient(135deg,#0071e3,#42a5ff);border-radius:7px;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:700;display:inline-flex}.nav-links{align-items:center;gap:26px;display:none}.nav-links a{color:var(--text-2);cursor:pointer;font-size:14px;font-weight:400}.nav-links a:hover{color:var(--text);text-decoration:none}.nav-ask{display:none}.nav-actions{align-items:center;gap:10px;display:flex}.icon-btn{cursor:pointer;width:36px;height:36px;color:var(--text);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:#0000000f}.mobile-menu{top:var(--nav-h);z-index:49;-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);background:#fffffff7;padding:10px 0 16px;display:none;position:fixed;left:0;right:0;box-shadow:0 24px 40px -24px #00000040}.mobile-menu.open{display:block}.mobile-menu a{color:var(--text);cursor:pointer;padding:12px 28px;font-size:17px;display:block}.mobile-menu a:hover{background:var(--bg-alt);text-decoration:none}.btn{cursor:pointer;border:1px solid #0000;border-radius:980px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:10px 22px;font-size:17px;line-height:1.4;text-decoration:none;transition:all .25s;display:inline-flex}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover{background:var(--blue-hover);text-decoration:none}.btn-secondary{color:var(--text);background:#0000000f}.btn-secondary:hover{background:#0000001a;text-decoration:none}.btn-dark{color:var(--text);background:#fff}.btn-dark:hover{background:#e8e8ed;text-decoration:none}.hero{text-align:center;background:#fff;padding:148px 0 72px;position:relative;overflow:hidden}.hero-bg{pointer-events:none;background:radial-gradient(1100px 520px at 50% -12%,#0071e329,#0000 62%),radial-gradient(760px 420px at 82% 8%,#5e5ce61f,#0000 60%),radial-gradient(700px 380px at 12% 16%,#00beff1a,#0000 60%);position:absolute;inset:0}.hero .container{position:relative}.hero-eyebrow{color:var(--text-2);margin-bottom:10px;font-size:15px}.hero h1{letter-spacing:-.02em;font-size:clamp(48px,9vw,92px);font-weight:700;line-height:1.05}.hero-role{color:var(--text);letter-spacing:-.01em;margin-top:14px;font-size:clamp(20px,3vw,28px);font-weight:600}.hero-tagline{max-width:620px;color:var(--text-2);margin:18px auto 0;font-size:clamp(16px,2vw,21px);line-height:1.5}.hero-cta{flex-wrap:wrap;justify-content:center;gap:14px;margin-top:34px;display:flex}.hero-stat-note{color:var(--text-3);cursor:pointer;justify-content:center;align-items:center;gap:8px;margin-top:44px;font-size:14px;text-decoration:none;display:flex}.hero-stat-note:hover{color:var(--text);text-decoration:none}.arrow-down{color:var(--blue);transition:transform .3s}.stats{background:var(--bg-alt);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:44px 0}.stats-grid{text-align:center;grid-template-columns:repeat(2,1fr);gap:28px 16px;display:grid}.stat-num{letter-spacing:-.02em;color:var(--text);font-size:clamp(34px,5vw,52px);font-weight:700}.stat-label{color:var(--text-3);margin-top:2px;font-size:14px}.section{padding:88px 0}.section-alt{background:var(--bg-alt);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.section-dark{background:var(--bg-dark);color:var(--text-on-dark)}.sec-label{color:var(--text-3);margin-bottom:10px;font-size:14px}.section-dark .sec-label{color:#a1a1a6}.sec-title{letter-spacing:-.02em;font-size:clamp(30px,5vw,46px);font-weight:700;line-height:1.15}.sec-sub{max-width:640px;color:var(--text-2);margin-top:14px;font-size:17px}.section-dark .sec-sub{color:#a1a1a6}.about-text{text-align:center;margin-top:44px}.about-text p{color:var(--text);max-width:680px;margin:0 auto 16px;font-size:17px}.about-text p.muted{color:var(--text-2)}.strength-list{text-align:left;grid-template-columns:1fr;gap:14px;margin-top:30px;display:grid}.strength{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:22px}.strength h3{letter-spacing:-.01em;margin-bottom:8px;font-size:19px;font-weight:600}.strength p{color:var(--text-2);font-size:15px;line-height:1.6}.skills-grid{grid-template-columns:1fr;gap:14px;margin-top:44px;display:grid}.skill-card{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:22px}.skill-card h3{align-items:center;gap:10px;margin-bottom:6px;font-size:18px;font-weight:600;display:flex}.skill-card .skill-desc{color:var(--text-3);margin-bottom:14px;font-size:13px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{color:var(--text);background:var(--bg-alt);border:1px solid var(--border);border-radius:980px;padding:5px 13px;font-size:13px;line-height:1.4}.skill-ic{width:26px;height:26px;color:var(--blue);background:linear-gradient(135deg,#0071e324,#42a5ff24);border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.projects-grid{grid-template-columns:1fr;gap:16px;margin-top:44px;display:grid}.project-card{border:1px solid var(--border);border-radius:var(--radius);background:#fff;flex-direction:column;gap:12px;padding:26px;transition:transform .25s,box-shadow .25s;display:flex}.project-card:hover{transform:translateY(-3px);box-shadow:0 14px 34px #00000014}.project-card.featured{background:linear-gradient(160deg,#f5f9ff,#eef4ff);border-color:#0071e338}.project-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.project-name{letter-spacing:-.01em;font-size:20px;font-weight:700}.project-desc{color:var(--text-2);font-size:15px;line-height:1.65}.project-points{flex-direction:column;gap:7px;list-style:none;display:flex}.project-points li{color:var(--text);padding-left:16px;font-size:14px;line-height:1.6;position:relative}.project-points li:before{content:"";background:var(--blue);border-radius:50%;width:5px;height:5px;position:absolute;top:9px;left:2px}.contact-grid{grid-template-columns:1fr;gap:12px;margin-top:44px;display:grid}.contact-item{border-radius:var(--radius);color:var(--text-on-dark);background:#ffffff0f;border:1px solid #ffffff1f;align-items:center;gap:16px;padding:20px 22px;transition:background .2s;display:flex}.contact-item:hover{background:#ffffff1f;text-decoration:none}.contact-ic{color:#fff;background:#ffffff24;border-radius:50%;flex:none;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.contact-label{color:#a1a1a6;font-size:12px}.contact-value{word-break:break-all;margin-top:2px;font-size:17px;font-weight:500}.contact-cta{flex-wrap:wrap;gap:14px;margin-top:36px;display:flex}.entries-grid{grid-template-columns:1fr;gap:14px;margin-top:44px;display:grid}.entry-card{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);background:#fff;align-items:center;gap:16px;padding:20px 22px;text-decoration:none;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex}.entry-card:hover{border-color:#00000029;text-decoration:none;transform:translateY(-2px);box-shadow:0 10px 28px #00000014}.entry-ic{width:44px;height:44px;color:var(--blue);background:#0071e314;border-radius:12px;flex:none;justify-content:center;align-items:center;display:inline-flex}.entry-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.entry-domain{letter-spacing:-.01em;word-break:break-all;font-size:18px;font-weight:600}.entry-desc{color:var(--text-3);font-size:13px}.entry-arrow{color:var(--text-3);flex:none;transition:transform .2s,color .2s}.entry-card:hover .entry-arrow{color:var(--blue);transform:translate(3px)}.chat-fab{z-index:60;color:#fff;cursor:pointer;background:linear-gradient(135deg,#0071e3,#42a5ff);border:none;border-radius:50%;justify-content:center;align-items:center;width:58px;height:58px;transition:transform .25s,box-shadow .25s;display:flex;position:fixed;bottom:20px;right:20px;box-shadow:0 10px 28px #0071e366}.chat-fab:hover{transform:scale(1.06);box-shadow:0 14px 34px #0071e380}.chat-fab svg{width:26px;height:26px}.chat-panel{z-index:60;border:1px solid var(--border);background:#fff;border-radius:20px;flex-direction:column;width:min(380px,100vw - 32px);height:min(560px,100vh - 140px);display:none;position:fixed;bottom:90px;right:16px;overflow:hidden;box-shadow:0 24px 70px #00000047}.chat-panel.open{display:flex}.chat-head{color:#fff;background:linear-gradient(135deg,#161617,#2a2a2e);align-items:center;gap:12px;padding:16px 18px;display:flex}.chat-ava{background:linear-gradient(135deg,#0071e3,#42a5ff);border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-size:14px;font-weight:700;display:flex}.chat-title{font-size:15px;font-weight:600}.chat-sub{color:#a1a1a6;align-items:center;gap:6px;font-size:12px;display:flex}.chat-dot{background:#30d158;border-radius:50%;width:7px;height:7px;display:inline-block}.chat-close{color:#a1a1a6;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.chat-close:hover{color:#fff;background:#ffffff1f}.chat-msgs{background:#fafafc;flex-direction:column;flex:1;gap:12px;padding:18px 16px;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;word-break:break-word;border-radius:18px;max-width:84%;padding:11px 15px;font-size:14px;line-height:1.6}.msg.ai{border:1px solid var(--border);color:var(--text);background:#fff;border-bottom-left-radius:6px;align-self:flex-start}.msg.user{background:var(--blue);color:#fff;border-bottom-right-radius:6px;align-self:flex-end}.msg .ai-name{color:var(--text-3);margin-bottom:4px;font-size:11px;font-weight:600;display:block}.msg-typing{gap:4px;padding:4px 2px;display:inline-flex}.msg-typing span{background:var(--text-3);border-radius:50%;width:6px;height:6px;animation:1.2s infinite blink}.msg-typing span:nth-child(2){animation-delay:.2s}.msg-typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.25}40%{opacity:1}}.chat-chips{background:#fafafc;flex-wrap:wrap;gap:8px;padding:10px 14px 2px;display:flex}.chat-chip{color:var(--blue);cursor:pointer;background:#fff;border:1px solid #0071e34d;border-radius:980px;min-height:30px;padding:6px 12px;font-size:12px;transition:all .2s}.chat-chip:hover{background:#0071e314}.chat-form{border-top:1px solid var(--border);background:#fff;gap:10px;padding:12px 14px 14px;display:flex}.chat-form input{border:1px solid var(--border);background:var(--bg-alt);min-width:0;color:var(--text);border-radius:980px;outline:none;flex:1;padding:10px 16px;font-family:inherit;font-size:16px}.chat-form input:focus{border-color:var(--blue);background:#fff}.chat-send{background:var(--blue);color:#fff;cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:42px;height:42px;transition:background .2s;display:flex}.chat-send:hover{background:var(--blue-hover)}.chat-send svg{width:18px;height:18px}.chat-send:disabled{cursor:default;background:#0071e359}.chat-gear{color:#a1a1a6;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;margin-left:auto;display:flex}.chat-gear:hover,.chat-gear.active{color:#fff;background:#ffffff1f}.chat-config{border-top:1px solid var(--border);background:#fafafc;flex-direction:column;gap:10px;padding:14px;font-size:13px;display:none}.chat-config.open{display:flex}.cfg-row{flex-direction:column;gap:5px;display:flex}.cfg-row label{color:var(--text-2);font-size:12px;font-weight:600}.cfg-row select,.cfg-row input{border:1px solid var(--border);width:100%;color:var(--text);background:#fff;border-radius:10px;outline:none;padding:8px 12px;font-family:inherit;font-size:14px}.cfg-row select:focus,.cfg-row input:focus{border-color:var(--blue)}.cfg-actions{flex-wrap:wrap;gap:8px;display:flex}.cfg-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#fff;border-radius:980px;min-height:36px;padding:7px 14px;font-family:inherit;font-size:13px}.cfg-btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.cfg-btn.danger{color:#d70015}.cfg-btn:hover{opacity:.88}.cfg-status{color:var(--text-2);white-space:pre-wrap;font-size:12px;line-height:1.55}.cfg-status.ok{color:#1d9c3c}.cfg-status.err{color:#d70015}.cfg-note{color:var(--text-3);font-size:11px;line-height:1.6}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(18px)}.reveal.in{opacity:1;transform:none}@media (width>=768px){.nav-links{display:flex}.nav-ask{display:inline-flex}.menu-btn{display:none}.hero{padding:190px 0 110px}.section{padding:120px 0}.stats-grid{grid-template-columns:repeat(4,1fr)}.strength-list{grid-template-columns:repeat(3,1fr);gap:16px}.skills-grid{grid-template-columns:repeat(2,1fr);gap:16px}.projects-grid{grid-template-columns:repeat(2,1fr);gap:18px}.project-card.featured{grid-column:1/-1}.contact-grid{grid-template-columns:repeat(2,1fr);gap:14px}.entries-grid{grid-template-columns:repeat(3,1fr)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}html{scroll-behavior:auto}.reveal{opacity:1;transform:none}}
