diff --git a/src/App.vue b/src/App.vue index 9d2fb68..2d6db0f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,21 +1,216 @@ diff --git a/src/views/site/lib/site-urls.ts b/src/views/site/lib/site-urls.ts index 81db988..6f66492 100644 --- a/src/views/site/lib/site-urls.ts +++ b/src/views/site/lib/site-urls.ts @@ -1,18 +1,93 @@ -export function officialAppHomeUrl() { +import type { Router } from 'vue-router'; +import { armOfficialLoginFlip } from '@/utils/page-transition-flag'; + +function preferMobilePortal() { const ua = navigator.userAgent || ''; - const mobile = /MicroMessenger|Android|iPhone|iPod|iPad|Mobile/i.test(ua); - return new URL(mobile ? '/h5' : '/home/workplace', window.location.origin).toString(); + return /MicroMessenger|Android|iPhone|iPod|iPad|Mobile/i.test(ua); +} + +export function officialAppHomeUrl() { + return new URL( + preferMobilePortal() ? '/h5' : '/home/workplace', + window.location.origin, + ).toString(); +} + +export function officialLoginLocation(dest?: string) { + const path = preferMobilePortal() ? '/h5/login' : '/login'; + const query: Record = { from: 'official-site' }; + if (dest) query.dest = dest; + return { path, query }; } export function officialLoginUrl(dest?: string) { - const ua = navigator.userAgent || ''; - const mobile = /MicroMessenger|Android|iPhone|iPod|iPad|Mobile/i.test(ua); - const url = new URL(mobile ? '/h5/login' : '/login', window.location.origin); - url.searchParams.set('from', 'official-site'); - if (dest) url.searchParams.set('dest', dest); + const { path, query } = officialLoginLocation(dest); + const url = new URL(path, window.location.origin); + Object.entries(query).forEach(([key, value]) => { + url.searchParams.set(key, value); + }); return url.toString(); } +/** 同域 SPA 进登录;普通左键走翻页,修饰键仍允许新标签打开 */ +export function goOfficialLogin( + router: Router, + dest?: string, + event?: MouseEvent, +) { + if (event) { + if (event.defaultPrevented) return false; + if ( + event.button !== 0 || + event.metaKey || + event.ctrlKey || + event.shiftKey || + event.altKey + ) { + return false; + } + event.preventDefault(); + } + + const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + if (!reduceMotion) { + armOfficialLoginFlip(); + } + + // 先确保登录分包就绪,再开翻页,避免顶栏进度条干等 + void (async () => { + try { + if (preferMobilePortal()) { + await import('@/views/h5/customer-center/login/index.vue'); + } else { + await import('@/views/login/index.vue'); + } + } catch { + /* ignore:仍继续跳转 */ + } + await router.push(officialLoginLocation(dest)); + })(); + return true; +} + +/** 从已有 login URL 解析 dest 后 SPA 跳转 */ +export function goOfficialLoginFromHref( + router: Router, + href: string, + event?: MouseEvent, +) { + try { + const url = new URL(href, window.location.origin); + if (url.origin !== window.location.origin) return false; + if (url.pathname !== '/login' && url.pathname !== '/h5/login') return false; + if (url.searchParams.get('from') !== 'official-site') return false; + const dest = url.searchParams.get('dest') || undefined; + return goOfficialLogin(router, dest, event); + } catch { + return false; + } +} + export function warmupOfficialLogin() { const warmed = document.documentElement.dataset.omsLoginWarm; if (warmed) return; @@ -28,16 +103,22 @@ export function warmupOfficialLogin() { prefetch.rel = 'prefetch'; prefetch.href = url; document.head.appendChild(prefetch); + // 预拉取登录分包,翻页进入时少等 chunk + void import('@/views/login/index.vue'); } catch { /* ignore */ } } export function officialTrackLoginUrl(number?: string) { - const ua = navigator.userAgent || ''; - const mobile = /MicroMessenger|Android|iPhone|iPod|iPad|Mobile/i.test(ua); - const url = new URL(mobile ? '/h5/login' : '/login', window.location.origin); - url.searchParams.set('redirect', mobile ? '/h5/orders' : '/home/workplace'); + const url = new URL( + preferMobilePortal() ? '/h5/login' : '/login', + window.location.origin, + ); + url.searchParams.set( + 'redirect', + preferMobilePortal() ? '/h5/orders' : '/home/workplace', + ); if (number) url.searchParams.set('track', number); return url.toString(); } diff --git a/src/views/site/lib/site-welcome.ts b/src/views/site/lib/site-welcome.ts index dbcfc27..3fe5bbb 100644 --- a/src/views/site/lib/site-welcome.ts +++ b/src/views/site/lib/site-welcome.ts @@ -4,7 +4,6 @@ export const WELCOME_COPY = { titleShort: 'IDE. Logistics advisor', titleRest: ' Your cross-border logistics advisor', titleRestShort: ' Logistics advisor', - sub: 'US, EU and Southeast Asia parcels. List rates after you register. One advisor through to delivery.', placeholder: 'e.g. 5 kg general cargo to the US, how many days?', sendLabel: 'Ask', human: 'Talk to an advisor', @@ -18,6 +17,8 @@ export const WELCOME_COPY = { statsAria: 'Service highlights', composeLead: 'Where are you shipping? Pick a destination, or ask below.', destAria: 'Pick a destination', + groupFulfill: 'Shipping', + groupGrowth: 'Benefits', partnerTag: 'Partners', partnerAria: 'Connected platforms and carriers', trustIcp: '粤ICP备2025463970号-2', @@ -29,7 +30,6 @@ export const WELCOME_COPY = { titleShort: 'IDE.跨境物流顾问', titleRest: '您身边的跨境物流顾问', titleRestShort: '跨境物流顾问', - sub: '中小卖家也能按线路看一口价。不砍价、不拉大群,一个人从报价跟到签收。', placeholder: '例如:发美国普货,5kg,要几天', sendLabel: '提问', human: '联系顾问', @@ -43,6 +43,8 @@ export const WELCOME_COPY = { statsAria: '服务数据', composeLead: '发到哪?点目的地看线路,或直接提问。', destAria: '选择目的地', + groupFulfill: '履约', + groupGrowth: '权益', partnerTag: '合作伙伴', partnerAria: '对接平台与服务商', trustIcp: '粤ICP备2025463970号-2', @@ -97,6 +99,7 @@ export const SITE_INTENTS = [ { id: 'track', icon: 'track', + followup: false, en: { title: 'Where is my parcel?', hint: 'Sign in to see live scans from pickup to delivery', @@ -108,6 +111,20 @@ export const SITE_INTENTS = [ label: '这票货从揽收到派送卡在哪', }, }, + { + id: 'warehouse', + icon: 'track', + en: { + title: 'Warehouse fulfillment', + hint: 'Inbound, pick & pack — ship when orders land', + label: 'I need warehouse dropshipping', + }, + zh: { + title: '仓储代发', + hint: '入仓拣货打包,订单来了就发出去', + label: '我要仓储一件代发', + }, + }, { id: 'hard', icon: 'hard', @@ -207,43 +224,49 @@ export const HOME_DOORS = [ id: 'hard', icon: 'hard', intentId: 'hard' as const, - zh: { title: '带电、别人不接也能问', hint: '先帮你看出得去的线路,再谈税。' }, - en: { title: 'Battery or declined cargo', hint: 'We find a lane that can leave, then the tax path.' }, + primary: true, + zh: { title: '敏感难发', hint: '先帮你看出得去的线路,再谈税。' }, + en: { title: 'Sensitive cargo', hint: 'We find a lane that can leave, then the tax path.' }, }, { - id: 'track', + id: 'warehouse', icon: 'track', - intentId: 'track' as const, - zh: { title: '货到哪了', hint: '登录后看揽收到派送的真实节点。' }, - en: { title: 'Where is my parcel?', hint: 'Sign in to see scans from pickup to delivery.' }, + intentId: 'warehouse' as const, + primary: true, + zh: { title: '仓储代发', hint: '入仓拣货打包,订单来了就发出去。' }, + en: { title: 'Warehouse fulfillment', hint: 'Inbound, pick & pack — ship when orders land.' }, }, { id: 'clearance', icon: 'clearance', intentId: 'compliance' as const, - zh: { title: '出口报关 / 退税', hint: '正式报关、退税,或没有专票怎么出。' }, - en: { title: 'Export paperwork', hint: 'Declaration, VAT refund, or shipping without invoices.' }, + primary: true, + zh: { title: '报关退税', hint: '正式报关、退税,或没有专票怎么出。' }, + en: { title: 'Customs & VAT', hint: 'Declaration, refund, or shipping without invoices.' }, }, { id: 'member', icon: 'growth', intentId: 'member' as const, - zh: { title: '会员成长体系', hint: '近 12 个月发货积分定级,基础运费最高 95 折。' }, - en: { title: 'Member growth', hint: 'Rolling 12-month shipping points — up to 95% on base freight.' }, + primary: false, + zh: { title: '会员成长', hint: '近 12 个月发货积分定级,基础运费最高 95 折。' }, + en: { title: 'Member tiers', hint: '12-month shipping points — up to 95% on base freight.' }, }, { id: 'invite', icon: 'coin', intentId: 'invite' as const, + primary: false, zh: { title: '邀新分成', hint: '好友派送成功,你拿运费余额 + 20 元券。' }, - en: { title: 'Invite & earn', hint: 'When friends deliver, you get freight credit + a ¥20 coupon.' }, + en: { title: 'Invite & earn', hint: 'Friends deliver → freight credit + ¥20 coupon.' }, }, { id: 'newcomer', icon: 'coupon', intentId: 'newcomer' as const, - zh: { title: '新人注册福利', hint: '注册送券:首单、备货、第二单都有。' }, - en: { title: 'New-seller coupons', hint: 'Sign up for first-ship, stock-up, and second-ship coupons.' }, + primary: false, + zh: { title: '新人福利', hint: '注册送券:首单、备货、第二单都有。' }, + en: { title: 'New-seller deals', hint: 'Coupons for first ship, stock-up, and second ship.' }, }, ] as const; diff --git a/src/views/site/styles/ai-advisor.css b/src/views/site/styles/ai-advisor.css index 5350591..a9dedc2 100644 --- a/src/views/site/styles/ai-advisor.css +++ b/src/views/site/styles/ai-advisor.css @@ -55,7 +55,7 @@ --ai-routes-panel-w: 1080px; --ai-acrylic-bg: rgba(255, 255, 255, 0.32); --ai-acrylic-bg-primary: color-mix(in srgb, var(--ai-gold-soft) 42%, rgba(255, 255, 255, 0.38)); - /* Ocean glass — cool tint aligned with GradientWaves */ + /* Soft fills — cool tint aligned with GradientWaves */ --ai-glass-fill: linear-gradient( 165deg, color-mix(in srgb, var(--ai-sky) 10%, rgba(255, 255, 255, 0.46)) 0%, @@ -83,6 +83,21 @@ color-mix(in srgb, var(--ai-border) 55%, transparent) 82%, transparent 100% ); + /* 厚纸拟物(欢迎页 / 对话 / 侧栏共用) */ + --ai-dock-radius: 28px; + --ai-dock-radius-inner: 22px; + --ai-chip-radius: 999px; + --ai-paper: #fffcf8; + --ai-paper-edge: color-mix(in srgb, var(--ai-border) 78%, #c4b8a6); + --ai-paper-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.9), + 0 8px 6px -6px rgba(40, 32, 20, 0.1), + 0 18px 32px -16px rgba(40, 32, 20, 0.16); + --ai-paper-shadow-lift: + inset 0 1px 0 rgba(255, 255, 255, 0.95), + 0 10px 8px -6px rgba(40, 32, 20, 0.12), + 0 22px 40px -14px rgba(2, 62, 138, 0.12); + --ai-trust-bar-h: 56px; } body.command-home { @@ -270,9 +285,10 @@ body.command-home #navbar .site-nav-dock a { body.command-home .site-nav-dock__slider.is-ready { transition: - left 0.42s cubic-bezier(0.32, 0.72, 0, 1), - width 0.42s cubic-bezier(0.32, 0.72, 0, 1), - opacity 0.2s ease; + left 0.4s cubic-bezier(0.22, 1, 0.36, 1), + width 0.4s cubic-bezier(0.22, 1, 0.36, 1), + opacity 0.22s ease; + will-change: left, width; } body.command-home #navbar li.site-nav-dock:hover > a, @@ -302,7 +318,9 @@ body.command-home #navbar .site-nav-dock a { white-space: nowrap; background: transparent; box-shadow: none; - transition: color 0.22s ease; + transition: + color 0.28s var(--ai-ease, cubic-bezier(0.22, 1, 0.36, 1)), + transform 0.28s var(--ai-ease, cubic-bezier(0.22, 1, 0.36, 1)); } body.command-home #navbar .site-nav-dock a::after { @@ -313,7 +331,7 @@ body.command-home #navbar .site-nav-dock a { color: var(--ai-text); border-color: transparent; background: transparent; - transform: none; + transform: translateY(-0.5px); } body.command-home #navbar .site-nav-dock a.active, @@ -349,7 +367,7 @@ body.command-home #navbar .site-nav-dock a { } body.command-home #navbar .site-nav-dock a.is-active .site-nav-dock__icon { - animation: h5-dock-icon-pop 0.42s cubic-bezier(0.22, 1.35, 0.36, 1); + animation: h5-dock-icon-pop 0.36s var(--ai-ease, cubic-bezier(0.22, 1, 0.36, 1)); } body.command-home .site-nav-dock__label { @@ -512,13 +530,12 @@ body.command-home #navbar .site-nav-dock a { @keyframes h5-dock-icon-pop { 0% { - transform: scale(0.88); - } - 70% { - transform: scale(1.08); + transform: scale(0.94); + opacity: 0.72; } 100% { transform: scale(1); + opacity: 1; } } @@ -683,8 +700,8 @@ body.command-home #ai-advisor-shell { background: radial-gradient(ellipse 78% 52% at 50% -8%, rgba(255, 255, 255, 0.92), transparent 58%), radial-gradient(ellipse 48% 42% at 8% 36%, rgba(255, 255, 255, 0.42), transparent 68%), - radial-gradient(ellipse 44% 40% at 92% 48%, rgba(18, 24, 32, 0.035), transparent 70%), - radial-gradient(ellipse 70% 48% at 50% 108%, rgba(18, 24, 32, 0.045), transparent 60%), + radial-gradient(ellipse 44% 40% at 92% 48%, rgba(18, 24, 32, 0.03), transparent 70%), + radial-gradient(ellipse 70% 48% at 50% 108%, rgba(92, 122, 154, 0.04), transparent 60%), var(--ai-bg); } @@ -698,7 +715,7 @@ body.command-home #ai-advisor-shell { radial-gradient(ellipse 46% 38% at 28% 24%, rgba(255, 255, 255, 0.55), transparent 70%), radial-gradient(ellipse 42% 36% at 74% 32%, rgba(255, 255, 255, 0.35), transparent 72%), radial-gradient(ellipse 50% 42% at 58% 78%, rgba(255, 255, 255, 0.22), transparent 74%), - radial-gradient(ellipse 40% 34% at 18% 72%, rgba(18, 24, 32, 0.035), transparent 70%); + radial-gradient(ellipse 40% 34% at 18% 72%, rgba(18, 24, 32, 0.03), transparent 70%); opacity: 0.9; } @@ -1057,13 +1074,11 @@ body.command-home .ai-stage-map--eu { .ai-msg-row--assistant .ai-msg-bubble { position: relative; isolation: isolate; - border: 1px solid var(--ai-border); - background: var(--ai-glass-panel); - backdrop-filter: blur(18px) saturate(175%); - -webkit-backdrop-filter: blur(18px) saturate(175%); - box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.98), - 0 0 0 1px var(--ai-glass-hairline); + border: 1px solid var(--ai-paper-edge); + background: var(--ai-paper); + backdrop-filter: none; + -webkit-backdrop-filter: none; + box-shadow: var(--ai-paper-shadow); } .ai-composer { @@ -1072,12 +1087,12 @@ body.command-home .ai-stage-map--eu { overflow: hidden; min-height: 88px; padding: 16px 16px 16px 24px; - border-radius: 20px; - border: 1px solid var(--ai-glass-border); - background: var(--ai-glass-fill); - backdrop-filter: var(--ai-glass-blur); - -webkit-backdrop-filter: var(--ai-glass-blur); - box-shadow: var(--ai-glass-shadow); + border-radius: var(--ai-dock-radius); + border: 1px solid var(--ai-paper-edge); + background: var(--ai-paper); + backdrop-filter: none; + -webkit-backdrop-filter: none; + box-shadow: var(--ai-paper-shadow); transition: border-color 0.2s var(--ai-ease), background 0.2s var(--ai-ease), @@ -1085,34 +1100,17 @@ body.command-home .ai-stage-map--eu { } .ai-composer::before { - content: ''; - position: absolute; - inset: 0; - z-index: 0; - border-radius: inherit; - pointer-events: none; - background: linear-gradient(180deg, rgba(255, 255, 255, 0.5) 0%, transparent 44%); - opacity: 0.7; - mix-blend-mode: soft-light; + display: none; } .ai-composer:focus-within { - border-color: rgba(255, 255, 255, 0.94); - background: var(--ai-glass-fill-strong); + border-color: color-mix(in srgb, var(--ai-action) 22%, var(--ai-paper-edge)); + background: #fffefb; + box-shadow: var(--ai-paper-shadow-lift); } .ai-msg-row--assistant .ai-msg-bubble:not(:has(.ai-card))::before { - content: ''; - position: absolute; - inset: 0; - z-index: 0; - border-radius: inherit; - pointer-events: none; - background: - linear-gradient(180deg, rgba(255, 255, 255, 0.82) 0%, rgba(255, 255, 255, 0) 40%), - radial-gradient(92% 72% at 10% -8%, rgba(255, 255, 255, 0.95), transparent 58%); - mix-blend-mode: screen; - opacity: 0.9; + display: none; } .ai-composer > .ai-composer-form, @@ -1141,7 +1139,7 @@ body.command-home .ai-stage-map--eu { content: none; } -/* 工具栏 / 快捷芯片 — 极简磨砂玻璃(与意图卡片、导航坞一致) */ +/* 工具栏 / 快捷芯片 — 暖纸面(与首页目的地芯片一致) */ .ai-sidebar-toggle, .ai-new-chat-ghost, .ai-new-chat-btn, @@ -1149,15 +1147,18 @@ body.command-home .ai-stage-map--eu { .ai-history-item { position: relative; isolation: isolate; - border: 1px solid rgba(255, 255, 255, 0.72); - background: var(--ai-acrylic-bg); - backdrop-filter: blur(28px) saturate(160%); - -webkit-backdrop-filter: blur(28px) saturate(160%); - box-shadow: none; + border: 1px solid var(--ai-paper-edge); + background: linear-gradient(180deg, #fffefb 0%, var(--ai-bg-soft) 100%); + backdrop-filter: none; + -webkit-backdrop-filter: none; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.9), + 0 3px 8px rgba(40, 32, 20, 0.06); transition: border-color 0.2s var(--ai-ease), background 0.2s var(--ai-ease), - color 0.2s var(--ai-ease); + color 0.2s var(--ai-ease), + box-shadow 0.2s var(--ai-ease); } .ai-sidebar-toggle::before, @@ -1242,8 +1243,11 @@ body.command-home .ai-stage-map--eu { .ai-sidebar-toggle:hover, .ai-new-chat-ghost:hover { color: var(--ai-action); - border-color: rgba(255, 255, 255, 0.92); - background: rgba(255, 255, 255, 0.44); + border-color: color-mix(in srgb, var(--ai-action) 24%, var(--ai-paper-edge)); + background: linear-gradient(180deg, #ffffff 0%, #fff8ef 100%); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.95), + 0 6px 14px rgba(40, 32, 20, 0.08); } .ai-sidebar-toggle:hover i, @@ -1253,20 +1257,23 @@ body.command-home .ai-stage-map--eu { .ai-history-sidebar { position: fixed; - top: var(--ai-header-h); - left: 0; - bottom: 0; + top: calc(var(--ai-header-h) + 10px); + left: 12px; + bottom: calc(var(--ai-trust-bar-h) + 10px); z-index: 20; - width: min(280px, 86vw); + width: min(268px, calc(86vw - 24px)); display: flex; flex-direction: column; - padding: 16px 12px 20px; - border-right: 1px solid rgba(255, 255, 255, 0.55); - background: color-mix(in srgb, var(--ai-bg) 90%, var(--ai-surface)); - backdrop-filter: blur(28px) saturate(160%); - -webkit-backdrop-filter: blur(28px) saturate(160%); - box-shadow: none; - transform: translateX(-105%); + padding: 16px 12px 16px; + border-radius: var(--ai-dock-radius); + border: 1px solid color-mix(in srgb, var(--ai-paper-edge) 65%, transparent); + background: color-mix(in srgb, var(--ai-paper) 72%, transparent); + backdrop-filter: none; + -webkit-backdrop-filter: none; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.55), + 0 10px 28px -12px rgba(40, 32, 20, 0.12); + transform: translateX(calc(-100% - 16px)); transition: transform 0.28s var(--ai-ease); } @@ -1861,17 +1868,64 @@ body.command-home .ai-stage-map--eu { display: flex; flex-wrap: wrap; align-items: center; - justify-content: space-between; gap: 8px 12px; } .ai-routes-meta { margin: 0; + flex-shrink: 0; font-size: 0.76rem; font-weight: 650; color: var(--ai-text-3); } +.ai-routes-pager { + display: inline-flex; + flex-shrink: 0; + align-items: center; + gap: 4px; +} + +.ai-routes-pager__btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + margin: 0; + padding: 0; + border-radius: 8px; + border: 1px solid var(--ai-border-soft); + background: color-mix(in srgb, #fff 78%, var(--ai-bg)); + color: var(--ai-text-2); + font-size: 1rem; + font-weight: 600; + line-height: 1; + cursor: pointer; +} + +.ai-routes-pager__btn:hover:not(:disabled) { + color: var(--ai-action); + border-color: color-mix(in srgb, var(--ai-action) 35%, #fff); + background: color-mix(in srgb, var(--ai-action) 8%, #fff); +} + +.ai-routes-pager__btn:disabled { + opacity: 0.4; + cursor: not-allowed; +} + +.ai-routes-pager__label { + min-width: 3.2em; + padding: 0 4px; + text-align: center; + font-size: 0.76rem; + font-weight: 700; + color: var(--ai-text-2); + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + .ai-routes-sticky { margin-left: auto; min-height: 32px; @@ -1932,11 +1986,13 @@ body.command-home .ai-stage-map--eu { display: flex; flex-direction: column; gap: 8px; + min-width: 0; min-height: 0; padding: 14px 16px; border-radius: 16px; border: 1px solid var(--ai-border-soft); background: color-mix(in srgb, #fff 78%, var(--ai-bg)); + overflow: hidden; } .ai-route-card__head { @@ -2028,13 +2084,6 @@ body.command-home .ai-stage-map--eu { font-weight: 800; } -.ai-route-card__cargo { - margin: 0; - font-size: 0.76rem; - line-height: 1.35; - color: var(--ai-text-3); -} - .ai-route-card__desc { margin: 0; font-size: 0.8rem; @@ -2066,16 +2115,20 @@ body.command-home .ai-stage-map--eu { .ai-route-card__actions { display: flex; - flex-wrap: wrap; + flex-wrap: nowrap; align-items: center; justify-content: flex-end; - gap: 8px; + gap: 6px; + width: 100%; + min-width: 0; margin-top: auto; padding-top: 4px; + box-sizing: border-box; } .ai-route-card__ask { display: inline-flex; + flex-shrink: 0; align-items: center; justify-content: center; width: 28px; @@ -2120,7 +2173,25 @@ body.command-home .ai-stage-map--eu { filter: brightness(1.06); } -.ai-route-card__reg, +.ai-route-card__reg { + display: inline-flex; + flex-shrink: 0; + align-items: center; + justify-content: center; + min-height: 28px; + max-width: calc(100% - 34px); + padding: 0 4px; + border: 0; + background: none; + color: var(--ai-text-3); + font-size: 0.78rem; + font-weight: 600; + line-height: 1.2; + white-space: nowrap; + text-decoration: none; + cursor: pointer; +} + .ai-routes-ghost { display: inline-flex; align-items: center; @@ -2177,29 +2248,6 @@ body.command-home .ai-stage-map--eu { margin-top: 4px; } -.ai-routes-more { - grid-column: 1 / -1; - display: flex; - justify-content: center; - padding: 4px 0 8px; -} - -.ai-routes-more__btn { - min-height: 36px; - padding: 0 18px; - border-radius: 999px; - border: 1px solid color-mix(in srgb, var(--ai-action) 30%, #fff); - background: color-mix(in srgb, var(--ai-action) 8%, #fff); - color: var(--ai-action); - font-size: 0.84rem; - font-weight: 700; - cursor: pointer; -} - -.ai-routes-more__btn:hover { - background: color-mix(in srgb, var(--ai-action) 14%, #fff); -} - .ai-routes-skeleton { width: min(100%, 420px); height: 72px; @@ -2257,9 +2305,12 @@ body.command-home .ai-stage-map--eu { } .ai-new-chat-btn:hover { - border-color: rgba(255, 255, 255, 0.92); - background: rgba(255, 255, 255, 0.44); + border-color: color-mix(in srgb, var(--ai-action) 24%, var(--ai-paper-edge)); + background: linear-gradient(180deg, #ffffff 0%, #fff8ef 100%); color: var(--ai-action); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.95), + 0 6px 14px rgba(40, 32, 20, 0.08); } .ai-new-chat-btn:hover i { @@ -2301,8 +2352,11 @@ body.command-home .ai-stage-map--eu { .ai-history-item:hover, .ai-history-item.is-active { - border-color: rgba(255, 255, 255, 0.92); - background: rgba(255, 255, 255, 0.44); + border-color: color-mix(in srgb, var(--ai-action) 24%, var(--ai-paper-edge)); + background: linear-gradient(180deg, #ffffff 0%, #fff8ef 100%); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.95), + 0 6px 14px rgba(40, 32, 20, 0.08); } .ai-history-item.is-active .ai-history-item__title { @@ -2447,11 +2501,11 @@ body.command-home #navbar .site-nav-avatar:hover { z-index: 2; display: flex; flex-direction: column; - gap: 16px; + gap: 28px; width: 100%; max-width: var(--ai-content-max); margin-inline: auto; - margin-top: -48px; + margin-top: -36px; border: none; border-radius: 0; background: transparent; @@ -2466,7 +2520,7 @@ body.command-home #navbar .site-nav-avatar:hover { z-index: 1; width: 100%; margin: 0; - padding: 20px 22px 18px; + padding: 8px 8px 4px; border: none; border-radius: 0; background: transparent; @@ -2482,7 +2536,7 @@ body.command-home #navbar .site-nav-avatar:hover { .ai-welcome-title { width: auto; max-width: 100%; - margin: 0 auto 14px; + margin: 0 auto 0; font-size: clamp(1.55rem, 2.2vw + 0.85rem, 2.65rem); font-weight: 800; letter-spacing: -0.03em; @@ -2524,159 +2578,211 @@ body.command-home #navbar .site-nav-avatar:hover { color: var(--ai-sky); } -.ai-welcome__foot { +.ai-welcome__meta { display: flex; align-items: center; - justify-content: space-between; - gap: 16px 24px; margin-top: 22px; padding-top: 18px; - border-top: none; - background-image: var(--ai-hairline); - background-repeat: no-repeat; - background-position: top center; - background-size: 100% 1px; + border-top: 1px solid var(--ai-border); } .ai-welcome__command { - padding: 0 4px 4px; + padding: 0 2px 8px; border-top: none; background: transparent; + display: flex; + flex-direction: column; + gap: 26px; +} + +/* 提问区:纯色纸面,圆角对齐 dock */ +.ai-welcome-compose-panel { + position: relative; + margin: 0; + padding: 20px 20px 18px; + border-radius: var(--ai-dock-radius); + border: 1px solid var(--ai-paper-edge); + background: var(--ai-paper); + box-shadow: var(--ai-paper-shadow); +} + +.ai-welcome-compose-panel .ai-welcome-cta-link { + position: absolute; + top: 18px; + right: 20px; + z-index: 1; +} + +.ai-welcome-compose-panel .ai-welcome-compose__lead { + padding-right: 5.5em; +} + +.ai-welcome-cta-link { + flex-shrink: 0; + padding: 0; + border: none; + background: none; + color: var(--ai-action); + font-size: 0.84rem; + font-weight: 600; + letter-spacing: 0.01em; + text-decoration: none; + white-space: nowrap; + transition: color 0.18s var(--ai-ease); +} + +.ai-welcome-cta-link:hover, +.ai-welcome-cta-link:focus { + color: var(--ai-sky-hover); + text-decoration: underline; + text-underline-offset: 3px; +} + +.ai-intent-section { + display: flex; + flex-direction: column; + gap: 20px; +} + +.ai-intent-group__label { + margin: 0 0 10px 2px; + font-size: 0.75rem; + font-weight: 700; + letter-spacing: 0.06em; + color: var(--ai-text-3); +} + +.ai-intent-grid--primary { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.ai-intent-grid--growth { + grid-template-columns: repeat(3, minmax(0, 1fr)); } .ai-welcome__command .ai-intent-grid { - gap: 10px 14px; - margin-top: 4px; - padding-top: 18px; - border-top: none; - background-image: var(--ai-hairline); - background-repeat: no-repeat; - background-position: top center; - background-size: 100% 1px; + gap: 12px 14px; + margin: 0; + padding: 0; + background: none; } -/* 首页意图卡片 — 半透明玻璃,折射全页明暗(无额外色块) */ +/* 首页意图卡:厚纸拟物,主路径略更厚实 */ .ai-welcome__command .ai-intent-door { overflow: hidden; - border: 1px solid var(--ai-glass-border); - border-radius: 20px; + border: 1px solid var(--ai-paper-edge); + border-radius: var(--ai-dock-radius); padding: 14px 14px; - background: var(--ai-glass-fill); - backdrop-filter: var(--ai-glass-blur); - -webkit-backdrop-filter: var(--ai-glass-blur); - box-shadow: var(--ai-glass-shadow); + background: + linear-gradient(165deg, #fffefb 0%, var(--ai-paper) 55%, #f6f0e7 100%); + backdrop-filter: none; + -webkit-backdrop-filter: none; + box-shadow: var(--ai-paper-shadow); transition: - border-color 0.22s var(--ai-ease), - background 0.22s var(--ai-ease), - box-shadow 0.22s var(--ai-ease), - transform 0.22s var(--ai-ease); + border-color 0.2s var(--ai-ease), + background 0.2s var(--ai-ease), + box-shadow 0.2s var(--ai-ease), + transform 0.2s var(--ai-ease); } .ai-welcome__command .ai-intent-door::before { display: block; - opacity: 0.55; - mix-blend-mode: soft-light; - background: - linear-gradient( - 180deg, - color-mix(in srgb, var(--ai-sky) 14%, rgba(255, 255, 255, 0.55)) 0%, - rgba(255, 255, 255, 0) 42% - ), - radial-gradient( - 92% 72% at 10% -8%, - rgba(255, 255, 255, 0.7), - transparent 58% - ); + opacity: 1; + mix-blend-mode: normal; + animation: none; + background: linear-gradient( + 180deg, + rgba(255, 255, 255, 0.65) 0%, + rgba(255, 255, 255, 0) 36% + ); + pointer-events: none; } .ai-welcome__command .ai-intent-door::after { - display: block; - opacity: 0.42; - filter: blur(16px); - background: radial-gradient( - circle at 36% 36%, - color-mix(in srgb, var(--ai-sky) 22%, rgba(255, 255, 255, 0.65)), - rgba(255, 255, 255, 0.08) 46%, - transparent 72% - ); + display: none; } .ai-welcome__command .ai-intent-door__icon { display: inline-flex; align-items: center; justify-content: center; - width: 48px; - height: 48px; + width: 40px; + height: 40px; + flex-shrink: 0; border: none; background: transparent; box-shadow: none; } +.ai-welcome__command .ai-intent-door__icon .ai-icon--illus { + width: 40px; + height: 40px; +} + .ai-welcome__command .ai-intent-door.is-primary { position: relative; - padding: 18px 16px 18px 18px; - background: var(--ai-glass-fill-strong); - border-color: color-mix(in srgb, var(--ai-sky) 22%, rgba(255, 255, 255, 0.82)); - box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.9), - inset 0 -1px 0 color-mix(in srgb, var(--ai-sky) 14%, transparent), - 0 14px 34px rgba(2, 62, 138, 0.08), - 0 0 0 1px rgba(2, 62, 138, 0.05); + padding: 16px 15px; + border-radius: var(--ai-dock-radius); + background: + linear-gradient(165deg, #ffffff 0%, var(--ai-paper) 48%, #f3ebe0 100%); + border-color: color-mix(in srgb, var(--ai-action) 14%, var(--ai-paper-edge)); + box-shadow: var(--ai-paper-shadow-lift); } .ai-welcome__command .ai-intent-door.is-primary .ai-intent-door__icon { - width: 52px; - height: 52px; + width: 44px; + height: 44px; 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); + width: 42px; + height: 42px; } .ai-welcome__command .ai-intent-door:hover { - border-color: color-mix(in srgb, var(--ai-sky) 28%, rgba(255, 255, 255, 0.88)); - background: - linear-gradient( - 165deg, - color-mix(in srgb, var(--ai-sky) 14%, rgba(255, 255, 255, 0.52)) 0%, - rgba(255, 255, 255, 0.22) 50%, - color-mix(in srgb, var(--ai-action) 10%, rgba(255, 255, 255, 0.34)) 100% - ); - box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.92), - 0 14px 32px rgba(2, 62, 138, 0.08), - 0 0 0 1px rgba(2, 62, 138, 0.05); - transform: translateY(-1px); + border-color: color-mix(in srgb, var(--ai-action) 22%, var(--ai-paper-edge)); + box-shadow: var(--ai-paper-shadow-lift); + transform: translateY(-2px); } .ai-welcome__command .ai-intent-door.is-primary:hover { - background: - linear-gradient( - 145deg, - color-mix(in srgb, var(--ai-sky) 16%, rgba(255, 255, 255, 0.6)) 0%, - color-mix(in srgb, var(--ai-action) 10%, rgba(255, 255, 255, 0.32)) 100% - ); - border-color: color-mix(in srgb, var(--ai-sky) 30%, rgba(255, 255, 255, 0.9)); + border-color: color-mix(in srgb, var(--ai-action) 28%, var(--ai-paper-edge)); box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.94), - 0 16px 36px rgba(2, 62, 138, 0.09), - 0 0 0 1px rgba(2, 62, 138, 0.055); + inset 0 1px 0 rgba(255, 255, 255, 0.95), + 0 12px 10px -6px rgba(40, 32, 20, 0.14), + 0 26px 44px -12px rgba(2, 62, 138, 0.14); } .ai-welcome__command .ai-intent-door__title { + font-size: 0.94rem; font-weight: 700; - letter-spacing: -0.01em; + letter-spacing: -0.015em; + line-height: 1.28; + color: var(--ai-action); +} + +.ai-welcome__command .ai-intent-door.is-primary .ai-intent-door__title { + font-size: 0.98rem; + font-weight: 800; + color: var(--ai-action); } .ai-welcome__command .ai-intent-door__hint { + font-size: 0.76rem; + line-height: 1.4; + color: var(--ai-text-3); + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + line-clamp: 2; + overflow: hidden; +} + +.ai-welcome__command .ai-intent-door.is-primary .ai-intent-door__hint { + font-size: 0.78rem; color: var(--ai-text-2); } @@ -2686,19 +2792,19 @@ body.command-home #navbar .site-nav-avatar:hover { display: flex; justify-content: center; width: 100%; - margin: -8px 0 -12px; + margin: -4px 0 -18px; pointer-events: none; } .ai-welcome-plane img { position: relative; z-index: 2; - width: min(680px, 58vw); + width: min(520px, 46vw); height: auto; display: block; - filter: drop-shadow(0 16px 36px rgba(var(--ai-sky-rgb), 0.13)); + filter: drop-shadow(0 14px 30px rgba(var(--ai-sky-rgb), 0.12)); transform-origin: 50% 60%; - animation: aiPlaneIn 2.4s cubic-bezier(0.22, 1, 0.36, 1) both; + animation: aiPlaneIn 1.8s cubic-bezier(0.22, 1, 0.36, 1) both; } @keyframes aiPlaneIn { @@ -2712,45 +2818,36 @@ body.command-home #navbar .site-nav-avatar:hover { } } -.ai-welcome__actions { - display: flex; - flex-direction: column; - align-items: flex-end; - gap: 8px; - flex-shrink: 0; +@media (prefers-reduced-motion: reduce) { + .ai-welcome-plane img { + animation: none; + } } -body.command-home a.ai-welcome-cta, -body.command-home a.ai-welcome-cta:visited, -body.command-home a.ai-welcome-cta:hover, -body.command-home a.ai-welcome-cta:focus { - display: inline-flex; - align-items: center; - justify-content: center; - flex-shrink: 0; - min-height: 40px; - padding: 0 22px; +.ai-welcome__meta .ai-welcome-stats--compact { + flex: 1; + min-width: 0; margin: 0; - border-radius: 999px; - background: var(--ai-action); - color: #fff; - font-size: 0.88rem; - font-weight: 700; - letter-spacing: 0.02em; - text-decoration: none; - box-shadow: 0 8px 22px rgba(var(--ai-action-rgb), 0.22); - transition: - background 0.2s var(--ai-ease), - transform 0.15s var(--ai-ease), - box-shadow 0.2s var(--ai-ease); + padding: 0; + background: none; } -body.command-home a.ai-welcome-cta:hover, -body.command-home a.ai-welcome-cta:focus { - background: var(--ai-action-hover); - color: #fff; - transform: translateY(-1px); - box-shadow: 0 10px 26px rgba(var(--ai-action-rgb), 0.28); +.ai-welcome-stats--compact .ai-welcome-stats__item { + padding: 0 10px; + gap: 3px; +} + +.ai-welcome-stats--compact .ai-welcome-stats__value { + font-size: clamp(0.92rem, 0.45vw + 0.75rem, 1.12rem); +} + +.ai-welcome-stats--compact .ai-welcome-stats__label { + font-size: 0.64rem; +} + +.ai-welcome-stats--compact .ai-welcome-stats__item + .ai-welcome-stats__item::before { + height: 26px; + background: color-mix(in srgb, var(--ai-action) 16%, var(--ai-border)); } .ai-welcome-human { @@ -2911,9 +3008,10 @@ body.command-home a.ai-welcome-cta:focus { left: 0; top: 50%; width: 1px; - height: 26px; + height: 28px; transform: translateY(-50%); - background: color-mix(in srgb, var(--ai-border) 85%, transparent); + /* 与统计数字海军蓝同族,略抬对比 */ + background: color-mix(in srgb, var(--ai-action) 22%, var(--ai-border)); } .ai-welcome-stats__value { @@ -3340,7 +3438,7 @@ body.command-home a.ai-welcome-cta:focus { .ai-msg-bubble { max-width: min(680px, 90%); padding: 12px 16px; - border-radius: 16px; + border-radius: var(--ai-dock-radius-inner); font-size: 0.94rem; line-height: 1.6; } @@ -3402,18 +3500,18 @@ body.command-home a.ai-welcome-cta:focus { 40% { opacity: 1; transform: scale(1); } } -/* Cards inside assistant replies — 极简磨砂玻璃 */ +/* Cards inside assistant replies — 厚纸面 */ .ai-card { position: relative; isolation: isolate; overflow: hidden; padding: 18px 18px 16px; - border-radius: 20px; - border: 1px solid rgba(255, 255, 255, 0.72); - background: var(--ai-acrylic-bg); - backdrop-filter: blur(28px) saturate(160%); - -webkit-backdrop-filter: blur(28px) saturate(160%); - box-shadow: none; + border-radius: var(--ai-dock-radius-inner); + border: 1px solid var(--ai-paper-edge); + background: var(--ai-paper); + backdrop-filter: none; + -webkit-backdrop-filter: none; + box-shadow: var(--ai-paper-shadow); } .ai-card::before, @@ -3471,8 +3569,8 @@ body.command-home a.ai-welcome-cta:focus { padding: 10px 12px; border-radius: var(--ai-radius-sm); text-align: left; - border: 1px solid rgba(255, 255, 255, 0.55); - background: transparent; + border: 1px solid var(--ai-paper-edge); + background: color-mix(in srgb, var(--ai-bg-soft) 70%, #fff); box-shadow: none; } @@ -3603,9 +3701,12 @@ body.command-home a.ai-welcome-cta:focus { } .ai-followup-chip:hover { - border-color: rgba(255, 255, 255, 0.92); - background: rgba(255, 255, 255, 0.44); + border-color: color-mix(in srgb, var(--ai-action) 24%, var(--ai-paper-edge)); + background: linear-gradient(180deg, #ffffff 0%, #fff8ef 100%); color: var(--ai-action); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.95), + 0 6px 14px rgba(40, 32, 20, 0.08); } .ai-followup-chip:disabled { @@ -3617,6 +3718,7 @@ body.command-home a.ai-welcome-cta:focus { color: #fff; border-color: var(--ai-action); background: var(--ai-action); + box-shadow: 0 6px 14px color-mix(in srgb, var(--ai-action) 22%, transparent); } .ai-followup-chip--routes:hover { @@ -3625,14 +3727,9 @@ body.command-home a.ai-welcome-cta:focus { background: var(--ai-action); } -.ai-welcome-compose { - margin: 0; - padding: 2px 2px 4px; -} - .ai-welcome-compose__lead { - margin: 0 0 10px; - padding: 0 4px; + margin: 0 0 12px; + padding: 0; font-size: 0.9rem; font-weight: 600; letter-spacing: 0; @@ -3645,37 +3742,44 @@ body.command-home a.ai-welcome-cta:focus { display: flex; flex-wrap: wrap; gap: 8px; - margin: 0 0 8px; - padding: 0 2px; + margin: 0 0 14px; + padding: 0; } .ai-home-dest { min-height: 34px; - padding: 0 14px; - border-radius: 999px; - border: 1px solid var(--ai-glass-border); - background: color-mix(in srgb, var(--ai-sky) 8%, rgba(255, 255, 255, 0.38)); + padding: 0 16px; + border-radius: var(--ai-chip-radius, 999px); + border: 1px solid var(--ai-paper-edge, var(--ai-border)); + background: linear-gradient(180deg, #fffefb 0%, var(--ai-bg-soft) 100%); box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.7), - 0 4px 12px rgba(2, 62, 138, 0.04); + inset 0 1px 0 rgba(255, 255, 255, 0.9), + 0 3px 8px rgba(40, 32, 20, 0.06); color: var(--ai-text-2); font-size: 0.86rem; - font-weight: 650; + font-weight: 600; cursor: pointer; transition: color 0.18s var(--ai-ease), border-color 0.18s var(--ai-ease), background 0.18s var(--ai-ease), - box-shadow 0.18s var(--ai-ease); + box-shadow 0.18s var(--ai-ease), + transform 0.15s var(--ai-ease); } .ai-home-dest:hover { color: var(--ai-action); - border-color: color-mix(in srgb, var(--ai-sky) 32%, rgba(255, 255, 255, 0.78)); - background: color-mix(in srgb, var(--ai-sky) 12%, rgba(255, 255, 255, 0.55)); + border-color: color-mix(in srgb, var(--ai-action) 24%, var(--ai-paper-edge, var(--ai-border))); + background: linear-gradient(180deg, #ffffff 0%, #fff8ef 100%); box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.85), - 0 6px 16px rgba(2, 62, 138, 0.07); + inset 0 1px 0 rgba(255, 255, 255, 0.95), + 0 6px 14px rgba(40, 32, 20, 0.08); + transform: translateY(-1px); +} + +.ai-home-dest:active { + transform: translateY(0); + box-shadow: inset 0 1px 2px rgba(90, 70, 40, 0.08); } .ai-home-price-hint { @@ -3686,24 +3790,56 @@ body.command-home a.ai-welcome-cta:focus { color: var(--ai-text-3); } -.ai-composer-wrap.is-welcome .ai-composer { - min-height: 72px; - padding: 12px 14px 12px 18px; - border-radius: 16px; - border-color: var(--ai-glass-border); - background: var(--ai-glass-fill); - backdrop-filter: var(--ai-glass-blur); - -webkit-backdrop-filter: var(--ai-glass-blur); - box-shadow: var(--ai-glass-shadow); +/* 首页提问槽:浅灰内凹(挂在真实存在的 slot 上) */ +.ai-composer-slot--welcome .ai-composer { + min-height: 56px; + padding: 12px 12px 12px 18px; + border-radius: 26px; + border: none !important; + outline: none; + background: #e8ecf1 !important; + backdrop-filter: none !important; + -webkit-backdrop-filter: none !important; + box-shadow: inset 0 3px 10px rgba(15, 23, 42, 0.14) !important; + transition: + background 0.18s var(--ai-ease), + box-shadow 0.18s var(--ai-ease); } -.ai-composer-wrap.is-welcome .ai-composer::before { - opacity: 0.55; - background: linear-gradient( - 180deg, - color-mix(in srgb, var(--ai-sky) 12%, rgba(255, 255, 255, 0.5)) 0%, - rgba(255, 255, 255, 0) 40% - ); +.ai-composer-slot--welcome .ai-composer::before, +.ai-composer-slot--welcome .ai-composer::after { + display: none !important; +} + +.ai-composer-slot--welcome .ai-composer:focus-within { + border: none !important; + outline: none; + background: #dde3ea !important; + box-shadow: inset 0 4px 12px rgba(15, 23, 42, 0.16) !important; +} + +.ai-composer-slot--welcome .ai-composer-input { + color: var(--ai-text); +} + +.ai-composer-slot--welcome .ai-composer-input::placeholder { + color: var(--ai-text-3); +} + +.ai-composer-slot--welcome .ai-composer-send { + width: 40px; + height: 40px; + font-size: 1.1rem; + box-shadow: none; +} + +.ai-composer-slot--welcome .ai-composer-send i { + font-size: 1rem; +} + +.ai-composer-slot--welcome .ai-composer-send.is-empty { + background: #cfd6de; + color: #7a8490; } .ai-composer-dock { @@ -3806,7 +3942,7 @@ body.command-home a.ai-welcome-cta:focus { } .ai-composer-wrap.is-docked .ai-composer { - box-shadow: var(--ai-glass-shadow); + box-shadow: var(--ai-paper-shadow); } .ai-composer__caustic, @@ -4094,36 +4230,59 @@ body.command-home a.ai-welcome-cta:focus { .ai-welcome__command .ai-intent-door.is-primary { padding: 16px 14px; - border-radius: 20px; + border-radius: var(--ai-dock-radius, 28px); } .ai-welcome__command .ai-intent-door { - border-radius: 20px; + border-radius: var(--ai-dock-radius, 28px); } .ai-welcome-plane img { - width: min(520px, 78vw); + width: min(420px, 52vw); + } + + .ai-intent-grid--primary, + .ai-intent-grid--growth { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .ai-intent-grid--primary .ai-intent-door:last-child { + grid-column: 1 / -1; } } @media (max-width: 780px) { - .ai-welcome__foot { - flex-direction: column; - align-items: stretch; - gap: 12px; - } - - .ai-welcome-stats { + .ai-welcome__meta { justify-content: center; } - .ai-welcome__actions { - align-items: center; - width: 100%; + .ai-welcome-stats--compact { + justify-content: center; } - .ai-welcome-cta { - width: 100%; + .ai-welcome-compose-panel .ai-welcome-compose__lead { + padding-right: 0; + padding-top: 4px; + } + + .ai-welcome-compose-panel .ai-welcome-cta-link { + top: 14px; + right: 16px; + font-size: 0.8rem; + } + + .ai-intent-grid--growth { + display: flex; + gap: 10px; + overflow-x: auto; + padding-bottom: 4px; + scroll-snap-type: x proximity; + -webkit-overflow-scrolling: touch; + } + + .ai-intent-grid--growth .ai-intent-door { + flex: 0 0 min(78vw, 260px); + scroll-snap-align: start; } } @@ -4177,17 +4336,24 @@ body.command-home a.ai-welcome-cta:focus { height: min(68%, 160px); } - .ai-welcome__foot { - flex-direction: column; - align-items: stretch; - } - - .ai-welcome-stats-block { - width: 100%; + .ai-welcome-plane { + display: none; } .ai-welcome__stack { - margin-top: -20px; + margin-top: 4px; + } + + .ai-welcome-stats--compact .ai-welcome-stats__item:nth-child(n + 3) { + display: none; + } + + .ai-intent-grid--primary { + grid-template-columns: 1fr; + } + + .ai-intent-grid--primary .ai-intent-door:last-child { + grid-column: auto; } .ai-partner-marquee { @@ -4397,7 +4563,7 @@ body.command-home .ai-welcome-plane img { } body.command-home .ai-history-sidebar { - background: #fff; + background: color-mix(in srgb, var(--ai-paper) 72%, transparent); } body.command-home .ai-history-backdrop {