/* datatable.css — the Filament 5 "skin" for the shared SSR datatable widget.
 *
 * Plan of record: _plan/2026-06-15-datatable-filament-parity.md (Phase 1, §4, S-8).
 * Visual target: _doc/datatable/ screenshots (Filament 5 Tables overview).
 *
 * SCOPING — the whole sheet is scoped under `.datatable-skin`, a wrapper class
 * the handler opts INTO (dt_region($html, $id, true) → adds it to #dt-region).
 * A page that does NOT opt in renders byte-identical to before, even though this
 * file is loaded globally: every rule below needs the `.datatable-skin` ancestor
 * to match, so the 5 un-converted live pages are untouched. The `#content`
 * prefix (+ the extra `.datatable-skin` class) gives these rules higher
 * specificity than cms.css's `#content .foo` table/btn/tag rules, so they win;
 * loaded AFTER cms.css, unlayered, so equal-specificity ties also go to us.
 *
 * THEME — the shell drives light/dark via a class on <html> (html.dark /
 * html.light, set by the FOUC script in shell.html). The Filament look is a
 * FIXED amber-on-slate palette that stays inside the table and never repaints
 * the blue OKLCH shell: dark slate is the base (the screenshots are dark);
 * `html.light .datatable-skin` flips the few tokens that differ. The shell's
 * accent scheme (Ocean/Crimson/…) does NOT bleed in — these tokens override it
 * locally. Tailwind values per the plan §4 (amber-500 / slate-900 / emerald /
 * rose / sky / orange), marked there for later demo-tuning (D-2).
 *
 * CLASS VOCABULARY — this ships the FULL canonical class set now (S-8),
 * including the modal / filter-popover / column-toggle / drag-handle / row-tint
 * classes that Phases 2–5 will emit, so those phases are pure handler work
 * against a ready skin and never re-invent a class name. Phase 1 emits the
 * header / toolbar / table / badge / ring / action / footer / pager subset.
 */

/* ───────────────────────────── tokens ───────────────────────────── */
#content .datatable-skin{
    --dt-accent:#f59e0b;          /* amber-500  — primary, active page, edit, "New" pill */
    --dt-accent-hover:#d97706;    /* amber-600 */
    --dt-accent-fg:#451a03;       /* amber-950  — dark text ON the amber pill */
    --dt-card:#0f172a;            /* slate-900  — card / panel bg */
    --dt-page:#020617;            /* slate-950  — page bg behind the card */
    --dt-strip:#1e293b;           /* slate-800  — header / toolbar / thead strip */
    --dt-row-hover:rgba(255,255,255,.03);
    --dt-border:rgba(255,255,255,.08);
    --dt-text:#f8fafc;            /* slate-50 */
    --dt-muted:#94a3b8;           /* slate-400 */
    --dt-info:#0ea5e9;            /* sky-500 */
    --dt-success:#10b981;         /* emerald-500 */
    --dt-warning:#f97316;         /* orange-500 */
    --dt-danger:#f43f5e;          /* rose-500 */
    --dt-r-lg:.75rem; --dt-r-md:.5rem; --dt-r-sm:.375rem;
}
/* .datatable-skin is the TOKEN SCOPE only (it rides the persistent #dt-region so
   the skin survives partial swaps). The card chrome lives on .dt-card below, which
   dt_render wraps around ONLY the datatable — so a handler can append other content
   to the region (inline edit forms, a gallery's image tiles) and it keeps its own
   styling, outside the card. */
html.light #content .datatable-skin{
    --dt-accent:#d97706;          /* amber-600 reads better on white */
    --dt-accent-hover:#b45309;    /* amber-700 */
    --dt-accent-fg:#ffffff;
    --dt-card:#ffffff;
    --dt-page:#f8fafc;
    --dt-strip:#f1f5f9;           /* slate-100 */
    --dt-row-hover:rgba(2,6,23,.03);
    --dt-border:rgba(2,6,23,.09);
    --dt-text:#0f172a;
    --dt-muted:#64748b;           /* slate-500 */
    --dt-info:#0284c7;
    --dt-success:#059669;
    --dt-warning:#ea580c;
    --dt-danger:#e11d48;
}

