:root{
  --bg:#06060e;--surface:#0c0c18;
  --card:rgba(16,16,32,.72);--border:rgba(60,70,120,.28);
  --text:#e4e4f0;--dim:#7a7a9a;
  --blue:#4f8efa;--purple:#8b5cf6;--cyan:#06b6d4;
  --gold:#f59e0b;--green:#10b981;--red:#ef4444;
  --gB:rgba(79,142,250,.14);--gP:rgba(139,92,246,.14);
  --grad:linear-gradient(135deg,#4f8efa 0%,#8b5cf6 50%,#06b6d4 100%);
  --font-sans:system-ui,-apple-system,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;font-size:16px}
body{font-family:var(--font-sans);background:var(--bg);color:var(--text);line-height:1.8;overflow-x:hidden}

/* ── header ── */
header{position:fixed;top:0;left:0;right:0;z-index:200;padding:12px clamp(20px,6vw,80px);display:flex;align-items:center;justify-content:space-between;background:rgba(6,6,14,.85);backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}
.logo-wrap{display:flex;flex-direction:column;gap:0}
.logo{font-size:1.4rem;font-weight:800;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1.2}
.logo-sub{font-size:.6rem;color:var(--dim);letter-spacing:.06em;margin-top:1px}
.nav-list{display:flex;gap:24px;list-style:none}
.nav-list a{color:var(--dim);text-decoration:none;font-size:.86rem;transition:color .3s}
.nav-list a:hover{color:var(--text)}
.hdr-btns{display:flex;align-items:center;gap:12px}
.hdr-login{padding:7px 18px;border-radius:8px;border:1px solid rgba(228,228,240,.3);background:transparent;color:var(--text);font-size:.82rem;cursor:pointer;text-decoration:none;transition:border-color .3s}
.hdr-login:hover{border-color:rgba(228,228,240,.6)}
.hdr-cta{padding:7px 20px;border-radius:8px;border:none;cursor:pointer;background:var(--grad);color:#fff;font-size:.82rem;font-weight:500;transition:opacity .3s}
.hdr-cta:hover{opacity:.85}

/* ── sections ── */
main section{padding:96px clamp(24px,8vw,120px) 72px;position:relative}
h2{font-size:clamp(1.6rem,3.2vw,2.4rem);font-weight:700;line-height:1.3;margin-bottom:14px;text-align:center}
.sub{text-align:center;color:var(--dim);font-size:1rem;max-width:660px;margin:0 auto 44px;text-wrap:balance}

/* ── hero ── */
#hero{min-height:100vh;display:flex;align-items:center;padding-top:76px;justify-content:center;overflow:hidden}
#hero canvas{position:absolute;inset:0;z-index:1}
#hero::before{content:'';position:absolute;top:-5%;left:50%;transform:translateX(-50%);width:min(1200px,110vw);height:750px;background:radial-gradient(ellipse at 40% 40%,rgba(79,142,250,.14) 0%,rgba(139,92,246,.10) 35%,rgba(6,182,212,.05) 60%,transparent 80%);filter:blur(60px);pointer-events:none;z-index:0;animation:aushift 12s ease-in-out infinite alternate}
#hero::after{content:'';position:absolute;bottom:5%;right:5%;width:min(700px,70vw);height:550px;background:radial-gradient(ellipse at 60% 60%,rgba(6,182,212,.12) 0%,rgba(139,92,246,.07) 40%,transparent 75%);filter:blur(70px);pointer-events:none;z-index:0;animation:aushift2 15s ease-in-out infinite alternate-reverse}
@keyframes aushift{0%{transform:translateX(-50%) scale(1) translateY(0)}33%{transform:translateX(-53%) scale(1.15) translateY(-25px)}66%{transform:translateX(-48%) scale(1.08) translateY(15px)}100%{transform:translateX(-50%) scale(1.05) translateY(-5px)}}
@keyframes aushift2{0%{transform:scale(1) translateY(0)}33%{transform:scale(1.2) translateY(-30px)}66%{transform:scale(.9) translateY(20px)}100%{transform:scale(1.1) translateY(-10px)}}

/* ── hero orbs ── */
.hero-bg-layer{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.hero-orb{position:absolute;border-radius:50%;filter:blur(80px);opacity:.18;will-change:transform}
.hero-orb--1{width:600px;height:600px;top:-15%;left:-10%;background:radial-gradient(circle,rgba(79,142,250,.6) 0%,rgba(79,142,250,0) 70%);animation:orbFloat1 18s ease-in-out infinite}
.hero-orb--2{width:500px;height:500px;top:40%;right:-12%;background:radial-gradient(circle,rgba(139,92,246,.55) 0%,rgba(139,92,246,0) 70%);animation:orbFloat2 22s ease-in-out infinite}
.hero-orb--3{width:450px;height:450px;bottom:-10%;left:20%;background:radial-gradient(circle,rgba(6,182,212,.5) 0%,rgba(6,182,212,0) 70%);animation:orbFloat3 20s ease-in-out infinite}
.hero-orb--4{width:350px;height:350px;top:20%;left:55%;background:radial-gradient(circle,rgba(139,92,246,.4) 0%,rgba(79,142,250,.2) 50%,transparent 70%);animation:orbFloat4 25s ease-in-out infinite;opacity:.12}
@keyframes orbFloat1{0%,100%{transform:translate(0,0) scale(1)}25%{transform:translate(60px,40px) scale(1.1)}50%{transform:translate(30px,80px) scale(.95)}75%{transform:translate(-20px,30px) scale(1.05)}}
@keyframes orbFloat2{0%,100%{transform:translate(0,0) scale(1)}25%{transform:translate(-50px,-30px) scale(1.08)}50%{transform:translate(-80px,20px) scale(.92)}75%{transform:translate(-20px,-50px) scale(1.04)}}
@keyframes orbFloat3{0%,100%{transform:translate(0,0) scale(1)}25%{transform:translate(40px,-40px) scale(1.12)}50%{transform:translate(80px,-20px) scale(.9)}75%{transform:translate(20px,-60px) scale(1.06)}}
@keyframes orbFloat4{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(-40px,50px) scale(1.15)}66%{transform:translate(30px,-30px) scale(.88)}}

/* ── hero grid ── */
.hero-grid{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;opacity:.035;background-image:linear-gradient(rgba(79,142,250,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(79,142,250,.5) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse at 50% 40%,black 20%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse at 50% 40%,black 20%,transparent 70%)}

/* ── hero mesh ── */
.hero-mesh{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;opacity:.07}
.hero-mesh::before{content:'';position:absolute;width:200%;height:200%;top:-50%;left:-50%;background:conic-gradient(from 0deg at 50% 50%,rgba(79,142,250,.3) 0deg,rgba(139,92,246,.3) 120deg,rgba(6,182,212,.3) 240deg,rgba(79,142,250,.3) 360deg);animation:meshSpin 40s linear infinite}
@keyframes meshSpin{to{transform:rotate(360deg)}}

.hero-body{position:relative;z-index:2;max-width:900px;width:100%}
.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 16px;border-radius:20px;border:1px solid rgba(79,142,250,.35);background:rgba(79,142,250,.08);font-size:.82rem;color:var(--blue);margin-bottom:28px}
.hero-badge::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--blue);animation:liveblink 2s ease-in-out infinite}
@keyframes liveblink{0%,100%{opacity:1}50%{opacity:.25}}

