.hero { position: relative; overflow: hidden; display: grid; grid-template-columns: 1.5fr 1fr; gap: 1.5rem; margin-bottom: 1.5rem; padding: 1.5rem; border-radius: 24px; background: radial-gradient(circle at top left, rgba(255, 135, 61, 0.24), transparent 34%), linear-gradient(135deg, #0f172a, #162033 42%, #1f2f46 100%); color: #f8fafc; box-shadow: 0 24px 80px rgba(15, 23, 42, 0.24); } .hero::after { content: ""; position: absolute; inset: auto -10% -35% auto; width: 260px; height: 260px; border-radius: 50%; background: rgba(255, 255, 255, 0.06); filter: blur(8px); } .heroCopy { position: relative; z-index: 1; } .kicker, .eyebrow, .metricLabel, .statLabel { display: inline-block; text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.72rem; opacity: 0.72; } .heroCopy h2 { margin: 0.35rem 0 0.85rem; font-size: 2rem; line-height: 1.08; max-width: 14ch; } .heroText { max-width: 62ch; margin: 0; color: rgba(248, 250, 252, 0.8); } .heroMetrics { position: relative; z-index: 1; display: grid; gap: 0.9rem; } .metricTile, .statCard, .detailCard, .jsonCard, .emptyPanel, .stepItem { border: 1px solid rgba(148, 163, 184, 0.18); border-radius: 20px; background: rgba(255, 255, 255, 0.06); backdrop-filter: blur(10px); } .metricTile { padding: 1rem 1.1rem; display: grid; gap: 0.35rem; } .metricTile strong { font-size: 1rem; line-height: 1.35; } .dashboardShell { display: grid; gap: 1.25rem; } .controlRow { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: stretch; } .controlCard, .mainPanel { border: 1px solid rgba(148, 163, 184, 0.18); border-radius: 24px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.94)); box-shadow: 0 24px 60px rgba(15, 23, 42, 0.08); } .controlCard { padding: 1.1rem 1.2rem; display: grid; gap: 0.9rem; min-height: 10.5rem; } .mainPanel { padding: 1.15rem; } .mainPanelHeader, .controlHeader { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.9rem; flex-wrap: wrap; } .controlTitle { margin: 0.18rem 0 0; font-size: 1.12rem; color: #0f172a; } .controlText { margin: 0; color: #475569; line-height: 1.5; } .controlForm { display: grid; gap: 0.75rem; } .panelBody { display: grid; gap: 1rem; } .inlineRow, .actionRow, .jobHeader, .progressMeta { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; flex-wrap: wrap; } .statusPill { display: inline-flex; align-items: center; justify-content: center; min-height: 2rem; padding: 0.3rem 0.8rem; border-radius: 999px; font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; } .success { background: rgba(22, 163, 74, 0.14); color: #166534; } .warning { background: rgba(245, 158, 11, 0.16); color: #92400e; } .active { background: rgba(14, 165, 233, 0.14); color: #075985; } .error { background: rgba(239, 68, 68, 0.16); color: #991b1b; } .jobPanel { display: grid; gap: 1rem; } .analyticsGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; } .analyticsCard { padding: 1rem; border-radius: 20px; border: 1px solid rgba(148, 163, 184, 0.18); background: linear-gradient(135deg, rgba(255, 247, 237, 0.92), rgba(255, 255, 255, 0.98)); display: grid; gap: 0.35rem; box-shadow: 0 18px 40px rgba(15, 23, 42, 0.08); } .analyticsSunrise { background: linear-gradient(135deg, rgba(255, 237, 213, 0.96), rgba(255, 251, 235, 0.98)); } .analyticsIce { background: linear-gradient(135deg, rgba(224, 242, 254, 0.96), rgba(248, 250, 252, 0.98)); } .analyticsMint { background: linear-gradient(135deg, rgba(220, 252, 231, 0.96), rgba(240, 253, 244, 0.98)); } .analyticsNavy { background: linear-gradient(135deg, rgba(224, 231, 255, 0.96), rgba(238, 242, 255, 0.98)); } .analyticsLabel { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; color: #64748b; } .analyticsValue { font-size: 1.45rem; line-height: 1.1; color: #0f172a; } .analyticsMeta { font-size: 0.82rem; color: #475569; } .highlightGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.85rem; } .highlightCard, .timelineCard { padding: 1rem; border-radius: 20px; border: 1px solid rgba(148, 163, 184, 0.18); background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.94)); } .highlightCard { display: grid; gap: 0.35rem; } .highlightLabel, .stageMeta { font-size: 0.82rem; color: #64748b; } .highlightValue { font-size: 1.1rem; line-height: 1.25; color: #0f172a; } .highlightMeta { font-size: 0.8rem; color: #475569; } .timelineHeader { display: grid; gap: 0.2rem; } .timelineSubtitle, .progressOverviewMeta { font-size: 0.8rem; color: #64748b; } .timelineTitle { color: #0f172a; font-size: 1rem; } .progressOverviewGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.85rem; } .progressOverviewCard { padding: 1rem; border-radius: 20px; border: 1px solid rgba(148, 163, 184, 0.18); background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.94)); display: grid; gap: 0.3rem; } .progressOverviewValue { font-size: 1rem; line-height: 1.35; color: #0f172a; } .stageList { display: grid; gap: 0.75rem; margin-top: 0.85rem; } .stageItem { display: flex; align-items: center; justify-content: space-between; gap: 0.85rem; padding: 0.85rem 0.95rem; border-radius: 16px; background: rgba(248, 250, 252, 0.92); border: 1px solid rgba(226, 232, 240, 0.95); } .stageMain { display: flex; align-items: flex-start; gap: 0.75rem; flex: 1; } .stageDot { width: 0.85rem; height: 0.85rem; margin-top: 0.15rem; border-radius: 999px; flex: 0 0 auto; } .stagePending { background: #cbd5e1; } .stageActive { background: #f97316; box-shadow: 0 0 0 6px rgba(249, 115, 22, 0.15); } .stageDone { background: #16a34a; box-shadow: 0 0 0 6px rgba(22, 163, 74, 0.12); } .stageError { background: #dc2626; box-shadow: 0 0 0 6px rgba(220, 38, 38, 0.12); } .stageTitle { display: block; color: #0f172a; margin-bottom: 0.18rem; } .stageValue { font-weight: 700; color: #0f172a; white-space: nowrap; } .panelTitle { margin: 0.15rem 0 0; font-size: 1.15rem; } .progressTrack { position: relative; height: 0.8rem; border-radius: 999px; overflow: hidden; background: linear-gradient(90deg, #e2e8f0, #f8fafc); } .progressFill { height: 100%; border-radius: inherit; background: linear-gradient(90deg, #ff7a18, #ffb347 55%, #ffd166); box-shadow: 0 0 24px rgba(255, 122, 24, 0.35); animation: pulse 1.8s ease-in-out infinite; } .statGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; } .statCard, .detailCard, .jsonCard { padding: 1rem; } .detailCard p { margin: 0.35rem 0 0; } .warningCard { background: linear-gradient(135deg, rgba(255, 237, 213, 0.9), rgba(255, 247, 237, 0.95)); } .successCard { background: linear-gradient(135deg, rgba(220, 252, 231, 0.92), rgba(240, 253, 244, 0.96)); } .errorCard { background: linear-gradient(135deg, rgba(254, 226, 226, 0.92), rgba(255, 241, 242, 0.96)); } .jsonCard { overflow: auto; background: #0f172a; color: #e2e8f0; } .logCard { padding: 1rem; border: 1px solid rgba(148, 163, 184, 0.18); border-radius: 20px; background: #111827; color: #e5e7eb; } .logList { display: grid; gap: 0.55rem; margin-top: 0.75rem; max-height: 18rem; overflow: auto; } .logLine { display: grid; gap: 0.25rem; padding: 0.7rem 0.8rem; border-radius: 14px; background: rgba(255, 255, 255, 0.04); border: 1px solid transparent; } .logNeutral { border-color: rgba(148, 163, 184, 0.16); } .logProgress { border-color: rgba(251, 191, 36, 0.24); background: rgba(251, 191, 36, 0.08); } .logSuccess { border-color: rgba(74, 222, 128, 0.24); background: rgba(34, 197, 94, 0.08); } .logError { border-color: rgba(248, 113, 113, 0.24); background: rgba(239, 68, 68, 0.08); } .logTitle { font-size: 0.9rem; color: #f8fafc; } .logDetail { margin: 0; white-space: pre-wrap; word-break: break-word; font-size: 0.82rem; color: #dbe4f0; } .logTime { font-size: 0.75rem; color: #94a3b8; } .emptyPanel { position: relative; overflow: hidden; padding: 1.3rem; background: linear-gradient(135deg, #fff8ed, #ffffff); } .emptyGlow { position: absolute; inset: auto -30px -40px auto; width: 110px; height: 110px; border-radius: 50%; background: rgba(255, 122, 24, 0.14); filter: blur(6px); } .emptyPanel h3, .emptyPanel p { position: relative; z-index: 1; } .emptyPanel h3 { margin: 0 0 0.35rem; } .emptyPanel p { margin: 0; color: #475569; } .stepList { display: grid; gap: 0.75rem; } .stepItem { padding: 0.95rem 1rem; background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.94)); } @media (max-width: 900px) { .controlRow, .analyticsGrid, .statGrid, .highlightGrid, .progressOverviewGrid { grid-template-columns: 1fr; } .stageItem { flex-direction: column; align-items: flex-start; } .stageValue { margin-left: 1.6rem; } } @keyframes pulse { 0%, 100% { filter: saturate(1); } 50% { filter: saturate(1.25); } } @media (max-width: 960px) { .hero, .controlRow { grid-template-columns: 1fr; } .heroCopy h2 { max-width: none; } } @media (max-width: 640px) { .hero { padding: 1.2rem; } .heroCopy h2 { font-size: 1.55rem; } .analyticsGrid, .statGrid, .progressOverviewGrid { grid-template-columns: 1fr; } }