Spaces:
Sleeping
Sleeping
| :root { | |
| --bg: #f6f5f1; | |
| --surface: #ffffff; | |
| --surface-2: #efeee8; | |
| --text: #1f2328; | |
| --muted: #667069; | |
| --line: #d9d7cf; | |
| --accent: #246bfe; | |
| --accent-dark: #174dc0; | |
| --success: #147a4b; | |
| --warn: #946200; | |
| --danger: #b42318; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| margin: 0; | |
| background: var(--bg); | |
| color: var(--text); | |
| display: grid; | |
| grid-template-columns: 320px minmax(0, 1fr); | |
| font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | |
| letter-spacing: 0; | |
| min-height: 100vh; | |
| } | |
| body.login-page { | |
| display: block; | |
| } | |
| button, | |
| input, | |
| select, | |
| textarea { | |
| font: inherit; | |
| } | |
| button, | |
| .download, | |
| .upload { | |
| align-items: center; | |
| background: var(--surface); | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| color: var(--text); | |
| cursor: pointer; | |
| display: inline-flex; | |
| justify-content: center; | |
| min-height: 40px; | |
| padding: 9px 12px; | |
| text-decoration: none; | |
| } | |
| button:hover, | |
| .download:hover, | |
| .upload:hover { | |
| border-color: #a7aaa3; | |
| } | |
| button.primary { | |
| background: var(--accent); | |
| border-color: var(--accent); | |
| color: #fff; | |
| } | |
| button.primary:hover { | |
| background: var(--accent-dark); | |
| } | |
| button.secondary { | |
| background: transparent; | |
| border-color: var(--accent); | |
| color: var(--accent); | |
| } | |
| button.secondary:hover { | |
| background: rgba(36, 107, 254, 0.07); | |
| } | |
| button.active-scan { | |
| background: #fff8e6; | |
| border-color: #ead18e; | |
| color: var(--warn); | |
| animation: scan-pulse 1.6s ease-in-out infinite; | |
| } | |
| @keyframes scan-pulse { | |
| 0%, 100% { box-shadow: 0 0 0 0 rgba(148, 98, 0, 0.18); } | |
| 50% { box-shadow: 0 0 0 5px rgba(148, 98, 0, 0); } | |
| } | |
| input, | |
| select, | |
| textarea { | |
| background: #fff; | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| color: var(--text); | |
| min-height: 40px; | |
| outline: none; | |
| padding: 9px 11px; | |
| width: 100%; | |
| } | |
| textarea { | |
| line-height: 1.45; | |
| min-height: 132px; | |
| resize: vertical; | |
| } | |
| .sidebar { | |
| background: var(--surface-2); | |
| border-right: 1px solid var(--line); | |
| height: 100vh; | |
| overflow: auto; | |
| padding: 20px; | |
| position: sticky; | |
| top: 0; | |
| } | |
| .brand { | |
| align-items: center; | |
| display: flex; | |
| gap: 12px; | |
| margin-bottom: 22px; | |
| } | |
| .brand strong, | |
| .brand span { | |
| display: block; | |
| } | |
| .brand span, | |
| .hint, | |
| .topbar p, | |
| .card-meta, | |
| .status { | |
| color: var(--muted); | |
| } | |
| .mark { | |
| align-items: center; | |
| background: #202020; | |
| border-radius: 8px; | |
| color: #fff; | |
| display: flex; | |
| font-weight: 750; | |
| height: 42px; | |
| justify-content: center; | |
| width: 42px; | |
| } | |
| .panel { | |
| border-top: 1px solid var(--line); | |
| padding: 18px 0; | |
| } | |
| .panel h2 { | |
| font-size: 0.9rem; | |
| margin: 0 0 10px; | |
| } | |
| .upload { | |
| width: 100%; | |
| } | |
| .upload input { | |
| display: none; | |
| } | |
| .compact { | |
| margin: 8px 0; | |
| } | |
| .hint { | |
| font-size: 0.82rem; | |
| line-height: 1.4; | |
| margin: 8px 0 0; | |
| } | |
| .warning-hint { | |
| background: #fff8e6; | |
| border: 1px solid #ead18e; | |
| border-radius: 8px; | |
| color: var(--warn); | |
| padding: 8px 10px; | |
| } | |
| .reference-list { | |
| display: grid; | |
| gap: 6px; | |
| margin-top: 12px; | |
| } | |
| .reference-pill { | |
| background: #fff; | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| color: var(--muted); | |
| overflow: hidden; | |
| padding: 7px 9px; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .reference-pill strong, | |
| .reference-pill span { | |
| display: block; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| .reference-pill strong { | |
| color: var(--text); | |
| font-size: 0.88rem; | |
| } | |
| .reference-pill span { | |
| font-size: 0.78rem; | |
| margin-top: 2px; | |
| } | |
| .main { | |
| min-width: 0; | |
| padding: 24px; | |
| } | |
| .topbar { | |
| align-items: center; | |
| display: flex; | |
| gap: 16px; | |
| justify-content: space-between; | |
| } | |
| .top-actions { | |
| align-items: center; | |
| display: flex; | |
| gap: 10px; | |
| } | |
| .top-actions form { | |
| margin: 0; | |
| } | |
| h1 { | |
| font-size: 1.55rem; | |
| margin: 0 0 6px; | |
| } | |
| .topbar p { | |
| margin: 0; | |
| } | |
| .metrics { | |
| display: grid; | |
| gap: 12px; | |
| grid-template-columns: repeat(5, minmax(120px, 1fr)); | |
| margin: 20px 0; | |
| } | |
| .metric { | |
| background: var(--surface); | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| padding: 14px; | |
| } | |
| .metric span { | |
| color: var(--muted); | |
| display: block; | |
| font-size: 0.78rem; | |
| } | |
| .metric strong { | |
| display: block; | |
| font-size: 1.35rem; | |
| margin-top: 4px; | |
| } | |
| .toolbar { | |
| align-items: center; | |
| background: var(--surface); | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| margin-bottom: 16px; | |
| padding: 10px; | |
| } | |
| .status { | |
| margin-left: auto; | |
| } | |
| .scenes { | |
| display: grid; | |
| gap: 14px; | |
| } | |
| .scene-card { | |
| background: var(--surface); | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| overflow: hidden; | |
| } | |
| .scene-header { | |
| align-items: center; | |
| border-bottom: 1px solid var(--line); | |
| display: grid; | |
| gap: 12px; | |
| grid-template-columns: 54px minmax(160px, 1fr) minmax(100px, 180px) 140px; | |
| padding: 12px 14px; | |
| } | |
| .scene-number { | |
| color: var(--muted); | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .scene-name { | |
| font-weight: 700; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .badge { | |
| background: #f4f4f0; | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| color: var(--muted); | |
| font-size: 0.78rem; | |
| overflow: hidden; | |
| padding: 5px 9px; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .badge.approved { | |
| background: #e8f5ee; | |
| border-color: #b9dfca; | |
| color: var(--success); | |
| } | |
| .badge.waiting_reference { | |
| background: #fff4db; | |
| border-color: #ead18e; | |
| color: var(--warn); | |
| } | |
| .scene-body { | |
| display: grid; | |
| gap: 14px; | |
| grid-template-columns: minmax(0, 1fr) 300px; | |
| padding: 14px; | |
| } | |
| .variants { | |
| display: grid; | |
| gap: 12px; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| } | |
| .variant { | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .approved-variant { | |
| border-color: var(--success); | |
| box-shadow: 0 0 0 4px rgba(20, 122, 75, 0.28); | |
| outline: 3px solid var(--success); | |
| outline-offset: -3px; | |
| } | |
| .approved-variant::before { | |
| background: var(--success); | |
| border-radius: 999px; | |
| color: #fff; | |
| content: "Approved"; | |
| font-size: 0.75rem; | |
| font-weight: 700; | |
| left: 10px; | |
| padding: 4px 8px; | |
| position: absolute; | |
| top: 10px; | |
| z-index: 2; | |
| } | |
| .image-open { | |
| background: transparent; | |
| border: 0; | |
| border-radius: 0; | |
| display: block; | |
| min-height: 0; | |
| padding: 0; | |
| width: 100%; | |
| } | |
| .variant img, | |
| .placeholder { | |
| aspect-ratio: 4 / 3; | |
| background: #eeeeea; | |
| display: block; | |
| object-fit: cover; | |
| width: 100%; | |
| } | |
| .image-open img { | |
| cursor: zoom-in; | |
| } | |
| .placeholder { | |
| align-items: center; | |
| color: var(--muted); | |
| display: flex; | |
| justify-content: center; | |
| } | |
| .variant-footer { | |
| align-items: center; | |
| display: flex; | |
| gap: 8px; | |
| justify-content: space-between; | |
| padding: 8px; | |
| } | |
| .approved-variant .variant-footer { | |
| background: #e8f5ee; | |
| } | |
| .approved-variant .variant-footer button { | |
| background: var(--success); | |
| border-color: var(--success); | |
| color: #fff; | |
| } | |
| .variant-footer span { | |
| color: var(--muted); | |
| font-size: 0.82rem; | |
| } | |
| .side-actions { | |
| display: grid; | |
| gap: 10px; | |
| align-content: start; | |
| } | |
| .message { | |
| background: #fff8e6; | |
| border: 1px solid #ead18e; | |
| border-radius: 8px; | |
| color: var(--warn); | |
| font-size: 0.86rem; | |
| padding: 10px; | |
| } | |
| .empty { | |
| background: var(--surface); | |
| border: 1px dashed #bdbab1; | |
| border-radius: 8px; | |
| padding: 32px; | |
| } | |
| .empty h2 { | |
| font-size: 1.2rem; | |
| margin: 0 0 8px; | |
| } | |
| @media (max-width: 980px) { | |
| body { | |
| grid-template-columns: 1fr; | |
| } | |
| .sidebar { | |
| height: auto; | |
| position: static; | |
| } | |
| .metrics, | |
| .scene-body { | |
| grid-template-columns: 1fr; | |
| } | |
| .variants { | |
| grid-template-columns: 1fr; | |
| } | |
| .scene-header { | |
| grid-template-columns: 44px minmax(0, 1fr); | |
| } | |
| } | |
| .login-shell { | |
| align-items: center; | |
| display: flex; | |
| min-height: 100vh; | |
| justify-content: center; | |
| padding: 24px; | |
| } | |
| .login-card { | |
| background: var(--surface); | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| box-shadow: 0 20px 50px rgba(31, 35, 40, 0.08); | |
| max-width: 420px; | |
| padding: 28px; | |
| width: 100%; | |
| } | |
| .login-card .mark { | |
| margin-bottom: 18px; | |
| } | |
| .login-card h1 { | |
| margin-bottom: 6px; | |
| } | |
| .login-card p { | |
| color: var(--muted); | |
| margin: 0 0 20px; | |
| } | |
| .login-card form { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .login-card label span { | |
| color: var(--muted); | |
| display: block; | |
| font-size: 0.82rem; | |
| margin-bottom: 6px; | |
| } | |
| .login-card button { | |
| width: 100%; | |
| } | |
| .login-error { | |
| background: #fff0ed; | |
| border: 1px solid #f2b8b5; | |
| border-radius: 8px; | |
| color: var(--danger) ; | |
| padding: 9px 11px; | |
| } | |
| .modal { | |
| display: none; | |
| inset: 0; | |
| position: fixed; | |
| z-index: 50; | |
| } | |
| .modal.open { | |
| display: block; | |
| } | |
| .modal-backdrop { | |
| background: rgba(18, 20, 24, 0.72); | |
| inset: 0; | |
| position: absolute; | |
| } | |
| .modal-dialog { | |
| background: var(--surface); | |
| border-radius: 8px; | |
| box-shadow: 0 24px 80px rgba(0, 0, 0, 0.28); | |
| left: 50%; | |
| max-height: calc(100vh - 48px); | |
| max-width: min(1100px, calc(100vw - 48px)); | |
| overflow: hidden; | |
| position: absolute; | |
| top: 50%; | |
| transform: translate(-50%, -50%); | |
| width: fit-content; | |
| } | |
| .modal-dialog img { | |
| display: block; | |
| max-height: calc(100vh - 128px); | |
| max-width: min(1100px, calc(100vw - 48px)); | |
| object-fit: contain; | |
| } | |
| .modal-close { | |
| position: absolute; | |
| right: 10px; | |
| top: 10px; | |
| z-index: 3; | |
| } | |
| .modal-caption { | |
| border-top: 1px solid var(--line); | |
| color: var(--muted); | |
| font-size: 0.9rem; | |
| padding: 10px 12px; | |
| } | |