:root{--purple: #7352ff;--purple-light: #ede7ff;--purple-med: #c0afff;--ink: #434343;--bg: #0f1020;--card: #ffffff;--line: #e6e6ef;--danger: #d65a45;--ok: #2e9e6e;font-family:Inter,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink)}.screen{min-height:100%;display:flex;flex-direction:column}.center{align-items:center;justify-content:center}.muted{color:#8a8aa0}.small{font-size:13px}.pad{padding:40px}.card{background:var(--card);border-radius:18px;padding:40px 40px 34px;box-shadow:0 20px 60px #00000059}.gate{width:380px;max-width:92vw;text-align:center}.brand{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:8px}.brand.stack{flex-direction:column;gap:10px}.logo{height:30px;width:auto;display:block}.admin-head .logo{height:26px}.admin-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--purple);background:var(--purple-light);padding:3px 8px;border-radius:999px}.kicker{text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:600;color:#9a9ab0;margin:4px 0 26px}.code-input{width:100%;padding:15px 16px;font-size:20px;text-align:center;letter-spacing:.14em;border:2px solid var(--line);border-radius:12px;outline:none;font-family:inherit;text-transform:uppercase}.code-input:focus{border-color:var(--purple)}input[type=password]{text-transform:none;letter-spacing:normal}.btn{width:100%;margin-top:14px;padding:14px 16px;font-size:16px;font-weight:600;color:#fff;background:var(--purple);border:none;border-radius:12px;cursor:pointer}.btn:disabled{opacity:.5;cursor:default}.btn.sm{width:auto;padding:8px 14px;font-size:14px;margin:0}.err{color:var(--danger);font-size:14px;margin:14px 0 0}.foot-note{color:#6a6a80;font-size:13px;margin-top:22px}.shake{animation:shake .32s}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-7px)}75%{transform:translate(7px)}}.viewer{height:100%;display:flex;flex-direction:column;background:#000}.viewer-bar{height:46px;flex:0 0 46px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#0b0b18;color:#e6e6f0;border-bottom:1px solid #1c1c30}.viewer-title{font-size:14px;font-weight:600;color:#c9c9dc}.link{background:none;border:none;color:var(--purple-med);font:inherit;cursor:pointer;padding:6px 8px}.link:hover{color:#fff}.deck-frame{flex:1;width:100%;border:none;background:#fff}.admin{min-height:100%;background:#f4f4fa;color:var(--ink)}.admin-head{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;background:#fff;border-bottom:1px solid var(--line)}.admin-head .link{color:var(--purple)}.deck-block{max-width:1080px;margin:24px auto;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.deck-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.deck-head h2{margin:0 0 2px;font-size:19px}.deck-actions{display:flex;align-items:center;gap:12px}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}.dot.on{background:var(--ok)}.dot.off{background:#b9b9c8}.head-actions{display:flex;align-items:center;gap:16px}.upload-panel{max-width:1080px;margin:24px auto 0;background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px 24px}.upload-panel h3{margin:0 0 4px;font-size:18px}.upload-panel code{background:var(--purple-light);color:#4a35b0;padding:1px 6px;border-radius:5px;font-size:13px}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0 6px}.upload-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--ink)}.upload-grid input[type=text],.upload-grid input:not([type]){padding:10px 12px;border:1.5px solid var(--line);border-radius:9px;font:inherit;font-weight:400}.upload-grid input:focus{outline:none;border-color:var(--purple)}.upload-grid .file-label{grid-column:1 / -1}.upload-actions{display:flex;align-items:center;gap:14px;margin-top:12px}.upload-msg{max-width:1080px;margin:16px auto 0;color:var(--ok);font-weight:600}table.codes{width:100%;border-collapse:collapse;font-size:14px}.codes th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#9a9ab0;padding:10px 22px}.codes td{padding:12px 22px;border-top:1px solid var(--line)}.codes tr.revoked{opacity:.5}.codeval{font-family:ui-monospace,Menlo,monospace;background:var(--purple-light);color:#4a35b0;padding:4px 9px;border-radius:6px;cursor:pointer;letter-spacing:.08em}.row-actions{display:flex;gap:6px}.row-actions .link{color:var(--purple);font-size:13px}
