*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg-primary:#f5f0e8;--bg-glass:rgba(255,255,255,0.55);--bg-glass-strong:rgba(255,255,255,0.75);--bg-glass-hover:rgba(255,255,255,0.7);--text-primary:#1a1a1a;--text-secondary:#5a5a5a;--text-muted:#8a8a8a;--accent:#d97706;--accent-light:#fbbf24;--accent-warm:#c2410c;--border-glass:rgba(255,255,255,0.4);--border-subtle:rgba(0,0,0,0.06);--shadow-sm:0 1px 3px rgba(0,0,0,0.04),0 1px 2px rgba(0,0,0,0.03);--shadow-md:0 4px 12px rgba(0,0,0,0.06),0 2px 4px rgba(0,0,0,0.04);--shadow-lg:0 12px 40px rgba(0,0,0,0.08),0 4px 12px rgba(0,0,0,0.04);--shadow-glow:0 0 30px rgba(217,119,6,0.08);--radius-sm:10px;--radius-md:16px;--radius-lg:22px;--radius-xl:28px;--glass-blur:20px;--glass-blur-heavy:40px}
[data-theme="dark"]{--bg-primary:#1a1814;--bg-glass:rgba(30,27,22,0.65);--bg-glass-strong:rgba(35,32,27,0.8);--bg-glass-hover:rgba(38,34,28,0.72);--text-primary:#f0ebe3;--text-secondary:#b5ada0;--text-muted:#7a7268;--border-glass:rgba(255,255,255,0.07);--border-subtle:rgba(255,255,255,0.05);--shadow-sm:0 1px 3px rgba(0,0,0,0.2);--shadow-md:0 4px 12px rgba(0,0,0,0.3);--shadow-lg:0 12px 40px rgba(0,0,0,0.4)}
html,body{height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Microsoft YaHei','Helvetica Neue',sans-serif;color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;transition:background 0.5s ease,color 0.3s ease}
#root{height:100%;position:relative}
.app-container{height:100%;display:flex;flex-direction:column;position:relative;overflow:hidden}
.wallpaper-layer{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center;background-repeat:no-repeat;transition:transform .6s cubic-bezier(.25,1,.5,1),filter .6s cubic-bezier(.25,1,.5,1),opacity .6s ease;transform-origin:center center}
.wallpaper-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(245,240,232,0.15) 0%,rgba(245,240,232,0.25) 50%,rgba(245,240,232,0.45) 100%);transition:background .5s ease,filter .6s cubic-bezier(.25,1,.5,1),opacity .5s cubic-bezier(.25,1,.5,1)}
[data-theme="dark"] .wallpaper-overlay{background:linear-gradient(180deg,rgba(26,24,20,0.3) 0%,rgba(26,24,20,0.45) 50%,rgba(26,24,20,0.65) 100%)}
[data-theme="dark"].app-container.search-focused:not(.ai-active):not(.map-active) .wallpaper-layer{filter:blur(14px) brightness(.6)}
.content-layer{position:relative;z-index:2;display:flex;flex-direction:column;height:100%;padding:24px 36px}
.top-bar{display:flex;justify-content:flex-end;align-items:center;gap:10px;flex-shrink:0}
.icon-btn{width:42px;height:42px;border-radius:14px;border:1px solid rgba(255,255,255,0.2);background:rgba(255,255,255,0.08);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.25s cubic-bezier(.4,0,.2,1);color:var(--text-primary);position:relative;box-shadow:0 0 0 1px rgba(255,255,255,0.3),0 4px 16px rgba(0,0,0,0.06)}
.icon-btn:hover{background:rgba(255,255,255,0.16);transform:translateY(-1px);box-shadow:0 0 0 1px rgba(255,255,255,0.5),0 6px 20px rgba(0,0,0,0.1);color:var(--text-primary)}
.icon-btn:active{transform:scale(0.96)}
[data-theme="dark"] .icon-btn{background:rgba(255,255,255,0.04);border-color:rgba(255,255,255,0.06);box-shadow:0 0 0 1px rgba(255,255,255,0.06),0 4px 16px rgba(0,0,0,0.2)}
[data-theme="dark"] .icon-btn:hover{background:rgba(255,255,255,0.08);box-shadow:0 0 0 1px rgba(255,255,255,0.12),0 6px 20px rgba(0,0,0,0.3)}
.icon-btn svg{width:19px;height:19px;stroke-width:1.8}
.user-avatar-btn{width:42px;height:42px;border-radius:50%;border:2px solid var(--border-glass);background:var(--bg-glass);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.2s cubic-bezier(.4,0,.2,1);font-weight:600;font-size:15px;color:var(--accent);overflow:hidden}
.user-avatar-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);border-color:var(--accent-light)}
.main-area{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:28px;padding-bottom:20px;transition:all .55s cubic-bezier(.4,0,.2,1),padding .5s cubic-bezier(.4,0,.2,1),height .5s cubic-bezier(.4,0,.2,1)}
.greeting{position:absolute;top:calc(66px + 6vh);left:50%;transform:translate(-50%,0);text-align:center;transition:all .7s cubic-bezier(.4,0,.2,1);z-index:3;animation:greetingIn .7s ease both;transform-origin:top left}
@keyframes greetingIn{from{opacity:0}to{opacity:1}}
.greeting-time{font-family:'Noto Serif SC',Georgia,'Times New Roman',serif;font-size:clamp(56px,7vw,80px);font-weight:900;color:var(--text-primary);letter-spacing:3px;line-height:1;margin-bottom:0;font-variant-numeric:tabular-nums;transition:color .3s ease}
.search-wrapper{width:100%;max-width:620px;transition:max-width .5s cubic-bezier(.25,1,.5,1),transform .4s cubic-bezier(.25,1,.5,1);animation:fadeInUp 0.7s 0.1s ease both}
.search-bar{display:flex;align-items:center;gap:14px;padding:16px 22px;border-radius:var(--radius-xl);background:rgba(255,255,255,0.55);backdrop-filter:blur(100px) saturate(1.8) brightness(1.1);-webkit-backdrop-filter:blur(100px) saturate(1.8) brightness(1.1);box-shadow:0 8px 32px rgba(0,0,0,0.08),0 2px 8px rgba(0,0,0,0.05),inset 0 1px 0 rgba(255,255,255,0.35);transition:all 0.35s cubic-bezier(0.4,0,0.2,1);overflow:hidden}
[data-theme="dark"] .search-bar{background:rgba(30,27,22,0.65);box-shadow:0 8px 32px rgba(0,0,0,0.4),0 2px 8px rgba(0,0,0,0.3),inset 0 1px 0 rgba(255,255,255,0.08)}
.search-bar:focus-within{box-shadow:0 8px 40px rgba(217,119,6,0.08),0 2px 12px rgba(0,0,0,0.06),inset 0 1px 0 rgba(255,255,255,0.4)}

