/* ============================================================
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;
}
.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-submit-wrap) {
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-submit-wrap):last-of-type {
border-bottom: 1px solid var(--border-primary);
}
.admin-form > div:not(.admin-submit-wrap) > label,
.admin-form > div:not(.admin-submit-wrap) > 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
of checkboxes; the visible label is a sibling
in the grid row. The