/* Admin panel — uses the same theme tokens as the public site. */
.admin-dialog { padding: 0; color: var(--text); background: var(--bg); }
.admin-dialog.adm-small { width: min(30rem, calc(100vw - 1.5rem)); background: var(--bg-elev); }
.admin-dialog.adm-full { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0; border-radius: 0; border: 0; display: grid; grid-template-rows: auto auto auto minmax(0, 1fr); }
.admin-dialog.adm-full:not([open]) { display: none; }
.adm-head { display: flex; align-items: center; gap: 1rem; padding: .75rem 1.25rem; border-bottom: var(--border-w) solid var(--line); background: var(--bg-elev); }
.adm-title { flex: none; }
.adm-title h2 { font-size: 1.15rem; }
.adm-head-mid { flex: 1; display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; min-width: 0; }
.adm-mode { font-size: .85rem; font-weight: 600; padding: .3rem .75rem; border-radius: 999px; border: var(--border-w) solid; }
.adm-mode.is-server { color: var(--info); border-color: var(--info); }
.adm-mode.is-static { color: var(--warn); border-color: var(--warn); }
.adm-user { display: flex; gap: .5rem; align-items: center; }
.adm-chip { font-size: .85rem; padding: .25rem .7rem; border-radius: 999px; background: var(--surface-2); border: var(--border-w) solid var(--line); }
.adm-body { padding: .5rem 1.25rem 1.25rem; }
.adm-login { display: grid; gap: .4rem; }
.adm-login label, .ed-field label, .adm-box label:not(.adm-check):not(.btn) { font-size: .82rem; font-weight: 700; color: var(--text-2); }
.admin-dialog input:not([type=checkbox]):not([type=radio]):not([type=file]), .admin-dialog select, .admin-dialog textarea {
  width: 100%; min-height: 2.5rem; padding: .45rem .65rem; border-radius: var(--radius-sm);
  border: var(--border-w) solid var(--line-strong); background: var(--bg-elev); color: var(--text); line-height: 1.6;
}
.admin-dialog textarea { resize: vertical; field-sizing: content; min-height: 2.5rem; max-height: 22rem; }
.admin-dialog input:focus-visible, .admin-dialog select:focus-visible, .admin-dialog textarea:focus-visible { outline: var(--focus-w) solid var(--focus); outline-offset: 1px; border-color: var(--focus); }
.admin-dialog [aria-invalid="true"] { border-color: var(--danger) !important; border-width: 2px !important; }
.adm-login .btn { margin-top: .5rem; }
.adm-prose ul { padding-left: 1.2rem; }
.adm-prose li + li { margin-top: .35rem; }
.adm-prose > * + * { margin-top: .75rem; }
.adm-muted { color: var(--text-3); font-size: .88rem; }
.adm-error, .ed-err { color: var(--danger); font-size: .86rem; font-weight: 600; }
.ed-err:empty, .adm-error:empty { display: none; }
.adm-warn { color: var(--warn); font-weight: 600; }
.adm-ok { color: var(--ok); font-weight: 600; padding: .6rem .9rem; border: var(--border-w) solid var(--ok); border-radius: var(--radius); background: color-mix(in srgb, var(--ok) var(--tint), var(--bg-elev)); }
.adm-note { font-size: .88rem; color: var(--text-2); }

