/* ===== OMS AI Advisor — IDE-style logistics advisor shell ===== */ .ai-advisor-shell { --kc-primary: var(--app-primary-color, #2d8c8c); --kc-secondary: #6a75b8; --kc-tertiary: #ffb400; --kc-page-bg: var(--app-page-bg); position: fixed; inset: 0; z-index: 9999; animation: ai-shell-in 0.4s cubic-bezier(0.22, 1, 0.36, 1); } .ai-advisor-shell--page { position: relative; inset: auto; z-index: auto; flex: 1; min-height: 0; height: 100%; animation: none; box-sizing: border-box; } @keyframes ai-shell-in { from { opacity: 0; } to { opacity: 1; } } .ai-advisor-shell--page .ai-advisor-layout { max-width: min(1520px, 100%); height: 100%; margin: 0 auto; padding: 12px; box-sizing: border-box; } .ai-advisor-shell--page .ai-shell-bg { border-radius: 16px; } .ai-advisor-shell--page .ai-app-bar { border-bottom: none; padding: 0 0 8px; background: transparent; } .ai-advisor-shell--page .ai-app-bar--waybill { padding-bottom: 4px; } .ai-advisor-shell--page .ai-composer-wrap { border-top: none; background: transparent; padding-top: 4px; } @media (min-width: 769px) { .ai-advisor-shell--page .ai-app-bar--waybill { display: none; } } .ai-shell-bg { position: absolute; inset: 0; background: radial-gradient(ellipse 80% 60% at 50% -10%, rgba(45, 140, 140, 0.12) 0%, transparent 55%), radial-gradient(ellipse 50% 40% at 100% 100%, rgba(255, 180, 0, 0.06) 0%, transparent 50%), var(--kc-page-bg, var(--app-page-bg)); } .ai-advisor-layout { position: relative; z-index: 1; display: flex; height: 100%; max-width: min(1520px, calc(100vw - 32px)); margin: 0 auto; padding: 12px; box-sizing: border-box; } .ai-history-sidebar, .ai-advisor-app { border-radius: 18px; border: 1px solid var(--app-card-border); background: var(--app-elevated-bg); box-shadow: 0 6px 18px rgba(27, 42, 107, 0.05); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); } .ai-history-sidebar { flex-shrink: 0; width: 260px; display: flex; flex-direction: column; min-height: 0; margin-right: 12px; padding: 12px 10px 16px; } .ai-sidebar-brand { flex-shrink: 0; padding: 6px 6px 14px; margin-bottom: 4px; border-bottom: 1px solid rgba(27, 42, 107, 0.08); } .ai-sidebar-brand__link { display: flex; align-items: center; gap: 10px; min-width: 0; text-decoration: none; } .ai-sidebar-brand__logo { display: block; width: 40px; height: 40px; object-fit: contain; flex-shrink: 0; filter: drop-shadow(0 4px 12px rgba(15, 23, 42, 0.12)); } .ai-sidebar-brand__link .brand-lockup { display: flex; flex-direction: column; justify-content: center; min-width: 0; line-height: 1.15; } .brand-lockup__title-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; } .ai-sidebar-brand__link .brand-lockup h1 { font-size: 1.2rem; margin: 0; font-weight: 800; letter-spacing: 0.06em; color: #0f2744; } .ai-sidebar-brand__link .brand-lockup .brand-fullname { margin-top: 2px; font-size: 0.58rem; line-height: 1.25; font-weight: 500; letter-spacing: 0.02em; color: var(--kc-secondary, #6a75b8); } .ai-sidebar-brand__badge { display: inline-block; padding: 2px 8px; border-radius: 999px; background: var(--kc-tertiary, #ffb400); color: #fff; font-size: 0.62rem; font-weight: 600; letter-spacing: 0.03em; white-space: nowrap; line-height: 1.4; } .ai-history-sidebar__head { flex-shrink: 0; padding: 4px 14px 12px; } .ai-history-sidebar__title { margin: 0 0 10px; padding: 0 4px; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kc-secondary, #6a75b8); } .ai-history-search { display: block; width: calc(100% - 28px); margin: 0 14px 10px; padding: 7px 10px; border: 1px solid rgba(45, 140, 140, 0.14); border-radius: 8px; background: var(--app-elevated-bg); color: var(--kc-primary, #2d8c8c); font-size: 0.78rem; outline: none; box-sizing: border-box; } .ai-history-search:focus { border-color: var(--app-primary-color, #2d8c8c); box-shadow: 0 0 0 2px rgba(45, 140, 140, 0.12); } .ai-new-chat-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; width: 100%; min-height: 38px; padding: 0 12px; border: 1px dashed rgba(27, 42, 107, 0.18); border-radius: 12px; background: var(--color-fill-2); color: var(--kc-primary, #1b2a6b); font-size: 0.84rem; font-weight: 600; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease; } .ai-new-chat-btn:hover { background: var(--app-card-bg); border-color: rgba(255, 180, 0, 0.45); color: var(--kc-primary, #1b2a6b); } .ai-new-chat-btn i { color: var(--kc-tertiary, #ffb400); } .ai-history-list { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; padding: 0 2px; } .ai-history-list::-webkit-scrollbar { width: 5px; } .ai-history-list::-webkit-scrollbar-thumb { background: rgba(27, 42, 107, 0.12); border-radius: 999px; } .ai-history-empty { margin: 12px 6px 0; font-size: 0.82rem; color: var(--kc-secondary, #6a75b8); } .ai-history-item { position: relative; display: flex; align-items: flex-start; gap: 10px; width: 100%; padding: 10px 36px 10px 10px; border: 1px solid transparent; border-radius: 12px; background: transparent; text-align: left; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease; } .ai-history-item:hover { background: rgba(27, 42, 107, 0.04); border-color: rgba(27, 42, 107, 0.06); } .ai-history-item.is-active { background: rgba(255, 180, 0, 0.12); border-color: rgba(255, 180, 0, 0.28); } .ai-history-item__icon { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 8px; background: rgba(27, 42, 107, 0.06); color: var(--kc-primary, #1b2a6b); font-size: 0.85rem; } .ai-history-item.is-active .ai-history-item__icon { background: rgba(255, 180, 0, 0.22); } .ai-history-item__icon--waybill { background: rgba(255, 180, 0, 0.16); color: var(--kc-tertiary, #ffb400); } .ai-history-item__delete { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: none; border-radius: 6px; background: transparent; color: var(--kc-secondary, #6a75b8); cursor: pointer; opacity: 0; transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease; } .ai-history-item:hover .ai-history-item__delete, .ai-history-item.is-active .ai-history-item__delete { opacity: 1; } .ai-history-item__delete:hover { background: rgba(245, 63, 63, 0.1); color: #f53f3f; } .ai-history-item__delete:disabled { opacity: 0.35; cursor: not-allowed; } .ai-history-item__body { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 3px; } .ai-history-item__title { font-size: 0.84rem; font-weight: 600; line-height: 1.35; color: var(--kc-primary, #1b2a6b); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ai-history-item__time { font-size: 0.72rem; color: var(--kc-secondary, #6a75b8); } .ai-history-backdrop { display: none; } .ai-advisor-app { position: relative; z-index: 1; display: flex; flex-direction: column; flex: 1; min-width: 0; min-height: 0; height: 100%; padding: 12px 14px 16px; overflow: hidden; } .ai-sidebar-toggle { display: none; align-items: center; justify-content: center; width: 36px; height: 36px; border: 1px solid rgba(27, 42, 107, 0.12); border-radius: 10px; background: var(--app-elevated-bg); color: var(--kc-primary, #1b2a6b); font-size: 1rem; cursor: pointer; } .ai-sidebar-toggle:hover { border-color: rgba(27, 42, 107, 0.22); color: var(--kc-tertiary, #ffb400); } /* —— App bar —— */ .ai-app-bar { flex-shrink: 0; display: flex; align-items: center; gap: 12px; padding: 4px 2px 12px; border-bottom: 1px solid rgba(27, 42, 107, 0.08); } .ai-app-bar__actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; margin-left: auto; } .ai-app-bar__back { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; border: 1px solid rgba(45, 140, 140, 0.16); border-radius: 4px; background: var(--app-elevated-bg); color: var(--kc-primary, #2d8c8c); font-size: 0.82rem; font-weight: 600; cursor: pointer; transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease; } .ai-app-bar__back:hover { border-color: var(--app-primary-color, #2d8c8c); background: var(--app-card-bg); } .ai-app-bar__lang, .ai-app-bar__close { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; min-width: 36px; padding: 0; border-radius: 10px; border: 1px solid rgba(27, 42, 107, 0.12); background: var(--app-elevated-bg); color: var(--kc-primary, #1b2a6b); font-size: 1.05rem; font-weight: 600; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease; } .ai-app-bar__lang { gap: 5px; justify-content: flex-start; width: auto; min-width: 0; padding: 0 6px 0 4px; } .ai-app-bar__lang .language-toggle-icon { font-size: 0.95rem; line-height: 1; flex-shrink: 0; } .ai-app-bar__lang .language-toggle__track { gap: 0; background: rgba(27, 42, 107, 0.06); } .ai-app-bar__lang .language-toggle__opt { min-width: 0; max-width: 0; padding: 0; overflow: hidden; opacity: 0; border-radius: 5px; font-size: 0.65rem; font-weight: 700; line-height: 1.2; color: var(--kc-secondary, #6a75b8); transition: max-width 0.2s ease, padding 0.2s ease, opacity 0.2s ease, background 0.2s ease, box-shadow 0.2s ease; } .ai-app-bar__lang .language-toggle__opt.is-active { min-width: 24px; max-width: 36px; padding: 3px 5px; opacity: 1; color: var(--kc-primary, #1b2a6b); background: var(--kc-tertiary, #ffb400); box-shadow: 0 1px 4px rgba(255, 180, 0, 0.35); } .ai-app-bar__close { width: 36px; padding: 0; font-size: 1.25rem; line-height: 1; } .ai-app-bar__lang:hover, .ai-app-bar__close:hover { background: var(--app-card-bg); border-color: rgba(27, 42, 107, 0.22); } .ai-app-bar__lang:hover .language-toggle-icon { color: var(--kc-tertiary, #ffb400); } .ai-waybill-context { flex-shrink: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 0 2px 10px; padding: 10px 12px; border-radius: 12px; border: 1px solid rgba(255, 180, 0, 0.28); background: rgba(255, 180, 0, 0.1); color: var(--kc-primary, #2d8c8c); font-size: 0.82rem; } .ai-waybill-context__main { display: flex; align-items: flex-start; gap: 8px; min-width: 0; flex: 1; } .ai-waybill-context__info { display: flex; flex-direction: column; gap: 4px; min-width: 0; } .ai-waybill-context__title { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ai-waybill-context__status { display: inline-flex; align-self: flex-start; padding: 2px 8px; border-radius: 999px; background: rgba(45, 140, 140, 0.1); color: var(--app-primary-color, #2d8c8c); font-size: 0.72rem; font-weight: 600; } .ai-waybill-context__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } .ai-waybill-context__link, .ai-waybill-context__btn, .ai-waybill-context__clear, .ai-waybill-context__back { height: 28px; padding: 0 10px; border-radius: 4px; font-size: 0.75rem; font-weight: 600; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease; } .ai-waybill-context__link { border: 1px solid rgba(45, 140, 140, 0.18); background: var(--app-elevated-bg); color: var(--app-primary-color, #2d8c8c); } .ai-waybill-context__link:hover { border-color: var(--app-primary-color, #2d8c8c); } .ai-waybill-context__btn { border: none; background: var(--app-primary-color, #2d8c8c); color: #fff; } .ai-waybill-context__btn:hover:not(:disabled) { filter: brightness(1.05); } .ai-waybill-context__btn:disabled { opacity: 0.55; cursor: not-allowed; } .ai-waybill-context__clear { border: none; background: transparent; color: var(--kc-secondary, #6a75b8); } .ai-waybill-context__clear:hover { color: #f53f3f; } .ai-waybill-context__back { display: inline-flex; align-items: center; gap: 4px; border: 1px solid rgba(45, 140, 140, 0.18); background: var(--app-elevated-bg); color: var(--app-primary-color, #2d8c8c); } .ai-waybill-context__back:hover { border-color: var(--app-primary-color, #2d8c8c); background: var(--app-card-bg); } .ai-waybill-context :deep(svg) { flex-shrink: 0; font-size: 0.95rem; color: var(--kc-tertiary, #ffb400); margin-top: 2px; } .ai-waybill-context__text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* —— Main scroll area —— */ .ai-app-main { flex: 1; min-height: 0; overflow-y: auto; padding: 8px 2px 12px; scroll-behavior: smooth; } .ai-app-main::-webkit-scrollbar { width: 6px; } .ai-app-main::-webkit-scrollbar-thumb { background: rgba(27, 42, 107, 0.15); border-radius: 999px; } /* —— Welcome (empty state) —— */ .ai-welcome { padding: 8px 0 24px; animation: ai-fade-up 0.45s ease 0.1s both; } .ai-welcome.is-hidden { display: none; } @keyframes ai-fade-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } .ai-welcome__hero { text-align: center; padding: 24px 12px 28px; } .ai-welcome__avatar { margin: 0 auto 16px; } .ai-avatar { display: inline-flex; align-items: center; justify-content: center; width: 64px; height: 64px; margin-bottom: 16px; border-radius: 20px; background: linear-gradient(145deg, var(--kc-primary, #1b2a6b) 0%, #2a3d8f 100%); color: #fff; font-size: 1.75rem; box-shadow: 0 8px 24px rgba(27, 42, 107, 0.2); } .ai-welcome__hero h2 { margin: 0 0 8px; font-size: clamp(1.35rem, 4vw, 1.65rem); font-weight: 700; letter-spacing: -0.02em; color: var(--kc-primary, #1b2a6b); } .ai-welcome__hero p { margin: 0 auto; max-width: 420px; font-size: 0.95rem; line-height: 1.55; color: var(--kc-secondary, #6a75b8); } .ai-quick-section-label { margin: 0 0 12px; padding: 0 4px; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kc-secondary, #6a75b8); opacity: 0.85; } .ai-quick-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .ai-mcp-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-bottom: 8px; } @media (max-width: 720px) { .ai-mcp-grid { grid-template-columns: 1fr; } } .ai-mcp-card { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 14px 12px; text-align: left; border-radius: 14px; border: none; background: color-mix(in srgb, var(--app-primary-color, #007979) 8%, var(--app-card-bg)); box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04); cursor: pointer; transition: transform 0.15s ease, box-shadow 0.15s ease; } .ai-mcp-card:hover { transform: translateY(-1px); box-shadow: 0 6px 16px color-mix(in srgb, var(--app-primary-color, #007979) 16%, transparent); } .ai-mcp-card:disabled { opacity: 0.55; cursor: not-allowed; transform: none; } .ai-mcp-card__title { font-size: 14px; font-weight: 700; color: var(--color-text-1); } .ai-mcp-card__desc { font-size: 12px; line-height: 1.4; color: var(--color-text-3); } @media (max-width: 900px) { .ai-mcp-grid { grid-template-columns: 1fr; } } .ai-quick-card { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; text-align: left; border-radius: 16px; border: 1px solid var(--app-card-border); background: var(--app-elevated-bg); box-shadow: inset 0 1px 0 transparent, 0 4px 14px rgba(27, 42, 107, 0.05); cursor: pointer; transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease; } .ai-quick-card:hover { transform: translateY(-2px); box-shadow: inset 0 1px 0 transparent, 0 8px 22px rgba(27, 42, 107, 0.09); border-color: rgba(27, 42, 107, 0.12); } .ai-quick-card:active { transform: translateY(0); } .ai-quick-card:disabled { opacity: 0.55; cursor: not-allowed; transform: none; } .ai-quick-card__icon { flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 10px; background: rgba(27, 42, 107, 0.06); color: var(--kc-primary, #1b2a6b); font-size: 1.05rem; } .ai-quick-card__icon--logo { background: var(--app-card-bg); box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.06); overflow: hidden; } .ai-quick-card__logo { width: 22px; height: 22px; object-fit: contain; display: block; } .ai-quick-card__text { flex: 1; font-size: 0.88rem; font-weight: 600; line-height: 1.35; color: var(--kc-primary, #1b2a6b); } /* —— Messages —— */ .ai-messages { display: none; flex-direction: column; gap: 20px; padding: 8px 0 16px; } .ai-messages.is-active { display: flex; } .ai-msg-row { display: flex; gap: 10px; align-items: flex-end; max-width: 100%; animation: ai-msg-in 0.3s ease; } @keyframes ai-msg-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .ai-msg-row--user { flex-direction: row-reverse; align-self: flex-end; } .ai-msg-row--assistant { align-self: flex-start; } .ai-msg-avatar { flex-shrink: 0; width: 32px; height: 32px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; } .ai-msg-row--assistant .ai-msg-avatar { width: 32px; height: 32px; padding: 0; background: transparent; overflow: visible; } .ai-msg-row--user .ai-msg-avatar { background: rgba(27, 42, 107, 0.08); color: var(--kc-primary, #1b2a6b); font-size: 0.75rem; font-weight: 700; } .ai-msg-bubble { max-width: min(680px, 88%); padding: 12px 16px; border-radius: 18px; font-size: 0.94rem; line-height: 1.6; white-space: pre-wrap; word-break: break-word; } .ai-msg-row--user .ai-msg-bubble { background: var(--kc-primary, #1b2a6b); color: #fff; border-bottom-right-radius: 6px; } .ai-msg-row--assistant .ai-msg-bubble { background: var(--app-card-bg); color: var(--color-text-1); border: 1px solid rgba(27, 42, 107, 0.08); box-shadow: 0 2px 8px rgba(27, 42, 107, 0.04); border-bottom-left-radius: 6px; } .ai-msg-row--typing .ai-msg-bubble { display: flex; gap: 5px; align-items: center; padding: 14px 18px; } .ai-msg-row--typing span { width: 7px; height: 7px; border-radius: 50%; background: var(--kc-secondary, #6a75b8); animation: ai-typing 1.2s ease-in-out infinite; } .ai-msg-row--typing span:nth-child(2) { animation-delay: 0.15s; } .ai-msg-row--typing span:nth-child(3) { animation-delay: 0.3s; } @keyframes ai-typing { 0%, 80%, 100% { opacity: 0.35; transform: scale(0.85); } 40% { opacity: 1; transform: scale(1); } } /* Compact chips after chat starts */ .ai-followup { flex-shrink: 0; display: none; gap: 8px; padding: 0 2px 8px; overflow-x: auto; scrollbar-width: none; } .ai-followup.is-visible { display: flex; } .ai-followup::-webkit-scrollbar { display: none; } .ai-followup-chip { flex: 0 0 auto; padding: 7px 14px; border-radius: 999px; border: 1px solid rgba(27, 42, 107, 0.1); background: var(--app-elevated-bg); color: var(--kc-primary, #1b2a6b); font-size: 0.8rem; font-weight: 600; cursor: pointer; white-space: nowrap; transition: background 0.15s ease; } .ai-followup-chip:hover { background: var(--app-card-bg); border-color: rgba(27, 42, 107, 0.2); } .ai-followup-chip:disabled { opacity: 0.5; cursor: not-allowed; } /* —— Composer (sticky) —— */ .ai-composer-wrap { flex-shrink: 0; padding: 8px 2px 0; } .ai-composer { padding: 8px; border-radius: 16px; border: 1px solid rgba(27, 42, 107, 0.08); background: var(--app-elevated-bg); box-shadow: inset 0 1px 0 transparent; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } .ai-composer-form { display: flex; align-items: flex-end; gap: 8px; } .ai-composer-input { flex: 1; min-height: 44px; max-height: 120px; padding: 11px 4px 11px 12px; border: none; background: transparent; color: var(--color-text-1); /* ≥16px:避免 iOS/微信聚焦输入框时整页缩放 */ font-size: 16px; line-height: 1.45; resize: none; /* 减少微信内长按/聚焦副作用 */ -webkit-text-size-adjust: 100%; } .ai-composer-input:focus { outline: none; } .ai-composer-input::placeholder { color: #c9cdd4; } .ai-composer-send { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: none; border-radius: 14px; background: var(--app-primary-color, var(--kc-primary, #2d8c8c)); color: #fff; font-size: 1.15rem; cursor: pointer; transition: transform 0.15s ease, filter 0.15s ease, background 0.15s ease; } .ai-composer-send .arco-icon, .ai-composer-send svg { width: 1.15em; height: 1.15em; color: inherit; fill: currentColor; } .ai-composer-send:hover:not(:disabled) { filter: brightness(1.05); transform: scale(1.04); } .ai-composer-send:disabled { background: var(--color-fill-3); color: #c9cdd4; opacity: 1; cursor: not-allowed; transform: none; filter: none; } .ai-composer-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 8px 2px; } .ai-composer-hint { margin: 0; font-size: 0.72rem; color: var(--color-text-3); opacity: 0.72; font-weight: 400; } .ai-composer-human { font-size: 0.8rem; font-weight: 600; color: var(--kc-primary, #1b2a6b); text-decoration: none; white-space: nowrap; } .ai-composer-human:hover { color: var(--kc-secondary, #6a75b8); text-decoration: underline; } @media (max-width: 768px) { .ai-advisor-shell--page .ai-advisor-layout { padding: 8px; } .ai-advisor-layout { padding: 8px; } .ai-sidebar-toggle { display: inline-flex; } .ai-history-sidebar { position: fixed; top: 0; left: 0; bottom: 0; z-index: 10002; width: min(280px, 86vw); margin: 0; border-radius: 0 18px 18px 0; transform: translateX(-105%); transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1); } #ai-advisor-shell.ai-history-open .ai-history-sidebar, .ai-advisor-shell.ai-history-open .ai-history-sidebar { transform: translateX(0); } #ai-advisor-shell.ai-history-open .ai-history-backdrop, .ai-advisor-shell.ai-history-open .ai-history-backdrop { display: block; position: fixed; inset: 0; z-index: 10001; border: none; background: rgba(14, 29, 52, 0.35); cursor: pointer; } .ai-advisor-app { padding: 10px 10px 12px; } .ai-quick-grid { grid-template-columns: 1fr; } .ai-sidebar-brand__logo { width: 36px; height: 36px; } .ai-sidebar-brand__link .brand-lockup h1 { font-size: 1.1rem; } .ai-welcome__hero { padding: 16px 0 20px; } .ai-avatar { width: 56px; height: 56px; font-size: 1.5rem; } .ai-composer-footer { flex-direction: column; align-items: flex-start; gap: 6px; } } @media (min-width: 1600px) { .ai-advisor-layout { max-width: min(1680px, calc(100vw - 48px)); } } /* —— Exclusive advisor panel (replaces chat main area) —— */ .ai-advisor-panel { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; padding: 24px 16px; overflow-y: auto; } .ai-advisor-panel__back { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; margin-bottom: 16px; padding: 6px 10px; border: 1px solid rgba(27, 42, 107, 0.12); border-radius: 10px; background: var(--app-elevated-bg); color: var(--kc-primary, #1b2a6b); font-size: 0.84rem; font-weight: 600; cursor: pointer; } .ai-advisor-panel__back:hover { border-color: rgba(27, 42, 107, 0.22); color: var(--kc-tertiary, #ffb400); } .ai-advisor-panel__loading { flex: 1; display: flex; align-items: center; justify-content: center; width: 100%; } .ai-advisor-panel__name { font-size: 1.1rem; font-weight: 600; color: var(--kc-primary, #1b2a6b); margin-bottom: 16px; text-align: center; } .ai-advisor-panel__qr-wrap { width: 168px; height: 168px; border: 2px dashed rgba(27, 42, 107, 0.12); border-radius: 12px; background: var(--color-fill-2); display: flex; align-items: center; justify-content: center; padding: 8px; margin-bottom: 16px; } .ai-advisor-panel__qr { width: 128px; height: 128px; object-fit: contain; border-radius: 8px; } .ai-advisor-panel__qr-placeholder { font-size: 0.78rem; color: var(--kc-secondary, #6a75b8); text-align: center; padding: 0 8px; } .ai-advisor-panel__wechat { display: flex; flex-direction: column; align-items: center; gap: 4px; } .ai-advisor-panel__label { font-size: 0.75rem; color: var(--kc-secondary, #6a75b8); } .ai-advisor-panel__value { font-size: 0.95rem; font-weight: 600; color: var(--kc-primary, #1b2a6b); word-break: break-all; text-align: center; } .ai-advisor-panel__empty { font-size: 0.88rem; color: var(--kc-secondary, #6a75b8); } .ai-app-bar__lang-text { min-width: 28px; font-size: 0.72rem; font-weight: 700; } .ai-quick-card__icon :deep(svg) { font-size: 1.05rem; } .ai-msg-avatar :deep(svg) { font-size: 0.95rem; } .ai-welcome__avatar.nana-fab-wrap { display: inline-block; } .ai-avatar :deep(svg) { font-size: 1.75rem; } .ai-composer-human-btn { display: inline-flex; align-items: center; gap: 5px; border: none; background: transparent; padding: 0; font-size: 0.8rem; font-weight: 600; color: var(--kc-primary, #1b2a6b); cursor: pointer; white-space: nowrap; } .ai-composer-human-btn__logo { width: 16px; height: 16px; object-fit: contain; display: block; border-radius: 3px; } .ai-composer-human-btn:hover { color: var(--kc-secondary, #6a75b8); text-decoration: underline; } /* —— Human advisor drawer —— */ .ai-advisor-drawer-backdrop { position: fixed; inset: 0; z-index: 10000; background: rgba(15, 23, 42, 0.35); } .ai-advisor-drawer { position: fixed; top: 0; right: 0; z-index: 10001; display: flex; flex-direction: column; width: min(360px, 92vw); height: 100%; background: var(--app-card-bg); box-shadow: -8px 0 32px rgba(15, 23, 42, 0.12); transform: translateX(100%); transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1); } .ai-advisor-drawer.is-open { transform: translateX(0); } .ai-advisor-drawer__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; border-bottom: 1px solid rgba(45, 140, 140, 0.1); } .ai-advisor-drawer__head h3 { margin: 0; font-size: 1rem; font-weight: 600; color: var(--kc-primary, #2d8c8c); } .ai-advisor-drawer__close { width: 32px; height: 32px; border: none; border-radius: 4px; background: transparent; color: var(--kc-secondary, #6a75b8); font-size: 1.4rem; line-height: 1; cursor: pointer; } .ai-advisor-drawer__close:hover { background: rgba(45, 140, 140, 0.08); color: var(--kc-primary, #2d8c8c); } .ai-advisor-drawer__body { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; align-items: center; padding: 24px 18px; } .ai-advisor-drawer__loading { flex: 1; display: flex; align-items: center; justify-content: center; width: 100%; } .ai-advisor-drawer__name { font-size: 1.05rem; font-weight: 600; color: var(--kc-primary, #2d8c8c); margin-bottom: 16px; text-align: center; } .ai-advisor-drawer__qr-wrap { width: 168px; height: 168px; border: 2px dashed rgba(45, 140, 140, 0.14); border-radius: 12px; background: var(--color-fill-2); display: flex; align-items: center; justify-content: center; padding: 8px; margin-bottom: 16px; } .ai-advisor-drawer__qr { width: 128px; height: 128px; object-fit: contain; border-radius: 8px; } .ai-advisor-drawer__qr-placeholder { font-size: 0.78rem; color: var(--kc-secondary, #6a75b8); text-align: center; padding: 0 8px; } .ai-advisor-drawer__wechat { display: flex; flex-direction: column; align-items: center; gap: 8px; } .ai-advisor-drawer__label { font-size: 0.75rem; color: var(--kc-secondary, #6a75b8); } .ai-advisor-drawer__value { font-size: 0.95rem; font-weight: 600; color: var(--kc-primary, #2d8c8c); word-break: break-all; text-align: center; } .ai-advisor-drawer__copy { height: 32px; padding: 0 14px; border: 1px solid rgba(45, 140, 140, 0.18); border-radius: 4px; background: var(--app-card-bg); color: var(--app-primary-color, #2d8c8c); font-size: 0.78rem; font-weight: 600; cursor: pointer; } .ai-advisor-drawer__copy:hover { border-color: var(--app-primary-color, #2d8c8c); background: rgba(45, 140, 140, 0.06); } .ai-advisor-drawer__empty { font-size: 0.88rem; color: var(--kc-secondary, #6a75b8); } /* —— Nana avatar (FAB visual + chat sizes) —— */ .nana-fab-wrap { position: relative; display: block; flex-shrink: 0; width: 64px; height: 64px; } .nana-fab-wrap--sm { width: 32px; height: 32px; } .nana-fab-wrap--md { width: 64px; height: 64px; } .nana-fab-wrap--lg { width: 72px; height: 72px; } .nana-fab-wrap--sm .nana-fab__pulse { inset: 1px; border-width: 1px; } .nana-fab-wrap--sm .nana-fab__img { filter: drop-shadow(0 2px 6px rgba(45, 140, 140, 0.22)); } .nana-fab__img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 6px 16px rgba(45, 140, 140, 0.28)); pointer-events: none; transition: transform 0.2s ease; } .nana-fab__pulse { position: absolute; inset: 4px; border-radius: 50%; border: 2px solid var(--app-primary-color, #2d8c8c); opacity: 0; animation: nana-pulse 2.4s ease-out infinite; pointer-events: none; } @keyframes nana-pulse { 0% { transform: scale(0.9); opacity: 0.55; } 70% { transform: scale(1.25); opacity: 0; } 100% { transform: scale(1.25); opacity: 0; } } /* —— Draggable FAB host —— */ .nana-fab-host { position: fixed; z-index: 9998; cursor: grab; touch-action: none; user-select: none; } .nana-fab-host.is-dragging { cursor: grabbing; } .nana-fab-host:hover:not(.is-dragging) .nana-fab__img { transform: scale(1.06); }