bowler-chart/public/css/app.css

97 lines
2.1 KiB
CSS

/* App-specific styling layered on top of Beer CSS (Material 3). */
:root {
--status-green: #2e7d32;
--status-amber: #f9a825;
--status-red: #c62828;
--status-none: transparent;
}
body { padding-bottom: 4rem; }
.app-bar-title { font-weight: 600; letter-spacing: 0.2px; }
/* ---- Bowler chart grid ---- */
.bowler-wrap { overflow-x: auto; }
table.bowler {
border-collapse: collapse;
width: 100%;
min-width: 64rem;
font-size: 0.9rem;
}
table.bowler th,
table.bowler td {
border: 1px solid var(--outline-variant, #cac4d0);
padding: 0.35rem 0.5rem;
text-align: center;
white-space: nowrap;
}
table.bowler thead th {
background: var(--surface-container-high, #ece6f0);
position: sticky;
top: 0;
z-index: 2;
}
/* Frozen first column (KPI name) */
table.bowler .kpi-col {
text-align: left;
position: sticky;
left: 0;
background: var(--surface, #fef7ff);
z-index: 1;
min-width: 16rem;
max-width: 22rem;
white-space: normal;
}
table.bowler tr.project-row td {
text-align: left;
background: var(--secondary-container, #e8def8);
color: var(--on-secondary-container, #1d192b);
font-weight: 600;
position: sticky;
left: 0;
}
/* Status cells */
.cell { cursor: default; }
.cell.editable { cursor: pointer; }
.cell.editable:hover { outline: 2px solid var(--primary, #6750a4); outline-offset: -2px; }
.cell.green { background: var(--status-green); color: #fff; }
.cell.amber { background: var(--status-amber); color: #000; }
.cell.red { background: var(--status-red); color: #fff; }
.cell.none { background: var(--status-none); }
.cell .cell-value { font-weight: 600; }
.cell.has-note::after {
content: '•';
position: absolute;
top: 2px;
right: 4px;
font-size: 0.7rem;
opacity: 0.7;
}
.cell { position: relative; }
/* Sparkline trend column */
.trend-col svg { display: block; }
.muted { opacity: 0.7; }
.right { text-align: right; }
.nowrap { white-space: nowrap; }
/* Login screen */
.login-shell {
min-height: 100vh;
display: grid;
place-items: center;
}
.login-card { width: min(92vw, 24rem); }
dialog.modal { width: min(94vw, 32rem); }