40292-vm/static/css/custom.css
2026-06-19 15:12:08 +00:00

430 lines
15 KiB
CSS

/* OPTEMA AI custom brand system */
:root {
--optema-ink: #14213d;
--optema-muted: #627084;
--optema-primary: #0f8b8d;
--optema-primary-dark: #0b6768;
--optema-secondary: #f6ae2d;
--optema-accent: #f26419;
--optema-mint: #dff8f5;
--optema-sand: #fff6e4;
--optema-cloud: #f7fafc;
--optema-white: #ffffff;
--optema-line: #dce8ee;
--optema-shadow: 0 24px 70px rgba(20, 33, 61, 0.14);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
margin: 0;
font-family: 'Inter', system-ui, -apple-system, sans-serif;
color: var(--optema-ink);
background:
radial-gradient(circle at 8% 4%, rgba(15, 139, 141, 0.14), transparent 28rem),
radial-gradient(circle at 95% 8%, rgba(246, 174, 45, 0.16), transparent 24rem),
var(--optema-cloud);
}
h1, h2, h3, .navbar-brand {
font-family: 'Plus Jakarta Sans', 'Inter', sans-serif;
letter-spacing: -0.04em;
}
a { color: inherit; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
outline: 3px solid rgba(246, 174, 45, 0.65) !important;
outline-offset: 3px;
}
.optema-nav {
position: sticky;
top: 0;
z-index: 20;
background: rgba(247, 250, 252, 0.82);
backdrop-filter: blur(18px);
border-bottom: 1px solid rgba(220, 232, 238, 0.82);
}
.brand-mark { font-weight: 800; color: var(--optema-ink); }
.brand-icon {
display: inline-grid;
place-items: center;
width: 2.15rem; height: 2.15rem;
margin-right: .45rem;
border-radius: 14px;
color: white;
background: linear-gradient(135deg, var(--optema-primary), var(--optema-accent));
box-shadow: 0 12px 24px rgba(15, 139, 141, 0.24);
}
.nav-link { font-weight: 700; color: var(--optema-muted); }
.nav-link:hover, .nav-link:focus { color: var(--optema-primary); }
.admin-link {
border: 1px solid var(--optema-line);
border-radius: 999px;
padding-inline: 1rem !important;
background: rgba(255,255,255,.7);
}
.hero-section {
min-height: 78vh;
display: flex;
align-items: center;
background:
linear-gradient(145deg, rgba(223,248,245,.88), rgba(255,246,228,.72) 55%, rgba(255,255,255,.9)),
var(--optema-cloud);
}
.shape {
position: absolute; border-radius: 999px; filter: blur(.2px); opacity: .82;
}
.shape-one {
width: 15rem; height: 15rem; right: 6%; top: 12%;
background: linear-gradient(135deg, rgba(15,139,141,.2), rgba(246,174,45,.38));
}
.shape-two {
width: 9rem; height: 9rem; left: 4%; bottom: 8%;
background: linear-gradient(135deg, rgba(242,100,25,.22), rgba(15,139,141,.2));
}
.eyebrow, .section-kicker {
color: var(--optema-primary-dark);
text-transform: uppercase;
letter-spacing: .12em;
font-size: .78rem;
font-weight: 800;
}
.display-heading {
font-size: clamp(2.7rem, 6vw, 5.9rem);
line-height: .95;
font-weight: 800;
}
.hero-copy, .section-copy {
color: var(--optema-muted);
font-size: clamp(1rem, 1vw + .76rem, 1.2rem);
line-height: 1.75;
}
.btn-optema {
border: 0;
color: #fff;
font-weight: 800;
border-radius: 999px;
padding: .9rem 1.35rem;
background: linear-gradient(135deg, var(--optema-primary), var(--optema-primary-dark));
box-shadow: 0 14px 35px rgba(15, 139, 141, .26);
}
.btn-optema:hover, .btn-optema:focus { color:#fff; transform: translateY(-1px); box-shadow: 0 18px 44px rgba(15,139,141,.32); }
.btn-outline-optema {
border: 1px solid rgba(15,139,141,.3);
color: var(--optema-primary-dark);
background: rgba(255,255,255,.68);
font-weight: 800;
border-radius: 999px;
padding: .9rem 1.35rem;
}
.btn-outline-optema:hover, .btn-outline-optema:focus { background: var(--optema-mint); color: var(--optema-primary-dark); }
.trust-strip { display: flex; flex-wrap: wrap; gap: .65rem; }
.trust-strip span, .score-pill, .status-dot {
display: inline-flex; align-items: center; gap: .45rem;
border: 1px solid rgba(15,139,141,.16);
background: rgba(255,255,255,.72);
border-radius: 999px;
padding: .55rem .8rem;
color: var(--optema-muted);
font-weight: 800;
font-size: .86rem;
}
.status-dot i { width: .55rem; height: .55rem; border-radius: 999px; background: #23c483; box-shadow: 0 0 0 6px rgba(35,196,131,.15); }
.glass-card, .form-shell, .analysis-card, .empty-state, .case-card, .metric-card {
border: 1px solid rgba(220, 232, 238, .9);
background: rgba(255,255,255,.82);
backdrop-filter: blur(20px);
box-shadow: var(--optema-shadow);
border-radius: 32px;
}
.decision-panel { padding: clamp(1.35rem, 3vw, 2rem); }
.mini-chart { display: grid; gap: 1rem; }
.mini-chart div {
--bar: 70%;
position: relative; overflow: hidden;
display: flex; justify-content: space-between;
padding: .9rem 1rem;
border-radius: 18px;
background: #eef6f7;
font-weight: 800;
}
.mini-chart div::before {
content: ''; position: absolute; inset: 0 auto 0 0; width: var(--bar);
background: linear-gradient(90deg, rgba(15,139,141,.24), rgba(246,174,45,.28));
}
.mini-chart span, .mini-chart b { position: relative; z-index: 1; }
.bar-95 { --bar: 95% !important; } .bar-88 { --bar: 88% !important; } .bar-82 { --bar: 82% !important; }
.solution-preview {
padding: 1.2rem; border-radius: 24px;
background: linear-gradient(135deg, var(--optema-ink), #183b56); color: white;
}
.solution-preview h2 { font-size: 1.35rem; }
.solution-preview p { color: rgba(255,255,255,.74); margin-bottom: 0; }
.small-label { color: var(--optema-secondary) !important; text-transform: uppercase; font-weight: 800; letter-spacing: .12em; font-size: .75rem; }
.section-pad { padding: clamp(4rem, 8vw, 7rem) 0; }
.section-title, .page-title { font-size: clamp(2rem, 3.5vw, 3.6rem); font-weight: 800; line-height: 1.02; }
.form-shell { padding: clamp(1.25rem, 3vw, 2rem); }
.form-control, .form-select { border: 1px solid var(--optema-line); border-radius: 18px; padding: .9rem 1rem; }
.form-control:focus, .form-select:focus { border-color: var(--optema-primary); box-shadow: 0 0 0 .22rem rgba(15,139,141,.13); }
.form-label { font-weight: 800; color: var(--optema-ink); }
.form-text { color: var(--optema-muted); }
.feature-list { display: grid; gap: .85rem; margin-top: 1.5rem; }
.feature-list div { display: flex; gap: .8rem; align-items: center; color: var(--optema-muted); }
.feature-list strong {
display:grid; place-items:center; width:2rem; height:2rem; border-radius:12px;
background: var(--optema-sand); color: var(--optema-accent);
}
.case-card {
display: flex; flex-direction: column; gap: .9rem;
padding: 1.35rem; text-decoration: none; transition: .2s ease;
}
.case-card:hover, .case-card:focus { transform: translateY(-4px); border-color: rgba(15,139,141,.35); color: var(--optema-ink); }
.case-card h2, .case-card h3 { font-size: 1.15rem; font-weight: 800; margin: 0; }
.case-card p { color: var(--optema-muted); margin: 0; line-height: 1.65; }
.case-area { color: var(--optema-primary-dark); font-size: .78rem; font-weight: 900; text-transform: uppercase; letter-spacing: .1em; }
.case-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .7rem; color: var(--optema-muted); font-weight: 800; font-size: .86rem; margin-top: auto; }
.empty-state { padding: 2rem; text-align: center; }
.empty-state p { color: var(--optema-muted); }
.link-optema { color: var(--optema-primary-dark); font-weight: 900; text-decoration: none; }
.link-optema:hover { color: var(--optema-accent); }
.site-footer {
padding: 1.5rem 0; color: var(--optema-muted);
border-top: 1px solid var(--optema-line); background: rgba(255,255,255,.68);
}
.page-shell { min-height: 100vh; background: linear-gradient(180deg, rgba(223,248,245,.55), transparent 24rem); }
.detail-hero { padding: clamp(3rem, 6vw, 5rem) 0; background: linear-gradient(135deg, rgba(223,248,245,.9), rgba(255,246,228,.85)); }
.metric-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1rem; }
.metric-card { padding: 1.25rem; }
.metric-card span { color: var(--optema-muted); font-weight: 800; display:block; }
.metric-card strong { font-family:'Plus Jakarta Sans'; font-size: 1.75rem; }
.analysis-card { padding: clamp(1.2rem, 2.6vw, 2rem); }
.analysis-card h2 { font-weight: 800; margin-bottom: 1.2rem; }
.cause-list { display: grid; gap: 1.2rem; }
.cause-list article p { color: var(--optema-muted); margin: .6rem 0 0; line-height: 1.6; }
.progress { height: .65rem; background: #e6f2f3; border-radius: 999px; margin-top: .55rem; }
.progress-bar { background: linear-gradient(90deg, var(--optema-primary), var(--optema-secondary)); }
.solution-table { --bs-table-bg: transparent; }
.solution-table th { color: var(--optema-muted); text-transform: uppercase; letter-spacing: .08em; font-size: .78rem; }
.solution-table td { padding: 1rem .75rem; }
.solution-table p { color: var(--optema-muted); margin: .25rem 0; }
.solution-table small { color: var(--optema-primary-dark); font-weight: 800; }
.rank-badge { display: inline-flex; border-radius: 999px; background: var(--optema-sand); color: var(--optema-accent); padding: .35rem .6rem; font-weight: 900; }
.action-card { background: linear-gradient(145deg, rgba(255,255,255,.92), rgba(223,248,245,.76)); }
.timeline { display: grid; gap: 1rem; }
.timeline article { display: grid; grid-template-columns: 5rem 1fr; gap: 1rem; align-items: start; }
.timeline article > span {
display: inline-flex; justify-content:center; padding: .45rem .65rem; border-radius: 999px;
background: var(--optema-ink); color: white; font-weight: 900; font-size: .82rem;
}
.timeline h3 { font-size: 1.05rem; font-weight: 800; margin-bottom: .2rem; }
.timeline p { color: var(--optema-muted); margin: 0; line-height: 1.6; }
.score-width-0 { width: 0%; }
.score-width-1 { width: 1%; }
.score-width-2 { width: 2%; }
.score-width-3 { width: 3%; }
.score-width-4 { width: 4%; }
.score-width-5 { width: 5%; }
.score-width-6 { width: 6%; }
.score-width-7 { width: 7%; }
.score-width-8 { width: 8%; }
.score-width-9 { width: 9%; }
.score-width-10 { width: 10%; }
.score-width-11 { width: 11%; }
.score-width-12 { width: 12%; }
.score-width-13 { width: 13%; }
.score-width-14 { width: 14%; }
.score-width-15 { width: 15%; }
.score-width-16 { width: 16%; }
.score-width-17 { width: 17%; }
.score-width-18 { width: 18%; }
.score-width-19 { width: 19%; }
.score-width-20 { width: 20%; }
.score-width-21 { width: 21%; }
.score-width-22 { width: 22%; }
.score-width-23 { width: 23%; }
.score-width-24 { width: 24%; }
.score-width-25 { width: 25%; }
.score-width-26 { width: 26%; }
.score-width-27 { width: 27%; }
.score-width-28 { width: 28%; }
.score-width-29 { width: 29%; }
.score-width-30 { width: 30%; }
.score-width-31 { width: 31%; }
.score-width-32 { width: 32%; }
.score-width-33 { width: 33%; }
.score-width-34 { width: 34%; }
.score-width-35 { width: 35%; }
.score-width-36 { width: 36%; }
.score-width-37 { width: 37%; }
.score-width-38 { width: 38%; }
.score-width-39 { width: 39%; }
.score-width-40 { width: 40%; }
.score-width-41 { width: 41%; }
.score-width-42 { width: 42%; }
.score-width-43 { width: 43%; }
.score-width-44 { width: 44%; }
.score-width-45 { width: 45%; }
.score-width-46 { width: 46%; }
.score-width-47 { width: 47%; }
.score-width-48 { width: 48%; }
.score-width-49 { width: 49%; }
.score-width-50 { width: 50%; }
.score-width-51 { width: 51%; }
.score-width-52 { width: 52%; }
.score-width-53 { width: 53%; }
.score-width-54 { width: 54%; }
.score-width-55 { width: 55%; }
.score-width-56 { width: 56%; }
.score-width-57 { width: 57%; }
.score-width-58 { width: 58%; }
.score-width-59 { width: 59%; }
.score-width-60 { width: 60%; }
.score-width-61 { width: 61%; }
.score-width-62 { width: 62%; }
.score-width-63 { width: 63%; }
.score-width-64 { width: 64%; }
.score-width-65 { width: 65%; }
.score-width-66 { width: 66%; }
.score-width-67 { width: 67%; }
.score-width-68 { width: 68%; }
.score-width-69 { width: 69%; }
.score-width-70 { width: 70%; }
.score-width-71 { width: 71%; }
.score-width-72 { width: 72%; }
.score-width-73 { width: 73%; }
.score-width-74 { width: 74%; }
.score-width-75 { width: 75%; }
.score-width-76 { width: 76%; }
.score-width-77 { width: 77%; }
.score-width-78 { width: 78%; }
.score-width-79 { width: 79%; }
.score-width-80 { width: 80%; }
.score-width-81 { width: 81%; }
.score-width-82 { width: 82%; }
.score-width-83 { width: 83%; }
.score-width-84 { width: 84%; }
.score-width-85 { width: 85%; }
.score-width-86 { width: 86%; }
.score-width-87 { width: 87%; }
.score-width-88 { width: 88%; }
.score-width-89 { width: 89%; }
.score-width-90 { width: 90%; }
.score-width-91 { width: 91%; }
.score-width-92 { width: 92%; }
.score-width-93 { width: 93%; }
.score-width-94 { width: 94%; }
.score-width-95 { width: 95%; }
.score-width-96 { width: 96%; }
.score-width-97 { width: 97%; }
.score-width-98 { width: 98%; }
.score-width-99 { width: 99%; }
.score-width-100 { width: 100%; }
@media (max-width: 767px) {
.metric-grid { grid-template-columns: 1fr; }
.timeline article { grid-template-columns: 1fr; }
.hero-section { min-height: auto; }
}
/* Streamlit-inspired MVP workspace */
.hero-subtitle {
font-family: 'Plus Jakarta Sans', 'Inter', sans-serif;
font-size: clamp(1.25rem, 1.2vw + 1rem, 2rem);
font-weight: 800;
color: var(--optema-primary-dark);
letter-spacing: -0.03em;
}
.mvp-hero .display-heading { letter-spacing: -0.07em; }
.mvp-workspace .sticky-lg-top { top: 6rem; }
.panel-heading {
display: flex;
gap: 1rem;
align-items: flex-start;
margin-bottom: 1.4rem;
}
.panel-heading h2 {
font-size: 1.45rem;
margin: 0 0 .25rem;
font-weight: 900;
}
.panel-heading p,
.form-note,
.formula-note,
.detail-status-card p {
color: var(--optema-muted);
line-height: 1.65;
}
.panel-icon {
display: inline-grid;
place-items: center;
width: 3rem;
height: 3rem;
border-radius: 18px;
background: linear-gradient(135deg, var(--optema-mint), var(--optema-sand));
box-shadow: 0 16px 28px rgba(15, 139, 141, .12);
font-size: 1.35rem;
}
.problem-textarea {
min-height: 15rem;
resize: vertical;
border-radius: 22px;
border-color: rgba(15,139,141,.18);
background: rgba(255,255,255,.82);
}
.problem-textarea:focus {
border-color: var(--optema-primary);
box-shadow: 0 0 0 .25rem rgba(15,139,141,.12);
}
.urgency-slider { accent-color: var(--optema-primary); }
.urgency-value {
min-width: 2.4rem;
text-align: center;
padding: .35rem .7rem;
border-radius: 999px;
color: #fff;
background: var(--optema-ink);
font-weight: 900;
}
.range-labels {
display: flex;
justify-content: space-between;
color: var(--optema-muted);
font-size: .82rem;
font-weight: 800;
margin-top: -.3rem;
}
.output-panel { overflow: hidden; }
.output-success {
display: inline-flex;
align-items: center;
gap: .5rem;
color: #087447;
background: rgba(35, 196, 131, .12);
border: 1px solid rgba(35, 196, 131, .22);
border-radius: 999px;
padding: .7rem 1rem;
font-weight: 900;
}
.output-section {
padding: 1.25rem 0;
border-top: 1px solid var(--optema-line);
}
.output-section:first-of-type { border-top: 0; padding-top: 0; }
.output-section h2 { font-size: clamp(1.25rem, 1vw + 1rem, 1.8rem); }
.compact-cause-list { gap: .85rem; }
.compact-cause-list article p { display: none; }
.preview-table th,
.preview-table td { white-space: nowrap; }
.detail-status-card { padding: 1.35rem; }
.bar-85 { --bar: 85% !important; }
.bar-70 { --bar: 70% !important; }
@media (max-width: 991px) {
.mvp-workspace .sticky-lg-top { position: static; }
}