:root{--navy:#09265b;--navy2:#102f67;--blue:#075aaa;--cyan:#159bc5;--cyan2:#52c4bf;--bg:#f3f6fa;--line:#dce4ee;--text:#17243b;--muted:#6c7a90;--white:#fff;--orange:#ff9f1c;--shadow:0 12px 35px rgba(13,39,77,.10)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--text);background:var(--bg)}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:flex}.sidebar{width:270px;background:linear-gradient(180deg,#0a285d,#08214e);color:#fff;position:fixed;inset:0 auto 0 0;z-index:20;display:flex;flex-direction:column;box-shadow:8px 0 25px rgba(0,0,0,.06)}.brand{height:82px;display:flex;align-items:center;padding:0 27px;gap:12px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{font-size:34px}.brand strong{font-size:21px;font-weight:600}.brand strong span{font-weight:300}.brand small{display:block;color:#9eb1d0;font-size:9px;text-transform:uppercase;letter-spacing:1px;margin-top:2px}.institution-card{margin:18px 18px 10px;padding:15px;border:1px solid rgba(255,255,255,.18);border-radius:15px;background:rgba(255,255,255,.06);display:flex;gap:12px;align-items:center;font-size:12px}.institution-card small{display:block;color:#9fb2d1;margin-top:3px}.crest,.big-crest{border-radius:50%;display:grid;place-items:center;font-weight:800}.crest{width:48px;height:48px;background:#fff;color:var(--navy)}nav{padding:10px 14px;overflow:auto}.nav-link{display:flex;align-items:center;gap:16px;padding:13px 15px;border-radius:10px;color:#dce7fa;font-size:14px;margin:3px 0;transition:.2s}.nav-link:hover{background:rgba(255,255,255,.09);color:#fff}.nav-link:first-child{background:linear-gradient(90deg,rgba(40,176,219,.22),rgba(40,176,219,.05))}.nav-link>span{font-weight:500}.nav-section{font-size:10px;letter-spacing:1.4px;color:#708ab6;padding:22px 15px 7px}.sidebar-bottom{margin-top:auto;padding:12px 14px 18px;border-top:1px solid rgba(255,255,255,.08)}.main{margin-left:270px;width:calc(100% - 270px);min-height:100vh}.topbar{height:70px;background:var(--navy);color:#fff;display:flex;align-items:center;padding:0 22px;box-shadow:0 2px 9px rgba(0,0,0,.18)}.hamb{border:0;background:none;color:#fff;font-size:30px;line-height:1;margin-right:25px}.top-title{font-size:16px;font-weight:600}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.top-actions>a{width:44px;height:44px;border-radius:9px;background:#f5f8fc;color:var(--navy);display:grid;place-items:center;font-size:22px}.user-chip{height:46px;padding:4px 11px 4px 5px;border:1px solid rgba(255,255,255,.18);border-radius:10px;display:flex;align-items:center;gap:9px}.user-chip small{color:#b7c5dd;font-size:10px}.avatar{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#fff,#cbd8eb);color:var(--navy);display:grid;place-items:center;font-weight:700}.avatar.small{width:30px;height:30px;border-radius:8px;font-size:11px}.avatar.xl{width:80px;height:80px;border-radius:22px;font-size:26px}.content{padding:32px 34px 50px;max-width:1700px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.page-head h1{font-size:31px;margin:4px 0 7px}.page-head p{margin:0;color:var(--muted);font-size:14px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:1.8px;color:#1594c2}.date-pill,.badge,.role-badge,.group-badge{border-radius:20px;padding:8px 12px;background:#e6f2fb;color:#12669e;font-size:12px;font-weight:700}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:25px}.quick-card{border-radius:16px;padding:22px;color:#fff;display:flex;align-items:center;gap:16px;min-height:108px;box-shadow:var(--shadow);position:relative;overflow:hidden}.quick-card:after{content:"";position:absolute;width:130px;height:130px;border-radius:50%;right:-55px;top:-55px;background:rgba(255,255,255,.09)}.quick-card span{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.17);font-size:23px}.quick-card b{display:block;font-size:17px}.quick-card small{display:block;margin-top:5px;color:#d7eff8}.quick-card.blue{background:linear-gradient(135deg,#0b6bb4,#087fae)}.quick-card.cyan{background:linear-gradient(135deg,#087eac,#159fc0)}.quick-card.teal{background:linear-gradient(135deg,#087c9e,#1ba5bd)}.quick-card.sky{background:linear-gradient(135deg,#0c74b2,#21a4c4)}.stats-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--line);border-radius:13px;padding:18px 20px;box-shadow:0 4px 15px rgba(10,40,80,.04)}.stat small{font-size:10px;letter-spacing:1.2px;color:#77879e;font-weight:800}.stat strong{display:block;font-size:29px;color:var(--blue);margin:5px 0}.stat span{font-size:12px;color:var(--muted)}.two-col{display:grid;grid-template-columns:1.2fr .8fr;gap:20px;margin-bottom:20px}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 4px 18px rgba(20,48,86,.04);overflow:hidden}.panel-head{padding:19px 21px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.panel-head h3{margin:0;font-size:17px}.panel-head a{font-size:12px;color:var(--blue);font-weight:700}.notice-row,.event-row,.message-row{display:flex;gap:14px;padding:16px 20px;border-bottom:1px solid #edf1f6}.notice-row:last-child,.event-row:last-child,.message-row:last-child{border-bottom:0}.notice-icon{width:36px;height:36px;border-radius:10px;background:#e5f3fb;color:#0787b7;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.notice-row b,.event-row b{font-size:14px}.notice-row p,.event-row p,.message-row p{margin:5px 0;color:var(--muted);font-size:12px;line-height:1.5}.notice-row small,.message-row small{font-size:10px;color:#8b98aa}.event-date{width:43px;height:47px;border-radius:9px;background:#edf4ff;color:var(--blue);display:flex;flex-direction:column;align-items:center;justify-content:center;flex:0 0 auto}.event-date b{font-size:17px}.event-date small{font-size:8px}.welcome-panel{padding:25px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(110deg,#fff,#edf8fc)}.welcome-panel h2{margin:6px 0;font-size:23px}.welcome-panel p{max-width:700px;color:var(--muted);margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:9px;padding:11px 18px;font-weight:700;font-size:13px}.btn.primary{background:linear-gradient(135deg,#0759a9,#0c79bd);color:#fff}.btn.ghost{background:#eef3f8;color:#34506f}.btn.white{background:#fff;color:var(--navy)}.full{width:100%;height:54px;font-size:17px}.admin-layout{display:grid;grid-template-columns:430px 1fr;gap:20px}.form-panel{padding-bottom:21px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;padding:20px}.form-grid label{font-size:12px;font-weight:800;color:#26354b}.form-grid label>input,.form-grid label>select,.form-grid label>textarea{display:block;width:100%;margin-top:7px;border:1px solid #ccd6e3;border-radius:8px;padding:11px 12px;outline:0;background:#fff;color:#1d2d44}.form-grid label>input:focus,.form-grid label>select:focus,.form-grid label>textarea:focus{border-color:#1d92c0;box-shadow:0 0 0 3px rgba(29,146,192,.1)}.form-grid label:nth-child(1),.form-grid label:nth-child(2){min-width:0}.form-grid .check{grid-column:1/-1;display:flex;align-items:center;gap:8px}.form-grid .check input{width:auto;margin:0}.form-actions{grid-column:1/-1;display:flex;gap:9px;margin-top:4px}.form-grid.wide,.form-grid.five{grid-template-columns:2fr 1fr 1fr 1fr 1fr}.table-panel{min-width:0}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{background:#0b66a8;color:#fff;text-align:left;padding:14px 13px;font-size:12px}td{padding:14px 13px;border-bottom:1px solid #e8edf3;white-space:nowrap}tr:last-child td{border-bottom:0}.person{display:flex;align-items:center;gap:10px}.role-badge{background:#edf0fb;color:#42598d}.group-badge{background:#eaf7f8;color:#0d7f8d}.status{display:inline-block;padding:6px 9px;border-radius:16px;font-size:11px;font-weight:800}.status.on{background:#e8f8f0;color:#1b8759}.status.off{background:#f8ecec;color:#b94b4b}.inline{display:inline}.action{background:none;border:0;padding:0;margin-left:12px;font-size:12px;font-weight:700}.action.edit{color:#0b70af}.action.delete{color:#b54c54}.empty,.empty-panel{padding:35px;color:#7c899a;text-align:center}.empty-panel{background:#fff;border:1px dashed #cbd6e2;border-radius:15px;grid-column:1/-1}.empty-icon{width:54px;height:54px;margin:0 auto 10px;border-radius:16px;background:#eaf5fb;color:#1687b7;display:grid;place-items:center;font-size:24px}.schedule-board{display:grid;grid-template-columns:repeat(5,1fr);gap:13px}.day-column{background:#fff;border:1px solid var(--line);border-radius:14px;min-height:380px;overflow:hidden}.day-head{padding:15px 16px;background:#0b376f;color:#fff;display:flex;justify-content:space-between}.day-head span{font-weight:800}.day-head small{opacity:.7}.class-card{margin:12px;padding:14px;border-radius:12px;background:linear-gradient(145deg,#e9f7fb,#f3f7fd);border-left:4px solid #0b8bb8}.class-card .time{font-size:10px;color:#17769d;font-weight:800;margin-bottom:9px}.class-card b{display:block;font-size:14px}.class-card span,.class-card small{display:block;color:#6d7d90;font-size:11px;margin-top:5px}.day-empty{padding:30px 15px;text-align:center;color:#a1acba;font-size:12px}.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:19px}.course-card{background:#fff;border:1px solid var(--line);border-radius:15px;overflow:hidden;box-shadow:0 5px 18px rgba(13,40,75,.05);transition:.2s}.course-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.course-banner{height:115px;background:linear-gradient(135deg,#08346e,#0794bc);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:22px;position:relative}.course-banner:after{content:"";position:absolute;width:170px;height:170px;border:28px solid rgba(255,255,255,.08);border-radius:50%;right:-50px;top:-80px}.course-banner span{font-size:43px;font-weight:800}.course-banner small{z-index:1;background:rgba(255,255,255,.13);padding:7px 10px;border-radius:20px}.course-body{padding:18px}.course-body h3{margin:0;font-size:18px}.course-body p{color:var(--muted);font-size:12px}.course-meta{border-top:1px solid #edf1f6;padding-top:12px;display:flex;justify-content:space-between;color:#187fa9;font-size:12px;font-weight:700}.course-hero{background:linear-gradient(120deg,#082c62,#0a7ea9);color:#fff;border-radius:16px;padding:30px;display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.course-hero .eyebrow{color:#9be0ef}.course-hero h1{margin:5px 0;font-size:31px}.course-hero p{margin:0;color:#d2e7f0}.course-content{margin-bottom:20px}.week-row{display:flex;align-items:center;gap:16px;padding:18px 21px;border-bottom:1px solid #edf1f6}.week-row:last-child{border-bottom:0}.week-number{width:46px;height:46px;border-radius:12px;background:#e8f4fb;color:#087bab;display:grid;place-items:center;font-size:12px;font-weight:800}.week-row h3{margin:0 0 4px}.week-row p{margin:0;color:var(--muted);font-size:12px}.week-row>span{margin-left:auto;color:#6d7f94;font-size:25px}.attendance-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:20px}.mini-stat{background:#fff;border:1px solid var(--line);border-radius:13px;padding:18px 20px}.mini-stat span{font-size:12px;color:var(--muted)}.mini-stat b{display:block;font-size:29px;color:var(--blue);margin-top:5px}.notice-list{display:grid;gap:14px}.notice-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:21px;display:flex;gap:16px}.notice-card h3{margin:0;font-size:17px}.notice-card p{color:#56657a;font-size:13px;line-height:1.6}.notice-top{display:flex;gap:25px;justify-content:space-between}.notice-top small{color:#8995a5;white-space:nowrap}.calendar-list{display:grid;gap:13px}.calendar-item{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;gap:17px}.event-date.big{width:58px;height:61px}.calendar-item h3{margin:3px 0}.calendar-item p{color:var(--muted);font-size:13px}.resource-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.resource-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;gap:14px}.resource-icon{width:44px;height:44px;background:#e8f5fb;color:#0b83b2;border-radius:11px;display:grid;place-items:center;font-size:20px}.resource-card h3{margin:0 0 5px}.resource-card p{color:var(--muted);font-size:12px}.resource-card small{color:#8794a5}.message-row{align-items:flex-start}.message-row p{color:#56657a}.profile-card{max-width:900px;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}.profile-cover{padding:30px;background:linear-gradient(120deg,#082e65,#1192b5);color:#fff;display:flex;gap:18px;align-items:center}.profile-cover .avatar{background:#fff;color:var(--navy)}.profile-cover h2{margin:0 0 5px}.profile-cover span{color:#cce8f0;font-size:13px}.profile-form{max-width:700px}.flash{position:fixed;right:25px;top:85px;background:#0c8056;color:#fff;padding:13px 17px;border-radius:9px;z-index:50;box-shadow:var(--shadow);font-size:13px}.error{background:#fff0f0;color:#b34545;border:1px solid #f0caca;padding:11px;border-radius:8px;margin:14px 0;font-size:13px}footer{text-align:center;padding:20px;color:#8b98aa;font-size:11px}.login-body{min-height:100vh;background:#eef3f8}.login-page{min-height:100vh;display:grid;grid-template-columns:1.02fr .98fr}.login-left{position:relative;overflow:hidden;background:linear-gradient(145deg,#062a61,#0b78a8);display:flex;align-items:center;justify-content:center;color:#fff}.login-left:after{content:"";position:absolute;width:620px;height:620px;border-radius:50%;border:100px solid rgba(255,255,255,.07);right:-260px;bottom:-290px}.login-orb{position:absolute;border-radius:50%;filter:blur(.2px)}.orb1{width:240px;height:240px;background:rgba(58,202,223,.16);left:-90px;top:100px}.orb2{width:150px;height:150px;background:rgba(255,164,26,.24);left:25%;bottom:8%}.institution-login{z-index:2;text-align:center;max-width:560px;padding:50px}.big-crest{width:110px;height:110px;background:#fff;color:#0b3268;margin:0 auto 25px;font-size:34px;box-shadow:0 15px 40px rgba(0,0,0,.14)}.institution-login h1{font-size:34px;margin:0}.institution-login>p{margin:8px 0;text-transform:uppercase;letter-spacing:3px;font-size:12px;color:#bde8ef}.login-copy{margin-top:100px;display:flex;flex-direction:column;gap:10px}.login-copy strong{font-size:25px}.login-copy span{color:#c7e7ef}.login-right{display:grid;place-items:center;padding:35px;background:#f6f8fb}.login-card{width:min(510px,100%);background:#fff;border-radius:25px;padding:42px 46px;box-shadow:0 25px 70px rgba(18,45,80,.14)}.cc-logo{display:flex;align-items:center;justify-content:center;gap:10px;color:#1d2639;font-size:29px;margin-bottom:20px}.cc-logo b{font-weight:700}.cc-logo .cc-symbol{font-size:43px}.login-card h2{text-align:center;color:#f06417;font-size:31px;margin:0}.login-card>.muted{text-align:center;margin:7px 0 25px}.muted{color:var(--muted);font-size:13px}.login-card form label{display:block;font-size:13px;font-weight:700;color:#45546c;margin:15px 0 8px}.input-icon{position:relative}.input-icon>span{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:#14467b}.input-icon input{width:100%;height:58px;border:1px solid #cad5e2;background:#f0f5fb;border-radius:13px;padding:0 15px 0 50px;outline:0}.input-icon input:focus{border-color:#0a73b2;box-shadow:0 0 0 3px rgba(10,115,178,.1)}.forgot{display:block;text-align:center;color:#0759a9;font-weight:700;font-size:13px;margin:17px}.login-footer{border-top:1px solid #e4e9ef;margin-top:22px;padding-top:18px;text-align:center;color:#8492a4}.login-footer p{font-size:12px}.login-footer small{font-size:11px}.login-card .btn{margin-top:20px}@media(max-width:1100px){.sidebar{width:230px}.main{margin-left:230px;width:calc(100% - 230px)}.quick-grid,.course-grid{grid-template-columns:repeat(2,1fr)}.stats-grid{grid-template-columns:repeat(3,1fr)}.admin-layout{grid-template-columns:1fr}.schedule-board{overflow:auto;grid-template-columns:repeat(5,220px)}.resource-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.2s;width:270px}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.top-title{font-size:13px}.user-chip span,.user-chip small{display:none}.content{padding:23px 15px}.quick-grid,.stats-grid,.course-grid,.two-col,.attendance-cards,.resource-grid{grid-template-columns:1fr}.page-head{align-items:flex-start;gap:12px}.page-head h1{font-size:25px}.form-grid,.form-grid.wide,.form-grid.five{grid-template-columns:1fr}.form-grid .check,.form-actions{grid-column:auto}.welcome-panel{display:block}.welcome-panel .btn{margin-top:17px}.login-page{grid-template-columns:1fr}.login-left{min-height:270px}.login-copy{margin-top:30px}.institution-login{padding:25px}.institution-login h1{font-size:25px}.big-crest{width:75px;height:75px;font-size:24px}.login-right{padding:20px}.login-card{padding:30px 25px}.top-actions>a{display:none}}

/* ==============================
   Classroom profesional - docente
   ============================== */
.course-shell{max-width:1500px;margin:0 auto}.course-breadcrumb{display:flex;align-items:center;gap:10px;color:#718096;font-size:12px;margin:0 0 16px}.course-breadcrumb a{color:#1b6ca8;font-weight:700}.course-breadcrumb strong{color:#24334b}.classroom-hero{min-height:150px;border-radius:18px;background:linear-gradient(120deg,#092b61 0%,#0b4e82 48%,#0b83aa 100%);color:#fff;padding:28px 30px;display:flex;align-items:center;gap:20px;box-shadow:0 12px 30px rgba(9,43,97,.12);position:relative;overflow:hidden}.classroom-hero:after{content:"";position:absolute;width:440px;height:440px;border:1px solid rgba(255,255,255,.10);border-radius:50%;right:-160px;top:-190px;box-shadow:0 0 0 45px rgba(255,255,255,.025),0 0 0 90px rgba(255,255,255,.02)}.hero-course-icon{width:64px;height:64px;border-radius:15px;background:#0877bd;display:grid;place-items:center;font-size:28px;flex:0 0 auto;z-index:1}.hero-course-info{z-index:1;min-width:0}.hero-course-info h1{font-size:31px;margin:5px 0 7px}.hero-course-info p{margin:0;color:#d8ebf5;font-size:13px}.hero-course-info i{font-style:normal;color:#73b4d0;margin:0 6px}.classroom-hero>.btn{margin-left:auto;z-index:1;white-space:nowrap}.classroom-tabs{display:flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line);border-radius:12px;margin:14px 0 22px;padding:5px;box-shadow:0 3px 14px rgba(20,48,86,.04);overflow:auto}.classroom-tabs a{display:flex;align-items:center;gap:8px;padding:11px 15px;border-radius:8px;color:#52647b;font-size:12px;font-weight:700;white-space:nowrap}.classroom-tabs a:hover{background:#f2f6fb;color:#0a5f9d}.classroom-tabs a.active{background:#eaf4ff;color:#075aaa;box-shadow:inset 0 -2px 0 #0874c1}.classroom-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px}.classroom-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:0 0 14px}.classroom-section-head h2{margin:4px 0 5px;font-size:24px}.classroom-section-head p{margin:0;color:var(--muted);font-size:13px}.weeks-list{display:grid;gap:13px}.week-card{background:#fff;border:1px solid var(--line);border-radius:14px;display:grid;grid-template-columns:58px 1fr;overflow:hidden;box-shadow:0 3px 15px rgba(20,48,86,.035)}.week-marker{margin:18px auto 0;width:38px;height:38px;border-radius:50%;background:#eaf4ff;color:#086ab0;display:grid;place-items:center;font-size:13px;font-weight:800;border:1px solid #d2e7f7}.week-main{padding:18px 20px 17px;border-left:1px solid #edf1f6}.week-topline{display:flex;align-items:center;justify-content:space-between;gap:15px}.week-label{font-size:10px;letter-spacing:1px;color:#657891;font-weight:800}.week-date{font-size:11px;color:#8a97a8;margin-left:10px}.week-status{padding:5px 10px;border-radius:14px;font-size:10px;font-weight:800}.week-status.publicada{background:#e9f8f0;color:#18805a}.week-status.programada{background:#edf4ff;color:#2566a0}.week-status.borrador{background:#f1f3f6;color:#697789}.week-title-row{display:flex;align-items:center;justify-content:space-between;gap:15px}.week-title-row h3{margin:7px 0 4px;font-size:17px}.week-actions{display:flex;align-items:center;gap:12px}.week-actions a{font-size:11px;color:#0b70af;font-weight:800}.week-actions form{display:inline}.week-actions button{border:0;background:none;color:#a44c56;font-size:11px;font-weight:800;padding:0}.week-description{margin:3px 0 13px;color:#64748a;font-size:12px;line-height:1.65}.materials-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.material-item{min-width:190px;max-width:280px;display:flex;align-items:center;gap:9px;border:1px solid #dfe7f0;border-radius:9px;background:#f9fbfd;padding:9px 11px}.material-item:hover{border-color:#9ecae7;background:#f4faff}.material-icon{width:34px;height:34px;border-radius:8px;background:#eaf4ff;color:#1269a7;display:grid;place-items:center;font-size:8px;font-weight:900;flex:0 0 auto}.material-item b{display:block;font-size:11px;color:#21324b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:185px}.material-item small{display:block;margin-top:3px;color:#8a96a6;font-size:9px}.material-delete{margin-left:-16px;margin-top:-5px}.material-delete button{width:20px;height:20px;border:1px solid #d8e0ea;background:#fff;border-radius:50%;color:#a54b55;font-weight:800}.material-upload{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px dashed #dce5ee}.material-upload input[name="material_title"]{height:35px;flex:1;min-width:140px;border:1px solid #d4deea;border-radius:8px;padding:0 10px;font-size:11px;outline:0}.upload-btn{height:35px;display:inline-flex;align-items:center;padding:0 12px;border:1px solid #bcd5e8;border-radius:8px;color:#0967a7;background:#f4faff;font-size:11px;font-weight:800;cursor:pointer;white-space:nowrap}.upload-btn input{display:none}.material-upload .btn{padding:9px 13px;font-size:11px}.classroom-side{display:grid;align-content:start;gap:13px}.side-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px 17px;box-shadow:0 3px 15px rgba(20,48,86,.035)}.side-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:12px;margin-bottom:2px;border-bottom:1px solid #edf1f6}.side-card-head h3{margin:0;font-size:14px}.side-card-head>a{font-size:10px;color:#0b70af;font-weight:800}.side-card-head>span{width:20px;height:20px;border-radius:50%;background:#edf4fb;color:#26709f;display:grid;place-items:center;font-size:10px;font-weight:800}.side-card-head>b{font-size:13px;color:#0a6da9}.info-line{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid #f0f3f7;font-size:11px}.info-line:last-child{border-bottom:0;padding-bottom:2px}.info-line span{color:#78879a}.info-line b{color:#243650;text-align:right}.quick-actions-course{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:10px}.quick-actions-course button,.quick-actions-course a{min-height:57px;border:1px solid #dce6f0;background:#fbfcfe;border-radius:9px;padding:9px;display:flex;align-items:center;gap:8px;color:#243b58;text-align:left}.quick-actions-course button:hover,.quick-actions-course a:hover{background:#f1f7fd;border-color:#bcd8ec}.quick-actions-course strong{width:29px;height:29px;border-radius:7px;background:#eaf4ff;color:#0a6dab;display:grid;place-items:center;font-size:15px}.quick-actions-course span{font-size:10px;font-weight:800}.progress-track{height:9px;background:#edf2f7;border-radius:20px;overflow:hidden;margin:14px 0}.progress-track span{display:block;height:100%;background:linear-gradient(90deg,#0a72bd,#18a2b4);border-radius:20px}.progress-legend{display:grid;gap:8px}.progress-legend span{display:flex;align-items:center;font-size:10px;color:#718096}.progress-legend b{margin-left:auto;color:#31435d}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:7px;background:#9eb1c8}.dot.published{background:#20a271}.dot.scheduled{background:#4d8bc5}.dot.draft{background:#aab5c2}.upcoming-item{display:flex;gap:9px;padding:11px 0;border-bottom:1px solid #edf1f6}.upcoming-item:last-child{border-bottom:0}.upcoming-icon{width:30px;height:30px;border-radius:7px;background:#eef5fc;color:#0b70af;display:grid;place-items:center;font-size:12px;flex:0 0 auto}.upcoming-item b{display:block;font-size:11px;color:#283b56}.upcoming-item small{display:block;color:#8492a4;font-size:9px;margin-top:3px}.side-empty{color:#8794a5;font-size:11px;text-align:center;padding:12px 4px 3px}.classroom-empty{background:#fff;border:1px dashed #cbd8e5;border-radius:14px;padding:55px 25px;text-align:center}.classroom-empty .empty-icon{margin-bottom:12px}.classroom-empty h3{margin:0 0 7px;font-size:17px}.classroom-empty p{margin:0 auto 17px;color:#7c8999;font-size:12px;max-width:520px}.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:100}.modal.show{display:flex}.modal-backdrop{position:absolute;inset:0;background:rgba(7,24,52,.58);backdrop-filter:blur(2px)}.modal-card{position:relative;width:min(620px,calc(100% - 30px));max-height:90vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 25px 70px rgba(0,0,0,.25)}.modal-head{display:flex;justify-content:space-between;gap:15px;padding:21px 23px;border-bottom:1px solid var(--line)}.modal-head h2{margin:3px 0 0;font-size:20px}.modal-head button{width:32px;height:32px;border:0;border-radius:8px;background:#f0f4f8;color:#52627a;font-size:20px}.week-form{display:grid;gap:15px;padding:22px 23px}.week-form label{font-size:11px;font-weight:800;color:#2c3d55}.week-form input,.week-form select,.week-form textarea{display:block;width:100%;margin-top:7px;border:1px solid #cfd9e5;border-radius:8px;background:#fff;padding:11px 12px;outline:0;color:#24354d}.week-form textarea{resize:vertical;line-height:1.55}.week-form input:focus,.week-form select:focus,.week-form textarea:focus{border-color:#2b90c2;box-shadow:0 0 0 3px rgba(43,144,194,.10)}.form-two{display:grid;grid-template-columns:1fr 1fr;gap:13px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;padding-top:3px}.modal-actions .btn{min-width:110px}
@media(max-width:1000px){.classroom-layout{grid-template-columns:1fr}.classroom-side{grid-template-columns:repeat(2,1fr)}.classroom-hero{align-items:flex-start;flex-wrap:wrap}.classroom-hero>.btn{margin-left:auto}.classroom-section-head{align-items:flex-start}.materials-row{display:grid;grid-template-columns:1fr 1fr}.material-item{max-width:none}.material-upload{flex-wrap:wrap}.material-upload input[name="material_title"]{flex-basis:100%}}
@media(max-width:760px){.classroom-hero{padding:22px}.hero-course-info{width:calc(100% - 84px)}.hero-course-info h1{font-size:25px}.classroom-hero>.btn{width:100%;margin-left:0}.classroom-section-head{display:block}.classroom-section-head>.btn{margin-top:14px}.classroom-side{grid-template-columns:1fr}.week-card{grid-template-columns:45px 1fr}.week-marker{width:32px;height:32px;font-size:11px}.week-main{padding:15px 13px}.week-topline,.week-title-row{align-items:flex-start}.week-topline{display:block}.week-status{display:inline-block;margin-top:7px}.week-date{display:block;margin:4px 0 0}.materials-row{grid-template-columns:1fr}.material-upload{display:grid;grid-template-columns:1fr}.material-upload .btn,.upload-btn{width:100%}.form-two{grid-template-columns:1fr}}

/* =========================================================
   CloudCampus Classroom — visual system
   ========================================================= */
.cc-course-page{max-width:1520px;margin:0 auto;padding-bottom:30px}
.cc-breadcrumb{display:flex;align-items:center;gap:9px;margin:0 0 14px;color:#7a899d;font-size:12px}
.cc-breadcrumb a{display:flex;align-items:center;gap:6px;color:#1267a7;font-weight:800}
.cc-bread-icon{width:24px;height:24px;border-radius:7px;background:#e7f3fb;display:grid;place-items:center;font-size:14px}
.cc-breadcrumb strong{color:#30425b;font-weight:700}

.cc-course-hero{min-height:220px;position:relative;overflow:hidden;display:flex;align-items:center;gap:22px;padding:31px 34px;border-radius:20px;background:linear-gradient(118deg,#071f4d 0%,#0b3c77 42%,#087fa8 100%);box-shadow:0 16px 36px rgba(7,39,82,.18);color:#fff}
.cc-hero-pattern{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 88% 18%,rgba(255,255,255,.18),transparent 23%),radial-gradient(circle at 76% 115%,rgba(66,208,210,.18),transparent 30%),linear-gradient(90deg,transparent 0%,rgba(255,255,255,.025) 100%)}
.cc-hero-pattern:before,.cc-hero-pattern:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.09);border-radius:50%}
.cc-hero-pattern:before{width:460px;height:460px;right:-190px;top:-250px}
.cc-hero-pattern:after{width:360px;height:360px;right:-120px;top:-195px}
.cc-subject-icon{position:relative;z-index:1;width:78px;height:78px;flex:0 0 78px;border-radius:19px;background:linear-gradient(145deg,#18a8c7,#096eb2);border:1px solid rgba(255,255,255,.25);box-shadow:0 10px 24px rgba(0,0,0,.16);display:grid;place-items:center;font-size:27px;font-weight:800;letter-spacing:-1px}
.cc-hero-copy{position:relative;z-index:1;min-width:0}
.cc-kicker{font-size:10px;font-weight:900;letter-spacing:2px;color:#77d0e0}
.cc-hero-copy h1{margin:7px 0 6px;font-size:32px;line-height:1.1;letter-spacing:-.4px;color:#fff}
.cc-hero-copy p{margin:0;color:#d8eaf4;font-size:13px;line-height:1.55;max-width:690px}
.cc-hero-meta{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}
.cc-hero-meta span{display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid rgba(255,255,255,.16);border-radius:9px;background:rgba(4,27,63,.25);font-size:11px;color:#fff}
.cc-hero-meta i{font-style:normal;color:#75c9dd;font-size:8px;font-weight:900;letter-spacing:.8px}
.cc-primary-btn,.cc-outline-btn,.cc-small-primary{border:0;cursor:pointer;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:9px;white-space:nowrap}
.cc-primary-btn{padding:11px 17px;background:linear-gradient(135deg,#0873bd,#0b9db9);color:#fff;box-shadow:0 7px 16px rgba(4,74,128,.18)}
.cc-primary-btn:hover{filter:brightness(1.06)}
.cc-hero-btn{position:relative;z-index:2;margin-left:auto;align-self:flex-start}
.cc-hero-btn span{font-size:17px;line-height:0}

.cc-course-nav{display:flex;align-items:center;gap:5px;margin:15px 0 22px;padding:5px;background:#fff;border:1px solid #dce5ef;border-radius:12px;box-shadow:0 4px 16px rgba(16,46,84,.05)}
.cc-course-nav a{display:flex;align-items:center;gap:8px;padding:11px 16px;border-radius:8px;color:#607188;font-size:12px;font-weight:800;transition:.18s}
.cc-course-nav a:hover{background:#f1f6fb;color:#0869aa}
.cc-course-nav a.active{color:#075ca3;background:linear-gradient(180deg,#edf8ff,#e4f3fc);box-shadow:inset 0 -2px 0 #0780bb}
.cc-course-nav a span{font-size:13px;color:#1887b7}

.cc-course-grid{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:22px;align-items:start}
.cc-main-column{min-width:0}
.cc-section-title{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:15px}
.cc-section-kicker,.cc-side-kicker{display:block;color:#1685b5;font-size:9px;font-weight:900;letter-spacing:1.8px}
.cc-section-title h2{margin:5px 0 4px;font-size:24px;letter-spacing:-.3px;color:#152e54}
.cc-section-title p{margin:0;color:#718097;font-size:12px}
.cc-outline-btn{padding:10px 14px;border:1px solid #bfd7e8;background:#fff;color:#0869a8}
.cc-outline-btn:hover{background:#f1f8fc;border-color:#8fc1dc}

.cc-timeline{display:grid;gap:14px}
.cc-week-card{display:grid;grid-template-columns:76px minmax(0,1fr);background:#fff;border:1px solid #dbe5ef;border-radius:16px;overflow:hidden;box-shadow:0 5px 18px rgba(13,43,80,.055);transition:.18s}
.cc-week-card:hover{border-color:#c2d8e8;box-shadow:0 10px 25px rgba(13,43,80,.08)}
.cc-week-number{position:relative;display:flex;justify-content:center;padding-top:22px;background:linear-gradient(180deg,#eef8fc,#f8fbfd)}
.cc-week-number:after{content:"";position:absolute;top:67px;bottom:0;width:1px;background:#d9e7f0}
.cc-week-number span{position:relative;z-index:1;width:43px;height:43px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,#0b73b8,#13a0bd);color:#fff;font-size:14px;font-weight:900;box-shadow:0 7px 14px rgba(9,117,174,.18)}
.cc-week-content{min-width:0;padding:20px 21px 17px}
.cc-week-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.cc-week-eyebrow{color:#8594a8;font-size:9px;font-weight:900;letter-spacing:1.4px}
.cc-week-header h3{margin:5px 0 0;color:#18355d;font-size:18px;line-height:1.3}
.cc-week-head-right{display:flex;align-items:center;gap:9px}
.cc-status{padding:6px 10px;border-radius:20px;font-size:9px;font-weight:900}
.cc-status.publicada{background:#e8f8f0;color:#18805b}
.cc-status.programada{background:#e8f3fc;color:#146ba2}
.cc-status.borrador{background:#f0f3f6;color:#68788c}
.cc-more{width:29px;height:29px;border:1px solid #dce5ed;border-radius:8px;background:#fff;display:grid;place-items:center;color:#55718f;font-size:13px}
.cc-more:hover{background:#eef7fb;color:#0871ac}
.cc-week-date{display:inline-flex;align-items:center;gap:5px;margin-top:8px;color:#73859b;font-size:10px}
.cc-week-description{margin:12px 0 11px;color:#53657d;font-size:12px;line-height:1.65}
.cc-week-description.muted{color:#9aa6b5}
.cc-week-stats{display:flex;gap:8px;margin:9px 0 13px}
.cc-week-stats span{padding:6px 9px;border-radius:7px;background:#f5f8fb;color:#7b899b;font-size:9px}
.cc-week-stats b{color:#1a4f79;margin-right:3px}
.cc-materials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.cc-material{min-width:0;display:flex;align-items:center;border:1px solid #e0e8ef;border-radius:10px;background:#fbfcfe;overflow:hidden}
.cc-material:hover{border-color:#b9d9e9;background:#f5fbfe}
.cc-material-main{min-width:0;flex:1;display:flex;align-items:center;gap:10px;padding:9px 10px}
.cc-file-icon{width:37px;height:37px;flex:0 0 37px;border-radius:9px;display:grid;place-items:center;font-size:8px;font-weight:900;background:#e9f4ff;color:#176da4}
.cc-file-icon.pdf{background:#fff0f0;color:#c04f59}.cc-file-icon.img{background:#eef8ef;color:#33825b}.cc-file-icon.vid{background:#f0efff;color:#6659a5}.cc-file-icon.aud{background:#fff5e7;color:#ae7123}.cc-file-icon.doc{background:#eaf4ff;color:#176da4}
.cc-material-copy{min-width:0;display:block}
.cc-material-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#253a55;font-size:10px}
.cc-material-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8a97a7;font-size:8px;margin-top:4px}
.cc-open{padding-right:10px;color:#7d9bb0;font-size:12px}
.cc-delete-material{width:27px;height:100%;min-height:54px;border:0;border-left:1px solid #e6edf3;background:#fff;color:#a45a61;font-size:16px}
.cc-delete-material:hover{background:#fff4f4}
.cc-upload-row{display:grid;grid-template-columns:minmax(130px,1fr) auto auto;gap:8px;align-items:center;margin-top:13px;padding-top:13px;border-top:1px dashed #dce5ed}
.cc-material-title{width:100%;height:36px;border:1px solid #d5e0e9;border-radius:8px;padding:0 10px;outline:none;font-size:10px;color:#344962;background:#fff}
.cc-material-title:focus{border-color:#5ba7c8;box-shadow:0 0 0 3px rgba(32,143,190,.08)}
.cc-file-picker{height:36px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;border:1px solid #c5dce9;border-radius:8px;background:#f3faff;color:#086aa6;font-size:9px;font-weight:900;cursor:pointer;white-space:nowrap}
.cc-file-picker span{font-size:14px}.cc-file-picker input{display:none}
.cc-small-primary{height:36px;padding:0 13px;background:#0a70b5;color:#fff;font-size:9px}
.cc-small-primary:hover{background:#08639f}
.cc-empty-state{padding:62px 25px;background:#fff;border:1px dashed #c8d8e5;border-radius:16px;text-align:center}
.cc-empty-icon{width:58px;height:58px;margin:0 auto 13px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(145deg,#e5f5fb,#eff7ff);color:#0874ad;font-size:24px}
.cc-empty-state h3{margin:0 0 6px;color:#213957;font-size:18px}.cc-empty-state p{max-width:540px;margin:0 auto 17px;color:#7e8c9e;font-size:12px;line-height:1.6}

.cc-side-column{display:grid;gap:14px;align-content:start}
.cc-side-card{background:#fff;border:1px solid #dce5ee;border-radius:15px;padding:17px;box-shadow:0 5px 17px rgba(13,43,80,.045)}
.cc-side-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:12px;border-bottom:1px solid #edf1f5}
.cc-side-title h3{margin:4px 0 0;color:#1c3555;font-size:14px}.cc-side-title>a{margin-top:5px;color:#0a6ca9;font-size:9px;font-weight:900}
.cc-info-badge{width:25px;height:25px;border-radius:8px;display:grid;place-items:center;background:#eaf5fb;color:#0b73ad;font-weight:900;font-size:11px}
.cc-detail-list{padding-top:4px}.cc-detail-list>div{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:10px 0;border-bottom:1px solid #eff3f6}.cc-detail-list>div:last-child{border-bottom:0;padding-bottom:1px}.cc-detail-list span{color:#8190a1;font-size:10px}.cc-detail-list b{max-width:190px;color:#2a405d;font-size:10px;text-align:right;overflow-wrap:anywhere}
.cc-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:12px}.cc-quick-grid>a,.cc-quick-grid>button{min-height:67px;padding:10px;border:1px solid #e0e7ee;border-radius:10px;background:#fbfcfe;color:#263d5b;display:flex;align-items:center;gap:8px;text-align:left}.cc-quick-grid>a:hover,.cc-quick-grid>button:hover{border-color:#bdd7e6;background:#f3f9fc}.cc-quick-grid button{font-size:inherit}.cc-quick-grid b{font-size:9px;line-height:1.3}.cc-quick-icon{width:31px;height:31px;flex:0 0 31px;border-radius:8px;display:grid;place-items:center;font-size:13px;font-weight:900}.cc-quick-icon.blue{background:#e8f4ff;color:#0b70b0}.cc-quick-icon.purple{background:#f0edff;color:#6b5bb1}.cc-quick-icon.green{background:#e9f8ef;color:#26815b}.cc-quick-icon.orange{background:#fff3e6;color:#b96f24}
.cc-percent{color:#0870ad;font-size:13px}.cc-progress{height:10px;margin:16px 0 13px;background:#edf2f6;border-radius:20px;overflow:hidden}.cc-progress span{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,#0873bd,#14a4b7)}
.cc-progress-list{display:grid;gap:8px}.cc-progress-list span{display:flex;align-items:center;color:#758397;font-size:9px}.cc-progress-list i{width:8px;height:8px;margin-right:7px;border-radius:50%;background:#aeb9c5}.cc-progress-list i.published{background:#20a071}.cc-progress-list i.scheduled{background:#3c89bd}.cc-progress-list i.draft{background:#aeb9c5}.cc-progress-list b{margin-left:auto;color:#30445e;font-size:10px}
.cc-upcoming{display:flex;gap:9px;padding:11px 0;border-bottom:1px solid #edf1f5}.cc-upcoming:last-child{border-bottom:0;padding-bottom:0}.cc-upcoming-icon{width:31px;height:31px;flex:0 0 31px;border-radius:8px;display:grid;place-items:center;background:#eaf5fb;color:#0b72ad;font-size:12px}.cc-upcoming b{display:block;color:#2c405c;font-size:10px;line-height:1.35}.cc-upcoming small{display:block;color:#8b98a8;font-size:8px;margin-top:4px}.cc-side-empty{margin:14px 0 2px;color:#8a97a8;text-align:center;font-size:10px}

.cc-modal-card{width:min(650px,calc(100% - 30px));border-radius:18px}.cc-modal-head{background:linear-gradient(110deg,#f5fbfe,#fff)}.cc-modal-head p{margin:4px 0 0;color:#8390a0;font-size:10px}.cc-week-form{gap:14px}.cc-week-form label{font-size:10px;color:#31445e}.cc-week-form input,.cc-week-form select,.cc-week-form textarea{font-size:12px;border-radius:9px}

@media(max-width:1180px){.cc-course-grid{grid-template-columns:minmax(0,1fr) 300px}.cc-materials{grid-template-columns:1fr}.cc-hero-meta span{padding:7px 9px}}
@media(max-width:950px){.cc-course-grid{grid-template-columns:1fr}.cc-side-column{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-side-card:last-child{grid-column:1/-1}.cc-hero-btn{margin-left:auto}}
@media(max-width:700px){.cc-course-page{padding:0 1px 25px}.cc-course-hero{display:grid;grid-template-columns:60px 1fr;padding:22px;gap:15px}.cc-subject-icon{width:60px;height:60px;flex-basis:60px;font-size:22px}.cc-hero-copy h1{font-size:25px}.cc-hero-copy p{font-size:11px}.cc-hero-meta{display:grid;grid-template-columns:1fr;gap:6px}.cc-hero-btn{grid-column:1/-1;width:100%;margin:0}.cc-course-nav{overflow:auto}.cc-course-nav a{padding:10px 12px}.cc-section-title{display:block}.cc-outline-btn{margin-top:12px}.cc-week-card{grid-template-columns:53px 1fr}.cc-week-number{padding-top:19px}.cc-week-number span{width:36px;height:36px}.cc-week-number:after{top:59px}.cc-week-content{padding:17px 14px}.cc-week-header{display:block}.cc-week-head-right{margin-top:9px}.cc-upload-row{grid-template-columns:1fr}.cc-file-picker,.cc-small-primary{width:100%}.cc-side-column{grid-template-columns:1fr}.cc-side-card:last-child{grid-column:auto}}

/* CloudCampus visual system v3 - Classroom / SaaS shell */
body{background:#f4f7fb;color:#142b50;font-family:Inter,Segoe UI,Arial,sans-serif}
.sidebar{width:250px;background:linear-gradient(180deg,#072a60 0%,#06234f 100%);box-shadow:7px 0 24px rgba(8,38,76,.10)}
.brand{height:78px;padding:0 27px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(145deg,#3db8ff,#0c6fc0);display:grid;place-items:center;font-size:22px;color:#fff}
.brand strong{font-size:20px;letter-spacing:-.3px}.brand strong span{color:#dbeeff;font-weight:300}.brand small{font-size:8px;letter-spacing:1.2px;color:#9bb6d9}
.institution-card{margin:17px 14px 12px;padding:14px;border-radius:14px;background:linear-gradient(145deg,rgba(255,255,255,.08),rgba(255,255,255,.035));border:1px solid rgba(123,180,235,.30)}
.crest{width:45px;height:45px;flex:0 0 45px}
nav{padding:8px 12px}.nav-link{padding:11px 13px;border-radius:9px;gap:14px;color:#d9e7fa;font-size:13px}.nav-link:first-child{background:rgba(26,136,215,.22)}.nav-link:hover{background:rgba(44,157,225,.16)}.nav-link>span{font-weight:600}.nav-section{padding:19px 13px 6px;color:#7896c0}
.sidebar-bottom{padding:11px 12px 17px}
.main{margin-left:250px;width:calc(100% - 250px)}
.topbar{height:64px;background:#fff;color:#18345a;padding:0 22px;border-bottom:1px solid #e3eaf2;box-shadow:0 2px 12px rgba(16,43,79,.045)}
.hamb{color:#0a3b72;font-size:27px;margin-right:18px}.top-title{font-size:15px;font-weight:800;white-space:nowrap}
.top-search{height:40px;width:min(490px,42vw);margin-left:28px;display:flex;align-items:center;gap:9px;padding:0 13px;border:1px solid #d8e2ed;border-radius:9px;background:#f7faff;color:#64809f}.top-search span{font-size:22px;line-height:1}.top-search input{border:0;outline:0;background:transparent;width:100%;color:#304968;font-size:12px}.top-search input::placeholder{color:#8295ab}
.top-actions{gap:8px}.top-icon{position:relative!important;width:40px!important;height:40px!important;background:#fff!important;color:#173b6c!important;border-radius:9px!important;font-size:20px!important}.notif-dot{position:absolute;right:-1px;top:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:10px;background:#e53d45;color:#fff;font-size:9px;display:grid;place-items:center}.user-chip{height:44px;margin-left:6px;border:0;border-left:1px solid #e2e8ef;border-radius:0;padding-left:12px;color:#17345b}.user-copy{display:flex;flex-direction:column;line-height:1.15}.user-copy span{font-size:12px;font-weight:800}.user-copy small{font-size:9px;color:#8291a5;margin-top:3px}.user-chevron{margin-left:4px;color:#173e70}.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(145deg,#dbe9f8,#a9c0da);color:#21466f}
.content{padding:25px 20px 45px;max-width:1540px}.cc-course-page{max-width:1245px;margin:0 auto;padding-bottom:35px}.cc-breadcrumb{margin-bottom:13px;font-size:11px}.cc-bread-icon{background:transparent;font-size:20px;color:#163f72}.cc-course-hero{min-height:150px;padding:25px 25px;border-radius:12px;background:linear-gradient(110deg,#082b5d 0%,#0a4a81 58%,#0b6f98 100%);box-shadow:0 12px 28px rgba(10,48,88,.14)}
.cc-course-hero:after{content:"";position:absolute;right:120px;bottom:-95px;width:500px;height:210px;border-radius:50%;background:rgba(255,255,255,.055);transform:rotate(-7deg)}
.cc-subject-icon{width:74px;height:74px;flex-basis:74px;border-radius:11px;background:linear-gradient(145deg,#0873ba,#0a98bd);font-size:25px}
.cc-kicker{font-size:9px;color:#84d8e7}.cc-hero-copy h1{font-size:29px;margin:6px 0 5px}.cc-hero-copy p{font-size:11px;color:#d6e8f3}.cc-hero-meta{margin-top:13px;gap:7px}.cc-hero-meta span{padding:7px 10px;font-size:9px;border-radius:7px;background:rgba(4,25,59,.25)}.cc-hero-meta i{font-size:7px}
.cc-hero-btn{align-self:center;padding:11px 16px;border-radius:8px;background:#fff;color:#123c6b;box-shadow:0 6px 15px rgba(0,0,0,.13)}
.cc-course-nav{margin:12px 0 20px;padding:3px;border-radius:9px;gap:2px}.cc-course-nav a{padding:10px 15px;font-size:10px;border-radius:7px}.cc-course-nav a.active{background:#e9f5fd;color:#075da3}
.cc-course-grid{grid-template-columns:minmax(0,1fr) 315px;gap:18px}.cc-section-title{margin-bottom:14px}.cc-section-kicker,.cc-side-kicker{font-size:8px;letter-spacing:1.7px}.cc-section-title h2{font-size:21px;margin:4px 0}.cc-section-title p{font-size:11px}.cc-outline-btn{font-size:10px;padding:9px 12px}
.cc-timeline{gap:12px}.cc-week-card{grid-template-columns:62px minmax(0,1fr);border-radius:12px;box-shadow:0 4px 15px rgba(12,42,78,.05)}.cc-week-number{padding-top:18px}.cc-week-number span{width:38px;height:38px;border-radius:50%;font-size:12px}.cc-week-number:after{top:57px}.cc-week-content{padding:17px 18px 15px}.cc-week-eyebrow{font-size:8px}.cc-week-header h3{font-size:15px;margin-top:4px}.cc-status{font-size:8px;padding:5px 9px}.cc-more{width:27px;height:27px}.cc-week-date{font-size:9px}.cc-week-description{font-size:10px;line-height:1.55;margin:9px 0}.cc-week-stats{margin:8px 0 10px}.cc-week-stats span{font-size:8px;padding:5px 8px}
.cc-materials{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.cc-material-main{gap:8px;padding:8px}.cc-file-icon{width:31px;height:31px;flex-basis:31px;font-size:7px}.cc-material-copy b{font-size:9px}.cc-material-copy small{font-size:7px}.cc-open{font-size:10px;padding-right:7px}.cc-upload-row{grid-template-columns:minmax(100px,1fr) auto auto;margin-top:10px;padding-top:10px}.cc-material-title,.cc-file-picker,.cc-small-primary{height:33px;font-size:8px}.cc-file-picker{padding:0 9px}.cc-small-primary{padding:0 11px}
.cc-side-column{gap:12px}.cc-side-card{border-radius:12px;padding:15px;box-shadow:0 4px 15px rgba(12,42,78,.045)}.cc-side-title{padding-bottom:10px}.cc-side-title h3{font-size:13px}.cc-side-title>a{font-size:8px}.cc-detail-list>div{padding:8px 0}.cc-detail-list span,.cc-detail-list b{font-size:9px}.cc-quick-grid{gap:6px;padding-top:10px}.cc-quick-grid>a,.cc-quick-grid>button{min-height:54px;padding:8px;border-radius:8px}.cc-quick-grid b{font-size:8px}.cc-quick-icon{width:27px;height:27px;flex-basis:27px;font-size:11px}.cc-progress{height:9px;margin:13px 0 11px}.cc-progress-list{gap:6px}.cc-progress-list span{font-size:8px}.cc-progress-list b{font-size:9px}.cc-upcoming b{font-size:9px}.cc-upcoming small{font-size:7px}
.modal{z-index:100}.cc-modal-card{box-shadow:0 25px 80px rgba(6,34,69,.22)}
footer{font-size:9px}
@media(max-width:1000px){.top-search{width:34vw}.cc-course-grid{grid-template-columns:1fr 285px}.cc-materials{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.topbar{height:60px;padding:0 13px}.top-title{display:none}.top-search{display:none}.main{margin-left:0;width:100%}.content{padding:16px 12px 35px}.cc-course-page{padding:0}.cc-course-hero{min-height:0;padding:19px;display:grid;grid-template-columns:58px 1fr;gap:13px}.cc-subject-icon{width:58px;height:58px;flex-basis:58px}.cc-hero-copy h1{font-size:23px}.cc-hero-copy p{font-size:10px}.cc-hero-meta{display:grid;grid-template-columns:1fr;gap:5px}.cc-hero-btn{grid-column:1/-1;width:100%;margin:2px 0 0}.cc-course-nav{overflow:auto;white-space:nowrap}.cc-course-nav a{padding:9px 12px}.cc-course-grid{grid-template-columns:1fr}.cc-side-column{grid-template-columns:1fr}.cc-week-card{grid-template-columns:47px 1fr}.cc-week-content{padding:14px 12px}.cc-week-header{display:block}.cc-week-head-right{margin-top:7px}.cc-materials{grid-template-columns:1fr}.cc-upload-row{grid-template-columns:1fr}.cc-file-picker,.cc-small-primary{width:100%}}

/* Unified user administration */
.cc-admin-head{margin-bottom:18px}.admin-alert{margin:0 0 16px;padding:12px 15px;border-radius:10px;border:1px solid #f1c8cd;background:#fff3f4;color:#a33f49;font-size:12px}.user-admin-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(520px,.85fr);gap:18px;align-items:start}.user-form-card,.user-list-card{border-radius:16px}.unified-form{padding:20px}.form-section{padding-bottom:21px;margin-bottom:20px;border-bottom:1px solid #e8eef4}.form-section-title{display:flex;align-items:center;gap:11px;margin-bottom:15px}.form-section-title>span{width:29px;height:29px;border-radius:8px;display:grid;place-items:center;background:#e8f5fb;color:#0874ad;font-size:10px;font-weight:900}.form-section-title b{display:block;color:#17365c;font-size:13px}.form-section-title small{display:block;color:#8795a6;font-size:9px;margin-top:3px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.form-grid.three .wide{grid-column:span 2}.student-only{display:none;padding-top:1px}.rep-title{margin-top:23px}.sticky-actions{padding-top:3px}.user-list-card .panel-head{padding:18px}.user-list-card .table-wrap{max-height:690px;overflow:auto}.user-list-card table td{vertical-align:middle}.user-list-card td small{display:block;color:#8a97a7;font-size:9px;margin-top:3px}.role-estudiante{background:#e8f5ff;color:#086aa7}.role-padre{background:#f0edff;color:#6851a3}.role-profesor{background:#e8f8f1;color:#21815c}.role-administrativo{background:#fff4df;color:#9a6b1e}.role-admin{background:#edf0f5;color:#374a62}.student-context-card{display:flex;align-items:center;gap:13px;margin:0 0 18px;padding:14px 17px;border:1px solid #d7e7f0;border-radius:14px;background:linear-gradient(100deg,#f2fbfd,#fff);box-shadow:0 5px 18px rgba(10,57,92,.045)}.student-context-icon{width:43px;height:43px;border-radius:12px;background:#e5f5fb;display:grid;place-items:center;font-size:19px}.student-context-card div:nth-child(2){min-width:0}.student-context-card span{display:block;color:#1580ad;font-size:8px;font-weight:900;letter-spacing:1.2px}.student-context-card strong{display:block;color:#17375e;font-size:15px;margin-top:3px}.student-context-card small{display:block;color:#7e8da0;font-size:10px;margin-top:2px}.student-context-card>a{margin-left:auto;color:#086eb0;font-size:10px;font-weight:900;white-space:nowrap}.parent-context .student-context-icon{background:#f0edff}.parent-context span{color:#6652a1}
@media(max-width:1200px){.user-admin-layout{grid-template-columns:1fr}.user-list-card .table-wrap{max-height:none}}
@media(max-width:760px){.form-grid.three{grid-template-columns:1fr}.form-grid.three .wide{grid-column:auto}.student-context-card{align-items:flex-start;flex-wrap:wrap}.student-context-card>a{width:100%;margin-left:56px}.unified-form{padding:15px}}

/* V5 academic evaluation + attendance */
.attendance-teacher-toolbar{padding:16px 18px;margin-bottom:16px}.attendance-filter{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.attendance-filter label,.gradebook-toolbar label{font-size:11px;font-weight:800;color:#263b5b}.attendance-filter select,.attendance-filter input,.gradebook-toolbar select{display:block;margin-top:6px;min-width:220px;padding:10px 12px;border:1px solid #d4dfeb;border-radius:8px;background:#fff;color:#1b3558}.attendance-date-chip{padding:10px 13px;border-radius:9px;background:#edf5fc;color:#12669e;font-size:11px;font-weight:800}.attendance-roster-form{overflow:hidden}.attendance-legend{display:flex;gap:8px;flex-wrap:wrap;padding:12px 18px;background:#f7faff;border-bottom:1px solid #e4ebf2}.attendance-legend span{padding:6px 9px;border-radius:20px;background:#fff;border:1px solid #dce6ef;color:#5c718b;font-size:10px}.attendance-legend b{color:#173f6d;margin-left:3px}.attendance-table td{vertical-align:middle}.attendance-table select,.attendance-table input[type=text],.attendance-table input[type=number]{border:1px solid #d2deea;border-radius:7px;padding:8px 9px;background:#fff;font-size:11px}.attendance-table input[type=text]{min-width:150px}.late-input{width:75px}.penalty-cell{font-weight:800;color:#b34d57}.attendance-actions{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:16px 18px;background:#fbfcfe;border-top:1px solid #e6edf3;color:#718298;font-size:10px}.gradebook-toolbar{padding:15px 18px;display:flex;justify-content:space-between;gap:15px;align-items:flex-end;margin-bottom:16px}.grade-rule-summary{display:flex;gap:7px;flex-wrap:wrap}.grade-rule-summary span,.grade-rule-summary>strong{font-size:10px;padding:8px 10px;border-radius:8px;background:#eef6fc;color:#52708e}.grade-rule-summary b{color:#0b5f9d}.gradebook-head{display:flex;justify-content:space-between;align-items:center;margin:12px 0}.gradebook-head h2{margin:4px 0;font-size:22px}.gradebook-head p{margin:0;color:#7a899b;font-size:11px}.gradebook-panel{overflow:hidden}.gradebook-table th{vertical-align:top;min-width:145px;background:#0b4f89}.gradebook-table .student-col{min-width:240px}.gradebook-table .final-col{min-width:110px}.gradebook-table th b{display:block;font-size:11px;margin:6px 0}.gradebook-table th small{display:block;color:#c8e2f5;font-size:8px;font-weight:500}.grade-category{display:inline-block;padding:4px 6px;border-radius:5px;background:rgba(255,255,255,.16);font-size:7px;letter-spacing:.7px}.grade-category.examen{background:#ffe8eb;color:#9e3e4b}.grade-category.tarea{background:#fff0d9;color:#93621b}.grade-category.cotidiano{background:#dcf5ee;color:#207d62}.gradebook-table td{background:#fff}.student-cell{white-space:normal!important}.student-cell b{display:block;color:#17385e}.student-cell small{display:block;color:#8492a4;font-size:9px;margin-top:3px}.attendance-deduction{display:block;margin-top:5px;color:#b2535e;font-size:8px}.score-input{width:80px;padding:9px 7px;border:1px solid #cfdae7;border-radius:7px;text-align:center;font-weight:800;color:#153a63}.final-score{text-align:center;font-size:16px;font-weight:900}.final-score.good{color:#17845c;background:#effaf5}.final-score.warning{color:#a36a17;background:#fff8e9}.final-score.danger{color:#b44551;background:#fff0f2}.gradebook-actions{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:16px 18px;border-top:1px solid #e5ebf1;background:#fbfcfe;color:#708198;font-size:10px}.grade-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:20px}.grade-summary-card{background:#fff;border:1px solid #dfe7ef;border-radius:14px;padding:17px;box-shadow:0 4px 14px rgba(15,45,80,.04)}.grade-summary-card>span{font-size:9px;letter-spacing:1px;color:#1381ad;font-weight:900}.grade-summary-card h3{font-size:14px;margin:7px 0;color:#19385e}.grade-summary-card strong{font-size:30px;color:#075fac}.grade-summary-card small{display:block;color:#8997a7;font-size:9px;margin-top:3px}.cc-assignment-section{margin-top:22px}.cc-section-title.compact{margin-bottom:12px}.cc-assignment-list{background:#fff;border:1px solid #e0e7ef;border-radius:12px;overflow:hidden}.cc-assignment-row{display:grid;grid-template-columns:150px 1fr auto;gap:12px;align-items:center;padding:12px 15px;border-bottom:1px solid #edf1f5}.cc-assignment-row:last-child{border-bottom:0}.cc-assignment-row>div b{display:block;font-size:11px;color:#17385e}.cc-assignment-row small{display:block;color:#8998aa;font-size:8px;margin-top:3px}.cc-assignment-type{justify-self:start;padding:6px 8px;border-radius:6px;font-size:8px;font-weight:900}.cc-assignment-type.examen{background:#ffe8eb;color:#a4424d}.cc-assignment-type.tarea{background:#fff1dc;color:#98691f}.cc-assignment-type.cotidiano{background:#e0f6ef;color:#227b60}.cc-assignment-row .cc-delete-material{border:0;background:#fff1f2;color:#a7434d;width:27px;height:27px;border-radius:7px}.cc-weight-help{padding:11px 13px;border-radius:9px;background:#eef7fc;border:1px solid #d7eaf5;color:#55728e;font-size:9px}.cc-weight-help b{display:block;color:#075d9f;font-size:10px;margin-bottom:3px}.cc-weight-help span{display:block;line-height:1.5}.cc-quick-icon.red{background:#fff0f2;color:#b24550}.cc-quick-grid button{border:0;background:#fff;cursor:pointer}.cc-quick-grid button:hover{background:#f6f9fc}
@media(max-width:900px){.gradebook-toolbar{display:block}.grade-rule-summary{margin-top:12px}.gradebook-head{display:block}.gradebook-head .btn{margin-top:10px}.attendance-actions,.gradebook-actions{align-items:flex-start;flex-direction:column}.cc-assignment-row{grid-template-columns:1fr auto}.cc-assignment-type{grid-column:1/-1}.attendance-filter{align-items:stretch;flex-direction:column}.attendance-filter select,.attendance-filter input{width:100%}}

/* CloudCampus V6 - navegación, perfiles y control académico */
.app-shell{--sidebar-width:250px}
.sidebar{width:var(--sidebar-width);transition:width .24s ease,transform .24s ease;overflow:hidden}
.main{margin-left:var(--sidebar-width);width:calc(100% - var(--sidebar-width));transition:margin-left .24s ease,width .24s ease}
.app-shell.sidebar-collapsed .sidebar{width:78px}
.app-shell.sidebar-collapsed .main{margin-left:78px;width:calc(100% - 78px)}
.app-shell.sidebar-collapsed .brand{padding:0 18px;justify-content:center}
.app-shell.sidebar-collapsed .brand strong,.app-shell.sidebar-collapsed .brand small,.app-shell.sidebar-collapsed .institution-card>div:last-child,.app-shell.sidebar-collapsed .nav-link span,.app-shell.sidebar-collapsed .nav-section{display:none}
.app-shell.sidebar-collapsed .institution-card{margin:16px 12px 10px;padding:8px;justify-content:center;border-color:rgba(255,255,255,.12)}
.app-shell.sidebar-collapsed .crest{width:44px;height:44px}
.app-shell.sidebar-collapsed .nav-link{justify-content:center;padding:13px 8px;gap:0}
.app-shell.sidebar-collapsed .sidebar-bottom{padding-left:12px;padding-right:12px}
.hamb{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;margin-right:10px;transition:.2s}
.hamb:hover{background:#edf4fb}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}
.topbar .avatar{overflow:hidden}

/* Attendance KPI row */
.attendance-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.attendance-cards .mini-stat{min-height:88px;padding:14px 16px;position:relative;overflow:hidden}
.attendance-cards .mini-stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#0a76b5}
.attendance-cards .mini-stat:nth-child(2):before{background:#d85862}
.attendance-cards .mini-stat:nth-child(3):before{background:#e6a42b}
.attendance-cards .mini-stat:nth-child(4):before{background:#7758c7}
.attendance-cards .mini-stat span{font-size:10px;text-transform:uppercase;letter-spacing:.8px;font-weight:800}
.attendance-cards .mini-stat b{font-size:24px;margin-top:3px}

/* Profile */
.profile-page{max-width:1180px;margin:0 auto}
.profile-shell{display:grid;grid-template-columns:300px minmax(0,1fr);background:#fff;border:1px solid #dce5ef;border-radius:18px;overflow:hidden;box-shadow:0 12px 35px rgba(12,43,79,.07)}
.profile-sidebar{background:linear-gradient(160deg,#082b61,#0a5687);color:#fff;padding:30px 22px;text-align:center;display:flex;flex-direction:column;align-items:center}
.profile-photo{width:132px;height:132px;border-radius:18px;background:linear-gradient(145deg,#dceaf8,#a9c3dc);color:#173c68;display:grid;place-items:center;font-size:40px;font-weight:900;overflow:hidden;border:4px solid rgba(255,255,255,.28);box-shadow:0 14px 28px rgba(0,0,0,.14)}
.profile-photo img{width:100%;height:100%;object-fit:cover}
.profile-sidebar h2{font-size:20px;line-height:1.25;margin:18px 0 5px}.profile-role{font-size:11px;color:#c5e2ef}.profile-id{margin-top:18px;width:100%;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:10px;background:rgba(255,255,255,.06);font-size:10px;color:#d4e7f1}
.profile-photo-btn{margin-top:18px;display:inline-flex;align-items:center;justify-content:center;width:100%;padding:10px 12px;border-radius:9px;background:#fff;color:#0b4e7e;font-size:11px;font-weight:900;cursor:pointer}.profile-photo-btn input{display:none}
.profile-main{padding:28px 30px}.profile-section{padding:0 0 24px;margin-bottom:24px;border-bottom:1px solid #e7edf3}.profile-section:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.profile-section-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:16px}.profile-section-head h3{margin:0;color:#15375e;font-size:17px}.profile-section-head span{font-size:9px;letter-spacing:1.4px;color:#0c8ab8;font-weight:900}.profile-data-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.profile-data{padding:12px 13px;border:1px solid #e1e8ef;border-radius:10px;background:#fbfcfe;min-width:0}.profile-data label{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.8px;color:#8795a6;font-weight:900;margin-bottom:5px}.profile-data strong,.profile-data span{display:block;font-size:12px;color:#1d395c;word-break:break-word}.profile-data.full{grid-column:1/-1}.profile-edit{margin-top:20px}.profile-edit .form-grid{padding:0}.profile-edit .form-actions{grid-column:1/-1}.profile-empty{padding:14px;border-radius:10px;background:#f5f8fb;color:#8290a1;font-size:11px}
.profile-upload-note{margin-top:8px;font-size:9px;color:#8b98a8;text-align:left;width:100%}

/* Professor course roster */
.roster-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 16px}.roster-card{overflow:hidden}.roster-avatar{width:36px;height:36px;border-radius:50%;background:#e8f4fb;color:#0b659d;display:grid;place-items:center;font-weight:900;font-size:10px;flex:0 0 auto}.roster-person{display:flex;align-items:center;gap:10px}.roster-person b{display:block;color:#17375c}.roster-person small{display:block;color:#8795a5;font-size:9px;margin-top:2px}.roster-group{padding:5px 8px;border-radius:20px;background:#edf7fb;color:#0a719d;font-size:9px;font-weight:900}.roster-course-card{margin-bottom:18px}.roster-course-card .panel-head{background:linear-gradient(100deg,#f5faff,#fff)}

@media(max-width:900px){.profile-shell{grid-template-columns:1fr}.profile-sidebar{padding:24px}.profile-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.app-shell{--sidebar-width:270px}.sidebar{transform:translateX(-100%);width:270px}.sidebar.open{transform:translateX(0);box-shadow:15px 0 45px rgba(4,27,57,.25)}.main,.app-shell.sidebar-collapsed .main{margin-left:0;width:100%}.app-shell.sidebar-collapsed .sidebar{width:270px}.app-shell.sidebar-collapsed .sidebar .brand strong,.app-shell.sidebar-collapsed .sidebar .brand small,.app-shell.sidebar-collapsed .sidebar .institution-card>div:last-child,.app-shell.sidebar-collapsed .sidebar .nav-link span,.app-shell.sidebar-collapsed .sidebar .nav-section{display:block}.app-shell.sidebar-collapsed .sidebar .brand{padding:0 27px;justify-content:flex-start}.app-shell.sidebar-collapsed .sidebar .institution-card{margin:18px 18px 10px;padding:15px;justify-content:flex-start}.app-shell.sidebar-collapsed .sidebar .nav-link{justify-content:flex-start;padding:13px 15px;gap:16px}.attendance-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-main{padding:22px 17px}.profile-data-grid{grid-template-columns:1fr}.profile-data.full{grid-column:auto}.profile-sidebar{border-radius:0}.roster-toolbar{align-items:flex-start;flex-direction:column}}

/* CloudCampus V7 - entregables y calificaciones refinadas */
.cc-assignment-link{display:block;color:inherit}.cc-assignment-link:hover b{color:#086fc1}.cc-assignment-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px}.cc-deliver-btn,.cc-review-btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 11px;border-radius:8px;font-size:9px;font-weight:900;white-space:nowrap}.cc-deliver-btn{background:#0876c9;color:#fff;box-shadow:0 5px 12px rgba(8,118,201,.16)}.cc-review-btn{background:#eef6ff;color:#0765a8;border:1px solid #cfe2f4}.cc-assignment-actions form{margin:0}.cc-assignment-row{grid-template-columns:145px minmax(0,1fr) auto}
.assignment-page-head{margin-bottom:18px}.assignment-shell{max-width:1180px;margin:0 auto}.assignment-brief,.submission-card,.submission-list{border:1px solid #dce6ef;box-shadow:0 8px 28px rgba(10,42,78,.055);border-radius:16px}.assignment-brief{padding:24px;margin-bottom:16px}.assignment-type-badge{display:inline-flex;padding:6px 10px;border-radius:7px;font-size:8px;font-weight:900;letter-spacing:.7px}.assignment-type-badge.examen{background:#ffecef;color:#ad4652}.assignment-type-badge.tarea{background:#fff2df;color:#96651c}.assignment-type-badge.cotidiano{background:#e3f7ef;color:#217b60}.assignment-brief h2{font-size:20px;color:#17395f;margin:13px 0 8px}.assignment-brief p{font-size:12px;line-height:1.7;color:#61758d;max-width:850px}.assignment-meta{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.assignment-meta span{padding:9px 12px;border-radius:9px;background:#f6f9fc;border:1px solid #e4ebf2;color:#718197;font-size:9px}.assignment-meta b{color:#193c64;margin-left:4px}.submission-card,.submission-list{padding:20px}.submission-card .panel-head h2,.submission-list .panel-head h2{font-size:18px;margin:3px 0;color:#17395f}.submission-graded{padding:8px 11px;border-radius:8px;background:#e9f8f1;color:#167a59;font-size:10px;font-weight:900}.submission-status{padding:12px 14px;background:#f2f8fc;border:1px solid #d9e9f2;border-radius:10px;margin-bottom:15px}.submission-status b{display:block;color:#1b456e;font-size:10px}.submission-status span{display:block;color:#8090a1;font-size:9px;margin-top:3px}.submission-form label,.grade-submission-form label{display:block;font-size:10px;font-weight:800;color:#29496d}.submission-form textarea,.grade-submission-form textarea{width:100%;margin-top:6px;border:1px solid #d6e1eb;border-radius:9px;padding:11px;resize:vertical;background:#fbfdff;color:#1d395c}.submission-drop{display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:4px;margin-top:13px;padding:25px 15px;border:1.5px dashed #b9d6ec;border-radius:12px;background:#f7fbfe;text-align:center;cursor:pointer}.submission-drop span{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#e6f3fb;color:#0874b9;font-size:20px}.submission-drop b{font-size:11px;color:#1b466f}.submission-drop small{font-size:8px;color:#8292a2}.submission-drop input{margin-top:8px;font-size:9px}.submission-files{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.submission-files>b{width:100%;font-size:9px;color:#6c7d90;text-transform:uppercase;letter-spacing:.8px}.file-chip{display:inline-flex;align-items:center;gap:5px;padding:8px 10px;background:#fff;border:1px solid #d9e4ee;border-radius:8px;color:#0a67a7;font-size:9px;font-weight:800}.file-chip:hover{border-color:#8fc2e2;background:#f4faff}.file-chip small{font-size:7px;color:#8a99a8;font-weight:700}.submission-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:15px;padding-top:14px;border-top:1px solid #e8edf2}.submission-actions span{font-size:9px;color:#8290a0}.teacher-feedback{margin-top:15px;padding:13px 15px;border-radius:10px;background:#f0f7fc;border-left:3px solid #0875bb}.teacher-feedback b{font-size:10px;color:#17466d}.teacher-feedback p{font-size:10px;color:#63758b;line-height:1.6;margin:6px 0 0}.submission-review{border:1px solid #e0e8ef;border-radius:12px;margin-top:12px;overflow:hidden;background:#fff}.submission-student{display:flex;align-items:center;gap:10px;padding:13px 15px;background:#f8fafc;border-bottom:1px solid #e7edf2}.submission-student>div:nth-child(2){flex:1}.submission-student b{display:block;color:#193b61;font-size:11px}.submission-student small{display:block;color:#8492a2;font-size:8px;margin-top:2px}.submission-state{padding:5px 9px;border-radius:20px;font-size:8px;font-weight:900}.submission-state.submitted{background:#e5f7ef;color:#187a5a}.submission-state.pending{background:#fff2df;color:#99691e}.submission-answer{padding:13px 15px}.submission-answer>label{display:block;font-size:8px;text-transform:uppercase;letter-spacing:1px;color:#8a98a7;font-weight:900;margin-bottom:6px}.answer-box{min-height:48px;padding:11px;border:1px solid #e0e7ee;background:#fbfcfe;border-radius:8px;color:#4f637a;font-size:10px;line-height:1.6}.grade-submission-form{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:10px;align-items:end;padding:13px 15px;background:#f8fafc;border-top:1px solid #e6edf3}.grade-submission-form label{font-size:9px}.grade-submission-form input{width:100%;margin-top:5px;border:1px solid #d3dfe9;border-radius:8px;padding:9px;color:#183b60;font-weight:800}.grade-submission-form button{height:38px}.grade-submission-form textarea{margin-top:5px;min-height:38px}
.student-grade-card{background:#fff;border:1px solid #dce6ef;border-radius:17px;box-shadow:0 8px 28px rgba(10,42,78,.055);margin-bottom:18px;overflow:hidden}.student-grade-card-head{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:21px 23px;background:linear-gradient(120deg,#f7fbff,#fff);border-bottom:1px solid #e5ecf2}.student-grade-card-head h2{font-size:19px;color:#173b62;margin:4px 0 0}.student-final-box{text-align:right;min-width:150px;padding:10px 14px;border-radius:11px;background:#eef7fc;border:1px solid #d8eaf5}.student-final-box small{display:block;font-size:7px;letter-spacing:1.2px;font-weight:900;color:#0b79ad}.student-final-box strong{display:block;font-size:29px;line-height:1.1;color:#086bb3;margin:3px 0}.student-final-box span{font-size:8px;color:#71869a}.student-grade-table-wrap{overflow:auto}.student-grade-table{width:100%;border-collapse:collapse}.student-grade-table th{padding:11px 15px;text-align:left;background:#0c5f9d;color:#fff;font-size:9px;letter-spacing:.3px}.student-grade-table th:nth-child(2),.student-grade-table th:nth-child(3),.student-grade-table th:nth-child(4),.student-grade-table td:nth-child(2),.student-grade-table td:nth-child(3),.student-grade-table td:nth-child(4){text-align:center}.student-grade-table td{padding:13px 15px;border-bottom:1px solid #edf1f5;font-size:10px;color:#40566e}.student-grade-table td:first-child{min-width:320px}.student-grade-table td:first-child a{font-weight:900;color:#e07620;font-size:11px}.student-grade-table td:first-child a:hover{color:#0a70b7}.student-grade-table td:first-child small{display:block;color:#8998a7;font-size:8px;margin-top:3px}.student-grade-score{font-weight:900;font-size:13px;color:#173b62}.grade-pending{padding:5px 8px;border-radius:20px;background:#f0f3f6;color:#8190a0;font-size:8px;font-weight:900}.grade-registered{padding:5px 8px;border-radius:20px;background:#e5f7ef;color:#187a5a;font-size:8px;font-weight:900}.student-grade-table .attendance-row td{background:#fbfcfd}.student-grade-foot{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 17px;background:#fbfcfe;color:#8190a1;font-size:8px}.student-grade-foot .btn{font-size:9px;padding:8px 12px}
@media(max-width:800px){.cc-assignment-row{grid-template-columns:1fr}.cc-assignment-actions{justify-content:flex-start}.assignment-page-head{display:block}.assignment-page-head .btn{margin-top:10px}.submission-actions,.student-grade-card-head{align-items:flex-start;flex-direction:column}.student-final-box{text-align:left;width:100%}.grade-submission-form{grid-template-columns:1fr}.student-grade-foot{align-items:flex-start;flex-direction:column}.student-grade-table td:first-child{min-width:220px}}

/* V8 academic workflow refinements */
.user-chip{cursor:pointer;color:inherit}.user-chip:hover{background:rgba(255,255,255,.06)}.avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}
.submission-drop{position:relative;transition:.18s;border-width:2px}.submission-drop.drag-active{border-color:#0876c9;background:#eef8ff;box-shadow:0 0 0 4px rgba(8,118,201,.08)}.submission-drop input{width:100%;cursor:pointer}.selected-file-list{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:8px}.selected-file{padding:6px 8px;border-radius:7px;background:#eaf4fb;color:#17608e;font-size:8px;font-weight:800}.submission-actions .btn{min-width:130px}.assignment-shell{padding-bottom:25px}.submission-list{margin-top:0}.submission-review{scroll-margin-top:90px}.submission-answer{background:#fff}.file-chip{cursor:pointer}.cc-upcoming b:hover{color:#0875bb}.student-grade-table{min-width:760px}.student-grade-card{scroll-margin-top:90px}
@media(max-width:800px){.student-grade-table{min-width:650px}.submission-drop{padding:22px 10px}}


/* CloudCampus V9 — compatibilidad transversal y layout estable */
html,body{width:100%;max-width:100%;overflow-x:hidden}
*,*::before,*::after{box-sizing:border-box}
.app-shell,.main,.topbar,.content,.profile-page,.profile-shell,.profile-main,.profile-sidebar{min-width:0}
.main{min-width:0;width:auto;max-width:100%;}
.topbar{min-width:0;overflow:hidden}
.top-title{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.top-search{flex:0 1 490px;min-width:140px}
.top-actions{min-width:0;flex:0 0 auto}
.user-chip{max-width:min(250px,28vw);min-width:0;overflow:hidden}
.user-copy{min-width:0;overflow:hidden}.user-copy span,.user-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{flex:0 0 38px;overflow:hidden}
.avatar img{display:block;width:100%;height:100%;object-fit:cover}
.profile-page{width:100%;max-width:1180px;margin:0 auto}
.profile-shell{display:grid;grid-template-columns:300px minmax(0,1fr);width:100%;overflow:hidden}
.profile-sidebar{width:100%;min-width:0;align-self:stretch}
.profile-main{width:100%;min-width:0}
.profile-photo{margin-left:auto;margin-right:auto;flex:0 0 132px}
.profile-photo-btn{max-width:100%;overflow:hidden}
.profile-data-grid{width:100%;min-width:0}
.profile-data{min-width:0;overflow:hidden}
.profile-data strong,.profile-data span{overflow-wrap:anywhere}
.table-wrap{max-width:100%;min-width:0}

/* No horizontal scrollbar caused by fixed navigation. */
@media(min-width:761px){
  .app-shell.sidebar-collapsed .sidebar{width:78px}
  .app-shell.sidebar-collapsed .main{margin-left:78px;width:calc(100% - 78px)}
  .app-shell.sidebar-collapsed .brand{padding:0 22px;gap:0}
  .app-shell.sidebar-collapsed .brand>div:last-child,.app-shell.sidebar-collapsed .institution-card>div:last-child,.app-shell.sidebar-collapsed .nav-link>span,.app-shell.sidebar-collapsed .nav-section{display:none}
  .app-shell.sidebar-collapsed .institution-card{justify-content:center;margin:17px 12px 12px;padding:10px}
  .app-shell.sidebar-collapsed nav{padding:8px 10px}
  .app-shell.sidebar-collapsed .nav-link{justify-content:center;padding:12px 8px;gap:0}
  .app-shell.sidebar-collapsed .sidebar-bottom{padding:11px 10px 17px}
}

@media(max-width:1100px){
  .top-title{max-width:210px}
  .top-search{max-width:340px}
  .content{padding-left:20px;padding-right:20px}
}
@media(max-width:900px){
  .profile-shell{grid-template-columns:260px minmax(0,1fr)}
  .profile-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  body.menu-open{overflow:hidden}
  .sidebar{width:270px;transform:translateX(-100%);transition:transform .2s ease}
  .sidebar.open{transform:translateX(0);box-shadow:12px 0 35px rgba(4,28,62,.22)}
  .main{margin-left:0!important;width:100%!important}
  .topbar{height:60px;padding:0 10px;gap:5px}
  .hamb{margin-right:7px;font-size:26px;flex:0 0 auto}
  .top-title{display:none}
  .top-search{display:none}
  .top-actions{gap:4px;margin-left:auto}
  .top-actions>a.top-icon{width:36px!important;height:36px!important}
  .user-chip{max-width:145px;height:42px;padding-right:6px}
  .user-copy{display:none}
  .user-chevron{display:none}
  .avatar{width:36px;height:36px;flex-basis:36px}
  .content{padding:18px 12px 35px;width:100%;overflow-x:hidden}
  .profile-page{width:100%}
  .profile-shell{grid-template-columns:1fr}
  .profile-sidebar{padding:26px 18px}
  .profile-main{padding:20px 14px}
  .profile-data-grid{grid-template-columns:1fr}
  .profile-photo{width:118px;height:118px;flex-basis:118px}
  .profile-upload-note{text-align:center}
}

/* Attendance cards: four compact cards in one row whenever space permits. */
.attendance-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}
.attendance-cards .mini-stat{min-width:0;padding:12px 14px;border-radius:11px}
@media(max-width:600px){.attendance-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Native controls render consistently across Chromium, Edge and Firefox. */
input,select,textarea,button{max-width:100%}
select{appearance:auto;-webkit-appearance:auto}
img{max-width:100%;height:auto}


/* CloudCampus V10 — perfil y overflow transversal */
html { overflow-x: clip; }
body { overflow-x: clip; max-width: 100vw; }
.app-shell { width: 100%; max-width: 100vw; overflow-x: clip; }
.main { width: calc(100% - var(--sidebar-width, 250px)); max-width: calc(100vw - var(--sidebar-width, 250px)); overflow-x: clip; }
.topbar { width: 100%; max-width: 100%; overflow: hidden; }
.content { width: 100%; max-width: 100%; min-width: 0; overflow-x: clip; }
.profile-page { width: 100%; max-width: 1180px; margin-left: 0; margin-right: auto; min-width: 0; }
.profile-shell { width: 100%; max-width: 100%; min-width: 0; overflow: hidden; }
.profile-sidebar, .profile-main { min-width: 0; max-width: 100%; }
.profile-data-grid { min-width: 0; max-width: 100%; }
.profile-data, .profile-data strong, .profile-data span { min-width: 0; max-width: 100%; overflow-wrap: anywhere; word-break: break-word; }
.profile-edit, .profile-edit .form-grid, .profile-edit label { min-width: 0; max-width: 100%; }
.profile-edit input, .profile-edit select, .profile-edit textarea { width: 100%; max-width: 100%; min-width: 0; }
.top-actions { min-width: 0; max-width: 100%; }
.user-chip { min-width: 0; max-width: 280px; flex: 0 1 auto; }
@media (max-width: 1180px) {
  .top-title { max-width: 190px; overflow: hidden; text-overflow: ellipsis; }
  .top-search { flex: 1 1 320px; max-width: 360px; min-width: 120px; margin-left: 18px; }
  .user-chip { max-width: 190px; }
}
@media (max-width: 950px) {
  .top-title { display: none; }
  .top-search { flex: 1 1 300px; margin-left: 10px; }
  .user-chip { max-width: 150px; }
}
@media (max-width: 760px) {
  html, body { overflow-x: hidden; }
  .main { max-width: 100vw; }
  .profile-page { max-width: 100%; margin: 0; }
  .profile-shell { grid-template-columns: 1fr; }
}

/* CloudCampus V11 — corrección definitiva de viewport, encabezado y perfil */
html,body{width:100%;max-width:100%;overflow-x:hidden!important}
.app-shell{width:100%;max-width:100%;overflow-x:hidden}
.main{flex:1 1 auto;width:auto!important;max-width:none!important;min-width:0;margin-left:var(--sidebar-width,250px)}
.topbar{width:100%;min-width:0;max-width:none;display:flex;flex-wrap:nowrap;overflow:hidden;padding-left:18px;padding-right:14px}
.hamb{flex:0 0 42px}
.top-title{flex:0 1 210px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top-search{flex:1 1 420px;width:auto;min-width:120px;max-width:490px;margin-left:20px}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:8px;min-width:0;max-width:42%;flex:0 1 auto;overflow:hidden}
.top-actions>a.top-icon{flex:0 0 40px;width:40px!important;height:40px!important}
.user-chip{flex:0 1 auto;min-width:0;width:auto;max-width:220px;height:44px;padding:3px 8px 3px 5px;display:flex;overflow:hidden}
.user-chip .avatar{flex:0 0 38px}
.user-copy{min-width:0;max-width:125px;overflow:hidden}
.user-copy span,.user-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-chevron{flex:0 0 auto}
.profile-page{width:100%;max-width:1180px;margin-left:0;margin-right:auto;min-width:0}
.profile-shell{width:100%;max-width:100%;min-width:0;overflow:hidden}
.profile-sidebar,.profile-main{min-width:0;max-width:100%}
.profile-sidebar{overflow:hidden}
.profile-photo{max-width:132px}
.profile-photo-btn{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.profile-data-grid,.profile-data,.profile-edit,.profile-edit .form-grid{min-width:0;max-width:100%}
.profile-data strong,.profile-data span{overflow-wrap:anywhere;word-break:break-word}
@media(min-width:761px){
  .app-shell.sidebar-collapsed .main{margin-left:78px;width:auto!important;max-width:none!important}
}
@media(max-width:1100px){
  .top-title{max-width:150px}
  .top-search{margin-left:12px;max-width:none}
  .top-actions{max-width:38%}
  .user-copy{display:none}
  .user-chip{max-width:52px;padding-right:5px}
  .user-chevron{display:none}
}
@media(max-width:760px){
  .main{margin-left:0!important;width:100%!important;max-width:100%!important}
  .topbar{padding:0 10px}
  .top-actions{max-width:none;gap:5px}
  .user-chip{max-width:42px;width:42px;padding:2px}
  .user-copy,.user-chevron{display:none}
  .profile-page{width:100%;max-width:100%;margin:0}
}


/* CloudCampus V12 — encabezado simplificado: perfil ocupa el espacio de accesos superiores */
.top-actions{margin-left:auto;display:flex;align-items:center;gap:0;min-width:0;max-width:none;flex:0 0 auto;overflow:visible}
.top-actions .user-chip{margin-left:0;height:52px;min-width:210px;max-width:320px;padding:5px 10px 5px 6px;border:0;border-left:1px solid rgba(226,232,239,.9);border-radius:0;display:flex;align-items:center;gap:11px;background:transparent;color:#17345b;overflow:hidden}
.top-actions .user-chip:hover{background:#f6f9fc}
.top-actions .user-chip .avatar{width:42px;height:42px;flex:0 0 42px;border-radius:50%;overflow:hidden;background:linear-gradient(145deg,#dbe9f8,#a9c0da);color:#21466f;font-size:15px}
.top-actions .user-chip .avatar img{width:100%;height:100%;display:block;object-fit:cover;border-radius:50%}
.top-actions .user-copy{display:flex;flex-direction:column;justify-content:center;min-width:0;max-width:220px;overflow:hidden;line-height:1.15}
.top-actions .user-copy span{display:block;color:#17345b;font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions .user-copy small{display:block;color:#8291a5;font-size:9px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions .user-chevron{flex:0 0 auto;margin-left:auto;color:#173e70;font-size:16px}
@media(max-width:1100px){.top-actions .user-chip{min-width:185px;max-width:250px}.top-actions .user-copy{max-width:155px}}
@media(max-width:760px){.top-actions .user-chip{min-width:0;width:auto;max-width:190px;height:46px;padding:2px 5px 2px 2px;border-left:0}.top-actions .user-chip .avatar{width:38px;height:38px;flex-basis:38px}.top-actions .user-copy{display:flex;max-width:110px}.top-actions .user-copy span{font-size:11px}.top-actions .user-copy small{font-size:8px}.top-actions .user-chevron{display:none}}

/* CloudCampus V13 — encabezado de usuario estable y responsive */
.topbar{display:flex!important;align-items:center!important;gap:0!important;min-width:0!important;overflow:hidden!important}
.topbar .hamb{flex:0 0 auto!important}
.topbar .top-title{flex:0 1 auto!important;min-width:0!important;white-space:nowrap!important}
.topbar .top-search{flex:1 1 490px!important;min-width:120px!important;max-width:490px!important}
.topbar .top-actions{margin-left:auto!important;flex:0 0 auto!important;min-width:210px!important;max-width:none!important;overflow:visible!important;display:flex!important;align-items:center!important}
.topbar .top-actions .user-chip{box-sizing:border-box!important;width:210px!important;min-width:210px!important;max-width:210px!important;height:52px!important;margin:0!important;padding:5px 9px 5px 10px!important;border:0!important;border-left:1px solid #e2e8ef!important;border-radius:0!important;background:#fff!important;color:#17345b!important;display:flex!important;align-items:center!important;gap:10px!important;overflow:hidden!important}
.topbar .top-actions .user-chip .avatar{width:42px!important;height:42px!important;min-width:42px!important;flex:0 0 42px!important;border-radius:50%!important;overflow:hidden!important}
.topbar .top-actions .user-chip .avatar img{width:100%!important;height:100%!important;object-fit:cover!important;border-radius:50%!important;display:block!important}
.topbar .top-actions .user-copy{display:flex!important;flex:1 1 auto!important;min-width:0!important;max-width:none!important;flex-direction:column!important;justify-content:center!important;overflow:hidden!important;line-height:1.15!important}
.topbar .top-actions .user-copy span{display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;font-size:13px!important;font-weight:800!important;color:#17345b!important}
.topbar .top-actions .user-copy small{display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;font-size:9px!important;margin-top:4px!important;color:#8291a5!important}
.topbar .top-actions .user-chevron{display:block!important;flex:0 0 14px!important;margin-left:auto!important;color:#173e70!important;font-size:15px!important;line-height:1!important;text-align:center!important}
@media (max-width:900px){
  .topbar .top-search{display:none!important}
  .topbar .top-actions{min-width:210px!important}
  .topbar .top-actions .user-chip{width:210px!important;min-width:210px!important}
}
@media (max-width:520px){
  .topbar{padding:0 10px!important}
  .topbar .top-title{display:none!important}
  .topbar .top-actions{min-width:190px!important}
  .topbar .top-actions .user-chip{width:190px!important;min-width:190px!important;padding-left:6px!important}
}


/* CloudCampus V14 — reglas globales finales. Aplican a todos los roles. */
html, body { max-width:100%; overflow-x:clip; }
.app-shell { width:100%; max-width:100%; min-width:0; }
.main { flex:1 1 auto; min-width:0 !important; width:auto !important; max-width:none !important; overflow-x:clip; }
.topbar { min-width:0; width:100%; }
.top-title { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.top-search { flex:1 1 490px; min-width:120px; max-width:490px; }
.top-actions { flex:0 0 auto !important; min-width:0 !important; max-width:320px !important; overflow:visible !important; }
.top-actions .user-chip,
.topbar .top-actions .user-chip {
  width:auto !important; min-width:210px !important; max-width:320px !important;
  height:52px !important; flex:0 1 auto !important; overflow:hidden !important;
  display:flex !important; align-items:center !important; gap:10px !important;
  padding:5px 10px 5px 7px !important; margin:0 !important;
  border:0 !important; border-left:1px solid #e2e8ef !important;
  border-radius:0 !important; background:#fff !important;
}
.topbar .top-actions .user-chip .avatar { flex:0 0 42px !important; width:42px !important; height:42px !important; border-radius:50% !important; overflow:hidden !important; }
.topbar .top-actions .user-copy { flex:1 1 auto !important; min-width:0 !important; max-width:none !important; overflow:hidden !important; }
.topbar .top-actions .user-copy span,
.topbar .top-actions .user-copy small { min-width:0 !important; max-width:100% !important; overflow:hidden !important; text-overflow:ellipsis !important; white-space:nowrap !important; }
.topbar .top-actions .user-chevron { flex:0 0 14px !important; margin-left:auto !important; }
.content { width:100%; min-width:0; overflow-x:clip; }
.profile-page, .profile-shell, .profile-main, .profile-sidebar { min-width:0 !important; max-width:100% !important; }
.profile-data { min-width:0 !important; overflow:hidden; }
.profile-data strong, .profile-data span { overflow-wrap:anywhere; }
.table-wrap { max-width:100%; }

@media (max-width:1180px) {
  .top-title { max-width:210px; }
  .top-search { flex-basis:320px; max-width:390px; }
  .top-actions { max-width:270px !important; }
  .top-actions .user-chip,
  .topbar .top-actions .user-chip { min-width:185px !important; max-width:270px !important; }
}
@media (max-width:900px) {
  .top-title { display:none; }
  .top-search { flex:1 1 auto; max-width:none; }
  .top-actions { max-width:235px !important; }
  .top-actions .user-chip,
  .topbar .top-actions .user-chip { min-width:185px !important; max-width:235px !important; }
}
@media (max-width:760px) {
  .topbar { padding:0 12px !important; }
  .top-search { display:none; }
  .top-actions { max-width:none !important; }
  .top-actions .user-chip,
  .topbar .top-actions .user-chip { min-width:0 !important; width:auto !important; max-width:210px !important; height:46px !important; border-left:0 !important; }
  .topbar .top-actions .user-chip .avatar { width:38px !important; height:38px !important; flex-basis:38px !important; }
  .topbar .top-actions .user-copy { display:flex !important; max-width:125px !important; }
  .topbar .top-actions .user-copy span { font-size:11px !important; }
  .topbar .top-actions .user-copy small { font-size:8px !important; }
}

/* ===== MENSAJES V10 ===== */
/* ===== MENSAJES · CloudCampus ===== */
.messages-page{margin:-32px -34px -50px;min-height:calc(100vh - 70px);background:#f2f5fa}.messages-shell{min-height:calc(100vh - 70px);display:grid;grid-template-columns:250px 1fr;gap:10px;padding:10px}.messages-nav{background:linear-gradient(180deg,#101d31,#111d2d);border-radius:12px;min-height:calc(100vh - 90px);padding:14px 10px;color:#dce7f7;display:flex;flex-direction:column;box-shadow:0 8px 25px rgba(8,30,65,.10)}.message-compose-btn{height:44px;border-radius:10px;background:linear-gradient(135deg,#6659f5,#5650db);color:#fff;display:flex;align-items:center;justify-content:center;gap:10px;font-weight:800;font-size:13px;margin-bottom:12px;box-shadow:0 8px 18px rgba(82,77,220,.25)}.message-nav-group{display:grid;gap:3px}.message-nav-item,.message-nav-static{display:flex;align-items:center;gap:11px;padding:10px 11px;border-radius:8px;font-size:12px;font-weight:700}.message-nav-item{color:#dce5f2}.message-nav-item:hover,.message-nav-item.active{background:rgba(88,105,140,.28);color:#fff}.message-nav-item b{margin-left:auto;min-width:20px;text-align:center;background:#e74747;color:#fff;border-radius:12px;padding:2px 6px;font-size:10px}.message-nav-item:not(.active) b:empty{display:none}.message-nav-title{margin:22px 10px 7px;padding-top:16px;border-top:1px solid rgba(255,255,255,.12);font-size:9px;letter-spacing:1.4px;color:#8194b2;font-weight:800}.message-nav-static{color:#aebdd1}.message-nav-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.10);padding:15px 10px 4px;color:#71839e;font-size:9px;line-height:1.4}.messages-main{min-width:0;background:#fff;border:1px solid #e1e7ef;border-radius:12px;padding:10px;box-shadow:0 8px 28px rgba(16,45,84,.06);overflow:hidden}.messages-search{height:54px;border:1px solid #e0e6ee;border-radius:28px;display:flex;align-items:center;padding:0 20px;margin:4px 8px 10px;background:#fff}.messages-search span{font-size:24px;color:#14243c;margin-right:10px}.messages-search input{border:0;outline:0;width:100%;font-size:14px;color:#28384e;background:transparent}.messages-actions{height:46px;border:1px solid #e1e7ef;border-radius:10px;display:flex;align-items:center;gap:22px;padding:0 18px;color:#172237;margin:0 8px 18px}.messages-actions span{font-size:18px}.messages-actions span:nth-of-type(1){margin-left:10px}.messages-list-head{display:flex;align-items:flex-end;justify-content:space-between;padding:0 18px 16px}.messages-list-head h1{margin:4px 0 5px;font-size:27px;color:#162b52}.messages-list-head p{margin:0;color:#718099;font-size:12px}.message-list{border-top:1px solid #e6ebf2;padding-top:8px}.message-item{display:flex;align-items:center;gap:13px;padding:15px 16px;border:1px solid transparent;border-bottom-color:#e5eaf1;color:#18253a;transition:.16s;min-width:0}.message-item:hover{background:#f7faff;border-color:#d8e1ed;border-radius:10px}.message-item.unread{background:#f8fbff}.message-check{width:18px;display:flex;justify-content:center}.message-check input{width:15px;height:15px}.message-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#e1ebf6,#c5d5e9);color:#184476;flex:0 0 auto}.message-item-content{min-width:0;flex:1}.message-item-top{display:flex;align-items:center;justify-content:space-between;gap:15px}.message-item-top strong{font-size:13px}.message-item-top time{font-size:10px;color:#8a97a9;white-space:nowrap}.message-item-content>b{display:block;font-size:12px;margin-top:4px}.message-item-content p{margin:4px 0 0;color:#66758b;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unread-dot{width:8px;height:8px;border-radius:50%;background:#2d84d8;flex:0 0 auto}.messages-toolbar{height:48px;border-bottom:1px solid #e1e7ef;display:flex;align-items:center;padding:0 12px;margin-bottom:12px}.messages-toolbar.simple{justify-content:space-between}.toolbar-back{font-weight:800;color:#1c4f83;font-size:13px}.toolbar-title{font-weight:800;color:#24354e;margin-left:12px}.toolbar-action{margin-left:auto;font-size:18px;color:#1b5f99}.toolbar-discard{background:#e74c4c;color:#fff;border-radius:7px;padding:7px 13px;font-size:11px;font-weight:800}.compose-card{padding:12px 18px 20px}.compose-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e4e9ef;padding:0 0 18px}.compose-head h1{font-size:25px;margin:4px 0}.compose-head p{margin:0;color:#728096;font-size:12px}.compose-form{padding-top:17px}.compose-field{margin-bottom:14px}.compose-field label{display:block;color:#647289;font-size:10px;font-weight:800;letter-spacing:.7px;margin:0 0 6px}.compose-field input,.compose-field select,.compose-field textarea{width:100%;border:1px solid #d6dee9;border-radius:8px;padding:11px 12px;outline:0;background:#fff;color:#25354b;font-size:13px}.compose-field textarea{resize:vertical;min-height:240px;line-height:1.55}.compose-field input:focus,.compose-field select:focus,.compose-field textarea:focus{border-color:#1685b8;box-shadow:0 0 0 3px rgba(22,133,184,.08)}.compose-bottom{display:flex;align-items:center;justify-content:space-between;color:#8a96a7;font-size:10px;border-top:1px solid #e7ebf1;padding-top:14px}.compose-empty,.message-error{margin:16px 0;padding:15px;border:1px solid #f0d0d0;border-radius:10px;background:#fff7f7;color:#9e3d3d}.message-error{display:flex;flex-direction:column;gap:5px;font-size:12px}.message-error strong{font-size:14px}.message-detail{margin:0 10px 20px;border:1px solid #e0e6ee;border-radius:13px;overflow:hidden;background:#fff}.message-detail-head{display:flex;align-items:center;gap:14px;padding:21px;border-bottom:1px solid #e6ebf1}.message-detail-meta{min-width:0;display:flex;flex-direction:column;gap:3px}.message-detail-meta h1{font-size:20px;margin:0 0 5px;color:#17253c}.message-detail-meta strong{font-size:12px}.message-detail-meta span,.message-detail-meta small{font-size:10px;color:#7c899b}.message-detail-role{margin-left:auto;background:#edf5fc;color:#176697;border-radius:16px;padding:7px 11px;font-size:10px;font-weight:800}.message-detail-body{padding:28px 30px;min-height:260px;color:#27374d;font-size:13px;line-height:1.75;white-space:normal}.message-detail-footer{border-top:1px solid #e6ebf1;padding:15px 20px}.messages-empty{text-align:center;padding:80px 20px;color:#718097}.messages-empty-icon{width:54px;height:54px;border-radius:50%;background:#eaf4fb;color:#0b76a8;display:grid;place-items:center;margin:0 auto 13px;font-size:22px}.messages-empty h3{margin:0;color:#31435c;font-size:17px}.messages-empty p{font-size:12px;margin:7px 0 17px}.btn:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:900px){.messages-shell{grid-template-columns:205px 1fr}.messages-list-head .btn{display:none}.compose-head{align-items:flex-start;gap:12px}.compose-head .btn{display:none}}
@media(max-width:700px){.messages-page{margin:-23px -15px -40px}.messages-shell{grid-template-columns:1fr;padding:5px}.messages-nav{min-height:auto}.message-nav-group.compact,.message-nav-title,.message-nav-footer{display:none}.messages-main{min-height:calc(100vh - 100px)}.message-nav-item{display:none}.message-compose-btn{margin:0}.messages-actions{gap:14px}.message-item{padding:13px 8px}.message-item-content p{display:none}.message-detail-body{padding:22px 18px}}
.message-inline-form{display:inline-flex;margin-left:8px}.btn.secondary{background:#eef4fa;color:#164f7d;border:1px solid #d5e1ec}.btn.danger{background:#fff1f1;color:#b13f3f;border:1px solid #efcaca}.message-star{color:#e6a400;font-size:15px;flex:0 0 auto}.reply-preview{margin:18px 0 4px;padding:14px 16px;border:1px solid #dfe6ef;border-left:3px solid #2c82bb;background:#f7f9fc;border-radius:8px;color:#53647b}.reply-preview div{display:flex;justify-content:space-between;gap:15px;font-size:11px}.reply-preview span{color:#8a97a8}.reply-preview p{margin:10px 0 0;padding-top:10px;border-top:1px solid #e4e9ef;white-space:pre-wrap;font-size:12px;line-height:1.6;max-height:150px;overflow:auto}.message-nav-item.active{background:rgba(88,105,140,.28);color:#fff}

/* ============================================================
   LOGIN - INSTITUTION LOGO FINAL SIZE CONTROL
   ============================================================ */
body.login-body .login-page .login-left { min-width:0 !important; overflow:hidden !important; }
body.login-body .login-page .login-left .institution-login {
    width:100% !important; max-width:680px !important; height:100% !important;
    padding:35px 35px 40px !important; display:flex !important; flex-direction:column !important;
    align-items:center !important; justify-content:center !important; box-sizing:border-box !important;
    overflow:hidden !important;
}
body.login-body .login-page .login-left .institution-login .institution-logo {
    display:block !important; width:400px !important; max-width:58% !important;
    height:auto !important; max-height:430px !important; object-fit:contain !important;
    object-position:center !important; flex:0 0 auto !important; margin:0 auto 12px !important;
}
body.login-body .login-page .login-left .institution-login .institution-tagline {
    margin:0 0 48px !important; font-size:11px !important; letter-spacing:3px !important;
}
body.login-body .login-page .login-left .institution-login .login-copy {
    width:100% !important; max-width:540px !important; margin-top:0 !important;
}
body.login-body .login-page .login-left .institution-login .login-copy strong {
    font-size:24px !important; line-height:1.25 !important;
}
body.login-body .login-page .login-left .institution-login .login-copy span {
    font-size:15px !important; line-height:1.5 !important;
}
@media (min-width:1400px) {
    body.login-body .login-page .login-left .institution-login .institution-logo { width:400px !important; max-width:58% !important; max-height:430px !important; }
}
@media (min-width:851px) and (max-width:1399px) {
    body.login-body .login-page .login-left .institution-login .institution-logo { width:350px !important; max-width:60% !important; max-height:380px !important; }
}
@media (max-width:850px) {
    body.login-body .login-page .login-left { min-height:500px !important; height:auto !important; }
    body.login-body .login-page .login-left .institution-login { height:auto !important; min-height:500px !important; padding:35px 25px !important; }
    body.login-body .login-page .login-left .institution-login .institution-logo { width:320px !important; max-width:75% !important; max-height:340px !important; }
}
@media (max-width:500px) {
    body.login-body .login-page .login-left { min-height:430px !important; }
    body.login-body .login-page .login-left .institution-login { min-height:430px !important; padding:25px 20px !important; }
    body.login-body .login-page .login-left .institution-login .institution-logo { width:275px !important; max-width:82% !important; max-height:290px !important; }
    body.login-body .login-page .login-left .institution-login .institution-tagline { margin-bottom:28px !important; font-size:9px !important; letter-spacing:2px !important; }
    body.login-body .login-page .login-left .institution-login .login-copy strong { font-size:20px !important; }
    body.login-body .login-page .login-left .institution-login .login-copy span { font-size:13px !important; }
}

/* =====================================================================
   LOGIN - CONTROL FINAL DEL LOGOTIPO INSTITUCIONAL
   El archivo sanfralogo.png es 802x803 y contiene el logotipo completo.
   En escritorio se limita a 300x300 para mantenerlo proporcional y
   evitar que invada el panel de acceso.
   ===================================================================== */

body.login-body .login-page .login-left {
    min-width: 0 !important;
    overflow: hidden !important;
}

body.login-body .login-page .login-left .institution-login {
    width: 100% !important;
    max-width: 620px !important;
    min-width: 0 !important;
    height: 100% !important;
    min-height: 0 !important;
    padding: 36px 32px !important;
    box-sizing: border-box !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    overflow: hidden !important;
}

body.login-body .login-page .login-left .institution-logo {
    display: block !important;
    width: 300px !important;
    height: 300px !important;
    max-width: 300px !important;
    max-height: 300px !important;
    min-width: 0 !important;
    min-height: 0 !important;
    object-fit: contain !important;
    object-position: center !important;
    flex: 0 0 300px !important;
    margin: 0 auto 18px !important;
}

body.login-body .institution-tagline {
    margin: 0 0 28px !important;
}

body.login-body .login-copy {
    max-width: 520px !important;
}

body.login-body .login-copy strong {
    font-size: clamp(20px, 2vw, 27px) !important;
    line-height: 1.2 !important;
}

body.login-body .login-copy span {
    font-size: clamp(13px, 1.2vw, 16px) !important;
}

@media (max-width: 1100px) and (min-width: 851px) {
    body.login-body .login-page .login-left .institution-logo {
        width: 270px !important;
        height: 270px !important;
        max-width: 270px !important;
        max-height: 270px !important;
        flex-basis: 270px !important;
    }

    body.login-body .login-page .login-left .institution-login {
        padding: 28px 24px !important;
    }
}

@media (max-width: 850px) {
    body.login-body .login-page .login-left {
        height: auto !important;
        min-height: 500px !important;
    }

    body.login-body .login-page .login-left .institution-login {
        height: auto !important;
        min-height: 500px !important;
        padding: 40px 24px !important;
    }

    body.login-body .login-page .login-left .institution-logo {
        width: 260px !important;
        height: 260px !important;
        max-width: 260px !important;
        max-height: 260px !important;
        flex-basis: 260px !important;
    }
}

@media (max-width: 500px) {
    body.login-body .login-page .login-left {
        min-height: 430px !important;
    }

    body.login-body .login-page .login-left .institution-login {
        min-height: 430px !important;
        padding: 28px 18px !important;
    }

    body.login-body .login-page .login-left .institution-logo {
        width: 220px !important;
        height: 220px !important;
        max-width: 220px !important;
        max-height: 220px !important;
        flex-basis: 220px !important;
        margin-bottom: 14px !important;
    }
}


/* ============================================================
   CALIFICACIONES — RESUMEN POR MATERIA
   ============================================================ */

.student-grade-summary-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.student-grade-summary-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    min-height: 150px;
    padding: 22px 24px;
    background: #ffffff;
    border: 1px solid #dce6ef;
    border-radius: 16px;
    box-shadow: 0 7px 22px rgba(10, 42, 78, 0.045);
}

.student-grade-summary-main {
    min-width: 0;
}

.student-grade-summary-main h2 {
    margin: 6px 0 0;
    color: #173b62;
    font-size: 22px;
    line-height: 1.2;
}

.student-summary-student {
    margin: 7px 0 0;
    color: #74859a;
    font-size: 11px;
}

.student-final-link {
    min-width: 165px;
    padding: 14px 18px;
    border: 1px solid #d6e8f4;
    border-radius: 13px;
    background: #eef7fc;
    color: #086bb3;
    text-align: center;
    text-decoration: none;
    transition: 0.18s ease;
}

.student-final-link:hover {
    border-color: #9ecde5;
    background: #e7f4fb;
    transform: translateY(-1px);
}

.student-final-link span {
    display: block;
    color: #0b79ad;
    font-size: 8px;
    font-weight: 900;
    letter-spacing: 1.2px;
}

.student-final-link strong {
    display: block;
    margin: 4px 0 2px;
    color: #086bb3;
    font-size: 31px;
    line-height: 1;
}

.student-final-link small {
    display: block;
    color: #70859b;
    font-size: 8px;
    font-weight: 700;
}

/* ============================================================
   CALIFICACIONES — DETALLE DE UNA MATERIA
   ============================================================ */

.grade-detail-head {
    align-items: center;
}

.grade-detail-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 18px;
    padding: 24px;
    background: linear-gradient(120deg, #f7fbff, #ffffff);
    border: 1px solid #dce6ef;
    border-radius: 16px;
    box-shadow: 0 7px 22px rgba(10, 42, 78, 0.045);
}

.grade-detail-summary h2 {
    margin: 6px 0 0;
    color: #173b62;
    font-size: 24px;
}

.grade-detail-summary p {
    margin: 7px 0 0;
    color: #708197;
    font-size: 11px;
}

.grade-detail-final {
    min-width: 180px;
    padding: 13px 18px;
    border: 1px solid #d5e8f4;
    border-radius: 13px;
    background: #eef7fc;
    text-align: center;
}

.grade-detail-final small {
    display: block;
    color: #0b79ad;
    font-size: 8px;
    font-weight: 900;
    letter-spacing: 1.2px;
}

.grade-detail-final strong {
    display: block;
    margin: 4px 0;
    color: #086bb3;
    font-size: 32px;
    line-height: 1;
}

.grade-detail-final span {
    color: #71869a;
    font-size: 8px;
}

.grade-detail-panel {
    overflow: hidden;
}

.grade-detail-note {
    margin: 5px 0 0;
    color: #7d8da0;
    font-size: 10px;
}

.grade-detail-table {
    min-width: 780px;
}

.grade-detail-table td:first-child {
    min-width: 260px;
}

.grade-detail-assignment {
    color: #e07620;
    font-size: 11px;
    font-weight: 900;
}

.grade-detail-assignment:hover {
    color: #086fc1;
}

.grade-detail-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 14px 18px;
    background: #fbfcfe;
    color: #7f8da0;
    font-size: 9px;
}

.grade-detail-footer strong {
    color: #173b62;
    font-size: 12px;
}

@media (max-width: 900px) {
    .student-grade-summary-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 700px) {
    .student-grade-summary-card,
    .grade-detail-summary,
    .grade-detail-head {
        align-items: flex-start;
        flex-direction: column;
    }

    .student-final-link,
    .grade-detail-final {
        width: 100%;
    }

    .grade-detail-footer {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* ============================================================
   CALIFICACIONES — VISTA RESUMEN INSTITUCIONAL
   ============================================================ */

.grades-page-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 22px;
}

.grades-page-head h1 {
    margin: 5px 0 7px;
    color: #132f5b;
    font-size: 31px;
    line-height: 1.1;
}

.grades-page-head p {
    margin: 0;
    color: #708198;
    font-size: 13px;
}

.grades-cycle-pill {
    min-width: 190px;
    padding: 10px 13px;
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fff;
    border: 1px solid #dde7f0;
    border-radius: 12px;
    box-shadow: 0 5px 18px rgba(17, 47, 86, .05);
}

.grades-pill-icon {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    background: #edf7fb;
    color: #0b6da4;
    font-size: 13px;
}

.grades-cycle-pill strong {
    display: block;
    color: #213a5d;
    font-size: 10px;
}

.grades-cycle-pill small {
    display: block;
    margin-top: 3px;
    color: #8695a6;
    font-size: 9px;
}

.grades-pill-arrow {
    margin-left: auto;
    color: #45647f;
    font-size: 14px;
}

.grades-performance-banner {
    min-height: 68px;
    margin-bottom: 22px;
    padding: 12px 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    overflow: hidden;
    border: 1px solid #cdece3;
    border-radius: 12px;
    background: linear-gradient(105deg, #dff5ef 0%, #e8f8f4 55%, #dcefeb 100%);
}

.grades-performance-banner::after {
    content: '';
    position: absolute;
    right: -60px;
    top: -80px;
    width: 270px;
    height: 180px;
    border-radius: 50%;
    border: 1px solid rgba(47, 146, 135, .12);
    box-shadow:
        0 0 0 28px rgba(47, 146, 135, .04),
        0 0 0 56px rgba(47, 146, 135, .03);
}

.grades-performance-icon {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(31, 168, 136, .12);
    color: #138f78;
    font-size: 18px;
}

.grades-performance-banner strong {
    display: block;
    color: #173e3a;
    font-size: 12px;
}

.grades-performance-banner span {
    display: block;
    margin-top: 3px;
    color: #4d756f;
    font-size: 10px;
}

.grades-performance-banner em {
    position: relative;
    z-index: 1;
    margin-left: auto;
    padding-right: 10px;
    color: #4c6d68;
    font-family: Georgia, serif;
    font-size: 10px;
    line-height: 1.45;
    text-align: right;
}

.grades-cycle-heading {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
    margin: 0 0 12px;
}

.grades-cycle-title {
    color: #173150;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 1px;
}

.grades-period {
    color: #213651;
    font-size: 10px;
    font-weight: 700;
}

.student-grade-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 20px;
}

.student-grade-summary-card {
    min-width: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fff;
    border: 1px solid #dce6ef;
    border-radius: 14px;
    box-shadow: 0 6px 19px rgba(12, 43, 82, .05);
}

.student-grade-summary-card.science {
    --subject-color: #237bd6;
    --subject-soft: #e8f1ff;
}

.student-grade-summary-card.language {
    --subject-color: #0d9b79;
    --subject-soft: #e2f6ef;
}

.student-grade-summary-card.math {
    --subject-color: #f2a11d;
    --subject-soft: #fff1d9;
}

.student-grade-summary-card.default {
    --subject-color: #4b7eb4;
    --subject-soft: #e8f0f8;
}

.student-grade-summary-top {
    min-height: 118px;
    padding: 15px 15px 13px;
    display: flex;
    align-items: center;
    gap: 11px;
}

.student-grade-course-icon {
    width: 52px;
    height: 52px;
    flex: 0 0 52px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--subject-soft);
    border: 6px solid rgba(255, 255, 255, .75);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--subject-color) 28%, white);
    color: var(--subject-color);
    font-size: 19px;
    font-weight: 800;
}

.student-grade-summary-main {
    min-width: 0;
    flex: 1;
}

.grade-course-code {
    display: block;
    margin-bottom: 4px;
    color: var(--subject-color);
    font-size: 8px;
    font-weight: 900;
    letter-spacing: 1px;
}

.student-grade-summary-main h2 {
    margin: 0;
    color: #17355c;
    font-size: 16px;
    line-height: 1.25;
}

.student-grade-meta {
    margin: 5px 0 0;
    color: #718399;
    font-size: 8px;
    line-height: 1.45;
}

.student-final-link {
    min-width: 73px;
    width: 73px;
    height: 73px;
    flex: 0 0 73px;
    padding: 10px 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border: 3px solid var(--subject-color);
    border-radius: 50%;
    background: #fff;
    color: inherit;
    text-align: center;
    text-decoration: none;
    transition: transform .18s ease, box-shadow .18s ease;
}

.student-final-link:hover {
    transform: translateY(-2px);
    box-shadow: 0 9px 18px rgba(12, 43, 82, .10);
}

.student-final-link span {
    display: block;
    color: #60758e;
    font-size: 6px;
    font-weight: 900;
    letter-spacing: .7px;
}

.student-final-link strong {
    display: block;
    margin: 2px 0 0;
    color: #17355c;
    font-size: 17px;
    line-height: 1;
}

.student-final-link small {
    display: block;
    margin-top: 2px;
    color: #75869a;
    font-size: 7px;
    font-weight: 700;
}

.student-grade-summary-footer {
    min-height: 48px;
    padding: 0 14px;
    display: flex;
    align-items: center;
    gap: 8px;
    border-top: 1px solid #edf1f5;
    background: #fbfcfe;
    color: #0a4f89;
    font-size: 9px;
    font-weight: 700;
    text-decoration: none;
}

.student-grade-summary-footer:hover {
    background: #f5faff;
}

.grade-detail-doc {
    color: var(--subject-color, #0b6fae);
    font-size: 13px;
}

.grade-detail-arrow {
    margin-left: auto;
    color: #0a5ea2;
    font-size: 18px;
    line-height: 1;
}

.grades-academic-footer {
    min-height: 78px;
    padding: 13px 18px;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    overflow: hidden;
    border: 1px solid #dce7ef;
    border-radius: 12px;
    background: linear-gradient(105deg, #ffffff, #f5f9fc);
}

.grades-academic-footer::after {
    content: '';
    position: absolute;
    right: 90px;
    bottom: -95px;
    width: 250px;
    height: 150px;
    border: 1px solid rgba(77, 112, 147, .08);
    border-radius: 50%;
    box-shadow: 0 0 0 35px rgba(77, 112, 147, .03);
}

.grades-cap-icon {
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #edf3f8;
    color: #2f587e;
    font-size: 19px;
}

.grades-academic-footer strong,
.grades-academic-footer span {
    display: block;
}

.grades-academic-footer strong {
    color: #25405f;
    font-size: 11px;
}

.grades-academic-footer span {
    margin-top: 3px;
    color: #7f8ea0;
    font-size: 8px;
}

.grades-academic-footer em {
    position: relative;
    z-index: 1;
    margin-left: auto;
    padding-right: 10px;
    color: #64758a;
    font-family: Georgia, serif;
    font-size: 9px;
    line-height: 1.45;
    text-align: right;
}

@media (max-width: 1100px) {
    .student-grade-summary-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .grades-page-head {
        display: block;
    }

    .grades-cycle-pill {
        margin-top: 14px;
    }

    .grades-performance-banner em {
        display: none;
    }

    .student-grade-summary-grid {
        grid-template-columns: 1fr;
    }

    .grades-academic-footer em {
        display: none;
    }
}


/* =========================================================
   PERÍODOS ACADÉMICOS
   ========================================================= */
.period-control-banner{display:flex;align-items:center;gap:14px;padding:17px 20px;border:1px solid #dce7ef;border-radius:14px;background:#fff;margin-bottom:18px}.period-control-banner.open{background:linear-gradient(110deg,#effaf6,#fff);border-color:#c8eadb}.period-control-banner.closed{background:#fff8f8;border-color:#efd4d4}.period-control-icon{width:42px;height:42px;border-radius:12px;background:#e8f4fb;color:#0875ae;display:grid;place-items:center}.period-control-icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.period-control-banner strong,.period-control-banner span{display:block}.period-control-banner strong{font-size:14px;color:#18375d}.period-control-banner span{margin-top:3px;color:#718196;font-size:11px}.period-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.period-admin-card{overflow:hidden}.period-admin-top{display:flex;justify-content:space-between;gap:15px;padding:21px}.period-admin-top h2{margin:5px 0 5px;color:#16385f;font-size:21px}.period-admin-top p{margin:0;color:#7d8b9e;font-size:11px}.period-code{font-size:9px;font-weight:900;letter-spacing:1.6px;color:#1397bb}.period-status{padding:7px 11px;height:max-content;border-radius:20px;font-size:9px;font-weight:900}.period-status.open{background:#e7f8ef;color:#16845b}.period-status.closed{background:#f1f4f7;color:#728094}.period-admin-body{padding:0 21px 21px}.period-lock-note{padding:12px 14px;border:1px solid #e4ebf1;border-radius:10px;background:#f8fbfd;margin-bottom:13px}.period-lock-note strong,.period-lock-note span{display:block}.period-lock-note strong{font-size:11px;color:#27405f}.period-lock-note span{margin-top:3px;font-size:10px;color:#8390a1}.period-lock-note.muted{background:#fafbfc}.period-action-btn{width:100%}.period-rules-card{margin-top:18px}.period-rules-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0}.period-rules-grid>div{padding:18px 20px;border-right:1px solid #edf1f5}.period-rules-grid>div:last-child{border-right:0}.period-rules-grid strong,.period-rules-grid span{display:block}.period-rules-grid strong{color:#23405f;font-size:12px}.period-rules-grid span{margin-top:5px;color:#7b899b;font-size:10px;line-height:1.5}
.grade-period-filter{display:flex;flex-wrap:wrap;align-items:end;gap:12px}.grade-period-filter label{display:grid;gap:6px;color:#42536a;font-size:11px;font-weight:800}.grade-period-filter select{min-width:210px;height:40px;border:1px solid #d2deea;border-radius:9px;background:#fff;padding:0 10px;outline:0;color:#2a405e}.grade-period-badge{align-self:center;margin-left:auto;padding:8px 12px;border-radius:18px;font-size:10px;font-weight:900}.grade-period-badge.abierto{background:#e7f8ef;color:#16845b}.grade-period-badge.cerrado{background:#f1f4f7;color:#718094}.grades-period-section{margin-top:20px}.grades-period-section.current{margin-top:18px}.grades-period-state{display:inline-block;margin-left:10px;padding:5px 9px;border-radius:14px;font-size:8px;font-weight:900;vertical-align:middle}.grades-period-state.abierto{background:#e6f8ef;color:#17845b}.grades-period-state.cerrado{background:#eef1f5;color:#738096}.student-grade-course-icon{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;flex:0 0 58px}.student-grade-course-icon svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.student-grade-summary-card.science .student-grade-course-icon{background:#e9f2ff;color:#2468b3;border:3px solid #d6e8ff}.student-grade-summary-card.language .student-grade-course-icon{background:#eaf8ef;color:#14946f;border:3px solid #d7f0e4}.student-grade-summary-card.math .student-grade-course-icon{background:#fff4df;color:#ee9a12;border:3px solid #ffe7b4}.student-grade-summary-card.default .student-grade-course-icon{background:#edf4fb;color:#47678f;border:3px solid #dde9f5}.grades-performance-icon svg,.grades-cap-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.grades-performance-icon{display:grid;place-items:center}.grades-cap-icon{display:grid;place-items:center}
@media(max-width:900px){.period-grid,.period-rules-grid{grid-template-columns:1fr}.period-rules-grid>div{border-right:0;border-bottom:1px solid #edf1f5}.period-rules-grid>div:last-child{border-bottom:0}.grade-period-badge{margin-left:0}.grade-period-filter select{min-width:180px}}
@media(max-width:760px){.grade-period-filter{display:grid;grid-template-columns:1fr}.grade-period-filter label select{width:100%}.period-admin-top{display:block}.period-status{display:inline-block;margin-top:10px}.student-grade-summary-grid{grid-template-columns:1fr}.student-grade-course-icon{width:50px;height:50px;flex-basis:50px}}
