Move the ~130-line $extraJsInline heredoc from admin/system.php into a
static file public/assets/js/system.js, loaded via $extraJs so the
template footer emits a normal <script src=…>.
Replace 4 inline style= attributes with named CSS modifier classes in
system.css:
- style="margin:0;border:none;padding:0" on .srv-section-title
→ .srv-section-title--compact
- style="margin-bottom:.75rem" on sub-heading <h3>
→ .srv-section-title--sub
- style="margin-bottom:0" on .php-grid
→ .php-grid--flush
- style="font-size:.84rem;color:var(--text-secondary)" on <label>
→ .log-toolbar label rule in system.css
The one remaining inline style (--disk-pct / --disk-color CSS custom
properties on .disk-bar) is intentionally kept: it carries PHP runtime
values that cannot be expressed in a static stylesheet.
6.2 KiB
CSS & Semantic HTML Refactor
CSS class audit: replace with semantic selectors (admin.css / main.css / tfe.css / search.css)
admin.css: Replace.admin-mainwith.admin-body main— already done; CSS uses.admin-body mainadmin.css: Replace.admin-page-titlewith.admin-body main > h1— already done; CSS uses.admin-body main > h1admin.css: Replace.admin-alert/.admin-alert--error/.admin-alert--successwith[role="alert"]/data-type="error|success"attributeadmin.css: Replace.admin-form-rowwith.admin-body form > div— already done; CSS uses.admin-form > div:not(.admin-form-footer)grid patternadmin.css: Replace.admin-labelwith.admin-body form label— already done; CSS uses.admin-form > div > labeladmin.css: Replace.admin-input/.admin-select/.admin-textareawith native element selectors — already done; CSS targets nativeinput,select,textareainside.admin-formadmin.css: Replace.admin-hintwith.admin-body form smalladmin.css: Replace.admin-tablewith.admin-body table— already done; CSS uses.admin-body tableadmin.css: Replace.admin-fieldset/.admin-fieldset-legendwith.admin-body fieldset/.admin-body legend— already done; CSS uses.admin-body fieldsetand.admin-body legendmain.css: Replace.card__captionwith.home-body .cards-container li porli > a > pmain.css: Replace.card__mediawith.home-body figuretfe.css: Replace.tfe-meta-listselectors witharticle dl,article dt,article dd— already donetfe.css: Replace.tfe-media-blockwithaside figure— already donetfe.css: Replace.tfe-file-captionwithaside figcaption— already donesearch.css: Replace.repertoire-col > h2— already uses.repertoire-index section > h2system.php: Move inline<style>block tosystem.csssystem.php: Extract$extraJsInlineJS block topublic/assets/js/system.js; replace remaining inlinestyle=attributes with CSS modifier classes (.srv-section-title--compact,.srv-section-title--sub,.php-grid--flush,.log-toolbar label)
Template HTML changes to match
- In all admin templates, replace
<p class="admin-hint">with<small>elements — already done; partials emit<small>directly - In
tfe.php, removeclass="tfe-meta-list"— target viaarticle dl - In
tfe.php, removeclass="tfe-media-block"— target viaaside figure - In
tfe.php, removeclass="tfe-file-caption"— target viaaside figcaption - In
index.php, removeclass="card__caption"— target viali > a > p
Scattered inline styles in templates
tfe.phpinline styles — already extracted (nostyle=attributes remain inpublic/tfe.php)admin/edit.php: multiplestyle=on.admin-form-rowand banner preview → modifier classes inadmin.css— already done; nostyle=attributes remain inedit.php
Admin semantic HTML (sections IX–XVI)
-
add.php/edit.php: Replace<div class="admin-form-row">with CSS grid on<form>children — already done via form partials; rows are bare<div>inside.admin-form -
add.php/edit.php: Replace inner wrapper<div>in multi-control rows — already done; partials use<small>for hints -
add.php/edit.php: Replace<div class="admin-checkbox-list">with<ul>; each<label class="admin-checkbox-label">becomes<li>containing<label> -
add.php/edit.php: Renamed<div class="admin-submit-wrap">→<div class="admin-form-footer">in all 6 admin templates (add.php,edit.php,login.php,account.php,import.php,pages-edit.php) and updated all 8 CSS selectors inadmin.css—.admin-form > div:not(.admin-form-footer),.admin-login-box .admin-form-footer, etc. -
add.php/edit.php: Replace<div class="admin-alert admin-alert--error/--success">with<p role="alert">/<p role="status">— already done viaflash-messages.php -
index.php: Replace<div class="admin-stats">/<div class="admin-stat">children with<dl>/<dt>/<dd> -
index.php: Replace<div class="admin-maintenance-bar">with<aside role="status">or<p role="status"> -
index.php: Addrole="toolbar" aria-label="Actions groupées"to<div class="admin-bulk-actions"> -
index.php: Addscope="col"to all<th>cells in the admin table -
index.php: Add non-colour indicator +aria-label="Statut : …"to status badge<span>elements (viastatus-badge.phppartial) -
tags.php: Addscope="col"to<th>cells -
tags.php: Move inlinestyle="margin-top:.35rem;"on forms →.admin-inline-form + .admin-inline-formselector -
thanks.php: Replace<div class="admin-thesis-info">with<section>+<h2>heading; CSS targetsmain > section -
account.php: Replace<div class="admin-account-status">with<dl>;__row→<div>,__label→<dt> -
account.php: Replace<div class="admin-danger-zone__description">with<p> -
account.php: Movestyle="margin-top:3rem;"on danger zone heading → CSS modifier class -
login.php: Wrap login content in<main>(currently no main landmark) -
login.php: Extract inline styles on.admin-form-rowand.admin-form-footer—login.phphas nostyle=attributes;.admin-login-boxmodifier inadmin.cssalready handles the compact layout -
admin/import.phpinline styles — extracted 4 inlinestyle=attributes to CSS classes:admin-error-list(error<ul>margins),admin-file-hint(<small>display block + margin),admin-import-results(results panelmargin-top),admin-import-results__title(results<h2>typography). All rules added toadmin.cssImport page section.
Favicon
admin_favicon.svgused as public-facing favicon — createdpublic/assets/favicon.svg(brand purple#9557b5lettermark “P”);templates/head.phpnow servesfavicon.svgon public pages andadmin_favicon.svgon admin pages