/* ---- 搜索框聚焦动效（仅搜索模式） ---- */
.app-container.search-focused:not(.ai-active):not(.map-active) .wallpaper-layer{transform:scale(1.08);filter:blur(12px) brightness(.95)}
.app-container.search-focused:not(.ai-active):not(.map-active) .wallpaper-overlay{filter:blur(2px)}
.app-container.search-focused:not(.ai-active):not(.map-active) .search-wrapper{max-width:700px;transition:max-width .5s cubic-bezier(.25,1,.5,1)}

/* ---- AI/地图面板打开 → 底层壁纸高斯模糊 + 遮罩淡化 ---- */
.app-container.ai-active .wallpaper-layer,.app-container.map-active .wallpaper-layer{transform:scale(1.05);filter:blur(18px) brightness(.78);transition:transform .55s cubic-bezier(.25,1,.5,1),filter .55s cubic-bezier(.25,1,.5,1)}
.app-container.ai-active .wallpaper-overlay,.app-container.map-active .wallpaper-overlay{opacity:.35;transition:opacity .5s cubic-bezier(.25,1,.5,1)}
[data-theme="dark"].app-container.ai-active .wallpaper-layer,[data-theme="dark"].app-container.map-active .wallpaper-layer{filter:blur(18px) brightness(.38)}
[data-theme="dark"].app-container.ai-active .wallpaper-overlay,[data-theme="dark"].app-container.map-active .wallpaper-overlay{opacity:.45}
.search-icon{color:var(--text-muted);flex-shrink:0;display:flex}
.search-icon svg{width:20px;height:20px;stroke-width:2}
.search-input{flex:1;border:none;outline:none;background:transparent;font-family:inherit;font-size:16px;color:var(--text-primary);line-height:1.4}
.search-input::placeholder{color:var(--text-muted)}
.search-engine-badge{font-size:11px;color:var(--text-muted);padding:4px 10px;height:26px;line-height:1;border-radius:10px;border:1px solid var(--border-glass);background:var(--bg-glass);backdrop-filter:blur(10px);white-space:nowrap;user-select:none;display:flex;align-items:center}

/* ---- Map toggle button (search mode) ---- */
.map-toggle-btn{width:28px;height:26px;border-radius:10px;border:1px solid var(--border-glass);background:var(--bg-glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);color:var(--text-muted);flex-shrink:0}
.map-toggle-btn:hover{color:#f97316;background:rgba(249,115,22,.08);border-color:rgba(249,115,22,.2);transform:scale(1.05)}
.map-toggle-btn svg{width:15px;height:15px}

/* ---- Route Planning Panel — fused below search bar ---- */
.route-panel{display:flex;flex-direction:column;gap:12px;padding:16px 20px;margin-top:12px;border-radius:var(--radius-xl);background:rgba(255,255,255,.45);animation:routeSlideIn .4s cubic-bezier(.25,1,.5,1) both;max-height:55vh;overflow:hidden}
[data-theme="dark"] .route-panel{background:rgba(28,26,21,.55)}
@keyframes routeSlideIn{from{opacity:0;transform:translateY(-8px);max-height:0}to{opacity:1;transform:translateY(0);max-height:100vh}}
.route-panel-closing{animation:routeSlideOut .36s cubic-bezier(.4,0,.2,1) both!important}
@keyframes routeSlideOut{from{opacity:1;transform:translateY(0);max-height:100vh}to{opacity:0;transform:translateY(-10px);max-height:0}}
.route-error-msg{font-size:12px;color:#dc2626;background:rgba(220,38,38,.06);border:1px solid rgba(220,38,38,.15);border-radius:10px;padding:8px 12px;flex-shrink:0}
[data-theme="dark"] .route-error-msg{background:rgba(220,38,38,.08);color:#f87171}
.route-inputs{display:flex;gap:8px;align-items:center;flex-shrink:0}
.route-field{flex:1;display:flex;align-items:center;gap:8px;padding:8px 14px;height:42px;box-sizing:border-box;border-radius:12px;border:1px solid var(--border-subtle);background:rgba(255,255,255,.35);transition:background .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1)}
.route-field:focus-within{border-color:rgba(249,115,22,.3);box-shadow:0 0 0 3px rgba(249,115,22,.08);background:rgba(255,255,255,.45)}
[data-theme="dark"] .route-field{background:rgba(20,18,15,.6)}
[data-theme="dark"] .route-field:focus-within{background:rgba(20,18,15,.8);border-color:rgba(249,115,22,.35)}
.route-field svg{width:15px;height:15px;color:var(--accent);flex-shrink:0}
.route-field input{flex:1;border:none;outline:none;background:transparent;font-size:13.5px;color:var(--text-primary);font-family:inherit;line-height:1.4}
.route-field input::placeholder{color:var(--text-muted)}
.route-swap-btn{width:36px;height:36px;border-radius:50%;border:1px solid var(--border-glass);background:var(--bg-glass-strong);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);color:var(--text-secondary);flex-shrink:0}
.route-swap-btn:hover{color:var(--accent);background:rgba(217,119,06,.12);border-color:rgba(217,119,6,.3);transform:rotate(180deg)}
.route-swap-btn svg{width:14px;height:14px}
.route-actions{display:flex;gap:6px;flex-shrink:0}
.route-mode-btn{flex:1;padding:0;font-size:12px;font-weight:500;font-family:inherit;border:1px solid var(--border-glass);border-radius:10px;background:var(--bg-glass);color:var(--text-secondary);cursor:pointer;transition:background .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1),color .25s cubic-bezier(.4,0,.2,1);text-align:center;height:36px;line-height:36px;box-sizing:border-box}
.route-mode-btn:hover:not(:disabled){background:rgba(249,115,22,.12);border-color:rgba(249,115,22,.3);color:var(--accent)}
.route-mode-btn.active{background:linear-gradient(135deg,#f97316,#ea580c);color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(249,115,22,.2);font-weight:600}
.route-mode-btn:disabled{opacity:.35;cursor:not-allowed;filter:grayscale(.4)}
.route-tabs{display:flex;gap:0;margin-bottom:2px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}
.route-tab{flex:1;padding:8px 0;font-size:12.5px;font-weight:500;font-family:inherit;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1)}
.route-tab:hover{color:var(--text-secondary)}
.route-tab.active{color:var(--accent);border-bottom-color:var(--accent)}

.poi-search-row{display:flex;gap:8px;align-items:center;flex-shrink:0}
.poi-input{flex:1}

/* ---- POI suggestions dropdown ---- */
.poi-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:999;background:rgba(255,255,255,.92);backdrop-filter:blur(56px) saturate(1.4) brightness(1.02);-webkit-backdrop-filter:blur(56px) saturate(1.4) brightness(1.02);border-radius:14px;border:1px solid var(--border-glass);box-shadow:var(--shadow-lg);overflow:hidden;animation:suggestIn .25s cubic-bezier(.25,1,.5,1) both}
[data-theme="dark"] .poi-suggestions{background:rgba(28,26,21,.95)}
.poi-search-row .poi-suggestions{right:80px}
.route-origin-suggest{top:100%;left:0;width:calc(33.33% - 6px);margin-top:4px}
.route-dest-suggest{top:100%;right:0;left:auto;width:calc(33.33% - 6px);margin-top:4px}
@keyframes suggestIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.poi-suggestion-item{display:flex;justify-content:space-between;align-items:center;padding:9px 14px;cursor:pointer;transition:background .15s cubic-bezier(.4,0,.2,1)}
.poi-suggestion-item:hover{background:rgba(249,115,22,.08)}
.poi-suggestion-name{font-size:13px;color:var(--text-primary);font-weight:500}
.poi-suggestion-district{font-size:11px;color:var(--text-muted);margin-left:12px;white-space:nowrap}

