/* ============================================================ 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