@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); /* ===== BASE ===== */ html, body, [data-testid="stAppViewContainer"] { background-color: #0A0E1A; color: #E0E6F0; font-family: 'Inter', sans-serif; } [data-testid="stSidebar"] { background: linear-gradient(180deg, #0D1117 0%, #0A0E1A 100%); border-right: 1px solid #1E2A3A; } [data-testid="stHeader"] { background-color: transparent !important; } [data-testid="stAppViewBlockContainer"] { padding-top: 10px; } /* ===== NAVBAR LATERAL ===== */ .main-content-spacer { margin-top: 0; } /* ===== MÉTRICAS ===== */ div[data-testid="metric-container"] { background: linear-gradient(135deg, #161B22 0%, #0D1117 100%); border: 1px solid #1E2A3A; padding: 18px; border-radius: 14px; transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease; } div[data-testid="metric-container"]:hover { transform: translateY(-4px); border-color: #58A6FF; box-shadow: 0 8px 25px rgba(88, 166, 255, 0.15); } /* ===== CARDS ===== */ .detail-card { background: linear-gradient(135deg, #161B22 0%, #0D1117 100%); padding: 25px; border-radius: 16px; border-top: 3px solid #58A6FF; border-left: 1px solid #1E2A3A; border-right: 1px solid #1E2A3A; border-bottom: 1px solid #1E2A3A; margin-top: 20px; animation: fadeInUp 0.3s ease; } .provider-card { border: 1px solid #1E2A3A; border-radius: 14px; padding: 20px; background: linear-gradient(135deg, #0D1117 0%, #0A0E1A 100%); border-left: 3px solid #58A6FF; height: 100%; transition: all 0.25s ease; margin-top: 15px; } .provider-card:hover { border-left-color: #10B981; transform: translateY(-4px); box-shadow: 0 10px 30px rgba(16, 185, 129, 0.15); } .email-card { background: linear-gradient(135deg, #161B22 0%, #0D1117 100%); border-left: 3px solid #10B981; padding: 18px; border-radius: 12px; margin-bottom: 12px; border-top: 1px solid #1E2A3A; border-right: 1px solid #1E2A3A; border-bottom: 1px solid #1E2A3A; transition: all 0.2s ease; animation: fadeInUp 0.3s ease; } .email-card:hover { border-left-color: #58A6FF; box-shadow: 0 4px 20px rgba(88, 166, 255, 0.1); } .step-card { background: linear-gradient(135deg, #161B22 0%, #0D1117 100%); border: 1px solid #1E2A3A; padding: 30px 20px; border-radius: 18px; text-align: center; height: 100%; transition: all 0.3s ease; animation: fadeInUp 0.4s ease; } .step-card:hover { border-color: #58A6FF; transform: translateY(-5px); box-shadow: 0 15px 40px rgba(88, 166, 255, 0.12); } .step-icon { font-size: 44px; margin-bottom: 15px; display: block; } /* ===== BADGES ===== */ .tag-badge { background: linear-gradient(90deg, #1a3a1a, #238636); color: #3fb950; border: 1px solid #238636; padding: 3px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; letter-spacing: 0.5px; margin-right: 4px; } /* ===== BOTONES LEGACY ===== */ .action-btn { display: inline-block; margin-top: 10px; margin-right: 10px; background: linear-gradient(90deg, #238636, #2ea043); color: white !important; padding: 10px 18px; border-radius: 8px; text-decoration: none; font-weight: 700; font-size: 13px; transition: all 0.25s ease; box-shadow: 0 2px 8px rgba(35, 134, 54, 0.3); } .action-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(35, 134, 54, 0.4); } /* ===== ANIMACIONES ===== */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse-blue { 0%, 100% { box-shadow: 0 0 0 0 rgba(88, 166, 255, 0.3); } 50% { box-shadow: 0 0 0 8px rgba(88, 166, 255, 0); } } /* ===== SCROLLBAR ===== */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: #0A0E1A; } ::-webkit-scrollbar-thumb { background: #1E2A3A; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #58A6FF; } /* ===== DATAFRAME ===== */ [data-testid="stDataFrame"] { border-radius: 12px; overflow: hidden; } /* ===== LOADING / RERUN SIN OSCURECER LA APP ===== */ .stApp, main, html, body, [data-testid="stAppViewContainer"], [data-testid="stAppViewBlockContainer"], [data-testid="stVerticalBlock"] { opacity: 1 !important; filter: none !important; } [data-testid="stAppViewContainer"]::before, [data-testid="stAppViewContainer"]::after, [data-testid="stAppViewBlockContainer"]::before, [data-testid="stAppViewBlockContainer"]::after { background: transparent !important; opacity: 0 !important; pointer-events: none !important; } [data-testid="stStatusWidget"] { position: fixed !important; top: auto !important; right: 18px !important; bottom: 18px !important; background: rgba(15, 20, 28, 0.96) !important; border: 1px solid #344255 !important; border-radius: 8px !important; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35) !important; color: #E8EDF5 !important; z-index: 10000 !important; } [data-testid="stSpinner"], .stSpinner { background: rgba(15, 20, 28, 0.92) !important; border: 1px solid #2F7FD8 !important; border-radius: 8px !important; padding: 10px 12px !important; box-shadow: none !important; } /* ===== OPERATIONS UI REFRESH ===== */ :root { --bg-main: #080C12; --surface-1: #0F141C; --surface-2: #151B24; --line-soft: #242C38; --text-main: #E8EDF5; --text-muted: #8C98A8; --blue: #4F9CF9; --green: #31C48D; --amber: #F6B44B; --orange: #F08A3C; --red: #EF5B5B; --gray: #748091; } div[data-testid="metric-container"] { background: var(--surface-1); border: 1px solid var(--line-soft); border-radius: 8px; box-shadow: none; } div[data-testid="metric-container"]:hover { transform: none; border-color: #344255; box-shadow: none; } .section-title { margin: 2px 0 12px 0; color: var(--text-main); font-size: 18px; font-weight: 750; } .section-subtitle { margin: -8px 0 16px 0; color: var(--text-muted); font-size: 13px; } .monitor-list { display: flex; flex-direction: column; gap: 10px; } .monitor-row { background: var(--surface-1); border: 1px solid var(--line-soft); border-left: 4px solid var(--status-color, var(--blue)); border-radius: 8px; padding: 12px 14px; } .monitor-row-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; } .monitor-id { color: var(--text-main); font-size: 16px; font-weight: 800; line-height: 1.2; } .monitor-owner { color: var(--text-muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 3px; } .monitor-object { color: #B8C2D0; font-size: 12px; line-height: 1.35; margin-top: 5px; } .monitor-meta { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 6px; margin-top: 8px; } .status-badge { display: inline-flex; align-items: center; gap: 6px; background: color-mix(in srgb, var(--status-color, var(--blue)) 14%, transparent); color: var(--status-color, var(--blue)); border: 1px solid color-mix(in srgb, var(--status-color, var(--blue)) 42%, transparent); border-radius: 999px; padding: 3px 9px; font-size: 11px; font-weight: 700; white-space: nowrap; } .status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--status-color, var(--blue)); } .mini-pill { background: #0B1017; border: 1px solid var(--line-soft); border-radius: 999px; color: var(--text-muted); padding: 3px 9px; font-size: 11px; white-space: nowrap; } .sli-summary { margin: 8px 0 10px 0; background: #0B1017; border: 1px solid var(--line-soft); border-left: 3px solid var(--amber); border-radius: 8px; padding: 10px 12px; } .sli-summary-title { color: var(--amber); font-size: 11px; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; margin-bottom: 4px; } .sli-summary-body { color: #D9E2EF; font-size: 12px; line-height: 1.35; } .work-panel { background: var(--surface-1); border: 1px solid var(--line-soft); border-radius: 8px; padding: 14px; } .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; margin-bottom: 14px; } .info-tile { background: var(--surface-1); border: 1px solid var(--line-soft); border-radius: 8px; padding: 12px; } .info-label { color: var(--text-muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 5px; } .info-value { color: var(--text-main); font-size: 13px; font-weight: 650; line-height: 1.3; } .detail-card { background: var(--surface-1); border: 1px solid var(--line-soft); border-left: 4px solid var(--blue); border-radius: 8px; padding: 18px; box-shadow: none; } .email-card, .step-card { border-radius: 8px; background: var(--surface-1); border-color: var(--line-soft); box-shadow: none; } .stButton > button, .stDownloadButton > button, [data-testid="stBaseButton-secondary"], [data-testid="stBaseButton-primary"] { border-radius: 7px !important; min-height: 36px; font-weight: 650; } .stButton > button[kind="primary"], [data-testid="stBaseButton-primary"] { background: #2F7FD8 !important; border-color: #2F7FD8 !important; } /* Mejora Estetica de Proveedores Tavily */ .provider-card { border-radius: 10px; background: #161B22; border: 1px solid #30363D; padding: 20px; height: 180px; display: flex; flex-direction: column; justify-content: space-between; transition: all 0.3s ease; overflow: hidden; } .provider-card:hover { transform: translateY(-3px); border-color: #58A6FF; box-shadow: 0 4px 12px rgba(0,0,0,0.5); } .provider-card h4 { color: #58A6FF; margin-top: 0; margin-bottom: 10px; font-size: 16px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .provider-card p { font-size: 13px; color: #8B949E; line-height: 1.4; flex-grow: 1; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 10px; } .provider-card a { color: #3FB950; font-weight: 700; text-decoration: none; font-size: 13px; display: inline-block; } .provider-card a:hover { text-decoration: underline; } .provider-source-link { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: #101720; border: 1px solid var(--procura-border); border-radius: 8px; padding: 10px 12px; margin-bottom: 8px; color: var(--procura-text) !important; text-decoration: none !important; font-size: 13px; font-weight: 750; } .provider-source-link:hover { border-color: #3F8FE5; background: #121C28; } .provider-source-link b { color: #8EC8FF; font-size: 11px; } .provider-source-card { background: #101720; border: 1px solid var(--procura-border); border-left: 3px solid var(--procura-blue); border-radius: 8px; padding: 11px 12px; margin-bottom: 9px; } .provider-rfq-card { background: #101720; border: 1px solid var(--procura-border); border-left: 3px solid var(--procura-green); border-radius: 8px; padding: 12px 14px; margin: 9px 0 14px 0; } .provider-rfq-eyebrow { color: #7CE0B7; font-size: 10px; font-weight: 840; text-transform: uppercase; margin-bottom: 5px; } .provider-rfq-title { color: var(--procura-text); font-size: 15px; line-height: 1.3; font-weight: 850; margin-bottom: 9px; } .provider-rfq-meta { display: flex; flex-wrap: wrap; gap: 6px; } .provider-rfq-meta span { display: inline-flex; align-items: center; gap: 5px; min-height: 24px; padding: 3px 8px; border-radius: 999px; background: #0B1017; border: 1px solid #26384E; color: var(--procura-muted); font-size: 10.5px; font-weight: 760; } .provider-rfq-meta b { color: #DCE7F4; font-size: 10.5px; } .source-readiness-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); gap: 8px; margin: 10px 0 8px 0; } .source-pill { background: #0D141D; border: 1px solid var(--procura-border); border-left: 3px solid var(--procura-blue); border-radius: 8px; padding: 9px 10px; min-height: 62px; transition: border-color 0.15s ease, background 0.15s ease, opacity 0.15s ease; } .source-pill.is-muted { opacity: 0.52; } .source-pill.is-selected { background: #111B27; border-color: #3F8FE5; } .source-pill.tone-green { border-left-color: var(--procura-green); } .source-pill.tone-amber { border-left-color: var(--procura-amber); } .source-pill.tone-blue { border-left-color: var(--procura-blue); } .source-pill-top { display: flex; align-items: center; justify-content: space-between; gap: 7px; margin-bottom: 4px; } .source-pill-top b { color: var(--procura-text); font-size: 12px; line-height: 1.15; } .source-pill-top span { color: #CFE6FF; background: #102033; border: 1px solid #284C73; border-radius: 999px; padding: 2px 6px; font-size: 9.5px; font-weight: 820; white-space: nowrap; } .source-pill.tone-green .source-pill-top span { color: #7CE0B7; background: #0E241A; border-color: #1F805E; } .source-pill.tone-amber .source-pill-top span { color: #FFD48A; background: #2A1E0F; border-color: #6A4A15; } .source-pill small { display: block; color: var(--procura-muted); font-size: 10.5px; line-height: 1.2; font-weight: 720; } .free-source-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 8px 0 12px 0; } .provider-source-card.compact { margin-bottom: 0; padding: 10px; min-height: 132px; display: flex; flex-direction: column; } .provider-source-card.tone-green { border-left-color: var(--procura-green); } .provider-source-card.tone-amber { border-left-color: var(--procura-amber); } .provider-source-card.tone-blue { border-left-color: var(--procura-blue); } .source-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 7px; } .provider-source-card.compact .source-card-top { justify-content: flex-start; align-items: center; gap: 8px; margin-bottom: 8px; } .source-mark { width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: #0B1017; border: 1px solid #2B3B4F; color: #E9EEF5; font-size: 11px; font-weight: 850; flex: 0 0 auto; } .source-name { color: var(--procura-text); font-size: 13px; font-weight: 850; line-height: 1.15; } .source-kind { color: var(--procura-muted); font-size: 10px; font-weight: 750; text-transform: uppercase; margin-top: 3px; } .source-status { color: #CFE6FF; background: #112033; border: 1px solid #284C73; border-radius: 999px; padding: 2px 7px; font-size: 10px; font-weight: 800; white-space: nowrap; } .provider-source-card.compact .source-status { align-self: flex-start; margin-bottom: 7px; } .source-detail { color: var(--procura-muted); font-size: 12px; line-height: 1.4; min-height: 34px; } .provider-source-card.compact .source-detail { min-height: auto; flex: 1; } .source-action { border-top: 1px solid var(--procura-border); margin-top: 9px; padding-top: 8px; font-size: 12px; font-weight: 800; } .source-action a { display: inline-flex; justify-content: center; width: 100%; border: 1px solid #2D5F91; border-radius: 7px; background: #112033; color: #CFE6FF !important; text-decoration: none !important; padding: 6px 8px; } .source-action span { color: var(--procura-muted); } .provider-query-chips { display: flex; flex-wrap: wrap; gap: 7px; margin: 8px 0 12px 0; } .provider-query-chips span { display: inline-flex; align-items: center; min-height: 24px; padding: 3px 9px; border-radius: 999px; background: #0B1017; border: 1px solid var(--procura-border); color: #B8C4D2; font-size: 11px; font-weight: 750; } .item-detail-panel { background: #101720; border: 1px solid var(--procura-border); border-left: 3px solid var(--procura-blue); border-radius: 8px; padding: 15px; margin: 14px 0 10px 0; } .item-detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 12px; } .item-detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: 8px; margin-bottom: 10px; } .item-detail-grid div { background: #0B1017; border: 1px solid var(--procura-border); border-radius: 8px; padding: 9px 10px; } .item-detail-grid span { display: block; color: var(--procura-muted); font-size: 10px; font-weight: 800; text-transform: uppercase; margin-bottom: 4px; } .item-detail-grid b { color: var(--procura-text); font-size: 13px; } .item-warning-line { background: #141A22; border: 1px solid #30363D; border-left: 3px solid var(--procura-amber); border-radius: 8px; color: #E6EDF3; font-size: 13px; line-height: 1.45; padding: 10px 12px; margin-bottom: 10px; } .item-description-box { background: #0B1017; border: 1px solid var(--procura-border); border-radius: 8px; color: #DCE6F2; font-size: 13px; line-height: 1.55; max-height: 260px; overflow: auto; padding: 12px; white-space: pre-wrap; } .technical-spec-box { background-color: #0D1117; border: 1px solid #30363D; border-radius: 8px; color: #E6EDF3; font-size: 14.5px; line-height: 1.7; margin-bottom: 10px; padding: 20px; white-space: pre-wrap; box-shadow: inset 0 2px 4px rgba(0,0,0,0.2); } .technical-spec-box.checklist-mode { padding: 12px; } .checklist-title { color: var(--procura-text); font-size: 13px; font-weight: 850; margin: 10px 0 8px 0; } .checklist-block { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px; margin-bottom: 10px; } .checklist-row { display: flex; align-items: flex-start; gap: 9px; background: #0B1017; border: 1px solid var(--procura-border); border-radius: 8px; padding: 10px 11px; } .check-dot { width: 16px; height: 16px; border-radius: 999px; border: 1px solid #3F8FE5; background: #112033; flex: 0 0 auto; margin-top: 2px; } .checklist-row.state-ok .check-dot { border-color: #1F805E; background: #0E241A; } .checklist-row.state-warn .check-dot { border-color: #9B6A1E; background: #261F0B; } .checklist-row b { display: block; color: var(--procura-text); font-size: 12.5px; line-height: 1.25; margin-bottom: 3px; } .checklist-row em { display: block; color: var(--procura-muted); font-size: 12px; font-style: normal; line-height: 1.35; } .analysis-state-panel { background: #0D1520; border: 1px solid rgba(126, 148, 173, 0.28); border-radius: 8px; padding: 12px; margin: 8px 0 16px 0; } .analysis-state-panel .checklist-block { margin-bottom: 0; } .analysis-state-panel .checklist-row { min-height: 68px; } .analysis-state-panel .checklist-row.state-ok { border-left: 3px solid var(--procura-green); } .analysis-state-panel .checklist-row.state-warn { border-left: 3px solid var(--procura-amber); } .future-note { margin-top: 10px; color: var(--procura-muted); background: #0B1017; border: 1px dashed var(--procura-border-strong); border-radius: 8px; font-size: 12px; line-height: 1.45; padding: 9px 10px; } /* ===== FRONTEND PHASE 1: NAV + DASHBOARD ===== */ :root { --procura-bg: #090D13; --procura-sidebar: #0C1118; --procura-surface: #111821; --procura-surface-2: #151D28; --procura-border: #263241; --procura-border-strong: #344357; --procura-text: #E9EEF5; --procura-muted: #93A0B2; --procura-blue: #3F8FE5; --procura-green: #2FBF8F; --procura-amber: #E6A94A; } html, body, [data-testid="stAppViewContainer"] { background: var(--procura-bg) !important; } [data-testid="stSidebar"] { background: var(--procura-sidebar) !important; border-right: 1px solid var(--procura-border) !important; min-width: 285px; } [data-testid="stAppViewBlockContainer"] { padding-top: 8px; max-width: 1500px; } .role-pill { background: #102033; border: 1px solid #214A73; color: #8EC8FF; border-radius: 999px; padding: 3px 9px; font-size: 11px; font-weight: 700; } .main-content-spacer { margin-top: 0 !important; } .sidebar-brand { display: flex; align-items: center; gap: 10px; padding: 12px 6px 14px 6px; margin-bottom: 8px; border-bottom: 1px solid #1C2633; } .brand-mark { width: 38px; height: 38px; border-radius: 8px; background: #163B5F; border: 1px solid #2B7EC6; color: #F7FBFF; display: flex; align-items: center; justify-content: center; font-weight: 850; box-shadow: 0 8px 18px rgba(15, 95, 160, 0.22); } .brand-title { color: var(--procura-text); font-size: 13px; font-weight: 850; line-height: 1.15; } .brand-subtitle { color: var(--procura-muted); font-size: 11px; line-height: 1.2; } .sidebar-user-card { background: linear-gradient(180deg, #121A24 0%, #0C1118 100%); border: 1px solid #2A384A; border-radius: 8px; padding: 12px; margin: 0 0 14px 0; } .sidebar-user-top { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; } .sidebar-avatar { width: 30px; height: 30px; border-radius: 8px; background: #173150; border: 1px solid #2B679E; color: #F4FAFF; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 850; } .sidebar-user-name { color: var(--procura-text); font-size: 13px; font-weight: 800; line-height: 1.15; } .sidebar-user-role { color: var(--procura-muted); font-size: 11px; line-height: 1.2; } .sidebar-system-row { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid var(--procura-border); padding-top: 9px; color: var(--procura-muted); font-size: 11px; } .system-pill { border-radius: 999px; padding: 2px 8px; font-size: 10px; border: 1px solid var(--procura-border); color: var(--procura-muted); } .system-pill.online { background: #0E241A; border-color: #1F805E; color: #7CE0B7; } .system-pill.offline { background: #2A1111; border-color: #7A2929; color: #FF9D9D; } .sidebar-status-card { background: #0B1017; border: 1px solid var(--procura-border); border-radius: 8px; padding: 9px 11px; margin-bottom: 10px; } .sidebar-status-card div { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 0; color: var(--procura-muted); font-size: 11px; } .sidebar-status-card div + div { border-top: 1px solid #1C2633; } .sidebar-status-card b { color: var(--procura-text); font-size: 11px; } .sidebar-section-label { color: var(--procura-muted); font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0; margin: 12px 0 8px 0; } .nav-group-label { color: #6F7D8F; font-size: 10px; font-weight: 850; text-transform: uppercase; margin: 12px 0 5px 4px; } [data-testid="stSidebar"] [data-testid="stButton"] > button { justify-content: flex-start; border-radius: 8px !important; min-height: 40px; margin-bottom: 3px; font-size: 13px; font-weight: 760; padding-left: 12px !important; } [data-testid="stSidebar"] [data-testid="stBaseButton-secondary"] { background: transparent !important; border-color: transparent !important; color: #B8C4D2 !important; } [data-testid="stSidebar"] [data-testid="stBaseButton-secondary"]:hover { background: #121A24 !important; border-color: var(--procura-border) !important; color: var(--procura-text) !important; } [data-testid="stSidebar"] [data-testid="stBaseButton-primary"] { background: #14263A !important; border-color: #2F6EA8 !important; color: #F4FAFF !important; box-shadow: inset 4px 0 0 #2FBF8F !important; } .sidebar-analysis-card { background: #0F151D; border: 1px dashed #344357; border-radius: 8px; padding: 11px 12px; margin-bottom: 9px; } .analysis-card-title { color: var(--procura-text); font-size: 13px; font-weight: 850; margin-bottom: 4px; } .analysis-card-copy { color: var(--procura-muted); font-size: 11px; line-height: 1.4; } .page-hero { margin: 4px 0 18px 0; } .page-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 2px 0 6px 0; } .page-eyebrow { color: var(--procura-blue); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0; margin-bottom: 4px; } .page-title { color: var(--procura-text); font-size: 28px; line-height: 1.1; margin: 0; font-weight: 800; } .page-subtitle { color: var(--procura-muted); font-size: 13px; margin-top: 6px; } .system-status { display: inline-flex; align-items: center; gap: 8px; background: var(--procura-surface); border: 1px solid var(--procura-border); border-radius: 999px; padding: 7px 11px; color: var(--procura-muted); font-size: 12px; white-space: nowrap; } .system-status .status-dot { background: var(--procura-amber); } .system-status.is-online .status-dot { background: var(--procura-green); } .system-status.is-offline .status-dot { background: #EF5B5B; } .dashboard-grid { margin-top: 14px; } .ops-hero { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 14px; align-items: stretch; background: #0F151D; border: 1px solid var(--procura-border); border-radius: 8px; padding: 18px; margin: 4px 0 16px 0; } .ops-hero-main { min-width: 0; } .ops-hero-pills { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; } .ops-hero-pills span { background: #0B1017; border: 1px solid var(--procura-border); border-radius: 999px; color: #B8C4D2; font-size: 11px; font-weight: 750; padding: 4px 9px; } .ops-hero-pills .pill-ok { border-color: #1F805E; color: #7CE0B7; } .ops-hero-pills .pill-alert { border-color: #7A2929; color: #FF9D9D; } .ops-hero-side { background: #0B1017; border: 1px solid var(--procura-border); border-radius: 8px; padding: 11px 13px; } .ops-hero-side div { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 9px 0; border-bottom: 1px solid #1C2633; } .ops-hero-side div:last-child { border-bottom: 0; } .ops-hero-side span { color: var(--procura-muted); font-size: 12px; } .ops-hero-side b { color: var(--procura-text); font-size: 18px; } .ops-route-card { min-height: 126px; background: #101720; border: 1px solid var(--procura-border); border-top: 3px solid var(--procura-blue); border-radius: 8px; padding: 13px; margin-bottom: 8px; } .route-title { color: var(--procura-text); font-size: 15px; font-weight: 850; margin-bottom: 7px; } .route-body { color: var(--procura-muted); font-size: 12.5px; line-height: 1.45; } .dashboard-panel { min-height: 132px; margin-bottom: 10px; } .panel-label { color: var(--procura-muted); font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0; margin-bottom: 8px; } .panel-title { color: var(--procura-text); font-size: 17px; font-weight: 800; margin-bottom: 6px; } .panel-copy { color: var(--procura-muted); font-size: 13px; line-height: 1.45; } .dashboard-stat-row { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid var(--procura-border); padding: 9px 0; color: var(--procura-muted); font-size: 13px; } .dashboard-stat-row:first-of-type { border-top: 0; padding-top: 0; } .dashboard-stat-row b { color: var(--procura-text); font-size: 15px; } div[data-testid="metric-container"] { background: var(--procura-surface) !important; border: 1px solid var(--procura-border) !important; border-radius: 8px !important; padding: 14px 16px !important; } div[data-testid="metric-container"] [data-testid="stMetricLabel"] { color: var(--procura-muted) !important; } .work-panel, .info-tile, .monitor-row, .detail-card, .provider-card, .email-card, .step-card, .sli-summary { border-radius: 8px !important; } /* ===== BETA PRESENTATION SYSTEM ===== */ .module-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 16px 18px; margin: 0 0 16px 0; background: linear-gradient(180deg, #111821 0%, #0D131B 100%); border: 1px solid var(--procura-border); border-radius: 8px; } .page-meta { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; max-width: 420px; } .page-meta span { display: inline-flex; align-items: center; min-height: 24px; padding: 3px 9px; border-radius: 999px; background: #0B1017; border: 1px solid var(--procura-border); color: var(--procura-muted); font-size: 11px; font-weight: 700; } .summary-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin: 12px 0 16px 0; } .summary-card { background: var(--procura-surface); border: 1px solid var(--procura-border); border-left: 3px solid var(--procura-blue); border-radius: 8px; padding: 12px 13px; } .summary-card.tone-green { border-left-color: var(--procura-green); } .summary-card.tone-amber { border-left-color: var(--procura-amber); } .summary-card.tone-orange { border-left-color: #F08A3C; } .summary-card.tone-red { border-left-color: #EF5B5B; } .summary-card.tone-blue { border-left-color: var(--procura-blue); } .summary-label { color: var(--procura-muted); font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0; margin-bottom: 5px; } .summary-value { color: var(--procura-text); font-size: 18px; line-height: 1.15; font-weight: 820; } .selected-record { background: #101720; border: 1px solid var(--procura-border); border-left: 3px solid var(--procura-blue); border-radius: 8px; padding: 13px 15px; margin: 14px 0 10px 0; } .selected-kicker { color: var(--procura-muted); font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0; margin-bottom: 4px; } .selected-title { color: var(--procura-text); font-size: 20px; font-weight: 850; line-height: 1.2; } .selected-subtitle { color: #B8C4D2; font-size: 13px; line-height: 1.4; margin-top: 4px; } .empty-state { background: #0F151D; border: 1px dashed var(--procura-border-strong); border-radius: 8px; padding: 34px 22px; text-align: center; margin: 16px 0; } .empty-title { color: var(--procura-text); font-size: 18px; font-weight: 800; margin-bottom: 6px; } .empty-body { color: var(--procura-muted); font-size: 13px; line-height: 1.45; } [data-testid="stDataFrame"] { border: 1px solid var(--procura-border); border-radius: 8px !important; background: var(--procura-surface); box-shadow: 0 1px 0 rgba(255,255,255,0.02) inset; } [data-testid="stDataFrame"] [role="grid"] { font-size: 12px; } [data-testid="stExpander"] { background: #0F151D; border: 1px solid var(--procura-border) !important; border-radius: 8px !important; } [data-testid="stTextInput"] input, [data-testid="stTextArea"] textarea, [data-testid="stSelectbox"] { border-radius: 8px !important; } /* ===== Streamlit beta polish: roles, sidebar and operational dashboard ===== */ .sidebar-brand { padding: 14px 8px 16px 8px; border-bottom: 1px solid #233143; } .brand-mark { background: linear-gradient(135deg, #17466D 0%, #1F6E5C 100%); border-color: #3F8FE5; } .sidebar-user-card, .sidebar-role-card, .sidebar-analysis-card, .sidebar-status-card { box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18); } .sidebar-role-card { background: #0F151D; border: 1px solid #2B3B4F; border-left: 3px solid var(--procura-green); border-radius: 8px; padding: 11px 12px; margin: 0 0 14px 0; } .role-card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 7px; } .role-card-top span { color: #7CE0B7; background: #0E241A; border: 1px solid #1F805E; border-radius: 999px; padding: 3px 8px; font-size: 10px; font-weight: 800; } .role-card-top b { color: var(--procura-text); font-size: 12px; text-align: right; } .role-card-copy { color: var(--procura-muted); font-size: 11px; line-height: 1.38; } .nav-group-label { color: #9BA8B8; padding-left: 2px; } [data-testid="stSidebar"] [data-testid="stButton"] > button { min-height: 38px; border-radius: 7px !important; } [data-testid="stSidebar"] [data-testid="stBaseButton-primary"] { background: #172334 !important; border-color: #3F8FE5 !important; box-shadow: inset 4px 0 0 var(--procura-green) !important; } .sidebar-flow { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 10px; } .sidebar-flow span { background: #0A1018; border: 1px solid #243246; border-radius: 6px; color: #B8C4D2; font-size: 10px; font-weight: 760; padding: 5px 6px; } .ops-hero { background: linear-gradient(135deg, rgba(63, 143, 229, 0.10) 0%, rgba(47, 191, 143, 0.06) 52%, rgba(230, 169, 74, 0.05) 100%), #0F151D; border-color: #2B3B4F; } .ops-route-card { min-height: 118px; border-top: 0; border-left: 3px solid var(--procura-blue); box-shadow: 0 10px 22px rgba(0, 0, 0, 0.14); } .ops-route-card:hover { border-left-color: var(--procura-green); background: #121B26; } .summary-card { min-height: 78px; } .admin-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; background: linear-gradient(135deg, rgba(63, 143, 229, 0.12) 0%, rgba(47, 191, 143, 0.06) 100%), #0F151D; border: 1px solid #2B3B4F; border-radius: 8px; padding: 18px; margin: 4px 0 16px 0; } .admin-hero-badge { white-space: nowrap; background: #0E241A; border: 1px solid #1F805E; color: #7CE0B7; border-radius: 999px; padding: 6px 11px; font-size: 11px; font-weight: 820; } .notice-panel { background: #0F151D; border: 1px solid var(--procura-border); border-left: 3px solid var(--procura-blue); border-radius: 8px; padding: 13px 15px; margin: 12px 0; } .notice-panel.tone-green { border-left-color: var(--procura-green); } .notice-panel.tone-amber { border-left-color: var(--procura-amber); } .notice-panel.tone-red { border-left-color: #EF5B5B; } .notice-title { color: var(--procura-text); font-size: 14px; font-weight: 850; margin-bottom: 4px; } .notice-body { color: var(--procura-muted); font-size: 12.5px; line-height: 1.45; } .table-toolbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; background: #0F151D; border: 1px solid var(--procura-border); border-radius: 8px; padding: 12px 14px; margin: 14px 0 8px 0; } .table-toolbar-title { color: var(--procura-text); font-size: 15px; font-weight: 850; margin-bottom: 3px; } .table-toolbar-subtitle { color: var(--procura-muted); font-size: 12px; line-height: 1.4; } .table-toolbar-meta { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; } .table-toolbar-meta span { color: #B8C4D2; background: #0A1018; border: 1px solid #26384E; border-radius: 999px; padding: 4px 8px; font-size: 10.5px; font-weight: 760; } .access-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin: 8px 0 16px 0; } .access-item { background: #0F151D; border: 1px solid var(--procura-border); border-radius: 8px; padding: 10px 12px; } .access-item span { display: block; color: var(--procura-muted); font-size: 11px; font-weight: 780; margin-bottom: 4px; } .access-item b { color: #748091; font-size: 13px; } .access-item.is-on { border-left: 3px solid var(--procura-green); } .access-item.is-on b { color: #7CE0B7; } .access-item.is-off { opacity: 0.72; } .bid-info-band { background: #0D1520; background-image: linear-gradient(180deg, rgba(24, 36, 51, 0.98), rgba(11, 18, 27, 0.98)); border: 1px solid rgba(126, 148, 173, 0.34); border-radius: 8px; padding: 16px; margin: 10px 0 18px 0; box-shadow: 0 18px 42px rgba(0, 0, 0, 0.22); } .rfq-summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 11px; margin: 0; } .rfq-summary-grid + .rfq-summary-grid { margin-top: 11px; } .bid-contact-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } .rfq-summary-tile { background: #101A27; border: 1px solid rgba(126, 148, 173, 0.32); border-left: 4px solid var(--procura-blue); border-radius: 8px; padding: 14px 15px; min-height: 92px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.055), 0 10px 24px rgba(0, 0, 0, 0.12); } .rfq-summary-tile span { display: block; color: var(--procura-muted); font-size: 10px; font-weight: 820; text-transform: uppercase; margin-bottom: 6px; } .rfq-summary-tile b { display: block; color: var(--procura-text); font-size: 13.5px; line-height: 1.35; word-break: break-word; } .rfq-summary-tile small { display: block; color: var(--procura-muted); font-size: 11px; line-height: 1.35; margin-top: 7px; } .rfq-summary-tile.tone-green { border-left-color: var(--procura-green); background: linear-gradient(180deg, rgba(16, 72, 55, 0.34), rgba(16, 72, 55, 0.16)); } .rfq-summary-tile.tone-blue { border-left-color: var(--procura-blue); background: linear-gradient(180deg, rgba(37, 99, 235, 0.28), rgba(37, 99, 235, 0.13)); } .rfq-summary-tile.tone-amber { border-left-color: var(--procura-amber); background: linear-gradient(180deg, rgba(245, 158, 11, 0.24), rgba(245, 158, 11, 0.11)); } .rfq-summary-tile.decision-card b { font-size: 15.5px; color: #FFFFFF; } .rfq-email-preview { background: #F7FAFC; border: 1px solid #D8DEE8; border-radius: 10px; overflow: hidden; box-shadow: 0 18px 50px rgba(0, 0, 0, 0.18); margin: 14px 0; } .rfq-email-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; background: #0B1320; padding: 22px 24px; } .rfq-email-kicker { color: #7CE0B7; font-size: 11px; font-weight: 820; text-transform: uppercase; margin-bottom: 6px; } .rfq-email-title { color: #FFFFFF; font-size: 23px; font-weight: 850; line-height: 1.15; } .rfq-email-subject { color: #A8B3C5; font-size: 13px; line-height: 1.4; margin-top: 6px; } .rfq-email-badge { color: #0B1320; background: #7CE0B7; border-radius: 999px; padding: 5px 10px; font-size: 10px; font-weight: 850; text-transform: uppercase; } .rfq-email-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; padding: 16px 18px 8px 18px; background: #FFFFFF; } .rfq-email-meta div { border: 1px solid #D8DEE8; border-radius: 8px; padding: 9px 10px; background: #F8FAFC; } .rfq-email-meta span { display: block; color: #64748B; font-size: 10px; font-weight: 850; text-transform: uppercase; margin-bottom: 4px; } .rfq-email-meta b { color: #0F172A; font-size: 12px; line-height: 1.35; } .rfq-email-body { background: #FFFFFF; color: #172033; font-size: 13.5px; line-height: 1.58; padding: 18px 24px 24px 24px; white-space: normal; max-height: 620px; overflow: auto; } [data-testid="stDataFrame"] { overflow: hidden; } [data-testid="stDataFrame"] [role="columnheader"] { font-weight: 800 !important; } @media (max-width: 900px) { .module-header, .page-title-row, .ops-hero { flex-direction: column; grid-template-columns: 1fr; } .admin-hero, .table-toolbar { flex-direction: column; } .free-source-grid, .checklist-block { grid-template-columns: 1fr; } .rfq-email-header { flex-direction: column; } .table-toolbar-meta { justify-content: flex-start; } .page-meta { justify-content: flex-start; } }