/* ---- Route map preview (AMap interactive) ---- */
.route-map-preview{border-radius:var(--radius-md);margin-bottom:4px;flex-shrink:0;height:200px;border:1px solid var(--border-subtle)}
.route-map-preview .amap-logo,.route-map-preview .amap-copyright{display:none!important}

/* ---- Map mode: search shifts up (mirrors AI mode layout) ---- */
.main-area.map-mode{padding-top:4vh;gap:10px;height:calc(100vh - 8vh);overflow:hidden}
.search-wrapper.map-mode{max-width:840px;transition:max-width .5s cubic-bezier(.25,1,.5,1),flex .45s cubic-bezier(.25,1,.5,1);flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.route-panel.map-fs{max-height:none;flex:1;min-height:0;overflow:hidden;transition:max-height .55s cubic-bezier(.25,1,.5,1),border-radius .48s cubic-bezier(.4,0,.2,1),opacity .35s ease}

/* ---- Results area (scrollable) ---- */
.route-results{display:flex;flex-direction:column;gap:6px;margin-top:4px;padding-top:10px;border-top:1px solid var(--border-subtle);flex:1;min-height:0;overflow-y:auto}
.route-results::-webkit-scrollbar{width:4px}
.route-results::-webkit-scrollbar-thumb{background:var(--border-glass);border-radius:2px}
.route-results::-webkit-scrollbar-track{background:transparent}
.route-result-title{font-size:12px;font-weight:600;color:var(--accent);flex-shrink:0}
.route-result-error{font-size:12px;color:#ef4444;padding:8px 0}
.route-step{display:flex;align-items:flex-start;gap:8px;font-size:11.5px;color:var(--text-secondary);line-height:1.5}
.route-step-icon{color:var(--accent);font-weight:700;flex-shrink:0;margin-top:1px}
.route-poi-item{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-radius:10px;text-decoration:none;color:var(--text-primary);background:transparent;box-sizing:border-box;transition:background .15s cubic-bezier(.4,0,.2,1)}
.route-poi-item:hover{background:rgba(249,115,22,.07)}
[data-theme="dark"] .route-poi-item:hover{background:rgba(249,115,22,.08)}
.route-poi-name{font-size:13px;font-weight:500;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.route-poi-addr{font-size:11px;color:var(--text-muted);max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.route-more-link{font-size:11.5px;color:var(--accent);text-decoration:none;padding:6px 0;text-align:center;letter-spacing:.3px;transition:opacity .2s;flex-shrink:0}
.route-more-link:hover{opacity:.7}
/* ---- Deep link buttons (网页版 & APP) ---- */
.route-deeplinks{display:flex;gap:8px;flex-shrink:0}
.route-deeplink-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 12px;border-radius:12px;border:1px solid var(--border-subtle);background:var(--bg-glass);color:var(--text-secondary);font-size:12px;font-weight:500;text-decoration:none;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.route-deeplink-btn:hover{background:rgba(249,115,22,.08);border-color:rgba(249,115,22,.2);color:var(--accent);transform:translateY(-1px)}
.route-deeplink-btn svg{flex-shrink:0}
.route-deeplink-app{background:linear-gradient(135deg,rgba(34,197,94,.08),rgba(16,185,129,.04));border-color:rgba(34,197,94,.15)}
.route-deeplink-app:hover{background:linear-gradient(135deg,rgba(34,197,94,.14),rgba(16,185,129,.08));border-color:rgba(34,197,94,.3);color:#16a34a}
.shortcuts-dock-wrapper{flex-shrink:0;animation:slideUp 0.5s 0.3s ease both;transition:opacity .4s cubic-bezier(.4,0,.2,1),transform .45s cubic-bezier(.4,0,.2,1),max-height .5s cubic-bezier(.4,0,.2,1)}
.shortcuts-dock-wrapper.dock-hidden{opacity:0;transform:translateY(12px) scale(.96);max-height:0;overflow:hidden;pointer-events:none}
.dock-toggle{display:flex;align-items:center;justify-content:center;gap:8px;margin:0 auto 14px;padding:6px 18px;border-radius:20px;border:1px solid var(--border-glass);background:var(--bg-glass);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));cursor:pointer;color:var(--text-muted);font-size:13px;font-weight:500;transition:all 0.25s ease;font-family:inherit}
.dock-toggle:hover{color:var(--text-secondary);background:var(--bg-glass-hover)}
.dock-toggle svg{width:14px;height:14px;transition:transform 0.3s ease}
.dock-toggle.collapsed svg{transform:rotate(180deg)}
.shortcuts-dock{max-height:200px;overflow:hidden;transition:max-height 0.4s cubic-bezier(.4,0,.2,1),opacity 0.3s ease;opacity:1}
.shortcuts-dock.hidden{max-height:0;opacity:0;margin-bottom:0}
.shortcuts-container{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;padding:18px 20px;border-radius:var(--radius-lg);border:1px solid var(--border-glass);background:var(--bg-glass);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--shadow-md);margin-bottom:10px}
.shortcut-item{display:flex;flex-direction:column;align-items:center;gap:7px;width:80px;padding:12px 6px 10px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;cursor:pointer;transition:all 0.2s ease;position:relative;text-decoration:none}
.shortcut-item:hover{background:var(--bg-glass-hover);border-color:var(--border-subtle);transform:translateY(-3px)}
.shortcut-icon-wrap{width:46px;height:46px;border-radius:13px;background:var(--bg-glass-strong);border:1px solid var(--border-glass);display:flex;align-items:center;justify-content:center;overflow:hidden;transition:all 0.2s ease;box-shadow:var(--shadow-sm)}
.shortcut-item:hover .shortcut-icon-wrap{box-shadow:var(--shadow-md);transform:scale(1.05)}
.shortcut-icon-wrap img{width:26px;height:26px;object-fit:contain}
.shortcut-icon-fallback{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--accent-light),var(--accent));display:flex;align-items:center;justify-content:center;color:white;font-weight:700;font-size:14px}
.shortcut-name{font-size:12px;font-weight:500;color:var(--text-secondary);text-align:center;line-height:1.3;max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shortcut-delete{position:absolute;top:-5px;right:-5px;width:20px;height:20px;border-radius:50%;background:#ef4444;color:white;border:2px solid white;display:none;align-items:center;justify-content:center;cursor:pointer;font-size:11px;font-weight:700;line-height:1;z-index:5;transition:transform 0.15s ease}
.shortcut-delete svg{width:10px;height:10px}
.shortcut-item:hover .shortcut-delete{display:flex}
.shortcut-delete:hover{transform:scale(1.15)}
.add-shortcut-btn{display:flex;flex-direction:column;align-items:center;gap:7px;width:80px;padding:12px 6px 10px;border-radius:var(--radius-md);border:1.5px dashed var(--border-glass);background:transparent;cursor:pointer;transition:all 0.2s ease;color:var(--text-muted)}
.add-shortcut-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(217,119,6,0.04)}
.add-shortcut-icon{width:46px;height:46px;border-radius:13px;border:2px dashed currentColor;display:flex;align-items:center;justify-content:center;transition:all 0.2s ease}
.add-shortcut-icon svg{width:20px;height:20px;stroke-width:2}
.add-shortcut-btn:hover .add-shortcut-icon{border-color:var(--accent);transform:rotate(90deg)}
.add-shortcut-label{font-size:12px;font-weight:500}
.modal-overlay{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,0.3);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn 0.2s ease}
.modal-card{width:100%;max-width:480px;border-radius:var(--radius-lg);border:1px solid var(--border-glass);background:var(--bg-glass-strong);backdrop-filter:blur(var(--glass-blur-heavy));-webkit-backdrop-filter:blur(var(--glass-blur-heavy));box-shadow:var(--shadow-lg);animation:modalIn 0.3s ease;overflow:hidden}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:22px 24px 0}
.modal-title{font-size:20px;font-weight:700;letter-spacing:-0.3px}
.modal-close{width:34px;height:34px;border-radius:10px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.15s;font-size:20px}
.modal-close:hover{background:rgba(0,0,0,0.06);color:var(--text-primary)}
.modal-body{padding:20px 24px 24px}
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:7px}
.form-input{width:100%;padding:12px 16px;border-radius:var(--radius-sm);border:1px solid var(--border-glass);background:var(--bg-glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-family:inherit;font-size:14px;color:var(--text-primary);outline:none;transition:all 0.2s ease}
.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(217,119,6,0.1)}
.form-input::placeholder{color:var(--text-muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 24px;border-radius:var(--radius-sm);border:none;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:all 0.2s ease}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-warm));color:white;box-shadow:0 2px 10px rgba(217,119,6,0.25)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 18px rgba(217,119,6,0.35)}
.btn-secondary{background:var(--bg-glass);color:var(--text-secondary);border:1px solid var(--border-glass)}
.btn-secondary:hover{background:var(--bg-glass-hover);color:var(--text-primary)}
.btn-ghost{background:transparent;color:var(--text-muted);padding:8px 14px;font-size:13px}
.btn-ghost:hover{color:var(--accent)}
.settings-panel{position:fixed;top:74px;right:36px;z-index:50;width:360px;border-radius:var(--radius-lg);border:2px solid rgba(255,255,255,0.55);background:rgba(255,255,255,0.12);backdrop-filter:url(#frosted) blur(32px) saturate(1.6);-webkit-backdrop-filter:url(#frosted) blur(32px) saturate(1.6);box-shadow:0 0 0 1px rgba(255,255,255,0.7),inset 0 1px 0 rgba(255,255,255,0.3),0 16px 48px rgba(0,0,0,0.12),0 4px 16px rgba(0,0,0,0.08);animation:settingsBounceIn .45s cubic-bezier(0.16, 1, 0.3, 1) both;transform-origin:top right;overflow:hidden;max-height:calc(100vh - 100px);overflow-y:auto}
.settings-panel.closing{animation:settingsBounceOut .32s cubic-bezier(0.55, 0, 0.8, 0.25) both!important;transform-origin:top right}
[data-theme="dark"] .settings-panel{background:rgba(20,18,14,0.2);border-color:rgba(255,255,255,0.12);box-shadow:0 0 0 1px rgba(255,255,255,0.15),inset 0 1px 0 rgba(255,255,255,0.08),0 16px 48px rgba(0,0,0,0.4)}
@keyframes settingsBounceIn{0%{opacity:0;transform:scale(0)}100%{opacity:1;transform:scale(1)}}
@keyframes settingsBounceOut{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0)}}
.settings-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--border-subtle)}
.settings-title{font-size:16px;font-weight:700}
.settings-body{padding:16px 20px 20px}
.setting-section{margin-bottom:20px}
.setting-section:last-child{margin-bottom:0}
.setting-label{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:10px;display:block}
.wallpaper-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.wallpaper-option{aspect-ratio:1;border-radius:var(--radius-sm);border:2px solid transparent;cursor:pointer;overflow:hidden;transition:all 0.2s ease;position:relative}
.wallpaper-option:hover{transform:scale(1.05)}
.wallpaper-option.active{border-color:var(--accent);box-shadow:0 0 0 2px rgba(217,119,6,0.2)}
.wallpaper-option.active::after{content:'';position:absolute;inset:0;background:rgba(217,119,6,0.15)}
.bing-wallpaper-option{background:linear-gradient(135deg,#1a73e8,#4285f4);display:flex;align-items:center;justify-content:center;color:#fff;font-size:10px}
.custom-url-input{width:100%;padding:9px 13px;border-radius:8px;border:1px solid var(--border-glass);background:var(--bg-glass);font-family:inherit;font-size:13px;color:var(--text-primary);outline:none;margin-bottom:8px}
.custom-url-input:focus{border-color:var(--accent)}
.engine-options{display:flex;gap:8px;flex-wrap:wrap}
.engine-option{flex:1;min-width:80px;padding:10px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border-glass);background:var(--bg-glass);cursor:pointer;text-align:center;font-family:inherit;font-size:13px;font-weight:600;color:var(--text-secondary);transition:all 0.2s ease}
.engine-option:hover{border-color:var(--accent)}
.engine-option.active{border-color:var(--accent);color:var(--accent);background:rgba(217,119,6,0.06)}
.auth-tabs{display:flex;gap:4px;padding:3px;background:var(--bg-glass);border-radius:10px;margin-bottom:20px}
.auth-tab{flex:1;padding:9px;border:none;border-radius:8px;background:transparent;font-family:inherit;font-size:14px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all 0.2s ease}
.auth-tab.active{background:white;color:var(--text-primary);box-shadow:var(--shadow-sm)}
[data-theme="dark"] .auth-tab.active{background:rgba(255,255,255,0.1)}
.auth-tab:not(.active):hover{color:var(--text-secondary)}
.auth-footer{text-align:center;font-size:13px;color:var(--text-muted);margin-top:16px}
.auth-footer button{background:none;border:none;color:var(--accent);font-family:inherit;font-weight:600;cursor:pointer;font-size:13px;padding:0}
.auth-footer button:hover{text-decoration:underline}
.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(60px);padding:12px 24px;border-radius:var(--radius-sm);background:var(--text-primary);color:var(--bg-primary);font-size:14px;font-weight:500;z-index:200;box-shadow:var(--shadow-lg);opacity:0;transition:all 0.35s cubic-bezier(.4,0,.2,1);pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.loading-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border-glass);border-top-color:var(--accent);border-radius:50%;animation:spin 0.8s linear infinite}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}

