.admin-page{max-width:860px;margin:0 auto;padding:40px 24px}.admin-header{margin-bottom:32px}.admin-header h1{font-size:1.5rem;font-weight:600;margin-bottom:8px}.admin-header p{font-size:.9rem;opacity:.65;line-height:1.5}.upload-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.upload-card{border:1px solid rgba(128,128,128,.25);border-radius:10px;padding:24px;display:flex;flex-direction:column;gap:16px}.upload-card-header{display:flex;align-items:center;gap:10px}.upload-card-title{font-weight:600;font-size:1rem}.badge-active{font-size:.7rem;padding:2px 8px;border-radius:999px;background:#22c55e22;color:#22c55e;border:1px solid #22c55e44}.file-label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;cursor:pointer}.file-input{font-size:.85rem;color:inherit}.upload-actions{display:flex;gap:8px}.btn-primary,.btn-danger{padding:7px 18px;border-radius:6px;border:none;font-size:.875rem;cursor:pointer;font-weight:500;transition:opacity .15s}.btn-primary:hover,.btn-danger:hover{opacity:.85}.btn-primary{background:#646cff;color:#fff}.btn-danger{background:#ef444426;color:#ef4444;border:1px solid rgba(239,68,68,.3)}.upload-message{font-size:.8rem;padding:8px 12px;border-radius:6px}.upload-message.success{background:#22c55e1a;color:#22c55e;border:1px solid #22c55e33}.upload-message.error{background:#ef44441a;color:#ef4444;border:1px solid #ef444433}.releases-section{margin-top:40px}.releases-heading{font-size:1.1rem;font-weight:600;margin-bottom:16px}.releases-loading{opacity:.65;font-size:.9rem}.releases-table{width:100%;border-collapse:collapse;font-size:.875rem}.releases-table th,.releases-table td{text-align:left;padding:10px 12px;border-bottom:1px solid rgba(128,128,128,.18);vertical-align:middle}.releases-table th{font-weight:600;opacity:.75;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.releases-version-id{font-family:monospace;font-size:.8rem}.releases-empty{opacity:.55;text-align:center;padding:24px!important}.release-state-badge{display:inline-block;font-size:.7rem;padding:2px 8px;border-radius:999px;font-weight:500;margin-right:4px}.release-state-badge--released{background:#22c55e22;color:#22c55e;border:1px solid #22c55e44}.release-state-badge--pre-release{background:#f59e0b22;color:#f59e0b;border:1px solid #f59e0b44}.release-state-badge--hotfix{background:#6366f122;color:#818cf8;border:1px solid #6366f144}.btn-sm{padding:4px 12px;font-size:.8rem}.publish-message{margin-left:8px;font-size:.78rem}.publish-message--ok{color:#22c55e}.publish-message--err{color:#ef4444}.api-docs{display:flex;flex-direction:column;flex:1}.version-bar{display:flex;gap:4px;padding:12px 16px;border-bottom:1px solid rgba(128,128,128,.2);background:var(--version-bar-bg, #1a1a1a)}@media (prefers-color-scheme: light){.version-bar{--version-bar-bg: #f5f5f5}}.version-tab{display:flex;align-items:center;gap:6px;padding:6px 16px;border-radius:6px;border:1px solid rgba(128,128,128,.3);background:transparent;color:inherit;font-size:.875rem;cursor:pointer;transition:background .15s,border-color .15s}.version-tab:hover{background:#80808026}.version-tab.active{background:#646cff;border-color:#646cff;color:#fff}.version-tab.pre-release{border-style:dashed}.pre-release-badge{font-size:.65rem;padding:1px 5px;border-radius:999px;background:#eab30833;color:#ca8a04;border:1px solid rgba(234,179,8,.4);font-weight:600;text-transform:uppercase}.spec-bar{display:flex;gap:4px;padding:8px 16px;border-bottom:1px solid rgba(128,128,128,.15);background:var(--spec-bar-bg, #141414)}@media (prefers-color-scheme: light){.spec-bar{--spec-bar-bg: #efefef}}.spec-tab{padding:4px 14px;border-radius:5px;border:1px solid rgba(128,128,128,.25);background:transparent;color:inherit;font-size:.8rem;cursor:pointer;transition:background .15s,border-color .15s}.spec-tab:hover{background:#8080801f}.spec-tab.active{background:#646cff33;border-color:#646cff;color:#a5b4fc}.api-docs-loading{flex:1;display:flex;align-items:center;justify-content:center;opacity:.5;font-size:.9rem}.no-spec{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;flex:1;padding:64px 24px;opacity:.7}.no-spec p{font-size:1rem}.no-spec a{font-size:.9rem}.app{display:flex;flex-direction:column;min-height:100vh}.nav{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:52px;border-bottom:1px solid rgba(128,128,128,.2);flex-shrink:0}.nav-brand{display:flex;align-items:center;gap:8px}.nav-logo{font-size:1.25rem;color:#646cff}.nav-title{font-weight:600;font-size:.95rem}.nav-links{display:flex;gap:4px}.nav-links a{padding:5px 12px;border-radius:6px;font-size:.875rem;color:inherit;text-decoration:none;opacity:.7;transition:opacity .15s,background .15s}.nav-links a:hover{opacity:1;background:#8080801f}.nav-links a.active{opacity:1;background:#646cff1f;color:#646cff}.main{flex:1;display:flex;flex-direction:column}.nav-auth{display:flex;align-items:center;gap:10px;font-size:.875rem}.nav-email{opacity:.6;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-login,.nav-logout{padding:5px 12px;border-radius:6px;border:1px solid rgba(128,128,128,.3);background:transparent;color:inherit;font-size:.875rem;cursor:pointer;transition:background .15s}.nav-login:hover,.nav-logout:hover{background:#8080801f}.login-page{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 24px}.login-card{max-width:400px;width:100%;border:1px solid rgba(128,128,128,.25);border-radius:10px;padding:32px;display:flex;flex-direction:column;gap:16px}.login-card h1{font-size:1.25rem;font-weight:600}.login-card p{font-size:.9rem;opacity:.7;line-height:1.5}.login-error{color:#ef4444;font-size:.85rem}.admin-placeholder{margin-top:24px;padding:20px;border:1px dashed rgba(128,128,128,.3);border-radius:8px;font-size:.9rem;opacity:.6;line-height:1.6}.btn-primary{padding:9px 20px;border-radius:6px;border:none;background:#646cff;color:#fff;font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity .15s}.btn-primary:hover{opacity:.85}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}a{color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}}
