/* ── Theme tokens ───────────────────────────────────────────── */
        :root {
            --pg-bg:            #f4f4f5;
            --pg-gradient:      linear-gradient(135deg, #dbeafe 0%, #f1f5f9 50%, #ede9fe 100%);
            --card-bg:          #ffffff;
            --card-border:      #e4e4e7;
            --text:             #09090b;
            --text-muted:       #71717a;
            --placeholder:      #a1a1aa;
            --input-bg:         #ffffff;
            --input-border:     #e4e4e7;
            --input-focus:      #71717a;
            --btn-bg:           #09090b;
            --btn-text:         #fafafa;
            --btn-hover:        #18181b;
            --divider-color:    #e4e4e7;
            --link-color:       #09090b;
            --link-muted:       #71717a;
            --toggle-border:    #e4e4e7;
            --toggle-color:     #71717a;
            --toggle-hover-bg:  #f4f4f5;
            --dropdown-bg:      #ffffff;
            --dropdown-hover:   #f4f4f5;
            --dropdown-border:  #e4e4e7;
            --spinner-border:   #fafafa;
        }

        [data-bs-theme="dark"] {
            --pg-bg:            #09090b;
            --pg-gradient:      linear-gradient(135deg, #0f172a 0%, #09090b 50%, #1e0a2e 100%);
            --card-bg:          #0f0f12;
            --card-border:      #27272a;
            --text:             #fafafa;
            --text-muted:       #a1a1aa;
            --placeholder:      #52525b;
            --input-bg:         #09090b;
            --input-border:     #27272a;
            --input-focus:      #71717a;
            --btn-bg:           #fafafa;
            --btn-text:         #09090b;
            --btn-hover:        #e4e4e7;
            --divider-color:    #27272a;
            --link-color:       #fafafa;
            --link-muted:       #a1a1aa;
            --toggle-border:    #27272a;
            --toggle-color:     #a1a1aa;
            --toggle-hover-bg:  #18181b;
            --dropdown-bg:      #18181b;
            --dropdown-hover:   #27272a;
            --dropdown-border:  #27272a;
            --spinner-border:   #09090b;
            --section-label:    #818cf8;
        }

        /* ── Base ───────────────────────────────────────────────────── */
        *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

        html, body {
            min-height: 100vh;
            background: var(--pg-gradient);
            color: var(--text);
            font-family: 'Inter', sans-serif;
            transition: background 0.3s, color 0.2s;
        }

        body {
            display: flex;
            align-items: flex-start;
            justify-content: center;
            padding: 2rem 1.5rem;
        }

        /* ── Theme toggle ───────────────────────────────────────────── */
        .theme-toggle {
            position: fixed;
            top: 1rem;
            right: 1rem;
            z-index: 1050;
            background: none;
            border: 1px solid var(--toggle-border);
            border-radius: 0.375rem;
            color: var(--toggle-color);
            width: 2.25rem;
            height: 2.25rem;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: border-color 0.15s, color 0.15s, background 0.15s;
        }
        .theme-toggle:hover {
            border-color: var(--input-focus);
            color: var(--text);
            background: var(--toggle-hover-bg);
        }

        /* ── Wrapper & card ─────────────────────────────────────────── */
        .register-wrapper { width: 100%; max-width: 440px; }

        .branding {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.625rem;
            margin-bottom: 1.75rem;
        }
        .branding img {
            width: 32px; height: 32px;
            border-radius: 50%;
            object-fit: cover;
        }
        .branding-name {
            font-size: 0.9375rem;
            font-weight: 700;
            color: var(--text);
            letter-spacing: -0.01em;
        }

        .branding-name em {
            font-style: normal;
            color: var(--section-label);
        }
        
        .register-card {
            background-color: var(--card-bg);
            border: 1px solid var(--card-border);
            border-radius: 0.75rem;
            padding: 2rem;
            transition: background-color 0.2s, border-color 0.2s;
        }

        .register-header { margin-bottom: 1.5rem; }
        .register-header h1 {
            font-size: 1.375rem;
            font-weight: 700;
            color: var(--text);
            margin-bottom: 0.375rem;
            letter-spacing: -0.02em;
        }
        .register-header p {
            font-size: 0.875rem;
            color: var(--text-muted);
        }

        /* ── Form elements ──────────────────────────────────────────── */
        .form-group { margin-bottom: 1rem; }

        .form-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 0.75rem;
            margin-bottom: 1rem;
        }

        .form-label {
            display: block;
            font-size: 0.875rem;
            font-weight: 500;
            color: var(--text);
            margin-bottom: 0.375rem;
        }

        .shadcn-input,
        .shadcn-select {
            width: 100%;
            background-color: var(--input-bg);
            border: 1px solid var(--input-border);
            border-radius: 0.375rem;
            color: var(--text);
            font-size: 0.875rem;
            font-family: 'Inter', sans-serif;
            padding: 0.5rem 0.75rem;
            outline: none;
            transition: border-color 0.15s, box-shadow 0.15s, background-color 0.2s;
            appearance: none;
            -webkit-appearance: none;
        }
        .shadcn-input::placeholder { color: var(--placeholder); }
        .shadcn-input:focus,
        .shadcn-select:focus {
            border-color: var(--input-focus);
            box-shadow: 0 0 0 2px rgba(113,113,122,0.2);
        }

        /* Custom select arrow */
        .select-wrap { position: relative; }
        .select-wrap::after {
            content: '';
            position: absolute;
            right: 0.75rem;
            top: 50%;
            transform: translateY(-50%);
            width: 0;
            height: 0;
            border-left: 4px solid transparent;
            border-right: 4px solid transparent;
            border-top: 5px solid var(--text-muted);
            pointer-events: none;
        }
        .shadcn-select { padding-right: 2rem; cursor: pointer; }
        .shadcn-select option {
            background-color: var(--dropdown-bg);
            color: var(--text);
        }

        /* Resident extra fields */
        #residentFields { display: none; }
        #residentFields.visible { display: block; }

        .resident-section {
            border: 1px solid var(--card-border);
            border-radius: 0.5rem;
            padding: 1rem;
            margin-bottom: 1rem;
            transition: border-color 0.2s;
        }
        .resident-section-title {
            font-size: 0.75rem;
            font-weight: 600;
            color: var(--text-muted);
            text-transform: uppercase;
            letter-spacing: 0.06em;
            margin-bottom: 0.875rem;
        }

        /* Password with eye toggle */
        .pw-wrap { position: relative; }
        .pw-wrap .shadcn-input { padding-right: 2.5rem; }
        .toggle-pw {
            position: absolute;
            right: 0.625rem;
            top: 50%;
            transform: translateY(-50%);
            background: none;
            border: none;
            color: var(--text-muted);
            cursor: pointer;
            padding: 0.25rem;
            display: flex;
            align-items: center;
            transition: color 0.15s;
        }
        .toggle-pw:hover { color: var(--text); }

        /* ── Submit button ──────────────────────────────────────────── */
        .btn-register {
            width: 100%;
            background-color: var(--btn-bg);
            color: var(--btn-text);
            border: none;
            border-radius: 0.375rem;
            font-size: 0.875rem;
            font-weight: 600;
            font-family: 'Inter', sans-serif;
            padding: 0.5625rem 1rem;
            cursor: pointer;
            margin-top: 0.5rem;
            transition: background-color 0.15s, opacity 0.15s;
        }
        .btn-register:hover:not(:disabled) { background-color: var(--btn-hover); }
        .btn-register:disabled { opacity: 0.5; cursor: not-allowed; }

        /* ── Footer ─────────────────────────────────────────────────── */
        .login-text {
            text-align: center;
            font-size: 0.875rem;
            color: var(--text-muted);
            margin-top: 1.25rem;
        }
        .login-text a {
            color: var(--link-color);
            text-decoration: underline;
            text-underline-offset: 3px;
            text-decoration-color: var(--divider-color);
            transition: text-decoration-color 0.15s;
        }
        .login-text a:hover { text-decoration-color: var(--link-color); }

        .back-home {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.375rem;
            font-size: 0.8125rem;
            color: var(--text-muted);
            text-decoration: none;
            margin-top: 1.25rem;
            transition: color 0.15s;
        }
        .back-home:hover { color: var(--text); }
        .back-home i { font-size: 0.7rem; }

        /* ── Address autocomplete dropdown ──────────────────────────── */
        #addressSuggestions {
            display: none;
            position: absolute;
            top: 100%;
            left: 0; right: 0;
            z-index: 9999;
            list-style: none;
            margin: 2px 0 0;
            padding: 0;
            background: var(--dropdown-bg);
            border: 1px solid var(--dropdown-border);
            border-radius: 0 0 0.375rem 0.375rem;
            max-height: 200px;
            overflow-y: auto;
            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
        }
        #addressSuggestions li {
            padding: 0.5rem 0.75rem;
            cursor: pointer;
            font-size: 0.8125rem;
            color: var(--text);
            border-bottom: 1px solid var(--dropdown-border);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            transition: background 0.1s;
        }
        #addressSuggestions li:last-child { border-bottom: none; }
        #addressSuggestions li:hover { background: var(--dropdown-hover); }

        /* ── Spinner ────────────────────────────────────────────────── */
        .spinner {
            display: inline-block;
            width: 0.875rem; height: 0.875rem;
            border: 2px solid var(--spinner-border);
            border-top-color: transparent;
            border-radius: 50%;
            animation: spin 0.6s linear infinite;
            vertical-align: middle;
            margin-right: 0.375rem;
        }
        @keyframes spin { to { transform: rotate(360deg); } }