:root{
  --navy:#25207f;
  --navy-2:#3732a5;
  --blue:#2774e8;
  --yellow:#f4b548;
  --green:#2fcf71;
  --aqua:#35c9cf;
  --red:#ef4d5f;
  --purple:#6551d8;
  --ink:#20233a;
  --muted:#687086;
  --line:#dfe3ee;
  --surface:#ffffff;
  --bg:#f4f6fb;
  --shadow:0 16px 42px rgba(31,35,68,.12);
}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;font-family:Inter,Arial,Helvetica,sans-serif;color:var(--ink);background:var(--bg);min-height:100vh}
a{text-decoration:none;color:inherit}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.app-shell{min-height:100vh;display:flex;flex-direction:column}
.topbar{background:var(--navy);color:white;padding:14px 18px;box-shadow:0 4px 14px rgba(37,32,127,.18)}
.topbar-inner{max-width:1180px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:12px}
.brand{font-weight:800;letter-spacing:.2px}.brand small{font-weight:500;opacity:.8;display:block;font-size:.72rem}
.page{width:min(100% - 24px,1180px);margin:0 auto;padding:22px 0 36px;flex:1}
.hero{background:linear-gradient(145deg,#fff,#eef0ff);border:1px solid #e4e6f4;border-radius:22px;padding:26px 20px;box-shadow:var(--shadow);text-align:center}
.hero h1{margin:0 0 8px;font-size:1.65rem}.hero p{margin:0;color:var(--muted);line-height:1.5}
.role-grid,.action-grid{display:grid;gap:14px;margin-top:18px}
.card-action{border:0;border-radius:18px;padding:22px 18px;text-align:left;box-shadow:0 8px 22px rgba(31,35,68,.09);transition:.2s transform,.2s box-shadow;background:white}
.card-action:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(31,35,68,.14)}
.card-action h3{margin:0 0 6px}.card-action p{margin:0;color:var(--muted);font-size:.92rem}.visitor{border-left:8px solid var(--yellow)}.admin{border-left:8px solid var(--blue)}.entry{border-left:8px solid var(--green)}.exit{border-left:8px solid var(--red)}
.panel{background:white;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:20px;margin-top:18px}
.panel h2,.panel h3{margin-top:0}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.section-title p{margin:4px 0 0;color:var(--muted);font-size:.9rem}
.form-grid{display:grid;grid-template-columns:1fr;gap:14px}
.field{display:flex;flex-direction:column;gap:6px}.field label{font-weight:700;font-size:.9rem}.field small{color:var(--muted)}
.field input,.field select,.field textarea{width:100%;border:1px solid #cfd5e4;border-radius:12px;padding:12px 13px;background:white;outline:none;transition:.2s border,.2s box-shadow}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--navy-2);box-shadow:0 0 0 3px rgba(55,50,165,.12)}
.field textarea{min-height:92px;resize:vertical}.required::after{content:' *';color:var(--red)}
.visitor-card{border:1px solid var(--line);border-radius:16px;padding:16px;background:#fbfcff;margin-top:14px;position:relative}.visitor-card h4{margin:0 0 14px;color:var(--navy)}
.btn-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.btn{border:0;border-radius:12px;padding:12px 16px;font-weight:800}.btn-primary{background:var(--navy);color:white}.btn-green{background:var(--green);color:#0d3520}.btn-red{background:var(--red);color:white}.btn-yellow{background:var(--yellow);color:#4b3500}.btn-aqua{background:var(--aqua);color:#073a3c}.btn-purple{background:var(--purple);color:white}.btn-ghost{background:#edf0f7;color:var(--ink)}.btn-sm{padding:8px 11px;font-size:.84rem}
.code-box{font-size:1.5rem;font-weight:900;letter-spacing:2px;color:var(--navy);background:#f1f0ff;border:1px dashed var(--navy-2);padding:16px;border-radius:14px;text-align:center}
.status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:.76rem;font-weight:800}.status-activa{background:#dff8e9;color:#17663a}.status-parcial{background:#fff2c9;color:#775a00}.status-finalizada{background:#e8eaf2;color:#4b5166}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.table{width:100%;border-collapse:collapse;min-width:760px}.table th,.table td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:.88rem}.table th{background:#f4f5fb;color:#4a4f63;position:sticky;top:0}.table tr:last-child td{border-bottom:0}
.login-card{max-width:460px;margin:40px auto 0}.admin-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.admin-toolbar .field{min-width:160px;flex:1}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.tab{border:0;background:#eceef7;padding:10px 13px;border-radius:10px;font-weight:700}.tab.active{background:var(--navy);color:white}
.note{border-left:5px solid var(--yellow);background:#fff9e7;padding:12px 14px;border-radius:10px;color:#5d4b13}.muted{color:var(--muted)}
.footer{padding:16px;text-align:center;color:var(--muted);font-size:.8rem}
.back-link{display:inline-flex;gap:6px;align-items:center;color:var(--navy);font-weight:800;margin-bottom:12px}
@media (min-width:700px){
  .page{padding-top:32px}.hero{padding:36px}.hero h1{font-size:2rem}
  .role-grid,.action-grid{grid-template-columns:repeat(2,1fr)}
  .form-grid.two{grid-template-columns:repeat(2,1fr)}
  .form-grid.three{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:1024px){
  .topbar{padding:17px 26px}.hero{padding:44px}.panel{padding:26px}.hero h1{font-size:2.25rem}
}
