/** Administration : navigation, formulaires, tableaux et éditeurs métier. */
.admin-header {
    background: linear-gradient(110deg, #0c2428 0%, #12343a 100%);
    padding: 0;
    border-bottom: 1px solid rgba(76,170,182,.28);
    box-shadow: 0 8px 24px rgba(8,30,34,.16);
}
.admin-header::before { display: none; }
.admin-header .site-header-inner {
    height: auto;
    min-height: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding-top: 8px;
}
.admin-header-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 42px;
}
.admin-header .brand {
    gap: 9px;
    min-width: 0;
}
.admin-header .brand-mark {
    width: 30px;
    height: 30px;
}
.admin-brand-copy {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}
.admin-header .admin-brand-name {
    overflow: hidden;
    color: rgba(255,255,255,.92);
    font-size: .96rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.admin-header .admin-brand-badge {
    padding: 3px 8px;
    border: 1px solid rgba(76,170,182,.32);
    border-radius: 999px;
    color: #a9dce2;
    background: rgba(76,170,182,.10);
    font-size: .63rem;
    font-weight: 700;
    letter-spacing: .08em;
    line-height: 1.3;
    text-transform: uppercase;
}
.admin-site-nav {
    display: grid;
    position: static;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    width: 100%;
    margin: 0;
    padding: 7px 0 10px;
    border-top: 1px solid rgba(255,255,255,.07);
    background: none;
    box-shadow: none;
    min-width: 0;
    gap: var(--s4);
}
.admin-site-nav .nav-pills {
    min-width: 0;
    gap: 3px;
    flex-direction: row;
    flex-wrap: wrap;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
}
.admin-site-nav .nav-pill {
    position: relative;
    min-height: 34px;
    padding: 7px 11px;
    border-radius: 8px;
    color: rgba(255,255,255,.66);
    font-size: .79rem;
    font-weight: 550;
    white-space: nowrap;
}
.admin-site-nav .nav-pill:hover {
    color: #fff;
    background: rgba(255,255,255,.07);
}
.admin-site-nav .nav-pill.active {
    color: #fff;
    font-weight: 700;
    background: rgba(76,170,182,.20);
    box-shadow: none;
}
.admin-nav-actions {
    display: flex;
    align-items: center;
    gap: 5px;
    padding-left: var(--s3);
    border-left: 1px solid rgba(255,255,255,.10);
}
.admin-header .nav-admin-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 34px;
    margin-top: 0;
    padding: 6px 10px;
    border: 1px solid rgba(255,255,255,.11);
    border-radius: 8px;
    color: rgba(255,255,255,.76);
    font-size: .75rem;
    font-weight: 600;
    text-decoration: none;
}
.admin-header .nav-admin-btn:hover { color: #fff; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.25); }
.admin-header .nav-admin-btn.active {
    color: #fff;
    background: rgba(76,170,182,.20);
    border-color: rgba(95,193,204,.35);
}
.nav-logout-btn {
    width: 34px;
    background: none;
    cursor: pointer;
    font: inherit;
    transition: color var(--tf), background var(--tf), border-color var(--tf);
}
.nav-logout-btn:hover { color: #fff; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.25); }
.admin-header .nav-toggle { display: none; }
.admin-main.container { padding: var(--s8) var(--s5) var(--s6); max-width: 1200px; width: 100%; margin: 0 auto; }
.admin-page-footer {
    margin-top: var(--s8);
    color: rgba(255,255,255,.62);
    background: linear-gradient(110deg, #0c2428 0%, #12343a 100%);
    border-top: 1px solid rgba(76,170,182,.28);
}
.admin-page-footer-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s5);
    min-height: 72px;
    padding: var(--s4) var(--s5);
    font-size: .72rem;
}
.admin-footer-creator {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
}
.admin-footer-creator .creator-logo-link {
    display: block;
    line-height: 0;
}
.admin-footer-creator img {
    width: 62px;
    height: auto;
    aspect-ratio: 1000 / 445;
    object-fit: contain;
    filter: brightness(0) invert(1);
    opacity: .9;
}
.import-results { margin-bottom: var(--s5); display: flex; flex-direction: column; gap: var(--s2); }
.import-stat {
    display: flex; align-items: center; gap: var(--s3);
    padding: var(--s3) var(--s4); border-radius: var(--r-sm);
    font-size: .93rem;
}
.import-stat-success { background: var(--success-bg); color: var(--success); border: 1px solid var(--success-border); }
.import-stat-neutral  { background: var(--warning-bg); color: var(--warning-text); border: 1px solid var(--warning-border); }
.import-errors { background: var(--danger-bg); border: 1px solid var(--danger-border); border-radius: var(--r-sm); padding: var(--s3) var(--s4); font-size: .88rem; color: var(--danger); }
.import-errors summary { cursor: pointer; font-weight: 600; }
.import-errors ul { margin: var(--s2) 0 0 var(--s4); display: flex; flex-direction: column; gap: 3px; }
.import-legend { margin-top: var(--s5); }
.import-legend h3 { font-size: .85rem; text-transform: uppercase; letter-spacing: .06em; color: var(--primary); margin-bottom: var(--s3); }
.import-cols-table { width: 100%; border-collapse: collapse; font-size: .84rem; }
.import-cols-table th { text-align: left; padding: 6px 10px; background: rgba(49,114,122,.07); color: var(--primary-dark); font-weight: 600; border-bottom: 1px solid var(--glass-edge); }
.import-cols-table td { padding: 6px 10px; border-bottom: 1px solid rgba(49,114,122,.06); vertical-align: top; }
.import-cols-table code { font-family: var(--font-mono); font-size: .82rem; background: rgba(49,114,122,.07); padding: 1px 5px; border-radius: 3px; }
.import-preview { margin-bottom: var(--s6); }
.step-buttons-editor { margin: var(--s4) 0; padding: var(--s4); border: 1px solid var(--glass-edge); border-radius: var(--r-md); }
.step-buttons-editor h4 { margin: 0 0 var(--s2); }
.step-button-row { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.5fr) minmax(110px,.8fr) 80px auto; gap: var(--s2); align-items: end; margin: var(--s3) 0; }
.step-button-row > label { min-width: 0; }
.step-button-row input[type="color"] { width: 100%; min-height: 40px; }
.rich-text-toolbar { flex-wrap: wrap; }
.rich-text-format-button[data-rich-text-link="remove"] { width: auto; padding: 0 var(--s2); font-size: .8rem; }
@media (max-width: 1000px) { .step-button-row { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 600px) { .step-button-row { grid-template-columns: 1fr; } }
.import-preview-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--s5); flex-wrap: wrap; }
.import-preview-heading h2 { margin: 2px 0 var(--s1); display: flex; align-items: center; gap: var(--s2); }
.import-preview-counts { display: flex; flex-wrap: wrap; gap: var(--s2); }
.import-preview-counts span { padding: 7px 10px; border: 1px solid var(--glass-edge); border-radius: var(--r-sm); background: rgba(255,255,255,.45); font-size: .82rem; }
.import-preview-counts .is-warning { color: var(--warning-text); border-color: var(--warning-border); background: var(--warning-bg); }
.import-preview-counts .is-error { color: var(--danger); border-color: var(--danger-border); background: var(--danger-bg); }
.import-selection-toolbar { display: flex; justify-content: space-between; align-items: center; gap: var(--s4); flex-wrap: wrap; margin: var(--s5) 0 var(--s3); padding: var(--s3) var(--s4); border: 1px solid rgba(49,114,122,.18); border-radius: var(--r-md); background: rgba(49,114,122,.07); }
.import-selection-toolbar > div:first-child { display: grid; gap: 2px; }
.import-selection-toolbar > div:first-child > span { color: var(--muted); font-size: .82rem; }
.import-selection-actions { display: flex; gap: var(--s2); flex-wrap: wrap; }
.import-review-list { display: grid; gap: var(--s2); }
.import-review-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: var(--s3); align-items: center; padding: var(--s3) var(--s4); border: 1px solid var(--glass-edge); border-radius: var(--r-md); background: rgba(255,255,255,.4); }
.import-row-selector { display: flex; align-items: center; gap: var(--s3); min-width: 0; min-height: 44px; cursor: pointer; }
.import-row-selector > input { width: 20px; height: 20px; flex: 0 0 auto; accent-color: var(--primary); }
.import-row-selector-copy { display: grid; min-width: 0; }
.import-row-selector-copy > strong { color: var(--primary-dark); overflow-wrap: anywhere; }
.import-row-selector-copy > small { color: var(--muted); }
.import-status-badge { display: inline-flex; align-items: center; gap: 5px; padding: 5px 9px; border-radius: 999px; font-size: .76rem; font-weight: 700; white-space: nowrap; }
.import-status-badge.is-create { color: var(--success); background: var(--success-bg); border: 1px solid var(--success-border); }
.import-status-badge.is-update { color: var(--primary-dark); background: rgba(76,170,182,.12); border: 1px solid rgba(49,114,122,.18); }
.import-row-differences { grid-column: 1 / -1; margin-left: 32px; font-size: .82rem; color: var(--text-muted); }
.import-row-differences summary { cursor: pointer; font-weight: 650; color: var(--primary); }
.import-row-differences ul, .import-unchanged-lines ul { margin: var(--s2) 0 0 var(--s4); display: grid; gap: 4px; }
.import-unchanged-lines { margin-top: var(--s3); padding: var(--s3) var(--s4); border: 1px solid var(--success-border); border-radius: var(--r-sm); background: var(--success-bg); color: var(--success); font-size: .86rem; }
.import-unchanged-lines summary { cursor: pointer; font-weight: 650; }
.import-conflict-toolbar { display: flex; align-items: center; gap: var(--s3); flex-wrap: wrap; margin: var(--s5) 0 var(--s3); padding: var(--s3); border-radius: var(--r-sm); background: var(--warning-bg); border: 1px solid var(--warning-border); }
.import-conflict-toolbar label { font-weight: 650; }
.import-conflict-toolbar select { width: auto; min-width: 260px; }
.import-conflicts { display: grid; gap: var(--s4); }
.import-conflict-card { border: 1px solid var(--warning-border); border-radius: var(--r-md); overflow: hidden; background: rgba(255,255,255,.32); }
.import-conflict-title { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--s4); flex-wrap: wrap; padding: var(--s4); background: var(--warning-bg); }
.import-conflict-title h3 { margin: 2px 0 0; font-size: 1.05rem; }
.import-line-number { font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; color: var(--warning-text); }
.import-conflict-action { display: flex; flex-wrap: wrap; gap: var(--s3); border: 0; padding: 0; margin: 0; }
.import-conflict-action legend { width: 100%; margin-bottom: var(--s1); font-size: .78rem; font-weight: 650; }
.import-conflict-action label { display: flex; align-items: center; gap: 6px; font-size: .84rem; cursor: pointer; }
.import-differences { display: grid; gap: 1px; background: var(--glass-edge); }
.import-difference { display: grid; grid-template-columns: minmax(110px,.5fr) repeat(2,minmax(0,1fr)); gap: var(--s3); align-items: stretch; padding: var(--s3) var(--s4); background: rgba(255,255,255,.74); }
.import-difference > strong { font-size: .82rem; color: var(--primary-dark); padding-top: 4px; }
.import-difference > label { display: grid; grid-template-columns: auto minmax(0,1fr); gap: var(--s2); align-items: start; cursor: pointer; min-width: 0; }
.import-difference > label input { margin-top: 5px; }
.import-difference > label span { min-width: 0; overflow-wrap: anywhere; }
.import-difference small { display: block; margin-bottom: 2px; color: var(--muted); font-weight: 650; text-transform: uppercase; letter-spacing: .04em; }
.rich-text-preview { display: block; }
.import-preview-actions { display: flex; gap: var(--s2); align-items: center; margin-top: var(--s5); }
.import-cancel-form { margin-top: var(--s2); }
@media (max-width: 760px) {
    .import-review-row { grid-template-columns: 1fr; }
    .import-status-badge { justify-self: start; margin-left: 32px; }
    .import-selection-actions { width: 100%; }
    .import-selection-actions .button { flex: 1 1 180px; justify-content: center; }
    .import-difference { grid-template-columns: 1fr; }
    .import-conflict-toolbar select { width: 100%; min-width: 0; }
}
.admin-page-header {
    display: flex; justify-content: space-between; align-items: center;
    gap: var(--s4); flex-wrap: wrap;
    margin-bottom: var(--s8); padding-bottom: var(--s5);
    border-bottom: 1px solid var(--glass-edge);
}
.admin-page-header { margin-top: 0; }
.admin-page-header h1 { margin: 0; font-size: 1.5rem; letter-spacing: -.025em; }
.admin-page-header > div { display: flex; gap: var(--s2); align-items: center; flex-wrap: wrap; }
.availability-heading-help { flex-basis: 100%; margin: 0; font-size: .86rem; }
.availability-header-actions { display: flex; align-items: center; gap: var(--s2); flex-wrap: wrap; }
.admin-maintenance-banner {
    display: flex; align-items: center; justify-content: center; gap: var(--s4); flex-wrap: wrap;
    padding: 9px var(--s4); color: #fff7e8; background: #805c24;
    font-size: .82rem; font-weight: 600;
}
.admin-maintenance-banner span { display: inline-flex; align-items: center; gap: 7px; }
.admin-maintenance-banner a { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.availability-status {
    display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px;
    border-radius: 999px; font-size: .78rem; font-weight: 700;
}
.availability-status-online { color: var(--success); background: var(--success-bg); border: 1px solid var(--success-border); }
.availability-status-offline { color: var(--warning-text); background: var(--warning-bg); border: 1px solid var(--warning-border); }
.availability-layout { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); gap: var(--s5); align-items: start; }
.availability-form { padding: var(--s6); }
.availability-switch-row { display: flex; align-items: center; justify-content: space-between; gap: var(--s5); padding-bottom: var(--s5); border-bottom: 1px solid var(--glass-edge); }
.availability-switch-row h2 { margin: 0 0 var(--s1); font-size: 1.08rem; }
.availability-switch-row p { margin: 0; color: var(--text-muted); font-size: .86rem; }
.availability-switch { display: inline-flex; align-items: center; gap: 9px; cursor: pointer; flex-shrink: 0; font-size: .82rem; font-weight: 700; color: var(--primary-dark); }
.availability-switch input { position: absolute; opacity: 0; pointer-events: none; }
.availability-switch-track { width: 48px; height: 27px; padding: 3px; border-radius: 999px; background: #adc1c4; transition: background var(--tb) var(--ease); }
.availability-switch-track span { display: block; width: 21px; height: 21px; border-radius: 50%; background: #fff; box-shadow: 0 2px 6px rgba(14,36,39,.2); transition: transform var(--tb) var(--ease); }
.availability-switch input:checked + .availability-switch-track { background: var(--primary); }
.availability-switch input:checked + .availability-switch-track span { transform: translateX(21px); }
.availability-switch input:focus-visible + .availability-switch-track { outline: 3px solid var(--focus-ring); outline-offset: 3px; }
.availability-notice { display: flex; align-items: flex-start; gap: var(--s3); margin: var(--s5) 0; padding: var(--s4); border-radius: var(--r); color: var(--primary-dark); background: rgba(76,170,182,.09); border: 1px solid rgba(49,114,122,.15); }
.availability-notice .icon { margin-top: 2px; color: var(--accent); }
.availability-notice p { margin: 0; font-size: .84rem; }
.availability-form .field-label { margin-top: var(--s4); }
.availability-save { margin-top: var(--s5); }
.availability-access-settings { margin-top: var(--s5); padding-top: var(--s5); border-top: 1px solid var(--glass-edge); }
.availability-access-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s4); }
.availability-access-heading h3 { margin: 0 0 var(--s1); font-size: 1rem; }
.availability-access-heading p { margin: 0; color: var(--text-muted); font-size: .82rem; }
.availability-code-status { display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; padding: 5px 9px; border-radius: 999px; color: var(--text-muted); background: rgba(49,114,122,.06); font-size: .7rem; font-weight: 700; }
.availability-code-status.is-configured { color: var(--success); background: var(--success-bg); }
.availability-code-remove { margin-top: var(--s2) !important; color: var(--danger); }
.availability-preview { overflow: hidden; border-radius: var(--r-lg); border: 1px solid rgba(49,114,122,.18); background: #e8f3f4; box-shadow: var(--sh-md); }
.availability-preview-bar { display: flex; align-items: center; gap: 6px; padding: 10px 13px; background: rgba(255,255,255,.78); border-bottom: 1px solid rgba(49,114,122,.12); }
.availability-preview-bar > span { width: 7px; height: 7px; border-radius: 50%; background: #a9c4c7; }
.availability-preview-bar strong { margin-left: auto; color: var(--text-muted); font-size: .7rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; }
.availability-preview-body { min-height: 410px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--s8); text-align: center; background: radial-gradient(circle at 50% 18%, rgba(76,170,182,.22), transparent 40%), linear-gradient(155deg, #edf7f8, #dcebed); }
.availability-preview-mark { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 17px; color: #fff; background: linear-gradient(145deg, var(--accent), var(--primary)); box-shadow: 0 14px 30px rgba(49,114,122,.22); }
.availability-preview-brand { margin: var(--s3) 0 var(--s5); color: var(--primary); font-size: .78rem; font-weight: 700; }
.availability-preview-body h2 { max-width: 330px; margin: 0 0 var(--s3); font-size: 1.35rem; }
.availability-preview-body p { max-width: 340px; color: var(--text-secondary); font-size: .85rem; }
.availability-preview-pill { display: inline-flex; align-items: center; gap: 7px; margin-top: var(--s3); padding: 7px 11px; border-radius: 999px; color: var(--primary-dark); background: rgba(255,255,255,.72); font-size: .72rem; font-weight: 700; }
.availability-preview-pill i { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 4px rgba(76,170,182,.16); }
.availability-preview-access { display: inline-flex; align-items: center; gap: 6px; margin-top: var(--s3); color: var(--primary); font-size: .7rem; font-weight: 700; }
.stat-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--s3); margin: var(--s3) 0 var(--s6); }
.stat-card {
    border-radius: var(--r); padding: var(--s5) var(--s4) var(--s4);
    text-align: center; text-decoration: none; color: var(--text);
    transition: transform var(--tb) var(--ease), box-shadow var(--tb) var(--ease);
    position: relative; overflow: hidden;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
}
.stat-card::before {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(135deg, rgba(76,170,182,.08) 0%, rgba(49,114,122,.04) 100%);
    pointer-events: none;
}
a.stat-card:hover { transform: translateY(-3px); box-shadow: var(--sh-md); }
a.stat-card:hover strong { color: var(--accent); }
.stat-card strong {
    display: block; font-size: 2rem; font-weight: 800;
    color: var(--primary); line-height: 1; margin-bottom: var(--s2);
    transition: color var(--tb) var(--ease);
}
.stat-card span { color: var(--text-muted); font-size: .78rem; font-weight: 500; letter-spacing: .02em; text-transform: uppercase; }
.stat-card-icon { color: var(--accent); margin-bottom: var(--s2); opacity: .85; }
.admin-columns   { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s4); align-items: stretch; }
.admin-columns-3 { grid-template-columns: repeat(3, 1fr); }
.admin-columns .admin-panel { display: flex; flex-direction: column; }
.admin-columns .admin-panel .sortable-list { flex: 1 1 auto; }
.admin-columns .admin-panel .admin-add-form { margin-top: auto; }
.admin-taxonomy-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--s4);
    align-items: start;
}
.admin-taxonomy-grid > .admin-panel {
    grid-column: 1;
    margin-top: 0;
    min-width: 0;
}
.taxonomy-panel-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--s4);
    margin-bottom: var(--s3);
}
.taxonomy-panel-header h2 { margin: 0 0 var(--s1); }
.taxonomy-panel-header p { margin: 0; }
.taxonomy-panel-header-search { align-items: center; flex-wrap: wrap; }
.taxonomy-search { flex: 1 1 280px; max-width: 380px; margin: 0; }
.taxonomy-sort-help { margin-bottom: var(--s3); }
.kw-chips { display: flex; flex-wrap: wrap; gap: var(--s2); margin-top: var(--s1); }
.kw-chip {
    display: inline-flex; align-items: center; gap: 5px;
    background: rgba(76,170,182,.10);
    border: 1px solid rgba(49,114,122,.22);
    border-radius: 999px;
    padding: 3px 4px 3px 10px;
    font-size: .82rem;
    color: var(--primary-dark);
    transition: background var(--tf);
}
.kw-chip:hover { background: rgba(76,170,182,.18); }
.kw-chip-label { font-weight: 500; }
.kw-chip-count {
    font-size: .7rem; font-weight: 700;
    background: rgba(49,114,122,.15);
    color: var(--primary);
    border-radius: 999px;
    padding: 1px 6px;
    min-width: 18px; text-align: center;
}
.kw-chip-primary-badge {
    display: inline-flex; align-items: center; gap: 2px;
    font-size: .7rem; font-weight: 700;
    color: var(--primary-dark);
    background: rgba(76,170,182,.22);
    border-radius: 999px;
    padding: 1px 6px;
}
.kw-chip-action {
    display: inline-flex; align-items: center; justify-content: center;
    width: 20px; height: 20px;
    background: rgba(0,0,0,.06); border: none; border-radius: 50%;
    color: var(--text-muted); cursor: pointer; padding: 0;
    transition: background var(--tf), color var(--tf);
    flex-shrink: 0;
}
.kw-chip-edit:hover  { background: rgba(49,114,122,.2); color: var(--primary); }
.kw-chip-delete:hover { background: var(--danger); color: #fff; }
.keywords-field { display: flex; gap: var(--s2); align-items: center; }
.keywords-field input { flex: 1; }
.keywords-suggestions { margin-top: var(--s2); padding: var(--s3); border-radius: var(--r-sm); background: rgba(49,114,122,.07); border: 1px solid rgba(49,114,122,.2); }

/* ---------- Mots-clés : saisie en tags avec mot-clé principal ---------- */
.kw-tag-input {
    position: relative;
    border: 1px solid var(--glass-edge);
    border-radius: var(--r-sm);
    background: rgba(255,255,255,.76);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    padding: var(--s2);
    transition: border-color var(--tf), box-shadow var(--tf);
}
.kw-tag-input:focus-within { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(76,170,182,.18); }
.kw-tag-list { display: flex; flex-wrap: wrap; gap: 6px; }
.kw-tag-list:not(:empty) { margin-bottom: var(--s2); }
.kw-tag-chip {
    display: inline-flex; align-items: center; gap: 4px;
    background: rgba(76,170,182,.10);
    border: 1px solid rgba(49,114,122,.22);
    border-radius: 999px;
    padding: 2px 6px;
    font-size: .82rem;
    color: var(--primary-dark);
    transition: background var(--tf), border-color var(--tf);
}
.kw-tag-chip-primary { background: rgba(76,170,182,.30); border-color: var(--primary); }
.kw-tag-chip-primary .kw-tag-label { font-weight: 700; }
.kw-tag-star {
    display: inline-flex; align-items: center; justify-content: center;
    width: 19px; height: 19px;
    border: none; background: transparent; border-radius: 50%;
    color: var(--text-muted); cursor: pointer; padding: 0; flex-shrink: 0;
    transition: color var(--tf), background var(--tf);
}
.kw-tag-star:hover { color: var(--accent); background: rgba(76,170,182,.15); }
.kw-tag-star svg { fill: none; transition: fill var(--tf); }
.kw-tag-chip-primary .kw-tag-star { color: var(--primary); }
.kw-tag-chip-primary .kw-tag-star svg { fill: var(--primary); }
.kw-tag-label { font-weight: 500; }
.kw-tag-remove {
    display: inline-flex; align-items: center; justify-content: center;
    width: 16px; height: 16px;
    border: none; background: rgba(0,0,0,.06); border-radius: 50%;
    color: var(--text-muted); cursor: pointer; padding: 0; flex-shrink: 0;
    transition: background var(--tf), color var(--tf);
}
.kw-tag-remove:hover { background: var(--danger); color: #fff; }
.kw-tag-input-row { display: flex; gap: var(--s2); align-items: center; }
.kw-tag-text {
    flex: 1; min-width: 120px;
    border: none;
    background: transparent;
    box-shadow: none;
    padding: 7px 4px;
    width: auto;
}
.kw-tag-text:focus-visible { outline-width: 2px; outline-offset: 1px; }
.kw-tag-dropdown {
    position: absolute; left: var(--s2); right: var(--s2); top: 100%; margin-top: 6px;
    background: rgba(255,255,255,.97);
    -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px);
    border: 1px solid var(--glass-border);
    border-radius: var(--r);
    box-shadow: var(--sh-lg);
    list-style: none; padding: 5px; margin: 0;
    max-height: 220px; overflow-y: auto;
    z-index: 200;
}
.kw-tag-dropdown[hidden] { display: none; }
.kw-tag-dropdown-portal { position: fixed; left: 0; top: 0; margin-top: 0; }
.kw-tag-dropdown li {
    padding: 8px 11px;
    border-radius: var(--r-sm);
    font-size: .88rem; color: var(--text);
    cursor: pointer;
    transition: background var(--tf);
}
.kw-tag-dropdown li:hover,
.kw-tag-dropdown li.kw-tag-dropdown-active { background: rgba(76,170,182,.12); color: var(--primary-dark); }
.kw-tag-dropdown li .kw-tag-dropdown-new { color: var(--text-muted); font-size: .8rem; }
.suggest-label { font-size: .8rem; color: var(--text-muted); margin: 0 0 var(--s2); }
.suggest-msg { margin: 0; font-size: .85rem; color: var(--text-muted); }
.suggest-msg-error { color: var(--danger); }
.suggest-chips { display: flex; flex-wrap: wrap; gap: var(--s2); }
.suggest-chip {
    padding: 3px 10px;
    border-radius: 100px;
    border: 1px solid rgba(49,114,122,.35);
    background: rgba(76,170,182,.08);
    color: var(--primary);
    font-size: .8rem;
    cursor: pointer;
    transition: background var(--tf), border-color var(--tf), color var(--tf);
}
.suggest-chip:hover { background: rgba(76,170,182,.2); border-color: var(--accent); }
.suggest-chip-added { background: var(--primary); color: #fff; border-color: var(--primary); }
.suggest-chip-added:hover { background: var(--accent); border-color: var(--accent); }
.taxo-edit-btn {
    margin-left: auto;
    opacity: 0;
    transition: opacity var(--tf);
}
.sortable-item:hover .taxo-edit-btn,
.sortable-item:focus-within .taxo-edit-btn { opacity: 1; }
@media (hover: none) {
    .taxo-edit-btn { opacity: 1; }
}
.taxo-rename-form { display: flex; align-items: center; gap: var(--s2); flex: 1; }
.taxo-rename-input { flex: 1; min-width: 0; }
.admin-panel { border-radius: var(--r); padding: var(--s5); margin-top: var(--s4); min-width: 0; box-sizing: border-box; }
.admin-panel:first-child { margin-top: 0; }
.admin-columns > .admin-panel { margin-top: 0; }
.form-inline-row {
    display: flex; flex-wrap: wrap; gap: var(--s3); align-items: flex-start;
}
.form-inline-field { display: flex; flex-direction: column; gap: 5px; flex: 1; min-width: 200px; }
.form-inline-field label { font-size: .85rem; font-weight: 600; color: var(--primary-dark); }
.admin-panel h2 { margin-top: 0; font-size: 1.05rem; margin-bottom: 0; padding-bottom: 20px; }
.admin-panel-header { display: flex; justify-content: space-between; align-items: center; gap: var(--s3); flex-wrap: wrap; margin-bottom: var(--s4); }
.admin-panel-header h2 { margin-bottom: 0; padding-bottom: 0; display: flex; align-items: center; gap: var(--s2); }
.admin-list { list-style: none; padding: 0; margin: 0; }
.admin-list li { display: flex; justify-content: space-between; align-items: center; gap: var(--s3); padding: var(--s2) 0; border-bottom: 1px solid rgba(49,114,122,.08); font-size: .9rem; }
.admin-list li:last-child { border-bottom: none; }
.admin-list a { color: var(--primary-dark); font-weight: 500; }
.admin-list a:hover { color: var(--accent); text-decoration: underline; }
.admin-list time { color: var(--text-muted); font-size: .78rem; white-space: nowrap; }
.table-wrap { overflow-x: auto; overflow-y: hidden; border-radius: var(--r); }
.admin-table  { width: 100%; border-collapse: collapse; }
.admin-table th, .admin-table td {
    text-align: left; padding: 10px 14px;
    border-bottom: 1px solid rgba(49,114,122,.08); font-size: .9rem;
    vertical-align: middle;
}
.admin-table th {
    background: rgba(49,114,122,.07); color: var(--primary-dark);
    font-weight: 600; font-size: .76rem; text-transform: uppercase; letter-spacing: .05em;
}
.admin-table tr:last-child td { border-bottom: none; }
.admin-table tbody tr:hover > td { background: rgba(76,170,182,.04); }
.select-inline {
    -webkit-appearance: none; appearance: none;
    border: none; box-shadow: none;
    background: transparent url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%2331727a" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>') no-repeat right 4px center / 12px;
    padding: 4px 26px 4px 6px;
    font-size: .875rem; color: var(--text); cursor: pointer;
    width: auto; border-radius: var(--r-sm);
    transition: background-color var(--tf);
}
.select-inline:hover { background-color: rgba(76,170,182,.10); }
.actions-col { white-space: nowrap; text-align: right; }
.actions-col form { display: inline; margin-left: var(--s1); }
.admin-form fieldset {
    min-width: 0;
    border-radius: var(--r); padding: var(--s4) var(--s5);
    margin: 0 0 var(--s4); border: 1px solid var(--glass-border);
    overflow: hidden;
}
.admin-form legend {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}
.fieldset-head {
    display: flex; align-items: center; gap: var(--s2);
    font-weight: 600; color: var(--primary-dark); font-size: .85rem;
    margin: calc(-1 * var(--s4)) calc(-1 * var(--s5)) var(--s4);
    padding: var(--s3) var(--s5);
    border-bottom: 1px solid rgba(49,114,122,.08);
    background: rgba(49,114,122,.04);
}
.field-label { display: block; padding: 0; margin: var(--s3) 0 var(--s2); }
.admin-form label, .stacked-form label { display: block; font-weight: 600; margin: var(--s3) 0 var(--s2); font-size: .9rem; }
.admin-form label small, .stacked-form label small { font-weight: 400; color: var(--text-muted); }
.form-help {
    display: block;
    margin-top: var(--s1);
    color: var(--text-muted);
    font-size: .78rem;
}
.rich-text-editor {
    overflow: visible;
    border: 1px solid var(--glass-edge);
    border-radius: var(--r-sm);
    background: rgba(255,255,255,.76);
    transition: border-color var(--tf) var(--ease), box-shadow var(--tf) var(--ease), background var(--tf) var(--ease);
}
.rich-text-editor:focus-within {
    border-color: var(--accent);
    background: rgba(255,255,255,.96);
    box-shadow: 0 0 0 3px rgba(76,170,182,.18);
}
.rich-text-toolbar {
    display: flex;
    gap: var(--s1);
    padding: var(--s1);
    border-bottom: 1px solid var(--glass-edge);
    background: rgba(49,114,122,.05);
}
.rich-text-format-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    min-height: 40px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: var(--r-xs);
    background: transparent;
    color: var(--primary-dark);
    font: inherit;
    cursor: pointer;
}
.rich-text-format-button:hover {
    border-color: var(--glass-edge);
    background: rgba(255,255,255,.8);
}
.rich-text-format-button:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}
.rich-text-format-button[aria-pressed="true"] {
    border-color: rgba(49,114,122,.20);
    background: rgba(76,170,182,.16);
    color: var(--primary-deep);
}
.rich-text-content {
    min-height: 190px;
    padding: 12px 13px;
    color: var(--text);
    cursor: text;
    outline: 0;
    overflow-wrap: anywhere;
}
.rich-text-editor-compact .rich-text-content {
    min-height: 110px;
}
.rich-text-content:empty::before {
    content: attr(data-placeholder);
    color: var(--text-muted);
    pointer-events: none;
}
.rich-text-content p {
    margin: 0;
}
.rich-text-editor-ready textarea[data-rich-text-input] {
    display: none;
}
.rich-text-editor textarea {
    display: block;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    resize: vertical;
}
.rich-text-editor textarea:focus {
    border-color: transparent;
    background: transparent;
    box-shadow: none;
    outline: 0;
}
.form-columns { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--s5); align-items: start; }
.form-columns > *, .form-row > *, .form-row-2 > *, .button-editor-grid > * { min-width: 0; }
.form-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s2); margin-top: var(--s4); }
.form-row   { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s3); }
.form-row-4 { grid-template-columns: 2fr 90px 150px 3fr; }
.checkbox-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(185px, 1fr)); gap: var(--s1); }
.admin-form .checkbox-label,
.admin-form .radio-label {
    display: flex; align-items: center; gap: var(--s2);
    font-weight: 400; margin: 2px 0; cursor: pointer;
    padding: 5px var(--s2); border-radius: var(--r-xs);
    transition: background var(--tf);
}
.checkbox-label:hover, .radio-label:hover { background: rgba(76,170,182,.07); }
.checkbox-label input, .radio-label input { width: auto; flex-shrink: 0; }
.preview-image { max-height: 130px; max-width: 100%; border-radius: var(--r-sm); border: 1px solid var(--glass-border); display: block; margin-bottom: var(--s3); box-shadow: var(--sh); }
.structure-image-preview { width: min(500px, 100%); max-height: none; aspect-ratio: 500 / 240; object-fit: cover; }
.field-help { margin: var(--s2) 0 0; color: var(--text-muted); font-size: .8rem; line-height: 1.45; }
.add-doc-form { display: flex; gap: var(--s2); flex-wrap: wrap; margin-top: var(--s3); align-items: center; }
.add-resource-tabs { display: flex; gap: 2px; margin-top: var(--s4); border-bottom: 1px solid var(--glass-edge); }
.add-resource-tab {
    background: none; border: none; cursor: pointer; font: inherit;
    font-size: .85rem; font-weight: 500; color: var(--text-muted);
    padding: 6px 14px; border-bottom: 2px solid transparent; margin-bottom: -1px;
    transition: color var(--tf), border-color var(--tf);
}
.add-resource-tab:hover { color: var(--primary); }
.add-resource-tab.active { color: var(--primary); border-bottom-color: var(--accent); font-weight: 600; }
.add-doc-form input[type="text"]  { flex: 1 1 180px; width: auto; }
.add-doc-form input[type="file"]  { flex: 1 1 200px; width: auto; }
.stacked-form input, .stacked-form textarea, .stacked-form select { margin-bottom: var(--s1); }
.admin-add-form { border-top: 1px solid rgba(49,114,122,.10); margin-top: var(--s4); padding-top: var(--s4); }
.admin-add-form h3 { margin: 0 0 var(--s2); font-size: .95rem; }
.creation-panel { margin-top: var(--s4); }
.step-add-toggle { margin-top: var(--s4); }
.step-add-toggle > summary {
    list-style: none;
    cursor: pointer;
    min-height: 44px;
    width: fit-content;
    max-width: 100%;
}
.step-add-toggle > summary::-webkit-details-marker { display: none; }
.step-add-toggle > summary .icon:last-child { flex-shrink: 0; }
.step-add-toggle[open] > summary .icon:last-child { transform: rotate(180deg); }
.step-add-toggle > summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.admin-body .step-buttons-editor,
.admin-body .step-documents-panel { border: 1px solid var(--glass-edge); border-radius: var(--r-md); padding: var(--s4); background: rgba(255,255,255,.46); }
.admin-body .step-buttons-editor h4,
.admin-body .step-documents-panel h4 { display: flex; align-items: center; gap: var(--s2); margin: 0 0 var(--s3); color: var(--primary-deep); font-size: .92rem; }
.step-document-edit { flex: 1; min-width: 0; }
.step-document-edit > summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s2); min-height: 44px; cursor: pointer; list-style: none; }
.step-document-edit > summary span:first-of-type { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.step-document-edit > summary::-webkit-details-marker { display: none; }
.step-document-edit > summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.resource-add-toggle { margin: var(--s3) 0; }
.resource-add-toggle > summary { display: inline-flex; flex-wrap: wrap; gap: var(--s2); }
.admin-body .step-button-library { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.admin-body .step-button-library .step-button-choice {
    display: flex; align-items: center; gap: 10px; margin: 0;
    padding: 10px 12px; min-height: 48px; min-width: 0;
    border: 1px solid rgba(49,114,122,.16); border-radius: 8px;
    background: rgba(255,255,255,.8); cursor: pointer;
    color: var(--text); font-size: .875rem; font-weight: 500; line-height: 1.35;
}
.admin-body .step-button-choice:hover { border-color: var(--primary); background: rgba(76,170,182,.06); }
.admin-body .step-button-choice:has(input:checked) { border-color: var(--primary); background: rgba(49,114,122,.08); }
.admin-body .step-button-choice:focus-within { outline: 2px solid var(--primary); outline-offset: 2px; }
.admin-body .step-button-choice input[type="checkbox"] { flex: 0 0 16px; width: 16px; height: 16px; margin: 0; accent-color: var(--primary); }
.step-button-color { flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--choice-color); }
.step-button-choice-label { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.step-choice-icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 34px; width: 34px; height: 34px; border-radius: 9px; background: rgba(49,114,122,.06); color: var(--primary); border-left: 3px solid var(--choice-color); }
.step-choice-control { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 22px; width: 22px; height: 22px; border: 1px solid rgba(49,114,122,.3); border-radius: 6px; background: #fff; color: #fff; }
.step-choice-control .icon { visibility: hidden; }
.step-button-choice:has(input:checked) .step-choice-control { background: var(--primary); border-color: var(--primary); }
.step-button-choice:has(input:checked) .step-choice-control .icon { visibility: visible; }
.admin-body .step-button-picker > summary {
    display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
    width: 100%; min-height: 44px; padding: 8px 0;
    color: var(--primary); font-size: .875rem; font-weight: 600;
    border: 0; background: transparent; box-shadow: none;
}
.step-button-picker > summary > .icon:last-child { margin-left: auto; }
.step-selection-count { padding: 3px 7px; border-radius: 6px; background: rgba(49,114,122,.08); font-size: .75rem; font-weight: 400; }
.admin-body .step-buttons-editor { padding: 16px; margin: 16px 0; }
.admin-body .step-buttons-editor .form-help { margin: 0 0 8px; font-size: .8rem; }
.admin-body .step-buttons-editor > .button { margin-top: 8px; box-shadow: none; }
.admin-body .step-button-library .step-button-choice { position: relative; min-height: 64px; padding: 12px; gap: 12px; border-radius: 12px; }
.admin-body .step-button-choice input[type="checkbox"] { position: absolute; width: 1px; height: 1px; padding: 0; border: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.admin-body .step-button-picker { padding: 0 12px 12px; border: 1px solid rgba(49,114,122,.13); border-radius: 12px; background: rgba(255,255,255,.5); }
.admin-body .step-button-picker:not([open]) { padding-bottom: 0; }
.admin-body .step-button-picker > summary { padding: 12px 0; min-height: 48px; }
.admin-body .step-buttons-editor { background: rgba(255,255,255,.7); border-radius: 16px; }
.admin-body #section-steps .step-button-row { grid-template-columns: repeat(2,minmax(0,1fr)); align-items: start; gap: 14px; padding-top: 12px; border-top: 1px solid rgba(49,114,122,.1); }
.admin-body #section-steps .step-button-row > label { margin: 0; font-size: .8rem; font-weight: 600; color: var(--text-muted); }
.admin-body #section-steps .step-button-row input,
.admin-body #section-steps .step-button-row select { margin: 6px 0 0; min-height: 44px; border-radius: 10px; background: #fff; box-shadow: none; }
.admin-body #section-steps .step-button-row input[type="color"] { padding: 5px; cursor: pointer; }
.admin-body #section-steps .step-button-row input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
.admin-body #section-steps .step-button-row input[type="color"]::-webkit-color-swatch { border: 0; border-radius: 6px; }
.admin-body #section-steps .step-button-row > button { grid-column: 1 / -1; justify-self: end; }
.admin-body #section-steps .step-button-item { background: rgba(255,255,255,.6); border-radius: 12px; }
.admin-body #section-steps .step-button-item > summary { padding: 0; }
.admin-body #section-steps .step-button-item > summary > .icon:last-child { margin-left: auto; }
.admin-body #section-steps .step-document-form { padding: 14px; border: 1px solid rgba(49,114,122,.12); border-radius: 12px; background: rgba(255,255,255,.65); margin-top: 12px; }
.admin-body #section-steps input[type="file"] { padding: 8px; border: 1px dashed rgba(49,114,122,.35); border-radius: 10px; background: #fff; font-size: .85rem; }
.admin-body #section-steps input[type="file"]::file-selector-button { margin-right: 10px; border: 0; border-radius: 6px; padding: 9px 12px; background: rgba(49,114,122,.1); color: var(--primary); font: inherit; font-weight: 600; cursor: pointer; }
@media (max-width: 600px) { .admin-body #section-steps .step-button-row { grid-template-columns: minmax(0,1fr); } }
@media (max-width: 700px) { .admin-body .step-button-library { grid-template-columns: minmax(0, 1fr); } }
.step-button-item { margin: var(--s3) 0; border: 1px solid var(--glass-edge); border-radius: var(--r-md); padding: var(--s3); }
.step-button-item > summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s2); min-height: 44px; cursor: pointer; list-style: none; }
.step-button-item > summary::-webkit-details-marker { display: none; }
.step-button-item > summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.initial-items-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s3); }
.initial-item { margin-top: var(--s3); }
#section-links {
    align-items: start;
    grid-template-columns: minmax(0, 1fr);
    margin-top: var(--s4);
    max-width: 100%;
}
#section-links > .admin-panel {
    height: auto;
    min-width: 0;
    padding: var(--s4);
}
#section-links .admin-panel h2 {
    padding-bottom: var(--s3);
    font-size: 1rem;
}
#section-links .sortable-list {
    flex: 0 0 auto;
    margin: 0;
}
#section-links .sortable-item:not(tr) {
    margin-bottom: 0;
}
#section-links .resource-add-form {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.25fr) auto;
    gap: var(--s3);
    align-items: end;
    margin-top: var(--s3);
    padding-top: var(--s3);
}
#section-links .resource-add-form label {
    margin: 0;
    min-width: 0;
}
#section-links .resource-add-form input {
    margin: var(--s1) 0 0;
    width: 100%;
    min-width: 0;
}
#section-links .resource-add-form .button {
    min-height: 42px;
    white-space: nowrap;
}
.creation-panel#section-links .resource-add-form {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.25fr);
}
input[type="color"] { padding: 3px; height: 38px; cursor: pointer; border-radius: var(--r-sm); }
.password-field { position: relative; }
.password-field input { padding-right: 38px; }
.btn-toggle-password {
    position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
    background: none; border: none; cursor: pointer; padding: 3px;
    color: var(--text-muted); display: inline-flex;
    transition: color var(--tf);
}
.btn-toggle-password:hover { color: var(--primary); }
.password-field .btn-copy-code { position: absolute; right: 32px; top: 50%; transform: translateY(-50%); padding: 3px; }
input.code-value-input {
    padding-right: 60px;
    padding-left: 8px;
    width: 196px;
    flex: 0 0 auto;
    box-sizing: border-box;
    font-family: monospace;
    font-size: .8rem;
    letter-spacing: -.2px;
}
.btn-copy-code-done { color: var(--primary); }
.sortable-list { list-style: none; padding: 0; margin: var(--s3) 0; }
.sortable-item:not(tr) {
    display: flex; align-items: center; gap: var(--s3);
    border-radius: var(--r-sm); padding: 9px var(--s4); margin-bottom: var(--s2);
    transition: box-shadow var(--tb) var(--ease), border-color var(--tb) var(--ease);
}
.sortable-item.sortable-item-block { display: block; }
.sortable-item-block summary { display: flex; align-items: center; gap: var(--s3); cursor: pointer; list-style: none; padding: 9px var(--s4); }
.sortable-item-block summary::-webkit-details-marker { display: none; }
.sortable-item-block[open] > summary { border-bottom: 1px solid rgba(255,255,255,.1); margin-bottom: var(--s2); padding-bottom: var(--s3); }
.step-summary-title { flex: 1; min-width: 0; }
.step-document-count {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    flex-shrink: 0;
    padding: 4px 8px;
    border-radius: 999px;
    color: var(--primary-deep);
    background: rgba(76,170,182,.13);
    font-size: .75rem;
    font-weight: 600;
}
.step-documents-panel {
    margin-top: var(--s4);
    padding: var(--s4);
    border: 1px solid rgba(49,114,122,.13);
    border-radius: var(--r-sm);
    background: rgba(255,255,255,.46);
}
.step-documents-panel h4 {
    display: flex;
    align-items: center;
    gap: var(--s2);
    margin: 0 0 var(--s3);
    color: var(--primary-deep);
    font-size: .92rem;
}
.step-documents-empty { margin: 0 0 var(--s3); font-size: .84rem; }
.step-document-list { list-style: none; margin: 0 0 var(--s3); padding: 0; }
.step-document-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s3);
    padding: 8px 0;
    border-bottom: 1px solid rgba(49,114,122,.10);
}
.step-document-name { display: inline-flex; align-items: center; gap: var(--s2); flex: 1; min-width: 0; overflow-wrap: anywhere; }
.step-document-name input { flex: 1; min-width: 0; }
.step-document-form {
    display: grid;
    grid-template-columns: minmax(160px, 1fr) minmax(220px, 1.3fr) auto;
    gap: var(--s2) var(--s3);
    align-items: end;
}

