/* Body-mounted dialogs share placement and controls independently of page resets. */
.kepler-modal {
  box-sizing:border-box; position:fixed; inset:50vh auto auto 50vw; top:50dvh; margin:0; translate:-50% -50%;
  width:min(640px,calc(100vw - 24px)); max-width:none; max-height:85vh; max-height:85dvh;
  padding:0; overflow:hidden; border:1px solid var(--hair2,#41404c); border-radius:16px;
  background:var(--core,#1d1c24); color:var(--ink,#f0edf5); font:14px/1.55 var(--f,system-ui,sans-serif);
  box-shadow:0 24px 80px rgba(0,0,0,.45);
}
.kepler-modal[open] { display:flex; flex-direction:column; animation:kepler-modal-enter 150ms cubic-bezier(.2,.8,.2,1); }
.kepler-modal::backdrop { background:rgba(5,5,10,.65); backdrop-filter:blur(3px); }
.kepler-modal *, .kepler-modal *::before, .kepler-modal *::after { box-sizing:border-box; }
.kepler-modal-header { display:flex; align-items:center; gap:16px; flex-shrink:0; padding:18px 20px; border-bottom:1px solid var(--hair,#373540); background:inherit; }
.kepler-modal-header h2 { flex:1; min-width:0; margin:0; font:600 18px/1.4 var(--f,system-ui,sans-serif); overflow-wrap:anywhere; }
.kepler-modal button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:36px; padding:7px 12px; border:1px solid var(--hair2,#41404c); border-radius:8px; background:var(--fill2,#292733); color:inherit; font:inherit; cursor:pointer; }
.kepler-modal button:hover:not(:disabled) { background:var(--acc-soft,#39304f); border-color:var(--acc,#9672e5); }
.kepler-modal button:disabled { opacity:.4; cursor:default; }
.kepler-modal :focus-visible { outline:2px solid var(--acc-lift,#c5abff); outline-offset:3px; }
.kepler-modal .kepler-modal-close { flex:0 0 36px; width:36px; height:36px; padding:7px; background:transparent; color:var(--dim,#c6c0d1); }
.kepler-modal-body { min-height:0; overflow:auto; overscroll-behavior:contain; padding:18px 20px; scrollbar-width:thin; scrollbar-color:var(--hair2,#514b60) transparent; }
.kepler-modal-body p { margin:0 0 14px; color:var(--dim,#c6c0d1); font-size:13px; }
.kepler-modal-body p:empty { display:none; }
.kepler-modal-body input[type=search], .kepler-modal-body select { display:block; width:100%; min-width:0; min-height:40px; margin:0 0 12px; padding:9px 12px; border:1px solid var(--hair2,#41404c); border-radius:8px; background:var(--fill2,#292733); color:inherit; font:inherit; color-scheme:dark; }
.kepler-modal-body input::placeholder { color:var(--dim,#c6c0d1); }
.kepler-modal-body select { appearance:none; padding-right:36px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23c6c0d1' stroke-width='1.5'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; }
.kepler-modal-footer { flex-shrink:0; padding:14px 20px; border-top:1px solid var(--hair,#373540); background:inherit; }
.kepler-modal-footer:has(.kepler-modal-actions:empty):has(.kepler-modal-confirm[hidden]) { display:none; }
.kepler-modal-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.kepler-modal-actions .modal-primary { background:var(--acc-soft,#39304f); color:var(--acc-lift,#d6c4ff); }
.kepler-modal-confirm { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:0 0 14px; margin-bottom:14px; border-bottom:1px solid var(--hair,#373540); }
.kepler-modal-confirm[hidden] { display:none; }
.kepler-modal-confirm strong { flex:1 0 100%; font-size:14px; }
.kepler-modal .project-order-list { margin:12px 0 0; }
.kepler-modal .project-order-row { display:flex; gap:8px; align-items:center; padding:10px 0; border-bottom:1px solid var(--hair,#373540); }
.kepler-modal .project-order-row:last-child { border-bottom:0; }
.kepler-modal .project-order-row label { display:flex; gap:10px; align-items:center; flex:1; min-width:0; }
.kepler-modal .project-order-row label span { overflow-wrap:anywhere; }
.kepler-modal .project-order-row input { accent-color:var(--acc,#9672e5); flex-shrink:0; }
.kepler-modal .project-order-row button { flex-shrink:0; }
.kepler-modal .project-order-row button[draggable] { cursor:grab; }
.kepler-modal .project-drop { outline:2px solid var(--acc,#9672e5); outline-offset:-2px; }
.kepler-modal .project-order-row>button:not([draggable]) { min-width:36px; }
.kepler-modal.rail-alert-dialog { width:min(620px,calc(100vw - 24px)); }
.kepler-modal.rail-alert-dialog article { padding:16px 0; border-top:1px solid var(--hair,#373540); }
.kepler-modal.rail-alert-dialog article:first-child { border-top:0; padding-top:0; }
.kepler-modal.rail-alert-dialog article:last-child { padding-bottom:0; }
.kepler-modal.rail-alert-dialog article p { margin:6px 0 10px; }
.kepler-modal.rail-alert-dialog article button { background:var(--acc-soft,#39304f); color:var(--acc-lift,#d6c4ff); }
.kepler-modal.evidence-dialog { width:calc(100vw - 32px); }
.kepler-modal.evidence-dialog img { display:block; max-width:none; height:auto; }
@keyframes kepler-modal-enter { from { opacity:0; transform:scale(.98) translateY(4px); } to { opacity:1; transform:none; } }
@media(max-width:480px) {
  .kepler-modal-header { padding:14px; gap:8px; }
  .kepler-modal-header h2 { font-size:17px; }
  .kepler-modal-body { padding:14px; }
  .kepler-modal-footer { padding:12px 14px; }
  .kepler-modal .project-order-row { gap:6px; }
  .kepler-modal .project-order-row button { padding:7px 8px; }
  .kepler-modal .project-order-row>span { flex-basis:100%!important; }
  #sessionArchiveDialog .project-order-row { flex-wrap:wrap; }
  #projectListDialog .kepler-modal-actions { display:grid; grid-template-columns:1fr 1fr; }
}
@media(prefers-reduced-motion:reduce) { .kepler-modal[open] { animation:none; } .kepler-modal::backdrop { backdrop-filter:none; } }
