:host { --brand: #e33dcf; --brand-deep: #972688; --brand-soft: rgba(227, 61, 207, 0.1); --ink: #17161d; --muted: rgba(23, 22, 29, 0.68); --surface: rgba(255, 255, 255, 0.84); --surface-strong: rgba(255, 255, 255, 0.94); --line: rgba(23, 22, 29, 0.08); --shadow: 0 24px 60px rgba(24, 17, 33, 0.12); --success: #198754; --danger: #dc3545; --warning: #ffb200; display: block; color: var(--ink); font-family: 'Inter', sans-serif; } .mve-page { min-height: 100vh; position: relative; overflow: hidden; padding: 0 14px 120px; background: radial-gradient(720px 380px at 12% 8%, rgba(227, 61, 207, 0.16), transparent 60%), radial-gradient(620px 360px at 88% 12%, rgba(3, 15, 170, 0.08), transparent 58%), linear-gradient(180deg, #fff 0%, #f6f4f8 100%); } .page-blob { position: fixed; border-radius: 999px; filter: blur(48px); pointer-events: none; opacity: 0.42; z-index: 0; background: radial-gradient(circle at 30% 30%, rgba(227, 61, 207, 0.6), rgba(227, 61, 207, 0.04)); &.blob-1 { width: 420px; height: 420px; top: -180px; left: -120px; } &.blob-2 { width: 520px; height: 520px; top: -220px; right: -220px; } &.blob-3 { width: 360px; height: 360px; bottom: -180px; left: 20%; } &.blob-4 { width: 420px; height: 420px; bottom: -200px; right: 12%; } } .page-shell { position: relative; z-index: 1; width: min(1480px, 98vw); margin: 38px auto 0; } .page-card { background: var(--surface); border: 1px solid rgba(255, 255, 255, 0.72); border-radius: 28px; box-shadow: var(--shadow); backdrop-filter: blur(12px); overflow: hidden; } .page-header { padding: 22px 24px 18px; border-bottom: 1px solid var(--line); background: linear-gradient(180deg, rgba(255,255,255,0.92), rgba(255,255,255,0.72)); display: grid; justify-items: center; } .page-header > * { width: min(1120px, 100%); } .header-top { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: center; justify-items: center; text-align: center; } .title-badge { justify-self: center; display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px; border-radius: 999px; background: rgba(255, 255, 255, 0.92); border: 1px solid rgba(227, 61, 207, 0.22); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55); font-size: 13px; font-weight: 800; i { color: var(--brand); } } .header-title { text-align: center; } .title { font-size: 28px; font-weight: 950; letter-spacing: -0.04em; color: var(--ink); } .subtitle { color: var(--muted); font-weight: 700; } .header-actions { justify-self: center; display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; } .btn { border-radius: 14px; font-weight: 800; } .btn-glass { background: rgba(255, 255, 255, 0.92); border: 1px solid rgba(23, 22, 29, 0.08); color: var(--ink); } .btn-brand { background: linear-gradient(135deg, var(--brand), var(--brand-deep)); border: 0; color: #fff; box-shadow: 0 12px 24px rgba(151, 38, 136, 0.24); } .intro-card, .upload-card, .secondary-notes, .toolbar, .summary-grid, .table-wrap, .status-empty, .empty-state { margin-top: 18px; } .intro-card, .upload-card, .toolbar, .table-wrap, .status-empty, .empty-state { background: var(--surface-strong); border: 1px solid var(--line); border-radius: 20px; box-shadow: 0 18px 34px rgba(24, 17, 33, 0.08); } .intro-card { padding: 18px 20px; display: grid; gap: 14px; text-align: center; } .intro-title, .section-title { font-size: 14px; font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; color: var(--brand-deep); } .intro-text, .section-subtitle { color: var(--muted); line-height: 1.55; } .intro-meta, .secondary-notes { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; } .meta-pill { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 999px; background: rgba(24, 17, 33, 0.05); border: 1px solid rgba(24, 17, 33, 0.08); font-size: 12px; font-weight: 700; color: rgba(24, 17, 33, 0.78); } .upload-card { padding: 20px; text-align: center; } .section-head { display: flex; justify-content: center; gap: 12px; align-items: flex-start; } .upload-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; margin-top: 16px; align-items: center; } .upload-zone { display: grid; place-items: center; gap: 8px; min-height: 180px; padding: 20px; border-radius: 22px; border: 1px dashed rgba(227, 61, 207, 0.35); background: linear-gradient(135deg, rgba(227, 61, 207, 0.06), rgba(255, 255, 255, 0.85)), #fff; text-align: center; cursor: pointer; input { display: none; } } .upload-icon { width: 62px; height: 62px; display: grid; place-items: center; border-radius: 20px; background: rgba(227, 61, 207, 0.12); color: var(--brand-deep); font-size: 28px; } .upload-title { font-size: 18px; font-weight: 900; color: var(--ink); } .upload-subtitle { max-width: 540px; color: var(--muted); line-height: 1.45; } .upload-actions { display: grid; gap: 10px; justify-content: center; } .apply-banner { margin-top: 14px; padding: 12px 14px; border-radius: 16px; background: rgba(25, 135, 84, 0.1); border: 1px solid rgba(25, 135, 84, 0.18); color: #11653d; font-weight: 700; } .page-body { padding: 0 24px 24px; } .summary-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 14px; } .summary-card { background: rgba(255, 255, 255, 0.94); border: 1px solid var(--line); border-radius: 20px; padding: 18px; display: grid; gap: 10px; box-shadow: 0 16px 30px rgba(24, 17, 33, 0.08); strong { font-size: 30px; line-height: 1; letter-spacing: -0.05em; } &.is-positive strong { color: var(--success); } &.is-danger strong { color: var(--danger); } &.is-brand strong { color: var(--brand-deep); } } .summary-label { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); } .toolbar { padding: 14px 16px; display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; flex-wrap: wrap; } .toolbar-left { display: grid; gap: 12px; } .view-tabs { display: inline-flex; gap: 8px; flex-wrap: wrap; } .type-filters { display: flex; gap: 10px; flex-wrap: wrap; } .type-filter { border: 1px solid rgba(24, 17, 33, 0.08); background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(246, 244, 248, 0.92)); color: var(--ink); border-radius: 18px; padding: 10px 14px; min-width: 152px; display: grid; gap: 2px; justify-items: start; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72); span { font-size: 11px; font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); } strong { font-size: 16px; letter-spacing: -0.03em; } &.active { transform: translateY(-1px); } &.is-all.active { background: rgba(151, 38, 136, 0.12); border-color: rgba(151, 38, 136, 0.24); color: var(--brand-deep); } &.is-line.active { background: rgba(3, 15, 170, 0.1); border-color: rgba(3, 15, 170, 0.2); color: #030faa; } &.is-chip.active { background: rgba(255, 178, 0, 0.14); border-color: rgba(255, 178, 0, 0.26); color: #8c6200; } &.is-status.active { background: rgba(220, 53, 69, 0.12); border-color: rgba(220, 53, 69, 0.22); color: #9f1d2d; } } .filter-tab { border: 1px solid rgba(24, 17, 33, 0.08); background: rgba(24, 17, 33, 0.04); color: var(--ink); border-radius: 999px; padding: 8px 14px; font-size: 12px; font-weight: 800; &.active { background: rgba(227, 61, 207, 0.14); border-color: rgba(227, 61, 207, 0.24); color: var(--brand-deep); } } .toolbar-right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .search-group { min-width: min(360px, 86vw); } .page-size-select { min-width: 140px; } .table-wrap { overflow: hidden; max-width: 1120px; margin-left: auto; margin-right: auto; } .table-modern { margin: 0; width: 100%; table-layout: fixed; thead th:nth-child(1) { width: 16%; } thead th:nth-child(2), thead th:nth-child(3) { width: 24%; } thead th:nth-child(4) { width: 20%; } thead th:nth-child(5) { width: 16%; } thead th { background: #faf7fc; border-bottom: 1px solid var(--line); color: rgba(24, 17, 33, 0.72); font-size: 12px; font-weight: 900; text-transform: uppercase; letter-spacing: 0.06em; padding: 14px 16px; text-align: center; } tbody tr { transition: background-color 160ms ease; &:hover { background: rgba(151, 38, 136, 0.03); } &.row-applied { background: rgba(25, 135, 84, 0.03); } } tbody td { padding: 16px; border-top: 1px solid rgba(24, 17, 33, 0.06); vertical-align: middle; text-align: center; } } .cell-line, .cell-situation, .cell-action { text-align: center; } .cell-situation, .cell-action { padding-left: 12px; padding-right: 12px; } .cell-compare { text-align: left; } .line-cell-stack { display: grid; gap: 10px; justify-items: center; } .line-number-chip { display: inline-flex; align-items: center; justify-content: center; min-width: 120px; padding: 8px 14px; border-radius: 999px; background: rgba(3, 15, 170, 0.08); border: 1px solid rgba(3, 15, 170, 0.18); color: #030faa; font-size: 0.83rem; font-weight: 950; letter-spacing: 0.02em; box-shadow: 0 8px 18px rgba(3, 15, 170, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.7); } .issue-kind-badge { display: inline-flex; align-items: center; justify-content: center; min-width: min(100%, 190px); max-width: 100%; padding: 10px 16px; border-radius: 999px; font-size: 13px; font-weight: 900; line-height: 1.15; letter-spacing: 0.02em; border: 1px solid transparent; text-align: center; } .issue-kind-badge { &.is-line { background: rgba(3, 15, 170, 0.1); border-color: rgba(3, 15, 170, 0.2); color: #030faa; } &.is-chip { background: rgba(255, 178, 0, 0.16); border-color: rgba(255, 178, 0, 0.26); color: #8c6200; } &.is-status { background: rgba(220, 53, 69, 0.12); border-color: rgba(220, 53, 69, 0.2); color: #9f1d2d; } &.is-review, &.is-neutral { background: rgba(24, 17, 33, 0.06); border-color: rgba(24, 17, 33, 0.08); color: rgba(24, 17, 33, 0.7); } } .status-pill { display: inline-flex; align-items: center; justify-content: center; padding: 8px 14px; border-radius: 999px; font-size: 12px; font-weight: 900; border: 1px solid transparent; &.is-active { background: rgba(25, 135, 84, 0.12); color: #11653d; border-color: rgba(25, 135, 84, 0.18); } &.is-blocked { background: rgba(220, 53, 69, 0.12); color: #9f1d2d; border-color: rgba(220, 53, 69, 0.18); } &.is-neutral { background: rgba(24, 17, 33, 0.06); color: rgba(24, 17, 33, 0.72); border-color: rgba(24, 17, 33, 0.08); } } .issue-card { display: grid; gap: 10px; padding: 14px; border-radius: 18px; border: 1px solid rgba(24, 17, 33, 0.08); background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(248, 246, 250, 0.92)); box-shadow: 0 14px 28px rgba(24, 17, 33, 0.06); text-align: left; } .issue-card-system { border-color: rgba(3, 15, 170, 0.12); } .issue-card-report { border-color: rgba(151, 38, 136, 0.14); } .issue-card-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding-bottom: 10px; border-bottom: 1px solid rgba(24, 17, 33, 0.08); } .issue-card-eyebrow { font-size: 11px; font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; color: var(--brand-deep); } .issue-card-caption { font-size: 12px; font-weight: 700; color: var(--muted); } .issue-row { display: grid; gap: 8px; padding: 11px 12px; border-radius: 14px; background: rgba(255, 255, 255, 0.86); border: 1px solid rgba(24, 17, 33, 0.06); &.is-different { background: linear-gradient(180deg, rgba(227, 61, 207, 0.08), rgba(255, 255, 255, 0.96)); border-color: rgba(227, 61, 207, 0.22); box-shadow: inset 0 0 0 1px rgba(227, 61, 207, 0.08); } } .issue-row-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .issue-label { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); } .field-diff-flag { display: inline-flex; align-items: center; padding: 4px 8px; border-radius: 999px; background: rgba(227, 61, 207, 0.12); color: var(--brand-deep); font-size: 10px; font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; } .issue-value, .issue-notes { font-size: 13px; line-height: 1.45; color: rgba(24, 17, 33, 0.8); } .issue-value { font-weight: 800; word-break: break-word; } .issue-notes { color: var(--muted); text-align: center; } .situation-card { display: grid; gap: 12px; width: min(100%, 240px); min-height: 112px; margin-inline: auto; padding: 10px 8px; border-radius: 18px; background: transparent; box-shadow: none; border: 0; align-content: center; justify-items: center; text-align: center; } .situation-top { display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; } .action-card { display: grid; width: min(100%, 188px); min-height: 112px; margin-inline: auto; padding: 10px 8px; gap: 12px; align-content: center; justify-items: center; text-align: center; border-radius: 18px; border: 0; background: transparent; box-shadow: none; } .sync-badge { display: inline-flex; align-items: center; justify-content: center; max-width: 100%; padding: 10px 14px; border-radius: 999px; font-size: 12px; font-weight: 900; line-height: 1.15; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; &.ready { background: rgba(255, 178, 0, 0.16); color: #8c6200; } &.applied { background: rgba(25, 135, 84, 0.14); color: #11653d; } &.muted { background: rgba(24, 17, 33, 0.06); color: rgba(24, 17, 33, 0.62); } } .page-footer { margin-top: 16px; padding: 14px 24px 0; border-top: 1px solid rgba(17, 18, 20, 0.06); display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; } .pagination-modern .page-link { color: #030faa; font-weight: 900; border-radius: 10px; border: 1px solid rgba(17, 18, 20, 0.1); background: rgba(255, 255, 255, 0.6); margin: 0 2px; transition: transform 160ms ease, border-color 160ms ease, color 160ms ease, background-color 160ms ease; &:hover { transform: translateY(-1px); border-color: var(--brand); color: var(--brand); background: rgba(255, 255, 255, 0.92); } } .pagination-modern .page-item.active .page-link { background-color: #030faa; border-color: #030faa; color: #fff; } .pagination-modern .page-item.disabled .page-link { color: rgba(24, 17, 33, 0.42); background: rgba(255, 255, 255, 0.38); border-color: rgba(17, 18, 20, 0.08); } .status-empty, .empty-state { padding: 42px 20px; text-align: center; color: var(--muted); display: grid; gap: 8px; place-items: center; i { font-size: 34px; color: var(--brand-deep); } } .empty-state small { max-width: 560px; line-height: 1.5; } @media (max-width: 1100px) { .header-top { grid-template-columns: 1fr; text-align: center; } .title-badge, .header-actions { justify-self: center; } .summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .upload-grid { grid-template-columns: 1fr; } } @media (max-width: 720px) { .page-shell { width: calc(100vw - 16px); margin-top: 18px; } .page-header, .page-body { padding-left: 14px; padding-right: 14px; } .summary-grid { grid-template-columns: 1fr; } .page-card { border-radius: 20px; } .page-header > *, .page-body > * { width: 100%; } .toolbar-right, .header-actions { width: 100%; } .header-actions .btn, .upload-actions .btn { width: 100%; justify-content: center; } .upload-zone { min-height: 150px; padding: 18px 14px; } .upload-title { font-size: 16px; } .intro-meta, .secondary-notes, .view-tabs, .toolbar, .type-filters { justify-content: center; } .view-tabs { width: 100%; } .toolbar-left { width: 100%; } .type-filters { width: 100%; } .filter-tab { flex: 1 1 120px; justify-content: center; text-align: center; } .type-filter { flex: 1 1 152px; min-width: 0; } .search-group, .page-size-select { width: 100%; min-width: 0; } .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: 18px; } .table-modern { min-width: 1180px; } .line-number-chip { min-width: 108px; font-size: 0.78rem; padding: 7px 12px; } .situation-card, .action-card { width: min(100%, 220px); } .page-footer { justify-content: center; text-align: center; } } @media (max-width: 420px) { .mve-page { padding-left: 8px; padding-right: 8px; } .page-header, .page-body { padding-left: 12px; padding-right: 12px; } .title { font-size: 24px; } .subtitle { font-size: 0.88rem; } .title-badge, .meta-pill, .filter-tab, .status-pill, .sync-badge { font-size: 11px; } .issue-kind-badge { font-size: 11px; padding: 8px 12px; } .page-footer .pagination { justify-content: center; flex-wrap: wrap; } }