/* Hub documentaire et renommage depuis les fiches */
.document-hub-header .muted { flex-basis: 100%; margin: var(--s1) 0 0; }
.document-hub-filters {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) minmax(180px, .45fr) auto auto;
    gap: var(--s2) var(--s3);
    align-items: end;
    margin-bottom: var(--s3);
    padding: var(--s4);
    border: 1px solid rgba(49,114,122,.13);
    border-radius: var(--r);
    background: rgba(255,255,255,.58);
    backdrop-filter: blur(12px);
}
.document-hub-filters label { margin: 0; }
.document-hub-filters label:first-of-type { grid-column: 1; grid-row: 1; }
.document-hub-filters label:nth-of-type(2) { grid-column: 2; grid-row: 1; }
.document-hub-filters input { grid-column: 1; grid-row: 2; }
.document-hub-filters select { grid-column: 2; grid-row: 2; }
.document-hub-filters .button { grid-row: 2; white-space: nowrap; }
.document-hub-count { margin: 0 0 var(--s3); color: var(--text-muted); font-size: .9rem; font-weight: 600; }
.document-hub-panel { padding: 0; overflow: hidden; }
.document-hub-table td:first-child { min-width: 320px; }
.document-rename-form { display: flex; align-items: center; gap: var(--s2); min-width: 0; }
.document-rename-form input[type="text"] { min-width: 160px; margin: 0; }
.document-rename-form-compact { flex: 1; }
.document-rename-form-compact input[type="text"] { flex: 1; }
.document-owner-link { display: block; font-weight: 650; }
.document-owner-detail { display: block; margin-top: 3px; color: var(--text-muted); font-size: .8rem; }
.document-hub-actions { white-space: nowrap; }
.document-hub-actions .inline-form { margin-left: var(--s1); }
.document-hub-empty { padding: var(--s8) var(--s4); text-align: center; color: var(--primary-deep); }
.document-hub-empty h2 { margin: var(--s2) 0; font-size: 1.1rem; }

