:root { --bg: #f3f5f7; --card: #ffffff; --text: #1d2733; --accent: #0d7c66; --error: #b42318; } * { box-sizing: border-box; } body { margin: 0; font-family: "DejaVu Sans", "Noto Sans", sans-serif; color: var(--text); background: linear-gradient(180deg, #f3f5f7 0%, #e8eef5 100%); } .container { max-width: 860px; margin: 0 auto; padding: 24px; } .card { background: var(--card); border-radius: 10px; padding: 16px; margin-bottom: 16px; border: 1px solid #d0d7de; } label { display: block; margin-top: 10px; margin-bottom: 4px; } input, select, button { width: 100%; padding: 10px; margin-bottom: 10px; border-radius: 8px; border: 1px solid #c5ced8; font-size: 15px; } button { background: var(--accent); color: #fff; border: none; cursor: pointer; } button:hover { filter: brightness(0.95); } .button-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .btn-secondary { background: #3b4958; } .btn-danger { background: #b42318; } .error { color: var(--error); font-size: 14px; min-height: 20px; } .hint { color: #4b5968; font-size: 14px; min-height: 20px; } .terminal { height: 70vh; overflow-y: auto; margin: 0; background: #101418; color: #c9f5d9; border-radius: 10px; padding: 12px; border: 1px solid #2a3745; font-family: "DejaVu Sans Mono", "Noto Sans Mono", monospace; white-space: pre-wrap; } .timeline-page { max-width: 1280px; } .timeline-upload-row { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: center; } .timeline-actions { margin-top: 6px; } .download-links { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 8px; } .timeline-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .timeline-panel { min-height: 70vh; } .timeline-terminal { height: 60vh; } .timeline-table-wrap { border: 1px solid #d0d7de; border-radius: 8px; overflow: auto; max-height: 60vh; background: #ffffff; } .timeline-table { width: 100%; border-collapse: collapse; min-width: 640px; font-size: 13px; } .timeline-table th, .timeline-table td { border-bottom: 1px solid #e6ebf0; border-right: 1px solid #e6ebf0; padding: 6px 8px; text-align: left; white-space: nowrap; } .timeline-table th:last-child, .timeline-table td:last-child { border-right: none; } .timeline-table thead th { background: #f7f9fb; position: sticky; top: 0; z-index: 1; } @media (max-width: 960px) { .timeline-upload-row { grid-template-columns: 1fr; } .timeline-grid { grid-template-columns: 1fr; } .timeline-panel { min-height: auto; } .timeline-terminal, .timeline-table-wrap { max-height: 50vh; height: 50vh; } }