:root{color:#111827;background:#f3f4f6;font-family:Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}.layout{min-height:100vh}.navbar{color:#fff;background:#111827;justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.navbar nav{gap:12px;display:flex}.navbar a{color:#bfdbfe;text-decoration:none}.content{max-width:960px;margin:20px auto;padding:0 16px}.card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px}.upload-box{padding:8px 0;display:block}.upload-dropzone{text-align:center;color:#6b7280;border:2px dashed #d1d5db;border-radius:8px;margin:12px 0;padding:24px;transition:border-color .15s,background .15s}.upload-dropzone:hover,.upload-dropzone-active{color:#1d4ed8;background:#eff6ff;border-color:#3b82f6}.upload-dropzone-inner{pointer-events:none}.upload-dropzone-icon{margin-bottom:8px;font-size:2rem}.upload-dropzone-title{color:inherit;margin:0 0 4px;font-weight:600}.upload-dropzone-subtitle{opacity:.9;margin:0;font-size:.9em}.upload-actions{flex-wrap:wrap;gap:12px;margin:12px 0;display:flex}.upload-label{cursor:pointer;align-items:center;display:inline-flex}.upload-label input{display:none}.upload-label span{background:#e5e7eb;border-radius:6px;padding:8px 12px;font-size:14px}.upload-label:hover span{background:#d1d5db}button:disabled{opacity:.5;cursor:not-allowed}.modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:#fff;border-radius:8px;min-width:320px;max-width:90vw;padding:20px;box-shadow:0 4px 20px #00000026}.modal-card h3{margin-top:0}.deployment-list{margin:0;padding:0;list-style:none}.deployment-item{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.deployment-item a{color:#1d4ed8;text-decoration:none}.deployment-item a:hover{text-decoration:underline}.btn-close{background:#dc2626;border-color:#dc2626;flex-shrink:0;font-size:13px}.btn-close:hover{background:#b91c1c;border-color:#b91c1c}.row{flex-wrap:wrap;gap:12px;margin:12px 0;display:flex}label{flex-direction:column;gap:6px;display:flex}input{border:1px solid #d1d5db;border-radius:6px;padding:8px}button{color:#fff;cursor:pointer;background:#111827;border:1px solid #111827;border-radius:6px;padding:8px 12px}table{border-collapse:collapse;width:100%;margin-top:12px}th,td{text-align:left;border:1px solid #e5e7eb;padding:8px}.hint{color:#4b5563}.message{white-space:pre-wrap;color:#1d4ed8}