/* Médiathèque */
.media-library-header .muted { margin: var(--s1) 0 0; }
.media-library-stats { display: flex; flex-wrap: wrap; gap: var(--s3); margin-bottom: var(--s3); }
.media-library-stat {
    display: inline-flex; align-items: center; gap: var(--s2); min-height: 44px;
    padding: var(--s2) var(--s3); border: 1px solid rgba(49,114,122,.15);
    border-radius: 999px; color: var(--primary-deep); background: rgba(255,255,255,.58);
    backdrop-filter: blur(12px);
}
.media-library-stat .icon { color: var(--accent); }
.media-library-stat strong { font-size: 1.05rem; }
.media-library-filters {
    display: grid; grid-template-columns: minmax(240px, 1.2fr) minmax(170px, .5fr) minmax(180px, .55fr) auto auto;
    gap: var(--s3); align-items: end; margin-bottom: var(--s6); padding: var(--s4);
    border: 1px solid rgba(49,114,122,.13); border-radius: var(--r);
    background: rgba(255,255,255,.58); backdrop-filter: blur(12px);
}
.media-filter-field { min-width: 0; }
.media-filter-field label { margin-top: 0; }
.media-filter-field input, .media-filter-field select { width: 100%; margin: 0; }
.media-library-filters > .button { white-space: nowrap; }
.media-library-section { margin-bottom: var(--s8); }
.media-library-section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s3); margin-bottom: var(--s3); }
.media-library-section-heading h2 { display: inline-flex; align-items: center; gap: var(--s2); margin: 0; color: var(--primary-deep); font-size: 1.2rem; }
.media-library-section-heading > span { color: var(--text-muted); font-size: .84rem; font-weight: 600; }
.media-library-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: var(--s4); }
.media-card { overflow: hidden; border: 1px solid rgba(49,114,122,.15); border-radius: var(--r); background: rgba(255,255,255,.66); box-shadow: var(--sh-xs); }
.media-card-preview { display: block; position: relative; aspect-ratio: 500 / 240; overflow: hidden; background: rgba(49,114,122,.08); }
.media-card-preview:focus-visible { outline: 3px solid var(--accent); outline-offset: -3px; }
.media-card-preview img { width: 100%; height: 100%; object-fit: cover; transition: transform .2s ease; }
.media-card-preview:hover img { transform: scale(1.025); }
.media-card-body { padding: var(--s4); }
.media-card-badges { display: flex; flex-wrap: wrap; gap: var(--s1); margin-bottom: var(--s2); }
.media-badge-unassigned { color: #74510a; background: #fff3cd; }
.media-card h3 { margin: 0 0 var(--s1); color: var(--primary-deep); font-size: 1rem; overflow-wrap: anywhere; }
.media-card-filename { margin: 0; overflow: hidden; color: var(--text-muted); font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.media-card-meta { margin: var(--s2) 0 0; color: var(--text-muted); font-size: .78rem; font-variant-numeric: tabular-nums; }
.media-reference-list { list-style: none; margin: var(--s3) 0 0; padding: 0; }
.media-reference-list li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--s2); padding: 5px 0; border-top: 1px solid rgba(49,114,122,.09); font-size: .8rem; }
.media-reference-list li span { color: var(--text-muted); }
.media-reference-list li a { overflow-wrap: anywhere; font-weight: 650; }
.media-card-note { min-height: 2.6em; margin: var(--s3) 0 0; color: var(--text-muted); font-size: .8rem; line-height: 1.45; }
.media-card-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s2); margin-top: var(--s3); }
.media-card-actions .inline-form { margin: 0; min-width: 0; }
.media-card-actions .button { justify-content: center; width: 100%; min-height: 42px; padding-inline: var(--s2); white-space: nowrap; }
.media-card-actions .media-card-primary { grid-column: 1 / -1; }
.media-card-actions .media-card-delete {
    border-color: rgba(192,57,43,.28);
    color: var(--danger);
    background: rgba(192,57,43,.08);
    box-shadow: none;
}
.media-card-actions .media-card-delete:hover { border-color: var(--danger); color: #fff; background: var(--danger); }
.media-library-section-note {
    display: flex; align-items: flex-start; gap: var(--s2); margin: calc(var(--s2) * -1) 0 var(--s3);
    padding: var(--s2) var(--s3); border: 1px solid rgba(49,114,122,.12); border-radius: var(--r-sm);
    color: var(--text-muted); background: rgba(255,255,255,.42); font-size: .82rem; line-height: 1.45;
}
.media-library-section-note .icon { flex: 0 0 auto; margin-top: 2px; color: var(--accent); }
.media-library-pagination { margin-top: var(--s4); }
.media-library-empty { padding: var(--s8) var(--s4); text-align: center; color: var(--primary-deep); }
.media-library-empty h3 { margin: var(--s2) 0; font-size: 1.05rem; }
.media-document-size { display: block; margin-top: 4px; color: var(--text-muted); font-size: .75rem; }
@media (prefers-reduced-motion: reduce) {
    .media-card-preview img { transition: none; }
    .media-card-preview:hover img { transform: none; }
}
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
@media (max-width: 900px) {
    .document-hub-filters { grid-template-columns: 1fr 1fr; }
    .document-hub-filters .button { grid-row: auto; }
    .media-library-filters { grid-template-columns: 1fr 1fr; }
    .media-filter-search { grid-column: 1 / -1; }
}
@media (max-width: 620px) {
    .document-hub-filters { grid-template-columns: 1fr; }
    .document-hub-filters label,
    .document-hub-filters input,
    .document-hub-filters select,
    .document-hub-filters .button { grid-column: 1 !important; grid-row: auto; width: 100%; }
    .document-rename-form { align-items: stretch; flex-direction: column; }
    .document-rename-form .button { width: 100%; }
    .step-document-list li { align-items: stretch; flex-direction: column; }
    .media-library-filters { grid-template-columns: 1fr; }
    .media-filter-search { grid-column: auto; }
    .media-library-filters > .button { width: 100%; }
    .media-card-actions .button { min-height: 44px; }
}
.step-document-form label { margin: 0; }
.step-document-form label:nth-of-type(1) { grid-column: 1; grid-row: 1; }
.step-document-form label:nth-of-type(2) { grid-column: 2; grid-row: 1; }
.step-document-form input[type="text"] { grid-column: 1; grid-row: 2; }
.step-document-form input[type="file"] { grid-column: 2; grid-row: 2; }
.step-document-form .button { grid-column: 3; grid-row: 2; white-space: nowrap; }
@media (max-width: 768px) {
    .step-document-count { font-size: .7rem; }
    .step-document-count .icon { width: 16px; height: 16px; }
    .step-document-form { grid-template-columns: 1fr; }
    .step-document-form label,
    .step-document-form input,
    .step-document-form .button { grid-column: 1 !important; grid-row: auto; width: 100%; }
}
.sortable-item-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sortable-item.dragging  { opacity: .4; }
tr.sortable-item.dragging td { border-style: dashed; }
.sortable-item.drag-over { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(76,170,182,.28); }
tr.sortable-item { cursor: default; }
tr.sortable-item .drag-handle { cursor: grab; }
.drag-handle {
    cursor: grab; color: var(--text-muted); user-select: none; display: inline-flex;
    padding: var(--s1); border-radius: var(--r-xs);
    transition: color var(--tf);
}
.drag-handle:hover  { color: var(--primary); }
.drag-handle:active { cursor: grabbing; }
.sortable-item > a, .sortable-item > span:not(.drag-handle):not(.doc-size):not(.badge) { flex: 1; min-width: 0; }
.sortable-item .badge { font-size: .65rem; padding: 1px 6px; flex-shrink: 0; }
.btn-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; border-radius: var(--r-sm);
    background: rgba(255,255,255,.55); border: 1px solid var(--glass-edge);
    color: var(--text-secondary); cursor: pointer; flex-shrink: 0;
    text-decoration: none;
    transition: background var(--tf), color var(--tf), border-color var(--tf);
}
.btn-icon:hover { background: rgba(255,255,255,.9); color: var(--primary); border-color: var(--accent); }
.btn-icon-danger { color: var(--danger); border-color: var(--danger-border); background: var(--danger-bg); }
.btn-icon-danger:hover { background: var(--danger); color: #fff; border-color: var(--danger); }
.sortable-actions { display: flex; gap: var(--s2); align-items: center; flex-shrink: 0; margin-left: auto; }
.sortable-item details { width: 100%; }
.sortable-item details form.stacked-form { margin-top: var(--s3); }
.hidden-action-form { display: none; }
.step-edit-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s3);
    margin-top: var(--s3);
    padding-top: var(--s3);
    border-top: 1px solid rgba(49,114,122,.10);
}
.step-edit-actions .button-danger-soft {
    margin-left: auto;
    background: rgba(255,255,255,.78);
    color: var(--danger);
    border-color: rgba(192,57,43,.22);
    box-shadow:
        0 6px 14px rgba(192,57,43,.055),
        inset 0 1px 0 rgba(255,255,255,.82);
}
.step-edit-actions .button-danger-soft:hover {
    background: rgba(192,57,43,.09);
    color: #9f2f24;
    border-color: rgba(192,57,43,.32);
}
.button-editor-grid {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) minmax(140px, .55fr) minmax(240px, 1.45fr);
    gap: var(--s3);
    align-items: end;
}
.button-color-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s3);
    margin: var(--s3) 0;
    padding: 10px 12px;
    border-radius: var(--r-sm);
    background: rgba(255,255,255,.48);
    box-shadow: inset 0 0 0 1px rgba(49,114,122,.08);
}
.button-color-panel .field-label {
    margin: 0;
    color: var(--primary-dark);
    font-size: .84rem;
    font-weight: 700;
    white-space: nowrap;
}
.button-color-panel .color-swatches {
    margin: 0;
    justify-content: flex-end;
}
.button-color-panel .color-swatch {
    width: 32px;
    height: 32px;
}
.color-swatches { display: flex; gap: var(--s2); align-items: center; flex-wrap: wrap; margin-bottom: var(--s3); }
.color-swatch-label { position: relative; cursor: pointer; }
.color-swatch-radio { position: absolute; opacity: 0; width: 1px; height: 1px; }
.color-swatch {
    display: block; width: 28px; height: 28px; border-radius: 50%;
    border: 2px solid transparent;
    outline: 2px solid transparent; outline-offset: 2px;
    transition: outline-color var(--tf), transform var(--tf);
}
.color-swatch-radio:checked + .color-swatch { outline-color: var(--primary); transform: scale(1.15); }
.color-swatch-radio:focus-visible + .color-swatch {
    outline-color: var(--focus-ring);
    box-shadow: 0 0 0 4px #fff;
}
.color-swatch-label:hover .color-swatch { transform: scale(1.1); }
.color-swatch-custom { display: flex; align-items: center; gap: 4px; }
.color-swatch-picker { background-image: conic-gradient(red, yellow, lime, cyan, blue, magenta, red); }
.color-swatch-hex { width: 0; height: 0; opacity: 0; position: absolute; pointer-events: none; }
.codes-layout      { display: grid; grid-template-columns: 1fr 290px; gap: var(--s4); align-items: start; margin-top: var(--s4); }
.codes-table-panel { grid-column: 1; }
.codes-form-panel  { grid-column: 2; }
.codes-form-panel h2 { margin-top: 0; }
.code-cell { display: flex; align-items: center; gap: var(--s2); }
.access-code-plain {
    font-family: var(--font-mono); font-size: .88rem; font-weight: 700; letter-spacing: .07em;
    background: rgba(49,114,122,.07); color: var(--primary-dark);
    padding: 3px 9px; border-radius: var(--r-sm);
    border: 1px solid rgba(49,114,122,.18);
    white-space: nowrap;
}
.btn-copy {
    display: inline-flex; align-items: center; justify-content: center;
    width: 26px; height: 26px; border-radius: var(--r-sm);
    background: transparent; border: 1px solid var(--glass-edge);
    color: var(--text-muted); cursor: pointer; flex-shrink: 0;
    transition: background var(--tf), color var(--tf), border-color var(--tf);
}
.btn-copy:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
.count-badge {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 19px; height: 19px; padding: 0 4px;
    border-radius: 999px; background: var(--primary); color: #fff;
    font-size: .68rem; font-weight: 700; margin-left: var(--s2); vertical-align: middle;
}
.admin-nav-dropdown { position: relative; }
.admin-nav-dropdown > summary { display: flex; align-items: center; gap: 8px; cursor: pointer; list-style: none; min-height: 44px; box-sizing: border-box; }
.admin-nav-dropdown > summary::-webkit-details-marker { display: none; }
.admin-nav-dropdown[open] > summary > .icon:last-child { transform: rotate(180deg); }
.admin-dropdown-panel { position: absolute; top: calc(100% + 6px); left: 0; z-index: 110; width: 250px; max-width: calc(100vw - 32px); padding: 6px; background: #fff; border: 1px solid rgba(49,114,122,.18); border-radius: 12px; box-shadow: 0 12px 32px rgba(15,49,53,.18); }
.admin-account-dropdown .admin-dropdown-panel { left: auto; right: 0; }
.admin-dropdown-link { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 10px 12px; box-sizing: border-box; border: 0; border-radius: 7px; color: var(--text); background: transparent; font: inherit; font-size: .88rem; text-decoration: none; text-align: left; cursor: pointer; width: 100%; }
.admin-dropdown-link > .icon { color: var(--primary); flex-shrink: 0; }
.admin-dropdown-link:hover, .admin-dropdown-link[aria-current="page"] { background: var(--primary-light, #e8f3f3); color: var(--primary); }
.admin-nav-dropdown > summary:focus-visible, .admin-dropdown-link:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.admin-dropdown-logout { margin: 6px 0 0; padding-top: 6px; border-top: 1px solid rgba(49,114,122,.15); }
.admin-dropdown-logout .admin-dropdown-link { color: var(--danger); }
@media (max-width: 768px) {
    .admin-header .admin-nav-dropdown { width: 100%; }
    .admin-header .admin-dropdown-panel { position: static; width: 100%; max-width: none; margin: 4px 0 8px; box-shadow: none; }
    .admin-header .admin-nav-actions { flex-wrap: wrap; width: 100%; }
}

/* Base commune aux interfaces structures et parcours. */
.admin-body .structure-editor-heading { display: block; min-width: 0; }
.structure-editor-heading p { margin: 6px 0 0; color: var(--text-muted); font-size: .9rem; overflow-wrap: anywhere; }
.structure-editor-nav { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 0 0 24px; padding: 10px 0; border-block: 1px solid rgba(49,114,122,.14); }
.structure-editor-nav a { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 6px 10px; border-radius: 8px; color: var(--primary-dark); font-size: .85rem; text-decoration: none; }
.structure-editor-nav a:hover { background: rgba(49,114,122,.08); }
.admin-content-editor [id^="structure-"], .admin-content-editor [id^="parcours-"], .admin-content-editor [id^="section-"] { scroll-margin-top: 160px; }
.admin-content-editor .form-columns { grid-template-columns: minmax(0, 1fr) 290px; gap: 24px; }
.admin-content-editor .admin-form fieldset { padding: 24px; margin-bottom: 24px; background: rgba(255,255,255,.66); border-color: rgba(49,114,122,.14); }
.admin-content-editor .fieldset-head { margin: -24px -24px 20px; padding: 17px 24px; font-size: 1rem; background: rgba(49,114,122,.045); }
.admin-content-editor .form-help { line-height: 1.6; }
.admin-content-editor :is(#name, #title) { font-size: 1.05rem; font-weight: 600; }
.admin-content-editor .admin-publication-panel .checkbox-label,
.admin-content-editor .admin-publication-panel .radio-label { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 10px 12px; border: 1px solid rgba(49,114,122,.16); border-radius: 10px; cursor: pointer; font-size: .86rem; }
.admin-content-editor .admin-publication-panel label:has(input:checked) { background: rgba(49,114,122,.08); border-color: var(--primary); }
.admin-content-editor .admin-publication-panel input { flex-shrink: 0; margin: 0; }
.admin-content-editor .admin-publication-panel label:focus-within { outline: 2px solid var(--primary); outline-offset: 3px; }
.admin-content-editor .preview-image { width: 100%; }
.admin-content-editor input[type="file"] { width: 100%; min-width: 0; font-size: .8rem; }
.admin-content-editor .admin-panel-header h2 { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0; }
.admin-content-editor .admin-panel-header p { margin: 8px 0 0; font-size: .85rem; color: var(--text-muted); line-height: 1.5; }
.structure-section-count { display: inline-flex; align-items: center; justify-content: center; min-width: 26px; height: 26px; border-radius: 8px; background: rgba(49,114,122,.08); color: var(--primary); font-size: .8rem; }
.admin-content-editor .structure-add-panel { margin-top: 18px; }
.structure-add-panel > .stacked-form { margin-top: 16px; padding: 20px; background: rgba(49,114,122,.04); border-radius: 12px; }
.admin-content-editor .sortable-item-label, .admin-content-editor .action-button-preview { min-width: 0; overflow-wrap: anywhere; white-space: normal; }
.admin-content-editor .sortable-actions { flex-shrink: 0; }
.admin-body .admin-content-editor .btn-icon, .admin-body .admin-content-list .btn-icon { min-width: 44px; min-height: 44px; }
.structure-list-search { max-width: 640px; margin-bottom: 18px; }
.structure-list-count { margin: 0 0 12px; font-size: .85rem; color: var(--text-muted); }
.admin-content-list .admin-table td:first-child { min-width: 200px; }
.admin-content-list .admin-table td:first-child a { display: inline-flex; align-items: center; min-height: 44px; }
@media (max-width: 900px) {
    .admin-content-editor .form-columns { grid-template-columns: minmax(0, 1fr); }
    .admin-content-editor .form-side { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
}
@media (max-width: 600px) {
    .admin-content-editor .form-side { display: block; }
    .admin-content-editor .admin-form fieldset { padding: 18px; margin-bottom: 18px; }
    .admin-content-editor .fieldset-head { margin: -18px -18px 16px; padding: 15px 18px; }
    .structure-editor-nav { gap: 2px 4px; }
    .structure-editor-nav a { font-size: .8rem; padding-inline: 8px; }
    .structure-add-panel > .stacked-form { padding: 14px; }
    .admin-content-editor .sortable-item summary { flex-wrap: wrap; }
    .admin-content-editor .sortable-actions { margin-left: auto; }
    .admin-content-list .admin-table td:first-child { min-width: 0; }
}
.admin-content-editor > .admin-page-header { margin-bottom: 18px; padding-bottom: 0; border-bottom: 0; }
@media (max-width: 600px) {
    .structure-editor-nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .admin-content-editor [id^="structure-"], .admin-content-editor [id^="parcours-"], .admin-content-editor [id^="section-"] { scroll-margin-top: 80px; }
}
@media (max-width: 600px) {
    .admin-content-editor .sortable-item-block > details > summary {
        display: grid;
        grid-template-columns: 16px 16px minmax(0, 1fr);
        gap: 10px;
        align-items: start;
    }
    .admin-content-editor .sortable-item-block > details > summary > .sortable-actions {
        grid-column: 1 / -1;
        justify-self: end;
    }
    .admin-content-editor .sortable-item-block > details > summary > .action-button-preview {
        grid-column: 2 / -1;
        justify-self: start;
    }
}

/* Le bouton suit l’édition, puis s’arrête avant le pied de page. */
.admin-save-dock {
    position: sticky;
    bottom: calc(24px + env(safe-area-inset-bottom, 0px));
    z-index: 90;
    display: flex;
    justify-content: center;
    margin-top: 24px;
    pointer-events: none;
}
.admin-body .admin-save-dock .admin-floating-save {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    min-width: 56px;
    min-height: 56px;
    margin: 0;
    padding: 0;
    border-radius: 50%;
    font-size: 0;
    box-shadow: 0 5px 20px rgba(18,52,58,.25);
    pointer-events: auto;
}
.admin-floating-save .icon { width: 22px; height: 22px; }
@media print {
    .admin-save-dock { display: none !important; }
}

/* Les mêmes surfaces, titres et ajouts sur les deux éditeurs. */
.admin-content-editor .admin-panel {
    padding: 24px;
    margin-top: 24px;
    border: 1px solid rgba(49,114,122,.14);
    background: rgba(255,255,255,.66);
}
.admin-content-editor .admin-panel > h2,
.admin-content-editor .admin-panel-header h2 {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding-bottom: 0;
    font-size: 1.05rem;
    color: var(--primary-dark);
}
.admin-content-editor .admin-panel > h2 { margin: 0 0 16px; }
.admin-content-editor .admin-panel > p.muted {
    margin: 0 0 18px;
    font-size: .85rem;
    line-height: 1.5;
    color: var(--text-muted);
}
.admin-content-editor .step-add-toggle > .stacked-form {
    margin-top: 16px;
    padding: 20px;
    border-top: 0;
    background: rgba(49,114,122,.04);
    border-radius: 12px;
}
.admin-content-editor .admin-columns { gap: 24px; }
.admin-content-editor .admin-columns > .admin-panel { margin-top: 0; }
.admin-content-editor .sortable-item-block > details > summary { min-height: 56px; }
@media (max-width: 600px) {
    .admin-content-editor .admin-panel { padding: 18px; margin-top: 18px; }
    .admin-content-editor .step-add-toggle > .stacked-form { padding: 14px; }
}
@media (max-width: 600px) {
    .admin-content-editor #section-steps .step-summary-title,
    .admin-content-editor #section-steps .step-document-count {
        grid-column: 2 / -1;
        min-width: 0;
        overflow-wrap: anywhere;
    }
}
.admin-body .rich-block-tool { width: auto; min-width: 44px; min-height: 40px; padding: 6px 10px; font-size: .8rem; }
.rich-text-content { overflow-x: auto; }
.rich-text-content table { table-layout: auto; }
.rich-text-content td, .rich-text-content th { min-width: 140px; }
.rich-text-content img { cursor: default; }
.rich-editor-dialog { position: fixed; inset: 0; margin: auto; max-height: calc(100dvh - 32px); overflow-y: auto; width: min(460px, calc(100vw - 32px)); border: 1px solid #b9d1d4; border-radius: 16px; padding: 24px; background: #f7fcfc; color: var(--text); box-shadow: 0 16px 60px rgba(18,52,58,.25); }
.rich-editor-dialog::backdrop { background: rgba(18,52,58,.4); }
.rich-editor-dialog h2 { font-size: 1.2rem; margin: 0 0 20px; }
.rich-editor-dialog label { display: block; margin: 16px 0; font-weight: 600; }
.rich-editor-dialog input { margin-top: 8px; }

/* Menu compact des tableaux, commun aux descriptions et étapes. */
.rich-table-menu { position: relative; }
.rich-table-menu > summary { cursor: pointer; list-style: none; }
.rich-table-menu > summary::-webkit-details-marker { display: none; }
.rich-table-menu > summary::after { content: "▾"; margin-left: 6px; }
.rich-text-editor:has(.rich-table-menu[open]) { overflow: visible; position: relative; z-index: 5; }
.rich-table-menu[open] > summary { width: fit-content; }
.rich-table-options { position: absolute; top: 100%; left: 0; z-index: 10; width: min(260px, calc(100vw - 32px)); display: flex; flex-direction: column; gap: 2px; padding: 6px; border: 1px solid var(--glass-edge); border-radius: 10px; background: #f7fcfc; box-shadow: 0 8px 24px rgba(18,52,58,.16); }
.rich-table-options .rich-block-tool { justify-content: flex-start; width: 100%; text-align: left; }
.rich-table-options .rich-block-tool { min-height: 44px; }
.rich-editor-dialog .rich-dialog-checkbox { display: flex; align-items: center; gap: 12px; }
.rich-editor-dialog .rich-dialog-checkbox input { width: 20px; height: 20px; margin: 0; order: -1; }
.drag-handle { user-select: none; -webkit-user-select: none; }

/* Barre limitée à son éditeur, sous l’en-tête de l’administration. */
.admin-form fieldset:has(.rich-text-editor) { overflow: visible; }
.rich-text-toolbar {
    position: sticky;
    top: var(--rich-toolbar-top, 8px);
    z-index: 20;
    align-items: center;
    background: #f2f8f8;
    border-radius: var(--r-sm) var(--r-sm) 0 0;
    box-shadow: 0 2px 5px rgba(18,52,58,.08);
}
.rich-text-toolbar .rich-table-menu {
    flex: 0 0 auto;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 0;
}
.rich-text-toolbar .rich-table-menu > summary {
    display: inline-flex;
    width: auto;
    min-height: 40px;
    padding: 0 var(--s2);
    gap: 4px;
}
