*{box-sizing:border-box}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--bg-tertiary: #e8eaed;--text-primary: #202124;--text-secondary: #5f6368;--text-tertiary: #80868b;--border-color: #dadce0;--border-color-light: #e8eaed;--shadow-sm: rgba(60, 64, 67, .15);--shadow-md: rgba(60, 64, 67, .3);--shadow-lg: rgba(60, 64, 67, .4);--google-blue: #4285f4;--google-red: #ea4335;--google-yellow: #fbbc04;--google-green: #34a853;--msg-user-bg: linear-gradient(135deg, #e8f0fe 0%, #d2e3fc 100%);--msg-model-bg: #ffffff;--msg-user-border: #4285f4;--msg-model-border: #34a853;--function-call-color: #fbbc04;--function-response-color: #34a853;--function-bg: #f8f9fa;--function-border: #dadce0;--function-text: #202124;--upload-gradient: linear-gradient(135deg, #4285f4 0%, #34a853 100%);--drop-zone-border: #dadce0;--drop-zone-bg: linear-gradient(135deg, #f8f9fa 0%, #e8eaed 100%);--drop-zone-hover-bg: linear-gradient(135deg, #e8f0fe 0%, #d2e3fc 100%);--drop-zone-drag-bg: linear-gradient(135deg, #d2e3fc 0%, #aecbfa 100%);--theme-toggle-bg: rgba(255, 255, 255, .95);--theme-toggle-border: #dadce0;--theme-toggle-icon: #5f6368;--theme-toggle-shadow: rgba(60, 64, 67, .3);--theme-toggle-shadow-hover: rgba(60, 64, 67, .5);color-scheme:light;color:var(--text-primary);background-color:var(--bg-primary)}[data-theme=dark]{--bg-primary: #202124;--bg-secondary: #292a2d;--bg-tertiary: #35363a;--text-primary: #e8eaed;--text-secondary: #9aa0a6;--text-tertiary: #5f6368;--border-color: #3c4043;--border-color-light: #5f6368;--shadow-sm: rgba(0, 0, 0, .3);--shadow-md: rgba(0, 0, 0, .4);--shadow-lg: rgba(0, 0, 0, .5);--google-blue: #8ab4f8;--google-red: #f28b82;--google-yellow: #fdd663;--google-green: #81c995;--msg-user-bg: linear-gradient(135deg, #1a3a52 0%, #1e4a6b 100%);--msg-model-bg: #292a2d;--msg-user-border: #8ab4f8;--msg-model-border: #81c995;--function-call-color: #fdd663;--function-response-color: #81c995;--function-bg: #292a2d;--function-border: #3c4043;--function-text: #e8eaed;--upload-gradient: linear-gradient(135deg, #1a73e8 0%, #188038 100%);--drop-zone-border: #5f6368;--drop-zone-bg: linear-gradient(135deg, #292a2d 0%, #35363a 100%);--drop-zone-hover-bg: linear-gradient(135deg, #1a3a52 0%, #1e4a6b 100%);--drop-zone-drag-bg: linear-gradient(135deg, #1e4a6b 0%, #2563a8 100%);--theme-toggle-bg: rgba(41, 42, 45, .95);--theme-toggle-border: #5f6368;--theme-toggle-icon: #e8eaed;--theme-toggle-shadow: rgba(0, 0, 0, .3);--theme-toggle-shadow-hover: rgba(0, 0, 0, .5);color-scheme:dark}body{margin:0;padding:0;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600}button{font-family:inherit;cursor:pointer;border:none;outline:none}button:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}code{font-family:Monaco,Courier New,monospace}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-tertiary)}::-webkit-scrollbar-thumb{background:var(--border-color-light);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.file-upload-container{width:100%;max-width:560px;margin:0 auto}.drop-zone{border:2px dashed var(--border-color);border-radius:12px;padding:3rem 2rem;text-align:center;transition:all .3s ease;background:var(--bg-primary);cursor:pointer}.drop-zone:hover{border-color:#4285f4;border-style:solid;background:var(--bg-secondary);box-shadow:0 4px 12px #3c404326}.drop-zone.dragging{border-color:#4285f4;border-style:solid;background:var(--bg-secondary);box-shadow:0 8px 24px #4285f433;transform:scale(1.01)}.drop-zone-content{display:flex;flex-direction:column;align-items:center;gap:1.25rem}.upload-icon{width:56px;height:56px;color:#4285f4;margin-bottom:.25rem;opacity:.9}.drop-zone h2{font-size:1.25rem;font-weight:500;color:var(--text-primary);margin:0}.drop-zone p{color:var(--text-secondary);margin:0;font-size:.9375rem}.file-input-label{display:inline-block;padding:.625rem 1.75rem;background:#4285f4;color:#fff;border-radius:6px;cursor:pointer;font-weight:500;font-size:.9375rem;transition:all .2s ease;box-shadow:0 1px 2px #3c40434d,0 1px 3px 1px #3c404326}.file-input-label:hover{background:#1a73e8;box-shadow:0 1px 3px #3c40434d,0 4px 8px 3px #3c404326}.file-input-label:active{transform:scale(.98)}.file-hint{font-size:.8125rem;color:var(--text-tertiary)}.error-message{display:flex;align-items:flex-start;gap:.75rem;margin-top:1.5rem;padding:.875rem 1rem;background:#fef2f2;border-left:3px solid #ea4335;border-radius:6px;color:#dc2626;font-size:.875rem;line-height:1.5}.error-message svg{width:18px;height:18px;flex-shrink:0;margin-top:.125rem}._GzYRV{line-height:1.2;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}._3eOF8{margin-right:5px;font-weight:700}._3eOF8+._3eOF8{margin-left:-5px}._1MFti{cursor:pointer}._f10Tu{font-size:1.2em;margin-right:5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}._1UmXx:after{content:"▸"}._1LId0:after{content:"▾"}._1pNG9{margin-right:5px}._1pNG9:after{content:"...";font-size:.8em}._2IvMF{background:#eee}._2bkNM{margin:0;padding:0 10px}._1BXBN{margin:0;padding:0}._1MGIk{font-weight:600;margin-right:5px;color:#000}._3uHL6{color:#000}._2T6PJ,._1Gho6{color:#df113a}._vGjyY{color:#2a3f3c}._1bQdo{color:#0b75f5}._3zQKs{color:#469038}._1xvuR{color:#43413d}._oLqym,._2AXVT,._2KJWg{color:#000}._11RoI{background:#002b36}._17H2C,._3QHg2,._3fDAz{color:#fdf6e3}._2bSDX{font-weight:bolder;margin-right:5px;color:#fdf6e3}._gsbQL{color:#fdf6e3}._LaAZe,._GTKgm{color:#81b5ac}._Chy1W{color:#cb4b16}._2bveF{color:#d33682}._2vRm-{color:#ae81ff}._1prJR{color:#268bd2}.chat-message{display:flex;flex-direction:column;margin-bottom:1rem;animation:fadeIn .3s ease-in}.function-only-message{opacity:.85}.function-only-message:hover{opacity:1}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.author-info{display:flex;align-items:center;gap:.625rem}.avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-avatar{background:#4285f4;color:#fff}.model-avatar{background:#34a853;color:#fff}.avatar svg{width:18px;height:18px}.author-details{display:flex;flex-direction:column;gap:.125rem}.author-name{font-weight:600;color:var(--text-primary);font-size:.8125rem}.timestamp{font-size:.6875rem;color:var(--text-tertiary)}.model-version{font-size:.6875rem;color:var(--text-secondary);background:var(--bg-tertiary);padding:.1875rem .625rem;border-radius:10px;font-family:Monaco,Courier New,monospace}.message-content{margin-left:2.625rem;padding:.75rem 1rem;border-radius:8px;background:var(--bg-primary);box-shadow:0 1px 2px var(--shadow-sm)}.user-message .message-content{background:var(--msg-user-bg);border-left:3px solid var(--msg-user-border)}.model-message .message-content{background:var(--msg-model-bg);border-left:3px solid var(--msg-model-border)}.message-text{color:var(--text-primary);line-height:1.5;font-size:.875rem}.markdown-content{line-height:1.6}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{margin-top:1em;margin-bottom:.5em;font-weight:600;color:var(--text-primary);line-height:1.3}.markdown-content h1{font-size:1.5em;border-bottom:1px solid var(--border-color);padding-bottom:.3em}.markdown-content h2{font-size:1.3em;border-bottom:1px solid var(--border-color);padding-bottom:.3em}.markdown-content h3{font-size:1.15em}.markdown-content h4{font-size:1em}.markdown-content p{margin:.75em 0}.markdown-content p:first-child{margin-top:0}.markdown-content p:last-child{margin-bottom:0}.markdown-content strong{font-weight:700;color:var(--text-primary)}.markdown-content em{font-style:italic}.markdown-content a{color:#4285f4;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s ease}.markdown-content a:hover{border-bottom-color:#4285f4}.markdown-content ul,.markdown-content ol{margin:.75em 0;padding-left:2em}.markdown-content li,.markdown-content ul ul,.markdown-content ol ul,.markdown-content ul ol,.markdown-content ol ol{margin:.25em 0}.markdown-content code{background:var(--function-bg);padding:.125rem .375rem;border-radius:3px;font-family:Monaco,Courier New,monospace;font-size:.875em;color:var(--function-text);border:1px solid var(--function-border)}.markdown-content pre{background:var(--function-bg);border:1px solid var(--function-border);border-left:3px solid #4285f4;border-radius:6px;padding:.75rem;overflow-x:auto;margin:.75em 0}.markdown-content pre code{background:none;padding:0;border:none;font-size:.8125em;line-height:1.5}.markdown-content table{border-collapse:collapse;width:100%;margin:1em 0;display:block;overflow-x:auto;border:1px solid var(--border-color);border-radius:6px}.markdown-content thead{background:var(--bg-secondary)}.markdown-content th{font-weight:600;text-align:left;padding:.625rem .75rem;border-bottom:2px solid var(--border-color);color:var(--text-primary);font-size:.875em}.markdown-content td{padding:.625rem .75rem;border-bottom:1px solid var(--border-color-light);font-size:.875em}.markdown-content tbody tr:last-child td{border-bottom:none}.markdown-content tbody tr:hover{background:var(--bg-secondary)}.markdown-content blockquote{margin:.75em 0;padding:.5em 1em;border-left:3px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);border-radius:0 6px 6px 0}.markdown-content blockquote p{margin:.5em 0}.markdown-content hr{border:none;border-top:1px solid var(--border-color);margin:1.5em 0}.markdown-content input[type=checkbox]{margin-right:.5em}.markdown-content del{text-decoration:line-through;color:var(--text-tertiary)}.function-call,.function-response{margin:.5rem 0}.function-header{display:flex;align-items:center;gap:.375rem;color:var(--text-secondary);font-weight:600;font-size:.8125rem}.function-toggle{width:100%;background:none;border:none;padding:.5rem .625rem;display:flex;align-items:center;gap:.375rem;cursor:pointer;border-radius:6px;transition:all .2s ease;text-align:left}.function-toggle:hover{background:var(--bg-secondary)}.function-toggle:active{transform:scale(.99)}.chevron-icon{width:14px;height:14px;transition:transform .2s ease;flex-shrink:0;color:var(--text-tertiary)}.chevron-icon.expanded{transform:rotate(90deg)}.function-header svg:not(.chevron-icon){width:16px;height:16px;flex-shrink:0}.function-call .function-toggle{color:var(--function-call-color)}.function-response .function-toggle{color:var(--function-response-color)}.function-name{font-family:Monaco,Courier New,monospace;flex:1}.function-badge{font-size:.6875rem;padding:.125rem .5rem;border-radius:10px;background:var(--bg-tertiary);color:var(--text-secondary);font-weight:500;text-transform:uppercase;letter-spacing:.03em;margin-left:auto}.function-args,.function-result{background:var(--function-bg);border:1px solid var(--function-border);border-radius:6px;padding:.625rem;overflow-x:auto;margin-top:.375rem;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.function-call .function-args{border-left:3px solid var(--function-call-color)}.function-response .function-result{border-left:3px solid var(--function-response-color)}.function-args pre,.function-result pre{margin:0;font-family:Monaco,Courier New,monospace;font-size:.75rem;color:var(--function-text);line-height:1.4}.function-args .json-container,.function-result .json-container{font-family:Monaco,Courier New,monospace;font-size:.75rem;line-height:1.5}.json-label{color:#4285f4!important;font-weight:600}.json-string{color:#34a853!important}.json-number{color:#ea4335!important}.json-boolean{color:#fbbc04!important;font-weight:600}.json-null,.json-undefined{color:var(--text-tertiary)!important;font-style:italic}.json-punctuation{color:var(--text-secondary)!important}.json-other{color:var(--text-primary)!important}.function-args .json-container>div,.function-result .json-container>div{background:transparent!important}.function-args button[class*=collapseIcon],.function-result button[class*=collapseIcon]{color:var(--text-tertiary)!important;opacity:.7;transition:opacity .2s ease}.function-args button[class*=collapseIcon]:hover,.function-result button[class*=collapseIcon]:hover{opacity:1}.usage-metadata{margin-left:2.625rem;margin-top:.375rem;display:flex;gap:.75rem;font-size:.6875rem;color:var(--text-tertiary)}.usage-metadata span{display:flex;align-items:center;gap:.25rem}.usage-metadata svg{width:12px;height:12px}@media(max-width:640px){.message-content{margin-left:0;margin-top:.375rem}.usage-metadata{margin-left:0}}.session-viewer{min-height:100vh;background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-tertiary) 100%)}.session-header{background:var(--bg-primary);border-bottom:1px solid var(--border-color);box-shadow:0 1px 3px var(--shadow-sm);position:sticky;top:0;z-index:10}.header-content{max-width:1200px;margin:0 auto;padding:.875rem 2rem 0}.session-info{width:100%}.session-title{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0 0 .5rem;background:linear-gradient(90deg,#4285f4,#34a853 50%,#fbbc04,#ea4335);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.2}.session-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:.75rem;color:var(--text-secondary)}.session-meta span{display:flex;align-items:center;gap:.375rem}.session-meta svg{width:14px;height:14px}.session-id{font-family:Monaco,Courier New,monospace;font-size:.75rem}.session-stats-row{max-width:1200px;margin:0 auto;padding:.875rem 2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.session-stats{display:flex;gap:.75rem;flex-wrap:wrap;flex:1;align-items:stretch}.reset-button{display:flex;align-items:center;margin-left:auto;gap:.375rem;padding:.5rem 1rem;background:#4285f4;color:#fff;border:none;border-radius:6px;font-weight:500;font-size:.8125rem;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 2px #3c40434d,0 1px 3px 1px #3c404326;flex-shrink:0;white-space:nowrap}.reset-button:hover{background:#1a73e8;box-shadow:0 1px 3px #3c40434d,0 4px 8px 3px #3c404326}.reset-button:active{transform:scale(.98)}.reset-button svg{width:14px;height:14px}.stat{display:flex;align-items:center;gap:.625rem;padding:.625rem 1rem;background:var(--bg-primary);border-radius:6px;border:1px solid var(--border-color);min-width:120px;box-shadow:0 1px 2px var(--shadow-sm)}.stat svg{width:18px;height:18px;color:#4285f4;flex-shrink:0}.stat>div{display:flex;flex-direction:column;gap:.125rem;min-width:0}.stat-value{font-size:1.125rem;font-weight:600;color:var(--text-primary);line-height:1.2}.stat-label{font-size:.625rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-weight:500;white-space:nowrap}.chat-container{max-width:1200px;margin:0 auto;padding:1rem 2rem 2rem}.chat-messages{background:var(--bg-primary);border-radius:12px;padding:1.5rem;box-shadow:0 2px 4px var(--shadow-sm)}@media(max-width:768px){.header-content{padding:.75rem 1rem 0}.session-title{font-size:1.125rem}.session-meta{font-size:.6875rem}.session-stats-row{flex-direction:column;align-items:stretch;padding:.75rem 1rem;gap:.75rem}.session-stats{gap:.625rem;flex-direction:column}.stat{width:100%;min-width:auto}.chat-container{padding:.75rem 1rem 1.5rem}.chat-messages{padding:1rem}.reset-button{width:100%;justify-content:center;padding:.625rem 1.25rem}}.theme-toggle{position:fixed;top:1.5rem;right:1.5rem;width:48px;height:48px;border-radius:50%;background:var(--theme-toggle-bg);border:2px solid var(--theme-toggle-border);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s ease;z-index:50;box-shadow:0 4px 12px var(--theme-toggle-shadow)}.theme-toggle:hover{transform:scale(1.1) rotate(15deg);box-shadow:0 6px 16px var(--theme-toggle-shadow-hover)}.theme-toggle:active{transform:scale(.95) rotate(15deg)}.theme-toggle svg{width:24px;height:24px;color:var(--theme-toggle-icon);transition:all .3s ease}@media(max-width:640px){.theme-toggle{top:1rem;right:1rem;width:44px;height:44px}.theme-toggle svg{width:22px;height:22px}}.app-footer{width:100%;padding:1rem 2rem;background:var(--bg-primary);border-top:1px solid var(--border-color);margin-top:auto}.footer-content{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap}.footer-text{margin:0;font-size:.8125rem;color:var(--text-secondary)}.footer-separator{color:var(--text-tertiary);font-size:.75rem}.footer-link{color:#4285f4;text-decoration:none;font-weight:500;transition:all .2s ease;border-bottom:1px solid transparent}.footer-link:hover{color:#1a73e8;border-bottom-color:#1a73e8}.footer-contribute{display:inline-flex;align-items:center;gap:.375rem}.footer-contribute svg{width:14px;height:14px}@media(max-width:640px){.app-footer{padding:1rem}.footer-content{font-size:.75rem;gap:.5rem}.footer-text{font-size:.75rem}}.app{min-height:100vh;width:100%;display:flex;flex-direction:column}.upload-screen{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--bg-primary);padding:2rem}.app-header{text-align:center;margin-bottom:4rem;max-width:600px}.logo{width:72px;height:72px;margin:0 auto 2rem;background:linear-gradient(135deg,#4285f4,#34a853 50%,#fbbc04,#ea4335);border-radius:16px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #4285f44d;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.logo svg{width:40px;height:40px;stroke-width:2;color:#fff}.app-header h1{font-size:2.25rem;font-weight:600;margin:0 0 .75rem;color:var(--text-primary);letter-spacing:-.02em}.app-header p{font-size:1rem;color:var(--text-secondary);margin:0;font-weight:400;line-height:1.6}@media(max-width:640px){.app-header{margin-bottom:3rem}.app-header h1{font-size:1.75rem}.app-header p{font-size:.9375rem}.logo{width:64px;height:64px}.logo svg{width:36px;height:36px}}
