@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
:root{--navy:#222752;--blue:#2b5fa8;--gold:#d4b55b;--sky:#eaf3ff;--ink:#1e293b;--muted:#64748b;--line:#e2e8f0;--bg:#f4f7fb;--white:#fff;--green:#16734b;--red:#b42318}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,Arial,sans-serif;font-size:14px}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:76px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 30px;box-shadow:0 4px 18px #102b521c}.brand{display:flex;align-items:center;gap:12px}.brand-mark,.login-logo,.report-emblem{display:grid;place-items:center;background:#fff;color:var(--navy);font-weight:800;border-radius:12px;width:44px;height:44px;font-size:17px}.brand strong,.brand small{display:block}.brand strong{font-size:15px}.brand small{font-size:11px;opacity:.7;margin-top:4px}.userbox{display:flex;align-items:center;gap:12px;font-size:13px}.role{background:#ffffff22;padding:5px 8px;border-radius:20px}.logout{color:white;border:1px solid #ffffff66;border-radius:8px;padding:8px 12px}.shell{display:flex;min-height:calc(100vh - 130px)}.sidebar{width:250px;background:#fff;border-right:1px solid var(--line);padding:26px 14px;flex-shrink:0;display:flex;flex-direction:column;gap:5px}.nav-label,.eyebrow{font-size:10px;letter-spacing:1.4px;color:#7c8ba1;font-weight:800}.nav-label{padding:0 12px 12px}.sidebar>a{padding:12px;border-radius:9px;color:#526176;font-weight:600;font-size:13px}.sidebar>a:hover{background:var(--sky);color:var(--blue)}.sidebar-foot{margin-top:auto;background:#f3f7fc;border-radius:10px;padding:15px;color:var(--muted);font-size:12px;line-height:1.8}.sidebar-foot strong{color:var(--navy)}.main{padding:32px;max-width:1500px;width:100%;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.page-head h1{font-size:27px;margin:7px 0;color:var(--navy);letter-spacing:-.7px}.muted{color:var(--muted);margin:0;line-height:1.6}.pill{background:#e0f2fe;color:#075985;border-radius:30px;padding:8px 12px;font-size:11px;font-weight:800}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.stat-card,.panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 4px 16px #102b5207}.stat-card{padding:21px;color:var(--ink);display:flex;flex-direction:column;gap:9px}.stat-card span{font-size:12px;color:var(--muted);font-weight:600}.stat-card strong{font-size:32px;color:var(--navy)}.stat-card small{color:var(--blue)}.panel{padding:24px;margin-bottom:22px}.panel h2{font-size:16px;margin:0 0 20px;color:var(--navy)}.quick-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.quick-links a{border:1px solid var(--line);border-radius:9px;padding:14px;font-weight:600}.quick-links a:hover{background:var(--sky)}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}.tabs a{padding:10px 13px;background:#e8edf4;border-radius:8px;color:#526176;font-weight:600;font-size:12px}.tabs a.active{background:var(--navy);color:white}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-stack{display:flex;flex-direction:column;gap:17px}.form-grid label,.form-stack label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#475569;font-weight:700}.form-grid input,.form-grid select,.form-grid textarea,.form-stack input{width:100%;padding:11px 12px;border:1px solid #d7e0eb;border-radius:8px;background:#fff;outline:none;color:var(--ink)}input:focus,select:focus,textarea:focus{border-color:#4387d7;box-shadow:0 0 0 3px #4387d71a}.span-2{grid-column:span 2}.check-label{flex-direction:row!important;align-items:center}.check-label input{width:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border:1px solid #d6e0ed;border-radius:8px;background:#fff;color:var(--navy);font-weight:700;cursor:pointer;font-size:12px}.btn:hover{filter:brightness(.97)}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.full{width:100%;padding:13px}.btn.small{padding:7px 10px}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;min-width:600px}th{text-align:left;background:#f7f9fc;color:#63738a;font-size:10px;text-transform:uppercase;letter-spacing:.5px;font-weight:800}td,th{padding:13px 12px;border-bottom:1px solid #edf1f6;white-space:normal}tbody tr:hover{background:#fafcff}tbody tr:last-child td{border-bottom:0}.empty{text-align:center;color:#8290a3;padding:24px}.count{background:#edf4ff;color:var(--blue);padding:4px 8px;border-radius:20px;margin-left:5px;font-size:11px}.alert{padding:12px 14px;border-radius:9px;background:#e9f8ef;color:#17633d;margin-bottom:18px;font-size:13px}.alert.error{background:#fff0ef;color:#a12a20}.good{color:var(--green);font-weight:700}.bad{color:var(--red);font-weight:700}.footer{text-align:center;color:#8b98a9;font-size:11px;padding:18px}.login-wrap{min-height:calc(100vh - 60px);display:grid;place-items:center;padding:28px;background:linear-gradient(145deg,#edf4ff,#f7f9fc 65%)}.login-card{background:white;border:1px solid var(--line);box-shadow:0 18px 65px #12345a14;border-radius:18px;width:min(100%,420px);padding:38px}.login-logo{background:var(--navy);color:#fff;width:54px;height:54px;font-size:20px;margin-bottom:24px}.login-card h1{font-size:29px;color:var(--navy);margin:7px 0}.login-note{font-size:11px;color:#8592a4;text-align:center;line-height:1.6;margin:20px 0 0}.report-actions{display:flex;justify-content:space-between;margin-bottom:18px}.transcript{background:#fff;border:1px solid var(--line);border-radius:8px;padding:38px;max-width:1000px;margin:auto}.report-head{display:flex;justify-content:center;align-items:center;gap:18px;text-align:left}.report-emblem{background:var(--navy);color:#fff;width:60px;height:60px;font-size:21px}.report-head h1{font-size:20px;letter-spacing:.5px;color:var(--navy);margin:0 0 7px}.report-head p{font-size:11px;letter-spacing:2px;color:var(--muted);margin:0}.transcript hr{border:0;border-top:2px solid var(--navy);margin:25px 0}.student-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 25px;margin:22px 0 30px}.student-info small,.student-info strong{display:block}.student-info small{font-size:9px;letter-spacing:.7px;color:var(--muted);margin-bottom:6px}.student-info strong{font-size:12px}.semester-title{font-size:13px;color:var(--navy);margin:28px 0 12px}.semester-average{text-align:right;color:#526176;font-size:12px}.signature-row{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin:70px 20px 30px;text-align:center}.signature-row span{display:block;border-top:1px solid #6b7280;margin-bottom:8px}.signature-row small{font-size:10px;color:#64748b}.report-foot{text-align:center;font-size:9px;color:#94a3b8;margin-top:30px}
@media(max-width:900px){.sidebar{width:205px}.main{padding:22px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-links{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.topbar{padding:0 14px;height:68px}.brand strong{font-size:12px}.brand-mark{width:38px;height:38px}.userbox{gap:7px;font-size:11px}.role{display:none}.shell{display:block}.sidebar{width:100%;padding:8px;display:flex;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}.sidebar .nav-label,.sidebar-foot{display:none}.sidebar>a{white-space:nowrap;font-size:11px;padding:10px}.main{padding:18px 12px}.page-head h1{font-size:23px}.stats{gap:9px}.stat-card{padding:15px}.stat-card strong{font-size:26px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.panel{padding:16px}.quick-links{grid-template-columns:1fr}.transcript{padding:18px}.student-info{grid-template-columns:1fr 1fr}.report-head h1{font-size:14px}.report-head p{font-size:9px}.report-actions .btn{font-size:10px;padding:9px}}
@media print{body{background:#fff;font-size:11px}.topbar,.sidebar,.footer,.report-actions,.no-print{display:none!important}.shell{display:block;min-height:0}.main{padding:0;max-width:none}.transcript{border:0;border-radius:0;padding:0;max-width:none}.report-head h1{font-size:16px}.student-info{margin:14px 0 20px}.semester-title{break-after:avoid}.table-wrap{overflow:visible}table{min-width:0;font-size:9px}td,th{padding:7px 5px}.signature-row{margin-top:60px}.panel{box-shadow:none;border:0}.footer{display:none}@page{size:A4;margin:15mm}}

.narrow{max-width:560px}.panel code{background:#f1f5f9;padding:3px 5px;border-radius:4px}
.report-logo{width:72px;height:72px;object-fit:contain;margin-right:18px;background:#fff}.report-period{margin:.25rem 0 0;font-size:.85rem}.report-head{display:flex;align-items:center;gap:12px}.report-head h1{margin:0}
/* Identidad institucional: logotipo oficial Signos de Fe */
.brand-logo{width:50px;height:56px;object-fit:contain;background:#fff;border-radius:7px;padding:2px;flex-shrink:0}
.login-logo{display:block;width:205px;height:228px;object-fit:contain;background:transparent;border-radius:0;margin:0 auto 20px}
.footer{display:flex;align-items:center;justify-content:center;gap:10px}
.footer-logo{width:38px;height:42px;object-fit:contain;background:transparent;border-radius:0}
.report-logo{width:86px;height:96px;object-fit:contain;background:transparent;border-radius:0;flex:0 0 auto}
.report-emblem{display:none}
.report-head{display:flex;align-items:center;justify-content:center;gap:14px;text-align:left}
.report-head h1{color:var(--navy)}
.report-head p{color:var(--muted)}
.report-head .report-period strong{color:var(--gold)}
.btn.primary{background:var(--navy);border-color:var(--navy)}
.tabs a.active{background:var(--navy)}
@media(max-width:640px){
  .brand-logo{width:42px;height:47px;padding:1px}
  .login-logo{width:170px;height:190px;margin-bottom:16px}
  .footer-logo{width:30px;height:34px}
  .report-logo{width:68px;height:76px}
}
