:root{--teal: #4fd6c9;--teal-deep: #2f9e8f;--gold: #ffd27f;--amber: #ff8a5c;--panel-bg: rgba(8, 22, 30, .72);--panel-bg-2: rgba(6, 18, 28, .66);--panel-border: rgba(111, 224, 207, .22);--text: #eaf6f5;--text-dim: rgba(234, 246, 245, .62);--grad-primary: linear-gradient(135deg, #2f9e8f 0%, #4fd6c9 100%);--grad-listen: linear-gradient(135deg, #ffb454 0%, #ff8a5c 100%);--glow-teal: 0 6px 22px rgba(79, 214, 201, .35)}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:-apple-system,PingFang SC,Microsoft YaHei,Segoe UI,Roboto,sans-serif;background:radial-gradient(circle at 50% 38%,#0a2630,#0c2b3a 55%,#06121e);color:var(--text)}canvas{display:block}.overlay{position:fixed;top:20px;left:20px;z-index:10;padding:18px 20px 20px;display:flex;flex-direction:column;gap:11px;background:linear-gradient(158deg,var(--panel-bg) 0%,var(--panel-bg-2) 100%);border:1px solid var(--panel-border);border-radius:16px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:13px;line-height:1.6;pointer-events:none;-webkit-user-select:none;user-select:none;box-shadow:0 10px 44px #0000006b,inset 0 1px #ffffff12;max-height:calc(100vh - 40px);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(111,224,207,.4) transparent;width:auto;max-width:min(420px,calc(100vw - 40px));overflow-wrap:break-word;animation:panel-in .5s ease both}.overlay::-webkit-scrollbar{width:7px}.overlay::-webkit-scrollbar-thumb{background:#6fe0cf61;border-radius:999px;transition:background .15s ease}.overlay::-webkit-scrollbar-thumb:hover{background:#6fe0cf99}.overlay::-webkit-scrollbar-track{background:transparent;margin:10px 0}.overlay:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--teal),var(--gold));border-radius:14px 14px 0 0;opacity:.95}.overlay h1{font-size:18px;margin-bottom:0;font-weight:700;letter-spacing:.02em;background:linear-gradient(90deg,var(--teal) 0%,var(--gold) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.overlay .hint{display:block;max-width:100%;color:var(--text-dim);font-size:12px}.bubble{pointer-events:none;width:max-content;max-width:min(260px,calc(100vw - 40px));padding:10px 16px;background:#fffffff5;color:#14242a;border-radius:16px;font-size:15px;line-height:1.5;font-weight:500;text-align:left;box-shadow:0 8px 26px #4fd6c947;border:1px solid rgba(79,214,201,.35);position:relative;white-space:normal;word-break:break-word;writing-mode:horizontal-tb;direction:ltr}.bubble:after{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:8px solid rgba(255,255,255,.96)}.voicebar{width:100%;display:flex;flex-direction:column;gap:9px;pointer-events:auto}.voice-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mic-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:9px 18px;font-size:14px;font-weight:600;color:#06222a;background:var(--grad-primary);border:none;border-radius:999px;cursor:pointer;box-shadow:var(--glow-teal);transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease,filter .12s ease}.mic-btn:hover{transform:translateY(-1px);filter:brightness(1.08);box-shadow:0 8px 26px #4fd6c980}.mic-btn:active{transform:translateY(0)}.mic-btn.active{color:#2a1500;background:var(--grad-listen);box-shadow:0 4px 18px #ff8a5c80;animation:mic-pulse 1.2s ease-in-out infinite}@keyframes mic-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.voice-status{font-size:12px;color:var(--text-dim);line-height:1.5;display:inline-flex;align-items:center;gap:6px;animation:fade-in .3s ease}.voice-status:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold);flex-shrink:0}.chatbar{margin-top:4px;display:flex;gap:6px;width:100%;max-width:100%;pointer-events:auto}.chat-input{flex:1;min-width:0;width:100%;box-sizing:border-box;padding:9px 13px;font-size:13px;line-height:1.6;font-family:inherit;color:var(--text);background:#ffffff12;border:1px solid rgba(111,224,207,.2);border-radius:12px;outline:none;resize:none;overflow-y:auto;transition:border-color .12s ease,background .12s ease,box-shadow .12s ease}.chat-input::placeholder{color:#eaf6f566}.chat-input:focus{border-color:var(--teal);background:#4fd6c91a;box-shadow:0 0 0 3px #4fd6c926}.chat-input:disabled{opacity:.55;cursor:not-allowed}.chat-send{flex-shrink:0;padding:8px 16px;font-size:13px;font-weight:600;color:#06222a;background:var(--grad-primary);border:none;border-radius:999px;cursor:pointer;box-shadow:var(--glow-teal);transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease,filter .12s ease}.chat-send:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.08);box-shadow:0 8px 26px #4fd6c980}.chat-send:disabled{opacity:.5;cursor:not-allowed}.chatbar-actions{display:flex;gap:6px;flex-shrink:0}.chatbar.expanded{flex-direction:column;align-items:stretch;max-width:100%}.chatbar.expanded .chat-input{min-height:160px;resize:vertical}.chatbar.expanded .chatbar-actions{justify-content:flex-end}.chat-expand{flex-shrink:0;width:36px;padding:0;font-size:18px;line-height:1;color:var(--teal);background:#4fd6c91f;border:1px solid rgba(111,224,207,.35);border-radius:8px;cursor:pointer;transition:transform .12s ease,filter .12s ease,background .12s ease}.chat-expand:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.12);background:#4fd6c933}.chat-expand:disabled{opacity:.5;cursor:not-allowed}.voice-warn{font-size:12px;color:#ffb4c4;opacity:.9;line-height:1.5}.chat-panel{display:flex;flex-direction:column;margin-top:2px;background:#030c1275;border:1px solid rgba(111,224,207,.16);border-radius:12px;overflow:hidden;pointer-events:auto}.chat-log-head{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:12px;font-weight:600;color:var(--text);background:linear-gradient(135deg,#4fd6c929,#ffd27f1a);border-bottom:1px solid rgba(111,224,207,.14)}.chat-log-count{font-size:11px;font-weight:500;color:var(--text-dim);background:#00000038;padding:1px 8px;border-radius:999px}.chat-log{display:flex;flex-direction:column;gap:10px;max-height:360px;overflow-y:auto;padding:10px;scrollbar-width:thin;scrollbar-color:rgba(111,224,207,.35) transparent}.chat-log::-webkit-scrollbar{width:6px}.chat-log::-webkit-scrollbar-thumb{background:#6fe0cf52;border-radius:999px}.chat-log::-webkit-scrollbar-track{background:transparent}@media (max-height: 820px){.chat-log{max-height:none;overflow-y:visible}}.overlay:has(.settings-panel) .chat-log{max-height:none;overflow-y:visible}.chat-empty{font-size:12px;color:var(--text-dim);text-align:center;padding:14px 0}.msg{display:flex;align-items:flex-start;gap:8px;max-width:100%}.msg.user{flex-direction:row-reverse}.msg-avatar{flex:0 0 auto;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#06222a;box-shadow:0 2px 8px #0000004d}.msg.ai .msg-avatar{background:linear-gradient(135deg,#4fd6c9,#2f9e8f)}.msg.user .msg-avatar{background:linear-gradient(135deg,#ffd27f,#ff8a5c)}.msg-body{display:flex;flex-direction:column;gap:2px;max-width:calc(100% - 34px)}.msg-who{font-size:11px;font-weight:600;opacity:.72}.msg.ai .msg-who{color:var(--teal)}.msg.user .msg-who{color:var(--gold);text-align:right}.msg-text{font-size:13px;line-height:1.55;padding:8px 11px;border-radius:12px;word-break:break-word;white-space:pre-wrap}.msg.ai .msg-text{background:#ffffff14;border:1px solid rgba(111,224,207,.18);border-top-left-radius:3px}.msg.user .msg-text{background:linear-gradient(135deg,#ffd27f2e,#ff8a5c29);border:1px solid rgba(255,210,127,.32);border-top-right-radius:3px}.bubble.user{background:linear-gradient(135deg,#4fd6c9f7,#2f9e8ff7);color:#06222a;border-color:#4fd6c980}.bubble.user:after{border-right-color:#4fd6c9f7}.bubble.thinking{background:#94a3b8f2;color:#fff}.bubble.thinking:after{border-right-color:#94a3b8f2}.settings{margin-top:14px;pointer-events:auto}.gear-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;font-size:16px;color:var(--text);background:#6fe0cf1f;border:1px solid rgba(111,224,207,.22);border-radius:10px;cursor:pointer;transition:background .12s ease,transform .12s ease,box-shadow .12s ease}.gear-btn:hover{background:#4fd6c938;transform:translateY(-1px);box-shadow:var(--glow-teal)}.settings-panel{margin-top:10px;padding:12px;width:100%;max-width:280px;background:#06121ce6;border:1px solid var(--panel-border);border-radius:12px;display:flex;flex-direction:column;gap:8px}.settings-note{font-size:12px;line-height:1.5;color:#ffd9a0;background:#ffb4501f;border:1px solid rgba(255,180,80,.3);border-radius:8px;padding:8px 10px;margin-bottom:4px}.settings-label{font-size:12px;color:var(--text-dim)}.settings-textarea{width:100%;overflow:hidden;min-height:160px;padding:11px 13px;font-size:13px;line-height:1.65;color:var(--text);background:#ffffff12;border:1px solid rgba(111,224,207,.2);border-radius:8px;font-family:inherit}.settings-input{width:100%;padding:9px 11px;font-size:13px;color:var(--text);background:#ffffff12;border:1px solid rgba(111,224,207,.2);border-radius:8px;font-family:inherit;box-sizing:border-box}.settings-input::placeholder{color:#eaf6f566}.settings-input:focus{outline:none;border-color:#6fe0cf80}.settings-textarea:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px #4fd6c926}.settings-actions{display:flex;align-items:center;gap:8px}.test-btn{padding:6px 14px;font-size:12px;font-weight:600;color:#06222a;background:var(--grad-primary);border:none;border-radius:8px;cursor:pointer;box-shadow:var(--glow-teal)}.test-result{font-size:12px;color:var(--text-dim)}.clear-btn{padding:6px 14px;font-size:12px;font-weight:600;color:#ffe3d6;background:#ff8a5c29;border:1px solid rgba(255,138,92,.4);border-radius:8px;cursor:pointer;transition:background .12s ease}.clear-btn:hover{background:#ff8a5c47}.location-row{margin-top:10px}.location-actions{display:flex;gap:8px;align-items:center}.loc-btn{padding:6px 16px;font-size:12px;font-weight:600;color:#06222a;background:var(--grad-primary);border:none;border-radius:8px;cursor:pointer;box-shadow:0 2px 8px #0000004d}.loc-btn:hover{filter:brightness(1.08)}.loc-clear{padding:5px 12px;font-size:12px;font-weight:600;color:#eaf6f5b3;background:transparent;border:1px solid rgba(111,224,207,.28);border-radius:8px;cursor:pointer}.loc-clear:hover{background:#6fe0cf1a}.settings-hint{font-size:11px;color:#eaf6f580;line-height:1.5}.settings-hint code{background:#6fe0cf29;padding:1px 4px;border-radius:4px;font-size:10px}.site-footer{position:fixed;bottom:10px;left:50%;transform:translate(-50%);z-index:20;max-width:min(560px,calc(100vw - 40px));font-size:12px;color:var(--text-dim);background:linear-gradient(158deg,var(--panel-bg) 0%,var(--panel-bg-2) 100%);border:1px solid var(--panel-border);border-radius:12px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 8px 30px #0006,inset 0 1px #ffffff0d;pointer-events:auto}.site-footer summary{list-style:none;cursor:pointer;padding:9px 14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;border-radius:12px 12px 0 0;transition:background .15s ease}.site-footer summary:hover{background:#6fe0cf14}.site-footer summary::-webkit-details-marker{display:none}.site-footer summary:before{content:"▸";color:var(--teal);margin-right:2px;transition:transform .15s ease}.site-footer details[open] summary:before{content:"▾"}.footer-model b{color:var(--teal)}.footer-lic b{color:var(--gold)}.footer-credit{padding:0 14px 12px;border-top:1px solid rgba(111,224,207,.15);margin-top:2px}.footer-credit p{margin:8px 0;line-height:1.5}.footer-credit a{color:var(--teal)}.footer-lic-line{font-size:12px;color:var(--gold);background:#ffd27f14;border:1px solid rgba(255,210,127,.22);border-radius:8px;padding:6px 10px!important}.footer-note{font-size:11px;color:var(--amber);background:#ff8a5c1a;border:1px solid rgba(255,138,92,.25);border-radius:8px;padding:6px 10px!important}.borrow-list{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:var(--text);background:#00000040;border-radius:8px;padding:10px!important;margin:6px 0 0;max-height:180px;overflow:auto}@keyframes panel-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}
