243 lines
6.2 KiB
CSS
243 lines
6.2 KiB
CSS
/*
|
|
* Report screens (project / plan / strategy).
|
|
* Quiet, packet-like: card surfaces, muted labels, tabular numbers. The only loud
|
|
* elements are the status dots and the needs-attention accent border.
|
|
*/
|
|
|
|
/* ── stat tiles ─────────────────────────────────────────────────────── */
|
|
|
|
.reportStatTiles {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
|
|
gap: 12px;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.reportStatTile {
|
|
background: var(--card-bg, var(--secondary-background));
|
|
border: 1px solid var(--card-border, var(--main-border-color));
|
|
border-radius: var(--card-radius, var(--box-radius));
|
|
padding: 14px 16px;
|
|
}
|
|
|
|
.reportStatTile .tileLabel {
|
|
display: block;
|
|
font-size: var(--font-size-s);
|
|
color: var(--secondary-font-color);
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.reportStatTile .tileValue {
|
|
display: block;
|
|
font-size: var(--font-size-xxxl);
|
|
font-weight: 600;
|
|
line-height: 1.15;
|
|
color: var(--primary-font-color);
|
|
}
|
|
|
|
.reportStatTile .tileValue.tileValueDanger {
|
|
color: var(--red);
|
|
}
|
|
|
|
.reportStatTile .tileDelta {
|
|
display: block;
|
|
font-size: var(--font-size-s);
|
|
color: var(--secondary-font-color);
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.reportStatTile .tileDelta.deltaGood { color: var(--green); }
|
|
.reportStatTile .tileDelta.deltaBad { color: var(--red); }
|
|
|
|
/* ── sections ───────────────────────────────────────────────────────── */
|
|
|
|
.reportSection {
|
|
margin-bottom: 32px;
|
|
}
|
|
|
|
.reportSection h5.subtitle {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 8px;
|
|
padding-bottom: 6px;
|
|
margin-bottom: 12px;
|
|
border-bottom: 1px solid var(--main-border-color);
|
|
}
|
|
|
|
.reportSection h5.subtitle .sectionCount {
|
|
font-size: var(--font-size-s);
|
|
font-weight: normal;
|
|
color: var(--secondary-font-color);
|
|
}
|
|
|
|
/* ── needs attention ────────────────────────────────────────────────── */
|
|
|
|
.reportNeedsAttention {
|
|
background: var(--card-bg, var(--secondary-background));
|
|
border: 1px solid var(--card-border, var(--main-border-color));
|
|
border-left: 3px solid var(--red);
|
|
border-radius: var(--card-radius, var(--box-radius));
|
|
padding: 14px 16px;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.reportNeedsAttention h5.subtitle {
|
|
border-bottom: 0;
|
|
padding-bottom: 0;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.reportNeedsAttention ul li {
|
|
padding: 3px 0;
|
|
font-size: var(--font-size-m);
|
|
}
|
|
|
|
/* ── milestone list ─────────────────────────────────────────────────── */
|
|
|
|
.reportMilestoneList {
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.reportMilestoneList .reportMilestone {
|
|
background: var(--card-bg, var(--secondary-background));
|
|
border: 1px solid var(--card-border, var(--main-border-color));
|
|
border-radius: var(--card-radius, var(--box-radius));
|
|
padding: 10px 14px;
|
|
margin: 0 0 8px 0;
|
|
}
|
|
|
|
.reportMilestone .milestoneTitleRow {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.reportMilestone .milestoneProject {
|
|
font-size: var(--font-size-s);
|
|
color: var(--secondary-font-color);
|
|
}
|
|
|
|
.reportMilestone .milestoneMeta {
|
|
margin-left: auto;
|
|
font-size: var(--font-size-s);
|
|
color: var(--secondary-font-color);
|
|
white-space: nowrap;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.reportMilestone .milestoneOutcome .outcomeText {
|
|
margin-top: 4px;
|
|
font-size: var(--font-size-m);
|
|
}
|
|
|
|
.reportMilestone .reportKeyTasks summary {
|
|
font-size: var(--font-size-s);
|
|
color: var(--secondary-font-color);
|
|
cursor: pointer;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.reportMilestone .progress {
|
|
height: 6px;
|
|
margin: 0;
|
|
flex: 1;
|
|
}
|
|
|
|
/* ── tables ─────────────────────────────────────────────────────────── */
|
|
|
|
.reportTable {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
}
|
|
|
|
.reportTable thead th {
|
|
font-size: var(--font-size-s);
|
|
font-weight: 600;
|
|
color: var(--secondary-font-color);
|
|
text-align: left;
|
|
padding: 6px 12px;
|
|
border-bottom: 1px solid var(--main-border-color);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.reportTable tbody td {
|
|
padding: 10px 12px;
|
|
border-bottom: 1px solid var(--main-border-color);
|
|
vertical-align: top;
|
|
font-size: var(--font-size-m);
|
|
}
|
|
|
|
.reportTable tbody tr:last-child td {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.reportTable th.numCol,
|
|
.reportTable td.numCol {
|
|
text-align: right;
|
|
white-space: nowrap;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.reportTable td .cellNote {
|
|
display: block;
|
|
font-size: var(--font-size-s);
|
|
color: var(--secondary-font-color);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.reportTable .table-group-row td {
|
|
font-weight: 600;
|
|
color: var(--secondary-font-color);
|
|
font-size: var(--font-size-s);
|
|
padding-top: 14px;
|
|
border-bottom: 0;
|
|
}
|
|
|
|
/* ── narrative & slippage ───────────────────────────────────────────── */
|
|
|
|
.reportStatusUpdate {
|
|
padding: 6px 0 6px 12px;
|
|
}
|
|
|
|
.reportSlippage {
|
|
border: 1px dashed var(--main-border-color);
|
|
border-radius: var(--card-radius, var(--box-radius));
|
|
padding: 10px 14px;
|
|
margin-top: 12px;
|
|
font-size: var(--font-size-s);
|
|
color: var(--secondary-font-color);
|
|
}
|
|
|
|
.reportSlippage strong {
|
|
color: var(--primary-font-color);
|
|
}
|
|
|
|
/* ── period picker & header band ────────────────────────────────────── */
|
|
|
|
.reportHeaderBand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 20px;
|
|
flex-wrap: wrap;
|
|
margin-bottom: 16px;
|
|
font-size: var(--font-size-m);
|
|
}
|
|
|
|
.reportStatusPill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.statusDot {
|
|
display: inline-block;
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 50%;
|
|
flex: none;
|
|
}
|