/* ============================================
   Event Registration System - High Contrast UI
   ============================================ */

*, *::before, *::after { box-sizing: border-box; }

:root {
    --pri: #4338ca;
    --pri-light: #6366f1;
    --pri-dark: #3730a3;
    --pri-50: #eef2ff;
    --pri-100: #e0e7ff;
    --sec: #0e7490;
    --green: #047857;
    --green-light: #059669;
    --green-dark: #065f46;
    --amber: #b45309;
    --red: #b91c1c;
    --bg: #e2e8f0;
    --surface: #ffffff;
    --text: #111827;
    --text-secondary: #374151;
    --text-muted: #4b5563;
    --border: #94a3b8;
    --border-light: #cbd5e1;
    --radius: 14px;
    --radius-sm: 8px;
    --radius-lg: 20px;
    --radius-full: 9999px;
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.1);
    --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.08);
    --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.08);
    --shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.08);
}

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    background: var(--bg);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    margin: 0;
    padding: 0;
    line-height: 1.6;
    color: var(--text);
    -webkit-font-smoothing: antialiased;
}

main {
    flex: 1;
    width: 100%;
    padding: 2rem 1.25rem;
    max-width: 1200px;
    margin: 0 auto;
}

/* ============================================
   NAVBAR - Solid white with clear border
   ============================================ */
.navbar {
    background: #ffffff !important;
    border-bottom: 2px solid var(--border);
    padding: 0.7rem 0;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

.navbar-brand {
    font-size: 1.1rem;
    font-weight: 800;
    color: var(--pri) !important;
    letter-spacing: -0.02em;
}

.nav-link {
    color: #1f2937 !important;
    font-weight: 700;
    font-size: 0.85rem;
    padding: 0.5rem 0.8rem;
    border-radius: var(--radius-sm);
    transition: all 0.15s ease;
}

.nav-link:hover {
    color: var(--pri) !important;
    background: var(--pri-50);
}

.navbar-toggler {
    border: 2px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 0.35rem 0.5rem;
}

.navbar-toggler-icon { filter: none; }

@media (max-width: 991.98px) {
    .navbar-collapse {
        background: #ffffff;
        border: 2px solid var(--border);
        border-radius: var(--radius);
        padding: 0.75rem;
        margin-top: 0.5rem;
        box-shadow: var(--shadow-md);
    }
    .nav-link { padding: 0.7rem 0.75rem; font-size: 0.9rem; }
}

/* ============================================
   HERO SECTION
   ============================================ */
.hero-section {
    background: linear-gradient(135deg, var(--pri) 0%, #7c3aed 100%);
    border-radius: var(--radius-lg);
    padding: 3.5rem 2rem;
    margin-bottom: 2.5rem;
    text-align: center;
    color: #fff;
    position: relative;
    overflow: hidden;
    box-shadow: var(--shadow-xl);
}

.hero-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
    pointer-events: none;
}

.hero-section h1 {
    font-size: clamp(1.8rem, 5vw, 2.8rem);
    font-weight: 800;
    margin-bottom: 0.5rem;
    position: relative;
    letter-spacing: -0.03em;
    text-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

.hero-section .lead {
    font-size: clamp(0.95rem, 2.5vw, 1.15rem);
    opacity: 1;
    position: relative;
    font-weight: 500;
}

.hero-section .event-venue {
    font-size: clamp(0.85rem, 2vw, 1rem);
    opacity: 0.95;
    position: relative;
}

.hero-section .hero-divider {
    width: 48px;
    height: 3px;
    background: rgba(255,255,255,0.6);
    margin: 1rem auto;
    position: relative;
}

.hero-section .hero-subtitle {
    font-size: clamp(0.9rem, 2vw, 1.05rem);
    opacity: 0.95;
    position: relative;
}

@media (max-width: 575.98px) {
    .hero-section { padding: 2rem 1.25rem; border-radius: var(--radius); margin-bottom: 1.5rem; }
}

/* ============================================
   FEATURE ICONS
   ============================================ */
.feature-icon {
    width: 72px; height: 72px;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 50%;
    box-shadow: var(--shadow-md);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.feature-icon i { font-size: 1.75rem; }
.feature-icon:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }

@media (max-width: 575.98px) {
    .feature-icon { width: 60px; height: 60px; }
    .feature-icon i { font-size: 1.5rem; }
}

/* ============================================
   CARDS - Solid white, clear borders
   ============================================ */
.card {
    background: #ffffff;
    border: 2px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    transition: box-shadow 0.2s ease;
    overflow: hidden;
}

.card:hover { box-shadow: var(--shadow-lg); }

/* Default card header (no inline style) */
.card-header {
    border-bottom: 2px solid var(--border);
    border-radius: var(--radius) var(--radius) 0 0 !important;
    padding: 1rem 1.25rem;
    background: #f1f5f9;
    color: var(--text);
}

/* Card headers WITH inline style (gradient colored) */
.card-header[style] {
    border-bottom: none;
    padding: 1.25rem;
}

.card-header[style] h1,
.card-header[style] h2,
.card-header[style] h3,
.card-header[style] h4,
.card-header[style] h5,
.card-header[style] h6 {
    color: #ffffff !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.15);
}

.card-header[style] small,
.card-header[style] div {
    color: rgba(255,255,255,0.92) !important;
}

.card-body { padding: 1.25rem; }

@media (max-width: 575.98px) {
    .card-header { padding: 0.85rem 1rem; }
    .card-body { padding: 1rem; }
}

/* ============================================
   HOVER LIFT
   ============================================ */
.hover-lift { transition: transform 0.2s ease, box-shadow 0.2s ease; }
.hover-lift:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg) !important; }

