/* ---------- banner ---------- */
.hb-hero{position:relative;max-width:1600px;margin:0 auto;overflow:hidden;container-type:inline-size;aspect-ratio:1600/448;background:#fff;color:#1c1e26;--o:#e85d04;--o2:#ff9a1f}
.hb-hero *{box-sizing:border-box}
.hb-slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .8s ease,visibility .8s;background:linear-gradient(115deg,#fff 0%,#f3f5f9 52%,#ffeedd 100%)}
.hb-slide.hb-on{opacity:1;visibility:visible}
.hb-blob{position:absolute;background:linear-gradient(135deg,var(--o2),var(--o));opacity:0}
.hb-b1{left:0;bottom:0;width:40cqw;height:9cqw;clip-path:polygon(0 0,100% 100%,0 100%);transform:translateX(-30cqw)}
.hb-b2{right:0;top:0;width:30cqw;height:8.5cqw;clip-path:polygon(0 0,100% 0,100% 100%);transform:translateX(30cqw)}
.hb-b3{right:0;bottom:0;width:24cqw;height:4.2cqw;clip-path:polygon(100% 0,100% 100%,0 100%);transform:translateX(30cqw);background:var(--o)}
.hb-slide.hb-on .hb-blob{animation:blobIn 1s cubic-bezier(.2,.8,.2,1) .1s forwards}
@keyframes blobIn{to{opacity:1;transform:none}}
.hb-ring{position:absolute;border:.25cqw solid var(--o);border-radius:50%;opacity:0;left:12cqw;top:-8cqw;width:36cqw;height:36cqw}
.hb-slide.hb-on .hb-ring{animation:ringIn 1.2s ease .3s forwards,spin 24s linear infinite}
.hb-ring.hb-r2{left:20cqw;top:-2cqw;width:24cqw;height:24cqw;border-style:dashed;opacity:0;border-color:var(--o2)}
@keyframes ringIn{to{opacity:.35}}@keyframes spin{to{transform:rotate(360deg)}}
.hb-glow{position:absolute;left:8cqw;top:3cqw;width:40cqw;height:22cqw;border-radius:50%;background:radial-gradient(closest-side,rgba(255,140,30,.38),rgba(255,140,30,0));filter:blur(1cqw)}
.hb-floor{position:absolute;left:2cqw;bottom:3.4cqw;width:50cqw;height:.18cqw;background:linear-gradient(90deg,transparent,var(--o),transparent);opacity:.6}
.hb-m{position:absolute;bottom:4cqw;opacity:0;transform:translateY(8cqw) scale(.9);transform-origin:50% 100%;filter:drop-shadow(0 1.2cqw .9cqw rgba(30,30,40,.28))}
.hb-m img{display:block;height:100%;width:auto}
.hb-slide.hb-on .hb-m{animation:pop .9s cubic-bezier(.2,.9,.25,1.15) var(--d) forwards,bob 5s ease-in-out calc(var(--d) + .9s) infinite}
@keyframes pop{to{opacity:1;transform:none}}@keyframes bob{50%{transform:translateY(-.7cqw)}}
.hb-tx{position:absolute;left:55cqw;top:8.4cqw;width:42cqw}
.hb-tag{font-size:1.15cqw;font-weight:600;letter-spacing:.5cqw;color:var(--o);opacity:0;transform:translateX(-2cqw)}
.hb-h1,.hb-h2{font-family:Lora,Georgia,'Times New Roman',serif;font-weight:800;font-size:5.1cqw;line-height:1.1;margin:0;white-space:nowrap}
.hb-h2 span{background:linear-gradient(180deg,#ffa628 0%,#f06a0a 55%,#c43800 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.hb-h1 span,.hb-h2 span{display:inline-block;opacity:0;transform:translateY(3cqw) rotateX(60deg)}
.hb-slide.hb-on .hb-h1 span,.hb-slide.hb-on .hb-h2 span{animation:letter .7s cubic-bezier(.2,.9,.25,1) calc(.5s + var(--i)*.045s) forwards}
@keyframes letter{to{opacity:1;transform:none}}
.hb-slide.hb-on .hb-tag{animation:tagIn .7s ease .35s forwards}@keyframes tagIn{to{opacity:1;transform:none}}
.hb-line{display:flex;align-items:center;gap:1cqw;margin-top:2.2cqw;width:0;overflow:hidden}
.hb-line i{height:.18cqw;flex:1;background:var(--o)}.hb-line u{width:1cqw;height:1cqw;background:var(--o2);transform:rotate(45deg)}
.hb-slide.hb-on .hb-line{animation:lineIn .9s ease 1.5s forwards}@keyframes lineIn{to{width:24cqw}}
.hb-hero canvas{border:0;margin:0;position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.hb-bar{position:absolute;left:0;bottom:0;height:.45cqw;background:linear-gradient(90deg,var(--o2),var(--o));width:0}
.hb-bar.hb-run{animation:fill 5.8s linear forwards}@keyframes fill{to{width:100%}}
.hb-btn{position:absolute;top:50%;transform:translateY(-50%);border:0;background:rgba(28,30,38,.55);color:#fff;width:3cqw;height:3cqw;min-width:30px;min-height:30px;border-radius:50%;font-size:1.6cqw;cursor:pointer;z-index:3}
.hb-btn:hover{background:var(--o)}.hb-pv{left:1cqw}.hb-nx{right:1cqw}
.hb-dots{position:absolute;right:2cqw;bottom:1.4cqw;display:flex;gap:.7cqw;z-index:3}
.hb-dots i{width:1cqw;height:1cqw;min-width:8px;min-height:8px;border-radius:50%;background:rgba(255,255,255,.85);box-shadow:0 0 0 1px rgba(28,30,38,.45);cursor:pointer}.hb-dots i.hb-on{background:#1c1e26}
@media (prefers-reduced-motion:reduce){.hb-slide *{animation-duration:.01s!important;animation-delay:0s!important}}
