*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif;background:#f4f6fb;color:#111827}a{text-decoration:none;color:inherit}input,button{font:inherit}button{cursor:pointer}.btn{border:0;border-radius:14px;padding:13px 18px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary{background:linear-gradient(135deg,var(--primary,#f7b500),#ffe08a);color:#111}.ghost{background:#fff;border:1px solid #e5e7eb;color:#111}.alert{padding:13px 15px;border-radius:14px;margin:12px 0;font-weight:700}.alert.ok{background:#dcfce7;color:#166534}.alert.err{background:#fee2e2;color:#991b1b}.public-body{min-height:100vh;background:radial-gradient(circle at top,#374151 0,#111827 42%,#05070c 100%);color:white;overflow-x:hidden}.bg-lights{position:fixed;inset:0;background:radial-gradient(circle at 25% 15%,rgba(247,181,0,.25),transparent 28%),radial-gradient(circle at 80% 10%,rgba(255,255,255,.12),transparent 25%);pointer-events:none}.cofre-app{position:relative;width:min(980px,100%);margin:auto;padding:24px 18px 34px}.public-head{text-align:center}.logo{max-width:190px;max-height:90px;object-fit:contain}.logo-text{font-size:54px}.public-head h1{margin:8px 0 16px;font-size:clamp(26px,5vw,48px)}.promo-bar{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px auto 18px;max-width:780px}.promo-bar div{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(14px);padding:16px;border-radius:22px;text-align:center}.promo-bar span{display:block;color:#d1d5db;font-size:13px}.promo-bar strong{font-size:clamp(18px,4vw,30px);color:var(--primary,#f7b500)}.vault-wrap{text-align:center}.vault{width:min(360px,82vw);height:min(360px,82vw);margin:8px auto 10px;border-radius:42px;background:linear-gradient(145deg,#6b7280,#1f2937 58%,#0b1020);box-shadow:inset 0 10px 25px rgba(255,255,255,.18),inset 0 -25px 35px rgba(0,0,0,.55),0 30px 80px rgba(0,0,0,.45);position:relative;padding:34px}.vault-door{position:relative;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,#475569,#111827 67%);border:14px solid #9ca3af;box-shadow:inset 0 0 0 10px #1f2937,inset 0 0 45px rgba(0,0,0,.85)}.vault-display{position:absolute;top:28%;left:50%;transform:translateX(-50%);width:74%;background:#020617;color:#55ff9b;border:2px solid #334155;border-radius:14px;padding:13px;font-family:ui-monospace,Consolas,monospace;font-size:24px;letter-spacing:4px;box-shadow:0 0 18px rgba(85,255,155,.2)}.handle{position:absolute;left:50%;top:57%;transform:translate(-50%,-50%);width:90px;height:90px;border-radius:50%;background:linear-gradient(145deg,#e5e7eb,#6b7280);box-shadow:0 8px 18px rgba(0,0,0,.45)}.handle i{position:absolute;left:50%;top:50%;width:150px;height:14px;border-radius:99px;background:#d1d5db;transform:translate(-50%,-50%) rotate(25deg)}.rings{position:absolute;inset:18px;border-radius:50%;border:2px dashed rgba(255,255,255,.25);animation:spin 14s linear infinite}.vault-shine{position:absolute;inset:0;border-radius:42px;background:linear-gradient(120deg,rgba(255,255,255,.2),transparent 32%);z-index:1;pointer-events:none}.hint{color:#d1d5db;margin:8px}.keyboard{max-width:580px;margin:16px auto;display:grid;gap:10px}.letters,.numbers{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.key{min-height:54px;border:0;border-radius:17px;background:#fff;color:#111;font-weight:900;font-size:20px;box-shadow:0 10px 22px rgba(0,0,0,.25);transition:.2s}.letterKey{background:#22c55e;color:#06240f}.numKey{background:#ef4444;color:#fff}.numKey:not(:disabled){background:#22c55e;color:#06240f}.letterKey:disabled,.numKey:disabled{filter:grayscale(1);opacity:.45;cursor:not-allowed}.action{background:#334155;color:#fff}.clear{background:#7f1d1d}.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,25px);background:#111827;color:white;border:1px solid rgba(255,255,255,.12);padding:14px 18px;border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.4);opacity:0;pointer-events:none;z-index:20;transition:.25s;max-width:90%;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.ok{background:#166534}.modal{position:fixed;inset:0;background:rgba(0,0,0,.72);display:none;place-items:center;padding:18px;z-index:30}.modal.open{display:grid}.modal-card{width:min(480px,100%);background:#fff;color:#111;border-radius:28px;padding:26px;box-shadow:0 30px 80px rgba(0,0,0,.5);text-align:center}.trophy{font-size:60px}.modal-card label,.login-card label,.panel label{display:block;text-align:left;margin:10px 0;color:#374151;font-weight:700}.modal-card input,.login-card input,.panel input{width:100%;padding:13px 14px;border:1px solid #d1d5db;border-radius:14px;margin-top:6px;background:#fff}.won .vault-door{animation:pulse 1s ease infinite}.empty-promo{max-width:520px;margin:90px auto;background:white;color:#111;padding:32px;border-radius:28px;text-align:center}.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#111827,#374151)}.login-card{width:min(430px,92vw);background:white;border-radius:28px;padding:30px;box-shadow:0 30px 90px rgba(0,0,0,.35)}.vault-mini{font-size:52px;text-align:center}.login-card h1{text-align:center;margin:8px}.login-card p{text-align:center;color:#6b7280}.back{display:block;text-align:center;margin-top:14px;color:#6b7280}.admin-body{display:flex;min-height:100vh}.sidebar{width:270px;background:#111827;color:#fff;padding:22px;position:fixed;inset:0 auto 0 0}.brand{font-size:20px;margin-bottom:22px}.sidebar nav{display:grid;gap:8px}.sidebar a{padding:13px 14px;border-radius:14px;color:#d1d5db}.sidebar a.on,.sidebar a:hover{background:#263244;color:white}.admin-main{margin-left:270px;padding:24px;width:calc(100% - 270px)}.admin-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.card,.panel{background:white;border-radius:22px;padding:20px;box-shadow:0 12px 30px rgba(15,23,42,.08);margin-bottom:16px}.card span{display:block;color:#6b7280}.card strong{font-size:28px}.grid-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:end}.check{display:flex!important;align-items:center;gap:8px}.check input{width:auto!important}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:12px;border-bottom:1px solid #e5e7eb}th{font-size:13px;color:#6b7280}.mini{border:0;border-radius:10px;background:#e5e7eb;padding:7px 10px;font-weight:800;color:#111}.mini.danger{background:#fee2e2;color:#991b1b}.receipt-body{background:#e5e7eb;padding:25px}.receipt{max-width:850px;margin:auto;background:white;padding:34px;border-radius:12px}.receipt header{display:flex;align-items:center;gap:18px;border-bottom:2px solid #111827;padding-bottom:18px}.receipt header img{max-width:150px;max-height:80px}.receipt h1{margin:0}.receipt-box{border:1px solid #d1d5db;border-radius:12px;padding:16px;margin:18px 0}.receipt-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px}.small{font-size:13px;color:#6b7280}.sign{height:90px;display:flex;align-items:end;justify-content:center}.sign span{border-top:1px solid #111;padding:8px 60px}.receipt-actions{text-align:center;margin-top:22px}.receipt-actions .btn{margin:4px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{box-shadow:0 0 55px rgba(34,197,94,.75)}}@media(max-width:820px){.promo-bar{grid-template-columns:1fr}.keyboard{padding-bottom:70px}.admin-body{display:block}.sidebar{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;height:70px;padding:8px;z-index:10}.brand{display:none}.sidebar nav{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.sidebar a{font-size:11px;text-align:center;padding:9px 4px}.admin-main{margin-left:0;width:100%;padding:18px 14px 90px}.admin-top{gap:10px}.cards{grid-template-columns:1fr 1fr}.grid-form{grid-template-columns:1fr}.receipt-grid{grid-template-columns:1fr}.receipt{padding:20px}.receipt header{display:block;text-align:center}.letters,.numbers{gap:8px}.key{min-height:50px}.vault-display{font-size:19px}}@media print{body{background:white}.receipt{box-shadow:none}.receipt-actions{display:none}.receipt-body{padding:0}.receipt{max-width:none}}
