:root {
  --ink: #17231f;
  --muted: #69766f;
  --canvas: #f2f4ef;
  --surface: #ffffff;
  --line: #dfe4dc;
  --forest: #173f37;
  --forest-soft: #285a50;
  --lime: #dff681;
  --shadow: 0 18px 45px rgba(36, 53, 46, 0.08);
  --type-caption: 11px;
  --type-control: 12px;
  --type-body: 14px;
  --type-panel-title: 20px;
  --type-section-title: 29px;
  --type-module-title: 30px;
}

html[data-accent="ocean"] { --forest: #294d73; --forest-soft: #3c668f; --lime: #b7ddf2; }
html[data-accent="violet"] { --forest: #514369; --forest-soft: #705d8e; --lime: #d7c5f5; }
html[data-accent="terracotta"] { --forest: #70453d; --forest-soft: #8d5b51; --lime: #f3c0a6; }
html.motion-off *, html.motion-off *::before, html.motion-off *::after { animation-duration: .01ms !important; animation-delay: 0ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
html[data-density="compact"] .module-card { min-height: 315px; }
html[data-density="compact"] .module-monogram { height: 107px; }
html[data-density="compact"] .module-home { padding-top: 25px; }
html[data-density="compact"] .grade-table td { height: 48px; }
html[data-density="compact"] .unit-row { min-height: 62px; }

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--canvas); color: var(--ink); font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: var(--type-body); line-height: 1.45; -webkit-font-smoothing: antialiased; }
button, a, input, select, textarea { color: inherit; font-family: inherit; }
button { cursor: pointer; }
a { text-decoration: none; }
svg { fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }

.workspace-shell { min-height: 100vh; }
.app-header { position: sticky; top: 0; z-index: 20; height: 82px; padding: 0 42px; border-bottom: 1px solid var(--line); background: rgba(255, 255, 255, .92); backdrop-filter: blur(16px); display: grid; grid-template-columns: minmax(195px, .7fr) minmax(540px, 1.5fr) minmax(310px, .7fr); gap: 28px; align-items: center; }
.app-brand { display: flex; align-items: center; gap: 11px; width: max-content; }
.app-brand > span:last-child { display: flex; flex-direction: column; gap: 1px; }
.app-brand strong { font-size: 17px; letter-spacing: -.03em; }
.app-brand small { color: #89948f; font-size: 11px; }
.brand-symbol { width: 39px; height: 39px; border-radius: 12px; background: var(--forest); display: grid; grid-template-columns: 6px 6px; grid-template-rows: 6px 6px; gap: 3px; place-content: center; transform: rotate(-4deg); }
.brand-symbol i { background: var(--lime); border-radius: 2px; }
.brand-symbol i:first-child { grid-row: span 2; }

.center-nav { justify-self: center; display: flex; gap: 5px; padding: 5px; border-radius: 16px; background: #edf0ea; }
.center-button { min-width: 126px; height: 49px; padding: 0 11px; border: 0; border-radius: 12px; background: transparent; display: flex; align-items: center; gap: 9px; text-align: left; transition: background .25s ease, transform .25s ease, box-shadow .25s ease; }
.center-button:hover { transform: translateY(-1px); }
.center-button.is-active { background: white; box-shadow: 0 5px 18px rgba(38, 52, 46, .08); }
.center-button > span:nth-child(2) { display: flex; flex-direction: column; gap: 2px; }
.center-button strong { font-size: 11px; }
.center-button small { color: #84908a; font-size: 10px; }
.center-dot { width: 9px; height: 9px; border-radius: 50%; box-shadow: 0 0 0 4px rgba(0,0,0,.04); }
.center-dot--robla { background: #7da949; }
.center-dot--aspasia { background: #6179dd; }
.center-dot--tunivers { background: #e0826d; }
.center-dot--electricity { background: #e4a823; }

.header-tools { justify-self: end; display: flex; align-items: center; gap: 10px; }
.sign-out-header-button { height: 42px; padding: 0 12px; border: 1px solid var(--line); border-radius: 11px; background: #f6f8f4; color: #526159; display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 850; }
.sign-out-header-button:hover { border-color: #b9c7bc; background: white; color: var(--forest); }
.sign-out-header-button i { color: #84908a; font-size: 13px; font-style: normal; }
.course-button { height: 42px; border: 1px solid var(--line); background: white; border-radius: 11px; padding: 0 11px; display: grid; grid-template-columns: auto auto auto; align-items: center; gap: 5px; }
.course-button span, .course-button small { color: #84908a; font-size: 10px; }
.course-button strong { font-size: 11px; }
.profile-button { width: 42px; height: 42px; border: 0; border-radius: 12px; background: var(--forest); color: white; font-size: 11px; font-weight: 850; }

.module-home { max-width: 1440px; margin: 0 auto; padding: 34px 44px 74px; }
.breadcrumbs { display: flex; align-items: center; gap: 8px; color: #8b9690; font-size: 11px; font-weight: 650; }
.breadcrumbs svg { width: 12px; height: 12px; }
.breadcrumbs strong { color: #56635d; }

.center-overview[hidden] { display: none; }
.center-overview { margin-top: 20px; overflow: hidden; border: 1px solid var(--line); border-radius: 23px; background: white; box-shadow: var(--shadow); animation: scheduleEnter .48s cubic-bezier(.2,.8,.2,1) both; }
.schedule-heading { min-height: 155px; padding: 27px 29px; overflow: hidden; background: linear-gradient(112deg, var(--forest), color-mix(in srgb, var(--forest) 84%, #71978c)); color: white; display: flex; justify-content: space-between; align-items: center; gap: 28px; position: relative; }
.schedule-heading::before, .schedule-heading::after { content: ""; position: absolute; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; }
.schedule-heading::before { width: 240px; height: 240px; right: 27%; top: -185px; }
.schedule-heading::after { width: 150px; height: 150px; right: 18%; bottom: -120px; }
.schedule-heading > div:first-child { min-width: 0; position: relative; z-index: 1; }
.schedule-heading > div:first-child > span { color: color-mix(in srgb, var(--lime) 72%, white); font-size: 11px; font-weight: 900; letter-spacing: .14em; }
.schedule-heading h1 { margin: 10px 0 7px; font-size: clamp(31px, 3.7vw, 48px); line-height: .98; letter-spacing: -.055em; display: flex; align-items: center; gap: 17px; }
.schedule-heading h1 > span:first-child { max-width: none; white-space: nowrap; }
.schedule-robla-logo { flex: 0 0 auto; width: 170px; height: 170px; padding: 0; overflow: visible; border: 0; border-radius: 0; background: transparent; box-shadow: none; display: grid; place-items: center; line-height: 0; transform: none; }
.schedule-robla-logo img { width: 108%; height: 108%; max-width: none; object-fit: contain; object-position: 50% 50%; display: block; filter: brightness(0) invert(1); opacity: .96; transform: translateY(-3%); }
.schedule-heading--tunivers { background: linear-gradient(112deg, #291b4b, #583579 56%, #75205f); }
.schedule-tunivers-logo { flex: 0 0 auto; width: 270px; height: 104px; padding: 8px 14px; overflow: hidden; border: 1px solid rgba(255,255,255,.6); border-radius: 18px; background: rgba(255,255,255,.96); box-shadow: 0 14px 34px rgba(23,15,40,.22); display: grid; place-items: center; line-height: 0; }
.schedule-tunivers-logo img { width: 100%; height: 100%; object-fit: contain; object-position: center; display: block; }
.schedule-heading--aspasia { background: linear-gradient(112deg, #222553, #454881); flex-wrap: wrap; }
.schedule-heading--aspasia h1 { flex-wrap: wrap; }
.schedule-aspasia-logo { display: block; flex-shrink: 0; width: min(310px, 100%); padding: 10px; border-radius: 12px; background: #fff; line-height: 0; }
.schedule-aspasia-logo img { display: block; width: 100%; height: auto; object-fit: contain; }
.schedule-heading--aspasia .schedule-summary { margin-inline-start: auto; }
.schedule-heading--aspasia .schedule-summary span { font-size: .875rem; color: rgba(255,255,255,.85); }
.module-group-options { display: flex; flex-wrap: wrap; gap: 12px; }
.module-group-options button { flex: 1; min-height: 48px; font-size: 1rem; }
.schedule-heading p { margin: 0; color: rgba(255,255,255,.72); font-size: 12px; line-height: 1.45; }
.schedule-summary { flex: 0 0 auto; min-width: 276px; min-height: 82px; padding: 15px 18px; border: 1px solid rgba(255,255,255,.13); border-radius: 18px; background: rgba(255,255,255,.08); backdrop-filter: blur(8px); display: grid; grid-template-columns: auto 1fr 1px auto 1fr; gap: 10px; align-items: center; position: relative; z-index: 1; }
.schedule-summary strong { font-size: 26px; letter-spacing: -.05em; }
.schedule-summary span { color: rgba(255,255,255,.72); font-size: 10px; line-height: 1.35; }
.schedule-summary > i { width: 1px; height: 36px; background: rgba(255,255,255,.16); }
.schedule-legend { min-height: 58px; padding: 0 20px; border-bottom: 1px solid var(--line); background: #fafbf8; display: flex; align-items: center; gap: 8px; }
.schedule-legend > span { margin-right: 5px; color: #7c8882; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.schedule-legend-chip { min-width: 88px; height: 31px; padding: 0 11px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; color: var(--group-ink); background: var(--group-bg); font-size: 11px; font-style: normal; font-weight: 900; }
.schedule-mobile-days { display: none; }
.weekly-schedule-wrap { overflow-x: auto; scrollbar-color: #cad1cb transparent; }
.weekly-schedule { min-width: 960px; padding: 12px; background: var(--line); display: grid; grid-template-columns: 86px repeat(5, minmax(150px, 1fr)); gap: 1px; }
.schedule-corner, .schedule-day { min-height: 47px; background: #f5f7f3; display: flex; align-items: center; }
.schedule-corner { padding-left: 13px; color: #89948e; font-size: 10px; font-weight: 900; letter-spacing: .1em; }
.schedule-corner, .schedule-time, .schedule-break-time { position: sticky; left: 0; z-index: 3; }
.schedule-day { padding: 0 14px; justify-content: space-between; }
.schedule-day strong { font-size: 12px; }
.schedule-day small { padding: 4px 6px; border-radius: 999px; background: var(--lime); color: var(--forest); font-size: 9px; font-weight: 900; }
.schedule-day.is-today { color: var(--forest); background: color-mix(in srgb, var(--lime) 28%, white); box-shadow: inset 0 3px 0 var(--forest); }
.schedule-time { min-height: 82px; padding: 0 13px; background: #f8f9f6; display: flex; flex-direction: column; justify-content: center; gap: 3px; }
.schedule-time strong { font-size: 12px; }
.schedule-time small { color: #7e8a84; font-size: 10px; }
.schedule-class, .schedule-free, .schedule-duty { min-height: 82px; border: 0; background: white; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; position: relative; }
.schedule-class { padding: 10px 13px; color: var(--group-ink); background: var(--group-bg); text-align: left; box-shadow: inset 4px 0 0 var(--group-accent); transition: transform .22s ease, filter .22s ease, box-shadow .22s ease; }
.schedule-class:hover { z-index: 2; transform: scale(1.025); filter: saturate(1.08); box-shadow: inset 4px 0 0 var(--group-accent), 0 9px 22px rgba(35,52,45,.13); }
.schedule-class strong { font-size: 14px; letter-spacing: -.025em; }
.schedule-class span { margin-top: 3px; font-size: 11px; font-weight: 750; }
.schedule-class small { position: absolute; right: 9px; bottom: 8px; color: color-mix(in srgb, var(--group-ink) 68%, transparent); font-size: 10px; font-weight: 800; }
.schedule-free { align-items: center; color: #c4cbc7; }
.schedule-free i { font-size: 12px; font-style: normal; }
.schedule-duty { padding: 10px 13px; color: #56615c; background: repeating-linear-gradient(-45deg, #eef1ed 0, #eef1ed 8px, #e7ebe6 8px, #e7ebe6 16px); box-shadow: inset 4px 0 0 #8b9690; }
.schedule-duty strong { font-size: 14px; letter-spacing: -.02em; }
.schedule-duty span { margin-top: 3px; font-size: 11px; font-weight: 750; }
.schedule-duty small { position: absolute; right: 9px; bottom: 8px; color: #727d77; font-size: 10px; font-weight: 800; }
.schedule-class.is-today, .schedule-free.is-today, .schedule-duty.is-today { outline: 2px solid color-mix(in srgb, var(--forest) 22%, transparent); outline-offset: -2px; }
.schedule-class--plar { --group-bg: #d7ead4; --group-ink: #3f623b; --group-accent: #6c9864; }
.schedule-class--srnet { --group-bg: #d9e2f5; --group-ink: #3f5786; --group-accent: #6782b7; }
.schedule-class--iaweb { --group-bg: #e9ddf3; --group-ink: #674979; --group-accent: #9670aa; }
.schedule-class--aweb { --group-bg: #f2ddd3; --group-ink: #724735; --group-accent: #b9795d; }
.schedule-class--opt-prog { --group-bg: #eee5b9; --group-ink: #6e5f20; --group-accent: #b29b42; }
.schedule-break-time { min-height: 37px; padding-left: 13px; background: #f1f3ef; color: #7e8983; display: flex; align-items: center; font-size: 10px; font-weight: 750; }
.schedule-break { grid-column: span 5; min-height: 33px; padding: 0 13px; background: #f1f3ef; color: #7d8983; display: grid; grid-template-columns: 1fr auto auto 1fr; gap: 8px; align-items: center; }
.schedule-break > span { height: 1px; background: #d9ded8; }
.schedule-break strong { font-size: 11px; }
.schedule-break small { color: #7f8a84; font-size: 10px; }
.section-label { color: #7b8982; font-size: 11px; font-weight: 850; letter-spacing: .14em; }

.modules-section { padding-top: 36px; }
.section-heading { display: flex; justify-content: space-between; align-items: end; gap: 24px; }
.section-heading h2 { margin: 6px 0 0; font-size: 28px; letter-spacing: -.045em; }
.add-module { height: 40px; border: 1px solid var(--line); border-radius: 11px; background: white; padding: 0 14px; font-size: 12px; font-weight: 800; }
.add-module span { margin-right: 5px; color: #73817a; }

.filter-row { margin: 23px 0 22px; display: flex; justify-content: space-between; align-items: center; gap: 20px; }
.filter-control { display: flex; gap: 5px; padding: 5px; border: 1px solid var(--line); border-radius: 14px; background: #e9ece6; }
.filter-chip { height: 40px; padding: 0 14px; border: 0; border-radius: 10px; background: transparent; color: #69766f; font-size: 12px; font-weight: 800; display: flex; align-items: center; gap: 8px; transition: color .2s ease, background .3s cubic-bezier(.2,.8,.2,1), transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease; }
.filter-chip:hover { color: var(--ink); }
.filter-chip.is-active { background: var(--forest); color: white; transform: translateY(-1px); box-shadow: 0 7px 17px rgba(23, 63, 55, .18); animation: filterPop .32s cubic-bezier(.2,.8,.2,1); }
.filter-chip span { min-width: 21px; height: 21px; padding: 0 5px; border-radius: 999px; background: rgba(0,0,0,.06); display: grid; place-items: center; font-size: 10px; }
.filter-chip.is-active span { background: rgba(255,255,255,.16); }
.filter-result { color: #748079; font-size: 11px; font-weight: 700; }

.module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 17px; }
.module-card { --card-order: 0; position: relative; min-height: 360px; padding: 19px; overflow: hidden; border: 1px solid rgba(29,47,40,.1); border-radius: 22px; background: var(--card-background); color: var(--ink); display: flex; flex-direction: column; text-align: left; box-shadow: 0 1px 0 rgba(255,255,255,.7) inset; animation: cardEnter .52s cubic-bezier(.2,.75,.2,1) both; animation-delay: calc(var(--card-order) * 55ms); transition: transform .35s cubic-bezier(.2,.75,.2,1), box-shadow .35s ease; }
.module-card:hover { transform: translateY(-7px) rotate(-.25deg); box-shadow: 0 22px 42px rgba(31, 49, 42, .13); }
.module-card--mint { --card-background: #d8ebd6; --accent: #63895c; }
.module-card--blue { --card-background: #d9e2f5; --accent: #5875ad; }
.module-card--violet { --card-background: #e5ddf1; --accent: #8069a2; }
.module-card--peach { --card-background: #f2ded5; --accent: #a46750; }
.module-card--yellow { --card-background: #eee5bd; --accent: #98853a; }
.card-topline { min-height: 25px; display: flex; justify-content: space-between; align-items: center; gap: 10px; position: relative; z-index: 2; }
.cycle-pill, .short-pill { height: 28px; border-radius: 999px; display: inline-flex; align-items: center; font-size: 10px; font-weight: 850; letter-spacing: .04em; }
.cycle-pill { padding: 0 9px; background: rgba(255,255,255,.58); }
.short-pill { color: #6d551d; }
.short-pill i { width: 6px; height: 6px; margin-right: 6px; border-radius: 50%; background: #d49337; box-shadow: 0 0 0 3px rgba(212,147,55,.13); }
.module-monogram { height: 137px; margin-top: 12px; display: grid; place-items: center; position: relative; }
.module-monogram::before, .module-monogram::after { content: ""; position: absolute; border: 1px solid rgba(20,48,40,.13); border-radius: 50%; }
.module-monogram::before { width: 120px; height: 120px; }
.module-monogram::after { width: 89px; height: 89px; }
.module-monogram span { position: relative; z-index: 2; font-size: clamp(24px, 3vw, 37px); font-weight: 850; letter-spacing: -.07em; }
.module-monogram i { position: absolute; z-index: 1; width: 58px; height: 58px; border-radius: 17px; background: rgba(255,255,255,.45); transform: rotate(12deg); }
.module-card-copy { min-height: 89px; position: relative; z-index: 2; }
.module-card-copy small { color: color-mix(in srgb, var(--accent) 80%, #27362f); font-size: 10px; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.module-card-copy h3 { max-width: 330px; margin: 8px 0 0; font-size: 19px; line-height: 1.2; letter-spacing: -.035em; }
.card-meta { margin-top: auto; padding-top: 14px; border-top: 1px solid rgba(33,50,43,.12); display: grid; grid-template-columns: 1fr 1fr auto; gap: 12px; align-items: center; }
.card-meta > div { display: flex; flex-direction: column; gap: 2px; }
.card-meta strong { font-size: 13px; }
.card-meta span { color: rgba(35,52,45,.66); font-size: 11px; }
.open-module { justify-self: end; width: 35px; height: 35px; border-radius: 50%; background: var(--forest); color: white !important; display: grid; place-items: center; transition: transform .3s ease; }
.open-module svg { width: 14px; height: 14px; }
.module-card:hover .open-module { transform: translateX(3px); }

.quick-strip { margin-top: 32px; border: 1px solid var(--line); border-radius: 18px; background: white; padding: 8px; display: grid; grid-template-columns: .75fr repeat(3, 1fr); align-items: stretch; }
.quick-strip-title { align-self: center; padding: 0 20px; color: #748079; font-size: 10px; font-weight: 850; text-transform: uppercase; letter-spacing: .1em; }
.quick-strip button { min-height: 65px; padding: 0 16px; border: 0; border-left: 1px solid var(--line); background: transparent; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; text-align: left; }
.quick-strip button > svg:first-child { width: 19px; height: 19px; color: var(--forest-soft); }
.quick-strip button > svg:last-child { width: 12px; height: 12px; color: #9ba49f; }
.quick-strip button span { display: flex; flex-direction: column; gap: 3px; }
.quick-strip button strong { font-size: 12px; }
.quick-strip button small { color: #748079; font-size: 11px; }
/* Portada pública y acceso docente */
body.public-mode .app-header { grid-template-columns: minmax(210px, .8fr) minmax(340px, 1.4fr) minmax(210px, .8fr); }
body.public-mode .app-brand strong { font-size: 19px; }
body.public-mode .app-brand small { font-size: 12px; }
body.public-mode .center-nav { justify-self: center; padding: 0; border-radius: 0; background: transparent; gap: 27px; }
body.public-mode .center-nav a { padding: 8px 0; color: #596a61; font-size: 14px; font-weight: 750; border-bottom: 2px solid transparent; transition: color .2s ease, border-color .2s ease; }
body.public-mode .center-nav a:hover { color: var(--forest); border-bottom-color: var(--lime); }
.teacher-access-button { min-height: 44px; padding: 0 17px; border: 0; border-radius: 12px; background: #176253; color: white; display: flex; align-items: center; gap: 12px; font-size: 14px; font-weight: 850; box-shadow: 0 8px 20px rgba(23,98,83,.2); }
.teacher-access-button svg { width: 14px; height: 14px; }
.public-catalog-page, .public-module-page { max-width: 1440px; margin: 0 auto; padding: 28px 44px 78px; }
.public-catalog { padding-top: 10px; }
.public-catalog > header { display: flex; justify-content: space-between; align-items: end; gap: 30px; }
.public-catalog > header h1 { margin: 0; color: #173f37; font-size: clamp(42px, 5vw, 64px); letter-spacing: -.06em; }
.public-catalog > header > div > span, .public-module-information > header > span { color: #7d8983; font-size: 11px; font-weight: 900; letter-spacing: .15em; }
.public-catalog > header h2, .public-module-information > header h2 { margin: 8px 0 7px; font-size: 39px; letter-spacing: -.052em; }
.public-catalog > header p, .public-module-information > header p { margin: 0; color: #6f7c75; font-size: 13px; line-height: 1.5; }
.public-catalog > header > strong { color: #7b8781; font-size: 12px; }
.public-filter { margin: 27px 0 25px; padding: 6px; border: 1px solid #d8e4d3; border-radius: 16px; background: #e9f1e4; display: flex; gap: 5px; width: max-content; max-width: 100%; overflow-x: auto; }
.public-filter button { flex: 0 0 auto; min-height: 43px; padding: 0 16px; border: 0; border-radius: 11px; background: transparent; color: #566b60; display: flex; align-items: center; gap: 9px; font-size: 14px; font-weight: 850; transition: background .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease; }
.public-filter button.is-active { background: #176253; color: white; transform: translateY(-1px); box-shadow: 0 8px 18px rgba(23,98,83,.21); }
.public-module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.public-module-card { --public-card: #d9efcf; --public-accent: #4a8b4f; min-height: 330px; padding: 20px; overflow: hidden; border: 1px solid rgba(31,91,61,.14); border-radius: 22px; background: var(--public-card); color: var(--ink); display: flex; flex-direction: column; text-align: left; position: relative; box-shadow: 0 1px 0 rgba(255,255,255,.78) inset; animation: cardEnter .45s cubic-bezier(.2,.75,.2,1) both; transition: transform .3s ease, box-shadow .3s ease; }
.public-module-card::before { content: ""; position: absolute; inset: 0; z-index: 0; background-image: var(--module-art); background-repeat: no-repeat; background-size: cover; background-position: center; opacity: .44; filter: saturate(1.08) contrast(.96); }
.public-module-card::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, color-mix(in srgb, var(--public-card) 28%, transparent) 0%, color-mix(in srgb, var(--public-card) 58%, transparent) 43%, var(--public-card) 72%); }
.public-module-card > * { position: relative; z-index: 2; }
.public-art--network { --module-art: url("/assets/module-art/network.png"); }
.public-art--servers { --module-art: url("/assets/module-art/servers.png"); }
.public-art--security { --module-art: url("/assets/module-art/security.png"); }
.public-art--programming { --module-art: url("/assets/module-art/programming.png"); }
.public-art--web { --module-art: url("/assets/module-art/web.png"); }
.public-art--markup { --module-art: url("/assets/module-art/markup.png"); }
.public-art--database { --module-art: url("/assets/module-art/database.png"); }
.public-art--cloud { --module-art: url("/assets/module-art/cloud.png"); }
.public-art--mobile { --module-art: url("/assets/module-art/mobile.png"); }
.public-art--hardware { --module-art: url("/assets/module-art/hardware.png"); }
.public-art--business { --module-art: url("/assets/module-art/business.png"); }
.public-art--sustainability { --module-art: url("/assets/module-art/sustainability.png"); }
.public-module-card:hover { transform: translateY(-5px); box-shadow: 0 20px 42px rgba(31,49,42,.12); }
.public-module-card.is-unavailable { opacity: .48; filter: saturate(.18); cursor: not-allowed; }
.public-module-card.is-unavailable:hover { transform: none; box-shadow: 0 1px 0 rgba(255,255,255,.7) inset; }
.public-module-card--mint { --public-card: #ccefc6; --public-accent: #43854a; }
.public-module-card--blue { --public-card: #cfe4ff; --public-accent: #356da8; }
.public-module-card--violet { --public-card: #e5d4fa; --public-accent: #7353a1; }
.public-module-card--peach { --public-card: #ffd7c6; --public-accent: #a95337; }
.public-module-card--yellow { --public-card: #ffecaa; --public-accent: #8b6c0e; }
.public-module-card > header { min-height: 29px; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.public-module-card > header em { min-height: 29px; padding: 0 10px; border-radius: 999px; background: rgba(255,255,255,.63); display: inline-flex; align-items: center; font-size: 12px; font-style: normal; font-weight: 900; }
.public-module-card > header em { color: color-mix(in srgb, var(--public-accent) 85%, #27362f); }
.public-cycle-tags { display: flex; flex-wrap: wrap; gap: 5px; }
.public-cycle-tags span { min-height: 29px; padding: 0 10px; border-radius: 999px; background: rgba(255,255,255,.65); display: inline-flex; align-items: center; font-size: 12px; font-weight: 900; }
.public-cycle-tags--hero { margin-bottom: 11px; }
.public-cycle-tags--hero span { min-height: 30px; padding: 0 11px; background: rgba(255,255,255,.62); color: color-mix(in srgb, var(--public-accent) 85%, #27362f); font-size: 11px; }
.public-module-symbol { height: 108px; display: grid; place-items: center; position: relative; }
.public-module-symbol::before { content: ""; position: absolute; width: 92px; height: 92px; border: 1px solid rgba(30,50,42,.13); border-radius: 50%; }
.public-module-symbol strong { z-index: 1; font-size: clamp(30px, 3.2vw, 44px); letter-spacing: -.07em; }
.public-module-symbol i { position: absolute; width: 48px; height: 48px; border-radius: 15px; background: rgba(255,255,255,.45); transform: rotate(12deg); }
.public-module-copy { min-height: 90px; }
.public-module-copy h3 { margin: 0; font-size: 23px; line-height: 1.16; letter-spacing: -.04em; }
.public-module-copy p { margin: 9px 0 0; color: color-mix(in srgb, var(--public-accent) 68%, #364a40); font-size: 13px; font-weight: 780; }
.public-module-card > footer { margin-top: auto; padding-top: 15px; border-top: 1px solid rgba(32,50,43,.12); display: grid; grid-template-columns: auto auto 1fr; gap: 13px; align-items: center; }
.public-module-card > footer > span { display: flex; align-items: center; gap: 6px; color: #485c52; font-size: 12px; font-weight: 800; }
.public-module-card > footer > span i { width: 7px; height: 7px; border-radius: 50%; background: var(--public-accent); }
.public-module-card > footer > span.is-ready { color: var(--forest); }
.public-module-card > footer > span.is-pending i { background: #858f89; }
.public-module-card > footer b { justify-self: end; width: 34px; height: 34px; border-radius: 50%; background: var(--forest); color: white; display: grid; place-items: center; }
.public-module-card.is-unavailable > footer b { background: rgba(87,99,93,.15); color: #68746e; }
.public-module-card > footer b svg { width: 14px; height: 14px; }
.public-teacher-note button { min-height: 43px; padding: 0 15px; border: 0; border-radius: 11px; background: var(--forest); color: white; display: flex; align-items: center; gap: 12px; font-size: 11px; font-weight: 850; }
.public-teacher-note button svg { width: 14px; height: 14px; }
.public-footer { min-height: 82px; margin-top: 24px; padding: 0 5px; border-top: 1px solid var(--line); display: grid; grid-template-columns: 1fr auto auto; gap: 25px; align-items: center; color: #687871; font-size: 13px; }
.public-footer p { margin: 0; }
.public-footer button { border: 0; background: transparent; color: var(--forest); font-size: 13px; font-weight: 850; }
.public-breadcrumb { display: flex; align-items: center; gap: 9px; color: #7f8b85; font-size: 11px; }
.public-breadcrumb button { padding: 0; border: 0; background: transparent; color: var(--forest-soft); font-size: 11px; font-weight: 850; }
.public-breadcrumb svg { width: 13px; height: 13px; }
.public-module-hero { --public-card: #d8ebd6; min-height: 245px; margin-top: 20px; padding: 34px; overflow: hidden; border: 1px solid rgba(30,49,41,.1); border-radius: 25px; background: var(--public-card); display: grid; grid-template-columns: 155px minmax(0, 1fr); gap: 32px; align-items: center; position: relative; }
.public-module-hero-code { width: 155px; height: 155px; border-radius: 34px; background: rgba(255,255,255,.52); display: grid; place-items: center; font-size: 28px; font-weight: 900; letter-spacing: -.065em; transform: rotate(-2deg); }
.public-module-hero small { color: color-mix(in srgb, var(--public-accent) 80%, #32443c); font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.public-module-hero h1 { max-width: 920px; margin: 12px 0 9px; font-size: clamp(36px, 4vw, 55px); line-height: .98; letter-spacing: -.058em; }
.public-module-hero p { margin: 0; color: #617169; font-size: 13px; font-weight: 750; }
.public-module-information { padding-top: 42px; }
.public-module-information > div { margin-top: 23px; display: grid; grid-template-columns: 1fr 1fr; gap: 17px; }
.public-module-information article { min-height: 210px; padding: 25px; border: 1px solid var(--line); border-radius: 20px; background: white; display: grid; grid-template-columns: auto 1fr; gap: 19px; align-items: start; }
.public-module-information article > span { width: 48px; height: 48px; border-radius: 14px; background: #e8eee5; color: var(--forest); display: grid; place-items: center; font-size: 12px; font-weight: 900; }
.public-module-information article small { color: #7f8b85; font-size: 10px; font-weight: 900; letter-spacing: .14em; }
.public-module-information article h3 { margin: 7px 0 9px; font-size: 21px; letter-spacing: -.035em; }
.public-module-information article p { margin: 0; color: #6f7c75; font-size: 12px; line-height: 1.55; }
.public-module-information article em { width: max-content; margin-top: 20px; padding: 7px 9px; border-radius: 999px; background: #edf1eb; color: #68766e; display: block; font-size: 10px; font-style: normal; font-weight: 850; }
.public-topic-section { padding-top: 42px; }
.public-topic-section > header > span { color: #7d8983; font-size: 11px; font-weight: 900; letter-spacing: .15em; }
.public-topic-section > header h2 { margin: 8px 0 7px; font-size: 39px; letter-spacing: -.052em; }
.public-topic-section > header p { max-width: 760px; margin: 0; color: #6f7c75; font-size: 13px; line-height: 1.5; }
.public-topic-grid { margin-top: 23px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.public-topic-card { min-height: 190px; padding: 22px; border: 1px solid var(--line); border-radius: 19px; background: white; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 17px; align-items: start; box-shadow: 0 8px 25px rgba(31,49,42,.035); }
.public-topic-card > span { width: 52px; height: 52px; border-radius: 14px; background: var(--forest); color: var(--lime); display: grid; place-items: center; font-size: 17px; font-weight: 900; }
.public-topic-card > div { min-width: 0; }
.public-topic-card h3 { margin: 1px 0 9px; font-size: 21px; line-height: 1.15; letter-spacing: -.035em; }
.public-topic-card p { margin: 0; color: #65736c; font-size: 12px; line-height: 1.55; }
.public-topic-card footer { margin-top: 18px; padding-top: 13px; border-top: 1px solid #edf0ec; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.public-topic-card footer strong { min-height: 30px; padding: 0 9px; border-radius: 9px; background: #e7eee3; color: var(--forest); display: inline-flex; align-items: center; font-size: 11px; }
.public-topic-card footer small { color: #7c8982; font-size: 10px; font-weight: 750; }
.public-topic-empty { min-height: 225px; margin-top: 23px; padding: 29px; border: 1px dashed #cbd4cc; border-radius: 21px; background: #f7f9f5; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 20px; align-items: center; }
.public-topic-empty-mark { width: 70px; height: 70px; border-radius: 20px; background: var(--forest); color: var(--lime); display: grid; place-items: center; font-size: 23px; font-weight: 900; transform: rotate(-3deg); }
.public-topic-empty > div:nth-child(2) small { color: #7c8982; font-size: 10px; font-weight: 900; letter-spacing: .14em; }
.public-topic-empty h3 { margin: 7px 0 6px; font-size: 23px; letter-spacing: -.04em; }
.public-topic-empty p { margin: 0; color: #6f7c75; font-size: 12px; line-height: 1.5; }
.public-topic-path { grid-column: 1 / -1; padding-top: 19px; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
.public-topic-path span { min-height: 34px; padding: 0 12px; border-radius: 999px; background: white; color: var(--forest); display: inline-flex; align-items: center; font-size: 11px; font-weight: 850; }
.public-topic-path i { color: #91a098; font-size: 13px; font-style: normal; }
.public-teacher-note { min-height: 120px; margin-top: 22px; padding: 22px 25px; border-radius: 20px; background: var(--forest); color: white; display: flex; justify-content: space-between; align-items: center; gap: 25px; }
.public-teacher-note > div > span { color: var(--lime); font-size: 10px; font-weight: 900; letter-spacing: .14em; }
.public-teacher-note strong { display: block; margin: 6px 0 5px; font-size: 18px; }
.public-teacher-note p { margin: 0; color: rgba(255,255,255,.68); font-size: 12px; }
.public-teacher-note button { flex: 0 0 auto; background: white; color: var(--forest); }
.access-modal-backdrop { position: fixed; z-index: 120; inset: 0; padding: 22px; background: rgba(14,28,24,.58); backdrop-filter: blur(10px); display: grid; place-items: center; animation: calendarPeriodIn .2s ease both; }
.access-modal { width: min(480px, 100%); max-height: calc(100vh - 44px); overflow-y: auto; border: 1px solid rgba(255,255,255,.22); border-radius: 25px; background: white; box-shadow: 0 30px 80px rgba(9,23,18,.28); }
.access-modal > header { min-height: 74px; padding: 0 22px; background: var(--forest); display: flex; justify-content: space-between; align-items: center; }
.access-brand { width: 42px; height: 42px; border-radius: 13px; background: rgba(255,255,255,.1); display: grid; grid-template-columns: 7px 7px; grid-template-rows: 7px 7px; gap: 4px; place-content: center; transform: rotate(-3deg); }
.access-brand i { border-radius: 2px; background: var(--lime); }
.access-brand i:first-child { grid-row: span 2; }
.access-modal > header button { width: 36px; height: 36px; border: 0; border-radius: 10px; background: rgba(255,255,255,.1); color: white; font-size: 22px; }
.access-modal-copy { padding: 27px 29px 17px; }
.access-modal-copy small { color: #7e8b84; font-size: 10px; font-weight: 900; letter-spacing: .15em; }
.access-modal-copy h2 { margin: 8px 0 9px; font-size: 31px; letter-spacing: -.05em; }
.access-modal-copy p { margin: 0; color: #6e7a74; font-size: 12px; line-height: 1.55; }
.access-form { padding: 0 29px 25px; display: grid; gap: 14px; }
.access-server-setup { margin: 0 29px 25px; padding: 20px; border: 1px solid #dbe4d9; border-radius: 16px; background: #f5f8f1; display: grid; gap: 14px; }
.access-server-setup > span { font-size: 25px; }
.access-server-setup p { margin: 0; color: #53645e; font-size: 13px; line-height: 1.55; }
.access-server-setup .access-submit { padding: 0 15px; text-decoration: none; }
.access-form label > span { display: block; margin-bottom: 7px; color: #59675f; font-size: 11px; font-weight: 850; }
.access-form input { width: 100%; height: 47px; padding: 0 13px; border: 1px solid #d7ded7; border-radius: 11px; outline: 0; background: #fafbf9; color: var(--ink); font-size: 13px; }
.access-form input:focus { border-color: var(--forest-soft); box-shadow: 0 0 0 3px color-mix(in srgb, var(--lime) 30%, transparent); }
.access-error { margin: -2px 0 0; padding: 10px 11px; border-radius: 9px; background: #f9e3e0; color: #983f39; font-size: 11px; font-weight: 750; }
.access-submit { min-height: 48px; margin-top: 3px; padding: 0 15px; border: 0; border-radius: 11px; background: var(--forest); color: white; display: flex; justify-content: space-between; align-items: center; font-size: 12px; font-weight: 850; }
.access-submit:disabled { opacity: .55; cursor: wait; }
.access-submit span { color: var(--lime); font-size: 18px; }
.access-modal > footer { min-height: 73px; padding: 15px 24px; border-top: 1px solid var(--line); background: #f7f9f5; display: flex; align-items: center; gap: 11px; }
.access-modal > footer > span { flex: 0 0 auto; width: 31px; height: 31px; border-radius: 9px; background: #e7eee3; display: grid; place-items: center; font-size: 12px; }
.access-modal > footer p { margin: 0; color: #738078; font-size: 10px; line-height: 1.45; }

/* Espacio interior de cada módulo */
.module-workspace { max-width: 1440px; margin: 0 auto; padding: 27px 44px 76px; }
.workspace-breadcrumb { display: flex; align-items: center; gap: 8px; color: #8a958f; font-size: var(--type-caption); }
.workspace-breadcrumb > svg { width: 11px; height: 11px; }
.workspace-breadcrumb strong { color: #4e5c55; }
.back-to-modules { border: 0; background: transparent; padding: 0; color: var(--forest-soft); font-size: var(--type-caption); font-weight: 800; }
.back-to-modules span { margin-right: 3px; }
.module-workspace-hero { min-height: 157px; margin-top: 19px; padding: 22px 24px; border: 1px solid rgba(30,49,41,.1); border-radius: 21px; background: var(--card-background); display: grid; grid-template-columns: 112px minmax(0, 1fr) auto; gap: 24px; align-items: center; overflow: hidden; }
.workspace-monogram { width: 112px; height: 112px; border-radius: 20px; background: rgba(255,255,255,.48); display: grid; place-items: center; position: relative; overflow: hidden; }
.workspace-monogram::before { content: ""; position: absolute; width: 92px; height: 92px; border: 1px solid rgba(20,48,40,.13); border-radius: 50%; }
.workspace-monogram span { z-index: 2; font-size: 24px; font-weight: 900; letter-spacing: -.07em; }
.workspace-monogram i { position: absolute; width: 46px; height: 46px; border-radius: 14px; background: rgba(255,255,255,.48); transform: rotate(12deg); }
.workspace-title { min-width: 0; }
.workspace-labels { display: flex; align-items: center; gap: 8px; }
.workspace-labels > span, .workspace-labels em { min-height: 27px; padding: 0 9px; border-radius: 999px; display: inline-flex; align-items: center; background: rgba(255,255,255,.55); font-size: var(--type-caption); font-weight: 850; font-style: normal; }
.workspace-labels em { color: #735a20; background: rgba(255,245,209,.7); }
.workspace-labels em i { width: 5px; height: 5px; margin-right: 5px; border-radius: 50%; background: #d49337; }
.workspace-title h1 { max-width: 850px; margin: 10px 0 5px; font-size: var(--type-module-title); line-height: 1; letter-spacing: -.052em; }
.workspace-title p { margin: 0; color: rgba(35,52,45,.72); font-size: var(--type-body); }
.workspace-facts { padding-left: 25px; border-left: 1px solid rgba(35,52,45,.13); display: grid; grid-template-columns: repeat(2, minmax(90px, 1fr)); gap: 22px; align-items: center; }
.workspace-facts div { display: flex; flex-direction: column; gap: 4px; }
.workspace-facts span { color: rgba(35,52,45,.58); font-size: var(--type-caption); }
.workspace-facts strong { font-size: 16px; letter-spacing: -.04em; }
.workspace-facts button { width: 35px; height: 35px; border: 0; border-radius: 10px; background: rgba(255,255,255,.6); font-size: var(--type-control); }

.module-tabs { min-height: 68px; height: auto; margin-top: 16px; padding: 0 8px; border: 1px solid var(--line); border-radius: 17px; background: white; display: flex; align-items: stretch; gap: 3px; }
.module-tabs::-webkit-scrollbar { display: none; }
.module-tabs button { min-width: 145px; padding: 0 15px; border: 0; border-bottom: 3px solid transparent; background: transparent; color: #7b8781; font-size: var(--type-control); font-weight: 780; position: relative; }
.module-tabs button.is-active { color: var(--forest); border-bottom-color: var(--forest); }
.important-tab { margin-left: 7px; padding: 4px 6px; border-radius: 999px; background: #e8f4b4; color: #4e661f; font-size: 10px; text-transform: uppercase; }
.workspace-content { padding-top: 31px; }
.workspace-section-heading { min-height: 71px; display: flex; justify-content: space-between; align-items: end; gap: 24px; }
.workspace-section-heading > div:first-child > span, .panel-toolbar > div > span, .evidence-heading > div > span, .timeline-head > div > span, .curriculum-heading > div > span, .recent-heading > div > span { color: #7f8b85; font-size: 10px; font-weight: 900; letter-spacing: .15em; }
.workspace-section-heading h2 { margin: 7px 0 5px; font-size: var(--type-section-title); line-height: 1; letter-spacing: -.045em; }
.workspace-section-heading p { margin: 0; color: var(--muted); font-size: var(--type-body); }
.heading-actions { display: flex; align-items: center; gap: 8px; }
.demo-label { min-height: 34px; padding: 0 9px; border-radius: 999px; background: #e9ece6; color: #758079; display: inline-flex; align-items: center; font-size: var(--type-caption); font-weight: 800; }
.primary-action, .secondary-action { min-height: 42px; border-radius: 10px; padding: 0 13px; font-size: var(--type-control); font-weight: 850; }
.primary-action { border: 1px solid var(--forest); background: var(--forest); color: white; }
.secondary-action { border: 1px solid var(--line); background: white; }

.trimester-switcher { min-height: 52px; margin-top: 24px; padding: 5px; border: 1px solid var(--line); border-radius: 14px; background: #e9ece6; display: flex; gap: 4px; align-items: center; }
.trimester-switcher button { min-height: 43px; padding: 0 16px; border: 0; border-radius: 10px; background: transparent; color: #78847e; font-size: var(--type-control); font-weight: 780; transition: .25s ease; }
.trimester-switcher button span { font-weight: 900; }
.trimester-switcher button.is-active { background: white; color: var(--forest); box-shadow: 0 5px 16px rgba(35,52,45,.08); }
.company-period { margin-left: auto; padding: 0 13px; display: flex; align-items: center; gap: 7px; color: #6d775f; font-size: var(--type-caption); font-weight: 750; }
.company-period i { width: 7px; height: 7px; border-radius: 50%; background: #d7a74c; box-shadow: 0 0 0 4px rgba(215,167,76,.12); }
.grade-metrics { margin: 15px 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 11px; }
.grade-metrics article { min-height: 93px; padding: 16px; border: 1px solid var(--line); border-radius: 15px; background: white; display: flex; align-items: center; gap: 12px; }
.metric-symbol { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; font-size: var(--type-caption); font-weight: 900; }
.metric-symbol--green { background: #e4f1db; color: #527447; }
.metric-symbol--blue { background: #e1e8f8; color: #526fa6; }
.metric-symbol--amber { background: #faebca; color: #8b6827; }
.metric-symbol--violet { background: #e9e1f2; color: #7c64a0; }
.grade-metrics article > div { min-width: 0; }
.grade-metrics small { color: #7f8b85; font-size: 7px; }
.grade-metrics strong { display: block; margin: 3px 0 1px; font-size: 20px; letter-spacing: -.045em; }
.grade-metrics strong em { color: #a1aaa5; font-size: 10px; font-style: normal; }
.grade-metrics p { margin: 0; color: #8d9792; font-size: 7px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.gradebook-layout { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(280px, .65fr); gap: 15px; align-items: start; }
.gradebook-panel, .evidence-panel, .timeline-panel, .curriculum-panel, .recent-activity { border: 1px solid var(--line); border-radius: 18px; background: white; }
.panel-toolbar, .evidence-heading, .timeline-head, .curriculum-heading, .recent-heading { min-height: 69px; padding: 0 18px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.panel-toolbar h3, .evidence-heading h3, .timeline-head h3, .curriculum-heading h3, .recent-heading h3 { margin: 4px 0 0; font-size: var(--type-panel-title); letter-spacing: -.03em; }
.toolbar-tools { display: flex; gap: 6px; }
.toolbar-tools button, .timeline-head button, .curriculum-heading button, .recent-heading button { min-height: 38px; padding: 0 9px; border: 1px solid var(--line); border-radius: 8px; background: #f8faf7; color: #647169; font-size: var(--type-control); font-weight: 800; }
.toolbar-tools .add-evidence-inline { border-color: var(--forest); background: var(--forest); color: white; }
.grade-table-wrap { overflow-x: auto; }
.grade-table { width: 100%; border-collapse: collapse; min-width: 760px; }
.grade-table th { height: 45px; padding: 0 11px; border-bottom: 1px solid var(--line); background: #f6f8f4; color: #77837d; font-size: 7px; font-weight: 800; text-align: center; }
.grade-table th:not(:first-child) { min-width: 92px; }
.grade-table th:first-child { min-width: 190px; padding-left: 18px; text-align: left; }
.grade-table th small { display: block; margin-top: 2px; color: #a0aaa5; font-size: 6px; }
.grade-table td { height: 57px; padding: 0 11px; border-bottom: 1px solid #edf0ec; text-align: center; font-size: 8px; }
.grade-table td:first-child { padding-left: 18px; display: flex; align-items: center; gap: 9px; text-align: left; }
.student-avatar { flex: 0 0 auto; width: 29px; height: 29px; border-radius: 9px; background: #edf1eb; color: #5d6d65; display: grid; place-items: center; font-size: 7px; font-weight: 900; }
.grade-table td:first-child strong { font-size: 8px; }
.student-placeholder-name { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.student-placeholder-name small { color: #9aa49f; font-size: 5px; }
.score { min-width: 34px; height: 27px; border: 0; border-radius: 7px; background: #e5f0de; color: #44663c; font-size: 8px; font-weight: 850; }
.score--watch { background: #f7e9c9; color: #89651f; }
.score--empty { border: 1px dashed #d9ded8; background: #f8f9f7; color: #9da6a1; }
.average-score { font-size: 11px; }
.row-menu { border: 0; background: transparent; color: #a0aaa5; font-size: 7px; }
.student-list-footer { min-height: 47px; padding: 0 18px; background: #fafbf8; color: #748079; display: flex; justify-content: space-between; align-items: center; font-size: 7px; }
.student-list-footer span { display: flex; align-items: center; gap: 7px; }
.student-list-footer span i { width: 7px; height: 7px; border-radius: 50%; background: #d5a84d; box-shadow: 0 0 0 4px rgba(213,168,77,.12); }
.student-list-footer strong { color: #4f5d56; font-size: 8px; }
.evidence-panel { padding-bottom: 10px; }
.evidence-heading > button { width: 30px; height: 30px; border: 0; border-radius: 8px; background: var(--forest); color: white; }
.evidence-card { margin: 0 13px; min-height: 82px; border-bottom: 1px solid #edf0ec; display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; }
.evidence-card time { width: 38px; height: 43px; border: 1px solid var(--line); border-radius: 9px; background: #f8faf7; display: grid; place-items: center; align-content: center; }
.evidence-card time strong { font-size: 14px; line-height: 1; }
.evidence-card time span { margin-top: 2px; color: #8c9691; font-size: 6px; font-weight: 900; }
.evidence-card > div { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-width: 0; }
.evidence-card > div strong { max-width: 150px; font-size: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evidence-card > div small { color: #8b9690; font-size: 6px; }
.evidence-type { padding: 3px 5px; border-radius: 4px; font-size: 5px; font-weight: 900; }
.evidence-type--exam { background: #e1e8f8; color: #4d68a0; }
.evidence-type--project { background: #ebe2f3; color: #755f97; }
.evidence-type--practice { background: #e2efdc; color: #507246; }
.evidence-type--other { background: #ecefeb; color: #637069; }
.evidence-card > em { color: #536159; font-size: 8px; font-style: normal; font-weight: 900; }
.weight-check { margin: 12px 13px 0; padding: 10px; border-radius: 10px; background: #edf5e8; display: flex; align-items: center; gap: 9px; }
.weight-check > span { width: 23px; height: 23px; border-radius: 7px; background: #d4e8ca; color: #487141; display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.weight-check > div { display: flex; flex-direction: column; gap: 2px; }
.weight-check strong { font-size: 7px; }
.weight-check small { color: #71826b; font-size: 6px; }
.weight-check.is-warning { background: #fff4d8; }
.weight-check.is-warning > span { background: #f2d27b; color: #765a19; }
.weight-check.is-warning small { color: #897543; }

/* Cuaderno por resultados de aprendizaje */
.student-avatar { overflow: hidden; }
.student-avatar img { display: block; width: 100%; height: 100%; object-fit: cover; }
.student-photo-button { padding: 0; border: 1px solid #c8d9c3; cursor: pointer; vertical-align: middle; }
.student-photo-button:hover, .student-photo-button:focus-visible { outline: 3px solid #88af73; outline-offset: 2px; }
.student-photo-action { display: block; margin: 10px 12px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 9px; color: var(--forest); background: #f3f8ef; font: inherit; font-size: 14px; }
.roster-loading { padding: 24px; border: 1px solid var(--line); border-radius: 16px; background: white; font-size: 16px; }
.roster-dialog { width: min(560px, calc(100% - 32px)); max-height: 90dvh; padding: 0; border: 1px solid var(--line); border-radius: 20px; color: var(--ink); background: white; box-shadow: 0 24px 80px #172e3340; }
.roster-dialog::backdrop { background: #152d3866; }
.roster-dialog > header { padding: 20px 24px; border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 16px; justify-content: space-between; }
.roster-dialog h2 { margin: 0; font-size: 24px; overflow-wrap: anywhere; }
.roster-dialog > header button { flex-shrink: 0; width: 44px; height: 44px; border: 0; border-radius: 12px; background: #eef3eb; color: var(--forest); font-size: 28px; }
.roster-dialog-body { padding: 20px 24px; font-size: 16px; line-height: 1.5; }
.roster-dialog .roster-help { color: #58695f; font-size: 14px; }
.roster-preview { padding-left: 30px; max-height: 40dvh; overflow-y: auto; font-size: 15px; }
.roster-preview li { padding: 5px 0; }
.roster-error { padding: 12px; border-radius: 10px; background: #fff0eb; color: #8d352c; }
.roster-error[hidden] { display: none; }
.roster-photo-preview { margin: 0 auto 20px; text-align: center; }
.roster-photo-preview .student-avatar { width: 120px; height: 120px; margin: 0; border-radius: 20px; font-size: 32px; }
.student-photo-picker { display: flex; flex-direction: column; gap: 8px; font-size: 16px; font-weight: 700; }
.student-photo-picker input { max-width: 100%; font: inherit; font-size: 14px; }
.roster-dialog button { min-height: 44px; font-size: 16px; }
.roster-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 18px 0; }
.roster-toolbar > button, .roster-remove-student { display: inline-grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--line); border-radius: 12px; font: inherit; font-size: 1.65rem; line-height: 1; cursor: pointer; }
.roster-toolbar .roster-add { background: var(--forest); color: white; }
.roster-toolbar .roster-remove-mode { background: white; color: #793d39; }
.roster-toolbar .roster-remove-mode[aria-pressed="true"] { background: #9c3434; color: white; border-color: #9c3434; }
.roster-toolbar > button:disabled { opacity: .45; cursor: not-allowed; }
.roster-toolbar > span { flex: 1 1 240px; color: #6d3734; font-size: 1rem; }
.roster-remove-student { margin-left: 8px; background: #fff0ed; border-color: #e7b4ac; color: #942b2b; vertical-align: middle; flex-shrink: 0; }
.roster-remove-student[hidden], .roster-toolbar > [hidden] { display: none; }
.roster-toolbar > button:focus-visible, .roster-remove-student:focus-visible { outline: 3px solid #648bb7; outline-offset: 3px; }
.roster-add-form { display: grid; gap: 16px; }
.roster-add-form > p { margin: 0; }
.roster-add-form label { display: grid; gap: 7px; font-weight: 700; }
.roster-add-form input { box-sizing: border-box; width: 100%; min-width: 0; min-height: 46px; padding: 10px 12px; border: 1px solid #aab9b0; border-radius: 10px; font: inherit; color: var(--ink); }
.roster-add-form footer, .roster-confirm-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; margin-top: 8px; }
.roster-confirm-remove { border: 1px solid #9c3434; border-radius: 12px; padding: 12px 18px; background: #9c3434; color: white; font: inherit; font-weight: 700; }
.mobile-student-identity { min-width: 0; overflow-wrap: anywhere; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.gradebook-switcher .gradebook-final-tab { margin-left: 7px; border-left: 1px solid #d7ddd4; }
.gradebook-switcher .gradebook-final-tab.is-active { color: #594074; background: #f2eaf9; box-shadow: 0 5px 16px rgba(82,55,111,.09); }
.gradebook-metrics article { min-width: 0; }
.gradebook-metrics small { font-size: 11px !important; }
.gradebook-metrics p { font-size: 11px; }
.gradebook-ra-plan { margin: 15px 0; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: white; }
.gradebook-ra-plan > header { min-height: 88px; padding: 17px 20px; border-bottom: 1px solid var(--line); background: linear-gradient(120deg, #f5f9f1, white); display: flex; justify-content: space-between; align-items: center; gap: 25px; }
.gradebook-ra-plan > header > div > span { color: #73816f; font-size: 10px; font-weight: 900; letter-spacing: .13em; }
.gradebook-ra-plan > header h3 { margin: 5px 0 3px; font-size: 21px; letter-spacing: -.035em; }
.gradebook-ra-plan > header p { margin: 0; color: #77837d; font-size: 12px; }
.gradebook-ra-plan > header > strong { max-width: 260px; padding: 10px 13px; border: 1px solid #d8e4d3; border-radius: 11px; background: white; color: #4e6945; font-size: 11px; line-height: 1.35; text-align: center; }
.gradebook-ra-plan > div { padding: 13px; display: grid; grid-template-columns: repeat(auto-fit, minmax(205px, 1fr)); gap: 9px; }
.gradebook-ra-card { min-width: 0; min-height: 128px; padding: 14px; border: 1px solid #dbe4d8; border-radius: 14px; background: #fafcf8; color: var(--ink); display: flex; flex-direction: column; align-items: flex-start; text-align: left; transition: .2s ease; }
.gradebook-ra-card:hover { border-color: #8aaa7e; background: #f1f8ed; transform: translateY(-1px); }
.gradebook-ra-card > span { color: var(--forest); font-size: 12px; font-weight: 900; }
.gradebook-ra-card > span b { color: #7b8781; }
.gradebook-ra-card > strong { margin: 8px 0 5px; font-size: 13px; line-height: 1.3; }
.gradebook-ra-card > small { color: #77837d; font-size: 11px !important; }
.gradebook-ra-card > em { margin-top: auto; padding-top: 9px; color: #58744f; font-size: 10px; font-style: normal; font-weight: 850; }
.gradebook-ra-card.is-warning { border-color: #e3c980; background: #fff9e8; }
.gradebook-empty { grid-column: 1 / -1; margin: 0; padding: 25px; color: #7d8882; text-align: center; }
.ra-gradebook-panel { overflow: hidden; }
.gradebook-formula { display: flex; align-items: center; gap: 7px; }
.gradebook-formula span { min-height: 29px; padding: 0 9px; border-radius: 8px; background: #eef4ea; color: #4d6845; display: inline-flex; align-items: center; font-size: 10px; font-weight: 850; }
.gradebook-formula span.is-emphasis { background: var(--forest); color: white; box-shadow: 0 5px 13px rgba(23,63,55,.16); }
.gradebook-formula i { color: #9aa49f; font-size: 11px; font-style: normal; }
.ra-grade-table { min-width: max(820px, 100%); }
.ra-grade-table th:not(:first-child) { min-width: 108px; padding: 0 7px; }
.ra-grade-table th > button { width: 100%; min-height: 49px; padding: 5px; border: 0; background: transparent; color: #5c6962; }
.ra-grade-table th > button:hover { color: var(--forest); background: #edf4ea; }
.ra-grade-table th > button strong { display: block; font-size: 12px; }
.ra-grade-table th > button strong b { color: #7e8a84; }
.ra-grade-table th > button small { display: block; color: #87918c; font-size: 9px !important; }
.ra-grade-table td { height: 68px; }
.ra-grade-table th.evaluation-column-heading { min-width: 126px; border-left: 2px solid #315f54; background: var(--forest); color: white; font-size: 11px; letter-spacing: .02em; }
.ra-grade-table td.evaluation-column-cell { border-left: 2px solid #d3e1cd; background: #f2f7ef; }
.ra-grade-table td.evaluation-column-cell .calculated-grade { min-width: 52px; min-height: 40px; font-size: 17px; font-weight: 950; box-shadow: 0 4px 12px rgba(33,68,55,.08); }
.ra-grade-table tfoot td { height: 60px; border-top: 2px solid #cfdccc; background: #f7faf5; }
.ra-grade-table tfoot td:first-child { padding-right: 17px; color: #607068; font-size: 11px; font-weight: 850; text-align: right; }
.ra-grade-table tfoot td.evaluation-column-average { border-left: 2px solid #315f54; background: #e8f1e4; }
.ra-grade-table tfoot .calculated-grade { min-width: 54px; min-height: 40px; font-size: 17px; font-weight: 950; box-shadow: 0 4px 12px rgba(33,68,55,.08); }
.grade-input-shell, .final-exam-input { width: 62px; min-height: 38px; margin: auto; border: 1px solid #d8e0d5; border-radius: 9px; background: #f8faf7; display: grid; place-items: center; }
.grade-input-shell:focus-within, .final-exam-input:focus-within { border-color: #6f9a61; box-shadow: 0 0 0 3px rgba(111,154,97,.12); }
.grade-input-shell input, .final-exam-input input { width: 58px; height: 36px; padding: 0 4px; border: 0; outline: 0; background: transparent; color: inherit; font: 850 13px/1 inherit; text-align: center; }
.grade-input-shell input::-webkit-inner-spin-button, .final-exam-input input::-webkit-inner-spin-button { appearance: none; }
.grade-input-shell.is-passing, .final-exam-input.is-passing { border-color: #c8ddc1; background: #eef7ea; color: #3d6636; }
.grade-input-shell.is-watch, .final-exam-input.is-watch { border-color: #ead59b; background: #fff6dd; color: #805e1e; }
.grade-input-shell.is-failing, .final-exam-input.is-failing { border-color: #e7bdb4; background: #fff0ed; color: #94483b; }
.grade-input-shell.is-empty, .final-exam-input.is-empty { border-style: dashed; color: #929c97; }
.ra-grade-button { min-width: 72px; min-height: 46px; padding: 5px 8px; border: 1px solid #d7e0d4; border-radius: 10px; background: #f7faf5; color: #526159; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; }
.ra-grade-button strong { font-size: 14px; }
.ra-grade-button small { color: inherit; font-size: 8px !important; }
.ra-grade-button.is-passing { border-color: #c8ddc1; background: #eef7ea; color: #3d6636; }
.ra-grade-button.is-failing { border-color: #e7bdb4; background: #fff0ed; color: #94483b; }
.ra-grade-button.is-empty { border-style: dashed; color: #929c97; }
.calculated-grade { min-width: 43px; min-height: 34px; margin: auto; border-radius: 9px; display: inline-grid; place-items: center; font-size: 14px; }
.calculated-grade.is-passing { background: #e7f3e1; color: #3e6637; }
.calculated-grade.is-watch { background: #fff2d4; color: #7d5a1e; }
.calculated-grade.is-failing { background: #ffebe7; color: #93473b; }
.calculated-grade.is-empty { border: 1px dashed #d7ddd5; color: #98a19d; }
.calculated-grade.is-final { font-size: 16px; font-weight: 950; }
.grade-mobile-list { display: none; }
.final-rules { margin: 15px 0; padding: 15px; border: 1px solid var(--line); border-radius: 17px; background: white; display: grid; grid-template-columns: 1fr auto 1fr; gap: 15px; align-items: stretch; }
.final-rules > div { padding: 15px 17px; border-radius: 13px; background: #f5f9f2; }
.final-rules > div:last-child { background: #fff8e8; }
.final-rules > div span { color: #758173; font-size: 9px; font-weight: 900; letter-spacing: .12em; }
.final-rules > div strong { display: block; margin: 6px 0 4px; font-size: 16px; }
.final-rules > div p { margin: 0; color: #6f7c75; font-size: 12px; line-height: 1.45; }
.final-rules > i { align-self: center; color: #8c9691; font-size: 11px; font-style: normal; font-weight: 900; }
.final-grade-table { min-width: 1080px; }
.evaluation-path { width: 155px; min-height: 38px; padding: 0 9px; border: 1px solid #d8e0d5; border-radius: 9px; background: #f8faf7; color: #4f5f57; font: 750 11px/1.2 inherit; }
.final-exam-input input:disabled { cursor: not-allowed; opacity: .38; }
.final-exam-input:has(input:disabled) { background: #f2f4f1; }
.final-grade-status { display: block; max-width: 105px; margin: 4px auto 0; color: #7b8781; font-size: 8px !important; line-height: 1.2; }

.evidence-modal.ra-activity-modal { max-height: min(860px, 92vh); overflow: auto; }
.evidence-modal.ra-activity-modal form, .evidence-modal.student-ra-modal form { grid-template-columns: 1fr; }
.evidence-modal.ra-activity-modal form > *, .evidence-modal.student-ra-modal form > * { grid-column: 1 / -1; }
.ra-activity-list { display: flex; flex-direction: column; gap: 9px; }
.ra-activity-list article { padding: 11px; border: 1px solid #e0e6de; border-radius: 12px; background: #fafbf9; display: grid; grid-template-columns: 32px minmax(150px, 1.4fr) minmax(120px, .8fr) 95px 35px; gap: 9px; align-items: end; }
.ra-activity-list article > span { width: 32px; height: 40px; border-radius: 9px; background: var(--forest); color: var(--lime); display: grid; place-items: center; font-size: 10px; font-weight: 900; }
.ra-activity-list label { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.ra-activity-list label small { color: #6e7b74; font-size: 10px !important; font-weight: 800; }
.ra-activity-list input, .ra-activity-list select { width: 100%; min-height: 40px; padding: 0 9px; border: 1px solid #d5ddd3; border-radius: 9px; background: white; font: 13px/1.3 inherit; }
.ra-activity-list article > button { width: 35px; height: 40px; border: 1px solid #ead2cc; border-radius: 9px; background: #fff4f1; color: #9a4c3f; font-size: 18px; }
.ra-activity-list article > button:disabled { opacity: .3; }
.ra-activity-total { padding: 11px 13px; border-radius: 11px; display: flex; align-items: center; gap: 10px; }
.ra-activity-total > span { width: 29px; height: 29px; border-radius: 8px; display: grid; place-items: center; font-weight: 900; }
.ra-activity-total > div { display: flex; flex-direction: column; gap: 2px; }
.ra-activity-total strong { font-size: 13px; }
.ra-activity-total small { font-size: 10px !important; }
.ra-activity-total.is-complete { background: #edf7e9; color: #466d3e; }
.ra-activity-total.is-complete > span { background: #d4e9cb; }
.ra-activity-total.is-warning { background: #fff4d8; color: #80631f; }
.ra-activity-total.is-warning > span { background: #f1d47f; }
.add-ra-activity { min-height: 43px; border: 1px dashed #9db494; border-radius: 11px; background: #f5faf2; color: #4b6c43; font-size: 12px; font-weight: 850; }
.ra-activity-error { margin: 0; padding: 10px 12px; border-radius: 9px; background: #fff0e8; color: #9a4433; font-size: 12px !important; }
.student-ra-activity-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.student-ra-activity-list label { min-height: 68px; padding: 11px 13px; border: 1px solid #dfe6dc; border-radius: 11px; background: #fafcf9; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.student-ra-activity-list label > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.student-ra-activity-list label strong { font-size: 13px; }
.student-ra-activity-list label small { color: #78857e; font-size: 10px !important; }
.student-ra-activity-list input { width: 72px; min-height: 42px; border: 1px solid #cfd9cc; border-radius: 9px; background: white; font: 850 15px/1 inherit; text-align: center; }
.student-ra-result { min-height: 73px; padding: 13px 16px; border-radius: 13px; background: var(--forest); color: white; display: flex; justify-content: space-between; align-items: center; }
.student-ra-result span { color: var(--lime); font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.student-ra-result strong { min-width: 52px; height: 44px; border-radius: 11px; background: rgba(255,255,255,.12); display: grid; place-items: center; font-size: 21px; }

.evidence-modal-backdrop { position: fixed; z-index: 80; inset: 0; padding: 24px; background: rgba(17,31,26,.48); backdrop-filter: blur(7px); display: grid; place-items: center; opacity: 0; transition: opacity .2s ease; }
.evidence-modal-backdrop.is-visible { opacity: 1; }
.evidence-modal { width: min(680px, 100%); overflow: hidden; border: 1px solid rgba(255,255,255,.45); border-radius: 22px; background: white; box-shadow: 0 28px 80px rgba(17,31,26,.28); transform: translateY(9px) scale(.985); transition: transform .24s cubic-bezier(.2,.8,.2,1); }
.evidence-modal-backdrop.is-visible .evidence-modal { transform: translateY(0) scale(1); }
.evidence-modal > header { min-height: 119px; padding: 22px 24px; background: var(--forest); color: white; display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; }
.evidence-modal > header span { color: color-mix(in srgb, var(--lime) 75%, white); font-size: 6px; font-weight: 900; letter-spacing: .15em; }
.evidence-modal > header h2 { margin: 7px 0 5px; font-size: 23px; letter-spacing: -.045em; }
.evidence-modal > header p { margin: 0; color: rgba(255,255,255,.62); font-size: 7px; }
.evidence-modal > header button { flex: 0 0 auto; width: 32px; height: 32px; border: 1px solid rgba(255,255,255,.16); border-radius: 9px; background: rgba(255,255,255,.08); color: white; font-size: 17px; }
.evidence-modal form { padding: 22px 24px 20px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; }
.evidence-field { min-width: 0; display: flex; flex-direction: column; gap: 7px; }
.evidence-field--wide { grid-column: 1 / -1; }
.evidence-field > span { color: #68756e; font-size: 7px; font-weight: 800; }
.evidence-field input, .evidence-field select { width: 100%; height: 43px; padding: 0 12px; border: 1px solid var(--line); border-radius: 10px; outline: none; background: #f9faf8; color: var(--ink); font: inherit; font-size: 8px; }
.evidence-field input:focus, .evidence-field select:focus { border-color: var(--forest-soft); box-shadow: 0 0 0 3px color-mix(in srgb, var(--forest-soft) 12%, transparent); }
.weight-input { position: relative; }
.weight-input input { padding-right: 34px; }
.weight-input em { position: absolute; right: 12px; top: 50%; color: #86918b; font-size: 8px; font-style: normal; font-weight: 850; transform: translateY(-50%); }
.evidence-modal form > footer { grid-column: 1 / -1; padding-top: 5px; display: flex; justify-content: flex-end; gap: 8px; }

/* Temporalización */
.timeline-summary { margin: 24px 0 15px; display: grid; grid-template-columns: 1.2fr 1fr 1fr; border: 1px solid var(--line); border-radius: 17px; background: white; }
.timeline-summary > div { min-height: 100px; padding: 20px 24px; border-left: 1px solid var(--line); display: flex; flex-direction: column; justify-content: center; }
.timeline-summary > div:first-child { border-left: 0; }
.timeline-summary span { color: #7d8983; font-size: 7px; }
.timeline-summary strong { margin: 6px 0 4px; font-size: 18px; letter-spacing: -.04em; }
.timeline-summary small { color: #909a95; font-size: 7px; }
.timeline-summary i { width: 100%; height: 6px; margin-top: 7px; border-radius: 99px; background: #e7ebe5; overflow: hidden; }
.timeline-summary i b { display: block; height: 100%; border-radius: inherit; background: var(--forest-soft); }
.unit-list { padding: 7px 12px 12px; }
.unit-row { min-height: 86px; padding: 8px; border-bottom: 1px solid #edf0ec; display: grid; grid-template-columns: 36px minmax(260px,1fr) 96px 115px 78px 116px; gap: 12px; align-items: center; }
.unit-row:last-child { border-bottom: 0; }
.unit-row.is-current { margin: 5px 0; padding: 0 12px; border: 0; border-radius: 12px; background: #eff4ed; }
.unit-row--intro { margin: 5px 0; padding: 0 12px; border: 1px solid #d8e6d2; border-radius: 12px; background: linear-gradient(110deg, #f1f8ed, #fbfcf9); }
.unit-row--intro .unit-number { color: #628057; }
.unit-row--intro .unit-main strong > span { background: #6c965e; color: white; }
.unit-number { color: #9ba59f; font-size: 8px; font-weight: 900; }
.unit-main { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.unit-main strong { font-size: 10px; line-height: 1.35; }
.unit-main strong > span { display: inline-grid; min-width: 31px; min-height: 23px; margin-right: 8px; padding: 0 6px; border-radius: 7px; background: var(--forest); color: white; place-items: center; font-size: .78em; font-weight: 900; }
.unit-main strong > em { color: var(--forest-soft); font-size: .9em; font-style: normal; white-space: nowrap; }
.unit-main small { color: #77847d; font-size: 8px; font-weight: 700; }
.unit-hours { min-height: 58px; padding: 8px 10px; border: 1px solid #dbe3d8; border-radius: 11px; background: #f5f8f3; display: flex; flex-direction: column; justify-content: center; gap: 3px; }
.unit-hours > span { color: #728079; font-size: 6px; font-weight: 900; letter-spacing: .08em; }
.unit-hours strong { color: var(--forest); font-size: 20px; line-height: 1; letter-spacing: -.04em; }
.unit-hours strong small { color: #6d7973; font-size: 10px; font-weight: 850; }
.unit-progress { display: grid; grid-template-columns: 1fr 25px; gap: 7px; align-items: center; }
.unit-progress i { height: 5px; border-radius: 99px; background: #e5e9e3; overflow: hidden; }
.unit-progress i b { display: block; height: 100%; border-radius: inherit; background: var(--forest-soft); }
.unit-progress span { color: #7e8a83; font-size: 7px; }
.unit-status { justify-self: start; padding: 5px 7px; border-radius: 999px; background: #edf0ec; color: #758079; font-size: 6px; font-style: normal; font-weight: 850; }
.unit-status--completada { background: #e2efdc; color: #507246; }
.unit-status--en-curso { background: #dfe8f6; color: #4d6c9d; }
.unit-row > .unit-edit-date { min-height: 40px; padding: 0 10px; border: 1px solid #d5ddd3; border-radius: 10px; background: white; color: var(--forest); display: inline-flex; align-items: center; justify-content: center; gap: 7px; font-size: 10px; font-weight: 850; transition: background .2s ease, border-color .2s ease, transform .2s ease; }
.unit-row > .unit-edit-date:hover { border-color: var(--forest-soft); background: #edf4e9; transform: translateY(-1px); }
.unit-edit-date svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.schedule-date-backdrop { position: fixed; z-index: 140; inset: 0; padding: 22px; background: rgba(16,33,27,.54); backdrop-filter: blur(6px); display: grid; place-items: center; }
.schedule-date-modal { width: min(650px, 100%); overflow: hidden; border-radius: 22px; background: white; box-shadow: 0 28px 80px rgba(12,29,23,.3); }
.schedule-date-modal > header { min-height: 142px; padding: 25px 27px; background: linear-gradient(125deg, var(--forest), color-mix(in srgb, var(--forest) 80%, #4d7e70)); color: white; display: flex; justify-content: space-between; gap: 24px; }
.schedule-date-modal > header span { color: color-mix(in srgb, var(--lime) 78%, white); font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.schedule-date-modal > header h2 { margin: 8px 0 7px; font-size: 27px; line-height: 1.08; letter-spacing: -.045em; }
.schedule-date-modal > header p { max-width: 500px; margin: 0; color: rgba(255,255,255,.72); font-size: 13px; line-height: 1.45; }
.schedule-date-modal > header > button { flex: 0 0 auto; width: 39px; height: 39px; border: 1px solid rgba(255,255,255,.16); border-radius: 11px; background: rgba(255,255,255,.09); color: white; font-size: 23px; }
.schedule-date-modal form { padding: 24px 27px 27px; }
.schedule-date-fields { display: grid; grid-template-columns: 1fr auto 1fr; gap: 15px; align-items: end; }
.schedule-date-fields > span { height: 48px; color: #8a9690; display: grid; place-items: center; font-size: 20px; }
.schedule-date-fields label { display: grid; gap: 8px; color: #536159; font-size: 13px; font-weight: 850; }
.schedule-date-fields input { width: 100%; min-height: 48px; padding: 0 12px; border: 1px solid #d5ddd3; border-radius: 11px; background: #fafbf9; color: var(--ink); font: inherit; font-size: 15px; }
.schedule-date-fields input:focus { outline: 0; border-color: var(--forest-soft); box-shadow: 0 0 0 3px color-mix(in srgb, var(--forest) 10%, transparent); }
.schedule-date-modal form > aside { margin-top: 17px; padding: 14px; border-radius: 12px; background: #f0f5ed; color: #61705f; display: grid; grid-template-columns: 27px 1fr; gap: 11px; align-items: start; }
.schedule-date-modal form > aside > span { width: 27px; height: 27px; border-radius: 8px; background: #dcebd5; color: #55764b; display: grid; place-items: center; font-size: 12px; font-weight: 900; }
.schedule-date-modal form > aside p { margin: 2px 0 0; font-size: 12px !important; line-height: 1.5; }
.schedule-date-error { margin: 14px 0 0; padding: 11px 13px; border-radius: 10px; background: #fff0e8; color: #994637; font-size: 12px !important; font-weight: 750; }
.schedule-date-error[hidden] { display: none; }
.schedule-date-modal form > footer { margin-top: 21px; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.schedule-date-modal form > footer > div { display: flex; gap: 8px; }
.schedule-date-modal form > footer button { min-height: 43px; padding: 0 14px; border: 1px solid #d5ddd3; border-radius: 10px; background: white; color: #536159; font-size: 12px; font-weight: 850; }
.schedule-date-modal form > footer > button { color: #6c795f; }
.schedule-date-modal form > footer .primary-action { border-color: var(--forest); background: var(--forest); color: white; }

/* Programación */
.official-data-label { height: 31px; padding: 0 10px; border-radius: 999px; background: #e5f1df; color: #4d6c45; display: inline-flex; align-items: center; gap: 7px; font-size: 7px; font-weight: 850; }
.official-data-label i { width: 7px; height: 7px; border-radius: 50%; background: #76a452; box-shadow: 0 0 0 4px rgba(118,164,82,.12); }
.heading-actions a.secondary-action { display: inline-flex; align-items: center; }
.curriculum-source-banner { min-height: 118px; margin-top: 24px; padding: 21px 24px; border-radius: 18px; background: linear-gradient(110deg, var(--forest), color-mix(in srgb, var(--forest) 86%, #557e73)); color: white; display: grid; grid-template-columns: auto 1fr auto; gap: 18px; align-items: center; position: relative; overflow: hidden; }
.curriculum-source-banner::after { content: ""; position: absolute; right: 22%; top: -90px; width: 230px; height: 230px; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; }
.official-seal { z-index: 1; width: 70px; height: 70px; border: 1px solid rgba(255,255,255,.18); border-radius: 18px; background: var(--lime); color: var(--forest); display: grid; place-items: center; align-content: center; font-family: Georgia, "Times New Roman", serif; font-size: 23px; font-weight: 800; line-height: 1; transform: rotate(-2deg); }
.official-seal small { margin-top: 5px; font-family: Inter, sans-serif; font-size: 5px; letter-spacing: .15em; }
.curriculum-source-banner > div { z-index: 1; }
.curriculum-source-banner > div > span { color: #9ab7af; font-size: 6px; font-weight: 900; letter-spacing: .13em; }
.curriculum-source-banner h3 { margin: 7px 0 5px; font-size: 20px; letter-spacing: -.035em; }
.curriculum-source-banner p { margin: 0; color: #bdd0cb; font-size: 8px; }
.curriculum-source-meta { min-width: 205px; padding: 13px 16px; border: 1px solid rgba(255,255,255,.12); border-radius: 12px; background: rgba(255,255,255,.06); display: flex; flex-direction: column; gap: 4px; }
.curriculum-source-meta > span { color: #9bb7b0 !important; font-size: 6px !important; letter-spacing: 0 !important; }
.curriculum-source-meta strong { font-size: 10px; }
.curriculum-source-meta small { color: #bdd0cb; font-size: 6px; }

.curriculum-path { min-height: 77px; margin-top: 12px; padding: 9px; border: 1px solid var(--line); border-radius: 16px; background: white; display: grid; grid-template-columns: repeat(4, minmax(100px, 1fr) auto) minmax(105px, 1fr); align-items: center; gap: 5px; }
.curriculum-path > div { height: 57px; padding: 10px 11px; border-radius: 11px; display: grid; grid-template-columns: auto 1fr; column-gap: 8px; align-content: center; }
.curriculum-path > div > span { grid-row: 1 / 3; width: 26px; height: 26px; border-radius: 8px; background: #edf1eb; color: #738078; display: grid; place-items: center; align-self: center; font-size: 6px; font-weight: 900; }
.curriculum-path > div > strong { font-size: 8px; }
.curriculum-path > div > small { margin-top: 2px; color: #8a958f; font-size: 6px; }
.curriculum-path > div.is-current { background: var(--forest); color: white; }
.curriculum-path > div.is-current > span { background: var(--lime); color: var(--forest); }
.curriculum-path > div.is-current > small { color: #aec4be; }
.curriculum-path > div.is-next { border: 1px dashed #d9ded7; background: #fafbf9; }
.curriculum-path > i { color: #a2aaa6; font-size: 9px; font-style: normal; }

.program-overview { margin: 12px 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 11px; }
.program-overview article { min-height: 88px; padding: 15px; border: 1px solid var(--line); border-radius: 15px; background: white; display: flex; align-items: center; gap: 12px; }
.program-overview article > span { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 10px; background: #e7eee4; color: var(--forest-soft); display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.program-overview article:nth-child(2) > span { background: #dfe8f6; color: #4f6b9d; }
.program-overview article:nth-child(3) > span { background: #eee6f5; color: #755f96; }
.program-overview article:nth-child(4) > span { background: #f4ead3; color: #876626; }
.program-overview small { color: #7f8b85; font-size: 7px; }
.program-overview strong { display: block; margin: 2px 0; font-size: 20px; }
.program-overview p { margin: 0; color: #8e9893; font-size: 6px; }

.curriculum-tabs { min-height: 59px; padding: 5px; border: 1px solid var(--line); border-radius: 15px; background: #e9ece6; display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; }
.curriculum-tabs button { min-height: 47px; padding: 0 14px; border: 0; border-radius: 10px; background: transparent; color: #77837d; display: flex; justify-content: space-between; align-items: center; text-align: left; transition: background .25s ease, box-shadow .25s ease, color .25s ease; }
.curriculum-tabs button span { font-size: 8px; font-weight: 850; }
.curriculum-tabs button small { padding: 4px 6px; border-radius: 999px; background: rgba(29,49,41,.06); font-size: 6px; font-weight: 800; }
.curriculum-tabs button.is-active { background: white; color: var(--forest); box-shadow: 0 5px 16px rgba(35,52,45,.08); }
.curriculum-tabs button.is-active small { background: color-mix(in srgb, var(--forest) 10%, white); }
.curriculum-section-content { margin-top: 12px; }

.ra-explorer { display: grid; grid-template-columns: minmax(285px, .72fr) minmax(0, 1.45fr); gap: 12px; align-items: start; }
.ra-index-panel, .ra-detail-panel { border: 1px solid var(--line); border-radius: 18px; background: white; overflow: hidden; }
.ra-index-heading { min-height: 90px; padding: 18px; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 4px; }
.ra-index-heading > span, .criteria-heading span, .module-links-strip > div > span, .general-competence-card > div > span, .curriculum-filterbar > div:first-child > span, .cycle-list-panel header span, .regulation-intro > div > span, .curriculum-pending > span { color: #819089; font-size: 6px; font-weight: 900; letter-spacing: .13em; }
.ra-index-heading strong { margin-top: 3px; font-size: 14px; }
.ra-index-heading small { color: #86918b; font-size: 7px; }
.ra-index-list { padding: 8px; }
.ra-index-item { width: 100%; min-height: 82px; padding: 11px 10px; border: 0; border-bottom: 1px solid #edf0ec; border-radius: 10px; background: transparent; display: grid; grid-template-columns: 38px 1fr auto; gap: 10px; align-items: center; text-align: left; transition: background .2s ease, transform .2s ease; }
.ra-index-item:last-child { border-bottom: 0; }
.ra-index-item:hover { background: #f5f7f3; }
.ra-index-item > span { width: 36px; height: 36px; border-radius: 10px; background: #e7eee4; color: var(--forest-soft); display: grid; place-items: center; font-size: 7px; font-weight: 900; }
.ra-index-item > div { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.ra-index-item strong { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: 8px; line-height: 1.35; }
.ra-index-item small { color: #8c9791; font-size: 6px; }
.ra-index-item em { color: #9aa39e; font-size: 9px; font-style: normal; }
.ra-index-item.is-active { margin: 3px 0; border-bottom-color: transparent; background: var(--forest); color: white; transform: translateX(2px); }
.ra-index-item.is-active > span { background: var(--lime); color: var(--forest); }
.ra-index-item.is-active small { color: #a9c0b9; }
.ra-index-item.is-active em { color: var(--lime); }

.ra-detail-heading { min-height: 151px; padding: 22px 23px 19px; border-bottom: 1px solid var(--line); background: linear-gradient(135deg, #f1f6ed, #fafcf8); position: relative; }
.ra-detail-heading > div { display: flex; align-items: center; gap: 9px; }
.ra-detail-heading > div > span { width: 42px; height: 29px; border-radius: 8px; background: var(--forest); color: white; display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.ra-detail-heading > div > small { color: #718078; font-size: 7px; font-weight: 750; }
.ra-detail-heading p { max-width: 830px; margin: 15px 0 13px; font-size: 15px; font-weight: 760; line-height: 1.45; letter-spacing: -.018em; }
.ra-detail-heading > em { color: #7c8982; font-size: 6px; font-style: normal; font-weight: 800; }
.criteria-heading { min-height: 62px; padding: 0 19px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; }
.criteria-heading > div { display: flex; align-items: center; gap: 9px; }
.criteria-heading strong { font-size: 9px; }
.criteria-heading > small { color: #8a958f; font-size: 6px; }
.official-criteria-list { margin: 0; padding: 0 18px; list-style: none; }
.official-criteria-list li { min-height: 68px; padding: 12px 0; border-bottom: 1px solid #edf0ec; display: grid; grid-template-columns: 43px 1fr auto; gap: 12px; align-items: center; }
.official-criteria-list li > span { width: 40px; height: 28px; border-radius: 8px; background: #e7eee4; color: var(--forest-soft); display: grid; place-items: center; font-size: 6px; font-weight: 900; text-transform: uppercase; }
.official-criteria-list li p { margin: 0; color: #526159; font-size: 8px; line-height: 1.52; }
.official-criteria-list li button { height: 27px; padding: 0 8px; border: 1px dashed #d6dcd5; border-radius: 7px; background: #fafbf9; color: #9ba49f; font-size: 6px; cursor: default; }
.criteria-note { margin: 10px 18px 18px; padding: 13px; border: 1px solid #e7d9b8; border-radius: 11px; background: #faf4e5; display: flex; gap: 10px; align-items: flex-start; }
.criteria-note > span { flex: 0 0 auto; width: 25px; height: 25px; border-radius: 7px; background: #efdeaf; color: #7d6123; display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.criteria-note p { margin: 1px 0 0; color: #746950; font-size: 7px; line-height: 1.5; }
.criteria-note strong { color: #5e533c; }
.module-links-strip { min-height: 92px; margin-top: 12px; padding: 15px 18px; border: 1px solid var(--line); border-radius: 16px; background: white; display: grid; grid-template-columns: 1fr auto 1fr auto; gap: 20px; align-items: center; }
.module-links-strip > div { display: flex; flex-direction: column; gap: 4px; }
.module-links-strip > div > strong { font-size: 11px; }
.module-links-strip > div > small { color: #738078; font-size: 7px; font-weight: 800; letter-spacing: .05em; }
.module-links-strip > i { color: #a3aca7; font-size: 11px; font-style: normal; }
.module-links-strip > button { height: 37px; padding: 0 12px; border: 0; border-radius: 9px; background: var(--forest); color: white; display: flex; align-items: center; gap: 18px; font-size: 7px; font-weight: 850; }
.module-links-strip > button span { color: var(--lime); }

.general-competence-card { min-height: 216px; padding: 25px 28px; border-radius: 19px; background: var(--forest); color: white; position: relative; overflow: hidden; }
.general-competence-card::after { content: "ASIR"; position: absolute; right: -12px; bottom: -25px; color: rgba(255,255,255,.035); font-size: 105px; font-weight: 950; letter-spacing: -.08em; }
.general-competence-card > div { position: relative; z-index: 1; display: flex; justify-content: space-between; align-items: center; }
.general-competence-card > div > span { color: #98b5ad; }
.general-competence-card > div > small { color: #a9c0b9; font-size: 7px; }
.general-competence-card blockquote { position: relative; z-index: 1; max-width: 980px; margin: 25px 0; font-family: Georgia, "Times New Roman", serif; font-size: clamp(16px, 2vw, 22px); line-height: 1.45; letter-spacing: -.02em; }
.general-competence-card footer { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 4px; }
.general-competence-card footer span { color: var(--lime); font-size: 6px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.general-competence-card footer strong { color: #bfd0cc; font-size: 7px; }
.curriculum-filterbar { min-height: 78px; margin-top: 12px; padding: 13px 15px 13px 19px; border: 1px solid var(--line); border-radius: 15px; background: white; display: flex; justify-content: space-between; align-items: center; gap: 15px; }
.curriculum-filterbar > div:first-child { display: flex; flex-direction: column; gap: 5px; }
.curriculum-filterbar > div:first-child strong { font-size: 10px; }
.curriculum-filterbar > div:last-child { padding: 4px; border-radius: 10px; background: #eaede7; display: flex; gap: 3px; }
.curriculum-filterbar button { height: 34px; padding: 0 11px; border: 0; border-radius: 8px; background: transparent; color: #77837d; font-size: 7px; font-weight: 800; }
.curriculum-filterbar button.is-active { background: white; color: var(--forest); box-shadow: 0 4px 12px rgba(36,52,45,.08); }
.cycle-lists-grid { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: start; }
.cycle-list-panel { border: 1px solid var(--line); border-radius: 17px; background: white; overflow: hidden; }
.cycle-list-panel > header { min-height: 86px; padding: 16px 18px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; gap: 15px; }
.cycle-list-panel header > div { display: flex; flex-direction: column; gap: 5px; }
.cycle-list-panel header h3 { max-width: 410px; margin: 0; font-size: 15px; line-height: 1.2; letter-spacing: -.03em; }
.cycle-list-panel header > strong { min-width: 48px; height: 48px; border-radius: 13px; background: #e9f0e5; color: var(--forest); display: grid; place-items: center; align-content: center; font-size: 16px; }
.cycle-list-panel header > strong small { color: #7d8983; font-size: 5px; }
.cycle-item-list { padding: 7px 13px 13px; }
.cycle-item { min-height: 74px; padding: 13px 5px; border-bottom: 1px solid #edf0ec; display: grid; grid-template-columns: 34px 1fr; gap: 10px; align-items: start; }
.cycle-item:last-child { border-bottom: 0; }
.cycle-item > span { width: 31px; height: 31px; border-radius: 9px; background: #edf0ec; color: #6f7d76; display: grid; place-items: center; font-family: Georgia, "Times New Roman", serif; font-size: 12px; font-weight: 800; text-transform: uppercase; }
.cycle-item p { margin: 1px 0 0; color: #59675f; font-size: 7px; line-height: 1.52; }
.cycle-item em { grid-column: 2; width: max-content; padding: 4px 6px; border-radius: 999px; background: #e5f1df; color: #55754b; font-size: 5px; font-style: normal; font-weight: 900; text-transform: uppercase; letter-spacing: .04em; }
.cycle-item.is-linked > span { background: var(--forest); color: var(--lime); }

.regulation-intro { min-height: 127px; padding: 21px 23px; border: 1px solid var(--line); border-radius: 17px; background: white; display: flex; justify-content: space-between; align-items: center; gap: 30px; }
.regulation-intro h3 { margin: 7px 0 6px; font-size: 20px; letter-spacing: -.04em; }
.regulation-intro p { max-width: 720px; margin: 0; color: #78857e; font-size: 8px; line-height: 1.55; }
.regulation-legend { flex: 0 0 auto; padding: 11px 13px; border-radius: 11px; background: #f1f3ef; display: flex; flex-direction: column; gap: 8px; }
.regulation-legend span { color: #647169; font-size: 6px; font-weight: 800; }
.regulation-legend i { display: inline-block; width: 7px; height: 7px; margin-right: 6px; border-radius: 50%; background: #647daf; }
.regulation-legend span:last-child i { background: #75a061; }
.regulation-grid { margin-top: 12px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.regulation-card { min-height: 220px; padding: 19px; border: 1px solid var(--line); border-radius: 17px; background: white; display: grid; grid-template-columns: auto 1fr; gap: 14px; position: relative; overflow: hidden; transition: transform .25s ease, box-shadow .25s ease; }
.regulation-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.regulation-card::after { content: ""; position: absolute; right: -42px; top: -42px; width: 105px; height: 105px; border-radius: 50%; background: rgba(85,111,160,.07); }
.regulation-card--regional::after { background: rgba(108,147,87,.09); }
.regulation-step { z-index: 1; width: 37px; height: 37px; border-radius: 10px; background: #dfe8f6; color: #526ea1; display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.regulation-card--regional .regulation-step { background: #e3eedf; color: #5b7b51; }
.regulation-card > div { z-index: 1; }
.regulation-card small { color: #748078; font-size: 6px; font-weight: 900; text-transform: uppercase; letter-spacing: .08em; }
.regulation-card h3 { margin: 8px 0; font-size: 15px; line-height: 1.25; letter-spacing: -.025em; }
.regulation-card p { margin: 0; color: #77847d; font-size: 7px; line-height: 1.6; }
.regulation-card > em { grid-column: 2; align-self: end; color: var(--forest-soft); font-size: 7px; font-style: normal; font-weight: 850; }
.source-trace-card { min-height: 82px; margin-top: 12px; padding: 16px 18px; border: 1px solid #dbe6d5; border-radius: 15px; background: #f0f6ed; display: grid; grid-template-columns: auto 1fr auto; gap: 13px; align-items: center; }
.source-trace-card > span { width: 34px; height: 34px; border-radius: 10px; background: #dbeed3; color: #547348; display: grid; place-items: center; font-size: 10px; font-weight: 900; }
.source-trace-card > div { display: flex; flex-direction: column; gap: 4px; }
.source-trace-card strong { font-size: 9px; }
.source-trace-card p { margin: 0; color: #6f7d75; font-size: 7px; line-height: 1.5; }
.source-trace-card a { padding: 9px 10px; border: 1px solid #cfddca; border-radius: 8px; background: white; color: var(--forest); font-size: 7px; font-weight: 850; }
.curriculum-pending { min-height: 370px; margin-top: 25px; padding: 56px; border: 1px solid var(--line); border-radius: 20px; background: white; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.curriculum-pending h2 { max-width: 650px; margin: 13px 0 9px; font-size: 31px; letter-spacing: -.05em; }
.curriculum-pending p { max-width: 610px; margin: 0; color: #76827c; font-size: 9px; line-height: 1.6; }
.curriculum-pending > div { margin-top: 33px; display: flex; align-items: center; gap: 12px; }
.curriculum-pending > div i { width: 29px; height: 29px; border-radius: 9px; background: var(--forest); color: white; display: grid; place-items: center; font-size: 7px; font-style: normal; font-weight: 900; }
.curriculum-pending > div span { color: #65726b; font-size: 7px; font-weight: 850; }
.curriculum-pending > div b { color: #a2aca6; font-size: 9px; }

/* Contenidos y temas vinculados a RA */
.content-clean-heading { min-height: 0; }
.content-topic-list { margin-top: 24px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.content-topic-card { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: white; box-shadow: 0 7px 24px rgba(34,50,43,.035); transition: opacity .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.content-topic-card.is-dragging { opacity: .42; transform: scale(.985); }
.content-topic-card.is-drop-target { border-color: var(--forest-soft); box-shadow: 0 0 0 3px color-mix(in srgb, var(--forest) 13%, transparent), 0 15px 34px rgba(34,50,43,.1); }
.content-topic-card--introduction { border-color: #bcd7b2; box-shadow: 0 10px 30px rgba(70,112,54,.09); }
.content-topic-card--introduction > header { background: linear-gradient(115deg, #f3faef, #fff); }
.content-topic-card > header { min-height: 104px; padding: 18px 19px; border-bottom: 1px solid #edf0ec; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; }
.content-topic-number { width: 54px; height: 54px; border-radius: 15px; background: var(--forest); color: var(--lime); display: grid; place-items: center; font-size: 19px; font-weight: 900; line-height: 1; }
.content-topic-copy { min-width: 0; }
.content-topic-title-line { display: flex; align-items: center; gap: 8px; }
.content-topic-card h3 { margin: 7px 0 0; font-size: 20px; line-height: 1.12; letter-spacing: -.035em; }
.content-topic-title-line h3 { min-width: 0; margin: 0; }
.content-topic-title-line button { flex: 0 0 auto; width: 32px; height: 32px; border: 1px solid var(--line); border-radius: 9px; background: #f7f9f5; color: var(--forest); font-size: 17px; line-height: 1; }
.content-topic-title-line button:hover { border-color: var(--forest-soft); background: #edf3e9; }
.content-topic-title-form { margin-top: 7px; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px; }
.content-topic-title-form[hidden], .content-topic-title-line[hidden] { display: none; }
.content-topic-title-form input { min-width: 0; height: 40px; padding: 0 11px; border: 1px solid var(--forest-soft); border-radius: 9px; outline: 0; color: var(--ink); font-size: 14px; font-weight: 750; box-shadow: 0 0 0 3px color-mix(in srgb, var(--forest) 9%, transparent); }
.content-topic-title-form button { min-height: 40px; padding: 0 10px; border: 1px solid var(--line); border-radius: 9px; background: white; color: #66736c; font-size: 11px; font-weight: 850; }
.content-topic-title-form button[type="submit"] { border-color: var(--forest); background: var(--forest); color: white; }
.content-topic-actions { display: grid; grid-template-columns: auto auto auto; gap: 6px; align-items: center; }
.content-topic-actions > div { display: flex; gap: 3px; }
.content-topic-actions > div button { width: 27px; height: 30px; border: 1px solid var(--line); border-radius: 8px; background: white; color: var(--forest); font-size: 13px; font-weight: 900; }
.content-topic-actions > div button:disabled { color: #bdc5c0; background: #f5f6f3; }
.content-topic-drag-handle { width: 31px; height: 38px; border: 1px solid var(--line); border-radius: 10px; background: #f5f7f3; color: #68766e; display: grid; place-items: center; cursor: grab; font-size: 21px; line-height: 1; }
.content-topic-card:active .content-topic-drag-handle { cursor: grabbing; }
.content-topic-ra { min-width: 49px; height: 38px; padding: 0 9px; border-radius: 11px; background: #e6eedf; color: var(--forest); display: grid; place-items: center; font-size: 12px; font-weight: 900; }
.content-topic-ra--intro { min-width: 66px; background: #dcefd3; color: #426538; }
.content-topic-result { min-height: 70px; margin: 0; padding: 17px 19px; color: #526159; font-size: 13px; line-height: 1.55; }
.content-topic-program { margin: 0 19px 16px; padding: 13px 14px; border: 1px dashed #c5d0c4; border-radius: 13px; background: #f6f8f4; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.content-topic-program > span { display: flex; flex-direction: column; gap: 4px; }
.content-topic-program small { color: #7c8982; font-size: 9px; font-weight: 900; letter-spacing: .1em; }
.content-topic-program strong { font-size: 12px; }
.content-topic-program button { min-height: 34px; padding: 0 11px; border: 1px solid var(--line); border-radius: 9px; background: white; color: #77837c; font-size: 11px; font-weight: 800; }
.content-topic-resources { min-height: 62px; padding: 10px 19px; border-top: 1px solid #edf0ec; background: #fbfcfa; display: flex; align-items: center; gap: 8px; }
.content-topic-resources > span { min-height: 36px; padding: 0 9px; border: 1px solid var(--line); border-radius: 10px; background: white; display: flex; align-items: center; gap: 6px; }
.content-topic-resources i { width: 22px; height: 22px; border-radius: 7px; background: #e8eee5; color: var(--forest); display: grid; place-items: center; font-size: 8px; font-style: normal; font-weight: 900; }
.content-topic-resources strong { font-size: 11px; }
.content-topic-resources small { color: #86918b; font-size: 10px; }
.content-topic-resources > em { margin-left: auto; color: #728078; font-size: 10px; font-style: normal; font-weight: 800; }

/* Resumen */
.module-overview-grid { margin-top: 24px; display: grid; grid-template-columns: 1.2fr .8fr .8fr; gap: 14px; }
.overview-card { min-height: 185px; padding: 21px; border: 1px solid var(--line); border-radius: 18px; background: white; display: flex; flex-direction: column; align-items: flex-start; text-align: left; }
.overview-card > span, .overview-card > div > span { color: #85908a; font-size: 7px; font-weight: 900; letter-spacing: .13em; }
.overview-card h3 { margin: 9px 0 7px; font-size: 19px; letter-spacing: -.04em; }
.overview-card p { margin: 0; color: #7e8a84; font-size: 8px; line-height: 1.55; }
.overview-card > em { margin-top: auto; color: var(--forest-soft); font-size: 8px; font-style: normal; font-weight: 850; }
.overview-card--featured { grid-row: span 2; min-height: 384px; padding: 28px; background: var(--forest); color: white; }
.overview-card--featured > div > span { color: #9db9b1; }
.overview-card--featured h3 { max-width: 350px; margin-top: 15px; font-size: 30px; line-height: 1.05; }
.overview-card--featured p { color: #b3c9c3; }
.overview-card--featured > strong { margin-top: auto; font-size: 54px; line-height: 1; letter-spacing: -.06em; }
.overview-card--featured > strong small { margin-left: 9px; color: #93aea6; font-size: 8px; letter-spacing: 0; }
.overview-card--featured > em { width: 100%; margin-top: 21px; padding-top: 17px; border-top: 1px solid #345d55; color: var(--lime); }
.recent-activity { grid-column: 2 / -1; }
.activity-list { padding: 4px 16px 11px; }
.activity-list p { min-height: 53px; margin: 0; border-bottom: 1px solid #edf0ec; display: grid; grid-template-columns: 29px 1fr auto; gap: 10px; align-items: center; }
.activity-list p:last-child { border-bottom: 0; }
.activity-list strong { font-size: 8px; }
.activity-list small { color: #8c9691; font-size: 7px; }
.activity-dot { width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; font-size: 6px; font-weight: 900; }
.activity-dot--green { background: #e3f0dd; color: #517247; }
.activity-dot--blue { background: #e0e8f8; color: #506ca1; }
.activity-dot--amber { background: #f8eacb; color: #856320; }

/* Perfil y personalización */
.profile-page { max-width: 1320px; margin: 0 auto; padding: 27px 44px 80px; }
.profile-page .workspace-breadcrumb { font-size: 12px; }
.profile-page .back-to-modules { font-size: 12px; }
.profile-hero { min-height: 166px; margin-top: 19px; padding: 25px 29px; border-radius: 22px; background: var(--forest); color: white; display: grid; grid-template-columns: auto 1fr auto; gap: 21px; align-items: center; position: relative; overflow: hidden; }
.profile-hero::after { content: ""; position: absolute; width: 280px; height: 280px; right: -90px; top: -125px; border: 42px solid rgba(255,255,255,.055); border-radius: 50%; }
.profile-avatar-large { width: 93px; height: 93px; border: 3px solid rgba(255,255,255,.25); border-radius: 27px; background: var(--lime); color: var(--forest); display: grid; place-items: center; font-size: 24px; font-weight: 900; letter-spacing: -.06em; position: relative; }
.profile-avatar-large > span { position: absolute; inset: auto 6px 6px; height: 24px; border-radius: 7px; background: rgba(23,63,55,.88); color: white; display: grid; place-items: center; opacity: 0; font-size: 11px; letter-spacing: 0; transition: opacity .2s ease; }
.profile-avatar-large:hover > span { opacity: 1; }
.profile-hero > div:nth-child(2) > span { color: #98b6ae; font-size: 11px; font-weight: 900; letter-spacing: .15em; }
.profile-hero h1 { margin: 8px 0 5px; font-size: 34px; letter-spacing: -.05em; }
.profile-hero p { margin: 0; color: #aec5bf; font-size: 14px; }
.profile-state { z-index: 2; min-width: 215px; padding: 15px 17px; border: 1px solid rgba(255,255,255,.12); border-radius: 13px; background: rgba(255,255,255,.06); display: flex; align-items: center; gap: 10px; }
.profile-state > i { width: 9px; height: 9px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 0 5px rgba(223,246,129,.1); }
.profile-state > span { display: flex; flex-direction: column; gap: 3px; }
.profile-state strong { font-size: 13px; }
.profile-state small { color: #91ada5; font-size: 11px; }

.profile-layout { margin-top: 16px; display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 16px; align-items: start; }
.settings-nav { padding: 16px 9px 10px; border: 1px solid var(--line); border-radius: 18px; background: white; }
.settings-nav > span { display: block; margin: 0 12px 11px; color: #8a958f; font-size: 11px; font-weight: 900; letter-spacing: .14em; }
.settings-nav > button { width: 100%; min-height: 68px; padding: 0 12px; border: 0; border-radius: 11px; background: transparent; color: #66736c; display: grid; grid-template-columns: 36px 1fr auto; gap: 11px; align-items: center; text-align: left; }
.settings-nav > button:hover { background: #f5f7f3; }
.settings-nav > button.is-active { background: color-mix(in srgb, var(--forest) 9%, white); color: var(--forest); }
.settings-nav > button > i { width: 36px; height: 36px; border: 1px solid var(--line); border-radius: 9px; background: white; display: grid; place-items: center; font-size: 10px; font-style: normal; font-weight: 900; }
.settings-nav > button.is-active > i { border-color: var(--forest); background: var(--forest); color: white; }
.settings-nav > button > span { display: flex; flex-direction: column; gap: 3px; }
.settings-nav > button strong { font-size: 13px; }
.settings-nav > button small { color: #84918a; font-size: 11px; }
.settings-nav > button > svg { width: 11px; height: 11px; color: #a1aba5; }
.settings-help { margin-top: 22px; padding: 13px 10px; border-top: 1px solid var(--line); display: flex; align-items: center; gap: 9px; }
.settings-help > span { flex: 0 0 auto; width: 32px; height: 32px; border-radius: 8px; background: #eef2eb; color: #68766e; display: grid; place-items: center; font-size: 12px; font-weight: 900; }
.settings-help > div { display: flex; flex-direction: column; gap: 2px; }
.settings-help strong { font-size: 12px; }
.settings-help small { color: #7d8982; font-size: 11px; }

.settings-content { min-height: 590px; padding: 31px 33px; border: 1px solid var(--line); border-radius: 18px; background: white; }
.settings-heading { padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.settings-heading > span { color: #728078; font-size: 11px; font-weight: 900; letter-spacing: .15em; }
.settings-heading h2 { margin: 8px 0 7px; font-size: 31px; letter-spacing: -.045em; }
.settings-heading p { max-width: 720px; margin: 0; color: #66746d; font-size: 14px; line-height: 1.55; }
.profile-form, .preferences-form { padding-top: 24px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 19px 16px; }
.form-grid label { min-width: 0; }
.form-grid label > span { display: block; margin-bottom: 8px; color: #4f5e56; font-size: 12px; font-weight: 850; }
.form-grid input, .preference-row select { width: 100%; height: 48px; padding: 0 13px; border: 1px solid #d9e0d9; border-radius: 10px; outline: 0; background: #fbfcfa; color: var(--ink); font-size: 14px; transition: border .2s ease, box-shadow .2s ease; }
.form-grid input:focus, .preference-row select:focus { border-color: var(--forest-soft); box-shadow: 0 0 0 3px color-mix(in srgb, var(--forest) 10%, transparent); }
.form-grid input[readonly] { background: #f1f3ef; color: #78847d; cursor: not-allowed; }
.form-grid label > small { display: block; margin-top: 6px; color: #7e8983; font-size: 11px; }
.signature-card { margin-top: 25px; padding: 20px; border: 1px solid var(--line); border-radius: 14px; background: #f6f8f4; display: flex; justify-content: space-between; align-items: center; gap: 25px; }
.signature-card > div { display: flex; flex-direction: column; gap: 4px; }
.signature-card span { color: #76837c; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.signature-card strong { margin-top: 5px; font-family: Georgia, "Times New Roman", serif; font-size: 20px; font-style: italic; font-weight: 500; }
.signature-card small { color: #66746c; font-size: 12px; }
.signature-card p { max-width: 350px; margin: 0; color: #6d7a73; font-size: 12px; line-height: 1.5; }
.form-actions { margin-top: 25px; padding-top: 20px; border-top: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; gap: 15px; }
.form-actions > span { color: #748179; font-size: 12px; }
.form-actions button { height: 44px; padding: 0 17px; border: 0; border-radius: 10px; background: var(--forest); color: white; font-size: 12px; font-weight: 850; }

.settings-section { margin-top: 17px; padding: 19px; border: 1px solid var(--line); border-radius: 14px; background: #fbfcfa; }
.setting-title { margin-bottom: 16px; display: flex; justify-content: space-between; align-items: center; gap: 15px; }
.setting-title > div, .setting-toggle > div, .preference-row > div, .security-row > div { display: flex; flex-direction: column; gap: 4px; }
.setting-title strong, .setting-toggle strong, .preference-row strong, .security-row strong { font-size: 14px; }
.setting-title small, .setting-toggle small, .preference-row small, .security-row small { color: #748179; font-size: 12px; line-height: 1.4; }
.setting-title > em { padding: 6px 9px; border-radius: 999px; background: color-mix(in srgb, var(--forest) 10%, white); color: var(--forest); font-size: 10px; font-style: normal; font-weight: 850; }
.palette-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; }
.palette-option { min-height: 105px; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: white; display: flex; flex-direction: column; align-items: flex-start; text-align: left; position: relative; }
.palette-option.is-active { border-color: var(--forest); box-shadow: 0 0 0 2px color-mix(in srgb, var(--forest) 9%, transparent); }
.palette-option > i { width: 100%; height: 43px; padding: 6px; border-radius: 8px; background: var(--swatch-main); display: flex; align-items: end; gap: 4px; }
.palette-option > i b { display: block; border-radius: 3px; background: var(--swatch-accent); }
.palette-option > i b:first-child { width: 36%; height: 100%; }
.palette-option > i b:last-child { width: 54%; height: 55%; background: rgba(255,255,255,.7); }
.palette-option > span { margin-top: 8px; display: flex; flex-direction: column; gap: 2px; }
.palette-option strong { font-size: 12px; }
.palette-option small { color: #7f8a84; font-size: 11px; }
.palette-option > em { position: absolute; right: 8px; top: 8px; width: 20px; height: 20px; border-radius: 50%; background: var(--forest); color: white; display: none; place-items: center; font-size: 10px; font-style: normal; }
.palette-option.is-active > em { display: grid; }
.density-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.density-option { min-height: 88px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: white; display: flex; align-items: center; gap: 13px; text-align: left; }
.density-option.is-active { border-color: var(--forest); box-shadow: 0 0 0 2px color-mix(in srgb, var(--forest) 8%, transparent); }
.density-option > i { width: 74px; height: 53px; padding: 7px; border-radius: 8px; background: #edf1eb; display: flex; flex-direction: column; gap: 5px; }
.density-option > i b { height: 10px; border-radius: 3px; background: #cbd4cd; }
.density-option > i b:first-child { width: 58%; background: var(--forest-soft); }
.density-option > i.is-compact { gap: 3px; }
.density-option > i.is-compact b { height: 7px; }
.density-option > span { display: flex; flex-direction: column; gap: 4px; }
.density-option strong { font-size: 13px; }
.density-option small { color: #78857e; font-size: 11px; }
.setting-toggle { display: flex; justify-content: space-between; align-items: center; }
.switch { position: relative; width: 43px; height: 24px; }
.switch input { position: absolute; opacity: 0; }
.switch > span { position: absolute; inset: 0; border-radius: 999px; background: #ccd3ce; transition: background .2s ease; }
.switch > span::after { content: ""; position: absolute; width: 18px; height: 18px; left: 3px; top: 3px; border-radius: 50%; background: white; box-shadow: 0 2px 6px rgba(20,35,29,.2); transition: transform .2s ease; }
.switch input:checked + span { background: var(--forest); }
.switch input:checked + span::after { transform: translateX(19px); }
.theme-preview { min-height: 151px; margin-top: 17px; padding: 20px; border-radius: 15px; background: #edf0ea; display: grid; grid-template-columns: 1fr 260px; gap: 24px; align-items: center; }
.theme-preview > div > span { color: #6f7c75; font-size: 10px; font-weight: 900; letter-spacing: .13em; }
.theme-preview h3 { margin: 7px 0 5px; font-size: 21px; }
.theme-preview p { margin: 0; color: #6f7c75; font-size: 12px; }
.theme-preview article { min-height: 111px; padding: 13px; border-radius: 13px; background: var(--forest); color: white; display: grid; grid-template-columns: 1fr auto; }
.theme-preview article > span { grid-column: 1 / -1; color: #a7beb8; font-size: 10px; }
.theme-preview article > strong { align-self: center; color: var(--lime); font-size: 22px; }
.theme-preview article > small { grid-column: 1 / -1; color: #adbfba; font-size: 10px; }
.theme-preview article > button { grid-column: 2; grid-row: 2; border: 0; background: transparent; color: white; font-size: 10px; }

.preferences-form { padding-top: 7px; }
.preference-row { min-height: 79px; display: grid; grid-template-columns: 1fr 215px; gap: 25px; align-items: center; }
.preference-row select:disabled { color: #88938d; background: #eef1ed; }
.security-status { min-height: 118px; margin-top: 22px; padding: 21px; border-radius: 15px; background: var(--forest); color: white; display: grid; grid-template-columns: auto 1fr auto; gap: 16px; align-items: center; }
.security-shield { width: 50px; height: 50px; border-radius: 15px; background: var(--lime); color: var(--forest); display: grid; place-items: center; font-size: 18px; font-weight: 900; }
.security-status > div small { color: #9bb7af; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.security-status h3 { margin: 5px 0 3px; font-size: 21px; }
.security-status p { margin: 0; color: #b8cbc6; font-size: 12px; }
.security-status > em { padding: 8px 10px; border-radius: 999px; background: rgba(255,255,255,.08); color: #dce9e5; display: flex; align-items: center; gap: 6px; font-size: 10px; font-style: normal; font-weight: 800; }
.security-status > em i { width: 6px; height: 6px; border-radius: 50%; background: var(--lime); }
.security-row { min-height: 78px; display: grid; grid-template-columns: auto 1fr auto; gap: 13px; align-items: center; }
.security-icon { width: 38px; height: 38px; border-radius: 10px; background: color-mix(in srgb, var(--forest) 10%, white); color: var(--forest); display: grid; place-items: center; font-size: 11px; font-weight: 900; }
.security-row button { height: 38px; padding: 0 12px; border: 1px solid var(--line); border-radius: 8px; background: white; color: #59675f; font-size: 12px; font-weight: 800; }

.teacher-admin-heading { position: relative; padding-right: 180px; }
.teacher-admin-heading > .primary-action { position: absolute; right: 0; top: 4px; min-height: 43px; padding: 0 16px; border: 0; border-radius: 10px; background: var(--forest); color: white; font-size: 14px; font-weight: 850; }
.teacher-admin-root { padding-top: 22px; }
.teacher-admin-root.is-busy { opacity: .58; pointer-events: none; }
.teacher-admin-loading, .teacher-admin-empty { min-height: 180px; padding: 28px; border: 1px dashed #cfd8d1; border-radius: 16px; background: #f8faf7; color: #65736b; display: grid; place-items: center; text-align: center; font-size: 15px; }
.teacher-admin-empty { align-content: center; gap: 8px; }
.teacher-admin-empty strong { color: var(--ink); font-size: 19px; }
.teacher-admin-empty p { margin: 0; }
.teacher-admin-list { display: grid; gap: 15px; }
.teacher-admin-card { padding: 20px; border: 1px solid var(--line); border-radius: 16px; background: #fbfcfa; }
.teacher-admin-card.is-inactive { background: #f3f4f2; color: #6f7974; }
.teacher-admin-card > header { display: grid; grid-template-columns: auto 1fr auto; gap: 13px; align-items: center; }
.teacher-avatar { width: 48px; height: 48px; border-radius: 14px; background: color-mix(in srgb, var(--forest) 12%, white); color: var(--forest); display: grid; place-items: center; font-size: 16px; font-weight: 900; }
.teacher-admin-card h3 { margin: 0 0 3px; font-size: 20px; }
.teacher-admin-card header p { margin: 0; color: #738078; font-size: 14px; }
.teacher-status { padding: 7px 10px; border-radius: 999px; background: #e6f0df; color: #496942; display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 800; }
.teacher-status i { width: 7px; height: 7px; border-radius: 50%; background: #6f9a5d; }
.teacher-admin-card.is-inactive .teacher-status { background: #e4e6e3; color: #737b76; }
.teacher-admin-card.is-inactive .teacher-status i { background: #9aa19d; }
.teacher-contact { margin-top: 17px; padding: 13px 14px; border: 1px solid #e0e5df; border-radius: 11px; background: white; display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; }
.teacher-contact > span { color: #738078; font-size: 13px; }
.teacher-contact strong { min-width: 0; overflow-wrap: anywhere; font-size: 14px; }
.teacher-contact button { border: 0; background: transparent; color: var(--forest); font-size: 13px; font-weight: 850; }
.teacher-areas { margin-top: 13px; display: flex; flex-wrap: wrap; gap: 7px; }
.teacher-areas span { padding: 7px 10px; border-radius: 999px; background: color-mix(in srgb, var(--forest) 8%, white); color: var(--forest); font-size: 13px; font-weight: 750; }
.teacher-modules { margin-top: 14px; border-top: 1px solid var(--line); }
.teacher-modules summary { padding: 14px 0 2px; color: #526159; cursor: pointer; font-size: 14px; font-weight: 850; }
.teacher-modules ul { margin: 12px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; list-style: none; }
.teacher-modules li { min-width: 0; padding: 11px; border: 1px solid #e1e6e0; border-radius: 10px; background: white; display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; }
.teacher-modules li > span { min-width: 48px; padding: 5px 7px; border-radius: 7px; background: var(--forest); color: white; text-align: center; font-size: 12px; font-weight: 900; }
.teacher-modules li > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.teacher-modules li strong { font-size: 13px; line-height: 1.35; }
.teacher-modules li small { color: #77837c; font-size: 12px; line-height: 1.35; }
.teacher-modules li.is-empty { grid-column: 1 / -1; color: #748078; display: block; font-size: 14px; }
.teacher-admin-card > footer { margin-top: 16px; padding-top: 15px; border-top: 1px solid var(--line); display: flex; justify-content: flex-end; gap: 9px; }
.teacher-admin-card > footer button { min-height: 41px; padding: 0 13px; border: 1px solid var(--line); border-radius: 9px; background: white; color: #526159; font-size: 13px; font-weight: 850; }
.teacher-admin-card > footer button:disabled { opacity: .45; cursor: not-allowed; }
.teacher-admin-card > footer .danger-action { border-color: #eccbc4; color: #9b4537; }
.teacher-admin-form { display: grid; gap: 15px; }
.teacher-admin-form > label { display: grid; gap: 7px; color: #526159; font-size: 14px; font-weight: 800; }
.teacher-admin-form input[type="email"], .teacher-admin-form input:not([type]) { width: 100%; min-height: 46px; padding: 0 12px; border: 1px solid #d8dfd8; border-radius: 9px; font: inherit; }
.teacher-admin-form fieldset { padding: 14px; border: 1px solid #dfe5de; border-radius: 11px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.teacher-admin-form legend { padding: 0 6px; color: #526159; font-size: 13px; font-weight: 850; }
.teacher-admin-form fieldset label { display: flex; align-items: center; gap: 7px; font-size: 13px; }
.teacher-mail-result { margin-bottom: 17px; padding: 17px; border-radius: 12px; background: #eef6e9; display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: center; }
.teacher-mail-result > span { width: 36px; height: 36px; border-radius: 50%; background: #5f8652; color: white; display: grid; place-items: center; font-weight: 900; }
.teacher-mail-result strong { font-size: 16px; }
.teacher-mail-result p { margin: 5px 0 0; color: #65736b; font-size: 14px; line-height: 1.45; }
.teacher-mail-result.is-warning { background: #fff6dc; }
.teacher-mail-result.is-warning > span { background: #c18a19; }
.security-row button:disabled { color: #a0aaa4; background: #f0f2ef; }
.managed-badge { padding: 7px 9px; border-radius: 999px; background: #e7eee4; color: #60745a; font-size: 10px; font-weight: 850; }
.security-note { margin-top: 17px; padding: 16px; border: 1px solid #eadcb9; border-radius: 13px; background: #fbf4e3; display: flex; gap: 12px; }
.security-note > span { flex: 0 0 auto; width: 27px; height: 27px; border-radius: 8px; background: #f2dfae; color: #7d6124; display: grid; place-items: center; font-size: 9px; font-weight: 900; }
.security-note strong { font-size: 13px; }
.security-note p { margin: 5px 0 0; color: #6e6147; font-size: 12px; line-height: 1.5; }

.app-toast { position: fixed; z-index: 100; right: 24px; bottom: 24px; min-height: 50px; padding: 0 16px 0 10px; border-radius: 13px; background: var(--forest); color: white; box-shadow: 0 16px 36px rgba(19,43,36,.22); display: flex; align-items: center; gap: 9px; opacity: 0; transform: translateY(12px); transition: opacity .25s ease, transform .25s ease; font-size: 12px; font-weight: 800; }
.app-toast.is-visible { opacity: 1; transform: translateY(0); }
.app-toast > span { width: 28px; height: 28px; border-radius: 8px; background: var(--lime); color: var(--forest); display: grid; place-items: center; font-weight: 900; }

/* Calendario del centro */
.center-calendar-page { max-width: 1440px; margin: 0 auto; padding: 27px 44px 76px; }
.school-calendar-hero { min-height: 190px; margin-top: 19px; padding: 32px 35px; border-radius: 23px; overflow: hidden; background: linear-gradient(118deg, var(--forest), color-mix(in srgb, var(--forest) 82%, #699184)); color: white; display: flex; align-items: center; justify-content: space-between; gap: 30px; position: relative; }
.school-calendar-hero::before, .school-calendar-hero::after { content: ""; position: absolute; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; }
.school-calendar-hero::before { width: 330px; height: 330px; right: 15%; top: -235px; }
.school-calendar-hero::after { width: 210px; height: 210px; right: 28%; bottom: -180px; }
.school-calendar-hero > div:first-child { position: relative; z-index: 1; }
.school-calendar-hero > div:first-child > span { color: color-mix(in srgb, var(--lime) 74%, white); font-size: 8px; font-weight: 900; letter-spacing: .16em; }
.school-calendar-hero h1 { margin: 12px 0 8px; font-size: clamp(34px, 4vw, 54px); line-height: 1; letter-spacing: -.055em; }
.school-calendar-hero h1 em { color: var(--lime); font-family: Georgia, "Times New Roman", serif; font-weight: 500; }
.school-calendar-hero p { margin: 0; color: rgba(255,255,255,.68); font-size: 10px; }
.calendar-official-seal { flex: 0 0 auto; width: 106px; height: 106px; border-radius: 25px; background: var(--lime); color: var(--forest); display: grid; place-items: center; align-content: center; gap: 7px; transform: rotate(2deg); box-shadow: 0 15px 35px rgba(0,0,0,.14); position: relative; z-index: 1; }
.calendar-official-seal strong { font-family: Georgia, "Times New Roman", serif; font-size: 30px; line-height: 1; }
.calendar-official-seal small { font-size: 6px; font-weight: 900; letter-spacing: .14em; }
.calendar-module-seal { width: 124px; }
.calendar-module-seal strong { max-width: 105px; overflow: hidden; font-family: Inter, sans-serif; font-size: 20px; letter-spacing: -.05em; text-overflow: ellipsis; }
.calendar-module-seal small { text-transform: uppercase; }

.calendar-controls { margin-top: 15px; padding: 15px; border: 1px solid var(--line); border-radius: 18px; background: white; box-shadow: 0 8px 30px rgba(35,52,45,.04); display: grid; grid-template-columns: 1fr .55fr 1.45fr; gap: 13px; }
.calendar-controls--module { display: block; }
.module-calendar-context { min-height: 74px; padding: 11px 14px; border-radius: 14px; background: #f1f4ef; display: grid; grid-template-columns: 50px 1fr; gap: 12px; align-items: center; }
.module-calendar-context > span { width: 50px; height: 50px; border-radius: 13px; background: var(--forest); color: white; display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.module-calendar-context > div { min-width: 0; display: grid; grid-template-columns: 1fr auto; gap: 3px 10px; align-items: center; }
.module-calendar-context small { grid-column: 1 / -1; color: #7f8b85; font-size: 6px; font-weight: 900; letter-spacing: .12em; }
.module-calendar-context strong { min-width: 0; overflow: hidden; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.module-calendar-context em { padding: 6px 8px; border-radius: 999px; background: white; color: #68756e; font-size: 6px; font-style: normal; font-weight: 800; white-space: nowrap; }
.calendar-filter-group { min-width: 0; }
.calendar-filter-group > span { display: block; margin: 0 0 8px 4px; color: #7f8b85; font-size: 7px; font-weight: 900; letter-spacing: .14em; }
.calendar-filter-group > div { min-height: 45px; padding: 4px; border-radius: 12px; background: #edf0ea; display: flex; gap: 4px; }
.calendar-filter-group button { flex: 1; min-width: 0; padding: 0 13px; border: 0; border-radius: 9px; background: transparent; color: #748079; font-size: 8px; font-weight: 800; transition: background .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease; }
.calendar-filter-group button:hover:not(:disabled) { color: var(--ink); transform: translateY(-1px); }
.calendar-filter-group button.is-active { background: var(--forest); color: white; box-shadow: 0 7px 16px rgba(23,63,55,.17); }
.calendar-filter-group button:disabled { color: #a5ada9; cursor: not-allowed; background: rgba(255,255,255,.35); }
.calendar-filter-group button small { display: block; margin-top: 2px; color: #a48e59; font-size: 5px; text-transform: uppercase; letter-spacing: .08em; }
.module-calendar-heading { padding-top: 31px; }

.term-highlight-banner { min-height: 106px; margin: 15px 0; padding: 19px 23px; border: 1px solid color-mix(in srgb, var(--forest) 18%, var(--line)); border-radius: 18px; background: color-mix(in srgb, var(--lime) 34%, white); display: grid; grid-template-columns: auto 1fr auto; gap: 18px; align-items: center; animation: calendarPeriodIn .38s cubic-bezier(.2,.8,.2,1) both; }
.term-highlight-banner > span { width: 58px; height: 58px; border-radius: 16px; background: var(--forest); color: white; display: grid; place-items: center; font-size: 16px; font-weight: 900; }
.term-highlight-banner > div > small { color: color-mix(in srgb, var(--forest) 72%, #77837d); font-size: 6px; font-weight: 900; letter-spacing: .14em; }
.term-highlight-banner h2 { margin: 5px 0 4px; font-size: 20px; letter-spacing: -.04em; }
.term-highlight-banner p { margin: 0; color: #66736c; font-size: 8px; }
.term-highlight-banner > em { padding: 9px 11px; border-radius: 999px; background: rgba(255,255,255,.68); color: var(--forest); font-size: 7px; font-style: normal; font-weight: 850; }
.evaluation-milestones { margin: 0 0 15px; overflow: hidden; border: 1px solid #d9d0ee; border-radius: 18px; background: #fbf9ff; box-shadow: 0 8px 25px rgba(74,52,120,.055); }
.evaluation-milestones > header { min-height: 74px; padding: 15px 20px; border-bottom: 1px solid #e7e0f3; background: linear-gradient(105deg, #f2ecff, #fffaf0); display: flex; justify-content: space-between; align-items: center; gap: 20px; }
.evaluation-milestones > header span { color: #7554a6; font-size: 10px; font-weight: 900; letter-spacing: .13em; }
.evaluation-milestones > header h2 { margin: 5px 0 0; font-size: 19px; letter-spacing: -.035em; }
.evaluation-milestones > header p { margin: 0; color: #756d7f; font-size: 11px !important; font-weight: 750; }
.evaluation-milestones > div { padding: 12px; display: grid; grid-template-columns: repeat(auto-fit, minmax(205px, 1fr)); gap: 9px; }
.evaluation-milestone { min-height: 91px; padding: 14px 15px; border: 1px solid #e5def0; border-left: 5px solid var(--evaluation-accent, #7657ad); border-radius: 13px; background: white; display: flex; flex-direction: column; justify-content: center; gap: 5px; }
.evaluation-milestone time { color: var(--evaluation-accent, #7657ad); font-size: 12px; font-weight: 900; text-transform: capitalize; }
.evaluation-milestone strong { color: #2e2738; font-size: 13px; line-height: 1.25; }
.evaluation-milestone small { color: #726b79; font-size: 11px !important; line-height: 1.35; }
.evaluation-milestone.is-initial { --evaluation-accent: #3979ae; }
.evaluation-milestone.is-partial { --evaluation-accent: #7657ad; }
.evaluation-milestone.is-final { --evaluation-accent: #397e59; }
.evaluation-milestone.is-company { --evaluation-accent: #c07a22; }
.evaluation-milestone.is-special { --evaluation-accent: #b45f55; }
.evaluation-milestones--compact { margin: 0 0 15px; }
.evaluation-milestones--compact > div { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.evaluation-milestones--compact .evaluation-milestone { min-height: 84px; }
.company-training-banner { min-height: 67px; margin: 0 0 15px; padding: 12px 16px; border: 1px solid #ebd99f; border-radius: 15px; background: #fff8df; display: flex; align-items: center; gap: 12px; }
.company-training-banner > span { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 10px; background: #efd67c; color: #695018; display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.company-training-banner > div { display: flex; flex-direction: column; gap: 3px; }
.company-training-banner strong { color: #66501e; font-size: 9px; }
.company-training-banner small { color: #897543; font-size: 7px; }
.module-term-load { margin-top: 15px; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: white; }
.module-term-load > header { min-height: 82px; padding: 17px 20px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; gap: 24px; }
.module-term-load > header span { color: var(--group-accent); font-size: 6px; font-weight: 900; letter-spacing: .14em; }
.module-term-load > header h2 { margin: 5px 0 0; font-size: 18px; letter-spacing: -.035em; }
.module-term-load > header p { max-width: 420px; margin: 0; color: #7b8781; font-size: 7px; line-height: 1.5; text-align: right; }
.module-term-cards { padding: 11px; display: grid; grid-template-columns: repeat(var(--module-terms), 1fr); gap: 9px; }
.module-term-cards button { min-height: 91px; padding: 13px; border: 1px solid transparent; border-radius: 13px; background: color-mix(in srgb, var(--group-bg) 66%, white); color: var(--group-ink); display: grid; grid-template-columns: auto 1fr; gap: 11px; align-items: center; text-align: left; transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease; }
.module-term-cards button:hover { transform: translateY(-2px); }
.module-term-cards button.is-active { border-color: var(--group-accent); box-shadow: 0 8px 22px color-mix(in srgb, var(--group-accent) 18%, transparent); }
.module-term-cards button > span { width: 35px; height: 35px; border-radius: 10px; background: color-mix(in srgb, var(--group-accent) 84%, #27362f); color: white; display: grid; place-items: center; font-size: 8px; font-weight: 900; }
.module-term-cards button > div { display: grid; grid-template-columns: 1fr auto; gap: 3px 8px; align-items: end; }
.module-term-cards small { color: color-mix(in srgb, var(--group-ink) 68%, #7b8781); font-size: 6px; font-weight: 800; }
.module-term-cards strong { grid-row: span 2; font-size: 25px; letter-spacing: -.05em; }
.module-term-cards strong em { font-size: 9px; font-style: normal; }
.module-term-cards p { margin: 0; color: color-mix(in srgb, var(--group-ink) 60%, #8c9691); font-size: 6px; }
.module-term-load > footer { min-height: 43px; padding: 9px 14px; border-top: 1px solid #edf0ec; background: #fafbf8; display: flex; align-items: center; gap: 9px; }
.module-term-load > footer span { flex: 0 0 auto; width: 21px; height: 21px; border-radius: 7px; background: #e7ebe5; color: #78847e; display: grid; place-items: center; font-size: 7px; font-weight: 900; }
.module-term-load > footer p { margin: 0; color: #87918c; font-size: 6px; line-height: 1.45; }
.module-weekly-pattern { min-height: 96px; margin: 0 0 15px; padding: 13px; border: 1px solid color-mix(in srgb, var(--group-accent) 25%, var(--line)); border-radius: 16px; background: color-mix(in srgb, var(--group-bg) 28%, white); display: grid; grid-template-columns: 225px 1fr; gap: 13px; align-items: stretch; }
.module-weekly-pattern > div { padding: 3px 8px; display: flex; flex-direction: column; justify-content: center; }
.module-weekly-pattern > div > span { color: var(--group-accent); font-size: 6px; font-weight: 900; letter-spacing: .13em; }
.module-weekly-pattern > div > strong { margin: 6px 0 3px; font-size: 11px; }
.module-weekly-pattern > div > small { color: #7b8781; font-size: 6px; }
.module-weekly-pattern > section { display: grid; grid-template-columns: repeat(var(--module-days), minmax(112px, 1fr)); gap: 7px; }
.module-weekly-pattern article { min-width: 0; min-height: 68px; padding: 9px; border: 1px solid color-mix(in srgb, var(--group-accent) 17%, transparent); border-radius: 11px; background: rgba(255,255,255,.76); display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: center; }
.module-weekly-pattern article > span { width: 27px; height: 27px; border-radius: 8px; background: var(--group-accent); color: white; display: grid; place-items: center; font-size: 6px; font-weight: 900; }
.module-weekly-pattern article > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.module-weekly-pattern article strong { font-size: 7px; }
.module-weekly-pattern article small { overflow: hidden; color: #7b8781; font-size: 5px; text-overflow: ellipsis; white-space: nowrap; }
.module-weekly-pattern article em { color: var(--group-ink); font-size: 7px; font-style: normal; font-weight: 900; white-space: nowrap; }

.calendar-page-layout { display: grid; grid-template-columns: minmax(0, 1fr) 255px; gap: 15px; align-items: start; }
.school-calendar-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.school-month { min-width: 0; min-height: 260px; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: white; box-shadow: 0 1px 0 rgba(255,255,255,.7) inset; transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease; }
.school-month.is-selected-month { border-color: color-mix(in srgb, var(--forest) 34%, var(--line)); box-shadow: 0 11px 28px rgba(35,52,45,.08); }
.school-month > header { height: 47px; padding: 0 15px; background: var(--forest); color: white; display: flex; align-items: center; justify-content: space-between; text-transform: capitalize; }
.school-month > header strong { font-size: 12px; letter-spacing: -.02em; }
.school-month > header span { color: rgba(255,255,255,.58); font-size: 7px; font-weight: 750; }
.calendar-weekdays { height: 31px; padding: 0 8px; background: color-mix(in srgb, var(--forest-soft) 88%, #2aa5c4); color: white; display: grid; grid-template-columns: repeat(7, 1fr); align-items: center; text-align: center; }
.calendar-weekdays span { font-size: 6px; font-weight: 900; }
.calendar-weekdays span:last-child { color: #ffd6d2; }
.calendar-days { padding: 9px 8px 11px; display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.calendar-day { aspect-ratio: 1; min-width: 0; border-radius: 7px; display: grid; place-items: center; color: #46534d; font-size: 7px; position: relative; transition: opacity .2s ease, transform .2s ease, background .2s ease; }
.calendar-day b { font-weight: 750; }
.calendar-day.is-empty { pointer-events: none; }
.calendar-day.is-in-period { background: color-mix(in srgb, var(--lime) 32%, white); color: var(--forest); }
.calendar-day.is-outside-period { opacity: .25; }
.calendar-day.is-sunday { color: #bb4a45; }
.calendar-day.has-event { opacity: 1; font-weight: 900; }
.calendar-day.has-event::after { content: ""; position: absolute; bottom: 3px; width: 3px; height: 3px; border-radius: 50%; background: currentColor; opacity: .7; }
.calendar-day.is-vacation { background: #cfe9bd; color: #476d3d; }
.calendar-day.is-nonlective { background: #e5f1c9; color: #6d7e31; }
.calendar-day.is-holiday { background: #f4d0cc; color: #a83e39; }
.calendar-day.is-course-date { background: #d6e6f3; color: #35658c; }
.calendar-day.has-module-class { opacity: 1; background: var(--group-bg); color: var(--group-ink); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--group-accent) 45%, transparent); }
.calendar-day.has-module-class::after { display: none; }
.calendar-day-badges { max-width: calc(100% - 4px); overflow: hidden; position: absolute; right: 2px; bottom: 2px; display: flex; justify-content: flex-end; gap: 1px; }
.calendar-day-badges small { position: static; min-width: 14px; padding: 2px 3px; overflow: hidden; border-radius: 4px; background: var(--forest-soft); color: white; font-size: 4px; font-weight: 900; line-height: 1; text-overflow: clip; white-space: nowrap; }
.module-calendar-page .calendar-day > b { position: absolute; top: 3px; left: 4px; z-index: 1; line-height: 1; }
.module-calendar-page .calendar-day-badges { max-width: none; left: 3px; right: 3px; bottom: 2px; justify-content: center; }
.module-calendar-page .calendar-day-badges small { line-height: 1 !important; }
.calendar-day.has-module-class .calendar-topic-badge { background: var(--group-accent); color: white; }
.module-calendar-page .calendar-day.has-module-class .calendar-topic-badge { min-width: 25px; min-height: 18px; padding: 4px 5px; border-radius: 5px; display: grid; place-items: center; font-size: 10px; }
.module-calendar-page .calendar-day .calendar-purpose-badge,
.module-calendar-page .calendar-day.is-evaluation .calendar-evaluation-badge { min-height: 18px; padding: 4px 5px; font-size: 9px; }
.calendar-day .calendar-purpose-badge--intro { background: #4e79bd; color: white; }
.calendar-day .calendar-purpose-badge--review { background: #e3a42a; color: #3f310f; }
.calendar-day.is-evaluation { opacity: 1; background: #7455ad; color: white; box-shadow: inset 0 0 0 2px #5b3d92, 0 3px 9px rgba(91,61,146,.26); transform: scale(1.05); z-index: 3; }
.calendar-day.is-evaluation::after { display: none; }
.calendar-day.is-evaluation .calendar-topic-badge { background: white; color: #5b3d92; }
.calendar-day.is-evaluation .calendar-evaluation-badge { min-width: 15px; background: #f5dc7b; color: #5a4510; font-size: 5px; font-weight: 950; }
.calendar-day.is-period-start, .calendar-day.is-period-end { outline: 2px solid var(--forest); outline-offset: 1px; transform: scale(1.04); z-index: 2; }

.calendar-side-panel { display: grid; gap: 11px; position: sticky; top: 97px; }
.calendar-side-panel > section { padding: 17px; border: 1px solid var(--line); border-radius: 16px; background: white; }
.calendar-side-panel section > span { display: block; margin-bottom: 12px; color: #7d8983; font-size: 6px; font-weight: 900; letter-spacing: .14em; }
.calendar-side-panel section > p:not(.calendar-current-course) { margin: 9px 0; display: flex; align-items: center; gap: 9px; }
.calendar-side-panel section > p strong { color: #5f6b65; font-size: 7px; }
.calendar-topic-key > p { align-items: flex-start !important; }
.calendar-topic-key > p > b { flex: 0 0 auto; min-width: 31px; min-height: 25px; border-radius: 7px; background: var(--forest); color: white; display: grid; place-items: center; font-size: 8px; }
.calendar-topic-key > p > strong { flex: 1; line-height: 1.35; }
.calendar-topic-key > p > small { color: var(--forest-soft); font-weight: 900; white-space: nowrap; }
.calendar-purpose-key > p { align-items: flex-start !important; }
.calendar-purpose-key > p > b { flex: 0 0 auto; min-width: 43px; min-height: 25px; padding: 0 6px; border-radius: 7px; color: white; display: grid; place-items: center; font-size: 7px; }
.calendar-purpose-key > p > b.is-intro { background: #4e79bd; }
.calendar-purpose-key > p > b.is-review { background: #e3a42a; color: #3f310f; }
.calendar-purpose-key > p > strong { flex: 1; line-height: 1.35; }
.legend-swatch { flex: 0 0 auto; width: 21px; height: 21px; border-radius: 6px; }
.legend-swatch.is-selected { background: color-mix(in srgb, var(--lime) 40%, white); outline: 1px solid color-mix(in srgb, var(--forest) 38%, white); }
.legend-swatch.is-vacation { background: #cfe9bd; }
.legend-swatch.is-nonlective { background: #e5f1c9; }
.legend-swatch.is-holiday { background: #f4d0cc; }
.legend-swatch.is-course { background: #d6e6f3; }
.legend-swatch.is-evaluation { background: #7455ad; box-shadow: inset 0 0 0 2px #5b3d92; }
.legend-swatch.is-module-class { background: var(--group-bg); box-shadow: inset 0 0 0 1px var(--group-accent); }
.calendar-side-panel h3 { margin: 0; font-size: 15px; letter-spacing: -.03em; }
.calendar-current-course { margin: 4px 0 13px; color: #7c8882; font-size: 7px; }
.calendar-side-panel dl { margin: 0; }
.calendar-side-panel dl > div { padding: 9px 0; border-top: 1px solid #edf0ec; display: flex; justify-content: space-between; gap: 8px; }
.calendar-side-panel dt { color: #87918c; font-size: 6px; }
.calendar-side-panel dd { margin: 0; color: #4f5d56; font-size: 6px; font-weight: 800; text-align: right; }
.calendar-side-panel .calendar-source-note { background: var(--forest); color: white; }
.calendar-source-note > span { color: color-mix(in srgb, var(--lime) 70%, white) !important; }
.calendar-source-note strong { display: block; margin-bottom: 7px; font-size: 9px; }
.calendar-source-note p { margin: 0 !important; color: rgba(255,255,255,.62); font-size: 7px; line-height: 1.55; display: block !important; }
.calendar-pending { max-width: 760px; min-height: 390px; margin: 42px auto 0; padding: 54px; border: 1px solid var(--line); border-radius: 24px; background: white; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.calendar-pending-icon { width: 66px; height: 66px; margin-bottom: 22px; border-radius: 18px; background: var(--lime); color: var(--forest); display: grid; place-items: center; font-size: 12px; font-weight: 900; transform: rotate(-3deg); }
.calendar-pending > small { color: #7f8b85; font-size: 7px; font-weight: 900; letter-spacing: .15em; }
.calendar-pending h1 { max-width: 620px; margin: 11px 0 10px; font-size: 34px; line-height: 1.05; letter-spacing: -.045em; }
.calendar-pending p { max-width: 500px; margin: 0 0 22px; color: var(--muted); font-size: 9px; line-height: 1.6; }

.electricity-page { max-width: 1440px; margin: 0 auto; padding: 34px 44px 82px; }
.electricity-hero { min-height: 315px; margin-top: 20px; padding: 36px 38px 30px; overflow: hidden; border-radius: 25px; background: linear-gradient(125deg, #172522 0%, #263531 58%, #34433e 100%); color: white; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 25px; position: relative; box-shadow: 0 24px 54px rgba(27, 39, 35, .14); }
.electricity-hero::before { content: ""; position: absolute; width: 430px; height: 430px; right: -115px; top: -300px; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; box-shadow: 0 0 0 54px rgba(255,255,255,.025), 0 0 0 108px rgba(255,255,255,.018); }
.electricity-hero::after { content: ""; position: absolute; width: 210px; height: 210px; right: 27%; bottom: -185px; border: 1px solid rgba(247,199,89,.13); border-radius: 50%; }
.electricity-hero-copy { max-width: 850px; position: relative; z-index: 1; }
.electricity-kicker { color: #f7c759; font-size: 7px; font-weight: 900; letter-spacing: .18em; }
.electricity-hero h1 { max-width: 820px; margin: 13px 0 12px; font-size: clamp(36px, 4.4vw, 62px); line-height: .97; letter-spacing: -.06em; }
.electricity-hero-copy > p { margin: 0; color: rgba(255,255,255,.62); font-size: 9px; }
.electricity-hero-copy > a { width: max-content; margin-top: 23px; padding-bottom: 3px; border-bottom: 1px solid rgba(247,199,89,.4); color: #f7c759; font-size: 8px; font-weight: 800; display: flex; align-items: center; gap: 7px; transition: color .2s ease, border-color .2s ease; }
.electricity-hero-copy > a:hover { color: white; border-color: white; }
.electricity-mark { width: 106px; height: 106px; border: 1px solid rgba(255,255,255,.12); border-radius: 27px; background: rgba(255,255,255,.07); display: grid; place-items: center; transform: rotate(4deg); position: relative; z-index: 1; }
.electricity-mark svg { width: 52px; height: 52px; fill: #f7c759; stroke: none; filter: drop-shadow(0 8px 14px rgba(0,0,0,.22)); }
.electricity-progress { grid-column: 1 / -1; min-height: 88px; margin-top: 7px; padding: 16px 19px; border: 1px solid rgba(255,255,255,.11); border-radius: 18px; background: rgba(255,255,255,.07); backdrop-filter: blur(8px); display: grid; grid-template-columns: 1fr 1px 1fr; gap: 22px; align-items: center; position: relative; z-index: 1; }
.electricity-progress > i { width: 1px; height: 48px; background: rgba(255,255,255,.14); }
.electricity-progress > div { display: grid; grid-template-columns: auto 1fr; column-gap: 15px; align-items: end; }
.electricity-progress span { grid-column: 1 / -1; margin-bottom: 3px; color: rgba(255,255,255,.46); font-size: 6px; font-weight: 900; letter-spacing: .14em; }
.electricity-progress strong { color: #f7c759; font-size: 34px; line-height: 1; letter-spacing: -.05em; }
.electricity-progress strong small { color: rgba(255,255,255,.45); font-size: 15px; }
.electricity-progress p { margin: 0 0 3px; color: rgba(255,255,255,.68); font-size: 8px; }
.electricity-intro { padding: 38px 3px 20px; display: flex; justify-content: space-between; align-items: end; gap: 32px; }
.electricity-intro span { color: #8a958f; font-size: 7px; font-weight: 900; letter-spacing: .16em; }
.electricity-intro h2 { margin: 7px 0 0; font-size: 30px; letter-spacing: -.045em; }
.electricity-intro p { max-width: 475px; margin: 0; color: var(--muted); font-size: 9px; line-height: 1.55; text-align: right; }
.electricity-years { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
.electricity-year-card { overflow: hidden; border: 1px solid var(--line); border-radius: 22px; background: white; box-shadow: 0 13px 36px rgba(36,53,46,.055); animation: cardEnter .52s cubic-bezier(.2,.75,.2,1) both; }
.electricity-year-card--pending { animation-delay: 70ms; }
.electricity-year-card > header { min-height: 104px; padding: 20px 20px 19px; border-bottom: 1px solid #e8ece6; background: #f8faf6; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; }
.electricity-year-card--complete > header { background: linear-gradient(120deg, #f0f8e9, #f8fbf5); }
.electricity-year-card--pending > header { background: linear-gradient(120deg, #fff7df, #fffaf0); }
.electricity-year-number { width: 49px; height: 49px; border-radius: 15px; background: var(--forest); color: white; display: grid; place-items: center; font-size: 11px; font-weight: 900; transform: rotate(-3deg); }
.electricity-year-card--pending .electricity-year-number { background: #e2a523; color: #2e291d; transform: rotate(3deg); }
.electricity-year-card header small { color: #88938d; font-size: 6px; font-weight: 900; letter-spacing: .14em; }
.electricity-year-card header h2 { margin: 5px 0 3px; font-size: 19px; letter-spacing: -.035em; }
.electricity-year-card header p { margin: 0; color: #829089; font-size: 7px; }
.electricity-year-state { min-height: 30px; padding: 0 10px; border-radius: 999px; background: #dcefd1; color: #46643c; display: inline-flex; align-items: center; gap: 6px; font-size: 6px; font-weight: 900; white-space: nowrap; }
.electricity-year-state i { width: 16px; height: 16px; border-radius: 50%; background: #6c9658; color: white; display: grid; place-items: center; font-size: 7px; font-style: normal; }
.electricity-year-state--pending { background: #f9e5ac; color: #765b19; }
.electricity-module-list { margin: 0; padding: 8px 18px 13px; list-style: none; }
.electricity-module-row { min-height: 55px; padding: 9px 2px; border-bottom: 1px solid #edf0ec; display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 11px; align-items: center; }
.electricity-module-row:last-child { border-bottom: 0; }
.electricity-module-code { width: 48px; min-height: 27px; padding: 0 5px; border-radius: 8px; background: #eff2ed; color: #74817a; display: grid; place-items: center; font-size: 6px; font-weight: 900; letter-spacing: .03em; }
.electricity-module-row > strong { font-size: 8px; line-height: 1.35; }
.electricity-status { min-height: 26px; padding: 0 8px; border-radius: 999px; font-size: 6px; font-weight: 850; display: flex; align-items: center; gap: 5px; white-space: nowrap; }
.electricity-status--approved { background: #edf6e8; color: #547447; }
.electricity-status--pending { background: #fff0bf; color: #77500e; }
.electricity-module-row.is-pending { background: #fffbeb; box-shadow: inset 3px 0 #e5ad29; padding-left: 10px; border-radius: 8px; }
.study-progress-notice { margin: 18px; font-size: 1rem; }
.study-module-options { display: grid; gap: 14px; margin: 18px 0 24px; }
.study-module-options label { display: flex; align-items: flex-start; gap: 12px; font-size: 1rem; line-height: 1.5; }
.study-module-options input { width: 20px; height: 20px; flex-shrink: 0; margin-top: 2px; accent-color: var(--forest); }
.electricity-status i { font-style: normal; }
.electricity-pending-box { margin: 14px 17px 3px; padding: 15px; border: 1px solid #f0d899; border-radius: 15px; background: #fff9e9; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 17px; align-items: center; }
.electricity-pending-box > div:first-child > span { color: #a07a24; font-size: 6px; font-weight: 900; letter-spacing: .14em; }
.electricity-pending-box > div:first-child > strong { display: block; margin-top: 5px; color: #594a27; font-size: 9px; }
.electricity-pending-box p { max-width: 230px; margin: 4px 0 0; color: #8e7d54; font-size: 7px; line-height: 1.45; }
.electricity-pending-slots { display: flex; gap: 5px; }
.electricity-pending-slots span { width: 68px; min-height: 61px; padding: 7px 4px; border: 1px dashed #d7b75f; border-radius: 10px; color: #886b26; background: rgba(255,255,255,.58); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; font-size: 5px; font-weight: 850; text-align: center; }
.electricity-pending-slots i { width: 20px; height: 20px; border-radius: 50%; background: #ecc252; color: #4d401f; display: grid; place-items: center; font-size: 7px; font-style: normal; }
.electricity-module-list--unresolved { padding-top: 6px; }
.electricity-module-list--unresolved .electricity-module-row { grid-template-columns: 48px minmax(0, 1fr); }
.electricity-source { min-height: 76px; margin-top: 18px; padding: 17px 20px; border: 1px solid var(--line); border-radius: 17px; background: rgba(255,255,255,.65); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 18px; align-items: center; }
.electricity-source > span { color: #89958e; font-size: 6px; font-weight: 900; letter-spacing: .13em; }
.electricity-source p { margin: 0; color: #738078; font-size: 7px; line-height: 1.5; }
.electricity-source div { display: flex; gap: 7px; }
.electricity-source a { min-height: 30px; padding: 0 10px; border: 1px solid var(--line); border-radius: 9px; background: white; display: inline-flex; align-items: center; color: #58665f; font-size: 6px; font-weight: 850; transition: border-color .2s ease, color .2s ease; }
.electricity-source a:hover { border-color: #e2a523; color: #8b6716; }

/* Legibilidad de los espacios interiores */
.module-workspace p,
.center-calendar-page p,
.electricity-page p,
.profile-page p,
.public-catalog-page p,
.public-module-page p { font-size: var(--type-body) !important; line-height: 1.5; }
.module-workspace small,
.center-calendar-page small,
.electricity-page small,
.profile-page small,
.public-catalog-page small,
.public-module-page small { font-size: var(--type-caption) !important; line-height: 1.35; }
.module-workspace .grade-metrics small,
.module-workspace .grade-metrics p { color: #6f7b75; }
.module-workspace .grade-table th { height: 50px; font-size: 12px; }
.module-workspace .grade-table th small { font-size: 11px !important; }
.module-workspace .grade-table td { height: 62px; font-size: 12px; }
.module-workspace .student-avatar { width: 33px; height: 33px; font-size: 10px; }
.module-workspace .grade-table td:first-child strong { font-size: 12px; }
.module-workspace .student-placeholder-name small { font-size: 10px !important; }
.module-workspace .score { min-width: 39px; height: 31px; font-size: 12px; }
.module-workspace .row-menu { font-size: 12px; }
.module-workspace .student-list-footer,
.module-workspace .student-list-footer strong { font-size: 11px; }
.module-workspace .evidence-card time span { font-size: 10px; }
.module-workspace .evidence-card > div strong { max-width: 190px; font-size: 12px; }
.module-workspace .evidence-type { font-size: 10px; }
.module-workspace .evidence-card > em { font-size: 12px; }
.module-workspace .weight-check > span { font-size: 11px; }
.module-workspace .weight-check strong { font-size: 11px; }
.evidence-modal > header span,
.evidence-field > span { font-size: 12px; }
.evidence-modal > header h2 { font-size: 28px; }
.evidence-modal > header p { font-size: 13px; line-height: 1.5; }
.evidence-field input,
.evidence-field select { font-size: 14px; }
.evidence-modal .weight-input em { font-size: 13px; }
.module-workspace .timeline-summary span,
.module-workspace .unit-number,
.module-workspace .unit-progress span { font-size: 11px; }
.module-workspace .unit-main strong { font-size: 13px; }
.module-workspace .unit-hours > span { font-size: 9px; }
.module-workspace .unit-hours strong { font-size: 21px; }
.module-workspace .unit-status { font-size: 10px; }
.module-workspace .unit-row > button { font-size: 12px; }
.module-workspace .official-data-label { min-height: 35px; font-size: 10px; }
.module-workspace .official-seal small { font-size: 9px !important; }
.module-workspace .curriculum-source-banner > div > span,
.module-workspace .curriculum-source-meta > span { font-size: 10px !important; }
.module-workspace .curriculum-source-meta strong { font-size: 13px; }
.module-workspace .curriculum-path > div > span { width: 31px; height: 31px; font-size: 10px; }
.module-workspace .curriculum-path > div > strong { font-size: 12px; }
.module-workspace .curriculum-path > i { font-size: 13px; }
.module-workspace .program-overview article > span { font-size: 11px; }
.module-workspace .program-overview small,
.module-workspace .program-overview p { color: #6f7b75; }
.module-workspace .curriculum-tabs button span { font-size: 12px; }
.module-workspace .curriculum-tabs button small { font-size: 10px !important; }
.module-workspace .ra-index-heading > span,
.module-workspace .criteria-heading span,
.module-workspace .module-links-strip > div > span,
.module-workspace .general-competence-card > div > span,
.module-workspace .curriculum-filterbar > div:first-child > span,
.module-workspace .cycle-list-panel header span,
.module-workspace .regulation-intro > div > span,
.module-workspace .curriculum-pending > span { font-size: 10px; }
.module-workspace .ra-index-item > span { font-size: 11px; }
.module-workspace .ra-index-item strong { font-size: 12px; }
.module-workspace .ra-index-item em { font-size: 12px; }
.module-workspace .ra-detail-heading > div > span { font-size: 11px; }
.module-workspace .ra-detail-heading > em { font-size: 10px; }
.module-workspace .criteria-heading strong { font-size: 12px; }
.module-workspace .official-criteria-list li > span { font-size: 10px; }
.module-workspace .official-criteria-list li p { font-size: 12px !important; }
.module-workspace .official-criteria-list li button { min-height: 31px; font-size: 10px; }
.module-workspace .criteria-note > span { font-size: 11px; }
.module-workspace .module-links-strip > button,
.module-workspace .curriculum-filterbar button { min-height: 38px; font-size: 11px; }
.module-workspace .cycle-list-panel header > strong small,
.module-workspace .cycle-item em { font-size: 9px !important; }
.module-workspace .regulation-legend span { font-size: 10px; }
.module-workspace .regulation-step { font-size: 11px; }
.module-workspace .source-trace-card strong { font-size: 12px; }
.module-workspace .source-trace-card a { font-size: 11px; }
.module-workspace .curriculum-pending > div i,
.module-workspace .curriculum-pending > div span { font-size: 11px; }
.module-workspace .overview-card > span,
.module-workspace .overview-card > div > span { font-size: 10px; }
.module-workspace .overview-card > em,
.module-workspace .activity-list strong { font-size: 12px; }
.module-workspace .activity-dot { font-size: 10px; }

/* Legibilidad del calendario dentro de cada módulo */
.center-calendar-page .school-calendar-hero > div:first-child > span { font-size: 11px; }
.center-calendar-page .school-calendar-hero p { color: rgba(255,255,255,.76); }
.center-calendar-page .calendar-official-seal small { font-size: 9px !important; }
.center-calendar-page .module-calendar-context > span { font-size: 11px; }
.center-calendar-page .module-calendar-context small,
.center-calendar-page .calendar-filter-group > span { font-size: 10px !important; }
.center-calendar-page .module-calendar-context strong { font-size: 12px; }
.center-calendar-page .module-calendar-context em { font-size: 10px; }
.center-calendar-page .calendar-filter-group button { min-height: 42px; font-size: 12px; }
.center-calendar-page .calendar-filter-group button small { font-size: 9px !important; }
.center-calendar-page .term-highlight-banner > div > small,
.center-calendar-page .module-term-load > header span,
.center-calendar-page .module-weekly-pattern > div > span { font-size: 10px !important; }
.center-calendar-page .term-highlight-banner > em { font-size: 11px; }
.center-calendar-page .company-training-banner > span { font-size: 11px; }
.center-calendar-page .company-training-banner strong { font-size: 12px; }
.center-calendar-page .module-term-load > header h2 { font-size: 20px; }
.center-calendar-page .module-term-cards button > span { font-size: 11px; }
.center-calendar-page .module-term-cards small { font-size: 10px !important; }
.center-calendar-page .module-term-cards p,
.center-calendar-page .module-term-load > footer p { font-size: 11px !important; }
.center-calendar-page .module-term-load > footer span { font-size: 10px; }
.center-calendar-page .module-weekly-pattern > div > strong { font-size: 13px; }
.center-calendar-page .module-weekly-pattern article > span { font-size: 10px; }
.center-calendar-page .module-weekly-pattern article strong { font-size: 11px; }
.center-calendar-page .module-weekly-pattern article small { font-size: 10px !important; }
.center-calendar-page .module-weekly-pattern article em { font-size: 11px; }
.center-calendar-page .school-month > header span { font-size: 10px; }
.center-calendar-page .calendar-weekdays span { font-size: 10px; }
.center-calendar-page .calendar-day { font-size: 11px; }
.center-calendar-page .calendar-day .calendar-day-badges small { font-size: 7px !important; }
.center-calendar-page.module-calendar-page .calendar-day .calendar-day-badges .calendar-topic-badge { min-width: 26px; min-height: 19px; padding: 4px 5px; font-size: 11px !important; }
.center-calendar-page.module-calendar-page .calendar-day .calendar-day-badges .calendar-purpose-badge { font-size: 9px !important; }
.center-calendar-page.module-calendar-page .calendar-day.is-evaluation .calendar-evaluation-badge { font-size: 9px !important; }
.center-calendar-page .calendar-side-panel section > span { font-size: 10px; }
.center-calendar-page .calendar-side-panel section > p strong { font-size: 11px; }
.center-calendar-page .calendar-current-course,
.center-calendar-page .calendar-side-panel dt,
.center-calendar-page .calendar-side-panel dd { font-size: 11px; }
.center-calendar-page .calendar-source-note strong { font-size: 12px; }
.center-calendar-page .calendar-pending > small { font-size: 10px !important; }

/* Legibilidad del espacio personal de Electricidad */
.electricity-page .electricity-kicker { font-size: 11px; }
.electricity-page .electricity-hero-copy > p { color: rgba(255,255,255,.74); }
.electricity-page .electricity-hero-copy > a { font-size: 12px; }
.electricity-page .electricity-progress span { font-size: 10px; }
.electricity-page .electricity-progress strong small { font-size: 15px !important; }
.electricity-page .electricity-intro span { font-size: 10px; }
.electricity-page .electricity-year-number { font-size: 13px; }
.electricity-page .electricity-year-card header small { font-size: 10px !important; }
.electricity-page .electricity-year-card header p { color: #68766f; }
.electricity-page .electricity-year-state { min-height: 34px; font-size: 10px; }
.electricity-page .electricity-year-state i { width: 19px; height: 19px; font-size: 10px; }
.electricity-page .electricity-module-row { min-height: 64px; grid-template-columns: 54px minmax(0, 1fr) auto; }
.electricity-page .electricity-module-code { width: 54px; min-height: 31px; font-size: 10px; }
.electricity-page .electricity-module-row > strong { font-size: 12px; line-height: 1.4; }
.electricity-page .electricity-status { min-height: 31px; font-size: 10px; }
.electricity-page .electricity-module-list--unresolved .electricity-module-row { grid-template-columns: 54px minmax(0, 1fr); }
.electricity-page .electricity-pending-box > div:first-child > span { font-size: 10px; }
.electricity-page .electricity-pending-box > div:first-child > strong { font-size: 12px; }
.electricity-page .electricity-pending-slots { gap: 7px; }
.electricity-page .electricity-pending-slots span { width: 82px; min-height: 72px; font-size: 10px; }
.electricity-page .electricity-pending-slots i { width: 24px; height: 24px; font-size: 10px; }
.electricity-page .electricity-source > span { font-size: 10px; }
.electricity-page .electricity-source a { min-height: 36px; font-size: 11px; }

/* Curso de Python dentro de OPT-PROG */
.content-open-topic { border-color: var(--forest) !important; background: var(--forest) !important; color: white !important; }
.content-open-topic:hover { transform: translateY(-1px); box-shadow: 0 7px 16px rgba(20,63,55,.16); }
.public-topic-open { width: 100%; min-width: 0; padding: 0; border: 0; background: transparent; color: inherit; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 17px; align-items: start; text-align: left; cursor: pointer; }
.public-topic-card:has(.public-topic-open) { transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.public-topic-card:has(.public-topic-open):hover { border-color: #9fbe8f; box-shadow: 0 15px 34px rgba(30,57,46,.1); transform: translateY(-3px); }
.public-topic-open > span { width: 52px; height: 52px; border-radius: 14px; background: var(--forest); color: var(--lime); display: grid; place-items: center; font-size: 17px; font-weight: 900; }
.public-topic-open > div { min-width: 0; }

.python-reader-shell { width: 100%; min-width: 0; max-width: 100%; overflow-x: clip; }
.public-python-page .python-reader-shell { margin-top: 18px; }
.python-topic-loading, .python-topic-error { min-height: 310px; padding: 40px; border: 1px solid var(--line); border-radius: 23px; background: white; display: flex; align-items: center; justify-content: center; gap: 19px; text-align: left; }
.python-topic-loading > span, .python-topic-error > span { width: 68px; height: 68px; border-radius: 19px; background: #316fa8; color: #ffe36e; display: grid; place-items: center; font-size: 20px; font-weight: 950; transform: rotate(-4deg); }
.python-topic-loading strong, .python-topic-error strong { display: block; font-size: 19px; }
.python-topic-loading small { display: block; margin-top: 5px; color: #74817a; font-size: 13px !important; }
.python-topic-error p { margin: 5px 0 13px; color: #74817a; }
.python-topic-error button { min-height: 38px; padding: 0 13px; border: 0; border-radius: 10px; background: var(--forest); color: white; font-weight: 800; }
.python-reader-toolbar { min-height: 58px; margin-bottom: 13px; padding: 7px 9px 7px 14px; border: 1px solid var(--line); border-radius: 15px; background: rgba(255,255,255,.86); display: flex; justify-content: space-between; align-items: center; gap: 18px; position: sticky; top: 8px; z-index: 12; backdrop-filter: blur(14px); box-shadow: 0 8px 23px rgba(32,51,43,.06); }
.python-reader-toolbar > button { padding: 0; border: 0; background: transparent; color: var(--forest); font-size: 13px; font-weight: 850; }
.python-reader-toolbar > div { display: flex; align-items: center; gap: 7px; }
.python-reader-toolbar > div span { min-width: 48px; color: #738078; font-size: 12px; font-weight: 850; text-align: center; }
.python-reader-toolbar > div button { min-height: 40px; padding: 0 13px; border: 1px solid var(--line); border-radius: 10px; background: white; color: var(--forest); font-size: 12px; font-weight: 850; }
.python-reader-toolbar button:disabled, .python-reader-footer button:disabled { opacity: .38; cursor: not-allowed; }
.python-lesson-hero { min-height: 300px; padding: 35px 37px; overflow: hidden; border-radius: 25px; background: linear-gradient(125deg, #255e91 0%, #347fb6 56%, #4f9bc6 100%); color: white; display: grid; grid-template-columns: minmax(0, 1fr) 190px; align-items: end; gap: 32px; position: relative; box-shadow: 0 22px 46px rgba(34,84,124,.16); }
.python-lesson-hero::before { content: "PY"; position: absolute; right: 198px; top: -74px; color: rgba(255,255,255,.055); font-size: 210px; font-weight: 950; letter-spacing: -.1em; transform: rotate(-5deg); }
.python-lesson-hero.network-lesson-hero { background: linear-gradient(125deg, #164d52 0%, #23777a 55%, #44a18e 100%); box-shadow: 0 22px 46px rgba(22,77,82,.18); }
.python-lesson-hero.network-lesson-hero::before { content: "NET"; right: 164px; color: rgba(255,255,255,.045); font-size: 178px; }
.python-lesson-hero.network-lesson-hero > aside { background: rgba(5,52,56,.3); }
.python-lesson-hero > div, .python-lesson-hero > aside { position: relative; z-index: 1; }
.python-lesson-kicker { color: #ffe36e; font-size: 12px; font-weight: 900; letter-spacing: .13em; }
.python-lesson-hero h1 { max-width: 850px; margin: 13px 0 11px; font-size: clamp(39px, 4.8vw, 65px); line-height: .95; letter-spacing: -.06em; }
.python-lesson-hero p { max-width: 800px; margin: 0; color: rgba(255,255,255,.82); font-size: 16px !important; line-height: 1.55; }
.python-lesson-outline { margin-top: 22px; display: flex; flex-wrap: wrap; gap: 7px; }
.python-lesson-outline span { min-height: 32px; padding: 0 11px; border: 1px solid rgba(255,255,255,.17); border-radius: 999px; background: rgba(255,255,255,.1); display: inline-flex; align-items: center; color: white; font-size: 11px; font-weight: 800; }
.python-lesson-hero > aside { padding: 8px 18px; border: 1px solid rgba(255,255,255,.18); border-radius: 18px; background: rgba(14,54,85,.28); backdrop-filter: blur(9px); }
.python-lesson-hero > aside div { min-height: 67px; border-bottom: 1px solid rgba(255,255,255,.13); display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: center; }
.python-lesson-hero > aside div:last-child { border-bottom: 0; }
.python-lesson-hero > aside strong { color: #ffe36e; font-size: 30px; letter-spacing: -.04em; }
.python-lesson-hero > aside span { color: rgba(255,255,255,.72); font-size: 11px; font-weight: 750; line-height: 1.25; }
.python-reader-layout { width: 100%; min-width: 0; max-width: 100%; margin-top: 18px; display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: 18px; align-items: start; }
.python-reader-sidebar { min-width: 0; max-width: 100%; max-height: calc(100vh - 90px); overflow-y: auto; position: sticky; top: 80px; display: flex; flex-direction: column; gap: 12px; scrollbar-width: thin; }
.python-section-nav { width: 100%; min-width: 0; max-width: 100%; padding: 18px 12px; border: 1px solid var(--line); border-radius: 17px; background: white; display: flex; flex-direction: column; }
.python-section-nav > span { padding: 0 9px 12px; color: #87938d; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.python-section-nav-item { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
.python-section-nav-item > a { min-width: 0; min-height: 45px; padding: 8px 5px 8px 9px; border-radius: 10px; color: #58675f; display: grid; grid-template-columns: 27px minmax(0, 1fr); gap: 8px; align-items: center; font-size: 12px; line-height: 1.3; }
.python-section-nav-item > a:hover { background: #eef4ea; color: var(--forest); }
.python-section-nav-item > a > span { width: 27px; height: 27px; border-radius: 8px; background: #edf1eb; display: grid; place-items: center; color: var(--forest); font-size: 10px; font-weight: 900; }
.python-section-nav-item > a > strong { min-width: 0; overflow: hidden; overflow-wrap: anywhere; font-weight: 750; text-overflow: ellipsis; }
.python-section-nav-item.is-hidden > a { opacity: .48; }
.python-nav-visibility { min-width: 56px; min-height: 29px; padding: 0 7px; border: 1px solid #d8e1d5; border-radius: 8px; background: #f2f7ef; color: #4c7042; font-size: 10px; font-weight: 850; }
.python-nav-visibility:hover { border-color: #91ad87; background: #eaf4e6; }
.python-nav-visibility.is-hidden { border-color: #e3d6bf; background: #faf6ef; color: #967253; }
.python-reader-content { width: 100%; min-width: 0; max-width: 100%; display: flex; flex-direction: column; gap: 17px; }
.python-reader-content > * { min-width: 0; max-width: 100%; }
.python-topic-introduction, .python-lesson-block, .python-quiz, .python-exercise, .python-topic-video { width: 100%; min-width: 0; max-width: 100%; border: 1px solid var(--line); border-radius: 21px; background: white; overflow: hidden; box-shadow: 0 8px 27px rgba(36,55,47,.035); scroll-margin-top: 84px; }
.python-topic-introduction, .python-lesson-body, .python-editable-body { overflow-wrap: anywhere; }
.python-reader-content img, .python-lesson-body img, .python-editable-body img { max-width: 100%; height: auto; }
.python-topic-introduction { padding: 27px 29px; border-color: #d7e5cf; background: linear-gradient(135deg, #f6faef, #fff); }
.python-topic-introduction > span, .python-quiz > header > span, .python-exercise > header > span { color: #638154; font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.python-topic-introduction > p { margin: 9px 0 0; color: #405047; font-size: 17px !important; line-height: 1.65; }
.python-intro-grid { margin-top: 19px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
.python-intro-card { padding: 18px; border: 1px solid #dce7d6; border-radius: 14px; background: white; }
.python-intro-card h3 { margin: 0 0 9px; color: var(--forest); font-size: 17px; }
.python-intro-card ul { margin: 0; padding-left: 20px; }
.python-intro-card li { margin: 5px 0; color: #5f6e66; font-size: 14px; line-height: 1.45; }
.python-lesson-block > header { min-height: 103px; padding: 21px 25px; border-bottom: 1px solid #e9eeea; background: #f9fbf7; display: grid; grid-template-columns: 51px minmax(0, 1fr); gap: 15px; align-items: center; }
.python-lesson-block > header > span { width: 51px; height: 51px; border-radius: 14px; background: var(--forest); color: var(--lime); display: grid; place-items: center; font-size: 15px; font-weight: 900; transform: rotate(-2deg); }
.python-lesson-block > header h2, .python-quiz > header h2, .python-exercise > header h2 { margin: 0; font-size: 27px; line-height: 1.08; letter-spacing: -.04em; }
.python-lesson-block > header p, .python-quiz > header p, .python-exercise > header p { margin: 6px 0 0; color: #74817a; font-size: 13px !important; }
.python-lesson-body { padding: 25px 29px 29px; color: #33443b; }
.python-lesson-body > :first-child { margin-top: 0; }
.python-lesson-body > :last-child { margin-bottom: 0; }
.python-lesson-body p { margin: 12px 0; color: #46574e; font-size: 15px !important; line-height: 1.68; }
.python-lesson-body h3 { margin: 28px 0 10px; color: var(--forest); font-size: 21px; letter-spacing: -.025em; }
.python-lesson-body h4 { margin: 25px 0 8px; color: #24443b; font-size: 18px; letter-spacing: -.02em; }
.python-lesson-body h5 { margin: 20px 0 7px; font-size: 16px; }
.python-lesson-body ul, .python-lesson-body ol { margin: 12px 0; padding-left: 25px; }
.python-lesson-body li { margin: 7px 0; color: #46574e; font-size: 15px; line-height: 1.55; }
.python-inline-code { padding: 2px 6px; border: 1px solid #d8e3d5; border-radius: 6px; background: #edf4e9; color: #173f37; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: .9em; font-weight: 750; }
.python-learning-note { margin: 18px 0; padding: 16px 18px; border-left: 4px solid #e2ba28; border-radius: 0 13px 13px 0; background: #fff9dc; }
.python-learning-note p { margin: 0; color: #5d522e; }
.python-code-panel { width: 100%; min-width: 0; max-width: 100%; margin: 17px 0 21px; overflow: hidden; border: 1px solid #223e4f; border-radius: 15px; background: #102634; box-shadow: 0 10px 22px rgba(16,38,52,.14); }
.python-code-panel > header { min-height: 43px; padding: 0 12px 0 16px; border-bottom: 1px solid rgba(255,255,255,.08); background: #173444; display: flex; align-items: center; justify-content: space-between; }
.python-code-panel > header span { color: #ffe36e; font-size: 10px; font-weight: 900; letter-spacing: .14em; }
.python-code-panel > header button { min-height: 29px; padding: 0 9px; border: 1px solid rgba(255,255,255,.15); border-radius: 8px; background: rgba(255,255,255,.07); color: #e7f1f5; font-size: 10px; font-weight: 800; }
.python-code-panel pre { margin: 0; padding: 18px; overflow-x: auto; color: #e8f1f3; font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; tab-size: 4; }
.python-code-panel code { color: inherit; font: inherit; white-space: pre; }
.python-code-panel.is-output { border-color: #cad7c4; background: #f1f5ee; box-shadow: none; }
.python-code-panel.is-output > header { border-color: #dce5d8; background: #e4ece0; }
.python-code-panel.is-output > header span { color: #53684c; }
.python-code-panel.is-output pre { color: #304237; }
.python-table-wrap { width: 100%; min-width: 0; max-width: 100%; margin: 17px 0; overflow-x: auto; border: 1px solid var(--line); border-radius: 13px; }
.python-table-wrap table { width: 100%; border-collapse: collapse; background: white; }
.python-table-wrap th, .python-table-wrap td { padding: 12px 14px; border-bottom: 1px solid #e8ece7; color: #45564d; font-size: 13px; line-height: 1.45; text-align: left; vertical-align: top; }
.python-table-wrap th { background: #f0f5ed; color: var(--forest); font-weight: 850; }
.python-quiz > header, .python-exercise > header { padding: 25px 29px 21px; border-bottom: 1px solid #e9eeea; background: linear-gradient(120deg, #f7faef, #fff); }
.python-quiz > header h2, .python-exercise > header h2 { margin-top: 7px; }
.python-quiz-list { padding: 6px 24px; }
.python-quiz fieldset { margin: 0; padding: 22px 4px; border: 0; border-bottom: 1px solid #e9eeea; }
.python-quiz fieldset:last-child { border-bottom: 0; }
.python-quiz legend { width: 100%; margin-bottom: 13px; color: #263a30; display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 11px; align-items: center; font-size: 15px; font-weight: 850; line-height: 1.45; }
.python-quiz legend span { width: 38px; height: 38px; border-radius: 11px; background: #e9f0e5; color: var(--forest); display: grid; place-items: center; font-size: 11px; }
.python-quiz-options { margin-left: 49px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.python-quiz-options label { min-height: 47px; padding: 9px 12px; border: 1px solid #dfe6dc; border-radius: 11px; background: #fbfcfa; color: #526159; display: flex; gap: 9px; align-items: center; font-size: 13px; line-height: 1.35; cursor: pointer; }
.python-quiz-options label:has(input:checked) { border-color: #689a59; background: #eef7e9; color: #294722; box-shadow: 0 0 0 2px rgba(104,154,89,.09); }
.python-quiz-options input { accent-color: #568448; }
.python-question-feedback { margin: 12px 0 0 49px !important; padding: 11px 13px; border-radius: 9px; background: #f3f5f1; color: #66736c; font-size: 13px !important; }
.python-quiz fieldset.is-correct .python-question-feedback { background: #eaf6e5; color: #3e6534; }
.python-quiz fieldset.is-incorrect .python-question-feedback, .python-quiz fieldset.is-unanswered .python-question-feedback { background: #fff2df; color: #7d5920; }
.python-quiz > form > footer { min-height: 92px; padding: 16px 27px; border-top: 1px solid #e9eeea; background: #fafbf8; display: flex; justify-content: flex-end; align-items: center; gap: 9px; }
.python-quiz-score { margin-right: auto; display: grid; grid-template-columns: auto 1fr; column-gap: 10px; align-items: end; }
.python-quiz-score span { grid-column: 1 / -1; color: #849089; font-size: 9px; font-weight: 900; letter-spacing: .12em; }
.python-quiz-score strong { color: var(--forest); font-size: 23px; }
.python-quiz-score small { margin-bottom: 3px; color: #7c8982; font-size: 11px !important; }
.python-quiz-score.is-complete strong { color: #4d853e; }
.python-exercise .python-lesson-body { padding-bottom: 20px; }
.python-solution { margin: 0 29px 29px; border: 1px solid #cfe0c8; border-radius: 14px; background: #f6fbf3; overflow: hidden; }
.python-solution summary { min-height: 54px; padding: 0 16px; color: var(--forest); display: flex; align-items: center; justify-content: space-between; font-size: 14px; font-weight: 850; cursor: pointer; list-style: none; }
.python-solution summary::-webkit-details-marker { display: none; }
.python-solution summary span { font-size: 20px; transition: transform .2s ease; }
.python-solution[open] summary span { transform: rotate(45deg); }
.python-solution > div { padding: 2px 17px 17px; border-top: 1px solid #dce9d7; }
.python-guided-solution { margin: 17px 0 25px; border: 1px solid #c7dcbf; border-radius: 14px; background: linear-gradient(135deg, #f3faef, #fbfdf9); overflow: hidden; box-shadow: 0 8px 20px rgba(46,91,55,.05); }
.python-guided-solution summary { min-height: 54px; padding: 0 17px; color: #315d31; display: flex; align-items: center; justify-content: space-between; gap: 15px; font-size: 14px; font-weight: 850; cursor: pointer; list-style: none; }
.python-guided-solution summary::-webkit-details-marker { display: none; }
.python-guided-solution summary::after { content: "+"; width: 28px; height: 28px; flex: 0 0 28px; border-radius: 9px; background: #dfeeda; display: grid; place-items: center; font-size: 20px; line-height: 1; transition: transform .2s ease; }
.python-guided-solution[open] summary::after { transform: rotate(45deg); }
.python-guided-solution > :not(summary) { margin-right: 17px; margin-left: 17px; }
.python-guided-solution > :last-child { margin-bottom: 17px; }
.python-guided-solution > .python-table-wrap { width: auto; }
.python-lesson-body .python-learning-flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); gap: 12px; padding: 0; margin: 24px 0; list-style: none; counter-reset: learning-step; }
.python-learning-flow > li { margin: 0; padding: 18px; border: 1px solid #accbe5; border-radius: 16px; background: #edf6ff; counter-increment: learning-step; }
.python-learning-flow > li::before { content: counter(learning-step); display: grid; place-items: center; width: 32px; height: 32px; margin-bottom: 12px; border-radius: 50%; background: #23699b; color: white; font-weight: 800; }
.python-learning-flow strong { display: block; color: #173e60; font-size: 1.1rem; }
.python-lesson-body .python-learning-flow p { margin: 8px 0 0; }
.python-reader-footer { min-height: 72px; padding: 9px; border: 1px solid var(--line); border-radius: 16px; background: white; display: flex; justify-content: space-between; gap: 10px; }
.python-reader-footer button { min-height: 50px; padding: 0 16px; border: 0; border-radius: 11px; background: #eef3ea; color: var(--forest); font-size: 13px; font-weight: 850; }
.public-topic-card.is-topic-locked { background: #f2f4f0; box-shadow: none; }
.public-topic-card.is-topic-locked .public-topic-open { cursor: not-allowed; opacity: .62; }
.public-topic-card.is-topic-locked .public-topic-open > span { background: #849089; color: white; }
.public-topic-card.is-topic-locked footer small { color: #6f7b75; }
.content-topic-card.is-hidden-from-students { border-color: #d9deda; background: #fbfcfa; }
.content-topic-card.is-hidden-from-students .content-topic-number { background: #7f8b85; color: white; }
.content-topic-publication { margin: 0 19px 12px; padding: 12px 13px; border: 1px solid #cfe0c8; border-radius: 12px; background: #f1f8ed; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.content-topic-card.is-hidden-from-students .content-topic-publication { border-color: #dfe3df; background: #f2f4f1; }
.content-topic-publication > div { display: grid; grid-template-columns: auto 1fr; column-gap: 8px; align-items: center; }
.content-topic-publication .publication-status-dot { grid-row: 1 / 3; width: 10px; height: 10px; border-radius: 50%; background: #6f9b59; box-shadow: 0 0 0 4px rgba(111,155,89,.12); }
.is-hidden-from-students .publication-status-dot { background: #959e99; box-shadow: 0 0 0 4px rgba(149,158,153,.12); }
.content-topic-publication strong { font-size: 12px; }
.content-topic-publication small { color: #74817a; font-size: 10px !important; }
.content-topic-publication > button { min-height: 34px; padding: 0 11px; border: 1px solid #6e975e; border-radius: 999px; background: white; color: #426438; font-size: 10px; font-weight: 850; white-space: nowrap; }
.is-hidden-from-students .content-topic-publication > button { border-color: var(--forest); background: var(--forest); color: white; }
.python-course-planning { margin-top: 22px; overflow: hidden; border: 1px solid #d8e3d4; border-radius: 20px; background: white; box-shadow: 0 9px 28px rgba(35,53,45,.045); }
.python-course-planning > header { min-height: 132px; padding: 24px 27px; background: linear-gradient(125deg, #f2f8ed, #fbfcf8); display: flex; justify-content: space-between; align-items: center; gap: 28px; }
.python-course-planning > header > div { max-width: 760px; }
.python-course-planning > header > div > span { color: #638154; font-size: 10px; font-weight: 900; letter-spacing: .13em; }
.python-course-planning h2 { margin: 7px 0 6px; font-size: 25px; letter-spacing: -.04em; }
.python-course-planning > header p { margin: 0; color: #68766f; font-size: 13px !important; line-height: 1.5; }
.python-course-planning > header aside { min-width: 245px; padding: 13px 16px; border: 1px solid #d6e3d1; border-radius: 14px; background: white; display: grid; grid-template-columns: auto 1fr 1px auto 1fr; gap: 9px; align-items: center; }
.python-course-planning > header aside strong { color: var(--forest); font-size: 25px; }
.python-course-planning > header aside span { color: #76827c; font-size: 10px; font-weight: 750; line-height: 1.2; }
.python-course-planning > header aside i { width: 1px; height: 35px; background: #dce3da; }
.python-course-range { min-height: 56px; padding: 10px 27px; border-top: 1px solid #e4ebe1; border-bottom: 1px solid #e4ebe1; display: flex; align-items: center; gap: 10px; }
.python-course-range span { color: #88938d; font-size: 9px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.python-course-range strong { color: #35483e; font-size: 12px; }
.python-course-range i { margin: 0 7px; color: #9caaa2; font-style: normal; }
.python-course-planning > details > summary { min-height: 55px; padding: 0 27px; color: var(--forest); display: flex; justify-content: space-between; align-items: center; font-size: 12px; font-weight: 850; cursor: pointer; list-style: none; }
.python-course-planning > details > summary::-webkit-details-marker { display: none; }
.python-course-planning > details > summary span { font-size: 21px; transition: transform .2s ease; }
.python-course-planning > details[open] > summary span { transform: rotate(45deg); }
.python-course-session-list { padding: 4px 21px 22px; border-top: 1px solid #e8ede6; }
.python-course-session-list article { padding: 15px 5px; border-bottom: 1px solid #e9eeea; display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 16px; align-items: start; }
.python-course-session-list article:last-child { border-bottom: 0; }
.python-course-session-list article > header { display: grid; grid-template-columns: 42px 1fr; gap: 10px; align-items: center; }
.python-course-session-list article > header > span { width: 42px; height: 42px; border-radius: 11px; background: var(--forest); color: var(--lime); display: grid; place-items: center; font-size: 10px; font-weight: 900; }
.python-course-session-list article > header strong { display: block; font-size: 12px; line-height: 1.3; }
.python-course-session-list article > header small { color: #85918b; font-size: 10px !important; }
.python-course-session-list article > div { display: flex; flex-wrap: wrap; gap: 6px; }
.python-course-session-list article > div button { min-width: 72px; min-height: 49px; padding: 6px 8px; border: 1px solid #d8e3d4; border-radius: 10px; background: #f6faf3; color: #40583a; display: grid; grid-template-columns: auto 1fr; column-gap: 6px; align-items: center; text-align: left; }
.python-course-session-list article > div button > strong { grid-row: 1 / 3; width: 23px; height: 23px; border-radius: 7px; background: #dcebd5; display: grid; place-items: center; font-size: 9px; }
.python-course-session-list article > div button > span { font-size: 10px; font-weight: 850; }
.python-course-session-list article > div button > small { color: #7b8881; font-size: 9px !important; }
.python-course-session-list article > div button:hover { border-color: #d0ad41; background: #fff9e7; }
.python-course-session-list article > div button.is-missed { min-width: 150px; border-color: #e5c98c; background: #fff7e3; grid-template-columns: 1fr auto; }
.python-course-session-list button.is-missed del { color: #865f20; font-size: 10px; font-weight: 850; }
.python-course-session-list button.is-missed small { grid-column: 1 / -1; color: #7d6b45; }
.python-course-session-list button.is-missed em { grid-column: 2; grid-row: 1; color: #805f21; font-size: 9px; font-style: normal; font-weight: 900; }
.python-teacher-content-actions { margin-left: auto; display: flex !important; gap: 6px !important; }
.python-reader-toolbar > .python-teacher-content-actions button { border-color: #b4c9ac; background: #edf6e9; color: #355d2d; }
.python-reader-toolbar > .python-teacher-content-actions button.is-published { border-color: #638f53; background: #638f53; color: white; }
.python-editable-block > header { position: relative; }
.python-topic-introduction > header { margin-bottom: 10px; display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; }
.python-topic-introduction > header > div > span { color: #638154; font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.python-topic-introduction > header h2 { margin: 6px 0 0; font-size: 22px; letter-spacing: -.03em; }
.python-topic-introduction > .python-editable-body > p:first-child { margin-top: 0; color: #405047; font-size: 17px !important; line-height: 1.65; }
.python-block-tools { margin-left: auto; display: flex; gap: 5px; align-items: center; }
.python-block-tools button { min-height: 32px; padding: 0 9px; border: 1px solid #d5ddd3; border-radius: 8px; background: white; color: #53645b; font-size: 10px; font-weight: 850; white-space: nowrap; }
.python-block-tools button[data-save-python-source] { border-color: var(--forest); background: var(--forest); color: white; }
.python-block-tools button.is-danger { color: #9b493c; }
.python-format-tools { min-height: 32px; padding: 3px 5px; border: 1px solid #ccd8c8; border-radius: 9px; background: #f6faf3; display: flex; gap: 4px; align-items: center; }
.python-format-tools[hidden] { display: none; }
.python-format-tools > button { width: 27px; min-height: 25px; padding: 0; }
.python-rgb-picker { min-height: 25px; padding: 0 5px 0 8px; border-left: 1px solid #d5ddd2; color: #718078; display: flex; gap: 6px; align-items: center; font-size: 9px; font-weight: 850; cursor: pointer; }
.python-rgb-picker input { width: 24px; height: 22px; padding: 0; overflow: hidden; border: 1px solid #cbd4c8; border-radius: 6px; background: white; cursor: pointer; }
.python-rgb-picker input::-webkit-color-swatch-wrapper { padding: 2px; }
.python-rgb-picker input::-webkit-color-swatch { border: 0; border-radius: 3px; }
.python-editable-block.is-section-hidden, .python-custom-block.is-section-hidden, .python-quiz.is-section-hidden, .python-topic-video.is-section-hidden { border-style: dashed; border-color: #d2b06b; background: #fffaf0; }
.python-editable-block.is-section-hidden > .python-editable-body, .python-custom-block.is-section-hidden > .python-lesson-body, .python-custom-block.is-section-hidden > .python-solution, .python-quiz.is-section-hidden > form, .python-topic-video.is-section-hidden > .python-video { opacity: .42; }
.python-editable-block.is-section-hidden.is-editing-content > .python-editable-body { opacity: 1; }
.python-editable-block.is-section-hidden > header, .python-custom-block.is-section-hidden > header, .python-quiz.is-section-hidden > header, .python-topic-video.is-section-hidden > header { background: #fff7e7; }
.python-editable-block.is-editing-content { border-color: #7da66d; box-shadow: 0 0 0 4px rgba(96,144,79,.1); }
.python-editable-block.is-editing-content .python-editable-title, .python-editable-block.is-editing-content .python-editable-body { outline: 2px dashed #8bab7f; outline-offset: 5px; border-radius: 5px; caret-color: var(--forest); }
.python-editable-block.is-editing-content .python-editable-body { background: #fffef8; }
.python-custom-block > header { grid-template-columns: 51px minmax(0, 1fr) auto; }
.python-custom-block > header small { color: #71836a; font-size: 9px !important; font-weight: 900; letter-spacing: .1em; }
.python-topic-video > header { min-height: 88px; padding: 19px 23px; border-bottom: 1px solid #e4ebe3; background: #f7faf5; display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.python-topic-video > header span { color: #638154; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.python-topic-video > header h2 { margin: 5px 0 0; color: var(--forest); font-size: 24px; }
.python-topic-video > header button { min-height: 34px; padding: 0 10px; border: 1px solid #d4ded1; border-radius: 9px; background: white; color: #53645b; font-size: 10px; font-weight: 850; }
.python-topic-video > .python-video { border-radius: 0; }
.python-add-topic-video { width: 100%; min-height: 52px; border: 1px dashed #b9c8b4; border-radius: 14px; background: #f8fbf6; color: #55704e; font-size: 12px; font-weight: 850; }
.python-add-topic-video:hover { border-color: #7da16f; background: #f0f7ec; }
.python-section-image { margin: 0 29px 18px; padding: 16px; border: 1px solid #d8e3eb; border-radius: 16px; background: #f6f9fc; }
.python-topic-introduction > .python-section-image { margin: 20px 0 0; }
.python-section-image-heading { min-height: 30px; margin-bottom: 12px; display: flex; align-items: center; }
.python-section-image-heading > span { color: #55728b; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.python-section-image > img { display: block; width: 100%; height: auto; max-height: 720px; object-fit: contain; border-radius: 12px; background: white; }
.python-section-video { margin: 0 29px 29px; padding: 16px; border: 1px solid #dce7d8; border-radius: 16px; background: #f6faf4; }
.python-topic-introduction > .python-section-video { margin: 20px 0 0; }
.python-section-video-heading { min-height: 34px; margin-bottom: 12px; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.python-section-video-heading > span { color: #638154; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.python-section-video-heading > button, .python-section-video-control > button { min-height: 35px; padding: 0 11px; border: 1px solid #cfdccb; border-radius: 9px; background: white; color: #4f6757; font-size: 11px; font-weight: 850; }
.python-section-video-heading > button:hover, .python-section-video-control > button:hover { border-color: #7da16f; background: #eef6ea; color: #31562d; }
.python-section-video-control { padding: 0 29px 25px; display: flex; justify-content: flex-end; }
.python-topic-introduction > .python-section-video-control { padding: 12px 0 0; }
.python-section-video-control > button { border-style: dashed; background: #f8fbf6; }
.python-section-resources-control { padding: 0 29px 25px; display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 9px; }
.python-topic-introduction > .python-section-resources-control { padding: 12px 0 0; }
.python-section-resources-control > button { min-height: 38px; padding: 0 13px; border: 1px dashed #bdcdb8; border-radius: 10px; background: #f8fbf6; color: #4f6757; font-size: 11px; font-weight: 850; }
.python-section-resources-control > button[data-edit-python-section-image] { border-color: #b9cad8; background: #f6f9fc; color: #49667e; }
.python-section-resources-control > button:hover { border-color: #7da16f; background: #eef6ea; color: #31562d; }
.python-section-resources-control > button[data-edit-python-section-image]:hover { border-color: #769ab6; background: #edf5fa; color: #294f69; }
.python-editable-block.is-section-hidden > .python-section-video, .python-custom-block.is-section-hidden > .python-section-video, .python-quiz.is-section-hidden > .python-section-video, .python-editable-block.is-section-hidden > .python-section-image, .python-custom-block.is-section-hidden > .python-section-image, .python-quiz.is-section-hidden > .python-section-image { opacity: .5; }
.python-video { position: relative; width: 100%; padding-top: 56.25%; overflow: hidden; border-radius: 14px; background: #102634; }
.python-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.python-question-edit { position: absolute; right: 4px; top: 18px; min-height: 31px; padding: 0 9px; border: 1px solid #d7e0d4; border-radius: 8px; background: white; color: #53655b; font-size: 9px; font-weight: 850; }
.python-quiz fieldset { position: relative; }
.python-quiz fieldset:has(.python-question-edit) legend { padding-right: 120px; }
.python-editor-backdrop { position: fixed; z-index: 90; inset: 0; padding: 24px; background: rgba(12,27,23,.62); display: grid; place-items: center; backdrop-filter: blur(7px); }
.python-editor-modal { width: min(680px, 100%); max-height: min(850px, 92vh); overflow: auto; border-radius: 21px; background: white; box-shadow: 0 28px 80px rgba(9,24,19,.28); }
.python-editor-modal > header { min-height: 94px; padding: 20px 23px; background: var(--forest); color: white; display: flex; justify-content: space-between; align-items: center; }
.python-editor-modal > header span { color: var(--lime); font-size: 9px; font-weight: 900; letter-spacing: .13em; }
.python-editor-modal > header h2 { margin: 6px 0 0; font-size: 25px; }
.python-editor-modal > header > button { width: 38px; height: 38px; border: 1px solid rgba(255,255,255,.18); border-radius: 10px; background: rgba(255,255,255,.08); color: white; font-size: 23px; }
.python-editor-modal form { padding: 22px 24px 24px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.python-editor-modal form > label, .python-editor-modal form > p, .python-editor-modal form > footer { grid-column: 1 / -1; }
.python-editor-modal form > label { display: flex; flex-direction: column; gap: 7px; }
.python-image-editor-preview { grid-column: 1 / -1; padding: 12px; border: 1px solid #d9e3e8; border-radius: 14px; background: #f5f8fa; }
.python-image-editor-preview img { display: block; width: 100%; height: auto; max-height: 360px; object-fit: contain; border-radius: 9px; background: white; }
.python-editor-modal form > label > span { color: #596860; font-size: 11px; font-weight: 850; }
.python-editor-modal input, .python-editor-modal select, .python-editor-modal textarea { width: 100%; padding: 10px 12px; border: 1px solid #d3dcd1; border-radius: 10px; background: #fbfcfa; color: #20332a; font: 14px/1.45 inherit; outline: 0; }
.python-editor-modal input, .python-editor-modal select { min-height: 44px; }
.python-editor-modal textarea { resize: vertical; }
.python-editor-modal input:focus, .python-editor-modal select:focus, .python-editor-modal textarea:focus { border-color: #729b64; box-shadow: 0 0 0 3px rgba(114,155,100,.12); }
.python-editor-modal [hidden] { display: none; }
.python-editor-error { margin: 0; padding: 10px 12px; border-radius: 9px; background: #fff0e8; color: #9a4433; font-size: 12px !important; }
.python-editor-hint { margin: -2px 0 0; color: #718078; font-size: 12px !important; line-height: 1.5; }
.python-editor-modal form > footer { padding-top: 8px; display: flex; justify-content: flex-end; gap: 8px; }
.python-editor-modal form > footer button { min-height: 42px; padding: 0 14px; border: 1px solid #d6ddd3; border-radius: 10px; background: white; color: #536159; font-size: 11px; font-weight: 850; }
.python-editor-modal form > footer .primary-action { border-color: var(--forest); background: var(--forest); color: white; }
.python-missed-modal form > p { margin: 0; color: #5f6c65; font-size: 13px !important; line-height: 1.55; }

@keyframes scheduleEnter { from { opacity: 0; transform: translateY(10px) scale(.99); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes calendarPeriodIn { from { opacity: .25; transform: translateY(7px); } to { opacity: 1; transform: translateY(0); } }
@keyframes cardEnter { from { opacity: 0; transform: translate3d(0, 18px, 0) scale(.97); } to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); } }
@keyframes filterPop { 0% { transform: scale(.93); } 70% { transform: scale(1.04) translateY(-1px); } 100% { transform: scale(1) translateY(-1px); } }

@media (max-width: 1120px) {
  .app-header { padding: 0 25px; grid-template-columns: auto 1fr auto; gap: 16px; }
  .center-button { min-width: 105px; }
  .center-button small { display: none; }
  .module-home { padding-left: 28px; padding-right: 28px; }
  .center-calendar-page { padding-left: 28px; padding-right: 28px; }
  .calendar-controls { grid-template-columns: 1fr 1fr; }
  .calendar-controls--module { grid-template-columns: 1fr; }
  .calendar-controls--module .calendar-filter-group--term { grid-column: auto; }
  .calendar-filter-group--term { grid-column: 1 / -1; }
  .calendar-page-layout { grid-template-columns: 1fr; }
  .school-calendar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .calendar-side-panel { grid-template-columns: repeat(3, 1fr); position: static; }
  .module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .quick-strip { grid-template-columns: repeat(3, 1fr); }
  .quick-strip-title { grid-column: 1 / -1; padding: 13px 13px 9px; }
  .quick-strip button:first-of-type { border-left: 0; }
  .module-workspace { padding-left: 28px; padding-right: 28px; }
  .module-workspace-hero { grid-template-columns: 92px minmax(0, 1fr); }
  .workspace-monogram { width: 92px; height: 92px; }
  .workspace-facts { grid-column: 1 / -1; padding: 15px 0 0; border-left: 0; border-top: 1px solid rgba(35,52,45,.13); }
  .grade-metrics, .program-overview { grid-template-columns: repeat(2, 1fr); }
  .gradebook-layout { grid-template-columns: 1fr; }
  .evidence-panel { display: grid; grid-template-columns: repeat(3, 1fr); padding: 0 9px 10px; }
  .evidence-heading, .weight-check { grid-column: 1 / -1; }
  .evidence-heading { margin: 0 -9px; }
  .evidence-card { margin: 0 5px; border-bottom: 0; }
  .timeline-summary { grid-template-columns: 1fr 1fr; }
  .timeline-summary > div:last-child { grid-column: 1 / -1; border-left: 0; border-top: 1px solid var(--line); }
  .unit-row { grid-template-columns: 30px minmax(230px,1fr) 92px 105px 72px 108px; gap: 9px; }
  .profile-page { padding-left: 28px; padding-right: 28px; }
  .palette-grid { grid-template-columns: repeat(2, 1fr); }
  .curriculum-path { overflow-x: auto; grid-template-columns: repeat(4, minmax(125px, 1fr) auto) minmax(125px, 1fr); }
  .curriculum-path > div { min-width: 125px; }
  .ra-explorer { grid-template-columns: minmax(270px, .65fr) minmax(0, 1.35fr); }
  .electricity-page { padding-left: 28px; padding-right: 28px; }
  .electricity-years { grid-template-columns: 1fr; }
  .electricity-pending-box p { max-width: none; }
  .public-catalog-page, .public-module-page { padding-left: 28px; padding-right: 28px; }
  .public-module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 780px) {
  .app-header { height: auto; min-height: 70px; grid-template-columns: 1fr auto; padding: 12px 18px; }
  .center-nav { grid-column: 1 / -1; grid-row: 2; width: 100%; overflow-x: auto; justify-self: stretch; justify-content: flex-start; scrollbar-width: none; }
  .center-nav::-webkit-scrollbar { display: none; }
  .center-button { flex: 0 0 auto; min-width: 128px; }
  .header-tools { grid-column: 2; grid-row: 1; }
  .course-button { display: none; }
  body.public-mode .app-header { grid-template-columns: 1fr auto; }
  body.public-mode .center-nav { display: none; }
  .module-home { padding: 25px 18px 56px; }
  .public-catalog-page, .public-module-page { padding: 21px 18px 55px; }
  .public-catalog > header { align-items: flex-start; flex-direction: column; gap: 12px; }
  .public-module-grid { grid-template-columns: 1fr; }
  .public-module-hero { grid-template-columns: 105px minmax(0, 1fr); gap: 21px; padding: 26px; }
  .public-module-hero-code { width: 105px; height: 105px; border-radius: 25px; font-size: 22px; }
  .public-module-information > div { grid-template-columns: 1fr; }
  .public-topic-grid { grid-template-columns: 1fr; }
  .public-topic-empty { grid-template-columns: 1fr; }
  .public-topic-path { grid-column: auto; }
  .public-teacher-note { align-items: flex-start; flex-direction: column; }
  .public-footer { grid-template-columns: 1fr auto; }
  .public-footer p { display: none; }
  .electricity-page { padding: 25px 18px 56px; }
  .electricity-hero { min-height: 0; padding: 27px 24px 24px; grid-template-columns: minmax(0, 1fr) 70px; gap: 16px; }
  .electricity-hero h1 { font-size: 37px; }
  .electricity-mark { width: 66px; height: 66px; border-radius: 19px; }
  .electricity-mark svg { width: 34px; height: 34px; }
  .electricity-progress { grid-template-columns: 1fr; gap: 13px; }
  .electricity-progress > i { width: 100%; height: 1px; }
  .electricity-intro { align-items: flex-start; flex-direction: column; gap: 10px; }
  .electricity-intro p { max-width: none; text-align: left; }
  .electricity-year-card > header { grid-template-columns: auto minmax(0, 1fr); }
  .electricity-year-state { grid-column: 2; justify-self: start; }
  .electricity-pending-box { grid-template-columns: 1fr; }
  .electricity-pending-slots span { flex: 1; width: auto; }
  .electricity-module-row { grid-template-columns: 45px minmax(0, 1fr); }
  .electricity-status { grid-column: 2; justify-self: start; }
  .electricity-source { grid-template-columns: 1fr; gap: 8px; }
  .electricity-source div { flex-wrap: wrap; }
  .schedule-heading { min-height: 0; padding: 24px; align-items: flex-start; flex-direction: column; }
  .schedule-heading h1 { align-items: center; flex-direction: row; flex-wrap: wrap; gap: 12px; }
  .schedule-heading h1 > span:first-child { max-width: none; white-space: nowrap; }
  .schedule-robla-logo { width: 142px; height: 142px; }
  .schedule-tunivers-logo { width: 235px; height: 92px; }
  .schedule-heading p { line-height: 1.5; }
  .schedule-summary { width: 100%; min-width: 0; }
  .schedule-legend { overflow-x: auto; scrollbar-width: none; }
  .schedule-legend::-webkit-scrollbar { display: none; }
  .schedule-legend > * { flex: 0 0 auto; }
  .schedule-mobile-days { min-height: 74px; padding: 9px 12px; border-bottom: 1px solid var(--line); background: #f7f9f5; display: grid; grid-template-columns: 46px minmax(0, 1fr) 46px; gap: 10px; align-items: center; }
  .schedule-mobile-days button { width: 46px; height: 46px; border: 1px solid #d7dfd5; border-radius: 13px; background: white; color: var(--forest); font-size: 21px; font-weight: 850; box-shadow: 0 5px 14px rgba(30,55,46,.06); }
  .schedule-mobile-days button:disabled { opacity: .3; box-shadow: none; cursor: not-allowed; }
  .schedule-mobile-days > div { min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; text-align: center; }
  .schedule-mobile-days small { color: #74817a; font-size: 10px; font-weight: 900; letter-spacing: .11em; }
  .schedule-mobile-days strong { color: var(--forest); font-size: 18px; }
  .weekly-schedule-wrap { overflow-x: visible; }
  .weekly-schedule { width: 100%; min-width: 0; padding: 8px; grid-template-columns: 76px minmax(0, 1fr); }
  .schedule-day, .schedule-class, .schedule-free, .schedule-duty { display: none; }
  .schedule-day.is-mobile-active, .schedule-class.is-mobile-active, .schedule-free.is-mobile-active, .schedule-duty.is-mobile-active { display: flex; }
  .schedule-break { grid-column: span 1; }
  .evaluation-milestones > header { align-items: flex-start; flex-direction: column; gap: 7px; }
  .center-calendar-page { padding: 21px 18px 56px; }
  .school-calendar-hero { min-height: 175px; padding: 25px; }
  .school-calendar-hero h1 { font-size: 38px; }
  .calendar-official-seal { width: 82px; height: 82px; border-radius: 20px; }
  .calendar-module-seal { width: 98px; }
  .calendar-module-seal strong { max-width: 82px; font-size: 16px; }
  .calendar-official-seal strong { font-size: 24px; }
  .calendar-controls { grid-template-columns: 1fr; }
  .calendar-filter-group--term { grid-column: auto; }
  .term-highlight-banner { grid-template-columns: auto 1fr; }
  .term-highlight-banner > em { grid-column: 2; justify-self: start; }
  .school-calendar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .calendar-side-panel { grid-template-columns: 1fr 1fr; }
  .calendar-side-panel > section:last-child { grid-column: 1 / -1; }
  .module-term-load > header { align-items: flex-start; flex-direction: column; gap: 8px; }
  .module-term-load > header p { max-width: none; text-align: left; }
  .module-weekly-pattern { grid-template-columns: 1fr; }
  .module-weekly-pattern > section { overflow-x: auto; grid-template-columns: repeat(var(--module-days), minmax(125px, 1fr)); scrollbar-width: none; }
  .module-weekly-pattern > section::-webkit-scrollbar { display: none; }
  .module-grid { grid-template-columns: 1fr; }
  .module-card { min-height: 342px; }
  .filter-row { align-items: flex-start; }
  .filter-control { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
  .filter-result { display: none; }
  .filter-chip { flex: 0 0 auto; }
  .quick-strip { grid-template-columns: 1fr; }
  .quick-strip button { border-left: 0; border-top: 1px solid var(--line); }
  .module-workspace { padding: 21px 18px 56px; }
  .module-workspace-hero { grid-template-columns: 70px minmax(0,1fr); gap: 15px; padding: 17px; }
  .workspace-monogram { width: 70px; height: 70px; border-radius: 16px; }
  .workspace-monogram::before { width: 60px; height: 60px; }
  .workspace-monogram span { font-size: 16px; }
  .workspace-facts { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .module-tabs { overflow-x: auto; scrollbar-width: none; }
  .module-tabs button { flex: 0 0 auto; min-width: 116px; }
  .workspace-section-heading { display: block; }
  .heading-actions { margin-top: 15px; flex-wrap: wrap; }
  .trimester-switcher { overflow-x: auto; }
  .trimester-switcher button { flex: 0 0 auto; }
  .company-period { flex: 0 0 auto; }
  .grade-metrics, .program-overview { grid-template-columns: 1fr 1fr; }
  .gradebook-switcher { flex-wrap: nowrap; }
  .gradebook-switcher .gradebook-final-tab { margin-left: 0; }
  .gradebook-ra-plan > header { align-items: flex-start; flex-direction: column; gap: 11px; }
  .gradebook-ra-plan > header > strong { max-width: none; text-align: left; }
  .gradebook-ra-plan > div { display: flex; overflow-x: auto; scrollbar-width: none; }
  .gradebook-ra-plan > div::-webkit-scrollbar { display: none; }
  .gradebook-ra-card { flex: 0 0 230px; }
  .gradebook-formula { display: none; }
  .ra-grade-table-wrap { display: none; }
  .grade-mobile-list { padding: 8px; display: flex; flex-direction: column; gap: 7px; }
  .grade-mobile-average { min-height: 58px; padding: 9px 13px; border: 1px solid #cfdccc; border-radius: 13px; background: #edf4e9; display: flex; justify-content: space-between; align-items: center; color: #526a4b; font-size: 12px; font-weight: 850; }
  .grade-mobile-average .calculated-grade { margin: 0; font-size: 16px; font-weight: 950; }
  .grade-mobile-student { overflow: hidden; border: 1px solid #dfe5dc; border-radius: 13px; background: white; }
  .grade-mobile-student > summary { min-height: 66px; padding: 9px 12px; display: grid; grid-template-columns: 36px minmax(0, 1fr) auto 25px; gap: 9px; align-items: center; cursor: pointer; list-style: none; }
  .grade-mobile-student > summary::-webkit-details-marker { display: none; }
  .grade-mobile-student > summary > strong { font-size: 13px; }
  .grade-mobile-student > summary > span:nth-of-type(2) { display: flex; flex-direction: column; align-items: flex-end; }
  .grade-mobile-student:not(.grade-mobile-final) > summary > span:nth-of-type(2) { min-width: 76px; padding: 6px 8px; border-radius: 10px; background: #edf5e9; box-shadow: inset 0 0 0 1px #d3e2cd; }
  .grade-mobile-student > summary small { color: #7c8882; font-size: 9px !important; }
  .grade-mobile-student > summary b { min-width: 37px; margin-top: 2px; padding: 4px 7px; border-radius: 7px; text-align: center; }
  .grade-mobile-student > summary b.is-passing { background: #e7f3e1; color: #3e6637; }
  .grade-mobile-student > summary b.is-watch { background: #fff2d4; color: #7d5a1e; }
  .grade-mobile-student > summary b.is-failing { background: #ffebe7; color: #93473b; }
  .grade-mobile-student > summary b.is-empty { border: 1px dashed #d7ddd5; color: #98a19d; }
  .grade-mobile-student > summary > i { color: #718078; font-size: 18px; font-style: normal; transition: transform .2s ease; }
  .grade-mobile-student[open] > summary > i { transform: rotate(45deg); }
  .grade-mobile-ra-grid { padding: 8px 12px 12px; border-top: 1px solid #e7ebe5; background: #fafbf9; display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .grade-mobile-ra-grid article { min-width: 0; min-height: 125px; padding: 11px; border: 1px solid #dde5da; border-radius: 11px; background: white; display: flex; flex-direction: column; align-items: flex-start; }
  .grade-mobile-ra-grid article header { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 7px; }
  .grade-mobile-ra-grid article header span { color: var(--forest); font-size: 11px; font-weight: 900; }
  .grade-mobile-ra-grid article header button { padding: 0; border: 0; background: transparent; color: #6e8566; font-size: 9px; font-weight: 800; }
  .grade-mobile-ra-grid article > strong { margin: 8px 0 10px; color: #526159; font-size: 11px; line-height: 1.25; }
  .grade-mobile-ra-grid .grade-input-shell, .grade-mobile-ra-grid .ra-grade-button { margin: auto 0 0; }
  .grade-mobile-student > footer { min-height: 52px; padding: 8px 13px; border-top: 1px solid #e1e7df; background: #f1f6ee; display: flex; justify-content: space-between; align-items: center; color: #597052; font-size: 11px; font-weight: 800; }
  .grade-mobile-student > footer strong { min-width: 42px; padding: 7px; border-radius: 8px; text-align: center; }
  .grade-mobile-term-grid { padding: 11px 12px; border-top: 1px solid #e5eae3; display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
  .grade-mobile-term-grid article { min-height: 58px; padding: 8px; border-radius: 10px; background: #f5f8f3; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; }
  .grade-mobile-term-grid span { color: #748079; font-size: 9px; }
  .grade-mobile-term-grid strong { font-size: 14px; }
  .mobile-evaluation-path { padding: 0 12px 11px; display: flex; flex-direction: column; gap: 5px; }
  .mobile-evaluation-path > span { color: #6c7972; font-size: 10px; font-weight: 800; }
  .mobile-evaluation-path .evaluation-path { width: 100%; }
  .grade-mobile-finals { padding: 0 12px 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .grade-mobile-finals article { padding: 10px; border: 1px solid #e1e6df; border-radius: 10px; display: flex; justify-content: space-between; align-items: center; }
  .grade-mobile-finals article > span { color: #68756e; font-size: 10px; font-weight: 900; }
  .grade-mobile-finals .final-exam-input { margin: 0; }
  .final-rules { grid-template-columns: 1fr; }
  .final-rules > i { justify-self: center; }
  .ra-activity-list article { grid-template-columns: 32px minmax(0, 1fr) 35px; align-items: start; }
  .ra-activity-list article > span { grid-row: 1 / 3; }
  .ra-activity-list article > label { grid-column: 2; }
  .ra-activity-list article > button { grid-column: 3; grid-row: 1; }
  .student-ra-activity-list { grid-template-columns: 1fr; }
  .evidence-panel { grid-template-columns: 1fr; }
  .evidence-heading, .weight-check { grid-column: 1; }
  .evidence-card { margin: 0 5px; border-bottom: 1px solid #edf0ec; }
  .timeline-summary { grid-template-columns: 1fr; }
  .timeline-summary > div, .timeline-summary > div:first-child, .timeline-summary > div:last-child { grid-column: auto; border-left: 0; border-top: 1px solid var(--line); }
  .timeline-summary > div:first-child { border-top: 0; }
  .timeline-panel { overflow: hidden; }
  .unit-list { overflow: visible; padding: 9px; }
  .unit-row { min-width: 0; margin: 5px 0; padding: 13px 10px; border: 1px solid #e1e7df; border-radius: 13px; grid-template-columns: 34px minmax(0, 1fr) auto; grid-template-areas: "number main main" ". hours edit" ". progress status"; gap: 10px 12px; }
  .unit-row:last-child { border-bottom: 1px solid #e1e7df; }
  .unit-number { grid-area: number; padding-top: 7px; align-self: start; }
  .unit-main { grid-area: main; }
  .unit-hours { grid-area: hours; width: 105px; }
  .unit-progress { grid-area: progress; }
  .unit-status { grid-area: status; }
  .unit-row > .unit-edit-date { grid-area: edit; }
  .module-overview-grid { grid-template-columns: 1fr; }
  .overview-card--featured { grid-row: auto; min-height: 330px; }
  .recent-activity { grid-column: auto; }
  .profile-page { padding: 21px 18px 56px; }
  .profile-hero { grid-template-columns: auto 1fr; padding: 19px; }
  .profile-avatar-large { width: 72px; height: 72px; border-radius: 20px; font-size: 18px; }
  .profile-hero h1 { font-size: 28px; }
  .profile-state { grid-column: 1 / -1; width: 100%; }
  .profile-layout { grid-template-columns: 1fr; }
  .settings-nav { display: flex; gap: 5px; overflow-x: auto; scrollbar-width: none; }
  .settings-nav > span, .settings-help { display: none; }
  .settings-nav > button { flex: 0 0 auto; width: auto; min-width: 158px; grid-template-columns: 36px 1fr; }
  .settings-nav > button > svg { display: none; }
  .settings-content { padding: 25px 20px; }
  .teacher-admin-heading { padding-right: 0; }
  .teacher-admin-heading > .primary-action { position: static; margin-top: 17px; width: 100%; }
  .teacher-admin-card { padding: 16px; }
  .teacher-admin-card > header { grid-template-columns: auto 1fr; }
  .teacher-status { grid-column: 1 / -1; justify-self: start; }
  .teacher-contact { grid-template-columns: 1fr auto; }
  .teacher-contact > span { grid-column: 1 / -1; }
  .teacher-modules ul { grid-template-columns: 1fr; }
  .teacher-admin-card > footer { flex-direction: column; }
  .teacher-admin-card > footer button { width: 100%; }
  .theme-preview { grid-template-columns: 1fr; }
  .theme-preview article { max-width: 330px; width: 100%; }
  .curriculum-source-banner { grid-template-columns: 70px 1fr; padding: 18px; }
  .curriculum-source-meta { grid-column: 1 / -1; min-width: 0; }
  .curriculum-tabs { display: flex; overflow-x: auto; scrollbar-width: none; }
  .curriculum-tabs button { flex: 0 0 220px; }
  .ra-explorer { grid-template-columns: 1fr; }
  .ra-index-list { display: flex; gap: 7px; overflow-x: auto; scrollbar-width: none; }
  .ra-index-item, .ra-index-item.is-active { flex: 0 0 255px; margin: 0; transform: none; border: 1px solid var(--line); }
  .module-links-strip { grid-template-columns: 1fr; gap: 13px; }
  .module-links-strip > i { transform: rotate(90deg); }
  .module-links-strip > button { justify-content: space-between; }
  .cycle-lists-grid, .regulation-grid { grid-template-columns: 1fr; }
  .regulation-intro { align-items: flex-start; }
  .source-trace-card { grid-template-columns: auto 1fr; }
  .source-trace-card a { grid-column: 2; justify-self: start; }
  .content-topic-list { grid-template-columns: 1fr; }
  .python-lesson-hero { grid-template-columns: 1fr; align-items: start; }
  .python-lesson-hero > aside { display: grid; grid-template-columns: repeat(3, 1fr); }
  .python-lesson-hero > aside div { min-height: 58px; padding: 0 10px; border-bottom: 0; border-left: 1px solid rgba(255,255,255,.13); }
  .python-lesson-hero > aside div:first-child { border-left: 0; }
  .python-reader-layout { grid-template-columns: minmax(0, 1fr); }
  .python-reader-layout > * { width: 100%; min-width: 0; max-width: 100%; }
  .python-reader-sidebar { max-height: none; overflow: visible; position: static; }
  .python-section-nav { overflow: visible; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
  .python-section-nav > span { display: block; grid-column: 1 / -1; }
  .python-section-nav-item { width: 100%; min-width: 0; }
  .python-course-planning > header { align-items: flex-start; flex-direction: column; }
  .python-course-planning > header aside { width: 100%; }
  .python-course-session-list article { grid-template-columns: 1fr; }
  .python-reader-toolbar { flex-wrap: wrap; }
  .python-teacher-content-actions { order: 3; width: 100%; margin-left: 0; }
  .python-teacher-content-actions button { flex: 1; }
}

@media (max-width: 520px) {
  .app-brand small { display: none; }
  .teacher-access-button { padding: 0 12px; }
  .sign-out-header-button { width: 42px; padding: 0; justify-content: center; }
  .sign-out-header-button span { display: none; }
  .public-catalog { padding-top: 18px; }
  .public-catalog > header h1 { font-size: 38px; }
  .public-catalog > header h2, .public-module-information > header h2, .public-topic-section > header h2 { font-size: 32px; }
  .public-module-hero { grid-template-columns: 1fr; }
  .public-module-hero-code { width: 88px; height: 88px; }
  .public-module-hero h1 { font-size: 34px; }
  .public-module-information article { grid-template-columns: 1fr; }
  .access-modal-backdrop { padding: 10px; }
  .access-modal-copy { padding: 23px 21px 15px; }
  .access-form { padding: 0 21px 21px; }
  .access-server-setup { margin: 0 21px 21px; }
  .center-overview { border-radius: 19px; }
  .schedule-heading { padding: 21px 19px; }
  .schedule-heading h1 { font-size: 31px; }
  .schedule-robla-logo { width: 122px; height: 122px; }
  .schedule-tunivers-logo { width: min(235px, 100%); height: 88px; }
  .schedule-summary { grid-template-columns: auto 1fr 1px auto 1fr; padding: 12px 14px; }
  .schedule-summary strong { font-size: 22px; }
  .schedule-legend { padding: 0 13px; }
  .weekly-schedule { width: 100%; min-width: 0; padding: 8px; grid-template-columns: 72px minmax(0, 1fr); }
  .school-calendar-hero { min-height: 0; padding: 24px 20px; }
  .school-calendar-hero h1 { font-size: 31px; }
  .school-calendar-hero p { max-width: 250px; line-height: 1.5; }
  .calendar-official-seal { display: none; }
  .module-calendar-context { grid-template-columns: 42px 1fr; padding: 10px; }
  .module-calendar-context > span { width: 42px; height: 42px; border-radius: 11px; }
  .module-calendar-context > div { grid-template-columns: 1fr; }
  .module-calendar-context em { justify-self: start; }
  .calendar-filter-group--term > div { min-height: 0; display: grid; grid-template-columns: 1fr; }
  .calendar-filter-group--term button { min-height: 39px; }
  .term-highlight-banner { padding: 16px; grid-template-columns: 47px 1fr; gap: 12px; }
  .term-highlight-banner > span { width: 47px; height: 47px; border-radius: 13px; }
  .term-highlight-banner h2 { font-size: 17px; }
  .evaluation-milestones > header { padding: 14px 16px; }
  .evaluation-milestones > header h2 { font-size: 17px; }
  .evaluation-milestones > div { grid-template-columns: 1fr; }
  .term-highlight-banner p { line-height: 1.5; }
  .school-calendar-grid { grid-template-columns: 1fr; }
  .school-month { min-height: 295px; }
  .calendar-day { font-size: 9px; }
  .calendar-side-panel { grid-template-columns: 1fr; }
  .calendar-side-panel > section:last-child { grid-column: auto; }
  .calendar-pending { padding: 38px 20px; }
  .calendar-pending h1 { font-size: 27px; }
  .module-term-cards { grid-template-columns: 1fr; }
  .module-term-cards button { min-height: 79px; }
  .module-weekly-pattern > section { grid-template-columns: repeat(var(--module-days), minmax(138px, 1fr)); }
  .unit-row { grid-template-columns: 30px minmax(0, 1fr) auto; grid-template-areas: "number main main" ". hours status" ". progress progress" ". edit edit"; }
  .unit-row > .unit-edit-date { width: 100%; }
  .schedule-date-backdrop { padding: 10px; }
  .schedule-date-modal > header { min-height: 0; padding: 21px 19px; }
  .schedule-date-modal > header h2 { font-size: 23px; }
  .schedule-date-modal form { padding: 20px 19px; }
  .schedule-date-fields { grid-template-columns: 1fr; gap: 11px; }
  .schedule-date-fields > span { display: none; }
  .schedule-date-modal form > footer { align-items: stretch; flex-direction: column-reverse; }
  .schedule-date-modal form > footer > div { display: grid; grid-template-columns: 1fr 1fr; }
  .schedule-date-modal form > footer > button { width: 100%; }
  .section-heading h2 { font-size: 25px; }
  .add-module { width: 40px; padding: 0; font-size: 0; }
  .add-module span { margin: 0; font-size: 15px; }
  .module-card { min-height: 325px; }
  .module-monogram { height: 122px; }
  .workspace-labels em { display: none; }
  .workspace-facts { grid-template-columns: 1fr 1fr; }
  .workspace-facts button { display: none; }
  .workspace-section-heading h2 { font-size: 25px; }
  .evidence-modal-backdrop { padding: 12px; }
  .evidence-modal > header { padding: 20px; }
  .evidence-modal > header h2 { font-size: 25px; }
  .evidence-modal form { padding: 19px; grid-template-columns: 1fr; }
  .evidence-field--wide, .evidence-modal form > footer { grid-column: 1; }
  .evidence-modal form > footer { justify-content: stretch; }
  .evidence-modal form > footer button { flex: 1; }
  .grade-metrics, .program-overview { grid-template-columns: 1fr; }
  .gradebook-ra-plan > header { padding: 16px; }
  .gradebook-ra-plan > div { padding: 10px; }
  .gradebook-ra-card { flex-basis: 210px; }
  .panel-toolbar { padding: 0 14px; }
  .grade-mobile-ra-grid { grid-template-columns: 1fr; }
  .grade-mobile-term-grid { grid-template-columns: repeat(2, 1fr); }
  .grade-mobile-student > summary { grid-template-columns: 34px minmax(0, 1fr) auto 20px; }
  .grade-mobile-student > summary .student-avatar { width: 34px; height: 34px; }
  .final-rules { padding: 10px; }
  .ra-activity-list article { padding: 9px; }
  .student-ra-activity-list label { padding: 10px; }
  .demo-label { display: none; }
  .content-topic-card > header { grid-template-columns: auto minmax(0, 1fr); align-items: start; }
  .content-topic-actions { grid-column: 1 / -1; justify-self: end; }
  .content-topic-title-form { grid-template-columns: 1fr 1fr; }
  .content-topic-title-form input { grid-column: 1 / -1; }
  .content-topic-program { align-items: flex-start; flex-direction: column; }
  .content-topic-resources { flex-wrap: wrap; }
  .content-topic-resources > em { width: 100%; margin-left: 0; }
  .activity-list p { grid-template-columns: 29px 1fr; }
  .activity-list small { grid-column: 2; }
  .form-grid, .density-grid, .palette-grid { grid-template-columns: 1fr; }
  .signature-card { display: block; }
  .signature-card p { margin-top: 14px; }
  .form-actions { align-items: flex-end; }
  .form-actions > span { max-width: 150px; }
  .preference-row { grid-template-columns: 1fr; gap: 12px; }
  .security-status { grid-template-columns: auto 1fr; }
  .security-status > em { grid-column: 1 / -1; width: max-content; }
  .security-row { grid-template-columns: auto 1fr; }
  .security-row > button, .managed-badge { grid-column: 2; justify-self: start; }
  .settings-heading h2 { font-size: 27px; }
  .official-data-label { display: inline-flex; }
  .curriculum-source-banner { grid-template-columns: 52px 1fr; gap: 13px; }
  .official-seal { width: 52px; height: 52px; border-radius: 14px; font-size: 18px; }
  .curriculum-source-banner h3 { font-size: 16px; }
  .curriculum-tabs button { flex-basis: 180px; }
  .curriculum-tabs button small { display: none; }
  .ra-detail-heading { padding: 18px; }
  .ra-detail-heading p { font-size: 13px; }
  .official-criteria-list { padding: 0 14px; }
  .official-criteria-list li { grid-template-columns: 40px 1fr; gap: 9px; }
  .official-criteria-list li button { grid-column: 2; justify-self: start; }
  .criteria-heading > small { display: none; }
  .general-competence-card { padding: 22px; }
  .general-competence-card > div { align-items: flex-start; flex-direction: column; gap: 5px; }
  .curriculum-filterbar { align-items: flex-start; flex-direction: column; }
  .curriculum-filterbar > div:last-child { width: 100%; }
  .curriculum-filterbar button { flex: 1; }
  .regulation-intro { display: block; }
  .regulation-legend { margin-top: 16px; }
  .regulation-card { min-height: 240px; }
  .source-trace-card { grid-template-columns: 1fr; }
  .source-trace-card a { grid-column: 1; }
  .curriculum-pending { padding: 34px 19px; }
  .curriculum-pending h2 { font-size: 25px; }
  .curriculum-pending > div { align-items: flex-start; flex-direction: column; }
  .curriculum-pending > div b { display: none; }
  .public-topic-open { grid-template-columns: 45px minmax(0, 1fr); gap: 13px; }
  .public-topic-open > span { width: 45px; height: 45px; }
  .python-reader-toolbar { padding: 8px; align-items: stretch; flex-direction: column; position: static; }
  .python-reader-toolbar > button { min-height: 38px; text-align: left; }
  .python-reader-toolbar > div { display: grid; grid-template-columns: 1fr auto 1fr; }
  .python-reader-toolbar > div button { padding: 0 9px; }
  .python-lesson-hero { min-height: 0; padding: 27px 22px; border-radius: 20px; }
  .python-lesson-hero h1 { font-size: 38px; }
  .python-lesson-hero p { font-size: 15px !important; }
  .python-lesson-outline span { font-size: 10px; }
  .python-lesson-hero > aside { padding: 7px; }
  .python-lesson-hero > aside div { padding: 7px; grid-template-columns: 1fr; gap: 2px; }
  .python-lesson-hero > aside strong { font-size: 24px; }
  .python-topic-introduction { padding: 22px 19px; }
  .python-topic-introduction > p { font-size: 15px !important; }
  .python-intro-grid { grid-template-columns: 1fr; }
  .python-lesson-block > header { padding: 18px; grid-template-columns: 44px minmax(0, 1fr); gap: 12px; }
  .python-lesson-block > header > span { width: 44px; height: 44px; }
  .python-lesson-block > header h2, .python-quiz > header h2, .python-exercise > header h2 { font-size: 23px; }
  .python-lesson-body { padding: 21px 18px 24px; }
  .python-lesson-body p, .python-lesson-body li { font-size: 14px !important; }
  .python-code-panel { margin-left: -3px; margin-right: -3px; }
  .python-code-panel pre { padding: 15px; font-size: 12px; }
  .python-quiz > header, .python-exercise > header { padding: 21px 19px 18px; }
  .python-quiz-list { padding: 4px 15px; }
  .python-quiz legend { grid-template-columns: 34px minmax(0, 1fr); font-size: 14px; }
  .python-quiz legend span { width: 34px; height: 34px; }
  .python-quiz-options { margin-left: 0; grid-template-columns: 1fr; }
  .python-question-feedback { margin-left: 0 !important; }
  .python-quiz > form > footer { padding: 15px; align-items: stretch; flex-wrap: wrap; }
  .python-quiz-score { width: 100%; margin: 0 0 4px; }
  .python-quiz > form > footer button { flex: 1; }
  .python-solution { margin: 0 18px 22px; }
  .python-section-image { margin: 0 18px 16px; padding: 13px; }
  .python-topic-introduction > .python-section-image { margin: 18px 0 0; }
  .python-section-video { margin: 0 18px 22px; padding: 13px; }
  .python-topic-introduction > .python-section-video { margin: 18px 0 0; }
  .python-section-video-control { padding: 0 18px 22px; }
  .python-topic-introduction > .python-section-video-control { padding: 12px 0 0; }
  .python-section-video-heading { align-items: flex-start; flex-direction: column; }
  .python-section-video-heading > button, .python-section-video-control > button { width: 100%; }
  .python-section-resources-control { padding: 0 18px 22px; flex-direction: column; }
  .python-topic-introduction > .python-section-resources-control { padding: 12px 0 0; }
  .python-section-resources-control > button { width: 100%; }
  .python-reader-footer button { padding: 0 10px; font-size: 11px; }
  .content-topic-publication { align-items: flex-start; flex-direction: column; }
  .content-topic-publication > button { width: 100%; }
  .python-course-planning > header { padding: 21px 19px; }
  .python-course-planning > header aside { min-width: 0; grid-template-columns: auto 1fr 1px auto 1fr; }
  .python-course-range { padding: 13px 19px; align-items: flex-start; flex-direction: column; }
  .python-course-range i { display: none; }
  .python-course-planning > details > summary { padding: 0 19px; }
  .python-course-session-list { padding: 2px 14px 17px; }
  .python-section-nav { grid-template-columns: minmax(0, 1fr); }
  .python-block-tools { flex-wrap: wrap; justify-content: flex-end; }
  .python-format-tools { order: 3; width: 100%; justify-content: flex-end; }
  .python-custom-block > header { grid-template-columns: 44px minmax(0, 1fr); }
  .python-custom-block .python-block-tools { grid-column: 1 / -1; justify-self: end; }
  .python-question-edit { position: static; margin: 0 0 10px 45px; }
  .python-quiz fieldset:has(.python-question-edit) legend { padding-right: 0; }
  .python-editor-backdrop { padding: 10px; }
  .python-editor-modal form { padding: 19px; grid-template-columns: 1fr; }
  .python-editor-modal form > label, .python-editor-modal form > p, .python-editor-modal form > footer { grid-column: 1; }
  .python-editor-modal form > footer { align-items: stretch; }
  .python-editor-modal form > footer button { flex: 1; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-delay: 0ms !important; transition-duration: .01ms !important; }
}
/* Teaching accounts and curriculum use the same readable control scale. */
.filter-row { flex-wrap: wrap; gap: 12px; }
.filter-row > [data-add-teaching-module] { margin-left: auto; min-height: 44px; font-size: 1rem; }
.teaching-module-form { display: grid; gap: 18px; min-width: 0; }
.teaching-module-form label, .activation-link-label { display: grid; gap: 8px; min-width: 0; font-size: 1rem; font-weight: 700; }
.teaching-module-form input, .teaching-module-form select, .activation-link-label input { width: 100%; min-width: 0; min-height: 48px; padding: 10px 12px; border: 1px solid var(--line, #d9e2da); border-radius: 12px; background: white; color: #1b2924; font: inherit; }
.activation-link-label { margin-bottom: 20px; }
.curriculum-content-panel { padding: clamp(18px, 3vw, 32px); border: 1px solid var(--line, #d9e2da); border-radius: 24px; background: white; font-size: 1rem; line-height: 1.65; }
.curriculum-content-panel h2 { font-size: 1.5rem; }
.curriculum-content-panel details { border-top: 1px solid var(--line, #d9e2da); padding: 14px 0; }
.curriculum-content-panel summary { min-height: 44px; cursor: pointer; font-size: 1.05rem; font-weight: 750; }
.curriculum-content-panel li + li { margin-top: 8px; }
@media (min-width: 1001px) { .module-workspace .curriculum-tabs { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 640px) { .filter-row > [data-add-teaching-module] { margin-left: 0; } }
