.launcher-upload-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:20px 0; }
.launcher-upload-grid label { display:flex; flex-direction:column; gap:7px; min-width:0; }
#admin-launcher [hidden] { display:none !important; }
#admin-launcher .input { width:100%; box-sizing:border-box; min-height:42px; padding:10px 12px; border:1px solid rgba(170,190,225,.25); border-radius:10px; background:#101629; color:#eef3ff; font:inherit; }
#admin-launcher .input:focus { outline:2px solid #35aaff; outline-offset:2px; }
#admin-launcher input[type=file]::file-selector-button { border:1px solid rgba(170,190,225,.3); border-radius:7px; padding:7px 10px; margin-right:12px; background:#25324d; color:#eef3ff; cursor:pointer; }
.launcher-upload-grid .launcher-full { grid-column:1/-1; }
.launcher-upload-grid textarea { min-height:88px; }
.launcher-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:14px 0; }
#launcher-progress { width:100%; height:12px; accent-color:var(--brand-2,#23b9f5); }
.launcher-release { padding:20px; border:1px solid var(--border,rgba(255,255,255,.15)); border-radius:14px; margin:14px 0; }
.launcher-release h3 { margin:0 0 8px; }
.launcher-release-state { color:var(--brand-2,#23b9f5); }
.launcher-checksum { display:block; overflow-wrap:anywhere; font-size:11px; opacity:.7; margin-top:10px; }
body.portal-hub .hub-launcher-release { display:grid; gap:9px; margin-top:16px; min-width:0; }
body.portal-hub .hub-launcher-release .hub-button { justify-content:center; padding:12px; font-size:12px; }
body.portal-hub .hub-launcher-release small,body.portal-hub .hub-launcher-release details { color:var(--hub-muted); font-size:11px; }
body.portal-hub .hub-launcher-release code { display:block; overflow-wrap:anywhere; padding:8px 0; font-size:10px; }
@media(max-width:650px) { .launcher-upload-grid { grid-template-columns:minmax(0,1fr); } }
.hub-launcher-release button { white-space:normal;text-align:left; }
.hub-launcher-release button:disabled { opacity:.55;cursor:not-allowed; }