.adm-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: .55rem 1.25rem; border-bottom: var(--border-w) solid var(--line); background: var(--surface-2); }
.adm-status { font-size: .88rem; }
.adm-bar-actions { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.adm-bar-actions [aria-pressed="true"] { box-shadow: inset 0 0 0 2px var(--accent); }
.btn-danger-solid { background: var(--danger); color: var(--bg); border-color: var(--danger); }
.adm-tabs { display: flex; gap: .25rem; padding: .5rem 1.25rem 0; border-bottom: var(--border-w) solid var(--line); overflow-x: auto; background: var(--bg); }
.adm-tabs [role=tab] { border: var(--border-w) solid transparent; border-bottom: 0; background: none; padding: .55rem 1rem; border-radius: var(--radius-sm) var(--radius-sm) 0 0; font-weight: 600; color: var(--text-2); white-space: nowrap; }
.adm-tabs [role=tab][aria-selected=true] { color: var(--text); background: var(--bg-elev); border-color: var(--line); box-shadow: inset 0 3px 0 var(--accent); }
.adm-panel { overflow-y: auto; padding: 1rem 1.25rem 3rem; }
.adm-panel:focus { outline: none; }

.adm-confirm { margin: .5rem 0; padding: .75rem 1rem; border: 2px solid var(--danger); border-radius: var(--radius); background: var(--bg-elev); max-width: 40rem; }
.adm-actions { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: flex-end; margin-top: .6rem; }
.adm-actions-left { justify-content: flex-start; }
.adm-cols { display: grid; gap: 1rem; max-width: 60rem; }
.adm-box { padding: 1rem 1.1rem; border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--bg-elev); }
.adm-box h3 { font-size: 1rem; margin-bottom: .5rem; }
.adm-box.is-error { border: 2px solid var(--danger); }
.adm-box.is-warn { border: 2px solid var(--warn); }
.adm-h4 { font-size: .95rem; margin: 1rem 0 .4rem; }
.adm-check { display: flex; align-items: flex-start; gap: .5rem; font-size: .9rem; margin: .4rem 0; cursor: pointer; }
.adm-check input { width: 1.15rem; height: 1.15rem; margin-top: .3rem; accent-color: var(--accent); flex: none; }
.adm-steps { padding-left: 1.2rem; font-size: .9rem; color: var(--text-2); }
.adm-drop { margin: .75rem 0; padding: 1.25rem; border: 2px dashed var(--line-strong); border-radius: var(--radius); text-align: center; display: grid; gap: .6rem; justify-items: center; }
.adm-drop.over { border-color: var(--accent); background: var(--surface-2); }
.adm-versions { list-style: none; margin: 0; padding: 0; }
.adm-versions > li { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem; padding: .6rem 0; border-top: var(--border-w) solid var(--line); font-size: .9rem; }
.adm-versions > li:first-child { border-top: 0; }
.adm-versions .adm-actions { margin: 0; }
.perm-list { max-height: 22rem; overflow: auto; border: var(--border-w) solid var(--line); border-radius: var(--radius-sm); padding: .5rem .75rem; margin: .5rem 0; }
.perm-list fieldset { border: 0; padding: 0; margin: .5rem 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); }
.perm-list legend { font-weight: 700; font-size: .82rem; color: var(--text-3); }

/* review */
.adm-review { max-width: 64rem; display: grid; gap: 1rem; }
.adm-review-head { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.adm-review-head h3 { font-size: 1.15rem; }
.adm-errlist { margin: .5rem 0 0; padding-left: 1.4rem; font-size: .9rem; display: grid; gap: .45rem; }
.adm-errlist code, .ed-hint code, .ed-id { font-size: .8rem; background: var(--surface-2); padding: .05rem .35rem; border-radius: 4px; overflow-wrap: anywhere; }
.adm-where { color: var(--text-3); }
.adm-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.chip { padding: .15rem .7rem; border-radius: 999px; font-weight: 700; font-size: .85rem; border: var(--border-w) solid; }
.chip-add { color: var(--ok); } .chip-mod { color: var(--info); } .chip-del { color: var(--danger); }
.adm-changes { list-style: none; margin: .5rem 0 0; padding: 0; border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--bg-elev); max-height: 32rem; overflow: auto; }
.ch { padding: .55rem .85rem; border-top: var(--border-w) solid var(--line); border-left: 4px solid var(--line-strong); font-size: .9rem; }
.ch:first-child { border-top: 0; }
.ch-added { border-left-color: var(--ok); } .ch-removed { border-left-color: var(--danger); } .ch-modified { border-left-color: var(--info); }
.ch-kind { font-weight: 700; }
.ch-added .ch-kind { color: var(--ok); } .ch-removed .ch-kind { color: var(--danger); } .ch-modified .ch-kind { color: var(--info); }
.ch-ba { color: var(--text-2); margin-top: .2rem; }
.ch-l { font-weight: 700; color: var(--text-3); }
.adm-review-actions { position: sticky; bottom: 0; padding: .75rem 0; background: var(--bg); border-top: var(--border-w) solid var(--line); }