/* ============================================
   FORMS - Solid borders, clear text
   ============================================ */
.form-control, .form-select {
    background: #ffffff;
    border: 2px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 0.7rem 0.9rem;
    font-size: 0.9rem;
    color: var(--text);
    transition: all 0.15s ease;
    font-weight: 500;
}

.form-control:focus, .form-select:focus {
    border-color: var(--pri);
    box-shadow: 0 0 0 3px var(--pri-100);
    outline: none;
    background: #ffffff;
}

.form-control::placeholder { color: #6b7280; font-weight: 400; }
.form-control.is-invalid { border-color: var(--red); box-shadow: 0 0 0 3px #fef2f2; }

.form-label {
    font-size: 0.85rem;
    font-weight: 700;
    margin-bottom: 0.4rem;
    color: var(--text);
}

.form-text { font-size: 0.8rem; color: var(--text-muted); }
.form-check-input:checked { background-color: var(--pri); border-color: var(--pri); }

@media (max-width: 575.98px) {
    .form-control, .form-select { font-size: 16px; padding: 0.8rem 0.9rem; }
}

/* ============================================
   BUTTONS
   ============================================ */
.btn {
    border: none;
    border-radius: var(--radius-sm);
    font-weight: 700;
    padding: 0.65rem 1.25rem;
    font-size: 0.88rem;
    transition: all 0.15s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    white-space: nowrap;
}

.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.btn-lg { padding: 0.8rem 1.75rem; font-size: 0.95rem; border-radius: var(--radius); }

.btn-primary { background: var(--pri); color: #ffffff; }
.btn-primary:hover { background: var(--pri-dark); color: #ffffff; }
.btn-success { background: var(--green); color: #ffffff; }
.btn-success:hover { background: var(--green-dark); color: #ffffff; }
.btn-danger { background: var(--red); color: #ffffff; }

.btn-outline-primary { background: transparent; color: var(--pri); border: 2px solid var(--pri); }
.btn-outline-primary:hover { background: var(--pri); color: #ffffff; }
.btn-outline-success { background: transparent; color: var(--green); border: 2px solid var(--green); }
.btn-outline-success:hover { background: var(--green); color: #ffffff; }
.btn-outline-secondary { background: transparent; color: var(--text-secondary); border: 2px solid var(--border); }
.btn-outline-secondary:hover { background: var(--bg); color: var(--text); }
.btn-outline-danger { background: transparent; color: var(--red); border: 2px solid var(--red); }
.btn-outline-danger:hover { background: var(--red); color: #ffffff; }
.btn-outline-warning { background: transparent; color: var(--amber); border: 2px solid var(--amber); }
.btn-outline-warning:hover { background: var(--amber); color: #ffffff; }
.btn-outline-light { background: transparent; color: #ffffff; border: 2px solid rgba(255,255,255,0.5); }
.btn-outline-light:hover { background: rgba(255,255,255,0.2); }

@media (max-width: 575.98px) {
    .btn-lg { padding: 0.85rem 1.5rem; width: 100%; }
    .btn-group { flex-direction: column; width: 100%; }
    .btn-group .btn { border-radius: var(--radius-sm); margin-bottom: 0.5rem; width: 100%; }
    .btn-group .btn:last-child { margin-bottom: 0; }
}

/* ============================================
   TABLES
   ============================================ */
.table { font-size: 0.85rem; margin-bottom: 0; }
.table thead th {
    background: #e2e8f0;
    border-bottom: 2px solid var(--border);
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text);
    font-weight: 800;
    padding: 0.75rem 0.6rem;
}
.table td { border-bottom: 1px solid var(--border-light); padding: 0.7rem 0.6rem; vertical-align: middle; color: var(--text); }
.table-hover tbody tr { transition: background 0.1s ease; }
.table-hover tbody tr:hover { background: #f1f5f9; }

@media (max-width: 575.98px) {
    .table { font-size: 0.8rem; }
    .table td, .table th { padding: 0.5rem 0.35rem; }
}

/* ============================================
   QR CODE
   ============================================ */
.qr-container {
    display: inline-block;
    background: #ffffff;
    padding: 12px;
    border: 2px solid var(--border);
    border-radius: var(--radius);
}

.qr-container img { border-radius: var(--radius-sm); display: block; }

/* ============================================
   ALERTS
   ============================================ */
.alert { border: none; border-radius: var(--radius); font-size: 0.88rem; font-weight: 600; }
.alert-success { background: #dcfce7; color: #14532d; border-left: 5px solid var(--green); }
.alert-danger { background: #fee2e2; color: #7f1d1d; border-left: 5px solid var(--red); }
.alert-warning { background: #fef3c7; color: #78350f; border-left: 5px solid var(--amber); }
.alert-primary { background: var(--pri-100); color: #312e81; border-left: 5px solid var(--pri); }

/* ============================================
   NAV PILLS (Scan Hub)
   ============================================ */
.nav-pills {
    gap: 0.35rem;
    background: #cbd5e1;
    padding: 0.35rem;
    border-radius: var(--radius);
    border: 2px solid var(--border);
}
.nav-pills .nav-link {
    border-radius: var(--radius-sm);
    font-weight: 700;
    color: #1f2937;
    padding: 0.6rem 1rem;
    transition: all 0.15s ease;
}
.nav-pills .nav-link.active { background: var(--pri) !important; color: #ffffff !important; box-shadow: var(--shadow-sm); }
.nav-pills .nav-link:hover:not(.active) { background: #e2e8f0; color: var(--pri); }

@media (max-width: 575.98px) {
    .nav-pills { flex-direction: column; }
    .nav-pills .nav-link { width: 100%; }
}

/* ============================================
   NAV TABS (Admin Dashboard)
   ============================================ */
ul.nav-tabs,
.nav-tabs {
    list-style: none !important;
    display: flex !important;
    flex-wrap: wrap;
    background: #cbd5e1 !important;
    padding: 4px !important;
    border-radius: var(--radius) !important;
    border: 2px solid var(--border) !important;
    border-bottom: 2px solid var(--border) !important;
    gap: 4px;
    overflow-x: auto;
    scrollbar-width: none;
    margin: 0 0 1.5rem 0 !important;
    --bs-nav-tabs-border-width: 0;
}

.nav-tabs::-webkit-scrollbar { display: none; }

.nav-tabs .nav-item {
    list-style: none !important;
    margin: 0 !important;
}

.nav-tabs .nav-link,
a.nav-link {
    border: none !important;
    border-bottom: none !important;
    border-radius: var(--radius-sm) !important;
    color: #111827 !important;
    font-weight: 700;
    font-size: 0.85rem;
    padding: 0.55rem 0.9rem;
    white-space: nowrap;
    transition: all 0.15s ease;
    text-decoration: none;
    background: transparent !important;
    display: inline-flex;
    align-items: center;
}

.nav-tabs .nav-link:hover,
a.nav-link:hover {
    color: var(--pri) !important;
    background: #ffffff !important;
    border: none !important;
}

.nav-tabs .nav-link.active,
a.nav-link.active {
    background: var(--pri) !important;
    color: #ffffff !important;
    border: none !important;
    box-shadow: var(--shadow-sm);
}

@media (max-width: 575.98px) {
    .nav-tabs .nav-link { font-size: 0.8rem; padding: 0.5rem 0.7rem; }
}

/* ============================================
   BADGES
   ============================================ */
.badge { font-weight: 700; padding: 0.4em 0.7em; font-size: 0.75em; border-radius: var(--radius-sm); }
.badge-primary { background: var(--pri); color: #fff; }
.badge-success { background: var(--green); color: #fff; }
.badge-warning { background: var(--amber); color: #fff; }
.badge-secondary { background: #4b5563; color: #fff; }
.badge-info { background: var(--sec); color: #fff; }
.badge-danger { background: var(--red); color: #fff; }
.badge-light { background: #e5e7eb; color: var(--text); border: 1px solid var(--border); }
.badge-dark { background: var(--text); color: #fff; }

/* ============================================
   PROGRESS
   ============================================ */
.progress { border-radius: var(--radius-full); height: 8px; background: #d1d5db; border: 1px solid var(--border); }
.progress-bar { border-radius: var(--radius-full); background: var(--pri); }

/* ============================================
   INFO ITEMS
   ============================================ */
.info-item {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.85rem;
    background: #f8fafc;
    border: 2px solid var(--border-light);
    border-radius: var(--radius-sm);
    margin-bottom: 0.5rem;
}
.info-item:last-child { margin-bottom: 0; }
.info-item .info-icon {
    width: 42px; height: 42px; min-width: 42px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    background: var(--green);
    color: #fff;
    font-size: 1rem;
}
.info-item .info-label {
    font-size: 0.72rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: 700;
}
.info-item .info-value {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--text);
    word-break: break-word;
}
.info-item .info-value a { color: var(--pri); text-decoration: none; font-weight: 600; }
.info-item .info-value a:hover { color: var(--pri-dark); text-decoration: underline; }

/* ============================================
   SOCIAL BUTTONS
   ============================================ */
.social-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.5rem 0.9rem;
    border-radius: var(--radius-full);
    font-size: 0.82rem;
    font-weight: 700;
    text-decoration: none;
    transition: all 0.15s ease;
    border: none;
    color: #fff;
}
.social-btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-md); color: #fff; }
.social-btn.linkedin { background: #0a66c2; }
.social-btn.linkedin:hover { background: #004182; }
.social-btn.twitter { background: #1a1a1a; }
.social-btn.twitter:hover { background: #000; }
.social-btn.facebook { background: #1877f2; }
.social-btn.facebook:hover { background: #0d5cbf; }
.social-btn.instagram { background: linear-gradient(135deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); }
.social-btn.instagram:hover { opacity: 0.9; }
.social-btn.youtube { background: #ff0000; }
.social-btn.youtube:hover { background: #cc0000; }

/* ============================================
   FOOTER
   ============================================ */
footer {
    margin-top: auto;
    background: #111827;
    color: #ffffff;
    border-top: 3px solid var(--pri);
}
footer h5 { font-size: 1rem; font-weight: 700; }
footer p { font-size: 0.85rem; opacity: 0.9; }

@media (max-width: 575.98px) {
    footer .text-md-end { text-align: left !important; margin-top: 1rem; }
}

/* ============================================
   PASS / PROFILE PAGES
   ============================================ */
.pass-card .card-header, .profile-card .card-header { padding: 1.5rem 1.25rem; }

@media (max-width: 575.98px) {
    .pass-card .card-header, .profile-card .card-header { padding: 1.25rem 1rem; }
    .pass-card .card-body, .profile-card .card-body { padding: 1rem; }
}

/* ============================================
   SCAN HUB
   ============================================ */
.scan-hub-card .tab-content { padding: 0.75rem 0; }

/* ============================================
   TABLE STICKY
   ============================================ */
.table .sticky-top { z-index: 1; background: #e2e8f0; }

/* ============================================
   PRINT STYLES
   ============================================ */
@media print {
    .navbar, footer, .btn, .alert, .card-footer, .no-print, .nav-tabs, .nav-pills, .btn-group { display: none !important; }
    body { background: #fff; }
    main { padding: 0; }
    .card { border: 1px solid #ddd !important; box-shadow: none !important; }
    .qr-container img { max-width: 200px !important; }
}

/* ============================================
   ANIMATIONS
   ============================================ */
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.card { animation: fadeIn 0.3s ease; }

/* ============================================
   MOBILE INPUTS (prevent iOS zoom)
   ============================================ */
@media screen and (max-width: 767px) {
    input[type="text"], input[type="email"], input[type="tel"],
    input[type="url"], input[type="password"], textarea, select { font-size: 16px !important; }
}

.table-responsive { -webkit-overflow-scrolling: touch; border-radius: var(--radius-sm); }

@media (max-width: 375px) {
    main { padding: 1rem 0.75rem; }
    .hero-section h1 { font-size: 1.5rem; }
}

/* ============================================
   2D SCANNER UI (scan hub, lookup pages, area checker)
   The scanner types into a focused input and presses Enter;
   everything below is styled around that one input.
   ============================================ */
.scanner-card { border: 0; overflow: hidden; }
.scanner-head { color: #fff; text-align: center; padding: 1.25rem 1rem; border: none; }
.scanner-head.visitor   { background: linear-gradient(135deg, var(--pri), #7c3aed); }
.scanner-head.exhibitor { background: linear-gradient(135deg, var(--green), var(--green-dark)); }
.scanner-head.any       { background: linear-gradient(135deg, var(--pri), var(--sec)); }
.scanner-head h2 { color: #fff; margin: 0 0 .25rem; font-size: clamp(1.1rem, 3vw, 1.5rem); }
.scanner-head small { color: rgba(255,255,255,.82); }

.scanner-status { display: inline-flex; align-items: center; gap: .5rem; padding: .3rem .85rem; border-radius: var(--radius-full); font-size: .8rem; font-weight: 700; user-select: none; }
.scanner-status::before { content: ''; width: .6rem; height: .6rem; border-radius: 50%; background: currentColor; }
.scanner-status.ready { background: #d1fae5; color: var(--green-dark); }
.scanner-status.ready::before { animation: scanner-pulse 1.4s infinite; }
.scanner-status.idle  { background: #fef3c7; color: var(--amber); cursor: pointer; }
@keyframes scanner-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(5,150,105,.6); }
    70%  { box-shadow: 0 0 0 8px rgba(5,150,105,0); }
    100% { box-shadow: 0 0 0 0 rgba(5,150,105,0); }
}

.scanner-zone { border: 2px dashed var(--pri-light); background: var(--pri-50); border-radius: var(--radius); padding: 1.5rem 1rem 1.25rem; text-align: center; transition: background .2s, border-color .2s; }
.scanner-zone.ready { border-style: solid; border-color: var(--green-light); background: #ecfdf5; }
.scanner-glyph { font-size: 3rem; line-height: 1; color: var(--pri); }
.scanner-zone.ready .scanner-glyph { color: var(--green-light); }
.scanner-laser { height: 3px; width: 55%; margin: .6rem auto 1rem; border-radius: 3px; background: linear-gradient(90deg, transparent, var(--red), transparent); animation: scanner-laser 1.6s ease-in-out infinite alternate; }
@keyframes scanner-laser { from { transform: scaleX(.25); opacity: .4; } to { transform: scaleX(1); opacity: 1; } }
.scanner-input { display: block; width: 100%; max-width: 440px; margin: 0 auto; text-align: center; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 1.15rem; letter-spacing: .02em; padding: .85rem 1rem; border: 2px solid var(--border); border-radius: var(--radius-sm); background: #fff; color: var(--text); }
.scanner-input:focus { outline: none; border-color: var(--pri); box-shadow: 0 0 0 4px rgba(99,102,241,.25); }
.scanner-hint { color: var(--text-muted); font-size: .85rem; margin: .75rem 0 0; }

.scan-divider { display: flex; align-items: center; gap: .75rem; color: var(--text-muted); font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; margin: 1.25rem 0 1rem; }
.scan-divider::before, .scan-divider::after { content: ''; flex: 1; height: 1px; background: var(--border-light); }

.scan-feedback { display: none; border-radius: var(--radius-sm); padding: .7rem 1rem; font-weight: 600; margin-top: 1rem; }
.scan-feedback.show { display: block; }
.scan-feedback.ok   { background: #d1fae5; color: var(--green-dark); }
.scan-feedback.warn { background: #fef3c7; color: #92400e; }
.scan-feedback.bad  { background: #fee2e2; color: #991b1b; }
.scan-feedback.info { background: var(--pri-100); color: var(--pri-dark); }

.scan-result { border-radius: var(--radius); overflow: hidden; border: 2px solid var(--border); margin-top: 1.25rem; animation: scan-pop .18s ease-out; }
@keyframes scan-pop { from { transform: scale(.97); opacity: .4; } to { transform: scale(1); opacity: 1; } }
.scan-result-banner { padding: .9rem 1rem; font-weight: 800; font-size: 1.3rem; display: flex; align-items: center; gap: .6rem; color: #fff; }
.scan-result.ok   { border-color: var(--green-light); } .scan-result.ok   .scan-result-banner { background: var(--green-light); }
.scan-result.warn { border-color: #d97706; }            .scan-result.warn .scan-result-banner { background: #d97706; }
.scan-result.info { border-color: var(--pri-light); } .scan-result.info .scan-result-banner { background: var(--pri); }
.scan-result.bad  { border-color: var(--red); }         .scan-result.bad  .scan-result-banner { background: var(--red); }
.scan-result-body { padding: 1rem 1.1rem; background: #fff; }
.scan-result-name { font-size: 1.35rem; font-weight: 800; line-height: 1.2; }
.scan-result-company { color: var(--text-secondary); margin-bottom: .75rem; }
.scan-result dl { display: grid; grid-template-columns: max-content 1fr; gap: .25rem 1rem; margin: 0; font-size: .9rem; }
.scan-result dt { color: var(--text-muted); font-weight: 600; }
.scan-result dd { margin: 0; word-break: break-word; }

.scanner-upload { text-align: center; }
.scanner-upload label.btn { cursor: pointer; margin: 0; }

@media (prefers-reduced-motion: reduce) {
    .scanner-laser, .scanner-status.ready::before, .scan-result { animation: none; }
}