/* The datatable's Filament card — dt_render (skin path) wraps its whole output in
   .dt-card, so the card chrome is scoped to the TABLE, never the whole region. */
#content .datatable-skin .dt-card{
    background:var(--dt-card);
    color:var(--dt-text);
    border:1px solid var(--dt-border);
    border-radius:var(--dt-r-lg);
    overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.35),0 8px 28px -12px rgba(0,0,0,.45);
}
html.light #content .datatable-skin .dt-card{
    box-shadow:0 1px 2px rgba(2,6,23,.06),0 8px 24px -16px rgba(2,6,23,.18);
}
/* Neutralise ONLY the inner table's .card scroll wrapper (never other .card
   content a handler appends to the region) so the table sits flush in .dt-card. */
#content .datatable-skin .datatable-scroll-wrapper{
    background:none;border:0;border-radius:0;box-shadow:none;
    -webkit-backdrop-filter:none;backdrop-filter:none;padding:0;overflow-x:auto;
}
#content .datatable-skin a{color:var(--dt-accent);text-decoration:none}
#content .datatable-skin a:hover{color:var(--dt-accent-hover);text-decoration:none}
#content .datatable-skin svg{width:1.05em;height:1.05em;vertical-align:-.15em;flex:none}

/* ───────────────────────────── header band ───────────────────────────── */
#content .datatable-skin .dt-header{
    display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;
    padding:1.15rem 1.35rem;
}
#content .datatable-skin .dt-title{
    font-size:1.4rem;line-height:1.2;font-weight:700;letter-spacing:-.01em;
    color:var(--dt-text);margin:0;
}
/* .dt-count — a forward-declared hook (S-8). Filament's header (the visual
   target) shows NO count chip; the row count lives in the footer range label
   ("Showing X to Y of Z results"). dt_header_band deliberately omits it; a
   handler that wants an inline count can emit <span class="dt-count">. */
#content .datatable-skin .dt-count{
    font-size:.8rem;font-weight:600;color:var(--dt-muted);
    margin-inline-start:.5rem;vertical-align:.1em;
}
#content .datatable-skin .dt-subtitle{
    margin:.3rem 0 0;font-size:.9rem;color:var(--dt-muted);
}
#content .datatable-skin .dt-header-actions{display:flex;gap:.5rem;align-items:center;flex:none}

/* ───────────────────────────── buttons ───────────────────────────── */
#content .datatable-skin .dt-btn{
    display:inline-flex;align-items:center;gap:.4rem;
    font:inherit;font-size:.86rem;font-weight:600;line-height:1;
    padding:.5rem .85rem;border-radius:var(--dt-r-md);
    border:1px solid transparent;cursor:pointer;white-space:nowrap;
    transition:background .14s ease,border-color .14s ease,color .14s ease,filter .14s ease;
}
#content .datatable-skin .dt-btn-primary{background:var(--dt-accent);color:var(--dt-accent-fg);border-color:var(--dt-accent)}
#content .datatable-skin .dt-btn-primary:hover{background:var(--dt-accent-hover);color:var(--dt-accent-fg);filter:brightness(1.02)}
#content .datatable-skin .dt-btn-ghost{background:transparent;color:var(--dt-text);border-color:var(--dt-border)}
#content .datatable-skin .dt-btn-ghost:hover{background:var(--dt-strip);color:var(--dt-text)}
#content .datatable-skin .dt-btn-danger{background:var(--dt-danger);color:#fff;border-color:var(--dt-danger)}
#content .datatable-skin .dt-btn-danger:hover{filter:brightness(1.06);color:#fff}

/* ───────────────────────────── toolbar band ───────────────────────────── */
/* The widget's search form (class .datatable-toolbar) becomes the toolbar band:
   a strip with the search box + icon buttons (filter funnel / column toggle)
   right-aligned. .dt-toolbar is the skin-emitted wrapper; .datatable-toolbar is
   the historic form class — both styled so either renders correctly. */
