:root{--space-dark: #0a0e27;--space-blue: #1a1f3a;--space-blue-light: #2a3450;--space-blue-lighter: #3a4a6a;--space-accent: #4a9eff;--space-accent-hover: #5fb0ff;--space-text: #e0e8f0;--space-text-muted: #a0b0c0;--space-border: rgba(74, 158, 255, .2);--space-shadow: rgba(0, 0, 0, .3);--space-glow: rgba(74, 158, 255, .3);--composer-min-height: 52px;--composer-radius: 12px;--composer-border: 2px solid var(--space-border);--composer-pad-x: 1rem;--composer-pad-y: .75rem;--composer-font-size: 1rem;--composer-focus-ring: 0 0 0 2px rgba(74, 158, 255, .35)}.chat-interface{display:flex;flex-direction:column;height:100vh;width:100vw;background:linear-gradient(135deg,var(--space-dark) 0%,var(--space-blue) 100%);color:var(--space-text)}.chat-content{display:flex;flex:1;overflow:hidden}.chat-main{display:flex;flex-direction:column;flex:1;overflow:hidden}.message-list{flex:1;overflow-y:auto;padding:2rem;background:linear-gradient(180deg,rgba(26,31,58,.3) 0%,transparent 100%)}.message-list .message,.message-list .loading-indicator{max-width:900px;margin-left:auto;margin-right:auto}.message-list::-webkit-scrollbar{width:8px}.message-list::-webkit-scrollbar-track{background:var(--space-blue);border-radius:4px}.message-list::-webkit-scrollbar-thumb{background:var(--space-accent);border-radius:4px}.message-list::-webkit-scrollbar-thumb:hover{background:var(--space-accent-hover)}.message-list-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--space-text-muted);text-align:center;max-width:900px;margin:0 auto}.welcome-mascot{width:min(100%,520px);height:auto;max-height:200px;object-fit:contain;margin-bottom:1.25rem;filter:drop-shadow(0 8px 24px rgba(0,0,0,.35))}.message-list-empty h2{font-size:2rem;margin-bottom:.5rem;background:linear-gradient(135deg,var(--space-accent) 0%,var(--space-accent-hover) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.message-list-empty p{font-size:1.05rem;line-height:1.65;opacity:.88;margin-bottom:1rem;max-width:min(38rem,100%);margin-left:auto;margin-right:auto}.message-list-empty p strong{color:var(--space-text);font-weight:600}.keyboard-shortcut{display:inline-block;padding:.15rem .45rem;font-size:.85em;font-family:ui-monospace,Cascadia Code,Segoe UI Mono,monospace;color:var(--space-accent-hover);background:#4a9eff1f;border:1px solid var(--space-border);border-radius:6px;vertical-align:baseline}.message{margin-bottom:1.5rem;animation:fadeIn .3s ease-in;width:100%}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-bubble{padding:1rem 1.25rem;border-radius:16px;max-width:75%;box-shadow:0 4px 12px var(--space-shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform .2s ease,box-shadow .2s ease}.message-bubble:hover{transform:translateY(-2px);box-shadow:0 6px 16px var(--space-shadow)}.message-bubble-user{background:linear-gradient(135deg,var(--space-accent) 0%,var(--space-accent-hover) 100%);color:#fff;margin-left:auto;text-align:left;border:1px solid rgba(255,255,255,.1)}.message-bubble-assistant{background:#1a1f3a99;color:var(--space-text);border:1px solid var(--space-border)}.message-content{line-height:1.6}.message-content:not(:last-child){margin-bottom:.75rem}.message-content p{margin:.5rem 0}.message-content code{background:#00000080;padding:.25rem .5rem;border-radius:4px;font-family:Courier New,Monaco,Consolas,Fira Code,monospace;font-size:.9em;color:gold;border:1px solid rgba(255,215,0,.3);font-weight:500}.message-content pre{background:#000000b3;padding:1.25rem;border-radius:8px;overflow-x:auto;border:2px solid var(--space-accent);margin:1rem 0;position:relative;box-shadow:0 4px 12px #00000080}.message-content pre:before{content:"CODE";position:absolute;top:.5rem;right:1rem;font-size:.7rem;color:var(--space-accent);font-weight:700;letter-spacing:1px;opacity:.6}.message-content pre code{background:transparent;padding:0;border:none;color:#e0e8f0;font-size:.9rem;line-height:1.6;display:block}.message-content h1,.message-content h2,.message-content h3,.message-content h4,.message-content h5,.message-content h6{color:var(--space-accent);margin-top:1.5rem;margin-bottom:.75rem;font-weight:700;line-height:1.3}.message-content h1{font-size:1.75rem;border-bottom:2px solid var(--space-border);padding-bottom:.5rem;margin-top:0}.message-content h2{font-size:1.5rem;border-bottom:1px solid var(--space-border);padding-bottom:.25rem}.message-content h3{font-size:1.25rem}.message-content h4{font-size:1.1rem}.message-content p{margin:.75rem 0;line-height:1.7}.message-content ul,.message-content ol{margin:.75rem 0;padding-left:1.75rem}.message-content li{margin:.5rem 0;line-height:1.6}.message-content li::marker{color:var(--space-accent)}.message-content a{color:var(--space-accent);text-decoration:none;border-bottom:1px solid var(--space-accent);transition:all .2s ease}.message-content a:hover{color:var(--space-accent-hover);border-bottom-color:var(--space-accent-hover)}.message-content blockquote{border-left:4px solid var(--space-accent);padding-left:1.25rem;margin:1rem 0;color:var(--space-text-muted);font-style:italic;background:#4a9eff0d;padding-top:.75rem;padding-bottom:.75rem;border-radius:0 6px 6px 0}.message-content hr{border:none;border-top:2px solid var(--space-border);margin:1.5rem 0}.message-content table{width:100%;border-collapse:collapse;margin:.75rem 0;border:1px solid var(--space-border);border-radius:8px;overflow:hidden}.message-content th,.message-content td{padding:.75rem;border:1px solid var(--space-border)}.message-content th{background:#4a9eff33;color:var(--space-accent);font-weight:600}.message-content td{background:#1a1f3a4d}.message-timestamp{font-size:.75rem;opacity:.6;margin-top:.5rem}.message-bubble-user .message-content{white-space:pre-wrap;word-wrap:break-word}.sources{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--space-border)}.sources-header{font-size:.75rem;font-weight:600;margin-bottom:.5rem;color:var(--space-accent);text-transform:uppercase;letter-spacing:.5px}.source{font-size:.8rem;margin-top:.5rem;padding:.5rem;background:#4a9eff1a;border-radius:6px;border-left:3px solid var(--space-accent)}.source-details{display:flex;flex-direction:column;gap:.25rem}.source-title{font-weight:600;color:var(--space-accent)}.source-id,.source-file{opacity:.7;font-size:.75rem}.loading-indicator{display:flex;align-items:center;gap:.75rem;padding:1rem;color:var(--space-text-muted)}.loading-mascot-wrap{flex-shrink:0;width:72px;height:48px;border-radius:10px;background-color:#fffffff0;background-image:url(/images/apollo-instructor-mascot.png);background-repeat:no-repeat;background-size:400% auto;background-position:5% 33%;box-shadow:0 2px 8px var(--space-shadow);animation:mascotLoadingPulse 1.4s ease-in-out infinite;transition:background-position .35s ease}.loading-mascot-wrap--responding{background-position:97% 34%}@keyframes mascotLoadingPulse{0%,to{opacity:.85}50%{opacity:1}}.spinner{width:24px;height:24px;border:3px solid rgba(74,158,255,.2);border-top:3px solid var(--space-accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-message{font-style:italic}.error-display{padding:1rem 1.5rem;background:linear-gradient(135deg,#ff575733,#ff57571a);border-bottom:2px solid rgba(255,87,87,.4);display:flex;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-left:4px solid #ff5757}.error-content{display:flex;align-items:center;gap:.75rem;color:#ff8a8a}.error-icon{font-size:1.25rem}.error-actions{display:flex;gap:.75rem}.error-retry,.error-dismiss{padding:.5rem 1rem;border:none;border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s ease}.error-retry{background:var(--space-accent);color:#fff}.error-retry:hover{background:var(--space-accent-hover);transform:translateY(-1px)}.error-dismiss{background:#ffffff1a;color:var(--space-text);border:1px solid var(--space-border)}.error-dismiss:hover{background:#fff3}.input-section{padding:1.5rem;background:#1a1f3acc;border-top:1px solid var(--space-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;justify-content:center}.input-container{display:flex;gap:.75rem;align-items:flex-end;max-width:900px;width:100%}.message-input-form{display:flex;gap:.75rem;align-items:flex-end;flex:1}.message-input{flex:1;padding:var(--composer-pad-y) var(--composer-pad-x);border:var(--composer-border);border-radius:var(--composer-radius);resize:none;min-height:var(--composer-min-height);max-height:200px;background:#0a0e2799;color:var(--space-text);font-size:var(--composer-font-size);font-family:inherit;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;white-space:pre-wrap;word-wrap:break-word;overflow-y:auto;line-height:1.5}.message-input:focus{outline:none;border-color:var(--space-accent);box-shadow:var(--composer-focus-ring);background:#0a0e27cc}.message-input::placeholder{color:var(--space-text-muted)}.message-input:disabled{opacity:.5;cursor:not-allowed}.message-input::-webkit-scrollbar{width:5px}.message-input::-webkit-scrollbar-track{background:transparent;margin:6px 0;border-radius:3px}.message-input::-webkit-scrollbar-thumb{background:#4a9eff59;border-radius:3px}.message-input::-webkit-scrollbar-thumb:hover{background:#5fb0ff80}.send-button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--composer-min-height);padding:0 1.5rem;background:linear-gradient(135deg,var(--space-accent) 0%,var(--space-accent-hover) 100%);color:#fff;border:var(--composer-border);border-color:#4a9eff73;border-radius:var(--composer-radius);cursor:pointer;font-weight:600;font-size:var(--composer-font-size);line-height:1.25;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;box-shadow:0 4px 12px #4a9eff4d;min-width:100px;flex-shrink:0;align-self:flex-end}.send-button:hover:not(:disabled){transform:translateY(-2px);border-color:#ffffff40;box-shadow:0 6px 16px #4a9eff66}.send-button:focus-visible{outline:none;box-shadow:var(--composer-focus-ring),0 4px 12px #4a9eff4d}.send-button:active:not(:disabled){transform:translateY(0)}.send-button:disabled{background:#4a9eff4d;border-color:var(--space-border);cursor:not-allowed;box-shadow:none;opacity:.6}.course-selector{display:flex;align-items:center;align-self:flex-end;gap:.5rem}.course-selector label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.course-select{width:140px;min-height:var(--composer-min-height);padding:var(--composer-pad-y) 1.75rem var(--composer-pad-y) var(--composer-pad-x);border:var(--composer-border);border-radius:var(--composer-radius);background:#0a0e2799;color:var(--space-text);font-size:var(--composer-font-size);font-family:inherit;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.25;flex-shrink:0}.course-select:focus{outline:none;border-color:var(--space-accent);box-shadow:var(--composer-focus-ring);background-color:#0a0e27cc}.course-select:hover{border-color:var(--space-accent-hover)}.course-select option{background:var(--space-blue);color:var(--space-text);padding:.5rem}.header{padding:1.5rem 2rem;border-bottom:2px solid var(--space-border);background:#1a1f3ae6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 2px 8px var(--space-shadow)}.header-content{max-width:1400px;margin:0 auto}.header-logo{display:flex;align-items:center;gap:1.25rem}.header-mascot{width:64px;height:64px;flex-shrink:0;border-radius:14px;background-color:#fffffff5;background-image:url(/images/apollo-instructor-mascot.png);background-repeat:no-repeat;background-size:400% auto;background-position:5% 42%;box-shadow:0 4px 12px var(--space-shadow)}.logo-text-block{display:flex;flex-direction:column;gap:0}.logo-text{font-size:1.75rem;margin:0;background:linear-gradient(135deg,var(--space-accent) 0%,var(--space-accent-hover) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700}.logo-text-subtitle{font-size:.95rem;color:var(--space-text-muted);margin:.25rem 0 0;font-weight:400}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.clear-chat-button{padding:.75rem 1.5rem;background:#ff575733;color:#ff8a8a;border:2px solid rgba(255,87,87,.4);border-radius:8px;cursor:pointer;font-weight:600;font-size:.9rem;transition:all .2s ease;font-family:inherit}.clear-chat-button:hover{background:#ff57574d;border-color:#ff575799;transform:translateY(-1px);box-shadow:0 4px 12px #ff575733}.clear-chat-button:focus-visible{outline:none;box-shadow:0 0 0 2px #ff8a8a80,0 4px 12px #ff575733}.confirm-clear-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-in}.confirm-clear-dialog{background:linear-gradient(135deg,var(--space-blue) 0%,var(--space-blue-light) 100%);border:2px solid var(--space-border);border-radius:16px;padding:2rem;max-width:400px;width:90%;box-shadow:0 8px 32px var(--space-shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:slideUp .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.confirm-clear-title{font-size:1.5rem;font-weight:700;margin:0 0 1rem;color:var(--space-text);background:linear-gradient(135deg,var(--space-accent) 0%,var(--space-accent-hover) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.confirm-clear-message{color:var(--space-text-muted);margin:0 0 2rem;line-height:1.6;font-size:1rem}.confirm-clear-dialog-buttons{display:flex;gap:1rem;justify-content:flex-end}.confirm-clear-button{padding:.75rem 1.5rem;border:none;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .2s ease;font-family:inherit}.confirm-clear-button-cancel{background:#ffffff1a;color:var(--space-text);border:1px solid var(--space-border)}.confirm-clear-button-cancel:hover{background:#fff3;transform:translateY(-1px)}.confirm-clear-button-confirm{background:linear-gradient(135deg,#ff5757,#ff7878);color:#fff;box-shadow:0 4px 12px #ff57574d}.confirm-clear-button-confirm:hover{background:linear-gradient(135deg,#ff4545,#ff6767);transform:translateY(-1px);box-shadow:0 6px 16px #ff575766}.app-container{width:100%;height:100%;margin:0;padding:0}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;padding:0;overflow:hidden;font-family:-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;background:#0a0e27}
