.web-session-banner { position:fixed;left:16px;right:16px;bottom:12px;z-index:5000;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 16px;border:1px solid var(--ui-border,#d5dce4);border-radius:10px;background:var(--ui-surface,#fff);color:var(--ui-text,#182438);box-shadow:0 4px 20px #0002;font:13px/1.4 sans-serif; }
.web-session-banner button { flex-shrink:0;cursor:pointer;padding:7px 12px;border:1px solid var(--ui-border,#d5dce4);border-radius:6px;background:transparent;color:inherit; }
.web-session-banner [hidden] { display:none; }
.web-session-inline { position:static;inset:auto;z-index:auto;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;gap:8px;font:11px/1.3 var(--font-body,sans-serif); }
.web-session-inline #webPersistenceText { max-width:190px; }
.web-session-inline button { min-height:32px;padding:5px 8px;font-size:11px; }
@media(max-width:700px){
  .topbar:has(.web-session-inline) { height:auto;min-height:var(--topbar-h);flex-wrap:wrap; }
  .topbar:has(.web-session-inline) .tl-right { flex-wrap:wrap; }
  .web-session-inline #webPersistenceText { max-width:140px; }
}
/* Optional president interface. This hides navigation, NOT access or API permissions. */
html[data-app-interface="quick-publish"] .tnav:not([href="quick-publish.html"]),
html[data-app-interface="quick-publish"] .competition-nav,
html[data-app-interface="quick-publish"] #qpStudioLink { display:none!important; }
/* The parent Quick Publish owns persistence UI; a second banner obscures the card footer. */
html.quick-publish-renderer .web-session-banner { display:none; }
.web-state-dialog { width:min(92vw,840px);max-height:85svh;overflow:auto;padding:24px;border:1px solid #d5dce4;border-radius:12px;background:var(--ui-surface,#fff);color:var(--ui-text,#182438);font:14px/1.5 system-ui,sans-serif; }
.web-state-dialog::backdrop { background:#0008; }
.web-state-dialog pre { max-height:220px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #d5dce4;padding:12px; }
.web-state-dialog form,.web-state-dialog label { display:grid;gap:8px; }
.web-state-dialog button,.web-state-dialog input { margin:6px 8px 6px 0;padding:10px;border:1px solid #d5dce4;border-radius:6px; }
[data-web-readonly] { cursor:not-allowed!important; }
html[data-runtime^="php"]:not([data-page="login"]):not([data-store-ready="1"]) body > :not(.web-session-banner) { visibility:hidden; }
.web-login-page { min-height:100svh;display:grid;place-items:center;margin:0;padding:24px;background:var(--ui-bg,#f5f7fa);font-family:system-ui,sans-serif; }
.web-login-card { width:min(100%,400px);padding:28px;border:1px solid var(--ui-border,#d5dce4);border-radius:16px;background:var(--ui-surface,#fff); }
.web-login-card h1 { margin:0 0 8px; }
.web-login-card form { display:grid;gap:10px;margin:24px 0 16px; }
.web-login-card label { font-weight:600; }
.web-login-card button { margin-top:8px; }
.web-login-card input:focus-visible,.web-login-card button:focus-visible,.web-session-banner button:focus-visible { outline:3px solid #46789e;outline-offset:3px; }
@media(max-width:600px) { .web-session-banner { left:8px;right:8px;bottom:8px;font-size:11px;padding:8px;gap:8px; }.web-login-card { padding:20px; } }
