/* Cloud login and small feedback elements. No continuous decorative animation. */
.cloud-locked body>.shell,.cloud-locked body>#toast,.cloud-locked body>.mobile-dock{visibility:hidden!important;}
.cloud-locked .mobile-dock{display:none!important;}
.auth-backdrop{position:fixed;inset:0;z-index:9000;min-height:100svh;overflow:auto;display:grid;place-items:center;padding:24px 12px;background:radial-gradient(ellipse at 80% 0%,var(--tp-authBg) 0,transparent 56%),var(--tp-authBg);}
.auth-panel{width:min(448px,100%);padding:33px clamp(22px,5vw,38px);background:var(--tp-authCard);border:1px solid var(--tp-border);border-radius:16px;box-shadow:0 22px 65px color-mix(in srgb, var(--tp-shadow) 40.0%, transparent);}
.auth-tag{color:var(--tp-accent);font-size:11px;letter-spacing:.11em;font-weight:700;margin-bottom:14px;}
.auth-emblem{width:51px;height:51px;background:var(--tp-accent);border-radius:12px;display:grid;place-items:center;font-size:27px;font-weight:800;color:var(--tp-accentText);}
.auth-panel h1{font-family:"Onest","Manrope",sans-serif;font-size:clamp(30px,7vw,40px);line-height:1.07;letter-spacing:-.045em;color:var(--tp-heading);margin:20px 0 11px;font-weight:800;}
.auth-lead{font-size:13px;color:var(--tp-text);line-height:1.7;margin:0 0 24px;}
.auth-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin-bottom:17px;background:var(--tp-button);border:1px solid var(--tp-border);border-radius:10px;}
.auth-switch button{background:transparent;color:var(--tp-buttonText);border:0;border-radius:7px;padding:12px 7px;font-size:12px;font-weight:700;cursor:pointer;}
.auth-switch button.on{background:var(--tp-accent);color:var(--tp-accentText);}
.auth-panel form label{display:block;color:var(--tp-text);font-size:12px;font-weight:600;margin:15px 0;}
.auth-panel form input{display:block;width:100%;margin-top:8px;padding:12px 14px;min-height:48px;color:var(--tp-heading);background:var(--tp-input);border:1px solid var(--tp-border);border-radius:9px;font-size:14px;outline:none;}
.auth-panel form input:focus{border-color:var(--tp-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--tp-accent) 9.8%, transparent);}
.auth-message{color:var(--tp-success);font-size:12px;min-height:17px;line-height:1.55;}.auth-message.error{color:var(--tp-danger);}
.auth-submit{width:100%;margin-top:7px;min-height:51px;border:0;border-radius:9px;background:var(--tp-accent);color:var(--tp-accentText);font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:space-between;padding:0 17px;cursor:pointer;transition:background-color .2s ease;}
.auth-submit:hover:not(:disabled){background:var(--tp-accentHover);}.auth-submit:disabled{opacity:.55;cursor:wait;}
.auth-foot{color:var(--tp-muted);font-size:11px;line-height:1.6;margin-top:24px;}
.cloud-sync-label{font-size:14px;font-weight:700;color:var(--tp-success);letter-spacing:.02em;margin:8px 0 12px;white-space:nowrap;}
.cloud-sync-label .dot{display:inline-block;margin-right:7px;}.cloud-user-btn{color:var(--tp-success)!important;border-color:var(--tp-success)!important;}
.fx-float{position:fixed;pointer-events:none;z-index:5000;color:var(--tp-heading);font-weight:800;font-size:15px;animation:fx-float .8s ease-out both;transform:translate(-50%,0);}
@keyframes fx-float{0%{opacity:0;transform:translate(-50%,4px);}20%{opacity:1;}100%{opacity:0;transform:translate(-50%,-24px);}}
.fx-update{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:1500;background:var(--tp-toast);border:1px solid var(--tp-success);border-radius:10px;padding:10px 13px;display:flex;align-items:center;gap:14px;box-shadow:0 10px 34px color-mix(in srgb, var(--tp-shadow) 60.0%, transparent);color:var(--tp-heading);font-size:13px;font-weight:650;max-width:calc(100vw - 24px);}
.fx-update button{border:0;border-radius:7px;background:var(--tp-success);color:var(--tp-buttonText);padding:9px 12px;font-weight:750;cursor:pointer;}
.fx-update .fx-update-close{padding:4px 7px;background:transparent;color:var(--tp-heading);font-size:20px;font-weight:500;line-height:1.2;}
.fx-update .fx-update-close:hover{background:color-mix(in srgb, var(--tp-toast) 10.2%, transparent);}
@media(max-width:400px){.fx-update{gap:9px;padding:8px 9px;font-size:11px;}.fx-update button{padding:8px 9px;}}
@media(max-width:760px){.fx-update{bottom:calc(93px + env(safe-area-inset-bottom,0px));}}
