97 lines
2.1 KiB
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); }
|