:root{--bg:#f5f7fb;--surface:#fff;--ink:#122033;--muted:#64748b;--border:#dce4ed;--blue:#2563eb;--blue2:#1d4ed8;--green:#128344;--red:#d52a3b;--shadow:0 12px 32px rgba(19,38,66,.06)}
*{box-sizing:border-box}html{min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif}body{margin:0;background:var(--bg);color:var(--ink);line-height:1.52}a{color:inherit}button,input,select{font:inherit}button{cursor:pointer}h1,h2,h3{line-height:1.17;margin:0 0 12px}h1{font-size:clamp(1.75rem,3vw,2.35rem);letter-spacing:-.045em}h2{font-size:1.28rem;letter-spacing:-.025em}h3{font-size:1.05rem}p{margin:4px 0 12px}.muted{color:var(--muted)}.eyebrow{font-size:.72rem;letter-spacing:.12em;font-weight:800;color:var(--blue);margin-bottom:9px}.topbar{background:#111d33;color:white;border-bottom:1px solid rgba(255,255,255,.08)}.topbar-inner{max-width:1200px;min-height:72px;margin:auto;padding:10px 22px;display:flex;align-items:center;justify-content:space-between;gap:18px}.brand{color:#fff;text-decoration:none;display:flex;align-items:center;gap:10px;font-size:1rem;letter-spacing:.015em;font-weight:700;line-height:1.03}.brand small{display:block;font-size:.61rem;color:#9fb3d5;letter-spacing:.25em;margin-top:5px}.brand-icon{background:#315ef0;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-size:1.55rem}.nav{display:flex;gap:20px;align-items:center;font-size:.88rem}.nav a{text-decoration:none;color:#e3ebff}.nav a:hover{text-decoration:underline}.nav form{margin:0}.user-name{color:#afc0d6}.linklike{background:none;border:0;color:#d5e4ff;padding:0}.main{max-width:1200px;min-height:calc(100dvh - 138px);margin:0 auto;padding:32px 22px 48px}.footer{text-align:center;font-size:.78rem;color:#8390a2;padding:0 22px 25px}.card{background:var(--surface);border:1px solid var(--border);border-radius:17px;padding:24px;box-shadow:var(--shadow)}.section-gap{margin-top:22px}.narrow{max-width:650px;margin:40px auto}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.page-head p{margin:0}.row-between{display:flex;justify-content:space-between;gap:15px;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 17px;min-height:44px;background:#e8eef9;color:#16346a;text-decoration:none;border:1px solid transparent;border-radius:10px;font-weight:750;white-space:nowrap}.btn:hover{filter:brightness(.97)}.btn.primary{background:var(--blue);color:#fff}.btn.outline{border-color:#cbd7e7;background:#fff;color:#29435d}.btn.wide{width:100%}.btn.compact{font-size:.85rem}.alert{padding:14px 16px;border-radius:11px;margin-bottom:20px;font-weight:650}.alert.success{background:#e9fbf0;color:#0f6935}.alert.error{background:#fff0f0;color:#ad1a31}.auth{display:grid;place-items:center;min-height:65dvh}.login-card{max-width:430px;width:100%;padding:32px}.login-card h1{font-size:2rem}.login-card form{margin-top:23px}.login-card .btn{margin-top:12px}form label{display:block;font-size:.83rem;font-weight:700;color:#31435a;margin-bottom:14px}input,select{width:100%;background:#fff;color:#0f172a;border:1px solid #cbd5e1;border-radius:9px;min-height:43px;padding:10px 12px;margin-top:6px;outline-offset:2px}input:focus,select:focus{outline:2px solid #a4b9ff;border-color:#5e85ea}input::placeholder{color:#99a6b4}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}.form-grid .span-2{grid-column:span 2}.form-grid .field-end{display:flex;justify-content:flex-end;align-items:center}.form-inline{display:flex;align-items:end;flex-wrap:wrap;gap:14px}.form-inline label{flex:1;min-width:160px;margin-bottom:0}.form-inline .btn{margin-bottom:0}.form-top{margin-top:16px}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.kpi{border:1px solid var(--border);border-radius:15px;background:#fff;padding:18px;box-shadow:var(--shadow)}.kpi span{display:block;font-size:.78rem;color:var(--muted);margin-bottom:8px}.kpi strong{font-size:clamp(1.6rem,3.4vw,2.4rem);line-height:1;font-variant-numeric:tabular-nums}.green{color:var(--green)}.red{color:var(--red)}.event-grid,.gate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:13px}.event-card{border:1px solid var(--border);border-radius:13px;padding:18px;text-decoration:none;display:block;background:linear-gradient(145deg,#f8faff,#fff)}.event-card:hover,.gate-link:hover{border-color:#779cec;box-shadow:0 5px 20px rgba(20,60,145,.12)}.event-tag{font-size:.69rem;font-weight:850;color:var(--blue);letter-spacing:.08em}.event-card h3{margin:10px 0}.event-card p{color:#586c81;font-size:.87rem}.event-card .detail{font-size:.79rem;color:var(--muted)}.gate-grid{margin-top:17px}.gate-link{border:1px solid var(--border);border-radius:12px;padding:16px;min-height:75px;display:flex;align-items:center;gap:12px;text-decoration:none}.gate-link .icon{width:38px;height:38px;border-radius:11px;background:#e8efff;color:var(--blue);display:grid;place-items:center;font-size:1.55rem}.gate-link strong{margin-left:auto;font-size:.8rem;color:var(--blue)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.subheading{margin-top:28px}.staff-list{max-height:350px;overflow-y:auto}.staff-row{display:flex;gap:10px;justify-content:space-between;padding:10px 0;border-bottom:1px solid #edf1f7;align-items:center}.staff-row small{display:block;color:var(--muted);font-size:.75rem}.staff-row form{margin:0}.text-danger{border:0;background:none;color:#bb2537;font-weight:700;padding:6px}.table-scroll{overflow:auto}table{border-collapse:collapse;min-width:690px;width:100%;font-size:.85rem;text-align:left}th,td{border-bottom:1px solid #e6ebf2;padding:12px 10px;vertical-align:middle}th{background:#f7f9fd;font-size:.76rem;color:#61758d}code{font-size:.82em;word-break:break-word}.pill{display:inline-flex;padding:4px 9px;font-size:.75rem;color:#516474;border-radius:99px;background:#edf2f8;font-weight:700;white-space:nowrap}.pill.ok{background:#d9f5e5;color:#087a3e}.pill.bad{background:#ffe2e2;color:#b61c2c}.inline-form{display:flex;gap:8px;align-items:center}.inline-form .reason{min-width:145px;width:170px;margin:0}.issue-card{border:2px solid #78a4f0}.issue-card #qr-output{margin:20px 0}.issue-card #qr-text{display:block;max-width:100%;overflow-wrap:anywhere;padding:10px;background:#eaf1ff}.scanner-shell{max-width:740px;margin:auto}.scanner-head h1{font-size:1.5rem}.scanner-shell .kpis{gap:8px}.scanner-shell .kpi{padding:13px}.scanner-shell .kpi span{font-size:.69rem}.scanner-shell .kpi strong{font-size:1.7rem}.scanner-card{border:1px solid #273f65;border-radius:17px;background:#102039;color:white;padding:14px;margin-top:16px;box-shadow:0 20px 40px rgba(16,32,57,.17)}.scanner-status{display:flex;align-items:center;gap:8px;font-size:.81rem;margin-bottom:12px;color:#cbdcf1}.live-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8}.live-dot.online{background:#24cc81;box-shadow:0 0 0 4px #22c55e22}.scanner-tag{font-weight:850;margin-left:auto;letter-spacing:.1em;font-size:.7rem;color:#95b9f9}.scanner-screen{position:relative;min-height:270px;border:1px solid #465e82;border-radius:14px;overflow:hidden;background:#0b1728}.scanner-screen #reader{position:relative;z-index:2;width:100%;min-height:1px}.scanner-screen #reader video{width:100%;max-height:400px;object-fit:cover}.reader-placeholder{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#b6c7db;gap:10px;text-align:center}.reader-placeholder .scan-icon{font-size:5rem;color:#5e8eec;line-height:1}.reader-placeholder span{font-size:.83rem;color:#94a8c7}.result{margin-top:13px;min-height:94px;border-radius:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:15px;text-align:center}.result strong{font-size:1.2rem}.result span{font-size:.84rem}.result.neutral{background:#213451;color:#ccdbed}.result.approved{background:#dcfce7;color:#075c31}.result.duplicate,.result.cancelled,.result.wrong_event,.result.wrong_gate,.result.invalid,.result.closed,.result.error{background:#fee2e2;color:#a61f2c}.reader-actions{margin-top:15px;display:flex;gap:9px}.reader-actions .wide{flex:1}.reader-actions .btn{min-width:90px}.manual-entry{margin-top:18px;background:#1b304d;border:1px solid #365578;border-radius:11px;padding:13px}.manual-entry summary{cursor:pointer;color:#d9e8ff;font-weight:700;font-size:.86rem}.manual-entry form{margin-top:16px}.manual-entry input{background:#f9fafb}.manual-entry small{color:#adbbcf}.scanner-note{font-size:.78rem;color:#687c92;margin:14px 3px}.hidden{display:none!important}@media(max-width:760px){.topbar-inner{padding:12px 14px;min-height:65px}.nav{gap:10px;font-size:.78rem}.user-name{display:none}.main{padding:18px 12px 35px}.brand{font-size:.85rem}.brand-icon{width:34px;height:34px}.page-head{align-items:flex-start;flex-direction:column;gap:15px}.card{padding:17px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col,.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}.scanner-shell .kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.scanner-shell .kpi{padding:9px}.scanner-shell .kpi strong{font-size:1.4rem}.scanner-shell .kpi span{font-size:.61rem}.scanner-screen{min-height:250px}.reader-actions{flex-wrap:wrap}.reader-actions .wide{flex-basis:100%}.scanner-head{flex-direction:row;align-items:center}.scanner-head .btn{padding:8px;min-height:38px}.staff-row{font-size:.84rem}}@media print{.topbar,.footer,.nav,.page-head,.kpis,.card:not(.issue-card),.issue-card button{display:none!important}.issue-card{display:block!important;box-shadow:none!important;border:0!important}.main{padding:0}.issue-card #qr-output{page-break-inside:avoid}}
/* Adaptação responsiva da marca White Label nos painéis internos */
.brand-mini{height:38px;width:38px;flex-shrink:0;border-radius:9px;object-fit:contain;background:#fff}.topbar-inner{flex-wrap:wrap}.topbar-inner .nav{flex-wrap:wrap}.p-toolbar{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}
@media(max-width:560px){.topbar-inner .nav{gap:11px}.topbar-inner .nav a{font-size:.7rem}.topbar-inner .brand span{max-width:178px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-inner .brand small{display:none}}
