/* 赛先生科学官网 · 样式
   主色都在 :root 里，改颜色只改这里 */
:root{
  --sky:#a9defc; --sky2:#d6f0ff; --cream:#fffdf5; --paper:#fff;
  --navy:#13305a; --ink2:#46607f; --muted:#7b8899;
  --blue:#2f80ed; --owl:#3aa0ff; --coral:#ff6b4a; --coral2:#f0552f;
  --yellow:#ffd23f; --mint:#3ccf98; --violet:#7b61ff;
  --r:26px; --wrap:1180px;
  --f-head:"Arial Rounded MT Bold","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --f-body:"Trebuchet MS","Avenir Next","PingFang SC","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--navy);font-family:var(--f-body);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
h1,h2,h3{font-family:var(--f-head);font-weight:900;letter-spacing:-.02em;margin:0;line-height:1.15}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.sec{padding:110px 0}
.kicker{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:14px;color:var(--blue);background:#e6f2ff;padding:6px 14px;border-radius:99px;margin-bottom:16px}
.sec-head{text-align:center;max-width:760px;margin:0 auto 54px}
.sec-head h2{font-size:clamp(30px,4.4vw,52px)}
.sec-head p{color:var(--ink2);font-size:18px;margin:14px 0 0}
.hint{font-size:13px;color:var(--muted);margin-top:10px}

/* 按钮 */
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 26px;border-radius:99px;font-weight:800;font-size:16px;transition:transform .2s,box-shadow .2s,background .2s}
.btn-hot{background:var(--coral);color:#fff;box-shadow:0 8px 0 var(--coral2),0 14px 28px rgba(240,85,47,.35)}
.btn-hot:hover{transform:translateY(-2px)}
.btn-hot:active{transform:translateY(4px);box-shadow:0 3px 0 var(--coral2)}
.btn-line{border:2.5px solid var(--navy);background:rgba(255,255,255,.75)}
.btn-line:hover{background:#fff;transform:translateY(-2px)}
.btn-sm{padding:9px 18px;font-size:14px}

/* 导航 */
.nav{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:50;width:min(1220px,calc(100% - 28px));display:flex;align-items:center;gap:18px;padding:10px 12px 10px 18px;background:rgba(255,255,255,.93);backdrop-filter:blur(12px);border-radius:40px;box-shadow:0 10px 30px rgba(19,48,90,.12);transition:top .3s}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--f-head);font-weight:900;font-size:20px;white-space:nowrap}
.brand .owl{width:44px;height:44px;object-fit:cover;object-position:left center}
.brand small{display:block;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.08em;line-height:1}
.nav ul{display:flex;gap:4px;list-style:none;margin:0 auto;padding:0}
.nav ul a{display:block;padding:8px 14px;border-radius:99px;font-weight:700;font-size:15px}
.nav ul a:hover{background:var(--sky2)}
.nav .acts{display:flex;align-items:center;gap:8px}
.me{display:none;align-items:center;gap:8px;padding:5px 14px 5px 5px;border-radius:99px;background:#eef7ff;font-weight:800;font-size:14px;position:relative;cursor:pointer;white-space:nowrap}
.nav ul a{white-space:nowrap}
.me img{width:34px;height:34px;border-radius:50%;background:#fff;object-fit:contain}
.me-menu{position:absolute;right:0;top:calc(100% + 10px);background:#fff;border-radius:18px;box-shadow:0 16px 40px rgba(19,48,90,.18);padding:8px;min-width:200px;display:none}
.me-menu.on{display:block}
.me-menu .card{padding:12px;border-radius:12px;background:linear-gradient(135deg,#2f80ed,#7b61ff);color:#fff;margin-bottom:6px}
.me-menu .card b{display:block;font-size:16px}
.me-menu .card span{font-size:12px;opacity:.85}
.me-menu button{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:10px;font-weight:700;font-size:14px}
.me-menu button:hover{background:#f1f6fc}
body.authed .me{display:flex}
body.authed .login-btn{display:none}
.burger{display:none;width:42px;height:42px;border-radius:50%;background:var(--sky2);font-size:20px}

/* 首屏 */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:center;overflow:hidden;background:linear-gradient(180deg,#7fcbf7 0%,#a9defc 45%,#d6f0ff 100%)}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:center 30%;opacity:.55;mix-blend-mode:luminosity;animation:breathe 18s ease-in-out infinite alternate}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(214,240,255,.92) 0%,rgba(214,240,255,.55) 45%,rgba(214,240,255,0) 70%),linear-gradient(0deg,var(--cream) 0%,rgba(255,253,245,0) 18%)}
.cloud{position:absolute;background:#fff;border-radius:99px;opacity:.85;filter:blur(1px);z-index:1;animation:drift linear infinite}
.cloud::before,.cloud::after{content:"";position:absolute;background:#fff;border-radius:50%}
.cloud::before{width:55%;height:180%;left:12%;bottom:20%}
.cloud::after{width:40%;height:140%;right:12%;bottom:25%}
.hero .wrap{position:relative;z-index:3;width:100%;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:20px;padding-top:90px}
.hero h1{font-size:clamp(42px,6.6vw,88px);color:#0f2e55;text-shadow:0 4px 0 rgba(255,255,255,.6)}
.hero h1 .u{position:relative;white-space:nowrap}
.hero h1 .u svg{position:absolute;left:0;bottom:-14px;width:100%;height:20px}
.hero h1 .star{display:inline-block;color:var(--yellow);font-size:.5em;vertical-align:top;animation:twinkle 2s ease-in-out infinite}
.hero p.lead{font-size:clamp(17px,1.6vw,20px);max-width:520px;margin:26px 0 32px;color:var(--ink2);font-weight:600}
.hero .cta{display:flex;gap:14px;flex-wrap:wrap}
.hero .badges{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px}
.hero .badges span{background:rgba(255,255,255,.85);padding:6px 12px;border-radius:99px;font-size:13px;font-weight:800}
.stage{position:relative;height:min(64vh,600px)}
.stage img{position:absolute;filter:drop-shadow(0 22px 26px rgba(19,48,90,.28))}
.stage .sai{height:88%;bottom:2%;left:6%;animation:bob 3.2s ease-in-out infinite}
.stage .xs{height:62%;bottom:16%;right:0;animation:bob 2.6s ease-in-out .4s infinite}
.stage .bubble{position:absolute;top:4%;right:18%;background:#fff;padding:12px 18px;border-radius:20px 20px 20px 4px;font-weight:800;box-shadow:0 10px 24px rgba(19,48,90,.15);animation:pop .6s cubic-bezier(.3,1.6,.5,1) 1s both;z-index:2}
.stage .orbit{position:absolute;border:2px dashed rgba(47,128,237,.35);border-radius:50%;width:92%;aspect-ratio:1;left:4%;top:4%;animation:spin 40s linear infinite}
.stage .orbit i{position:absolute;width:22px;height:22px;border-radius:50%;top:-11px;left:calc(50% - 11px);background:var(--yellow);box-shadow:0 0 18px var(--yellow)}
.scroll-cue{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:3;font-size:13px;font-weight:800;color:var(--ink2);display:flex;flex-direction:column;align-items:center;gap:6px}
.scroll-cue i{width:24px;height:38px;border:2.5px solid var(--ink2);border-radius:14px;position:relative}
.scroll-cue i::after{content:"";position:absolute;left:50%;top:7px;width:4px;height:8px;margin-left:-2px;border-radius:4px;background:var(--ink2);animation:cue 1.6s ease-in-out infinite}

/* 角色 */
.chars{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.char{position:relative;border-radius:var(--r);padding:18px 14px 22px;text-align:center;cursor:pointer;transition:transform .3s cubic-bezier(.3,1.6,.5,1),box-shadow .3s;outline:none}
.char:hover,.char.on,.char:focus-visible{transform:translateY(-10px) rotate(-1deg);box-shadow:0 22px 40px rgba(19,48,90,.18)}
.char .pic{height:230px;display:grid;place-items:end center;margin-bottom:10px}
.char .pic img{max-height:100%;width:auto;transition:transform .4s}
.char:hover .pic img,.char.on .pic img{transform:scale(1.08) translateY(-6px)}
.char h3{font-size:22px}
.char .role{font-size:13px;font-weight:800;opacity:.75}
.char .say{position:absolute;left:10px;right:10px;top:-12px;transform:translateY(-100%) scale(.8);opacity:0;background:#fff;padding:12px 14px;border-radius:16px;font-size:14px;font-weight:700;box-shadow:0 10px 26px rgba(19,48,90,.18);transition:.3s cubic-bezier(.3,1.6,.5,1);pointer-events:none;z-index:3}
.char .say::after{content:"";position:absolute;left:50%;bottom:-8px;margin-left:-8px;border:8px solid transparent;border-bottom:0;border-top-color:#fff}
.char:hover .say,.char.on .say{opacity:1;transform:translateY(-100%) scale(1)}
.c1{background:#ffe9c7}.c2{background:#dcefff}.c3{background:#e7f6dc}.c4{background:#ece7ff}.c5{background:#ffe2dc}

/* 故事世界 */
.story{background:linear-gradient(180deg,var(--cream),#eaf6ff)}
.story-top{display:grid;grid-template-columns:1.2fr 1fr;gap:34px;align-items:center;margin-bottom:56px}
.story-top .pic{border-radius:var(--r);overflow:hidden;box-shadow:0 22px 50px rgba(19,48,90,.18);transform:rotate(-1.5deg)}
.story-top h3{font-size:30px;margin-bottom:12px}
.story-top p{color:var(--ink2);font-size:17px}
.quest{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.quest span{padding:8px 14px;border-radius:14px;background:#fff;font-weight:800;font-size:14px;box-shadow:0 4px 0 #d9e7f5}
.road{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;position:relative}
.road::before{content:"";position:absolute;left:6%;right:6%;top:118px;height:6px;border-radius:6px;background:repeating-linear-gradient(90deg,var(--yellow) 0 18px,transparent 18px 30px);z-index:0}
.stop{position:relative;z-index:1;background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 12px 30px rgba(19,48,90,.1);transition:transform .3s}
.stop:hover{transform:translateY(-8px)}
.stop .img{aspect-ratio:16/10;background:#cfe6f7 center/cover}
.stop .tag{position:absolute;top:12px;left:12px;background:var(--navy);color:#fff;font-weight:900;font-size:13px;padding:4px 10px;border-radius:99px}
.stop .t{padding:16px 18px 20px}
.stop h3{font-size:19px;margin-bottom:6px}
.stop p{margin:0;font-size:14px;color:var(--ink2)}
.watch{margin-top:56px;display:grid;grid-template-columns:1fr 1fr;gap:24px}
.vid{position:relative;border-radius:var(--r);overflow:hidden;background:#0b1a33;aspect-ratio:16/9;box-shadow:0 18px 40px rgba(19,48,90,.2)}
.vid video{width:100%;height:100%;object-fit:cover}
.vid .play{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(0deg,rgba(11,26,51,.7),rgba(11,26,51,.1));color:#fff;transition:.3s}
.vid .play b{width:78px;height:78px;border-radius:50%;background:var(--coral);display:grid;place-items:center;font-size:28px;box-shadow:0 0 0 10px rgba(255,107,74,.25);animation:ripple 2s infinite}
.vid .play span{position:absolute;left:22px;bottom:18px;font-weight:900;font-size:18px}
.vid.playing .play{opacity:0;pointer-events:none}

/* 课程 */
.tabs{display:flex;justify-content:center;gap:10px;margin-bottom:34px}
.tabs button{padding:12px 22px;border-radius:99px;font-weight:900;background:#fff;box-shadow:0 4px 0 #d9e7f5}
.tabs button.on{background:var(--navy);color:#fff;box-shadow:0 4px 0 #071a33}
.courses{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.course{background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 10px 26px rgba(19,48,90,.08);display:flex;flex-direction:column;transition:transform .3s}
.course:hover{transform:translateY(-6px)}
.course .img{aspect-ratio:4/3;background:#e8f2fb center/cover}
.course .b{padding:16px 18px 20px;flex:1;display:flex;flex-direction:column}
.course .lv{display:flex;justify-content:space-between;font-size:13px;font-weight:800;color:var(--blue)}
.course h3{font-size:20px;margin:6px 0}
.course p{font-size:14px;color:var(--ink2);margin:0 0 12px;flex:1}
.course .meta{display:flex;gap:6px;flex-wrap:wrap}
.course .meta span{font-size:12px;font-weight:800;background:#f1f6fc;padding:4px 9px;border-radius:99px}
.pbl{margin-top:44px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:s}
.pbl div{background:#fff;border-radius:20px;padding:20px;border:2px dashed #cfe0f2}
.pbl div::before{counter-increment:s;content:counter(s);display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--yellow);font-weight:900;margin-bottom:10px}
.pbl b{display:block;font-size:17px}
.pbl span{font-size:14px;color:var(--ink2)}

/* SaiLink */
.sailink{background:#0f1c33;color:#fff;border-radius:44px;margin:0 16px;overflow:hidden;position:relative}
.sailink .stars{position:absolute;inset:0;background-image:radial-gradient(2px 2px at 20% 30%,#fff8,transparent),radial-gradient(2px 2px at 70% 20%,#fff6,transparent),radial-gradient(1.5px 1.5px at 40% 80%,#fff7,transparent),radial-gradient(2px 2px at 85% 65%,#fff5,transparent),radial-gradient(1.5px 1.5px at 10% 70%,#fff6,transparent);animation:twinkle 4s ease-in-out infinite}
.sl-grid{position:relative;display:grid;grid-template-columns:1fr 1.1fr;gap:40px;align-items:center}
.sl-grid .dev{justify-self:center;width:min(300px,70%);filter:drop-shadow(0 30px 40px rgba(0,0,0,.5));animation:bob 4s ease-in-out infinite}
.sailink .slogo{height:44px;width:auto;margin-bottom:18px}
.sailink h2{font-size:clamp(30px,4vw,48px)}
.sailink p{color:#b9c6da;font-size:17px}
.sl-feat{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:22px 0 28px}
.sl-feat div{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:14px}
.sl-feat b{display:block;font-size:22px;color:var(--yellow);font-family:var(--f-head)}
.sl-feat span{font-size:13px;color:#b9c6da}
.marquee{position:relative;margin-top:60px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee .track{display:flex;gap:18px;width:max-content;animation:slide 40s linear infinite}
.marquee:hover .track{animation-play-state:paused}
.marquee figure{margin:0;width:150px;text-align:center}
.marquee figure img{width:150px;height:225px;object-fit:contain;background:rgba(255,255,255,.06);border-radius:18px}
.marquee figcaption{font-size:13px;color:#b9c6da;margin-top:8px;font-weight:700}

/* 品牌实力 */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:44px}
.stat{background:#fff;border-radius:var(--r);padding:26px;text-align:center;box-shadow:0 8px 0 #e4eef8}
.stat b{display:block;font-family:var(--f-head);font-size:clamp(36px,4vw,52px);color:var(--blue);line-height:1}
.stat span{font-weight:800;color:var(--ink2);font-size:15px}
.creds{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.cred{background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 10px 26px rgba(19,48,90,.08)}
.cred .img{aspect-ratio:4/3;background:#eef4fa center/cover}
.cred .t{padding:16px 18px}
.cred h3{font-size:18px;margin-bottom:4px}
.cred p{margin:0;font-size:14px;color:var(--ink2)}
.outs{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:18px}
.out{border-radius:var(--r);padding:22px;color:#fff;min-height:200px;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;background:#123 center/cover}
.out::before{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(10,25,50,.88),rgba(10,25,50,.15))}
.out>*{position:relative}
.out small{font-weight:900;color:var(--yellow)}
.out h3{font-size:18px;margin:4px 0}
.out p{margin:0;font-size:13px;opacity:.85}

/* 合作 */
.join{position:relative;background:linear-gradient(135deg,#2f80ed,#7b61ff);color:#fff;border-radius:44px;padding:70px 40px;text-align:center;overflow:hidden}
.join h2{font-size:clamp(30px,4vw,50px)}
.join p{opacity:.9;font-size:18px;max-width:640px;margin:16px auto 30px}
.join .mail{display:inline-block;margin-top:18px;font-weight:800;opacity:.9}
.join .peek{position:absolute;width:150px;bottom:-20px;animation:bob 3s ease-in-out infinite}
.join .peek.l{left:4%}.join .peek.r{right:4%;animation-delay:.6s}
footer{padding:50px 0 40px;color:var(--muted);font-size:14px}
footer .wrap{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
footer .brand{color:var(--navy)}
.totop{position:fixed;left:22px;bottom:22px;z-index:40;width:48px;height:48px;border-radius:50%;background:#fff;box-shadow:0 8px 20px rgba(19,48,90,.18);font-size:20px;opacity:0;pointer-events:none;transition:.3s}
.totop.on{opacity:1;pointer-events:auto}

/* 出现动画 */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:none}

/* 登录弹窗 */
.modal{position:fixed;inset:0;z-index:200;display:none;place-items:center;background:rgba(10,25,50,.55);backdrop-filter:blur(6px);padding:18px}
.modal.on{display:grid}
.panel{position:relative;width:min(420px,100%);background:#fff;border-radius:30px;padding:34px 30px 28px;box-shadow:0 30px 80px rgba(0,0,0,.3);animation:pop .45s cubic-bezier(.3,1.6,.5,1)}
.panel .peek{position:absolute;width:110px;top:-78px;left:50%;margin-left:-55px;animation:bob 3s ease-in-out infinite}
.panel h3{font-size:26px;text-align:center;margin-top:18px}
.panel .sub{text-align:center;color:var(--muted);font-size:14px;margin:6px 0 20px}
.panel .x{position:absolute;right:16px;top:14px;width:36px;height:36px;border-radius:50%;background:#f1f6fc;font-size:18px}
.seg{display:flex;background:#f1f6fc;border-radius:99px;padding:4px;margin-bottom:18px}
.seg button{flex:1;padding:9px;border-radius:99px;font-weight:900}
.seg button.on{background:#fff;box-shadow:0 3px 10px rgba(19,48,90,.12)}
.fld{display:block;margin-bottom:12px}
.fld span{display:block;font-size:13px;font-weight:800;margin-bottom:5px}
.fld input{width:100%;padding:13px 16px;border-radius:14px;border:2px solid #dbe6f2;font:inherit;font-size:16px;outline:none;transition:border .2s}
.fld input:focus{border-color:var(--blue)}
.chk{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--ink2);margin:6px 0 16px}
.chk input{margin-top:3px}
.err{min-height:20px;color:#e0412c;font-size:14px;font-weight:700;text-align:center;margin-bottom:8px}
.panel .btn{width:100%;justify-content:center}
.reg-only{display:none}
.panel.reg .reg-only{display:block}

/* 3D 片头 */
#intro3d{position:fixed;inset:0;z-index:300;background:#020611;display:none}
#intro3d.on{display:block}
#intro3d canvas{position:absolute;inset:0;width:100%;height:100%}
#intro3d .cap{position:absolute;left:0;right:0;bottom:12%;text-align:center;color:#fff;pointer-events:none}
#intro3d .skip{position:absolute;right:20px;bottom:22px;padding:8px 16px;border-radius:99px;background:rgba(255,255,255,.14);color:#fff;font-weight:800;font-size:14px;backdrop-filter:blur(6px)}
#intro3d.out{animation:fadeout .6s forwards}

/* 小赛AI */
.ai-fab{position:fixed;right:22px;bottom:22px;z-index:90;width:76px;height:76px;border-radius:50%;background:radial-gradient(circle at 50% 35%,#fff,#d9efff);box-shadow:0 12px 30px rgba(47,128,237,.4),0 0 0 6px rgba(255,255,255,.7);display:grid;place-items:center;transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.ai-fab:hover{transform:scale(1.08) rotate(-6deg)}
.ai-fab img{width:62px;height:62px;object-fit:contain;margin-top:6px;animation:bob 2.6s ease-in-out infinite}
.ai-fab .dot{position:absolute;top:4px;right:4px;width:16px;height:16px;border-radius:50%;background:var(--mint);border:3px solid #fff}
.ai-tip{position:fixed;right:110px;bottom:40px;z-index:90;max-width:240px;background:#fff;padding:12px 16px;border-radius:18px 18px 4px 18px;font-weight:800;font-size:14px;box-shadow:0 12px 30px rgba(19,48,90,.18);cursor:pointer;animation:pop .5s cubic-bezier(.3,1.6,.5,1)}
.ai-tip[hidden]{display:none}
.ai-box{position:fixed;right:22px;bottom:112px;z-index:95;width:min(380px,calc(100vw - 24px));height:min(580px,calc(100vh - 140px));background:#fff;border-radius:28px;box-shadow:0 30px 70px rgba(19,48,90,.3);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:pop .4s cubic-bezier(.3,1.6,.5,1)}
.ai-box[hidden]{display:none}
.ai-hd{display:flex;align-items:center;gap:10px;padding:14px 16px;background:linear-gradient(135deg,#2f80ed,#3aa0ff);color:#fff}
.ai-hd img{width:44px;height:44px;border-radius:50%;background:#fff;object-fit:contain;padding:2px}
.ai-hd b{display:block;font-size:17px}
.ai-hd span{font-size:12px;opacity:.85}
.ai-hd button{margin-left:auto;width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.2);color:#fff;font-size:16px}
.ai-log{flex:1;overflow-y:auto;padding:16px;background:#f5f9fe;display:flex;flex-direction:column;gap:10px}
.msg{max-width:86%;padding:10px 14px;border-radius:18px;font-size:15px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
.msg.ai{background:#fff;border-bottom-left-radius:4px;box-shadow:0 2px 6px rgba(19,48,90,.06)}
.msg.me{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:4px}
.msg.typing{color:var(--muted)}
.msg.typing i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#9db2c9;margin:0 2px;animation:hop 1s infinite}
.msg.typing i:nth-child(2){animation-delay:.15s}.msg.typing i:nth-child(3){animation-delay:.3s}
.chips{display:flex;gap:6px;flex-wrap:wrap;padding:10px 12px 0;background:#fff}
.chips button{font-size:13px;font-weight:800;padding:6px 11px;border-radius:99px;background:#eef6ff;color:var(--blue)}
.ai-in{display:flex;gap:8px;padding:10px 12px 12px;background:#fff}
.ai-in input{flex:1;padding:12px 14px;border-radius:99px;border:2px solid #dbe6f2;font:inherit;font-size:15px;outline:none}
.ai-in input:focus{border-color:var(--blue)}
.ai-in button{width:46px;height:46px;border-radius:50%;background:var(--coral);color:#fff;font-size:18px}
.ai-note{font-size:11px;color:var(--muted);text-align:center;padding:0 12px 8px;background:#fff}

/* 动画 */
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
@keyframes breathe{from{transform:scale(1.04)}to{transform:scale(1.12)}}
@keyframes drift{from{transform:translateX(-30vw)}to{transform:translateX(130vw)}}
@keyframes twinkle{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}
@keyframes pop{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes cue{0%{opacity:0;transform:translateY(0)}50%{opacity:1}100%{opacity:0;transform:translateY(12px)}}
@keyframes slide{to{transform:translateX(-50%)}}
@keyframes ripple{0%{box-shadow:0 0 0 0 rgba(255,107,74,.45)}100%{box-shadow:0 0 0 22px rgba(255,107,74,0)}}
@keyframes hop{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes fadeout{to{opacity:0;visibility:hidden}}

/* 手机 */
@media (max-width:1000px){
  .nav ul{display:none;position:absolute;top:calc(100% + 10px);left:0;right:0;flex-direction:column;background:#fff;border-radius:24px;padding:10px;box-shadow:0 16px 40px rgba(19,48,90,.18)}
  .nav ul.open{display:flex}
  .nav .acts{margin-left:auto}
  .burger{display:block}
  .hero .wrap{grid-template-columns:1fr;text-align:center;padding-top:110px}
  .hero p.lead{margin-left:auto;margin-right:auto}
  .hero .cta,.hero .badges{justify-content:center}
  .hero::after{background:linear-gradient(180deg,rgba(214,240,255,.9),rgba(214,240,255,.4) 60%,var(--cream))}
  .stage{height:46vh;max-width:460px;width:100%;margin:0 auto}
  .chars{grid-template-columns:repeat(2,1fr)}
  .chars .char:last-child{grid-column:span 2}
  .story-top,.sl-grid,.watch{grid-template-columns:1fr}
  .road,.courses,.pbl,.stats,.outs{grid-template-columns:repeat(2,1fr)}
  .road::before{display:none}
  .creds{grid-template-columns:1fr}
  .sec{padding:80px 0}
  .scroll-cue{display:none}
  .join .peek{display:none}
}
@media (max-width:560px){
  .brand small{display:none}
  .login-btn{padding:9px 14px}
  .road,.courses,.pbl,.outs{grid-template-columns:1fr}
  .char .pic{height:170px}
  .sailink{margin:0 8px;border-radius:30px}
  .ai-fab{width:64px;height:64px;right:14px;bottom:14px}
  .ai-fab img{width:52px;height:52px}
  .ai-box{right:12px;bottom:90px}
  .ai-tip{right:88px;bottom:28px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