#content .datatable-skin .dt-toolbar,
#content .datatable-skin form.datatable-toolbar{
    display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
    margin:0;padding:.7rem 1.35rem;
    background:var(--dt-strip);border-top:1px solid var(--dt-border);
}
#content .datatable-skin .dt-toolbar-left{display:flex;align-items:center;gap:.5rem}
#content .datatable-skin .dt-toolbar-right{display:flex;align-items:center;gap:.5rem;margin-inline-start:auto}

/* search box: a pill with a leading magnifier. Under the skin the widget wraps
   the <input> in .dt-search-wrap; on the historic form the bare input is styled
   to match so a non-wrapped search still looks right. */
#content .datatable-skin .dt-search-wrap{position:relative;display:inline-flex;align-items:center;min-width:13rem}
#content .datatable-skin .dt-search-wrap svg{position:absolute;left:.6rem;color:var(--dt-muted);pointer-events:none}
#content .datatable-skin .dt-search-wrap input,
#content .datatable-skin form.datatable-toolbar input[type=search],
#content .datatable-skin form.datatable-toolbar input:not([type]){
    width:100%;background:var(--dt-card);color:var(--dt-text);
    border:1px solid var(--dt-border);border-radius:var(--dt-r-md);
    padding:.5rem .7rem .5rem 2rem;font:inherit;font-size:.88rem;
}
#content .datatable-skin .dt-search-wrap input:focus,
#content .datatable-skin form.datatable-toolbar input:focus{
    outline:none;border-color:var(--dt-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--dt-accent) 22%,transparent);
}
/* search submit + clear sit quietly next to the box */
#content .datatable-skin form.datatable-toolbar .btn{font-size:.84rem}

/* icon buttons (funnel / column-toggle); count badge on the funnel */
#content .datatable-skin .dt-iconbtn{
    position:relative;display:inline-flex;align-items:center;justify-content:center;
    width:2.1rem;height:2.1rem;border-radius:var(--dt-r-md);
    background:transparent;border:1px solid transparent;color:var(--dt-muted);cursor:pointer;
}
#content .datatable-skin .dt-iconbtn:hover{background:var(--dt-card);color:var(--dt-text);border-color:var(--dt-border)}
#content .datatable-skin .dt-badge-count{
    position:absolute;top:-.3rem;right:-.3rem;min-width:1.05rem;height:1.05rem;
    padding:0 .28rem;border-radius:999px;background:var(--dt-accent);color:var(--dt-accent-fg);
    font-size:.66rem;font-weight:700;line-height:1.05rem;text-align:center;
}

/* ───────────────────────────── table ───────────────────────────── */
#content .datatable-skin table.datatable{width:100%;border-collapse:collapse;font-size:.9rem}
#content .datatable-skin .datatable thead tr{background:var(--dt-strip)}
#content .datatable-skin .datatable th{
    text-align:left;padding:.7rem .9rem;color:var(--dt-muted);
    font-size:.78rem;font-weight:700;text-transform:none;letter-spacing:0;
    border-top:1px solid var(--dt-border);border-bottom:1px solid var(--dt-border);
    white-space:nowrap;opacity:1;
}
#content .datatable-skin .datatable th.sortable-th{padding:0}
#content .datatable-skin .datatable th.sortable-th a{
    display:inline-flex;align-items:center;gap:.3rem;color:var(--dt-muted);
    padding:.7rem .9rem;font-weight:700;
}
#content .datatable-skin .datatable th.sortable-th a:hover{color:var(--dt-text)}
#content .datatable-skin .datatable th[aria-sort] a{color:var(--dt-text)}
#content .datatable-skin .datatable .dt-caret{color:var(--dt-accent);font-size:.9em}
#content .datatable-skin .datatable td{
    padding:.72rem .9rem;border-bottom:1px solid var(--dt-border);color:var(--dt-text);vertical-align:middle;
}
#content .datatable-skin .datatable tbody tr{transition:background .12s ease}
#content .datatable-skin .datatable tbody tr:hover{background:var(--dt-row-hover)}
#content .datatable-skin .datatable tbody tr:last-child td{border-bottom:0}
#content .datatable-skin .datatable td .muted,
#content .datatable-skin .datatable .dt-desc{color:var(--dt-muted)}
#content .datatable-skin .datatable .dt-desc{display:block;font-size:.8rem;margin-top:.1rem}
#content .datatable-skin .datatable td strong{font-weight:600;color:var(--dt-text)}
/* alignment helpers — forward-declared hooks (S-8) for a future `align` col opt
   (deferred; the screenshots are all left-aligned). Emit on <td>/<th> when it lands. */
