polypharmacy / frontend /src /styles.css
adithya9903's picture
Flatten project to root for OpenEnv submission readiness.
fa51dd9
:root {
--bg: #070814;
--bg-layer: #0a1026;
--panel: rgba(14, 22, 44, 0.72);
--panel-solid: rgba(20, 28, 52, 0.92);
--text: #e8f1ff;
--muted: #9ab2db;
--primary: #37d4ff;
--primary-2: #5a8dff;
--accent: #9d59ff;
--success: #6dfbcf;
--border: rgba(122, 162, 255, 0.28);
--line: rgba(109, 143, 225, 0.18);
--shadow: 0 16px 45px rgba(5, 8, 23, 0.6);
--shadow-strong: 0 14px 32px rgba(44, 105, 255, 0.4);
}
* {
box-sizing: border-box;
}
body {
margin: 0;
color: var(--text);
font-family: "Segoe UI", "SF Pro Text", "Helvetica Neue", sans-serif;
background:
radial-gradient(circle at 8% 12%, rgba(121, 87, 255, 0.22), transparent 38%),
radial-gradient(circle at 88% 20%, rgba(59, 204, 255, 0.26), transparent 34%),
radial-gradient(circle at 50% 100%, rgba(43, 128, 255, 0.26), transparent 40%),
linear-gradient(145deg, var(--bg) 0%, var(--bg-layer) 60%, #04060f 100%);
background-attachment: fixed;
}
.shell {
min-height: 100vh;
position: relative;
overflow: hidden;
padding: 24px 16px 34px;
}
.container {
width: min(1320px, 100%);
margin: 0 auto;
position: relative;
z-index: 2;
}
.bg-orb {
position: absolute;
border-radius: 50%;
pointer-events: none;
opacity: 0.9;
filter: blur(18px);
}
.orb-a {
width: min(46vw, 530px);
aspect-ratio: 1 / 1;
right: -9%;
top: -10%;
background: radial-gradient(circle, rgba(52, 203, 255, 0.35), rgba(52, 203, 255, 0.04) 70%);
}
.orb-b {
width: min(40vw, 460px);
aspect-ratio: 1 / 1;
left: -9%;
bottom: -15%;
background: radial-gradient(circle, rgba(160, 102, 255, 0.3), rgba(160, 102, 255, 0.06) 72%);
}
.glass {
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.01)),
var(--panel);
border: 1px solid var(--border);
box-shadow: var(--shadow);
backdrop-filter: blur(12px);
}
.topbar {
border-radius: 24px;
padding: clamp(14px, 2vw, 20px);
display: grid;
gap: 12px 16px;
grid-template-columns: minmax(220px, 1.2fr) auto minmax(280px, 1fr);
align-items: center;
}
.title-wrap h1 {
margin: 0;
font-size: clamp(1.15rem, 2.2vw, 1.95rem);
letter-spacing: 0.02em;
text-transform: uppercase;
text-shadow: 0 0 16px rgba(106, 192, 255, 0.3);
}
.title-wrap p {
margin: 6px 0 0;
font-size: 0.84rem;
color: var(--muted);
letter-spacing: 0.03em;
text-transform: uppercase;
}
.status-chip {
justify-self: center;
padding: 7px 14px;
border-radius: 999px;
font-size: 0.72rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
border: 1px solid transparent;
}
.status-chip.live {
color: #052c24;
background: linear-gradient(90deg, rgba(126, 255, 220, 0.9), rgba(84, 244, 196, 0.95));
box-shadow: 0 0 14px rgba(96, 244, 198, 0.36);
}
.status-chip.idle {
color: #d8e8ff;
border-color: rgba(117, 186, 255, 0.48);
background: rgba(60, 106, 198, 0.25);
}
.actions {
display: flex;
justify-content: flex-end;
flex-wrap: wrap;
gap: 10px;
}
button,
select,
input {
width: 100%;
min-height: 42px;
border-radius: 12px;
border: 1px solid var(--border);
font-size: 0.92rem;
padding: 10px 12px;
color: var(--text);
background: rgba(11, 19, 38, 0.84);
}
select,
input {
transition: border-color 120ms ease, box-shadow 120ms ease;
}
select:focus,
input:focus {
outline: none;
border-color: rgba(119, 200, 255, 0.88);
box-shadow: 0 0 0 2px rgba(95, 187, 255, 0.18);
}
button {
cursor: pointer;
border: 0;
width: auto;
font-weight: 700;
letter-spacing: 0.02em;
background: linear-gradient(135deg, var(--primary), var(--primary-2) 55%, var(--accent));
box-shadow: var(--shadow-strong);
transition: transform 140ms ease, filter 140ms ease, box-shadow 140ms ease;
}
button:hover {
transform: translateY(-1px);
filter: brightness(1.04);
box-shadow: 0 18px 32px rgba(50, 141, 255, 0.48);
}
button:active {
transform: translateY(0);
}
button.secondary {
background: linear-gradient(135deg, rgba(95, 185, 255, 0.9), rgba(154, 102, 255, 0.86));
}
button:disabled {
opacity: 0.56;
cursor: not-allowed;
filter: grayscale(0.2);
box-shadow: none;
transform: none;
}
.layout {
margin-top: 16px;
display: grid;
gap: 14px;
grid-template-columns: 1.12fr 0.88fr;
align-items: start;
}
.panel {
border-radius: 20px;
padding: clamp(14px, 1.8vw, 20px);
position: relative;
}
.panel::after {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
border: 1px solid var(--line);
pointer-events: none;
}
.panel-wide {
grid-column: 1 / -1;
}
.panel h2 {
margin: 0 0 12px;
font-size: 1rem;
font-weight: 700;
letter-spacing: 0.05em;
text-transform: uppercase;
}
.kpi-grid {
display: grid;
gap: 10px;
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.kpi-grid div {
border-radius: 13px;
border: 1px solid var(--border);
background: var(--panel-solid);
padding: 11px 12px;
}
.kpi-grid span {
display: block;
margin-bottom: 4px;
font-size: 0.72rem;
color: var(--muted);
text-transform: uppercase;
letter-spacing: 0.05em;
}
.kpi-grid strong {
font-size: 1.06rem;
line-height: 1.2;
}
.action-row,
.stack {
display: grid;
gap: 10px;
margin-bottom: 12px;
}
.action-row label {
color: var(--muted);
font-size: 0.78rem;
letter-spacing: 0.05em;
text-transform: uppercase;
}
.stack-two {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.med-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
max-height: 430px;
overflow: auto;
padding-right: 4px;
}
.med-card {
border-radius: 14px;
border: 1px solid var(--border);
background: var(--panel-solid);
padding: 11px 12px;
transition: transform 130ms ease, border-color 130ms ease;
}
.med-card:hover {
transform: translateY(-1px);
border-color: rgba(109, 224, 255, 0.72);
}
.med-card p {
margin: 6px 0 4px;
color: var(--muted);
text-transform: capitalize;
}
.med-card small {
color: #c7d9ff;
}
.logs {
max-height: 300px;
overflow: auto;
padding-right: 4px;
display: grid;
gap: 7px;
font-size: 0.84rem;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;
}
.logs div {
border-radius: 10px;
border: 1px solid var(--border);
background: rgba(10, 16, 31, 0.84);
padding: 8px 10px;
color: #dbebff;
}
.muted {
margin: 0;
color: var(--muted);
}
.budget-note {
margin-top: 10px;
border: 1px solid var(--border);
border-radius: 12px;
padding: 10px 12px;
background: rgba(13, 22, 42, 0.82);
}
@media (max-width: 1180px) {
.layout {
grid-template-columns: 1fr;
}
.topbar {
grid-template-columns: 1fr;
}
.status-chip {
justify-self: start;
}
.actions {
justify-content: flex-start;
}
}
@media (max-width: 760px) {
.shell {
padding: 14px 10px 24px;
}
.topbar,
.panel {
border-radius: 16px;
}
.actions {
width: 100%;
}
.actions button,
.actions select {
width: 100%;
}
.kpi-grid,
.med-grid,
.stack-two {
grid-template-columns: 1fr;
}
.logs {
max-height: 240px;
}
}