.realtime-logs{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border:1px solid #dee2e6;border-radius:12px;padding:1rem;margin:1rem 0;font-family:Monaco,Menlo,Ubuntu Mono,monospace;max-height:500px;overflow:hidden;display:flex;flex-direction:column}.logs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid #ced4da}.status-indicator{display:flex;align-items:center;gap:.5rem}.pulse-dot{width:10px;height:10px;border-radius:50%;background-color:#6c757d;opacity:.5}.pulse-dot.active{background-color:#28a745;opacity:1;animation:pulse 2s infinite}.status-text{font-size:.875rem;font-weight:600;color:#495057}.progress-container{display:flex;align-items:center;gap:.5rem;min-width:200px;flex-wrap:wrap}.progress-bar{height:8px;background-color:#e9ecef;border-radius:4px;overflow:hidden;flex:1}.progress-fill{height:100%;background:linear-gradient(90deg,#007bff,#28a745);border-radius:4px;transition:width .5s ease}.progress-text{font-size:.75rem;font-weight:600;color:#495057;min-width:35px;text-align:right}.time-remaining{font-size:.7rem;color:#6c757d;background:#6c757d1a;padding:.125rem .375rem;border-radius:4px;margin-left:.25rem}.current-step{background:linear-gradient(135deg,#007bff,#0056b3);color:#fff;padding:.75rem;border-radius:8px;margin-bottom:1rem;animation:glow 2s ease-in-out infinite alternate}@keyframes glow{0%{box-shadow:0 0 5px #007bff4d}to{box-shadow:0 0 15px #007bff99}}.step-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.step-progress{font-size:.75rem;font-weight:700;background:#fff3;padding:.25rem .5rem;border-radius:4px}.step-title{font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.25rem}.step-message{font-size:.8rem;opacity:.9}.logs-container{flex:1;overflow-y:auto;max-height:300px;background:#fff;border-radius:8px;padding:.5rem;border:1px solid #e9ecef}.log-entry{display:flex;gap:.75rem;padding:.5rem;margin-bottom:.25rem;border-radius:6px;transition:background-color .2s ease;animation:slideIn .3s ease}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.log-entry:hover{background-color:#f8f9fa}.log-entry.success{border-left:3px solid #28a745}.log-entry.error{border-left:3px solid #dc3545;background-color:#fff5f5}.log-entry.warning{border-left:3px solid #ffc107;background-color:#fffef5}.log-entry.info{border-left:3px solid #17a2b8}.log-meta{display:flex;flex-direction:column;align-items:center;gap:.125rem;min-width:60px;font-size:.7rem;color:#6c757d}.log-time{font-weight:500}.log-status{font-size:1rem}.log-progress{font-weight:600;color:#007bff}.log-content{flex:1;display:flex;flex-direction:column;gap:.125rem}.log-step{font-size:.7rem;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.5px}.log-message{font-size:.8rem;color:#212529;line-height:1.2}.log-tts-metadata{display:flex;align-items:center;gap:.5rem;margin-top:.375rem;padding:.375rem;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:6px;border:1px solid #dee2e6}.mini-progress-bar{flex:1;height:4px;background:#e9ecef;border-radius:2px;overflow:hidden}.mini-progress-fill{height:100%;background:linear-gradient(90deg,#007bff,#28a745);border-radius:2px;transition:width .3s ease}.mini-progress-text{font-size:.7rem;font-weight:700;color:#495057;min-width:35px;text-align:right}.mini-time{font-size:.65rem;color:#6c757d;font-weight:500}.logs-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem;padding-top:.5rem;border-top:1px solid #e9ecef;font-size:.7rem;color:#6c757d;flex-wrap:wrap;gap:.5rem}.status-live{background:#dc3545;color:#fff;padding:.125rem .375rem;border-radius:4px;font-weight:600;animation:pulse 1.5s infinite;font-size:.625rem;text-transform:uppercase}.log-entry.typing{opacity:.8;background:#007bff0d}.typing-dots{display:inline-block;margin-left:.25rem}.typing-dots span{animation:typing 1.4s ease-in-out infinite;opacity:0}.typing-dots span:nth-child(1){animation-delay:0s}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{opacity:0}30%{opacity:1}}.console-logs{background:#1e1e1e;border:1px solid #333;border-radius:8px;margin-top:1rem;font-family:Monaco,Menlo,Consolas,Courier New,monospace;box-shadow:inset 0 2px 4px #0000001a}.console-header{background:#2d2d2d;color:#fff;padding:.5rem 1rem;border-bottom:1px solid #444;display:flex;justify-content:space-between;align-items:center;border-radius:8px 8px 0 0}.console-title{font-size:.875rem;font-weight:600}.console-live{background:#dc3545;color:#fff;padding:.125rem .375rem;border-radius:4px;font-size:.625rem;font-weight:600;animation:pulse 1.5s infinite}.console-content{max-height:400px;overflow-y:auto;padding:.5rem;background:#1e1e1e;border-radius:0 0 8px 8px}.console-line{display:flex;align-items:flex-start;gap:.75rem;font-size:.8rem;line-height:1.3;border-left:3px solid transparent;padding:.25rem 0 .25rem .5rem;margin-bottom:.125rem;word-wrap:break-word;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.console-line.info{border-left-color:#17a2b8;color:#e9ecef}.console-line.success{border-left-color:#28a745;color:#d4edda}.console-line.error{border-left-color:#dc3545;color:#f8d7da;background:#dc35451a}.console-line.warning{border-left-color:#ffc107;color:#fff3cd;background:#ffc1071a}.console-line.waiting{opacity:.7;animation:pulse 2s infinite}.console-line.typing{opacity:.8;background:#17a2b81a}.console-timestamp{color:#6c757d;font-size:.7rem;min-width:180px;font-family:monospace}.console-level{color:#adb5bd;font-weight:600;min-width:60px;font-size:.7rem;text-transform:uppercase}.console-line.info .console-level{color:#17a2b8}.console-line.success .console-level{color:#28a745}.console-line.error .console-level{color:#dc3545}.console-line.warning .console-level{color:#ffc107}.console-message{flex:1;color:#e9ecef;word-break:break-word}.console-progress{color:#ffc107;font-weight:600;font-size:.7rem;margin-left:.5rem}.console-content::-webkit-scrollbar{width:8px}.console-content::-webkit-scrollbar-track{background:#2d2d2d}.console-content::-webkit-scrollbar-thumb{background:#555;border-radius:4px}.console-content::-webkit-scrollbar-thumb:hover{background:#777}@media (max-width: 768px){.console-line{flex-direction:column;gap:.25rem}.console-timestamp,.console-level{min-width:unset}.console-header{flex-direction:column;gap:.25rem}}.logs-count{font-weight:600}.last-update{font-style:italic}@media (max-width: 768px){.realtime-logs{padding:.75rem;margin:.75rem 0}.logs-header{flex-direction:column;gap:.5rem;align-items:stretch}.progress-container{min-width:unset}.log-entry{gap:.5rem}.log-meta{min-width:50px}.logs-footer{flex-direction:column;gap:.25rem;align-items:center}}@media (prefers-color-scheme: dark){.realtime-logs{background:linear-gradient(135deg,#2d3748,#1a202c);border-color:#4a5568;color:#e2e8f0}.logs-header{border-bottom-color:#4a5568}.status-text,.progress-text{color:#e2e8f0}.logs-container{background:#2d3748;border-color:#4a5568}.log-entry:hover{background-color:#374151}.log-message{color:#e2e8f0}.logs-footer{border-top-color:#4a5568;color:#a0aec0}}*{box-sizing:border-box}html{height:100%}body{margin:0;padding:0;min-height:100%;font-family:Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fafafa}#root{height:100vh;overflow:hidden}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0003;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#0000004d}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #1976d2;outline-offset:2px}button:focus:not(:focus-visible),input:focus:not(:focus-visible),textarea:focus:not(:focus-visible),select:focus:not(:focus-visible){outline:none}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.loading{animation:pulse 1.5s ease-in-out infinite}@keyframes bounce{0%,20%,53%,80%,to{transform:translateY(0)}40%,43%{transform:translateY(-10px)}70%{transform:translateY(-5px)}90%{transform:translateY(-2px)}}.bounce{animation:bounce 1s ease-in-out}@media (max-width: 600px){body{font-size:14px}}@media print{body{background:#fff!important}}
