/*
 * POL360 Academy · Capa de revisión profesional (1.46.0)
 * Se carga después de academy.css y corrige, sin reescribirla:
 *  1. Columnas que colapsaban letra a letra (overflow-wrap:anywhere global).
 *  2. Cabecera y barra lateral: todo cabe en pantalla, sin cortes.
 *  3. Huecos vacíos, tipografía sobria y radios coherentes.
 *  4. Contraste en modo claro y oscuro.
 *  5. Móvil: barra inferior legible con etiquetas cortas.
 */

/* ---------- 1. Ajuste de texto sin colapsar columnas ---------- */
.pol360-app :where(h1,h2,h3,h4,p,a,b,strong,small,span,td,th,dd,dt,label,summary){overflow-wrap:break-word;word-break:normal}
.pol360-app .pol360-student-data dd{overflow-wrap:break-word}

/* ---------- 2. Sistema visual: radios, pesos y tamaños de apoyo ---------- */
.pol360-app{line-height:1.5}
.pol360-app h1,.pol360-app h2,.pol360-app h3,.pol360-app h4{font-weight:800;letter-spacing:-.02em}
.pol360-app .pol360-kicker{font-size:12px!important;font-weight:700;letter-spacing:.1em;line-height:1.3}
.pol360-app .pol360-panel{border-radius:16px}
.pol360-app .pol360-panel-heading{flex-wrap:wrap;align-items:flex-start;gap:12px 20px}
.pol360-app .pol360-panel-heading>div{min-width:0;flex:1 1 auto}
.pol360-app .pol360-panel-heading h2,.pol360-app .pol360-teacher-grid .pol360-panel h2{font-size:clamp(20px,1.7vw,24px);line-height:1.2}
.pol360-app .pol360-panel-heading>span,.pol360-app .pol360-panel-heading>b{flex:0 0 auto;font-size:14px!important;color:var(--a-muted)}
.pol360-app h3,.pol360-app .pol360-course-card h3,.pol360-app .pol360-continue-card h3{font-size:20px;line-height:1.3}
.pol360-app .pol360-action{min-height:46px;padding:10px 18px;border-radius:10px;font-size:15px!important;font-weight:700;letter-spacing:0}
.pol360-app .pol360-outline-action{border-radius:10px;font-size:15px!important;font-weight:700}
.pol360-app .pol360-status-pill{padding:6px 10px;border-radius:99px;font-size:12px!important;white-space:nowrap}
.pol360-app .pol360-updated-badge{padding:5px 9px;border-radius:99px;font-size:11px!important;letter-spacing:.06em;white-space:nowrap}
.pol360-app .pol360-teacher-form input:not([type=checkbox]),.pol360-app .pol360-teacher-form select,.pol360-app .pol360-teacher-form textarea,.pol360-app .pol360-group-assignment select{border-radius:10px;font-size:15px!important}
.pol360-app .pol360-teacher-form label>span{font-size:13px!important;font-weight:700}
.pol360-app .pol360-uicons-credit{padding-top:22px;font-size:11px!important;opacity:.85}
.pol360-app .pol360-uicons-credit a{font-size:11px!important}

/* ---------- 3. Cabecera del aula ---------- */
.pol360-app .pol360-appbar{align-items:center;gap:16px;border-radius:16px}
.pol360-app .pol360-appbar>div:first-child{min-width:0;flex:1 1 auto}
.pol360-app .pol360-appbar .pol360-kicker{display:block;margin-bottom:2px}
.pol360-app .pol360-appbar h1{font-size:clamp(26px,2.6vw,36px);line-height:1.12;letter-spacing:-.02em}
.pol360-app .pol360-back-link{font-size:13px!important;font-weight:700}
.pol360-app .pol360-appbar-actions{flex:0 0 auto;flex-wrap:nowrap;gap:10px}
.pol360-app .pol360-theme-toggle{min-width:0;height:46px;padding:0 14px;border-radius:10px;white-space:nowrap}
.pol360-app .pol360-theme-toggle b,.pol360-app .pol360-theme-toggle span{font-size:14px!important}
.pol360-app .pol360-appbar-progress{min-width:0;padding:9px 12px;border-radius:10px}
.pol360-app .pol360-appbar-progress>b{font-size:14px!important}
@media(min-width:721px) and (max-width:1180px){
	.pol360-app .pol360-theme-toggle{width:46px;padding:0}
	.pol360-app .pol360-theme-toggle b{display:none}
}

/* ---------- 4. Barra lateral de escritorio: compacta y sin cortes ---------- */
@media(min-width:981px){
	.pol360-app .pol360-sidebar{display:flex;flex-direction:column;padding:18px 14px 14px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) transparent}
	.pol360-app .pol360-sidebar-head{min-height:50px}
	.pol360-app .pol360-sidebar-toggle{height:38px;min-width:38px;border-radius:8px}
	.pol360-app .pol360-sidebar-toggle b{font-size:12px!important}
	.pol360-app .pol360-sidebar nav{flex:1 1 auto;min-height:0;gap:2px;margin-top:16px;padding-right:2px;overflow-y:auto;scrollbar-width:thin}
	.pol360-app .pol360-sidebar nav a{min-height:40px;padding:7px 10px;border-radius:10px;font-size:14px!important;font-weight:600}
	.pol360-app .pol360-sidebar nav a .pol360-nav-label{font-size:14px!important;font-weight:600}
	.pol360-app .pol360-sidebar nav a .pol360-nav-icon{width:26px!important;height:26px!important;flex-basis:26px!important}
	.pol360-app .pol360-sidebar nav a .pol360-nav-icon i{font-size:20px!important}
	.pol360-app .pol360-nav-section-label{margin:10px 10px 2px;font-size:11px!important;letter-spacing:.12em;opacity:.7}
	.pol360-app .pol360-sidebar-subscription-card{margin-top:12px;padding:12px;gap:2px 10px;border-radius:12px}
	.pol360-app .pol360-sidebar-subscription-card>span{width:34px;height:34px;font-size:17px}
	.pol360-app .pol360-sidebar-subscription-card>b{font-size:14px!important;line-height:1.2}
	.pol360-app .pol360-sidebar-subscription-card>small{font-size:12px!important}
	.pol360-app .pol360-sidebar-subscription-card>strong{margin-top:2px;font-size:12px!important}
	.pol360-app .pol360-sidebar-learning-progress{margin-top:10px;padding:11px 12px;gap:6px;border-radius:12px}
	.pol360-app .pol360-sidebar-learning-progress>em{display:none}
	.pol360-app .pol360-sidebar-learning-progress>span b{font-size:13px!important}
	.pol360-app .pol360-sidebar-learning-progress>span strong{font-size:18px!important}
	.pol360-app .pol360-sidebar-learning-progress>small,.pol360-app .pol360-sidebar-learning-progress>em{font-size:11px!important;line-height:1.3}
	.pol360-app .pol360-sidebar-learning-progress>i{height:7px}
	.pol360-app .pol360-user{gap:4px;padding-top:10px}
	.pol360-app .pol360-user-status{font-size:10px!important}
	.pol360-app .pol360-user>div b,.pol360-app .pol360-user-identity b{font-size:13px!important}
	.pol360-app .pol360-user small{font-size:12px!important}
	.pol360-app .pol360-logout{min-height:38px;padding:7px;border-radius:8px;font-size:13px!important}
	.pol360-app .pol360-logout>span{font-size:16px!important}
	.pol360-app.pol360-sidebar-collapsed .pol360-sidebar nav a{padding:10px 6px}
}
@media(min-width:981px) and (max-height:840px){
	.pol360-app .pol360-sidebar-learning-progress>small{display:none}
	.pol360-app .pol360-sidebar{padding-top:14px}
}
@media(min-width:981px) and (max-height:760px){
	.pol360-app .pol360-sidebar-learning-progress{display:none}
}

/* ---------- 5. Dashboard del alumno ---------- */
.pol360-app .pol360-student-dashboard{grid-template-columns:minmax(0,1.6fr) minmax(300px,.8fr);align-items:start}
.pol360-app .pol360-dashboard-progress{align-items:start;align-content:start}
.pol360-app .pol360-dashboard-progress-copy .pol360-panel-heading{align-items:center}
.pol360-app .pol360-objectives article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}
.pol360-app .pol360-objectives article div{min-width:0}
.pol360-app .pol360-objectives article b{font-size:15px!important;line-height:1.35}
.pol360-app .pol360-objectives article small{font-size:13px!important;line-height:1.35}
.pol360-app .pol360-objectives .pol360-outline-action{margin-top:16px}
.pol360-app .pol360-dashboard-police-copy .pol360-kicker{font-size:12px!important}
.pol360-app .pol360-dashboard-police-copy h2{font-weight:800;letter-spacing:-.025em}
.pol360-app .pol360-news-item b{font-size:15px!important}
.pol360-app .pol360-news-item small{font-size:13px!important}
@media(max-width:1250px){.pol360-app .pol360-student-dashboard{grid-template-columns:minmax(0,1fr) minmax(280px,.85fr);grid-template-areas:"hero hero" "progress objectives" "league xp" "tasks tasks" "bottom bottom"}}
@media(max-width:980px){.pol360-app .pol360-student-dashboard{grid-template-columns:minmax(0,1fr);grid-template-areas:none}.pol360-app .pol360-student-dashboard>*{grid-area:auto!important}}

