.modal { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.55); display: grid; place-items: center; opacity: 0; pointer-events: none; transition: opacity 0.18s ease; z-index: 20; } .modal#changelogModal { z-index: 40; } .modal.hidden { display: none; } .modal:not(.hidden) { opacity: 1; pointer-events: auto; } .modal-card { background: var(--panel); border: 1px solid var(--border); padding: 18px; border-radius: 14px; min-width: 300px; max-width: 420px; transform: translateY(6px) scale(0.99); transition: transform 0.18s ease, box-shadow 0.18s ease; } .modal-card.wide { max-width: 820px; width: 90vw; max-height: 90vh; overflow-y: auto; position: relative; padding: 12px; } .modal-card.wide .panel-header { position: sticky; top: 0; z-index: 3; margin: 0 0 12px; padding: 18px 18px 12px; background: var(--panel); border-bottom: 1px solid var(--border); } .modal-card.wide .help-body, .modal-card.wide .controls { padding: 0 12px 12px; } .modal-card.wide .control-card { padding: 12px 14px; } /* Extra breathing room for custom add-service modal */ #addServiceModal .modal-card { padding: 18px 18px 16px; } #addServiceModal .controls { padding: 0 2px 4px; } /* Busy overlay already defined; ensure modal width for release modal */ #releaseModal .modal-card.wide { max-width: 760px; } .release-versions { display: flex; gap: 16px; align-items: flex-start; justify-content: space-between; } .release-versions > div { flex: 1; min-width: 0; } .release-versions .align-right { text-align: right; } .modal-card .status-msg { overflow-wrap: anywhere; margin-top: 6px; } .modal:not(.hidden) .modal-card { transform: translateY(0) scale(1); } .modal-card .close-btn { min-width: 0; width: 36px; height: 36px; font-size: 1rem; line-height: 1; padding: 0; } .config-list { display: flex; flex-direction: column; gap: 12px; } .config-row { border: 1px solid var(--border); border-radius: 12px; padding: 12px; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; align-items: center; } .config-row.danger { border-color: #ef4444; } .modal-actions { margin-top: 14px; display: flex; align-items: center; justify-content: flex-end; gap: 10px; } .modal-actions .push { flex: 1; } .modal-actions .primary { background: linear-gradient(135deg, #16d0d8, #59e693); color: #0c0f17; border: none; padding: 10px 14px; border-radius: 10px; font-weight: 600; } .config-label h4 { margin: 0 0 4px; } .config-controls { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; } .config-controls textarea { width: 100%; resize: vertical; min-height: 96px; } .config-controls input[type="text"], .config-controls input[type="number"], .config-controls select { width: 100%; max-width: 100%; } .overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); display: grid; place-items: center; z-index: 50; } .overlay.hidden { display: none; } .overlay-box { background: var(--panel); border: 1px solid var(--border); padding: 20px; border-radius: 14px; max-width: 420px; text-align: center; box-shadow: var(--shadow); } .spinner { margin: 12px auto 4px; width: 32px; height: 32px; border: 4px solid rgba(255, 255, 255, 0.2); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .modal-actions button { min-width: 100px; } .help-body h4 { margin: 10px 0 6px; } .help-body ul { margin: 0 0 12px 18px; padding: 0; color: var(--text); } .help-body ul a { color: var(--accent); text-decoration: underline; } .help-body li { margin: 4px 0; } .danger { border-color: #ef4444; } .modal-card label { display: block; margin-top: 10px; color: var(--muted); font-size: 0.95rem; } .modal-card input { width: 100%; margin-top: 4px; } .modal-card.wide pre.log-box { max-height: 60vh; } #releaseModal pre.log-box { max-height: 220px !important; min-height: 220px; overflow-y: auto; } #diagModal pre.log-box { max-height: 60vh; min-height: 300px; }