/* =========================================================
   COMPONENTS.CSS - Componentes Admisión 2027
   Colegio San Ignacio de Calama
========================================================= */

/* HEADER */
.admision-header{
    background:
        radial-gradient(circle at 90% 10%, rgba(250,204,21,.18), transparent 24%),
        linear-gradient(135deg,#111827,#1e1b4b 55%,#312e81);
    border-bottom:4px solid var(--csi-gold);
    box-shadow:0 10px 28px rgba(17,24,39,.22);
    color:#fff;
}

.admision-header-logo{
    width:48px;
    height:48px;
    border-radius:16px;
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.18);
    color:var(--csi-gold);
    display:flex;
    align-items:center;
    justify-content:center;
    margin-right:14px;
}

.admision-header-title{
    font-weight:900;
    letter-spacing:.2px;
    line-height:1.1;
}

.admision-header-subtitle{
    color:#dbeafe;
    font-size:.84rem;
}

.admision-chip{
    background:linear-gradient(135deg,#facc15,#f59e0b);
    color:#111827;
    font-weight:900;
    border-radius:999px;
    padding:.5rem .95rem;
    box-shadow:0 8px 18px rgba(250,204,21,.25);
}

/* NAVBAR */
.csi-navbar{
    background:rgba(255,255,255,.88);
    backdrop-filter:blur(14px);
    border-bottom:1px solid rgba(226,232,240,.9);
    box-shadow:0 8px 20px rgba(15,23,42,.06);
}

.csi-navbar .navbar-brand{
    font-weight:900;
    color:var(--csi-blue-dark);
}

.csi-navbar .nav-link{
    color:var(--csi-text);
    font-weight:800;
    border-radius:999px;
    padding:.55rem .9rem;
    transition:var(--transition);
}

.csi-navbar .nav-link:hover,
.csi-navbar .nav-link.active{
    background:linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:#fff;
}

.csi-navbar .navbar-toggler{
    border:0;
    box-shadow:none;
}

/* FOOTER */
.admision-footer{
    background:
        radial-gradient(circle at 90% 10%, rgba(250,204,21,.14), transparent 24%),
        linear-gradient(135deg,#111827,#1e1b4b 55%,#312e81);
    color:#e5edff;
    position:relative;
    overflow:hidden;
}

.admision-footer-top{
    height:7px;
    background:linear-gradient(90deg,var(--csi-gold),var(--csi-purple),var(--csi-blue));
}

.footer-logo{
    width:72px;
    height:72px;
    border-radius:24px;
    background:rgba(255,255,255,.11);
    border:1px solid rgba(255,255,255,.18);
    color:var(--csi-gold);
    display:flex;
    align-items:center;
    justify-content:center;
    margin-bottom:16px;
    box-shadow:0 14px 30px rgba(0,0,0,.20);
}

.footer-brand h4{
    color:#fff;
    font-weight:900;
    margin-bottom:8px;
}

.footer-brand p{
    color:#cbdcff;
    margin-bottom:0;
}

.admision-footer h5{
    color:#fff;
    font-weight:900;
    margin-bottom:16px;
}

.admision-footer h5::after{
    content:"";
    display:block;
    width:36px;
    height:3px;
    background:var(--csi-gold);
    border-radius:999px;
    margin-top:8px;
}

.admision-footer a{
    display:block;
    color:#cbdcff !important;
    text-decoration:none;
    margin-bottom:10px;
    font-weight:700;
    transition:var(--transition);
}

.admision-footer a:hover{
    color:var(--csi-gold) !important;
    transform:translateX(3px);
}

.footer-contact{
    list-style:none;
    padding:0;
    margin:0;
}

.footer-contact li{
    display:flex;
    gap:10px;
    color:#dbeafe;
    margin-bottom:10px;
    line-height:1.4;
}

.footer-contact span{
    color:var(--csi-gold);
    font-weight:900;
}

.footer-schedule{
    background:rgba(255,255,255,.08);
    border:1px solid rgba(255,255,255,.14);
    border-radius:18px;
    padding:18px;
}

.footer-schedule strong{
    display:block;
    color:#fff;
    margin-bottom:4px;
}

.footer-schedule span{
    color:#dbeafe;
}

.footer-schedule hr{
    border-color:rgba(255,255,255,.14);
}

.footer-bottom{
    border-top:1px solid rgba(255,255,255,.12);
    display:flex;
    justify-content:space-between;
    gap:14px;
    flex-wrap:wrap;
    color:#cbdcff;
    font-size:.9rem;
}

/* HOME */
.home-premium-badge{
    display:inline-flex;
    align-items:center;
    gap:8px;
}

.home-premium-badge::before{
    content:"";
    width:9px;
    height:9px;
    border-radius:50%;
    background:var(--csi-gold);
    box-shadow:0 0 0 5px rgba(250,204,21,.16);
}

.hero-glass-panel{
    background:rgba(255,255,255,.10);
    border:1px solid rgba(255,255,255,.16);
    border-radius:24px;
    padding:18px;
    backdrop-filter:blur(10px);
}

/* PROCESS CARDS */
.process-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:18px;
}

.process-card{
    background:#fff;
    border:1px solid var(--csi-border);
    border-radius:22px;
    padding:22px;
    box-shadow:var(--shadow-sm);
    transition:var(--transition);
}

.process-card:hover{
    transform:translateY(-3px);
    box-shadow:var(--shadow-md);
}

.process-card-icon{
    width:54px;
    height:54px;
    border-radius:18px;
    background:linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:var(--csi-gold);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.55rem;
    margin-bottom:16px;
}

.process-card h4{
    color:var(--csi-blue-dark);
    font-weight:900;
    margin-bottom:8px;
}

.process-card p{
    color:var(--csi-muted);
    margin:0;
}

/* INFO BLOCKS */
.csi-notice{
    background:linear-gradient(135deg,#ffffff,#eef2ff);
    border:1px solid var(--csi-border);
    border-left:6px solid var(--csi-gold);
    border-radius:20px;
    padding:18px 20px;
    box-shadow:var(--shadow-sm);
}

.csi-notice strong{
    color:var(--csi-blue-dark);
}

/* TIMELINE */
.csi-timeline{
    position:relative;
    padding-left:24px;
}

.csi-timeline::before{
    content:"";
    position:absolute;
    left:8px;
    top:6px;
    bottom:6px;
    width:3px;
    border-radius:999px;
    background:linear-gradient(180deg,var(--csi-gold),var(--csi-purple));
}

.csi-timeline-item{
    position:relative;
    padding:0 0 22px 22px;
}

.csi-timeline-item::before{
    content:"";
    position:absolute;
    left:-22px;
    top:4px;
    width:16px;
    height:16px;
    border-radius:50%;
    background:var(--csi-gold);
    border:3px solid #fff;
    box-shadow:0 0 0 4px rgba(250,204,21,.22);
}

.csi-timeline-item h5{
    color:var(--csi-blue-dark);
    font-weight:900;
    margin-bottom:4px;
}

.csi-timeline-item p{
    color:var(--csi-muted);
    margin:0;
}

/* ACCORDION */
.accordion-item{
    border:1px solid var(--csi-border) !important;
    border-radius:18px !important;
    overflow:hidden;
    margin-bottom:12px;
    box-shadow:var(--shadow-sm);
}

.accordion-button{
    font-weight:900;
    color:var(--csi-blue-dark);
    background:#fff;
}

.accordion-button:not(.collapsed){
    color:#fff;
    background:linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
}

.accordion-button:focus{
    box-shadow:none;
}

/* TABLE WRAPPER */
.csi-table-card{
    border-radius:22px;
    overflow:hidden;
    box-shadow:var(--shadow-sm);
    background:#fff;
    border:1px solid var(--csi-border);
}

.csi-table-card .table{
    margin-bottom:0;
}

/* CTA */
.csi-cta{
    position:relative;
    overflow:hidden;
    background:
        radial-gradient(circle at 90% 10%, rgba(250,204,21,.22), transparent 25%),
        linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:#fff;
    border-radius:28px;
    padding:36px;
    box-shadow:var(--shadow-lg);
}

.csi-cta h3{
    font-weight:900;
}

.csi-cta p{
    color:#dbeafe;
}

/* LEGACY SUPPORT */
.text-link{
    color:#cbdcff !important;
    text-decoration:none;
}

.text-link:hover{
    color:var(--csi-gold) !important;
}

.bg-secondary{
    background:linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple)) !important;
}

