:root{--ceim-azul:#454866;--ceim-amarillo:#f3ae35;--ceim-azul-oscuro:#212c56;--ceim-naranja:#ed8a23;--ceim-naranja-oscuro:#e85b13;--ceim-negro:#3d3935;--ceim-gris:#667085;--ceim-borde:#d9dde7;--ceim-fondo:#f2f4f8;--ceim-card:#fff;--ceim-success:#18794e;--ceim-danger:#c7362f;--radius:8px;--shadow:0 16px 42px rgba(33,44,86,.12);--font:"Ubuntu","Segoe UI",sans-serif}*{box-sizing:border-box}body,html{min-height:100%;margin:0;background:var(--ceim-fondo);color:var(--ceim-negro);font-family:var(--font);-webkit-font-smoothing:antialiased}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}svg{width:20px;height:20px;fill:currentColor}.icon-stroke{fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}.app-shell{width:min(1080px,100%);min-height:100vh;margin:0 auto;padding:18px}.start-shell{display:grid;place-items:center}.start-panel{width:min(620px,100%);background:var(--ceim-card);border:1px solid var(--ceim-borde);border-top:8px solid var(--ceim-amarillo);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(24px,5vw,44px)}.actions-row,.brand-row,.course-band,.panel-title,.recent-item,.stats,.topbar{display:flex;align-items:center}.brand-row{flex-direction:column;gap:22px;margin-bottom:32px;text-align:center}.brand-row img{width:230px;max-width:70vw;height:auto}.brand-row span,.course-band span,.panel-title span,.start-grid span,.stats span{display:block;color:var(--ceim-gris);font-size:.78rem;font-weight:700;text-transform:uppercase}.brand-row strong{display:block;color:var(--ceim-azul-oscuro);font-size:clamp(1.9rem,5vw,2.8rem);line-height:1}.brand-row .brand-claim{color:var(--ceim-azul-oscuro);letter-spacing:.04em}.brand-claim b,.brand-claim em{font-style:normal}.brand-claim b{color:var(--ceim-naranja)}.brand-row small{display:block;margin-top:8px;color:var(--ceim-azul-oscuro);font-size:.9rem;font-weight:800;text-transform:uppercase}.ciam-button{display:inline-flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:56px;border:0;border-radius:var(--radius);background:var(--ceim-azul-oscuro);color:#fff;font-size:1.04rem;font-weight:800;cursor:pointer}.ciam-button:disabled{cursor:not-allowed;opacity:.9}.microsoft-logo{display:grid;grid-template-columns:repeat(2,10px);grid-template-rows:repeat(2,10px);grid-gap:2px;gap:2px}.microsoft-logo i:first-child{background:#f25022}.microsoft-logo i:nth-child(2){background:#7fba00}.microsoft-logo i:nth-child(3){background:#00a4ef}.microsoft-logo i:nth-child(4){background:#ffb900}.login-separator{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;grid-gap:12px;gap:12px;margin:22px 0;color:var(--ceim-gris);font-size:.76rem;font-weight:800;text-transform:uppercase}.login-separator:after,.login-separator:before{content:"";height:1px;background:var(--ceim-borde)}.manual-form label,.project-form label{display:block;margin-bottom:10px;color:var(--ceim-azul-oscuro);font-size:.86rem;font-weight:700;text-transform:uppercase}.password-label{margin-top:16px}.single-input{width:100%;min-height:58px;border:2px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;color:var(--ceim-negro);font-size:1.1rem;outline:none;padding:0 16px}.single-input:focus{border-color:var(--ceim-azul-oscuro);box-shadow:0 0 0 4px rgba(33,44,86,.12)}.input-line{display:grid;grid-template-columns:1fr 150px;grid-gap:12px;gap:12px}.input-line.compact{grid-template-columns:1fr 128px}.input-line input{width:100%;min-height:58px;border:2px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;color:var(--ceim-negro);font-size:1.2rem;outline:none;padding:0 16px}.input-line input:focus{border-color:var(--ceim-azul-oscuro);box-shadow:0 0 0 4px rgba(33,44,86,.12)}.ghost-button,.input-line button,.mode-switch button,.secondary-button{min-height:48px;border:0;border-radius:var(--radius);cursor:pointer;font-weight:700}.input-line button{background:var(--ceim-azul-oscuro);color:#fff;font-size:1.05rem}.ghost-button:disabled,.input-line button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.55}.start-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-top:28px}.course-band,.courses-panel,.list-panel,.recent-band,.scan-panel,.start-grid div{background:var(--ceim-card);border:1px solid var(--ceim-borde);border-radius:var(--radius)}.start-grid div{padding:16px}.start-grid strong{display:block;margin-top:6px;color:var(--ceim-azul-oscuro)}.register-shell{display:flex;flex-direction:column;gap:14px}.topbar{justify-content:space-between;gap:10px}.topbar-actions{display:flex;flex-wrap:wrap;gap:8px}.ghost-button,.secondary-button{background:#fff;color:var(--ceim-azul-oscuro);border:1px solid var(--ceim-borde);padding:0 16px}.status-pill{display:inline-flex;align-items:center;gap:8px;min-height:40px;border-radius:999px;padding:0 14px;color:#fff;background:var(--ceim-danger);font-weight:700}.status-pill[data-online=true]{background:var(--ceim-success)}.course-band{justify-content:space-between;gap:18px;padding:18px;border-top:6px solid var(--ceim-amarillo);box-shadow:0 8px 24px rgba(33,44,86,.08)}.course-band h1{margin:4px 0;color:var(--ceim-azul-oscuro);font-size:clamp(1.35rem,3vw,2.2rem);line-height:1.12}.course-band p{margin:0;color:var(--ceim-gris)}.stats{gap:10px}.stats div{min-width:92px;border-radius:var(--radius);background:#f7f8fb;padding:12px;text-align:center}.stats strong{display:block;color:var(--ceim-azul-oscuro);font-size:2rem}.work-grid{display:grid;grid-template-columns:minmax(330px,.95fr) minmax(360px,1.05fr);grid-gap:14px;gap:14px;min-height:520px}.courses-panel,.list-panel,.recent-band,.scan-panel{padding:16px}.course-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:12px;gap:12px;margin-top:14px}.course-card{min-height:150px;border:1px solid var(--ceim-borde);border-top:5px solid var(--ceim-amarillo);border-radius:var(--radius);background:#fff;color:var(--ceim-negro);cursor:pointer;padding:18px;text-align:left;transition:transform .15s ease,box-shadow .15s ease}.course-card:focus,.course-card:hover{box-shadow:var(--shadow);outline:none;transform:translateY(-1px)}.course-card small,.course-card span{display:block;color:var(--ceim-gris);font-size:.82rem;font-weight:700}.course-card span{text-transform:uppercase}.course-card strong{display:block;margin:8px 0 12px;color:var(--ceim-azul-oscuro);font-size:1.25rem;line-height:1.2}.course-card-status{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin:14px 0 10px}.course-card-status div{min-width:0;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#f8f9fc;padding:8px}.course-card-status b,.course-card-status span{display:block}.course-card-status b{color:var(--ceim-azul-oscuro);font-size:1rem}.course-card-status span{margin-top:2px;color:var(--ceim-gris);font-size:.68rem;font-weight:800;line-height:1.15;text-transform:uppercase}.mode-switch{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-bottom:14px}.attendance-decision{display:grid;grid-gap:16px;gap:16px}.attendance-decision span,.attendance-mode-lock span{display:block;color:var(--ceim-gris);font-size:.78rem;font-weight:800;text-transform:uppercase}.attendance-decision h2{margin:4px 0 8px;color:var(--ceim-azul-oscuro);font-size:clamp(1.25rem,3vw,1.8rem);line-height:1.15}.attendance-decision p{margin:0;color:var(--ceim-gris);font-weight:700}.decision-options{display:grid;grid-gap:10px;gap:10px}.decision-options button{min-height:126px;border:2px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;color:var(--ceim-negro);cursor:pointer;padding:16px;text-align:left;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.decision-options button:focus,.decision-options button:hover{border-color:var(--ceim-naranja-oscuro);box-shadow:0 12px 26px rgba(33,44,86,.12);outline:none;transform:translateY(-1px)}.decision-options small,.decision-options strong{display:block}.decision-options strong{margin:7px 0;color:var(--ceim-azul-oscuro);font-size:1.16rem;line-height:1.15}.decision-options small{color:var(--ceim-gris);font-weight:700}.preflight-blocks{display:grid;grid-gap:10px;gap:10px;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;padding:12px}.preflight-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.preflight-grid span,.preflight-head span{display:block;color:var(--ceim-gris);font-size:.74rem;font-weight:800;text-transform:uppercase}.preflight-head strong{color:var(--ceim-azul-oscuro)}.preflight-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:8px;gap:8px}.preflight-grid div{border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#f8f9fc;padding:10px}.preflight-grid div.complete{border-color:rgba(24,121,78,.45);background:#e9f7ef}.preflight-grid em,.preflight-grid small,.preflight-grid strong{display:block}.preflight-grid strong{margin-top:4px;color:var(--ceim-azul-oscuro)}.preflight-grid small{margin-top:3px;color:var(--ceim-gris);font-weight:700}.preflight-grid em{margin-top:6px;color:var(--ceim-success);font-size:.76rem;font-style:normal;font-weight:800}.attendance-mode-lock{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;border:1px solid rgba(24,121,78,.24);border-radius:var(--radius);background:#e9f7ef;padding:10px 12px}.attendance-mode-lock[data-mode=bloque]{border-color:rgba(33,44,86,.24);background:#eef2ff}.attendance-mode-lock strong{color:var(--ceim-success);font-size:1.1rem}.attendance-mode-lock[data-mode=bloque] strong{color:var(--ceim-azul-oscuro)}.block-selector{display:grid;grid-gap:10px;gap:10px;margin-top:12px;margin-bottom:12px;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;padding:12px}.block-selector-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.block-options span,.block-selector-head span{display:block;color:var(--ceim-gris);font-size:.76rem;font-weight:800;text-transform:uppercase}.block-options button>span{padding-right:78px}.block-selector-head strong{display:block;margin-top:3px;color:var(--ceim-azul-oscuro);font-size:1.2rem}.block-selector-head small{border-radius:999px;background:#eef2ff;color:var(--ceim-azul-oscuro);font-weight:800;padding:6px 10px;white-space:nowrap}.block-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:8px;gap:8px;max-height:360px;overflow:auto;padding-right:2px}.block-options button{position:relative;display:grid;grid-template-rows:auto auto auto 8px auto;align-content:start;min-height:128px;border:2px solid var(--ceim-borde);border-radius:var(--radius);background:#f8f9fc;color:var(--ceim-negro);cursor:pointer;padding:28px 12px 12px;text-align:left}.block-options button.active{border-color:var(--ceim-azul-oscuro);background:#eef2ff;box-shadow:0 0 0 4px rgba(33,44,86,.12)}.block-options button.complete{border-color:rgba(24,121,78,.55);background:#e9f7ef}.block-options small,.block-options strong{display:block}.block-options strong{margin:6px 0;color:var(--ceim-azul-oscuro);font-size:1.05rem}.block-options small{color:var(--ceim-gris);font-weight:700}.block-progress{height:8px;margin-top:10px;overflow:hidden;border-radius:999px;background:#dfe4ef}.block-progress i{display:block;height:100%;border-radius:inherit;background:var(--ceim-naranja-oscuro);transition:width .25s ease}.block-options button.complete .block-progress i{background:var(--ceim-success)}.block-progress-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px}.block-progress-meta b{color:var(--ceim-azul-oscuro);font-size:1.05rem}.block-progress-meta small{color:var(--ceim-gris)}.block-options button em{position:absolute;top:8px;right:8px;display:inline-flex;margin:0;border-radius:999px;background:var(--ceim-success);color:#fff;font-size:.72rem;font-style:normal;font-weight:800;padding:4px 8px}.blocked-scanner{display:grid;place-items:center;min-height:220px;border:2px dashed #b8bfcc;border-radius:var(--radius);background:#f8f9fc;color:var(--ceim-azul-oscuro);text-align:center;padding:18px}.blocked-scanner strong{font-size:1.35rem}.blocked-scanner span{color:var(--ceim-gris);font-weight:700}.mode-switch button{background:#eef1f7;color:var(--ceim-azul-oscuro);font-size:1.1rem}.mode-switch button.active{background:var(--ceim-naranja-oscuro);color:#fff}.active-mode{display:grid;grid-template-columns:auto 1fr;align-items:center;grid-gap:10px;gap:10px;min-height:62px;margin-bottom:12px;border:2px solid var(--ceim-naranja-oscuro);border-radius:var(--radius);background:#fff7ea;padding:12px 14px}.active-mode[data-mode=salida]{border-color:var(--ceim-azul-oscuro);background:#eef2ff}.active-mode span{color:var(--ceim-gris);font-size:.78rem;font-weight:800;text-transform:uppercase}.active-mode strong{color:var(--ceim-naranja-oscuro);font-size:clamp(1.7rem,4vw,2.45rem);line-height:1}.active-mode[data-mode=salida] strong{color:var(--ceim-azul-oscuro)}.scanner-box{display:grid;place-items:center;min-height:250px;border:2px dashed #b8bfcc;border-radius:var(--radius);background:#f8f9fc;color:var(--ceim-azul-oscuro);text-align:center;padding:18px;position:relative;overflow:hidden}.scanner-box[data-mode=entrada]{border-color:rgba(232,91,19,.7)}.scanner-box[data-mode=salida]{border-color:rgba(33,44,86,.72)}.scanner-box svg{width:72px;height:72px;color:var(--ceim-naranja)}.scanner-box strong{font-size:1.45rem}.scanner-box span{color:var(--ceim-gris)}.process-card{display:grid;justify-items:center;grid-gap:8px;gap:8px;width:min(420px,100%);color:var(--ceim-azul-oscuro)}.process-ring{display:grid;place-items:center;width:82px;height:82px;border-radius:50%;background:conic-gradient(var(--ceim-naranja) 0 75%,#e2e6ef 75% 100%);animation:process-spin 1.1s linear infinite}.process-ring svg{width:48px;height:48px;border-radius:50%;background:#fff;color:var(--ceim-naranja);padding:10px}.process-card[data-step=confirmado] .process-ring,.process-card[data-step=offline] .process-ring{animation:none;background:var(--ceim-success)}.process-card[data-step=offline] .process-ring{background:var(--ceim-amarillo)}.process-card[data-step=error] .process-ring{animation:none;background:var(--ceim-danger)}.process-card strong{font-size:1.55rem;line-height:1.1}.process-name{color:var(--ceim-azul-oscuro)!important;font-weight:700}.process-card p{margin:0;color:var(--ceim-gris);font-weight:700}.process-steps{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px;width:100%;margin-top:6px}.process-steps span{border-radius:999px;background:#e8ebf2;color:var(--ceim-gris);padding:7px 6px;font-size:.72rem;font-weight:700;text-align:center}.process-steps span.done{background:#e9f7ef;color:var(--ceim-success)}@keyframes process-spin{to{transform:rotate(1turn)}}.camera{display:none}.camera.on{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.camera-overlay{position:absolute;right:10px;bottom:10px;left:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:var(--radius);background:hsla(0,0%,100%,.9);color:var(--ceim-azul-oscuro);padding:8px 10px;text-align:left;z-index:2}.camera-overlay span{color:var(--ceim-azul-oscuro);font-size:.78rem;font-weight:800;line-height:1.2}.camera-controls button,.camera-overlay button{min-height:32px;color:var(--ceim-azul-oscuro);cursor:pointer;font-size:.78rem;font-weight:800;padding:0 10px;white-space:nowrap}.camera-controls,.camera-controls button,.camera-overlay button{border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff}.camera-controls{display:grid;grid-gap:8px;gap:8px;margin:10px 0 12px;padding:10px}.camera-controls label{display:grid;grid-template-columns:64px minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:center;color:var(--ceim-azul-oscuro);font-size:.82rem;font-weight:800}.camera-controls .camera-device-control{grid-template-columns:64px minmax(0,1fr)}.camera-controls select{width:100%;min-height:36px;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;color:var(--ceim-azul-oscuro);font:inherit;font-size:.82rem;padding:0 10px}.camera-controls input[type=range]{width:100%;accent-color:var(--ceim-naranja)}.camera-controls strong{min-width:42px;text-align:right}.actions-row{gap:10px;margin:12px 0 18px}.actions-row button{flex:1 1}.danger-lite{border-color:rgba(199,54,47,.35);color:var(--ceim-danger)}.notice{margin-top:12px;border-radius:var(--radius);padding:12px 14px;font-weight:700}.notice.success{background:#e9f7ef;color:var(--ceim-success)}.notice.error{background:#fdeceb;color:var(--ceim-danger)}.panel-title{justify-content:space-between;gap:12px;margin-bottom:12px}.panel-title h2{margin:0;color:var(--ceim-azul-oscuro);font-size:1.05rem}.panel-title-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}.tiny-button{border-radius:var(--radius);white-space:nowrap}.tiny-button:disabled{opacity:.6}.participant-list{display:grid;grid-gap:8px;gap:8px;max-height:650px;overflow:auto;padding-right:3px}.participant-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:center;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;padding:12px}.participant-row span,.participant-row strong{display:block;overflow-wrap:anywhere}.participant-row strong{color:var(--ceim-azul-oscuro)}.participant-row span{color:var(--ceim-gris);font-size:.9rem}.marks{display:flex;gap:6px}.marks span{min-width:76px;border-radius:999px;background:#eef1f7;padding:7px 9px;color:var(--ceim-gris);text-align:center;font-size:.82rem;font-weight:700}.marks span em,.marks span strong{display:block}.marks span strong{color:inherit;font-size:.82rem}.marks span em{margin-top:3px;border-radius:999px;background:#fff5dd;color:#865200;font-size:.66rem;font-style:normal;font-weight:800;padding:2px 5px}.marks span em[data-state=sincronizado]{background:#dff5e9;color:var(--ceim-success)}.marks span em[data-state=error]{background:#fdeceb;color:var(--ceim-danger)}.delete-mark{display:block;min-height:24px;margin-top:4px;border:1px solid rgba(199,54,47,.28);border-radius:999px;background:#fff;color:var(--ceim-danger);cursor:pointer;font-size:.68rem;font-weight:800;padding:0 6px}.delete-mark.full{align-self:center;min-height:34px;margin-top:0;padding:0 10px;white-space:nowrap}.marks span.done{background:#e9f7ef;color:var(--ceim-success)}.recent-band{min-height:126px}.empty-state{margin:0;color:var(--ceim-gris)}.recent-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:8px;gap:8px}.recent-item{gap:8px;border:1px solid var(--ceim-borde);border-radius:var(--radius);padding:10px;background:#fff}.tiny-button{min-height:32px;border:1px solid var(--ceim-borde);border-radius:999px;background:#fff;color:var(--ceim-azul-oscuro);cursor:pointer;font-size:.78rem;font-weight:800;padding:0 10px}.tiny-button:disabled{cursor:not-allowed;opacity:.5}.recent-item svg{color:var(--ceim-success)}.recent-item span,.recent-item time{color:var(--ceim-gris);font-size:.9rem}.recent-mode,.recent-sync,.reregister-status,.silicio-status{display:inline-flex!important;align-items:center;width:-moz-fit-content;width:fit-content;border-radius:999px;padding:5px 9px;background:#fff5dd;color:#865200!important;font-size:.78rem!important;font-weight:800!important}.recent-sync[data-state=sincronizado],.silicio-status[data-state=sincronizado]{background:#e9f7ef;color:var(--ceim-success)!important}.recent-mode{background:#eef2ff;color:var(--ceim-azul-oscuro)!important}.recent-sync[data-state=error],.silicio-status[data-state=error]{background:#fdeceb;color:var(--ceim-danger)!important}.admin-panel,.admin-toolbar{border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;padding:14px}.admin-toolbar{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(150px,1fr) minmax(130px,.8fr) minmax(150px,.8fr) auto;align-items:end;grid-gap:12px;gap:12px}.admin-toolbar label{display:grid;grid-gap:6px;gap:6px;color:var(--ceim-azul-oscuro);font-weight:800;min-width:0}.admin-toolbar label span{color:var(--ceim-gris);font-size:.78rem;text-transform:uppercase}.admin-toolbar input{width:100%;min-height:44px;border:1px solid var(--ceim-borde);border-radius:var(--radius);padding:0 12px}.admin-toolbar-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;min-width:0}.admin-toolbar-actions button{min-height:44px;white-space:nowrap}.admin-grid{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(360px,1.1fr);grid-gap:14px;gap:14px}.admin-detail-grid{display:grid;grid-template-columns:minmax(520px,1.35fr) minmax(320px,.65fr);grid-gap:14px;gap:14px}.admin-course-list,.admin-day-list,.admin-log-list,.admin-participant-list{display:grid;grid-gap:8px;gap:8px;max-height:620px;overflow:auto}.admin-pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;color:var(--ceim-gris);font-size:.86rem;font-weight:800}.admin-pagination button{min-height:38px;padding:0 12px}.admin-log-list,.admin-participant-list{max-height:760px}.admin-course-card,.admin-day-card,.admin-log-item,.admin-participant-card{display:grid;grid-gap:10px;gap:10px;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#f8f9fc;color:var(--ceim-negro);padding:12px;text-align:left}.admin-course-card,.admin-day-card{cursor:pointer}.admin-course-card.active,.admin-day-card.active{border-color:var(--ceim-azul-oscuro);background:#eef2ff;box-shadow:0 0 0 3px rgba(33,44,86,.1)}.admin-course-card small,.admin-course-card span,.admin-day-card small,.admin-day-card span,.admin-log-item span,.admin-log-item time,.admin-participant-card span{color:var(--ceim-gris);font-size:.82rem;font-weight:700}.admin-course-card strong,.admin-day-card strong,.admin-log-item strong,.admin-participant-card strong{display:block;color:var(--ceim-azul-oscuro)}.admin-course-metrics,.admin-log-meta{display:flex;flex-wrap:wrap;gap:8px}.admin-course-metrics b{min-width:74px;border-radius:var(--radius);background:#fff;color:var(--ceim-azul-oscuro);padding:8px;text-align:center}.admin-course-metrics small{display:block;margin-top:2px;text-transform:uppercase}.profile-course-list{display:grid;grid-gap:10px;gap:10px}.profile-course-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);grid-gap:14px;gap:14px;align-items:stretch;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#f8f9fc;padding:14px}.profile-course-card small,.profile-course-card span{display:block;color:var(--ceim-gris);font-size:.82rem;font-weight:700}.profile-course-card strong{display:block;margin:4px 0;color:var(--ceim-azul-oscuro)}.profile-course-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.profile-course-metrics div{min-width:0;border-radius:var(--radius);background:#fff;padding:10px}.profile-course-metrics strong{font-size:1.35rem}.admin-log-item[data-deleted=true]{border-color:rgba(199,54,47,.28);background:#fff7f7}.admin-participant-head{display:flex;justify-content:space-between;gap:12px}.admin-participant-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.55fr);align-items:center;grid-gap:12px;gap:12px;width:100%;border:0;background:transparent;color:inherit;padding:0;text-align:left;cursor:pointer}.admin-participant-card[data-open=true]{border-color:rgba(33,44,86,.36);background:#fff}.admin-attendance-total{display:grid;grid-template-columns:repeat(2,minmax(110px,1fr));grid-gap:8px;gap:8px}.admin-attendance-total b{color:var(--ceim-azul-oscuro);font-size:1.15rem;line-height:1}.admin-attendance-total strong{color:var(--ceim-gris);font-size:.7rem;text-transform:uppercase}.admin-attendance-total i{display:block;width:100%;height:8px;border-radius:999px;background:#e5e7eb;overflow:hidden}.admin-attendance-total em{display:block;height:100%;border-radius:inherit;background:var(--ceim-success)}.admin-attendance-total i[data-kind=silicio] em{background:var(--ceim-azul-oscuro)}.admin-block-day-list{display:grid;grid-gap:12px;gap:12px}.admin-block-day{display:grid;grid-gap:8px;gap:8px;border-top:1px solid var(--ceim-borde);padding-top:10px}.admin-block-day-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.admin-block-day-head strong{color:var(--ceim-azul-oscuro);font-size:.92rem}.admin-block-day-head span{border-radius:999px;background:#eef2ff;color:var(--ceim-azul-oscuro);padding:5px 8px;font-size:.76rem;font-weight:800;white-space:nowrap}.admin-block-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(136px,1fr));grid-gap:6px;gap:6px}.admin-block-cell{border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;padding:8px}.admin-block-cell[data-state=ok]{border-color:rgba(24,121,78,.42);background:#e9f7ef}.admin-block-cell[data-state=libro-only]{border-color:rgba(214,158,46,.5);background:#fff8df}.admin-block-cell[data-state=missing]{border-color:rgba(199,54,47,.34);background:#fff1f0}.admin-block-cell em,.admin-block-cell span,.admin-block-cell strong{display:block;font-size:.76rem}.admin-block-cell em{color:var(--ceim-success);font-style:normal;font-weight:800}.admin-block-cell[data-state=libro-only] em{color:#9a6700}.admin-block-cell[data-state=missing] em{color:var(--ceim-danger)}.silicio-error{color:var(--ceim-danger)!important;font-size:.86rem}.reregister-status{background:#eef2ff;color:var(--ceim-azul-oscuro)!important}.pca-modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:rgba(13,20,40,.58);padding:18px}.confirm-backdrop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:rgba(13,20,40,.62);padding:18px}.confirm-modal{width:min(560px,100%);border:1px solid var(--ceim-borde);border-top:7px solid var(--ceim-danger);border-radius:var(--radius);background:#fff;box-shadow:0 24px 70px rgba(13,20,40,.32);padding:20px;animation:pca-enter .22s ease-out}.confirm-modal[data-stage="1"]{border-top-color:var(--ceim-amarillo)}.confirm-modal span{display:block;color:var(--ceim-gris);font-size:.78rem;font-weight:800;text-transform:uppercase}.confirm-modal h2{margin:4px 0 8px;color:var(--ceim-azul-oscuro)}.confirm-modal p{margin:0;color:var(--ceim-gris);font-weight:700}.confirm-warning{margin-top:12px!important;border-radius:var(--radius);background:#fdeceb;color:var(--ceim-danger)!important;padding:12px}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.danger-button{min-height:48px;border:0;border-radius:var(--radius);background:var(--ceim-danger);color:#fff;cursor:pointer;font-weight:800;padding:0 16px}.danger-button:disabled{cursor:not-allowed;opacity:.65}.pca-modal{width:min(780px,100%);max-height:min(88vh,780px);overflow:auto;border:1px solid var(--ceim-borde);border-top:7px solid var(--ceim-naranja);border-radius:var(--radius);background:#fff;box-shadow:0 24px 70px rgba(13,20,40,.32);padding:18px;animation:pca-enter .22s ease-out}.pca-modal[data-state=confirmado]{border-top-color:var(--ceim-success)}.pca-modal[data-state=offline],.pca-modal[data-state=omitido]{border-top-color:var(--ceim-amarillo)}.pca-modal-head,.pca-status{display:flex;align-items:center;gap:14px}.pca-modal-head{justify-content:space-between;margin-bottom:16px}.pca-grid span,.pca-modal-head span{display:block;color:var(--ceim-gris);font-size:.76rem;font-weight:700;text-transform:uppercase}.pca-modal-head h2{margin:2px 0 0;color:var(--ceim-azul-oscuro);font-size:clamp(1.15rem,3vw,1.65rem);line-height:1.15}.pca-status{border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#f8f9fc;padding:14px;position:relative;overflow:hidden}.pca-status:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent,rgba(243,174,53,.22) 45%,transparent 70%);transform:translateX(-120%);animation:pca-shimmer 1.45s ease-in-out infinite}.pca-modal[data-state=confirmado] .pca-status:after,.pca-modal[data-state=offline] .pca-status:after,.pca-modal[data-state=omitido] .pca-status:after{animation:none;opacity:0}.pca-pulse{display:grid;flex:0 0 auto;place-items:center;width:70px;height:70px;border-radius:50%;background:var(--ceim-naranja);color:#fff;animation:pca-pulse 1.2s ease-in-out infinite}.pca-modal[data-state=confirmado] .pca-pulse{background:var(--ceim-success);animation:none}.pca-modal[data-state=offline] .pca-pulse,.pca-modal[data-state=omitido] .pca-pulse{background:var(--ceim-amarillo);color:var(--ceim-azul-oscuro);animation:none}.pca-pulse svg{width:34px;height:34px}.pca-status span,.pca-status strong{display:block;overflow-wrap:anywhere}.pca-status strong{color:var(--ceim-azul-oscuro);font-size:1.35rem}.pca-status span{color:var(--ceim-negro);font-weight:700}.pca-status p{margin:6px 0 0;color:var(--ceim-gris);font-weight:700}.pca-scanline{height:8px;margin:14px 0;overflow:hidden;border-radius:999px;background:#e8ebf2}.pca-scanline span{display:block;width:42%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--ceim-amarillo),var(--ceim-naranja-oscuro));animation:pca-progress 1.1s ease-in-out infinite}.pca-modal[data-state=confirmado] .pca-scanline span{width:100%;animation:none;background:var(--ceim-success)}.pca-modal[data-state=offline] .pca-scanline span,.pca-modal[data-state=omitido] .pca-scanline span{width:100%;animation:none;background:var(--ceim-amarillo)}.pca-flow{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:8px;gap:8px;margin:0 0 14px}.pca-flow span{min-height:38px;border-radius:999px;background:#e8ebf2;color:var(--ceim-gris);display:grid;place-items:center;padding:8px;text-align:center;font-size:.78rem;font-weight:700}.pca-flow span.done{background:#e9f7ef;color:var(--ceim-success)}.pca-flow span.active{animation:pca-step-pop .85s ease-in-out infinite}.pca-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:8px;gap:8px}.pca-grid div{min-height:74px;border:1px solid var(--ceim-borde);border-radius:var(--radius);background:#fff;padding:10px;animation:pca-cell-in .28s ease-out both}.pca-grid div:nth-child(2){animation-delay:.04s}.pca-grid div:nth-child(3){animation-delay:.08s}.pca-grid div:nth-child(4){animation-delay:.12s}.pca-grid div:nth-child(5){animation-delay:.16s}.pca-grid div:nth-child(6){animation-delay:.2s}.pca-grid div:nth-child(7){animation-delay:.24s}.pca-grid div:nth-child(8){animation-delay:.28s}.pca-attendance-cell{position:relative;overflow:hidden;border-color:rgba(24,121,78,.35)!important;background:#f1fbf6!important}.pca-attendance-cell:after{content:"";position:absolute;inset:auto -30% 0;height:4px;background:var(--ceim-success);animation:pca-attendance-write .9s ease-in-out infinite}.pca-modal[data-state=confirmado] .pca-attendance-cell:after,.pca-modal[data-state=offline] .pca-attendance-cell:after,.pca-modal[data-state=omitido] .pca-attendance-cell:after{animation:none;inset:auto 0 0}.pca-grid strong{display:block;margin-top:6px;color:var(--ceim-azul-oscuro);font-size:1.05rem;overflow-wrap:anywhere}.pca-sql{margin:14px 0 0;overflow:auto;border-radius:var(--radius);background:#1d2433;color:#f8fafc;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.84rem;line-height:1.5;padding:14px}@keyframes pca-pulse{0%,to{box-shadow:0 0 0 0 rgba(237,138,35,.34);transform:scale(1)}50%{box-shadow:0 0 0 12px rgba(237,138,35,0);transform:scale(1.04)}}@keyframes pca-enter{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pca-shimmer{to{transform:translateX(120%)}}@keyframes pca-progress{0%{transform:translateX(-110%)}50%{transform:translateX(70%)}to{transform:translateX(240%)}}@keyframes pca-step-pop{0%,to{box-shadow:0 0 0 0 rgba(24,121,78,0);transform:translateY(0)}50%{box-shadow:0 0 0 5px rgba(24,121,78,.12);transform:translateY(-1px)}}@keyframes pca-cell-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pca-attendance-write{0%{transform:translateX(-85%)}to{transform:translateX(85%)}}@media (max-width:860px){.app-shell{padding:10px}.admin-detail-grid,.admin-grid,.course-band,.profile-course-card,.work-grid{grid-template-columns:1fr}.admin-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-toolbar-actions{justify-content:flex-start}.course-band{align-items:stretch;flex-direction:column}.stats{display:grid;grid-template-columns:repeat(3,1fr)}.pca-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:620px){.input-line,.input-line.compact,.participant-row,.start-grid{grid-template-columns:1fr}.brand-row{align-items:center}.marks{display:grid;grid-template-columns:1fr 1fr}.pca-modal-backdrop{align-items:end;padding:10px}.pca-modal{max-height:92vh}.pca-modal-head,.pca-status{align-items:stretch;flex-direction:column}.admin-toolbar,.pca-flow,.pca-grid{grid-template-columns:1fr}.admin-toolbar{align-items:stretch}.admin-pagination,.admin-toolbar-actions,.panel-title-actions{display:grid;grid-template-columns:1fr}.admin-pagination button,.admin-toolbar-actions button,.panel-title-actions button{width:100%}.admin-course-metrics,.admin-log-meta,.admin-participant-head,.admin-participant-summary,.profile-course-metrics{display:grid;grid-template-columns:1fr}.admin-attendance-total{justify-items:stretch}.admin-attendance-total i{width:100%}}