.hero-eq{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:20px;font-weight:800;line-height:1}
.eq-tag{padding:10px 24px;border-radius:10px;font-size:clamp(1.6rem,3.8vw,3.2rem);font-weight:700}
.eq-blue{background:rgba(79,142,250,.18);color:var(--blue);border:1px solid rgba(79,142,250,.4);box-shadow:0 0 28px rgba(79,142,250,.2),inset 0 1px 0 rgba(79,142,250,.3)}
.eq-purple{background:rgba(139,92,246,.18);color:var(--purple);border:1px solid rgba(139,92,246,.4);box-shadow:0 0 28px rgba(139,92,246,.2),inset 0 1px 0 rgba(139,92,246,.3)}
.eq-green{background:rgba(16,185,129,.18);color:var(--green);border:1px solid rgba(16,185,129,.4);box-shadow:0 0 32px rgba(16,185,129,.25),inset 0 1px 0 rgba(16,185,129,.3)}
.eq-op{color:rgba(228,228,240,.4);font-size:clamp(1.8rem,4vw,3.4rem);font-weight:300}

.hero-tagline{font-size:clamp(1.2rem,2.4vw,1.8rem);color:rgba(228,228,240,.7);margin-bottom:16px}
.hero-desc{font-size:1.1rem;color:var(--dim);margin-bottom:36px;max-width:640px;line-height:1.8}
.cta-grp{display:flex;gap:16px;flex-wrap:wrap}
.btn-p{display:inline-flex;align-items:center;gap:8px;padding:16px 44px;border-radius:12px;border:none;cursor:pointer;background:var(--grad);color:#fff;font-size:1.05rem;font-weight:600;transition:transform .2s,box-shadow .3s}
.btn-p:hover{transform:translateY(-3px);box-shadow:0 12px 36px rgba(79,142,250,.45)}
.btn-g{display:inline-flex;align-items:center;gap:8px;padding:16px 44px;border-radius:12px;cursor:pointer;background:rgba(255,255,255,.04);color:var(--text);font-size:1.05rem;font-weight:600;border:1px solid rgba(79,142,250,.38);text-decoration:none;transition:transform .2s,border-color .3s,background .3s,box-shadow .3s}
.btn-g:hover{border-color:rgba(79,142,250,.65);background:rgba(79,142,250,.1);transform:translateY(-3px);box-shadow:0 8px 28px rgba(79,142,250,.2)}

/* ── hero pipeline ── */
.hero-pipeline{display:flex;align-items:center;margin-top:52px;overflow-x:auto;padding:16px 0 10px;scrollbar-width:none;background:rgba(255,255,255,.025);border:1px solid rgba(79,142,250,.15);border-radius:20px;padding-left:28px;padding-right:28px}
.hero-pipeline::-webkit-scrollbar{display:none}
.hp-node{display:flex;flex-direction:column;align-items:center;gap:7px;flex-shrink:0;min-width:84px}
.hp-circle{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid;transition:box-shadow .3s}
.hp-circle:hover{filter:brightness(1.2)}
.hp-circle svg{width:22px;height:22px}
.hp-label{font-size:.72rem;color:rgba(228,228,240,.65);white-space:nowrap;text-align:center;font-weight:500}
.hp-c1{border-color:var(--blue);background:rgba(79,142,250,.12);box-shadow:0 0 20px rgba(79,142,250,.28)}
.hp-c2{border-color:var(--purple);background:rgba(139,92,246,.12);box-shadow:0 0 20px rgba(139,92,246,.28)}
.hp-c3{border-color:var(--cyan);background:rgba(6,182,212,.12);box-shadow:0 0 20px rgba(6,182,212,.28)}
.hp-c4{border-color:var(--purple);background:rgba(139,92,246,.12);box-shadow:0 0 20px rgba(139,92,246,.28)}
.hp-c5{border-color:var(--green);background:rgba(16,185,129,.12);box-shadow:0 0 20px rgba(16,185,129,.28)}
.hp-c6{border-color:var(--gold);background:rgba(245,158,11,.12);box-shadow:0 0 24px rgba(245,158,11,.35)}
.hp-seg{flex:1;min-width:24px;height:2px;position:relative;overflow:visible;flex-shrink:1}
.hp-seg-line{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,rgba(79,142,250,.2),rgba(139,92,246,.2))}
.hp-seg-dot{position:absolute;top:-4px;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 0 6px rgba(255,255,255,.8);opacity:0;animation:hpflow 2.6s linear infinite}
@keyframes hpflow{0%{left:-5px;opacity:0}8%{opacity:1}90%{opacity:1}100%{left:calc(100% - 5px);opacity:0}}
.hp-seg:nth-child(2) .hp-seg-dot{animation-delay:0s}
.hp-seg:nth-child(4) .hp-seg-dot{animation-delay:.43s}
.hp-seg:nth-child(6) .hp-seg-dot{animation-delay:.86s}
.hp-seg:nth-child(8) .hp-seg-dot{animation-delay:1.3s}
.hp-seg:nth-child(10) .hp-seg-dot{animation-delay:1.73s}

