/* Guest-facing password screen for protected published pages (public/js/page-unlock-prompt.js).
   Self-contained so it renders correctly on the minimal shared.php document. */.page-unlock-overlay{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#faf7f4;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}.page-unlock-card{width:100%;max-width:380px;background:#ffffff;border-radius:1.25rem;box-shadow:0 10px 40px rgba(0, 0, 0, 0.08);padding:2.5rem 2rem;text-align:center;box-sizing:border-box}.page-unlock-icon{width:56px;height:56px;margin:0 auto 1.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#f3ece7;color:#b07d5f}.page-unlock-title{margin:0 0 0.5rem;font-size:1.375rem;font-weight:600;color:#2b2422}.page-unlock-help{margin:0 0 1.5rem;font-size:0.9375rem;line-height:1.4;color:#6b605a}.page-unlock-input{width:100%;box-sizing:border-box;padding:0.75rem 1rem;font-size:1rem;border:1px solid #e2d9d2;border-radius:0.75rem;outline:none;transition:border-color 0.15s ease,box-shadow 0.15s ease}.page-unlock-input:focus{border-color:#b07d5f;box-shadow:0 0 0 3px rgba(176, 125, 95, 0.15)}.page-unlock-error{margin-top:0.625rem;font-size:0.8125rem;color:#c0392b;text-align:left}.page-unlock-button{width:100%;margin-top:1.25rem;padding:0.8125rem 1rem;font-size:1rem;font-weight:600;color:#ffffff;background:#b07d5f;border:none;border-radius:0.75rem;cursor:pointer;transition:filter 0.15s ease,opacity 0.15s ease}.page-unlock-button:hover{filter:brightness(0.96)}.page-unlock-button:disabled{opacity:0.6;cursor:default}/* ---------------------------------------------------------------------------
   RSVP duplicate-answer dialog (public/js/shared.js) reuses the card styles
   above, but renders over a FULLY PAINTED template, not the minimal document.
   Snapshotted template CSS routinely restyles bare elements (button/h1/p
   resets, `* { font: inherit }`, serif heading fonts, uppercase, display
   overrides), and element selectors beat inherited values, so the contested
   properties are declared explicitly on these classes. *//* Translucent scrim: the dialog wants the page dimmed behind it, not hidden
   like the opaque password screen. */.page-unlock-overlay--scrim{background:rgba(43, 36, 34, 0.55)}/* Stacked action column. Side-by-side was tried first and rejected: inside the
   380px card each button was ~150px wide, so both labels wrapped to three or
   four lines. Full-width stacked buttons also match the password screen's
   single .page-unlock-button, which is the design language being reused. */.page-unlock-actions{display:flex;flex-direction:column;gap:0.75rem;margin-top:1.5rem}.page-unlock-actions .page-unlock-button{margin-top:0;width:100%}/* Secondary/ghost variant for the non-primary choice. */.page-unlock-button--secondary{background:transparent;color:#b07d5f;border:1px solid #d9c3b5}.page-unlock-button--secondary:hover{background:rgba(176, 125, 95, 0.08);filter:none}/* Defensive declarations against snapshotted template element selectors. */.page-unlock-title,.page-unlock-help,.page-unlock-error{font-family:inherit;text-transform:none;letter-spacing:normal}.page-unlock-button{display:inline-block;box-sizing:border-box;font-family:inherit;line-height:1.3;text-transform:none;letter-spacing:normal;text-align:center;box-shadow:none}/* A template rule declaring `display` on bare elements would defeat the UA
   stylesheet's [hidden] { display: none }, un-hiding the empty error slot. */.page-unlock-error[hidden]{display:none}/* Theme bridge — dialog variant ONLY.
   Every template declares a full design-token set on `body.theme-*` (34/34
   checked), so a dialog appended to document.body inherits it. Each token
   carries the untouched password-screen value as its fallback, so a document
   without tokens renders exactly as before.
   The password screen itself is deliberately excluded: it paints over the
   minimal shared.php document before any theme class exists, and it is a
   working screen nobody asked to restyle. */.page-unlock-overlay--scrim .page-unlock-card{background:var(--color-surface-raised, #ffffff);/* Anchor for the absolutely-positioned × close button. Scoped to the
       dialog variant so the password screen's card is untouched. */position:relative}/* × close button — dialog variant only; the password screen has no way out by
   design. 44x44 touch target (2.75rem), phones have no Escape key. Explicit
   background/border/font declarations are the same defence as above against
   snapshotted template element selectors restyling bare <button>. */.page-unlock-overlay--scrim .page-unlock-close{position:absolute;top:0.375rem;right:0.375rem;width:2.75rem;height:2.75rem;display:flex;align-items:center;justify-content:center;padding:0;margin:0;background:transparent;border:none;border-radius:50%;box-shadow:none;cursor:pointer;font-family:inherit;font-size:1.5rem;line-height:1;color:var(--color-on-surface-muted, #6b605a)}.page-unlock-overlay--scrim .page-unlock-close:hover{color:var(--color-on-surface, #2b2422)}.page-unlock-overlay--scrim .page-unlock-close:focus-visible{outline:2px solid var(--color-on-surface, #2b2422);outline-offset:2px}.page-unlock-overlay--scrim .page-unlock-title{color:var(--color-on-surface, #2b2422)}.page-unlock-overlay--scrim .page-unlock-help{color:var(--color-on-surface-muted, #6b605a)}.page-unlock-overlay--scrim .page-unlock-button{background:var(--color-primary, #b07d5f);color:var(--color-on-primary, #ffffff)}.page-unlock-overlay--scrim .page-unlock-button--secondary{background:transparent;color:var(--color-primary, #b07d5f);border-color:var(--color-border, #d9c3b5)}/* The primary button is focused on open, so the UA's blue ring would otherwise
   land on top of the themed card. Drawn in the surface's text colour, which
   contrasts against both the card and a filled primary button. */.page-unlock-overlay--scrim .page-unlock-button:focus-visible{outline:2px solid var(--color-on-surface, #2b2422);outline-offset:2px}