/* ---- Settings icon buttons ---- */
.settings-icon-grid{display:flex;gap:6px;margin-bottom:12px}
.settings-icon-group{flex:1;display:flex;flex-direction:column;gap:4px}
.settings-icon-label{font-size:9px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;margin-bottom:2px}
.settings-icon-btn{flex:1;aspect-ratio:1;border-radius:12px;border:1.5px solid rgba(255,255,255,0.2);background:rgba(255,255,255,0.06);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all 0.25s cubic-bezier(.4,0,.2,1);color:var(--text-muted);gap:2px;padding:4px;position:relative;overflow:hidden}
.settings-icon-btn:hover{background:rgba(255,255,255,0.14);border-color:rgba(255,255,255,0.35);transform:translateY(-1px);color:var(--text-primary)}
.settings-icon-btn:active{transform:scale(0.94)}
.settings-icon-btn.active{background:rgba(217,119,6,0.1);border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px rgba(217,119,6,0.1)}
.settings-icon-btn img{width:22px;height:22px;object-fit:contain;opacity:.7;filter:grayscale(.2)}
.settings-icon-btn.active img{opacity:1;filter:none}
.settings-icon-btn svg{width:22px;height:22px;opacity:.7}
.settings-icon-btn.active svg{opacity:1}
.settings-icon-btn .icon-label{font-size:9px;font-weight:500;line-height:1;opacity:.6}
.settings-icon-btn.active .icon-label{opacity:1}
@keyframes modalIn{from{opacity:0;transform:scale(0.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes spin{to{transform:rotate(360deg)}}
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-glass);border-radius:3px}
@media(max-width:600px){.content-layer{padding:16px 16px}.settings-panel{right:8px;width:calc(100vw - 16px)}.shortcuts-container{gap:8px;padding:12px 10px}.shortcut-item{width:68px;padding:8px 4px}.search-wrapper{max-width:100%}}
@media(min-width:601px) and (max-width:1024px){.content-layer{padding:20px 24px}}

/* ============================================================
   AI CONSOLE — Claude-style fused glass console
   搜索栏与 AI 输入融合，强毛玻璃确保可读性
   ============================================================ */

/* ---- Search area shift up (normal mode) ---- */
.main-area{justify-content:flex-start;padding-top:22vh;transition:all .5s cubic-bezier(.4,0,.2,1)}

/* ---- Mode Toggle ---- */
.mode-toggle-btn{width:40px;height:40px;border-radius:16px;border:1px solid var(--border-glass);background:var(--bg-glass);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .4s cubic-bezier(.4,0,.2,1);color:var(--text-muted);flex-shrink:0}
.mode-toggle-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary);transform:scale(1.06)}
.mode-toggle-btn:active{transform:scale(.94)}
.mode-toggle-btn svg{width:18px;height:18px;stroke-width:1.8}
.mode-toggle-btn.ai{background:linear-gradient(135deg,rgba(217,119,6,.18),rgba(192,65,12,.10));border-color:rgba(217,119,6,.3);color:var(--accent);box-shadow:0 0 0 4px rgba(217,119,6,.06)}