.hero-nums{display:flex;gap:48px;flex-wrap:wrap;margin-top:44px;padding-top:40px;border-top:1px solid rgba(255,255,255,.06)}
.hnum-val{font-size:2.6rem;font-weight:900;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.hnum-lbl{font-size:.78rem;color:var(--dim);margin-top:2px}

/* ── agents ── */
#agents{background:linear-gradient(180deg,var(--bg) 0%,rgba(10,10,25,.5) 100%);padding-top:72px;padding-bottom:56px}
.agents-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:1200px;margin:0 auto}
.agent-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;overflow:hidden;position:relative;backdrop-filter:blur(12px);transition:border-color .4s;display:flex;flex-direction:column}
.agent-card:hover{border-color:rgba(79,142,250,.45)}
.agent-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px}
.agent-card--blue::before{background:linear-gradient(90deg,#4f8efa,#06b6d4)}
.agent-card--purple::before{background:linear-gradient(90deg,#8b5cf6,#ec4899)}
.agent-tag{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:5px;font-size:.72rem;font-weight:600;letter-spacing:.04em;margin-bottom:6px}
.tag-blue{background:rgba(79,142,250,.14);color:var(--blue);border:1px solid rgba(79,142,250,.24)}
.tag-purple{background:rgba(139,92,246,.14);color:var(--purple);border:1px solid rgba(139,92,246,.24)}
.agent-card-name{font-size:1.15rem;font-weight:700;margin-bottom:4px;display:flex;align-items:center;gap:8px}
.agent-card-desc{color:var(--dim);font-size:.78rem;line-height:1.5}

/* ── terminal wrap ── */
.ota-wrap{border-radius:13px;overflow:hidden;border:1px solid rgba(79,142,250,.2);box-shadow:0 20px 56px rgba(0,0,0,.55);flex:1;display:flex;flex-direction:column;margin-top:12px}
.ota-bar{background:#161b22;padding:7px 12px;display:flex;align-items:center;gap:7px}
.ota-dot{width:11px;height:11px;border-radius:50%}
.ota-bar-title{margin-left:6px;font-size:.76rem;color:var(--dim);font-family:monospace}
.ota-term{background:#0d1117;padding:14px;font-family:monospace;font-size:.8rem;line-height:1.85;min-height:200px;color:#c9d1d9;overflow-y:auto;max-height:360px;scrollbar-width:thin;scrollbar-color:rgba(79,142,250,.3) transparent;flex:1}
.ota-line{display:block;white-space:pre-wrap;word-break:break-all}
.ota-head{color:#58a6ff;font-weight:600}
.ota-sep{color:#30363d}
.ota-cmd{color:#e3b341}
.ota-info{color:#8b949e;padding-left:10px}
.ota-ok{color:#3fb950}
.ota-res{color:#79c0ff;padding-left:10px}
.ota-up{color:var(--red);font-weight:700}
.ota-down{color:var(--green);font-weight:700}

/* ── price calendar ── */
.price-calendar{background:rgba(12,12,24,.85);border:1px solid var(--border);border-radius:12px;overflow:hidden}
.pcal-header{padding:8px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:.76rem}
.pcal-header-left{display:flex;align-items:center;gap:6px;color:var(--blue);font-weight:600}
.pcal-header-right{color:var(--dim);font-size:.7rem}
.pcal-table{width:100%;border-collapse:collapse;font-size:.76rem}
.pcal-table th{padding:8px 6px;color:var(--dim);font-weight:500;font-size:.7rem;text-align:center;border-bottom:1px solid var(--border)}
.pcal-table th:first-child{text-align:left;padding-left:12px;width:28%}
.pcal-table td{padding:8px 6px;text-align:center;border-bottom:1px solid rgba(60,70,120,.12)}
.pcal-table td:first-child{text-align:left;padding-left:12px;color:var(--text);font-weight:500}
.pcal-table tbody tr:last-child td{border-bottom:none}
.pcal-cell{display:inline-block;padding:3px 6px;border-radius:4px;transition:all .3s;font-weight:500;font-size:.74rem}
.pcal-cell--up{color:var(--red);font-weight:700}
.pcal-cell--down{color:var(--green);font-weight:700}
.pcal-cell--normal{color:var(--text)}
.pcal-cell.flash{animation:cellFlash 1.2s ease-out}
@keyframes cellFlash{0%{background:transparent}50%{background:rgba(79,142,250,.2);box-shadow:0 0 12px rgba(79,142,250,.4)}100%{background:transparent}}
.pcal-group-row td{padding:8px 12px!important;border-bottom:1px solid var(--border)!important;background:rgba(255,255,255,.02)}
.pcal-group-badge{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;display:inline-flex;align-items:center;gap:4px}
.pcal-badge--type{background:rgba(100,100,180,.12);color:var(--text);border:1px solid rgba(100,100,180,.25);font-size:.68rem}
.pcal-row--own td:first-child{color:var(--text);font-weight:600}
.pcal-comp-name{font-size:.7rem;color:var(--gold);font-weight:500}
.pcal-cell--comp{color:var(--gold);font-size:.72rem;font-weight:500}
.pcal-market{padding:8px 12px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px}
.pcal-mkt-label{font-size:.66rem;color:var(--dim);font-weight:600;white-space:nowrap}
.pcal-mkt-items{display:flex;gap:6px;flex:1;justify-content:space-between}
.pcal-mkt-item{font-size:.62rem;color:var(--dim);display:flex;flex-direction:column;align-items:center;padding:2px 4px;border-radius:4px}
.pcal-mkt--hot{background:rgba(245,158,11,.12);color:var(--gold);border:1px solid rgba(245,158,11,.2)}

/* ── AI suggestion ── */
.ai-suggestion{margin-top:12px;background:rgba(12,12,24,.6);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.ais-header{padding:10px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--purple);font-weight:600}
.ais-header span{color:var(--dim);font-weight:400;font-size:.72rem;margin-left:auto}
.ais-body{padding:12px}
.ais-item{opacity:0;transform:translateX(-20px);transition:all .5s ease-out;padding:10px 14px;background:rgba(255,255,255,.02);border:1px solid rgba(60,70,120,.2);border-radius:10px;margin-bottom:8px}
.ais-item.vis{opacity:1;transform:translateX(0)}
.ais-item-top{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:.8rem}
.ais-room{font-weight:600;color:var(--text)}
.ais-new{font-weight:700;font-size:.9rem}
.ais-delta{font-size:.72rem;font-weight:600;padding:2px 6px;border-radius:4px}
.ais-delta--up{color:var(--red);background:rgba(239,68,68,.12)}
.ais-delta--down{color:var(--green);background:rgba(16,185,129,.12)}
.ais-reason{font-size:.72rem;color:var(--dim)}
.ais-logic{font-size:.68rem;color:var(--cyan);margin-top:3px;font-family:monospace;opacity:.85}

/* ── flow ── */
.flow{display:flex;align-items:center;justify-content:center;gap:0;flex-wrap:wrap;margin:0 auto;max-width:1100px}
.fstep{text-align:center;padding:18px 10px;min-width:96px}
.fcircle{width:70px;height:70px;border-radius:50%;margin:0 auto 9px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border);background:#0c0c18;animation:fpulse 3.2s ease-in-out infinite}
.fcircle svg{width:28px;height:28px}
@keyframes fpulse{0%,100%{box-shadow:0 0 0 0 rgba(79,142,250,0)}50%{box-shadow:0 0 18px 3px rgba(79,142,250,.16)}}
.fstep:nth-child(1) .fcircle{border-color:var(--blue)}
.fstep:nth-child(3) .fcircle{border-color:var(--purple)}
.fstep:nth-child(5) .fcircle{border-color:var(--cyan)}
.fstep:nth-child(7) .fcircle{border-color:var(--purple)}
.fstep:nth-child(9) .fcircle{border-color:var(--green)}
.fstep:nth-child(11) .fcircle{border-color:var(--gold)}
.ftitle{font-weight:600;font-size:.83rem}
.fdesc{font-size:.7rem;color:var(--dim);margin-top:2px}
.farrow{width:36px;height:2px;position:relative;background:linear-gradient(90deg,var(--border),var(--blue));flex-shrink:0;align-self:center}
.farrow::after{content:'';position:absolute;right:-5px;top:50%;transform:translateY(-50%);border:5px solid transparent;border-left-color:var(--blue)}

/* ── proof ── */
.proof-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:44px}
.proof-card{background:var(--card);border:1px solid var(--border);border-radius:13px;padding:22px;backdrop-filter:blur(8px);position:relative;overflow:hidden;transition:transform .3s,border-color .3s}
.proof-card:hover{transform:translateY(-4px);border-color:rgba(79,142,250,.35)}
.proof-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad)}
.proof-src{font-size:.7rem;color:var(--dim);font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}
.proof-stat{font-size:1.75rem;font-weight:900;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:3px}
.proof-name{font-size:.8rem;font-weight:600;margin-bottom:5px}
.proof-desc{font-size:.78rem;color:var(--dim);line-height:1.6}

/* ── market timing ── */
.mkt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.mkt-card{background:var(--card);border:1px solid var(--border);border-radius:13px;padding:22px;backdrop-filter:blur(8px);text-align:center;transition:transform .3s}
.mkt-card:hover{transform:translateY(-3px)}
.mkt-ico{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.mkt-ico svg{width:22px;height:22px}
.mkt-label{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.68rem;font-weight:600;margin-bottom:7px}
.mkt-card h3{font-size:.92rem;font-weight:700;margin-bottom:6px}
.mkt-card p{font-size:.8rem;color:var(--dim);line-height:1.6}

/* ── glass cards ── */
.cgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}
.gc{background:var(--card);border:1px solid var(--border);border-radius:15px;padding:28px;backdrop-filter:blur(12px);transition:transform .35s,box-shadow .35s,border-color .35s;position:relative;overflow:hidden}
.gc::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad);opacity:0;transition:opacity .3s}
.gc:hover{transform:translateY(-5px);box-shadow:0 16px 44px rgba(0,0,0,.5);border-color:rgba(79,142,250,.38)}
.gc:hover::before{opacity:1}
.gc-ico{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin:0 auto 15px}
.gc h3{font-size:1.08rem;font-weight:700;margin-bottom:8px;text-align:center}
.gc p{color:var(--dim);font-size:.9rem;line-height:1.7;text-align:left}

/* ── scenarios ── */
.sgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(256px,1fr));gap:17px}
.sc{background:var(--card);border:1px solid var(--border);border-radius:13px;padding:22px;backdrop-filter:blur(8px);transition:transform .3s}
.sc:hover{transform:translateY(-4px)}
.sc-ico{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;margin:0 auto 11px}
.sc h3{font-size:.98rem;margin-bottom:4px;text-align:center}
.sc .trigger{font-size:.76rem;color:var(--blue);margin-bottom:6px;text-align:center}
.sc p{font-size:.84rem;color:var(--dim);text-align:left}

/* ── roi ── */
.rgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:18px;margin-bottom:38px}
.rc{text-align:center;padding:30px 14px;background:var(--card);border:1px solid var(--border);border-radius:14px;backdrop-filter:blur(8px)}
.rv{font-size:2.3rem;font-weight:900;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.rl{font-size:.8rem;color:var(--dim);margin-top:7px}
.rd{font-size:.72rem;color:var(--dim);margin-top:3px}
.rtbl{width:100%;max-width:800px;margin:0 auto;border-collapse:collapse;font-size:.88rem}
.rtbl th{text-align:left;padding:11px 15px;border-bottom:2px solid var(--border);color:var(--dim);font-weight:500;font-size:.77rem}
.rtbl td{padding:12px 15px;border-bottom:1px solid var(--border)}
.rtbl tr:hover td{background:rgba(255,255,255,.02)}

/* ── cta ── */
#ctab{text-align:center;padding:88px clamp(24px,8vw,120px);background:radial-gradient(ellipse at center,rgba(79,142,250,.08) 0%,transparent 70%)}

/* ── footer ── */
footer{padding:26px;text-align:center;color:var(--dim);font-size:.77rem;border-top:1px solid var(--border)}

/* ── contact widget ── */
.cfab{position:fixed;bottom:30px;right:30px;z-index:300;width:54px;height:54px;border-radius:50%;border:none;cursor:pointer;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 22px rgba(79,142,250,.42);transition:transform .3s,box-shadow .3s}
.cfab:hover{transform:scale(1.08);box-shadow:0 8px 30px rgba(79,142,250,.55)}
.cfab svg{width:24px;height:24px}
.cpanel{position:fixed;bottom:96px;right:30px;z-index:300;width:296px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:26px;box-shadow:0 20px 56px rgba(0,0,0,.62);transform:translateY(16px) scale(.95);opacity:0;pointer-events:none;transition:all .3s ease-out}
.cpanel.open{transform:translateY(0) scale(1);opacity:1;pointer-events:auto}
.cpanel h4{font-size:.98rem;margin-bottom:14px}
.cqr{text-align:center;margin-top:6px}
.cqr .qr-placeholder{width:156px;height:156px;border-radius:8px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;margin:0 auto;background:rgba(255,255,255,.03);font-size:.72rem;color:var(--dim)}
.cqr p{font-size:.76rem;color:var(--dim);margin-top:7px}

/* ── login modal ── */
.login-overlay{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.7);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s}
.login-overlay.open{opacity:1;pointer-events:auto}
.login-modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:36px 32px;width:380px;max-width:90vw;transform:translateY(20px);transition:transform .3s;position:relative}
.login-overlay.open .login-modal{transform:translateY(0)}
.login-modal h3{font-size:1.2rem;font-weight:700;margin-bottom:24px;text-align:center}
.login-modal .field{margin-bottom:16px}
.login-modal label{display:block;font-size:.8rem;color:var(--dim);margin-bottom:6px}
.login-modal input{width:100%;padding:10px 14px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.9rem;outline:none;transition:border-color .3s}
.login-modal input:focus{border-color:var(--blue)}
.login-modal .login-submit{width:100%;padding:12px;border-radius:8px;border:none;cursor:pointer;background:var(--grad);color:#fff;font-size:.95rem;font-weight:600;margin-top:8px;transition:opacity .3s}
.login-modal .login-submit:hover{opacity:.85}
.login-modal .login-footer{text-align:center;font-size:.78rem;color:var(--dim);margin-top:16px}
.login-modal .login-footer a{color:var(--blue);text-decoration:none;font-weight:500}
.login-modal .login-footer a:hover{text-decoration:underline}
.login-modal .login-close{position:absolute;top:14px;right:18px;background:none;border:none;color:var(--dim);font-size:1.3rem;cursor:pointer;line-height:1}
.login-modal .login-close:hover{color:var(--text)}

/* ── reveal animation ── */
.rv-in{opacity:0;transform:translateY(28px);transition:opacity .65s ease-out,transform .65s ease-out}
.rv-in.vis{opacity:1;transform:translateY(0)}
.d1{transition-delay:.07s}.d2{transition-delay:.14s}.d3{transition-delay:.21s}.d4{transition-delay:.28s}

/* ── responsive desktop ── */
@media(min-width:769px){
  .hero-body{text-align:center;margin-left:auto;margin-right:auto}
  .hero-desc{margin-left:auto;margin-right:auto}
  .cta-grp{justify-content:center}
  .hero-eq{justify-content:center}
  .hero-nums{justify-content:center}
  .hero-pipeline{justify-content:center;max-width:860px;margin-left:auto;margin-right:auto}
}

/* ── responsive ── */
@media(max-width:900px){.agents-grid{grid-template-columns:1fr}.proof-grid{grid-template-columns:1fr 1fr}.mkt-grid{grid-template-columns:1fr 1fr}}
@media(max-width:768px){
  .hero-orb{filter:blur(60px);opacity:.12}
  .hero-orb--3,.hero-orb--4{display:none}
  .hero-mesh{opacity:.04}
  .hero-grid{opacity:.02;background-size:48px 48px}
  .agents-grid{grid-template-columns:1fr;gap:20px}
  .agent-card{padding:14px}
  .nav-list{display:none}
  main section{padding:60px clamp(14px,5vw,26px) 44px}
  h2{font-size:clamp(1.18rem,4.5vw,1.6rem);padding:0 6px;text-wrap:balance}
  .sub{font-size:.93rem;padding:0 4px;margin-bottom:26px}
  #ctab{padding:56px clamp(14px,5vw,26px)}
  #hero{padding-top:66px;min-height:auto;padding-bottom:36px}
  .hero-body{text-align:center}
  .hero-eq{gap:7px;justify-content:center}
  .eq-tag{font-size:clamp(1.1rem,4.5vw,1.6rem);padding:7px 14px;border-radius:8px}
  .eq-op{font-size:clamp(1.2rem,4.5vw,1.8rem)}
  .hero-tagline{font-size:1rem}
  .hero-desc{font-size:.96rem;margin-bottom:22px;margin-left:auto;margin-right:auto}
  .cta-grp{justify-content:center;width:100%}
  .btn-p,.btn-g{flex:1 1 0;min-width:0;padding:11px 8px;font-size:.84rem;justify-content:center}
  .hero-pipeline{margin-top:20px;justify-content:flex-start;padding:12px 16px;border-radius:14px}
  .hp-node{min-width:50px}
  .hp-circle{width:36px;height:36px}
  .hp-circle svg{width:15px;height:15px}
  .hp-label{font-size:.6rem}
  .hp-seg{min-width:10px}
  .hero-nums{display:grid;grid-template-columns:1fr 1fr;gap:16px 10px;margin-top:24px;padding-top:24px}
  .hero-nums>div{text-align:center}
  .hnum-val{font-size:clamp(1.6rem,6.5vw,2rem)}
  .hnum-lbl{font-size:.68rem;margin-top:3px}
  .proof-grid{grid-template-columns:1fr}
  .mkt-grid{grid-template-columns:1fr}
  .cgrid{grid-template-columns:1fr 1fr;gap:9px}
  .gc{padding:13px 9px;border-radius:11px}
  .gc-ico{width:36px;height:36px;border-radius:9px;margin:0 auto 9px}
  .gc h3{font-size:.86rem;margin-bottom:4px}
  .gc p{font-size:.73rem;line-height:1.5}
  .sgrid{grid-template-columns:1fr 1fr;gap:9px}
  .sc{padding:13px 8px;border-radius:11px}
  .sc-ico{width:30px;height:30px;margin:0 auto 7px}
  .sc h3{font-size:.84rem}
  .sc .trigger{font-size:.69rem;margin-bottom:4px}
  .sc p{font-size:.75rem}
  .flow{flex-direction:column;align-items:center}
  .farrow{width:2px;height:18px;background:linear-gradient(180deg,var(--border),var(--blue))}
  .farrow::after{right:auto;left:50%;top:auto;bottom:-5px;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--blue);border-left-color:transparent}
  .fstep{padding:9px 8px;min-width:0}
  .fcircle{width:46px;height:46px;margin-bottom:6px}
  .fcircle svg{width:21px;height:21px}
  .ftitle{font-size:.76rem;line-height:1.3}
  .fdesc{font-size:.67rem;margin-top:2px}
  .rgrid{grid-template-columns:1fr 1fr;gap:9px;margin-bottom:28px}
  .rc{padding:18px 8px;border-radius:11px}
  .rv{font-size:clamp(1.4rem,5.8vw,1.8rem)}
  .rl{font-size:.74rem;margin-top:5px}
  .rd{font-size:.67rem;margin-top:2px}
  .rtbl{font-size:.79rem}
  .rtbl th,.rtbl td{padding:8px 6px}
  .cpanel{right:12px;width:calc(100vw - 24px);max-width:316px}
  .cfab{bottom:16px;right:16px}

  /* ── Dashboard Mobile ── */
  #reportDashboard header{flex-wrap:wrap;gap:8px;padding:10px 14px}
  #reportDashboard header .logo{font-size:1.1rem}
  #reportDashboard header .logo-sub{font-size:.7rem}
  #reportDashboard .dash-user{font-size:.75rem;gap:8px}
  #reportDashboard .dash-user .btn-out{padding:5px 12px;font-size:.7rem}
  #reportDashboard .dash-body{flex-direction:column}
  #reportDashboard .hotel-sidebar{width:100%;min-width:0;flex-direction:row;flex-wrap:wrap;align-items:center;padding:10px 14px;border-right:none;border-bottom:1px solid var(--border);gap:8px}
  #reportDashboard .hotel-sidebar-title{display:none}
  #reportDashboard .hotel-search-wrap{margin-bottom:0;flex:1;min-width:120px}
  #reportDashboard .hotel-nav{flex-direction:row;flex-wrap:wrap;gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  #reportDashboard .hotel-chip{white-space:nowrap;font-size:.72rem;padding:6px 10px}
  #reportDashboard .dash-main{padding:16px 12px}
  #reportDashboard .report-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}
  #reportDashboard .report-tab{padding:8px 16px;font-size:.82rem;white-space:nowrap}
  #reportDashboard .comp-table-wrap{margin-bottom:20px}
  #reportDashboard .comp-table{font-size:.7rem}
  #reportDashboard .comp-table th,#reportDashboard .comp-table td{padding:5px 6px}
  #reportDashboard .comp-td-room{min-width:80px;max-width:120px;font-size:.7rem;white-space:normal;word-break:break-all}
  #reportDashboard .comp-th-room{min-width:70px}
  #reportDashboard .comp-sep-label{font-size:.78rem}
  #reportDashboard .comp-sep-time{font-size:.65rem}
  #reportDashboard .comp-match-btn{padding:2px 6px;font-size:.62rem}
  #reportDashboard .comp-del-btn{padding:2px 8px;font-size:.62rem}
  #reportDashboard .report-toolbar{gap:8px;margin-bottom:18px}
  #reportDashboard .report-toolbar select,#reportDashboard .report-toolbar input{font-size:.78rem;padding:7px 10px}
  #reportDashboard .stats-toolbar{gap:8px;margin-bottom:16px}
  #reportDashboard .stats-toolbar select,#reportDashboard .stats-toolbar input{font-size:.78rem;padding:7px 10px}
  #reportDashboard .stats-section{padding:14px}
  #reportDashboard .stats-section-title{font-size:.9rem;margin-bottom:10px}
  #reportDashboard .chart-wrap{height:240px}
  #reportDashboard .report-card{padding:14px 16px}
  #reportDashboard .report-list .pingping-card{padding:14px}
  #reportDashboard .pingping-header{font-size:.8rem}
  #reportDashboard .pingping-body{font-size:.8rem}
  #reportDashboard .room-match-modal{width:calc(100vw - 24px);max-width:400px;padding:16px}
  #reportDashboard .rm-section h4{font-size:.78rem}
  #reportDashboard .rm-tag{padding:4px 8px;font-size:.7rem}
  footer{padding:16px!important;font-size:.68rem!important}

  /* landing page header */
  .hdr-btns{gap:8px}
  .hdr-login{padding:5px 12px;font-size:.72rem}
  .hdr-cta{padding:5px 14px;font-size:.72rem}

  /* login modal */
  .login-overlay .login-modal{width:calc(100vw - 28px);max-width:320px;padding:22px 18px}
}

/* ── Reports Dashboard ── */
#reportDashboard{display:flex;flex-direction:column;min-height:100vh;background:var(--bg)}
#reportDashboard header{position:sticky;top:0;z-index:200;padding:12px clamp(20px,6vw,80px);display:flex;align-items:center;justify-content:space-between;background:rgba(6,6,14,.85);backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}
.dash-user{display:flex;align-items:center;gap:12px;font-size:.85rem}
.dash-user .btn-out{background:transparent;border:1px solid var(--border);color:var(--dim);padding:6px 16px;border-radius:6px;cursor:pointer;font-size:.8rem;transition:all .3s}
.dash-user .btn-out:hover{color:var(--text);border-color:rgba(255,255,255,.4)}
.dash-body{display:flex;flex:1;flex-direction:row;flex-wrap:nowrap}
.hotel-sidebar{width:220px;min-width:220px;flex-shrink:0;display:flex;flex-direction:column;padding:20px 16px;border-right:1px solid var(--border);overflow-y:auto;background:rgba(6,6,14,.5)}
.hotel-sidebar-title{font-size:.85rem;font-weight:600;color:var(--text);margin-bottom:12px}
.hotel-search-wrap{margin-bottom:10px}
.hotel-search-wrap input{width:100%;box-sizing:border-box;padding:6px 12px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.8rem;outline:none;transition:border-color .3s}
.hotel-search-wrap input:focus{border-color:var(--blue)}
.hotel-search-wrap input::placeholder{color:var(--dim)}
.hotel-nav{display:flex;flex-direction:column;gap:4px}
.hotel-chip{display:block;padding:8px 12px;border-radius:8px;font-size:.8rem;color:var(--dim);text-decoration:none;border:1px solid transparent;transition:all .2s}
.hotel-chip:hover{color:var(--text);background:rgba(255,255,255,.04)}
.hotel-chip.active{color:var(--blue);background:rgba(79,142,250,.1);border-color:var(--blue)}
.hotel-chip.hidden{display:none}
.hotel-empty{font-size:.78rem;color:var(--dim);padding:8px 0}
.dash-main{flex:1;min-width:0;padding:24px 32px}
.report-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:28px;flex-wrap:wrap}
.report-tabs{display:flex;gap:0;margin-bottom:24px;border-bottom:2px solid var(--border)}
.report-tab{padding:10px 24px;font-size:.92rem;font-weight:500;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--dim);cursor:pointer;transition:color .2s,border-color .2s}
.report-tab:hover{color:var(--text)}
.report-tab.active{color:var(--blue);border-bottom-color:var(--blue)}
.report-tab-panel{min-height:200px}
/* ── 房型名匹配 ── */
.rm-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px 20px;margin-bottom:12px}
.rm-pms-name{font-weight:600;font-size:.95rem;margin-bottom:10px;color:var(--blue)}
.rm-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.rm-label{font-size:.82rem;color:var(--dim);min-width:60px}
.rm-tag{display:inline-flex;align-items:center;padding:3px 12px;border-radius:6px;font-size:.8rem;font-weight:500}
.rm-tag-xc{background:rgba(0,120,212,.1);color:#0078d4}
.rm-tag-mt{background:rgba(255,186,0,.15);color:#ffba00}
.rm-tag-none{background:rgba(148,163,184,.1);color:var(--dim)}
.rm-del{margin-left:6px;color:#ef4444;cursor:pointer;font-weight:700;font-size:.9rem;opacity:.7}
.rm-del:hover{opacity:1}
.rm-input-wrap{display:flex;align-items:center;gap:8px;margin-top:4px}
.rm-input{flex:1;min-width:0;padding:7px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:.85rem;outline:none;transition:border-color .2s,box-shadow .2s}
.rm-input:focus{border-color:#ffba00;box-shadow:0 0 0 3px rgba(255,186,0,.1)}
.rm-input::placeholder{color:var(--dim)}
.rm-add-btn{display:inline-flex;align-items:center;justify-content:center;padding:7px 16px;border-radius:8px;border:none;background:linear-gradient(135deg,#ffba00,#ff9f00);color:#fff;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s}
.rm-add-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(255,186,0,.4)}
.rm-add-btn:active{transform:translateY(0)}
.stats-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.stats-toolbar select{padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.85rem;outline:none;cursor:pointer}
.stats-toolbar select:focus{border-color:var(--blue)}
.stats-toolbar select option{background:var(--surface);color:var(--text)}
.stats-toggle-btn{padding:8px 18px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.85rem;cursor:pointer;transition:background .2s}
.stats-toggle-btn:hover{background:rgba(79,142,250,.15)}
.stats-charts{display:flex;flex-direction:column;gap:24px}
.chart-wrap{position:relative;width:100%;height:320px}
.chart-wrap canvas{width:100%!important;height:100%!important}
.stats-content{display:flex;flex-direction:column;gap:24px}
.stats-section{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px 24px}
.stats-section-title{font-size:1.05rem;color:var(--blue);margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.stats-comp-title{font-size:.9rem;color:var(--text);margin:12px 0 8px;font-weight:500}
.stats-table{width:100%;border-collapse:collapse;font-size:.82rem}
.stats-table th{padding:8px 10px;text-align:left;color:var(--dim);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap}
.stats-table td{padding:7px 10px;border-bottom:1px solid rgba(255,255,255,.04);white-space:nowrap}
.stats-table tbody tr:hover{background:rgba(79,142,250,.04)}
.report-toolbar h2{font-size:1.2rem;margin-right:auto}
.report-toolbar select{padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.85rem;outline:none;cursor:pointer}
.report-toolbar select:focus{border-color:var(--blue)}
.report-toolbar select option{background:var(--surface);color:var(--text)}
.report-datepicker{padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.85rem;outline:none;color-scheme:dark;cursor:pointer}
.report-datepicker:focus{border-color:var(--blue)}
.report-datepicker::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer}
.report-loading{text-align:center;padding:60px 20px;color:var(--dim);font-size:.9rem}
.report-empty{text-align:center;padding:60px 20px;color:var(--dim);font-size:.9rem}
.report-group{margin-bottom:32px}
.report-hotel{font-size:1rem;color:var(--blue);margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.report-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px 24px;margin-bottom:12px;transition:border-color .3s}
.report-card:hover{border-color:rgba(79,142,250,.35)}
.report-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.report-cat{display:inline-block;padding:2px 10px;border-radius:10px;font-size:.7rem;font-weight:600}
.cat-price{background:rgba(245,158,11,.15);color:var(--gold)}
.cat-traffic{background:rgba(79,142,250,.15);color:var(--blue)}
.cat-revenue{background:rgba(16,185,129,.15);color:var(--green)}
.report-date{font-size:.75rem;color:var(--dim)}
.report-card h4{font-size:.93rem;margin-bottom:8px;color:var(--text)}
.report-card p{font-size:.82rem;color:var(--dim);line-height:1.7}
.report-body{font-size:.82rem;color:var(--dim);line-height:1.7}
.report-body p{margin:0 0 10px}
.report-body h3{font-size:1rem;font-weight:700;color:var(--text);margin:14px 0 8px}
.report-body h4{font-size:.93rem;font-weight:700;color:var(--text);margin:12px 0 6px}
.report-body h5{font-size:.85rem;font-weight:600;color:var(--text);margin:10px 0 4px}
.report-body strong{color:var(--text);font-weight:600}
.report-body ul{list-style:disc;padding-left:20px;margin:6px 0}
.report-body li{line-height:1.7;margin:2px 0}
.report-body blockquote{border-left:3px solid var(--blue);padding:4px 12px;margin:8px 0;color:rgba(79,142,250,.85);background:rgba(79,142,250,.06);border-radius:0 6px 6px 0}
.report-body hr{border:none;border-top:1px solid var(--border);margin:12px 0}
.report-body code{font-family:monospace;font-size:.78rem}
.report-body .md-inline{background:rgba(255,255,255,.08);padding:1px 5px;border-radius:4px}
.report-body .md-pre{background:rgba(0,0,0,.3);padding:12px;border-radius:8px;overflow-x:auto;margin:8px 0;white-space:pre-wrap;word-break:break-all}
.report-body .md-up{color:var(--red)}
.report-body .md-down{color:var(--green)}

/* ── Competitor Price Table ── */
.comp-table-wrap{margin-bottom:32px;overflow-x:auto}
.comp-loading{text-align:center;padding:30px 0;color:var(--dim);font-size:.85rem}
.comp-empty{text-align:center;padding:20px 0;color:var(--dim);font-size:.82rem}
.comp-table{width:100%;border-collapse:collapse;font-size:.82rem;min-width:600px}
.comp-table th{text-align:center;padding:10px 8px;border-bottom:1px solid var(--border);color:var(--dim);font-weight:500;font-size:.78rem;white-space:nowrap}
.comp-th-room{text-align:left !important;padding-left:0 !important;min-width:110px}
.comp-table td{text-align:center;padding:10px 8px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:top}
.comp-td-room{text-align:left !important;padding-left:0 !important;color:var(--text);font-weight:600;white-space:nowrap}
.comp-pms-label{color:var(--blue);font-size:.65rem;font-weight:500}
.comp-td-na{color:var(--dim);font-size:.75rem}
.comp-td-sold{color:var(--red)}
.comp-sold{display:inline-block;padding:2px 8px;border-radius:4px;background:rgba(245,34,45,.1);color:var(--red);font-size:.72rem;font-weight:600}
.comp-price{color:var(--text);font-weight:700;font-size:.88rem}
.comp-ori{font-size:.65rem;color:var(--dim);text-decoration:line-through;margin-left:3px}
.comp-rem{color:var(--green);font-size:.7rem}
.comp-from{color:var(--dim);font-size:.68rem;margin-top:1px}
.comp-row{display:flex;align-items:center;gap:6px;padding:2px 0;line-height:1.4}
.comp-row+.comp-row{border-top:1px solid rgba(255,255,255,.04);padding-top:3px;margin-top:1px}
.comp-stock{color:var(--green);font-size:.65rem;margin-top:1px}
.comp-table tr:hover td{background:rgba(255,255,255,.02)}
.comp-sep-row td{padding:0 !important;border:none !important}
.comp-sep-hr{border:none;border-top:1px solid var(--border);margin:0 0 10px 0}
.comp-sep-label{display:inline;color:var(--blue);font-size:.85rem;font-weight:600;margin-right:10px}
.comp-sep-time{color:var(--dim);font-size:.68rem}
.comp-th-avg{font-size:.68rem !important;color:#f59e0b !important}
.comp-th-avggrp{font-size:.7rem !important;font-weight:600;text-align:center;color:var(--text)}
.comp-th-slot{font-size:.62rem !important;color:var(--dim) !important;font-weight:400;padding:2px 6px !important}
.comp-td-avg{font-size:.72rem;font-weight:600;white-space:nowrap}
.comp-avg-wd{color:var(--blue)}
.comp-avg-we{color:#f59e0b}
.comp-avg-ho{color:var(--red)}
.comp-up{color:var(--red);font-size:.62rem;font-weight:600}
.comp-down{color:var(--green);font-size:.62rem;font-weight:600}
.comp-match-btn{display:inline-block;margin-left:8px;padding:1px 8px;border:1px solid var(--blue);border-radius:4px;background:transparent;color:var(--blue);font-size:.65rem;cursor:pointer;vertical-align:middle;line-height:1.6}
.comp-match-btn:hover{background:var(--blue);color:#fff}
.comp-match-comp{border-color:var(--green);color:var(--green)}
.comp-match-comp:hover{background:var(--green);color:#fff}
.comp-match-low{display:inline-block;margin-left:6px;padding:1px 6px;border:1px solid var(--orange);border-radius:4px;background:transparent;color:var(--orange);font-size:.62rem;cursor:pointer;vertical-align:middle;line-height:1.6}
.comp-match-low:hover{background:var(--orange);color:#fff}
.comp-match-set{border-color:var(--red);color:var(--red)}
.comp-match-set:hover{background:var(--red);color:#fff}
.comp-match-add{border-color:var(--dim);color:var(--dim)}
.comp-match-add:hover{background:var(--dim);color:#fff}
.comp-remark-tag{display:inline-block;margin-left:4px;padding:1px 6px;border:1px solid var(--purple);border-radius:3px;background:rgba(147,51,234,.15);color:var(--purple);font-size:.58rem;vertical-align:middle;line-height:1.4;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comp-del-btn{display:inline-block;margin-left:6px;padding:1px 6px;border:1px solid var(--red);border-radius:3px;background:transparent;color:var(--red);font-size:.6rem;cursor:pointer;vertical-align:middle;line-height:1.5}
.comp-del-btn:hover{background:var(--red);color:#fff}
.comp-add-wrap{margin-top:10px}
.comp-add-btn{display:inline-block;padding:4px 14px;border:1px dashed var(--border);border-radius:6px;background:transparent;color:var(--dim);font-size:.72rem;cursor:pointer}
.comp-add-btn:hover{border-color:var(--blue);color:var(--blue)}

/* 房型匹配弹窗 */
.room-match-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:9999;display:flex;align-items:center;justify-content:center}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:9999;display:flex;align-items:center;justify-content:center}
.room-match-modal{background:#101020;border:1px solid var(--border);border-radius:12px;width:90%;max-width:700px;max-height:85vh;display:flex;flex-direction:column;padding:24px 28px 16px}
.room-match-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex-shrink:0}
.room-match-head h3{color:var(--text);font-size:1rem;margin:0}
.room-match-head h3 span{color:var(--blue)}
.room-match-close{background:none;border:none;color:var(--dim);font-size:1.4rem;cursor:pointer;padding:0 4px;line-height:1}
.room-match-close:hover{color:var(--text)}
.room-match-body{overflow-y:auto;flex:1;min-height:0}
.rm-section{margin-bottom:18px}
.rm-section h4{color:var(--dim);font-size:.78rem;margin:0 0 8px 0;text-transform:uppercase;letter-spacing:.5px}
.rm-table{width:100%;border-collapse:collapse;font-size:.78rem}
.rm-table th,.rm-table td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--border)}
.rm-table th{color:var(--dim);font-weight:500;font-size:.7rem}
.rm-comp-group{margin-bottom:10px}
.rm-comp-group strong{display:block;color:var(--blue);font-size:.78rem;margin-bottom:6px}
.rm-chip{display:inline-block;padding:2px 10px;margin:2px 4px 2px 0;border:1px solid var(--border);border-radius:12px;font-size:.72rem;color:var(--text);background:rgba(255,255,255,.03)}
.rm-chip-mapped{border-color:var(--green);color:var(--green);background:rgba(82,196,26,.06)}
.rm-chip-price{color:var(--text);font-weight:600;font-size:.7rem}
.rm-chip-price.sold{color:var(--red)}
.rm-th-label{color:var(--blue);font-size:.62rem}
.rm-avail{color:var(--green);font-size:.65rem}
.rm-chip-ori{color:var(--dim);font-size:.65rem;text-decoration:line-through;margin-left:2px}
.rm-chip:hover{opacity:.7}
.rm-del-btn{background:none;border:1px solid var(--red);color:var(--red);font-size:.65rem;padding:1px 8px;border-radius:4px;cursor:pointer}
.rm-del-btn:hover{background:var(--red);color:#fff}
.pingping-card{background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(82,196,26,.02));border:1px solid rgba(82,196,26,.15);border-radius:10px;padding:16px 20px;margin-bottom:20px}
.pingping-header{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--green);font-weight:600;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(82,196,26,.1)}
.pingping-date{color:var(--dim);font-size:.72rem;font-weight:400;margin-left:auto}
.pingping-body{font-size:.82rem;line-height:1.7;color:var(--text)}
.pingping-body p{margin:0 0 6px}
.login-err{color:var(--red);font-size:.78rem;min-height:20px;margin-bottom:4px;text-align:left}

/* ── AI 操作规则 ── */
.ai-ops-form{max-width:600px}
.ai-ops-field{margin-bottom:16px}
.ai-ops-field label{display:block;color:var(--dim);font-size:.8rem;margin-bottom:6px}
.ai-ops-input{width:100%;box-sizing:border-box;padding:9px 14px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.85rem;outline:none;transition:border-color .3s}
.ai-ops-input:focus{border-color:var(--blue)}
.ai-ops-textarea{width:100%;box-sizing:border-box;padding:9px 14px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);font-size:.85rem;outline:none;resize:vertical;min-height:60px;font-family:inherit;transition:border-color .3s}
.ai-ops-textarea:focus{border-color:var(--blue)}
.ai-ops-platforms{display:flex;gap:20px}
.ai-ops-platform{display:flex;align-items:center;gap:6px;color:var(--text);font-size:.82rem;cursor:pointer}
.ai-ops-platform input{accent-color:var(--blue)}
.ai-ops-room-hint{font-size:.68rem;color:var(--dim);font-weight:400;margin-left:6px}
.ai-ops-hotel-name{color:var(--blue);font-size:.82rem;font-weight:500}
.ai-ops-room-tags{display:flex;flex-wrap:wrap;gap:6px}
.ai-room-tag{display:inline-block;padding:3px 12px;border:1px solid var(--border);border-radius:12px;font-size:.72rem;color:var(--text);cursor:pointer;transition:all .2s;user-select:none}
.ai-room-tag:hover{border-color:var(--blue);color:var(--blue);background:rgba(79,142,250,.1)}
.ai-ops-submit{margin-top:20px}
.ai-ops-btn{padding:9px 28px;border-radius:8px;border:none;background:var(--grad);color:#fff;font-size:.85rem;cursor:pointer;font-weight:500;transition:opacity .3s}
.ai-ops-btn:hover{opacity:.85}
.ai-ops-peek .ai-ops-subtab.active{color:var(--blue);border-bottom-color:var(--blue)}

/* 规则卡片 */
.ai-rule-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px 20px}
.ai-rule-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.ai-rule-name{color:var(--text);font-size:.88rem;font-weight:600}
.ai-rule-platform{display:inline-block;padding:2px 10px;border-radius:10px;font-size:.68rem;background:rgba(79,142,250,.15);color:var(--blue)}
.ai-rule-hotel{display:inline-block;padding:2px 10px;border-radius:10px;font-size:.68rem;background:rgba(139,92,246,.12);color:#a78bfa}
.ai-rule-edit{background:transparent;border:1px solid var(--blue);color:var(--blue);font-size:.7rem;padding:2px 10px;border-radius:6px;cursor:pointer;transition:all .3s}
.ai-rule-edit:hover{background:var(--blue);color:#fff}
.ai-rule-del{background:transparent;border:1px solid var(--red);color:var(--red);font-size:.7rem;padding:2px 10px;border-radius:6px;cursor:pointer;margin-left:auto;transition:all .3s}
.ai-rule-del:hover{background:var(--red);color:#fff}
.ai-ops-cancel{background:rgba(255,255,255,.06);color:var(--dim);margin-left:10px}
.ai-ops-cancel:hover{opacity:.7}
.ai-rule-off{opacity:.45;filter:grayscale(.3)}

/* Toggle Switch */
.ai-switch{position:relative;display:inline-block;width:38px;height:20px;flex-shrink:0}
.ai-switch input{opacity:0;width:0;height:0}
.ai-switch-slider{position:absolute;inset:0;border-radius:20px;background:rgba(255,255,255,.15);cursor:pointer;transition:background .25s}
.ai-switch-slider::before{content:'';position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .25s}
.ai-switch input:checked+.ai-switch-slider{background:var(--blue)}
.ai-switch input:checked+.ai-switch-slider::before{transform:translateX(18px)}
.ai-rule-row{display:flex;gap:10px;margin-bottom:4px;font-size:.8rem}
.ai-rule-lbl{color:var(--dim);min-width:36px;flex-shrink:0}
.ai-rule-row span:last-child{color:var(--text)}
.ai-ops-subtab.active{color:var(--blue)!important;border-bottom-color:var(--blue)!important}

/* ── Toast ── */
.toast{position:fixed;top:24px;left:50%;transform:translateX(-50%);padding:10px 28px;border-radius:10px;font-size:.85rem;z-index:99999;opacity:0;transition:opacity .3s,transform .3s;transform:translateX(-50%) translateY(-12px);pointer-events:none}
.toast-in{opacity:1;transform:translateX(-50%) translateY(0)}
.toast-ok{background:#065f46;color:#a7f3d0;border:1px solid rgba(16,185,129,.35)}
.toast-err{background:#7f1d1d;color:#fecaca;border:1px solid rgba(239,68,68,.35)}
.toast-warn{background:#78350f;color:#fde68a;border:1px solid rgba(245,158,11,.35)}

/* ── Confirm Modal ── */
.cfm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:99998;display:flex;align-items:center;justify-content:center}
.cfm-box{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:28px 32px 20px;max-width:360px;width:90%;text-align:center}
.cfm-msg{color:var(--text);font-size:.9rem;margin:0 0 22px;line-height:1.6}
.cfm-btns{display:flex;gap:12px;justify-content:center}
.cfm-btn{padding:8px 28px;border-radius:8px;font-size:.82rem;cursor:pointer;border:none;font-weight:500;transition:opacity .2s}
.cfm-btn:hover{opacity:.85}
.cfm-cancel{background:rgba(255,255,255,.08);color:var(--dim)}
.cfm-ok{background:var(--grad);color:#fff}