#content .datatable-skin .dt-cell-center{text-align:center}
#content .datatable-skin .dt-cell-right{text-align:right}

/* selection checkbox column */
#content .datatable-skin .dt-bulk-cell{width:1.5rem;text-align:center}
#content .datatable-skin .dt-bulk-cell input{width:auto;accent-color:var(--dt-accent)}

/* ───────────────────────────── badge pills ───────────────────────────── */
#content .datatable-skin .dt-badge{
    display:inline-flex;align-items:center;gap:.3rem;
    padding:.16rem .55rem;border-radius:999px;
    font-size:.74rem;font-weight:600;line-height:1.4;white-space:nowrap;
    border:1px solid transparent;
}
#content .datatable-skin .dt-badge svg{width:.85em;height:.85em}
#content .datatable-skin .dt-badge-primary{background:color-mix(in srgb,var(--dt-accent) 18%,transparent);color:var(--dt-accent);border-color:color-mix(in srgb,var(--dt-accent) 35%,transparent)}
#content .datatable-skin .dt-badge-success{background:color-mix(in srgb,var(--dt-success) 16%,transparent);color:var(--dt-success);border-color:color-mix(in srgb,var(--dt-success) 32%,transparent)}
#content .datatable-skin .dt-badge-warning{background:color-mix(in srgb,var(--dt-warning) 18%,transparent);color:var(--dt-warning);border-color:color-mix(in srgb,var(--dt-warning) 34%,transparent)}
#content .datatable-skin .dt-badge-danger{background:color-mix(in srgb,var(--dt-danger) 16%,transparent);color:var(--dt-danger);border-color:color-mix(in srgb,var(--dt-danger) 32%,transparent)}
#content .datatable-skin .dt-badge-info{background:color-mix(in srgb,var(--dt-info) 16%,transparent);color:var(--dt-info);border-color:color-mix(in srgb,var(--dt-info) 32%,transparent)}
#content .datatable-skin .dt-badge-gray{background:color-mix(in srgb,var(--dt-muted) 16%,transparent);color:var(--dt-muted);border-color:color-mix(in srgb,var(--dt-muted) 30%,transparent)}

/* ───────────────────────────── ring + boolean icons ───────────────────────────── */
#content .datatable-skin .dt-icon-ring{
    display:inline-flex;align-items:center;justify-content:center;
    width:1.5rem;height:1.5rem;border-radius:999px;border:1.5px solid currentColor;
}
#content .datatable-skin .dt-icon-ring svg{width:.95em;height:.95em}
#content .datatable-skin .dt-ring-yes{color:var(--dt-success)}
#content .datatable-skin .dt-ring-no{color:var(--dt-danger)}
/* the historic ✓/✗ glyph cell, re-tinted under the skin */
#content .datatable-skin .dt-bool-yes{color:var(--dt-success)}
#content .datatable-skin .dt-bool-no{color:var(--dt-danger);opacity:1}

/* ───────────────────────────── row actions ───────────────────────────── */
#content .datatable-skin .datatable-row-actions{text-align:right;white-space:nowrap}
#content .datatable-skin .dt-action,
#content .datatable-skin .datatable-row-actions a{
    display:inline-flex;align-items:center;gap:.3rem;
    font-size:.84rem;font-weight:600;color:var(--dt-accent);
    padding:.2rem .35rem;border-radius:var(--dt-r-sm);
}
#content .datatable-skin .dt-action:hover,
#content .datatable-skin .datatable-row-actions a:hover{background:color-mix(in srgb,var(--dt-accent) 12%,transparent);color:var(--dt-accent-hover)}
#content .datatable-skin .dt-action-danger{color:var(--dt-danger)}
#content .datatable-skin .dt-action-danger:hover{background:color-mix(in srgb,var(--dt-danger) 12%,transparent);color:var(--dt-danger)}
#content .datatable-skin .datatable-row-actions a+a,
#content .datatable-skin .dt-action+.dt-action{margin-inline-start:.35rem}

