body.phantasm-locked>.app{visibility:hidden}
#phantasm-auth{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 48% 12%,#2e1e53,#090d17 60%);color:#f6f2ff;font-family:Inter,system-ui,sans-serif}
#phantasm-auth[hidden]{display:none}
#phantasm-transition{position:fixed;inset:0;z-index:99999;display:flex;
  align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(circle at 48% 12%,#2e1e53,#090d17 60%);
  color:#f6f2ff;font-family:Inter,system-ui,sans-serif}
#phantasm-transition[hidden]{display:none}
#phantasm-transition .auth-card{width:min(425px,100%);padding:35px 34px;
  border:1px solid #63429c;border-radius:20px;background:#141b29;
  box-shadow:0 28px 100px #0008;text-align:center}
#phantasm-transition .auth-logo{width:104px;height:104px;object-fit:cover;
  border-radius:14px;border:1px solid #704ca4;margin:0 auto 14px}
#phantasm-transition h1{font-size:22px;margin:0 0 18px;color:white}
#phantasm-transition p{font-size:13px;color:#c6b8ea;margin:18px 0 0}
#phantasm-transition .auth-spinner{width:34px;height:34px;margin:0 auto;
  border:3px solid #604783;border-top-color:#e0bbff;border-radius:50%;
  animation:phantasm-spin .8s linear infinite}
@keyframes phantasm-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){#phantasm-transition .auth-spinner{animation:none}}
#phantasm-auth .auth-card{width:min(425px,100%);max-height:calc(100vh - 48px);overflow-y:auto;padding:35px 34px;border:1px solid #63429c;border-radius:20px;background:#141b29;box-shadow:0 28px 100px #0008;text-align:center}
#phantasm-auth .auth-logo{width:104px;height:104px;object-fit:cover;border-radius:14px;border:1px solid #704ca4;margin:0 auto 14px}
#phantasm-auth h1{font-size:22px;margin:0 0 3px;color:white}
#phantasm-auth p{margin:0 0 22px;color:#aeb7c8;font-size:13px}
#phantasm-auth label{display:block;text-align:left;font-size:12px;color:#d1d6e3;margin:13px 0 5px}
#phantasm-auth input{display:block;width:100%;box-sizing:border-box;padding:12px 13px;border:1px solid #444b62;border-radius:9px;background:#0e1421;color:white;font-size:14px}
#phantasm-auth button,#phantasm-admin button{border:1px solid #7258ab;border-radius:9px;background:#39265b;color:white;padding:10px 15px;cursor:pointer}
#phantasm-auth button.primary{display:block;width:100%;margin-top:18px;padding:13px;background:#7340be;border-color:#9863e3;font-weight:800}
#phantasm-auth button:disabled,#phantasm-admin button:disabled{opacity:.55;cursor:wait}
#phantasm-auth .auth-links{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:15px}
#phantasm-auth .auth-links button{border:0;background:none;color:#d1b3ff;font-size:12px;padding:5px}
#phantasm-auth #authMessage{margin:14px 0 0;line-height:1.5;color:#ffd99e;min-height:19px}
#phantasm-auth .auth-foot{margin-top:18px;color:#8693a9;font-size:11px}
#phantasm-auth .auth-onboarding-card{width:min(495px,100%);text-align:left}
#phantasm-auth .auth-onboarding-card>.auth-logo{display:block}
#phantasm-auth .auth-onboarding-card>h1{text-align:center}
#phantasm-auth .auth-onboarding-card>p:first-of-type{text-align:center;margin:6px 0 20px}
#phantasm-auth .auth-workspace-types{border:0;margin:0;padding:0;display:grid;gap:9px}
#phantasm-auth .auth-workspace-types legend{font-size:12px;font-weight:800;color:#ded4f4;
  text-align:left;padding:0 0 8px}
#phantasm-auth .auth-workspace-types label{display:flex;gap:12px;align-items:center;
  margin:0;border:1px solid #485474;background:#1a2132;padding:12px;border-radius:11px;
  color:#f3f0fc;cursor:pointer}
#phantasm-auth .auth-workspace-types label:has(input:checked){border-color:#b18ef0;background:#302347}
#phantasm-auth .auth-workspace-types input{width:17px;height:17px;margin:0;accent-color:#ab7aed;flex:0 0 auto}
#phantasm-auth .auth-workspace-types strong{display:block;font-size:13px}
#phantasm-auth .auth-workspace-types small{display:block;color:#b5bcd0;font-size:11px;
  line-height:1.45;margin-top:3px}
#phantasm-auth .auth-onboarding-card p.auth-workspace-note{font-size:11px;line-height:1.6;
  color:#aebad2;margin:12px 0}
#phantasm-auth .auth-onboarding-card #authOnboardingMessage{color:#ffd99e;
  line-height:1.5;min-height:17px;font-size:12px;margin:12px 0}
#phantasm-auth .auth-onboarding-logout{display:block;margin:10px auto 0}
#phantasm-auth .auth-onboarding-card .auth-foot{text-align:center}
#phantasm-account-actions{display:flex;gap:8px;align-items:center;margin-left:auto}
#phantasm-account-actions button{border:1px solid #624a91;border-radius:8px;padding:8px 12px;background:#211a37;color:white;font-size:12px;cursor:pointer}
#phantasm-admin{width:min(640px,calc(100vw - 32px));max-height:85vh;overflow:auto;border:1px solid #654b9c;border-radius:16px;background:#151c2a;color:#f3efff;padding:22px}
#phantasm-admin::backdrop{background:#020510b9}
#phantasm-admin .admin-row{display:flex;gap:9px;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid #363a55;flex-wrap:wrap;font-size:13px}
#phantasm-admin .admin-row>span{min-width:0;overflow-wrap:anywhere;flex:1 1 170px}
#phantasm-admin .admin-help{color:#aeb7c8;font-size:12px;line-height:1.5;margin:-4px 0 12px}
#phantasm-admin .admin-member-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#phantasm-admin .admin-self{color:#b1a8c3;font-size:11px;font-weight:700}
#phantasm-admin button.admin-revoke{background:#50212c;border-color:#a45264;color:#ffe2e6;font-weight:750;font-size:12px}
#phantasm-admin button.admin-revoke:hover,#phantasm-admin button.admin-revoke:focus-visible{background:#7c2738;border-color:#f08ca2}
#phantasm-admin input,#phantasm-admin select{background:#101726;border:1px solid #4e5370;color:white;padding:9px;border-radius:7px}
#phantasm-admin .admin-field{display:flex;gap:8px;flex-wrap:wrap}
#phantasm-role-tag{font-size:11px;color:#f2dcff;border:1px solid #775b9e;border-radius:7px;padding:6px 9px}
body.phantasm-player #mapStage,body.phantasm-player .toolbar,body.phantasm-player #newPlay,body.phantasm-player #duplicatePlay,body.phantasm-player #deletePlay,body.phantasm-player #undoBtn,body.phantasm-player #clearBtn,body.phantasm-player #addMap,body.phantasm-player #changeImage,body.phantasm-player #placeA,body.phantasm-player #placeB{pointer-events:none!important;opacity:.55}
body.phantasm-player #playName,body.phantasm-player #playNotes,body.phantasm-player #rosterInputs input{pointer-events:none;opacity:.65}
