/* Fail closed before scripts run; no local/session storage flag unlocks the shell. */
html:not([data-shell-ready="true"]) body > :not(#traxticAccess):not(#traxBoot):not(script):not(style):not(link){display:none!important}
/* Existing startup composition, now owned by the auth/readiness barrier rather than legacy timers. */
html:not([data-startup-state="ready"]) body{overflow:hidden!important}
html:not([data-startup-state="ready"]) #traxticAccess{display:none!important}
.trax-boot{position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:#fff;color:#1a1c1f;overflow:hidden}
.trax-boot-stage{position:relative;display:grid;justify-items:center;text-align:center;width:min(720px,88vw);padding:42px 24px}
.trax-boot-logo-panel{width:min(500px,76vw);aspect-ratio:1496/386}
.trax-boot-full-logo{display:block;width:100%;height:auto;object-fit:contain;filter:none;opacity:1;transform:none}
.trax-boot-copy{display:none}
.trax-boot-progress{width:220px;height:2px;background:#e4dfda;border-radius:999px;overflow:hidden;margin-top:2px}
.trax-boot-progress i{display:block;width:44%;height:100%;background:linear-gradient(90deg,transparent,#f94006 30%,#ff7650 70%,transparent);animation:traxStartupProgress 1.05s ease-in-out infinite}
@keyframes traxStartupProgress{from{transform:translateX(-135%)}to{transform:translateX(260%)}}
@media(max-width:560px){.trax-boot-stage{padding:32px 18px}.trax-boot-logo-panel{width:min(430px,86vw)}.trax-boot-progress{width:170px}}
@media(prefers-reduced-motion:reduce){.trax-boot-progress i{animation:none}}
#traxticAccess{min-height:100dvh;display:grid;place-items:center;padding:32px 20px;background:var(--bg);color:var(--text);outline:none}
#traxticAccess[hidden]{display:none}
.traxtic-access-card{width:min(100%,420px);padding:32px;border:1px solid var(--line);border-radius:var(--radius,18px);background:var(--panel);box-shadow:var(--shadow)}
.traxtic-access-logo{display:block;width:170px;height:auto;margin:0 0 28px;padding:12px;background:#fff;border-radius:10px}
.traxtic-access-card h1{font-size:24px;line-height:1.3;margin:0 0 8px;font-weight:600}
.traxtic-access-card .section-kicker{margin-bottom:8px}
.traxtic-access-card form{display:grid;gap:18px;margin-top:24px}
.traxtic-access-card .form-field{display:grid;gap:8px;min-width:0}
.traxtic-access-card input{width:100%;box-sizing:border-box}
.traxtic-access-card [data-access-message]{color:var(--text-soft);line-height:1.5;min-height:3em;margin-top:18px}
.traxtic-security-sections{display:grid;gap:16px;margin-bottom:24px}
.traxtic-security-sections .setting-group{margin:0}
.traxtic-security-sections p,.traxtic-permission-note{color:var(--text-soft);line-height:1.5}
.traxtic-assignment-permissions{display:grid;gap:10px}
.traxtic-assignment-permission{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,1fr);gap:12px;align-items:center}
.traxtic-assignment-permission small{display:block;color:var(--text-soft);margin-top:4px}
@media(max-width:600px){.traxtic-assignment-permission{grid-template-columns:1fr}.traxtic-access-card{padding:24px}}
.traxtic-assignment-permission{grid-template-columns:minmax(0,1fr)}
.traxtic-assignment-permission>div{min-width:0;overflow-wrap:anywhere}
#actionModal.traxtic-logout-confirm{z-index:1001;background:transparent!important}
#actionModal.traxtic-logout-confirm .action-modal-card{width:min(440px,calc(100vw - 32px))!important;min-width:0;max-height:calc(100dvh - 32px)}
#actionModal.traxtic-logout-confirm :is(#actionModalKicker,#actionModalSub){display:none}
#actionModal.traxtic-logout-confirm .modal-footer{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