/* ───────────────────────────── bulk bar ───────────────────────────── */
#content .datatable-skin .dt-bulk-bar{
    display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
    padding:.6rem 1.35rem;background:var(--dt-strip);border-top:1px solid var(--dt-border);
}
#content .datatable-skin .dt-bulk-bar .btn{
    display:inline-flex;align-items:center;gap:.35rem;
    background:transparent;border:1px solid var(--dt-border);color:var(--dt-text);
    font-size:.82rem;font-weight:600;padding:.4rem .7rem;border-radius:var(--dt-r-md);
}
#content .datatable-skin .dt-bulk-bar .btn.danger{color:var(--dt-danger);border-color:color-mix(in srgb,var(--dt-danger) 40%,transparent)}
#content .datatable-skin .dt-bulk-bar .btn.danger:hover{background:color-mix(in srgb,var(--dt-danger) 12%,transparent)}
#content .datatable-skin .dt-bulk-act[disabled]{opacity:.45;cursor:default;filter:grayscale(.4)}
/* select-all-across-pages prompt (Phase 3, S-5) */
#content .datatable-skin .dt-sel-all-prompt{color:var(--dt-muted)}
#content .datatable-skin .dt-sel-all-link{background:none;border:0;padding:0;color:var(--dt-accent);font-weight:600;font-size:inherit;cursor:pointer;text-decoration:underline}
#content .datatable-skin .dt-sel-all-link:hover{color:var(--dt-accent-hover)}
#content .datatable-skin .dt-bulk-count{color:var(--dt-muted);font-size:.82rem}

/* ───────────────────────────── row tints (row_class → dt-row-*) ───────────────────────────── */
#content .datatable-skin .datatable tr.dt-row-green td{box-shadow:inset 3px 0 0 var(--dt-success);background:color-mix(in srgb,var(--dt-success) 7%,transparent)}
#content .datatable-skin .datatable tr.dt-row-amber td{box-shadow:inset 3px 0 0 var(--dt-warning);background:color-mix(in srgb,var(--dt-warning) 7%,transparent)}
#content .datatable-skin .datatable tr.dt-row-red td{box-shadow:inset 3px 0 0 var(--dt-danger);background:color-mix(in srgb,var(--dt-danger) 7%,transparent)}

/* ───────────────────────────── footer (range / per-page / pager) ───────────────────────────── */
#content .datatable-skin .dt-footer{
    display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
    padding:.8rem 1.35rem;border-top:1px solid var(--dt-border);
}
#content .datatable-skin .dt-results-range{color:var(--dt-muted);font-size:.82rem;margin-inline-end:auto}
#content .datatable-skin .dt-perpage{display:flex;align-items:center;gap:.45rem;margin:0}
#content .datatable-skin .dt-perpage-label{color:var(--dt-muted);font-size:.82rem;font-weight:500;margin:0}
#content .datatable-skin .dt-perpage-select{
    width:auto;background:var(--dt-strip);color:var(--dt-text);
    border:1px solid var(--dt-border);border-radius:var(--dt-r-md);
    padding:.35rem 1.8rem .35rem .6rem;font:inherit;font-size:.82rem;cursor:pointer;
}
#content .datatable-skin .dt-perpage-go{
    background:var(--dt-strip);color:var(--dt-text);border:1px solid var(--dt-border);
    border-radius:var(--dt-r-md);padding:.35rem .6rem;font:inherit;font-size:.8rem;cursor:pointer;
}

