:root{--ease-out-quint:cubic-bezier(0.23,1,0.32,1);--ease-in-out-cubic:cubic-bezier(0.645,0.045,0.355,1);--ease-out-cubic:cubic-bezier(0.33,1,0.68,1);--bg-1:#4f2bd9;--bg-2:#7c3aed;--bg-3:#a855f7;--ink:#1f2233;--ink-soft:#565b73;--card:#fff;--line:#ece9f6;--c-red:#e84545;--c-blue:#2563eb;--c-amber:#f59e0b;--c-green:#16a34a;--ok:#16a34a;--bad:#e11d48;--gold:#f7b500;--radius:18px;--shadow:0 18px 45px rgba(40,12,92,.18);--shadow-sm:0 6px 18px rgba(40,12,92,.12)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;background:linear-gradient(135deg,var(--bg-1),var(--bg-2) 55%,var(--bg-3));background-attachment:fixed}.app,body{min-height:100vh}.app{display:flex;flex-direction:column;align-items:center;padding:28px 16px 60px}.container{width:100%;max-width:760px}.brand{display:flex;align-items:center;gap:12px;color:#fff;margin-bottom:18px;justify-content:center}.brand .logo{font-size:30px;filter:drop-shadow(0 4px 8px rgba(0,0,0,.25))}.brand h1{font-size:20px;margin:0;letter-spacing:.2px;font-weight:800}.brand p{margin:0;font-size:12.5px;opacity:.85}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px}.title{font-size:26px;font-weight:800;margin:0 0 6px}.subtitle{margin:0 0 22px;font-size:14.5px}.label,.subtitle{color:var(--ink-soft)}.label{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;display:block}.input{width:100%;padding:14px 16px;border-radius:14px;border:2px solid var(--line);font-size:16px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.input:focus{border-color:var(--bg-2);box-shadow:0 0 0 4px rgba(124,58,237,.15)}.length-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.length-card{border:2px solid var(--line);background:#faf9ff;border-radius:16px;padding:18px 8px;text-align:center;cursor:pointer;transition:transform .2s var(--ease-out-quint),border-color .16s ease,box-shadow .2s var(--ease-out-quint),background .16s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.length-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-sm)}.length-card[data-active=true]{border-color:var(--bg-2);background:#f3edff;box-shadow:0 0 0 4px rgba(124,58,237,.16)}.length-card .n{font-size:30px;font-weight:800;line-height:1;color:var(--bg-2)}.length-card .t{font-size:12px;color:var(--ink-soft);margin-top:4px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:14px;padding:15px 22px;font-size:16px;font-weight:800;cursor:pointer;transition:transform .12s var(--ease-out-cubic),box-shadow .2s ease,filter .15s ease,background .15s ease;display:inline-flex;align-items:center;justify-content:center;gap:10px}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,#7c3aed,#5b21d6);color:#fff;box-shadow:0 12px 24px rgba(91,33,214,.35)}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.btn-secondary{background:#f1eefb;color:#4c1d95}.btn-ghost{background:transparent;color:#fff;border:2px solid hsla(0,0%,100%,.55)}.btn-block{width:100%}.row{display:flex;gap:12px;flex-wrap:wrap}.mt-18{margin-top:18px}.mt-24{margin-top:24px}.quiz-top{display:flex;align-items:center;justify-content:space-between;color:#fff;margin-bottom:12px;font-weight:700;font-size:14px}.pill{background:hsla(0,0%,100%,.18);padding:6px 12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.pill,.progress{border-radius:999px}.progress{height:10px;background:hsla(0,0%,100%,.25);overflow:hidden;margin-bottom:16px}.progress>span{display:block;height:100%;background:linear-gradient(90deg,#fde047,#f59e0b);border-radius:999px;transform-origin:left center;transition:transform .35s var(--ease-out-quint)}.timer{height:12px;background:#eef0f7;overflow:hidden;margin:4px 0 18px}.timer,.timer>span{border-radius:999px}.timer>span{display:block;height:100%;transform-origin:left center;transition:transform 1s linear,background .3s ease}.category-badge{display:inline-block;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--bg-2);background:#f3edff;padding:5px 11px;border-radius:999px;margin-bottom:12px}.question-text{font-size:22px;font-weight:800;line-height:1.3;margin:0 0 20px}.options{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.option{display:flex;align-items:center;gap:14px;text-align:left;border:none;border-radius:16px;padding:16px;font-size:15.5px;font-weight:600;color:#fff;cursor:pointer;min-height:70px;transition:transform .14s var(--ease-out-cubic),box-shadow .2s ease,filter .15s ease,opacity .2s ease;box-shadow:var(--shadow-sm)}.option:hover:not(:disabled){transform:translateY(-3px);filter:brightness(1.05)}.option:disabled{cursor:default}.option .shape{width:30px;height:30px;flex:0 0 30px;display:flex;align-items:center;justify-content:center;font-size:16px;background:hsla(0,0%,100%,.25);border-radius:8px}.opt-0{background:var(--c-red)}.opt-1{background:var(--c-blue)}.opt-2{background:var(--c-amber)}.opt-3{background:var(--c-green)}.opt-text{flex:1 1 auto;min-width:0}.option[data-state=correct]{background:var(--ok);box-shadow:0 0 0 4px rgba(22,163,74,.35),0 10px 26px rgba(22,163,74,.4);font-weight:800}.option[data-state=incorrect]{background:var(--bad);box-shadow:0 0 0 4px rgba(225,29,72,.32)}.option[data-state=dimmed]{filter:grayscale(.5)}.option .mark{margin-left:auto;flex:0 0 auto;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.28);border-radius:50%;font-size:16px;font-weight:900}.result-hero{text-align:center}.score-ring{width:150px;height:150px;margin:6px auto 14px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:800}.score-ring.pass{background:conic-gradient(#16a34a var(--p),rgba(22,163,74,.18) 0)}.score-ring.fail{background:conic-gradient(#e11d48 var(--p),rgba(225,29,72,.18) 0)}.score-ring .inner{width:116px;height:116px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--ink)}.score-ring .pct{font-size:34px;line-height:1}.score-ring .sub{font-size:12px;color:var(--ink-soft);margin-top:3px}.verdict{font-size:24px;font-weight:900;margin:6px 0 2px}.verdict.pass{color:var(--ok)}.verdict.fail{color:var(--bad)}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin:20px 0}.stat{background:#faf9ff;border:1px solid var(--line);border-radius:14px;padding:14px 8px;text-align:center}.stat .v{font-size:22px;font-weight:800}.stat .k{font-size:11.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.lb-list{display:flex;flex-direction:column;gap:10px}.lb-row{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:14px;background:#faf9ff;border:1px solid var(--line)}.lb-row[data-me=true]{background:#fff7e6;border-color:#f7b500;box-shadow:0 0 0 3px rgba(247,181,0,.18)}.lb-rank{width:36px;height:36px;flex:0 0 36px;display:flex;align-items:center;justify-content:center;font-weight:900;border-radius:10px;background:#efeaff;color:var(--bg-2)}.lb-rank.gold{background:linear-gradient(135deg,#ffe17a,#f7b500);color:#5a3c00}.lb-rank.silver{background:linear-gradient(135deg,#e8edf3,#b8c2cf);color:#3a4654}.lb-rank.bronze{background:linear-gradient(135deg,#f3c08a,#cd7f32);color:#4a2a08}.lb-name{font-weight:800;flex:1 1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-meta{font-size:12px;color:var(--ink-soft)}.lb-points{font-weight:900;color:var(--bg-2);text-align:right}.tag{font-size:10.5px;font-weight:800;padding:3px 8px;border-radius:999px;text-transform:uppercase}.tag.ok{background:#dcfce7;color:#15803d}.tag.bad{background:#ffe4e6;color:#be123c}.empty{color:var(--ink-soft);padding:30px 10px}.center,.empty{text-align:center}.muted{color:var(--ink-soft);font-size:13px}.link-btn{background:none;border:none;color:var(--bg-2);font-weight:800;cursor:pointer;font-size:14px}.error-text{color:var(--bad);font-size:13px;margin-top:8px}.mute-btn{position:fixed;top:14px;right:14px;z-index:60;width:46px;height:46px;border-radius:50%;border:2px solid hsla(0,0%,100%,.55);background:hsla(0,0%,100%,.16);color:#fff;font-size:20px;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:transform .14s var(--ease-out-cubic),background .16s ease;display:flex;align-items:center;justify-content:center}.mute-btn:hover{background:hsla(0,0%,100%,.28);transform:scale(1.06)}.mute-btn:active{transform:scale(.94)}.name-row{display:flex;gap:8px;align-items:stretch}.name-row .input{flex:1 1}.anon-btn{flex:0 0 auto;border:2px dashed var(--bg-2);background:#f3edff;color:#4c1d95;border-radius:14px;padding:0 14px;font-weight:800;font-size:13px;cursor:pointer;white-space:nowrap;transition:transform .14s var(--ease-out-cubic),background .15s ease}.anon-btn:hover{background:#e9defb;transform:translateY(-2px)}.anon-btn:active{transform:scale(.96)}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin:8px 0 20px}.stats-table{width:100%;border-collapse:collapse;font-size:13px}.stats-table td,.stats-table th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.stats-table th{color:var(--ink-soft);text-transform:uppercase;font-size:11px;letter-spacing:.5px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.confetti{position:fixed;top:-12px;width:10px;height:16px;border-radius:2px;pointer-events:none;z-index:50}@media (max-width:540px){.options{grid-template-columns:1fr}.length-card .n{font-size:24px}.question-text{font-size:19px}.title{font-size:22px}}body.quiz-secure{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}@media print{body.quiz-secure{visibility:hidden}body.quiz-secure:before{content:"Contenido protegido — Quiz Bomberos CGBVP";visibility:visible;display:block;text-align:center;padding:120px 40px;font-size:22px;font-family:sans-serif;color:#333}}.secure-overlay{position:fixed;inset:0;z-index:8000;background:rgba(15,5,40,.94);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:center;padding:24px}.secure-content{background:#fff;border-radius:24px;padding:36px 28px 28px;text-align:center;max-width:360px;width:100%;box-shadow:0 32px 80px rgba(0,0,0,.5)}.secure-icon{font-size:52px;margin-bottom:10px;line-height:1}.secure-title{font-size:20px;font-weight:900;color:var(--ink);margin:0 0 10px}.secure-sub{color:var(--ink-soft);font-size:14px;line-height:1.5;margin:0 0 20px}.session-card{text-align:left}.session-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.session-lock-icon{font-size:32px;flex:0 0 auto}.session-info{background:#faf9ff;border:1.5px solid var(--line);border-radius:16px;padding:4px 16px;margin-bottom:22px}.session-row{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.session-row:last-child{border-bottom:none}.session-icon{font-size:18px;flex:0 0 28px;text-align:center;padding-top:2px}.session-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-soft);margin-bottom:3px}.session-value{font-size:14.5px;font-weight:700;color:var(--ink);word-break:break-all}.session-loading{color:var(--ink-soft);font-weight:400;font-style:italic}.session-countdown{text-align:center;margin-bottom:16px}.session-countdown-label{font-size:13.5px;color:var(--ink-soft);margin:0 0 6px}.session-count-num{font-size:88px;font-weight:900;color:var(--bg-2);line-height:1;margin-bottom:14px;display:block;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.session-progress{height:8px;background:var(--line);border-radius:999px;overflow:hidden}.session-progress-bar{height:100%;width:100%;background:linear-gradient(90deg,var(--bg-1),var(--bg-2),var(--bg-3));border-radius:999px;transform-origin:left center}@media (max-width:540px){.session-count-num{font-size:72px}}.review-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.review-filter-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:2px solid var(--line);background:#faf9ff;color:var(--ink-soft);border-radius:999px;padding:7px 16px;font-size:13px;font-weight:700;cursor:pointer;transition:border-color .14s ease,background .14s ease,color .14s ease}.review-filter-btn:hover{border-color:var(--bg-2);color:var(--bg-2)}.review-filter-btn.active{background:var(--bg-2);border-color:var(--bg-2);color:#fff}.review-filter-btn.correct.active{background:var(--ok);border-color:var(--ok)}.review-filter-btn.incorrect.active{background:var(--bad);border-color:var(--bad)}.review-list{display:flex;flex-direction:column;gap:16px;max-height:65vh;overflow-y:auto;padding-right:4px}.review-item{border:2px solid var(--line);border-radius:16px;padding:16px;background:#faf9ff}.review-item.review-correct{border-color:rgba(22,163,74,.35);background:#f0fdf4}.review-item.review-incorrect{border-color:rgba(225,29,72,.25);background:#fff1f2}.review-item-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.review-num{font-size:12px;font-weight:800;color:var(--ink-soft);min-width:28px}.review-pts{margin-left:auto;font-size:13px;font-weight:800;color:var(--ok)}.review-question{font-size:15px;font-weight:700;line-height:1.4;margin:0 0 12px;color:var(--ink)}.review-options{display:flex;flex-direction:column;gap:7px}.review-option{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;border:1.5px solid transparent;background:#fff;font-size:14px;font-weight:600}.review-option-correct{border-color:var(--ok);background:#dcfce7;color:#15803d}.review-option-incorrect{border-color:var(--bad);background:#ffe4e6;color:#be123c}.review-option-neutral{opacity:.6}.review-option-shape{width:26px;height:26px;flex:0 0 26px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:13px;color:#fff}.review-option-text{flex:1 1;min-width:0}.review-mark{font-size:15px;font-weight:900;color:var(--ok);flex:0 0 auto}.review-mark.wrong{color:var(--bad)}@media (max-width:540px){.review-summary{gap:6px}.review-filter-btn{font-size:12px;padding:6px 12px}.review-question{font-size:14px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}