:root{--black:#111214;--black2:#24262a;--red:#c51b35;--red2:#991329;--bg:#f4f4f5;--white:#fff;--text:#202124;--muted:#6b7078;--line:#dedfe2;--danger:#a91f2c;--ok:#12663b;--shadow:0 12px 32px #11121417}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--text);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{grid-template-columns:245px 1fr;min-height:100vh;display:grid}.side{background:var(--black);color:#fff;z-index:10;flex-direction:column;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid #34363a;justify-content:center;margin-bottom:18px;padding:8px 8px 26px;display:flex}.brand img{object-fit:contain;width:92px;height:92px}.nav{gap:5px;display:grid}.nav button{color:#c5c7ca;text-align:left;background:0 0;border:0;border-radius:10px;padding:12px 14px;font-weight:750}.nav button.active,.nav button:hover{color:#fff;background:#2c2e32}.nav button.active{box-shadow:inset 3px 0 var(--red)}.side-user{border-top:1px solid #34363a;margin-top:auto;padding:16px 7px 0}.side-user strong,.side-user small{display:block}.side-user small{color:#aeb1b6;margin:4px 0 12px}.logout{color:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.main{min-width:0;padding:28px 34px}.top{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.top h1{margin:0;font-size:28px}.top p{color:var(--muted);margin:5px 0 0}.mobile-menu{display:none}.card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:16px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:17px;display:grid}.stat{padding:19px}.stat small{color:var(--muted);font-weight:700}.stat strong{margin-top:7px;font-size:27px;display:block}.hero{background:var(--black);color:#fff;min-height:230px;padding:28px}.hero img{object-fit:contain;object-position:left center;width:min(300px,70%);max-height:95px}.hero p{color:#c8cbd0}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:17px;display:flex}.actions{flex-wrap:wrap;gap:9px;display:flex}.btn{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:10px;padding:11px 15px;font-weight:800}.btn.primary{background:var(--red);border-color:var(--red);color:#fff}.btn.dark{background:var(--black);border-color:var(--black);color:#fff}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.55;cursor:wait}.link{color:var(--red);background:0 0;border:0;padding:4px;font-weight:800}.search{flex:1;min-width:min(420px,100%)}.input,.search input,.field input,.field select,.field textarea,.filters select{border:1px solid var(--line);background:#fff;border-radius:10px;outline:none;width:100%;padding:12px}.input:focus,.search input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--red);box-shadow:0 0 0 3px #c51b351a}.filters{flex-wrap:wrap;gap:8px;display:flex}.filters select{width:auto}.table-wrap{overflow:auto}.table{border-collapse:collapse;width:100%;min-width:760px}.table th,.table td{text-align:left;border-bottom:1px solid #ececee;padding:14px 16px}.table th{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;background:#f8f8f9;font-size:12px}.table tr:last-child td{border:0}.badge{color:#565960;background:#ececee;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:850;display:inline-flex}.badge.Activo,.badge.Vigente,.badge.Registrado{color:#1a6038;background:#dff3e8}.badge.Anulada{color:#93252a;background:#f8e1e2}.notice{border-left:4px solid var(--red);background:#f7eded;border-radius:8px;margin:12px 0;padding:12px}.empty{text-align:center;color:var(--muted);padding:38px 20px}.file-head{justify-content:space-between;gap:18px;padding:22px;display:flex}.file-head h2{margin:0 0 5px}.file-head p{color:var(--muted);margin:0}.grid2{grid-template-columns:310px 1fr;gap:16px;margin-top:16px;display:grid}.summary,.history{padding:20px}.kv{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:12px;padding:9px 0;display:grid}.kv span{color:var(--muted)}.sub{border:1px solid var(--line);border-radius:13px;margin-top:11px;padding:16px}.sub-head{justify-content:space-between;gap:12px;display:flex}.sub h4{margin:0}.sub p{color:var(--muted)}.dots{flex-wrap:wrap;gap:5px;display:flex}.dot{background:#d8d9dc;border-radius:50%;width:12px;height:12px}.dot.used{background:var(--red)}.attendance{max-width:850px;margin:auto}.identify,.found{padding:25px}.matches{gap:7px;margin-top:8px;display:grid}.info-grid{grid-template-columns:repeat(3,1fr);gap:11px;margin:18px 0;display:grid}.info{background:#f4f4f5;border-radius:10px;padding:13px}.info small{color:var(--muted);display:block}.modal{z-index:50;background:#000000a6;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.dialog{background:#fff;border-radius:16px;width:min(700px,100%);max-height:92vh;overflow:auto}.dialog-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.dialog-head h2{margin:0}.close{background:#eeeef0;border:0;border-radius:50%;width:36px;height:36px;font-size:20px}.form{grid-template-columns:1fr 1fr;gap:14px;padding:22px;display:grid}.field{gap:7px;display:grid}.field.full{grid-column:1/-1}.field label{font-size:13px;font-weight:800}.field textarea{min-height:85px}.form-actions{grid-column:1/-1;justify-content:flex-end;gap:9px;display:flex}.login-page{background:var(--black);place-items:center;min-height:100vh;padding:20px;display:grid}.login-card{background:#fff;border-radius:18px;width:min(420px,100%);padding:30px}.login-brand{text-align:center;border-bottom:1px solid var(--line);margin-bottom:20px;padding-bottom:20px}.login-brand img{object-fit:contain;width:min(270px,90%);max-height:120px}.login-card .field{margin-top:13px}.login-card .btn{width:100%;margin-top:18px}.loading-page{background:var(--black);color:#fff;place-items:center;min-height:100vh;display:grid}.error{color:var(--danger);font-weight:700}.toast{background:var(--black);color:#fff;z-index:80;border-radius:10px;padding:13px 17px;position:fixed;bottom:20px;right:20px}.mobile-nav{display:none}@media (max-width:820px){.shell{padding-bottom:72px;display:block}.side{display:none}.main{padding:18px 14px}.top{margin-bottom:18px}.top h1{font-size:24px}.mobile-menu{display:block}.stats{grid-template-columns:1fr 1fr;gap:9px}.stat{padding:15px}.stat strong{font-size:23px}.hero{min-height:0}.table{min-width:0}.table thead{display:none}.table,.table tbody,.table tr,.table td{width:100%;display:block}.table tr{border-bottom:1px solid var(--line);padding:12px}.table td{border:0;padding:5px 4px}.table td:before{content:attr(data-label);color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:800;display:block}.file-head{display:block}.file-head .actions{margin-top:16px}.grid2{grid-template-columns:1fr}.info-grid{grid-template-columns:1fr 1fr}.form{grid-template-columns:1fr}.field.full,.form-actions{grid-column:1}.form-actions{background:#fff;padding-top:10px;position:sticky;bottom:0}.dialog{border-radius:0;height:100%;max-height:100%}.modal{padding:0}.mobile-nav{background:var(--black);z-index:35;border-top:1px solid #34363a;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.mobile-nav button{color:#bfc2c7;background:0 0;border:0;padding:10px 3px;font-size:11px;font-weight:750}.mobile-nav button.active{color:#fff;box-shadow:inset 0 3px var(--red)}.filters select{width:100%}.search{min-width:100%}}@media (max-width:430px){.stats{grid-template-columns:1fr 1fr}.stat small{font-size:12px}.info-grid{grid-template-columns:1fr}.actions .btn{flex:1}.main{padding:14px 10px}.top p{font-size:13px}}.qr-file{margin:12px 0;display:inline-flex}.qr-file input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}@media (max-width:820px){.mobile-nav{overscroll-behavior-x:contain;scrollbar-width:none;grid-template-columns:none;display:flex;overflow-x:auto}.mobile-nav::-webkit-scrollbar{display:none}.mobile-nav button{white-space:nowrap;flex:1 0 88px;padding:10px 5px}}
