:root {
    --navy: #102f57;
    --blue: #2d8cf0;
    --cyan: #39bfd6;
    --ink: #263d58;
    --muted: #75879b;
    --surface: #ffffff;
    --background: #f3f7fc;
    --border: #dce6f1;
}

/* Administracion de usuarios */
.module-link{margin-top:auto;padding:12px;color:white;background:linear-gradient(135deg,#237bd3,#2d8cf0);border-radius:11px;font-weight:800;text-align:center;text-decoration:none}.user-admin-card{border-top:4px solid #2d8cf0}
.admin-body{min-height:100vh;background:#f2f6fb}.admin-topbar{min-height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 max(4vw,calc((100vw - 1280px)/2));color:white;background:#0d2d50;box-shadow:0 8px 24px rgba(16,47,87,.14)}.admin-topbar .brand,.admin-topbar a{color:white;text-decoration:none}.admin-topbar>div a{font-size:.88rem;font-weight:750;opacity:.86}.admin-container{width:min(1280px,94vw);margin:36px auto 80px}.admin-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-bottom:24px;padding:30px 34px;color:white;background:linear-gradient(120deg,#133b67,#2d8cf0);border-radius:22px;box-shadow:0 15px 34px rgba(24,81,139,.18)}.admin-heading h1{margin:3px 0 7px;font-size:clamp(2rem,4vw,3rem)}.admin-heading p{margin:0;opacity:.85}.eyebrow.dark{color:#bceefd;opacity:1}.primary-button.compact{width:auto;min-width:150px;margin:0;padding:12px 18px;box-shadow:0 8px 20px rgba(6,39,73,.18)}
.notice{margin:0 0 16px;padding:14px 17px;border-radius:12px;font-weight:700}.notice.success{color:#176b3a;background:#e7f8ee;border:1px solid #bce8cd}.notice.error{color:#933737;background:#fff0f0;border:1px solid #f1c8c8}.credential-box{display:grid;gap:8px;margin:0 0 18px;padding:18px 20px;color:#62470a;background:#fff8dd;border:1px solid #eed98b;border-radius:14px}.credential-box code{width:max-content;max-width:100%;padding:9px 12px;color:#102f57;background:white;border-radius:8px;font-size:.95rem;overflow:auto}.credential-box small{opacity:.76}
.user-filters{display:flex;align-items:flex-end;gap:14px;margin-bottom:20px;padding:18px;background:white;border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 22px rgba(26,61,96,.06)}.user-filters label{display:grid;gap:7px;color:#5d7188;font-size:.76rem;font-weight:850}.user-filters .grow{flex:1}.user-filters input,.user-filters select,.form-grid input,.form-grid select{min-height:42px;padding:10px 12px;color:var(--ink);background:#f8fbfe;border:1px solid #cedbe8;border-radius:9px;font:inherit}.user-filters button{min-height:42px;padding:10px 17px;color:white;background:#244e79;border:0;border-radius:9px;font-weight:800;cursor:pointer}
.user-table-shell{overflow:hidden;background:white;border:1px solid var(--border);border-radius:18px;box-shadow:0 12px 30px rgba(26,61,96,.07)}.table-summary{display:flex;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--border)}.table-summary span{color:var(--muted);font-size:.8rem}.responsive-table{overflow-x:auto}.user-table{width:100%;border-collapse:collapse}.user-table th{padding:13px 16px;color:#6b7e92;background:#f7fafe;font-size:.7rem;letter-spacing:.05em;text-align:left;text-transform:uppercase}.user-table td{padding:15px 16px;border-top:1px solid #edf2f7;font-size:.86rem;vertical-align:middle}.user-cell{display:flex;align-items:center;gap:11px;min-width:220px}.user-cell>span{width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;color:#176aa9;background:#e4f3fd;border-radius:11px;font-size:.75rem;font-weight:900}.user-cell div{display:grid;gap:3px}.user-cell small{color:var(--muted)}
.state-badge{display:inline-block;padding:6px 9px;border-radius:99px;font-size:.66rem;font-weight:900}.state-badge.activo{color:#17713f;background:#e5f8ec}.state-badge.inactivo{color:#6c7784;background:#edf1f5}.state-badge.bloqueado{color:#983737;background:#fde9e9}.row-actions{display:flex;align-items:center;gap:7px;white-space:nowrap}.row-actions form{margin:0}.link-button{padding:6px 8px;color:#2276c7;background:transparent;border:0;border-radius:7px;font-size:.75rem;font-weight:800;cursor:pointer}.link-button:hover{background:#edf5fd}.link-button.danger{color:#b04747}.no-results{padding:40px!important;color:var(--muted);text-align:center}
.user-dialog{width:min(700px,94vw);padding:0;border:0;border-radius:22px;box-shadow:0 30px 80px rgba(5,30,55,.3)}.user-dialog::backdrop{background:rgba(5,25,45,.62);backdrop-filter:blur(3px)}.user-dialog form{padding:28px}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}.dialog-heading h2{margin:9px 0 0;font-size:1.7rem}.dialog-heading>button{width:36px;height:36px;color:#73869a;background:#edf3f8;border:0;border-radius:10px;font-size:1.4rem;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid label{display:grid;gap:7px;color:#50657b;font-size:.78rem;font-weight:850}.form-grid .full{grid-column:1/-1}.dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:25px;padding-top:20px;border-top:1px solid var(--border)}.dialog-actions>button:first-child{padding:11px 16px;color:#64788e;background:#edf2f7;border:0;border-radius:9px;font-weight:800;cursor:pointer}
@media(max-width:760px){.admin-heading,.user-filters{align-items:stretch;flex-direction:column}.admin-heading{padding:25px}.user-filters button{width:100%}.table-summary{align-items:flex-start;flex-direction:column;gap:5px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.admin-topbar{padding:14px 4vw}.brand-name{font-size:1.1rem}}
* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: var(--background); font-family: Inter, "Segoe UI", Arial, sans-serif; }
.topbar { min-height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 0 5vw; color: white; background: var(--navy); box-shadow: 0 8px 24px rgba(16,47,87,.16); }
.brand { font-size: 1.5rem; font-weight: 800; }.brand span { color: #75d84b; }.context { opacity: .88; }
.topbar-right { display: flex; align-items: center; gap: 24px; }.user-menu { display: flex; align-items: center; gap: 12px; padding-left: 20px; border-left: 1px solid rgba(255,255,255,.2); }.user-menu span { font-weight: 700; }.user-menu form { margin: 0; }.user-menu button { padding: 8px 12px; color: white; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.22); border-radius: 9px; cursor: pointer; }
.container { width: min(1180px, 92vw); margin: 34px auto 70px; }
.hero { display: flex; align-items: center; justify-content: space-between; min-height: 220px; padding: 42px 48px; color: white; border-radius: 26px; background: linear-gradient(120deg, #174a80, var(--blue)); box-shadow: 0 18px 40px rgba(29,91,153,.2); overflow: hidden; }
.eyebrow { margin: 0 0 10px; font-size: .75rem; font-weight: 800; letter-spacing: .15em; opacity: .8; }.hero h1 { margin: 0 0 10px; font-size: clamp(2rem, 4vw, 3rem); }.hero p { margin: 0; opacity: .9; }.year { font-size: clamp(4rem, 11vw, 8rem); font-weight: 900; opacity: .13; }
.section-title { display: flex; align-items: center; justify-content: space-between; margin: 38px 0 18px; }.section-title h2 { margin: 0 0 5px; }.section-title p { margin: 0; color: var(--muted); }.status,.module-state { display: inline-block; color: #08788b; background: #e3f8fb; border-radius: 99px; padding: 7px 12px; font-size: .72rem; font-weight: 800; }
.modules { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; }.module-card,.empty { min-height: 245px; display: flex; flex-direction: column; gap: 14px; padding: 25px; background: var(--surface); border: 1px solid var(--border); border-radius: 20px; box-shadow: 0 12px 28px rgba(26,61,96,.08); }.module-icon { width: 48px; height: 48px; display: grid; place-items: center; color: white; background: linear-gradient(135deg,var(--blue),var(--cyan)); border-radius: 14px; font-weight: 900; }.module-card h3 { margin: 10px 0 6px; }.module-card p,.empty p { margin: 0; color: var(--muted); line-height: 1.5; }.module-card button { margin-top: auto; padding: 12px; color: #7990a8; background: #edf3f9; border: 0; border-radius: 11px; font-weight: 700; }
footer { padding: 28px; color: var(--muted); background: white; border-top: 1px solid var(--border); text-align: center; }
.auth-body { min-height: 100vh; display: grid; place-items: center; padding: 28px; background: radial-gradient(circle at 15% 15%, rgba(57,191,214,.2), transparent 30%), linear-gradient(135deg, #0d294b, #194f84); }
.auth-shell { width: min(960px, 100%); display: grid; grid-template-columns: 1fr 440px; overflow: hidden; background: white; border-radius: 26px; box-shadow: 0 28px 70px rgba(0,0,0,.25); }.auth-shell.single { width: min(480px, 100%); grid-template-columns: 1fr; }.auth-brand { display: flex; flex-direction: column; justify-content: center; padding: 58px; color: white; background: linear-gradient(140deg, #12365f, #2d8cf0); }.auth-brand h1 { margin: 0 0 14px; font-size: 2.7rem; }.auth-brand h1 span { color: #87e459; }.auth-brand p:last-child { max-width: 390px; line-height: 1.6; opacity: .88; }.auth-card { padding: 48px 42px; }.auth-card h2 { margin: 14px 0 8px; font-size: 2rem; }.auth-card > p { margin: 0 0 25px; color: var(--muted); line-height: 1.5; }.auth-badge { display: inline-block; padding: 7px 11px; color: #0d7384; background: #e3f8fb; border-radius: 99px; font-size: .7rem; font-weight: 800; letter-spacing: .08em; }.auth-card form { display: grid; gap: 10px; }.auth-card label { margin-top: 8px; font-size: .85rem; font-weight: 800; }.auth-card input { width: 100%; padding: 13px 14px; color: var(--ink); background: #f8fbfe; border: 1px solid #cedbe8; border-radius: 11px; font: inherit; outline: none; }.auth-card input:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(45,140,240,.14); }.primary-button { margin-top: 12px; padding: 14px; color: white; background: linear-gradient(135deg, #237bd3, #2d8cf0); border: 0; border-radius: 11px; font-size: 1rem; font-weight: 800; cursor: pointer; }.alert { margin: 0 0 18px; padding: 12px 14px; color: #8e2b2b; background: #fff0f0; border: 1px solid #f2c6c6; border-radius: 10px; font-size: .9rem; }
@media (max-width: 700px) { .topbar,.section-title,.topbar-right { align-items: flex-start; flex-direction: column; gap: 10px; }.topbar { padding: 18px 5vw; }.user-menu { padding-left: 0; border-left: 0; }.hero { padding: 32px 25px; }.year { display: none; }.auth-shell { grid-template-columns: 1fr; }.auth-brand { display: none; }.auth-card { padding: 36px 25px; } }

a { color: inherit; }
.public-topbar { position: sticky; top: 0; z-index: 20; min-height: 82px; display: flex; align-items: center; justify-content: space-between; padding: 0 max(5vw, calc((100vw - 1220px)/2)); color: white; background: rgba(10,37,69,.96); border-bottom: 1px solid rgba(255,255,255,.1); box-shadow: 0 8px 28px rgba(8,30,58,.16); backdrop-filter: blur(14px); }
.public-topbar .brand { text-decoration: none; }
.public-topbar .brand { display: flex; align-items: center; gap: 11px; }
.brand-symbol { width: 38px; height: 38px; display: grid; place-items: center; color: white; background: linear-gradient(145deg,#39bfd6,#2d8cf0); border-radius: 12px; box-shadow: 0 7px 16px rgba(45,140,240,.3); font-size: 1.15rem; }
.brand-name { color: white; }.brand-name strong { color: #79db4b; }
.public-topbar nav { display: flex; align-items: center; gap: 24px; }
.public-topbar nav a { text-decoration: none; font-weight: 700; opacity: .9; }
.public-topbar .nav-button { padding: 10px 15px; background: #2d8cf0; border-radius: 10px; opacity: 1; }
.public-hero { position: relative; min-height: 470px; display: flex; align-items: center; justify-content: space-between; padding: 70px max(5vw, calc((100vw - 1220px)/2)); color: white; background: radial-gradient(circle at 78% 22%, rgba(92,202,231,.28), transparent 25%), linear-gradient(120deg, #0b294d 0%, #174f85 55%, #2d8cf0 100%); overflow: hidden; }
.public-hero::after { content:""; position:absolute; right:-12%; bottom:-60%; width:620px; height:620px; border:1px solid rgba(255,255,255,.09); border-radius:50%; }
.public-hero > div:first-child { max-width: 700px; }
.public-hero h1 { margin: 10px 0 18px; font-size: clamp(2.7rem, 6vw, 5.2rem); line-height: .98; letter-spacing: -.045em; }
.public-hero h1 span { color: #73dcf0; }
.hero-copy > p:last-of-type { max-width: 650px; margin: 0; font-size: 1.12rem; line-height: 1.7; opacity: .87; }
.hero-action { display: inline-flex; align-items:center; gap:12px; margin-top:28px; padding:13px 18px; color:#14395e; background:white; border-radius:12px; box-shadow:0 12px 25px rgba(2,25,54,.18); font-size:.9rem; font-weight:850; text-decoration:none; }
.hero-action span { color:var(--blue); font-size:1.1rem; }
.hero-visual { position: relative; width: 360px; height: 300px; flex: 0 0 360px; }
.hero-mark { position:absolute; inset:50% auto auto 50%; transform:translate(-50%,-50%); width:160px; height:160px; display:grid; place-items:center; color:white; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.18); border-radius:45px; box-shadow:0 30px 70px rgba(3,25,53,.25); font-size:5rem; font-weight:900; letter-spacing:-.12em; backdrop-filter:blur(10px); }
.hero-mark span { color:#79db4b; }
.visual-orbit { position:absolute; inset:50% auto auto 50%; border:1px solid rgba(255,255,255,.17); border-radius:50%; transform:translate(-50%,-50%); }.orbit-one{width:250px;height:250px}.orbit-two{width:335px;height:335px}
.visual-chip { position:absolute; padding:9px 13px; color:white; background:rgba(7,37,69,.65); border:1px solid rgba(255,255,255,.18); border-radius:99px; box-shadow:0 10px 25px rgba(2,25,54,.2); font-size:.76rem; font-weight:800; backdrop-filter:blur(8px); }.chip-one{top:22px;left:8px}.chip-two{right:0;top:92px}.chip-three{bottom:19px;left:26px}
.public-container { width: min(1180px, 92vw); margin: 0 auto; padding: 70px 0 90px; }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; margin-bottom: 28px; }
.section-heading h2 { margin: 7px 0 0; font-size: 2.2rem; }
.section-heading > p { max-width: 470px; margin: 0; color: var(--muted); line-height: 1.6; }
.section-kicker { color: #1385ba; font-size: .72rem; font-weight: 900; letter-spacing: .12em; }
.institution-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 24px; }
.institution-card { position: relative; min-height: 390px; display: flex; flex-direction: column; align-items: flex-start; overflow: hidden; padding: 30px; background: white; border: 1px solid var(--border); border-radius: 24px; box-shadow: 0 16px 38px rgba(26,61,96,.09); transition:transform .2s ease,box-shadow .2s ease; }
.institution-card:hover { transform:translateY(-4px); box-shadow:0 22px 48px rgba(26,61,96,.14); }
.institution-accent { position: absolute; inset: 0 0 auto; height: 6px; background: linear-gradient(90deg, var(--school-primary), var(--school-secondary)); }
.institution-card-head { width:100%; display:flex; align-items:center; justify-content:space-between; gap:18px; margin:6px 0 22px; }
.institution-logo { position: relative; width: 98px; height: 98px; display: grid; place-items: center; color: white; background: linear-gradient(145deg, var(--school-primary), var(--school-secondary)); border:1px solid var(--border); border-radius: 24px; box-shadow:0 10px 25px rgba(23,60,95,.1); font-size: 2rem; font-weight: 900; overflow: hidden; }
.institution-logo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; padding: 6px; background: white; }
.period-pill { display:inline-flex; align-items:center; gap:7px; padding: 7px 11px; color: var(--school-primary); background: #edf5fc; border-radius: 99px; font-size: .72rem; font-weight: 850; white-space:nowrap; }.period-pill i{width:7px;height:7px;background:#54b82f;border-radius:50%;box-shadow:0 0 0 4px rgba(84,184,47,.12)}
.institution-card h3 { margin: 15px 0 9px; font-size: 1.35rem; line-height: 1.25; }
.institution-card > p { margin: 0; color: var(--muted); line-height: 1.55; }
.institution-actions { width: 100%; display: grid; gap: 9px; margin-top: auto; padding-top: 25px; }
.institution-actions a { padding: 12px 15px; border-radius: 11px; text-align: center; text-decoration: none; font-weight: 800; }
.school-login { display:flex; align-items:center; justify-content:space-between; color: white; background: linear-gradient(135deg,var(--school-primary),var(--school-secondary)); box-shadow:0 8px 18px rgba(21,63,102,.14); }
.school-enrollment { color: white; background: #61b832; }
.public-footer { min-height:90px; display:flex; align-items:center; justify-content:center; gap:14px; }.public-footer strong{color:var(--navy)}.public-footer strong span{color:#61b832}.public-footer small{padding-left:14px;border-left:1px solid var(--border)}
.auth-body { background: radial-gradient(circle at 15% 15%, rgba(57,191,214,.2), transparent 30%), linear-gradient(135deg, var(--school-primary, #0d294b), var(--school-secondary, #194f84)); }
.auth-brand { background: linear-gradient(140deg, var(--school-primary, #12365f), var(--school-secondary, #2d8cf0)); }
.auth-card input:focus { border-color: var(--school-secondary, var(--blue)); }
.primary-button,.primary-link { display: block; margin-top: 12px; padding: 14px; color: white; background: linear-gradient(135deg, var(--school-primary, #237bd3), var(--school-secondary, #2d8cf0)); border: 0; border-radius: 11px; font-size: 1rem; font-weight: 800; cursor: pointer; text-align: center; text-decoration: none; }
.back-link { display: inline-block; margin-top: 22px; color: var(--muted); font-size: .86rem; text-decoration: none; }
.centered-card { text-align: center; }
.brand .brand-symbol{color:white}.brand .brand-name{color:white}.brand .brand-name strong{color:#79db4b}
.enrollment-body{background:#eef4fa}.enrollment-topbar{min-height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 max(4vw,calc((100vw - 1100px)/2));color:white;background:var(--school-primary,#102f57)}.enrollment-topbar a{color:white;text-decoration:none;font-size:.86rem;font-weight:750}.enrollment-topbar span{color:#79db4b}.enrollment-shell{width:min(1100px,94vw);margin:32px auto 75px}.enrollment-intro{margin-bottom:20px;padding:30px 34px;color:white;background:linear-gradient(125deg,var(--school-primary,#12365f),var(--school-secondary,#2d8cf0));border-radius:22px;box-shadow:0 16px 35px rgba(20,70,120,.18)}.enrollment-intro h1{margin:10px 0 5px;font-size:clamp(2rem,4vw,3rem)}.enrollment-intro p{margin:0;opacity:.86}.form-progress{display:flex;align-items:center;max-width:330px;margin:26px 0 8px}.form-progress span{width:30px;height:30px;display:grid;place-items:center;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);border-radius:50%;font-size:.75rem;font-weight:900}.form-progress span.active{color:#15436f;background:white}.form-progress i{height:2px;flex:1;background:rgba(255,255,255,.25)}.enrollment-intro small{opacity:.72}.enrollment-form{display:grid;gap:18px}.enrollment-form fieldset{margin:0;padding:26px 28px;background:white;border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 25px rgba(25,62,98,.06)}.enrollment-form legend{display:flex;align-items:center;gap:9px;padding:0 9px;color:#25435f;font-size:1.05rem;font-weight:900}.enrollment-form legend span{width:31px;height:31px;display:grid;place-items:center;color:#1970b4;background:#e5f4fd;border-radius:9px;font-size:.7rem}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid .span2{grid-column:span 2}.form-grid textarea{padding:11px 12px;color:var(--ink);background:#f8fbfe;border:1px solid #cedbe8;border-radius:9px;font:inherit;resize:vertical}.consent{display:flex;align-items:flex-start;gap:10px;padding:17px 19px;color:#52687d;background:white;border:1px solid var(--border);border-radius:13px;font-size:.84rem;line-height:1.45}.consent input{width:18px;height:18px;flex:0 0 18px;accent-color:#2d8cf0}.submit-enrollment{display:flex;align-items:center;justify-content:center;gap:15px;padding:15px;color:white;background:linear-gradient(135deg,var(--school-primary,#237bd3),var(--school-secondary,#2d8cf0));border:0;border-radius:13px;box-shadow:0 12px 25px rgba(25,76,127,.18);font-size:1rem;font-weight:900;cursor:pointer}.confirmation-card{width:min(520px,94vw);padding:44px;text-align:center;background:white;border-radius:24px;box-shadow:0 28px 70px rgba(0,0,0,.23)}.confirmation-check{width:70px;height:70px;display:grid;place-items:center;margin:0 auto 20px;color:white;background:#56b837;border-radius:23px;font-size:2rem;font-weight:900}.confirmation-card h1{margin:14px 0 8px}.confirmation-card p{color:var(--muted)}.confirmation-card>strong{display:block;margin:18px 0;padding:15px;color:#174e80;background:#edf6fd;border:1px dashed #91bcdf;border-radius:12px;font-size:1.35rem;letter-spacing:.04em}.confirmation-card>small{display:block;color:var(--muted)}
.table-open{padding:7px 10px;color:#1d72b5;background:#e9f4fc;border-radius:8px;font-size:.76rem;font-weight:850;text-decoration:none}.detail-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px;padding:28px 32px;color:white;background:linear-gradient(120deg,#133b67,#2d8cf0);border-radius:20px}.detail-hero h1{margin:10px 0 6px}.detail-hero p{margin:0;opacity:.82}.detail-hero>strong{font-size:1.2rem}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.detail-card{padding:23px 25px;background:white;border:1px solid var(--border);border-radius:17px;box-shadow:0 8px 22px rgba(26,61,96,.05)}.detail-card.full{grid-column:1/-1}.detail-card h2{margin:0 0 17px;font-size:1.08rem}.detail-card dl{display:grid;grid-template-columns:125px 1fr;gap:9px;margin:0}.detail-card dt{color:#74869a;font-size:.77rem;font-weight:850}.detail-card dd{margin:0;font-size:.86rem}.state-form{display:grid;grid-template-columns:220px 1fr auto;gap:11px}.state-form select,.state-form input{padding:11px 12px;color:var(--ink);background:#f8fbfe;border:1px solid #cedbe8;border-radius:9px;font:inherit}.timeline{display:grid;gap:0}.timeline>div{position:relative;padding:0 0 20px 27px;border-left:2px solid #dbe8f3}.timeline i{position:absolute;left:-7px;top:2px;width:12px;height:12px;background:#2d8cf0;border:3px solid white;border-radius:50%;box-shadow:0 0 0 2px #b9d6ee}.timeline span{margin-left:12px;color:var(--muted);font-size:.73rem}.timeline p{margin:5px 0 0;color:#60758a;font-size:.83rem}.state-badge.radicada{color:#17679d;background:#e4f3fc}.state-badge.en_revision{color:#80590f;background:#fff3d4}.state-badge.admitida,.state-badge.matriculada{color:#17713f;background:#e5f8ec}.state-badge.no_admitida,.state-badge.cancelada{color:#983737;background:#fde9e9}
.module-secondary-link{padding:10px;color:#35698f;background:#eaf4fb;border-radius:10px;font-size:.82rem;font-weight:800;text-align:center;text-decoration:none}.permission-heading{align-items:center}.security-shield{width:68px;height:68px;display:grid;place-items:center;flex:0 0 68px;color:#123c66;background:rgba(255,255,255,.9);border:5px solid rgba(255,255,255,.25);border-radius:22px;font-size:1.8rem;font-weight:900}.institution-switch{margin-bottom:18px;padding:16px 18px;background:white;border:1px solid var(--border);border-radius:14px}.institution-switch label{display:flex;align-items:center;gap:14px;color:#5d7188;font-size:.78rem;font-weight:850}.institution-switch select{min-width:320px;padding:10px 12px;color:var(--ink);background:#f8fbfe;border:1px solid #cedbe8;border-radius:9px;font:inherit}.permission-note{display:flex;align-items:center;gap:15px;margin-bottom:18px;padding:16px 18px;color:#655117;background:#fff9df;border:1px solid #eadd9d;border-radius:14px}.permission-note span{font-size:.86rem;opacity:.78}.role-permission-list{display:grid;gap:14px}.role-permission-card{overflow:hidden;background:white;border:1px solid var(--border);border-radius:17px;box-shadow:0 8px 22px rgba(26,61,96,.05)}.role-permission-card summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;cursor:pointer;list-style:none}.role-permission-card summary::-webkit-details-marker{display:none}.role-permission-card[open] summary{border-bottom:1px solid var(--border)}.role-identity{display:flex;align-items:center;gap:13px}.role-identity>span{width:43px;height:43px;display:grid;place-items:center;color:#176da8;background:#e5f4fd;border-radius:12px;font-size:.75rem;font-weight:900}.role-identity div{display:grid;gap:4px}.role-identity small{color:var(--muted)}.permission-count{padding:7px 10px;color:#147343;background:#e5f8ed;border-radius:99px;font-size:.68rem;font-weight:900}.role-permission-card form{padding:20px}.permission-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.permission-groups fieldset{min-width:0;margin:0;padding:15px;border:1px solid var(--border);border-radius:13px}.permission-groups legend{padding:0 7px;color:#1c5f94;font-size:.78rem;font-weight:900;text-transform:uppercase}.permission-option{display:flex;align-items:flex-start;gap:10px;padding:10px 8px;border-radius:9px;cursor:pointer}.permission-option:hover{background:#f5f9fd}.permission-option input{width:17px;height:17px;flex:0 0 17px;margin-top:2px;accent-color:#2d8cf0}.permission-option span{display:grid;gap:3px}.permission-option strong{font-size:.84rem}.permission-option small{color:var(--muted);font-size:.73rem;line-height:1.35}.permission-save{display:flex;justify-content:flex-end;margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}
@media (max-width: 700px) {
    .public-topbar,.section-heading { align-items: flex-start; flex-direction: column; gap: 12px; }
    .public-topbar { padding: 18px 5vw; }
    .public-topbar nav { width: 100%; justify-content: space-between; }
    .hero-mark { display: none; }
    .hero-visual { display:none; }
    .public-hero { min-height: 350px; padding: 55px 5vw; }
    .public-container { padding-top: 48px; }
    .institution-card-head { align-items:flex-start; flex-direction:column; }
    .public-footer { flex-direction:column; }.public-footer small{padding-left:0;border-left:0}
    .permission-groups{grid-template-columns:1fr}.role-permission-card summary{align-items:flex-start;flex-direction:column}.institution-switch label{align-items:stretch;flex-direction:column}.institution-switch select{min-width:0;width:100%}.permission-note{align-items:flex-start;flex-direction:column}.permission-save .primary-button{width:100%}
    .form-grid.three{grid-template-columns:1fr}.form-grid .span2,.detail-card.full{grid-column:auto}.enrollment-form fieldset{padding:20px 17px}.detail-grid{grid-template-columns:1fr}.detail-hero{align-items:flex-start;flex-direction:column}.state-form{grid-template-columns:1fr}.detail-card dl{grid-template-columns:1fr}.detail-card dd{margin-bottom:8px}
}