/* =========================================================
   REQUISITOS ADMISIÓN 2027 - Documento interactivo
========================================================= */

.requisitos-layout{
    display:grid;
    grid-template-columns:280px 1fr;
    gap:28px;
    align-items:start;
}

.requisitos-sidebar{
    position:sticky;
    top:92px;
    background:rgba(255,255,255,.94);
    border:1px solid var(--csi-border);
    border-radius:24px;
    box-shadow:var(--shadow-md);
    padding:18px;
    max-height:calc(100vh - 120px);
    overflow:auto;
}

.requisitos-sidebar-title{
    font-weight:900;
    color:var(--csi-blue-dark);
    margin-bottom:14px;
    display:flex;
    align-items:center;
    gap:8px;
}

.requisitos-nav{
    display:flex;
    flex-direction:column;
    gap:6px;
}

.requisitos-nav a{
    color:var(--csi-text);
    font-weight:800;
    font-size:.92rem;
    padding:10px 12px;
    border-radius:14px;
    display:flex;
    gap:9px;
    align-items:center;
}

.requisitos-nav a span{
    width:26px;
    height:26px;
    border-radius:50%;
    background:linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:#fff;
    font-size:.75rem;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 26px;
}

.requisitos-nav a:hover,
.requisitos-nav a.active{
    background:linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:#fff;
}