/* ---- Search bar in AI mode (input fusion) ---- */
.search-bar{transition:all .5s cubic-bezier(.4,0,.2,1),border-radius .5s cubic-bezier(.4,0,.2,1)}
.search-bar.ai-mode{border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:rgba(255,255,255,0.38);backdrop-filter:blur(64px) saturate(1.6) brightness(1.06);-webkit-backdrop-filter:blur(64px) saturate(1.6) brightness(1.06);padding:16px 20px;box-shadow:0 -4px 32px rgba(0,0,0,0.04),inset 0 1px 0 rgba(255,255,255,0.25)}
[data-theme="dark"] .search-bar.ai-mode{background:rgba(30,27,22,0.62);box-shadow:0 -4px 32px rgba(0,0,0,0.3),inset 0 1px 0 rgba(255,255,255,0.06)}
.search-bar.ai-mode:focus-within{box-shadow:0 -2px 28px rgba(217,119,6,.05),inset 0 1px 0 rgba(255,255,255,0.5)}

/* ---- AI Console wrapper (search-wrapper in AI mode) ---- */
.search-wrapper{transition:all .5s cubic-bezier(.4,0,.2,1);width:100%;max-width:620px}
.ai-console{max-width:840px;transition:max-width .5s cubic-bezier(.4,0,.2,1),flex .45s cubic-bezier(.4,0,.2,1);animation:consoleEnter .5s cubic-bezier(.4,0,.2,1) both}
.ai-console .search-bar.ai-mode{border-bottom:none}

