*{box-sizing:border-box}html{font-family:var(--font);color:#1d2939;background:#f5f7fb}html[data-theme=dark]{color:#e5e7eb;background:#0b1220}body{margin:0;min-height:100vh;background:inherit;color:inherit}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,var(--primary),#0d2742);color:#fff;padding:24px 18px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;padding:4px 8px 24px;border-bottom:1px solid #ffffff22}.brand img{width:44px;height:44px}.brand span{display:flex;flex-direction:column}.brand small{opacity:.7;margin-top:2px}.sidebar nav{display:grid;gap:6px;margin-top:24px}.sidebar nav a{padding:12px 14px;border-radius:10px;color:#dce9f5}.sidebar nav a:hover{background:#ffffff16;color:white}.sidebar-foot{margin-top:auto;font-size:12px;opacity:.65;padding:12px}.main{min-width:0;display:flex;flex-direction:column}.topbar{height:76px;background:#ffffffdd;backdrop-filter:blur(10px);border-bottom:1px solid #e8edf4;display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:10}html[data-theme=dark] .topbar{background:#111827dd;border-color:#243044}.topbar>div{display:flex;flex-direction:column}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;color:#667085;font-weight:700}.theme-btn{width:40px;height:40px;border:1px solid #d6dce5;background:transparent;border-radius:10px;color:inherit;font-size:20px;cursor:pointer}.content{padding:32px;max-width:1480px;width:100%;margin:0 auto;flex:1}footer{padding:20px 32px;color:#667085;font-size:12px}.card{background:#fff;border:1px solid #e7ecf3;border-radius:18px;box-shadow:0 8px 28px #102a4310;padding:24px}html[data-theme=dark] .card{background:#111827;border-color:#263449;box-shadow:none}.hero{display:flex;align-items:center;justify-content:space-between;min-height:260px;padding:40px;background:radial-gradient(circle at 85% 20%,#2f80ed22,transparent 35%),#fff}html[data-theme=dark] .hero{background:radial-gradient(circle at 85% 20%,#2f80ed2e,transparent 35%),#111827}.hero h1,.page-head h1{font-size:clamp(28px,4vw,44px);line-height:1.08;margin:12px 0;max-width:780px}.hero p,.page-head p{color:#667085;font-size:17px;line-height:1.6;max-width:760px}.hero-mark{width:150px;height:150px;border-radius:36px;background:linear-gradient(145deg,var(--primary),var(--secondary));color:white;display:grid;place-content:center;text-align:center;font-size:38px;font-weight:800;box-shadow:0 22px 44px #173b6340;transform:rotate(4deg)}.hero-mark small{font-size:18px;letter-spacing:.2em}.badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#eef2f7;font-size:12px;font-weight:700}.badge.success{background:#e8f8f0;color:#087443}.badge.danger{background:#feecec;color:#b42318}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #d5dce6;background:#fff;color:#1d2939;padding:10px 16px;border-radius:10px;font-weight:700;cursor:pointer}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:18px 0}.stat{display:flex;flex-direction:column;gap:6px}.stat span,.stat small{color:#667085}.stat strong{font-size:22px}.ok{color:#087443!important}.bad{color:#b42318!important}.pending{color:#b54708!important}.section-head,.page-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:22px}.section-head h2,.card h2{margin:4px 0 18px}.feature-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.feature{display:flex;gap:12px;padding:16px;border:1px solid #edf0f5;border-radius:12px}.feature .dot{width:10px;height:10px;border-radius:50%;background:var(--accent);margin-top:5px;flex:none}.feature p{margin:5px 0 0;color:#667085;line-height:1.45}.diagnostic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}.check-row{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid #edf0f5}.check-row:last-child{border:0}.alert{padding:14px 18px;border-radius:12px;margin:16px 0}.alert.warning{background:#fff7e8;color:#7a2e0e;border:1px solid #fedf89}.alert.error{background:#fff0f0;color:#8a1c17;border:1px solid #fecaca}.alert ul{margin:8px 0 0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #e9edf3;vertical-align:top}code{background:#eef2f6;padding:2px 6px;border-radius:5px;font-size:12px}html[data-theme=dark] code{background:#1f2937}.muted{color:#667085}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}form{display:grid;gap:16px}label{display:grid;gap:7px;font-weight:700}input{width:100%;padding:12px 13px;border:1px solid #ced6e0;border-radius:9px;background:transparent;color:inherit}.qr-result{text-align:center}.qr-result svg{max-width:320px;width:100%;height:auto}.qr-result>a{display:block;color:var(--secondary);margin:8px}.break{display:block;word-break:break-all;text-align:left;margin-top:8px}.empty{min-height:300px;display:grid;place-content:center;text-align:center}.empty-icon{font-size:46px;font-weight:800;color:var(--secondary);margin-bottom:12px}.validation-card{max-width:680px;margin:40px auto;text-align:center}.validation-card.valid{border-top:5px solid #12b76a}.validation-card.invalid{border-top:5px solid #f04438}.validation-icon{width:70px;height:70px;border-radius:50%;display:grid;place-content:center;margin:0 auto 12px;background:#eef2f7;font-size:36px}.validation-card dl{text-align:left;margin-top:28px}.validation-card dl div{display:grid;grid-template-columns:190px 1fr;padding:12px;border-bottom:1px solid #edf0f5}.validation-card dt{color:#667085}.validation-card dd{margin:0;font-weight:700}.reader-stage{min-height:360px;background:#0c111d;border-radius:14px;display:grid;place-items:center;overflow:hidden;position:relative}.reader-stage video{width:100%;max-height:520px}.reader-stage #reader-message{position:absolute;color:#fff;background:#0009;padding:10px 14px;border-radius:8px}.result-box{margin-top:18px;padding:16px;background:#f2f5f9;border-radius:10px;display:grid;gap:6px}.result-box a{color:var(--secondary);word-break:break-all}pre{white-space:pre-wrap;text-align:left;max-height:420px;overflow:auto;background:#0b1220;color:#d1e3ff;padding:14px;border-radius:10px}
@media(max-width:1000px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.sidebar nav{grid-template-columns:repeat(3,1fr)}.sidebar-foot{display:none}.stats{grid-template-columns:repeat(2,1fr)}.diagnostic-grid{grid-template-columns:1fr}.hero-mark{display:none}}
@media(max-width:680px){.content{padding:18px}.topbar{padding:0 18px}.sidebar nav{grid-template-columns:1fr 1fr}.stats,.feature-grid,.two-col{grid-template-columns:1fr}.hero{padding:24px}.card{padding:18px}.validation-card dl div{grid-template-columns:1fr;gap:4px}}

/* ===== Etapa 2: usuarios, accesos, roles y permisos ===== */
:root{--bg:#f2f5f9;--surface:#fff;--surface-2:#f7f9fc;--text:#172033;--muted:#697386;--line:#dfe5ee;--danger:#b42318;--warning:#b54708;--success:#067647;--shadow:0 14px 36px rgba(23,59,99,.10)}
[data-theme="dark"]{--bg:#0d1420;--surface:#151f2e;--surface-2:#1b2738;--text:#edf3fb;--muted:#a9b6c9;--line:#2d3b50;--shadow:0 14px 36px rgba(0,0,0,.25)}
*{box-sizing:border-box}body{background:var(--bg);color:var(--text)}a{color:var(--secondary)}input,select,textarea{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;padding:.78rem .88rem;font:inherit;outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:var(--secondary);box-shadow:0 0 0 3px color-mix(in srgb,var(--secondary) 18%,transparent)}label{display:flex;flex-direction:column;gap:.45rem;font-size:.88rem;font-weight:700;color:var(--text)}label small,.cell-sub{display:block;color:var(--muted);font-weight:400;font-size:.78rem;margin-top:.28rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border:0;border-radius:9px;padding:.72rem 1rem;font-weight:800;text-decoration:none;cursor:pointer;font:inherit;line-height:1}.btn-primary{background:var(--primary);color:#fff}.btn-secondary{background:var(--secondary);color:#fff}.btn-danger{background:#b42318;color:#fff}.btn-ghost{background:var(--surface-2);color:var(--text);border:1px solid var(--line)}.btn-sm{padding:.52rem .72rem;font-size:.8rem}.btn-block{width:100%;padding:.92rem}.alert{padding:.85rem 1rem;border-radius:10px;margin:0 0 1rem;font-weight:650;border-left:4px solid}.alert-error{background:#fff1f0;color:#912018;border-color:#d92d20}.alert-success{background:#ecfdf3;color:#05603a;border-color:#12b76a}[data-theme="dark"] .alert-error{background:#3a1717;color:#ffb4ad}[data-theme="dark"] .alert-success{background:#123526;color:#91e5b6}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-bottom:1.4rem}.page-head h1{font-size:1.85rem;margin:.15rem 0 .35rem}.page-head p{margin:0;color:var(--muted)}.section-kicker{display:block;color:var(--secondary);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;font-weight:900}.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.25rem;box-shadow:var(--shadow);margin-bottom:1.2rem}.panel-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1rem}.panel-head h2,.panel h2{margin:0 0 .28rem;font-size:1.1rem}.panel-head p,.panel>p{margin:0;color:var(--muted)}.panel-divider{border-top:1px solid var(--line);margin:1.35rem 0}.form-stack{display:grid;gap:1rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.form-grid .full,.full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.15rem}.two-column{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:1.2rem}.filter-bar{display:grid;grid-template-columns:minmax(220px,2fr) 1fr 1fr auto auto;gap:.7rem;align-items:center}.table-panel{padding:0;overflow:hidden}.table-responsive{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:.92rem 1rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;background:var(--surface-2)}td{font-size:.88rem}.wrap-cell{max-width:260px}.empty-state{text-align:center;color:var(--muted);padding:2.4rem}.status-pill{display:inline-flex;align-items:center;border-radius:99px;padding:.3rem .58rem;font-size:.73rem;font-weight:900}.status-active{background:#dff7ea;color:#087443}.status-warning{background:#fff0d4;color:#a15c00}.status-muted{background:#e9edf3;color:#5d6878}[data-theme="dark"] .status-active{background:#123b2a;color:#8de0b2}[data-theme="dark"] .status-warning{background:#493214;color:#ffd285}[data-theme="dark"] .status-muted{background:#29374a;color:#b8c4d5}
.password-field{display:flex;position:relative}.password-field input{padding-right:4rem}.password-field button{position:absolute;right:.35rem;top:.35rem;bottom:.35rem;border:0;background:var(--surface-2);color:var(--secondary);border-radius:7px;padding:0 .65rem;font-weight:800;cursor:pointer}.password-rules,.permission-note,.info-panel{padding:1rem;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);color:var(--muted);margin-bottom:1rem}.identity-card{display:flex;align-items:center;gap:1rem;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:1rem}.identity-card div{display:flex;flex-direction:column}.avatar{display:inline-flex;width:36px;height:36px;border-radius:10px;align-items:center;justify-content:center;background:var(--primary);color:#fff;font-weight:900}.avatar.large{width:48px;height:48px;border-radius:13px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-bottom:1.2rem}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.15rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.35rem}.metric-card span{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:800}.metric-card strong{font-size:1.5rem}.metric-card small{color:var(--muted)}.module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.module-card{display:flex;align-items:center;gap:1rem;border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:1rem;text-decoration:none;color:var(--text)}.module-card:hover{border-color:var(--secondary);transform:translateY(-1px)}.module-card div{display:flex;flex-direction:column;gap:.2rem}.module-card small{color:var(--muted)}.module-icon{display:flex;width:42px;height:42px;border-radius:11px;align-items:center;justify-content:center;background:var(--primary);color:#fff;font-weight:900}.security-tips ul{padding-left:1.2rem;color:var(--muted);line-height:1.8}.security-banner{background:#fff0d4;color:#874d00;border-bottom:1px solid #f2c87c;padding:.8rem 1.4rem}.top-actions{display:flex;align-items:center;gap:.7rem}.top-actions form{margin:0}.sidebar-user{display:flex;align-items:center;gap:.75rem;margin:auto .8rem .8rem;padding:.85rem;border:1px solid rgba(255,255,255,.16);border-radius:12px;color:#fff}.sidebar-user div{display:flex;flex-direction:column;min-width:0}.sidebar-user strong{font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user small{opacity:.72}.side-nav{display:flex;flex-direction:column;gap:.25rem}.side-nav a{display:flex;gap:.75rem;align-items:center;padding:.72rem .8rem;border-radius:9px;color:rgba(255,255,255,.78);text-decoration:none}.side-nav a:hover,.side-nav a.active{background:rgba(255,255,255,.13);color:#fff}.side-nav b{width:18px;text-align:center}.nav-label{font-size:.63rem;text-transform:uppercase;letter-spacing:.11em;color:rgba(255,255,255,.48);font-weight:900;margin:1rem .8rem .3rem}.subnav{display:flex;gap:.3rem;border-bottom:1px solid var(--line);margin-bottom:1rem;overflow-x:auto}.subnav a{padding:.75rem 1rem;text-decoration:none;color:var(--muted);font-weight:800;white-space:nowrap;border-bottom:3px solid transparent}.subnav a.active{color:var(--primary);border-color:var(--primary)}.role-selector{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.check-card{display:flex;flex-direction:row;align-items:flex-start;background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:.85rem;cursor:pointer}.check-card input{width:auto;margin:.2rem .7rem 0 0}.check-card span{display:flex;flex-direction:column}.check-card small{color:var(--muted)}.role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.role-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.1rem;box-shadow:var(--shadow);position:relative}.role-card h2{margin:.2rem 0 .45rem;font-size:1.05rem}.role-card p{color:var(--muted);min-height:2.7rem}.role-level{font-size:.7rem;color:var(--secondary);font-weight:900;text-transform:uppercase}.role-stats{display:flex;gap:1.2rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.8rem 0;margin:.8rem 0;color:var(--muted);font-size:.78rem}.role-stats strong{color:var(--text);font-size:1rem}.role-card-foot{display:flex;justify-content:space-between;align-items:center}.permission-group{border:1px solid var(--line);border-radius:11px;margin-bottom:.75rem;background:var(--surface-2);overflow:hidden}.permission-group summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;cursor:pointer;font-weight:900}.permission-group summary small{color:var(--muted)}.permission-list{background:var(--surface);border-top:1px solid var(--line)}.permission-row{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:1rem;align-items:center;padding:.7rem 1rem;border-bottom:1px solid var(--line)}.permission-row:last-child{border-bottom:0}.permission-row div{display:flex;flex-direction:column}.permission-row small{color:var(--muted)}.permission-checkboxes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;padding:.8rem;background:var(--surface)}.permission-checkboxes label{display:flex;flex-direction:row;align-items:flex-start;gap:.55rem;border:1px solid var(--line);border-radius:9px;padding:.65rem;background:var(--surface-2)}.permission-checkboxes input{width:auto;margin-top:.15rem}.permission-checkboxes span{display:flex;flex-direction:column}.permission-checkboxes small{color:var(--muted)}.link-button{border:0;background:none;color:var(--secondary);font-weight:800;cursor:pointer}.permission-catalog code{color:var(--secondary);font-weight:800}.error-page{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:3rem;max-width:620px;margin:3rem auto}.error-page>span{display:block;font-size:4rem;font-weight:900;color:var(--primary)}.error-page code{display:block;margin:1rem auto;color:var(--muted)}
/* Auth */
.auth-body{min-height:100vh;background:var(--bg)}.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(360px,42%) 1fr}.auth-brand-panel{position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:3rem;background:linear-gradient(145deg,var(--primary),#0b2542 75%);color:#fff;overflow:hidden}.auth-brand-panel:before,.auth-brand-panel:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.06)}.auth-brand-panel:before{width:360px;height:360px;right:-130px;top:-110px}.auth-brand-panel:after{width:250px;height:250px;left:-100px;bottom:-80px}.auth-brand-content,.auth-brand-foot{position:relative;z-index:1}.auth-logo{width:88px;height:88px;object-fit:contain;background:#fff;border-radius:18px;padding:.7rem;margin-bottom:2.5rem}.auth-kicker{font-size:.75rem;text-transform:uppercase;letter-spacing:.13em;font-weight:900;color:#93c5fd}.auth-brand-content h1{font-size:2.2rem;line-height:1.16;max-width:560px;margin:.6rem 0 1rem}.auth-brand-content p{font-size:1rem;line-height:1.7;color:rgba(255,255,255,.76);max-width:520px}.auth-security-list{display:flex;flex-direction:column;gap:.7rem;margin-top:2rem;color:rgba(255,255,255,.86);font-weight:700}.auth-brand-foot{font-size:.78rem;color:rgba(255,255,255,.55)}.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;position:relative}.auth-actions{position:absolute;right:1.5rem;top:1.5rem}.auth-card{width:min(100%,500px);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;padding:2rem}.auth-heading{margin-bottom:1.2rem}.auth-heading h2{font-size:1.65rem;margin:.25rem 0 .45rem}.auth-heading p{margin:0;color:var(--muted)}.access-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem;background:var(--surface-2);border-radius:10px;padding:.32rem;margin-bottom:1.2rem}.access-tabs a{text-align:center;text-decoration:none;padding:.56rem .25rem;border-radius:7px;font-size:.76rem;font-weight:800;color:var(--muted)}.access-tabs a.active{background:var(--primary);color:#fff}.auth-links{display:flex;flex-direction:column;align-items:center;gap:.85rem;margin-top:1.15rem}.auth-links a{text-decoration:none;font-weight:750}.applicant-link{display:flex;flex-direction:column;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:.8rem;width:100%}.applicant-link span{font-size:.78rem;color:var(--muted);font-weight:500}.privacy-note,.auth-help{text-align:center;font-size:.72rem;color:var(--muted);line-height:1.5}.privacy-note{margin:1.2rem 0 0}.auth-help{max-width:500px;margin:1.1rem 0 0}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.role-grid,.role-selector{grid-template-columns:repeat(2,1fr)}.permission-checkboxes{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){.auth-page{grid-template-columns:1fr}.auth-brand-panel{display:none}.auth-main{padding:5rem 1rem 2rem}.form-grid,.two-column,.module-grid{grid-template-columns:1fr}.filter-bar{grid-template-columns:1fr}.role-grid,.role-selector,.permission-checkboxes{grid-template-columns:1fr}.page-head{flex-direction:column}.permission-row{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr}.access-tabs{grid-template-columns:repeat(2,1fr)}}

/* Etapas 3 y 4 */
.page-actions,.row-actions,.entity-actions,.period-actions{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}.row-actions form,.period-actions form{margin:0}.badge{display:inline-flex;min-width:22px;height:22px;align-items:center;justify-content:center;border-radius:99px;background:rgba(255,255,255,.22);padding:0 .4rem}.muted,.block-muted{color:var(--muted)}.block-muted{display:block;margin-top:.25rem}.field-wide{grid-column:1/-1}.check-line{display:flex;align-items:center;gap:.55rem;font-weight:800}.check-line input{width:auto}.form-panel{max-width:1080px}.form-actions{display:flex;gap:.7rem;margin-top:1.25rem}.catalog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.catalog-card{display:flex;align-items:center;gap:.85rem;padding:1rem;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--text);background:var(--surface-2);transition:.15s ease}.catalog-card:hover{border-color:var(--secondary);transform:translateY(-2px)}.catalog-card-icon{width:40px;height:40px;border-radius:10px;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900}.catalog-card>div:nth-child(2){display:flex;flex-direction:column;min-width:0}.catalog-card small{color:var(--muted);margin-top:.2rem}.catalog-card>span{margin-left:auto;font-size:1.5rem}.catalog-section{margin-bottom:1rem}.catalog-filter{grid-template-columns:minmax(250px,1fr) 190px auto}.detail-list{display:grid;grid-template-columns:130px 1fr;gap:.65rem 1rem}.detail-list dt{font-weight:900;color:var(--muted)}.detail-list dd{margin:0}.detail-list pre{white-space:pre-wrap;word-break:break-word;background:var(--surface-2);padding:.8rem;border-radius:9px;max-height:300px;overflow:auto}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.single-search{grid-template-columns:minmax(280px,1fr) auto}.academic-filter{grid-template-columns:minmax(250px,1fr) 220px auto}.card-table{display:flex;flex-direction:column;gap:.75rem}.entity-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:1.2rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1rem 1.15rem;box-shadow:var(--shadow)}.entity-main{display:flex;gap:.9rem;align-items:center}.entity-main h2,.plan-card h2,.period-main h2{font-size:1.05rem;margin:.15rem 0}.entity-main p,.plan-card p,.period-main p{margin:0;color:var(--muted)}.entity-code{display:inline-flex;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:var(--secondary)}.entity-stats{display:flex;gap:1rem;align-items:center;color:var(--muted);font-size:.8rem}.entity-stats strong{color:var(--text)}.timeline-list{display:flex;flex-direction:column;gap:.8rem}.period-card{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:1rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1rem;box-shadow:var(--shadow)}.period-date{width:68px;height:68px;border-radius:14px;background:var(--primary);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.period-date strong{font-size:1rem}.period-date span{font-size:1.35rem;font-weight:900}.period-main{display:flex;align-items:center;justify-content:space-between;gap:1rem}.plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.plan-card{background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:1.15rem;box-shadow:var(--shadow)}.plan-card-head{display:flex;justify-content:space-between;gap:1rem}.plan-stats,.plan-scale{display:flex;gap:1rem;flex-wrap:wrap;padding:.8rem 0;margin:.8rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font-size:.78rem}.plan-stats strong{color:var(--text)}.plan-scale{border-top:0;margin-top:-.8rem}.academic-summary{margin-top:1rem}.progress-row,.list-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--line)}.list-row{text-decoration:none;color:var(--text)}.list-row div{display:flex;flex-direction:column}.list-row small{color:var(--muted)}.anchor-nav{display:flex;gap:.45rem;overflow:auto;margin-bottom:1rem;position:sticky;top:64px;z-index:5;background:var(--bg);padding:.6rem 0}.anchor-nav a{text-decoration:none;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:.5rem .85rem;color:var(--muted);font-weight:800;white-space:nowrap}.academic-section{scroll-margin-top:120px;margin-bottom:1rem}.grade-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem}.grade-card{display:flex;align-items:center;gap:.7rem;border:1px solid var(--line);border-radius:11px;padding:.75rem;background:var(--surface-2)}.grade-card>span{display:flex;width:34px;height:34px;border-radius:9px;align-items:center;justify-content:center;background:var(--primary);color:#fff;font-weight:900}.grade-card div{display:flex;flex-direction:column}.grade-card small{color:var(--muted)}.inline-academic-form{display:grid;grid-template-columns:100px minmax(170px,1fr) 150px 150px auto;gap:.7rem;align-items:end;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}.inline-academic-form label{margin:0}.academic-add-form,.panel-inner{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:1rem;margin-top:1rem}.panel-inner h3,.academic-add-form h3{margin-top:0}.tag{display:inline-flex;border-radius:99px;background:var(--surface-2);border:1px solid var(--line);padding:.2rem .5rem;margin:.1rem;font-size:.72rem}.row-inactive{opacity:.55}.opportunity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;margin-bottom:1rem}.opportunity-card{border:1px solid var(--line);border-radius:11px;padding:.8rem;background:var(--surface-2)}.opportunity-card label{margin-top:.6rem}.equivalence-form{grid-template-columns:repeat(2,minmax(180px,1fr)) 150px 130px minmax(180px,1fr) auto}.history-list{display:flex;flex-direction:column;gap:.65rem}.history-list article{display:flex;flex-direction:column;border-left:3px solid var(--secondary);padding:.55rem .8rem;background:var(--surface-2);border-radius:0 9px 9px 0}.history-list span,.history-list small{color:var(--muted);font-size:.76rem}.state-form{margin-top:1rem}.plan-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.alert-info{background:#e7f2ff;color:#154a7a;border:1px solid #b9d8f6}.btn-warning{background:#f5a524;color:#1f2937;border-color:#f5a524}fieldset{border:0;padding:0;margin:0}fieldset:disabled{opacity:.72}.academic-modules .module-icon{font-size:.72rem}.catalog-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1100px){.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-grid{grid-template-columns:1fr}.grade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-academic-form,.equivalence-form{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-metrics,.catalog-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:850px){.catalog-grid,.form-grid.compact,.grade-grid,.opportunity-grid{grid-template-columns:1fr}.entity-card,.period-card{grid-template-columns:1fr}.entity-stats,.period-main{align-items:flex-start;flex-direction:column}.catalog-filter,.academic-filter,.single-search,.inline-academic-form,.equivalence-form{grid-template-columns:1fr}.plan-metrics,.catalog-metrics{grid-template-columns:1fr}.detail-list{grid-template-columns:1fr}.field-wide{grid-column:auto}}

/* Etapas 5 y 6: aspirantes, admisiones, estudiantes y expediente */
.applicant-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.progress-track,.mini-progress{height:9px;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;overflow:hidden}.progress-track span,.mini-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--secondary),var(--accent));border-radius:99px}.progress-sections{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;margin-top:1rem}.progress-sections article{display:flex;gap:.7rem;align-items:center;padding:.75rem;background:var(--surface-2);border:1px solid var(--line);border-radius:10px}.progress-sections article b{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--line);color:var(--muted)}.progress-sections article.done b{background:var(--accent);color:#fff}.progress-sections article div{display:flex;flex-direction:column}.progress-sections small{color:var(--muted)}.document-mini-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.document-mini-grid article{display:flex;align-items:center;gap:.7rem;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:.75rem}.document-mini-grid article div{display:flex;flex-direction:column}.document-mini-grid small{color:var(--muted)}.doc-icon,.doc-state{width:42px;height:42px;flex:0 0 42px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--primary);color:#fff;font-weight:900}.document-list,.review-doc-list,.request-list{display:flex;flex-direction:column;gap:.75rem}.document-card,.review-doc-list article,.request-list article{display:flex;align-items:center;gap:1rem}.doc-main{min-width:0;flex:1}.doc-main h2{font-size:1rem;margin:0 0 .3rem}.doc-main p{margin:.1rem 0;color:var(--muted)}.doc-actions,.review-actions{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;justify-content:flex-end}.doc-actions form,.review-actions form{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.doc-actions input[type=file]{max-width:230px}.required{font-size:.62rem;color:#b42318;background:#fee4e2;border-radius:99px;padding:.15rem .4rem;margin-left:.35rem}.review-note{padding:.55rem .7rem;border-left:3px solid #f5a524;background:#fff8e7;color:#7a4b00;border-radius:0 7px 7px 0;font-size:.8rem}.state-aprobado,.state-active{background:#15803d}.state-rechazado{background:#b42318}.state-requiere_correccion{background:#d97706}.state-en_revision,.state-cargado{background:#2563eb}.result-box{padding:1rem;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}.result-box>strong{font-size:1.25rem}.result-box form{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.8rem}.sticky-save{position:sticky;bottom:1rem;z-index:6;background:var(--primary);color:#fff;border-radius:13px;padding:.8rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;box-shadow:0 12px 30px #0003}.call-program-grid{display:flex;flex-direction:column;gap:.7rem}.program-row{display:grid;grid-template-columns:2fr 1.5fr 1fr .7fr .8fr .8fr;gap:.55rem;padding:.75rem;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}.program-row label{margin:0}.admission-filter{grid-template-columns:minmax(260px,1fr) 240px 210px auto}.mini-progress{width:90px;height:6px;margin-bottom:.25rem}.profile-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.review-doc-list article,.request-list article{padding:.8rem;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}.review-actions form{display:grid;grid-template-columns:160px minmax(180px,1fr) auto}.inline-form,.inline-expedient-form{display:grid;grid-template-columns:minmax(240px,1fr) auto;gap:.7rem;align-items:end}.inline-expedient-form{grid-template-columns:220px 1fr 1fr auto;margin-bottom:1rem;padding:1rem;background:var(--surface-2);border:1px solid var(--line);border-radius:11px}.student-modules .module-card.disabled{opacity:.55;cursor:not-allowed}.compact-docs .document-card{padding:.75rem;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}.request-list article>div{flex:1}.request-list article p{margin:.35rem 0}.request-list form{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:flex-end}.request-list input{max-width:240px}.btn-danger{background:#b42318;color:#fff;border-color:#b42318}.table-wrap small{display:block}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.btn-block{width:100%}
@media(max-width:1200px){.program-row{grid-template-columns:repeat(3,1fr)}.applicant-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){.applicant-metrics,.progress-sections,.document-mini-grid,.profile-summary-grid,.program-row{grid-template-columns:1fr}.document-card,.review-doc-list article,.request-list article{align-items:flex-start;flex-direction:column}.doc-actions,.review-actions{width:100%;justify-content:flex-start}.review-actions form,.inline-form,.inline-expedient-form,.admission-filter{grid-template-columns:1fr;width:100%}.sticky-save{align-items:flex-start;flex-direction:column}.sticky-save .btn{width:100%}}

/* Etapas 7 y 8: grupos, horarios, espacios y portal docente */
.scheduling-metrics,.teacher-metrics{grid-template-columns:repeat(6,minmax(0,1fr))}.group-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.schedule-filter{grid-template-columns:repeat(5,minmax(150px,1fr)) auto}.schedule-board{display:grid;grid-template-columns:repeat(5,minmax(190px,1fr));gap:.8rem;overflow:auto}.schedule-board>section{min-width:190px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:.75rem}.schedule-board h3{margin:.1rem 0 .7rem;font-size:.9rem}.schedule-board article,.schedule-list article{display:flex;align-items:center;gap:.65rem;padding:.65rem;border:1px solid var(--line);background:var(--surface-2);border-radius:9px;margin-bottom:.55rem}.schedule-board article>div,.schedule-list article>div{display:flex;min-width:0;flex:1;flex-direction:column}.schedule-board small,.schedule-list small{color:var(--muted)}.schedule-time{font-size:.72rem;font-weight:900;color:var(--primary);white-space:nowrap}.availability-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem}.availability-grid article{display:flex;align-items:center;justify-content:space-between;gap:.7rem;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:.8rem}.availability-grid article>div,.availability-grid article:not(:has(div)){display:flex;flex-direction:column}.availability-grid span,.availability-grid small{color:var(--muted)}.timeline-list{display:flex;flex-direction:column;gap:.7rem}.timeline-list article{display:grid;grid-template-columns:68px minmax(0,1fr) auto;gap:1rem;align-items:center;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:.8rem}.timeline-date{width:58px;height:58px;border-radius:12px;background:var(--primary);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.timeline-date strong{font-size:1.25rem}.timeline-date span{font-size:.7rem;font-weight:900}.timeline-list h2,.timeline-list h3{margin:.15rem 0}.timeline-list p{margin:.25rem 0;color:var(--muted)}.timeline-list.compact article{grid-template-columns:58px 1fr}.two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.field-static{display:flex;flex-direction:column;gap:.3rem;padding:.6rem .75rem;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}.field-static span{font-size:.72rem;color:var(--muted)}.avatar.large{width:48px;height:48px;font-size:1.05rem}.teacher-modules{grid-template-columns:repeat(3,minmax(0,1fr))}.scheduling-modules{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1200px){.scheduling-metrics,.teacher-metrics{grid-template-columns:repeat(3,1fr)}.schedule-board{grid-template-columns:repeat(3,minmax(190px,1fr))}.availability-grid{grid-template-columns:repeat(2,1fr)}.teacher-modules,.scheduling-modules{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){.scheduling-metrics,.teacher-metrics,.group-metrics,.teacher-modules,.scheduling-modules,.two-column,.availability-grid{grid-template-columns:1fr}.schedule-filter{grid-template-columns:1fr}.schedule-board{grid-template-columns:1fr}.timeline-list article{grid-template-columns:58px 1fr}.timeline-list article>a{grid-column:2}.availability-grid article{align-items:flex-start}.schedule-board>section{min-width:0}}

/* ===== Etapas 9 y 10: evaluación, inscripciones y tiras ===== */
.academic-record-metrics,.enrollment-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.35rem}.metric>span{color:var(--muted);font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.metric>strong{font-size:1.35rem}.metric>small{color:var(--muted)}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.card-head h2{margin:.1rem 0 .3rem}.card-head p{margin:0;color:var(--muted)}.page-actions,.inline-form,.compact-action{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem}.compact-action{min-width:250px}.compact-action input{min-width:150px}.gradebook input,.gradebook select{min-width:88px;padding:.58rem}.gradebook th{white-space:nowrap}.gradebook td{vertical-align:middle}.grade-corrections{display:grid;gap:.8rem}.grade-corrections article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.grade-corrections p{margin:.3rem 0;color:var(--muted)}.session-list{display:grid;gap:.55rem}.session-item{display:flex;flex-direction:column;gap:.25rem;padding:.8rem;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);color:var(--text)}.session-item.active{border-color:var(--secondary);box-shadow:0 0 0 2px color-mix(in srgb,var(--secondary) 18%,transparent)}.session-item span,.session-item small{color:var(--muted)}.validation-summary{display:flex;align-items:center;flex-wrap:wrap;gap:.8rem;padding:.9rem 1rem;border:1px solid var(--line);border-radius:11px;background:var(--surface-2);margin-bottom:1rem}.validation-summary small{margin-left:auto;color:var(--muted)}.validation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin-bottom:1rem}.validation-grid article{padding:.85rem;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.validation-grid article.ok{border-left:4px solid var(--success);color:var(--text)!important}.validation-grid article.blocked{border-left:4px solid var(--danger)}.validation-grid p{margin:.3rem 0;color:var(--muted)}.validation-grid small{color:var(--success)}.attendance-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.attendance-cards article{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1rem;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:1rem}.attendance-ring{width:74px;height:74px;border-radius:50%;display:grid;place-content:center;background:conic-gradient(var(--primary) calc(var(--attendance,0)*1%),var(--surface-2) 0);position:relative;font-weight:900}.attendance-ring:before{content:"";position:absolute;inset:8px;border-radius:50%;background:var(--surface)}.attendance-ring strong{position:relative;z-index:1}.mini-stats{display:flex;gap:1rem;flex-wrap:wrap;color:var(--muted);font-size:.78rem}.mini-stats strong{color:var(--text)}.btn-warning{background:#b54708;color:#fff}.state-aprobada,.state-vigente,.state-autorizada,.state-activa,.state-cerrada{background:#ecfdf3;color:#05603a}.state-bloqueada,.state-rechazada,.state-cancelada{background:#fff1f0;color:#912018}.state-con_excepciones,.state-pendiente,.state-borrador,.state-validada,.state-cargado{background:#fff7e8;color:#874d00}.danger-zone{border-left:4px solid var(--danger)}
@media(max-width:1100px){.academic-record-metrics,.enrollment-metrics{grid-template-columns:repeat(2,1fr)}.validation-grid{grid-template-columns:1fr}}
@media(max-width:780px){.academic-record-metrics,.enrollment-metrics,.attendance-cards{grid-template-columns:1fr}.card-head,.page-actions,.inline-form,.compact-action{align-items:stretch;flex-direction:column}.validation-summary small{margin-left:0}.grade-corrections article{grid-template-columns:1fr}}

.attendance-ring span{position:relative;z-index:1;font-size:.65rem;color:var(--muted);}

/* Etapas 15 y 16: comunicación, dashboards y reportes */
.notice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.notice-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.2rem;box-shadow:var(--shadow)}.notice-card.unread{border-left:5px solid var(--secondary)}.notice-card h2{margin:.7rem 0 .35rem}.notice-card p{color:var(--muted);line-height:1.55}.notice-detail .rich-content{white-space:normal;line-height:1.75;margin:1.2rem 0 2rem}.feed-item,.conversation-row{display:flex;align-items:center;gap:.8rem;padding:.8rem 0;border-bottom:1px solid var(--line)}.feed-item:last-child,.conversation-row:last-child{border-bottom:0}.feed-item>div,.conversation-row>div{display:flex;flex-direction:column;min-width:0;flex:1}.feed-item small,.conversation-row small,.conversation-row time{color:var(--muted);font-size:.74rem}.conversation-row.unread{font-weight:800}.conversation-row time{white-space:nowrap}.module-icon.small{width:32px;height:32px;font-size:.85rem}.preference-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.switch-row,.check-line{display:flex;align-items:center;justify-content:space-between;gap:1rem;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:.8rem}.switch-row>span{display:flex;flex-direction:column}.switch-row small{color:var(--muted)}.switch-row input,.check-line input{width:auto}.catalog-chip{display:inline-flex;padding:.35rem .55rem;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);margin:.2rem}.catalog-reference{display:grid;max-height:280px;overflow:auto;padding:.7rem}.chat-panel{max-width:1000px;margin-inline:auto}.participant-list{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem}.message-list{display:flex;flex-direction:column;gap:.8rem;max-height:58vh;overflow:auto;padding:.5rem}.message-bubble{max-width:78%;border:1px solid var(--line);border-radius:13px;padding:.85rem 1rem;background:var(--surface-2)}.message-bubble.mine{align-self:flex-end;background:color-mix(in srgb,var(--primary) 12%,var(--surface))}.message-bubble header{display:flex;gap:1rem;justify-content:space-between}.message-bubble time{color:var(--muted);font-size:.72rem}.message-bubble p{line-height:1.5}.message-composer{display:grid;grid-template-columns:minmax(0,1fr) 250px auto;align-items:end;border-top:1px solid var(--line);padding-top:1rem;margin-top:1rem}.template-item{border:1px solid var(--line);border-radius:10px;padding:.75rem;margin-bottom:.6rem}.template-item summary{cursor:pointer}.row-unread{background:color-mix(in srgb,var(--secondary) 7%,transparent)}.dashboard-filter,.report-filter{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr)) auto;align-items:end;gap:.8rem}.report-filter{grid-template-columns:repeat(3,minmax(170px,1fr)) auto}.dashboard-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}.bar-row,.chart-row{display:grid;grid-template-columns:minmax(120px,1fr) 2fr 60px;align-items:center;gap:.7rem;margin:.75rem 0}.bar-track,.chart-row>div{height:10px;background:var(--surface-2);border-radius:999px;overflow:hidden}.bar-track i,.chart-row i{display:block;height:100%;background:var(--primary);border-radius:999px}.chart-bars{padding:.4rem 0}.report-category{margin-bottom:1.7rem}.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.report-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1rem;box-shadow:var(--shadow)}.report-card:hover{border-color:var(--secondary);transform:translateY(-1px)}.report-card h3{margin:.1rem 0}.report-card p{margin:.3rem 0 0;color:var(--muted);line-height:1.4}.report-icon{width:42px;height:42px;display:grid;place-content:center;border-radius:12px;background:var(--primary);color:#fff;font-weight:900}.report-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:1rem 0}.report-actions>span{margin-right:auto}.save-report-form{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.save-report-form input{width:240px}.save-report-form .check-line{padding:.55rem}.alert.success{background:#eafaf2;color:#087443;border:1px solid #a6e7c5}
@media(max-width:1200px){.dashboard-metrics{grid-template-columns:repeat(3,1fr)}.report-grid{grid-template-columns:repeat(2,1fr)}.report-filter{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.notice-grid,.preference-grid,.report-grid,.dashboard-metrics{grid-template-columns:1fr}.dashboard-filter,.report-filter,.message-composer{grid-template-columns:1fr}.message-bubble{max-width:95%}.bar-row,.chart-row{grid-template-columns:100px 1fr 45px}.save-report-form{align-items:stretch;flex-direction:column}.save-report-form input{width:100%}}


.confirmation-resend-box{margin:1rem 0;padding:1rem;border:1px solid color-mix(in srgb,var(--primary) 28%,transparent);border-radius:12px;background:color-mix(in srgb,var(--primary) 6%,transparent)}
.confirmation-resend-box p{margin:0 0 .75rem;font-weight:600}
.confirmation-resend-box form{margin:0}

/* Temporizador para el reenvío de confirmación del aspirante */
[data-resend-countdown][disabled]{cursor:not-allowed;opacity:.68;filter:saturate(.65)}
.resend-countdown-status{display:block;min-height:1.2rem;margin-top:.45rem;color:var(--muted);font-size:.8rem;line-height:1.4;text-align:center}
.confirmation-resend-box{margin:1rem 0;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.confirmation-resend-box p{margin:0 0 .75rem;text-align:center;color:var(--muted)}

/* Diagnóstico de correo, Microsoft Graph y cron */
.mail-diagnostic-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:1.2rem}.diagnostic-card{margin-bottom:0}.diagnostic-message{margin:1rem 0 .4rem!important;padding:.8rem;border-radius:10px;background:var(--surface-2);color:var(--text)!important;line-height:1.5}.mail-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;align-items:end}.mail-action-grid>form,.mail-action-grid>div{padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);height:100%}.mail-action-grid p{margin:0 0 .8rem;color:var(--muted)}.mail-test-form{grid-template-columns:minmax(0,1fr) auto;align-items:end}.mail-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;margin-bottom:1.2rem}.command-box,.command-line{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;font-size:.78rem;line-height:1.5;word-break:break-all}.command-line{display:block;padding:.8rem;background:#0b1220;color:#d1e3ff;border-radius:9px;white-space:normal}.mail-error-cell{min-width:280px;max-width:520px;white-space:normal;word-break:break-word}.log-viewer{display:grid;gap:.65rem;max-height:760px;overflow:auto}.log-entry{border:1px solid var(--line);border-left:4px solid var(--secondary);border-radius:10px;padding:.8rem 1rem;background:var(--surface-2)}.log-entry.log-error{border-left-color:var(--danger)}.log-entry.log-warning{border-left-color:var(--warning)}.log-entry.log-info{border-left-color:var(--secondary)}.log-entry header{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;font-size:.76rem}.log-entry header span{color:var(--muted)}.log-entry header code{margin-left:auto}.log-entry p{margin:.55rem 0 0;color:var(--text);line-height:1.45}.log-entry pre{max-height:260px;margin:.7rem 0 0;font-size:.73rem}.badge.success{background:#ecfdf3;color:#05603a}.badge.danger{background:#fff1f0;color:#912018}
@media(max-width:1150px){.mail-diagnostic-grid{grid-template-columns:1fr 1fr}.mail-action-grid{grid-template-columns:1fr 1fr}.mail-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.mail-diagnostic-grid,.mail-action-grid,.mail-metrics,.mail-test-form{grid-template-columns:1fr}.log-entry header code{margin-left:0;width:100%}}


/* Ajustes de solicitud del aspirante 2026-08-04 */
.application-section-form{margin-bottom:1.25rem}.application-section-form fieldset{border:0;padding:0;margin:0;min-width:0}.application-section-form fieldset[disabled]{opacity:.72}.section-save{display:flex;justify-content:flex-end;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}.application-lock-banner{display:flex;align-items:flex-start;gap:.8rem;padding:1rem 1.15rem;margin-bottom:1rem;border:1px solid #f5c26b;border-left:5px solid var(--warning);border-radius:12px;background:#fff7e8;color:#6b3b00}.application-lock-banner strong{display:block;margin-bottom:.2rem}.application-finalize-card{border:2px solid color-mix(in srgb,var(--primary) 32%,var(--line));background:color-mix(in srgb,var(--primary) 4%,var(--surface))}.application-finalize-card .card-head{align-items:center}.photo-registration-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,.7fr);gap:1.2rem;align-items:start}.photo-upload-panel{display:grid;gap:.8rem}.formal-photo-example{margin:0;padding:1rem;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);text-align:center}.formal-photo-example img,.current-profile-photo{display:block;width:170px;max-width:100%;aspect-ratio:3/4;object-fit:cover;margin:0 auto .75rem;border-radius:12px;border:1px solid var(--line);background:#fff}.formal-photo-example figcaption{display:grid;gap:.45rem;color:var(--muted);font-size:.8rem;text-align:left}.formal-photo-example figcaption strong{color:var(--text);font-size:.88rem}.photo-specifications{margin:.4rem 0 0;padding-left:1.15rem;color:var(--muted);font-weight:500;line-height:1.55}.photo-specifications li+li{margin-top:.2rem}.select2-container{width:100%!important}.select2-container .select2-selection--single,.select2-container .select2-selection--multiple{min-height:45px;border:1px solid var(--line)!important;border-radius:10px!important;background:var(--surface)!important;color:var(--text)!important}.select2-container .select2-selection--single .select2-selection__rendered{line-height:43px!important;color:var(--text)!important;padding-left:.88rem!important}.select2-container .select2-selection--single .select2-selection__arrow{height:43px!important}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default.select2-container--open .select2-selection--single{border-color:var(--secondary)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--secondary) 18%,transparent)}.select2-dropdown{border-color:var(--line)!important;background:var(--surface)!important;color:var(--text)!important}.select2-search__field{background:var(--surface)!important;color:var(--text)!important}.select2-results__option--highlighted[aria-selected]{background:var(--primary)!important}.select2-container--default.select2-container--disabled .select2-selection--single{background:var(--surface-2)!important;opacity:.78}.page-actions form{display:inline-flex;margin:0}
@media(max-width:800px){.photo-registration-grid{grid-template-columns:1fr}.section-save .btn{width:100%}.application-finalize-card .card-head{align-items:stretch}}

/* Ajustes de acceso, Select2, fotografía y domicilios 2026-08-04 */
.auth-card,.auth-shell,.stack-form,.form-grid,.form-grid>label{min-width:0}.long-option-select{display:block;width:100%;max-width:100%}.select2-container{min-width:0!important;max-width:100%!important}.select2-container .selection{display:block;min-width:0}.select2-container .select2-selection__rendered{display:block!important;max-width:100%;overflow:hidden!important;text-overflow:ellipsis;white-space:nowrap}.select2-container--open .select2-dropdown{max-width:min(94vw,720px)}.select2-results__option{overflow-wrap:anywhere;word-break:normal}.flatpickr-calendar select,.flatpickr-monthDropdown-months{appearance:auto!important;display:inline-block!important;width:auto!important;min-height:initial!important;border:0!important;box-shadow:none!important}.manual-address-fields{display:none;padding:1rem;border:1px dashed var(--line);border-radius:12px;background:var(--surface-2)}.manual-address-fields.is-visible{display:block}.manual-address-fields .form-grid{margin:0}.formal-photo-example [data-photo-preview]{transition:opacity .2s ease}.formal-photo-example [data-photo-preview][src^="blob:"]{outline:3px solid color-mix(in srgb,var(--secondary) 28%,transparent);outline-offset:3px}
@media(max-width:800px){.select2-container--open .select2-dropdown{max-width:calc(100vw - 2rem)}}

/* Correcciones de registro, progreso y domicilio manual 2026-08-04 V4 */
.auth-card{max-width:calc(100vw - 2rem);overflow-x:clip}
.applicant-register-form{display:block;width:100%;max-width:100%;min-width:0;contain:inline-size}
.applicant-register-form>label,.applicant-register-form .form-grid,.applicant-register-form .form-grid>label,.applicant-call-field{width:100%;max-width:100%;min-width:0}
.applicant-register-form input,.applicant-register-form select,.applicant-register-form .select2-container{box-sizing:border-box;min-width:0!important;max-width:100%!important}
.applicant-register-form .long-option-select,.applicant-register-form .long-option-select+.select2-container{inline-size:100%!important;width:100%!important;max-inline-size:100%!important;max-width:100%!important;min-inline-size:0!important;min-width:0!important}
.applicant-register-form .select2-selection__rendered{min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
.manual-address-fields[aria-hidden="true"]{display:none}
.manual-address-fields[aria-hidden="false"]{display:block}
.manual-address-note{margin:0 0 1rem;color:var(--muted);font-size:.82rem;line-height:1.5}
@media(max-width:560px){.auth-card{max-width:calc(100vw - 1rem);padding:1.25rem}.auth-main{padding:4rem .5rem 1.5rem}}


/* Información laboral condicional V5 */
.employment-dependent-fields{display:none;margin-top:1rem;padding-top:1rem;border-top:1px dashed var(--line)}.employment-dependent-fields.is-enabled{display:block}.employment-dependent-fields[aria-hidden="true"]{display:none}

.origin-mexico-fields,.origin-manual-fields{display:none;margin-top:1rem;padding:1rem;border:1px dashed var(--line);border-radius:12px;background:var(--surface-2)}.origin-mexico-fields.is-visible,.origin-manual-fields.is-visible{display:block}.origin-mexico-fields[aria-hidden="true"],.origin-manual-fields[aria-hidden="true"]{display:none}.origin-academic-result-fields{margin-top:1rem}.origin-manual-fields .form-grid,.origin-mexico-fields .form-grid{margin:0}.origin-manual-fields input{text-transform:none}


/* Solicitud del aspirante V7 · campos requeridos y preferencias de ingreso */
.required-fields-legend{display:flex;align-items:center;gap:.35rem;margin:0 0 1rem;padding:.75rem 1rem;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);color:var(--muted);font-size:.84rem}.required-mark{display:inline-block;margin-left:.2rem;color:var(--danger);font-weight:800}.required-fields-legend .required-mark{margin:0;font-size:1rem}.knowledge-source-other{display:none}.knowledge-source-other.is-visible{display:grid}.knowledge-source-other[aria-hidden="true"]{display:none}.application-finalize-card form{display:grid;gap:.55rem;justify-items:start}.application-finalize-card small{color:var(--muted);line-height:1.45}


/* Solicitud del aspirante V8 · campos condicionales, SweetAlert y navegación lateral */
.application-section-form .field-label-text{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:.22rem;min-width:0;line-height:1.35}
.application-section-form .field-label-text .required-mark{display:inline;line-height:1;margin:0;color:var(--danger);font-weight:900}
.optional-field-note{display:inline;color:var(--muted);font-size:.78rem;font-weight:600}
.swal2-container{z-index:100000!important}
.swal2-popup{font-family:var(--font)!important;border-radius:16px!important}
.swal2-confirm,.swal2-cancel{border-radius:9px!important;font-weight:800!important}
.sidebar{overflow:hidden}
.sidebar .brand,.sidebar .sidebar-user,.sidebar .sidebar-foot{flex:0 0 auto}
.sidebar .side-nav{display:block;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;margin-top:18px;padding-right:6px;scrollbar-width:thin;scrollbar-color:#ffffff66 transparent}
.sidebar .side-nav::-webkit-scrollbar{width:7px}
.sidebar .side-nav::-webkit-scrollbar-track{background:transparent}
.sidebar .side-nav::-webkit-scrollbar-thumb{background:#ffffff55;border-radius:999px}
.sidebar .side-nav::-webkit-scrollbar-thumb:hover{background:#ffffff88}
.sidebar .side-nav>a,.sidebar .side-nav>.nav-label{display:flex}
.sidebar .side-nav>.nav-label{margin-top:18px}
.sidebar .side-nav>.nav-label:first-child{margin-top:0}
@media(max-width:1000px){.sidebar{overflow:visible}.sidebar .side-nav{display:grid;flex:none;overflow:visible;max-height:none;padding-right:0}}

/* Convocatorias: programas ofertados sin límite fijo de filas. */
.programs-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-top:1.5rem;margin-bottom:.85rem}.programs-toolbar h2{margin:0 0 .25rem}.programs-toolbar p{margin:0}.program-row{display:block;padding:.85rem;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}.program-row-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.7rem;padding-bottom:.55rem;border-bottom:1px solid var(--line)}.program-row-head strong{font-size:.9rem}.program-row-fields{display:grid;grid-template-columns:2fr 1.5fr 1fr .7fr .8fr .8fr;gap:.55rem;align-items:end}.program-row-fields label{margin:0}.program-row-remove{flex:0 0 auto}.call-program-grid:empty::before{content:'No hay programas agregados.';display:block;padding:1rem;border:1px dashed var(--line);border-radius:11px;color:var(--muted);text-align:center}
@media(max-width:1200px){.program-row-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.programs-toolbar{align-items:stretch;flex-direction:column}.programs-toolbar .btn{width:100%}.program-row-fields{grid-template-columns:1fr}.program-row-head{align-items:center}}
