:root{--navy:#0b1738;--muted:#667085;--line:#dbe2ee;--surface:#f7f9fc;--accent:#ff604b;--accent-dark:#df4434;--green:#169b52;--blue:#3157a5;--radius:10px;--shadow:0 12px 35px rgba(11,23,56,.06)}
*{box-sizing:border-box}body{margin:0;background:#fff;color:var(--navy);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:15px;line-height:1.5}.shell{width:min(1120px,calc(100% - 40px));margin:0 auto}.topbar{border-bottom:1px solid var(--line);background:#fff}.brand-row{height:82px;display:flex;align-items:center;gap:14px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;background:var(--accent);color:#fff;font-weight:900;font-size:21px;clip-path:polygon(50% 0,94% 25%,94% 75%,50% 100%,6% 75%,6% 25%)}.brand{font-size:26px;letter-spacing:-1px}.divider{height:34px;width:1px;background:var(--line);margin:0 10px}.brand-row h1{font-size:24px;margin:0;letter-spacing:-.5px}.main{padding:34px 0 64px}h2{font-size:18px;margin:0 0 12px;letter-spacing:-.25px}.success{border:1px solid #b7e4c9;background:#f0fbf4;color:#126a39;border-radius:var(--radius);padding:14px 16px;margin-bottom:24px}.current-release{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.channel{display:flex;align-items:center;gap:16px;padding:20px}.channel+.channel{border-left:1px solid var(--line)}.channel-icon{width:48px;height:48px;border:1px solid #b7c8eb;border-radius:9px;display:grid;place-items:center;color:var(--blue);font-weight:800}.channel.pro .channel-icon{color:var(--accent);border-color:#ffc3bb}.channel span,.channel strong,.channel small{display:block}.channel-name{font-weight:650}.channel strong{font-size:20px;line-height:1.25}.channel small{color:var(--muted);margin-top:4px}.channel i,.live i{display:inline-block;width:8px;height:8px;border-radius:99px;background:var(--green);margin-right:6px}.release-form{margin-top:18px;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}.field{margin-bottom:18px}.field label,.upload>span{display:block;font-weight:650;margin-bottom:7px}.field input,.field textarea{width:100%;border:1px solid #cbd5e1;border-radius:8px;padding:11px 13px;font:inherit;color:var(--navy);background:#fff;outline:none;transition:.18s}.field input:focus,.field textarea:focus{border-color:#6e8ed0;box-shadow:0 0 0 3px rgba(49,87,165,.11)}.field textarea{resize:vertical;min-height:104px}.version-field{max-width:360px}.uploads{display:grid;grid-template-columns:1fr 1fr;gap:22px}.upload{position:relative}.upload input{position:absolute;inset:29px 0 0;width:100%;opacity:0;cursor:pointer}.upload b,.upload small{display:block;text-align:center}.upload b{border:1px dashed #aebcd2;border-radius:9px;padding:28px 16px 3px;color:var(--blue);min-height:72px}.upload small{border:1px dashed #aebcd2;border-top:0;border-radius:0 0 9px 9px;margin-top:-4px;padding:0 16px 24px;color:var(--muted)}.pro-upload b{color:var(--accent)}.upload.selected b,.upload.selected small{background:#f6fbf8;border-color:#7fca9d}.form-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-top:20px}.checks{display:grid;gap:10px}.checks label{display:flex;align-items:center;gap:9px}.checks input{width:17px;height:17px;accent-color:var(--accent)}.publish{border:0;border-radius:8px;background:var(--accent);color:#fff;font:700 15px/1 inherit;padding:14px 24px;cursor:pointer;box-shadow:0 8px 18px rgba(255,96,75,.22);transition:.18s}.publish:hover{background:var(--accent-dark);transform:translateY(-1px)}.draft-note{margin:20px -22px -22px;padding:13px 22px;background:var(--surface);border-top:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);color:var(--blue);font-size:13px}.history{margin-top:28px}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.history table{width:100%;border-collapse:collapse}.history th,.history td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line)}.history th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;background:var(--surface)}.history tr:last-child td{border-bottom:0}.live{color:var(--green);font-weight:650}.empty{text-align:center!important;color:var(--muted);padding:28px!important}
@media(max-width:720px){.shell{width:min(100% - 24px,1120px)}.brand-row{height:68px;gap:10px}.brand{display:none}.divider{display:none}.brand-row h1{margin:0;font-size:18px}.main{padding-top:24px}.current-release,.uploads{grid-template-columns:1fr}.channel+.channel{border-left:0;border-top:1px solid var(--line)}.release-form{padding:16px}.form-footer{align-items:stretch;flex-direction:column}.publish{width:100%}.draft-note{margin:18px -16px -16px}.table-wrap{overflow-x:auto}.history table{min-width:650px}}
.recovery-page{background:var(--surface)}.recovery-shell{width:min(520px,calc(100% - 32px));margin:0 auto;padding:72px 0}.recovery-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:38px}.recovery-card h1{font-size:30px;letter-spacing:-.6px;margin:0 0 10px}.recovery-card p{color:var(--muted);margin:0 0 26px}.recovery-card form{display:grid;gap:9px}.recovery-card label{font-weight:700}.recovery-card input{width:100%;border:1px solid #cbd5e1;border-radius:8px;padding:12px 13px;font:inherit;outline:none}.recovery-card input:focus{border-color:#6e8ed0;box-shadow:0 0 0 3px rgba(49,87,165,.11)}.recovery-card button,.recovery-button{display:block;border:0;border-radius:8px;background:var(--accent);color:#fff;text-decoration:none;text-align:center;font:700 15px/1 inherit;padding:14px 18px;cursor:pointer;margin-top:8px}.recovery-card small{display:block;color:var(--muted);margin-top:18px}.recovery-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#eaf8ef;color:var(--green);font-size:24px;font-weight:900;margin-bottom:18px}@media(max-width:560px){.recovery-shell{padding:34px 0}.recovery-card{padding:26px 22px}.recovery-page .brand{display:block}}
.form-error{border:1px solid #f2b8b5;background:#fff3f2;color:#9f2620;border-radius:8px;padding:11px 12px;margin:-12px 0 18px}
.admin-nav{display:flex;gap:10px;margin-bottom:24px}.admin-nav a,.admin-nav strong{padding:8px 12px;border:1px solid var(--line);border-radius:8px;text-decoration:none;color:var(--navy)}.admin-nav strong{background:var(--surface)}.license-search{display:flex;gap:10px;margin-bottom:10px}.license-search input{flex:1;border:1px solid #cbd5e1;border-radius:8px;padding:11px 13px;font:inherit}.license-search button,.license-actions button{border:0;border-radius:7px;background:var(--blue);color:#fff;padding:10px 14px;font-weight:700;cursor:pointer}.privacy-note{color:var(--muted);margin:0 0 18px}.license-table{width:100%;border-collapse:collapse}.license-table th,.license-table td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.license-table th{background:var(--surface);font-size:12px;text-transform:uppercase}.license-table small{display:block;color:var(--muted)}.license-actions{display:flex;gap:8px;white-space:nowrap}.license-actions form{margin:0}.license-actions .danger{background:var(--accent)}.rollback-note{color:var(--muted);margin:-4px 0 12px}.rollback{border:1px solid #d6a59f;border-radius:7px;background:#fff;color:var(--accent-dark);padding:8px 12px;font-weight:700;cursor:pointer}.rollback:hover{background:#fff3f2}.history form{margin:0}
.upgrade-steps{margin-top:24px;padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.upgrade-steps h2{margin-bottom:10px}.upgrade-steps ol{margin:0 0 12px;padding-left:22px}.upgrade-steps li+li{margin-top:6px}.recovery-card .upgrade-steps p{font-size:13px;margin:0}
.field-help,.no-notes,.current-label{display:block;color:var(--muted);font-size:12px;margin-top:6px}.upload.invalid b,.upload.invalid small{background:#fff3f2;border-color:#e18c84;color:#9f2620}.upload-error{display:block;color:#9f2620;font-style:normal;font-size:12px;margin-top:7px}.archived{color:var(--muted);font-weight:650}.archived i{display:inline-block;width:8px;height:8px;border-radius:99px;background:#98a2b3;margin-right:6px}.release-notes{min-width:105px}.release-notes summary{color:var(--blue);font-weight:700;cursor:pointer}.release-notes p{white-space:pre-wrap;min-width:240px;max-width:380px;margin:8px 0;color:var(--navy)}
.user-summary{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:24px}.user-summary article{border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.user-summary span,.user-summary strong,.user-summary small{display:block}.user-summary span{font-weight:650}.user-summary strong{font-size:30px;line-height:1.2;margin:3px 0}.user-summary small{color:var(--muted)}@media(max-width:720px){.user-summary{grid-template-columns:1fr}}
.withdrawn{color:#b42318;font-weight:650}.withdrawn i{display:inline-block;width:8px;height:8px;border-radius:99px;background:#d92d20;margin-right:6px}.release-actions{display:flex;gap:7px}.release-actions form{margin:0}.withdraw{border:1px solid #e18c84;border-radius:7px;background:#fff3f2;color:#9f2620;padding:8px 10px;font-weight:700;cursor:pointer}.warning{border-color:#fedf89;background:#fffaeb;color:#93370d}
/* --- admin licence dashboard: light-theme, matches the rest of the page --- */
.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:14px;margin:16px 0 24px}
.summary-grid .stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow)}
.summary-grid .stat-num{font-size:26px;font-weight:800;line-height:1;color:var(--navy)}
.summary-grid .stat-label{font-size:12px;color:var(--muted)}
.summary-grid .stat-warn{border-color:#fedf89;background:#fffaeb}
.summary-grid .stat-warn .stat-num{color:#b54708}
.plan-badge{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:12px;font-weight:650;color:var(--navy)}
.license-table td small{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.license-table .never{color:var(--accent-dark);font-weight:700}
.license-table tr.row-warn{background:#fffaf5}
.version-spread{margin-top:22px}
.version-spread summary{cursor:pointer;padding:8px 0;font-weight:700;color:var(--blue)}
.version-spread .muted{font-size:12px;color:var(--muted);margin-top:6px}

/* --- releases dashboard stats: tile rows of 2, 3 or 4 must not go ragged --- */
.user-summary{grid-template-columns:repeat(auto-fit,minmax(198px,1fr))}
.user-summary article{background:#fff}
.stats-heading{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:700;margin:26px 0 10px;padding-bottom:7px;border-bottom:1px solid var(--line)}
.user-summary+.rollback-note{margin-top:-12px}
/* repeated after the override above, or the single-column rule loses on specificity ties */

/* --- compress the dashboard: tiles were far taller than their contents needed,
   so the page ran to several screens. Padding and the oversized numbers come
   down; label and body text stay put so it is easier to read, not smaller. --- */
.admin-nav{margin-bottom:16px}
.stats-heading{margin:18px 0 7px;padding-bottom:5px}
.user-summary{gap:10px;margin-bottom:16px}
.user-summary article{padding:11px 13px}
.user-summary span{font-size:13px}
.user-summary strong{font-size:22px;margin:1px 0}
.user-summary small{font-size:12px;line-height:1.45}
.user-summary+.rollback-note{margin-top:-8px}
.rollback-note{font-size:13px;line-height:1.5;margin:-2px 0 10px}
.channel{padding:14px 16px;gap:12px}
.channel-icon{width:38px;height:38px}
.channel strong{font-size:18px}
.release-form{margin-top:14px;padding:16px}
.history{margin-top:20px}
.history th,.history td{padding:9px 12px}
@media(max-width:720px){.user-summary{grid-template-columns:1fr}}