/* ---- AI Chat body (fused below search bar) ---- */
.ai-chat-body{display:flex;flex-direction:column;border-radius:0 0 var(--radius-xl) var(--radius-xl);border-top:none;background:rgba(255,255,255,0.32);backdrop-filter:blur(64px) saturate(1.6) brightness(1.06);-webkit-backdrop-filter:blur(64px) saturate(1.6) brightness(1.06);box-shadow:0 8px 40px rgba(0,0,0,0.06),inset 0 1px 0 rgba(255,255,255,0.25),0 0 80px rgba(255,255,255,0.05);overflow:hidden;transition:max-height .5s cubic-bezier(.4,0,.2,1),border-radius .45s cubic-bezier(.4,0,.2,1),max-width .45s cubic-bezier(.4,0,.2,1),background .5s ease;animation:bodyExpand .5s cubic-bezier(.4,0,.2,1) both;max-height:65vh}
[data-theme="dark"] .ai-chat-body{background:rgba(30,27,22,0.48);box-shadow:0 8px 40px rgba(0,0,0,0.28),inset 0 1px 0 rgba(255,255,255,0.06),0 0 60px rgba(0,0,0,0.18)}
.ai-chat-body .chat-header{border-top:1px solid var(--border-subtle)}

/* ---- Chat header (inside fused body) ---- */
.chat-header{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}
.chat-header-title{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--text-secondary);letter-spacing:.2px}
.chat-header-title svg{width:14px;height:14px;color:var(--accent);opacity:.8}
.chat-header-btn{width:28px;height:28px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--bg-glass);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);opacity:1}
.chat-header-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary);border-color:var(--border-glass);box-shadow:var(--shadow-sm)}
.chat-header-btn svg{width:13px;height:13px}
.websearch-btn{width:auto;padding:0 8px;gap:2px;font-size:10px;border:1px solid var(--border-subtle);border-radius:8px}
.websearch-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);opacity:1}
.websearch-btn.active:hover{background:var(--accent);color:#fff}

/* ---- Chat messages ---- */
.chat-messages{flex:1;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:12px;min-height:0;min-height:120px}
.chat-messages::-webkit-scrollbar{width:4px}
.chat-messages::-webkit-scrollbar-thumb{background:var(--border-glass);border-radius:2px}
.chat-msg{display:flex;animation:msgSlideIn .3s cubic-bezier(.4,0,.2,1) both}
.chat-msg.user{justify-content:flex-end}
.chat-msg.ai{justify-content:flex-start}
.chat-msg-bubble{max-width:78%;padding:10px 15px;border-radius:16px;font-size:13.5px;line-height:1.7;word-break:break-word;white-space:pre-wrap}
.chat-msg.user .chat-msg-bubble{background:linear-gradient(135deg,var(--accent),var(--accent-warm));color:#fff;border-bottom-right-radius:5px;box-shadow:0 2px 8px rgba(217,119,6,.15)}
.chat-msg.ai .chat-msg-bubble{background:var(--bg-glass);color:var(--text-primary);border:1px solid var(--border-subtle);border-bottom-left-radius:5px}
.chat-cursor{display:inline-block;width:7px;height:15px;background:var(--accent);border-radius:2px;vertical-align:text-bottom;margin-left:2px;animation:cursorBlink .7s step-end infinite}

/* ---- Markdown rendered content ---- */
.md-content p{margin:0 0 .35em;line-height:1.55;font-size:13px}
.md-content p:last-child{margin-bottom:0}
.md-content h2,.md-content h3,.md-content h4,.md-content h5{margin:.5em 0 .2em;font-weight:600;line-height:1.3;color:var(--text-primary)}
.md-content h2{font-size:1.05em;border-bottom:1px solid var(--border-subtle);padding-bottom:.2em}
.md-content h3{font-size:1em}
.md-content h4{font-size:.95em}
.md-content h5{font-size:.9em}
.md-content ul,.md-content ol{margin:.2em 0;padding-left:1.3em}
.md-content li{margin:.05em 0;line-height:1.5;font-size:13px}
.md-content code{font-family:'SF Mono','Fira Code','Cascadia Code',Consolas,monospace;font-size:.82em;background:var(--bg-glass);padding:1px 4px;border-radius:3px;border:1px solid var(--border-subtle)}
.md-content pre{background:rgba(0,0,0,0.04);border:1px solid var(--border-subtle);border-radius:8px;padding:8px 12px;margin:.35em 0;overflow-x:auto;font-size:.8em;line-height:1.5}
[data-theme="dark"] .md-content pre{background:rgba(0,0,0,0.2)}
.md-content pre code{background:none;border:none;padding:0;font-size:inherit}
.md-content a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(217,119,6,.2)}
.md-content a:hover{border-bottom-color:var(--accent)}
.md-content strong{font-weight:600;color:var(--text-primary)}
.md-content em{font-style:italic;color:var(--text-secondary)}
.md-content hr{border:none;border-top:1px solid var(--border-subtle);margin:.5em 0}
.md-content blockquote{border-left:3px solid var(--accent);margin:.3em 0;padding:.2em .7em;color:var(--text-secondary);background:rgba(217,119,6,.03);border-radius:0 6px 6px 0}
.md-content table{width:100%;border-collapse:collapse;margin:.5em 0;font-size:.88em}
.md-content th,.md-content td{border:1px solid var(--border-subtle);padding:6px 10px;text-align:left}
.md-content th{background:rgba(217,119,6,.06);font-weight:600;color:var(--text-primary)}
.md-content td{color:var(--text-secondary)}
[data-theme="dark"] .md-content th{background:rgba(217,119,6,.08)}
[data-theme="dark"] .md-content td{color:#c0b8a8}

/* ---- Empty state ---- */
.chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 20px;animation:fadeIn .5s ease}
.chat-empty-icon{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,rgba(217,119,6,.08),rgba(192,65,12,.04));display:flex;align-items:center;justify-content:center}
.chat-empty-icon svg{width:22px;height:22px;color:var(--accent);opacity:.6}
.chat-empty-text{font-size:13px;color:var(--text-muted)}

