/* Shared domain components use the reference shell's light/dark color tokens. */
:root {
    --primary-color: var(--accent);
    --text-muted: var(--muted);
    --border-color: var(--line);
    --bg-secondary: var(--surface-soft);
}

.page-header,
.section-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    min-width: 0;
    margin-bottom: 20px;
}
.page-header > div,
.section-heading > div { min-width: 0; }
.page-header h1 { margin: 0; font-size: 25px; line-height: 1.4; letter-spacing: -.6px; }
.page-header p,
.section-heading p { margin: 6px 0 0; color: var(--muted); line-height: 1.7; }
.section-heading h2 { margin: 0; font-size: 18px; line-height: 1.5; }
.page-header > .btn,
.section-heading > .btn { flex-shrink: 0; }

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    box-sizing: border-box;
    min-height: 40px;
    padding: 9px 14px;
    border: 1px solid var(--action);
    border-radius: 8px;
    background: var(--action);
    color: var(--on-accent, #fff);
    font: inherit;
    font-size: 13px;
    font-weight: 650;
    line-height: 1.5;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: background-color .15s, border-color .15s;
}
.btn:hover,
.btn.btn-primary:hover { background: var(--action-hover); border-color: var(--action-hover); color: #fff; text-decoration: none; opacity: 1; }
.btn.btn-primary { background: var(--action); border-color: var(--action); color: #fff; }
.btn.btn-secondary { background: var(--surface-soft); color: var(--ink); border-color: var(--line); }
.btn.btn-secondary:hover { background: var(--accent-soft); color: var(--ink); border-color: var(--accent); }
.btn.btn-danger { background: #bd3941; color: #fff; border-color: #bd3941; }
.btn.btn-danger:hover { background: #a82e36; border-color: #a82e36; color: #fff; }
.btn.btn-sm { min-height: 34px; padding: 6px 10px; font-size: 12px; }
.btn:disabled,
.btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.btn:disabled:hover { background: var(--action); border-color: var(--action); }
.btn.btn-secondary:disabled:hover { background: var(--surface-soft); border-color: var(--line); }
.btn.btn-danger:disabled:hover { background: #bd3941; border-color: #bd3941; }

.platform-form { display: flex; flex-direction: column; gap: 20px; min-width: 0; margin: 0; }
.platform-form > p { margin: 0; }
.platform-form fieldset.form-field { min-width: 0; padding: 0; border: 0; }
.platform-form .required-indicator { color: var(--danger-ink); }
.platform-form .form-field,
.form-field { min-width: 0; margin: 0; }
.platform-form .form-field > label,
.platform-form .form-field > .field-label,
.form-field > label,
.form-field > .field-label { display: block; margin: 0 0 8px; color: var(--ink); font-size: 13px; font-weight: 650; line-height: 1.5; }
.form-field input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.form-field select,
.form-field textarea {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    min-height: 42px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--ink);
    font: inherit;
    font-size: 13px;
    line-height: 1.6;
    transition: border-color .15s;
}
.form-field textarea { min-height: 140px; resize: vertical; }
.form-field select[multiple] { min-height: 140px; }
.form-field input::placeholder,
.form-field textarea::placeholder { color: var(--muted); opacity: .85; }
.form-field input:disabled,
.form-field select:disabled,
.form-field textarea:disabled,
.form-field input[readonly] { background: var(--surface-soft); color: var(--muted); }
.form-field input:disabled,
.form-field select:disabled,
.form-field textarea:disabled { cursor: not-allowed; }
.form-field input[type="file"]::file-selector-button { margin-right: 12px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-soft); color: var(--ink); font: inherit; cursor: pointer; }
.form-field .help-text,
.form-field .field-help,
.platform-form .help-text { display: block; margin: 7px 0 0; color: var(--muted); font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
.form-field .help-text ul,
.form-field .field-help ul { margin: 6px 0 0; padding-left: 20px; }
.platform-form .errorlist,
.form-field .errorlist { margin: 8px 0 0; padding-left: 20px; color: var(--danger-ink); font-size: 12px; line-height: 1.65; }
.platform-form > .errorlist,
.platform-form .form-errors { margin: 0; padding: 12px 16px 12px 32px; border: 1px solid var(--danger-line); border-radius: 8px; background: var(--danger-bg); color: var(--danger-ink); }
.platform-form .form-errors { padding: 12px 16px; }
.platform-form .form-errors .errorlist { margin: 0; }
.form-field.has-error .checkbox-options label { border-color: var(--danger-ink); }
.form-field.has-error :is(input, select, textarea),
.form-field [aria-invalid="true"] { border-color: var(--danger-ink); }

.form-field input[type="checkbox"],
.form-field input[type="radio"],
.checkbox-options input[type="checkbox"],
.checkbox-options input[type="radio"] { flex: 0 0 auto; width: 16px; height: 16px; min-height: 0; margin: 0; padding: 0; accent-color: var(--action); cursor: pointer; }
.checkbox-field { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.platform-form .checkbox-field > label,
.platform-form .checkbox-field > .field-label,
.checkbox-field > label,
.checkbox-field > .field-label { display: inline-flex; align-items: center; gap: 10px; min-height: 36px; margin: 0; }
.checkbox-field > .help-text,
.checkbox-field > .field-help,
.checkbox-field > .errorlist,
.checkbox-field > .field-errors { flex-basis: 100%; margin-top: 0; }
.checkbox-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 8px; min-width: 0; }
.checkbox-options ul,
.checkbox-options > div[id] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 8px; grid-column: 1 / -1; margin: 0; padding: 0; list-style: none; }
.checkbox-options li,
.checkbox-options > div { min-width: 0; margin: 0; padding: 0; list-style: none; }
.checkbox-options label { display: flex; align-items: center; gap: 10px; min-height: 42px; box-sizing: border-box; padding: 9px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); color: var(--ink); font-size: 13px; line-height: 1.6; overflow-wrap: anywhere; cursor: pointer; }
.checkbox-options label:hover { border-color: var(--accent); }
.checkbox-options label:has(input:checked) { border-color: var(--accent); background: var(--accent-soft); }
.form-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding-top: 18px; margin-top: 2px; border-top: 1px solid var(--line); }
.form-actions > form { margin: 0; }

.table-wrap,
.table-responsive { max-width: 100%; min-width: 0; overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; overscroll-behavior-x: contain; }
.table-wrap table,
.table-responsive table { width: 100%; margin: 0; border-collapse: collapse; border-radius: 0; background: var(--surface); color: var(--ink); font-size: 13px; line-height: 1.6; }
.table-wrap :is(th, td),
.table-responsive :is(th, td) { padding: 12px 14px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.table-wrap th,
.table-responsive th { background: var(--surface-soft); color: var(--muted); font-size: 12px; font-weight: 650; white-space: nowrap; }
.table-wrap tbody tr:last-child td,
.table-responsive tbody tr:last-child td { border-bottom: 0; }
.table-wrap tbody tr:hover td,
.table-responsive tbody tr:hover td { background: var(--surface-soft); }
.table-wrap td > code,
.table-responsive td > code { overflow-wrap: anywhere; }
.row-actions { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.row-actions > form { margin: 0; }
.row-actions .btn { min-height: 34px; padding: 6px 10px; font-size: 12px; }
.row-actions > a:not(.btn) { padding: 6px 4px; font-weight: 600; }
.empty-state { padding: 36px 20px; text-align: center; color: var(--muted); line-height: 1.7; }
.empty-state h2,
.empty-state h3 { margin: 0 0 8px; color: var(--ink); }
.empty-state p { margin: 0; }
.empty-state .btn { margin-top: 16px; }
.table-wrap td.empty-state,
.table-responsive td.empty-state { padding: 28px 16px; text-align: center; }

.badge,
.status-badge { display: inline-flex; align-items: center; gap: 4px; padding: 4px 8px; border: 1px solid transparent; border-radius: 6px; background: var(--accent-soft); color: var(--accent); font-size: 11px; font-weight: 650; line-height: 1.5; white-space: nowrap; }
.badge-success,
.status-badge.is-success { background: var(--success-bg); color: var(--success-ink); }
.badge-warning,
.status-badge.is-warning { background: var(--warning-bg); color: var(--warning-ink); }
.badge-danger,
.status-badge.is-danger { background: var(--danger-bg); color: var(--danger-ink); }
.badge-neutral,
.status-badge.is-neutral { background: var(--surface-soft); color: var(--muted); border-color: var(--line); }

.settings-tabs,
.account-tabs {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    min-width: 0;
    margin: 0 0 20px;
    padding: 0 0 10px;
    border-bottom: 1px solid var(--line);
}
.settings-tabs a,
.account-tabs a { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; box-sizing: border-box; padding: 9px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); color: var(--ink); font-size: 13px; font-weight: 600; line-height: 1.5; text-decoration: none; }
.settings-tabs a:hover,
.account-tabs a:hover { background: var(--accent-soft); border-color: var(--accent); text-decoration: none; }
.settings-tabs a.active,
.settings-tabs a[aria-current="page"],
.account-tabs a.active,
.account-tabs a[aria-current="page"] { background: var(--action); border-color: var(--action); color: #fff; }

.btn:focus-visible,
.settings-tabs a:focus-visible,
.account-tabs a:focus-visible,
.row-actions a:focus-visible,
.platform-form :is(input, select, textarea, button):focus-visible,
.checkbox-options label:focus-within { outline: 3px solid var(--accent); outline-offset: 3px; }
.form-field :is(input, select, textarea):focus-visible { border-color: var(--accent); }

/* Published manual content remains independent from administrative tables. */
.manual-prose table { border-collapse: collapse; width: 100%; }
.manual-prose th,
.manual-prose td { border: 1px solid var(--line); padding: 9px; text-align: left; }
.manual-prose th { background: var(--surface-soft); }
.manual-prose img { max-width: 100%; height: auto; }
.manual-prose [id] { scroll-margin-top: 90px; }
.manual-prose li[data-type="taskItem"] { list-style: none; }
.manual-prose li[data-type="taskItem"]::before { content: '☐'; margin-right: 8px; color: var(--muted); }
.manual-prose li[data-checked="true"]::before { content: '☑'; color: var(--accent); }

@media (max-width: 700px) {
    .page-header,
    .section-heading { gap: 12px; align-items: stretch; }
    .page-header > div,
    .section-heading > div { flex-basis: 100%; }
    .page-header h1 { font-size: 22px; }
    .table-wrap :is(th, td),
    .table-responsive :is(th, td) { padding: 10px 12px; }
    .settings-tabs,
    .account-tabs { gap: 6px; }
    .settings-tabs a,
    .account-tabs a { flex: 1 1 auto; padding: 9px 11px; }
    .form-actions > .btn { min-height: 42px; }
    .manual-inline .btn { white-space: normal; }
}
@media (max-width: 420px) {
    .form-actions > .btn,
    .form-actions > form { flex: 1 1 auto; }
    .form-actions > form > .btn { width: 100%; }
    .checkbox-options,
    .checkbox-options ul,
    .checkbox-options > div[id] { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .btn,
    .form-field :is(input, select, textarea) { transition: none; }
}

.history-filter{display:flex;align-items:end;gap:14px;flex-wrap:wrap;margin-bottom:20px}.history-filter .form-field{flex:1 1 180px;margin:0}.manual-layout>*{min-width:0}.manual-reader>*{min-width:0}.manual-editor-layout>*{min-width:0}

/* Hierarchical menu management: mouse drag and an equivalent keyboard form. */
.menu-admin-page { min-width: 0; }
.menu-admin-page .section-header { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.menu-admin-page .section-title { min-width: 0; }
.menu-admin-page .section-title h1 { margin: 0; }
.menu-admin-page .section-subtitle { margin: 6px 0 0; color: var(--muted); font-size: 13px; line-height: 1.7; }
.menu-list-page .modern-table-wrap { max-height: none; min-width: 0; overflow-x: auto; }
.menu-list-page :is(.table-responsive, .table-wrap, .modern-table-wrap) table { min-width: 800px; }
.menu-list-page .menu-name-cell { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.menu-list-page .menu-depth-mark { flex-shrink: 0; color: var(--muted); font-size: 12px; font-weight: 700; }
.menu-list-page .mono-cell { color: var(--ink); font-family: ui-monospace, Consolas, monospace; font-size: 12px; }
.menu-list-page .menu-depth-0 { padding-inline-start: 0; }
.menu-list-page .menu-depth-1 { padding-inline-start: 20px; }
.menu-list-page .menu-depth-2 { padding-inline-start: 40px; }
.menu-drag-handle { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-soft); color: var(--muted); font-size: 20px; line-height: 1; cursor: grab; }
.menu-drag-handle:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.menu-drag-handle:active { cursor: grabbing; }
.menu-drag-handle:disabled { opacity: .5; cursor: not-allowed; }
.menu-drag-handle:focus-visible,
.menu-transfer-panel > summary:focus-visible,
.menu-action-link:focus-visible,
.menu-move-controls :is(input, select, button):focus-visible,
.menu-import-form :is(input, button):focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
.menu-list-page tr.menu-dragging { opacity: .45; }
.menu-list-page tr[data-drop="before"] > td { box-shadow: inset 0 3px var(--accent); }
.menu-list-page tr[data-drop="after"] > td { box-shadow: inset 0 -3px var(--accent); }
.menu-list-page tr[data-drop="inside"] > td,
.menu-list-page tr[data-drop="inside"]:hover > td { background: var(--accent-soft); }
.menu-list-page tr[data-drop="inside"] > td:first-child { box-shadow: inset 3px 0 var(--accent); }
.menu-list-page .menu-action-link { display: inline-flex; align-items: center; justify-content: center; min-height: 34px; box-sizing: border-box; padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); color: var(--ink); font-size: 12px; font-weight: 650; text-decoration: none; }
.menu-list-page .menu-action-link:hover { background: var(--accent-soft); border-color: var(--accent); text-decoration: none; }
.menu-list-page .status-chip,
.menu-list-page .group-chip { display: inline-flex; align-items: center; padding: 4px 8px; border-radius: 6px; font-size: 11px; font-weight: 650; line-height: 1.5; white-space: nowrap; }
.menu-list-page .status-chip.active { background: var(--success-bg); color: var(--success-ink); }
.menu-list-page .status-chip.inactive { background: var(--danger-bg); color: var(--danger-ink); }
.menu-list-page .group-chip { margin: 2px 4px 2px 0; background: var(--accent-soft); color: var(--accent); }
.menu-list-page .group-chip.all { background: var(--surface-soft); color: var(--muted); }
.menu-list-page .menu-empty { padding: 28px 16px; text-align: center; color: var(--muted); }
.menu-list-page td > small.muted { display: block; margin-top: 5px; font-size: 11px; line-height: 1.6; }
.menu-transfer-panel { margin-bottom: 20px; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.menu-transfer-panel > summary { width: fit-content; cursor: pointer; color: var(--ink); font-size: 13px; font-weight: 700; line-height: 1.6; }
.menu-transfer-panel > p { margin: 12px 0; color: var(--muted); font-size: 12px; line-height: 1.7; }
.menu-import-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; max-width: 640px; margin-top: 12px; }
.menu-import-form > label { grid-column: 1 / -1; color: var(--ink); font-size: 12px; font-weight: 650; }
.menu-import-form input[type="file"] { box-sizing: border-box; width: 100%; min-width: 0; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--ink); font-size: 12px; }
.menu-move-controls { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; align-items: end; gap: 12px; margin: 16px 0; }
.menu-move-controls:not([data-menu-move-form]) { grid-template-columns: minmax(140px, 260px) auto; justify-content: start; }
.menu-move-controls:not([data-menu-move-form]):has(> select) { grid-template-columns: auto minmax(140px, 260px) auto; align-items: center; }
.menu-move-controls > label { display: flex; flex-direction: column; gap: 7px; min-width: 0; color: var(--ink); font-size: 12px; font-weight: 650; }
.menu-move-controls select { width: 100%; min-width: 0; min-height: 40px; box-sizing: border-box; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--ink); font: inherit; font-size: 13px; }
.menu-move-controls > button { min-height: 40px; margin: 0; }
[data-menu-move-status] { min-height: 22px; margin: 12px 0; color: var(--muted); font-size: 12px; line-height: 1.7; }
[data-menu-move-status]:not(:empty) { padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); color: var(--ink); }
[data-menu-move-status].is-error { border-color: var(--danger-line); background: var(--danger-bg); color: var(--danger-ink); }
[data-menu-move-status].is-success { background: var(--success-bg); color: var(--success-ink); }
@media (max-width: 900px) {
    .menu-move-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .menu-move-controls > button { width: 100%; }
}
@media (max-width: 580px) {
    .menu-admin-page .section-header { align-items: stretch; }
    .menu-admin-page .section-title { flex-basis: 100%; }
    .menu-move-controls,
    .menu-move-controls:not([data-menu-move-form]),
    .menu-move-controls:not([data-menu-move-form]):has(> select),
    .menu-import-form { grid-template-columns: minmax(0, 1fr); }
    .menu-transfer-panel { padding: 14px; }
    .menu-drag-handle { width: 40px; height: 40px; }
}