.requisitos-nav a:hover span,
.requisitos-nav a.active span{
    background:linear-gradient(135deg,#facc15,#f59e0b);
    color:#111827;
}

.requisito-section{
    scroll-margin-top:110px;
}

.requisito-card{
    border:0;
    border-radius:26px;
    background:rgba(255,255,255,.96);
    box-shadow:var(--shadow-md);
    overflow:hidden;
    margin-bottom:26px;
}

.requisito-card-header{
    background:
        radial-gradient(circle at 90% 10%, rgba(250,204,21,.18), transparent 28%),
        linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:#fff;
    padding:24px 28px;
    display:flex;
    align-items:center;
    gap:16px;
}

.requisito-number{
    width:54px;
    height:54px;
    border-radius:18px;
    background:linear-gradient(135deg,#facc15,#f59e0b);
    color:#111827;
    display:flex;
    align-items:center;
    justify-content:center;
    font-weight:900;
    font-size:1.2rem;
    flex:0 0 54px;
}

.requisito-card-header h3{
    font-weight:900;
    margin:0;
}

.requisito-card-body{
    padding:28px;
}

.requisitos-mobile-menu{
    display:none;
    position:sticky;
    top:72px;
    z-index:50;
    margin-bottom:18px;
}

/* =========================================================
   REGISTRO APODERADO - UX Admisión 2027
========================================================= */

.register-layout{
    display:grid;
    grid-template-columns: 420px 1fr;
    gap:28px;
    align-items:start;
}

.register-side{
    position:sticky;
    top:95px;
    background:
        radial-gradient(circle at 90% 10%, rgba(250,204,21,.22), transparent 28%),
        linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:#fff;
    border-radius:28px;
    padding:30px;
    box-shadow:var(--shadow-lg);
    overflow:hidden;
}

.register-side h2{
    font-weight:900;
}

.register-side p{
    color:#dbeafe;
}

.register-step{
    display:flex;
    gap:14px;
    align-items:flex-start;
    margin-top:20px;
}

.register-step span{
    width:38px;
    height:38px;
    border-radius:50%;
    background:linear-gradient(135deg,#facc15,#f59e0b);
    color:#111827;
    font-weight:900;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 38px;
}

.register-step strong{
    display:block;
    color:#fff;
}

.register-step small{
    color:#cbdcff;
}

.register-card{
    background:rgba(255,255,255,.97);
    border-radius:28px;
    box-shadow:var(--shadow-lg);
    overflow:hidden;
    border:1px solid var(--csi-border);
}

.register-card-header{
    padding:28px;
    background:
        linear-gradient(135deg,rgba(30,27,75,.07),rgba(250,204,21,.12));
    border-bottom:1px solid var(--csi-border);
}

.register-card-header h3{
    color:var(--csi-blue-dark);
    font-weight:900;
    margin:0;
}

.register-card-body{
    padding:28px;
}

.register-section-title{
    color:var(--csi-blue-dark);
    font-weight:900;
    margin:26px 0 16px;
    padding-left:14px;
    border-left:6px solid var(--csi-gold);
}

.register-section-title:first-child{
    margin-top:0;
}

.register-captcha{
    background:linear-gradient(135deg,#f8fafc,#eef2ff);
    border:1px solid var(--csi-border);
    border-radius:20px;
    padding:18px;
    text-align:center;
}

.register-links{
    display:flex;
    justify-content:space-between;
    gap:12px;
    flex-wrap:wrap;
    margin-top:18px;
}

.register-links a{
    font-size:.92rem;
}

.register-progress{
    height:10px;
    border-radius:999px;
    background:#e2e8f0;
    overflow:hidden;
    margin-top:18px;
}

.register-progress span{
    display:block;
    width:100%;
    height:100%;
    background:linear-gradient(90deg,var(--csi-gold),var(--csi-purple),var(--csi-blue));
}

/* AJUSTE CONTACTO */
.page-section{
    padding-top:70px;
    padding-bottom:80px;
}

.csi-card{
    padding:42px;
}

.contact-item{
    display:flex;
    align-items:flex-start;
    gap:20px;
    padding:24px 0;
    border-bottom:1px solid #eef2f7;
}

.contact-item:last-child{
    border-bottom:none;
}

.contact-icon{
    width:58px;
    height:58px;
    border-radius:16px;
    background:linear-gradient(135deg,#243b72,#3b2e86);
    color:#fff;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:22px;
    flex-shrink:0;
}

.enlace-btn{
    min-height:60px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.05rem;
    font-weight:800;
    border-radius:16px;
    white-space:normal;
    text-align:center;
}

.enlace-btn i{
    font-size:1.2rem;
}

.enlace-btn:hover{
    transform:translateY(-2px);
}

/* =========================================================
   NAV SESSION - Portal del Apoderado
========================================================= */

.session-navbar{
    border-bottom:1px solid rgba(226,232,240,.95);
}

.session-navbar .navbar-brand{
    gap:12px;
}

.session-brand-icon{
    width:46px;
    height:46px;
    border-radius:16px;
    background:linear-gradient(135deg,var(--csi-blue-dark),var(--csi-purple));
    color:var(--csi-gold);
    display:flex;
    align-items:center;
    justify-content:center;
    box-shadow:0 10px 22px rgba(91,33,182,.18);
}

.session-brand-icon i{
    font-size:1.35rem;
}

.session-brand-title{
    display:block;
    font-weight:900;
    color:var(--csi-blue-dark);
    line-height:1.1;
}

.session-navbar .navbar-brand small{
    display:block;
    color:var(--csi-muted);
    font-size:.74rem;
    font-weight:800;
    margin-top:2px;
}

.session-user-link{
    background:rgba(30,27,75,.06);
}

.session-dropdown{
    border:0;
    border-radius:18px;
    box-shadow:var(--shadow-md);
    padding:10px;
    min-width:260px;
}

.session-dropdown .dropdown-item{
    border-radius:12px;
    font-weight:700;
    padding:10px 12px;
}

.session-dropdown .dropdown-item:hover{
    background:#eef2ff;
    color:var(--csi-blue-dark);
}

.session-status-badge{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    background:linear-gradient(135deg,#facc15,#f59e0b);
    color:#111827;
    border-radius:999px;
    padding:10px 16px;
    font-weight:900;
    font-size:.86rem;
    box-shadow:0 8px 18px rgba(250,204,21,.25);
}

.session-status-badge i{
    font-size:.55rem;
    color:#16a34a;
}

/* =========================================================
   PORTAL DEL APODERADO · ADMISIÓN 2027
========================================================= */

.portal-dashboard{
    background:
        linear-gradient(
            180deg,
            #eef3ff 0%,
            #f8fafc 320px,
            #ffffff 100%
        );
    min-height: 100vh;
}


/* =========================================================
   BIENVENIDA
========================================================= */

.portal-welcome{
    position: relative;
    overflow: hidden;
    padding: 4.5rem 0 5.5rem;
    color: #ffffff;
    background:
        radial-gradient(
            circle at 85% 15%,
            rgba(250, 204, 21, .26),
            transparent 28%
        ),
        radial-gradient(
            circle at 10% 90%,
            rgba(59, 130, 246, .22),
            transparent 30%
        ),
        linear-gradient(
            135deg,
            #17153b 0%,
            #24225f 55%,
            #34318a 100%
        );
}

.portal-welcome::before{
    content: "";
    position: absolute;
    width: 420px;
    height: 420px;
    top: -230px;
    right: -140px;
    border-radius: 50%;
    border: 1px solid rgba(255,255,255,.12);
}

.portal-welcome::after{
    content: "";
    position: absolute;
    width: 260px;
    height: 260px;
    bottom: -170px;
    left: 8%;
    border-radius: 50%;
    background: rgba(255,255,255,.04);
}

.portal-welcome .container{
    position: relative;
    z-index: 2;
}

.portal-welcome-badge{
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    margin-bottom: 1.2rem;
    padding: .55rem 1rem;
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 999px;
    background: rgba(255,255,255,.09);
    font-size: .85rem;
    font-weight: 700;
    letter-spacing: .03em;
    backdrop-filter: blur(10px);
}

.portal-welcome-badge i{
    color: #facc15;
}

.portal-welcome h1{
    margin: 0 0 1rem;
    font-size: clamp(2.1rem, 4vw, 3.5rem);
    line-height: 1.05;
    font-weight: 800;
    letter-spacing: -.035em;
}

.portal-welcome p{
    max-width: 760px;
    margin: 0;
    color: rgba(255,255,255,.82);
    font-size: 1.08rem;
    line-height: 1.75;
}

.portal-primary-action{
    min-height: 56px;
    border-radius: 16px;
    padding: .9rem 1.4rem;
    font-weight: 800;
    box-shadow: 0 14px 30px rgba(0,0,0,.16);
    transition: transform .25s ease, box-shadow .25s ease;
}

.portal-primary-action:hover{
    transform: translateY(-2px);
    box-shadow: 0 18px 38px rgba(0,0,0,.22);
}


/* =========================================================
   CONTENIDO GENERAL
========================================================= */

.portal-content{
    position: relative;
    z-index: 5;
    margin-top: 0;
    padding-top: 1rem;
    padding-bottom: 5rem;
}

.portal-section-heading{
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 1.5rem;
}

.portal-section-heading h2{
    margin: .25rem 0 .4rem;
    color: #1e1b4b;
    font-size: clamp(1.55rem, 2.5vw, 2rem);
    font-weight: 800;
    letter-spacing: -.025em;
}

.portal-section-heading p{
    max-width: 720px;
    margin: 0;
    color: #64748b;
    line-height: 1.65;
}

.portal-section-label{
    display: inline-block;
    color: #3730a3;
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.portal-section-heading-action{
    flex-shrink: 0;
}

.portal-section-heading-action .btn{
    border-radius: 12px;
    font-weight: 700;
}


/* =========================================================
   TARJETAS RESUMEN
========================================================= */

.portal-summary-section{
    margin-bottom: 3rem;
}

.portal-summary-card{
    position: relative;
    min-height: 205px;
    height: 100%;
    overflow: hidden;
    padding: 1.45rem;
    border: 1px solid rgba(148,163,184,.22);
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 14px 34px rgba(15,23,42,.07);
    transition:
        transform .25s ease,
        box-shadow .25s ease,
        border-color .25s ease;
}

.portal-summary-card:hover{
    transform: translateY(-5px);
    box-shadow: 0 22px 48px rgba(15,23,42,.12);
    border-color: rgba(79,70,229,.18);
}

.portal-summary-card::after{
    content: "";
    position: absolute;
    width: 110px;
    height: 110px;
    right: -40px;
    bottom: -45px;
    border-radius: 50%;
    background: currentColor;
    opacity: .055;
}

.portal-summary-card-top{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.2rem;
}

.portal-summary-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 15px;
    font-size: 1.25rem;
}

.portal-summary-status{
    padding: .35rem .7rem;
    border-radius: 999px;
    background: #f8fafc;
    color: #64748b;
    font-size: .72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.portal-summary-value{
    margin-bottom: .2rem;
    color: #0f172a;
    font-size: 2.25rem;
    line-height: 1;
    font-weight: 800;
}

.portal-summary-card h3{
    margin: .5rem 0 .4rem;
    color: #1e293b;
    font-size: 1rem;
    font-weight: 800;
}

.portal-summary-card p{
    margin: 0;
    color: #64748b;
    font-size: .9rem;
    line-height: 1.55;
}

.portal-summary-card-primary{
    color: #4338ca;
}

.portal-summary-card-primary .portal-summary-icon{
    color: #4338ca;
    background: #eef2ff;
}

.portal-summary-card-info{
    color: #0369a1;
}

.portal-summary-card-info .portal-summary-icon{
    color: #0369a1;
    background: #e0f2fe;
}

.portal-summary-card-warning{
    color: #b45309;
}

.portal-summary-card-warning .portal-summary-icon{
    color: #b45309;
    background: #fef3c7;
}

.portal-summary-card-success{
    color: #15803d;
}

.portal-summary-card-success .portal-summary-icon{
    color: #15803d;
    background: #dcfce7;
}

.portal-summary-card-matricula{
    color: #7c3aed;
}

.portal-summary-card-matricula .portal-summary-icon{
    color: #7c3aed;
    background: #ede9fe;
}

.portal-summary-guidance,
.portal-empty-summary{
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-top: 1.4rem;
    padding: 1.1rem 1.25rem;
    border: 1px solid #dbeafe;
    border-radius: 18px;
    background: linear-gradient(135deg, #eff6ff, #ffffff);
}

.portal-summary-guidance-icon,
.portal-empty-summary-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    border-radius: 14px;
    color: #d97706;
    background: #fef3c7;
    font-size: 1.2rem;
}

.portal-summary-guidance strong,
.portal-empty-summary h3{
    color: #1e1b4b;
}

.portal-summary-guidance p,
.portal-empty-summary p{
    color: #64748b;
}

.portal-empty-summary-content{
    flex: 1;
}

.portal-empty-summary-action{
    flex-shrink: 0;
}


/* =========================================================
   ALERTA MATRÍCULA
========================================================= */

.portal-matricula-alert{
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 1.2rem;
    margin-bottom: 3rem;
    padding: 1.4rem 1.5rem;
    border: 1px solid #bbf7d0;
    border-radius: 22px;
    background: linear-gradient(135deg, #f0fdf4, #ffffff);
    box-shadow: 0 12px 30px rgba(21,128,61,.08);
}

.portal-matricula-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 58px;
    height: 58px;
    border-radius: 18px;
    color: #15803d;
    background: #dcfce7;
    font-size: 1.45rem;
}

.portal-matricula-content h2{
    margin: .25rem 0 .35rem;
    color: #14532d;
    font-size: 1.25rem;
    font-weight: 800;
}

.portal-matricula-content p{
    margin: 0;
    color: #4b5563;
}

.portal-matricula-action .btn{
    border-radius: 14px;
    font-weight: 800;
}


/* =========================================================
   SECCIÓN POSTULANTES
========================================================= */

.portal-postulantes-section{
    margin-top: 3rem;
}

.portal-postulantes-toolbar{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.4rem;
    padding: 1rem 1.2rem;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    background: #ffffff;
}

.portal-postulantes-count,
.portal-postulantes-help{
    display: flex;
    align-items: center;
    gap: .6rem;
    color: #475569;
    font-size: .9rem;
}

.portal-postulantes-count{
    font-weight: 800;
    color: #1e1b4b;
}

.portal-postulantes-help i{
    color: #4f46e5;
}

.portal-empty-state{
    display: grid;
    grid-template-columns: 160px 1fr;
    align-items: center;
    gap: 2rem;
    padding: 2.5rem;
    border: 1px dashed #cbd5e1;
    border-radius: 24px;
    background: #ffffff;
}

.portal-empty-state-visual{
    display: flex;
    align-items: center;
    justify-content: center;
}

.portal-empty-state-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 110px;
    height: 110px;
    border-radius: 28px;
    color: #4f46e5;
    background: linear-gradient(135deg, #eef2ff, #e0e7ff);
    font-size: 3rem;
}

.portal-empty-state-content h3{
    margin: .3rem 0 .75rem;
    color: #1e1b4b;
    font-size: 1.5rem;
    font-weight: 800;
}

.portal-empty-state-content p{
    max-width: 650px;
    color: #64748b;
    line-height: 1.7;
}

.portal-empty-state-content .btn{
    border-radius: 14px;
    font-weight: 800;
}


/* =========================================================
   TARJETA DEL POSTULANTE
========================================================= */

.portal-applicant-card{
    position: relative;
    height: 100%;
    overflow: hidden;
    border: 1px solid rgba(148,163,184,.24);
    border-radius: 24px;
    background: #ffffff;
    box-shadow: 0 16px 38px rgba(15,23,42,.08);
    transition:
        transform .3s ease,
        box-shadow .3s ease,
        border-color .3s ease;
}

.portal-applicant-card:hover{
    transform: translateY(-5px);
    box-shadow: 0 24px 52px rgba(15,23,42,.13);
    border-color: rgba(79,70,229,.22);
}

.portal-applicant-card-accent{
    height: 6px;
    background: linear-gradient(90deg, #f59e0b, #facc15);
}

.applicant-status-pending .portal-applicant-card-accent{
    background: linear-gradient(90deg, #f59e0b, #fbbf24);
}

.applicant-status-advanced .portal-applicant-card-accent{
    background: linear-gradient(90deg, #2563eb, #60a5fa);
}

.applicant-status-ready .portal-applicant-card-accent{
    background: linear-gradient(90deg, #16a34a, #4ade80);
}

.applicant-status-confirmed .portal-applicant-card-accent{
    background: linear-gradient(90deg, #7c3aed, #a78bfa);
}

.portal-applicant-card-body{
    padding: 1.5rem;
}

.portal-applicant-header{
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 1rem;
}

.portal-applicant-avatar{
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 66px;
    height: 66px;
    border-radius: 20px;
    color: #ffffff;
    background: linear-gradient(145deg, #312e81, #4f46e5);
    box-shadow: 0 10px 24px rgba(49,46,129,.2);
    font-size: 1.25rem;
    font-weight: 800;
    letter-spacing: .03em;
}

.portal-applicant-avatar-status{
    position: absolute;
    right: -4px;
    bottom: -4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border: 3px solid #ffffff;
    border-radius: 50%;
    color: #ffffff;
    background: #f59e0b;
    font-size: .72rem;
}

.applicant-status-ready .portal-applicant-avatar-status{
    background: #16a34a;
}

.applicant-status-confirmed .portal-applicant-avatar-status{
    background: #7c3aed;
}

.portal-applicant-code{
    color: #94a3b8;
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.portal-applicant-identity h3{
    margin: .25rem 0 .35rem;
    color: #172554;
    font-size: 1.2rem;
    font-weight: 800;
    line-height: 1.25;
}

.portal-applicant-course{
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    color: #475569;
    font-size: .9rem;
    font-weight: 600;
}

.portal-applicant-course i{
    color: #4f46e5;
}

.portal-status-badge{
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .45rem .7rem;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 800;
    white-space: nowrap;
}

.portal-status-pending{
    color: #92400e;
    background: #fef3c7;
}

.portal-status-advanced{
    color: #1d4ed8;
    background: #dbeafe;
}

.portal-status-ready{
    color: #166534;
    background: #dcfce7;
}

.portal-status-confirmed{
    color: #6d28d9;
    background: #ede9fe;
}

.portal-applicant-information{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .75rem;
    margin: 1.35rem 0;
}

.portal-applicant-info-item{
    display: flex;
    align-items: center;
    gap: .7rem;
    padding: .85rem;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    background: #f8fafc;
}

.portal-applicant-info-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    border-radius: 11px;
    color: #4338ca;
    background: #eef2ff;
}

.portal-applicant-info-item small{
    display: block;
    margin-bottom: .1rem;
    color: #94a3b8;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.portal-applicant-info-item strong{
    display: block;
    color: #1e293b;
    font-size: .88rem;
}

.portal-applicant-progress{
    padding: 1rem;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    background: linear-gradient(135deg, #f8fafc, #ffffff);
}

.portal-applicant-progress-heading{
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .8rem;
}

.portal-applicant-progress-heading span{
    display: block;
    color: #1e293b;
    font-weight: 800;
}

.portal-applicant-progress-heading small{
    display: block;
    margin-top: .1rem;
    color: #64748b;
    font-size: .78rem;
}

.portal-applicant-progress-heading strong{
    color: #1e1b4b;
    font-size: 1.15rem;
}

.portal-progress-track{
    height: 10px;
    border-radius: 999px;
    background: #e2e8f0;
}

.portal-progress-value{
    border-radius: 999px;
    transition: width .6s ease;
}

.portal-progress-pending{
    background: linear-gradient(90deg, #f59e0b, #fbbf24);
}

.portal-progress-advanced{
    background: linear-gradient(90deg, #2563eb, #60a5fa);
}

.portal-progress-ready{
    background: linear-gradient(90deg, #16a34a, #4ade80);
}

.portal-progress-confirmed{
    background: linear-gradient(90deg, #7c3aed, #a78bfa);
}

.portal-applicant-progress-footer{
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-top: .8rem;
    font-size: .8rem;
    font-weight: 700;
}

.portal-applicant-progress-footer span{
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.portal-applicant-actions{
    display: flex;
    gap: .75rem;
    margin-top: 1rem;
}

.portal-applicant-actions .btn{
    min-height: 48px;
    border-radius: 13px;
    font-weight: 800;
}

.portal-manage-button{
    flex: 1;
    display: flex;
    align-items: center;
}

.portal-manage-chevron{
    transition: transform .25s ease;
}

.portal-manage-button.is-open .portal-manage-chevron{
    transform: rotate(180deg);
}

.portal-confirm-button{
    flex-shrink: 0;
}

.portal-applicant-documents-collapse{
    margin-top: 1rem;
}

.portal-applicant-documents-container{
    padding-top: 1rem;
    border-top: 1px solid #e2e8f0;
}


/* =========================================================
   PANEL DOCUMENTOS
========================================================= */

.portal-documents-panel{
    padding: 1rem 0 0;
}

.portal-documents-header{
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.portal-documents-header h4{
    margin: .25rem 0 .35rem;
    color: #1e1b4b;
    font-size: 1.15rem;
    font-weight: 800;
}

.portal-documents-header p{
    margin: 0;
    color: #64748b;
    font-size: .9rem;
}

.portal-documents-progress-mini{
    flex-shrink: 0;
    min-width: 90px;
    padding: .7rem .9rem;
    border-radius: 14px;
    text-align: center;
    background: #eef2ff;
}

.portal-documents-progress-mini span{
    display: block;
    color: #64748b;
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
}

.portal-documents-progress-mini strong{
    color: #312e81;
    font-size: 1.15rem;
}

.portal-documents-notice{
    display: flex;
    gap: .8rem;
    margin-bottom: 1rem;
    padding: .9rem 1rem;
    border: 1px solid #dbeafe;
    border-radius: 14px;
    background: #eff6ff;
}

.portal-documents-notice-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    border-radius: 11px;
    color: #1d4ed8;
    background: #dbeafe;
}

.portal-documents-notice strong{
    color: #1e3a8a;
    font-size: .9rem;
}

.portal-documents-notice p{
    color: #475569;
    font-size: .82rem;
    line-height: 1.5;
}

.portal-documents-list{
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.portal-document-item{
    display: grid;
    grid-template-columns: auto auto 1fr auto;
    align-items: center;
    gap: .8rem;
    padding: 1rem;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    background: #ffffff;
    transition:
        border-color .2s ease,
        background .2s ease,
        box-shadow .2s ease;
}

.portal-document-item:hover{
    border-color: #c7d2fe;
    box-shadow: 0 10px 24px rgba(15,23,42,.06);
}

.portal-document-item.document-delivered{
    border-color: #bbf7d0;
    background: linear-gradient(135deg, #f0fdf4, #ffffff);
}

.portal-document-order{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 10px;
    color: #64748b;
    background: #f1f5f9;
    font-size: .78rem;
    font-weight: 800;
}

.document-delivered .portal-document-order{
    color: #ffffff;
    background: #16a34a;
}

.portal-document-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 13px;
    color: #4338ca;
    background: #eef2ff;
    font-size: 1.05rem;
}

.document-delivered .portal-document-icon{
    color: #15803d;
    background: #dcfce7;
}

.portal-document-title-row{
    display: flex;
    align-items: center;
    gap: .7rem;
    flex-wrap: wrap;
}

.portal-document-content h5{
    margin: 0;
    color: #1e293b;
    font-size: .95rem;
    font-weight: 800;
}

.portal-document-content p{
    margin: .3rem 0 0;
    color: #64748b;
    font-size: .79rem;
    line-height: 1.45;
}

.portal-document-status{
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .25rem .5rem;
    border-radius: 999px;
    font-size: .64rem;
    font-weight: 800;
    text-transform: uppercase;
}

.portal-document-status-success{
    color: #166534;
    background: #dcfce7;
}

.portal-document-status-pending{
    color: #92400e;
    background: #fef3c7;
}

.portal-document-template-link{
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin-top: .45rem;
    padding: 0;
    border: 0;
    color: #4338ca;
    background: transparent;
    font-size: .78rem;
    font-weight: 700;
    text-decoration: none;
}

.portal-document-template-link:hover{
    color: #312e81;
    text-decoration: underline;
}

.portal-document-actions{
    min-width: 120px;
}

.portal-document-actions .btn{
    border-radius: 11px;
    font-size: .8rem;
    font-weight: 800;
}

.portal-document-action-group{
    display: flex;
    gap: .4rem;
}

.portal-document-action-group .btn{
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .5rem .65rem;
}

.portal-documents-footer{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1rem;
    padding: 1rem;
    border-radius: 15px;
    background: #f8fafc;
}

.portal-documents-footer-status{
    display: flex;
    align-items: center;
    gap: .8rem;
}

.portal-documents-complete-icon,
.portal-documents-pending-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    border-radius: 13px;
    font-size: 1.1rem;
}

.portal-documents-complete-icon{
    color: #15803d;
    background: #dcfce7;
}

.portal-documents-pending-icon{
    color: #b45309;
    background: #fef3c7;
}

.portal-documents-footer strong{
    color: #1e293b;
    font-size: .88rem;
}

.portal-documents-footer p{
    color: #64748b;
    font-size: .78rem;
}


/* =========================================================
   MODAL DOCUMENTO
========================================================= */

.portal-document-modal,
.portal-confirm-modal{
    overflow: hidden;
    border: 0;
    border-radius: 24px;
    box-shadow: 0 28px 70px rgba(15,23,42,.25);
}

.portal-document-modal .modal-header,
.portal-confirm-modal .modal-header{
    padding: 1.35rem 1.5rem;
    border-bottom: 1px solid #e2e8f0;
    background: #ffffff;
}

.portal-document-modal .modal-title,
.portal-confirm-modal .modal-title{
    margin-top: .2rem;
    color: #1e1b4b;
    font-size: 1.35rem;
    font-weight: 800;
}

.portal-document-modal .modal-body,
.portal-confirm-modal .modal-body{
    padding: 1.5rem;
}

.portal-document-modal .modal-footer,
.portal-confirm-modal .modal-footer{
    padding: 1rem 1.5rem;
    border-top: 1px solid #e2e8f0;
    background: #f8fafc;
}

.portal-document-modal .modal-footer .btn,
.portal-confirm-modal .modal-footer .btn{
    min-width: 135px;
    min-height: 46px;
    border-radius: 12px;
    font-weight: 800;
}

.portal-document-modal-summary{
    display: flex;
    align-items: center;
    gap: .9rem;
    margin-bottom: 1.25rem;
    padding: 1rem;
    border: 1px solid #e0e7ff;
    border-radius: 16px;
    background: linear-gradient(135deg, #eef2ff, #ffffff);
}

.portal-document-modal-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 15px;
    color: #ffffff;
    background: linear-gradient(145deg, #312e81, #4f46e5);
    font-size: 1.25rem;
}

.portal-document-modal-summary small{
    display: block;
    color: #94a3b8;
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
}

.portal-document-modal-summary strong{
    display: block;
    color: #1e1b4b;
    font-size: .98rem;
}

.portal-document-modal-summary span{
    display: block;
    margin-top: .1rem;
    color: #64748b;
    font-size: .82rem;
}

.portal-upload-zone{
    position: relative;
    overflow: hidden;
    border: 2px dashed #c7d2fe;
    border-radius: 20px;
    background: #fafaff;
    transition:
        border-color .2s ease,
        background .2s ease,
        transform .2s ease;
}

.portal-upload-zone:hover,
.portal-upload-zone.is-dragging{
    border-color: #4f46e5;
    background: #eef2ff;
    transform: translateY(-1px);
}

.portal-upload-zone.is-invalid{
    border-color: #dc2626;
    background: #fef2f2;
}

.portal-upload-zone.has-file{
    border-color: #16a34a;
    background: #f0fdf4;
}

.portal-upload-input{
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.portal-upload-label{
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    min-height: 145px;
    margin: 0;
    padding: 1.15rem;
    cursor: pointer;
    text-align: center;
    transition:
        min-height .2s ease,
        padding .2s ease,
        opacity .2s ease;
}

.portal-upload-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    margin-bottom: .65rem;
    border-radius: 14px;
    color: #4338ca;
    background: #e0e7ff;
    font-size: 1.25rem;
}

.portal-upload-label strong{
    color: #1e1b4b;
    font-size: 1.05rem;
}

.portal-upload-label span{
    margin-top: .45rem;
    color: #64748b;
    font-size: .9rem;
}

.portal-upload-label small{
    margin-top: .45rem;
    color: #94a3b8;
    font-size: .78rem;
}

.portal-selected-file{
    position: relative;
    display: flex;
    align-items: center;
    gap: .8rem;
    margin-top: .75rem;
    padding: .85rem 1rem;
    border: 1px solid #86efac;
    border-radius: 15px;
    background: #f0fdf4;
    box-shadow: 0 8px 20px rgba(22, 163, 74, .08);
}

.portal-selected-file-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    color: #15803d;
    background: #dcfce7;
}

.portal-selected-file-info{
    flex: 1;
    min-width: 0;
}

.portal-selected-file-info strong{
    display: block;
    overflow: hidden;
    color: #166534;
    font-size: .88rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.portal-selected-file-info span{
    color: #64748b;
    font-size: .76rem;
}

.portal-upload-help{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .55rem;
    margin-top: .75rem;
    padding: .75rem;
    border-radius: 13px;
    background: #f8fafc;
}

.portal-upload-help > div{
    font-size: .74rem;
    line-height: 1.35;
}

.portal-upload-help > div{
    display: flex;
    align-items: flex-start;
    gap: .65rem;
    color: #475569;
    font-size: .82rem;
}

.portal-upload-help i{
    margin-top: .1rem;
    color: #4f46e5;
}

.portal-upload-progress{
    margin-top: 1rem;
    padding: 1rem;
    border-radius: 15px;
    background: #eef2ff;
}

.portal-upload-progress-heading{
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .6rem;
    color: #312e81;
    font-size: .83rem;
    font-weight: 800;
}

.portal-upload-progress .progress{
    height: 10px;
    border-radius: 999px;
    background: #c7d2fe;
}

.portal-upload-progress .progress-bar{
    border-radius: 999px;
    background: linear-gradient(90deg, #4338ca, #6366f1);
}

.portal-upload-warning{
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    margin-top: 1rem;
    padding: .9rem 1rem;
    border: 1px solid #fde68a;
    border-radius: 14px;
    color: #78350f;
    background: #fffbeb;
    font-size: .82rem;
}


/* =========================================================
   MODAL CONFIRMACIÓN
========================================================= */

.portal-confirm-visual{
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.2rem;
    text-align: left;
}

.portal-confirm-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 66px;
    width: 66px;
    height: 66px;
    border-radius: 20px;
    color: #ffffff;
    background: linear-gradient(145deg, #15803d, #22c55e);
    font-size: 1.65rem;
    box-shadow: 0 12px 26px rgba(21,128,61,.18);
}

.portal-confirm-visual h3{
    margin: 0 0 .25rem;
    color: #14532d;
    font-size: 1.2rem;
    font-weight: 800;
}

.portal-confirm-visual p{
    margin: 0;
    color: #64748b;
}

.portal-confirm-visual strong{
    display: block;
    margin-top: .2rem;
    color: #1e1b4b;
}

.portal-confirm-summary{
    display: grid;
    gap: .7rem;
    margin-bottom: 1rem;
}

.portal-confirm-summary-item{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .8rem .9rem;
    border: 1px solid #e2e8f0;
    border-radius: 13px;
    background: #f8fafc;
}

.portal-confirm-summary-item span{
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    color: #64748b;
    font-size: .82rem;
}

.portal-confirm-summary-item strong{
    color: #1e293b;
    font-size: .84rem;
    text-align: right;
}

.portal-confirm-warning{
    display: flex;
    gap: .8rem;
    margin-bottom: 1rem;
    padding: 1rem;
    border: 1px solid #fde68a;
    border-radius: 15px;
    background: #fffbeb;
}

.portal-confirm-warning-icon{
    color: #d97706;
    font-size: 1.1rem;
}

.portal-confirm-warning strong{
    color: #78350f;
    font-size: .9rem;
}

.portal-confirm-warning p{
    color: #92400e;
    font-size: .81rem;
    line-height: 1.5;
}

.portal-confirm-checkbox{
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: 1rem;
    border: 1px solid #c7d2fe;
    border-radius: 15px;
    background: #eef2ff;
    cursor: pointer;
}

.portal-confirm-checkbox input{
    position: absolute;
    opacity: 0;
}

.portal-confirm-checkbox-box{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    border: 2px solid #818cf8;
    border-radius: 7px;
    color: transparent;
    background: #ffffff;
    transition: all .2s ease;
}

.portal-confirm-checkbox input:checked + .portal-confirm-checkbox-box{
    border-color: #4f46e5;
    color: #ffffff;
    background: #4f46e5;
}

.portal-confirm-checkbox-text{
    color: #374151;
    font-size: .84rem;
    line-height: 1.5;
}


/* =========================================================
   MENSAJES
========================================================= */

.portal-alert{
    border: 0;
    border-radius: 15px;
    box-shadow: 0 10px 28px rgba(15,23,42,.08);
}

/* Ajuste de separación y contraste en encabezados de sección */

.portal-summary-section{
    padding-top: 1.5rem;
}

.portal-summary-section .portal-section-heading{
    padding-top: 1rem;
}

.portal-summary-section .portal-section-label{
    color: #4f46e5;
    font-weight: 800;
    letter-spacing: .1em;
    margin-bottom: .8rem;
}

.portal-summary-section .portal-section-label::after{
    content: "";
    display: block;
    width: 42px;
    height: 3px;
    margin-top: .55rem;
    border-radius: 999px;
    background: #4f46e5;
}

.portal-summary-section .portal-section-heading h2{
    margin-top: .35rem;
    margin-bottom: .5rem;
}

/* =========================================================
   REGISTRO DE POSTULANTE · ADMISIÓN 2027
========================================================= */

.applicant-registration-page{
    min-height: 100vh;
    background:
        linear-gradient(
            180deg,
            #eef2ff 0,
            #f8fafc 360px,
            #ffffff 100%
        );
}

.applicant-registration-hero{
    position: relative;
    overflow: hidden;
    padding: 3.5rem 0 5rem;
    color: #ffffff;
    background:
        radial-gradient(
            circle at 85% 15%,
            rgba(250,204,21,.24),
            transparent 27%
        ),
        linear-gradient(
            135deg,
            #17153b,
            #292665 58%,
            #37338b
        );
}

.applicant-registration-hero::after{
    content: "";
    position: absolute;
    width: 340px;
    height: 340px;
    right: -150px;
    top: -170px;
    border: 1px solid rgba(255,255,255,.13);
    border-radius: 50%;
}

.applicant-registration-hero .container{
    position: relative;
    z-index: 2;
}

.applicant-registration-badge{
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1rem;
    padding: .5rem .9rem;
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 999px;
    background: rgba(255,255,255,.09);
    font-size: .8rem;
    font-weight: 800;
}

.applicant-registration-badge i{
    color: #facc15;
}

.applicant-registration-hero h1{
    margin: 0 0 .8rem;
    font-size: clamp(2rem, 4vw, 3.2rem);
    font-weight: 800;
    letter-spacing: -.035em;
}

.applicant-registration-hero p{
    max-width: 720px;
    margin: 0;
    color: rgba(255,255,255,.82);
    font-size: 1rem;
    line-height: 1.7;
}

.applicant-registration-user{
    display: flex;
    align-items: center;
    gap: .8rem;
    padding: 1rem;
    border: 1px solid rgba(255,255,255,.17);
    border-radius: 18px;
    background: rgba(255,255,255,.09);
    backdrop-filter: blur(10px);
}

.applicant-registration-user-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border-radius: 14px;
    color: #1e1b4b;
    background: #facc15;
    font-size: 1.15rem;
}

.applicant-registration-user small,
.applicant-registration-user strong{
    display: block;
}

.applicant-registration-user small{
    color: rgba(255,255,255,.7);
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
}

.applicant-registration-user strong{
    color: #ffffff;
    font-size: .9rem;
}

.applicant-registration-content{
    position: relative;
    z-index: 5;
    margin-top: -2.2rem;
    padding-bottom: 5rem;
}

.applicant-registration-message{
    margin-bottom: 1.2rem;
}

.applicant-registration-form{
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.registration-card{
    overflow: hidden;
    border: 1px solid #e2e8f0;
    border-radius: 24px;
    background: #ffffff;
    box-shadow: 0 18px 42px rgba(15,23,42,.08);
}

.registration-card-header{
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1.4rem 1.5rem;
    border-bottom: 1px solid #e2e8f0;
    background:
        linear-gradient(
            135deg,
            #f8fafc,
            #ffffff
        );
}

.registration-step-number{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    border-radius: 14px;
    color: #ffffff;
    background: linear-gradient(145deg, #312e81, #4f46e5);
    box-shadow: 0 8px 20px rgba(49,46,129,.18);
    font-weight: 800;
}

.registration-card-header h2{
    margin: .2rem 0 .35rem;
    color: #1e1b4b;
    font-size: 1.35rem;
    font-weight: 800;
}

.registration-card-header p{
    margin: 0;
    color: #64748b;
    font-size: .88rem;
    line-height: 1.55;
}

.registration-card-body{
    padding: 1.5rem;
}

.registration-card .form-label{
    color: #334155;
    font-size: .86rem;
    font-weight: 800;
}

.registration-card .form-control,
.registration-card .form-select{
    min-height: 52px;
    border-color: #cbd5e1;
    border-radius: 13px;
    font-size: .94rem;
}

.registration-card .form-control:focus,
.registration-card .form-select:focus{
    border-color: #6366f1;
    box-shadow: 0 0 0 .22rem rgba(99,102,241,.13);
}

.registration-required{
    color: #dc2626;
}

.registration-optional{
    margin-left: .3rem;
    color: #94a3b8;
    font-size: .67rem;
    font-weight: 700;
    text-transform: uppercase;
}

.registration-level-status{
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-top: 1rem;
    padding: .85rem 1rem;
    border: 1px solid #dbeafe;
    border-radius: 14px;
    color: #475569;
    background: #eff6ff;
    font-size: .82rem;
}

.registration-level-status i{
    color: #2563eb;
}

.registration-foreign-box{
    padding: 1rem;
    border: 1px solid #c7d2fe;
    border-radius: 16px;
    background: #eef2ff;
}

.registration-switch{
    display: flex;
    align-items: center;
    gap: .85rem;
    margin: 0;
    cursor: pointer;
}

.registration-switch input{
    position: absolute;
    opacity: 0;
}

.registration-switch-control{
    position: relative;
    flex: 0 0 46px;
    width: 46px;
    height: 26px;
    border-radius: 999px;
    background: #cbd5e1;
    transition: background .2s ease;
}

.registration-switch-control::after{
    content: "";
    position: absolute;
    width: 20px;
    height: 20px;
    top: 3px;
    left: 3px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 2px 6px rgba(15,23,42,.2);
    transition: transform .2s ease;
}

.registration-switch input:checked + .registration-switch-control{
    background: #4f46e5;
}

.registration-switch input:checked + .registration-switch-control::after{
    transform: translateX(20px);
}

.registration-switch-content strong,
.registration-switch-content small{
    display: block;
}

.registration-switch-content strong{
    color: #312e81;
    font-size: .9rem;
}

.registration-switch-content small{
    margin-top: .15rem;
    color: #64748b;
    font-size: .76rem;
}

.registration-field-help{
    display: flex;
    align-items: center;
    gap: .35rem;
    margin-top: .4rem;
    color: #64748b;
    font-size: .72rem;
}

.registration-field-help i{
    color: #16a34a;
}

.registration-declaration{
    display: flex;
    align-items: flex-start;
    gap: .85rem;
    padding: 1.1rem;
    border: 1px solid #c7d2fe;
    border-radius: 17px;
    background: #eef2ff;
    cursor: pointer;
}

.registration-declaration input{
    position: absolute;
    opacity: 0;
}

.registration-declaration-check{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 26px;
    width: 26px;
    height: 26px;
    border: 2px solid #818cf8;
    border-radius: 8px;
    color: transparent;
    background: #ffffff;
    transition: all .2s ease;
}

.registration-declaration input:checked + .registration-declaration-check{
    border-color: #4f46e5;
    color: #ffffff;
    background: #4f46e5;
}

.registration-declaration strong,
.registration-declaration small{
    display: block;
}

.registration-declaration strong{
    color: #312e81;
    font-size: .9rem;
}

.registration-declaration small{
    margin-top: .25rem;
    color: #475569;
    font-size: .8rem;
    line-height: 1.55;
}

.registration-actions{
    display: flex;
    justify-content: flex-end;
    gap: .8rem;
    margin-top: 1.4rem;
}

.registration-actions .btn{
    min-height: 50px;
    border-radius: 13px;
    font-weight: 800;
}

.registration-validation-error{
    display: block;
    margin-top: .35rem;
    color: #dc2626;
    font-size: .76rem;
    font-weight: 700;
}

.registration-capacity-modal{
    overflow: hidden;
    border: 0;
    border-radius: 24px;
    box-shadow: 0 28px 70px rgba(15,23,42,.24);
}

.registration-capacity-modal .modal-header{
    padding: 1.3rem 1.4rem;
    border-bottom: 1px solid #e2e8f0;
}

.registration-capacity-modal .modal-title{
    margin-top: .2rem;
    color: #1e1b4b;
    font-size: 1.25rem;
    font-weight: 800;
}

.registration-capacity-modal .modal-body{
    padding: 1.4rem;
}

.registration-capacity-modal .modal-footer{
    padding: 1rem 1.4rem;
    border-top: 1px solid #e2e8f0;
    background: #f8fafc;
}

.registration-capacity-modal .modal-footer .btn{
    min-height: 46px;
    border-radius: 12px;
    font-weight: 800;
}

.registration-capacity-intro,
.registration-waiting-list,
.registration-fee-notice{
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    padding: .9rem 1rem;
    border-radius: 14px;
}

.registration-capacity-intro{
    margin-bottom: 1rem;
    color: #312e81;
    background: #eef2ff;
}

.registration-waiting-list{
    margin-top: 1rem;
    color: #1e3a8a;
    background: #eff6ff;
}

.registration-fee-notice{
    margin-top: .75rem;
    color: #854d0e;
    background: #fefce8;
}

.registration-capacity-intro p,
.registration-waiting-list p,
.registration-fee-notice p{
    margin: 0;
    font-size: .82rem;
    line-height: 1.5;
}

.registration-capacity-data{
    overflow: hidden;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
}

.registration-capacity-question{
    margin: 1.1rem 0 0;
    color: #1e1b4b;
    font-weight: 800;
    text-align: center;
}

/* =========================================================
   MODAL DATOS DE TRANSFERENCIA
========================================================= */

.portal-transfer-modal{
    overflow: hidden;
    border: 0;
    border-radius: 24px;
    box-shadow: 0 28px 70px rgba(15,23,42,.25);
}

.portal-transfer-modal .modal-header{
    padding: 1.35rem 1.5rem;
    border-bottom: 1px solid #e2e8f0;
}

.portal-transfer-modal .modal-title{
    margin-top: .2rem;
    color: #1e1b4b;
    font-size: 1.3rem;
    font-weight: 800;
}

.portal-transfer-modal .modal-body{
    padding: 1.5rem;
}

.portal-transfer-modal .modal-footer{
    padding: 1rem 1.5rem;
    border-top: 1px solid #e2e8f0;
    background: #f8fafc;
}

.portal-transfer-modal .modal-footer .btn{
    min-height: 46px;
    border-radius: 12px;
    font-weight: 800;
}

.portal-transfer-heading{
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.2rem;
}

.portal-transfer-bank-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 56px;
    width: 56px;
    height: 56px;
    border-radius: 18px;
    color: #ffffff;
    background: linear-gradient(145deg, #312e81, #4f46e5);
    font-size: 1.4rem;
}

.portal-transfer-heading h3{
    margin: 0 0 .2rem;
    color: #1e1b4b;
    font-size: 1.15rem;
    font-weight: 800;
}

.portal-transfer-heading p{
    color: #64748b;
    font-size: .86rem;
}

.portal-transfer-details{
    overflow: hidden;
    margin-bottom: 1rem;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
}

.portal-transfer-row{
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 1rem;
    padding: .9rem 1rem;
    border-bottom: 1px solid #e2e8f0;
    background: #ffffff;
}

.portal-transfer-row:last-child{
    border-bottom: 0;
}

.portal-transfer-row span{
    color: #64748b;
    font-size: .8rem;
    font-weight: 700;
}

.portal-transfer-row strong{
    color: #1e293b;
    font-size: .86rem;
    text-align: right;
}

.portal-transfer-email{
    display: flex;
    align-items: flex-start;
    gap: .8rem;
    margin-bottom: 1rem;
    padding: 1rem;
    border: 1px solid #bfdbfe;
    border-radius: 15px;
    background: #eff6ff;
}

.portal-transfer-email i{
    color: #2563eb;
    font-size: 1.1rem;
}

.portal-transfer-email strong{
    display: block;
    margin-bottom: .2rem;
    color: #1e3a8a;
}

.portal-transfer-email p{
    color: #475569;
    font-size: .82rem;
    line-height: 1.55;
}

.portal-transfer-email a{
    color: #1d4ed8;
    font-weight: 800;
}

.portal-transfer-amount{
    padding: 1.2rem;
    border-radius: 17px;
    color: #ffffff;
    text-align: center;
    background:
        radial-gradient(
            circle at top right,
            rgba(250,204,21,.22),
            transparent 35%
        ),
        linear-gradient(
            135deg,
            #17153b,
            #312e81
        );
}

.portal-transfer-amount span{
    display: block;
    color: #facc15;
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.portal-transfer-amount strong{
    display: block;
    margin: .4rem 0;
    font-size: 2rem;
    font-weight: 800;
}

.portal-transfer-amount p{
    color: rgba(255,255,255,.78);
    font-size: .8rem;
    line-height: 1.5;
}

.portal-transfer-warning{
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    margin-top: 1rem;
    padding: .9rem 1rem;
    border: 1px solid #fde68a;
    border-radius: 14px;
    color: #78350f;
    background: #fffbeb;
    font-size: .8rem;
}

/* =====================================================
   TARJETA PEI
===================================================== */

.portal-pei-box{

    display:flex;
    gap:1rem;

    margin-top:1rem;

    padding:1rem;

    border-radius:16px;

    border:1px solid #dbeafe;

    background:#eff6ff;

}

.portal-pei-icon{

    width:48px;
    height:48px;

    display:flex;
    align-items:center;
    justify-content:center;

    flex-shrink:0;

    border-radius:14px;

    background:#dbeafe;

    color:#1d4ed8;

    font-size:1.4rem;

}

.portal-pei-content strong{

    display:block;

    color:#1e3a8a;

    font-size:.92rem;

    margin-bottom:.35rem;

}

.portal-pei-content p{

    margin-bottom:.85rem;

    font-size:.82rem;

    color:#475569;

    line-height:1.55;

}

.portal-pei-content .btn{

    border-radius:12px;

    font-weight:700;

}

.registration-form-processing{
    position: relative;
}

.registration-form-processing::after{
    content: "";
    position: absolute;
    inset: 0;
    z-index: 20;
    cursor: wait;
    border-radius: 20px;
    background: rgba(255, 255, 255, .28);
}

.registration-form-processing #guardarInscripcion{
    position: relative;
    z-index: 21;
}

/* =========================================================
   MODAL DOCUMENTAL: BOTONES SIEMPRE VISIBLES
========================================================= */

#modalDocumento .modal-dialog{
    width: calc(100% - 2rem);
    max-height: calc(100vh - 2rem);
    margin-top: 1rem;
    margin-bottom: 1rem;
}

#modalDocumento .modal-content{
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 2rem);
    overflow: hidden;
}

#modalDocumento #formDocumento{
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
}

#modalDocumento .modal-body{
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
}

#modalDocumento .modal-footer{
    position: relative;
    z-index: 10;
    flex: 0 0 auto;
    padding: 1rem 1.5rem;
    border-top: 1px solid #e2e8f0;
    background: #ffffff;
    box-shadow: 0 -8px 22px rgba(15, 23, 42, .08);
}

/* Zona compacta después de seleccionar un archivo */

.portal-upload-zone.has-file .portal-upload-label{
    min-height: 82px;
    padding: .75rem 1rem;
    flex-direction: row;
    gap: .75rem;
}

.portal-upload-zone.has-file .portal-upload-icon{
    width: 36px;
    height: 36px;
    margin-bottom: 0;
    border-radius: 11px;
    font-size: 1rem;
}

.portal-upload-zone.has-file .portal-upload-label strong{
    font-size: .88rem;
}

.portal-upload-zone.has-file .portal-upload-label span,
.portal-upload-zone.has-file .portal-upload-label small{
    display: none;
}