/* Portal Escolar V102 · capa visual consolidada */
:root{
  --v102-bg:#eef5f0;--v102-surface:#fff;--v102-surface-soft:#f7faf8;
  --v102-ink:#13251b;--v102-muted:#617066;--v102-line:#dce8e0;
  --v102-green:#0c6b3b;--v102-green-2:#12814a;--v102-green-soft:#e5f5eb;
  --v102-gold:#e4b64c;--v102-danger:#b52f3b;--v102-info:#246a91;
  --v102-shadow:0 16px 42px rgba(19,55,35,.10);--v102-shadow-sm:0 7px 22px rgba(19,55,35,.08);
  --v102-radius:22px;--v102-radius-sm:15px;--v102-max:1480px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:116px}body{overflow-x:hidden}
body.portal-body{background:linear-gradient(180deg,#edf5f0 0,#f6f8f7 38%,#edf3ef 100%);color:var(--v102-ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.55}
body.portal-body:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 8% 5%,rgba(37,143,82,.10),transparent 28%),radial-gradient(circle at 93% 18%,rgba(228,182,76,.09),transparent 24%);z-index:-1}
img{max-width:100%}.portal-container{width:min(calc(100% - 40px),var(--v102-max));margin:0 auto;padding:28px 0 70px}
.topbar{position:sticky;top:0;z-index:1000;min-height:76px;padding:10px max(20px,calc((100vw - var(--v102-max))/2));background:rgba(9,67,38,.94)!important;border-bottom:1px solid rgba(255,255,255,.15);box-shadow:0 8px 28px rgba(5,40,23,.18);backdrop-filter:blur(16px)}
.topbar .brand{gap:12px;color:#fff!important;text-decoration:none}.topbar .brand strong{font-size:clamp(.95rem,1.5vw,1.12rem);letter-spacing:-.01em}.topbar .brand small{color:rgba(255,255,255,.72)!important}.brand-logo-small{width:46px!important;height:46px!important;background:#fff;border-radius:13px;padding:4px;box-shadow:0 5px 16px rgba(0,0,0,.16)}.brand-logo-small img{width:100%;height:100%;object-fit:contain}
.topbar nav{display:flex;align-items:center;gap:8px}.topbar .logout,.theme-toggle{min-height:42px;border-radius:12px!important;border:1px solid rgba(255,255,255,.25)!important;background:rgba(255,255,255,.10)!important;color:#fff!important;padding:9px 14px!important;font-weight:800;text-decoration:none;transition:.2s ease}.topbar .logout:hover,.theme-toggle:hover{background:#fff!important;color:#0b6037!important;transform:translateY(-1px)}
.portal-layout-block,.panel{scroll-margin-top:120px}.panel,.portal-layout-block.panel{background:rgba(255,255,255,.95);border:1px solid var(--v102-line);border-radius:var(--v102-radius);box-shadow:var(--v102-shadow-sm);padding:clamp(20px,3vw,34px);margin-bottom:24px}
.student-dashboard-hero{position:relative;overflow:hidden;border:0!important;border-radius:28px!important;padding:clamp(22px,4vw,42px)!important;background:linear-gradient(125deg,#075b33 0%,#0b7b45 60%,#1a8d54 100%)!important;box-shadow:0 24px 56px rgba(5,73,39,.22)!important;color:#fff;display:grid!important;grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);gap:28px;align-items:stretch}
.student-dashboard-hero:after{content:"";position:absolute;width:430px;height:430px;border-radius:50%;right:-160px;top:-240px;border:68px solid rgba(255,255,255,.055);pointer-events:none}
.student-dashboard-profile{display:flex;align-items:center;gap:clamp(18px,3vw,32px);min-width:0}.student-photo-shell{width:clamp(116px,14vw,170px)!important;height:clamp(116px,14vw,170px)!important;border-radius:24px!important;overflow:hidden;border:5px solid rgba(255,255,255,.9)!important;background:#d9eee2;box-shadow:0 18px 36px rgba(0,0,0,.22)}.student-photo{width:100%;height:100%;object-fit:cover}.student-dashboard-copy{min-width:0}.student-dashboard-copy h1{font-size:clamp(1.65rem,4vw,3rem)!important;line-height:1.04;margin:.25rem 0 1rem!important;max-width:780px;letter-spacing:-.035em}.eyebrow{letter-spacing:.12em;text-transform:uppercase;font-size:.76rem;font-weight:900}.student-course-row{display:flex;flex-wrap:wrap;gap:8px}.student-course-badge,.school-year-badge{border-radius:999px!important;padding:8px 13px!important;font-weight:850;background:rgba(255,255,255,.15)!important;border:1px solid rgba(255,255,255,.2)!important;color:#fff!important}
.head-teacher-line{margin-top:18px!important;padding:12px 15px!important;border-radius:16px!important;background:rgba(0,0,0,.12)!important;border:1px solid rgba(255,255,255,.12)!important;max-width:520px}.staff-avatar-v54{width:45px!important;height:45px!important;flex:0 0 45px!important}.staff-avatar-v54 img{object-fit:cover}
.student-dashboard-summary{position:relative;z-index:1;display:grid;align-content:center;gap:12px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.16);border-radius:22px;padding:16px;backdrop-filter:blur(7px)}.welcome-average-card,.average-annotations-v41{border-radius:17px!important;box-shadow:none!important}.dashboard-fullcollege{border-radius:13px!important;min-height:45px;display:flex!important;align-items:center;justify-content:center;font-weight:850}
.student-random-message-v15{border:1px solid #d8eadf!important;border-left:5px solid var(--v102-green)!important;border-radius:17px!important;background:#fff!important;box-shadow:var(--v102-shadow-sm)!important;margin:18px 0 24px!important}
.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.section-heading h2{font-size:clamp(1.35rem,2.5vw,2rem);line-height:1.15;margin:.2rem 0 .45rem;color:var(--v102-ink);letter-spacing:-.025em}.section-description{color:var(--v102-muted);max-width:760px;margin:0}.section-title-icon{display:inline-grid;place-items:center;width:40px;height:40px;margin-right:8px;border-radius:12px;background:var(--v102-green-soft);font-size:1.15rem;vertical-align:middle}
.notice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.notice-card-pro{border:1px solid var(--v102-line)!important;border-radius:17px!important;background:#fff!important;box-shadow:none!important;transition:.2s ease}.notice-card-pro:hover{transform:translateY(-3px);box-shadow:var(--v102-shadow-sm)!important}.notice-image-v91{width:100%;max-height:340px;object-fit:contain;background:#eef3f0;border-radius:13px;margin:12px 0}
.student-live-overview-v46{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:18px;margin:0 0 24px}.portal-info-cards-v12{display:grid!important;grid-template-columns:1fr!important;gap:14px!important}.portal-time-card-v12,.portal-weather-card-v12,.academic-status-card{border:1px solid var(--v102-line)!important;border-radius:20px!important;background:#fff!important;box-shadow:var(--v102-shadow-sm)!important}.portal-time-card-v12,.portal-weather-card-v12{min-height:136px;padding:20px!important}.portal-info-copy-v12 strong{font-size:clamp(1.25rem,2.3vw,1.8rem)!important}.student-class-summary-v10{margin:0!important}.academic-status-card{height:100%;padding:clamp(22px,3vw,34px)!important}.live-class-copy h2{font-size:clamp(1.45rem,3vw,2.35rem)!important;line-height:1.12}.live-class-status{display:inline-flex;padding:7px 11px;border-radius:999px;background:var(--v102-green-soft);color:var(--v102-green);font-weight:900}
.modern-portal-nav{position:sticky!important;top:86px;z-index:900;margin:0 0 24px!important;border-radius:18px!important;padding:8px!important;background:rgba(10,65,37,.96)!important;box-shadow:0 12px 34px rgba(8,57,33,.18);backdrop-filter:blur(14px)}.modern-nav-links{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px}.modern-nav-links a{min-width:0!important;min-height:54px;border-radius:12px!important;padding:8px 5px!important;color:rgba(255,255,255,.78)!important;display:flex!important;flex-direction:column;justify-content:center;gap:2px;text-align:center;text-decoration:none;font-size:.76rem}.modern-nav-links a span{font-size:1.05rem}.modern-nav-links a:hover,.modern-nav-links a.is-active{background:rgba(255,255,255,.14)!important;color:#fff!important}.modern-nav-toggle{display:none!important}
.student-tabs{display:flex;gap:8px;background:var(--v102-surface-soft);border:1px solid var(--v102-line);padding:6px;border-radius:15px;margin-bottom:20px}.student-tab{flex:1;min-height:45px;border:0;border-radius:11px;background:transparent;color:var(--v102-muted);font-weight:850}.student-tab.is-active{background:#fff;color:var(--v102-green);box-shadow:0 4px 14px rgba(20,70,42,.09)}
.student-profile-summary-v33{border-radius:18px!important;background:linear-gradient(135deg,#eef8f2,#f9fbfa)!important;border:1px solid var(--v102-line)!important}.student-profile-photo-v33{width:92px!important;height:92px!important;border-radius:18px!important;overflow:hidden;background:#e0ebe4}.student-profile-photo-v33 img{width:100%;height:100%;object-fit:cover}.student-data-grid-v33,.family-grid-v33{gap:12px!important}.student-data-grid-v33 article,.family-card-v33{border:1px solid var(--v102-line)!important;border-radius:15px!important;background:#fff!important;box-shadow:none!important}.student-data-grid-v33 article:hover,.family-card-v33:hover{border-color:#bcd9c8!important}
.material-card,.grade-card,.schedule-day,.inspection-card,.practice-card{border-radius:16px!important;border:1px solid var(--v102-line)!important;box-shadow:none!important}.material-card:hover,.grade-card:hover{box-shadow:var(--v102-shadow-sm)!important;transform:translateY(-2px)}
button,a,input,select,textarea{font:inherit}button,a{touch-action:manipulation}.btn,.primary-button,.secondary-button{border-radius:12px!important;min-height:44px;font-weight:850!important}.empty-state{border-radius:16px!important;background:var(--v102-surface-soft)!important;border:1px dashed #c7dacf!important}
.portal-footer{margin-top:28px!important;border-radius:20px!important}
/* Login */
body.login-page,body.portal-login,body:not(.portal-body).login-page{background:linear-gradient(135deg,#e8f3ec,#f7faf8)!important}.login-card,.login-shell,.login-panel{border-radius:25px!important;box-shadow:0 25px 70px rgba(13,72,42,.16)!important;border:1px solid rgba(13,107,59,.12)!important}.login-card input,.login-panel input{min-height:50px;border-radius:13px!important;border:1px solid #ceded4!important}.login-card button,.login-panel button{min-height:50px;border-radius:13px!important;background:linear-gradient(135deg,#08723f,#0d8a4d)!important}
/* Administración */
body.admin-page-v47{background:#edf3ef!important}.admin-page-v47 .portal-container{max-width:1540px}.admin-page-v47 .panel,.admin-module-page .panel{border-radius:20px!important;border:1px solid var(--v102-line)!important;box-shadow:var(--v102-shadow-sm)!important}.admin-page-v47 input,.admin-page-v47 select,.admin-page-v47 textarea{border-radius:11px!important;border:1px solid #ccddd2!important;min-height:42px}.admin-page-v47 textarea{min-height:110px}.admin-page-v47 table{border-collapse:separate;border-spacing:0;width:100%;background:#fff;border:1px solid var(--v102-line);border-radius:14px;overflow:hidden}.admin-page-v47 th{background:#eaf4ed;color:#174b2e;font-weight:900}.admin-page-v47 th,.admin-page-v47 td{padding:11px 12px;border-bottom:1px solid #e6eee9}.admin-page-v47 tr:last-child td{border-bottom:0}
@media(max-width:1100px){.student-dashboard-hero{grid-template-columns:1fr}.student-dashboard-summary{grid-template-columns:1fr 1fr}.dashboard-fullcollege{grid-column:1/-1}.modern-nav-links{grid-template-columns:repeat(4,1fr)}.student-live-overview-v46{grid-template-columns:1fr}.portal-info-cards-v12{grid-template-columns:1fr 1fr!important}.notice-grid{grid-template-columns:1fr}}
@media(max-width:760px){html{scroll-padding-top:82px}.portal-container{width:min(calc(100% - 24px),var(--v102-max));padding-top:16px}.topbar{position:sticky;min-height:64px;padding:8px 12px}.brand-logo-small{width:40px!important;height:40px!important}.topbar .brand strong{font-size:.83rem}.topbar .brand small{font-size:.68rem}.topbar .logout{padding:8px 10px!important;font-size:.78rem}.theme-toggle{display:none!important}.student-dashboard-hero{border-radius:20px!important;padding:20px!important;gap:18px}.student-dashboard-profile{align-items:flex-start}.student-photo-shell{width:88px!important;height:88px!important;border-radius:18px!important;border-width:3px!important;flex:0 0 88px}.student-dashboard-copy h1{font-size:1.45rem!important;overflow-wrap:anywhere}.student-course-badge,.school-year-badge{padding:6px 9px!important;font-size:.72rem}.head-teacher-line{margin-top:12px!important}.student-dashboard-summary{grid-template-columns:1fr;padding:11px}.dashboard-fullcollege{grid-column:auto}.panel,.portal-layout-block.panel{border-radius:18px;padding:18px;margin-bottom:16px}.section-heading{display:block}.section-heading>span{display:inline-flex;margin-top:10px}.portal-info-cards-v12{grid-template-columns:1fr!important}.portal-time-card-v12,.portal-weather-card-v12{min-height:auto}.modern-portal-nav{top:70px;margin-bottom:16px!important;padding:7px!important}.modern-nav-toggle{display:flex!important;width:100%;align-items:center;justify-content:space-between;min-height:48px;border:0;border-radius:11px;background:rgba(255,255,255,.12);color:#fff;padding:8px 12px;font-weight:850}.modern-nav-links{display:none!important;grid-template-columns:repeat(2,1fr);padding-top:6px}.modern-portal-nav.is-open .modern-nav-links{display:grid!important}.modern-nav-links a{min-height:48px;flex-direction:row!important;font-size:.78rem}.student-tabs{overflow-x:auto}.student-tab{min-width:180px}.student-profile-summary-v33{display:grid!important;grid-template-columns:70px 1fr!important}.student-profile-photo-v33{width:70px!important;height:70px!important}.student-status-pill-v33{grid-column:1/-1;width:max-content}.student-data-grid-v33,.family-grid-v33{grid-template-columns:1fr!important}.notice-card-pro{padding:15px!important}.notice-image-v91{max-height:260px}.admin-page-v47 table{display:block;overflow-x:auto;white-space:nowrap}}
@media(max-width:430px){.portal-container{width:calc(100% - 16px)}.student-dashboard-profile{display:grid;grid-template-columns:74px 1fr;gap:13px}.student-photo-shell{width:74px!important;height:74px!important;flex-basis:74px}.student-dashboard-copy h1{font-size:1.22rem!important}.head-teacher-line{grid-column:1/-1}.modern-nav-links{grid-template-columns:1fr 1fr}.portal-info-icon-v12{display:none!important}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
