PROCURA / style.css
tokiospg's picture
Upload 7 files
3313fb0 verified
Raw
History Blame Contribute Delete
42.9 kB
@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;
}
}