diff --git a/IDE官网/assets/css/ai-advisor.css b/IDE官网/assets/css/ai-advisor.css index 3629100..8e19b06 100644 --- a/IDE官网/assets/css/ai-advisor.css +++ b/IDE官网/assets/css/ai-advisor.css @@ -31,6 +31,14 @@ --ai-action: #054f74; --ai-action-hover: #054b6e; --ai-action-rgb: 5, 79, 116; + --ai-sky: #2a9bb5; + --ai-sky-hover: #238aa2; + --ai-sky-rgb: 42, 155, 181; + --ai-sky-soft: color-mix(in srgb, var(--ai-sky) 14%, #fff); + --ai-gold: #c7923e; + --ai-gold-hover: #b58232; + --ai-gold-rgb: 199, 146, 62; + --ai-gold-soft: color-mix(in srgb, var(--ai-gold) 16%, #fff); --ai-primary-soft: #e0edf2; --ai-primary-mid: color-mix(in srgb, var(--ai-action) 16%, #fff); --ai-primary-softer: color-mix(in srgb, var(--ai-action) 10%, #fff); @@ -42,11 +50,10 @@ --ai-muted: var(--ai-text-2); --ai-line: var(--ai-border); --ai-glass: var(--ai-surface); - --ai-gold: var(--ai-action); --ai-content-max: 1120px; --ai-guide-panel-w: 520px; --ai-acrylic-bg: rgba(255, 255, 255, 0.32); - --ai-acrylic-bg-primary: rgba(255, 255, 255, 0.38); + --ai-acrylic-bg-primary: color-mix(in srgb, var(--ai-gold-soft) 42%, rgba(255, 255, 255, 0.38)); } body.command-home { @@ -90,14 +97,6 @@ body.command-home .site-nav-dock { body.command-home #navbar .site-nav-dock a { display: inline-flex; align-items: center; - gap: 8px; -} - -body.command-home #navbar .site-nav-dock a .site-nav-dock__icon { - font-size: 1.05rem; - line-height: 1; - color: var(--ai-text-3); - flex-shrink: 0; } @media (max-width: 1279px) { @@ -133,8 +132,8 @@ body.command-home #navbar .site-nav-dock a .site-nav-dock__icon { flex-direction: row; align-items: center; justify-content: center; - gap: 4px; - padding: 6px 8px; + gap: 20px; + padding: 6px 12px; border-radius: 22px; border: 1px solid rgba(255, 255, 255, 0.72); background: var(--ai-acrylic-bg); @@ -154,14 +153,13 @@ body.command-home #navbar .site-nav-dock a .site-nav-dock__icon { display: inline-flex; align-items: center; justify-content: center; - gap: 6px; min-height: 40px; padding: 8px 14px; border-radius: 16px; border: 1px solid transparent; color: var(--ai-text-2); - font-size: 0.84rem; - font-weight: 600; + font-size: 1rem; + font-weight: 700; letter-spacing: 0.01em; white-space: nowrap; background: transparent; @@ -171,13 +169,6 @@ body.command-home #navbar .site-nav-dock a .site-nav-dock__icon { color 0.2s var(--ai-ease); } - body.command-home #navbar .site-nav-dock a .site-nav-dock__icon { - font-size: 1rem; - line-height: 1; - color: var(--ai-text-3); - transition: color 0.2s var(--ai-ease); - } - body.command-home #navbar .site-nav-dock a:hover, body.command-home #navbar .site-nav-dock a.active, body.command-home #navbar .site-nav-dock a.active:focus { @@ -192,11 +183,6 @@ body.command-home #navbar .site-nav-dock a .site-nav-dock__icon { color: var(--ai-action); } - body.command-home #navbar .site-nav-dock a:hover .site-nav-dock__icon, - body.command-home #navbar .site-nav-dock a.active .site-nav-dock__icon { - color: var(--ai-action); - } - body.command-home #navbar > ul > li.site-nav-tools { display: flex; align-items: center; @@ -325,7 +311,11 @@ body.command-home #ai-advisor-shell { position: absolute; inset: -160px; overflow: visible; - background: var(--ai-bg); + background: + radial-gradient(ellipse 58% 48% at 18% 12%, rgba(var(--ai-sky-rgb), 0.055), transparent 68%), + radial-gradient(ellipse 52% 44% at 86% 78%, rgba(var(--ai-gold-rgb), 0.04), transparent 70%), + radial-gradient(ellipse 40% 36% at 72% 18%, rgba(var(--ai-action-rgb), 0.03), transparent 72%), + var(--ai-bg); } .ai-shell-bg__veil { @@ -807,7 +797,7 @@ body.command-home .ai-stage-map--eu { flex-direction: column; flex: 1; min-height: 0; - overflow: hidden; + overflow: visible; } /* History is a drawer, never a second brand column */ @@ -1270,7 +1260,7 @@ body.command-home .ai-stage-map--eu { flex: 1; min-height: 0; overflow-y: auto; - padding: 28px 0 16px; + padding: 10px 0 16px; scroll-behavior: smooth; overscroll-behavior: contain; scrollbar-width: none; @@ -1293,9 +1283,9 @@ body.command-home .ai-stage-map--eu { .ai-welcome { display: flex; flex-direction: column; - justify-content: center; + justify-content: flex-start; min-height: 0; - padding: 16px 0 24px; + padding: 0 0 16px; animation: ai-h5-rise-in 0.42s var(--ai-ease) both; } @@ -1319,8 +1309,8 @@ body.command-home .ai-stage-map--eu { display: flex; flex-direction: column; align-items: center; - gap: 6px; - padding: 4px 8px 16px; + gap: 2px; + padding: 0 8px 12px; isolation: isolate; } @@ -1334,7 +1324,7 @@ body.command-home .ai-stage-map--eu { height: clamp(220px, 34vh, 320px); transform: translateX(-50%); pointer-events: none; - --ai-hero-grid-line: color-mix(in srgb, var(--ai-action) 4%, var(--ai-border)); + --ai-hero-grid-line: color-mix(in srgb, var(--ai-sky) 8%, var(--ai-border)); background-image: repeating-linear-gradient( 0deg, @@ -1350,7 +1340,7 @@ body.command-home .ai-stage-map--eu { var(--ai-hero-grid-line) 47px, var(--ai-hero-grid-line) 48px ); - opacity: 0.16; + opacity: 0.18; -webkit-mask-image: radial-gradient(ellipse 70% 78% at 50% 46%, #000 0%, transparent 74%), linear-gradient(to bottom, #000 0%, #000 48%, transparent 92%); @@ -1361,14 +1351,30 @@ body.command-home .ai-stage-map--eu { mask-composite: intersect; } +.ai-welcome__hero::after { + content: ''; + position: absolute; + top: -24px; + left: 50%; + z-index: 0; + width: min(980px, 110vw); + height: clamp(260px, 42vh, 420px); + transform: translateX(-50%); + pointer-events: none; + background: + radial-gradient(ellipse 46% 58% at 42% 48%, rgba(var(--ai-sky-rgb), 0.07), transparent 72%), + radial-gradient(ellipse 38% 48% at 62% 56%, rgba(var(--ai-gold-rgb), 0.045), transparent 74%); + opacity: 0.75; +} + .ai-welcome__stack { position: relative; z-index: 2; display: flex; flex-direction: column; - gap: 28px; + gap: 22px; width: min(900px, 94vw); - margin-top: -32px; + margin-top: -64px; border: none; border-radius: 0; background: transparent; @@ -1412,15 +1418,16 @@ body.command-home .ai-stage-map--eu { .ai-welcome-sub { margin: 0 auto 0; - max-width: 520px; + max-width: none; font-size: 0.92rem; - line-height: 1.55; + line-height: 1.45; color: var(--ai-text-2); + white-space: nowrap; } .ai-welcome-sub__accent { font-weight: 700; - color: var(--ai-action); + color: var(--ai-sky); } .ai-welcome__foot { @@ -1470,28 +1477,40 @@ body.command-home .ai-stage-map--eu { display: inline-flex; align-items: center; justify-content: center; - width: 40px; - height: 40px; + width: 48px; + height: 48px; border: none; background: transparent; box-shadow: none; } .ai-welcome__command .ai-intent-door.is-primary { - padding: 18px 16px; - background: var(--ai-acrylic-bg-primary); - border-color: rgba(255, 255, 255, 0.8); - box-shadow: none; + position: relative; + padding: 18px 16px 18px 18px; + background: + linear-gradient( + 145deg, + color-mix(in srgb, var(--ai-gold) 12%, rgba(255, 255, 255, 0.5)) 0%, + var(--ai-acrylic-bg-primary) 48%, + rgba(255, 255, 255, 0.36) 100% + ); + border-color: color-mix(in srgb, var(--ai-gold) 34%, rgba(255, 255, 255, 0.8)); + box-shadow: 0 8px 24px rgba(var(--ai-gold-rgb), 0.08); } .ai-welcome__command .ai-intent-door.is-primary .ai-intent-door__icon { - width: 44px; - height: 44px; + width: 52px; + height: 52px; background: transparent; border: none; box-shadow: none; } +.ai-welcome__command .ai-intent-door.is-primary .ai-icon--illus { + width: 48px; + height: 48px; +} + .ai-welcome__command .ai-intent-door.is-primary .ai-intent-door__title { color: var(--ai-action); } @@ -1504,9 +1523,14 @@ body.command-home .ai-stage-map--eu { } .ai-welcome__command .ai-intent-door.is-primary:hover { - background: rgba(255, 255, 255, 0.48); - box-shadow: none; - transform: none; + background: + linear-gradient( + 145deg, + color-mix(in srgb, var(--ai-gold) 16%, rgba(255, 255, 255, 0.55)) 0%, + rgba(255, 255, 255, 0.5) 100% + ); + border-color: color-mix(in srgb, var(--ai-gold) 42%, rgba(255, 255, 255, 0.9)); + box-shadow: 0 10px 28px rgba(var(--ai-gold-rgb), 0.12); } .ai-welcome__command .ai-intent-door__title { @@ -1524,17 +1548,17 @@ body.command-home .ai-stage-map--eu { display: flex; justify-content: center; width: 100%; - margin: 0; + margin: -18px 0 -8px; pointer-events: none; } .ai-welcome-plane img { position: relative; z-index: 2; - width: min(640px, 82vw); + width: min(820px, 96vw); height: auto; display: block; - filter: drop-shadow(0 18px 42px rgba(15, 23, 42, 0.1)); + filter: drop-shadow(0 18px 42px rgba(var(--ai-sky-rgb), 0.14)); transform-origin: 50% 60%; animation: aiPlaneIn 2.4s cubic-bezier(0.22, 1, 0.36, 1) both; } @@ -1550,6 +1574,14 @@ body.command-home .ai-stage-map--eu { } } +.ai-welcome__actions { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 8px; + flex-shrink: 0; +} + .ai-welcome-cta { display: inline-flex; align-items: center; @@ -1579,6 +1611,22 @@ body.command-home .ai-stage-map--eu { box-shadow: 0 10px 26px rgba(var(--ai-action-rgb), 0.28); } +.ai-welcome-human { + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--ai-sky); + font-size: 0.82rem; + font-weight: 600; + text-decoration: none; + white-space: nowrap; + transition: color 0.2s var(--ai-ease); +} + +.ai-welcome-human:hover { + color: var(--ai-sky-hover); +} + .ai-welcome-stats { display: flex; align-items: center; @@ -1597,7 +1645,7 @@ body.command-home .ai-stage-map--eu { } .ai-welcome-stats-block.is-open .ai-welcome-stats__trigger { - color: var(--ai-action); + color: var(--ai-sky); } .ai-welcome-stats__trigger { @@ -1621,7 +1669,8 @@ body.command-home .ai-stage-map--eu { .ai-welcome-stats__trigger:hover, .ai-welcome-stats-block.is-open .ai-welcome-stats__trigger { - background: color-mix(in srgb, var(--ai-primary-soft) 55%, transparent); + background: color-mix(in srgb, var(--ai-sky-soft) 70%, transparent); + color: var(--ai-sky); } .ai-welcome-stats__trigger .ai-welcome-stats__value, @@ -1646,8 +1695,8 @@ body.command-home .ai-stage-map--eu { font-weight: 600; line-height: 1.2; letter-spacing: 0.02em; - color: var(--ai-action); - opacity: 0.82; + color: var(--ai-sky); + opacity: 0.9; white-space: nowrap; } @@ -1758,12 +1807,17 @@ body.command-home .ai-stage-map--eu { } .ai-intent-door.is-primary .ai-intent-door__icon { - width: 40px; + width: 48px; } .ai-intent-door.is-primary .ai-intent-door__icon .ai-icon { - width: 40px; - height: 40px; + width: 44px; + height: 44px; +} + +.ai-intent-door.is-primary .ai-intent-door__icon .ai-icon--illus { + width: 48px; + height: 48px; } .ai-intent-door.is-primary .ai-intent-door__hint { @@ -1781,7 +1835,12 @@ body.command-home .ai-stage-map--eu { } .ai-intent-door:nth-child(4) { - grid-column: 2 / span 2; + grid-column: 2; + grid-row: 2; +} + +.ai-intent-door:nth-child(5) { + grid-column: 3; grid-row: 2; } @@ -1839,11 +1898,11 @@ body.command-home .ai-stage-map--eu { .ai-intent-door.is-primary { background: linear-gradient( 145deg, - color-mix(in srgb, var(--ai-action) 10%, #fff) 0%, + color-mix(in srgb, var(--ai-gold) 14%, #fff) 0%, var(--ai-surface) 58% ); - border-color: color-mix(in srgb, var(--ai-action) 32%, var(--ai-border)); - box-shadow: 0 0 0 1px color-mix(in srgb, var(--ai-action) 8%, transparent); + border-color: color-mix(in srgb, var(--ai-gold) 36%, var(--ai-border)); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--ai-gold) 10%, transparent); } .ai-intent-door.is-primary .ai-intent-door__title { @@ -1852,8 +1911,8 @@ body.command-home .ai-stage-map--eu { .ai-intent-door.is-primary .ai-icon .ai-icon__accent, .ai-intent-door.is-primary .ai-icon .ai-icon__accent-fill { - stroke: var(--ai-action); - fill: var(--ai-action); + stroke: var(--ai-gold); + fill: var(--ai-gold); } .ai-intent-door:hover { @@ -1879,7 +1938,7 @@ body.command-home .ai-stage-map--eu { overflow: visible; } -.ai-icon > * { +.ai-icon:not(.ai-icon--illus) > * { fill: none; stroke: var(--ai-ink); stroke-width: 1.7; @@ -1888,20 +1947,26 @@ body.command-home .ai-stage-map--eu { } .ai-icon .ai-icon__accent { - stroke: var(--ai-gold); + stroke: var(--ai-sky); } .ai-icon .ai-icon__accent-fill { - fill: var(--ai-gold); + fill: var(--ai-sky); stroke: none; } +.ai-icon.ai-icon--illus { + width: 44px; + height: 44px; + flex-shrink: 0; +} + .ai-intent-door__icon { display: flex; align-items: flex-start; justify-content: center; flex-shrink: 0; - width: 36px; + width: 44px; height: auto; padding: 0; border: none; @@ -1931,6 +1996,132 @@ body.command-home .ai-stage-map--eu { color: var(--ai-text-2); } +/* —— Partner marquee (platforms + carriers) —— */ +.ai-partner-marquee { + display: flex; + align-items: center; + gap: 10px; + min-width: 0; + margin: 0; + padding: 0; +} + +.ai-partner-marquee__tag { + flex-shrink: 0; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid color-mix(in srgb, var(--ai-sky) 22%, rgba(255, 255, 255, 0.72)); + background: color-mix(in srgb, var(--ai-sky-soft) 75%, rgba(255, 255, 255, 0.4)); + backdrop-filter: blur(20px) saturate(160%); + -webkit-backdrop-filter: blur(20px) saturate(160%); + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.04em; + color: var(--ai-action); + white-space: nowrap; +} + +.ai-partner-marquee__viewport { + position: relative; + flex: 1; + min-width: 0; + overflow: hidden; + mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); + -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); +} + +.ai-partner-marquee__track { + display: flex; + align-items: center; + gap: 10px; + width: max-content; + padding: 2px 0; + animation: aiPartnerScroll 36s linear infinite; +} + +.ai-partner-marquee:hover .ai-partner-marquee__track, +.ai-partner-marquee:focus-within .ai-partner-marquee__track { + animation-play-state: paused; +} + +.ai-partner-chip { + display: inline-flex; + align-items: center; + gap: 7px; + flex-shrink: 0; + min-height: 34px; + padding: 0 14px 0 12px; + border-radius: 999px; + border: 1px solid rgba(255, 255, 255, 0.72); + background: var(--ai-acrylic-bg); + backdrop-filter: blur(20px) saturate(160%); + -webkit-backdrop-filter: blur(20px) saturate(160%); + color: var(--ai-text); + font-size: 0.82rem; + font-weight: 700; + letter-spacing: 0.01em; + white-space: nowrap; + cursor: pointer; + transition: + border-color 0.2s var(--ai-ease), + background 0.2s var(--ai-ease), + color 0.2s var(--ai-ease); +} + +.ai-partner-chip__logo { + width: 15px; + height: 15px; + flex-shrink: 0; + display: block; + object-fit: contain; +} + +.ai-partner-chip__label { + line-height: 1; +} + +.ai-partner-chip--carrier { + color: var(--ai-text-2); + font-weight: 600; +} + +.ai-partner-chip:hover, +.ai-partner-chip:focus-visible { + border-color: rgba(255, 255, 255, 0.92); + background: rgba(255, 255, 255, 0.44); + color: var(--ai-action); + outline: none; +} + +.ai-partner-chip:disabled { + opacity: 0.55; + cursor: not-allowed; +} + +@keyframes aiPartnerScroll { + from { + transform: translate3d(0, 0, 0); + } + to { + transform: translate3d(-50%, 0, 0); + } +} + +@media (prefers-reduced-motion: reduce) { + .ai-partner-marquee__track { + animation: none; + flex-wrap: wrap; + width: auto; + max-width: 100%; + } + + .ai-partner-marquee__viewport { + mask-image: none; + -webkit-mask-image: none; + overflow: visible; + } +} + /* —— Messages —— */ .ai-messages { display: none; @@ -2303,6 +2494,7 @@ body.command-home .ai-stage-map--eu { display: flex; flex-direction: column; flex-shrink: 0; + overflow: visible; } .ai-composer-slot--welcome:empty, @@ -2520,13 +2712,16 @@ body.command-home .ai-stage-map--eu { } .ai-trust-bar { - display: flex; - flex-wrap: wrap; + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, calc(var(--ai-content-max) - 40px)) minmax(0, 1fr); align-items: center; - justify-content: center; - gap: 8px 18px; - margin-top: 4px; - padding: 14px 4px 16px; + column-gap: 16px; + width: 100vw; + max-width: 100vw; + margin: 4px 0 0; + margin-left: calc(50% - 50vw); + padding: 10px max(20px, env(safe-area-inset-right, 0px)) 12px max(20px, env(safe-area-inset-left, 0px)); + box-sizing: border-box; border-top: 1px solid color-mix(in srgb, var(--ai-border) 55%, transparent); color: var(--ai-text-3); font-size: 0.72rem; @@ -2537,6 +2732,7 @@ body.command-home .ai-stage-map--eu { display: inline-flex; align-items: center; gap: 6px; + flex-shrink: 0; color: var(--ai-text-3); text-decoration: none; } @@ -2560,43 +2756,73 @@ body.command-home .ai-stage-map--eu { } .ai-trust-wechat { + grid-column: 1; + justify-self: start; margin: 0; padding: 0; border: none; background: none; font: inherit; cursor: pointer; -} - -.ai-trust-bar__human { - color: var(--ai-action) !important; - font-weight: 600; - text-decoration: none; -} - -.ai-trust-bar__human:hover { - color: var(--ai-action-hover) !important; -} - -.ai-trust-address { - display: inline-flex; - align-items: center; - justify-content: center; - gap: 6px; - margin: 0; - color: var(--ai-text-3); - font-size: 0.72rem; - line-height: 1.45; - text-align: left; white-space: nowrap; } -.ai-trust-address i { - margin-top: 0; - font-size: 0.88rem; - line-height: 1; - color: var(--ai-action); - flex-shrink: 0; +.ai-trust-bar .ai-partner-marquee { + grid-column: 2; + width: 100%; + max-width: 100%; + min-width: 0; + margin: 0; +} + +.ai-trust-icp { + grid-column: 3; + justify-self: end; + white-space: nowrap; +} + +@media (max-height: 860px) { + .ai-app-main { + padding-top: 4px; + } + + .ai-welcome-plane { + margin-top: -28px; + margin-bottom: -12px; + } + + .ai-welcome__stack { + margin-top: -76px; + gap: 16px; + } + + .ai-welcome__deck { + padding-top: 12px; + padding-bottom: 10px; + } + + .ai-welcome__command .ai-intent-grid { + padding-top: 12px; + } + + .ai-partner-marquee { + margin-top: 0; + gap: 8px; + } + + .ai-partner-marquee__tag { + display: none; + } + + .ai-partner-chip { + min-height: 30px; + padding: 0 12px; + font-size: 0.76rem; + } + + .ai-partner-marquee__track { + animation-duration: 42s; + } } @media (max-width: 860px) { @@ -2638,7 +2864,8 @@ body.command-home .ai-stage-map--eu { .ai-intent-door.is-primary, .ai-intent-door:nth-child(2), .ai-intent-door:nth-child(3), - .ai-intent-door:nth-child(4) { + .ai-intent-door:nth-child(4), + .ai-intent-door:nth-child(5) { grid-column: auto; grid-row: auto; min-height: 0; @@ -2650,8 +2877,14 @@ body.command-home .ai-stage-map--eu { .ai-intent-door.is-primary .ai-intent-door__icon, .ai-intent-door.is-primary .ai-intent-door__icon .ai-icon { - width: 36px; - height: 36px; + width: 40px; + height: 40px; + } + + .ai-intent-door.is-primary .ai-intent-door__icon .ai-icon--illus, + .ai-welcome__command .ai-intent-door .ai-icon--illus { + width: 40px; + height: 40px; } .ai-welcome__command .ai-intent-door.is-primary { @@ -2664,7 +2897,7 @@ body.command-home .ai-stage-map--eu { } .ai-welcome-plane img { - width: min(480px, 90vw); + width: min(620px, 96vw); } .ai-welcome__hero::before { @@ -2700,12 +2933,13 @@ body.command-home .ai-stage-map--eu { justify-content: center; } - .ai-welcome-cta { + .ai-welcome__actions { + align-items: center; width: 100%; } - .ai-welcome-stats { - justify-content: center; + .ai-welcome-cta { + width: 100%; } } @@ -2716,7 +2950,7 @@ body.command-home .ai-stage-map--eu { .ai-welcome { min-height: 0; - padding-top: 8px; + padding-top: 0; } .ai-welcome__hero { @@ -2757,7 +2991,19 @@ body.command-home .ai-stage-map--eu { } .ai-welcome__stack { - margin-top: -20px; + margin-top: -48px; + } + + .ai-partner-marquee { + min-width: 0; + } + + .ai-partner-marquee__tag { + display: none; + } + + .ai-partner-marquee__viewport { + flex: 1 1 auto; } .ai-welcome__deck { @@ -2773,18 +3019,22 @@ body.command-home .ai-stage-map--eu { } .ai-welcome-sub { - font-size: 0.9rem; + font-size: 0.84rem; + white-space: nowrap; + overflow-x: auto; + max-width: 94vw; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; + } + + .ai-welcome-sub::-webkit-scrollbar { + display: none; } .ai-trust-bar { gap: 8px 14px; } - .ai-trust-address { - text-align: center; - justify-content: center; - } - .ai-new-chat-tip { max-width: min(94vw, 320px); white-space: normal; diff --git a/IDE官网/assets/img/partners/dhl.svg b/IDE官网/assets/img/partners/dhl.svg new file mode 100644 index 0000000..551ff09 --- /dev/null +++ b/IDE官网/assets/img/partners/dhl.svg @@ -0,0 +1 @@ +DHL \ No newline at end of file diff --git a/IDE官网/assets/img/partners/fedex.svg b/IDE官网/assets/img/partners/fedex.svg new file mode 100644 index 0000000..cd6e91e --- /dev/null +++ b/IDE官网/assets/img/partners/fedex.svg @@ -0,0 +1 @@ +FedEx \ No newline at end of file diff --git a/IDE官网/assets/img/partners/shopee.svg b/IDE官网/assets/img/partners/shopee.svg new file mode 100644 index 0000000..5f0ceaa --- /dev/null +++ b/IDE官网/assets/img/partners/shopee.svg @@ -0,0 +1 @@ +Shopee \ No newline at end of file diff --git a/IDE官网/assets/img/partners/tiktok.svg b/IDE官网/assets/img/partners/tiktok.svg new file mode 100644 index 0000000..5a465ba --- /dev/null +++ b/IDE官网/assets/img/partners/tiktok.svg @@ -0,0 +1 @@ +TikTok \ No newline at end of file diff --git a/IDE官网/assets/img/partners/ups.svg b/IDE官网/assets/img/partners/ups.svg new file mode 100644 index 0000000..1a3d659 --- /dev/null +++ b/IDE官网/assets/img/partners/ups.svg @@ -0,0 +1 @@ +UPS \ No newline at end of file diff --git a/IDE官网/assets/js/ai-advisor.js b/IDE官网/assets/js/ai-advisor.js index 653efcf..c3d4ac4 100644 --- a/IDE官网/assets/js/ai-advisor.js +++ b/IDE官网/assets/js/ai-advisor.js @@ -37,9 +37,9 @@ en: { welcomeTitle: 'IDE, your cross-border logistics advisor', welcomeTitleShort: 'IDE · Your logistics advisor', - welcomeSubLead: 'Parcels, express, dropship, and 9610 clearance — ', - welcomeSubAccent: 'built for SMB cross-border sellers', - welcomeSubTail: '.', + welcomeSubLead: 'Preferential rates · proactive service · faster transit · ', + welcomeSubAccent: 'AI-powered logistics', + welcomeSubTail: ' · dedicated lines, packets, air & express covered.', placeholder: 'Ask about lanes, tracking, or 9610…', sendLabel: 'Ask', human: 'Talk to a human advisor', @@ -65,16 +65,18 @@ statsCoverageHint: 'Tap to view', mapZoomHint: 'Tap a country to pin it on the map', composeLead: 'Ask about a lane, or pick a shortcut below', + partnerTag: 'Partners', + partnerAria: 'Connected platforms and carriers', }, zh: { welcomeTitle: 'IDE,您身边的跨境物流顾问', welcomeTitleShort: 'IDE · 跨境物流顾问', - welcomeSubLead: '专线小包、国际快递、一件代发与 9610 报关,', - welcomeSubAccent: '专为中小跨境卖家而生', - welcomeSubTail: '。', + welcomeSubLead: '价格更优惠 · 服务更主动 · 时效更快 · ', + welcomeSubAccent: 'AI 助力物流', + welcomeSubTail: ' · 专线/小包/空派/快递全覆盖。', placeholder: '问线路、查轨迹、9610 政策…', sendLabel: '提问', - human: '联系人工顾问', + human: '联系在线顾问', you: '你', historyTitle: '历史记录', newChat: '新会话', @@ -97,6 +99,8 @@ statsCoverageHint: '点我查看', mapZoomHint: '点击国家,地图上会用定位图标标出', composeLead: '先问线路,或选快捷入口', + partnerTag: '合作伙伴', + partnerAria: '对接平台与服务商', }, }; @@ -255,63 +259,231 @@ { id: 'quote', icon: 'quote', - en: { title: 'Clear rates', hint: 'Tailored solutions — better, faster. Register to inquire.', label: 'I need a shipping quote' }, - zh: { title: '明码报价', hint: '量身定制解决方案,更优更快等你来询', label: '我要报价' }, + en: { + title: 'Tired of list prices?', + hint: 'Low volume means low commission for sales — our member tiers get better as you ship more, or become an agent and earn', + label: 'I want member or agent rates', + }, + zh: { + title: '拿不到优惠价?', + hint: '单少提成低,销售爱搭不理 → 会员成长体系发越多越优惠,还能做代理拿分成', + label: '我想看会员价/代理价', + }, }, { id: 'track', icon: 'track', - en: { title: 'Track a shipment', hint: 'End-to-end tracking, timely exception alerts', label: 'Track my shipment' }, - zh: { title: '轨迹追踪', hint: '轨迹全程可追踪,异常及时提醒', label: '我想查这票货到哪了' }, + en: { + title: 'Lost mid-route?', + hint: 'Order → pickup → warehouse → clearance → delivery, with exception alerts', + label: 'Where is my shipment from pickup to delivery?', + }, + zh: { + title: '货丢在半路?', + hint: '下单→揽收→出入库→清关→派送,一站可视,异常有人盯', + label: '这票货从揽收到派送卡在哪', + }, }, { id: 'hard', icon: 'hard', - en: { title: 'Tough orders', hint: 'Refund, exemption, 3C battery, special & cosmetic goods', label: 'Can you take a difficult or 9610 order?' }, - zh: { title: '疑难杂单', hint: '退税、免征、3C带电、特殊品、化妆品', label: '疑难杂单或 9610 怎么发?' }, + en: { + title: 'Others declined it?', + hint: 'Battery, special cargo, cosmetics — if others refuse, ask us first', + label: 'Others declined this cargo. Can you take it?', + }, + zh: { + title: '别人不接的单?', + hint: '3C带电、特殊品、化妆品,别处拒收,先问我们', + label: '别人不接的货,你们能发吗?', + }, + }, + { + id: 'compliance', + icon: 'clearance', + en: { + title: 'Need export compliance?', + hint: 'Formal declaration, VAT refund, and invoice-free exemption', + label: 'I need export compliance — declaration, refund, or exemption', + }, + zh: { + title: '想出口合规?', + hint: '正式报关、出口退税、无票免征,我们都能办', + label: '想出口合规:正式报关 / 退税 / 无票免征', + }, }, { id: 'human', icon: 'human', - en: { title: 'Your advisor', hint: 'One person from quote to delivery', label: 'Talk to a human advisor' }, - zh: { title: '专属顾问', hint: '报价跟到签收,售后有人认', label: '联系专属顾问' }, + en: { + title: 'Stuck in a group chat?', + hint: 'No mega group chats — one owner from quote to POD, even for small volume', + label: 'Give me a dedicated advisor, no group chat', + }, + zh: { + title: '拉群找不到人?', + hint: '不拉大群、不踢皮球;单量少也有人认,报价跟到签收', + label: '给我一个专属顾问,别拉群', + }, + }, + ]; + + const PARTNERS = [ + { + id: 'lazada', + group: 'platform', + label: { zh: 'Lazada', en: 'Lazada' }, + ask: { + zh: 'Lazada 店铺怎么授权、同步订单做一件代发?', + en: 'How do I authorize a Lazada shop and sync orders for dropship?', + }, + }, + { + id: 'shopee', + group: 'platform', + icon: 'assets/img/partners/shopee.svg', + label: { zh: 'Shopee', en: 'Shopee' }, + ask: { + zh: 'Shopee 店铺怎么授权同步订单?', + en: 'How do I authorize a Shopee shop and sync orders?', + }, + }, + { + id: 'tiktok', + group: 'platform', + icon: 'assets/img/partners/tiktok.svg', + label: { zh: 'TikTok', en: 'TikTok' }, + ask: { + zh: 'TikTok 店铺订单怎么同步到你们系统?', + en: 'How do TikTok shop orders sync into your system?', + }, + }, + { + id: 'temu', + group: 'platform', + label: { zh: 'Temu', en: 'Temu' }, + ask: { + zh: 'Temu 店铺怎么授权同步、一件代发?', + en: 'How do I authorize Temu for order sync and dropship?', + }, + }, + { + id: 'dhl', + group: 'carrier', + icon: 'assets/img/partners/dhl.svg', + label: { zh: 'DHL', en: 'DHL' }, + ask: { + zh: '有没有 DHL 线路可以询价?', + en: 'Do you have DHL lanes I can quote?', + }, + }, + { + id: 'fedex', + group: 'carrier', + icon: 'assets/img/partners/fedex.svg', + label: { zh: 'FedEx', en: 'FedEx' }, + ask: { + zh: '有没有 FedEx 线路可以询价?', + en: 'Do you have FedEx lanes I can quote?', + }, + }, + { + id: 'ups', + group: 'carrier', + icon: 'assets/img/partners/ups.svg', + label: { zh: 'UPS', en: 'UPS' }, + ask: { + zh: '有没有 UPS 线路报价?', + en: 'Do you have UPS lanes I can quote?', + }, + }, + { + id: '3pe', + group: 'carrier', + label: { zh: '3PE', en: '3PE' }, + ask: { + zh: '3PE 国际快递怎么走、怎么报价?', + en: 'How does 3PE express work, and how do I get a quote?', + }, }, ]; function iconMarkup(name) { - const art = { + const illus = { quote: - '' + - '' + - '' + - '', + '' + + '' + + '' + + '' + + '', track: - '' + - '' + - '' + - '' + - '', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '', hard: - '' + - '' + - '' + - '', + '' + + '' + + '' + + '', + clearance: + '' + + '' + + '' + + '' + + '' + + '' + + '', human: - '' + - '' + - '' + - '' + - '' + - '', + '' + + '' + + '' + + '' + + '' + + '' + + '', + }; + + const defs = { + quote: + '' + + '', + track: + '' + + '', + hard: + '' + + '', + clearance: + '' + + '', + human: + '' + + '', + }; + + if (illus[name]) { + return ( + '' + ); + } + + // Legacy stroke icons for guide / other surfaces + const art = { lane: '' + '' + '', - clearance: - '' + - '' + - '' + - '', advise: '' + '' + @@ -963,7 +1135,10 @@ - +
+ + +
@@ -995,23 +1170,16 @@
- - - - - - - - - -

