:root{
    --hom-blue:#003B8E;
    --hom-blue-dk:#002a66;
    --hom-orange:#F7941D;
    --hom-charcoal:#1F2937;
    --hom-gray-lt:#F5F7FA;
    --hom-border:#D9D9D9;
}
*{ box-sizing:border-box; }
body{ margin:0; font-family:'DM Sans', sans-serif; color:var(--hom-charcoal); background:var(--hom-gray-lt); }

/* ── AUTH PAGES ────────────────────────────────────────── */
.client-auth-body{
    min-height:100vh;
    display:flex;
    align-items:center;
    justify-content:center;
    background:linear-gradient(155deg, var(--hom-blue) 0%, #001d47 100%);
    padding:20px;
}
.client-auth-card{
    width:100%; max-width:400px;
    background:#fff;
    border-radius:16px;
    padding:36px 30px;
    box-shadow:0 30px 60px rgba(0,0,0,.35);
}
.client-auth-brand{ text-align:center; margin-bottom:24px; }
.client-auth-title{
    display:block;
    font-family:'Cormorant Garamond', serif;
    font-weight:700;
    font-size:1.8rem;
    color:var(--hom-blue);
}
.client-auth-sub{
    display:block;
    font-size:.72rem;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--hom-orange);
    font-weight:600;
    margin-top:4px;
}
.client-form-group{ margin-bottom:16px; }
.client-form-group label{ display:block; font-size:.8rem; font-weight:600; margin-bottom:6px; }
.client-form-group input{
    width:100%;
    padding:11px 13px;
    border:1.5px solid var(--hom-border);
    border-radius:9px;
    font-size:.9rem;
}
.client-form-group input:focus{ outline:none; border-color:var(--hom-blue); box-shadow:0 0 0 3px rgba(0,59,142,.1); }
.client-btn-primary{
    width:100%;
    background:var(--hom-orange);
    border:none;
    color:#fff;
    font-weight:600;
    padding:12px;
    border-radius:9px;
    font-size:.92rem;
    cursor:pointer;
    transition:background .2s;
}
.client-btn-primary:hover{ background:#df8611; }
.client-btn-primary:disabled{ opacity:.65; cursor:default; }
.client-err-box{
    background:#FEF2F2; border:1px solid #FECACA; color:#991B1B;
    font-size:.84rem; padding:10px 12px; border-radius:8px; margin-bottom:16px;
}
.client-auth-footnote{ font-size:.76rem; color:#9CA3AF; text-align:center; margin-top:16px; }

/* ── APP SHELL ─────────────────────────────────────────── */
.client-topbar{
    background:var(--hom-blue);
    color:#fff;
    padding:14px 18px;
    display:flex;
    align-items:center;
    justify-content:space-between;
}
.client-topbar .brand{ font-family:'Cormorant Garamond', serif; font-weight:700; font-size:1.2rem; }
.client-topbar a{ color:rgba(255,255,255,.85); font-size:.8rem; text-decoration:none; }
.client-wrap{ max-width:520px; margin:0 auto; padding:20px 16px 60px; }

.client-greeting{ margin-bottom:18px; }
.client-greeting h1{ font-family:'Cormorant Garamond', serif; font-size:1.5rem; color:var(--hom-blue); margin:0 0 4px; }
.client-greeting p{ margin:0; font-size:.84rem; color:#6B7280; }

.client-tile-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.client-tile{
    background:#fff;
    border-radius:14px;
    padding:20px 16px;
    text-align:center;
    text-decoration:none;
    color:var(--hom-charcoal);
    box-shadow:0 2px 10px rgba(0,0,0,.06);
    display:flex; flex-direction:column; align-items:center; gap:8px;
}
.client-tile svg{ color:var(--hom-blue); }
.client-tile span{ font-weight:600; font-size:.85rem; }

/* ── SCANNER ───────────────────────────────────────────── */
.scan-btn{
    width:100%;
    background:var(--hom-orange);
    color:#fff;
    border:none;
    border-radius:16px;
    padding:26px;
    font-size:1.15rem;
    font-weight:700;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:10px;
    cursor:pointer;
    transition:background .2s;
}
.scan-btn:hover{ background:#df8611; }

.scan-camera-wrap{ margin-top:14px; border-radius:14px; overflow:hidden; background:#000; display:none; }
.scan-camera-wrap.active{ display:block; }
.scan-camera-wrap video{ width:100%; display:block; }

.scan-manual{
    background:#fff;
    border-radius:14px;
    padding:18px;
    margin-top:16px;
    box-shadow:0 2px 10px rgba(0,0,0,.06);
}
.scan-manual label{ font-size:.8rem; font-weight:600; display:block; margin-bottom:6px; }
.scan-manual input{
    width:100%;
    padding:12px 14px;
    border:1.5px solid var(--hom-border);
    border-radius:10px;
    font-size:1rem;
    margin-bottom:10px;
}
.scan-manual button{
    width:100%;
    background:var(--hom-blue);
    color:#fff;
    border:none;
    padding:12px;
    border-radius:10px;
    font-weight:600;
    cursor:pointer;
}

.scan-result{
    margin-top:16px;
    border-radius:14px;
    padding:22px;
    text-align:center;
    display:none;
}
.scan-result.show{ display:block; }
.scan-result.valid{ background:#ECFDF5; border:2px solid #A7F3D0; }
.scan-result.invalid{ background:#FEF2F2; border:2px solid #FECACA; }
.scan-result.already_used{ background:#FFFBEB; border:2px solid #FDE68A; }
.scan-result .icon{ font-size:2.4rem; margin-bottom:8px; }
.scan-result .guest{ font-size:1.1rem; font-weight:700; margin:4px 0; }
.scan-result .tier{ font-size:.85rem; color:#6B7280; }
.scan-result .status-label{ font-size:.9rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.scan-result.valid .status-label{ color:#065F46; }
.scan-result.invalid .status-label{ color:#991B1B; }
.scan-result.already_used .status-label{ color:#78350F; }