/* editor */
.ed-top { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; margin-bottom: .75rem; }
.ed-top label { font-weight: 700; }
.ed-top select { width: auto !important; min-width: min(24rem, 100%); }
.ed-toolbar { position: sticky; top: -1rem; z-index: 5; display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; padding: .5rem; margin: 0 -.25rem .75rem; background: var(--surface-2); border: var(--border-w) solid var(--line); border-radius: var(--radius); }
.ed-toolbar .btn { min-height: 2rem; padding: 0 .55rem; font-size: .8rem; }
.ed-tsep { font-size: .75rem; color: var(--text-3); margin-left: .4rem; font-weight: 700; }
.ed { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
.ed.with-preview { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.ed-preview { display: none; }
.ed.with-preview .ed-preview { display: block; position: sticky; top: 3.5rem; align-self: start; max-height: calc(100dvh - 15rem); overflow: auto; padding: 1rem; border: 2px dashed var(--line-strong); border-radius: var(--radius); background: var(--bg); }
.ed-preview .pager, .ed-preview .sec-actions { display: none; }
.ed-main { display: grid; gap: 1rem; min-width: 0; }
.ed-box { border: var(--border-w) solid var(--line); border-radius: var(--radius); padding: .9rem 1rem; background: var(--bg-elev); margin: 0; min-width: 0; }
.ed-box legend { font-weight: 700; padding: 0 .35rem; }
.ed-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: .6rem .9rem; align-items: start; }
.ed-field { display: grid; gap: .2rem; min-width: 0; }
.ed-field.wide { grid-column: 1 / -1; }
.ed-hint { font-size: .8rem; color: var(--text-3); }
.ed-part { border: 2px solid var(--line); border-radius: var(--radius); padding: .9rem 1rem; display: grid; gap: .75rem; background: var(--bg); }
.ed-part-head, .ed-block-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.ed-part-head h3 { font-size: 1rem; }
.ed-block { border: var(--border-w) solid var(--line); border-left: 4px solid var(--accent); border-radius: var(--radius-sm); padding: .7rem .85rem; background: var(--bg-elev); display: grid; gap: .6rem; }
.ed-block-head h4 { font-size: .9rem; display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.ed-arrbtns { display: flex; gap: .25rem; flex: none; }
.ed-arrbtns .icon-btn { width: 2.1rem; min-height: 2.1rem; }
.ed-items { display: grid; gap: .5rem; }
.ed-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .5rem; padding: .5rem; border: var(--border-w) solid var(--line); border-radius: var(--radius-sm); background: var(--bg); align-items: start; }
.ed-item-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .4rem .7rem; min-width: 0; }
.ed-item-fields > .ed-field.wide { grid-column: 1 / -1; }
.ed-num { max-width: 6rem; }
.ed-table-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: .4rem .6rem; grid-column: 1 / -1; }
.ed-sublist { grid-column: 1 / -1; display: grid; gap: .4rem; }
.ed-sub summary, .ed-json summary { cursor: pointer; font-weight: 600; font-size: .9rem; }
.ed-sub[open] > :not(summary) { margin-top: .6rem; }
.ed-addblock { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; padding-top: .25rem; }
.ed-addblock select { width: auto !important; }
.ed-add-part { display: flex; }
.ed-image { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: .75rem; align-items: start; }
.ed-thumb { width: 9rem; max-height: 9rem; object-fit: contain; border-radius: var(--radius-sm); border: var(--border-w) solid var(--line); background: var(--surface-2); }
.ed-image-ctl { display: grid; gap: .4rem; }
.ed-image-ctl label.btn { justify-self: start; }
.ed-code { font-family: ui-monospace, Consolas, monospace !important; font-size: .82rem !important; line-height: 1.5 !important; }

@media (max-width: 1100px) { .ed.with-preview { grid-template-columns: minmax(0, 1fr); } .ed.with-preview .ed-preview { position: static; max-height: none; order: -1; } }
@media (max-width: 700px) {
  .adm-head { flex-wrap: wrap; padding: .6rem .8rem; }
  .adm-head-mid { order: 3; flex-basis: 100%; }
  .adm-title { flex: 1; }
  .adm-bar, .adm-tabs { padding-left: .8rem; padding-right: .8rem; }
  .adm-panel { padding: .75rem .8rem 3rem; }
  .ed-image { grid-template-columns: minmax(0, 1fr); }
  .ed-item { grid-template-columns: minmax(0, 1fr); }
  .ed-arrbtns { justify-content: flex-end; }
}