/* ---- Send / Stop button (inline in search bar) ---- */
.search-bar .chat-send-btn{width:36px;height:36px;border-radius:50%;border:none;background:linear-gradient(135deg,var(--accent),var(--accent-warm));color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .25s cubic-bezier(.4,0,.2,1);flex-shrink:0}
.search-bar .chat-send-btn:hover{transform:scale(1.1);box-shadow:0 4px 16px rgba(217,119,6,.3)}
.search-bar .chat-send-btn:active{transform:scale(.93)}
.search-bar .chat-send-btn:disabled{opacity:.3;cursor:not-allowed;transform:none!important}
.search-bar .chat-send-btn svg{width:15px;height:15px}
.search-bar .chat-send-btn.stop{background:var(--bg-glass);border:1.5px solid rgba(239,68,68,.5);color:#ef4444}
.search-bar .chat-send-btn.stop:hover{background:rgba(239,68,68,.06);box-shadow:0 4px 16px rgba(239,68,68,.12)}
.search-bar .chat-send-btn.stop svg{width:11px;height:11px}

/* ---- AI mode: greeting glides to top-left ---- */
.main-area.ai-mode{padding-top:4vh;gap:10px}
.greeting.shrink{top:18px;left:32px;transform:scale(.42);transform-origin:top left;opacity:.7}

/* ---- AI 全屏展开 ---- */
.main-area.chat-fs{padding-top:1.8vh;gap:4px;padding-bottom:6px;min-height:0;flex:1 1 0}
.ai-console.chat-fs{max-width:94%;flex:1;display:flex;flex-direction:column;min-height:0;transition:max-width .55s cubic-bezier(.25,1,.5,1),flex .5s cubic-bezier(.25,1,.5,1),padding .5s ease}
.ai-chat-body.chat-fs{max-height:none;flex:1;min-height:0;overflow-y:auto;border-radius:0 0 var(--radius-xl) var(--radius-xl);transition:max-height .55s cubic-bezier(.25,1,.5,1),border-radius .48s cubic-bezier(.4,0,.2,1),opacity .35s ease}
.ai-chat-body.chat-fs::-webkit-scrollbar{width:5px}
.ai-chat-body.chat-fs::-webkit-scrollbar-thumb{background:rgba(217,119,6,.28);border-radius:10px}
.ai-chat-body.chat-fs::-webkit-scrollbar-track{background:transparent}
/* 全屏时隐藏问候语 */
.main-area.chat-fs .greeting{opacity:0;pointer-events:none;transform:scale(.3);transform-origin:top left;transition:opacity .35s ease,transform .4s cubic-bezier(.4,0,.2,1)}

/* ---- Compact settings (unchanged from previous) ---- */
.settings-compact{width:320px!important;font-size:12px}
.settings-compact .settings-header{padding:12px 16px}
.settings-compact .settings-title{font-size:14px}
.settings-compact .settings-body{padding:12px 16px 16px}
.settings-compact .setting-label{font-size:11px;margin-bottom:6px}
.settings-compact .setting-section{margin-bottom:12px}
.settings-user-row{display:flex;align-items:center;gap:10px;padding:8px 10px;margin-bottom:10px;border-radius:var(--radius-sm);background:var(--bg-glass);border:1px solid var(--border-subtle)}
.compact-grid{grid-template-columns:repeat(5,1fr)!important;gap:5px!important}
.compact-grid .wallpaper-option{border-radius:8px}

/* ---- Keyframes ---- */
@keyframes consoleEnter{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes bodyExpand{from{max-height:0;opacity:0}to{max-height:65vh;opacity:1}}
@keyframes msgSlideIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes cursorBlink{0%,100%{opacity:1}50%{opacity:0}}

/* ---- Responsive ---- */
@media(max-width:600px){
  .content-layer{padding:12px 12px!important}
  .main-area{padding-top:10vh}
  .main-area.ai-mode{padding-top:2vh}
  .main-area.map-mode{padding-top:2vh;height:calc(100vh - 4vh)}
  .main-area.chat-fs{padding-top:.5vh}
  .ai-console{max-width:100%!important}
  .ai-console.chat-fs{max-width:100%!important}
  .search-wrapper.map-mode{max-width:100%!important}
  .chat-msg-bubble{max-width:86%;font-size:12.5px}
  .ai-chat-body{max-height:54vh}
  .ai-chat-body.chat-fs{max-height:none}
  .settings-compact{width:calc(100vw-16px)!important;right:8px!important}
  .search-bar{padding:12px 14px}
  .greeting-text{font-size:clamp(24px,5vw,36px)}
  .greeting-time{font-size:clamp(40px,7vw,60px)}
  .greeting.shrink{top:10px;left:14px;transform:scale(.35)}
  .weather-detail{display:none}
}

/* ============================================================
   WEATHER WIDGET — top bar 实时天气
   ============================================================ */
.weather-widget{display:flex;align-items:center;gap:10px;height:42px;padding:0 14px;border-radius:14px;border:1px solid rgba(255,255,255,0.2);background:rgba(255,255,255,0.08);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);cursor:default;transition:all 0.25s cubic-bezier(.4,0,.2,1);color:var(--text-secondary);user-select:none;text-decoration:none;box-sizing:border-box;box-shadow:0 0 0 1px rgba(255,255,255,0.3),0 4px 16px rgba(0,0,0,0.06)}
.weather-widget:hover{background:rgba(255,255,255,0.16);box-shadow:0 0 0 1px rgba(255,255,255,0.5),0 6px 20px rgba(0,0,0,0.1);transform:translateY(-1px)}
.weather-icon-wrap{flex-shrink:0;width:22px;height:22px;display:flex;align-items:center;justify-content:center}
.weather-icon-wrap svg{width:22px;height:22px;stroke-width:1.6}
.weather-temp{font-size:15px;font-weight:700;color:var(--text-primary);letter-spacing:-0.3px;line-height:1;white-space:nowrap}
.weather-detail{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted);white-space:nowrap;line-height:1}
.weather-detail-sep{width:1px;height:10px;background:var(--border-glass);flex-shrink:0}
.weather-loading-spin{width:16px;height:16px;border:2px solid var(--border-glass);border-top-color:var(--accent);border-radius:50%;animation:spin 0.8s linear infinite;flex-shrink:0}
.weather-error-text{font-size:11px;color:var(--text-muted);cursor:pointer;white-space:nowrap}
.weather-error-text:hover{color:var(--accent)}
/* 液态玻璃文字可读性增强 */
.weather-widget{color:var(--text-primary);font-weight:500}
.weather-widget .weather-icon-wrap{opacity:.85}
.weather-widget .weather-temp{font-weight:800;text-shadow:0 1px 2px rgba(255,255,255,.3)}
.weather-widget .weather-detail{color:var(--text-primary);font-weight:500}
[data-theme="dark"] .weather-widget .weather-temp{text-shadow:0 1px 2px rgba(0,0,0,.3)}
.icon-btn svg{opacity:.85}
[data-theme="dark"] .weather-widget{background:rgba(255,255,255,0.04);border-color:rgba(255,255,255,0.06);box-shadow:0 0 0 1px rgba(255,255,255,0.06),0 4px 16px rgba(0,0,0,0.2)}
[data-theme="dark"] .weather-widget:hover{background:rgba(255,255,255,0.08);box-shadow:0 0 0 1px rgba(255,255,255,0.12),0 6px 20px rgba(0,0,0,0.3)}

