Files
F-r-ldraledigplannerare/frontend/src/components/layout/layout.css
T
jacobh2 d14f86478a Lay the Almanacka design foundation: tokens, type, shell
New token system in global.css (near-white surfaces, one ink-blue
accent, no sub-12px type), self-hosted Schibsted Grotesk, rewritten
primitives (buttons, fields, modal shell, segmented, disclosure,
skeleton), a borderless 56px header with an SV | EN language toggle,
an Icon component replacing glyphs, page skeletons that keep the
layout during loading, and leave-type colours moved out of TS into
CSS variables. Feature blocks keep their structure for later phases.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-19 18:25:04 +02:00

105 lines
2.0 KiB
CSS

/* Layout container */
.layout {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: var(--c-bg);
}
.layout__main {
flex: 1;
max-width: var(--maxw);
width: 100%;
margin: 0 auto;
padding: var(--sp-6) var(--sp-5) var(--sp-7);
}
/* Dashboard & Pages */
.dashboard,
.calendar,
.settings-page,
.tips-page,
.auth-page {
width: 100%;
}
.dashboard > .alert {
margin-bottom: var(--sp-5);
}
/* Sections separate by whitespace and, where two run together, one
* hairline — never a stack of bordered cards. Every section looking equally
* "boxed" flattens the hierarchy the headline figures are meant to have. */
.dashboard__section,
.settings-page__section,
.calendar__section,
.tips-page__section {
background-color: transparent;
border: none;
border-top: 1px solid var(--c-border);
border-radius: 0;
padding: var(--sp-6) 0 0;
margin-bottom: var(--sp-7);
box-shadow: none;
}
.dashboard__section:first-child,
.settings-page__section:first-child,
.calendar__section:first-child,
.tips-page__section:first-child {
border-top: none;
padding-top: 0;
}
.dashboard__section:last-child,
.settings-page__section:last-child,
.calendar__section:last-child,
.tips-page__section:last-child {
margin-bottom: 0;
}
.dashboard__section h2,
.settings-page__section h2,
.calendar__section h2,
.tips-page__section h2 {
margin-top: 0;
}
.dashboard__break-list {
list-style: none;
margin: 0;
padding: 0;
}
.dashboard__break-item {
padding: var(--sp-3) 0;
border-bottom: 1px solid var(--c-border);
display: flex;
justify-content: space-between;
align-items: center;
}
.dashboard__break-item:last-child {
border-bottom: none;
}
.dashboard__break-item strong {
display: block;
margin-bottom: var(--sp-2);
}
.dashboard__break-item small {
color: var(--c-text-muted);
font-size: var(--fs-sm);
}
/* Status & Freshness Info */
.status-info,
.freshness-info {
font-size: var(--fs-sm);
color: var(--c-text-muted);
margin-top: var(--sp-3);
padding-top: var(--sp-3);
border-top: 1px solid var(--c-border);
}