migrate to utopia fluid type and space scales across all CSS

This commit is contained in:
Pontoporeia
2026-04-07 15:13:48 +02:00
parent ad06bbbcaf
commit f6977384b9
9 changed files with 383 additions and 352 deletions

View File

@@ -32,18 +32,18 @@
.admin-body main {
flex: 1;
padding: 2.5rem 2rem 4rem;
padding: var(--space-l) var(--space-l) var(--space-2xl);
max-width: 1100px;
width: 100%;
margin-inline: auto;
}
.admin-body main > h1 {
font-size: 1.98rem;
font-size: var(--step-2);
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
margin: 0 0 2.5rem 0;
margin: 0 0 var(--space-l) 0;
}
/* ── Forms ─────────────────────────────────────────────────────────────── */
@@ -58,8 +58,8 @@
grid-template-columns: 260px 1fr;
align-items: start;
border-top: 1px solid var(--border-primary);
padding: 0.75rem 0;
gap: 1rem;
padding: var(--space-xs) 0;
gap: var(--space-s);
}
.admin-form > div:not(.admin-form-footer):last-of-type {
@@ -68,8 +68,8 @@
.admin-form > div:not(.admin-form-footer) > label,
.admin-form > div:not(.admin-form-footer) > span.admin-row-label {
font-size: 1.01rem;
padding-top: 0.5rem;
font-size: var(--step--1);
padding-top: var(--space-2xs);
font-weight: 400;
}
@@ -86,9 +86,9 @@
background: transparent;
border: none;
border-bottom: 1px solid var(--border-primary);
font-size: 1.01rem;
font-size: var(--step--1);
font-family: inherit;
padding: 0.4rem 0;
padding: var(--space-3xs) 0;
border-radius: 0;
transition: border-color 0.15s;
-webkit-appearance: none;
@@ -109,7 +109,7 @@
.admin-form input::placeholder,
.admin-form textarea::placeholder {
font-size: 0.97rem;
font-size: var(--step--1);
color: var(--text-tertiary);
}
@@ -133,14 +133,14 @@
.admin-file-input {
display: flex;
flex-direction: column;
gap: 0.25rem;
gap: var(--space-3xs);
}
.admin-file-input input[type="file"] {
font-size: 0.94rem;
font-size: var(--step--1);
background: transparent;
border: 1px dashed var(--border-primary);
padding: 0.4rem 0.6rem;
padding: var(--space-3xs) var(--space-2xs);
border-radius: 3px;
cursor: pointer;
font-family: inherit;
@@ -151,16 +151,13 @@
}
.admin-body form small {
font-size: 0.86rem;
font-size: var(--step--2);
color: var(--text-secondary);
margin-top: 0.15rem;
margin-top: var(--space-3xs);
display: block;
}
/* Checkbox group fieldset (languages, formats)
Wraps the <ul> of checkboxes; the visible label is a sibling <span>
in the grid row. The <legend> repeats the label text for AT only (sr-only).
.admin-body scope ensures this overrides the generic .admin-body fieldset rule. */
/* Checkbox group fieldset (languages, formats) */
.admin-body fieldset.admin-checkbox-group {
border: none;
padding: 0;
@@ -171,21 +168,21 @@
.admin-body fieldset.admin-checkbox-group > ul {
list-style: none;
margin: 0;
padding-top: 0.3rem;
padding-top: var(--space-3xs);
display: flex;
flex-direction: column;
gap: 0.35rem;
gap: var(--space-3xs);
}
.admin-body fieldset.admin-checkbox-group > ul > li {
display: contents; /* let the inner label handle layout */
display: contents;
}
.admin-checkbox-label {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.99rem;
gap: var(--space-2xs);
font-size: var(--step--1);
cursor: pointer;
}
@@ -199,33 +196,33 @@
/* Fieldset / legend (jury) */
.admin-body fieldset {
border: 1px solid var(--border-primary);
padding: 1rem 1.25rem;
margin: 0.5rem 0 1rem;
padding: var(--space-s) var(--space-m);
margin: var(--space-2xs) 0 var(--space-s);
background: var(--bg-secondary);
}
.admin-body legend {
font-size: 0.9rem;
font-size: var(--step--1);
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--text-secondary);
padding: 0 0.5rem;
padding: 0 var(--space-2xs);
}
/* ── Buttons ────────────────────────────────────────────────────────────── */
.admin-form-footer {
margin-top: 2rem;
padding-top: 1.5rem;
margin-top: var(--space-l);
padding-top: var(--space-m);
}
.admin-btn {
padding: 0.65rem 2.5rem;
padding: var(--space-2xs) var(--space-l);
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
font-size: 1.01rem;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
letter-spacing: 0.04em;
@@ -239,12 +236,12 @@
}
.admin-btn-secondary {
padding: 0.5rem 1.5rem;
padding: var(--space-3xs) var(--space-m);
background: transparent;
color: var(--text-tertiary);
border: 1px solid var(--border-primary);
border-radius: 3px;
font-size: 0.97rem;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
letter-spacing: 0.04em;
@@ -260,8 +257,8 @@
/* Small size modifier */
.admin-btn--sm {
padding: 0.28rem 0.65rem;
font-size: 0.9rem;
padding: var(--space-3xs) var(--space-2xs);
font-size: var(--step--2);
}
/* Semantic colour modifiers */
@@ -286,10 +283,10 @@
/* ── Alert messages ─────────────────────────────────────────────────────── */
[role="alert"],
[role="status"] {
padding: 0.75rem 1rem;
padding: var(--space-xs) var(--space-s);
border-radius: 3px;
font-size: 0.99rem;
margin-bottom: 1.5rem;
font-size: var(--step--1);
margin-bottom: var(--space-m);
border-left: 3px solid;
}
@@ -308,8 +305,8 @@
/* ── Stats cards ────────────────────────────────────────────────────────── */
.admin-stats {
display: flex;
gap: 1rem;
margin-bottom: 2rem;
gap: var(--space-s);
margin-bottom: var(--space-l);
flex-wrap: wrap;
}
@@ -317,14 +314,14 @@
background: var(--bg-secondary);
border: 1px solid var(--border-primary);
border-radius: 4px;
padding: 1rem 1.5rem;
padding: var(--space-s) var(--space-m);
min-width: 140px;
display: flex;
flex-direction: column;
}
.admin-stat__number {
font-size: 2.2rem;
font-size: var(--step-3);
font-weight: 700;
color: var(--accent-primary);
line-height: 1;
@@ -333,9 +330,9 @@
}
.admin-stat__label {
font-size: 0.9rem;
font-size: var(--step--1);
color: var(--text-secondary);
margin-top: 0.25rem;
margin-top: var(--space-3xs);
order: 2;
}
@@ -344,13 +341,13 @@
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
gap: var(--space-s);
background: var(--bg-secondary);
border: 1px solid var(--border-primary);
border-radius: 4px;
padding: 0.65rem 1rem;
margin-bottom: 1.5rem;
font-size: 0.97rem;
padding: var(--space-2xs) var(--space-s);
margin-bottom: var(--space-m);
font-size: var(--step--1);
}
.admin-maintenance-bar--active {
@@ -366,27 +363,27 @@
/* Result-count line above the thesis table */
.admin-list-meta {
color: var(--text-secondary);
font-size: 0.94rem;
margin-bottom: 0.5rem;
font-size: var(--step--1);
margin-bottom: var(--space-2xs);
}
/* Empty-state message below the thesis table */
.admin-empty {
color: var(--text-secondary);
padding: 1rem 0;
padding: var(--space-s) 0;
}
/* Identifier column in the thesis table */
.admin-table-id {
color: var(--text-secondary);
font-size: 0.88rem;
font-size: var(--step--2);
}
/* ── Filters bar ────────────────────────────────────────────────────────── */
.admin-filters {
display: flex;
gap: 0.75rem;
margin-bottom: 1.5rem;
gap: var(--space-xs);
margin-bottom: var(--space-m);
flex-wrap: wrap;
align-items: flex-end;
}
@@ -395,9 +392,9 @@
.admin-filters select {
border: 1px solid var(--border-primary);
border-radius: 3px;
font-size: 0.97rem;
font-size: var(--step--1);
font-family: inherit;
padding: 0.45rem 0.75rem;
padding: var(--space-3xs) var(--space-xs);
background: transparent;
cursor: pointer;
}
@@ -409,12 +406,12 @@
}
.admin-filters-btn {
padding: 0.45rem 1rem;
padding: var(--space-3xs) var(--space-s);
background: var(--accent-primary);
color: var(--accent-foreground);
border: none;
border-radius: 3px;
font-size: 0.97rem;
font-size: var(--step--1);
font-family: inherit;
cursor: pointer;
transition: background 0.15s;
@@ -425,7 +422,7 @@
}
.admin-filters-reset {
font-size: 0.97rem;
font-size: var(--step--1);
color: var(--text-secondary);
text-decoration: underline;
cursor: pointer;
@@ -435,37 +432,37 @@
.admin-bulk-actions {
display: none;
align-items: center;
gap: 1rem;
padding: 0.6rem 1rem;
gap: var(--space-s);
padding: var(--space-2xs) var(--space-s);
background: var(--bg-secondary);
border: 1px solid var(--border-primary);
border-radius: 4px;
margin-bottom: 1rem;
font-size: 0.97rem;
margin-bottom: var(--space-s);
font-size: var(--step--1);
}
.admin-bulk-btns {
display: flex;
gap: 0.5rem;
gap: var(--space-2xs);
}
/* ── Table ──────────────────────────────────────────────────────────────── */
.admin-body table {
width: 100%;
border-collapse: collapse;
font-size: 0.97rem;
font-size: var(--step--1);
}
.admin-body main > table {
margin-top: 1.5rem;
margin-top: var(--space-m);
}
.admin-body table th {
text-align: left;
font-size: 0.83rem;
font-size: var(--step--2);
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 0.5rem 0.75rem;
padding: var(--space-3xs) var(--space-xs);
border-bottom: 1px solid var(--border-primary);
color: var(--text-secondary);
font-weight: 400;
@@ -473,7 +470,7 @@
}
.admin-body table td {
padding: 0.65rem 0.75rem;
padding: var(--space-2xs) var(--space-xs);
border-bottom: 1px solid var(--border-primary);
vertical-align: top;
}
@@ -487,7 +484,7 @@
}
.admin-body table .thesis-subtitle {
font-size: 0.9rem;
font-size: var(--step--1);
color: var(--text-secondary);
font-style: italic;
}
@@ -495,9 +492,9 @@
/* ── Status badges ──────────────────────────────────────────────────────── */
.status-badge {
display: inline-block;
padding: 0.2rem 0.5rem;
padding: var(--space-3xs) var(--space-2xs);
border-radius: 3px;
font-size: 0.86rem;
font-size: var(--step--2);
font-weight: 500;
letter-spacing: 0.04em;
}
@@ -514,8 +511,8 @@
.status-access {
display: inline-block;
font-size: 0.77rem;
padding: 0.1rem 0.4rem;
font-size: var(--step--2);
padding: var(--space-3xs) var(--space-3xs);
border-radius: 3px;
background: var(--bg-tertiary);
color: var(--text-secondary);
@@ -540,15 +537,15 @@
/* ── Action buttons in table ────────────────────────────────────────────── */
.admin-actions {
display: flex;
gap: 0.4rem;
gap: var(--space-3xs);
flex-wrap: wrap;
}
.admin-btn-sm {
padding: 0.25rem 0.6rem;
padding: var(--space-3xs) var(--space-2xs);
min-height: 2rem;
border-radius: 3px;
font-size: 0.86rem;
font-size: var(--step--2);
font-family: inherit;
cursor: pointer;
text-decoration: none;
@@ -604,38 +601,38 @@
.admin-body main > section {
border: 1px solid var(--border-primary);
border-radius: 6px;
padding: 1.5rem;
margin-bottom: 1.5rem;
padding: var(--space-m);
margin-bottom: var(--space-m);
}
.admin-body main > section h2 {
margin: 0 0 1rem;
font-size: 1.32rem;
margin: 0 0 var(--space-s);
font-size: var(--step-1);
border-bottom: 1px solid var(--border-primary);
padding-bottom: 0.5rem;
padding-bottom: var(--space-2xs);
}
.admin-body main > section dl {
display: grid;
grid-template-columns: 180px 1fr;
gap: 0.4rem 1rem;
gap: var(--space-3xs) var(--space-s);
}
.admin-body main > section dt {
font-weight: 600;
font-size: 0.97rem;
font-size: var(--step--1);
color: var(--text-secondary);
}
.admin-body main > section dd {
margin: 0;
font-size: 0.99rem;
font-size: var(--step--1);
}
.admin-action-bar {
margin-top: 1.5rem;
margin-top: var(--space-m);
display: flex;
gap: 0.75rem;
gap: var(--space-xs);
flex-wrap: wrap;
}
@@ -645,13 +642,13 @@
/* ── Section titles (account, etc.) ─────────────────────────────────────── */
.admin-section-title {
font-size: 1.1rem;
font-size: var(--step-0);
font-weight: 600;
letter-spacing: 0.07em;
text-transform: uppercase;
color: var(--text-secondary);
margin: 2rem 0 1rem;
padding-bottom: 0.5rem;
margin: var(--space-l) 0 var(--space-s);
padding-bottom: var(--space-2xs);
border-bottom: 1px solid var(--border-primary);
}
@@ -664,18 +661,18 @@
.admin-account-status {
border: 1px solid var(--border-primary);
border-radius: 4px;
padding: 1rem 1.5rem;
margin-bottom: 2rem;
padding: var(--space-s) var(--space-m);
margin-bottom: var(--space-l);
display: flex;
flex-direction: column;
gap: 0.75rem;
gap: var(--space-xs);
}
.admin-account-status__row {
display: flex;
align-items: center;
gap: 0.75rem;
font-size: 0.99rem;
gap: var(--space-xs);
font-size: var(--step--1);
}
.admin-account-status__label {
@@ -685,16 +682,16 @@
.admin-account-status__code {
font-family: ui-monospace, "SFMono-Regular", Consolas, monospace;
font-size: 0.9rem;
font-size: var(--step--2);
border: 1px solid var(--border-primary);
border-radius: 3px;
padding: 0.1rem 0.4rem;
padding: var(--space-3xs) var(--space-3xs);
color: var(--text-secondary);
background: var(--bg-secondary);
}
.admin-account-status__note {
font-size: 0.94rem;
font-size: var(--step--1);
color: var(--text-secondary);
margin: 0;
}
@@ -703,16 +700,16 @@
.admin-danger-zone {
border: 1px solid var(--danger-border-muted);
border-radius: 4px;
padding: 1.25rem 1.5rem;
padding: var(--space-m) var(--space-m);
display: flex;
align-items: center;
gap: 1.5rem;
gap: var(--space-m);
flex-wrap: wrap;
}
.admin-danger-zone__description {
flex: 1;
font-size: 0.99rem;
font-size: var(--step--1);
}
/* ── Login page ─────────────────────────────────────────────────────────── */
@@ -727,14 +724,14 @@
background: var(--bg-secondary);
border: 1px solid var(--border-primary);
border-radius: 4px;
padding: 2rem;
padding: var(--space-l);
width: 100%;
max-width: 380px;
}
.admin-login-box h2 {
margin: 0 0 1.5rem;
font-size: 1.21rem;
margin: 0 0 var(--space-m);
font-size: var(--step-0);
font-weight: 500;
text-align: center;
}
@@ -742,18 +739,18 @@
.admin-login-box .admin-form > div:not(.admin-form-footer) {
grid-template-columns: 1fr;
border: none;
padding: 0.4rem 0;
padding: var(--space-3xs) 0;
}
.admin-login-box .admin-form > div:not(.admin-form-footer) > label {
font-size: 0.9rem;
font-size: var(--step--1);
color: var(--text-secondary);
margin-bottom: 0.2rem;
margin-bottom: var(--space-3xs);
}
.admin-login-box .admin-form-footer {
margin-top: 1rem;
padding-top: 0.5rem;
margin-top: var(--space-s);
padding-top: var(--space-2xs);
}
.admin-login-box .admin-btn {
@@ -764,30 +761,30 @@
.admin-import-area {
display: flex;
flex-direction: column;
gap: 1.5rem;
gap: var(--space-m);
}
/* Error list inside role="alert" (import page) */
.admin-error-list {
margin: 0.5rem 0 0;
padding-left: 1.2rem;
margin: var(--space-2xs) 0 0;
padding-left: var(--space-s);
}
/* Hint text under the file input (import page) */
.admin-file-hint {
display: block;
margin-top: 0.5rem;
margin-top: var(--space-2xs);
}
/* Import results panel */
.admin-import-results {
margin-top: 2rem;
margin-top: var(--space-l);
}
.admin-import-results__title {
font-size: 1.1rem;
font-size: var(--step-0);
font-weight: 600;
margin-bottom: 0.75rem;
margin-bottom: var(--space-xs);
color: var(--text-secondary);
text-transform: uppercase;
letter-spacing: 0.06em;
@@ -797,41 +794,39 @@
/* ── Jury fieldset ──────────────────────────────────────────────────────── */
/* Nested lecteur·ices fieldset sits inside the outer jury fieldset:
strip heavy border/background so it reads as a sub-group, not a card. */
.admin-body fieldset fieldset.admin-jury-lecteurs {
border: none;
padding: 0;
margin: 0.75rem 0 0;
margin: var(--space-xs) 0 0;
background: transparent;
}
.admin-body fieldset fieldset.admin-jury-lecteurs > legend {
font-size: 0.86rem;
font-size: var(--step--2);
font-weight: 600;
letter-spacing: 0.03em;
text-transform: uppercase;
color: var(--text-tertiary);
padding: 0;
margin-bottom: 0.5rem;
margin-bottom: var(--space-2xs);
}
.admin-jury-row {
display: flex;
gap: 0.75rem;
gap: var(--space-xs);
flex-wrap: wrap;
}
.admin-jury-list {
display: flex;
flex-direction: column;
gap: 0.5rem;
gap: var(--space-2xs);
}
.admin-jury-entry {
display: flex;
align-items: center;
gap: 0.75rem;
gap: var(--space-xs);
}
.admin-jury-ext {
@@ -843,9 +838,9 @@
border: 1px solid var(--border-primary);
color: var(--text-tertiary);
border-radius: 3px;
padding: 0.2rem 0.55rem;
padding: var(--space-3xs) var(--space-2xs);
min-height: 2rem;
font-size: 0.88rem;
font-size: var(--step--2);
line-height: 1;
display: inline-flex;
align-items: center;
@@ -864,25 +859,25 @@
.admin-inline-form {
display: flex;
align-items: center;
gap: 0.4rem;
gap: var(--space-3xs);
flex-wrap: wrap;
}
.admin-input--inline,
.admin-inline-form input[type="text"] {
font-size: 0.9rem;
font-size: var(--step--1);
width: 160px;
}
.admin-select--inline,
.admin-inline-form select {
font-size: 0.9rem;
font-size: var(--step--1);
width: 160px;
}
/* Stack secondary forms (merge, delete) below the rename form */
.admin-inline-form + .admin-inline-form {
margin-top: 0.35rem;
margin-top: var(--space-3xs);
}
/* Tags table column sizing */
@@ -907,12 +902,12 @@
border: 1px solid var(--border-primary);
border-radius: 3px;
display: block;
margin-top: 0.5rem;
margin-top: var(--space-2xs);
}
/* ── Cancel link ────────────────────────────────────────────────────────── */
.admin-cancel-link {
font-size: 0.97rem;
font-size: var(--step--1);
color: var(--text-secondary);
text-decoration: underline;
}
@@ -922,13 +917,13 @@
display: flex;
justify-content: center;
align-items: center;
gap: 0.5rem;
padding: 1.5rem 0 0.5rem;
gap: var(--space-2xs);
padding: var(--space-m) 0 var(--space-2xs);
}
.admin-body .pagination-wrap ul {
display: flex;
gap: 0.25rem;
gap: var(--space-3xs);
list-style: none;
margin: 0;
padding: 0;
@@ -940,11 +935,11 @@
justify-content: center;
min-width: 2.75rem;
min-height: 2.75rem;
padding: 0 0.6rem;
padding: 0 var(--space-2xs);
border: 1px solid var(--border-secondary);
border-radius: 3px;
color: var(--text-primary);
font-size: 0.99rem;
font-size: var(--step--1);
text-decoration: none;
transition:
border-color 0.15s,
@@ -963,9 +958,9 @@
}
.admin-body .pagination-info {
font-size: 0.99rem;
font-size: var(--step--1);
color: var(--text-secondary);
padding: 0 0.5rem;
padding: 0 var(--space-2xs);
}
.admin-body #editor {