:root{--bg:#f5f6f8;--panel:#fff;--text:#1d2330;--muted:#667085;--accent:#1f5eff;--border:#e2e5ea}*{box-sizing:border-box}body{margin:0;font-family:system-ui,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}.container{max-width:1200px;margin:0 auto;padding:16px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));grid-gap:16px;gap:16px;margin-bottom:16px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px}.panel header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}.panel h2{font-size:16px;margin:0}.row{gap:12px;align-items:flex-start}.actions,.row{display:flex;flex-wrap:wrap}.actions{gap:8px;margin-top:12px}button{background:var(--accent);color:#fff;border:0;border-radius:6px;padding:8px 14px;cursor:pointer}button.secondary{background:#eef1f6;color:var(--text)}button:disabled{opacity:.5;cursor:not-allowed}.muted{color:var(--muted);font-size:13px}.video{width:240px;aspect-ratio:16/9;background:#000;border-radius:6px}.thumb{width:90px;aspect-ratio:3/4;object-fit:cover;border-radius:4px}.fp,.placeholder,.thumb{border:1px solid var(--border)}.fp,.placeholder{width:150px;height:190px;border-radius:6px;object-fit:contain}.placeholder{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:13px;padding:8px}.sig-canvas{width:100%;max-width:500px;aspect-ratio:5/1;border:1px dashed var(--border);border-radius:6px}.sig-thumb{max-width:250px;border:1px solid var(--border)}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.form-grid label{display:flex;flex-direction:column;font-size:13px;gap:4px}.form-grid input,.form-grid select{padding:7px;border:1px solid var(--border);border-radius:6px;font:inherit;background:#fff}.form-grid [aria-invalid=true]{border-color:#dc2626}.field-error{color:#b91c1c;font-size:12px;margin:0}.form-grid.single{grid-template-columns:1fr}.login{max-width:420px;padding-top:10vh}.topbar{justify-content:space-between;gap:12px;flex-wrap:wrap}.operator,.topbar{display:flex;align-items:center}.operator{gap:10px}.confirm-print{margin-top:12px;padding:12px;border:1px solid #fde68a;background:#fffbeb;border-radius:8px}.confirm-print p{margin:0 0 4px}.badge{font-size:12px;padding:2px 8px;border-radius:99px;background:#eef1f6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}.badge-ready{background:#dcfce7;color:#166534}.badge-capturing,.badge-connecting{background:#fef9c3;color:#854d0e}.badge-disconnected,.badge-error{background:#fee2e2;color:#991b1b}.card-preview{display:flex;gap:16px;flex-wrap:wrap}.card-preview .card-face{box-shadow:0 2px 8px rgba(0,0,0,.15);border-radius:3mm}.card-face{width:85.6mm;height:54mm;background:#fff;overflow:hidden;position:relative;font-size:7pt;color:#111}.card-header{background:#1f5eff;color:#fff;font-weight:700;text-align:center;padding:1.5mm;font-size:8pt}.card-body{display:flex;gap:3mm;padding:3mm}.card-photo{width:24mm;height:32mm;background:#eee;flex:none}.card-fp img,.card-photo img{width:100%;height:100%;object-fit:cover}.card-details{display:flex;flex-direction:column;gap:1mm}.card-name{font-size:10pt;font-weight:700}.card-back{padding:3mm}.card-back-row{display:flex;gap:3mm}.card-fp{width:20mm;height:25mm;border:.2mm solid #ccc;flex:none}.card-fp img{object-fit:contain}.card-back-info{display:flex;flex-direction:column;gap:1.5mm}.card-sig{position:absolute;bottom:3mm;left:3mm;right:3mm;text-align:center}.card-sig img{height:9mm;max-width:100%;object-fit:contain;display:block;margin:0 auto;border-bottom:.2mm solid #555}.small{font-size:5.5pt;color:#555}.card-print-area{display:none}.nav{display:flex;gap:12px;font-size:14px}.nav a{color:var(--accent);text-decoration:none}.nav a:hover{text-decoration:underline}.nav-current{font-weight:600}.narrow{max-width:640px}.notice{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;margin:0 0 12px}.notice,.success{padding:10px 12px}.success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;border-radius:8px}.forgot{margin-top:12px;font-size:14px}.forgot summary{cursor:pointer;color:var(--accent)}a.button{display:inline-block;background:var(--accent);color:#fff;border-radius:6px;padding:8px 14px;text-decoration:none}.admin-section{margin-bottom:16px}.admin-section h3{font-size:15px;margin:18px 0 8px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:14px}.table td,.table th{text-align:left;padding:8px;border-bottom:1px solid var(--border);vertical-align:middle}.table th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.02em}.table .badge{margin-right:4px}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.row-actions button{padding:5px 10px;font-size:13px}.form-grid.inline{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}.form-grid.inline .actions{margin-top:0}.temp-password{border:1px solid #93c5fd;background:#eff6ff;padding:12px;border-radius:8px;margin-bottom:12px}.temp-password p{margin:4px 0}.temp-password-value{font-family:ui-monospace,Consolas,monospace;font-size:20px;letter-spacing:.05em}@media print{@page{size:85.6mm 54mm;margin:0}body,html{margin:0!important;padding:0!important;background:#fff!important}body>:not(.card-print-area){display:none!important}.card-print-area{display:block!important}.card-print-area .card-face{break-after:page;page-break-after:always;border-radius:0;box-shadow:none}.card-print-area .card-face:last-child{break-after:auto;page-break-after:auto}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}