:root{
  --navy:#062b57;--navy-2:#0a3a73;--navy-3:#0e4f95;--gold:#c9a227;--gold-2:#e0bd43;
  --ink:#12233b;--muted:#66758a;--line:#dbe3ec;--bg:#f4f7fa;--white:#fff;
  --teal:#0b8f8c;--red:#bd2d3b;--green:#178652;--amber:#b26d00;--shadow:0 14px 38px rgba(5,35,72,.10);
  --radius:16px;--radius-sm:10px;--max:1280px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}img{max-width:100%;display:block}a{color:var(--navy-2);text-decoration:none}a:hover{text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.container{width:min(var(--max),calc(100% - 40px));margin-inline:auto}.eyebrow{margin:0 0 8px;font-size:.75rem;font-weight:800;letter-spacing:.18em;color:var(--navy-3)}.eyebrow.light{color:#e9f2ff}.light{color:#fff}.muted{color:var(--muted)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#eef3f8;border-radius:6px;padding:2px 6px;color:var(--navy)}small{display:block;color:var(--muted)}

/* Brand and top navigation */
.site-header,.auth-header,.teacher-header,.student-header{background:#fff;border-top:4px solid var(--navy);border-bottom:1px solid var(--line);position:relative;z-index:30}.header-inner{min-height:78px;display:flex;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:10px;min-width:235px;color:var(--navy)}.brand-uas{height:54px;width:43px;object-fit:contain}.brand-fefyde{height:48px;width:38px;object-fit:contain}.brand-copy{display:flex;flex-direction:column;line-height:1.1}.brand-copy strong{font-size:1rem;letter-spacing:.05em}.brand-copy small{font-size:.72rem;margin-top:4px;color:#53667c}.top-nav,.teacher-top-nav,.student-nav{display:flex;align-items:center;gap:4px;margin-left:auto}.top-nav a,.teacher-top-nav a,.student-nav a{padding:11px 12px;border-radius:8px;font-size:.9rem;font-weight:700;color:#26384e;white-space:nowrap}.top-nav a:hover,.teacher-top-nav a:hover,.student-nav a:hover{background:#eef4fa;color:var(--navy)}.nav-toggle{display:none;border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 10px;color:var(--navy);font-weight:800}.teacher-identity,.student-identity{border-left:1px solid var(--line);padding-left:16px;display:flex;flex-direction:column;min-width:max-content}.teacher-identity span{font-size:.7rem;text-transform:uppercase;color:var(--muted);font-weight:700}.teacher-identity strong,.student-identity strong{font-size:.83rem}.student-identity small{font-size:.72rem}.logout-form{margin:0}.text-button{border:0;background:transparent;color:var(--red);font-weight:800;padding:8px}.auth-header-title{margin-left:auto;color:var(--navy);font-weight:800}.student-preview-bar{background:#fff2c8;border-bottom:1px solid #e6cd76}.student-preview-inner{display:flex;gap:20px;align-items:center;justify-content:space-between;padding:10px 0}.student-preview-inner>div:first-child{display:flex;flex-direction:column}.student-preview-inner span{font-size:.82rem;color:#67581f}.student-preview-actions{display:flex;gap:14px}.student-preview-actions a{font-size:.82rem;font-weight:800}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:10px;border:1px solid transparent;font-weight:800;line-height:1.2;transition:.15s ease}.btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(5,35,72,.12)}.btn-primary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn-gold{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:#102342;border-color:#d4ad30}.btn-outline{background:#fff;color:var(--navy);border-color:#bcc9d8}.btn-ghost-light{color:#fff;border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.08)}.btn-wide{width:100%}.btn-compact{min-height:36px;padding:7px 12px;font-size:.82rem}.back-link{display:inline-block;margin-top:18px;font-weight:800}.actions-inline,.card-actions,.form-actions,.dashboard-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* Public home */
.public-body{background:#fff}.uas-hero{background:linear-gradient(135deg,#062b57 0%,#0a3a73 60%,#062b57 100%);color:#fff;overflow:hidden}.uas-hero-grid{display:grid;grid-template-columns:1.05fr 1.25fr;min-height:470px}.uas-hero-copy{padding:68px 34px 58px 0;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2}.uas-hero-copy h1{font-size:clamp(2.5rem,5vw,4.6rem);line-height:1.02;letter-spacing:-.04em;margin:0 0 12px;max-width:760px}.uas-hero-copy h2{font-size:clamp(1.6rem,3vw,2.4rem);color:#f0c952;margin:0 0 14px}.hero-description{font-size:1.05rem;max-width:620px;color:#e1ecf7}.hero-actions{display:flex;gap:12px;margin:18px 0}.hero-meta{display:flex;gap:20px;margin-top:12px;font-size:.84rem;color:#cbd9e8}.uas-hero-photo{background-image:linear-gradient(90deg,#062b57 0%,rgba(6,43,87,.25) 25%,rgba(6,43,87,.05) 100%),url('../uas/hero-volley.jpg');background-size:cover;background-position:center;min-height:470px;position:relative}.uas-hero-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(5,27,55,.35))}.quick-links{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:-28px;position:relative;z-index:3}.quick-card{background:#fff;border:1px solid #e1e7ee;border-radius:14px;box-shadow:var(--shadow);padding:18px;display:flex;align-items:center;gap:14px;color:var(--ink)}.quick-card:hover{transform:translateY(-2px)}.quick-card>div{min-width:0;flex:1}.quick-card strong{display:block;color:var(--navy)}.quick-card small{font-size:.78rem}.quick-card>b{color:var(--navy-3);font-size:1.2rem}.quick-icon{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:#e8f1fb;color:var(--navy);font-weight:900}.campus-section{padding:70px 0}.section-heading{margin-bottom:26px;text-align:center}.section-heading.left{text-align:left}.section-heading h2{margin:0;font-size:2rem;color:var(--navy)}.section-heading p{color:var(--muted);margin:6px 0}.campus-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.campus-card{border-radius:16px;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:0 8px 24px rgba(5,35,72,.07)}.campus-card img{width:100%;height:220px;object-fit:cover}.campus-card div{padding:16px 18px}.campus-card strong{font-size:1.05rem;color:var(--navy)}.campus-card p{margin:4px 0 0;color:var(--muted)}.institution-strip{background:#eef3f8;border-top:1px solid var(--line);padding:30px 0}.institution-grid{display:grid;grid-template-columns:110px 1fr 110px;align-items:center;gap:30px;text-align:center}.institution-grid img{height:95px;object-fit:contain;margin:auto}.institution-grid strong,.institution-grid span,.institution-grid small{display:block}.institution-grid strong{font-size:1.25rem;color:var(--navy)}.site-footer{background:#041f40;color:#dce8f4;padding:26px 0}.footer-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:24px}.footer-grid>div{display:flex;flex-direction:column}.footer-grid small{color:#aebfd1}.public-main{min-height:65vh}.public-title-band{background:linear-gradient(rgba(6,43,87,.88),rgba(6,43,87,.88)),url('../uas/edificio-historico.png') center/cover;color:#fff;padding:52px 0}.public-title-band h1{font-size:2.7rem;margin:0}.public-notices{padding:46px 0}.notice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.notice-card{background:#fff;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:12px;padding:18px}.notice-card h2,.notice-card h3{margin:6px 0;color:var(--navy)}.notice-card p{margin:6px 0;color:#4d5f73}.notice-date{font-size:.78rem;color:var(--muted);font-weight:700}.notice-card.compact{padding:14px}.notice-card.compact h3{font-size:1rem}

/* Login */
.auth-body{min-height:100vh;background:#edf2f7}.auth-main{display:grid;grid-template-columns:1.05fr .95fr;min-height:calc(100vh - 142px)}.auth-visual{position:relative;min-height:640px;background-size:cover;background-position:center;display:flex;align-items:flex-end;color:#fff}.student-auth-visual{background-image:linear-gradient(180deg,rgba(6,43,87,.18),rgba(6,43,87,.86)),url('../uas/campus-actividad.jpg')}.teacher-auth-visual{background-image:linear-gradient(180deg,rgba(6,43,87,.18),rgba(6,43,87,.88)),url('../uas/campus-edificio.jpg')}.auth-visual-copy{padding:52px;max-width:700px}.auth-visual-copy h1{font-size:clamp(2.5rem,5vw,4rem);line-height:1.05;margin:0 0 16px}.auth-visual-copy p{font-size:1.05rem;max-width:580px}.login-side{display:flex;align-items:center;justify-content:center;padding:48px}.login-card{width:min(100%,480px);background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:34px;border:1px solid var(--line)}.login-card h1{margin:2px 0 6px;font-size:2rem;color:var(--navy)}.login-logo{height:84px;max-width:130px;object-fit:contain;margin:0 auto 12px}.stack-form{display:flex;flex-direction:column;gap:16px;margin-top:22px}.auth-footer{min-height:60px;background:#041f40;color:#dce8f4;display:flex;justify-content:space-between;gap:20px;align-items:center;padding:0 5vw;font-size:.82rem}.student-help{font-size:.82rem;color:var(--muted);text-align:center}

/* Forms */
label{font-size:.85rem;font-weight:750;color:#25384e;display:flex;flex-direction:column;gap:6px}input,select,textarea{width:100%;border:1px solid #cbd5e1;border-radius:9px;background:#fff;padding:11px 12px;color:#17283d;outline:none}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:#4f7eaf;box-shadow:0 0 0 3px rgba(22,81,141,.12)}fieldset{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0}legend{font-weight:800;font-size:.85rem;color:var(--navy);padding:0 6px}.check-row{display:flex;gap:18px;flex-wrap:wrap}.check-row label,.inline-check{display:flex;flex-direction:row;align-items:center;gap:8px}.check-row input,.inline-check input,.switch-line input{width:auto}.form-grid{display:grid;gap:16px}.form-grid.two{grid-template-columns:repeat(2,1fr)}.form-grid.three{grid-template-columns:repeat(3,1fr)}.resource-form{display:flex;flex-direction:column;gap:18px}.form-actions{margin-top:8px}.form-card{padding:24px}.current-file{font-size:.78rem;color:var(--navy)}.switch-line{flex-direction:row;align-items:flex-start;gap:10px;border:1px solid var(--line);padding:12px;border-radius:10px;background:#f9fbfd}.switch-line span{display:flex;flex-direction:column}.switch-line.compact{height:100%;justify-content:center}.assignment-options{background:#f5f8fc;border:1px solid #d9e3ee;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:14px}.resource-availability-box{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#f5f8fc;border:1px solid var(--line);border-radius:12px;padding:16px}.resource-availability-box>div{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:center}.resource-availability-box p{grid-column:2;margin:0;color:var(--muted);font-size:.82rem}.info-box,.warning-box,.feedback-box{border-radius:10px;padding:14px 16px}.info-box{background:#eaf2fb;border:1px solid #cbdff2}.warning-box{background:#fff3dd;border:1px solid #edcf99}.feedback-box{background:#eef8f2;border:1px solid #cde9d8}.info-box p,.warning-box p,.feedback-box p{margin:4px 0 0}.account-main{min-height:calc(100vh - 80px);display:grid;place-items:center;padding:50px 20px}.account-card{width:min(520px,100%);background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:30px}.account-card h1{color:var(--navy)}

/* Teacher shell */
.teacher-body{background:#f4f7fa}.teacher-hero-strip{background:linear-gradient(90deg,rgba(5,35,72,.97),rgba(5,35,72,.82)),url('../uas/campus-edificio.jpg') center 40%/cover;color:#fff;padding:28px 0}.teacher-hero-strip h1{font-size:2.2rem;margin:0}.teacher-hero-strip p{margin:4px 0 0;color:#dfeafa}.teacher-main{padding:24px 0 50px}.teacher-layout{display:grid;grid-template-columns:240px 1fr;gap:20px}.teacher-sidebar{display:flex;flex-direction:column;gap:14px;align-self:start;position:sticky;top:18px}.side-nav{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.side-nav a{display:block;padding:13px 15px;color:#26384e;font-weight:700;border-bottom:1px solid #edf1f5}.side-nav a:last-child{border-bottom:0}.side-nav a:hover{background:#eef4fa;color:var(--navy)}.sidebar-course{background:var(--navy);color:#fff;border-radius:14px;padding:16px}.sidebar-course span,.sidebar-course small,.sidebar-course strong{display:block}.sidebar-course span{font-size:.68rem;letter-spacing:.15em;color:#d5e2f1}.sidebar-course strong{margin:4px 0}.sidebar-course small{color:#c5d5e7}.teacher-content{min-width:0;display:flex;flex-direction:column;gap:16px}.panel-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 5px 18px rgba(5,35,72,.04)}.page-actions,.panel-heading,.section-row{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.page-actions{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 22px}.page-actions h2,.panel-heading h2,.section-row h2{margin:0;color:var(--navy)}.page-actions p,.panel-heading p{margin:4px 0;color:var(--muted)}.panel-heading{padding:18px 20px;border-bottom:1px solid var(--line)}.filter-card{padding:16px}.filter-form{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.filter-form label{min-width:190px}.filter-form label:first-child{flex:1}.dashboard-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}.stat-card{background:#fff;border:1px solid var(--line);border-top:4px solid var(--navy);border-radius:13px;padding:15px 16px;box-shadow:0 5px 18px rgba(5,35,72,.04)}.stat-card.gold{border-top-color:var(--gold)}.stat-card.teal{border-top-color:var(--teal)}.stat-card.red{border-top-color:var(--red)}.stat-card.navy{border-top-color:#193d6b}.stat-card span{font-size:.8rem;font-weight:800;color:#53667c}.stat-card strong{display:block;font-size:2rem;color:var(--navy);line-height:1.15;margin:4px 0}.dashboard-welcome{padding:22px;display:flex;justify-content:space-between;gap:22px;align-items:center}.dashboard-welcome h2{margin:0;color:var(--navy)}.dashboard-welcome p{margin:5px 0;color:var(--muted)}.teacher-footer,.student-footer{background:#041f40;color:#d8e5f3;padding:20px 0}.teacher-footer .container,.student-footer .container{display:flex;justify-content:space-between;gap:20px;font-size:.8rem}

/* Tables */
.table-wrap{overflow:auto}.table-wrap table{width:100%;border-collapse:collapse;min-width:820px}.table-wrap th{background:#f0f4f8;text-align:left;color:#30455e;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;padding:11px 12px;border-bottom:1px solid #dfe6ee}.table-wrap td{padding:12px;border-bottom:1px solid #edf1f5;vertical-align:top;font-size:.86rem}.table-wrap td strong{color:#1d3048}.table-wrap td small{margin-top:3px;font-size:.73rem}.row-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}.row-actions button{border:0;background:transparent;padding:0;color:var(--navy-2);font-weight:700;font-size:.82rem}.row-actions .link-danger{color:var(--red)}.empty-cell,.empty-state{text-align:center;color:var(--muted);padding:32px}.empty-state{background:#fff;border:1px dashed #cbd6e2;border-radius:12px}.empty-state.compact{padding:18px}.grade-matrix table{min-width:1050px}.grade-matrix th:not(:first-child),.grade-matrix td:not(:first-child){text-align:center}.table-score{font-size:1.05rem;color:var(--navy)}.wide-table table{min-width:1180px}.grade-inline-form{display:grid;grid-template-columns:80px minmax(180px,1fr) auto;gap:6px;min-width:360px}.grade-inline-form input{padding:7px 8px}.student-comment{margin-top:6px;color:#4c6279}.average-badge{background:#eef4fa;border:1px solid #d1deeb;border-radius:12px;padding:10px 16px;text-align:center}.average-badge span{display:block;font-size:.72rem;color:var(--muted)}.average-badge strong{font-size:1.8rem;color:var(--navy)}

/* Status */
.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.72rem;font-weight:800;white-space:nowrap}.status-pill.available{background:#e2f4ea;color:#14643d}.status-pill.scheduled{background:#e8f0fb;color:#255b94}.status-pill.expired,.status-pill.overdue{background:#fbe8ea;color:#9d2d38}.status-pill.draft{background:#edf0f3;color:#596675}.status-pill.pending{background:#fff2d7;color:#8c5800}.status-pill.submitted{background:#e4f3fb;color:#146284}.status-pill.late{background:#fff0d8;color:#a15f00}.status-pill.graded{background:#e7f5ed;color:#11603a}

/* Teacher assignment cards */
.assignment-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.teacher-assignment-grid{grid-template-columns:repeat(2,1fr)}.assignment-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 5px 18px rgba(5,35,72,.04);display:flex;flex-direction:column;gap:10px}.assignment-card h2,.assignment-card h3{margin:0;color:var(--navy)}.assignment-card p{margin:0;color:#56697e}.assignment-card-top{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:.76rem;color:var(--muted)}.assignment-progress{display:flex;align-items:baseline;gap:8px;margin-top:auto}.assignment-progress strong{font-size:1.8rem;color:var(--navy)}.assignment-progress span{font-size:.8rem;color:var(--muted)}

/* Student portal */
.student-body{background:#f5f7fa}.student-main{min-height:72vh}.student-hero{background:linear-gradient(90deg,rgba(6,43,87,.97),rgba(6,43,87,.72)),url('../uas/campus-fachada.jpg') center/cover;color:#fff;padding:48px 0}.student-hero h1{font-size:2.7rem;margin:0}.student-hero p{margin:4px 0;color:#dce8f4}.student-dashboard{padding:26px 0 50px}.student-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px}.student-summary-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px;color:var(--ink);box-shadow:0 5px 18px rgba(5,35,72,.04);border-top:4px solid var(--navy)}.student-summary-card.pending{border-top-color:var(--amber)}.student-summary-card.submitted{border-top-color:#2585b0}.student-summary-card.graded{border-top-color:var(--green)}.student-summary-card.average{border-top-color:var(--gold)}.student-summary-card span{font-size:.75rem;font-weight:800;color:var(--muted)}.student-summary-card strong{display:block;font-size:2rem;color:var(--navy)}.student-two-columns{display:grid;grid-template-columns:1.15fr .85fr;gap:22px}.section-row{align-items:end;margin-bottom:12px}.section-row h2{font-size:1.4rem}.section-row a{font-size:.82rem;font-weight:800}.student-assignment-list,.notice-stack{display:flex;flex-direction:column;gap:10px}.student-assignment-row{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:12px}.student-assignment-row>div{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 9px}.student-assignment-row strong{color:var(--navy)}.student-assignment-row small{grid-column:2}.student-page-title{background:linear-gradient(90deg,rgba(6,43,87,.97),rgba(6,43,87,.80)),url('../uas/campus-edificio.jpg') center/cover;color:#fff;padding:38px 0}.student-page-title h1{font-size:2.4rem;margin:0}.student-page-title p{margin:4px 0;color:#dce8f4}.student-page-content{padding:28px 0 50px}.material-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.material-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:10px}.material-card h2{font-size:1.2rem;margin:0;color:var(--navy)}.material-card p{margin:0;color:var(--muted)}.resource-type-label{font-size:.67rem;font-weight:900;letter-spacing:.12em;color:var(--gold)}.material-meta{display:flex;gap:8px;flex-wrap:wrap}.material-meta span{font-size:.72rem;background:#edf3f8;padding:4px 7px;border-radius:6px;color:#50647b}.material-card .card-actions{margin-top:auto}.assignment-detail-layout{display:grid;grid-template-columns:1.4fr .75fr;gap:20px;padding:28px 0 50px}.assignment-instructions,.submission-panel{padding:22px}.assignment-instructions h2{color:var(--navy)}.assignment-instructions p{color:#435970}.assignment-detail-meta{display:flex;gap:12px;flex-wrap:wrap}.assignment-detail-meta span{background:#eef3f8;border-radius:7px;padding:6px 8px;font-size:.78rem;color:#4e6177}.submission-panel{align-self:start;position:sticky;top:18px}.big-score{font-size:3.4rem;font-weight:900;color:var(--navy);line-height:1;margin:16px 0}.big-score small{display:inline;font-size:1rem;color:var(--muted)}.submitted-file{display:flex;flex-direction:column;gap:4px;background:#f5f8fb;border-radius:10px;padding:12px;margin:14px 0}.submission-form{margin-top:16px}.student-average-card{background:linear-gradient(135deg,var(--navy),var(--navy-2));color:#fff;border-radius:16px;padding:24px;margin-bottom:18px;display:flex;align-items:center;gap:18px}.student-average-card span{font-weight:800}.student-average-card strong{font-size:3rem}.student-average-card small{color:#d8e5f4}.student-preview-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.student-preview-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;color:var(--ink)}.student-preview-card>span{width:36px;height:36px;border-radius:50%;background:#eaf1f8;display:grid;place-items:center;font-weight:800;color:var(--navy)}.student-preview-card strong,.student-preview-card small{display:block}

/* Modals / errors */
.modal-backdrop{position:fixed;inset:0;background:rgba(7,22,39,.62);display:none;align-items:center;justify-content:center;padding:20px;z-index:100}.modal-backdrop.is-open{display:flex}.modal-card{width:min(520px,100%);background:#fff;border-radius:16px;box-shadow:0 24px 80px rgba(0,0,0,.28);padding:28px}.modal-card h2{margin:0 0 8px;color:var(--navy)}.modal-rule{width:56px;height:4px;background:var(--gold);border-radius:4px;margin-bottom:16px}.modal-message{color:#52667d}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.error-main{min-height:calc(100vh - 82px);display:grid;place-items:center;padding:50px 20px}.error-card{width:min(660px,100%);background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px;box-shadow:var(--shadow)}.install-card{width:min(720px,100%)}

@media(max-width:1120px){.teacher-top-nav a{padding:9px 8px;font-size:.82rem}.teacher-identity{display:none}.dashboard-stats{grid-template-columns:repeat(3,1fr)}.quick-links{grid-template-columns:repeat(2,1fr)}.material-grid,.assignment-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.container{width:min(var(--max),calc(100% - 28px))}.nav-toggle{display:block;margin-left:auto}.top-nav,.teacher-top-nav,.student-nav{display:none;position:absolute;top:72px;left:14px;right:14px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:8px;flex-direction:column;align-items:stretch}.top-nav.is-open,.teacher-top-nav.is-open,.student-nav.is-open{display:flex}.top-nav a,.teacher-top-nav a,.student-nav a{padding:11px 12px}.teacher-identity,.student-identity{display:none}.uas-hero-grid{grid-template-columns:1fr}.uas-hero-copy{padding:50px 0 22px}.uas-hero-photo{min-height:330px;margin-inline:-14px}.campus-grid{grid-template-columns:1fr}.campus-card img{height:260px}.footer-grid{grid-template-columns:1fr;text-align:center}.auth-main{grid-template-columns:1fr}.auth-visual{min-height:360px}.login-side{padding:32px 18px}.teacher-layout{grid-template-columns:1fr}.teacher-sidebar{position:static}.side-nav{display:grid;grid-template-columns:repeat(2,1fr)}.side-nav a{border-right:1px solid #edf1f5}.dashboard-stats{grid-template-columns:repeat(2,1fr)}.student-two-columns{grid-template-columns:1fr}.student-summary-grid{grid-template-columns:repeat(2,1fr)}.assignment-detail-layout{grid-template-columns:1fr}.submission-panel{position:static}.institution-grid{grid-template-columns:80px 1fr 80px}.institution-grid img{height:70px}.student-preview-grid{grid-template-columns:1fr}}
@media(max-width:640px){.header-inner{min-height:68px}.brand{min-width:0;gap:7px}.brand-uas{height:42px;width:34px}.brand-fefyde{height:38px;width:30px}.brand-copy strong{font-size:.86rem}.brand-copy small{font-size:.64rem}.auth-header-title{display:none}.uas-hero-copy h1{font-size:2.5rem}.uas-hero-copy h2{font-size:1.55rem}.hero-actions{flex-direction:column}.hero-meta{flex-direction:column;gap:4px}.quick-links{grid-template-columns:1fr;margin-top:18px}.campus-section{padding:42px 0}.notice-grid,.material-grid,.assignment-grid,.teacher-assignment-grid{grid-template-columns:1fr}.auth-visual{min-height:300px}.auth-visual-copy{padding:30px 22px}.auth-visual-copy h1{font-size:2.2rem}.login-card{padding:24px}.teacher-hero-strip h1{font-size:1.8rem}.page-actions,.dashboard-welcome,.resource-availability-box{flex-direction:column;align-items:stretch}.form-grid.two,.form-grid.three{grid-template-columns:1fr}.dashboard-stats,.student-summary-grid{grid-template-columns:1fr 1fr}.side-nav{grid-template-columns:1fr}.student-hero h1,.student-page-title h1{font-size:2rem}.student-preview-inner{align-items:flex-start;flex-direction:column}.student-preview-actions{flex-wrap:wrap}.institution-grid{grid-template-columns:1fr}.institution-grid img{height:80px}.teacher-footer .container,.student-footer .container,.auth-footer{flex-direction:column;text-align:center;padding-block:16px}.grade-inline-form{grid-template-columns:1fr;min-width:240px}.filter-form{flex-direction:column;align-items:stretch}.filter-form label{min-width:0}.check-row{flex-direction:column;gap:8px}.student-average-card{align-items:flex-start;flex-direction:column}.student-preview-card{grid-template-columns:36px 1fr}.student-preview-card b{grid-column:2}.modal-card{padding:22px}}

/* ===== FEFyDE update 2026-09-07 v3: attendance + refined public home ===== */
.uas-hero-grid{grid-template-columns:1fr 1.38fr;min-height:500px}
.uas-hero-photo{min-height:500px;background-position:center 52%}
.campus-section{padding-top:58px}
.campus-card img{height:235px}
.campus-card.movement img{object-position:center 58%}

.attendance-legend{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;max-width:520px}
.attendance-legend span{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 11px;font-size:.78rem;color:#42566c;font-weight:700}
.attendance-legend b{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#edf3f9;color:var(--navy)}
.attendance-filter label{min-width:220px}
.attendance-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 16px}
.attendance-stat{background:#fff;border:1px solid var(--line);border-top:4px solid var(--navy);border-radius:12px;padding:14px 16px;box-shadow:0 6px 18px rgba(5,35,72,.04)}
.attendance-stat span{display:block;font-size:.78rem;color:var(--muted);font-weight:800}.attendance-stat strong{display:block;font-size:1.9rem;color:var(--navy);margin-top:2px}
.attendance-stat.present{border-top-color:#15945d}.attendance-stat.absent{border-top-color:#c93b47}.attendance-stat.justified{border-top-color:#1b76ba}.attendance-stat.late{border-top-color:#d89f13}
.attendance-heading{align-items:center}.attendance-table th:last-child{min-width:430px}.attendance-options{display:grid;grid-template-columns:repeat(4,minmax(86px,1fr));gap:7px}
.attendance-choice{cursor:pointer;position:relative}.attendance-choice input{position:absolute;opacity:0;pointer-events:none}.attendance-choice span{height:38px;border:1px solid #d7e0e9;border-radius:9px;display:grid;place-items:center;font-weight:900;background:#fff;color:#173d69;transition:.15s ease}.attendance-choice small{display:block;text-align:center;margin-top:4px;font-size:.68rem;color:#6a7a8e}
.attendance-choice input:checked+span{color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(5,35,72,.14)}
.attendance-choice.p input:checked+span{background:#168b5d}.attendance-choice.f input:checked+span{background:#c83d49}.attendance-choice.j input:checked+span{background:#1d75b8}.attendance-choice.r input:checked+span{background:#c99110}
.attendance-savebar{display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid var(--line);padding-top:16px;margin-top:14px}.attendance-savebar span{font-size:.82rem;color:var(--muted)}

@media(max-width:1120px){.attendance-summary-grid{grid-template-columns:repeat(2,1fr)}.attendance-table th:last-child{min-width:360px}.attendance-options{grid-template-columns:repeat(4,minmax(72px,1fr))}}
@media(max-width:900px){.uas-hero-grid{grid-template-columns:1fr}.uas-hero-photo{min-height:350px}.attendance-legend{justify-content:flex-start;max-width:none}.attendance-filter label{min-width:0}.attendance-table th:last-child{min-width:330px}}
@media(max-width:640px){.attendance-summary-grid{grid-template-columns:1fr 1fr}.attendance-options{grid-template-columns:repeat(2,minmax(92px,1fr))}.attendance-table th:last-child{min-width:220px}.attendance-savebar{align-items:stretch;flex-direction:column}.attendance-savebar .btn{width:100%}.campus-card img{height:225px}}

/* Seguimiento de descargas */
.download-progress-link{display:inline-flex;align-items:baseline;gap:4px;color:var(--navy);font-weight:800}.download-progress-link strong{font-size:1rem}.download-progress-link small{color:var(--muted);font-weight:700}.download-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.download-stat{background:#fff;border:1px solid var(--line);border-top:4px solid var(--navy);border-radius:12px;padding:15px 16px;box-shadow:0 6px 18px rgba(5,35,72,.04)}.download-stat.success{border-top-color:#15945d}.download-stat.pending{border-top-color:var(--gold)}.download-stat span{display:block;font-size:.78rem;color:var(--muted);font-weight:800}.download-stat strong{display:block;font-size:2rem;color:var(--navy);margin-top:3px}@media(max-width:900px){.download-summary-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.download-summary-grid{grid-template-columns:1fr 1fr}}
