@use 'mixins' as *; // ---------- Sign in ---------- // Anyone may read Mathew; writing it takes an account. The gate is what a // signed-out visitor of the editor finds in the form's place (AuthGate.vue), and // the popup is the way in from anywhere (AuthModal.vue). The popup sits above the // fullscreen editor (1000) and its own popups (1100, 1150): a save that comes // back refusing an expired session has to be answered where the editor already // fills the screen. .auth-overlay { @include overlay(1160); } .auth-modal { @include sheet(420px); &:focus, &:focus-visible { outline: none; } } .auth-modal-head { @include sheet-head; } .auth-title { @include sheet-title; } .auth-modal-body { padding: 18px; } // the two ways in, side by side .auth-tabs { @include segmented; margin-bottom: 18px; } .auth-tab { @include segmented-tab(7px 14px, 0.84rem); } // why the popup turned up on its own — a session that expired mid-draft .auth-notice { margin: -6px 0 16px; padding: 10px 12px; border: 1px solid color-mix(in srgb, var(--danger) 30%, var(--border)); border-radius: 10px; background: color-mix(in srgb, var(--danger) 7%, var(--surface)); color: var(--muted); font-size: 0.84rem; line-height: 1.5; } .auth-modal .field input { width: 100%; padding: 12px 14px; border-radius: 11px; border: 1px solid var(--border); background: var(--bg-elev); } .auth-submit { width: 100%; margin-top: 2px; } .auth-switch { margin: 16px 0 0; text-align: center; font-size: 0.84rem; color: var(--muted); button { color: var(--accent); font-weight: 650; &:hover { text-decoration: underline; } } } @include popup-anim( 'auth-popup', '.auth-modal', 0.16s, transform 0.2s cubic-bezier(0.22, 0.61, 0.36, 1), -10px ); // the editor's stand-in until there is a session .auth-gate { max-width: 480px; margin: clamp(36px, 8vh, 92px) auto; padding: 34px 30px 30px; border: 1px solid var(--border); border-radius: 18px; background: var(--bg-elev); box-shadow: var(--shadow-lg); text-align: center; } .auth-gate-mark { display: grid; place-items: center; width: 46px; height: 46px; margin: 0 auto 16px; border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border)); border-radius: 50%; background: color-mix(in srgb, var(--accent) 10%, transparent); color: var(--accent); } .auth-gate-title { margin: 0 0 8px; font-size: 1.3rem; letter-spacing: -0.01em; color: var(--text); } .auth-gate-text { max-width: 38ch; margin: 0 auto 22px; color: var(--muted); font-size: 0.93rem; line-height: 1.6; } .auth-gate-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; } .auth-gate-fine { margin: 18px 0 0; font-size: 0.8rem; color: var(--faint); }