mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 19:19:19 +02:00
admin/thanks.php:
- <div style="margin-top:1.5rem;display:flex;gap:.75rem;flex-wrap:wrap;"> → class="admin-action-bar"
- <p style="color:var(--text-secondary);"> → class="admin-muted"
admin/pages.php:
- Éditer button style="font-size:.8rem;padding:.3rem .75rem;" → class="admin-btn admin-btn--sm"
admin.css (Thesis info sections block):
- Added .admin-action-bar { margin-top:1.5rem; display:flex; gap:0.75rem; flex-wrap:wrap }
- Added .admin-muted { color: var(--text-secondary) }
The only remaining inline style in any admin PHP file is the dynamic
--disk-pct/--disk-color custom properties on the disk bar in system.php,
which carry PHP runtime values and cannot be moved to static CSS.
948 lines
22 KiB
CSS
948 lines
22 KiB
CSS
/* ============================================================
|
|
ADMIN SECTION
|
|
============================================================ */
|
|
|
|
@import url("./variables.css");
|
|
|
|
/* ── Layout ────────────────────────────────────────────────────────────── */
|
|
.admin-body {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 100vh;
|
|
}
|
|
|
|
.admin-body header nav ul [data-nav-logout] a {
|
|
opacity: 0.6;
|
|
}
|
|
.admin-body header nav ul [data-nav-logout] a:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* Active nav link — non-colour indicator required by WCAG 1.4.1 */
|
|
.admin-body header nav ul a[aria-current="page"] {
|
|
border-bottom: 2px solid currentColor;
|
|
padding-bottom: 1px;
|
|
}
|
|
|
|
.admin-body main {
|
|
flex: 1;
|
|
padding: 2.5rem 2rem 4rem;
|
|
max-width: 1100px;
|
|
width: 100%;
|
|
margin-inline: auto;
|
|
}
|
|
|
|
.admin-body main > h1 {
|
|
font-size: 1.8rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
margin: 0 0 2.5rem 0;
|
|
}
|
|
|
|
/* ── Forms ─────────────────────────────────────────────────────────────── */
|
|
.admin-form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0;
|
|
}
|
|
|
|
.admin-form > div:not(.admin-form-footer) {
|
|
display: grid;
|
|
grid-template-columns: 260px 1fr;
|
|
align-items: start;
|
|
border-top: 1px solid var(--border-primary);
|
|
padding: 0.75rem 0;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.admin-form > div:not(.admin-form-footer):last-of-type {
|
|
border-bottom: 1px solid var(--border-primary);
|
|
}
|
|
|
|
.admin-form > div:not(.admin-form-footer) > label,
|
|
.admin-form > div:not(.admin-form-footer) > span.admin-row-label {
|
|
font-size: 0.92rem;
|
|
padding-top: 0.5rem;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.admin-form
|
|
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="submit"]),
|
|
.admin-form select,
|
|
.admin-form textarea,
|
|
.admin-inline-form input[type="text"],
|
|
.admin-inline-form input[type="number"],
|
|
.admin-inline-form select {
|
|
width: 100%;
|
|
background: transparent;
|
|
border: none;
|
|
border-bottom: 1px solid var(--border-primary);
|
|
font-size: 0.92rem;
|
|
font-family: inherit;
|
|
padding: 0.4rem 0;
|
|
border-radius: 0;
|
|
transition: border-color 0.15s;
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
}
|
|
|
|
.admin-form
|
|
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="submit"]):focus,
|
|
.admin-form select:focus,
|
|
.admin-form textarea:focus,
|
|
.admin-inline-form input:focus,
|
|
.admin-inline-form select:focus {
|
|
outline: none;
|
|
border-bottom-color: var(--accent-primary);
|
|
}
|
|
|
|
.admin-form input::placeholder,
|
|
.admin-form textarea::placeholder {
|
|
font-size: 0.88rem;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
.admin-form textarea {
|
|
resize: vertical;
|
|
min-height: 100px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
/* Select custom arrow */
|
|
.admin-form select,
|
|
.admin-inline-form select {
|
|
cursor: pointer;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23999' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
|
|
background-repeat: no-repeat;
|
|
background-position: right 0 center;
|
|
padding-right: 1.2rem;
|
|
}
|
|
|
|
/* File inputs */
|
|
.admin-file-input {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.25rem;
|
|
}
|
|
|
|
.admin-file-input input[type="file"] {
|
|
font-size: 0.85rem;
|
|
background: transparent;
|
|
border: 1px dashed var(--border-primary);
|
|
padding: 0.4rem 0.6rem;
|
|
border-radius: 3px;
|
|
cursor: pointer;
|
|
font-family: inherit;
|
|
}
|
|
|
|
.admin-file-input input[type="file"]:hover {
|
|
border-color: var(--accent-primary);
|
|
}
|
|
|
|
.admin-body form small {
|
|
font-size: 0.78rem;
|
|
color: var(--text-secondary);
|
|
margin-top: 0.15rem;
|
|
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. */
|
|
.admin-body fieldset.admin-checkbox-group {
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
background: transparent;
|
|
}
|
|
|
|
.admin-body fieldset.admin-checkbox-group > ul {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding-top: 0.3rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
.admin-body fieldset.admin-checkbox-group > ul > li {
|
|
display: contents; /* let the inner label handle layout */
|
|
}
|
|
|
|
.admin-checkbox-label {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
font-size: 0.9rem;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.admin-checkbox-label input[type="checkbox"] {
|
|
accent-color: var(--accent-primary);
|
|
width: 14px;
|
|
height: 14px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* Fieldset / legend (jury) */
|
|
.admin-body fieldset {
|
|
border: 1px solid var(--border-primary);
|
|
padding: 1rem 1.25rem;
|
|
margin: 0.5rem 0 1rem;
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
.admin-body legend {
|
|
font-size: 0.82rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.04em;
|
|
text-transform: uppercase;
|
|
color: var(--text-secondary);
|
|
padding: 0 0.5rem;
|
|
}
|
|
|
|
/* ── Buttons ────────────────────────────────────────────────────────────── */
|
|
.admin-form-footer {
|
|
margin-top: 2rem;
|
|
padding-top: 1.5rem;
|
|
}
|
|
|
|
.admin-btn {
|
|
padding: 0.65rem 2.5rem;
|
|
background: var(--accent-primary);
|
|
color: var(--accent-foreground);
|
|
border: none;
|
|
border-radius: 3px;
|
|
font-size: 0.92rem;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
letter-spacing: 0.04em;
|
|
text-decoration: none;
|
|
display: inline-block;
|
|
transition: background 0.15s;
|
|
}
|
|
|
|
.admin-btn:hover {
|
|
background: var(--accent-secondary);
|
|
}
|
|
|
|
.admin-btn-secondary {
|
|
padding: 0.5rem 1.5rem;
|
|
background: transparent;
|
|
color: var(--text-tertiary);
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 3px;
|
|
font-size: 0.88rem;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
letter-spacing: 0.04em;
|
|
text-decoration: none;
|
|
display: inline-block;
|
|
transition: all 0.15s;
|
|
}
|
|
|
|
.admin-btn-secondary:hover {
|
|
border-color: var(--text-secondary);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* Small size modifier */
|
|
.admin-btn--sm {
|
|
padding: 0.28rem 0.65rem;
|
|
font-size: 0.82rem;
|
|
}
|
|
|
|
/* Semantic colour modifiers */
|
|
.admin-btn--warning {
|
|
background: var(--accent-yellow);
|
|
color: var(--text-primary);
|
|
border: none;
|
|
}
|
|
.admin-btn--warning:hover {
|
|
filter: brightness(0.9);
|
|
}
|
|
|
|
.admin-btn--danger {
|
|
background: var(--accent-red);
|
|
color: var(--accent-foreground);
|
|
border: none;
|
|
}
|
|
.admin-btn--danger:hover {
|
|
filter: brightness(0.9);
|
|
}
|
|
|
|
/* ── Alert messages ─────────────────────────────────────────────────────── */
|
|
[role="alert"],
|
|
[role="status"] {
|
|
padding: 0.75rem 1rem;
|
|
border-radius: 3px;
|
|
font-size: 0.9rem;
|
|
margin-bottom: 1.5rem;
|
|
border-left: 3px solid;
|
|
}
|
|
|
|
[role="alert"][data-type="error"] {
|
|
background: var(--accent-muted);
|
|
border-color: var(--error);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[role="status"][data-type="success"] {
|
|
background: rgba(92, 214, 157, 0.12);
|
|
border-color: var(--success);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* ── Stats cards ────────────────────────────────────────────────────────── */
|
|
.admin-stats {
|
|
display: flex;
|
|
gap: 1rem;
|
|
margin-bottom: 2rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.admin-stat {
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 4px;
|
|
padding: 1rem 1.5rem;
|
|
min-width: 140px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.admin-stat__number {
|
|
font-size: 2rem;
|
|
font-weight: 700;
|
|
color: var(--accent-primary);
|
|
line-height: 1;
|
|
order: 1;
|
|
margin: 0;
|
|
}
|
|
|
|
.admin-stat__label {
|
|
font-size: 0.82rem;
|
|
color: var(--text-secondary);
|
|
margin-top: 0.25rem;
|
|
order: 2;
|
|
}
|
|
|
|
/* ── Maintenance bar ────────────────────────────────────────────────────── */
|
|
.admin-maintenance-bar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 4px;
|
|
padding: 0.65rem 1rem;
|
|
margin-bottom: 1.5rem;
|
|
font-size: 0.88rem;
|
|
}
|
|
|
|
.admin-maintenance-bar--active {
|
|
background: rgba(251, 202, 81, 0.1);
|
|
border-color: var(--warning);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.admin-maintenance-bar form {
|
|
display: inline;
|
|
}
|
|
|
|
/* Result-count line above the thesis table */
|
|
.admin-list-meta {
|
|
color: var(--text-secondary);
|
|
font-size: 0.85rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
/* Empty-state message below the thesis table */
|
|
.admin-empty {
|
|
color: var(--text-secondary);
|
|
padding: 1rem 0;
|
|
}
|
|
|
|
/* Identifier column in the thesis table */
|
|
.admin-table-id {
|
|
color: var(--text-secondary);
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
/* ── Filters bar ────────────────────────────────────────────────────────── */
|
|
.admin-filters {
|
|
display: flex;
|
|
gap: 0.75rem;
|
|
margin-bottom: 1.5rem;
|
|
flex-wrap: wrap;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.admin-filters input[type="text"],
|
|
.admin-filters select {
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 3px;
|
|
font-size: 0.88rem;
|
|
font-family: inherit;
|
|
padding: 0.45rem 0.75rem;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.admin-filters input[type="text"]:focus,
|
|
.admin-filters select:focus {
|
|
outline: none;
|
|
border-color: var(--accent-primary);
|
|
}
|
|
|
|
.admin-filters-btn {
|
|
padding: 0.45rem 1rem;
|
|
background: var(--accent-primary);
|
|
color: var(--accent-foreground);
|
|
border: none;
|
|
border-radius: 3px;
|
|
font-size: 0.88rem;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
transition: background 0.15s;
|
|
}
|
|
|
|
.admin-filters-btn:hover {
|
|
background: var(--accent-secondary);
|
|
}
|
|
|
|
.admin-filters-reset {
|
|
font-size: 0.88rem;
|
|
color: var(--text-secondary);
|
|
text-decoration: underline;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* ── Bulk actions bar ───────────────────────────────────────────────────── */
|
|
.admin-bulk-actions {
|
|
display: none;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
padding: 0.6rem 1rem;
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 4px;
|
|
margin-bottom: 1rem;
|
|
font-size: 0.88rem;
|
|
}
|
|
|
|
.admin-bulk-btns {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
/* ── Table ──────────────────────────────────────────────────────────────── */
|
|
.admin-body table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: 0.88rem;
|
|
}
|
|
|
|
.admin-body main > table {
|
|
margin-top: 1.5rem;
|
|
}
|
|
|
|
.admin-body table th {
|
|
text-align: left;
|
|
font-size: 0.75rem;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
padding: 0.5rem 0.75rem;
|
|
border-bottom: 1px solid var(--border-primary);
|
|
color: var(--text-secondary);
|
|
font-weight: 400;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.admin-body table td {
|
|
padding: 0.65rem 0.75rem;
|
|
border-bottom: 1px solid var(--border-primary);
|
|
vertical-align: top;
|
|
}
|
|
|
|
.admin-body table tr:hover td {
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
.admin-body table .thesis-title {
|
|
font-weight: 500;
|
|
}
|
|
|
|
.admin-body table .thesis-subtitle {
|
|
font-size: 0.82rem;
|
|
color: var(--text-secondary);
|
|
font-style: italic;
|
|
}
|
|
|
|
/* ── Status badges ──────────────────────────────────────────────────────── */
|
|
.status-badge {
|
|
display: inline-block;
|
|
padding: 0.2rem 0.5rem;
|
|
border-radius: 3px;
|
|
font-size: 0.78rem;
|
|
font-weight: 500;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
.status-published {
|
|
background: rgba(76, 175, 80, 0.12);
|
|
color: var(--accent-green);
|
|
}
|
|
|
|
.status-pending {
|
|
background: rgba(251, 202, 81, 0.12);
|
|
color: var(--warning);
|
|
}
|
|
|
|
.status-access {
|
|
display: inline-block;
|
|
font-size: 0.7rem;
|
|
padding: 0.1rem 0.4rem;
|
|
border-radius: 3px;
|
|
background: var(--bg-tertiary);
|
|
color: var(--text-secondary);
|
|
letter-spacing: 0.03em;
|
|
}
|
|
|
|
.status-access--libre {
|
|
background: rgba(76, 175, 80, 0.12);
|
|
color: var(--accent-green);
|
|
}
|
|
|
|
.status-access--interne {
|
|
background: rgba(65, 173, 255, 0.12);
|
|
color: var(--accent-blue);
|
|
}
|
|
|
|
.status-access--interdit {
|
|
background: rgba(242, 90, 90, 0.12);
|
|
color: var(--error);
|
|
}
|
|
|
|
/* ── Action buttons in table ────────────────────────────────────────────── */
|
|
.admin-actions {
|
|
display: flex;
|
|
gap: 0.4rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.admin-btn-sm {
|
|
padding: 0.25rem 0.6rem;
|
|
min-height: 2rem;
|
|
border-radius: 3px;
|
|
font-size: 0.78rem;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
text-decoration: none;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
border: 1px solid transparent;
|
|
transition: all 0.15s;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.admin-btn-view {
|
|
background: rgba(65, 173, 255, 0.12);
|
|
color: var(--accent-blue);
|
|
border-color: rgba(65, 173, 255, 0.3);
|
|
}
|
|
.admin-btn-view:hover {
|
|
background: rgba(65, 173, 255, 0.22);
|
|
}
|
|
|
|
.admin-btn-edit {
|
|
background: rgba(243, 156, 18, 0.12);
|
|
color: var(--accent-yellow);
|
|
border-color: rgba(243, 156, 18, 0.3);
|
|
}
|
|
.admin-btn-edit:hover {
|
|
background: rgba(243, 156, 18, 0.22);
|
|
}
|
|
|
|
.admin-btn-publish {
|
|
background: rgba(76, 175, 80, 0.12);
|
|
color: var(--accent-green);
|
|
border-color: rgba(76, 175, 80, 0.3);
|
|
}
|
|
.admin-btn-publish:hover {
|
|
background: rgba(76, 175, 80, 0.22);
|
|
}
|
|
|
|
.admin-btn-unpublish {
|
|
background: var(--bg-secondary);
|
|
color: var(--text-tertiary);
|
|
border-color: var(--border-primary);
|
|
}
|
|
.admin-btn-unpublish:hover {
|
|
background: var(--bg-tertiary);
|
|
}
|
|
|
|
.publish-form {
|
|
display: inline;
|
|
margin: 0;
|
|
}
|
|
|
|
/* ── Thesis info sections (thanks page) ─────────────────────────────────── */
|
|
.admin-body main > section {
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 6px;
|
|
padding: 1.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.admin-body main > section h2 {
|
|
margin: 0 0 1rem;
|
|
font-size: 1.2rem;
|
|
border-bottom: 1px solid var(--border-primary);
|
|
padding-bottom: 0.5rem;
|
|
}
|
|
|
|
.admin-body main > section dl {
|
|
display: grid;
|
|
grid-template-columns: 180px 1fr;
|
|
gap: 0.4rem 1rem;
|
|
}
|
|
|
|
.admin-body main > section dt {
|
|
font-weight: 600;
|
|
font-size: 0.88rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.admin-body main > section dd {
|
|
margin: 0;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.admin-action-bar {
|
|
margin-top: 1.5rem;
|
|
display: flex;
|
|
gap: 0.75rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.admin-muted {
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
/* ── Section titles (account, etc.) ─────────────────────────────────────── */
|
|
.admin-section-title {
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.07em;
|
|
text-transform: uppercase;
|
|
color: var(--text-secondary);
|
|
margin: 2rem 0 1rem;
|
|
padding-bottom: 0.5rem;
|
|
border-bottom: 1px solid var(--border-primary);
|
|
}
|
|
|
|
.admin-section-title--danger {
|
|
color: var(--error);
|
|
border-color: var(--error);
|
|
}
|
|
|
|
/* ── Account status block ───────────────────────────────────────────────── */
|
|
.admin-account-status {
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 4px;
|
|
padding: 1rem 1.5rem;
|
|
margin-bottom: 2rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.admin-account-status__row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.admin-account-status__label {
|
|
color: var(--text-secondary);
|
|
min-width: 220px;
|
|
}
|
|
|
|
.admin-account-status__code {
|
|
font-family: ui-monospace, "SFMono-Regular", Consolas, monospace;
|
|
font-size: 0.82rem;
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 3px;
|
|
padding: 0.1rem 0.4rem;
|
|
color: var(--text-secondary);
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
.admin-account-status__note {
|
|
font-size: 0.85rem;
|
|
color: var(--text-secondary);
|
|
margin: 0;
|
|
}
|
|
|
|
/* ── Danger zone (account page) ─────────────────────────────────────────── */
|
|
.admin-danger-zone {
|
|
border: 1px solid rgba(242, 90, 90, 0.35);
|
|
border-radius: 4px;
|
|
padding: 1.25rem 1.5rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1.5rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.admin-danger-zone__description {
|
|
flex: 1;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
/* ── Login page ─────────────────────────────────────────────────────────── */
|
|
.admin-login-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: calc(100vh - 60px);
|
|
}
|
|
|
|
.admin-login-box {
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 4px;
|
|
padding: 2rem;
|
|
width: 100%;
|
|
max-width: 380px;
|
|
}
|
|
|
|
.admin-login-box h2 {
|
|
margin: 0 0 1.5rem;
|
|
font-size: 1.1rem;
|
|
font-weight: 500;
|
|
text-align: center;
|
|
}
|
|
|
|
.admin-login-box .admin-form > div:not(.admin-form-footer) {
|
|
grid-template-columns: 1fr;
|
|
border: none;
|
|
padding: 0.4rem 0;
|
|
}
|
|
|
|
.admin-login-box .admin-form > div:not(.admin-form-footer) > label {
|
|
font-size: 0.82rem;
|
|
color: var(--text-secondary);
|
|
margin-bottom: 0.2rem;
|
|
}
|
|
|
|
.admin-login-box .admin-form-footer {
|
|
margin-top: 1rem;
|
|
padding-top: 0.5rem;
|
|
}
|
|
|
|
.admin-login-box .admin-btn {
|
|
width: 100%;
|
|
}
|
|
|
|
/* ── Import page ────────────────────────────────────────────────────────── */
|
|
.admin-import-area {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
/* Error list inside role="alert" (import page) */
|
|
.admin-error-list {
|
|
margin: 0.5rem 0 0;
|
|
padding-left: 1.2rem;
|
|
}
|
|
|
|
/* Hint text under the file input (import page) */
|
|
.admin-file-hint {
|
|
display: block;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
/* Import results panel */
|
|
.admin-import-results {
|
|
margin-top: 2rem;
|
|
}
|
|
|
|
.admin-import-results__title {
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
margin-bottom: 0.75rem;
|
|
color: var(--text-secondary);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
border: none;
|
|
padding: 0;
|
|
}
|
|
|
|
/* ── 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;
|
|
background: transparent;
|
|
}
|
|
|
|
.admin-body fieldset fieldset.admin-jury-lecteurs > legend {
|
|
font-size: 0.78rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.03em;
|
|
text-transform: uppercase;
|
|
color: var(--text-tertiary);
|
|
padding: 0;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.admin-jury-row {
|
|
display: flex;
|
|
gap: 0.75rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.admin-jury-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.admin-jury-entry {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.admin-jury-ext {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.admin-btn-remove {
|
|
background: none;
|
|
border: 1px solid var(--border-primary);
|
|
color: var(--text-tertiary);
|
|
border-radius: 3px;
|
|
padding: 0.2rem 0.55rem;
|
|
min-height: 2rem;
|
|
font-size: 0.8rem;
|
|
line-height: 1;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
transition: border-color 0.15s, color 0.15s;
|
|
}
|
|
|
|
.admin-btn-remove:hover {
|
|
border-color: var(--error);
|
|
color: var(--error);
|
|
}
|
|
|
|
/* ── Inline form (tags page) ────────────────────────────────────────────── */
|
|
.admin-inline-form {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.4rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.admin-input--inline,
|
|
.admin-inline-form input[type="text"] {
|
|
font-size: 0.82rem;
|
|
width: 160px;
|
|
}
|
|
|
|
.admin-select--inline,
|
|
.admin-inline-form select {
|
|
font-size: 0.82rem;
|
|
width: 160px;
|
|
}
|
|
|
|
/* Stack secondary forms (merge, delete) below the rename form */
|
|
.admin-inline-form + .admin-inline-form {
|
|
margin-top: 0.35rem;
|
|
}
|
|
|
|
/* Tags table column sizing */
|
|
.admin-body table:has(.admin-tags-count) th:nth-child(1) { width: 40%; }
|
|
.admin-body table:has(.admin-tags-count) th:nth-child(2) { width: 12%; }
|
|
.admin-body table:has(.admin-tags-count) th:nth-child(3) { width: 48%; }
|
|
.admin-tags-count { text-align: center; }
|
|
|
|
/* ── Banner preview ─────────────────────────────────────────────────────── */
|
|
.admin-banner-preview img {
|
|
max-width: 320px;
|
|
max-height: 100px;
|
|
object-fit: cover;
|
|
border: 1px solid var(--border-primary);
|
|
border-radius: 3px;
|
|
display: block;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
/* ── Cancel link ────────────────────────────────────────────────────────── */
|
|
.admin-cancel-link {
|
|
font-size: 0.88rem;
|
|
color: var(--text-secondary);
|
|
text-decoration: underline;
|
|
}
|
|
|
|
/* ── Pagination (admin list) ─────────────────────────────────────────────── */
|
|
.admin-body .pagination-wrap {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
padding: 1.5rem 0 0.5rem;
|
|
}
|
|
|
|
.admin-body .pagination-wrap ul {
|
|
display: flex;
|
|
gap: 0.25rem;
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.admin-body .pagination-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 2.75rem;
|
|
min-height: 2.75rem;
|
|
padding: 0 0.6rem;
|
|
border: 1px solid var(--border-secondary);
|
|
border-radius: 3px;
|
|
color: var(--text-primary);
|
|
font-size: 0.9rem;
|
|
text-decoration: none;
|
|
transition: border-color 0.15s, color 0.15s;
|
|
}
|
|
|
|
.admin-body .pagination-btn:hover:not(.disabled) {
|
|
border-color: var(--accent-primary);
|
|
color: var(--accent-primary);
|
|
}
|
|
|
|
.admin-body .pagination-btn.disabled {
|
|
opacity: 0.3;
|
|
cursor: not-allowed;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.admin-body .pagination-info {
|
|
font-size: 0.9rem;
|
|
color: var(--text-secondary);
|
|
padding: 0 0.5rem;
|
|
}
|