:root {
            --accent: #ff3347;
            --accent-glow: rgba(255, 51, 71, 0.38);
            --ink: #141a24;
            --muted: #5e6b7d;
            --danger: #dc2626;
        }
        * { box-sizing: border-box; }
        .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
        html, body {
            margin: 0;
            min-height: 100svh;
            font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
        }
        body {
            background: #f7f9fa url('../bg_login.jpg') center/cover no-repeat fixed;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 16px;
            position: relative;
            overflow-x: hidden;
        }
        /* Luminous bright veil */
        body::before {
            content: "";
            position: fixed;
            inset: 0;
            background: linear-gradient(180deg, rgba(255,255,255,0.45) 0%, rgba(255,255,255,0.68) 45%, rgba(255,255,255,0.84) 100%);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            z-index: 0;
        }
        .phone-lock-gate {
            position: relative;
            z-index: 1;
            width: min(400px, 94vw);
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: 60px 20px 60px;
            background: rgba(255, 255, 255, 0.78);
            backdrop-filter: blur(24px);
            -webkit-backdrop-filter: blur(24px);
            border-radius: 32px;
            box-shadow: 0 16px 48px rgba(0, 0, 0, 0.14), 0 0 0 1px rgba(255, 255, 255, 0.95) inset;
            text-align: center;
            animation: lock-in .26s ease both;
        }
        .lock-icon-wrap {
            width: 44px;
            height: 44px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.92);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
            display: grid;
            place-items: center;
            color: var(--accent);
            font-size: 17px;
            margin-bottom: 20px;
        }
        .lock-title {
            margin: 20px 0;
            font: 700 24px/1.1 "Source Sans Pro", "Segoe UI", sans-serif;
            color: var(--ink);
            letter-spacing: -0.02em;
        }
        .lock-subtitle {
            margin: 4px 0 0;
            color: var(--muted);
            font-size: 13px;
            font-weight: 600;
        }
        .passcode-dots {
            display: flex;
            gap: 16px;
            margin: 20px 0 15px;
            align-items: center;
            justify-content: center;
        }
        .dot {
            width: 14px;
            height: 14px;
            border-radius: 50%;
            border: 2px solid #28313e;
            background: transparent;
            transition: all .16s ease;
        }
        .dot.filled {
            background: var(--accent);
            border-color: var(--accent);
            transform: scale(1.15);
            box-shadow: 0 0 10px var(--accent-glow);
        }
        .status {
            min-height: 20px;
            font-size: 12px;
            color: var(--muted);
            margin-bottom: 10px;
            font-weight: 700;
        }
        .status.error {
            color: var(--danger);
            animation: shake .24s linear 2;
        }
        .keypad {
            display: grid;
            grid-template-columns: repeat(3, 70px);
            gap: 20px 30px;
            justify-content: center;
            margin-top: 2px;
        }
        .key {
            width: 70px;
            height: 70px;
            border-radius: 50%;
            border: 1px solid rgba(255, 255, 255, 0.92);
            background: rgba(255, 255, 255, 0.72);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            user-select: none;
            -webkit-tap-highlight-color: transparent;
            transition: transform .12s ease, background .12s ease, border-color .12s ease;
            color: var(--ink);
            outline: none;
            padding: 0;
        }
        .key .num {
            font-size: 26px;
            font-weight: 700;
            line-height: 1;
        }
        .key .sub {
            font-size: 9px;
            font-weight: 700;
            letter-spacing: 1px;
            color: #728094;
            margin-top: 2px;
            text-transform: uppercase;
        }
        .key:hover {
            background: rgba(255, 255, 255, 0.96);
            transform: translateY(-1px);
            box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);
        }
        .key:active {
            background: rgba(255, 51, 71, 0.14);
            border-color: var(--accent);
            transform: scale(0.93);
        }
        .key-action {
            background: transparent;
            border-color: transparent;
            box-shadow: none;
            font-size: 13px;
            font-weight: 700;
            color: #4a5568;
        }
        .key-action:hover {
            background: rgba(255, 255, 255, 0.45);
            box-shadow: none;
        }
        .key-action i {
            font-size: 18px;
        }
        @keyframes shake { 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
        @keyframes lock-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }