*{margin:0;padding:0;box-sizing:border-box}*:focus-visible{outline:2px solid #1a73e8;outline-offset:2px}button:focus:not(:focus-visible),input:focus:not(:focus-visible),textarea:focus:not(:focus-visible){outline:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f5f5;color:#333;height:100vh;overflow:hidden}#root{height:100vh;display:flex;flex-direction:column}.loading-screen{display:flex;align-items:center;justify-content:center;height:100vh;font-size:1.2rem;color:#888}@keyframes skeleton-pulse{0%{opacity:.4}50%{opacity:.8}to{opacity:.4}}.loading-skeleton{display:flex;flex-direction:column;gap:.75rem;padding:1rem;width:100%;max-width:400px}.skeleton-bar{height:14px;border-radius:7px;background:#e0e0e0;animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-bar--short{width:40%}.skeleton-bar--medium{width:65%}.skeleton-bar--long{width:85%}.skeleton-sidebar{display:flex;flex-direction:column;padding:.75rem;gap:.5rem}.skeleton-sidebar-item{display:flex;flex-direction:column;gap:.35rem;padding:.75rem;border-radius:6px;background:#f9f9f9}.skeleton-chat{flex:1;display:flex;flex-direction:column;gap:1rem;padding:1rem;justify-content:flex-end}.skeleton-msg{display:flex;flex-direction:column;gap:.35rem;max-width:50%;padding:.75rem 1rem;border-radius:12px}.skeleton-msg--user{align-self:flex-end;background:#e0ecfb}.skeleton-msg--assistant{align-self:flex-start;background:#f0f0f0}.login-page{display:flex;align-items:center;justify-content:center;height:100vh;background:#f0f4f8}.login-form{background:#fff;padding:2.5rem;border-radius:12px;box-shadow:0 2px 12px #00000014;width:100%;max-width:400px;display:flex;flex-direction:column;gap:.75rem}.login-form h1{font-size:1.5rem;margin-bottom:.25rem;color:#1a73e8}.login-form h2{font-size:1rem;font-weight:500;color:#555;margin-bottom:.5rem}.login-form input{padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:.95rem;outline:none}.login-form input:focus{border-color:#1a73e8}.login-form button{padding:.75rem;background:#1a73e8;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;margin-top:.25rem}.login-form button:disabled{opacity:.6;cursor:default}.or-divider{text-align:center;color:#999;font-size:.85rem;margin:.25rem 0;display:flex;align-items:center;gap:.75rem}.or-divider:before,.or-divider:after{content:"";flex:1;height:1px;background:#e0e0e0}.dev-login-btn{background:#388e3c!important;font-size:.85rem!important;margin-top:0!important}.dev-login-btn:hover:not(:disabled){background:#2e7d32!important}.login-form .toggle{text-align:center;color:#1a73e8;cursor:pointer;font-size:.9rem;margin-top:.5rem}.login-form .error{color:#d32f2f;font-size:.9rem;text-align:center}.password-wrapper{position:relative;display:flex;align-items:center}.password-wrapper input{width:100%;padding-right:2.75rem}.password-toggle{position:absolute;top:50%;right:.65rem;transform:translateY(-50%);background:none!important;border:none!important;margin-top:0!important;padding:.25rem!important;color:#555!important;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;opacity:1!important;z-index:1}.password-toggle:hover{color:#333}.chat-layout{display:flex;flex-direction:column;height:100vh;overflow:hidden}.chat-layout header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#fff;border-bottom:1px solid #e0e0e0}.header-title{font-size:1.1rem;font-weight:600;color:#1a73e8;flex:1}.header-user{font-size:.85rem;color:#666}.sidebar-toggle,.logout-btn{background:none;border:1px solid #ddd;border-radius:6px;padding:.4rem .7rem;cursor:pointer;font-size:.85rem;color:#555;transition:all .15s ease}.logout-btn:hover{background:#f5f5f5}.main-area{display:flex;flex:1;overflow:hidden;min-height:0}.sidebar{width:280px;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;overflow-y:auto;transition:transform .25s ease}.sidebar-backdrop{display:none}.new-chat-btn{margin:.75rem;padding:.65rem;background:#1a73e8;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem}.new-chat-btn:hover{background:#1557b0}.conversation-list{flex:1;overflow-y:auto}.conversation-item{padding:.75rem;cursor:pointer;border-bottom:1px solid #f0f0f0}.conversation-item:hover{background:#f5f8ff}.conversation-item.active{background:#e8f0fe}.conv-title{font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conv-date{font-size:.75rem;color:#999;margin-top:.2rem}.sidebar-empty{padding:1.5rem .75rem;text-align:center;font-size:.85rem;color:#999;line-height:1.5}.chat-container{flex:1;display:flex;flex-direction:column;background:#fff;max-width:1200px;margin:0 auto;width:100%;overflow:hidden;min-height:0}.welcome{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#888;text-align:center;padding:2rem}.welcome-icon{font-size:2.5rem;margin-bottom:.75rem}.welcome h2{font-size:1.2rem;color:#555;margin-bottom:.5rem;font-weight:600}.welcome p{font-size:.95rem;color:#888;line-height:1.5}.welcome-hint{margin-top:.5rem;font-size:.85rem!important;color:#aaa!important}.welcome-suggestions{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-top:1.5rem;width:100%;max-width:800px}.suggestion-card{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;padding:1rem;border:1px solid #e0e0e0;border-radius:10px;cursor:pointer;transition:all .15s ease;text-align:left;background:#fff;font-family:inherit;font-size:inherit;line-height:inherit}.suggestion-card:hover{border-color:#1a73e8;background:#f5f8ff;transform:translateY(-1px);box-shadow:0 2px 8px #1a73e81a}.suggestion-card .emoji{font-size:1.5rem}.suggestion-card .text{font-size:.85rem;color:#555;line-height:1.4}@media(max-width:768px){.welcome-suggestions{grid-template-columns:repeat(2,1fr)}}.messages{flex:1;overflow-y:auto;min-height:0;padding:1rem;display:flex;flex-direction:column;gap:.75rem}@keyframes message-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.message-wrapper{display:flex;flex-direction:column;max-width:65%;gap:.25rem}.message-wrapper.user{align-self:flex-end}.message-wrapper.assistant{align-self:flex-start}.message{padding:.75rem 1rem;border-radius:12px;line-height:1.4;font-size:.95rem;animation:message-fade-in .25s ease-out}.message-wrapper.user .message{background:#1a73e8;color:#fff;border-bottom-right-radius:4px}.message-wrapper.assistant .message{background:#f0f0f0;border-bottom-left-radius:4px}.message-timestamp{font-size:.7rem;color:inherit;opacity:.6}.message-meta{display:flex;align-items:center;gap:.5rem}.message-wrapper.user .message-meta{justify-content:flex-end}.message-wrapper.assistant .message-meta{justify-content:flex-start}.message-copy-btn{background:none;border:1px solid transparent;border-radius:4px;padding:.1rem .4rem;font-size:.7rem;cursor:pointer;color:#aaa;line-height:1;opacity:1;transition:color .15s,border-color .15s,background .15s;font-family:inherit}.message-copy-btn:hover{color:#333;border-color:#e0e0e0;background:#f5f5f5}.message-copy-btn.copied{opacity:1;color:#2e7d32;border-color:#c8e6c9;background:#e8f5e9}.code-block-wrapper{margin:.5rem 0;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden}.code-block-header{display:flex;justify-content:space-between;align-items:center;padding:.35rem .75rem;background:#f5f5f5;border-bottom:1px solid #e0e0e0}.code-block-lang{font-size:.75rem;color:#888;font-family:Consolas,Courier New,monospace}.code-block-copy{background:none;border:1px solid #ddd;border-radius:4px;padding:.15rem .5rem;font-size:.72rem;cursor:pointer;color:#666;transition:all .15s}.code-block-copy:hover{background:#e8e8e8;color:#333}.code-block-copy.copied{color:#2e7d32;border-color:#c8e6c9;background:#e8f5e9}.message pre{margin:0;border-radius:0}.scroll-to-bottom{position:absolute;bottom:5.5rem;left:50%;transform:translate(-50%);background:#fff;border:1px solid #e0e0e0;border-radius:20px;padding:.4rem 1rem;font-size:.8rem;color:#555;cursor:pointer;box-shadow:0 2px 8px #0000001a;z-index:10;transition:all .15s}.scroll-to-bottom:hover{background:#f5f8ff;border-color:#1a73e8;color:#1a73e8}.chat-container{position:relative}.message-wrapper.user .message-timestamp{text-align:right}.message-wrapper.assistant .message-timestamp{text-align:left}.message p,.message ul,.message ol{margin:0}.message p:not(:first-child){margin-top:.5rem}.message li{margin-left:1.25rem}.message h1,.message h2,.message h3,.message h4{margin:.5rem 0 .25rem;font-size:inherit;font-weight:600}.message table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.875rem}.message th,.message td{border:1px solid #ccc;padding:.375rem .5rem;text-align:left}.message th{background:#e8e8e8;font-weight:600}.message tr:nth-child(2n){background:#f8f8f8}.message.error{background:#fff0f0;color:#d32f2f;align-self:center;max-width:100%}.error-banner{display:flex;align-items:center;justify-content:center;gap:.75rem;background:#fff0f0;color:#d32f2f;padding:.6rem 1rem;font-size:.85rem;border-top:1px solid #ffcdd2}.error-retry-btn{background:#d32f2f;color:#fff;border:none;border-radius:4px;padding:.3rem .7rem;font-size:.8rem;cursor:pointer;font-weight:500}.error-retry-btn:hover{background:#b71c1c}@keyframes typing-dot{0%,20%{transform:translateY(0)}50%{transform:translateY(-6px)}80%,to{transform:translateY(0)}}.loading{align-self:flex-start;display:flex;align-items:center;gap:8px;padding:.75rem 1rem}.loading-indicator{display:flex;align-items:center;gap:8px}.loading-dot{width:8px;height:8px;border-radius:50%;background:#999;animation:typing-dot 1.4s ease-in-out infinite}.loading-dot:nth-child(1){animation-delay:0s}.loading-dot:nth-child(2){animation-delay:.2s}.loading-dot:nth-child(3){animation-delay:.4s}.loading-status{font-size:13px;color:#666;animation:status-pulse 2s ease-in-out infinite;white-space:nowrap}@keyframes status-pulse{0%,to{opacity:.7}50%{opacity:1}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.input-area{display:flex;gap:.5rem;padding:1rem;border-top:1px solid #e0e0e0;background:#fff;flex-shrink:0}.input-area textarea{flex:1;padding:.75rem;border:1px solid #ddd;border-radius:8px;font-size:.95rem;outline:none;resize:none;font-family:inherit;line-height:1.4;min-height:44px;max-height:120px}.input-area textarea:focus{border-color:#1a73e8}.input-area textarea:disabled{background:#f9f9f9}.input-area button{padding:.75rem 1.5rem;background:#1a73e8;color:#fff;border:none;border-radius:8px;font-size:.95rem;cursor:pointer;transition:all .15s ease}.input-area button:hover:not(:disabled){background:#1557b0}.input-area button:disabled{opacity:.5;cursor:default}.admin-page{display:flex;flex-direction:column;height:100vh}.admin-page header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#fff;border-bottom:1px solid #e0e0e0}.back-btn{background:none;border:1px solid #ddd;border-radius:6px;padding:.4rem .7rem;cursor:pointer;font-size:.85rem;color:#555}.back-btn:hover{background:#f5f5f5}.admin-toast{padding:.6rem 1rem;text-align:center;font-size:.85rem;cursor:pointer}.admin-toast.success{background:#e8f5e9;color:#2e7d32}.admin-toast.error{background:#ffebee;color:#c62828}.admin-body{flex:1;overflow-y:auto;padding:1.5rem;max-width:960px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:1.5rem}.admin-section{background:#fff;border-radius:10px;padding:1.25rem;box-shadow:0 1px 4px #0000000f}.admin-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.admin-section h2{font-size:1.1rem;font-weight:600;color:#333;margin-bottom:.75rem}.admin-section .admin-section-header h2{margin-bottom:0}.admin-btn{border:none;border-radius:6px;padding:.5rem 1rem;font-size:.85rem;cursor:pointer;font-weight:500}.admin-btn.primary{background:#1a73e8;color:#fff}.admin-btn.primary:hover{background:#1557b0}.admin-btn.primary:disabled{opacity:.6;cursor:default}.admin-btn.success{background:#2e7d32;color:#fff}.admin-btn.success:hover{background:#1b5e20}.admin-btn.danger{background:#d32f2f;color:#fff}.admin-btn.danger:hover{background:#b71c1c}.admin-btn.small{padding:.3rem .6rem;font-size:.78rem}.add-filter-form{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.add-filter-form select,.add-filter-form input{padding:.5rem;border:1px solid #ddd;border-radius:5px;font-size:.85rem;outline:none}.add-filter-form input{flex:1;min-width:180px}.add-filter-form select:focus,.add-filter-form input:focus{border-color:#1a73e8}.filter-list{display:flex;flex-direction:column;gap:.4rem}.filter-row{display:flex;align-items:center;gap:.6rem;padding:.5rem .65rem;background:#fafafa;border-radius:6px;font-size:.85rem}.filter-category{display:inline-block;color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:4px;text-transform:uppercase;white-space:nowrap}.filter-pattern{flex:1;font-family:Consolas,Courier New,monospace;font-size:.82rem;color:#333;word-break:break-all}.filter-match-type{font-size:.75rem;color:#888;text-transform:uppercase}.suggestion-row{padding:.75rem;background:#fafafa;border-radius:6px;border-left:3px solid #ff9800;font-size:.85rem}.suggestion-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.4rem}.suggestion-reason{color:#666;font-size:.82rem;margin:.25rem 0 .5rem}.suggestion-actions{display:flex;gap:.5rem}.admin-empty{color:#999;font-size:.85rem;padding:1rem 0;text-align:center}.confirm-dialog-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.confirm-dialog{background:#fff;border-radius:12px;padding:1.5rem;max-width:400px;width:90%;box-shadow:0 4px 24px #00000026}.confirm-dialog-title{font-size:1.1rem;font-weight:600;margin-bottom:.5rem;color:#333}.confirm-dialog-message{font-size:.95rem;color:#666;margin-bottom:1.25rem;line-height:1.4}.confirm-dialog-buttons{display:flex;justify-content:flex-end;gap:.5rem}.confirm-dialog-cancel{padding:.5rem 1rem;border:1px solid #ddd;border-radius:6px;background:#fff;color:#555;font-size:.85rem;cursor:pointer}.confirm-dialog-cancel:hover{background:#f5f5f5}.confirm-dialog-confirm{padding:.5rem 1rem;border:none;border-radius:6px;background:#d32f2f;color:#fff;font-size:.85rem;cursor:pointer}.confirm-dialog-confirm:hover{background:#b71c1c}.demo-notice-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.demo-notice-modal{background:#fff;border-radius:14px;padding:2rem;max-width:480px;width:90%;box-shadow:0 4px 24px #00000026;text-align:center}.demo-notice-icon{font-size:2.5rem;margin-bottom:.5rem}.demo-notice-title{font-size:1.2rem;font-weight:600;color:#333;margin-bottom:1rem}.demo-notice-body{text-align:left;margin-bottom:1.5rem}.demo-notice-body p{font-size:.95rem;color:#555;line-height:1.6;margin-bottom:.75rem}.demo-notice-body p:last-child{margin-bottom:0}.demo-notice-body code{background:#f0f0f0;padding:.15rem .4rem;border-radius:4px;font-size:.9rem;color:#333}.demo-notice-checkbox{display:flex;align-items:center;justify-content:center;gap:.4rem;margin-bottom:1rem;font-size:.85rem;color:#777;cursor:pointer}.demo-notice-checkbox input{width:auto;cursor:pointer}.demo-notice-btn{padding:.65rem 2.5rem;background:#1a73e8;color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:background .15s ease}.demo-notice-btn:hover{background:#1557b0}.conversation-item{position:relative}.conversation-delete-btn{position:absolute;top:50%;right:.5rem;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:.85rem;padding:.25rem;opacity:0;transition:opacity .15s;color:#999;line-height:1}.conversation-item:hover .conversation-delete-btn{opacity:1}.conversation-delete-btn:hover{color:#d32f2f}@media(max-width:768px){.sidebar-backdrop{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background:#0000004d;z-index:99}.sidebar{position:fixed;top:0;left:0;height:100vh;z-index:100;box-shadow:2px 0 12px #00000026}.chat-container{max-width:100%;margin:0}.message{max-width:85%}.login-form{max-width:90%;padding:1.5rem}.header-user{display:none}.sidebar-toggle{display:block}}@media(min-width:769px){.sidebar-toggle{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.error-boundary{display:flex;align-items:center;justify-content:center;height:100vh;background:#f5f5f5;padding:2rem}.error-boundary-content{text-align:center;max-width:400px;background:#fff;padding:2rem;border-radius:12px;box-shadow:0 2px 12px #00000014}.error-boundary-icon{font-size:2.5rem;margin-bottom:.75rem}.error-boundary-content h2{font-size:1.2rem;color:#333;margin-bottom:.5rem}.error-boundary-content p{font-size:.95rem;color:#666;margin-bottom:1.25rem;line-height:1.4}.error-boundary-btn{padding:.65rem 2rem;background:#1a73e8;color:#fff;border:none;border-radius:8px;font-size:.95rem;cursor:pointer;transition:background .15s ease}.error-boundary-btn:hover{background:#1557b0}
