{"id":15,"date":"2025-12-31T11:45:05","date_gmt":"2025-12-31T11:45:05","guid":{"rendered":"https:\/\/smartstay.boldrdigital.com\/?page_id=15"},"modified":"2025-12-31T12:11:34","modified_gmt":"2025-12-31T12:11:34","slug":"smartstay","status":"publish","type":"page","link":"https:\/\/smartstay.boldrdigital.com\/","title":{"rendered":"SmartStay"},"content":{"rendered":"\n<!-- Updated Login View to match Custom WP Login Style -->\n<style>\n\/* Fix for WordPress Block Theme Margins - Overwrite global styles *\/\n:where(.wp-site-blocks) > * {\n    margin-block-start: 0px !important;\n    margin-block-end: 0px !important;\n}\n\n\/* --- PAGE LAYOUT --- *\/\n.ss-login-container {\n    background-color: #FFFFFF;\n    font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    min-height: 100vh;\n    margin: 0;\n    padding: 20px;\n    overflow: hidden;\n    position: relative;\n}\n\n\/* --- LOGO --- *\/\n.ss-login-logo {\n    margin: 0 0 20px 0;\n    padding: 0;\n    text-align: center;\n}\n.ss-login-logo img {\n    max-width: 84px;\n    height: auto;\n    margin-bottom: 10px;\n}\n.ss-login-logo i {\n    font-size: 50px;\n    color: #242162; \/* Brand Color *\/\n}\n\n\/* --- LOGIN CARD --- *\/\n.ss-login-form-wrapper {\n    background: #FFFFFF;\n    border: none;\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.05), 0 10px 10px -5px rgba(0, 0, 0, 0.01);\n    border-radius: 30px;\n    padding: 40px 30px;\n    position: relative;\n    z-index: 10;\n    width: 100%;\n    max-width: 360px;\n}\n\n\/* --- LABELS --- *\/\n.ss-login-form-wrapper label {\n    font-size: 14px;\n    color: #374151;\n    font-weight: 600;\n    margin-bottom: 8px;\n    display: block;\n}\n\n\/* --- INPUTS --- *\/\n.ss-login-form-wrapper input[type=text], \n.ss-login-form-wrapper input[type=password] {\n    background: #F3F4F6 !important;\n    border: 1px solid transparent !important;\n    border-radius: 12px;\n    color: #1F2937;\n    font-size: 16px;\n    padding: 12px 15px;\n    box-shadow: none !important;\n    margin-bottom: 20px;\n    font-weight: 500;\n    min-height: auto !important;\n    width: 100%;\n    box-sizing: border-box;\n}\n\n.ss-login-form-wrapper input[type=text]:focus, \n.ss-login-form-wrapper input[type=password]:focus {\n    background: #FFFFFF !important;\n    border: 1px solid #242162 !important;\n    box-shadow: 0 0 0 3px rgba(36, 33, 98, 0.1) !important;\n    outline: none;\n}\n\n\/* --- LOGIN BUTTON --- *\/\n.ss-login-btn {\n    background: #242162 !important;\n    border-color: #242162 !important;\n    box-shadow: none !important;\n    color: #fff !important;\n    text-shadow: none !important;\n    width: 100%;\n    border: none;\n    border-radius: 50px !important;\n    padding: 12px 0 !important;\n    height: auto !important;\n    font-size: 16px !important;\n    font-weight: 600 !important;\n    margin-top: 5px;\n    transition: all 0.2s ease;\n    cursor: pointer;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n}\n\n.ss-login-btn:hover {\n    opacity: 0.9;\n    transform: translateY(-1px);\n}\n\n\/* --- ADMIN LINK --- *\/\n.ss-admin-link {\n    margin-top: 20px;\n    text-align: center;\n    width: 100%;\n    display: block;\n}\n.ss-admin-link a {\n    color: #9CA3AF;\n    font-size: 13px;\n    text-decoration: none;\n    font-weight: normal;\n    transition: color 0.2s;\n}\n.ss-admin-link a:hover {\n    color: #242162;\n}\n\n\n\/* --- FOOTER --- *\/\n.ss-login-footer {\n    margin-top: 30px;\n    text-align: center;\n    font-size: 13px;\n    color: #9CA3AF;\n}\n.ss-login-footer a {\n    color: #64748b;\n    text-decoration: none;\n    font-weight: 600;\n}\n.ss-login-footer a:hover {\n    color: #242162;\n}\n\n\/* Error Toast Style override for this view *\/\n.ss-error-toast {\n    background-color: #FEF2F2;\n    border-left: 4px solid #EF4444;\n    color: #B91C1C;\n    padding: 1rem;\n    margin-bottom: 1.5rem;\n    border-radius: 0 0.5rem 0.5rem 0;\n    font-size: 0.875rem;\n}\n<\/style>\n\n<div class=\"ss-login-container\">\n\t\n\t<!-- Logo \/ Icon -->\n\t<div class=\"ss-login-logo\">\n        <img decoding=\"async\" src=\"https:\/\/smartstay.boldrdigital.com\/wp-content\/uploads\/2025\/12\/cropped-smartstay-sq2.png\" alt=\"SmartStay\">\t<\/div>\n\n\t<!-- Login Form -->\n\t<div class=\"ss-login-form-wrapper\">\n\t\t\n        <!-- BIOMETRIC BUTTON -->\n        <button type=\"button\" onclick=\"smartStayApp.loginPasskey()\" class=\"ss-login-btn\" style=\"background: #fff !important; color: #242162 !important; border: 2px solid #242162 !important; margin-bottom: 20px;\">\n            <i class=\"fa-solid fa-fingerprint mr-2\"><\/i> <span>Biometric Login<\/span>\n        <\/button>\n\n        <div style=\"text-align: center; color: #9CA3AF; font-size: 12px; margin-bottom: 20px;\">\u2014 OR \u2014<\/div>\n\n\t\t<!-- Error Toast -->\n\t\t\n\t\t<form method=\"post\" action=\"\">\n\t\t\t<input type=\"hidden\" id=\"ss_login_nonce\" name=\"ss_login_nonce\" value=\"61b266e25e\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F15\" \/>\t\t\t\n            <div>\n                <label for=\"ss_username\">Username<\/label>\n                <input type=\"text\" id=\"ss_username\" name=\"ss_username\" required placeholder=\"e.g. GuestName\">\n            <\/div>\n\n            <div>\n                <label for=\"ss_pin\">PIN Code<\/label>\n                <input type=\"password\" id=\"ss_pin\" name=\"ss_pin\" required placeholder=\"\u2022\u2022\u2022\u2022\">\n            <\/div>\n\n            <button type=\"submit\" name=\"ss_login_submit\" class=\"ss-login-btn\">\n                <span>Sign In<\/span>\n                <i class=\"fa-solid fa-arrow-right ml-2\"><\/i>\n            <\/button>\n\t\t<\/form>\n        \n        <!-- Admin Link directly under form -->\n        <div class=\"ss-admin-link\">\n             <a href=\"https:\/\/smartstay.boldrdigital.com\/wp-login.php\">Admin Login<\/a>\n        <\/div>\n\n\t<\/div>\n\n\t<!-- Footer \/ Support -->\n\t<div class=\"ss-login-footer\">\n        SmartStay v1.5.2 | Built by <a href=\"https:\/\/boldrdigital.com\" target=\"_blank\">Boldr Digital<\/a>\n\t<\/div>\n\n    <!-- PWA Install Banner Partial -->\n    \n<div id=\"smartstay-pwa-toast\" class=\"ss-pwa-hidden\">\n    <!-- Header \/ Main Row -->\n    <div class=\"ss-pwa-main-row\">\n        <div class=\"ss-pwa-content\">\n            <div class=\"ss-pwa-icon-box\">\n                <img decoding=\"async\" src=\"https:\/\/smartstay.boldrdigital.com\/wp-content\/uploads\/2025\/12\/cropped-smartstay-sq2.png\" alt=\"App Icon\">\n            <\/div>\n            \n            <div class=\"ss-pwa-text\">\n                <span class=\"ss-pwa-title\">Install SmartStay<\/span>\n                <span class=\"ss-pwa-subtitle\">For the best experience.<\/span>\n            <\/div>\n        <\/div>\n\n        <div class=\"ss-pwa-actions\">\n            <button id=\"pwa-install-btn\">Install<\/button>\n            <button id=\"pwa-dismiss-btn\" aria-label=\"Close\">&times;<\/button>\n        <\/div>\n    <\/div>\n\n    <!-- iOS Instructions (Hidden by default) -->\n    <div id=\"ss-ios-steps\" class=\"ss-ios-hidden\">\n        <div class=\"ss-ios-divider\"><\/div>\n        <div class=\"ss-step\">\n            <div class=\"ss-step-icon\"><i class=\"fa-solid fa-arrow-up-from-bracket\"><\/i><\/div>\n            <div class=\"ss-step-text\">1. Tap the <strong>Share<\/strong> button<\/div>\n        <\/div>\n        <div class=\"ss-step\">\n            <div class=\"ss-step-icon\"><i class=\"fa-regular fa-square-plus\"><\/i><\/div>\n            <div class=\"ss-step-text\">2. Select <strong>Add to Home Screen<\/strong><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<style>\n\/* Container: Floating Glass Card *\/\n#smartstay-pwa-toast {\n    position: fixed;\n    bottom: 24px;\n    left: 50%;\n    transform: translateX(-50%);\n    width: 92%; \/* Slightly wider on mobile *\/\n    max-width: 400px;\n    \n    \/* Glassmorphism Effect *\/\n    background: rgba(255, 255, 255, 0.98);\n    backdrop-filter: blur(20px);\n    -webkit-backdrop-filter: blur(20px);\n    border: 1px solid rgba(255, 255, 255, 0.8);\n    \n    \/* Shadow & Shape *\/\n    box-shadow: \n        0 4px 20px rgba(0, 0, 0, 0.08), \n        0 0 0 1px rgba(0,0,0,0.04);\n    border-radius: 20px;\n    padding: 14px;\n    \n    \/* Layout *\/\n    display: flex;\n    flex-direction: column;\n    z-index: 999999;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n    \n    \/* Animation Initial State *\/\n    opacity: 0;\n    visibility: hidden;\n    transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n\/* Visible State *\/\n#smartstay-pwa-toast.ss-pwa-visible {\n    opacity: 1;\n    visibility: visible;\n    transform: translateX(-50%) translateY(0);\n}\n\n\/* Hidden State *\/\n#smartstay-pwa-toast.ss-pwa-hidden {\n    transform: translateX(-50%) translateY(20px);\n    pointer-events: none;\n}\n\n\/* Main Row Layout *\/\n.ss-pwa-main-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n}\n\n\/* Content Wrapper *\/\n.ss-pwa-content {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    flex: 1; \n    min-width: 0; \/* Critical for text wrapping *\/\n    padding-right: 8px;\n}\n\n\/* Icon Box *\/\n.ss-pwa-icon-box {\n    width: 44px;\n    height: 44px;\n    background: #f1f5f9;\n    border-radius: 10px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    flex-shrink: 0;\n    border: 1px solid rgba(0,0,0,0.05);\n}\n\n.ss-pwa-icon-box img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n}\n\n\/* Typography *\/\n.ss-pwa-text {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    min-width: 0; \/* Allow flex child to shrink *\/\n}\n\n.ss-pwa-title {\n    font-size: 15px;\n    font-weight: 600;\n    color: #0f172a; \n    line-height: 1.2;\n    margin-bottom: 2px;\n}\n\n.ss-pwa-subtitle {\n    font-size: 13px;\n    color: #64748b; \n    font-weight: 400;\n    line-height: 1.4;\n    \n    \/* FORCE WRAP overrides *\/\n    white-space: normal !important;\n    overflow: visible !important;\n    text-overflow: clip !important;\n    word-wrap: break-word !important;\n    overflow-wrap: break-word !important;\n\n    \/* RESET Legacy Mobile Styles causing ... *\/\n    display: block !important;\n    -webkit-line-clamp: none !important;\n    -webkit-box-orient: unset !important;\n}\n\n\/* Action Buttons *\/\n.ss-pwa-actions {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    flex-shrink: 0; \n}\n\n#pwa-install-btn {\n    background-color: #007AFF; \/* iOS Blue *\/\n    color: white;\n    border: none;\n    padding: 6px 16px;\n    border-radius: 99px;\n    font-size: 13px;\n    font-weight: 600;\n    cursor: pointer;\n    box-shadow: 0 2px 6px rgba(0, 122, 255, 0.2);\n    transition: transform 0.2s ease, background-color 0.2s;\n    white-space: nowrap;\n    \n    \/* Important for iOS visibility logic *\/\n    display: inline-block;\n}\n\n#pwa-install-btn:active {\n    transform: scale(0.96);\n    background-color: #0066d6;\n}\n\n#pwa-dismiss-btn {\n    background: rgba(0,0,0,0.05);\n    border: none;\n    color: #94a3b8;\n    width: 28px;\n    height: 28px;\n    border-radius: 50%;\n    font-size: 18px;\n    line-height: 1;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.2s;\n}\n\n#pwa-dismiss-btn:hover {\n    background: rgba(0,0,0,0.1);\n    color: #475569;\n}\n\n\/* iOS Instructions Styles *\/\n#ss-ios-steps {\n    overflow: hidden;\n    max-height: 0;\n    opacity: 0;\n    transition: all 0.3s ease-in-out;\n}\n\n#ss-ios-steps.ss-ios-visible {\n    max-height: 200px;\n    opacity: 1;\n    padding-top: 4px;\n}\n\n.ss-ios-divider {\n    height: 1px;\n    background: rgba(0,0,0,0.06);\n    margin: 10px 0 14px 0;\n    width: 100%;\n}\n\n.ss-step {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin-bottom: 12px;\n    color: #334155;\n    background: rgba(255,255,255,0.5);\n    padding: 8px;\n    border-radius: 8px;\n}\n\n.ss-step-icon {\n    width: 24px;\n    height: 24px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 18px;\n    color: #007AFF;\n}\n\n.ss-step-text {\n    font-size: 13px;\n    line-height: 1.3;\n}\n\n.ss-step-text strong {\n    font-weight: 600;\n    color: #0f172a;\n}\n<\/style>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n    let deferredPrompt;\n    const installBanner = document.getElementById('smartstay-pwa-toast');\n    const installButton = document.getElementById('pwa-install-btn');\n    const closeButton = document.getElementById('pwa-dismiss-btn');\n    const iosSteps = document.getElementById('ss-ios-steps');\n\n    if (!installBanner) return;\n\n    \/\/ 1. Check if already installed or dismissed\n    const isStandalone = window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone;\n    const isDismissed = sessionStorage.getItem('pwa-dismissed') === 'true';\n\n    if (isStandalone || isDismissed) {\n        return;\n    }\n\n    \/\/ 2. Detect Platform (Improved for iPadOS)\n    const isIOS = \/iPad|iPhone|iPod\/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\n\n    \/\/ 3. Logic\n    if (isIOS) {\n        \/\/ iOS: Show banner immediately (with delay)\n        setTimeout(() => {\n            installBanner.classList.remove('ss-pwa-hidden');\n            installBanner.classList.add('ss-pwa-visible');\n        }, 1500);\n\n        \/\/ Explicitly show button\n        if (installButton) {\n            installButton.style.display = 'inline-block';\n            installButton.innerText = 'Install';\n            \n            installButton.addEventListener('click', (e) => {\n                e.preventDefault();\n                e.stopPropagation();\n\n                if (iosSteps.classList.contains('ss-ios-visible')) {\n                    return; \n                }\n                \n                \/\/ Expand instructions\n                iosSteps.classList.add('ss-ios-visible');\n                \n                \/\/ Hide button after click to clean up UI\n                installButton.style.display = 'none';\n            });\n        }\n\n    } else {\n        \/\/ Android \/ Desktop Chrome\n        window.addEventListener('beforeinstallprompt', (e) => {\n            e.preventDefault();\n            deferredPrompt = e;\n            installBanner.classList.remove('ss-pwa-hidden');\n            installBanner.classList.add('ss-pwa-visible');\n        });\n\n        if (installButton) {\n            installButton.addEventListener('click', async (e) => {\n                \/\/ Safety check: ensure we don't fire this on iOS\n                if(isIOS) return;\n\n                installBanner.classList.remove('ss-pwa-visible');\n                installBanner.classList.add('ss-pwa-hidden');\n                \n                if (deferredPrompt) {\n                    deferredPrompt.prompt();\n                    const { outcome } = await deferredPrompt.userChoice;\n                    deferredPrompt = null;\n                }\n            });\n        }\n    }\n\n    \/\/ Dismiss Logic\n    function dismissBanner() {\n        installBanner.classList.remove('ss-pwa-visible');\n        installBanner.classList.add('ss-pwa-hidden');\n        sessionStorage.setItem('pwa-dismissed', 'true');\n    }\n\n    if (closeButton) {\n        closeButton.addEventListener('click', dismissBanner);\n    }\n});\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":2,"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":29,"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions\/29"}],"wp:attachment":[{"href":"https:\/\/smartstay.boldrdigital.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}