/* ---- Thinking block (DeepSeek V4 Pro 思考过程) ---- */
.thinking-block{margin-bottom:10px;border-radius:10px;border:1px solid var(--border-glass);background:rgba(255,255,255,0.15);overflow:hidden}
[data-theme="dark"] .thinking-block{background:rgba(255,255,255,0.04)}
.thinking-block summary{padding:6px 12px;font-size:11px;font-weight:600;color:var(--accent);cursor:pointer;user-select:none}
.thinking-content{padding:6px 12px 10px;font-size:11px;color:var(--text-muted);line-height:1.6;white-space:pre-wrap;border-top:1px solid var(--border-glass);max-height:180px;overflow-y:auto}

/* ---- KaTeX 数学公式适配 ---- */
.md-content .katex{font-size:1.05em}
.md-content .katex-display{margin:.6em 0;overflow-x:auto;overflow-y:hidden}
[data-theme="dark"] .md-content .katex{color:#e0dcd0}
[data-theme="dark"] .md-content .katex .mord{color:#e0dcd0}
.math-error{color:#ef4444;font-family:monospace;font-size:.9em}
[data-theme="dark"] .math-error{color:#f87171}

/* ---- Chat action buttons (重新生成 / 复制) ---- */
.chat-actions{display:flex;gap:4px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border-subtle);animation:fadeIn .3s ease}
.chat-action-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:8px;border:1px solid var(--border-glass);background:var(--bg-glass);color:var(--text-muted);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}
.chat-action-btn:hover{background:var(--bg-glass-hover);color:var(--accent);border-color:var(--accent);transform:translateY(-1px)}
[data-theme="dark"] .chat-action-btn{background:rgba(255,255,255,0.04)}
[data-theme="dark"] .chat-action-btn:hover{background:rgba(255,255,255,0.08)}