/* pager: numbered amber boxes + chevron prev/next + « » extreme links */
#content .datatable-skin .datatable-pagination-bar{
    display:flex;align-items:center;gap:.3rem;margin:0;padding:0;justify-content:flex-end;
}
#content .datatable-skin .datatable-page-list{display:flex;align-items:center;gap:.3rem;list-style:none;padding:0;margin:0}
#content .datatable-skin .datatable-page-list .btn,
#content .datatable-skin .page-number-btn,
#content .datatable-skin .dt-page-extreme{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:2.1rem;height:2.1rem;padding:0 .55rem;
    background:var(--dt-strip);border:1px solid var(--dt-border);border-radius:var(--dt-r-md);
    color:var(--dt-text);font-size:.84rem;font-weight:600;opacity:1;
}
#content .datatable-skin .datatable-page-list .btn:hover,
#content .datatable-skin .page-number-btn:hover,
#content .datatable-skin .dt-page-extreme:hover{background:var(--dt-card);border-color:var(--dt-accent);color:var(--dt-text)}
#content .datatable-skin .page-number-active{
    background:var(--dt-accent);border-color:var(--dt-accent);color:var(--dt-accent-fg);
    pointer-events:none;font-weight:700;
}
#content .datatable-skin .dt-ellipsis{padding:0 .15rem;color:var(--dt-muted);align-self:center}
#content .datatable-skin .datatable-page-info{display:none}  /* "Page N of M" → the range label carries the count under the skin */

/* historic standalone pager/size-selector, kept usable if a skin page still
   emits them (e.g. partial paths): re-tint so they never show shell-blue */
#content .datatable-skin .datatable-pagesize a{color:var(--dt-text)}
#content .datatable-skin .dt-pagesize-active{background:var(--dt-accent);color:var(--dt-accent-fg)}

/* ───────────────────────────── empty state ───────────────────────────── */
#content .datatable-skin .datatable-empty-state{
    margin:0;padding:2.5rem 1.35rem;text-align:center;background:none;border:0;border-radius:0;
}
#content .datatable-skin .datatable-empty-state p{color:var(--dt-muted)}

/* ═══════════════════════ Phase 2–5 classes (shipped now, S-8) ═══════════════════════ */

/* filter funnel popover — native <details>; inline JS adds click-away/float (Phase 2) */
#content .datatable-skin .dt-filter-pop{position:relative;display:inline-block}
#content .datatable-skin .dt-filter-pop>summary{list-style:none;cursor:pointer}
#content .datatable-skin .dt-filter-pop>summary::-webkit-details-marker{display:none}
#content .datatable-skin .dt-filter-panel{
    position:absolute;right:0;top:calc(100% + .4rem);z-index:50;min-width:16rem;
    background:var(--dt-card);border:1px solid var(--dt-border);border-radius:var(--dt-r-lg);
    box-shadow:0 12px 32px -8px rgba(0,0,0,.55);padding:1rem;
}
#content .datatable-skin .dt-filter-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}
#content .datatable-skin .dt-filter-head strong{font-size:.92rem;color:var(--dt-text)}
#content .datatable-skin .dt-filter-reset{color:var(--dt-danger);font-size:.82rem;font-weight:600}
#content .datatable-skin .dt-filter-field{margin:.6rem 0}
#content .datatable-skin .dt-filter-field label{display:block;font-size:.8rem;color:var(--dt-muted);margin-bottom:.25rem;font-weight:600}
#content .datatable-skin .dt-filter-apply{margin-top:.4rem}
#content .datatable-skin .dt-filter-chip{
    display:inline-flex;align-items:center;gap:.3rem;
    background:color-mix(in srgb,var(--dt-accent) 14%,transparent);color:var(--dt-accent);
    border:1px solid color-mix(in srgb,var(--dt-accent) 30%,transparent);
    border-radius:999px;padding:.1rem .5rem;font-size:.76rem;font-weight:600;
}
#content .datatable-skin .dt-filter-chip:hover{background:color-mix(in srgb,var(--dt-accent) 22%,transparent)}
/* the search form is a flex row so it lays out beside the funnel in the wrapper */
#content .datatable-skin .dt-search-form{display:flex;align-items:center;gap:.6rem;margin:0}
/* active-filter chips strip (below the toolbar) */
#content .datatable-skin .dt-filter-chips{
    display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;
    padding:.6rem 1.35rem;background:var(--dt-strip);border-top:1px solid var(--dt-border);
}
/* the funnel panel's controls */
#content .datatable-skin .dt-filter-field select,
#content .datatable-skin .dt-filter-field input{
    width:100%;padding:.4rem .55rem;border-radius:var(--dt-r-md);
    background:var(--dt-page);border:1px solid var(--dt-border);color:var(--dt-text);font-size:.85rem;
}
#content .datatable-skin .dt-filter-field select:focus,
#content .datatable-skin .dt-filter-field input:focus{outline:2px solid var(--dt-accent);outline-offset:-1px}
/* multiple-select filter: a checkbox group (JS joins to one comma value on submit) */
#content .datatable-skin .dt-filter-checks{display:flex;flex-direction:column;gap:.2rem;margin-top:.1rem}
#content .datatable-skin .dt-check{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--dt-text);font-weight:500;cursor:pointer}
/* reset the generic .dt-filter-field input styling for the checkboxes */
#content .datatable-skin .dt-check input{width:auto;flex:0 0 auto;padding:0;border:0;background:none;accent-color:var(--dt-accent)}
/* daterange: two native date inputs */
#content .datatable-skin .dt-daterange{display:flex;align-items:center;gap:.4rem}
#content .datatable-skin .dt-daterange input{flex:1;min-width:0}
#content .datatable-skin .dt-daterange-sep{color:var(--dt-muted);flex:0 0 auto}

