Spaces:
Running
Running
| :root { | |
| --bg: #f6f8fb; | |
| --bg-soft: rgba(245, 247, 250, 0.9); | |
| --panel: #ffffff; | |
| --panel-strong: #f8fafc; | |
| --border: rgba(15, 23, 42, 0.06); | |
| --text: #0b1220; | |
| --text-soft: #4b5563; | |
| --accent: #2563eb; | |
| --accent-strong: #1e40af; | |
| --shadow: 0 18px 40px rgba(15, 23, 42, 0.06); | |
| } | |
| html, | |
| body { | |
| margin: 0; | |
| min-height: 100%; | |
| background: linear-gradient(180deg, var(--bg) 0%, #ffffff 100%); | |
| color: var(--text); | |
| font-family: "Inter", "DM Sans", "Segoe UI", sans-serif; | |
| } | |
| .app-shell { | |
| position: relative; | |
| max-width: 1480px; | |
| margin: 0 auto; | |
| padding: 40px 24px 56px; | |
| } | |
| .page-back-nav { | |
| position: absolute; | |
| top: 12px; | |
| left: 24px; | |
| z-index: 30; | |
| margin: 0; | |
| } | |
| .back-link { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 8px 14px; | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| color: var(--text-soft); | |
| text-decoration: none; | |
| background: var(--panel); | |
| border: 1px solid var(--border); | |
| border-radius: 999px; | |
| box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06); | |
| transition: color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; | |
| } | |
| .back-link:hover { | |
| color: var(--accent); | |
| border-color: rgba(37, 99, 235, 0.28); | |
| box-shadow: 0 6px 16px rgba(37, 99, 235, 0.1); | |
| } | |
| .hero-card, | |
| .form-card, | |
| .mock-card, | |
| .placeholder-card { | |
| background: var(--panel); | |
| border: 1px solid var(--border); | |
| box-shadow: var(--shadow); | |
| border-radius: 14px; | |
| white-space: pre-wrap; | |
| } | |
| .hero-card { | |
| padding: 28px 30px 24px; | |
| margin-bottom: 22px; | |
| } | |
| .home-deploy-warning { | |
| margin-bottom: 18px; | |
| padding: 14px 18px; | |
| border-radius: 12px; | |
| border: 1px solid rgba(180, 83, 9, 0.28); | |
| background: linear-gradient(180deg, #fffbeb 0%, #fef3c7 100%); | |
| box-shadow: 0 8px 24px rgba(180, 83, 9, 0.08); | |
| } | |
| .home-deploy-warning-title { | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.12em; | |
| color: #b45309; | |
| margin-bottom: 6px; | |
| } | |
| .home-deploy-warning-text { | |
| margin: 0; | |
| font-size: 0.92rem; | |
| line-height: 1.5; | |
| color: #78350f; | |
| } | |
| .home-deploy-warning-link, | |
| .home-deploy-warning-em { | |
| font-weight: 600; | |
| color: #92400e; | |
| } | |
| .home-deploy-warning-link { | |
| text-decoration: underline; | |
| text-underline-offset: 2px; | |
| } | |
| .home-deploy-warning-link:hover { | |
| color: #b45309; | |
| } | |
| .page-back-nav+.hero-card { | |
| padding-top: 48px; | |
| } | |
| .app-kicker { | |
| font-size: 0.78rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.14em; | |
| color: var(--accent); | |
| margin-bottom: 10px; | |
| } | |
| .app-title { | |
| margin: 0; | |
| font-size: clamp(2rem, 4vw, 3.45rem); | |
| line-height: 0.98; | |
| letter-spacing: -0.04em; | |
| } | |
| .home-grid, | |
| .mock-grid { | |
| display: grid; | |
| gap: 18px; | |
| } | |
| .home-grid { | |
| grid-template-columns: minmax(0, 1.7fr) minmax(280px, 0.9fr); | |
| align-items: start; | |
| } | |
| .mock-grid { | |
| grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.3fr); | |
| align-items: start; | |
| } | |
| .form-card, | |
| .info-card, | |
| .mock-card, | |
| .placeholder-card { | |
| padding: 24px; | |
| } | |
| .form-block { | |
| margin-bottom: 18px; | |
| } | |
| .section-label, | |
| .panel-label, | |
| .preview-label { | |
| display: block; | |
| margin-bottom: 10px; | |
| color: var(--text-soft); | |
| font-size: 0.78rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.16em; | |
| } | |
| .metric-switch { | |
| display: flex; | |
| gap: 10px; | |
| flex-wrap: wrap; | |
| } | |
| .metric-pill { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-width: 110px; | |
| padding: 10px 14px; | |
| border-radius: 999px; | |
| border: 1px solid rgba(37, 99, 235, 0.12); | |
| background: rgba(37, 99, 235, 0.06); | |
| color: var(--text); | |
| cursor: pointer; | |
| transition: transform 120ms ease, border-color 120ms ease, color 120ms ease, background 120ms ease; | |
| } | |
| .metric-pill:hover { | |
| transform: translateY(-1px); | |
| border-color: rgba(125, 211, 252, 0.36); | |
| } | |
| .metric-descriptions { | |
| margin-top: 14px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| } | |
| .metric-desc-block { | |
| margin-top: 2px; | |
| } | |
| .metric-desc-name { | |
| font-weight: 600; | |
| color: var(--text); | |
| letter-spacing: 0.02em; | |
| font-size: 0.9rem; | |
| margin-bottom: 6px; | |
| } | |
| .metric-desc-text { | |
| margin: 0 0 8px; | |
| font-size: 0.88rem; | |
| line-height: 1.45; | |
| color: var(--text-soft); | |
| } | |
| .metric-desc-text:last-child { | |
| margin-bottom: 0; | |
| } | |
| .dash-dropdown .Select-control, | |
| .dash-dropdown .Select-menu-outer, | |
| .dash-dropdown .VirtualizedSelectOption, | |
| .dash-dropdown .Select-value-label, | |
| .dash-dropdown .Select-placeholder { | |
| background-color: transparent ; | |
| color: var(--text) ; | |
| border-color: var(--border) ; | |
| } | |
| .dash-dropdown .Select-control { | |
| min-height: 58px; | |
| border-radius: 16px ; | |
| } | |
| .dash-dropdown .Select-input>input { | |
| color: var(--text) ; | |
| } | |
| .model-dropdown .Select-menu-outer { | |
| padding: 8px 0; | |
| } | |
| /* Model option label classes (moved from inline styles in Python) */ | |
| .dash-dropdown .model-option { | |
| padding: 0.15rem 0; | |
| } | |
| .dash-dropdown .model-option-exp { | |
| font-size: 1.05rem; | |
| font-weight: 300; | |
| line-height: 1.1; | |
| color: var(--text) ; | |
| letter-spacing: 0.01em; | |
| } | |
| .dash-dropdown .model-option-meta { | |
| font-size: 0.78rem; | |
| color: var(--text-soft) ; | |
| margin-top: 0.2rem; | |
| line-height: 1.2; | |
| } | |
| .selection-preview { | |
| margin: 16px 0 18px; | |
| padding: 14px 16px; | |
| border-radius: 12px; | |
| background: var(--panel-strong); | |
| border: 1px solid rgba(15, 23, 42, 0.04); | |
| } | |
| .preview-value { | |
| white-space: pre-wrap; | |
| } | |
| .preview-value, | |
| .home-status, | |
| .mock-summary-meta, | |
| .mock-placeholder { | |
| color: var(--text-soft); | |
| } | |
| .preview-value { | |
| font-size: 0.95rem; | |
| line-height: 1.45; | |
| } | |
| .action-row { | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| } | |
| .confirm-button { | |
| border: 0; | |
| border-radius: 999px; | |
| padding: 12px 20px; | |
| background: linear-gradient(135deg, var(--accent), var(--accent-strong)); | |
| color: #ffffff; | |
| font-weight: 700; | |
| cursor: pointer; | |
| letter-spacing: 0.02em; | |
| box-shadow: 0 8px 20px rgba(37, 99, 235, 0.12); | |
| text-decoration: none; | |
| } | |
| .confirm-button:hover, | |
| .confirm-button:visited, | |
| .confirm-button:focus { | |
| color: #ffffff; | |
| text-decoration: none; | |
| } | |
| .confirm-button:hover { | |
| transform: translateY(-1px); | |
| } | |
| .confirm-button:disabled { | |
| opacity: 0.65; | |
| cursor: wait; | |
| transform: none; | |
| } | |
| /* Upload area styled like a button */ | |
| .upload-card { | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| padding: 18px 18px 14px; | |
| border-radius: 12px; | |
| border: 1px dashed var(--border); | |
| background: var(--panel-strong); | |
| cursor: pointer; | |
| transition: transform 120ms ease, border-color 120ms ease, background 120ms ease; | |
| } | |
| .upload-card:hover { | |
| transform: translateY(-2px); | |
| border-color: rgba(37, 99, 235, 0.2); | |
| background: rgba(37, 99, 235, 0.03); | |
| } | |
| .upload-card a { | |
| display: inline-block; | |
| padding: 8px 14px; | |
| border-radius: 999px; | |
| background: linear-gradient(135deg, var(--accent), var(--accent-strong)); | |
| color: #ffffff; | |
| font-weight: 700; | |
| text-decoration: none; | |
| } | |
| .upload-card a:hover { | |
| filter: brightness(0.95); | |
| } | |
| .upload-help { | |
| position: absolute; | |
| top: 10px; | |
| right: 10px; | |
| padding: 3px 8px; | |
| border-radius: 999px; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: rgba(37, 99, 235, 0.12); | |
| color: var(--accent-strong); | |
| font-size: 0.68rem; | |
| font-weight: 800; | |
| line-height: 1; | |
| border: 1px solid rgba(37, 99, 235, 0.2); | |
| cursor: help; | |
| user-select: none; | |
| white-space: nowrap; | |
| } | |
| .upload-help:hover::after { | |
| content: attr(data-tooltip); | |
| position: absolute; | |
| top: calc(100% + 8px); | |
| right: 0; | |
| z-index: 2; | |
| min-width: 220px; | |
| max-width: 280px; | |
| padding: 10px 12px; | |
| border-radius: 12px; | |
| background: rgba(15, 23, 42, 0.95); | |
| color: #ffffff; | |
| font-size: 0.82rem; | |
| font-weight: 600; | |
| line-height: 1.35; | |
| box-shadow: 0 12px 28px rgba(15, 23, 42, 0.2); | |
| white-space: normal; | |
| text-align: left; | |
| pointer-events: none; | |
| } | |
| .upload-help:hover::before { | |
| content: ""; | |
| position: absolute; | |
| top: calc(100% + 2px); | |
| right: 14px; | |
| border: 6px solid transparent; | |
| border-bottom-color: rgba(15, 23, 42, 0.95); | |
| pointer-events: none; | |
| } | |
| /* Ensure the feature overlay image is left-aligned rather than centered */ | |
| #fm-overlay-img { | |
| display: block; | |
| margin: 0 auto; | |
| /* center horizontally */ | |
| width: auto; | |
| max-width: 720px; | |
| } | |
| .home-nav-loading { | |
| min-height: 52px; | |
| } | |
| .home-status.is-loading::before { | |
| content: "Loading"; | |
| display: inline-block; | |
| margin-right: 10px; | |
| padding: 4px 10px; | |
| border-radius: 999px; | |
| background: rgba(37, 99, 235, 0.12); | |
| color: var(--accent-strong); | |
| font-size: 0.76rem; | |
| font-weight: 700; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| } | |
| .page-transition-loading { | |
| position: relative; | |
| min-height: 55vh; | |
| } | |
| .page-transition-loading>._dash-loading-callback { | |
| display: flex ; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 55vh; | |
| } | |
| .skeleton-line { | |
| height: 0.9rem; | |
| margin-bottom: 8px; | |
| border-radius: 6px; | |
| background: rgba(15, 23, 42, 0.07); | |
| } | |
| .skeleton-line-short { | |
| width: 55%; | |
| } | |
| .viz-model-info-loading { | |
| min-height: 88px; | |
| } | |
| .umap-graph-loading { | |
| flex: 1 1 auto; | |
| min-height: 430px; | |
| overflow: visible; | |
| } | |
| .feature-detail-body-loading { | |
| min-height: 140px; | |
| } | |
| .info-list { | |
| margin: 0; | |
| padding-left: 18px; | |
| color: var(--text-soft); | |
| line-height: 1.6; | |
| } | |
| .mock-summary-lines { | |
| display: grid; | |
| gap: 8px; | |
| margin: 10px 0 14px; | |
| color: var(--text); | |
| line-height: 1.5; | |
| } | |
| .mock-summary-hyperparams { | |
| font-size: 0.96rem; | |
| line-height: 1.55; | |
| color: var(--text-soft); | |
| white-space: pre-wrap; | |
| } | |
| .viz-summary-divider { | |
| margin: 14px 0 12px; | |
| border: 0; | |
| border-top: 1px solid var(--border); | |
| } | |
| .viz-sae-card, | |
| .viz-umap-card { | |
| position: relative; | |
| } | |
| .viz-sae-help-wrap, | |
| .viz-umap-help-wrap { | |
| position: absolute; | |
| top: 22px; | |
| right: 22px; | |
| z-index: 3; | |
| } | |
| .viz-sae-help-wrap .viz-sae-help-trigger { | |
| position: relative; | |
| top: auto; | |
| right: auto; | |
| } | |
| .viz-sae-help-popover { | |
| display: none; | |
| position: absolute; | |
| top: calc(100% + 8px); | |
| right: 0; | |
| z-index: 4; | |
| min-width: 260px; | |
| max-width: 340px; | |
| padding: 12px 14px; | |
| border-radius: 12px; | |
| background: rgba(15, 23, 42, 0.95); | |
| color: #ffffff; | |
| font-size: 0.86rem; | |
| line-height: 1.45; | |
| box-shadow: 0 12px 28px rgba(15, 23, 42, 0.2); | |
| } | |
| .viz-sae-help-wrap:hover .viz-sae-help-popover, | |
| .viz-sae-help-wrap:focus-within .viz-sae-help-popover { | |
| display: block; | |
| } | |
| .viz-sae-help-popover::before { | |
| content: ""; | |
| position: absolute; | |
| top: -6px; | |
| right: 14px; | |
| border: 6px solid transparent; | |
| border-bottom-color: rgba(15, 23, 42, 0.95); | |
| } | |
| .viz-help-popover-title { | |
| margin-bottom: 8px; | |
| font-size: 0.8rem; | |
| font-weight: 700; | |
| letter-spacing: 0.02em; | |
| } | |
| .viz-help-popover-lead { | |
| margin-bottom: 8px; | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| color: rgba(255, 255, 255, 0.9); | |
| } | |
| .viz-help-popover-subtitle { | |
| margin: 10px 0 6px; | |
| font-size: 0.76rem; | |
| font-weight: 700; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| color: rgba(255, 255, 255, 0.72); | |
| } | |
| .viz-umap-help-popover { | |
| min-width: 280px; | |
| max-width: 400px; | |
| } | |
| .viz-sae-help-popover .help-desc-line { | |
| margin-bottom: 6px; | |
| } | |
| .viz-sae-help-popover .help-desc-line:last-child { | |
| margin-bottom: 0; | |
| } | |
| .viz-sae-help-popover strong, | |
| .viz-sae-help-popover .help-desc-line strong { | |
| font-weight: 700; | |
| color: #ffffff; | |
| } | |
| .viz-sae-help-popover .help-desc { | |
| font-weight: 400; | |
| color: rgba(255, 255, 255, 0.82); | |
| } | |
| .help-desc { | |
| font-weight: 400; | |
| color: var(--text-soft); | |
| } | |
| .viz-filter-intro strong, | |
| .viz-filter-intro-list strong, | |
| .viz-filter-line strong { | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .viz-filter-intro { | |
| margin-bottom: 12px; | |
| font-size: 0.98rem; | |
| line-height: 1.55; | |
| color: var(--text-soft); | |
| } | |
| .viz-filter-intro-lead { | |
| margin: 0 0 8px; | |
| } | |
| .viz-filter-intro-list { | |
| margin: 0 0 10px; | |
| padding-left: 1.15rem; | |
| } | |
| .viz-filter-intro-list li { | |
| margin-bottom: 6px; | |
| } | |
| .viz-filter-summary { | |
| display: grid; | |
| gap: 8px; | |
| font-size: 0.98rem; | |
| line-height: 1.55; | |
| } | |
| .viz-filter-line { | |
| margin: 0; | |
| color: var(--text); | |
| } | |
| .mock-placeholder { | |
| margin-top: 14px; | |
| padding: 14px; | |
| border-radius: 12px; | |
| border: 1px dashed rgba(15, 23, 42, 0.06); | |
| background: var(--panel-strong); | |
| min-height: 500px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .feature-panel { | |
| display: grid; | |
| gap: 14px; | |
| margin-top: 18px; | |
| padding: 18px; | |
| border-radius: 18px; | |
| background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(248, 250, 252, 0.98)); | |
| border: 1px solid rgba(37, 99, 235, 0.08); | |
| box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7); | |
| } | |
| .feature-workbench { | |
| display: grid; | |
| gap: 14px; | |
| margin-top: 18px; | |
| width: 100%; | |
| } | |
| .feature-workbench-title-row { | |
| position: relative; | |
| padding-right: 40px; | |
| } | |
| .feature-workbench-title-row .panel-label { | |
| margin-bottom: 0; | |
| } | |
| .viz-feature-workbench-help-wrap { | |
| top: 0; | |
| right: 0; | |
| } | |
| .viz-feature-workbench-help-popover { | |
| min-width: 280px; | |
| max-width: 400px; | |
| } | |
| .feature-workbench-header { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .feature-workbench-toolbar { | |
| display: grid; | |
| grid-template-columns: minmax(220px, 1.35fr) minmax(280px, 1.15fr) minmax(170px, 0.75fr); | |
| gap: 14px; | |
| align-items: end; | |
| } | |
| .feature-workbench-controls { | |
| display: grid; | |
| gap: 10px; | |
| padding: 14px 16px; | |
| border-radius: 18px; | |
| background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(248, 250, 252, 0.95)); | |
| border: 1px solid rgba(37, 99, 235, 0.08); | |
| box-shadow: var(--shadow); | |
| min-width: 0; | |
| } | |
| .feature-workbench-controls .section-label { | |
| margin-bottom: 8px; | |
| } | |
| .feature-workbench-controls-sort .dash-dropdown, | |
| .feature-workbench-controls-ranking .dash-dropdown { | |
| width: 100%; | |
| } | |
| .feature-nav-row { | |
| display: grid; | |
| grid-template-columns: auto minmax(180px, 1fr) auto; | |
| gap: 10px; | |
| align-items: center; | |
| } | |
| .nav-button { | |
| border: 1px solid rgba(37, 99, 235, 0.16); | |
| border-radius: 999px; | |
| padding: 10px 16px; | |
| background: #ffffff; | |
| color: var(--accent-strong); | |
| font-weight: 700; | |
| cursor: pointer; | |
| transition: transform 120ms ease, border-color 120ms ease, background 120ms ease; | |
| } | |
| .nav-button:hover { | |
| transform: translateY(-1px); | |
| border-color: rgba(37, 99, 235, 0.34); | |
| background: rgba(37, 99, 235, 0.04); | |
| } | |
| .feature-jump-input .Select-control, | |
| input.feature-jump-input, | |
| .feature-jump-input input { | |
| min-height: 42px; | |
| } | |
| /* Hide +/- steppers in feature id number input (browser-native spinners). */ | |
| input.feature-jump-input[type="number"], | |
| .feature-jump-input input[type="number"] { | |
| -moz-appearance: textfield; | |
| appearance: textfield; | |
| } | |
| input.feature-jump-input[type="number"]::-webkit-outer-spin-button, | |
| input.feature-jump-input[type="number"]::-webkit-inner-spin-button, | |
| .feature-jump-input input[type="number"]::-webkit-outer-spin-button, | |
| .feature-jump-input input[type="number"]::-webkit-inner-spin-button { | |
| -webkit-appearance: none; | |
| margin: 0; | |
| } | |
| .baseline-grid { | |
| display: grid; | |
| /* allow more columns so the baseline box appears more horizontal */ | |
| grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); | |
| gap: 12px; | |
| margin-top: 6px; | |
| } | |
| /* Page-specific helper to vertically stack the input card above overlay controls */ | |
| .mock-grid-vertical { | |
| grid-template-columns: 1fr; | |
| } | |
| .baseline-thumb { | |
| border: 1px solid rgba(15, 23, 42, 0.08); | |
| background: rgba(248, 250, 252, 0.8); | |
| border-radius: 14px; | |
| padding: 10px; | |
| cursor: pointer; | |
| text-align: left; | |
| transition: transform 120ms ease, border-color 120ms ease, background 120ms ease; | |
| } | |
| .baseline-thumb:hover { | |
| transform: translateY(-1px); | |
| border-color: rgba(37, 99, 235, 0.25); | |
| background: rgba(37, 99, 235, 0.06); | |
| } | |
| .baseline-thumb-img { | |
| width: 100%; | |
| height: 120px; | |
| object-fit: cover; | |
| border-radius: 10px; | |
| border: 1px solid rgba(15, 23, 42, 0.08); | |
| background: #ffffff; | |
| display: block; | |
| } | |
| .baseline-thumb-meta { | |
| margin-top: 8px; | |
| display: grid; | |
| gap: 4px; | |
| } | |
| .baseline-thumb-label { | |
| font-size: 0.82rem; | |
| color: var(--text); | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .baseline-thumb-badge { | |
| font-size: 0.72rem; | |
| color: var(--text-soft); | |
| } | |
| .feature-status { | |
| min-height: 20px; | |
| color: var(--text-soft); | |
| font-size: 0.92rem; | |
| } | |
| .feature-detail-card { | |
| display: grid; | |
| gap: 14px; | |
| min-height: 420px; | |
| padding: 20px; | |
| border-radius: 18px; | |
| background: linear-gradient(135deg, rgba(37, 99, 235, 0.06), rgba(255, 255, 255, 0.98) 42%); | |
| border: 1px solid rgba(37, 99, 235, 0.1); | |
| } | |
| .feature-detail-hero { | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .feature-detail-hero-header { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 16px; | |
| } | |
| .feature-image-ranking-dropdown { | |
| width: 100%; | |
| } | |
| .feature-detail-kicker, | |
| .feature-placeholder-title { | |
| color: var(--text-soft); | |
| text-transform: uppercase; | |
| letter-spacing: 0.14em; | |
| font-size: 0.72rem; | |
| } | |
| .feature-detail-number { | |
| font-size: clamp(2.5rem, 6vw, 4.8rem); | |
| line-height: 0.95; | |
| letter-spacing: -0.05em; | |
| font-weight: 800; | |
| } | |
| .feature-detail-subtitle { | |
| color: var(--text-soft); | |
| font-size: 0.98rem; | |
| } | |
| .feature-placeholder { | |
| display: grid; | |
| gap: 8px; | |
| min-height: 124px; | |
| padding: 16px; | |
| border-radius: 16px; | |
| border: 1px dashed rgba(37, 99, 235, 0.18); | |
| background: rgba(255, 255, 255, 0.7); | |
| } | |
| .feature-placeholder-copy, | |
| .feature-empty { | |
| color: var(--text-soft); | |
| line-height: 1.5; | |
| } | |
| .feature-comparison-block { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .feature-comparison-title { | |
| color: var(--text-soft); | |
| text-transform: uppercase; | |
| letter-spacing: 0.14em; | |
| font-size: 0.72rem; | |
| } | |
| .feature-comparison-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); | |
| gap: 12px; | |
| } | |
| /* Top images grid */ | |
| .feature-top-images-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); | |
| gap: 12px; | |
| align-items: start; | |
| } | |
| .feature-top-images-header { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| margin-bottom: 8px; | |
| } | |
| .feature-heatmap-toggle { | |
| margin: 0; | |
| } | |
| .feature-heatmap-toggle-label { | |
| color: var(--text-soft); | |
| } | |
| .feature-heatmap-toggle-input { | |
| margin: 0 10px 0 0; | |
| cursor: pointer; | |
| } | |
| .feature-image-card { | |
| position: relative; | |
| border-radius: 12px; | |
| overflow: visible; | |
| background: #fff; | |
| border: 1px solid rgba(15, 23, 42, 0.06); | |
| } | |
| .feature-image-card img, | |
| .feature-image-card .heatmap-graph { | |
| width: 100%; | |
| display: block; | |
| } | |
| .feature-image-card .heatmap-graph { | |
| min-height: 0; | |
| } | |
| .feature-image-card .js-plotly-plot { | |
| width: 100% ; | |
| border-radius: 12px; | |
| } | |
| .feature-image-card .heatmap-graph .legend, | |
| .fm-overlay-graph .legend { | |
| pointer-events: none ; | |
| cursor: default ; | |
| } | |
| .feature-image-card .heatmap-graph .legend .legendtext, | |
| .feature-image-card .heatmap-graph .legend .legendtoggle, | |
| .fm-overlay-graph .legend .legendtext, | |
| .fm-overlay-graph .legend .legendtoggle { | |
| cursor: default ; | |
| } | |
| .fm-overlay-graph { | |
| display: block; | |
| width: fit-content; | |
| max-width: 100%; | |
| margin: 0 auto; | |
| border: none; | |
| border-radius: 8px; | |
| overflow: hidden; | |
| background: transparent; | |
| } | |
| .fm-overlay-graph .js-plotly-plot { | |
| width: auto ; | |
| border-radius: 8px; | |
| } | |
| .feature-image-caption { | |
| padding: 6px 8px; | |
| font-size: 0.82rem; | |
| color: var(--text-soft); | |
| } | |
| .feature-image-caption:empty { | |
| display: none; | |
| } | |
| .comparison-card { | |
| display: grid; | |
| gap: 8px; | |
| min-height: 110px; | |
| padding: 14px 16px; | |
| border-radius: 16px; | |
| border: 1px solid rgba(15, 23, 42, 0.07); | |
| background: rgba(255, 255, 255, 0.88); | |
| } | |
| .comparison-card-active { | |
| border-color: rgba(37, 99, 235, 0.3); | |
| background: linear-gradient(135deg, rgba(37, 99, 235, 0.09), rgba(255, 255, 255, 0.96)); | |
| } | |
| .comparison-card-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 10px; | |
| } | |
| .comparison-selector-name { | |
| font-size: 0.92rem; | |
| font-weight: 700; | |
| color: var(--text); | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| .comparison-score { | |
| font-size: 1.25rem; | |
| font-weight: 800; | |
| letter-spacing: -0.03em; | |
| } | |
| .comparison-rank { | |
| color: var(--text-soft); | |
| font-size: 0.88rem; | |
| } | |
| .umap-controls { | |
| display: grid; | |
| gap: 14px; | |
| margin-bottom: 12px; | |
| } | |
| .umap-mode-primary { | |
| display: grid; | |
| gap: 10px; | |
| padding: 14px 16px; | |
| border: 1px solid var(--border); | |
| border-radius: 12px; | |
| background: var(--panel-strong); | |
| } | |
| .umap-mode-label { | |
| font-size: 0.82rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.14em; | |
| color: var(--accent-strong); | |
| font-weight: 700; | |
| } | |
| .umap-mode-switch { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| } | |
| .umap-mode-pill { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 10px 16px; | |
| border: 1px solid var(--border); | |
| border-radius: 999px; | |
| background: #fff; | |
| cursor: pointer; | |
| font-size: 0.95rem; | |
| font-weight: 600; | |
| transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease; | |
| } | |
| .umap-mode-input { | |
| accent-color: var(--accent); | |
| } | |
| .umap-mode-pill:has(.umap-mode-input:checked) { | |
| border-color: rgba(37, 99, 235, 0.35); | |
| background: rgba(37, 99, 235, 0.08); | |
| color: var(--accent-strong); | |
| } | |
| .umap-controls-secondary { | |
| padding-left: 2px; | |
| } | |
| .umap-controls-row { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: flex-end; | |
| gap: 16px 20px; | |
| } | |
| .umap-control-block { | |
| display: grid; | |
| gap: 6px; | |
| min-width: 180px; | |
| flex: 1 1 180px; | |
| } | |
| .umap-features-color-fixed { | |
| padding: 10px 12px; | |
| border: 1px solid var(--border); | |
| border-radius: 10px; | |
| background: var(--panel-strong); | |
| font-size: 0.92rem; | |
| font-weight: 600; | |
| color: var(--accent-strong); | |
| } | |
| .umap-status { | |
| margin-bottom: 10px; | |
| font-size: 0.82rem; | |
| color: var(--text-soft); | |
| line-height: 1.4; | |
| } | |
| .umap-status.is-loading::before { | |
| content: "Updating UMAP…"; | |
| display: inline-block; | |
| margin-right: 10px; | |
| padding: 4px 10px; | |
| border-radius: 999px; | |
| background: rgba(37, 99, 235, 0.12); | |
| color: var(--accent-strong); | |
| font-size: 0.76rem; | |
| font-weight: 700; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| } | |
| .umap-hover-shell { | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| flex: 1 1 auto; | |
| min-height: 0; | |
| overflow: visible; | |
| } | |
| .umap-dash-tooltip { | |
| max-width: min(280px, calc(100vw - 24px)); | |
| pointer-events: none; | |
| } | |
| .loading-block { | |
| width: 100%; | |
| } | |
| .feature-detail-loading { | |
| min-height: 220px; | |
| } | |
| .feature-images-loading { | |
| min-height: 180px; | |
| } | |
| #feature-top-images[data-dash-is-loading="true"]::before { | |
| content: "Loading..."; | |
| display: inline-block; | |
| margin-bottom: 10px; | |
| padding: 4px 10px; | |
| border-radius: 999px; | |
| background: rgba(37, 99, 235, 0.12); | |
| color: var(--accent-strong); | |
| font-size: 0.76rem; | |
| font-weight: 700; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| } | |
| #feature-top-images[data-dash-is-loading="true"]::before { | |
| content: "Loading top images..."; | |
| } | |
| .umap-graph { | |
| flex: 1 1 auto; | |
| min-height: 430px; | |
| overflow: hidden; | |
| } | |
| .umap-graph .js-plotly-plot, | |
| .umap-graph .plot-container, | |
| .umap-graph .svg-container { | |
| height: 100% ; | |
| } | |
| @media (max-width: 980px) { | |
| .home-grid, | |
| .mock-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .app-shell { | |
| padding: 24px 14px 42px; | |
| } | |
| .page-back-nav { | |
| top: 8px; | |
| left: 14px; | |
| } | |
| .feature-stat-grid { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| .feature-nav-row { | |
| grid-template-columns: 1fr; | |
| } | |
| .feature-workbench-toolbar { | |
| grid-template-columns: 1fr; | |
| align-items: stretch; | |
| } | |
| .mock-placeholder { | |
| min-height: 420px; | |
| } | |
| .umap-graph { | |
| min-height: 360px; | |
| } | |
| } |