- - -

+
+ +
+
+
+
@@ -1262,9 +1430,76 @@ btn.addEventListener('click', () => onIntentClick(intent)); intentGridEl.appendChild(btn); }); + renderPartnerMarquee(); renderCoverage(); } + function partnerAsk(partner) { + return lang === 'zh' ? partner.ask.zh : partner.ask.en; + } + + function partnerLabel(partner) { + return lang === 'zh' ? partner.label.zh : partner.label.en; + } + + function prefillComposer(text) { + if (!inputEl || isBusy || !text) return; + hideNewChatTip(); + inputEl.value = text; + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + syncComposerSendState(); + inputEl.focus(); + try { + const len = text.length; + inputEl.setSelectionRange(len, len); + } catch (_) { + /* ignore */ + } + inputEl.scrollIntoView({ block: 'nearest', behavior: 'smooth' }); + } + + function renderPartnerMarquee() { + if (!shell) return; + const root = shell.querySelector('.ai-partner-marquee'); + const track = shell.querySelector('.ai-partner-marquee__track'); + const tag = shell.querySelector('.ai-partner-marquee__tag'); + if (!root || !track || !tag) return; + + root.setAttribute('aria-label', t('partnerAria')); + tag.textContent = t('partnerTag'); + track.innerHTML = ''; + + const makeChip = (partner) => { + const btn = document.createElement('button'); + btn.type = 'button'; + btn.className = 'ai-partner-chip ai-partner-chip--' + partner.group; + btn.dataset.partner = partner.id; + btn.title = partnerAsk(partner); + if (partner.icon) { + const img = document.createElement('img'); + img.className = 'ai-partner-chip__logo'; + img.src = partner.icon; + img.alt = ''; + img.decoding = 'async'; + img.setAttribute('aria-hidden', 'true'); + btn.appendChild(img); + } + const label = document.createElement('span'); + label.className = 'ai-partner-chip__label'; + label.textContent = partnerLabel(partner); + btn.appendChild(label); + btn.addEventListener('click', () => prefillComposer(partnerAsk(partner))); + return btn; + }; + + // Duplicate once for seamless loop (skip when user prefers reduced motion) + const loopTwice = !window.matchMedia('(prefers-reduced-motion: reduce)').matches; + (loopTwice ? [0, 1] : [0]).forEach(() => { + PARTNERS.forEach((partner) => track.appendChild(makeChip(partner))); + }); + } + function coverName(item) { return lang === 'zh' ? item.zh : item.en; } @@ -1576,6 +1811,8 @@ heroCta.textContent = t('heroCta'); heroCta.href = loginPortalUrl(); } + const welcomeHuman = shell.querySelector('.ai-welcome-human'); + if (welcomeHuman) welcomeHuman.textContent = t('human') + ' →'; renderWelcomeStats(); const mapHint = shell.querySelector('.ai-cover-panel__hint'); if (mapHint) mapHint.textContent = t('mapZoomHint'); @@ -1590,12 +1827,8 @@ globeController.setMarkers(buildCoverageMarkers()); } } - setTrustLabel('.ai-trust-phone', t('trustPhone')); - setTrustLabel('.ai-trust-address', t('trustAddress')); setTrustLabel('.ai-trust-wechat', t('trustWechat')); - setTrustLabel('.ai-trust-email', t('trustEmail')); setTrustLabel('.ai-trust-icp', t('trustIcp')); - shell.querySelector('.ai-trust-bar__human').textContent = t('human') + ' →'; const composeLead = shell.querySelector('.ai-welcome-compose__lead'); if (composeLead) composeLead.textContent = t('composeLead'); inputEl.placeholder = t('placeholder'); @@ -1688,7 +1921,8 @@ function detectIntent(text) { const lower = text.toLowerCase(); if (/track|tracking|物流|单号|追踪/.test(lower) || looksLikeTracking(text)) return 'track'; - if (/9610|退税|专票|免税|疑难|小批量|不接/.test(lower)) return 'hard'; + if (/9610|退税|专票|免税|免征|合规|报关|declaration|refund|exempt/.test(lower)) return 'compliance'; + if (/疑难|小批量|不接|带电|3c|特殊品|化妆品/.test(lower)) return 'hard'; if (/一件代发|代发|dropship|fulfillment/.test(lower)) return 'warehouse'; if (/仓储|清关|空运|海运|服务|warehous|customs|services/.test(lower)) return 'guide'; if (/定价|收费|价目|pricing/.test(lower)) return 'pricing'; @@ -1786,11 +2020,21 @@ } if (intentId === 'hard') { + flow = null; + return { + text: zh + ? '带电、特殊品、化妆品这类别人不接的单,我们按品类选线路。先说下货是什么,或点在线顾问细聊。' + : 'Battery, special cargo, cosmetics — we pick a lane by commodity. Tell us what it is, or talk to an advisor.', + card: { type: 'contact' }, + }; + } + + if (intentId === 'compliance') { flow = { id: 'hard', step: 0, data: {} }; return { text: zh - ? '别人不接的单我们接。如果走 9610,先确认一张票,再给你对应方案。' - : 'We take orders others decline. For 9610, one tax question first — then the matching scheme.', + ? '出口合规我们能办:正式报关、退税、无票免征。先确认一张票,再给你对应方案。' + : 'We handle formal declaration, VAT refund, and invoice-free exemption. One tax question first — then the matching scheme.', card: { type: 'choice', flowId: 'hard', @@ -1890,7 +2134,9 @@ function setBusy(busy) { isBusy = busy; if (inputEl) inputEl.disabled = busy; - shell?.querySelectorAll('.ai-intent-door, .ai-followup-chip, .ai-card-opt, .ai-cover-chip').forEach((node) => { + shell?.querySelectorAll( + '.ai-intent-door, .ai-followup-chip, .ai-card-opt, .ai-cover-chip, .ai-partner-chip' + ).forEach((node) => { node.disabled = busy; }); syncComposerSendState(); @@ -1959,7 +2205,7 @@ const labels = { company: lang === 'zh' ? '关于我们' : 'About IDE', pricing: lang === 'zh' ? '价格怎么算?' : 'How does pricing work?', - human: lang === 'zh' ? '联系人工顾问' : 'Talk to a human advisor', + human: lang === 'zh' ? '联系在线顾问' : 'Talk to an online advisor', }; setNavActive(topic); if (location.hash !== `#${spec.hash}`) { @@ -2001,7 +2247,7 @@ }); }); - shell?.querySelector('.ai-trust-bar__human')?.addEventListener('click', (e) => { + shell?.querySelector('.ai-welcome-human')?.addEventListener('click', (e) => { e.preventDefault(); openNavTopic('contact'); }); diff --git a/IDE官网/index.html b/IDE官网/index.html index eb0214e..4fe836d 100644 --- a/IDE官网/index.html +++ b/IDE官网/index.html @@ -45,23 +45,18 @@