body { margin: 0; font-family: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; } :root { --font-family: 'Nunito', sans-serif; /* Theme Colors */ --bg-main: #fffaf0; /* Floral White */ --bg-secondary: #ffffff; --text-primary: #5d4037; /* Brownish */ --text-secondary: #8d6e63; --border-color: #d7ccc8; --shadow-color: rgba(93, 64, 55, 0.1); --accent-blue: #81d4fa; --accent-green: #a5d6a7; --accent-red: #ef9a9a; --accent-yellow: #fff59d; --accent-purple: #ce93d8; --button-primary-bg: #4db6ac; /* Teal */ --button-primary-text: white; --button-primary-hover: #26a69a; --button-secondary-bg: #f5f5f5; --button-secondary-text: var(--text-primary); --button-secondary-hover: #eeeeee; --mic-active: #ff7043; /* Deep Orange */ --mic-inactive: #bcaaa4; /* Original variables (some might be unused now) */ --text: var(--text-primary); --gray-200: #e0e0e0; --gray-300: #bdbdbd; --gray-500: #9e9e9e; --gray-600: #757575; --gray-700: #616161; --gray-800: #424242; --gray-900: #212121; --gray-1000: #000000; --border-stroke: var(--border-color); --background: var(--bg-main); --color: var(--text-primary); scrollbar-color: var(--gray-500) var(--bg-main); scrollbar-width: thin; --card-border-radius: 24px; --breakpoint-md: 768px; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: var(--font-family); background: var(--bg-main); color: var(--text-primary); } h1, h2, h3, h4, h5, h6 { font-weight: 700; color: var(--text-primary); } li { list-style: none; } input, textarea { font-family: var(--font-family); background: var(--bg-secondary); color: var(--text-primary); border: 1px solid var(--border-color); outline: none; font-size: 16px; resize: none; -webkit-user-select: text; user-select: text; border-radius: 12px; padding: 12px; } input::placeholder, textarea::placeholder { user-select: none; color: var(--text-secondary); } select { font-family: inherit; padding: 10px; border: 1px solid var(--border-color); background: var(--bg-secondary); color: var(--text-primary); border-radius: 12px; font-size: 16px; cursor: pointer; accent-color: var(--button-primary-bg); } select:focus-visible { outline: 2px solid var(--button-primary-bg); } button { font-family: var(--font-family); background: none; color: var(--text-primary); border: none; font-size: 16px; font-weight: 700; cursor: pointer; user-select: none; display: flex; align-items: center; gap: 5px; border-radius: 12px; padding: 10px 15px; transition: all 0.2s ease-in-out; } button.primary { background: var(--button-primary-bg); color: var(--button-primary-text); } button.primary:hover { background: var(--button-primary-hover); } button.icon { font-size: 1.2em; } .button { background: var(--button-secondary-bg); color: var(--button-secondary-text); display: inline-flex; padding: 10px; border-radius: 12px; gap: 4px; align-items: center; justify-content: center; font-weight: 700; } .button:hover { background: var(--button-secondary-hover); } .button .icon { font-size: 1.2em; } button:focus { outline: none; } button:focus-visible { box-shadow: 0 0 0 3px var(--accent-blue); } button[disabled] { opacity: 0.5; cursor: not-allowed; } button .icon { display: block; } .icon { font-family: 'Material Symbols Outlined'; font-weight: 300; line-height: 1; } .hidden { display: none; } header { padding: 20px; display: flex; align-items: center; justify-content: space-between; position: fixed; width: 100%; z-index: 999; } .streaming-console { background: transparent; color: var(--text-secondary); display: flex; height: 100vh; width: 100vw; } .streaming-console main { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; flex-grow: 1; gap: 1rem; max-width: 100%; overflow: hidden; } .streaming-console .main-app-area { display: flex; flex: 1; align-items: center; justify-content: center; position: relative; width: 100%; } .action-button { display: flex; align-items: center; justify-content: center; background: var(--bg-secondary); color: var(--mic-inactive); font-size: 1.5rem; cursor: pointer; transition: all 0.2s ease-in-out; width: 64px; height: 64px; border-radius: 50%; border: 2px solid var(--border-color); user-select: none; box-shadow: 0 4px 10px var(--shadow-color); } .action-button:hover { transform: translateY(-2px); box-shadow: 0 6px 15px var(--shadow-color); } .action-button:focus { border: 2px solid var(--button-primary-bg); outline: none; } .action-button.connected { background: var(--mic-active); color: white; border-color: transparent; } .mic-button { position: relative; background-color: var(--mic-active); z-index: 1; color: white; width: 80px; height: 80px; font-size: 2rem; border-radius: 50%; } .mic-button.bot-speaking { background-color: var(--mic-inactive); } .mic-button:focus { border: none; outline: 3px solid var(--accent-red); } .mic-button:hover { background-color: #ff8a65; } .mic-button.bot-speaking:hover { background-color: var(--mic-inactive); } .connect-button { font-size: 1.5rem; padding: 1rem 2rem; border-radius: 99px; background-color: var(--button-primary-bg); color: var(--button-primary-text); } .connect-button:hover { background-color: var(--button-primary-hover); } .control-tray { position: absolute; bottom: 0; left: 50%; transform: translate(-50%, 0); display: inline-flex; justify-content: center; align-items: center; gap: 1.5rem; padding: 1rem; margin-bottom: 2rem; background-color: rgba(255, 255, 255, 0.7); backdrop-filter: blur(10px); border-radius: 99px; box-shadow: 0 4px 20px var(--shadow-color); z-index: 12; transition: all 0.3s ease-in-out; } .control-tray.connected { width: 80%; max-width: 900px; gap: 1rem; padding: 1rem 1.5rem; border-radius: 3rem; align-items: center; } .caption-display { flex-grow: 1; text-align: center; overflow: hidden; } .caption-display p { font-size: 1.5rem; font-weight: 700; color: var(--text-primary); margin: 0; opacity: 0; transform: translateY(10px); transition: opacity 0.3s ease-out, transform 0.3s ease-out; white-space: normal; line-height: 1.3; } .caption-display p.visible { opacity: 1; transform: translateY(0); } .end-session-button { background-color: var(--accent-red); color: white; padding: 0.8rem 1.5rem; border-radius: 99px; flex-shrink: 0; } .end-session-button:hover { background-color: #d32f2f; } .control-tray .disabled .action-button, .control-tray .action-button.disabled { background: #f5f5f5; border: 2px solid #e0e0e0; color: #bdbdbd; box-shadow: none; } .actions-nav { background: transparent; border: none; display: inline-flex; align-items: center; transition: all 0.6s ease-in; } /* Modal */ .modalShroud { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; z-index: 9999; background: rgba(93, 64, 55, 0.3); backdrop-filter: blur(5px); } .modalShroud .modal { background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: var(--card-border-radius); padding: 40px; position: relative; width: 100%; box-shadow: 0 10px 30px var(--shadow-color); } @media (min-width: 768px) { .modalShroud .modal { max-width: 500px; } } .modalShroud .modal { max-height: 80vh; overflow: auto; margin: 20px; } .modalClose { position: absolute; top: 15px; right: 15px; color: var(--text-secondary); font-size: 30px; border-radius: 50%; width: 40px; height: 40px; justify-content: center; padding: 0; } .modalClose:hover { background-color: #f5f5f5; color: var(--text-primary); } /* UserSettings */ .userSettings { max-width: 480px; display: flex; flex-direction: column; gap: 15px; text-align: center; } .userSettings h2 { font-size: 24px; margin-bottom: 0; } .userSettings p { font-size: 16px; line-height: 1.6; color: var(--text-secondary); } @media (min-width: 768px) { .userSettings p { font-size: 18px; } } .userSettings form { margin-top: 10px; padding-top: 10px; text-align: left; } .userSettings form .divider { height: 1px; background-color: var(--border-color); margin: 20px 0; } form > div p { font-weight: 700; color: var(--text-primary); font-size: 14px; } .userSettingsButton { display: flex; align-items: center; gap: 8px; color: var(--text-secondary); transition: all 0.3s; font-size: 16px; background-color: var(--bg-secondary); padding: 8px 16px; border-radius: 99px; box-shadow: 0 2px 8px var(--shadow-color); } @media (min-width: 768px) { .userSettingsButton { font-size: 18px; } } .userSettingsButton .user-name { display: block; } .userSettingsButton .icon { font-size: 24px; } .sticky-header { position: -webkit-sticky; /* Safari */ position: sticky; top: 0; background-color: var(--bg-main); border-bottom: 1px solid var(--border-color); box-shadow: 0 2px 4px var(--shadow-color); } .userSettingsButton:hover { color: var(--text-primary); box-shadow: 0 4px 12px var(--shadow-color); } /* Form */ form { display: flex; flex-direction: column; gap: 20px; } form .largeInput { font-size: 16px; border-bottom: 1px solid var(--border-color); border-radius: 0; background: transparent; border-left: none; border-right: none; border-top: none; } @media (min-width: 768px) { form .largeInput { font-size: 28px; } } form > div, form label { display: flex; flex-direction: column; gap: 10px; user-select: none; } form input, form textarea { font-size: 14px; line-height: 1.4; } @media (min-width: 768px) { form input, form textarea { font-size: 18px; } } form input:focus, form textarea:focus { border-color: var(--button-primary-bg); box-shadow: 0 0 0 3px rgba(77, 182, 172, 0.3); background: white; } form textarea { resize: none; } form button.primary { margin-top: 10px; padding: 15px; font-size: 18px; } /* agenst */ .roomInfo { position: relative; } .roomInfo h1 { font-size: 22px; font-weight: 700; display: flex; align-items: center; opacity: 0.8; transition: all 0.2s; text-align: left; color: var(--text-primary); } @media (min-width: 768px) { .roomInfo h1 { font-size: 28px; } } .roomInfo h1:hover, .roomInfo h1.active { opacity: 1; } .roomList { display: flex; flex-direction: column; gap: 10px; position: absolute; background: var(--bg-secondary); border: 1px solid var(--border-color); padding: 20px; border-radius: var(--card-border-radius); width: 300px; margin-top: 10px; opacity: 0; pointer-events: none; transition: all 0.1s; user-select: none; max-height: 70vh; overflow: auto; box-shadow: 0 5px 20px var(--shadow-color); } .roomList.active { opacity: 1; pointer-events: auto; } .roomList h3 { font-size: 16px; font-weight: 700; margin-bottom: 10px; color: var(--text-secondary); } .roomList ul { display: flex; flex-direction: column; gap: 5px; border-bottom: 1px solid var(--border-color); padding-bottom: 15px; margin-bottom: 5px; } .roomList li { font-size: 20px; } .roomList li button { color: var(--text-secondary); transition: all 0.2s; width: 100%; justify-content: flex-start; padding: 10px; } .roomList li.active button, .roomList li:hover button { color: var(--text-primary); background-color: var(--bg-main); } .error-screen { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100dvh; width: 100%; background: var(--bg-main); color: var(--text-primary); gap: 48px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 99991; } .error-screen .error-message-container, .error-screen .error-raw-message-container { width: 100%; text-align: center; max-width: 650px; padding-left: 0.5rem; padding-right: 0.5rem; } .error-screen .close-button { color: var(--text-primary); font-size: 24px; } /* Remove unused styles for simplicity */ .agentPreview, .editAgent, .voicePicker, .colorPicker { display: none; } .keynote-companion { align-items: center; display: flex; height: 100%; justify-content: center; position: relative; width: 100%; z-index: 1; } .keynote-companion .basic-face-container { position: relative; z-index: 5; transition: all 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); } .keynote-companion .basic-face { box-shadow: 0px 10px 30px var(--shadow-color); transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); } /* "Thinking" animation for the face */ .basic-face-container.generating .basic-face { animation: pulse-shadow 2s infinite; } @keyframes pulse-shadow { 0%, 100% { box-shadow: 0px 10px 30px var(--shadow-color); } 50% { box-shadow: 0px 15px 45px var(--accent-blue); } } /* When images are visible, move face to the side */ .keynote-companion.images-visible .basic-face-container { position: absolute; bottom: 20px; left: 20px; transform: scale(0.6); transform-origin: bottom left; } /* AuthWrapper Styles */ .auth-loading-container { display: flex; align-items: center; justify-content: center; min-height: 100vh; background: linear-gradient(135deg, #dbeafe 0%, #e0e7ff 100%); } .auth-loading-content { text-align: center; } .auth-spinner { width: 48px; height: 48px; border: 2px solid transparent; border-bottom: 2px solid #2563eb; border-radius: 50%; animation: spin 1s linear infinite; margin: 0 auto 16px; } .auth-loading-text { font-size: 18px; color: #374151; font-weight: 500; } .auth-signin-container { display: flex; align-items: center; justify-content: center; min-height: 100vh; background: linear-gradient(135deg, #dbeafe 0%, #e0e7ff 50%, #ede9fe 100%); } .auth-signin-card { background: white; padding: 40px; border-radius: 16px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); text-align: center; max-width: 448px; width: 100%; margin: 16px; border: 1px solid #f3f4f6; } .auth-logo-container { margin-bottom: 32px; } .auth-logo { width: 64px; height: 64px; background: linear-gradient(135deg, #2563eb 0%, #4f46e5 100%); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 16px; } .auth-logo svg { width: 32px; height: 32px; color: white; } .auth-title { font-size: 30px; font-weight: bold; color: #111827; margin-bottom: 8px; } .auth-subtitle { color: #6b7280; font-size: 18px; } .auth-signin-content { margin-bottom: 24px; } .auth-signin-text { color: #374151; margin-bottom: 16px; } .auth-error { background: #fef2f2; border: 1px solid #fecaca; color: #dc2626; padding: 12px 16px; border-radius: 8px; margin-bottom: 16px; font-size: 14px; } .auth-warning { background: #fffbeb; border: 1px solid #fed7aa; color: #d97706; padding: 12px 16px; border-radius: 8px; margin-bottom: 16px; font-size: 14px; } .auth-google-button { width: 100%; background: white; border: 2px solid #d1d5db; color: #374151; font-weight: 600; padding: 12px 24px; border-radius: 12px; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; justify-content: center; gap: 12px; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); } .auth-google-button:hover { background: #f9fafb; border-color: #9ca3af; } .auth-google-button:focus { outline: none; box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1); } .auth-google-button:disabled { opacity: 0.5; cursor: not-allowed; } .auth-button-spinner { width: 20px; height: 20px; border: 2px solid transparent; border-bottom: 2px solid #4b5563; border-radius: 50%; animation: spin 1s linear infinite; } .auth-google-icon { width: 20px; height: 20px; } .auth-terms { margin-top: 24px; font-size: 12px; color: #6b7280; } .auth-header { background: white; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); border-bottom: 1px solid #e5e7eb; } .auth-header-content { max-width: 1280px; margin: 0 auto; padding: 0 16px; } .auth-header-inner { display: flex; justify-content: space-between; align-items: center; padding: 16px 0; } .auth-brand { display: flex; align-items: center; gap: 12px; } .auth-brand-logo { width: 40px; height: 40px; background: linear-gradient(135deg, #2563eb 0%, #4f46e5 100%); border-radius: 8px; display: flex; align-items: center; justify-content: center; } .auth-brand-logo svg { width: 24px; height: 24px; color: white; } .auth-brand-text { font-size: 20px; font-weight: bold; color: #111827; } .auth-user-section { display: flex; align-items: center; gap: 16px; } .auth-warning-indicator { display: flex; align-items: center; gap: 8px; color: #d97706; } .auth-warning-indicator svg { width: 16px; height: 16px; } .auth-warning-text { font-size: 14px; font-weight: 500; } .auth-user-info { display: flex; align-items: center; gap: 12px; background: #f9fafb; border-radius: 8px; padding: 8px 12px; } .auth-user-avatar { width: 32px; height: 32px; border-radius: 50%; border: 2px solid white; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); } .auth-user-details { text-align: left; } .auth-user-name { font-size: 14px; font-weight: 500; color: #111827; } .auth-user-email { font-size: 12px; color: #6b7280; } .auth-logout-button { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); color: white; font-weight: 500; padding: 8px 16px; border-radius: 8px; font-size: 14px; cursor: pointer; border: none; transition: all 0.2s; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); } .auth-logout-button:hover { background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); } .auth-logout-button:focus { outline: none; box-shadow: 0 0 0 2px #ef4444, 0 0 0 4px rgba(239, 68, 68, 0.1); } .auth-main-container { min-height: 100vh; background: #f9fafb; } .auth-content { flex: 1; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @media (min-width: 640px) { .auth-header-content { padding: 0 24px; } } @media (min-width: 1024px) { .auth-header-content { padding: 0 32px; } } /* Clean up unnecessary old styles that are not in the provided files */ .control-tray .connection-container, .top, .roomDescription, .createButton, .deleteRoomButton, .roomList .newRoomButton, .counter-container, .streaming-console .function-call, .actions-nav > *, .mic-button:before, .connect-toggle:not(.connected) { display: none !important; } .actions-nav { padding: 0; gap: 0; } .control-tray { padding: 1rem; } /* Loading Indicator */ .loading-indicator { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10; display: flex; align-items: center; justify-content: center; } .loading-indicator.large { display: flex; flex-direction: column; gap: 20px; align-items: center; color: var(--text-secondary); font-size: 1.2rem; font-weight: 700; } .loading-indicator.large .spinner { width: 80px; height: 80px; border-width: 6px; } .spinner { width: 60px; height: 60px; border: 5px solid rgba(93, 64, 55, 0.2); border-top-color: var(--text-primary); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Image Collage Styles */ .image-collage-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 2; /* Sits above the slideshow but below UI elements */ display: grid; grid-template-columns: repeat(10, 1fr); grid-template-rows: repeat(10, 1fr); gap: 8px; background-color: var(--bg-main); overflow: hidden; } .collage-item { overflow: hidden; border-radius: 12px; box-shadow: 0 4px 15px var(--shadow-color); transition: transform 0.3s ease-in-out; animation: fade-in 0.5s ease-out forwards; opacity: 0; } @keyframes fade-in { to { opacity: 1; } } .collage-item:hover { transform: scale(1.05) !important; z-index: 10; } .collage-item img { width: 100%; height: 100%; object-fit: cover; } /* Quiz Styles */ .quiz-container { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 700px; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(10px); border-radius: var(--card-border-radius); padding: 2rem; box-shadow: 0 8px 32px 0 var(--shadow-color); border: 1px solid rgba(255, 255, 255, 0.18); z-index: 10; } .quiz-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; border-bottom: 2px solid var(--border-color); padding-bottom: 1rem; } .quiz-header h2 { font-size: 2rem; color: var(--text-primary); margin: 0; } .quiz-score { font-size: 1.25rem; font-weight: 700; color: var(--text-secondary); background: var(--bg-main); padding: 0.5rem 1rem; border-radius: 99px; } .quiz-score span { color: var(--text-primary); } .quiz-card { text-align: center; } .quiz-question { font-size: 1.75rem; font-weight: 700; color: var(--text-primary); line-height: 1.4; margin-bottom: 2rem; } .quiz-options { display: flex; flex-direction: column; gap: 1rem; } .quiz-options li { background-color: var(--bg-secondary); border: 2px solid var(--border-color); border-radius: 12px; padding: 1rem; font-size: 1.25rem; color: var(--text-secondary); font-weight: 700; transition: all 0.2s ease-in-out; } .quiz-option-button { background-color: var(--bg-secondary); border: 2px solid var(--border-color); border-radius: 12px; padding: 1rem; font-size: 1.25rem; color: var(--text-primary); font-weight: 700; transition: all 0.2s ease-in-out; width: 100%; text-align: left; justify-content: flex-start; } .quiz-option-button:not(:disabled):hover { border-color: var(--button-primary-bg); color: var(--text-primary); transform: translateY(-2px); box-shadow: 0 4px 10px var(--shadow-color); } .quiz-option-button:disabled { cursor: not-allowed; opacity: 0.7; } .quiz-option-button.selected.incorrect { background-color: #ffebee; /* Light red */ border-color: var(--accent-red); color: #c62828; /* Dark red */ opacity: 1; } .quiz-option-button.correct { background-color: #e8f5e9; /* Light green */ border-color: var(--accent-green); color: #2e7d32; /* Dark green */ opacity: 1; } .quiz-option-button.correct::after { content: '✔'; margin-left: auto; font-weight: bold; color: #2e7d32; } .quiz-option-button.selected.incorrect::after { content: '✖'; margin-left: auto; font-weight: bold; color: #c62828; } /* End Screen Styles */ .end-screen-container { position: relative; z-index: 10; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(10px); border-radius: var(--card-border-radius); padding: 2.5rem; box-shadow: 0 8px 32px 0 var(--shadow-color); text-align: center; display: flex; flex-direction: column; gap: 1rem; max-width: 500px; } .end-screen-container h2 { font-size: 2.5rem; color: var(--text-primary); margin: 0; } .end-screen-container p { font-size: 1.25rem; color: var(--text-secondary); margin-bottom: 1rem; } .end-screen-buttons { display: flex; flex-direction: column; gap: 1rem; justify-content: center; } @media (min-width: 768px) { .end-screen-buttons { flex-direction: row; } } .end-screen-buttons .button { font-size: 1.1rem; padding: 0.8rem 1.5rem; }