* { box-sizing: border-box; } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; background: #f8fafc; color: #1e293b; line-height: 1.5; } .container { max-width: 900px; margin: 0 auto; padding: 2rem; } header { margin-bottom: 1.5rem; } header h1 { margin: 0 0 0.25rem; font-size: 1.75rem; font-weight: 700; } .tagline { margin: 0; font-size: 0.95rem; color: #64748b; } .desc { margin: 0.5rem 0 0; font-size: 0.9rem; color: #475569; } /* Tabs */ .tabs { display: flex; gap: 0; margin-bottom: 1rem; border-bottom: 1px solid #e2e8f0; } .tab-btn { padding: 0.6rem 1.2rem; font-size: 0.95rem; font-weight: 500; background: none; border: none; border-bottom: 2px solid transparent; color: #64748b; cursor: pointer; margin-bottom: -1px; } .tab-btn:hover { color: #334155; } .tab-btn.active { color: #3b82f6; border-bottom-color: #3b82f6; } .tab-content { display: none; } .tab-content.active { display: block; } main { display: flex; flex-direction: column; gap: 1.5rem; } .input-section { background: #fff; border-radius: 8px; padding: 1rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); } .input-header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 0.75rem; margin-bottom: 0.5rem; } .input-header label { font-weight: 500; font-size: 0.9rem; } .input-actions { display: flex; align-items: center; gap: 0.75rem; } #sample-select { padding: 0.35rem 0.5rem; font-size: 0.85rem; border: 1px solid #cbd5e1; border-radius: 4px; background: #fff; } .pred-steps { display: flex; align-items: center; gap: 0.35rem; font-size: 0.85rem; } #pred-steps { width: 3.5rem; padding: 0.35rem; font-size: 0.9rem; border: 1px solid #cbd5e1; border-radius: 4px; } #ts-input { width: 100%; padding: 0.75rem; font-size: 0.9rem; font-family: inherit; border: 1px solid #e2e8f0; border-radius: 6px; resize: vertical; min-height: 80px; } #ts-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); } .output-section { background: #fff; border-radius: 8px; padding: 1rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); } .forecast-display { margin-bottom: 1rem; font-size: 1rem; } .forecast-display .label { color: #64748b; } .forecast-display .value { font-weight: 600; color: #1e293b; } .forecast-display .range { font-size: 0.85rem; color: #64748b; margin-left: 0.25rem; } .loading { padding: 0.5rem 0; color: #3b82f6; font-size: 0.9rem; } .error { padding: 0.5rem 0; color: #dc2626; font-size: 0.9rem; } .chart-container { position: relative; height: 300px; margin: 1rem 0; } .download-row { margin-top: 1rem; } #download-csv { padding: 0.5rem 1rem; font-size: 0.9rem; background: #3b82f6; color: #fff; border: none; border-radius: 6px; cursor: pointer; } #download-csv:hover { background: #2563eb; } #download-csv:disabled { background: #94a3b8; cursor: not-allowed; } /* Compare tab */ .compare-section { background: #fff; border-radius: 8px; padding: 1.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); } .compare-section h2 { margin: 0 0 0.75rem; font-size: 1.25rem; } .compare-intro { margin: 0 0 1.5rem; color: #475569; font-size: 0.95rem; } .pipeline-row { display: flex; flex-direction: column; gap: 2rem; } .pipeline-block { display: flex; flex-direction: column; gap: 0.75rem; } .pipeline-label { margin: 0; font-size: 1rem; font-weight: 600; color: #334155; } .pipeline { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0; } .pipeline.ml-pipeline { font-size: 0.8rem; } .pipeline.chronos-pipeline { font-size: 1rem; } .pipeline .step { padding: 0.4rem 0.6rem; border: 1px solid #e2e8f0; border-radius: 4px; background: #f8fafc; white-space: nowrap; } .pipeline .step.highlight { background: #ecfdf5; border-color: #059669; color: #047857; font-weight: 600; } .pipeline .arrow { color: #94a3b8; font-size: 0.9em; padding: 0 0.2rem; } .pipeline.chronos-pipeline .arrow { font-size: 1.1em; } .compare-cta { margin: 1.5rem 0 0; font-size: 0.95rem; color: #475569; } .compare-cta strong { color: #059669; }