/* column-visibility toggle popover (Phase 2) */
#content .datatable-skin .dt-col-toggle{position:relative;display:inline-block}
#content .datatable-skin .dt-col-toggle>summary{list-style:none;cursor:pointer}
#content .datatable-skin .dt-col-toggle>summary::-webkit-details-marker{display:none}
#content .datatable-skin .dt-col-panel{
    position:absolute;right:0;top:calc(100% + .4rem);z-index:50;min-width:12rem;
    background:var(--dt-card);border:1px solid var(--dt-border);border-radius:var(--dt-r-lg);
    box-shadow:0 12px 32px -8px rgba(0,0,0,.55);padding:.6rem;
}
#content .datatable-skin .dt-col-panel label{display:flex;align-items:center;gap:.5rem;padding:.3rem .35rem;font-size:.85rem;color:var(--dt-text);border-radius:var(--dt-r-sm)}
#content .datatable-skin .dt-col-panel label:hover{background:var(--dt-strip)}
/* row-action "⋮" dropdown (Phase 3) — a <details> menu of action links/buttons */
#content .datatable-skin .dt-row-menu{position:relative;display:inline-block}
#content .datatable-skin .dt-row-menu>summary{list-style:none;cursor:pointer}
#content .datatable-skin .dt-row-menu>summary::-webkit-details-marker{display:none}
#content .datatable-skin .dt-row-menu-panel{
    position:absolute;right:0;top:calc(100% + .3rem);z-index:40;min-width:9rem;
    background:var(--dt-card);border:1px solid var(--dt-border);border-radius:var(--dt-r-md);
    box-shadow:0 12px 32px -8px rgba(0,0,0,.55);padding:.35rem;display:flex;flex-direction:column;gap:.05rem;
}
#content .datatable-skin .dt-row-menu-panel>.dt-action,
#content .datatable-skin .dt-row-menu-panel>.dt-btn{justify-content:flex-start;width:100%}
/* column manager rows are toggle LINKS (Lane A, no-JS-correct) */
#content .datatable-skin .dt-col-item{display:flex;align-items:center;gap:.5rem;padding:.3rem .4rem;font-size:.85rem;color:var(--dt-muted);border-radius:var(--dt-r-sm);text-decoration:none;white-space:nowrap}
#content .datatable-skin .dt-col-item:hover{background:var(--dt-strip)}
#content .datatable-skin .dt-col-item.dt-col-on{color:var(--dt-text)}
#content .datatable-skin .dt-col-item svg{color:var(--dt-accent)}
#content .datatable-skin .dt-col-item .dt-col-box{width:1em;height:1em;border:1px solid var(--dt-border);border-radius:var(--dt-r-sm);flex:none}

