:root { color-scheme: light; --ink: #202016; --muted: #6b6d5b; --paper: #fff9ec; --panel: rgba(255, 252, 243, 0.78); --forest: #214f3a; --forest-deep: #132f22; --clay: #be684b; --blue: #314b63; --line: rgba(37, 44, 31, 0.14); --shadow: 0 20px 58px rgba(32, 32, 22, 0.12); font-family: "IBM Plex Sans", ui-sans-serif, sans-serif; } * { box-sizing: border-box; } body { min-width: 320px; margin: 0; color: var(--ink); background: radial-gradient(circle at 8% 4%, rgba(190, 104, 75, 0.18), transparent 28rem), radial-gradient(circle at 94% 18%, rgba(49, 75, 99, 0.18), transparent 34rem), linear-gradient(135deg, #f4efe3 0%, #edf3e4 48%, #f8f2e6 100%); } button, input, select, textarea { font: inherit; } button { cursor: pointer; } .app { width: min(1480px, 100%); min-height: 100vh; margin: 0 auto; padding: 22px clamp(12px, 3vw, 36px) 38px; } .hero { position: relative; min-height: 260px; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.36); border-radius: 8px; padding: clamp(26px, 5vw, 58px); color: var(--paper); background: linear-gradient(110deg, rgba(20, 44, 33, 0.94), rgba(30, 63, 47, 0.82) 54%, rgba(190, 104, 75, 0.74)), url("https://images.unsplash.com/photo-1518611012118-696072aa579a?auto=format&fit=crop&w=1800&q=80"); background-position: center; background-size: cover; box-shadow: 0 26px 80px rgba(32, 32, 22, 0.18); } .hero::after { content: ""; position: absolute; inset: auto 0 0 0; height: 44%; background: linear-gradient(0deg, rgba(13, 26, 20, 0.56), transparent); pointer-events: none; } .hero-content, .hero-metrics { position: relative; z-index: 1; } .eyebrow, .metric span, .status-pill, .label, .tab, .artifact-link, .json-block { font-family: "IBM Plex Mono", ui-monospace, monospace; } .eyebrow { margin: 0 0 14px; color: #dfead3; font-size: 0.78rem; letter-spacing: 0; text-transform: uppercase; } .hero h1 { margin: 0; color: var(--paper); font-size: clamp(2.7rem, 8vw, 6.7rem); line-height: 0.9; letter-spacing: 0; } .hero p { max-width: 660px; margin: 22px 0 0; color: rgba(255, 249, 236, 0.86); font-size: clamp(1rem, 1.7vw, 1.22rem); line-height: 1.55; } .hero-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; max-width: 620px; margin-top: clamp(26px, 4vw, 46px); overflow: hidden; border: 1px solid rgba(255, 249, 236, 0.22); border-radius: 8px; background: rgba(255, 249, 236, 0.16); backdrop-filter: blur(18px); } .metric { padding: 18px; background: rgba(10, 22, 16, 0.32); } .metric strong { display: block; color: var(--paper); font-size: clamp(1.35rem, 2.6vw, 2rem); line-height: 1; } .metric span { display: block; margin-top: 7px; color: rgba(255, 249, 236, 0.72); font-size: 0.72rem; letter-spacing: 0; text-transform: uppercase; } .workspace { display: grid; grid-template-columns: minmax(360px, 0.84fr) minmax(440px, 1.16fr); gap: 18px; margin-top: 18px; align-items: stretch; } .panel, .summary, .artifact-panel { border: 1px solid var(--line); border-radius: 8px; background: var(--panel); box-shadow: var(--shadow); backdrop-filter: blur(18px); } .panel { padding: 16px; } .panel-head { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; margin-bottom: 14px; } .panel h2, .summary h2 { margin: 0; color: var(--forest); font-size: 1.12rem; line-height: 1.2; } .panel p, .summary p { margin: 6px 0 0; color: var(--muted); line-height: 1.45; } .status-pill { flex: 0 0 auto; border: 1px solid rgba(33, 79, 58, 0.18); border-radius: 999px; padding: 7px 10px; color: var(--forest); background: rgba(33, 79, 58, 0.08); font-size: 0.72rem; font-weight: 600; text-transform: uppercase; } .dropzone { display: grid; min-height: 346px; overflow: hidden; border: 1px dashed rgba(33, 79, 58, 0.28); border-radius: 8px; background: #171815; color: var(--paper); place-items: center; } .dropzone input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; } .dropzone-preview, .result-video { width: 100%; height: 100%; min-height: 346px; object-fit: contain; background: #171815; } .dropzone-empty { display: grid; gap: 10px; justify-items: center; padding: 28px; text-align: center; } .upload-icon { display: grid; width: 52px; height: 52px; border: 1px solid rgba(255, 249, 236, 0.24); border-radius: 999px; color: #dce9d3; place-items: center; } .dropzone-empty strong { font-size: 1.06rem; } .dropzone-empty span { color: rgba(255, 249, 236, 0.62); } .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 16px; } .field { display: grid; gap: 7px; } .field.full { grid-column: 1 / -1; } .label { color: #4d5244; font-size: 0.76rem; font-weight: 600; text-transform: uppercase; } select, input[type="text"] { width: 100%; min-height: 44px; border: 1px solid rgba(37, 44, 31, 0.16); border-radius: 8px; padding: 0 12px; color: var(--ink); background: rgba(255, 253, 247, 0.92); } select:focus, input[type="text"]:focus, .tab:focus, .primary:focus { outline: 3px solid rgba(33, 79, 58, 0.24); outline-offset: 2px; } .check-grid { display: flex; flex-wrap: wrap; gap: 8px; } .check-chip { display: inline-flex; gap: 8px; align-items: center; min-height: 40px; border: 1px solid rgba(37, 44, 31, 0.13); border-radius: 8px; padding: 0 12px; background: rgba(255, 253, 247, 0.74); } .check-chip input { accent-color: var(--forest); } .primary { width: 100%; min-height: 52px; margin-top: 16px; border: 0; border-radius: 8px; color: var(--paper); background: var(--forest); box-shadow: 0 12px 26px rgba(33, 79, 58, 0.22); font-weight: 700; } .primary:hover { background: var(--forest-deep); } .primary:disabled { cursor: wait; opacity: 0.72; } .progress-panel { border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; margin-top: 14px; padding: 14px; background: rgba(255, 253, 247, 0.66); } .progress-panel h3 { margin: 0 0 12px; color: var(--forest); font-size: 0.96rem; } .progress-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; } .progress-step { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; align-items: start; color: var(--muted); line-height: 1.35; } .progress-step.done { color: #304133; } .progress-step.active { color: var(--forest-deep); font-weight: 600; } .progress-dot { width: 10px; height: 10px; border: 2px solid rgba(33, 79, 58, 0.3); border-radius: 999px; margin-top: 4px; background: rgba(255, 253, 247, 0.9); } .progress-step.done .progress-dot { border-color: var(--forest); background: var(--forest); } .progress-step.active .progress-dot { border-color: var(--clay); background: var(--clay); box-shadow: 0 0 0 5px rgba(190, 104, 75, 0.14); } .scan-insights { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 14px; } .scan-insight { min-width: 0; border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; padding: 12px; background: rgba(255, 253, 247, 0.74); } .scan-insight span, .scan-insight small { display: block; color: var(--muted); font-size: 0.8rem; } .scan-insight strong { display: block; overflow-wrap: anywhere; margin: 4px 0; color: var(--forest-deep); font-size: 1.04rem; } .result-stage { display: grid; min-height: 470px; overflow: hidden; border-radius: 8px; background: #171815; color: var(--paper); place-items: center; } .result-empty { max-width: 360px; padding: 24px; text-align: center; } .result-empty strong { display: block; margin-bottom: 8px; font-size: 1.08rem; } .result-empty span { color: rgba(255, 249, 236, 0.62); line-height: 1.45; } .summary { margin-top: 18px; padding: clamp(16px, 2vw, 24px); } .stat-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin: 16px 0; } .metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 16px 0; } .stat { border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; padding: 14px; background: rgba(255, 253, 247, 0.66); } .stat span { display: block; color: var(--muted); font-size: 0.82rem; } .stat strong { display: block; margin-top: 5px; color: var(--forest); font-size: 1.12rem; } .note-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .note { border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; padding: 14px; background: rgba(255, 253, 247, 0.58); } .note h3 { margin: 0 0 10px; color: var(--forest); font-size: 0.96rem; } .note ul { display: grid; gap: 8px; margin: 0; padding-left: 18px; color: #3e4438; } .full-note { margin-top: 12px; } .full-note p { margin: 0; } .table-wrap { overflow: auto; border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; background: rgba(255, 253, 247, 0.68); } table { width: 100%; border-collapse: collapse; min-width: 620px; } th, td { border-bottom: 1px solid rgba(37, 44, 31, 0.1); padding: 11px 12px; text-align: left; } th { color: var(--forest); font-size: 0.78rem; text-transform: uppercase; } td { color: #3e4438; } .rep-grid, .issue-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 14px; } .rep-card, .issue-card { border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; background: rgba(255, 253, 247, 0.66); } .rep-card { display: grid; gap: 6px; padding: 14px; } .rep-card strong { color: var(--forest-deep); } .rep-card span { color: var(--muted); font-size: 0.88rem; } .issue-card { overflow: hidden; } .issue-card .timeline-main, .issue-card .timeline-meta { padding: 10px 12px; } .issue-card .timeline-meta { padding-top: 0; } .issue-thumb, .issue-clip { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: contain; background: #171815; } .issue-clip { color: var(--paper); } .issue-thumb.empty { display: grid; color: rgba(255, 249, 236, 0.62); place-items: center; } .quality-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; } .issue-timeline { margin-top: 14px; border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; padding: 14px; background: rgba(255, 253, 247, 0.62); } .timeline-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; margin-bottom: 10px; } .timeline-head h3 { margin: 0; color: var(--forest); font-size: 0.98rem; } .timeline-head span, .timeline-meta span { color: var(--muted); font-size: 0.82rem; } .timeline-list { display: grid; gap: 8px; } .timeline-item { display: grid; grid-template-columns: minmax(150px, 0.36fr) minmax(0, 0.64fr); gap: 12px; border-left: 3px solid var(--clay); border-radius: 8px; padding: 10px 12px; background: rgba(255, 249, 236, 0.72); } .timeline-main strong, .timeline-main span { display: block; } .timeline-main strong { color: var(--forest-deep); font-size: 0.95rem; } .timeline-main span { margin-top: 3px; color: var(--muted); font-size: 0.84rem; } .timeline-meta { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; } .timeline-meta span { border-radius: 999px; padding: 6px 8px; background: rgba(33, 79, 58, 0.08); } .timeline-meta .severity-chip.minor { border: 1px solid rgba(49, 75, 99, 0.18); color: #27465a; background: rgba(49, 75, 99, 0.12); } .timeline-meta .severity-chip.moderate { border: 1px solid rgba(190, 104, 75, 0.28); color: #70402e; background: rgba(190, 104, 75, 0.18); } .timeline-meta .severity-chip.high { border: 1px solid rgba(132, 45, 37, 0.32); color: #6d261f; background: rgba(132, 45, 37, 0.2); } .quality-list span { border-radius: 999px; padding: 7px 10px; color: #5a2d20; background: rgba(190, 104, 75, 0.12); font-size: 0.84rem; } .tabs { display: flex; gap: 8px; margin-top: 18px; } .tab { border: 0; border-bottom: 2px solid transparent; padding: 11px 14px; color: var(--muted); background: transparent; font-size: 0.78rem; font-weight: 600; text-transform: uppercase; } .tab.active { border-color: var(--forest); color: var(--forest); } .artifact-panel { overflow: hidden; } .json-block { min-height: 360px; max-height: 620px; margin: 0; overflow: auto; padding: 18px; color: #f4efe3; background: #171815; font-size: 0.82rem; line-height: 1.55; } .artifact-links { display: grid; gap: 12px; padding: 18px; } .artifact-link { display: flex; justify-content: space-between; gap: 12px; align-items: center; border: 1px solid rgba(37, 44, 31, 0.12); border-radius: 8px; padding: 14px; color: var(--forest); background: rgba(255, 253, 247, 0.72); text-decoration: none; } .error { border: 1px solid rgba(190, 104, 75, 0.28); border-radius: 8px; margin-top: 14px; padding: 12px; color: #6d2f20; background: rgba(190, 104, 75, 0.12); } @media (max-width: 980px) { .workspace, .note-grid, .stat-grid, .metric-grid, .scan-insights, .rep-grid, .issue-card-grid { grid-template-columns: 1fr; } } @media (max-width: 640px) { .app { padding: 12px 10px 28px; } .hero { min-height: 380px; padding: 26px 20px; } .hero-metrics, .form-grid { grid-template-columns: 1fr; } .panel-head { display: grid; } .timeline-item, .timeline-head { display: grid; } }