512 lines
10 KiB
CSS
512 lines
10 KiB
CSS
:root {
|
|
--board-bg: #05070d;
|
|
--board-panel: #101321;
|
|
--board-panel-alt: #161a2c;
|
|
--board-border: rgba(255, 255, 255, 0.08);
|
|
--board-accent: #2dd4bf;
|
|
--board-accent-soft: rgba(45, 212, 191, 0.12);
|
|
--board-text: #e5e7eb;
|
|
--board-text-muted: #94a3b8;
|
|
--board-text-faint: #64748b;
|
|
--panel-radius: 16px;
|
|
--panel-shadow: 0 12px 36px rgba(2, 6, 23, 0.38);
|
|
--transition-base: 200ms ease;
|
|
font-family: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
background: radial-gradient(circle at 20% 20%, rgba(37, 99, 235, 0.15), transparent 55%),
|
|
radial-gradient(circle at 80% 0%, rgba(45, 212, 191, 0.12), transparent 50%),
|
|
var(--board-bg);
|
|
color: var(--board-text);
|
|
-webkit-font-smoothing: antialiased;
|
|
font-size: 18px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.board-shell {
|
|
min-height: 100vh;
|
|
padding: 1.75rem clamp(1rem, 5vw, 2.75rem) 2.25rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.board-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-end;
|
|
gap: 1rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.board-header__title {
|
|
font-size: clamp(2.25rem, 3vw, 3.1rem);
|
|
font-weight: 600;
|
|
letter-spacing: 0.035em;
|
|
}
|
|
|
|
.board-header__meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.65rem 1.5rem;
|
|
font-size: 1rem;
|
|
color: var(--board-text-muted);
|
|
align-items: center;
|
|
}
|
|
|
|
.board-header__meta span {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.4rem;
|
|
}
|
|
|
|
.board-header__status {
|
|
gap: 1.25rem;
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.board-header__status time {
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: 600;
|
|
color: var(--board-text);
|
|
}
|
|
|
|
.board-header__error {
|
|
color: var(--board-warn);
|
|
font-weight: 600;
|
|
display: none;
|
|
}
|
|
|
|
.board-header__error[aria-hidden="false"] {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.board-content {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(540px, 1fr));
|
|
gap: 1.75rem;
|
|
align-content: start;
|
|
}
|
|
|
|
.board-loader {
|
|
min-height: 40vh;
|
|
display: grid;
|
|
place-items: center;
|
|
color: var(--board-text-muted);
|
|
letter-spacing: 0.12em;
|
|
text-transform: uppercase;
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.board-stack {
|
|
display: grid;
|
|
gap: 1.75rem;
|
|
}
|
|
|
|
.section {
|
|
display: grid;
|
|
gap: 1.1rem;
|
|
}
|
|
|
|
.section__header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
gap: 0.75rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.section__title {
|
|
font-size: clamp(1.5rem, 2.4vw, 1.9rem);
|
|
font-weight: 600;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
.section__meta {
|
|
color: var(--board-text-muted);
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.meta-banner {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.75rem 1.5rem;
|
|
background: rgba(45, 212, 191, 0.1);
|
|
border: 1px solid rgba(45, 212, 191, 0.25);
|
|
border-radius: var(--panel-radius);
|
|
padding: 0.85rem 1.15rem;
|
|
font-size: 1rem;
|
|
color: var(--board-text-muted);
|
|
}
|
|
|
|
.meta-banner strong {
|
|
color: var(--board-text);
|
|
font-weight: 600;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.stat-grid {
|
|
display: grid;
|
|
gap: 0.9rem;
|
|
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
}
|
|
|
|
.stat-card {
|
|
background: linear-gradient(145deg, rgba(15, 23, 42, 0.92), rgba(15, 23, 42, 0.7));
|
|
border: 1px solid var(--board-border);
|
|
border-radius: var(--panel-radius);
|
|
padding: 1.05rem 1.2rem;
|
|
display: grid;
|
|
gap: 0.35rem;
|
|
min-height: 140px;
|
|
}
|
|
|
|
.stat-card__label {
|
|
font-size: 0.95rem;
|
|
text-transform: uppercase;
|
|
color: var(--board-text-muted);
|
|
letter-spacing: 0.12em;
|
|
}
|
|
|
|
.stat-card__value {
|
|
font-size: clamp(2.2rem, 3.5vw, 2.7rem);
|
|
font-weight: 600;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.stat-card__unit {
|
|
color: var(--board-text-faint);
|
|
font-size: 1rem;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.stat-card__note {
|
|
color: var(--board-text-muted);
|
|
font-size: 0.95rem;
|
|
font-style: italic;
|
|
}
|
|
|
|
.tandem-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
gap: 1rem;
|
|
}
|
|
|
|
.stage-card {
|
|
background: var(--board-panel);
|
|
border: 1px solid var(--board-border);
|
|
border-radius: var(--panel-radius);
|
|
padding: 1rem 1.05rem 1.1rem;
|
|
display: grid;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.stage-card__header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.stage-card__title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.stage-card__badge {
|
|
display: inline-flex;
|
|
width: 1.85rem;
|
|
height: 1.85rem;
|
|
border-radius: 50%;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: rgba(96, 165, 250, 0.2);
|
|
border: 1px solid rgba(96, 165, 250, 0.45);
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.status-pill {
|
|
border-radius: 999px;
|
|
padding: 0.35rem 0.85rem;
|
|
font-size: 0.95rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
background: rgba(148, 163, 184, 0.18);
|
|
border: 1px solid rgba(148, 163, 184, 0.35);
|
|
color: var(--board-text);
|
|
}
|
|
|
|
.status-pill--ok {
|
|
background: rgba(52, 211, 153, 0.18);
|
|
border-color: rgba(52, 211, 153, 0.42);
|
|
color: #bbf7d0;
|
|
}
|
|
|
|
.status-pill--warn {
|
|
background: rgba(251, 191, 36, 0.18);
|
|
border-color: rgba(251, 191, 36, 0.42);
|
|
color: #fef3c7;
|
|
}
|
|
|
|
.status-pill--alert {
|
|
background: rgba(248, 113, 113, 0.2);
|
|
border-color: rgba(248, 113, 113, 0.42);
|
|
color: #fecaca;
|
|
}
|
|
|
|
.status-pill--info {
|
|
background: rgba(96, 165, 250, 0.2);
|
|
border-color: rgba(96, 165, 250, 0.45);
|
|
color: #bfdbfe;
|
|
}
|
|
|
|
.progress {
|
|
display: grid;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
.progress__track {
|
|
position: relative;
|
|
height: 0.8rem;
|
|
border-radius: 999px;
|
|
background: rgba(148, 163, 184, 0.2);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.progress__bar {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 0;
|
|
background: linear-gradient(90deg, rgba(45, 212, 191, 0.85), rgba(45, 212, 191, 0.45));
|
|
transition: width 900ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
|
|
.progress__label {
|
|
font-size: 0.95rem;
|
|
color: var(--board-text-muted);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.metric-list {
|
|
display: grid;
|
|
gap: 0.65rem;
|
|
}
|
|
|
|
.metric {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
gap: 0.65rem;
|
|
}
|
|
|
|
.metric__label {
|
|
font-size: 1rem;
|
|
color: var(--board-text-muted);
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.metric__value {
|
|
font-size: 1.2rem;
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.metric__value em {
|
|
font-size: 0.95rem;
|
|
color: var(--board-text-faint);
|
|
font-style: normal;
|
|
margin-left: 0.35rem;
|
|
}
|
|
|
|
.mini-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
gap: 0.7rem;
|
|
}
|
|
|
|
.mini-card {
|
|
background: var(--board-panel-alt);
|
|
border: 1px solid var(--board-border);
|
|
border-radius: 14px;
|
|
padding: 0.75rem 0.9rem;
|
|
display: grid;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
.mini-card__label {
|
|
color: var(--board-text-muted);
|
|
font-size: 0.95rem;
|
|
letter-spacing: 0.1em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.mini-card__value {
|
|
font-size: 1.55rem;
|
|
font-weight: 600;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.tank-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
gap: 0.9rem;
|
|
}
|
|
|
|
.tank-card {
|
|
background: var(--board-panel);
|
|
border: 1px solid var(--board-border);
|
|
border-radius: var(--panel-radius);
|
|
padding: 0.85rem 1rem;
|
|
display: grid;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.tank-card__title {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
font-weight: 600;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.tank-card__meta {
|
|
font-size: 0.95rem;
|
|
color: var(--board-text-faint);
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.tank-card[data-level="low"] .progress__bar {
|
|
background: linear-gradient(90deg, rgba(248, 113, 113, 0.9), rgba(248, 113, 113, 0.55));
|
|
}
|
|
|
|
.tank-card[data-level="caution"] .progress__bar {
|
|
background: linear-gradient(90deg, rgba(251, 191, 36, 0.85), rgba(251, 191, 36, 0.5));
|
|
}
|
|
|
|
.equipment-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
|
gap: 1rem;
|
|
}
|
|
|
|
.equipment-card {
|
|
background: var(--board-panel);
|
|
border: 1px solid var(--board-border);
|
|
border-radius: var(--panel-radius);
|
|
padding: 1rem 1.1rem;
|
|
display: grid;
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.equipment-card__title {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.equipment-card__rows {
|
|
display: grid;
|
|
gap: 0.7rem;
|
|
}
|
|
|
|
.equipment-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.equipment-row__label {
|
|
color: var(--board-text-muted);
|
|
font-size: 1rem;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.equipment-row__value {
|
|
font-size: 1.2rem;
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.equipment-row__value small {
|
|
font-size: 0.85rem;
|
|
color: var(--board-text-faint);
|
|
letter-spacing: 0.08em;
|
|
margin-left: 0.35rem;
|
|
}
|
|
|
|
.equipment-subgrid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.equipment-mini {
|
|
background: var(--board-panel-alt);
|
|
border: 1px solid var(--board-border);
|
|
border-radius: 14px;
|
|
padding: 0.8rem 0.95rem;
|
|
display: grid;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.equipment-mini__title {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
[data-refresh-error="true"] {
|
|
filter: saturate(0.5);
|
|
}
|
|
|
|
@media (max-width: 1180px) {
|
|
.board-content {
|
|
grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
|
|
}
|
|
}
|
|
|
|
@media (max-width: 900px) {
|
|
.board-shell {
|
|
padding-inline: clamp(1rem, 3vw, 1.5rem);
|
|
}
|
|
.board-content {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
body {
|
|
font-size: 16px;
|
|
}
|
|
.board-header {
|
|
align-items: flex-start;
|
|
}
|
|
.board-header__meta {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
}
|