/* native <dialog> confirm modal (Phase 3) — S-6 canonical: .dt-modal + ::backdrop */
#content .datatable-skin .dt-modal,
.datatable-skin .dt-modal{
    border:1px solid var(--dt-border,rgba(255,255,255,.08));border-radius:var(--dt-r-lg,.75rem);
    background:var(--dt-card,#0f172a);color:var(--dt-text,#f8fafc);
    padding:1.5rem;max-width:24rem;width:calc(100% - 2rem);
    box-shadow:0 24px 60px -12px rgba(0,0,0,.6);
}
.datatable-skin .dt-modal::backdrop{background:rgba(2,6,23,.6)}
.datatable-skin .dt-modal-icon{
    display:flex;align-items:center;justify-content:center;width:3rem;height:3rem;margin:0 auto .8rem;
    border-radius:999px;background:color-mix(in srgb,var(--dt-danger,#f43f5e) 18%,transparent);color:var(--dt-danger,#f43f5e);
}
.datatable-skin .dt-modal-title{text-align:center;font-size:1.05rem;font-weight:700;margin:0 0 .35rem}
.datatable-skin .dt-modal-body{text-align:center;color:var(--dt-muted,#94a3b8);font-size:.9rem;margin:0 0 1.1rem}
.datatable-skin .dt-modal-actions{display:flex;gap:.6rem;justify-content:center}

/* column alignment (deferred Phase-1 `align` opt) — works skin or unskinned */
#content .datatable .dt-align-left{text-align:left}
#content .datatable .dt-align-center{text-align:center}
#content .datatable .dt-align-right{text-align:right}

/* grouping (Phase 4b) — flat spanning group-header rows + the Group-by select */
#content .datatable-skin .datatable tr.dt-group-header td{
    background:var(--dt-strip);font-weight:600;color:var(--dt-text);
    padding:.5rem .9rem;border-top:1px solid var(--dt-border)
}
#content .datatable-skin .dt-group-label{
    color:var(--dt-muted);font-weight:500;text-transform:uppercase;
    font-size:.72rem;letter-spacing:.04em;margin-inline-end:.4rem
}
#content .datatable-skin .dt-groupby{display:inline-flex;align-items:center;gap:.4rem}

/* summary footer (Phase 4a) — <tfoot> aggregate row over the filtered dataset */
#content .datatable-skin .datatable tfoot tr.dt-summary-row{background:var(--dt-strip);border-top:2px solid var(--dt-border)}
#content .datatable-skin .datatable tfoot .dt-summary-cell{padding:.7rem .9rem;font-weight:600;color:var(--dt-text);font-variant-numeric:tabular-nums;white-space:nowrap}

/* drag-reorder handle (the handle class is reserved; Phase 5 ships move-links below) */
#content .datatable-skin .dt-drag-handle{color:var(--dt-muted);cursor:grab;display:inline-flex;align-items:center}
#content .datatable-skin .dt-drag-handle:active{cursor:grabbing}

/* reorder move-links (Phase 5) — ▲/▼ submit buttons in a narrow leading column */
#content .datatable-skin .dt-reorder-cell{width:1%;white-space:nowrap;text-align:center}
#content .datatable-skin .dt-reorder{display:inline-flex;flex-direction:column;gap:1px;line-height:1}
#content .datatable-skin .dt-move-btn{
    appearance:none;border:1px solid var(--dt-border);background:transparent;color:var(--dt-muted);
    cursor:pointer;font-size:.6rem;line-height:1;padding:.1rem .35rem;border-radius:var(--dt-r-sm,.25rem)
}
#content .datatable-skin .dt-move-btn:hover{color:var(--dt-accent);border-color:var(--dt-accent)}

/* ───────────────────────────── responsive + motion ───────────────────────────── */
@media (max-width:680px){
    #content .datatable-skin .dt-header{flex-direction:column;gap:.6rem}
    #content .datatable-skin .dt-footer{justify-content:center}
    #content .datatable-skin .dt-results-range{margin-inline-end:0;width:100%;text-align:center}
}
@media (prefers-reduced-motion:reduce){
    #content .datatable-skin .dt-btn,
    #content .datatable-skin .datatable tbody tr{transition:none}
}