/* ---------- 6. Curso y clases ---------- */
.pol360-app .pol360-weekly-video-card{grid-template-columns:104px 48px minmax(0,1fr) minmax(180px,330px);gap:16px;padding:18px 16px;border-radius:12px}
.pol360-app .pol360-weekly-video-copy>small{display:block;font-size:12px!important;letter-spacing:.06em;line-height:1.35}
.pol360-app .pol360-weekly-video-copy h4{margin:4px 0 6px;font-size:18px;line-height:1.3}
.pol360-app .pol360-weekly-video-status{gap:8px}
.pol360-app .pol360-weekly-video-status .pol360-action{min-height:42px;padding:8px 14px}
.pol360-app .pol360-restart-class{font-size:14px!important}
.pol360-app .pol360-complete-mark,.pol360-app .pol360-lock-mark{font-size:13px!important;line-height:1.3}
.pol360-app .pol360-complete-mark{color:#1d7f3a}
.pol360-app.pol360-dark .pol360-complete-mark{color:#7ee88a}
.pol360-app .pol360-week-badge{padding:9px;border-radius:10px}
.pol360-app .pol360-week-badge b{font-size:15px!important}
.pol360-app .pol360-week-badge span{font-size:12px!important}
.pol360-app .pol360-curriculum-inline-progress>em{font-size:13px!important}
.pol360-app .pol360-month-group{border-radius:14px}
.pol360-app .pol360-month-group>summary h3{font-size:20px}
.pol360-app .pol360-course-card{border-radius:16px}
.pol360-app .pol360-course-card-visual{isolation:isolate}
.pol360-app .pol360-course-card-visual:not(.has-image)::before{position:absolute;right:-18px;bottom:-14px;width:200px;height:110px;content:"";background:url('../images/pol360-logo-dark.png') center/contain no-repeat;opacity:.14;pointer-events:none}
.pol360-app .pol360-course-card-visual>span{font-size:11px!important}
.pol360-app .pol360-course-card-body h3{font-size:22px!important}
.pol360-app .pol360-meet-action{background:#0f7a44}
@media(max-width:1250px){
	.pol360-app .pol360-weekly-video-card{grid-template-columns:96px 44px minmax(0,1fr)}
	.pol360-app .pol360-weekly-video-status{grid-column:2/-1;justify-content:flex-start;text-align:left}
}

/* ---------- 7. Progreso ---------- */
.pol360-app .pol360-progress-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.pol360-app .pol360-progress-kpis article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;padding:18px}
.pol360-app .pol360-progress-kpis small,.pol360-app .pol360-progress-kpis p{font-size:13px!important;line-height:1.35}
.pol360-app .pol360-progress-kpis strong{font-size:30px}
.pol360-app .pol360-progress-area-card p{font-size:14px!important}
.pol360-app .pol360-module-progress-list span>em{overflow:visible;font-size:14px!important;line-height:1.25;text-overflow:clip;white-space:normal}
.pol360-app .pol360-module-progress-list span>strong{font-size:14px!important}
.pol360-app .pol360-progress-hero.pol360-panel h2{color:var(--a-text)}
.pol360-app .pol360-progress-hero.pol360-panel p{color:var(--a-muted)}
.pol360-app .pol360-progress-hero.pol360-panel .pol360-kicker{color:#1d7f3a!important}
.pol360-app.pol360-dark .pol360-progress-hero.pol360-panel .pol360-kicker{color:#7ee88a!important}
@media(max-width:1250px){.pol360-app .pol360-progress-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- 8. Suscripción, perfil y ajustes ---------- */
.pol360-app .pol360-subscription-price{flex-wrap:wrap;align-items:baseline;gap:6px 10px}
.pol360-app .pol360-subscription-price>span{padding:0;white-space:nowrap}
.pol360-app .pol360-subscription-checkout small{font-size:12px!important}
.pol360-app .pol360-subscription-checkout p,.pol360-app .pol360-subscription-journey small,.pol360-app .pol360-subscription-tools small,.pol360-app .pol360-subscription-help{font-size:13px!important;line-height:1.45}
.pol360-app .pol360-settings-page small,.pol360-app .pol360-settings-heading p{font-size:13px!important;line-height:1.4}
.pol360-app .pol360-settings-page .pol360-account-overview b{overflow:visible;text-overflow:clip;white-space:normal;line-height:1.3}
.pol360-app .pol360-settings-page .pol360-account-overview strong{font-size:13px!important}
.pol360-app .pol360-avatar-catalog b{font-size:12px!important}
.pol360-app .pol360-profile-page .pol360-panel{border-radius:16px}

/* ---------- 9. Panel docente ---------- */
.pol360-app .pol360-admin-overview-grid{grid-template-columns:minmax(0,1.5fr) minmax(320px,.9fr)}
.pol360-app .pol360-recent-activity article{grid-template-columns:34px minmax(0,1fr) auto;gap:10px}
.pol360-app .pol360-recent-activity article b{font-size:14px!important}
.pol360-app .pol360-recent-activity article small,.pol360-app .pol360-recent-activity time{font-size:12px!important}
.pol360-app .pol360-teacher-welcome{flex-wrap:wrap;gap:18px}
.pol360-app .pol360-teacher-welcome>div{min-width:0;flex:1 1 320px}
.pol360-app .pol360-quick-actions{flex-wrap:wrap;gap:10px 14px}
.pol360-app .pol360-quick-actions>a{white-space:nowrap}
.pol360-app .pol360-teacher-stats article>small{font-size:13px!important}
.pol360-app .pol360-bars span{font-size:13px!important}
.pol360-app .pol360-bars small{font-size:12px!important}
.pol360-app .pol360-map-legend a>b{font-size:13px!important}
@media(max-width:1250px){.pol360-app .pol360-admin-overview-grid{grid-template-columns:minmax(0,1fr)}}

/* ---------- 10. Visor PDF ---------- */
.pol360-app .pol360-pdf-title-progress{min-width:0;flex:1 1 320px}
.pol360-app .pol360-pdf-title-progress h2{font-size:clamp(18px,1.6vw,22px);line-height:1.25}
.pol360-app .pol360-pdf-header-actions{flex-wrap:wrap}
.pol360-app .pol360-pdf-header-actions button{border-radius:10px;font-weight:700}

/* ---------- 10b. Visor PDF a pantalla completa: cabecera de una sola fila ---------- */
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-heading{min-height:0;gap:14px;padding:8px 16px}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-exit{min-height:38px;padding:6px 12px;border-radius:8px;font-size:14px!important}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-title-progress{display:grid;min-width:0;flex:1 1 auto;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title page" "progress progress";align-items:center;gap:2px 14px}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-title-progress>.pol360-kicker{display:none}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-title-progress h2{grid-area:title;margin:0;overflow:hidden;font-size:17px!important;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-title-progress>small{grid-area:page;font-size:13px!important;white-space:nowrap}
.pol360-app .pol360-pdf-fullscreen .pol360-reader-progress{grid-area:progress;display:grid;width:auto;max-width:640px;grid-template-columns:auto minmax(110px,300px) auto;align-items:center;gap:10px;margin-top:2px}
.pol360-app .pol360-pdf-fullscreen .pol360-reader-progress>div{gap:8px}
.pol360-app .pol360-pdf-fullscreen .pol360-reader-progress>div span{font-size:11px!important;color:#60708b}
.pol360-app .pol360-pdf-fullscreen .pol360-reader-progress>div strong{font-size:13px!important}
.pol360-app .pol360-pdf-fullscreen .pol360-reader-progress-track{height:6px}
.pol360-app .pol360-pdf-fullscreen .pol360-reader-progress>small{font-size:11px!important;white-space:nowrap}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-header-actions{flex-wrap:nowrap;gap:8px}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-header-actions button{min-height:38px;padding:6px 12px;border-radius:8px;font-size:13px!important;white-space:nowrap}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-header-actions .pol360-save-annotations{min-width:0}
.pol360-app .pol360-pdf-fullscreen .pol360-protected-badge{padding:6px 10px;font-size:11px!important;white-space:nowrap}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-security-note{min-height:28px;padding:4px 16px;font-size:11px!important}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-stage-wrap{padding:14px 18px 80px}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-pager{bottom:38px;padding:6px 10px}
.pol360-app .pol360-pdf-fullscreen .pol360-pdf-pager button{width:36px;height:36px}
.pol360-app.pol360-dark .pol360-pdf-fullscreen .pol360-reader-progress>div span{color:#a7b0c7}
@media(max-width:1250px){.pol360-app .pol360-pdf-fullscreen .pol360-reader-progress>small{display:none}}
@media(max-width:720px){
	.pol360-app .pol360-pdf-fullscreen .pol360-pdf-heading{min-height:0;padding:8px 10px}
	.pol360-app .pol360-pdf-fullscreen .pol360-pdf-title-progress h2{font-size:15px!important}
	.pol360-app .pol360-pdf-fullscreen .pol360-pdf-sidebar{top:78px}
}

/* ---------- 11. Modo oscuro: contraste ---------- */
.pol360-app.pol360-dark .pol360-updated-badge{color:#0b5c2a;background:#bff3d0}
.pol360-app.pol360-dark .pol360-news-item>span{color:#0b5c2a;background:#bff3d0}
.pol360-app.pol360-dark .pol360-uicons-credit{color:#9aa6bf}
.pol360-app.pol360-dark .pol360-week-badge{background:#173796}
.pol360-app.pol360-dark .pol360-teacher-form input:not([type=checkbox]),.pol360-app.pol360-dark .pol360-teacher-form select,.pol360-app.pol360-dark .pol360-teacher-form textarea{border-color:#3a444b;background:#101718}

/* ---------- 12. Móvil ---------- */
@media(max-width:720px){
	.pol360-app .pol360-appbar{border-radius:14px;padding:14px}
	.pol360-app .pol360-appbar .pol360-kicker{font-size:11px!important}
	.pol360-app .pol360-appbar h1{font-size:clamp(24px,7vw,30px)}
	.pol360-app .pol360-sidebar nav a{min-width:66px;flex-basis:66px;height:60px;min-height:60px;border-radius:12px}
	.pol360-app .pol360-sidebar nav a .pol360-nav-label[data-short]{display:block;width:100%;overflow:visible;font-size:0!important;line-height:0;white-space:normal;text-overflow:clip}
	.pol360-app .pol360-sidebar nav a .pol360-nav-label[data-short]::after{content:attr(data-short);display:block;font-size:10px;line-height:1.1;letter-spacing:0;white-space:normal}
	.pol360-app .pol360-weekly-video-card{gap:12px}
	.pol360-app .pol360-weekly-video-status{gap:8px}
	.pol360-app .pol360-weekly-video-status .pol360-action,.pol360-app .pol360-restart-class{width:100%;justify-content:center}
	.pol360-app .pol360-progress-kpis{grid-template-columns:minmax(0,1fr)}
	.pol360-app .pol360-panel,.pol360-app .pol360-course-card,.pol360-app .pol360-month-group{border-radius:14px}
	.pol360-app .pol360-dashboard-progress>.pol360-progress-ring{margin-bottom:-64px}
}
@media(max-width:430px){
	.pol360-app .pol360-sidebar nav a{min-width:62px;flex-basis:62px}
}

/* ---------- 13. Editor de texto con formato y su presentación al alumno ---------- */
.pol360-app .pol360-rich-field{display:grid;gap:7px}
.pol360-app .pol360-rich-field>span{font-size:13px!important;font-weight:700;color:var(--a-text)}
.pol360-app .pol360-rich-field>small{font-size:12px!important;color:var(--a-muted);line-height:1.4}
.pol360-app .pol360-rich-editor{overflow:hidden;border:1px solid var(--a-border);border-radius:10px;background:var(--a-bg)}
.pol360-app .pol360-rich-editor:focus-within{border-color:var(--a-blue);box-shadow:0 0 0 3px rgba(10,102,255,.12)}
.pol360-app .pol360-rich-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--a-border);background:var(--a-panel)}
.pol360-app .pol360-rich-toolbar button{display:grid;min-width:36px;height:34px;place-items:center;padding:0 9px;border:1px solid transparent;border-radius:7px;color:var(--a-text);background:transparent;cursor:pointer;font:inherit;font-size:14px!important;font-weight:700;line-height:1}
.pol360-app .pol360-rich-toolbar button:hover{border-color:var(--a-border);background:var(--a-bg)}
.pol360-app .pol360-rich-toolbar button.is-active{border-color:color-mix(in srgb,var(--a-blue) 40%,var(--a-border));color:var(--a-blue);background:color-mix(in srgb,var(--a-blue) 10%,var(--a-panel))}
.pol360-app .pol360-rich-toolbar button mark{padding:1px 4px;border-radius:3px;background:#fff176;color:#0d2855}
.pol360-app .pol360-rich-sep{width:1px;height:22px;margin:0 4px;background:var(--a-border)}
.pol360-app .pol360-rich-area{min-height:120px;max-height:420px;overflow:auto;padding:12px 14px;color:var(--a-text);font-size:15px!important;line-height:1.6;outline:0;user-select:text;-webkit-user-select:text}
.pol360-app .pol360-rich-area:empty::before{content:attr(data-placeholder);color:var(--a-muted)}
.pol360-app .pol360-rich-area p{margin:0 0 10px}
.pol360-app .pol360-rich-area ul,.pol360-app .pol360-rich-area ol{margin:0 0 10px;padding-left:22px}
.pol360-app .pol360-rich-area mark,.pol360-app .pol360-lesson-notes mark{padding:0 3px;border-radius:3px;background:#fff176;color:#0d2855}
.pol360-app.pol360-dark .pol360-rich-area mark,.pol360-app.pol360-dark .pol360-lesson-notes mark{background:#e6d33a;color:#101415}
.pol360-app .pol360-lesson-notes u,.pol360-app .pol360-rich-area u{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.pol360-app .pol360-lesson-notes strong,.pol360-app .pol360-lesson-notes b{font-weight:800;color:var(--a-text)}
.pol360-app .pol360-lesson-notes ul,.pol360-app .pol360-lesson-notes ol{padding-left:24px}
.pol360-app .pol360-lesson-notes li{margin:4px 0}

/* ---------- 14. Editor de clase: rejilla sin huecos ---------- */
.pol360-app .pol360-video-editor-grid{grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);grid-template-areas:"video data" "attendees resources" "gemini gemini" "alt alt" "existing existing";align-items:stretch;gap:14px}
.pol360-app .pol360-video-editor-grid>.pol360-drive-import{grid-area:video}
.pol360-app .pol360-video-editor-grid>.pol360-class-data-grid{grid-area:data;align-content:start}
.pol360-app .pol360-video-editor-grid>.pol360-live-attendees{grid-area:attendees;margin:0}
.pol360-app .pol360-video-editor-grid>.pol360-resource-upload{grid-area:resources;margin:0;align-content:start}
.pol360-app .pol360-video-editor-grid>.pol360-gemini-notes-import{grid-area:gemini}
.pol360-app .pol360-video-editor-grid>.pol360-editor-compact-details{grid-area:alt}
.pol360-app .pol360-video-editor-grid>.pol360-existing-resources{grid-area:existing}
.pol360-app .pol360-live-attendees select[multiple]{min-height:118px;max-height:150px}
.pol360-app .pol360-teacher-form .pol360-check{padding-top:0;align-self:end;min-height:46px}
@media(max-width:1050px){
	.pol360-app .pol360-video-editor-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"video" "data" "attendees" "resources" "gemini" "alt" "existing"}
}

/* ---------- 15. Un solo curso: tarjeta horizontal a todo el ancho ---------- */
@media(min-width:981px){
	.pol360-app .pol360-course-grid:has(>.pol360-course-card:only-child){grid-template-columns:minmax(0,1fr)}
	.pol360-app .pol360-course-grid>.pol360-course-card:only-child{display:grid;grid-template-columns:minmax(280px,.42fr) minmax(0,1fr);min-height:0}
	.pol360-app .pol360-course-grid>.pol360-course-card:only-child .pol360-course-card-visual{min-height:260px;height:100%}
	.pol360-app .pol360-course-grid>.pol360-course-card:only-child .pol360-course-card-body{justify-content:center}
	.pol360-app .pol360-course-grid>.pol360-course-card:only-child .pol360-course-card-body>p{max-width:640px}
}

/* ---------- 16. Página de la clase: paneles a su altura natural ---------- */
.pol360-app .pol360-lesson-support-grid{align-items:start}
.pol360-app .pol360-lesson-support-grid>.pol360-panel{height:auto}
.pol360-app .pol360-lesson-notes{margin:22px 0}
.pol360-app .pol360-download-grid{display:grid;gap:10px}
.pol360-app .pol360-question-form textarea{min-height:110px}

/* ---------- 17. Efectos visuales para novedades ---------- */
@keyframes pol360Wobble{0%{transform:translateY(0) rotate(0)}12%{transform:translateY(-4px) rotate(-1.2deg)}24%{transform:translateY(0) rotate(1.1deg)}36%{transform:translateY(-3px) rotate(-.8deg)}48%{transform:translateY(0) rotate(.6deg)}60%{transform:rotate(-.3deg)}100%{transform:translateY(0) rotate(0)}}
@keyframes pol360Blink{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes pol360Glow{0%,100%{box-shadow:0 0 0 0 rgba(99,215,97,.55)}50%{box-shadow:0 0 0 8px rgba(99,215,97,0)}}
@keyframes pol360NewsIn{from{opacity:0;transform:translateY(26px) scale(.96)}to{opacity:1;transform:none}}
@keyframes pol360NewsItem{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
@keyframes pol360SparkSpin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.15)}100%{transform:rotate(360deg) scale(1)}}
.pol360-app .pol360-blink{animation:pol360Blink 1.4s ease-in-out infinite}
.pol360-app .pol360-is-new{position:relative;animation:pol360Wobble 1.6s ease-in-out .4s 2;border-color:color-mix(in srgb,var(--a-green) 65%,var(--a-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--a-green) 22%,transparent),0 14px 30px rgba(13,40,85,.1)}
.pol360-app .pol360-is-new::after{position:absolute;top:-9px;right:14px;padding:3px 9px;border-radius:99px;color:#07162f;background:var(--a-green);content:"NUEVO";font-size:10px;font-weight:900;letter-spacing:.1em;animation:pol360Glow 1.6s ease-out infinite}
.pol360-app .pol360-news-item.is-new b{color:var(--a-blue)}
.pol360-app .pol360-news-item.is-new{animation:pol360Wobble 1.4s ease-in-out .6s 1}
@media(prefers-reduced-motion:reduce){.pol360-app .pol360-blink,.pol360-app .pol360-is-new,.pol360-app .pol360-is-new::after,.pol360-app .pol360-news-item.is-new,.pol360-news-card,.pol360-news-item,.pol360-news-spark{animation:none!important}}

/* ---------- 18. Ventana de Novedades ---------- */
body.pol360-news-open{overflow:hidden}
.pol360-news-modal{position:fixed;z-index:2147483600;inset:0;display:grid;place-items:center;padding:18px}
.pol360-news-modal[hidden]{display:none}
.pol360-news-modal-backdrop{position:absolute;inset:0;background:rgba(4,17,45,.62);backdrop-filter:blur(6px)}
.pol360-news-card{position:relative;width:min(640px,100%);max-height:min(86vh,760px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border:1px solid rgba(99,215,97,.5);border-radius:22px;background:var(--a-panel,#fff);color:var(--a-text,#0d2855);box-shadow:0 30px 90px rgba(4,17,45,.5);animation:pol360NewsIn .45s cubic-bezier(.2,.8,.2,1)}
.pol360-news-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:22px 22px 18px;color:#fff;background:radial-gradient(circle at 85% 20%,rgba(99,215,97,.35),transparent 32%),linear-gradient(120deg,#0d4ba6,#07162f)}
.pol360-news-head .pol360-kicker{color:#8ff4af!important}
.pol360-news-head h2{margin:2px 0 0;font-size:24px;line-height:1.15;color:#fff}
.pol360-news-spark{display:grid;width:48px;height:48px;place-items:center;border-radius:14px;color:#07162f;background:var(--a-green,#63d761);font-size:24px;box-shadow:0 10px 24px rgba(99,215,97,.4);animation:pol360SparkSpin 3.2s ease-in-out infinite}
.pol360-news-close{width:40px;height:40px;border:1px solid rgba(255,255,255,.35);border-radius:10px;color:#fff;background:rgba(255,255,255,.1);cursor:pointer;font-size:24px!important;line-height:1}
.pol360-news-close:hover{background:rgba(255,255,255,.22)}
.pol360-news-list{display:grid;gap:10px;padding:18px 22px;overflow:auto}
.pol360-news-empty{margin:0;color:var(--a-muted);font-size:15px!important;line-height:1.6}
.pol360-news-entry{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--a-border);border-radius:14px;background:var(--a-bg);animation:pol360NewsItem .5s ease both;animation-delay:var(--pol360-delay,0ms)}
.pol360-news-entry.is-task{border-color:color-mix(in srgb,#f5ad41 55%,var(--a-border))}
.pol360-news-icon{display:grid;width:46px;height:46px;place-items:center;border-radius:12px;color:#fff;background:linear-gradient(145deg,var(--a-blue,#0a66ff),#0d2855);font-size:20px}
.pol360-news-entry.is-pdf .pol360-news-icon{color:#07162f;background:linear-gradient(145deg,#63d761,#20e2a0)}
.pol360-news-entry.is-task .pol360-news-icon{color:#07162f;background:linear-gradient(145deg,#ffd66f,#f5ad41)}
.pol360-news-entry>div{display:grid;gap:2px;min-width:0}
.pol360-news-entry small{font-size:11px!important;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--a-blue)}
.pol360-news-entry b{font-size:16px!important;line-height:1.3}
.pol360-news-entry time{font-size:12px!important;color:var(--a-muted)}
.pol360-news-entry .pol360-action{min-height:40px;padding:8px 14px;font-size:14px!important;white-space:nowrap}
.pol360-news-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px 18px;border-top:1px solid var(--a-border)}
.pol360-news-foot .pol360-outline-action{margin:0;min-height:42px}
.pol360-bell-news{display:flex;width:100%;align-items:center;gap:8px;margin:0 0 8px;padding:10px 12px;border:1px solid rgba(99,215,97,.6);border-radius:10px;color:#07162f;background:linear-gradient(120deg,#8ff4af,#63d761);cursor:pointer;font:inherit;font-size:14px!important;font-weight:800;text-align:left}
.pol360-bell-news b{margin-left:auto;padding:2px 8px;border-radius:99px;color:#fff;background:#0d2855;font-size:12px!important}
.pol360-app.pol360-dark .pol360-news-card{border-color:rgba(99,215,97,.35)}
@media(max-width:600px){.pol360-news-modal{padding:10px;align-items:end}.pol360-news-card{max-height:92vh;border-radius:18px}.pol360-news-entry{grid-template-columns:40px minmax(0,1fr)}.pol360-news-entry .pol360-action{grid-column:2;justify-self:start}.pol360-news-head{padding:16px}.pol360-news-head h2{font-size:20px}}

/* ---------- 19. Tareas ---------- */
.pol360-app .pol360-tasks-page{display:grid;gap:18px}
.pol360-app .pol360-tasks-intro{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px;border-left:6px solid #f5ad41}
.pol360-app .pol360-tasks-intro p{margin:6px 0 0;color:var(--a-muted);font-size:15px!important}
.pol360-app .pol360-tasks-summary{display:grid;min-width:110px;place-items:center;padding:14px;border-radius:14px;color:#07162f;background:linear-gradient(145deg,#ffd66f,#f5ad41)}
.pol360-app .pol360-tasks-summary b{font-size:34px;line-height:1}
.pol360-app .pol360-tasks-summary small{font-size:12px!important;font-weight:700}
.pol360-app .pol360-tasks-section{display:grid;gap:12px}
.pol360-app .pol360-task-list{display:grid;gap:12px}
.pol360-app .pol360-task-card{display:grid;gap:12px;padding:18px;border:1px solid var(--a-border);border-left:6px solid var(--a-blue);border-radius:14px;background:var(--a-panel);transition:transform .2s ease,box-shadow .2s ease}
.pol360-app .pol360-task-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(13,40,85,.1)}
.pol360-app .pol360-task-card.is-urgent{border-left-color:#e4553f}
.pol360-app .pol360-task-card.is-upcoming{border-left-color:#f5ad41}
.pol360-app .pol360-task-card.is-done{border-left-color:var(--a-green);opacity:.85}
.pol360-app .pol360-task-card.is-expired{border-left-color:var(--a-border);opacity:.7}
.pol360-app .pol360-task-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.pol360-app .pol360-task-card>header>div{min-width:0}
.pol360-app .pol360-task-card h3{margin:3px 0 0;font-size:18px}
.pol360-app .pol360-task-card header small{display:block;margin-top:4px;color:var(--a-muted);font-size:13px!important}
.pol360-app .pol360-task-card .pol360-kicker em{font-style:normal;color:#e4553f}
.pol360-app .pol360-task-state{flex:0 0 auto;padding:6px 10px;border-radius:99px;font-size:12px!important;font-weight:800;white-space:nowrap;color:#0d4ba6;background:#e6efff}
.pol360-app .pol360-task-state.is-urgent{color:#fff;background:#e4553f;animation:pol360Blink 1.6s ease-in-out infinite}
.pol360-app .pol360-task-state.is-upcoming{color:#6b4a00;background:#fff1c9}
.pol360-app .pol360-task-state.is-done{color:#0b5c2a;background:#bff3d0}
.pol360-app .pol360-task-state.is-expired{color:var(--a-muted);background:var(--a-bg)}
.pol360-app .pol360-task-body{color:var(--a-text);font-size:15px!important;line-height:1.6}
.pol360-app .pol360-task-body p{margin:0 0 8px}
.pol360-app .pol360-task-body mark{padding:0 3px;border-radius:3px;background:#fff176;color:#0d2855}
.pol360-app .pol360-task-card>footer{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.pol360-app .pol360-task-card>footer .pol360-outline-action{margin:0;min-height:42px;padding:9px 14px}
.pol360-app .pol360-task-card>footer .pol360-outline-action.is-danger{border-color:#e4553f;color:#e4553f!important}
.pol360-app .pol360-task-card>footer .pol360-outline-action.is-done{border-color:var(--a-green);color:#0b5c2a!important}
.pol360-app .pol360-task-card>footer form{margin:0}
.pol360-app .pol360-task-card.is-compact{padding:14px}
.pol360-app .pol360-task-card.is-compact h3{font-size:16px}
.pol360-app .pol360-tasks-panel{display:grid;gap:12px;align-content:start}
.pol360-app .pol360-tasks-panel>.pol360-outline-action{margin-top:4px}
.pol360-app .pol360-task-form-grid label.is-wide{grid-column:1/-1}
.pol360-app .pol360-task-form-grid select[multiple]{min-height:96px}
.pol360-app .pol360-task-form-grid small{color:var(--a-muted);font-size:12px!important}
.pol360-app.pol360-dark .pol360-task-state{color:#bcd3ff;background:#1b2f5c}
.pol360-app.pol360-dark .pol360-task-state.is-upcoming{color:#ffe1a0;background:#4a3a10}
.pol360-app.pol360-dark .pol360-task-state.is-done{color:#bff3d0;background:#1f4a2c}
@media(max-width:720px){.pol360-app .pol360-tasks-intro{grid-template-columns:1fr}.pol360-app .pol360-task-card>header{flex-direction:column}}

/* ---------- 20. Gamificación: toast, emblemas y liga ---------- */
@keyframes pol360ToastIn{from{opacity:0;transform:translate(-50%,20px) scale(.9)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes pol360BadgePop{0%{transform:scale(.2) rotate(-25deg);opacity:0}60%{transform:scale(1.15) rotate(6deg);opacity:1}100%{transform:scale(1) rotate(0)}}
@keyframes pol360BadgeRing{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.4);opacity:0}}
@keyframes pol360Burst{0%{transform:rotate(var(--a)) translateY(0) scale(1);opacity:1}100%{transform:rotate(var(--a)) translateY(-150px) scale(.2);opacity:0}}
@keyframes pol360RankUp{0%{transform:translateY(40px);opacity:0}40%{transform:translateY(-10px);opacity:1}100%{transform:translateY(0)}}
@keyframes pol360RankDown{0%{transform:translateY(-40px);opacity:0}40%{transform:translateY(10px);opacity:1}100%{transform:translateY(0)}}
@keyframes pol360ArrowUp{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes pol360ArrowDown{0%,100%{transform:translateY(0)}50%{transform:translateY(10px)}}
@keyframes pol360Shine{0%{background-position:-200% 0}100%{background-position:200% 0}}
.pol360-xp-toast{position:fixed;z-index:2147483610;left:50%;bottom:28px;display:grid;gap:2px;min-width:220px;padding:12px 18px;border-radius:14px;color:#fff;background:linear-gradient(120deg,#0d4ba6,#07162f);box-shadow:0 18px 40px rgba(4,17,45,.4);text-align:center;opacity:0;transform:translate(-50%,20px);transition:opacity .3s ease,transform .3s ease}
.pol360-xp-toast.is-visible{opacity:1;transform:translate(-50%,0);animation:pol360ToastIn .4s cubic-bezier(.2,.8,.2,1)}
.pol360-xp-toast b{font-size:22px;color:#8ff4af}
.pol360-xp-toast small{font-size:12px;color:rgba(255,255,255,.8)}
.pol360-gami-modal{position:fixed;z-index:2147483605;inset:0;display:grid;place-items:center;padding:18px}
.pol360-gami-modal.is-leaving .pol360-gami-card{opacity:0;transform:scale(.94)}
.pol360-gami-backdrop{position:absolute;inset:0;background:radial-gradient(circle at 50% 40%,rgba(13,75,166,.55),rgba(4,17,45,.85));backdrop-filter:blur(8px)}
.pol360-gami-card{position:relative;width:min(460px,100%);display:grid;justify-items:center;gap:10px;padding:34px 30px 28px;border:1px solid rgba(255,255,255,.35);border-radius:26px;color:#0d2855;background:#fff;box-shadow:0 34px 90px rgba(4,17,45,.55);text-align:center;animation:pol360NewsIn .5s cubic-bezier(.2,.8,.2,1);transition:opacity .3s ease,transform .3s ease}
.pol360-gami-modal.is-badge .pol360-gami-card{background:radial-gradient(circle at 50% 0,#fff8d6,#fff 60%)}
.pol360-gami-kicker{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#0a66ff}
.pol360-gami-card h2{margin:6px 0 0;font-size:28px;line-height:1.15;letter-spacing:-.02em}
.pol360-gami-card p{margin:0;max-width:340px;color:#60708b;font-size:15px;line-height:1.55}
.pol360-gami-card .pol360-action{margin-top:14px;min-width:160px;justify-content:center}
.pol360-badge-hero{position:relative;display:grid;width:132px;height:132px;place-items:center;border-radius:50%;color:#fff;font-size:58px;animation:pol360BadgePop .8s cubic-bezier(.2,.9,.3,1.3) both}
.pol360-badge-hero::before{position:absolute;inset:-6px;border-radius:50%;border:3px solid currentColor;opacity:.5;content:"";animation:pol360BadgeRing 1.6s ease-out .5s infinite}
.pol360-badge-hero::after{position:absolute;inset:0;border-radius:50%;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);background-size:200% 100%;content:"";animation:pol360Shine 2.4s linear .6s infinite}
.pol360-badge-hero.is-blue,.pol360-badge-emblem.is-blue,.pol360-badge-chip.is-blue{background:linear-gradient(145deg,#2b83ff,#0d2855);color:#fff}
.pol360-badge-hero.is-green,.pol360-badge-emblem.is-green,.pol360-badge-chip.is-green{background:linear-gradient(145deg,#63d761,#128a4a);color:#fff}
.pol360-badge-hero.is-purple,.pol360-badge-emblem.is-purple,.pol360-badge-chip.is-purple{background:linear-gradient(145deg,#a066ff,#4b1fa8);color:#fff}
.pol360-badge-hero.is-orange,.pol360-badge-emblem.is-orange,.pol360-badge-chip.is-orange{background:linear-gradient(145deg,#ffb347,#e4553f);color:#fff}
.pol360-badge-hero.is-gold,.pol360-badge-emblem.is-gold,.pol360-badge-chip.is-gold,.pol360-league-emblem.is-gold,.pol360-rank-division.is-gold{background:linear-gradient(145deg,#ffe27a,#d99a00);color:#4a3200}
.pol360-badge-hero.is-diamond,.pol360-badge-emblem.is-diamond,.pol360-badge-chip.is-diamond,.pol360-league-emblem.is-diamond,.pol360-rank-division.is-diamond{background:linear-gradient(145deg,#b9f2ff,#3aa0ff 55%,#7b5cff);color:#062145}
.pol360-league-emblem.is-bronze,.pol360-rank-division.is-bronze{background:linear-gradient(145deg,#e0a672,#8a4b1f);color:#fff}
.pol360-league-emblem.is-silver,.pol360-rank-division.is-silver{background:linear-gradient(145deg,#f3f4f7,#9aa4b5);color:#22304a}
.pol360-badge-burst{position:absolute;top:110px;left:50%;width:0;height:0;pointer-events:none}
.pol360-badge-burst i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:#ffcc33;animation:pol360Burst 1.1s ease-out .35s both}
.pol360-badge-burst i:nth-child(2){--a:45deg;background:#63d761}.pol360-badge-burst i:nth-child(3){--a:90deg;background:#2b83ff}.pol360-badge-burst i:nth-child(4){--a:135deg;background:#ff5f8f}.pol360-badge-burst i:nth-child(5){--a:180deg;background:#ffcc33}.pol360-badge-burst i:nth-child(6){--a:225deg;background:#63d761}.pol360-badge-burst i:nth-child(7){--a:270deg;background:#a066ff}.pol360-badge-burst i:nth-child(8){--a:315deg;background:#2b83ff}.pol360-badge-burst i:first-child{--a:0deg}
.pol360-rank-visual{display:flex;align-items:center;gap:18px;margin:6px 0}
.pol360-rank-from,.pol360-rank-to{font-size:40px;font-weight:900;letter-spacing:-.03em}
.pol360-rank-from{color:#9aa6bf;text-decoration:line-through;text-decoration-thickness:3px}
.pol360-rank-to{color:#0d2855;animation:pol360RankUp .7s cubic-bezier(.2,.8,.2,1) both}
.pol360-rank-visual.is-down .pol360-rank-to{animation-name:pol360RankDown;color:#c8402f}
.pol360-rank-visual.is-up .pol360-rank-to{color:#128a4a}
.pol360-rank-arrow{display:grid;width:54px;height:54px;place-items:center;border-radius:50%;color:#fff;background:#128a4a;font-size:30px;font-weight:900;animation:pol360ArrowUp 1.2s ease-in-out infinite}
.pol360-rank-visual.is-down .pol360-rank-arrow{background:#c8402f;animation-name:pol360ArrowDown}
.pol360-rank-division{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:99px;font-weight:800;font-size:14px}
@media(prefers-reduced-motion:reduce){.pol360-badge-hero,.pol360-badge-hero::before,.pol360-badge-hero::after,.pol360-badge-burst i,.pol360-rank-to,.pol360-rank-arrow,.pol360-xp-toast.is-visible{animation:none!important}}

/* Panel de liga en el dashboard */
.pol360-app .pol360-league-panel{display:grid;gap:12px;align-content:start;border-top:5px solid #d99a00}
.pol360-app .pol360-league-panel.is-bronze{border-top-color:#b5673a}.pol360-app .pol360-league-panel.is-silver{border-top-color:#9aa4b5}.pol360-app .pol360-league-panel.is-diamond{border-top-color:#3aa0ff}
.pol360-app .pol360-league-emblem{display:grid;width:48px;height:48px;flex:0 0 48px;place-items:center;border-radius:14px;font-size:24px;box-shadow:0 10px 22px rgba(13,40,85,.18)}
.pol360-app .pol360-league-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pol360-app .pol360-league-stats>div{display:grid;gap:2px;padding:10px;border-radius:12px;background:var(--a-bg);text-align:center}
.pol360-app .pol360-league-stats b{font-size:22px;line-height:1;color:var(--a-blue)}
.pol360-app .pol360-league-stats small{font-size:11px!important;color:var(--a-muted)}
.pol360-app .pol360-league-next{margin:0;font-size:14px!important;color:var(--a-muted)}
.pol360-app .pol360-league-badges-mini{display:flex;align-items:center;gap:6px}
.pol360-app .pol360-league-badges-mini small{margin-left:auto;font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-badge-chip{display:grid;width:34px;height:34px;place-items:center;border-radius:10px;font-size:16px}

/* Página de liga */
.pol360-app .pol360-league-page{display:grid;gap:18px}
.pol360-app .pol360-league-hero{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"emblem copy" "stats stats";align-items:center;gap:18px 24px;padding:26px;border-radius:20px;color:#fff;background:radial-gradient(circle at 85% 10%,rgba(255,226,122,.35),transparent 30%),linear-gradient(125deg,#123c98,#07162f 70%);box-shadow:0 22px 50px rgba(7,22,47,.2)}
.pol360-app .pol360-league-hero.is-diamond{background:radial-gradient(circle at 85% 10%,rgba(185,242,255,.4),transparent 30%),linear-gradient(125deg,#1d55c9,#0b1f5c 70%)}
.pol360-app .pol360-league-hero-emblem{grid-area:emblem;display:grid;width:120px;height:120px;place-items:center;border-radius:30px;font-size:56px;background:linear-gradient(145deg,#ffe27a,#d99a00);color:#4a3200;box-shadow:0 18px 40px rgba(0,0,0,.35);animation:pol360BadgePop .9s cubic-bezier(.2,.9,.3,1.3) both}
.pol360-app .pol360-league-hero.is-bronze .pol360-league-hero-emblem{background:linear-gradient(145deg,#e0a672,#8a4b1f);color:#fff}
.pol360-app .pol360-league-hero.is-silver .pol360-league-hero-emblem{background:linear-gradient(145deg,#f3f4f7,#9aa4b5);color:#22304a}
.pol360-app .pol360-league-hero.is-diamond .pol360-league-hero-emblem{background:linear-gradient(145deg,#b9f2ff,#3aa0ff 55%,#7b5cff);color:#062145}
.pol360-app .pol360-league-hero-copy{grid-area:copy;min-width:0}
.pol360-app .pol360-league-hero-copy .pol360-kicker{color:#8ff4af!important}
.pol360-app .pol360-league-hero-copy h2{margin:4px 0 8px;font-size:clamp(26px,3vw,38px);color:#fff}
.pol360-app .pol360-league-hero-copy p{margin:0;color:rgba(255,255,255,.8);font-size:15px!important;line-height:1.55}
.pol360-app .pol360-league-hero-copy p b{color:#8ff4af}
.pol360-app .pol360-league-divisions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.pol360-app .pol360-league-divisions span{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid rgba(255,255,255,.25);border-radius:99px;font-size:13px!important;font-weight:700;color:rgba(255,255,255,.75)}
.pol360-app .pol360-league-divisions span small{font-size:11px!important;opacity:.7}
.pol360-app .pol360-league-divisions span.is-current{color:#07162f;background:#8ff4af;border-color:#8ff4af}
.pol360-app .pol360-league-hero-stats{grid-area:stats;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.pol360-app .pol360-league-hero-stats>div{display:grid;gap:2px;padding:12px;border-radius:14px;background:rgba(255,255,255,.1);text-align:center}
.pol360-app .pol360-league-hero-stats b{font-size:26px;line-height:1;color:#8ff4af}
.pol360-app .pol360-league-hero-stats small{font-size:12px!important;color:rgba(255,255,255,.75)}
.pol360-app .pol360-league-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.8fr);gap:18px;align-items:start}
.pol360-app .pol360-podium{display:grid;grid-template-columns:repeat(3,1fr);align-items:end;gap:10px;margin:8px 0 18px;padding:18px 12px 0}
.pol360-app .pol360-podium-step{position:relative;display:grid;justify-items:center;gap:4px;padding:14px 10px 18px;border-radius:16px 16px 6px 6px;background:linear-gradient(180deg,#e9eefb,#dfe6f5)}
.pol360-app .pol360-podium-step.is-1{padding-top:22px;padding-bottom:34px;background:linear-gradient(180deg,#fff0b3,#f5c542)}
.pol360-app .pol360-podium-step.is-2{padding-bottom:26px;background:linear-gradient(180deg,#f6f7fa,#cfd6e3)}
.pol360-app .pol360-podium-step.is-3{background:linear-gradient(180deg,#f7dcc4,#d9a077)}
.pol360-app .pol360-podium-step.is-me{outline:3px solid var(--a-blue)}
.pol360-app .pol360-podium-avatar{display:grid;width:52px;height:52px;place-items:center;border-radius:50%;background:#fff;font-size:30px;box-shadow:0 6px 16px rgba(13,40,85,.18)}
.pol360-app .pol360-podium-step b{font-size:14px!important;text-align:center;color:#0d2855}
.pol360-app .pol360-podium-step small{font-size:12px!important;color:#3b4a6b}
.pol360-app .pol360-podium-step i{position:absolute;bottom:6px;font-style:normal;font-size:12px;font-weight:900;color:rgba(13,40,85,.5)}
.pol360-app .pol360-league-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.pol360-app .pol360-league-list li{display:grid;grid-template-columns:44px 40px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--a-border);border-radius:12px;background:var(--a-bg)}
.pol360-app .pol360-league-list li.is-me{border-color:var(--a-blue);background:color-mix(in srgb,var(--a-blue) 8%,var(--a-panel));box-shadow:0 0 0 3px color-mix(in srgb,var(--a-blue) 15%,transparent)}
.pol360-app .pol360-league-pos{font-weight:900;color:var(--a-muted)}
.pol360-app .pol360-league-avatar{display:grid;width:38px;height:38px;place-items:center;border-radius:50%;background:var(--a-panel);font-size:22px}
.pol360-app .pol360-league-list b{font-size:15px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol360-app .pol360-league-list b em{font-style:normal;color:var(--a-blue);font-size:12px!important}
.pol360-app .pol360-league-div{display:inline-flex;align-items:center;gap:5px;font-size:12px!important;font-weight:700;color:var(--a-muted)}
.pol360-app .pol360-league-list strong{font-size:15px!important;color:var(--a-blue);white-space:nowrap}
.pol360-app .pol360-xp-rules ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.pol360-app .pol360-xp-rules li{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:var(--a-bg);font-size:14px!important}
.pol360-app .pol360-xp-rules li i{display:grid;width:30px;height:30px;place-items:center;border-radius:8px;color:#fff;background:var(--a-blue)}
.pol360-app .pol360-xp-rules li b{color:#128a4a;font-size:15px!important}
.pol360-app .pol360-xp-rules p{margin:12px 0 0;color:var(--a-muted);font-size:13px!important}
.pol360-app .pol360-badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.pol360-app .pol360-badge-card{display:grid;justify-items:center;gap:6px;padding:18px 14px;border:1px solid var(--a-border);border-radius:16px;background:var(--a-bg);text-align:center;transition:transform .2s ease,box-shadow .2s ease}
.pol360-app .pol360-badge-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(13,40,85,.12)}
.pol360-app .pol360-badge-card.is-locked{opacity:.7}
.pol360-app .pol360-badge-card.is-locked .pol360-badge-emblem{background:linear-gradient(145deg,#cbd2df,#8c96aa)!important;color:#fff;filter:grayscale(1)}
.pol360-app .pol360-badge-emblem{display:grid;width:64px;height:64px;place-items:center;border-radius:50%;font-size:28px;box-shadow:0 10px 22px rgba(13,40,85,.18)}
.pol360-app .pol360-badge-card b{font-size:15px!important}
.pol360-app .pol360-badge-card small{font-size:12px!important;color:var(--a-muted);line-height:1.4}
.pol360-app .pol360-badge-card time{font-size:11px!important;font-weight:700;color:#128a4a}
.pol360-app .pol360-badge-progress{display:block;width:100%;height:6px;overflow:hidden;border-radius:99px;background:var(--a-border)}
.pol360-app .pol360-badge-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--a-green),var(--a-blue))}
.pol360-app .pol360-badge-card em{font-style:normal;font-size:11px!important;color:var(--a-muted)}
.pol360-app.pol360-dark .pol360-gami-card{background:#182022;color:#f7f9ff;border-color:#30393e}
.pol360-app.pol360-dark .pol360-gami-card p{color:#a7b0c7}
@media(max-width:1250px){.pol360-app .pol360-league-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:720px){.pol360-app .pol360-league-hero{grid-template-columns:1fr;grid-template-areas:"emblem" "copy" "stats";justify-items:center;text-align:center}.pol360-app .pol360-league-hero-emblem{width:96px;height:96px;font-size:44px}.pol360-app .pol360-league-hero-stats{grid-template-columns:1fr 1fr}.pol360-app .pol360-league-divisions{justify-content:center}.pol360-app .pol360-league-list li{grid-template-columns:36px 34px minmax(0,1fr) auto}.pol360-app .pol360-league-div{display:none}.pol360-app .pol360-podium{padding:10px 0 0}.pol360-app .pol360-gami-card{padding:26px 18px 22px}.pol360-app .pol360-league-stats{grid-template-columns:repeat(3,1fr)}}

/* ---------- 21. Dashboard en tres columnas sin huecos ---------- */
.pol360-app .pol360-student-dashboard{grid-template-columns:minmax(0,1.25fr) minmax(280px,.9fr) minmax(270px,.85fr);grid-template-areas:"hero hero hero" "progress league objectives" "tasks xp objectives" "bottom bottom bottom";align-items:stretch;gap:14px}
.pol360-app .pol360-student-dashboard>.pol360-dashboard-police-hero{grid-area:hero}
.pol360-app .pol360-student-dashboard>.pol360-dashboard-progress{grid-area:progress;align-content:start}
.pol360-app .pol360-student-dashboard>.pol360-objectives{grid-area:objectives;display:flex;flex-direction:column}
.pol360-app .pol360-student-dashboard>.pol360-tasks-panel{grid-area:tasks}
.pol360-app .pol360-student-dashboard>.pol360-league-panel{grid-area:league}
.pol360-app .pol360-student-dashboard>.pol360-xp-panel{grid-area:xp}
.pol360-app .pol360-student-dashboard>.pol360-dashboard-bottom{grid-area:bottom}
/* Sin tarjetas de liga/XP (profesores y administradores): dos columnas. */
.pol360-app .pol360-student-dashboard:not(:has(>.pol360-league-panel)){grid-template-columns:minmax(0,1.4fr) minmax(300px,.8fr);grid-template-areas:"hero hero" "progress objectives" "tasks objectives" "bottom bottom"}
.pol360-app .pol360-objectives>article{flex:0 0 auto}
.pol360-app .pol360-objectives>.pol360-outline-action{margin-top:auto}
.pol360-app .pol360-objectives>.pol360-empty-small{flex:1 1 auto}
.pol360-app .pol360-tasks-panel>.pol360-outline-action{margin-top:auto}
.pol360-app .pol360-xp-panel{display:grid;gap:12px;align-content:start;border-top:5px solid var(--a-blue)}
.pol360-app .pol360-xp-level-badge{display:grid;width:46px;height:46px;flex:0 0 46px;place-items:center;border-radius:14px;color:#fff;background:linear-gradient(145deg,#2b83ff,#0d2855);font-size:22px;font-weight:900;box-shadow:0 10px 22px rgba(13,40,85,.2)}
.pol360-app .pol360-xp-meter{display:grid;gap:6px}
.pol360-app .pol360-xp-meter>div{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.pol360-app .pol360-xp-meter>div span{font-size:14px!important;font-weight:700}
.pol360-app .pol360-xp-meter>div span b{font-size:22px!important;color:var(--a-blue)}
.pol360-app .pol360-xp-meter>div small{font-size:12px!important;color:var(--a-muted);white-space:nowrap}
.pol360-app .pol360-xp-meter>i{display:block;height:10px;overflow:hidden;border-radius:99px;background:var(--a-border)}
.pol360-app .pol360-xp-meter>i b{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--a-green),var(--a-blue));transition:width .85s cubic-bezier(.2,.8,.2,1)}
.pol360-app .pol360-xp-meter>p{margin:0;font-size:13px!important;color:var(--a-muted)}
.pol360-app .pol360-xp-next-badge{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;padding:12px;border:1px solid var(--a-border);border-radius:12px;background:var(--a-bg)}
.pol360-app .pol360-xp-next-badge .pol360-badge-chip{width:44px;height:44px;font-size:20px}
.pol360-app .pol360-xp-next-badge>div{display:grid;gap:4px;min-width:0}
.pol360-app .pol360-xp-next-badge small{font-size:11px!important;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--a-muted)}
.pol360-app .pol360-xp-next-badge b{font-size:15px!important}
.pol360-app .pol360-xp-next-badge em{font-style:normal;font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-league-panel>.pol360-panel-heading,.pol360-app .pol360-xp-panel>.pol360-panel-heading{flex-wrap:nowrap;align-items:center}
.pol360-app .pol360-league-panel>.pol360-panel-heading h2,.pol360-app .pol360-xp-panel>.pol360-panel-heading h2{font-size:20px}
.pol360-app .pol360-field-help{display:block;margin:-4px 0 6px;font-size:12px!important;color:var(--a-muted);line-height:1.4}

/* ---------- 22. Laboratorio de efectos (Ajustes, administradores) ---------- */
.pol360-app .pol360-effects-lab{display:grid;gap:16px;border-top:5px solid #a066ff}
.pol360-app .pol360-settings-icon.is-lab{background:linear-gradient(145deg,#a066ff,#4b1fa8)}
.pol360-app .pol360-lab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.pol360-app .pol360-lab-button{display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;gap:2px 12px;padding:12px 14px;border:1px solid var(--a-border);border-radius:12px;background:var(--a-bg);color:var(--a-text);cursor:pointer;font:inherit;text-align:left;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.pol360-app .pol360-lab-button:hover{transform:translateY(-2px);border-color:#a066ff;box-shadow:0 12px 26px rgba(75,31,168,.15)}
.pol360-app .pol360-lab-button i{display:grid;grid-row:1/3;width:38px;height:38px;place-items:center;border-radius:10px;color:#fff;background:linear-gradient(145deg,#a066ff,#4b1fa8);font-size:18px}
.pol360-app .pol360-lab-button b{font-size:14px!important}
.pol360-app .pol360-lab-button small{font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-lab-stage{display:grid;gap:10px;padding:16px;border:1px dashed var(--a-border);border-radius:14px}
.pol360-app .pol360-lab-stage>p{margin:0;font-size:13px!important;color:var(--a-muted)}
.pol360-app .pol360-lab-stage .pol360-task-card{margin-top:8px}
.pol360-app .pol360-lab-links{display:grid;gap:8px}
.pol360-app .pol360-lab-links>div{display:flex;flex-wrap:wrap;gap:8px}
.pol360-app .pol360-lab-links a{padding:8px 12px;border:1px solid var(--a-border);border-radius:99px;font-size:13px!important;font-weight:700;color:var(--a-blue);background:var(--a-panel)}
.pol360-app .pol360-lab-links a:hover{border-color:var(--a-blue)}

/* ---------- 23. Mi progreso: racha y emblemas bajo el gráfico ---------- */
@keyframes pol360Flame{0%,100%{transform:scale(1) rotate(-3deg)}50%{transform:scale(1.12) rotate(3deg)}}
.pol360-app .pol360-progress-insights{grid-template-columns:minmax(0,1.4fr) minmax(300px,.9fr);grid-template-areas:"streak modules" "chart modules";align-items:start;gap:18px}
.pol360-app .pol360-progress-insights>.pol360-streak-card{grid-area:streak}
.pol360-app .pol360-progress-insights>.pol360-progress-chart{grid-area:chart}
/* Gráfica más baja para que la columna izquierda (racha + actividad) termine alineada con «Avance por módulos» */
.pol360-app .pol360-progress-chart .pol360-progress-chart-bars{height:222px;margin-top:12px;padding-top:10px}
.pol360-app .pol360-progress-chart .pol360-chart-column{grid-template-rows:40px minmax(0,1fr) 26px;gap:5px}
@media(max-width:720px){.pol360-app .pol360-progress-chart .pol360-progress-chart-bars{height:210px}}
.pol360-app .pol360-progress-insights>.pol360-module-progress{grid-area:modules}
.pol360-app .pol360-progress-insights>.pol360-streak-panel{grid-area:badges}
.pol360-app .pol360-streak-panel{display:grid;gap:12px;align-content:start;border-top:5px solid #e4553f}
.pol360-app .pol360-streak-panel.is-hot{background:linear-gradient(160deg,color-mix(in srgb,#ffb347 12%,var(--a-panel)),var(--a-panel) 55%)}
.pol360-app .pol360-streak-panel>.pol360-panel-heading{flex-wrap:nowrap;align-items:center}
.pol360-app .pol360-streak-panel>.pol360-panel-heading h2{font-size:20px}
.pol360-app .pol360-streak-flame{position:relative;display:grid;width:54px;height:54px;flex:0 0 54px;place-items:center;border-radius:16px;color:#fff;background:linear-gradient(160deg,#cbd2df,#8c96aa);font-size:24px}
.pol360-app .pol360-streak-flame.is-lit{background:linear-gradient(160deg,#ffb347,#e4553f);box-shadow:0 10px 26px rgba(228,85,63,.35)}
.pol360-app .pol360-streak-flame.is-lit i{animation:pol360Flame 1.4s ease-in-out infinite}
.pol360-app .pol360-streak-flame b{position:absolute;right:-6px;bottom:-6px;min-width:22px;padding:2px 6px;border-radius:99px;background:#0d2855;color:#fff;font-size:11px!important;text-align:center}
.pol360-app .pol360-streak-copy{margin:0;font-size:14px!important;color:var(--a-muted)}
.pol360-app .pol360-streak-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pol360-app .pol360-streak-stats>div{display:grid;gap:2px;padding:10px;border-radius:12px;background:var(--a-bg);text-align:center}
.pol360-app .pol360-streak-stats b{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-size:18px!important;line-height:1.1;color:var(--a-blue)}
.pol360-app .pol360-streak-stats>div.is-gold b{color:#b07a00}.pol360-app .pol360-streak-stats>div.is-silver b{color:#5c6b86}.pol360-app .pol360-streak-stats>div.is-bronze b{color:#9a5a2b}.pol360-app .pol360-streak-stats>div.is-diamond b{color:#1f7fd8}
.pol360-app .pol360-streak-stats small{font-size:11px!important;color:var(--a-muted)}
.pol360-app .pol360-streak-badges{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pol360-app .pol360-streak-badges small{font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-badge-chip.is-locked{background:linear-gradient(145deg,#cbd2df,#8c96aa);color:#fff;opacity:.7}
.pol360-app .pol360-streak-next{display:grid;gap:6px}
.pol360-app .pol360-streak-next small{font-size:11px!important;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--a-muted)}
.pol360-app .pol360-streak-next b{font-size:14px!important}
@media(max-width:1180px){.pol360-app .pol360-progress-insights{grid-template-columns:minmax(0,1fr);grid-template-areas:none}.pol360-app .pol360-progress-insights>*{grid-area:auto!important}}
@media(prefers-reduced-motion:reduce){.pol360-app .pol360-streak-flame.is-lit i{animation:none}}
@media(max-width:1250px){.pol360-app .pol360-student-dashboard:not(:has(>.pol360-league-panel)){grid-template-columns:minmax(0,1fr) minmax(280px,.85fr);grid-template-areas:"hero hero" "progress objectives" "tasks objectives" "bottom bottom"}}

/* ---------- 24. Liga: ranking completo, situación del alumno y altura llena ---------- */
.pol360-app .pol360-league-grid{align-items:stretch}
.pol360-app .pol360-league-table-panel{display:flex;flex-direction:column;gap:12px;min-height:0}
.pol360-app .pol360-league-table-panel>.pol360-league-list{flex:1 1 auto;min-height:220px;max-height:720px;overflow:auto;padding-right:4px;scrollbar-width:thin}
.pol360-app .pol360-league-situation{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.pol360-app .pol360-league-situation>div{display:grid;gap:3px;padding:10px 12px;border-radius:12px;background:var(--a-bg);border-left:4px solid var(--a-blue)}
.pol360-app .pol360-league-situation>div.is-up{border-left-color:#128a4a}
.pol360-app .pol360-league-situation>div.is-down{border-left-color:#e4553f}
.pol360-app .pol360-league-situation>div.is-division{border-left-color:#d99a00}
.pol360-app .pol360-league-situation small{font-size:11px!important;line-height:1.3;color:var(--a-muted)}
.pol360-app .pol360-league-situation b{font-size:18px!important;line-height:1.1}
.pol360-app .pol360-league-situation b em{font-style:normal;font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-league-situation>div.is-up b{color:#128a4a}.pol360-app .pol360-league-situation>div.is-down b{color:#c8402f}.pol360-app .pol360-league-situation>div.is-division b{color:#b07a00}
.pol360-app .pol360-league-list li.is-zero{opacity:.75}
.pol360-app .pol360-league-list li.is-me{position:sticky;top:0;bottom:0;z-index:2;opacity:1;background:color-mix(in srgb,var(--a-blue) 10%,var(--a-panel))}
.pol360-app .pol360-league-medal{display:grid;width:28px;height:28px;place-items:center;border-radius:50%;font-style:normal;font-size:13px;font-weight:900;color:#4a3200;background:linear-gradient(145deg,#ffe27a,#d99a00)}
.pol360-app .pol360-league-medal.is-2{background:linear-gradient(145deg,#f3f4f7,#9aa4b5);color:#22304a}
.pol360-app .pol360-league-medal.is-3{background:linear-gradient(145deg,#e0a672,#8a4b1f);color:#fff}
.pol360-app .pol360-league-list li.pol360-league-empty{display:grid;grid-template-columns:1fr;gap:4px;padding:26px 18px;border-style:dashed;text-align:center}
.pol360-app .pol360-league-list li.pol360-league-empty b{white-space:normal;font-size:16px!important}
.pol360-app .pol360-league-list li.pol360-league-empty small{font-size:13px!important;color:var(--a-muted)}
@media(max-width:900px){.pol360-app .pol360-league-situation{grid-template-columns:1fr 1fr}}

/* ---------- 25. Nick del alumno ---------- */
@keyframes pol360NickPop{0%{transform:scale(.9)}50%{transform:scale(1.12)}100%{transform:scale(1)}}
.pol360-app .pol360-nick-panel{display:grid;gap:14px;border-top:5px solid #a066ff}
.pol360-app .pol360-nick-panel>.pol360-panel-heading{align-items:center}
.pol360-app .pol360-nick-panel>.pol360-panel-heading p{margin:6px 0 0;color:var(--a-muted);font-size:14px!important;line-height:1.5}
.pol360-app .pol360-panel-heading .pol360-nick-current,.pol360-app .pol360-nick-current{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:12px;color:#fff!important;background:linear-gradient(145deg,#a066ff,#4b1fa8);box-shadow:0 10px 24px rgba(75,31,168,.25);font-size:18px!important}
.pol360-app .pol360-nick-current i{font-size:20px;color:#fff!important;opacity:.9}
.pol360-app .pol360-nick-current b{font-size:18px!important;font-weight:800;letter-spacing:.02em;white-space:nowrap;color:#fff!important;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.pol360-app .pol360-nick-current b.pol360-is-new-nick{animation:pol360NickPop .8s ease}
.pol360-app .pol360-nick-tools{display:grid;gap:10px}
.pol360-app .pol360-nick-tools>.pol360-outline-action{justify-self:start;margin:0}
.pol360-app .pol360-nick-options{display:grid;gap:12px;padding:16px;border:1px dashed var(--a-border);border-radius:14px;background:var(--a-bg)}
.pol360-app .pol360-nick-options>p{margin:0;font-size:14px!important;color:var(--a-muted)}
.pol360-app .pol360-nick-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.pol360-app .pol360-nick-choice{display:flex;align-items:center;gap:10px;padding:14px;border:2px solid var(--a-border);border-radius:12px;background:var(--a-panel);color:var(--a-text);cursor:pointer;font:inherit;text-align:left;animation:pol360NewsItem .4s ease both;animation-delay:var(--pol360-delay,0ms);transition:border-color .15s ease,transform .15s ease}
.pol360-app .pol360-nick-choice:hover{transform:translateY(-2px);border-color:#a066ff}
.pol360-app .pol360-nick-choice.is-selected{border-color:#a066ff;background:color-mix(in srgb,#a066ff 12%,var(--a-panel));box-shadow:0 0 0 3px rgba(160,102,255,.2)}
.pol360-app .pol360-nick-choice i{display:grid;width:34px;height:34px;flex:0 0 34px;place-items:center;border-radius:9px;color:#fff;background:linear-gradient(145deg,#a066ff,#4b1fa8)}
.pol360-app .pol360-nick-choice b{font-size:16px!important}
.pol360-app .pol360-nick-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.pol360-app .pol360-nick-actions .pol360-outline-action,.pol360-app .pol360-nick-actions .pol360-action{margin:0}
.pol360-app .pol360-nick-actions .pol360-action:disabled{opacity:.5;cursor:default}
.pol360-app .pol360-nick-cancel{border:0;background:transparent;color:var(--a-muted);cursor:pointer;font:inherit;font-size:14px!important;text-decoration:underline}
.pol360-app .pol360-nick-status{margin:0;min-height:1em;font-size:13px!important;color:var(--a-muted)}
.pol360-app .pol360-nick-status.is-error{color:#c8402f}
@media(max-width:720px){.pol360-app .pol360-nick-panel>.pol360-panel-heading{align-items:flex-start}}

/* ---------- 26. Identidad de alumnos para el equipo docente ---------- */
.pol360-app .pol360-nick-tag{position:relative;display:inline-block;cursor:help;border-bottom:1px dotted currentColor;text-decoration:none}
.pol360-app .pol360-nick-tag:focus-visible{outline:2px solid var(--a-blue);outline-offset:2px;border-radius:4px}
.pol360-nick-tooltip{position:fixed;z-index:2147483640;padding:7px 11px;border-radius:8px;background:#141a26;color:#fff;font-family:Montserrat,Arial,sans-serif;font-size:12px;font-weight:700;line-height:1.3;letter-spacing:.01em;white-space:nowrap;box-shadow:0 8px 20px rgba(0,0,0,.28);pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease}
.pol360-nick-tooltip.is-visible{opacity:1;transform:translateY(0)}
.pol360-nick-tooltip::after{content:"";position:absolute;left:14px;top:100%;border:6px solid transparent;border-top-color:#141a26}
.pol360-nick-tooltip.is-below::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#141a26}
.pol360-app .pol360-names-mode-form{display:grid;gap:14px}
.pol360-app .pol360-names-mode-form .pol360-action{justify-self:start;margin:0}
.pol360-app .pol360-names-mode-preview{margin:0;font-size:14px!important;color:var(--a-muted)}
.pol360-app .pol360-names-mode-preview .pol360-nick-tag{color:var(--a-text);font-weight:700}

/* ---------- 27. Racha activa (tarjeta semanal, paleta POL360) ---------- */
@keyframes pol360StreakGlow{0%,100%{box-shadow:0 0 0 0 rgba(30,215,96,0)}50%{box-shadow:0 0 0 6px rgba(30,215,96,.22)}}
.pol360-app .pol360-streak-card{position:relative;display:grid;gap:14px;overflow:hidden;border-top:5px solid #1ed760;background:radial-gradient(circle at 92% 8%,rgba(30,215,96,.18),transparent 32%),var(--a-panel)}
.pol360-app .pol360-streak-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.pol360-app .pol360-streak-card-shield{position:relative;display:grid;width:54px;height:54px;place-items:center;border-radius:16px;font-size:26px;color:#fff;background:linear-gradient(160deg,#1ed760,#0d9f4a);box-shadow:0 12px 26px rgba(30,215,96,.35);animation:pol360StreakGlow 2.4s ease-in-out infinite}
.pol360-app .pol360-streak-card:not(.is-lit) .pol360-streak-card-shield{background:linear-gradient(160deg,#cbd2df,#8c96aa);box-shadow:none;animation:none}
.pol360-app .pol360-streak-card-shield em{position:absolute;left:12px;right:12px;bottom:-9px;height:4px;border-radius:2px;background:linear-gradient(90deg,#1ed760,#0d2855)}
.pol360-app .pol360-streak-card-main{display:flex;align-items:center;gap:14px}
.pol360-app .pol360-streak-card-main>b{font-size:56px!important;line-height:.9;font-weight:900;letter-spacing:-.02em;color:var(--a-blue)}
.pol360-app .pol360-streak-card.is-lit .pol360-streak-card-main>b{color:#128a4a}
.pol360-app .pol360-streak-card-main strong{display:block;font-size:17px!important;color:var(--a-blue)}
.pol360-app .pol360-streak-card-main small{display:block;margin-top:3px;font-size:13px!important;color:var(--a-muted)}
.pol360-app .pol360-streak-card-main small em{font-style:normal;font-weight:800;color:#128a4a}
.pol360-app .pol360-streak-week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.pol360-app .pol360-streak-week span{display:grid;gap:4px;padding:6px 4px;border:1px solid var(--a-border);border-radius:10px;background:var(--a-bg);text-align:center}
.pol360-app .pol360-streak-week small{font-size:11px!important;font-weight:800;letter-spacing:.06em;color:var(--a-muted)}
.pol360-app .pol360-streak-week b{font-size:14px!important;color:var(--a-text)}
.pol360-app .pol360-streak-week span.is-active{border-color:#1ed760;background:linear-gradient(160deg,#1ed760,#12b455);color:#062145}
.pol360-app .pol360-streak-week span.is-active b,.pol360-app .pol360-streak-week span.is-active small{color:#062145}
.pol360-app .pol360-streak-week span.is-today{outline:2px solid var(--a-blue);outline-offset:-1px}
.pol360-app .pol360-streak-week span.is-today small{color:var(--a-blue)}
.pol360-app .pol360-streak-week span.is-future{border-style:dashed;opacity:.6}
.pol360-app .pol360-streak-bar{position:relative;display:flex;align-items:center;gap:10px}
.pol360-app .pol360-streak-bar::before{content:"";position:absolute;left:0;right:64px;top:50%;height:6px;margin-top:-3px;border-radius:3px;background:var(--a-border);z-index:0}
.pol360-app .pol360-streak-bar i{position:relative;z-index:1;display:block;height:6px;min-width:6px;max-width:100%;margin-right:auto;border-radius:3px;background:linear-gradient(90deg,#1ed760,#2554c7);box-shadow:0 0 12px rgba(30,215,96,.45)}
.pol360-app .pol360-streak-bar span{flex:0 0 auto;font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-streak-bar span b{color:#128a4a}
.pol360-dark .pol360-streak-card-main strong,.pol360-dark .pol360-streak-card-main>b{color:#fff}
.pol360-dark .pol360-streak-card.is-lit .pol360-streak-card-main>b{color:#4ade80}
.pol360-dark .pol360-streak-week span.is-today{outline-color:#4ade80}.pol360-dark .pol360-streak-week span.is-today small{color:#4ade80}

/* ---------- 28. Ranking de liga compacto con zonas de ascenso y descenso ---------- */
.pol360-app .pol360-league-hero-stats b.is-text{font-size:18px!important;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol360-app .pol360-league-divisions a{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid rgba(255,255,255,.25);border-radius:99px;font-size:13px!important;font-weight:700;color:rgba(255,255,255,.75);text-decoration:none;transition:background .15s ease}
.pol360-app .pol360-league-divisions a:hover{background:rgba(255,255,255,.12);color:#fff}
.pol360-app .pol360-league-divisions a small{font-size:11px!important;opacity:.7}
.pol360-app .pol360-league-divisions a.is-current{color:#07162f;background:#8ff4af;border-color:#8ff4af}
.pol360-app .pol360-rank-head{display:flex;justify-content:space-between;padding:0 14px 6px;border-bottom:1px solid var(--a-border);font-size:11px!important;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--a-muted)}
.pol360-app .pol360-league-table-panel>.pol360-rank-list{flex:1 1 auto;min-height:260px;max-height:640px;overflow:auto;margin:0;padding:0 4px 0 0;list-style:none;display:grid;gap:4px;align-content:start;scrollbar-width:thin}
.pol360-app .pol360-rank-row{display:grid;grid-template-columns:34px 30px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:46px;padding:6px 12px 6px 0;border-bottom:1px solid var(--a-border);border-left:3px solid transparent;border-radius:0 10px 10px 0;transition:background .15s ease}
.pol360-app .pol360-rank-row:hover{background:var(--a-bg)}
.pol360-app .pol360-rank-row.is-up{border-left-color:#1ed760}
.pol360-app .pol360-rank-row.is-down{border-left-color:#e4553f}
.pol360-app .pol360-rank-row.is-zero{opacity:.7}
.pol360-app .pol360-rank-row.is-me{position:sticky;top:0;bottom:0;z-index:2;opacity:1;background:color-mix(in srgb,var(--a-blue) 10%,var(--a-panel));box-shadow:0 0 0 2px color-mix(in srgb,var(--a-blue) 25%,transparent);border-radius:10px}
.pol360-app .pol360-rank-pos{font-size:15px!important;font-weight:900;text-align:center;color:var(--a-muted)}
.pol360-app .pol360-rank-row.is-up .pol360-rank-pos{color:#128a4a}
.pol360-app .pol360-rank-row.is-down .pol360-rank-pos{color:#c8402f}
.pol360-app .pol360-rank-shield{display:grid;width:28px;height:28px;place-items:center;border-radius:8px;font-size:15px;color:#fff;background:linear-gradient(160deg,#5d8bff,#2554c7)}
.pol360-app .pol360-rank-row.is-up .pol360-rank-shield{background:linear-gradient(160deg,#4ade80,#128a4a)}
.pol360-app .pol360-rank-row.is-down .pol360-rank-shield{background:linear-gradient(160deg,#ff8a75,#c8402f)}
.pol360-app .pol360-rank-row.is-zero .pol360-rank-shield{background:linear-gradient(160deg,#cbd2df,#8c96aa)}
.pol360-app .pol360-rank-row b{font-size:15px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol360-app .pol360-rank-row b em{font-style:normal;font-size:12px!important;color:var(--a-blue)}
.pol360-app .pol360-rank-crown{font-size:13px;color:#e0a100;vertical-align:-1px;margin-left:2px}
.pol360-app .pol360-rank-row strong{font-size:15px!important;white-space:nowrap;color:var(--a-text)}
.pol360-app .pol360-rank-row strong small{margin-left:3px;font-size:10px!important;font-weight:800;color:var(--a-muted)}
.pol360-app .pol360-rank-divider{display:flex;align-items:center;gap:12px;padding:8px 0;list-style:none}
.pol360-app .pol360-rank-divider::before,.pol360-app .pol360-rank-divider::after{content:"";flex:1 1 auto;height:1px;background:currentColor;opacity:.35}
.pol360-app .pol360-rank-divider span{font-size:11px!important;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.pol360-app .pol360-rank-divider.is-up{color:#128a4a}
.pol360-app .pol360-rank-divider.is-down{color:#c8402f}
.pol360-app .pol360-rank-empty{display:grid;gap:4px;padding:26px 18px;border:1px dashed var(--a-border);border-radius:12px;text-align:center;list-style:none}
.pol360-app .pol360-rank-empty b{font-size:16px!important}
.pol360-app .pol360-rank-empty small{font-size:13px!important;color:var(--a-muted)}
.pol360-app .pol360-league-situation>div.is-zone-up{border-left-color:#1ed760;background:color-mix(in srgb,#1ed760 10%,var(--a-bg))}
.pol360-app .pol360-league-situation>div.is-zone-up b{color:#128a4a}
.pol360-app .pol360-league-situation>div.is-zone-down{border-left-color:#e4553f;background:color-mix(in srgb,#e4553f 10%,var(--a-bg))}
.pol360-app .pol360-league-situation>div.is-zone-down b{color:#c8402f}
.pol360-dark .pol360-rank-row.is-up .pol360-rank-pos,.pol360-dark .pol360-rank-divider.is-up{color:#4ade80}
.pol360-dark .pol360-rank-row.is-down .pol360-rank-pos,.pol360-dark .pol360-rank-divider.is-down{color:#ff8a75}
@media(max-width:720px){.pol360-app .pol360-rank-row{grid-template-columns:28px 26px minmax(0,1fr) auto;gap:8px}.pol360-app .pol360-streak-card-main>b{font-size:44px!important}}

/* ---------- 29. Mapa del programa: módulos aún no activos ---------- */
.pol360-app .pol360-module-progress-list>div.is-locked{opacity:.55}
.pol360-app .pol360-module-progress-list>div.is-locked>span>b{background:linear-gradient(160deg,#cbd2df,#8c96aa)}
.pol360-app .pol360-module-progress-list>div.is-locked>span>strong::after{content:" · bloqueado";font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--a-muted)}
.pol360-app .pol360-names-mode-saved{font-size:13px!important;font-weight:700;color:#128a4a}

/* ---------- 30. Adaptación por dispositivo: MacBook 13/14/15, iPad 10" y iPhone 15 ---------- */
/* Portátiles 13" (1280–1470px): rejilla del inicio a dos columnas para que nada quede estrecho */
@media(min-width:981px) and (max-width:1470px){
	.pol360-app .pol360-student-dashboard,.pol360-app .pol360-student-dashboard:not(:has(>.pol360-league-panel)){grid-template-columns:minmax(0,1fr) minmax(300px,.8fr);grid-template-areas:"hero hero" "progress objectives" "league objectives" "xp tasks" "bottom bottom"}
	.pol360-app .pol360-student-dashboard:not(:has(>.pol360-league-panel)){grid-template-areas:"hero hero" "progress objectives" "tasks objectives" "bottom bottom"}
	.pol360-app .pol360-league-grid{grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr)}
}
/* iPad 10" apaisado (1180px) y ventanas estrechas: dos columnas equilibradas */
@media(min-width:981px) and (max-width:1250px){
	.pol360-app .pol360-progress-insights{grid-template-columns:minmax(0,1fr) minmax(280px,.8fr)}
	.pol360-app .pol360-league-hero{padding:22px}
	.pol360-app .pol360-league-hero-stats{grid-template-columns:repeat(2,1fr)}
}
/* iPad 10" vertical (820px) y menor: una sola columna, orden lógico */
@media(max-width:980px){
	.pol360-app .pol360-student-dashboard,.pol360-app .pol360-student-dashboard:not(:has(>.pol360-league-panel)){grid-template-columns:minmax(0,1fr);grid-template-areas:none;gap:12px}
	.pol360-app .pol360-student-dashboard>*{grid-area:auto!important;min-width:0}
	.pol360-app .pol360-student-dashboard>.pol360-dashboard-police-hero{order:-3}
	.pol360-app .pol360-student-dashboard>.pol360-dashboard-progress{order:-2}
	.pol360-app .pol360-student-dashboard>.pol360-league-panel{order:-1}
	.pol360-app .pol360-progress-insights{grid-template-columns:minmax(0,1fr);grid-template-areas:none}
	.pol360-app .pol360-progress-insights>*{grid-area:auto!important}
	.pol360-app .pol360-league-grid{grid-template-columns:minmax(0,1fr)}
	.pol360-app .pol360-league-table-panel>.pol360-rank-list{max-height:520px}
	.pol360-app .pol360-league-situation{grid-template-columns:1fr 1fr}
	.pol360-app .pol360-league-hero-stats{grid-template-columns:repeat(2,1fr)}
	.pol360-app .pol360-user-status{font-size:11px!important}
	.pol360-app .pol360-chat-pane{min-height:420px}
}
/* iPad vertical: tarjetas KPI y paneles a dos por fila */
@media(min-width:721px) and (max-width:980px){
	.pol360-app .pol360-progress-kpis{grid-template-columns:1fr 1fr}
	.pol360-app .pol360-dashboard-bottom{grid-template-columns:1fr 1fr}
	.pol360-app .pol360-streak-card-main>b{font-size:48px!important}
}
/* iPhone 15 (393px) y móviles: todo a una columna, textos legibles y sin desbordes */
@media(max-width:720px){
	.pol360-app .pol360-league-hero-stats{grid-template-columns:repeat(2,1fr);gap:8px}
	.pol360-app .pol360-league-hero-stats b{font-size:22px}
	.pol360-app .pol360-league-hero-stats b.is-text{font-size:14px!important;white-space:normal;line-height:1.25}
	.pol360-app .pol360-league-divisions{justify-content:center}
	.pol360-app .pol360-league-situation{grid-template-columns:1fr 1fr}
	.pol360-app .pol360-league-situation b{font-size:16px!important}
	.pol360-app .pol360-rank-head{padding:0 10px 6px}
	.pol360-app .pol360-rank-row{min-height:42px}
	.pol360-app .pol360-rank-row b{font-size:14px!important}
	.pol360-app .pol360-chat-sidebar>nav{scroll-snap-type:x mandatory;padding:8px}
	.pol360-app .pol360-chat-sidebar>nav>a{min-width:210px;max-width:210px;scroll-snap-align:start}
	.pol360-app .pol360-chat-sidebar>nav>a>span:nth-child(2)>b,.pol360-app .pol360-chat-sidebar>nav>a>span:nth-child(2)>small{display:block;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
	.pol360-app .pol360-chat-message time,.pol360-app .pol360-chat-bubble time{font-size:11px!important}
	.pol360-app .pol360-streak-week{gap:4px}
	.pol360-app .pol360-streak-week span{padding:5px 2px}
	.pol360-app .pol360-streak-week b{font-size:13px!important}
	.pol360-app .pol360-nick-choices{grid-template-columns:1fr}
	.pol360-app .pol360-nick-panel>.pol360-panel-heading{flex-direction:column;align-items:flex-start;gap:10px}
	.pol360-app .pol360-nick-current{max-width:100%}
	.pol360-app .pol360-nick-current b{white-space:normal;word-break:break-word}
	.pol360-app .pol360-names-mode-form .pol360-setting-choices fieldset{grid-template-columns:1fr}
	.pol360-app .pol360-lab-grid{grid-template-columns:1fr 1fr}
	.pol360-app .pol360-student-table td span,.pol360-app .pol360-teacher-table-wrap td span{font-size:11px!important}
}
/* Textos mínimos de 11px en cualquier tamaño (accesibilidad) */
.pol360-app .pol360-user-status{font-size:11px!important}
.pol360-app .pol360-chat-sidebar time,.pol360-app .pol360-chat-pane time,.pol360-app .pol360-chat-message time{font-size:11px!important}
.pol360-app .pol360-student-data-list span,.pol360-app .pol360-student-data dt,.pol360-app .pol360-student-data span{font-size:11px!important}
/* Alturas cortas (MacBook 13" a 800px de alto): el menú lateral se compacta y hace scroll sin ocultar el usuario */
@media(min-width:981px) and (max-height:820px){
	.pol360-app .pol360-sidebar{overflow-y:auto;scrollbar-width:none}
	.pol360-app .pol360-sidebar nav a{padding-top:7px;padding-bottom:7px}
	.pol360-app .pol360-sidebar-logo{min-height:44px}
}

/* ---------- 31. Gestión de cursos: formulario de alta sin desbordes + menú lateral en pantallas bajas ---------- */
.pol360-app .pol360-course-create{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;align-items:end;gap:12px;min-width:0}
.pol360-app .pol360-course-create label{min-width:0}
.pol360-app .pol360-course-create label>span{font-size:14px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pol360-app .pol360-course-create input{max-width:100%;min-width:0}
.pol360-app .pol360-course-create input[type=file]{padding:10px;font-size:13px!important}
.pol360-app .pol360-course-create input[type=file]::file-selector-button{margin-right:8px;padding:6px 10px;border:1px solid var(--a-border);border-radius:7px;background:var(--a-bg);color:var(--a-text);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.pol360-app .pol360-course-create>.pol360-action{margin:0;padding-left:16px;padding-right:16px}
.pol360-app .pol360-course-manager-hero{grid-template-columns:minmax(0,1fr) minmax(360px,.95fr)}
@media(max-width:1380px){.pol360-app .pol360-course-manager-hero{grid-template-columns:1fr}}
@media(min-width:721px) and (max-width:1380px){.pol360-app .pol360-course-create{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}}
@media(max-width:720px){.pol360-app .pol360-course-create{grid-template-columns:minmax(0,1fr)!important}.pol360-app .pol360-course-create>.pol360-action{width:100%}}
/* Menú lateral cuando la ventana es baja (MacBook 13" con barra de WordPress): entradas más compactas para que se vean todas */
@media(min-width:981px) and (max-height:900px){
	.pol360-app .pol360-sidebar nav{margin-top:10px;gap:1px}
	.pol360-app .pol360-sidebar nav a{min-height:34px;padding:5px 10px}
	.pol360-app .pol360-sidebar nav a .pol360-nav-icon{width:22px!important;height:22px!important;flex-basis:22px!important}
	.pol360-app .pol360-sidebar nav a .pol360-nav-icon i{font-size:17px!important}
	.pol360-app .pol360-nav-section-label{margin:6px 10px 0}
	.pol360-app .pol360-sidebar-learning-progress{margin-top:8px;padding:9px 12px}
	.pol360-app .pol360-user{padding-top:8px}
	.pol360-app .pol360-logout{min-height:34px}
}
@media(min-width:981px) and (max-height:820px){
	.pol360-app .pol360-sidebar nav a{min-height:31px;padding:4px 10px;font-size:13px!important}
	.pol360-app .pol360-sidebar nav a .pol360-nav-label{font-size:13px!important}
	.pol360-app .pol360-sidebar-learning-progress{display:none}
}

/* ---------- 32. Estructura del itinerario plegable ---------- */
.pol360-app .pol360-module-manager>header{flex-wrap:wrap}
.pol360-app .pol360-module-manager>header>div{flex:1 1 320px;min-width:0}
.pol360-app .pol360-collapse-toggle{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:8px 14px;border:1px solid var(--a-border);border-radius:10px;background:var(--a-bg);color:var(--a-text);font:inherit;font-size:13px!important;font-weight:800;cursor:pointer;transition:background .15s ease}
.pol360-app .pol360-collapse-toggle:hover{background:var(--a-panel);border-color:var(--a-blue)}
.pol360-app .pol360-collapse-toggle i{font-size:18px;line-height:1}
.pol360-app .pol360-module-manager.is-collapsed{padding-bottom:18px}
.pol360-app .pol360-module-manager.is-collapsed>header h2{font-size:22px}
.pol360-app .pol360-module-manager.is-collapsed>header>div>p:not(.pol360-module-manager-summary){display:none}
.pol360-app .pol360-module-manager-summary{margin:6px 0 0!important;font-size:13px!important;color:var(--a-muted)!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol360-app .pol360-module-manager-body{display:block;margin-top:4px}
.pol360-app .pol360-module-manager-body[hidden],.pol360-app .pol360-module-manager.is-collapsed>.pol360-module-manager-body{display:none!important}
@media(max-width:720px){.pol360-app .pol360-collapse-toggle{width:100%;justify-content:center}.pol360-app .pol360-module-manager-summary{white-space:normal}}

/* ---------- 33. Dudas: botón parpadeante, modal docente, página del alumno y avisos ---------- */
@keyframes pol360DoubtPulse{0%,100%{box-shadow:0 0 0 0 rgba(228,85,63,.55)}50%{box-shadow:0 0 0 7px rgba(228,85,63,0)}}
.pol360-app .pol360-doubts-button{display:inline-flex;align-items:center;gap:6px;margin-right:8px;padding:6px 10px;border:1px solid var(--a-border);border-radius:10px;background:var(--a-bg);color:var(--a-text);font:inherit;font-size:12px!important;font-weight:800;cursor:pointer;white-space:nowrap}
.pol360-app .pol360-doubts-button i{font-size:15px;color:var(--a-blue)}
.pol360-app .pol360-doubts-button b{min-width:20px;padding:1px 6px;border-radius:99px;background:var(--a-border);font-size:11px!important;text-align:center}
.pol360-app .pol360-doubts-button.is-pending{border-color:#e4553f;color:#c8402f;background:color-mix(in srgb,#e4553f 10%,var(--a-panel));animation:pol360DoubtPulse 1.6s ease-out infinite}
.pol360-app .pol360-doubts-button.is-pending i{color:#c8402f;animation:pol360Blink 1.2s ease-in-out infinite}
.pol360-app .pol360-doubts-button.is-pending b{color:#fff;background:#e4553f}
.pol360-app .pol360-modal{position:fixed;z-index:2147483600;inset:0;display:grid;place-items:center;padding:18px}
.pol360-app .pol360-modal[hidden]{display:none}
.pol360-app .pol360-modal-backdrop{position:absolute;inset:0;background:rgba(4,17,45,.62);backdrop-filter:blur(6px)}
.pol360-app .pol360-modal-card{position:relative;width:min(760px,100%);max-height:min(88vh,820px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid var(--a-border);border-radius:22px;background:var(--a-panel);color:var(--a-text);box-shadow:0 30px 80px rgba(0,0,0,.4)}
.pol360-app .pol360-modal-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:20px 22px 16px;color:#fff;background:radial-gradient(circle at 85% 20%,rgba(255,179,71,.35),transparent 32%),linear-gradient(120deg,#0d4ba6,#07162f)}
.pol360-app .pol360-modal-head .pol360-kicker{color:#8ff4af!important}
.pol360-app .pol360-modal-head h2{margin:2px 0 0;font-size:22px;line-height:1.15;color:#fff}
.pol360-app .pol360-modal-head h2 .pol360-nick-tag{color:#fff}
.pol360-app .pol360-modal-head p{margin:4px 0 0;font-size:13px!important;color:rgba(255,255,255,.75)}
.pol360-app .pol360-modal-icon{display:grid;width:48px;height:48px;place-items:center;border-radius:14px;color:#07162f;background:#ffb347;font-size:24px}
.pol360-app .pol360-modal-close{width:40px;height:40px;border:1px solid rgba(255,255,255,.35);border-radius:10px;color:#fff;background:rgba(255,255,255,.1);cursor:pointer;font-size:24px!important;line-height:1}
.pol360-app .pol360-modal-body{display:grid;gap:12px;padding:18px 22px 22px;overflow:auto}
body.pol360-modal-open{overflow:hidden}
.pol360-app .pol360-doubt{display:grid;gap:10px;padding:14px 16px;border:1px solid var(--a-border);border-left:4px solid var(--a-blue);border-radius:14px;background:var(--a-bg)}
.pol360-app .pol360-doubt.is-open{border-left-color:#e4553f}
.pol360-app .pol360-doubt.is-answered{border-left-color:#128a4a}
.pol360-app .pol360-doubt.is-fresh{box-shadow:0 0 0 3px color-mix(in srgb,var(--a-green) 45%,transparent)}
.pol360-app .pol360-doubt>header{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.pol360-app .pol360-doubt>header b{flex:1 1 200px;min-width:0;font-size:15px!important}
.pol360-app .pol360-doubt>header time{font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-doubt>header a{font-size:13px!important;font-weight:800;color:var(--a-blue);text-decoration:none}
.pol360-app .pol360-status-pill.is-pending{color:#c8402f;background:color-mix(in srgb,#e4553f 14%,var(--a-panel));border-color:#e4553f}
.pol360-app .pol360-doubt-new{padding:3px 9px;border-radius:99px;background:var(--a-green);color:#07162f;font-size:11px!important;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.pol360-app .pol360-doubt-body{margin:0;padding:12px 14px;border-radius:10px;background:var(--a-panel);font-size:15px!important;line-height:1.55}
.pol360-app .pol360-doubt-reply{display:grid;grid-template-columns:auto auto;justify-content:start;column-gap:10px;padding:10px 14px 12px 14px;border-left:3px solid #128a4a;border-radius:0 10px 10px 0;background:color-mix(in srgb,#128a4a 8%,var(--a-panel))}
.pol360-app .pol360-doubt-reply b{font-size:13px!important;color:#128a4a}
.pol360-app .pol360-doubt-reply time{font-size:12px!important;color:var(--a-muted)}
.pol360-app .pol360-doubt-reply p{grid-column:1/-1;margin:4px 0 0;font-size:14px!important;line-height:1.55}
.pol360-app .pol360-doubt-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}
.pol360-app .pol360-doubt-form textarea{width:100%;min-height:54px;padding:10px 12px;border:1px solid var(--a-border);border-radius:10px;background:var(--a-panel);color:var(--a-text);font:inherit;font-size:14px!important;resize:vertical}
.pol360-app .pol360-doubt-form .pol360-action{margin:0;min-height:44px}
.pol360-app .pol360-doubt-wait{margin:0;font-size:13px!important;color:var(--a-muted)}
.pol360-app .pol360-doubt-empty{margin:0;color:var(--a-muted)}
.pol360-app .pol360-doubts-page{display:grid;gap:16px}
.pol360-app .pol360-doubts-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px;border-top:5px solid #ffb347}
.pol360-app .pol360-doubts-hero h2{margin:4px 0 8px;font-size:clamp(22px,2.4vw,30px)}
.pol360-app .pol360-doubts-hero p{margin:0;color:var(--a-muted);font-size:15px!important;line-height:1.55}
.pol360-app .pol360-doubts-stats{display:grid;grid-template-columns:repeat(3,minmax(96px,1fr));gap:8px}
.pol360-app .pol360-doubts-stats>div{display:grid;gap:2px;padding:12px 10px;border-radius:12px;background:var(--a-bg);text-align:center}
.pol360-app .pol360-doubts-stats b{font-size:24px!important;line-height:1;color:var(--a-blue)}
.pol360-app .pol360-doubts-stats>div.is-pending b{color:#c8402f}
.pol360-app .pol360-doubts-stats small{font-size:11px!important;color:var(--a-muted)}
.pol360-app .pol360-doubts-list{display:grid;gap:12px}
.pol360-app .pol360-doubts-list>.pol360-panel-heading .pol360-outline-action{margin:0}
.pol360-app .pol360-doubt-empty-block{display:grid;gap:4px;padding:26px 18px;border:1px dashed var(--a-border);border-radius:12px;text-align:center}
.pol360-app .pol360-doubt-empty-block small{font-size:13px!important;color:var(--a-muted)}
.pol360-app .pol360-nav-alert{position:absolute;top:-6px;right:-8px;min-width:18px;padding:1px 5px;border-radius:99px;background:#e4553f;color:#fff;font-size:10px!important;font-style:normal;font-weight:900;line-height:16px;text-align:center;box-shadow:0 0 0 2px #142a82}
.pol360-app .pol360-sidebar nav a .pol360-nav-icon{position:relative;overflow:visible}
.pol360-app .pol360-message-bell a.is-doubt{border-left:3px solid #e4553f}
@media(max-width:720px){.pol360-app .pol360-doubts-hero{grid-template-columns:1fr}.pol360-app .pol360-doubt-form{grid-template-columns:1fr}.pol360-app .pol360-modal{padding:8px;align-items:end}.pol360-app .pol360-modal-card{max-height:92vh;border-radius:18px}.pol360-app .pol360-doubts-button{margin:6px 0 0;order:9}}

/* ---------- 34. Liga: quinta división «Leyenda» y divisiones navegables ---------- */
.pol360-app .pol360-league-hero.is-legend{background:radial-gradient(circle at 85% 10%,rgba(255,214,111,.45),transparent 32%),linear-gradient(125deg,#4b1fa8,#1a0b3d 70%)}
.pol360-app .pol360-league-hero.is-legend .pol360-league-hero-emblem{background:linear-gradient(145deg,#ffe27a,#f0a500 45%,#a066ff);color:#2a1a00}
.pol360-app .pol360-league-panel.is-legend{border-top-color:#a066ff}
.pol360-badge-hero.is-legend,.pol360-badge-emblem.is-legend,.pol360-badge-chip.is-legend,.pol360-league-emblem.is-legend,.pol360-rank-division.is-legend{background:linear-gradient(145deg,#ffe27a,#f0a500 45%,#a066ff);color:#2a1a00}
.pol360-app .pol360-streak-stats>div.is-legend b{color:#7b3fe4}
.pol360-app .pol360-league-divisions a{position:relative;cursor:pointer}
.pol360-app .pol360-league-divisions a.is-mine:not(.is-current){border-color:rgba(143,244,175,.8);color:#fff}
.pol360-app .pol360-league-divisions a em{margin-left:4px;padding:1px 6px;border-radius:99px;background:rgba(7,22,47,.35);font-size:10px!important;font-style:normal;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.pol360-app .pol360-league-divisions a.is-current em{background:#07162f;color:#8ff4af}
.pol360-app .pol360-league-visiting{display:block;margin-top:4px;font-size:13px!important;font-weight:600;color:#8ff4af}
.pol360-app .pol360-league-back{margin:0;min-height:40px;padding:8px 14px;font-size:13px!important}

/* ---------- 35. Emblemas con color y repetición de la celebración ---------- */
.pol360-badge-emblem.is-bronze{background:linear-gradient(145deg,#e0a672,#8a4b1f);color:#fff}
.pol360-badge-emblem.is-silver{background:linear-gradient(145deg,#f3f4f7,#9aa4b5);color:#22304a}
.pol360-app .pol360-badge-card.is-earned{cursor:pointer;border-color:color-mix(in srgb,var(--a-green) 55%,var(--a-border));background:linear-gradient(180deg,color-mix(in srgb,var(--a-green) 10%,var(--a-panel)),var(--a-panel) 60%)}
.pol360-app .pol360-badge-card.is-earned:hover,.pol360-app .pol360-badge-card.is-earned:focus-visible{transform:translateY(-4px);box-shadow:0 16px 34px rgba(13,40,85,.16);outline:none}
.pol360-app .pol360-badge-card.is-earned .pol360-badge-emblem{animation:pol360BadgePop .9s cubic-bezier(.2,.9,.3,1.3) both;box-shadow:0 12px 26px rgba(13,40,85,.22),0 0 0 4px color-mix(in srgb,var(--a-green) 35%,transparent)}
.pol360-app .pol360-badge-card.is-earned b{color:var(--a-text)}
.pol360-app .pol360-badge-card.is-earned time{padding:3px 10px;border-radius:99px;background:var(--a-green);color:#07162f;font-size:11px!important;font-weight:800}
.pol360-app .pol360-badge-card.is-earned::after{content:"Ver celebración";font-size:11px!important;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--a-blue);opacity:0;transition:opacity .15s ease}
.pol360-app .pol360-badge-card.is-earned:hover::after{opacity:1}
/* Tarjetas del inicio: botón fijado abajo para alinear todas las tarjetas */
.pol360-app .pol360-student-dashboard>.pol360-tasks-panel,.pol360-app .pol360-student-dashboard>.pol360-league-panel,.pol360-app .pol360-student-dashboard>.pol360-xp-panel,.pol360-app .pol360-student-dashboard>.pol360-objectives{display:flex;flex-direction:column;gap:12px}
.pol360-app .pol360-student-dashboard>.pol360-panel>.pol360-outline-action:last-child,.pol360-app .pol360-student-dashboard>.pol360-panel>.pol360-action:last-child{margin-top:auto}
.pol360-app .pol360-student-dashboard>.pol360-tasks-panel>*,.pol360-app .pol360-student-dashboard>.pol360-league-panel>*,.pol360-app .pol360-student-dashboard>.pol360-xp-panel>*{flex:0 0 auto}

/* ---------- 36. Tests con la estética QuizPoL: A verde, B azul, C rojo, D amarillo ---------- */
.pol360-app .pol360-question label:nth-of-type(1){--q:#77b03a;--q-dark:#5d8f2b}
.pol360-app .pol360-question label:nth-of-type(2){--q:#3f8ed0;--q-dark:#2b6fa8}
.pol360-app .pol360-question label:nth-of-type(3){--q:#d9302c;--q-dark:#b12420}
.pol360-app .pol360-question label:nth-of-type(4){--q:#f0b13d;--q-dark:#c98d1c}
.pol360-app .pol360-question label:nth-of-type(5){--q:#a066ff;--q-dark:#7b3fe4}
.pol360-app .pol360-question label span{padding-left:12px;border-radius:12px}
.pol360-app .pol360-question label b{width:44px;height:44px;flex:0 0 44px;margin-right:14px;border-radius:9px;color:#fff;background:var(--q,var(--a-blue));font-size:20px!important;font-weight:900;box-shadow:inset 0 -3px 0 rgba(0,0,0,.14),0 4px 10px color-mix(in srgb,var(--q,#000) 30%,transparent)}
.pol360-app .pol360-question label:hover span{border-color:var(--q,var(--a-blue))}
.pol360-app .pol360-question input:checked+span{border-color:var(--q,var(--a-blue));color:var(--q-dark,var(--a-blue));background:color-mix(in srgb,var(--q,var(--a-blue)) 12%,var(--a-panel));box-shadow:0 0 0 4px color-mix(in srgb,var(--q,var(--a-blue)) 18%,transparent),0 12px 26px color-mix(in srgb,var(--q,var(--a-blue)) 22%,transparent)}
.pol360-app .pol360-question input:checked+span::after{border-color:var(--q,var(--a-blue));background:var(--q,var(--a-blue));box-shadow:0 0 0 5px color-mix(in srgb,var(--q,var(--a-blue)) 14%,transparent)}
.pol360-app .pol360-question input:checked+span b{background:var(--q-dark,var(--a-blue))}
.pol360-app .pol360-question input:focus-visible+span{outline-color:color-mix(in srgb,var(--q,var(--a-blue)) 40%,transparent)}
.pol360-app .pol360-question legend{font-size:21px!important;font-weight:800;line-height:1.35}
.pol360-app .pol360-quiz .pol360-question label.is-correct span b{background:#159447}
.pol360-app .pol360-quiz .pol360-question label.is-wrong span b{background:#d43147}
.pol360-app.pol360-dark .pol360-question input:checked+span{color:#fff}
@media(max-width:720px){.pol360-app .pol360-question label b{width:38px;height:38px;flex-basis:38px;margin-right:10px;font-size:17px!important}}
@media(max-width:720px){.pol360-app .pol360-student-progress-card>summary{flex-wrap:wrap}}

/* ---------- 37. Configurar suscripciones: reglas de cobro y control individual ---------- */
.pol360-app .pol360-billing-config{display:grid;gap:14px;border-top:5px solid var(--a-blue)}
.pol360-app .pol360-billing-config .pol360-panel-heading p{margin:6px 0 0;color:var(--a-muted);font-size:14px!important;line-height:1.5}
.pol360-app .pol360-billing-config-form{display:grid;gap:14px}
.pol360-app .pol360-billing-config-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.pol360-app .pol360-billing-config-grid label{display:grid;gap:5px;padding:12px;border:1px solid var(--a-border);border-radius:12px;background:var(--a-bg)}
.pol360-app .pol360-billing-config-grid label>span{font-size:13px!important;font-weight:800}
.pol360-app .pol360-billing-config-grid input{width:100%;min-height:42px;padding:8px 12px;border:1px solid var(--a-border);border-radius:8px;background:var(--a-panel);color:var(--a-text);font:inherit;font-size:16px!important;font-weight:800}
.pol360-app .pol360-billing-config-grid small{font-size:12px!important;line-height:1.4;color:var(--a-muted)}
.pol360-app .pol360-billing-config-toggles{display:grid;gap:8px}
.pol360-app .pol360-check{display:flex;align-items:center;gap:10px;font-size:14px!important;font-weight:600;cursor:pointer}
.pol360-app .pol360-check input{width:18px;height:18px;accent-color:var(--a-blue)}
.pol360-app .pol360-billing-config .pol360-form-actions{display:flex;flex-wrap:wrap;gap:10px}
.pol360-app .pol360-billing-config .pol360-form-actions .pol360-action,.pol360-app .pol360-billing-config .pol360-form-actions .pol360-outline-action{margin:0}
.pol360-app .pol360-billing-students{display:grid;gap:12px}
.pol360-app .pol360-billing-students .pol360-panel-heading p{margin:6px 0 0;color:var(--a-muted);font-size:14px!important}
.pol360-app .pol360-billing-student-list{display:grid;gap:10px}
.pol360-app .pol360-billing-student{display:grid;gap:12px;padding:14px 16px;border:1px solid var(--a-border);border-left:4px solid var(--a-blue);border-radius:14px;background:var(--a-bg)}
.pol360-app .pol360-billing-student.is-overdue{border-left-color:#e4553f;background:color-mix(in srgb,#e4553f 6%,var(--a-bg))}
.pol360-app .pol360-billing-student.is-cancelled{opacity:.7;border-left-color:var(--a-border)}
.pol360-app .pol360-billing-student>header{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px}
.pol360-app .pol360-billing-student-id{flex:1 1 220px;min-width:0;display:grid}
.pol360-app .pol360-billing-student-id b{font-size:15px!important}
.pol360-app .pol360-billing-student-id small{font-size:12px!important;color:var(--a-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol360-app .pol360-billing-student>header>div:not(.pol360-billing-student-id){display:grid;gap:1px}
.pol360-app .pol360-billing-student>header small{font-size:11px!important;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--a-muted)}
.pol360-app .pol360-billing-student>header b{font-size:15px!important}
.pol360-app .pol360-billing-student-overdue b{color:#c8402f}
.pol360-app .pol360-billing-student-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.pol360-app .pol360-billing-student-actions form{display:flex;align-items:flex-end;gap:8px;padding:10px;border:1px solid var(--a-border);border-radius:12px;background:var(--a-panel)}
.pol360-app .pol360-billing-student-actions label{flex:1 1 auto;display:grid;gap:4px;min-width:0}
.pol360-app .pol360-billing-student-actions label>span{font-size:11px!important;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--a-muted)}
.pol360-app .pol360-billing-student-actions input{width:100%;min-height:40px;padding:6px 10px;border:1px solid var(--a-border);border-radius:8px;background:var(--a-bg);color:var(--a-text);font:inherit;font-size:14px!important}
.pol360-app .pol360-billing-student-actions .pol360-action,.pol360-app .pol360-billing-student-actions .pol360-outline-action{margin:0;min-height:40px;padding:8px 14px;font-size:13px!important;white-space:nowrap}
.pol360-app .pol360-billing-student-actions form:last-child{justify-content:center}
.pol360-app .pol360-billing-student-actions form:last-child .pol360-action{flex:1 1 auto}
.pol360-app .pol360-action.is-urgent{background:linear-gradient(120deg,#ff8a75,#e4553f);color:#fff;animation:pol360DoubtPulse 1.6s ease-out infinite}
.pol360-app .pol360-action:disabled{opacity:.5;cursor:default;animation:none}
.pol360-app .pol360-billing-retry-log summary{cursor:pointer;font-size:13px!important;font-weight:700;color:var(--a-blue)}
.pol360-app .pol360-billing-retry-log ul{margin:6px 0 0;padding-left:18px;font-size:13px!important;color:var(--a-muted)}
@media(max-width:980px){.pol360-app .pol360-billing-config-grid{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.pol360-app .pol360-billing-config-grid{grid-template-columns:1fr}.pol360-app .pol360-billing-student-actions form{flex-direction:column;align-items:stretch}}

/* ---------- 38. Vídeo protegido: reproductor cargado bajo demanda, marca de agua dinámica ---------- */
.pol360-app .pol360-video-protected{-webkit-user-select:none;user-select:none}
.pol360-app .pol360-video-loading{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:6px;text-align:center;color:#fff;padding:20px}
.pol360-app .pol360-video-loading span{display:grid;width:64px;height:64px;place-items:center;border-radius:50%;background:rgba(255,255,255,.12);font-size:26px}
.pol360-app .pol360-video-loading b{font-size:16px!important}
.pol360-app .pol360-video-loading small{font-size:12px!important;color:rgba(255,255,255,.7)}
.pol360-app .pol360-video-loading.is-error{background:rgba(7,22,47,.92)}
.pol360-app .pol360-video-watermark{position:absolute;z-index:3;top:12%;left:8%;padding:4px 10px;border-radius:6px;background:rgba(0,0,0,.28);color:rgba(255,255,255,.75);font-size:12px;font-weight:700;letter-spacing:.02em;pointer-events:none;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.6);transition:top 1.2s ease,left 1.2s ease}
.pol360-app .pol360-video-watermark:empty{display:none}
.pol360-app .pol360-finish-video:disabled{opacity:.55;cursor:default}
.pol360-app .pol360-resource-completion button:disabled{opacity:.55;cursor:default}
.pol360-app .pol360-reading-hint{margin:6px 0 0;font-size:13px!important;color:var(--a-muted)}

/* ---------- 39. Tour guiado del aula ---------- */
.pol360-tour-help{position:fixed;right:18px;bottom:18px;z-index:2147483500;width:40px;height:40px;border:0;border-radius:50%;background:linear-gradient(145deg,#2b83ff,#0d2855);color:#fff;font:900 20px/1 Montserrat,Arial,sans-serif;cursor:pointer;box-shadow:0 10px 24px rgba(13,40,85,.3);opacity:.85;transition:transform .15s ease,opacity .15s ease}
.pol360-tour-help:hover{opacity:1;transform:translateY(-2px)}
@media(max-width:980px){.pol360-tour-help{right:12px;bottom:78px;width:36px;height:36px;font-size:18px}}
body.pol360-tour-open{overflow:hidden}
.pol360-tour-overlay{position:fixed;inset:0;z-index:2147483550;background:rgba(4,17,45,.55)}
.pol360-tour-focus{position:fixed;z-index:2147483560;border-radius:16px;box-shadow:0 0 0 4px rgba(99,215,97,.9),0 0 0 9999px rgba(4,17,45,.55);pointer-events:none;transition:all .35s cubic-bezier(.2,.8,.2,1)}
.pol360-tour-overlay+.pol360-tour-focus~.pol360-tour-card{z-index:2147483570}
.pol360-tour-card{position:fixed;z-index:2147483570;width:min(360px,calc(100vw - 28px));padding:18px 18px 16px;border-radius:18px;background:var(--a-panel,#fff);color:var(--a-text,#0d2855);box-shadow:0 30px 70px rgba(0,0,0,.45);transition:left .35s cubic-bezier(.2,.8,.2,1),top .35s cubic-bezier(.2,.8,.2,1);animation:pol360NewsItem .4s ease both}
.pol360-tour-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.pol360-tour-kicker{font-size:11px!important;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#128a4a}
.pol360-tour-close{width:30px;height:30px;border:0;border-radius:8px;background:var(--a-bg,#f3f7ff);color:var(--a-muted,#60708b);font-size:20px;line-height:1;cursor:pointer}
.pol360-tour-card h3{margin:0 0 6px;font-size:19px!important;line-height:1.2}
.pol360-tour-card p{margin:0;font-size:14px!important;line-height:1.55;color:var(--a-muted,#60708b)}
.pol360-tour-dots{display:flex;gap:5px;margin:12px 0}
.pol360-tour-dots i{width:7px;height:7px;border-radius:50%;background:var(--a-border,#dfe3ee)}
.pol360-tour-dots i.is-on{background:#63d761;transform:scale(1.3)}
.pol360-tour-actions{display:flex;align-items:center;gap:8px}
.pol360-tour-actions span{flex:1 1 auto}
.pol360-tour-skip{border:0;background:transparent;color:var(--a-muted,#60708b);font:inherit;font-size:13px!important;text-decoration:underline;cursor:pointer;padding:0}
.pol360-tour-prev{border:1px solid var(--a-border,#dfe3ee);border-radius:10px;background:transparent;color:var(--a-text,#0d2855);font:inherit;font-size:13px!important;font-weight:700;padding:9px 12px;cursor:pointer}
.pol360-tour-next{border:0;border-radius:10px;background:linear-gradient(120deg,#8ff4af,#63d761);color:#07162f;font:inherit;font-size:13px!important;font-weight:800;padding:10px 14px;cursor:pointer;box-shadow:0 8px 18px rgba(99,215,97,.35)}
.pol360-app.pol360-dark .pol360-tour-card{background:#141c2f;color:#fff}


/* ---------- 40. Menú inferior móvil sin scroll: botón «Más» y panel emergente ---------- */
.pol360-app .pol360-nav-more{display:none}
.pol360-app .pol360-nav-sheet{display:none}
@media(max-width:720px){
	.pol360-app .pol360-sidebar nav,.pol360-app.pol360-sidebar-collapsed .pol360-sidebar nav{overflow:hidden!important;scroll-snap-type:none;justify-content:stretch}
	.pol360-app .pol360-sidebar nav a,.pol360-app.pol360-sidebar-collapsed .pol360-sidebar nav a{flex:1 1 0!important;min-width:0!important}
	.pol360-app .pol360-nav-more{display:flex;flex:1 1 0;min-width:0;height:58px;min-height:58px;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px 4px;border:0;border-radius:14px;color:#fff;background:transparent;font:inherit;font-size:10px!important;font-weight:800;line-height:1.05;text-shadow:0 1px 2px rgba(0,0,0,.22);cursor:pointer}
	.pol360-app .pol360-nav-more[hidden]{display:none}
	.pol360-app .pol360-nav-more.is-open{background:rgba(255,255,255,.15)}
	.pol360-app .pol360-nav-more .pol360-nav-icon{position:relative;display:grid;width:23px;height:23px;flex:0 0 23px;place-items:center;border:0;border-radius:0;background:transparent;box-shadow:none}
	.pol360-app .pol360-nav-more:focus{outline:none}
	.pol360-app .pol360-nav-more:focus-visible{outline:2px solid #63d761;outline-offset:-2px}
	.pol360-app .pol360-nav-more .pol360-nav-icon i{font-size:20px}
	.pol360-app .pol360-nav-more .pol360-nav-label{display:block;width:100%;overflow:hidden;font-size:9px!important;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}
	.pol360-app .pol360-nav-sheet{position:fixed;z-index:99989;right:10px;bottom:calc(90px + env(safe-area-inset-bottom));left:10px;display:block;padding:10px;border:1px solid rgba(255,255,255,.2);border-radius:20px;background:linear-gradient(120deg,#10246f,#07162f);box-shadow:0 15px 42px rgba(3,14,42,.4);animation:pol360-sheet-in .18s ease-out}
	.pol360-app .pol360-nav-sheet[hidden]{display:none}
	.pol360-app .pol360-nav-sheet-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
	.pol360-app .pol360-nav-sheet a{display:flex;min-width:0;height:62px;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:6px 4px;border-radius:14px;color:#fff;background:transparent;font-size:10px!important;font-weight:800;line-height:1.05;text-align:center;text-decoration:none;text-shadow:0 1px 2px rgba(0,0,0,.22)}
	.pol360-app .pol360-nav-sheet a.active{background:linear-gradient(105deg,#147d4c,#1aa967)}
	.pol360-app .pol360-nav-sheet a .pol360-nav-icon{position:relative;display:grid;width:25px;height:25px;flex:0 0 25px;place-items:center;border:0;border-radius:0;background:transparent;box-shadow:none}
	.pol360-app .pol360-nav-sheet a:hover{background:rgba(255,255,255,.1)}
	.pol360-app .pol360-nav-sheet a .pol360-nav-icon i{font-size:20px}
	.pol360-app .pol360-nav-sheet a .pol360-nav-label{display:block;width:100%;overflow:hidden;font-size:10px!important;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}
	.pol360-app .pol360-nav-sheet a .pol360-nav-label[data-short]{font-size:0!important;line-height:0}
	.pol360-app .pol360-nav-sheet a .pol360-nav-label[data-short]::after{content:attr(data-short);display:block;font-size:10px;line-height:1.1;white-space:normal}
	.pol360-app .pol360-nav-alert{position:absolute;top:-6px;right:-7px;display:grid;min-width:16px;height:16px;place-items:center;padding:0 4px;border-radius:99px;color:#fff;background:#e53935;font-size:9px!important;font-style:normal;font-weight:900}
	.pol360-app .pol360-nav-alert[hidden]{display:none}
}
@media(max-width:360px){.pol360-app .pol360-nav-sheet-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@keyframes pol360-sheet-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- 41. Descargas permitidas y recursos bloqueados ---------- */
.pol360-app .pol360-video-download{display:inline-flex;align-items:center;gap:6px;margin:10px 0 0;padding:8px 14px;border:1px solid color-mix(in srgb,var(--a-blue) 35%,var(--a-border));border-radius:10px;color:var(--a-blue);background:color-mix(in srgb,var(--a-blue) 7%,var(--a-panel));font-size:13px!important;font-weight:800;text-decoration:none}
.pol360-app .pol360-video-download:hover{background:color-mix(in srgb,var(--a-blue) 14%,var(--a-panel))}
.pol360-pdf-download{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border:1px solid #9ec5ff;border-radius:8px;color:#0a3f9e;background:#eaf2ff;font-size:12px!important;font-weight:800;text-decoration:none;white-space:nowrap}
.pol360-app .pol360-download-card.is-locked{opacity:.65;cursor:not-allowed}
.pol360-app .pol360-download-locked{margin-bottom:10px}

/* ---------- 42. Panel docente: inicio con alertas y pantalla de actividad ---------- */
.pol360-app .pol360-dash-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.pol360-app .pol360-dash-kpis article{position:relative;overflow:hidden}
.pol360-app .pol360-dash-kpis article.is-accent{background:linear-gradient(135deg,#0b2b61,#0a66ff);color:#fff}
.pol360-app .pol360-dash-kpis article.is-accent span,.pol360-app .pol360-dash-kpis article.is-accent small{color:rgba(255,255,255,.85)}
.pol360-app .pol360-dash-kpis article.is-danger{border-color:#f3b4b4;background:#fff4f4}
.pol360-app .pol360-dash-kpis article.is-danger strong{color:#c62828}
.pol360-app .pol360-dash-kpis article.is-good{border-color:#b9ecc6;background:#f1fbf4}
.pol360-app .pol360-dash-kpis article.is-good strong{color:#157a3a}
.pol360-app .pol360-dash-notice{display:flex;gap:12px;align-items:flex-start;margin-top:14px;border-left:5px solid var(--a-blue)}
.pol360-app .pol360-dash-notice p{margin:4px 0 0;color:var(--a-muted);font-size:13px!important}
.pol360-app .pol360-dash-alerts{margin-top:14px}
.pol360-app .pol360-dash-alert-count{padding:6px 12px;border-radius:99px;background:var(--a-bg);font-size:12px!important;font-weight:800}
.pol360-app .pol360-dash-alert-count.is-live{color:#fff;background:#e53935}
.pol360-app .pol360-dash-ok{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:12px;background:#f1fbf4;color:#0f5c2b}
.pol360-app .pol360-dash-ok p{margin:4px 0 0;font-size:13px!important}
.pol360-app .pol360-dash-alert{margin-top:12px;padding:14px 16px;border:1px solid var(--a-border);border-left-width:6px;border-radius:14px;background:var(--a-panel)}
.pol360-app .pol360-dash-alert.is-bad{border-left-color:#e53935;background:color-mix(in srgb,#e53935 5%,var(--a-panel))}
.pol360-app .pol360-dash-alert.is-warn{border-left-color:#f9a825;background:color-mix(in srgb,#f9a825 6%,var(--a-panel))}
.pol360-app .pol360-dash-alert.is-info{border-left-color:var(--a-blue);background:color-mix(in srgb,var(--a-blue) 5%,var(--a-panel))}
.pol360-app .pol360-dash-alert-head{display:flex;gap:12px;align-items:flex-start}
.pol360-app .pol360-dash-alert-head>div{flex:1 1 auto;min-width:0}
.pol360-app .pol360-dash-alert-head h3{margin:0;font-size:17px!important}
.pol360-app .pol360-dash-alert-head p{margin:4px 0 0;color:var(--a-muted);font-size:13px!important;line-height:1.5}
.pol360-app .pol360-dash-alert-icon{display:grid;width:38px;height:38px;flex:0 0 38px;place-items:center;border-radius:12px;background:var(--a-bg);font-size:19px}
.pol360-app .pol360-dash-alert-cta{flex:0 0 auto;align-self:center;color:var(--a-blue);font-size:13px!important;font-weight:800;text-decoration:none;white-space:nowrap}
.pol360-app .pol360-dash-alert-users{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px;margin:12px 0 0;padding:0;list-style:none}
.pol360-app .pol360-dash-alert-users li{display:flex;gap:10px;align-items:center;min-width:0;padding:8px 10px;border:1px solid var(--a-border);border-radius:12px;background:var(--a-panel)}
.pol360-app .pol360-dash-alert-users li>div{flex:1 1 auto;min-width:0}
.pol360-app .pol360-dash-alert-users li b{display:block;overflow:hidden;font-size:14px!important;text-overflow:ellipsis;white-space:nowrap}
.pol360-app .pol360-dash-alert-users li small{display:block;color:var(--a-muted);font-size:12px!important}
.pol360-app .pol360-dash-alert-users li.pol360-dash-more{justify-content:center;color:var(--a-muted);font-size:12px!important;border-style:dashed}
.pol360-app .pol360-dash-avatar{display:grid;width:34px;height:34px;flex:0 0 34px;place-items:center;border-radius:50%;color:#fff;background:linear-gradient(145deg,var(--a-blue),#12317d);font-size:14px!important;font-weight:900}
.pol360-app .pol360-dash-avatar.is-lg{width:52px;height:52px;flex-basis:52px;font-size:22px!important}
.pol360-app .pol360-dash-actions{display:inline-flex;flex-wrap:wrap;gap:4px}
.pol360-app .pol360-dash-actions a{padding:4px 8px;border:1px solid var(--a-border);border-radius:8px;color:var(--a-blue);font-size:11px!important;font-weight:800;text-decoration:none;white-space:nowrap}
.pol360-app .pol360-dash-actions a:hover{background:color-mix(in srgb,var(--a-blue) 8%,var(--a-panel))}
.pol360-app .pol360-dash-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.9fr);gap:12px;margin-top:14px}
.pol360-app .pol360-dash-bars{display:flex;align-items:flex-end;gap:3px;height:170px;margin-top:12px}
.pol360-app .pol360-dash-bars>div{display:flex;flex:1 1 0;min-width:0;height:100%;flex-direction:column;justify-content:flex-end;gap:4px;text-align:center}
.pol360-app .pol360-dash-bars i{display:flex;flex:1 1 auto;align-items:flex-end;justify-content:center}
.pol360-app .pol360-dash-bars i>b{display:block;width:100%;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#63d761,#0a66ff);transition:height .6s ease}
.pol360-app .pol360-dash-bars span{color:var(--a-muted);font-size:9px!important}
.pol360-app .pol360-dash-hint{margin:10px 0 0;color:var(--a-muted);font-size:12px!important}
.pol360-app .pol360-dash-list{margin:10px 0 0;padding:0 0 0 18px;display:grid;gap:6px}
.pol360-app .pol360-dash-list li a{display:block;text-decoration:none;color:var(--a-text)}
.pol360-app .pol360-dash-list li b{display:block;font-size:13px!important}
.pol360-app .pol360-dash-list li small{color:var(--a-muted);font-size:12px!important}
.pol360-app .pol360-panel-heading.is-sub{margin-top:16px}
.pol360-app .pol360-dash-table{margin-top:14px}
.pol360-app .pol360-dash-legend{display:flex;flex-wrap:wrap;gap:6px}
.pol360-app .pol360-dash-legend span{padding:3px 9px;border-radius:99px;font-size:11px!important;font-weight:800}
.pol360-app .pol360-dash-legend .is-good,.pol360-app .pol360-dash-dot.is-good{background:#c9f3d3;color:#0f5c2b}
.pol360-app .pol360-dash-legend .is-warn,.pol360-app .pol360-dash-dot.is-warn{background:#ffe9b3;color:#7a5200}
.pol360-app .pol360-dash-legend .is-bad,.pol360-app .pol360-dash-dot.is-bad{background:#ffd0d0;color:#8e1c1c}
.pol360-app .pol360-dash-dot{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%;vertical-align:middle}
.pol360-app .pol360-dash-dot.is-muted{background:#d9dee7}
.pol360-app .pol360-dash-students td b{display:block;font-size:13px!important}
.pol360-app .pol360-dash-students td small{display:block;color:var(--a-muted);font-size:11px!important}
.pol360-app .pol360-dash-students tr.is-bad td:first-child{box-shadow:inset 4px 0 0 #e53935}
.pol360-app .pol360-dash-students tr.is-warn td:first-child{box-shadow:inset 4px 0 0 #f9a825}
.pol360-app .pol360-dash-students tr.is-muted{opacity:.7}
.pol360-app .pol360-dash-progress{display:block;width:90px;height:8px;overflow:hidden;border-radius:99px;background:var(--a-bg)}
.pol360-app .pol360-dash-progress i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#63d761,#0a66ff)}
.pol360-app .pol360-status-pill.is-warn{color:#7a5200;background:#ffe9b3}
.pol360-app .pol360-status-pill.is-bad{color:#8e1c1c;background:#ffd0d0}
.pol360-app .pol360-status-pill.is-muted{color:#556;background:#e9edf3}
.pol360-app th.is-sortable{cursor:pointer;user-select:none}
.pol360-app th.is-sortable::after{content:' ↕';opacity:.4}
.pol360-app th.is-sortable.is-asc::after{content:' ↑';opacity:1}
.pol360-app th.is-sortable.is-desc::after{content:' ↓';opacity:1}
/* Actividad */
.pol360-app .pol360-act-presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.pol360-app .pol360-act-presets button{padding:7px 12px;border:1px solid var(--a-border);border-radius:99px;background:var(--a-panel);color:var(--a-text);font:inherit;font-size:12px!important;font-weight:800;cursor:pointer}
.pol360-app .pol360-act-presets button.is-active{color:#fff;background:var(--a-blue);border-color:var(--a-blue)}
.pol360-app .pol360-act-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;align-items:end;margin-top:12px}
.pol360-app .pol360-act-fields label{display:grid;gap:4px}
.pol360-app .pol360-act-fields label>span{font-size:11px!important;font-weight:800;color:var(--a-muted);letter-spacing:.06em;text-transform:uppercase}
.pol360-app .pol360-act-fields input,.pol360-app .pol360-act-fields select{width:100%;min-height:40px;padding:8px 10px;border:1px solid var(--a-border);border-radius:10px;background:var(--a-panel);color:var(--a-text);font:inherit;font-size:13px!important}
.pol360-app .pol360-act-buttons{display:flex;gap:10px;align-items:center}
.pol360-app .pol360-act-buttons a{color:var(--a-muted);font-size:13px!important}
.pol360-app .pol360-act-summary{margin-top:14px}
.pol360-app .pol360-act-student{margin-top:14px}
.pol360-app .pol360-act-student-head{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.pol360-app .pol360-act-student-head>div{flex:1 1 auto;min-width:0}
.pol360-app .pol360-act-student-head h2{margin:0}
.pol360-app .pol360-act-student-head p{margin:4px 0 0;color:var(--a-muted);font-size:13px!important}
.pol360-app .pol360-act-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:12px;margin-top:14px}
.pol360-app .pol360-act-sessions td b,.pol360-app .pol360-act-events td b{display:block;font-size:13px!important}
.pol360-app .pol360-act-sessions td small,.pol360-app .pol360-act-events td small{display:block;color:var(--a-muted);font-size:11px!important}
.pol360-app .pol360-act-badge{display:inline-block;padding:3px 9px;border-radius:99px;background:var(--a-bg);font-size:11px!important;font-weight:800;white-space:nowrap}
.pol360-app .pol360-act-badge.is-video{background:#e3f0ff;color:#0a3f9e}
.pol360-app .pol360-act-badge.is-pdf{background:#fff1d6;color:#7a4b00}
.pol360-app .pol360-act-badge.is-quiz{background:#dcf8e4;color:#0f5c2b}
.pol360-app .pol360-act-badge.is-login{background:#ece8ff;color:#3d2a8a}
.pol360-app .pol360-act-badge.is-download{background:#ffe0e0;color:#8e1c1c}
.pol360-app .pol360-act-pager{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;font-size:13px!important}
.pol360-app .pol360-action.is-secondary{background:var(--a-panel);color:var(--a-blue);border:1px solid var(--a-border)}
@media(max-width:1250px){.pol360-app .pol360-dash-grid,.pol360-app .pol360-act-grid{grid-template-columns:1fr}}
@media(max-width:980px){.pol360-app .pol360-dash-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.pol360-app .pol360-dash-kpis{grid-template-columns:1fr 1fr}.pol360-app .pol360-dash-alert-head{flex-wrap:wrap}.pol360-app .pol360-dash-alert-users{grid-template-columns:1fr}.pol360-app .pol360-dash-bars{height:120px;gap:2px}.pol360-app .pol360-dash-bars span{display:none}.pol360-app .pol360-dash-bars>div:nth-child(5n+1) span{display:block}}

.pol360-app .pol360-nav-section-label{display:none!important}
