/* ======================================================================
   Portal público V4.1 — UX práctica, escritorio limpio + móvil por tarjetas
   Este archivo se carga DESPUÉS de app.css para aislar la vista pública.
   ====================================================================== */
:root{
  --ux-blue:#1f63d9;
  --ux-blue-700:#174fac;
  --ux-blue-50:#f2f7ff;
  --ux-ink:#182235;
  --ux-text:#445066;
  --ux-muted:#7a8698;
  --ux-line:#e3e8ef;
  --ux-bg:#f5f7fb;
  --ux-white:#fff;
  --ux-green:#148453;
  --ux-green-bg:#eaf8f1;
  --ux-amber:#966100;
  --ux-amber-bg:#fff5dd;
  --ux-red:#b42318;
  --ux-red-bg:#fff0ee;
}

.public-v41{margin:0;background:var(--ux-bg);color:var(--ux-ink);min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased}
.public-v41 *{box-sizing:border-box}
.public-v41 a{text-decoration:none;color:inherit}
.public-v41 button,.public-v41 input,.public-v41 select,.public-v41 textarea{font:inherit}
.public-v41 button{cursor:pointer}
.public-v41 [hidden]{display:none!important}

.ux-container{width:min(1320px,calc(100% - 40px));margin-inline:auto}
.ux-topbar{background:#fff;border-bottom:1px solid var(--ux-line);position:sticky;top:0;z-index:40}
.ux-topbar-inner{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.ux-brand{display:inline-flex;align-items:center;gap:11px;min-width:0}
.ux-brand-mark{width:39px;height:39px;border-radius:11px;background:linear-gradient(145deg,#1f63d9,#2f75e7);color:#fff;display:grid;place-items:center;font-weight:900;font-size:13px;box-shadow:0 6px 15px rgba(31,99,217,.18)}
.ux-brand-copy{display:block;min-width:0}
.ux-brand-copy small{display:block;color:#1e61cb;font-weight:850;font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:2px}
.ux-brand-copy strong{display:block;color:#172238;font-size:14px;line-height:1.2;white-space:nowrap}
.ux-online{display:inline-flex;align-items:center;gap:7px;border:1px solid #e0e6ee;background:#fafbfd;color:#5e6a7e;border-radius:999px;padding:6px 10px;font-size:10px;font-weight:750;white-space:nowrap}
.ux-online i{width:8px;height:8px;border-radius:50%;background:#21a366;box-shadow:0 0 0 3px rgba(33,163,102,.12);flex:0 0 auto}

.ux-main{padding:14px 0 18px}
.ux-workspace{background:#fff;border:1px solid #dfe5ed;border-radius:18px;box-shadow:0 8px 28px rgba(32,55,87,.055);overflow:hidden}

/* buscador: ocupa lo justo y deja los resultados inmediatamente debajo */
.ux-search-section{padding:18px 20px 0;background:#fff}
.ux-search-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:11px}
.ux-kicker{display:block;text-transform:uppercase;color:#1d63cf;letter-spacing:.1em;font-size:8.8px;font-weight:900;margin-bottom:4px}
.ux-search-title-row h1{margin:0;color:#162238;font-size:22px;line-height:1.12;letter-spacing:-.02em}
.ux-search-title-row p{margin:4px 0 0;color:#6d788a;font-size:11.5px;line-height:1.45}
.ux-total{display:flex;align-items:baseline;gap:5px;color:#7a8697;padding-bottom:2px;white-space:nowrap}
.ux-total b{font-size:17px;color:#1f3150}.ux-total span{font-size:10.5px;font-weight:700}

.ux-search{height:54px;border:1.5px solid #cbd5e3;border-radius:13px;background:#fff;display:flex;align-items:center;gap:10px;padding:0 12px;box-shadow:0 2px 8px rgba(27,49,82,.03);transition:border-color .15s,box-shadow .15s}
.ux-search:focus-within{border-color:var(--ux-blue);box-shadow:0 0 0 4px rgba(31,99,217,.09)}
.ux-search svg{width:21px;height:21px;color:#2364ce;flex:0 0 auto}
.ux-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:#172238;font-size:15px;font-weight:650;padding:0}
.ux-search input::placeholder{color:#98a4b4;font-weight:550}
.ux-clear{width:31px;height:31px;border:0;border-radius:9px;background:#edf2f8;color:#647186;font-size:20px;line-height:1;display:grid;place-items:center}
.ux-clear:hover{background:#e4eaf2;color:#23466f}

.ux-controls-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0 12px}
.ux-segments{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:nowrap}
.public-v41 .quick-action{appearance:none;border:1px solid #dce3ec;background:#f8fafc;color:#47566c;border-radius:9px;min-height:34px;padding:6px 9px;display:inline-flex;align-items:center;gap:7px;box-shadow:none;transition:.14s ease;min-width:0;width:auto;flex:0 0 auto;text-align:left}
.public-v41 .quick-action span{font-size:10.5px;font-weight:800;white-space:nowrap}
.public-v41 .quick-action small{font-size:9px;font-weight:850;color:#6e7a8d;background:#e9eef5;border-radius:999px;padding:2px 6px;line-height:1.3}
.public-v41 .quick-action:hover{border-color:#b8c9e4;background:#f3f7fd}
.public-v41 .quick-action.active{border-color:#8fb3ea;background:#edf4ff;color:#1553b7}
.public-v41 .quick-action.active small{background:#2767d4;color:#fff}
.ux-controls-right{display:flex;align-items:center;gap:8px;min-width:0;flex:0 0 auto}
.ux-live{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.ux-filter-toggle{height:34px;border:1px solid #d6deea;background:#fff;color:#40516b;border-radius:9px;padding:0 10px;display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:800;white-space:nowrap}
.ux-filter-toggle:hover,.ux-filter-toggle[aria-expanded="true"]{border-color:#a9bfe1;background:#f3f7fd;color:#174fae}
.ux-filter-toggle svg{width:16px;height:16px}

.ux-advanced{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:9px;align-items:end;margin:0 -20px;padding:12px 20px 14px;border-top:1px solid #edf0f4;background:#fafbfd}
.ux-advanced label{display:block;min-width:0}
.ux-advanced label>span{display:block;color:#56647a;font-size:9.5px;font-weight:800;margin-bottom:5px}
.ux-advanced select{width:100%;height:39px;border:1px solid #d6dee9;border-radius:9px;background:#fff;color:#37465b;padding:0 9px;font-size:10.8px;outline:none}
.ux-advanced select:focus{border-color:#8fb0df;box-shadow:0 0 0 3px rgba(31,99,217,.07)}
.ux-clear-filters{height:39px;border:1px solid #d7dee8;border-radius:9px;background:#fff;color:#526176;padding:0 12px;font-size:10.5px;font-weight:800;white-space:nowrap}
.ux-clear-filters:hover{background:#f1f4f8}

/* resultados pegados al buscador: sin una segunda tarjeta enorme */
.ux-results-bar{min-height:48px;padding:9px 14px 9px 20px;border-top:1px solid #e7ebf1;border-bottom:1px solid #e7ebf1;background:#fbfcfe;display:flex;align-items:center;justify-content:space-between;gap:12px}
.ux-results-copy{display:flex;align-items:baseline;gap:9px;min-width:0}
.ux-results-copy>strong{font-size:14px;color:#17243a}
.ux-results-copy>span{font-size:10px;color:#7a8697;white-space:nowrap}.ux-results-copy>span b{font-size:11px;color:#40516a}
.ux-export{min-height:34px;border:1px solid #bcd0ed;border-radius:9px;background:#fff;color:#1552ad;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:10.5px;font-weight:850;white-space:nowrap}
.ux-export:hover{background:#eff6ff;border-color:#8eb1e6}.ux-export svg{width:16px;height:16px}
.ux-export.is-empty{opacity:.5;pointer-events:none}

/* tabla de escritorio: sin sticky header para evitar solapamientos */
.ux-table-wrap{background:#fff;overflow-x:auto;overflow-y:visible}
.ux-table{width:100%;min-width:1040px;border-collapse:collapse;table-layout:fixed;margin:0}
.ux-table col.col-student{width:29%}.ux-table col.col-level{width:16%}.ux-table col.col-section{width:7%}.ux-table col.col-dni{width:11%}.ux-table col.col-status{width:13%}.ux-table col.col-action{width:24%}
.ux-table thead{display:table-header-group;position:static!important}
.ux-table thead th{position:static!important;top:auto!important;z-index:auto!important;background:#f6f8fb;color:#6b7688;text-align:left;text-transform:uppercase;letter-spacing:.055em;font-size:9px;font-weight:850;padding:9px 12px;border-bottom:1px solid #dfe5ed;box-shadow:none!important;white-space:nowrap}
.ux-table tbody tr{background:#fff;transition:background .12s}
.ux-table tbody tr:nth-child(even){background:#fcfdff}
.ux-table tbody tr:hover{background:#f6f9fe}
.ux-table tbody tr.student-row.needs-attention{background:#fff;box-shadow:inset 3px 0 0 #e5b34d}.ux-table tbody tr.student-row.needs-attention:nth-child(even){background:#fcfdff}.ux-table tbody tr.student-row.needs-attention:hover{background:#fffaf0}.ux-table tbody tr.first-search-match{background:#f6faff!important;box-shadow:inset 3px 0 0 #4b86df}
.ux-table td{padding:9px 12px;border-bottom:1px solid #edf0f4;vertical-align:middle;color:#3d4a5e;font-size:10.8px;overflow-wrap:anywhere}
.ux-table tbody tr:last-child td{border-bottom:0}

.ux-student{display:flex;align-items:center;gap:9px;min-width:0}
.ux-avatar{width:31px;height:31px;border-radius:9px;background:#edf4ff;color:#1f60c8;display:grid;place-items:center;font-weight:900;font-size:12px;flex:0 0 auto}
.ux-student strong{display:block;min-width:0;color:#172238;font-size:12.3px;line-height:1.28;font-weight:780}
.public-v41 .level-tag{display:inline-block;padding:3px 7px;border-radius:7px;font-size:8.8px;font-weight:850;background:#edf3ff;color:#2458ae}
.public-v41 .level-inicial{background:#ebf8f3;color:#13734d}.public-v41 .level-secundaria{background:#efeefe;color:#5f48b5}.public-v41 .level-sin{background:#f1f3f6;color:#667085}
.public-v41 .grade-text{font-size:10px;color:#6d7889;margin-top:3px}
.public-v41 .section-pill{display:inline-grid;place-items:center;min-width:27px;height:27px;padding:0 7px;border-radius:8px;background:#f0f3f7;color:#37465b;font-size:10.5px;font-weight:850}
.public-v41 .dni-cell small{display:block;color:#8b95a4;font-size:8.8px;margin-top:3px}
.public-v41 .badge{display:inline-flex;align-items:center;min-height:22px;padding:3px 7px;border-radius:7px;font-size:8.5px;font-weight:850;letter-spacing:.01em;white-space:nowrap}
.public-v41 .badge-success{background:var(--ux-green-bg);color:var(--ux-green)}.public-v41 .badge-warning{background:var(--ux-amber-bg);color:var(--ux-amber)}.public-v41 .badge-danger{background:var(--ux-red-bg);color:var(--ux-red)}.public-v41 .badge-neutral{background:#eef1f5;color:#5d697a}

.ux-actions{display:flex;align-items:stretch;gap:6px;min-width:0}
.ux-manage-actions{display:flex;align-items:stretch;gap:6px;min-width:0;flex:1}.ux-manage-actions:empty{display:none}
.ux-action{appearance:none;min-height:36px;border-radius:9px;border:1px solid #c8d7ea;background:#fff;color:#174f9e;padding:6px 8px;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0;flex:1;line-height:1.1;box-shadow:none;transition:.13s ease}
.ux-action span{font-size:14px;flex:0 0 auto}.ux-action b{font-size:9.5px;font-weight:850;white-space:normal;text-align:left}
.ux-action:hover{transform:translateY(-1px);box-shadow:0 3px 8px rgba(26,68,124,.08)}
.ux-action-certificate{background:#f1f7ff;border-color:#b9d2f0;color:#0e4f98}
.ux-action-enroll{background:#2161d5;border-color:#2161d5;color:#fff}.ux-action-enroll:hover{background:#1952ba}
.ux-action-cancel{background:#fff7f5;border-color:#efc8c2;color:#a63b31}.ux-action-cancel:hover{background:#ffebe8;border-color:#e8aaa2;color:#8e2d25}
.ux-action-dni{background:#fff8e9;border-color:#efce83;color:#855700}
.ux-state-action{min-height:36px;border-radius:9px;padding:6px 8px;display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:1;min-width:0;background:#f5f7fa;border:1px solid #e0e5ec;color:#647083}
.ux-state-action span{font-size:12px}.ux-state-action b{font-size:9.3px;white-space:normal}.request-sent.ux-state-action,.ux-actions .request-sent{background:#eef9f3!important;border-color:#caead8!important;color:#18784c!important;display:inline-flex!important;grid-template-columns:none!important}.ux-actions .request-sent small{display:none}.ux-no-action{color:#7a8594}
.ux-request-pending{display:flex;align-items:stretch;gap:6px;flex:1;min-width:0}.ux-request-pending>.ux-state-action,.ux-request-pending>.ux-action{flex:1;min-width:0}

.ux-empty{border:0!important;padding:34px 16px!important;background:#fff!important}
.ux-pagination{min-height:48px;border-top:1px solid #e8ecf2;background:#fafbfd;padding:8px 13px 8px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.ux-pagination>span{font-size:9.8px;color:#758195}.ux-pagination>div{display:flex;gap:6px}
.ux-page-btn{min-height:32px;border:1px solid #d6dee8;border-radius:8px;background:#fff;color:#526176;padding:0 10px;font-size:9.8px;font-weight:800}
.ux-page-btn:hover:not(:disabled){background:#f1f5fa;color:#1b4d96}.ux-page-btn:disabled{opacity:.42;cursor:not-allowed}
.ux-footer{padding:10px 3px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;color:#8a94a3;font-size:9.5px}.ux-footer a{color:#53647a;font-weight:750}.ux-footer a:hover{color:#1e58b2}

/* modal: mantener funciones, pero pulir su lectura en público */
.public-v41 .modal-card{border-radius:17px;box-shadow:0 24px 80px rgba(18,27,45,.25)}
.public-v41 .modal-card h2{font-size:22px;color:#172238}
.public-v41 .selected-student{border-radius:11px}
.public-v41 .modal-actions .btn{min-height:42px}

@media (max-width:1120px){
  .ux-container{width:calc(100% - 24px)}
  .ux-total{display:none}
  .ux-table{min-width:980px}
  .ux-advanced{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ux-clear-filters{grid-column:span 2}
}

/* Tablet y móvil: resultados como tarjetas, sin tabla aplastada ni scroll horizontal */
@media (max-width:860px){
  .ux-container{width:calc(100% - 16px)}
  .ux-topbar-inner{min-height:58px}
  .ux-online{font-size:0;padding:7px}.ux-online i{width:9px;height:9px}
  .ux-main{padding-top:9px}
  .ux-workspace{border-radius:14px}
  .ux-search-section{padding:14px 12px 0}
  .ux-search-title-row{display:block;margin-bottom:9px}.ux-search-title-row h1{font-size:19px}.ux-search-title-row p{font-size:10.5px}
  .ux-search{height:50px;border-radius:11px}.ux-search input{font-size:13px}.ux-search svg{width:19px;height:19px}
  .ux-controls-row{display:block;padding:9px 0 10px}
  .ux-segments{display:flex;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.ux-segments::-webkit-scrollbar{display:none}
  .public-v41 .quick-action{flex:0 0 auto;min-height:33px}
  .ux-controls-right{justify-content:flex-end;margin-top:8px}
  .ux-advanced{margin:0 -12px;padding:11px 12px 12px;grid-template-columns:repeat(2,minmax(0,1fr))}.ux-clear-filters{grid-column:span 2}
  .ux-results-bar{padding:9px 10px 9px 12px}.ux-results-copy>strong{font-size:13px}.ux-results-copy>span{font-size:9px}.ux-export{min-height:32px;font-size:9.5px}
  .ux-table-wrap{overflow:visible}.ux-table{min-width:0;table-layout:auto;border-collapse:separate}.ux-table colgroup,.ux-table thead{display:none!important}.ux-table,.ux-table tbody,.ux-table tr,.ux-table td{display:block;width:100%}
  .ux-table tbody{padding:5px 7px 8px}
  .ux-table tbody tr{margin:7px 0;padding:10px 11px;border:1px solid #e0e6ee;border-radius:13px;background:#fff!important;box-shadow:0 3px 12px rgba(29,52,84,.035)}
  .ux-table tbody tr.student-row.needs-attention{background:#fff!important;box-shadow:inset 3px 0 0 #e1ad43,0 3px 12px rgba(29,52,84,.035)}
  .ux-table td{border:0;padding:5px 0;display:grid;grid-template-columns:105px minmax(0,1fr);gap:8px;align-items:center;font-size:10.5px}
  .ux-table td:before{content:attr(data-label);color:#8a94a3;font-size:8px;text-transform:uppercase;letter-spacing:.055em;font-weight:850}
  .ux-table td[data-label="Estudiante"]{display:block;padding-bottom:8px;margin-bottom:2px;border-bottom:1px solid #eef1f5}.ux-table td[data-label="Estudiante"]:before{display:none}
  .ux-table td[data-label="Acciones"]{display:block;padding-top:8px}.ux-table td[data-label="Acciones"]:before{display:block;margin-bottom:6px}
  .ux-student strong{font-size:12.2px}.ux-avatar{width:31px;height:31px}
  .ux-actions,.ux-manage-actions,.ux-request-pending{display:grid;grid-template-columns:1fr;gap:6px}.ux-action,.ux-state-action{width:100%;min-height:42px;justify-content:flex-start;padding-inline:10px}.ux-action b,.ux-state-action b{font-size:10px}
  .ux-pagination{padding:8px 9px 8px 12px}
}

@media (max-width:520px){
  .ux-container{width:calc(100% - 10px)}
  .ux-topbar-inner{min-height:54px}.ux-brand-mark{width:35px;height:35px;border-radius:10px}.ux-brand-copy small{font-size:8px}.ux-brand-copy strong{font-size:11.5px}
  .ux-main{padding-top:6px}.ux-workspace{border-radius:12px}
  .ux-search-section{padding:11px 9px 0}.ux-kicker{font-size:7.8px}.ux-search-title-row h1{font-size:17px}.ux-search-title-row p{font-size:9.5px;line-height:1.4}
  .ux-search{height:47px;padding:0 9px}.ux-search input{font-size:12px}.ux-clear{width:29px;height:29px}
  .public-v41 .quick-action{padding:6px 8px}.public-v41 .quick-action span{font-size:9.5px}.public-v41 .quick-action small{font-size:8px}
  .ux-filter-toggle{height:32px;font-size:9.5px}
  .ux-advanced{margin:0 -9px;padding:10px 9px;grid-template-columns:1fr}.ux-clear-filters{grid-column:auto}.ux-advanced select{height:37px;font-size:10px}
  .ux-results-bar{display:flex;align-items:center;padding:8px 8px 8px 10px}.ux-results-copy{display:block}.ux-results-copy>strong{display:block;font-size:12.5px}.ux-results-copy>span{display:block;margin-top:2px}.ux-export{padding:0 8px;font-size:0}.ux-export:after{content:'PDF';font-size:9.5px}.ux-export svg{width:17px;height:17px}
  .ux-table tbody{padding:4px}.ux-table tbody tr{padding:9px;border-radius:11px}.ux-table td{grid-template-columns:88px minmax(0,1fr);gap:6px;padding:4px 0}.ux-table td:before{font-size:7.7px}.public-v41 .badge{font-size:8px}.public-v41 .grade-text{font-size:9.4px}
  .ux-pagination{display:block}.ux-pagination>span{display:block;margin-bottom:6px}.ux-pagination>div{display:grid;grid-template-columns:1fr 1fr}.ux-page-btn{width:100%}
  .ux-footer{padding:8px 4px 0;flex-direction:column;align-items:flex-start;gap:4px}
  .public-v41 .modal-card{width:calc(100% - 14px);margin:2vh auto;max-height:96vh;padding:17px 14px;border-radius:14px}
  .public-v41 .modal-actions{flex-direction:column-reverse}.public-v41 .modal-actions .btn{width:100%}
}

/* ======================================================================
   V4.2.1 — Exportaciones Excel/ZIP + filtro Sección
   ====================================================================== */
.ux-advanced{grid-template-columns:repeat(5,minmax(0,1fr)) auto}
.ux-export-group{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.ux-export-group .ux-export{min-width:76px}
.ux-file-icon{display:inline-grid;place-items:center;min-width:30px;height:20px;padding:0 5px;border-radius:6px;background:#eef4fd;color:#1552ad;font-size:7.5px;font-weight:950;letter-spacing:.035em;line-height:1}
.ux-export-excel{border-color:#b9ddca;color:#187848}.ux-export-excel:hover{background:#effaf4;border-color:#87c9a6}.ux-export-excel .ux-file-icon{background:#e8f7ef;color:#147a46}
.ux-export-zip{border-color:#d7caed;color:#6843a8}.ux-export-zip:hover{background:#f7f2ff;border-color:#b9a2df}.ux-export-zip .ux-file-icon{background:#f1eafb;color:#6740a8}
.ux-export-label{font-size:10px;font-weight:850}
.zip-modal-card{max-width:610px}
.zip-intro{margin:0 0 14px;color:#687589;font-size:12px;line-height:1.55}
.zip-filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.zip-summary{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 14px;border:1px solid #dfe6ef;border-radius:11px;background:#f8fafc;color:#536176}
.zip-summary span{font-size:11px;font-weight:800}.zip-summary strong{font-size:22px;line-height:1;color:#1657bb}

@media(max-width:1120px){
  .ux-advanced{grid-template-columns:repeat(3,minmax(0,1fr))}.ux-clear-filters{grid-column:auto}
}
@media(max-width:860px){
  .ux-advanced{grid-template-columns:repeat(2,minmax(0,1fr))}.ux-clear-filters{grid-column:span 2}
  .ux-export-group{gap:5px}.ux-export-group .ux-export{min-width:68px;padding-inline:7px}.ux-export-label{font-size:9px}
}
@media(max-width:520px){
  .ux-advanced{grid-template-columns:1fr}.ux-clear-filters{grid-column:auto}
  .ux-results-bar{display:block!important;padding:9px 9px 10px!important}
  .ux-export-group{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:8px;width:100%}
  .ux-export-group .ux-export{width:100%;min-width:0;min-height:34px;padding:0 5px;font-size:9px!important;gap:4px}
  .ux-export-group .ux-export:after{content:none!important}
  .ux-export-label{display:inline;font-size:8.5px}.ux-file-icon{min-width:27px;height:19px;font-size:6.8px}
  .zip-filter-grid{grid-template-columns:1fr}.zip-summary{padding:10px 12px}
}

/* V4.2.2 - acciones didácticas y solicitud de matrícula de un solo toque */
.ux-action-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:0 0 28px;background:rgba(255,255,255,.74);font-size:15px;line-height:1}
.ux-action-copy{display:flex;flex-direction:column;align-items:flex-start;min-width:0;line-height:1.12}
.ux-action-copy b{font-size:9.7px;font-weight:900;white-space:normal;text-align:left}
.ux-action-copy small{font-size:8.1px;font-weight:700;opacity:.78;margin-top:2px;white-space:normal;text-align:left}
.ux-action-enroll .ux-action-icon{background:rgba(255,255,255,.18)}
.ux-action.is-loading{cursor:wait;opacity:.78;transform:none!important;box-shadow:none!important}
.request-sent.ux-state-action span{font-size:15px}
@media (max-width:860px){.ux-action-icon{width:32px;height:32px;flex-basis:32px;font-size:17px}.ux-action-copy b{font-size:10.5px}.ux-action-copy small{font-size:8.8px}}

/* V4.2.4 - iconografía didáctica + acciones más limpias */
.ux-actions,
.ux-manage-actions,
.ux-request-pending{display:grid;grid-template-columns:1fr;gap:8px;min-width:0}
.ux-actions{align-items:start}
.ux-action,
.ux-state-action{width:100%;justify-content:flex-start;align-items:center;min-height:48px;padding:8px 10px;gap:10px;border-radius:11px}
.ux-state-action{background:#f8fafc;border-color:#e1e7ef;color:#596779}
.ux-action-icon{width:36px;height:36px;flex:0 0 36px;border-radius:11px;display:grid;place-items:center;background:#edf4ff;color:#1552ad;font-size:0;line-height:1}
.ux-icon-svg{display:block;width:20px;height:20px}
.ux-action-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0;line-height:1.15}
.ux-action-copy b{font-size:10.8px;font-weight:900;white-space:normal;text-align:left}
.ux-action-copy small{font-size:8.9px;font-weight:700;opacity:.82;margin-top:2px;white-space:normal;text-align:left}
.ux-action-certificate{background:#f4f8ff;border-color:#bfd6f4;color:#0e4f98}
.ux-action-certificate .ux-action-icon{background:#eaf2ff;color:#1558b5}
.ux-action-enroll{background:#2161d5;border-color:#2161d5;color:#fff}
.ux-action-enroll .ux-action-icon{background:rgba(255,255,255,.16);color:#fff}
.ux-action-enroll:hover{background:#1952ba}
.ux-action-cancel{background:#fff7f5;border-color:#efc8c2;color:#a63b31}
.ux-action-cancel .ux-action-icon{background:#fff;color:#a63b31;border:1px solid rgba(166,59,49,.12)}
.ux-action-cancel:hover{background:#ffebe8;border-color:#e8aaa2;color:#8e2d25}
.ux-action-dni{background:#fff8e9;border-color:#efce83;color:#855700}
.ux-action-dni .ux-action-icon{background:#fff6da;color:#8a5a00}
.request-sent.ux-state-action,
.ux-actions .request-sent{background:#eef9f3!important;border-color:#caead8!important;color:#18784c!important}
.request-sent .ux-action-icon{background:#dff3e8;color:#18784c}
.ux-no-action{background:#f8fafc;color:#687589}
.ux-no-action .ux-action-icon{background:#eef2f7;color:#67758a}
.ux-request-pending > .ux-state-action,
.ux-request-pending > .ux-action{flex:none}

@media (max-width:860px){
  .ux-action,
  .ux-state-action{min-height:46px;padding:9px 10px}
  .ux-action-icon{width:34px;height:34px;flex-basis:34px}
  .ux-icon-svg{width:18px;height:18px}
  .ux-action-copy b{font-size:10.5px}
  .ux-action-copy small{font-size:8.7px}
}
.ux-action-copy{flex:1 1 auto;font-size:inherit}
.ux-actions .request-sent .ux-action-copy small{display:block}

/* V4.2.5 - pulido experto de columna Acciones */
.ux-table col.col-action{width:26%}
.ux-table td[data-label="Acciones"]{vertical-align:top}
.ux-actions{width:100%;align-items:stretch}
.ux-manage-actions,
.ux-request-pending{width:100%}

.ux-state-action,
.ux-action{
  position:relative;
  overflow:hidden;
}

.ux-action-copy,
.ux-action-copy b,
.ux-action-copy small,
.request-sent .ux-action-copy,
.request-sent .ux-action-copy b,
.request-sent .ux-action-copy small{
  background:transparent !important;
  box-shadow:none !important;
  border:0 !important;
}

.request-sent{
  align-items:center;
  justify-content:flex-start;
}

.request-sent .ux-action-copy{
  flex:1 1 auto;
  padding:0 !important;
}

.request-sent .ux-action-copy b,
.request-sent .ux-action-copy small,
.ux-no-action .ux-action-copy b,
.ux-no-action .ux-action-copy small{
  display:block;
  margin:0;
  padding:0;
  border-radius:0 !important;
}

.ux-action-certificate,
.ux-action-enroll,
.ux-action-cancel,
.ux-action-dni,
.request-sent,
.ux-no-action{
  box-shadow:0 1px 0 rgba(16,24,40,.02);
}

.ux-action-certificate:hover,
.ux-action-enroll:hover,
.ux-action-cancel:hover,
.ux-action-dni:hover{
  box-shadow:0 8px 18px rgba(21,82,173,.08);
}

.ux-action-certificate .ux-action-copy b,
.ux-action-enroll .ux-action-copy b,
.ux-action-cancel .ux-action-copy b,
.ux-action-dni .ux-action-copy b,
.request-sent .ux-action-copy b,
.ux-no-action .ux-action-copy b{
  letter-spacing:-.01em;
}

.ux-action-certificate .ux-action-copy small,
.ux-action-enroll .ux-action-copy small,
.ux-action-cancel .ux-action-copy small,
.ux-action-dni .ux-action-copy small,
.request-sent .ux-action-copy small,
.ux-no-action .ux-action-copy small{
  opacity:.88;
}

.ux-request-pending{grid-template-columns:1fr 1fr}
.ux-request-pending > *{min-width:0}

@media (max-width:1180px){
  .ux-table col.col-action{width:28%}
  .ux-request-pending{grid-template-columns:1fr}
}

@media (max-width:860px){
  .ux-table td[data-label="Acciones"]{padding-top:10px}
  .ux-request-pending{grid-template-columns:1fr}
  .ux-state-action,
  .ux-action{min-height:48px}
}

/* ======================================================================
   V4.2.6 — acabado final: acciones compactas, legibles y consistentes
   ====================================================================== */
.ux-table col.col-student{width:30%}
.ux-table col.col-level{width:16%}
.ux-table col.col-section{width:7%}
.ux-table col.col-dni{width:11%}
.ux-table col.col-status{width:12%}
.ux-table col.col-action{width:24%}
.ux-table thead th{font-size:9.6px;padding:10px 12px;color:#657186}
.ux-table td{font-size:11.2px;padding:10px 12px;vertical-align:middle}
.ux-table td[data-label="Acciones"]{vertical-align:middle}
.ux-student strong{font-size:12.8px;font-weight:800}
.public-v41 .grade-text{font-size:10.3px}
.public-v41 .badge{font-size:8.7px;min-height:23px}

/* La fila que necesita atención conserva una señal, no un bloque amarillo dominante. */
.ux-table tbody tr.student-row.needs-attention,
.ux-table tbody tr.student-row.needs-attention:nth-child(even){
  background:#fffdf8;
  box-shadow:inset 3px 0 0 #e3b248;
}
.ux-table tbody tr.student-row.needs-attention:hover{background:#fffaf0}

/* Una acción principal o dos acciones paralelas; sin tarjetas apiladas gigantes. */
.ux-actions{display:block;width:100%;min-width:0}
.ux-manage-actions{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(128px,1fr));
  align-items:stretch;
  gap:7px;
  width:100%;
  min-width:0;
}
.ux-manage-actions:empty{display:none}
.ux-request-pending{display:contents}

.ux-action,
.ux-state-action{
  width:100%;
  min-height:43px;
  padding:6px 8px;
  gap:8px;
  border-radius:10px;
  justify-content:flex-start;
  align-items:center;
  box-shadow:none;
}
.ux-action:hover{transform:none}
.ux-action-icon{
  width:31px;
  height:31px;
  flex:0 0 31px;
  border-radius:9px;
}
.ux-icon-svg{width:18px;height:18px}
.ux-action-copy{flex:1 1 auto;min-width:0;line-height:1.13}
.ux-action-copy b{font-size:9.9px;font-weight:900;line-height:1.18}
.ux-action-copy small{font-size:8px;font-weight:700;line-height:1.22;margin-top:2px}

.ux-action-certificate{
  width:min(100%,190px);
  min-height:43px;
  background:#f4f8ff;
  border-color:#c3d8f3;
  color:#124f99;
}
.ux-action-certificate:hover{background:#edf5ff;border-color:#a8c8ee;box-shadow:0 5px 14px rgba(24,90,170,.07)}

.ux-action-enroll{
  background:#1f63d9;
  border-color:#1f63d9;
  color:#fff;
}
.ux-action-enroll:hover{background:#1955bd;border-color:#1955bd;box-shadow:0 5px 14px rgba(31,99,217,.14)}

.ux-action-dni{
  background:#fff9ed;
  border-color:#ebcf91;
  color:#7c5300;
}
.ux-action-dni:hover{background:#fff5df;border-color:#dfbc6c;box-shadow:0 5px 14px rgba(143,95,0,.07)}

/* Solicitud pendiente = un solo control reversible. */
.ux-action-pending{
  background:#eef9f3;
  border-color:#bfe3cf;
  color:#147849;
}
.ux-action-pending:hover{
  background:#e5f6ed;
  border-color:#9fd2b7;
  box-shadow:0 5px 14px rgba(20,120,73,.08);
}
.ux-action-icon-pending{
  position:relative;
  background:#dcf2e6;
  color:#147849;
}
.ux-mini-undo{
  position:absolute;
  right:-4px;
  bottom:-4px;
  width:15px;
  height:15px;
  border-radius:999px;
  background:#fff;
  border:1px solid #b7d9c6;
  display:grid;
  place-items:center;
  color:#5b6b62;
  box-shadow:0 1px 3px rgba(16,24,40,.09);
}
.ux-mini-undo>svg,
.ux-mini-undo .ux-icon-svg{width:9px!important;height:9px!important}

.ux-no-action{width:min(100%,190px);min-height:43px;background:#f7f9fc;border-color:#e1e6ed;color:#677387}
.ux-no-action .ux-action-icon{background:#edf1f6;color:#68768a}

/* Carga coherente con el resto de iconografía: sin emojis. */
.ux-inline-spinner{
  width:16px;
  height:16px;
  border:2px solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  animation:ux-spin .7s linear infinite;
  display:block;
}
@keyframes ux-spin{to{transform:rotate(360deg)}}

/* Desktop amplio: botones compactos, sin que la columna domine la tabla. */
@media (min-width:1280px){
  .ux-container{width:min(1380px,calc(100% - 48px))}
  .ux-table{min-width:1080px}
  .ux-table col.col-action{width:23%}
}

@media (max-width:1180px){
  .ux-table col.col-action{width:27%}
  .ux-manage-actions{grid-template-columns:1fr}
}

/* Móvil conserva tarjetas y acciones grandes para dedos, pero sin exagerar altura. */
@media (max-width:860px){
  .ux-table td[data-label="Acciones"]{padding-top:9px}
  .ux-manage-actions{grid-template-columns:1fr;gap:6px}
  .ux-action,
  .ux-state-action{min-height:45px;padding:7px 9px}
  .ux-action-certificate,.ux-no-action{width:100%;max-width:none}
  .ux-action-icon{width:32px;height:32px;flex-basis:32px}
  .ux-icon-svg{width:18px;height:18px}
  .ux-action-copy b{font-size:10.3px}
  .ux-action-copy small{font-size:8.5px}
}

/* ======================================================================
   V4.2.7 — estado RETIRADO reversible desde el portal
   ====================================================================== */
.public-v41 .badge-withdrawn{
  background:#fff0f0;
  color:#a13a36;
  border:1px solid #f4d0cd;
}
.ux-table tbody tr.student-row.is-withdrawn,
.ux-table tbody tr.student-row.is-withdrawn:nth-child(even){
  background:#fffafa;
  box-shadow:inset 3px 0 0 #cf6f68;
}
.ux-table tbody tr.student-row.is-withdrawn:hover{background:#fff5f4}

.ux-action-withdraw{
  background:#fff7f5;
  border-color:#efcbc5;
  color:#a33b32;
}
.ux-action-withdraw .ux-action-icon{
  background:#fff0ed;
  color:#a33b32;
}
.ux-action-withdraw:hover{
  background:#ffefec;
  border-color:#e7afa7;
  box-shadow:0 5px 14px rgba(163,59,50,.08);
}
.ux-action-restore{
  background:#f3f8ff;
  border-color:#bfd4ef;
  color:#1553a5;
}
.ux-action-restore .ux-action-icon{
  background:#e8f1ff;
  color:#1553a5;
}
.ux-action-restore:hover{
  background:#eaf3ff;
  border-color:#a7c5eb;
  box-shadow:0 5px 14px rgba(21,83,165,.08);
}

/* Matriculados: constancia y retiro juntos en escritorio, sin duplicar altura. */
.ux-actions.is-enrolled-actions{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:7px;
  align-items:stretch;
}
.ux-actions.is-enrolled-actions > .ux-action-certificate{width:100%;max-width:none}
.ux-actions.is-enrolled-actions > .ux-manage-actions{display:block}
.ux-actions.is-enrolled-actions > .ux-manage-actions > .ux-action{height:100%}
@media(max-width:1180px){
  .ux-actions.is-enrolled-actions{grid-template-columns:1fr}
}
@media(max-width:860px){
  .ux-actions.is-enrolled-actions{grid-template-columns:1fr}
}

/* ======================================================================
   V4.2.9 — pulido visual experto de acciones y tabla
   ====================================================================== */
@media (min-width: 1024px){
  .public-v41 .ux-container{width:min(1480px,calc(100% - 40px))}
  .public-v41 .ux-panel{border-radius:18px}
  .public-v41 .ux-table{min-width:1120px}
  .public-v41 .ux-table col.col-action{width:24%}
  .public-v41 .ux-table th,
  .public-v41 .ux-table td{padding-top:12px;padding-bottom:12px}
  .public-v41 .student-name{font-size:15px}
  .public-v41 .student-meta{font-size:12px}

  /* Acciones: composición estable y visualmente limpia */
  .ux-actions{display:grid;grid-template-columns:1fr;gap:8px;align-items:start}
  .ux-manage-actions{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    align-items:stretch;
  }
  .ux-actions.is-enrolled-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .ux-actions.is-enrolled-actions > .ux-manage-actions{display:grid;grid-template-columns:1fr}
  .ux-actions.is-enrolled-actions > .ux-manage-actions > .ux-action{height:auto}

  .ux-action,
  .ux-state-action{min-height:46px;padding:8px 10px;border-radius:12px}
  .ux-action-icon{width:32px;height:32px;flex-basis:32px;border-radius:10px}
  .ux-icon-svg{width:18px;height:18px}
  .ux-action-copy b{font-size:10.4px;line-height:1.15}
  .ux-action-copy small{font-size:8.25px;line-height:1.15;margin-top:2px}

  /* Si hay 3 acciones, la principal va completa arriba y las secundarias abajo. */
  .ux-manage-actions > :first-child:nth-last-child(3){grid-column:1 / -1}
  .ux-manage-actions > :only-child{grid-column:1 / -1;width:min(100%,220px)}

  /* Estados pasivos más discretos. */
  .ux-no-action{width:min(100%,220px)}

  /* Filas más sobrias */
  .ux-table tbody tr.student-row.needs-attention,
  .ux-table tbody tr.student-row.needs-attention:nth-child(even){background:#fffefb;box-shadow:inset 3px 0 0 #e7bc57}
  .ux-table tbody tr.student-row.needs-attention:hover{background:#fffaf1}
  .ux-table tbody tr.student-row.is-withdrawn,
  .ux-table tbody tr.student-row.is-withdrawn:nth-child(even){background:#fffafb;box-shadow:inset 3px 0 0 #d77e76}
  .ux-table tbody tr.student-row.is-withdrawn:hover{background:#fff4f4}
}

@media (min-width: 1024px) and (max-width: 1260px){
  .public-v41 .ux-table col.col-action{width:26%}
  .ux-manage-actions{grid-template-columns:1fr}
  .ux-actions.is-enrolled-actions{grid-template-columns:1fr}
}

/* ======================================================================
   V4.3.0 — acabado institucional / profesional final
   ====================================================================== */
:root{
  --v43-blue:#185ecb;
  --v43-blue-dark:#124aa0;
  --v43-blue-soft:#edf4ff;
  --v43-ink:#132033;
  --v43-text:#475569;
  --v43-muted:#7b8797;
  --v43-border:#dde5ef;
  --v43-surface:#ffffff;
  --v43-bg:#f3f6fa;
}

.public-v41{background:linear-gradient(180deg,#f6f8fb 0,#f2f5f9 100%);color:var(--v43-ink)}
.public-v41 .ux-container{width:min(1440px,calc(100% - 44px))}

/* Cabecera más institucional y menos "app genérica" */
.ux-topbar{
  background:rgba(255,255,255,.97);
  border-bottom:1px solid #e4e9f0;
  box-shadow:0 1px 8px rgba(28,45,72,.035);
  backdrop-filter:blur(10px);
}
.ux-topbar-inner{min-height:68px}
.ux-brand{gap:12px}
.ux-brand-mark{
  width:42px;height:42px;border-radius:12px;
  background:linear-gradient(145deg,#1559c7,#2b73e3);
  box-shadow:0 7px 17px rgba(24,94,203,.18)
}
.ux-brand-copy small{font-size:10px;letter-spacing:.11em;color:#1d5fc6}
.ux-brand-copy strong{font-size:15px;letter-spacing:-.01em}
.ux-online{background:#f9fbfd;border-color:#dfe6ee;color:#5e6b7c;padding:7px 11px;font-size:10px}

/* Contenedor principal */
.ux-main{padding:18px 0 22px}
.ux-workspace{
  border:1px solid #dde5ef;
  border-radius:20px;
  box-shadow:0 14px 36px rgba(29,49,76,.055);
  overflow:hidden;
}

/* Búsqueda: clara, compacta y protagonista */
.ux-search-section{padding:22px 22px 0;background:#fff}
.ux-search-title-row{margin-bottom:13px}
.ux-kicker{font-size:9px;letter-spacing:.12em;color:#1d60ca;margin-bottom:5px}
.ux-search-title-row h1{font-size:24px;letter-spacing:-.025em;color:#142137}
.ux-search-title-row p{font-size:12px;color:#718095;margin-top:5px}
.ux-search{
  height:58px;border:1.5px solid #cbd8e8;border-radius:14px;padding:0 15px;
  box-shadow:0 3px 11px rgba(27,49,82,.035)
}
.ux-search:focus-within{border-color:#4c87df;box-shadow:0 0 0 4px rgba(31,99,217,.08),0 6px 16px rgba(31,99,217,.05)}
.ux-search svg{width:22px;height:22px}
.ux-search input{font-size:15px;font-weight:600;color:#1c2a3f}
.ux-search input::placeholder{color:#9aa6b6;font-weight:550}
.ux-clear{background:#f0f4f8}

/* Filtros rápidos y avanzados */
.ux-controls-row{padding:12px 0 13px;gap:16px}
.ux-segments{gap:7px}
.public-v41 .quick-action{
  min-height:36px;border-radius:10px;padding:7px 10px;
  background:#f8fafc;border-color:#dce4ee;color:#4b5a6e
}
.public-v41 .quick-action span{font-size:10.7px}
.public-v41 .quick-action small{font-size:8.8px;background:#e9eef5}
.public-v41 .quick-action.active{background:#edf4ff;border-color:#91b4e9;color:#1451b1;box-shadow:inset 0 0 0 1px rgba(31,99,217,.05)}
.ux-filter-toggle{height:36px;border-radius:10px;padding:0 12px;background:#fff;border-color:#d7e0ea;font-size:10.5px}
.ux-advanced{margin:0 -22px;padding:14px 22px 15px;background:#f8fafc;border-top-color:#e8edf3;gap:10px}
.ux-advanced label>span{font-size:9.5px;color:#657287}
.ux-advanced select,.ux-clear-filters{height:40px;border-radius:10px}

/* Barra de resultados / exportaciones */
.ux-results-bar{
  min-height:54px;padding:10px 16px 10px 22px;
  background:#fbfcfe;border-top:1px solid #e7ecf2;border-bottom:1px solid #e4e9f0
}
.ux-results-copy>strong{font-size:14px;color:#18263a}
.ux-results-copy>span{font-size:10.2px;color:#7a8798}
.ux-export-group{gap:7px}
.ux-export{
  min-height:36px;border-radius:10px;padding:0 11px;background:#fff;
  box-shadow:0 1px 3px rgba(16,24,40,.025)
}
.ux-file-icon{height:20px;min-width:31px;border-radius:6px}
.ux-export-label{font-size:10.2px}

/* Tabla: más limpia, legible y sobria */
.ux-table-wrap{background:#fff}
.ux-table{min-width:1120px}
.ux-table col.col-student{width:30%}
.ux-table col.col-level{width:16%}
.ux-table col.col-section{width:7%}
.ux-table col.col-dni{width:12%}
.ux-table col.col-status{width:12%}
.ux-table col.col-action{width:23%}
.ux-table thead th{
  background:#f6f8fb;color:#6f7b8c;padding:10px 14px;
  font-size:8.8px;letter-spacing:.07em;border-bottom:1px solid #dde5ed
}
.ux-table td{padding:12px 14px;font-size:11px;border-bottom:1px solid #edf1f5}
.ux-table tbody tr{transition:background .12s,box-shadow .12s}
.ux-table tbody tr:nth-child(even){background:#fdfefe}
.ux-table tbody tr:hover{background:#f8fbff}
.ux-table tbody tr.student-row.needs-attention,
.ux-table tbody tr.student-row.needs-attention:nth-child(even){background:#fffdf8;box-shadow:inset 3px 0 0 #e6b951}
.ux-table tbody tr.student-row.needs-attention:hover{background:#fffaf0}
.ux-table tbody tr.student-row.is-withdrawn,
.ux-table tbody tr.student-row.is-withdrawn:nth-child(even){background:#fffafa;box-shadow:inset 3px 0 0 #d77b73}
.ux-table tbody tr.student-row.is-withdrawn:hover{background:#fff5f5}

.ux-student{gap:10px}
.ux-avatar{width:34px;height:34px;border-radius:10px;background:#edf4ff;color:#1b5fc7;font-size:12px}
.ux-student strong{font-size:12.9px;color:#142137;line-height:1.3;font-weight:790}
.public-v41 .grade-text{font-size:10.2px;color:#6d7a8c}
.public-v41 .section-pill{min-width:28px;height:28px;border-radius:9px;background:#f0f4f8;color:#34445a}
.public-v41 .badge{min-height:22px;border-radius:7px;font-size:8.4px;padding:3px 7px}
.public-v41 .dni-cell small{font-size:8.8px;color:#8b96a6}

/* Acciones: jerarquía clara, sin parecer "botones gigantes" */
.ux-actions{display:grid;grid-template-columns:1fr;gap:7px;width:100%;align-items:start}
.ux-manage-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;width:100%;align-items:stretch}
.ux-manage-actions:empty{display:none}
.ux-actions.is-enrolled-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;align-items:stretch}
.ux-actions.is-enrolled-actions > .ux-manage-actions{display:grid;grid-template-columns:1fr}
.ux-actions.is-enrolled-actions > .ux-action-certificate{width:100%;max-width:none}

.ux-action,.ux-state-action{
  width:100%;min-height:44px;padding:7px 9px;border-radius:11px;gap:8px;
  justify-content:flex-start;align-items:center;box-shadow:none;transition:background .13s,border-color .13s,box-shadow .13s
}
.ux-action:hover{transform:none}
.ux-action-icon{width:31px;height:31px;flex:0 0 31px;border-radius:9px}
.ux-icon-svg{width:17px;height:17px}
.ux-action-copy b{font-size:9.8px;line-height:1.15;font-weight:900;letter-spacing:-.005em}
.ux-action-copy small{font-size:8px;line-height:1.15;margin-top:2px;opacity:.82}

.ux-action-certificate{background:#f3f8ff;border-color:#bfd5f1;color:#14529e}
.ux-action-certificate:hover{background:#eaf3ff;border-color:#a7c5e8;box-shadow:0 5px 13px rgba(21,83,165,.06)}
.ux-action-enroll{background:#1f63d9;border-color:#1f63d9;color:#fff}
.ux-action-enroll:hover{background:#1955bc;border-color:#1955bc;box-shadow:0 5px 14px rgba(31,99,217,.11)}
.ux-action-dni{background:#fff8e9;border-color:#e8cb8b;color:#7f5605}
.ux-action-dni:hover{background:#fff4dc;border-color:#dcba69}
.ux-action-withdraw{background:#fff6f4;border-color:#edcbc5;color:#a33e35}
.ux-action-withdraw:hover{background:#ffefec;border-color:#e2afa7}
.ux-action-restore{background:#f3f8ff;border-color:#bfd4ef;color:#1553a5}
.ux-action-pending{background:#eef9f3;border-color:#c2e3d0;color:#16784a}
.ux-no-action{background:#f7f9fc;border-color:#e2e7ed;color:#6a7585}

/* Tres acciones: la principal ocupa la fila superior; las secundarias abajo */
.ux-manage-actions > :first-child:nth-last-child(3){grid-column:1 / -1}
.ux-manage-actions > :only-child{grid-column:1 / -1}

/* Paginación y pie */
.ux-pagination{min-height:52px;padding:9px 14px 9px 22px;background:#fafbfd;border-top:1px solid #e6ebf1}
.ux-page-btn{min-height:33px;border-radius:9px}
.ux-footer{padding:12px 4px 0;color:#8792a2}

/* Laptop: una columna de acciones cuando el espacio empieza a apretarse */
@media (max-width:1260px) and (min-width:861px){
  .public-v41 .ux-container{width:calc(100% - 28px)}
  .ux-table col.col-action{width:26%}
  .ux-manage-actions{grid-template-columns:1fr}
  .ux-actions.is-enrolled-actions{grid-template-columns:1fr}
}

/* Tablet y móvil: se mantiene la lógica de tarjetas, con acabado más limpio */
@media (max-width:860px){
  .public-v41 .ux-container{width:calc(100% - 14px)}
  .ux-topbar-inner{min-height:58px}
  .ux-main{padding-top:9px}
  .ux-workspace{border-radius:15px}
  .ux-search-section{padding:15px 12px 0}
  .ux-search-title-row h1{font-size:20px}
  .ux-search-title-row p{font-size:10.5px}
  .ux-search{height:51px}
  .ux-results-bar{padding:9px 10px 9px 12px}
  .ux-table tbody tr{border-radius:14px;border-color:#e1e7ee;box-shadow:0 4px 13px rgba(29,52,84,.035)}
  .ux-table td[data-label="Acciones"]{padding-top:9px}
  .ux-manage-actions,.ux-actions.is-enrolled-actions{grid-template-columns:1fr}
  .ux-action,.ux-state-action{min-height:46px;padding:8px 10px}
  .ux-action-icon{width:33px;height:33px;flex-basis:33px}
  .ux-action-copy b{font-size:10.4px}
  .ux-action-copy small{font-size:8.5px}
}

@media (max-width:520px){
  .public-v41 .ux-container{width:calc(100% - 10px)}
  .ux-brand-copy strong{font-size:11.8px}
  .ux-search-title-row h1{font-size:18px}
  .ux-search{height:48px}
  .public-v41 .quick-action{padding:6px 8px}
  .ux-table tbody tr{padding:10px;border-radius:12px}
  .ux-export-group{margin-top:8px}
}

/* ======================================================================
   V4.3.1 — QA final: móvil compacto + consistencia visual
   ====================================================================== */
@media (max-width:620px){
  /* Los cuatro accesos rápidos siempre visibles: no se esconden en scroll horizontal. */
  .ux-controls-row{display:grid;grid-template-columns:1fr;gap:8px;padding:10px 0 11px}
  .ux-segments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%;overflow:visible;padding:0}
  .public-v41 .quick-action{width:100%;min-width:0;justify-content:space-between;padding:7px 9px}
  .ux-controls-right{margin-top:0;justify-content:flex-end;width:100%}

  /* Tarjeta móvil: datos en 2 columnas para reducir desplazamiento vertical. */
  .ux-table tbody tr{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:12px;
    row-gap:0;
    padding:10px!important;
  }
  .ux-table tbody tr > td{
    display:block!important;
    width:auto!important;
    min-width:0;
    padding:8px 0!important;
    border:0;
  }
  .ux-table tbody tr > td:before{
    display:block!important;
    margin:0 0 5px;
    font-size:7.6px;
    line-height:1.1;
  }
  .ux-table tbody tr > td[data-label="Estudiante"],
  .ux-table tbody tr > td[data-label="Acciones"]{
    grid-column:1 / -1;
  }
  .ux-table tbody tr > td[data-label="Estudiante"]{
    padding:2px 0 9px!important;
    margin:0 0 2px;
    border-bottom:1px solid #eef2f6;
  }
  .ux-table tbody tr > td[data-label="Estudiante"]:before{display:none!important}
  .ux-table tbody tr > td[data-label="Nivel / grado"],
  .ux-table tbody tr > td[data-label="Sección"],
  .ux-table tbody tr > td[data-label="DNI"],
  .ux-table tbody tr > td[data-label="Estado"]{
    border-bottom:1px solid #f0f3f6;
  }
  .ux-table tbody tr > td[data-label="Acciones"]{
    padding:9px 0 0!important;
  }
  .ux-student{align-items:center}
  .ux-student strong{font-size:12.5px;line-height:1.28}
  .public-v41 .section-pill{width:auto;min-width:29px;display:inline-grid}
  .public-v41 .badge{width:auto;max-width:100%;display:inline-flex}
  .public-v41 .grade-text{margin-top:4px}
  .ux-actions,.ux-manage-actions,.ux-actions.is-enrolled-actions{grid-template-columns:1fr!important;gap:6px}
  .ux-manage-actions > :first-child:nth-last-child(3),
  .ux-manage-actions > :only-child{grid-column:auto;width:100%}
  .ux-action,.ux-state-action{min-height:45px}
}

@media (max-width:420px){
  .ux-brand-copy strong{font-size:11.2px}
  .ux-online{padding:6px 8px}
  .ux-search-title-row h1{font-size:17.5px}
  .ux-search-title-row p{max-width:29rem}
  .ux-results-copy>span{white-space:normal}
  .ux-export-group{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ux-export-group .ux-export{padding-inline:4px}
  .ux-export-label{font-size:8.2px}
}

/* Corrección crítica responsive V4.3.1: V4.3 fijaba min-width:1120px después
   del media query anterior. En móvil debe volver a ancho fluido. */
@media (max-width:860px){
  .ux-table-wrap{overflow:visible!important;width:100%}
  .ux-table{min-width:0!important;width:100%!important;table-layout:auto!important}
  .ux-table colgroup,.ux-table thead{display:none!important}
  .ux-table tbody{width:100%}
}

/* ======================================================================
   V4.3.2 — acciones compactas y consistentes en escritorio
   ====================================================================== */
@media (min-width:861px){
  .ux-table col.col-student{width:31%}
  .ux-table col.col-level{width:16%}
  .ux-table col.col-section{width:7%}
  .ux-table col.col-dni{width:11%}
  .ux-table col.col-status{width:11%}
  .ux-table col.col-action{width:24%}

  .ux-table td{padding:10px 13px}
  .ux-table thead th{padding:9px 13px}
  .ux-student strong{font-size:13.2px}

  .ux-actions,
  .ux-manage-actions,
  .ux-actions.is-enrolled-actions{gap:6px}

  .ux-manage-actions{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .ux-actions.is-enrolled-actions{
    grid-template-columns:minmax(0,1fr) minmax(0,.92fr);
  }

  .ux-actions.is-enrolled-actions > .ux-manage-actions{
    display:grid;
    grid-template-columns:1fr;
  }

  .ux-action,
  .ux-state-action{
    min-height:39px;
    padding:6px 9px;
    gap:7px;
    border-radius:9px;
    box-shadow:none;
  }

  .ux-action-icon{
    width:23px;
    height:23px;
    flex:0 0 23px;
    border-radius:0;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
  .ux-icon-svg{width:18px;height:18px}

  .ux-action-copy{line-height:1;justify-content:center}
  .ux-action-copy b{
    font-size:10.1px;
    line-height:1.12;
    white-space:nowrap;
  }
  .ux-action-copy small{display:none!important}

  .ux-action-enroll{
    min-height:41px;
    background:#2465d7;
    border-color:#2465d7;
    color:#fff;
    box-shadow:0 3px 9px rgba(31,99,217,.12);
  }
  .ux-action-enroll:hover{background:#1d56bb;border-color:#1d56bb;box-shadow:0 5px 13px rgba(31,99,217,.16)}

  .ux-action-certificate{
    background:#f5f9ff;
    border-color:#bdd3ef;
    color:#15539f;
  }
  .ux-action-certificate:hover{background:#edf5ff;border-color:#a6c3e7}

  .ux-action-dni{
    background:#fffaf0;
    border-color:#ead19b;
    color:#805a0a;
  }
  .ux-action-dni:hover{background:#fff5e2;border-color:#d9b96e}

  .ux-action-withdraw{
    background:#fffafa;
    border-color:#efccc7;
    color:#9b423a;
  }
  .ux-action-withdraw:hover{background:#fff1ef;border-color:#e4afa8}

  .ux-action-restore{
    background:#f5f9ff;
    border-color:#bdd3ef;
    color:#15539f;
  }

  .ux-action-pending{
    background:#f1faf5;
    border-color:#c1e2ce;
    color:#18784b;
  }

  .ux-no-action{
    min-height:39px;
    background:#f8fafc;
    border-color:#e1e7ee;
    color:#657286;
  }

  /* Tres acciones: la acción principal ocupa todo el ancho; las secundarias comparten fila. */
  .ux-manage-actions > :first-child:nth-last-child(3){grid-column:1 / -1}
  .ux-manage-actions > :only-child{grid-column:1 / -1;width:100%}

  /* Menos peso visual en filas de atención. */
  .ux-table tbody tr.student-row.needs-attention,
  .ux-table tbody tr.student-row.needs-attention:nth-child(even){
    background:#fffefb;
    box-shadow:inset 2px 0 0 #e7bd59;
  }
  .ux-table tbody tr.student-row.is-withdrawn,
  .ux-table tbody tr.student-row.is-withdrawn:nth-child(even){
    background:#fffafa;
    box-shadow:inset 2px 0 0 #d9857e;
  }
}

@media (min-width:861px) and (max-width:1180px){
  .ux-table col.col-action{width:27%}
  .ux-manage-actions{grid-template-columns:1fr}
  .ux-actions.is-enrolled-actions{grid-template-columns:1fr}
  .ux-action-copy b{white-space:normal}
}

@media (max-width:860px){
  /* En móvil sí se conserva una breve explicación porque ayuda a la usabilidad. */
  .ux-action-copy small{display:block!important}
  .ux-action-icon{border-radius:9px}
}
