
/* Ellable Learning Portal · colorful classroom UI refresh */
:root{font-family:ui-rounded,"Nunito",Inter,system-ui,-apple-system,"Segoe UI",sans-serif;color:#20344d;background:#f6f8fe;scroll-behavior:smooth}
body{background:radial-gradient(ellipse at 90% 2%,#dff9f1 0,transparent 29%),radial-gradient(ellipse at 5% 26%,#e9e8ff 0,transparent 27%),#f7f9fd}
header{background:#172d46;padding-top:16px;padding-bottom:16px;box-shadow:0 8px 24px #14283e1c;position:relative;z-index:2}
.brand img{height:54px}.brand span{font-size:1.05rem}nav{font-size:.91rem}nav span{background:#ffffff19;padding:9px 12px;border-radius:100px}nav button{background:#ffffff20;border:1px solid #ffffff35}
main{max-width:1260px;margin:0 auto;padding:30px 22px 70px}
.page-intro{padding:20px 0 24px}.page-intro h1{font-size:clamp(2rem,4vw,3rem);letter-spacing:-.045em;margin:9px 0}.page-intro p{color:#66788a;margin:0;font-size:1.03rem}.eyebrow{color:#0a927e;font-weight:900;letter-spacing:.16em;font-size:.7rem}
.dashboard-top{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(110deg,#17354d,#176b73);color:white;border-radius:25px;padding:26px 34px;margin-bottom:19px;overflow:hidden;position:relative}.dashboard-top h2{font-size:clamp(1.5rem,3vw,2.1rem);letter-spacing:-.035em;margin:13px 0 8px}.dashboard-top p{color:#d6f1ee;margin:0}.role-pill{background:#ffffff25;padding:7px 12px;border-radius:100px;font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.09em}.orbit-art{font-size:5rem;animation:float 5s ease-in-out infinite;transform-origin:center}.orbit-art span{font-size:1.8rem;color:#ffd96b;position:absolute;right:4px;top:-8px;animation:twinkle 2s infinite alternate}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.stat-card{background:white;border:1px solid #e4eaf4;border-radius:20px;padding:22px;min-height:153px;display:flex;flex-direction:column;gap:8px;box-shadow:0 7px 20px #253c5a0c;transition:transform .25s,box-shadow .25s}.stat-card:hover{transform:translateY(-5px);box-shadow:0 14px 26px #253c5a20}.stat-card strong{font-size:2rem;letter-spacing:-.04em}.stat-card>span:last-child{color:#5b7084;font-weight:700;font-size:.86rem}.stat-icon{font-size:1.65rem}.stat-0{border-top:5px solid #14b99e}.stat-1{border-top:5px solid #ffbf55}.stat-2{border-top:5px solid #8c7ff5}.stat-3{border-top:5px solid #ff7b91}
.quick-nav{margin:24px 0 16px;background:#fff;border:1px solid #e4eaf4;border-radius:18px;padding:17px 20px}.quick-nav strong{display:block;font-size:.85rem;margin-bottom:11px;color:#50667d}.quick-nav>div{display:flex;flex-wrap:wrap;gap:8px}.quick-nav a{background:#edf8f6;color:#087d72;border-radius:100px;padding:8px 12px;font-size:.79rem;font-weight:800;text-decoration:none;transition:background .2s,transform .2s}.quick-nav a:hover{background:#c7f0e7;transform:translateY(-2px)}
.panel{border:1px solid #e5eaf2;border-radius:21px;padding:26px;margin:18px 0;box-shadow:0 8px 30px #1d34500a;scroll-margin-top:20px}.panel h2{font-size:1.22rem;letter-spacing:-.02em;display:flex;align-items:center;gap:10px}.panel-symbol{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#e4f8f4;color:#0aa48d;font-size:1rem}.panel:nth-of-type(4n+2) .panel-symbol{background:#fff2dc;color:#d58b12}.panel:nth-of-type(4n+3) .panel-symbol{background:#edeaff;color:#7564d9}
.edit{background:#f8faff;border:1px solid #e9edf5;border-radius:15px;padding:17px;margin-top:18px;gap:13px}.form-title{width:100%;font-size:.8rem;color:#637c93;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.edit label{font-weight:700;color:#40556b}input,select,textarea{border-radius:11px;padding:12px;border:1px solid #cdd9e7;min-height:44px}input:focus,select:focus,textarea:focus{outline:3px solid #a3e9db;border-color:#159d8a}button{background:#0aa88e;border-radius:11px;padding:12px 20px;box-shadow:0 4px 0 #087d6b;transition:transform .18s,background .18s}button:hover{background:#078d78;transform:translateY(-2px)}button:active{transform:translateY(2px);box-shadow:none}
th{background:#f0f6fb;color:#546a7d;text-transform:uppercase;letter-spacing:.04em;font-size:.73rem}tbody tr:hover{background:#f8fbff}td{line-height:1.55}.login{max-width:490px;margin:38px auto;border:1px solid #e0e9f3;box-shadow:0 15px 40px #243c5820;padding:34px}.login h2{font-size:1.7rem}.success{border-radius:12px}.student-heading{background:#eaf9f5;border-left:6px solid #14b99e;border-radius:8px;padding:14px 18px}
@keyframes float{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-12px) rotate(5deg)}}@keyframes twinkle{from{opacity:.35;transform:scale(.75)}to{opacity:1;transform:scale(1.2)}}
@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){main{padding:18px 14px 50px}.dashboard-top{padding:23px}.orbit-art{font-size:3rem}.stats-grid{gap:10px}.stat-card{padding:15px;min-height:132px}.stat-card strong{font-size:1.65rem}.panel{padding:17px}.brand img{height:42px}nav span{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* V3 tabbed workspace */
#quick-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.workspace-tab{border:1px solid #d7e5eb;background:#fff;color:#244456;border-radius:12px;padding:11px 15px;font-weight:700;cursor:pointer;transition:transform .2s,background .2s}.workspace-tab:hover{transform:translateY(-2px)}.workspace-tab.selected{background:#176c78;color:white;border-color:#176c78}.panel[hidden]{display:none!important}.panel.visible{opacity:1!important;transform:none!important}.calendar-app{background:#f7fbfc;border:1px solid #d8e8ee;border-radius:18px;padding:16px;margin:14px 0}.calendar-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:15px}.calendar-toolbar select{max-width:240px}.calendar-toolbar strong{flex:1;text-align:center}.calendar-toolbar button{border:0;background:#dceff0;border-radius:10px;padding:8px 17px;font-size:22px;cursor:pointer}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-weekdays{text-align:center;font-weight:800;color:#537482;margin-bottom:7px}.calendar-day{min-height:104px;text-align:left;display:flex;flex-direction:column;gap:4px;overflow:hidden;background:#fff;border:1px solid #dbe6eb;border-radius:10px;padding:8px;cursor:pointer;color:#234}.calendar-day:hover{border-color:#18a2aa;background:#effcfc}.calendar-day.today{outline:2px solid #19b1ac}.event-chip{font-size:11px;line-height:1.2;background:#e6f4fa;border-radius:5px;padding:3px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-chip.homework{background:#fff0d3}.event-chip.lesson{background:#e7e2ff}.calendar-details{margin-top:12px;padding:12px;background:white;border-radius:12px;min-height:45px}.reward-grid,.file-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.reward-card,.file-card{border:1px solid #d9e8ed;background:linear-gradient(140deg,#fff,#f2fbfc);border-radius:16px;padding:16px;box-shadow:0 5px 16px #133e5210;animation:cardIn .35s ease both}.reward-card small,.file-card small{display:block;color:#647d87;margin-top:4px}.reward-numbers{display:flex;justify-content:space-between;align-items:center;margin:12px 0;color:#136e7a}.reward-numbers span{background:#fef0c6;border-radius:999px;padding:4px 8px}.reward-quick{display:grid;gap:8px}.reward-quick input{width:100%}.reward-quick button{background:#17a398;color:white;border:0;border-radius:10px;padding:11px;font-weight:800;cursor:pointer}.reward-quick button:hover{animation:rewardPulse .5s ease}.file-card{text-decoration:none;color:#264d61;display:block}.file-card:hover{transform:translateY(-3px)}@keyframes cardIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes rewardPulse{50%{transform:scale(1.06)}}@media(max-width:650px){.calendar-day{min-height:70px;padding:3px}.event-chip{font-size:9px}.calendar-app{padding:7px}.calendar-toolbar strong{flex-basis:100%;order:-1}.workspace-tab{padding:9px 11px;font-size:12px}}@media(prefers-reduced-motion:reduce){.reward-card,.file-card,.reward-quick button{animation:none!important;transition:none!important}}

.calendar-dialog{border:0;border-radius:20px;max-width:520px;width:min(95vw,520px);box-shadow:0 25px 80px #122a4155;padding:25px}.calendar-dialog::backdrop{background:#102c43a0}.calendar-edit{display:grid;gap:12px}.calendar-edit label{display:grid;gap:5px}.calendar-edit input,.calendar-edit textarea,.calendar-edit select{width:100%;padding:10px;border:1px solid #c6dbe4;border-radius:9px}.calendar-actions{display:flex;gap:10px;flex-wrap:wrap}.calendar-actions button,.calendar-details button{padding:10px 14px;border-radius:9px;border:1px solid #c5dce2;cursor:pointer}.calendar-actions .danger{background:#ffe1e1;color:#9c1b1b}.calendar-item{display:block;width:100%;text-align:left;margin:8px 0;background:#f0f7fa}.agenda-grid{display:flex;flex-direction:column}.agenda-grid .calendar-day{min-height:55px}.calendar-toolbar select:last-child{max-width:110px}@media(max-width:650px){.calendar-toolbar{gap:6px}.calendar-toolbar select{max-width:130px}.calendar-day{min-height:68px}}
.calendar-date-actions{display:grid;gap:10px}.calendar-date-actions h3{margin:0}.calendar-date-actions h4{margin:10px 0 0}.calendar-date-actions button{border:1px solid #c8e3e5;background:#f0fafb;color:#164958;border-radius:12px;padding:13px;text-align:left;font-weight:700;cursor:pointer}.calendar-date-actions button:hover{background:#d9f5f3}.calendar-date-actions button:disabled{opacity:.55;cursor:default}

.homework-list{display:grid;gap:1rem}.homework-card{background:var(--card,#fff);border:1px solid #d8e5ea;border-radius:18px;padding:1.2rem}.homework-card h3{margin-top:0}.calendar-edit input[type=file]{max-width:100%}

/* V6 parent portal: calendar-first navigation inspired by familiar online calendars. */
body[data-role="parent"] main{max-width:1600px;padding:20px 24px 65px}
body[data-role="parent"] .page-intro{padding:6px 0 14px}
body[data-role="parent"] .page-intro h1{font-size:1.55rem;margin:4px 0}
body[data-role="parent"] .dashboard-top.parent-hero{padding:14px 22px;border-radius:16px;margin-bottom:12px}
body[data-role="parent"] .dashboard-top.parent-hero h2{font-size:1.2rem;margin:5px 0}
body[data-role="parent"] .dashboard-top.parent-hero .orbit-art{font-size:2.2rem}
body[data-role="parent"] .stats-grid{margin-bottom:18px}
.parent-workspace{display:grid;grid-template-columns:255px minmax(0,1fr);align-items:start;gap:20px}
.parent-sidebar{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto;background:#fff;border:1px solid #e2e7ed;border-radius:18px;box-shadow:0 4px 20px #1e39500b;padding:18px 10px}
.parent-sidebar .quick-nav{border:0;box-shadow:none;margin:0;padding:0;background:transparent}
.parent-sidebar .quick-nav>strong{font-size:1.04rem;color:#243e54;padding:0 12px;margin:0 0 12px}
.parent-sidebar-subtitle{font-size:.66rem;font-weight:900;letter-spacing:.16em;color:#0c9386;padding:0 12px;margin:0 0 6px}
.parent-sidebar #quick-links{display:flex;flex-direction:column;gap:4px;margin:0}
.parent-sidebar .workspace-tab{display:block;text-align:left;width:100%;border:0;border-radius:10px;padding:12px 13px;background:transparent;color:#38546b;font-size:.87rem;box-shadow:none;white-space:normal}
.parent-sidebar .workspace-tab:hover{background:#eff5f9;transform:none}
.parent-sidebar .workspace-tab.selected{background:#e2f4f1;color:#087b6f;box-shadow:inset 4px 0 #13a38e}
.parent-sidebar .workspace-tab:focus-visible{outline:3px solid #53bfb3;outline-offset:1px}
.parent-content{min-width:0}
.parent-content .panel{margin:0;border-radius:18px;min-height:470px;padding:22px}
body[data-role="parent"] .calendar-app{background:white;border:1px solid #e1e6ec;border-radius:12px;padding:14px}
body[data-role="parent"] .calendar-toolbar{border-bottom:1px solid #e5e9ee;padding-bottom:14px;gap:9px}
body[data-role="parent"] .calendar-toolbar strong{font-size:1.25rem;color:#273d50}
body[data-role="parent"] .calendar-toolbar button{font-size:1rem;background:white;border:1px solid #dce3eb;box-shadow:none;color:#38556a;padding:9px 12px}
body[data-role="parent"] .calendar-toolbar button:hover{background:#eff6fa}
body[data-role="parent"] .calendar-weekdays{margin-bottom:0;color:#6a7a87;font-size:.75rem}
body[data-role="parent"] .calendar-grid{gap:0;border-top:1px solid #dce4eb;border-left:1px solid #dce4eb}
body[data-role="parent"] .calendar-day{border:0;border-right:1px solid #dce4eb;border-bottom:1px solid #dce4eb;border-radius:0;min-height:120px;padding:8px;background:#fff;box-shadow:none;transition:background .12s}
body[data-role="parent"] .calendar-day:hover{background:#edf6fd;transform:none}
body[data-role="parent"] .calendar-day.today{outline:none;background:#f3fbfa}
body[data-role="parent"] .calendar-day.today>b{background:#127fba;color:#fff;width:28px;height:28px;border-radius:50%;display:grid;place-items:center}
body[data-role="parent"] .event-chip{background:#d8e9ff;color:#1b5b9b;border-left:3px solid #4d91d4;border-radius:4px;padding:5px 6px;font-size:.7rem}
body[data-role="parent"] .event-chip.homework{background:#fdf0d5;color:#8a5812;border-left-color:#e2a13a}
body[data-role="parent"] .event-chip.lesson{background:#e7e0ff;color:#5b4a99;border-left-color:#8c76da}
body[data-role="parent"] .calendar-dialog{max-width:560px}
body[data-role="parent"] .calendar-date-actions button:disabled{background:#f7fafc;opacity:1}
@media(max-width:960px){.parent-workspace{grid-template-columns:205px minmax(0,1fr)}body[data-role="parent"] .calendar-day{min-height:88px}}
@media(max-width:720px){body[data-role="parent"] main{padding:12px}.parent-workspace{display:block}.parent-sidebar{position:static;max-height:none;margin-bottom:12px;padding:10px}.parent-sidebar #quick-links{flex-direction:row;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.parent-sidebar .workspace-tab{flex:0 0 auto;width:auto;white-space:nowrap;padding:10px}.parent-content .panel{padding:12px;min-height:350px}body[data-role="parent"] .calendar-day{min-height:70px;padding:4px}body[data-role="parent"] .event-chip{font-size:.56rem;padding:3px}body[data-role="parent"] .calendar-toolbar strong{font-size:1rem}}

/* V7 parent child selector */
.child-picker{max-width:960px;margin:2rem auto}.child-picker h2{font-size:clamp(1.5rem,3vw,2.3rem)}.child-picker-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1.25rem;margin-top:1.5rem}.child-choice{display:flex;align-items:center;flex-direction:column;gap:1rem;padding:2rem 1rem;border:1px solid #d9e5e9;border-radius:20px;background:#fff;box-shadow:0 12px 32px #17354d12}.child-avatar{font-size:3rem;background:#e8f7f5;border-radius:50%;padding:1rem}.child-choice strong{font-size:1.2rem}.child-choice button{cursor:pointer}.selected-child-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:12px 18px;background:#e9f7f5;border:1px solid #a8d9d0;border-radius:14px;margin-bottom:1rem}.selected-child-bar form{margin:0}.selected-child-bar button{cursor:pointer}@media(max-width:540px){.selected-child-bar{flex-direction:column;align-items:stretch}}

/* V8 parent progress overview */
.parent-overview{display:grid;gap:22px}.overview-welcome{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(110deg,#123d58,#0c918b);color:white;padding:25px;border-radius:18px}.overview-welcome h3{font-size:1.65rem;margin:6px 0}.overview-welcome p{color:#d9f8f4;margin:0}.overview-kicker{font-size:.7rem;letter-spacing:.16em;font-weight:800;color:#a9f5df}.overview-rocket{font-size:3.4rem;animation:float 5s ease-in-out infinite}.overview-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.overview-metric{padding:17px;background:#f5f9ff;border:1px solid #e2eaf5;border-radius:15px;display:grid;gap:10px}.overview-metric>span{color:#51677b;font-size:.82rem;font-weight:700}.overview-metric strong{font-size:1.85rem;color:#153e54}.overview-metric small{font-size:.85rem;color:#788a9a}.overview-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.overview-box{padding:21px;border:1px solid #e2eaf2;border-radius:17px;background:white;min-width:0}.overview-box h3{margin:0 0 15px}.overview-box h4{margin:22px 0 10px}.progress-ring{margin:10px auto;width:160px;height:160px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#15ae9b var(--progress),#e6eef3 0);animation:cardIn .5s ease both}.progress-ring>span{background:#fff;width:125px;height:125px;border-radius:50%;display:grid;align-content:center;text-align:center}.progress-ring strong{font-size:2rem;color:#126d77}.progress-ring small{color:#6a8090}.progress-legend{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;color:#647b88;font-size:.8rem}.goal-mini,.due-mini{display:flex;justify-content:space-between;gap:12px;align-items:center;border-top:1px solid #eef1f6;padding:12px 0;font-size:.85rem}.goal-mini>span{overflow-wrap:anywhere}.goal-status{font-size:.72rem;font-style:normal;white-space:nowrap;padding:5px 9px;border-radius:30px;background:#eef2f6;color:#60778a}.goal-status.completed{background:#def7e9;color:#18764e}.goal-status.in_progress{background:#fff0d6;color:#946218}.homework-progress{height:16px;border-radius:30px;background:#e7eef5;overflow:hidden}.homework-progress div{height:100%;background:linear-gradient(90deg,#14a995,#58c4ad);border-radius:30px;transition:width .5s}.overview-submitted{font-size:.84rem;color:#647b88}.due-mini strong,.due-mini small,.due-mini time{display:block}.due-mini small{color:#758796;margin-top:5px}.due-mini>span:last-child{text-align:right;flex-shrink:0}.overview-footnote{color:#748595;font-size:.75rem;margin:0}@media(max-width:1080px){.overview-metrics{grid-template-columns:repeat(2,1fr)}.overview-columns{grid-template-columns:1fr}}@media(max-width:520px){.overview-welcome{padding:17px}.overview-rocket{font-size:2rem}.overview-metrics{gap:8px}.overview-metric{padding:12px}.overview-metric strong{font-size:1.45rem}}@media(prefers-reduced-motion:reduce){.overview-rocket,.progress-ring{animation:none}}

/* V9 curriculum visual journey */
.curriculum-journeys{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:18px}.journey-card{padding:22px;border:1px solid #d7e6eb;border-radius:20px;background:linear-gradient(145deg,#fff,#f2fcfa);box-shadow:0 5px 20px #193b4a0d}.journey-card h3{margin-top:0}.journey-bar{height:13px;background:#e3ebef;border-radius:30px;overflow:hidden}.journey-bar span{display:block;height:100%;background:linear-gradient(90deg,#12a99a,#64c6e9);border-radius:30px;transition:width .65s ease}.journey-card details,.curriculum-detail{margin:12px 0;border:1px solid #e3e9ef;border-radius:12px;padding:12px}.journey-card summary,.curriculum-detail summary{cursor:pointer;font-weight:700}.curriculum-detail summary span{float:right;color:#528184;font-weight:400}.curriculum-detail li{padding:9px 0;border-bottom:1px solid #edf1f4}.curriculum-detail li p{margin:4px 0;font-size:.92rem}.curriculum-detail li small{color:#198a81}

/* V10 visual curriculum */
.curriculum-intro{padding:22px;border-radius:20px;background:linear-gradient(120deg,#e9f7f5,#eaf1ff);color:#123149;margin-bottom:20px}.curriculum-intro h3{margin:0 0 6px}.level-flow{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:16px}.level-flow span{background:#fff;padding:10px 14px;border-radius:12px;font-weight:750;box-shadow:0 3px 14px #16455a16}.track-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:12px;margin:16px 0 28px}.track-tile{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;background:var(--card,#fff);border:1px solid #dbe7ed;border-radius:16px;padding:18px}.track-icon{font-size:34px}.track-tile small,.level-card small{opacity:.75}.track-section{margin:30px 0}.track-section>h3{font-size:1.3rem;margin-bottom:15px}.level-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:14px}.level-card{border:1px solid #dbe4ed;border-top:5px solid var(--track-accent);border-radius:16px;background:#fff;overflow:hidden;color:#20334a}.level-card>summary{list-style:none;cursor:pointer;padding:18px;display:flex;flex-direction:column;gap:8px}.level-card>summary::-webkit-details-marker{display:none}.level-card>summary strong{font-size:1.25rem}.level-card>summary p{font-size:.87rem;line-height:1.5;margin:4px 0}.level-number,.class-code{display:inline-block;align-self:flex-start;border-radius:8px;background:#eaf2fa;color:#234e78;font-size:.77rem;font-weight:800;padding:5px 9px}.expand-hint{color:#156da0;font-size:.83rem;font-weight:700}.session-list{padding:0 12px 16px;max-height:540px;overflow:auto}.session-row{border-top:1px solid #e3eaf1}.session-row>summary{cursor:pointer;display:flex;gap:9px;padding:12px 3px;align-items:flex-start}.session-row>summary span:last-child{display:flex;flex-direction:column;gap:4px}.session-row strong{font-size:.9rem}.session-info{padding:8px 12px 14px;font-size:.86rem;line-height:1.5;background:#f6f9fc;border-radius:10px}.placement-panel{padding:20px;background:#f2f8fa;border-radius:18px;margin:26px 0}.placement-panel form{margin:12px 0}.visual-journey{border-top:5px solid var(--track-accent)}.journey-heading{display:flex;align-items:flex-start;gap:15px}.student-session-list{display:grid;gap:8px;margin-top:14px}.student-session{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid #e2e9ef;border-radius:12px}.student-session.completed{background:#eaf8f1;border-color:#bde9d1}.student-session.in_progress{background:#fff7e5;border-color:#f4daa0}.session-status{font-size:1.3rem;color:#0b8b67}.student-session div{display:grid;gap:5px}.student-session small{color:#5b7185}.student-session p{margin:0;font-size:.85rem}@media(max-width:650px){.level-grid{grid-template-columns:1fr}.level-flow{gap:5px}.level-flow span{padding:8px;font-size:.8rem}}

/* V11 header, login and session checklist */
*,*::before,*::after{box-sizing:border-box}
.site-header{width:100%;padding:0 24px;min-height:82px;display:flex;align-items:center;color:#fff}
.header-inner{width:100%;max-width:1280px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px;min-width:0}
.site-header .brand{display:inline-flex;align-items:center;gap:12px;min-width:0;flex-shrink:0;color:#fff;text-decoration:none;font-weight:800}
.site-header .brand img{display:block;width:auto;max-width:100px;height:52px;object-fit:contain}
.site-header nav{display:flex;align-items:center;justify-content:flex-end;gap:14px;min-width:0;flex-wrap:wrap;color:#fff}
.site-header nav a{color:#fff;text-decoration:none;white-space:nowrap}
.site-header nav span{white-space:normal;overflow-wrap:anywhere}
.site-header nav form{margin:0;display:flex;align-items:center}
.site-header nav button{color:#fff;box-shadow:none;white-space:nowrap}
.login{width:min(100%,500px);margin:28px auto;padding:clamp(20px,4vw,36px)}
.login .edit{display:flex;flex-direction:column;align-items:stretch;gap:16px;width:100%}
.login .edit label{display:flex;flex-direction:column;gap:7px;width:100%;font-size:.92rem;line-height:1.4}
.login .edit input{display:block;width:100%;min-width:0;margin:0;height:48px}
.login .edit button{width:100%;margin-top:6px}
.session-checklist{display:grid;gap:8px;padding:12px 0}.session-checklist h4{margin:18px 0 5px;color:#176b73}
.session-check-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #e0e8f0;border-radius:12px;background:#fff}
.session-check-row label{display:flex;align-items:center;gap:12px;min-width:0;flex:1;cursor:pointer}
.session-check-row label input{width:21px;height:21px;min-height:21px;accent-color:#099a87;flex-shrink:0}
.session-check-row button{padding:8px 12px;box-shadow:none;white-space:nowrap}
@media(max-width:650px){.site-header{padding:12px 16px}.header-inner{gap:12px;flex-wrap:wrap}.site-header nav{width:100%;justify-content:space-between}.site-header .brand img{height:42px}.session-check-row{flex-wrap:wrap}.session-check-row button{margin-left:auto}}

/* V12 admin class and enrollment management */
.manage-intro{padding:18px 20px;background:linear-gradient(110deg,#e7f7f5,#eef4ff);border-radius:16px;margin-bottom:18px}.manage-intro h3{margin:0 0 6px}.manage-intro p{margin:0;color:#536879}.manage-editor{border:1px solid #dbe6ee;border-radius:14px;padding:14px;margin:14px 0}.manage-editor>summary,.admin-class-card summary{cursor:pointer;font-weight:700;color:#146e81}.admin-class-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:14px}.admin-class-card{border:1px solid #dce8ef;border-radius:16px;padding:17px;background:#fff;min-width:0}.admin-class-heading{display:grid;gap:6px}.admin-class-heading strong{font-size:1rem;overflow-wrap:anywhere}.admin-class-heading small{color:#637d8e}.admin-class-card>p{color:#647887;font-size:.86rem}.admin-class-card details{padding:12px 0}.admin-class-card .edit{display:grid;gap:10px;margin-top:12px}.admin-class-card .edit label{display:grid;gap:5px}.admin-class-card .edit input,.admin-class-card .edit textarea,.admin-class-card .edit select{width:100%;max-width:100%}.danger-button{background:#fff2f1!important;color:#a72b2b!important;border:1px solid #f2c4c1!important;padding:9px 12px!important;border-radius:9px;cursor:pointer}.archive-form{margin-top:12px}.restore-row{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #e5ecf1}.enrollment-tools{padding:15px;border:1px solid #deeaed;border-radius:14px;margin-bottom:20px}.enrollment-tools .edit{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.enrollment-tools .edit label{flex:1 1 220px}.enrollment-tools .edit button{flex:0 0 auto}.table-wrap td form{margin:0}@media(max-width:650px){.enrollment-tools .edit{display:grid}.restore-row{flex-wrap:wrap}}

/* V13 school administration */
.account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin:20px 0}.account-card{border:1px solid #dce7ed;background:#fff;border-radius:16px;padding:18px;box-shadow:0 4px 14px #17375a0b}.account-card-head{display:flex;align-items:center;gap:12px}.account-card-head>div{min-width:0;flex:1}.account-card-head strong,.account-card-head small{display:block;overflow-wrap:anywhere}.account-avatar{display:grid;place-items:center;background:#e4f5f2;color:#087d72;font-weight:800;border-radius:50%;width:44px;height:44px;flex-shrink:0}.account-status{border-radius:99px;padding:5px 9px;font-size:11px;font-weight:700}.account-status.enabled{background:#e3f7ec;color:#16633d}.account-status.disabled{background:#fce6e6;color:#993535}.account-card details{margin:10px 0;border-top:1px solid #edf1f4;padding-top:10px}.account-card summary,.lesson-editor summary{cursor:pointer}.account-toggle button{width:100%;margin-top:10px}.path-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.path-edit-grid>.manage-editor{align-self:start}.lesson-editor{padding:10px;border:1px solid #e3eaf1;border-radius:9px;margin:8px 0}.calendar-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.calendar-toolbar select{max-width:240px;min-width:135px}.calendar-grid{border:1px solid #dfe6ee;border-radius:12px;overflow:hidden}.calendar-grid button{border-radius:0!important}.account-card .edit label{display:block}.account-card .edit input,.account-card .edit select{width:100%;box-sizing:border-box}@media(max-width:650px){.account-grid,.path-edit-grid{grid-template-columns:1fr}.calendar-toolbar select{max-width:100%}}

/* V14 admin directory UX */
.admin-search-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:18px 0}.admin-search-bar label{font-weight:700;min-width:140px}.admin-search-bar input{flex:1 1 250px;min-width:0;max-width:560px;padding:12px 14px;border:1px solid #cadbe3;border-radius:12px;background:#fff}.admin-search-bar span{font-size:.83rem;color:#647887}.account-open{display:block;width:100%;text-align:left;cursor:pointer;color:inherit;font:inherit}.account-open:hover,.parent-directory-card:hover{border-color:#149c91;box-shadow:0 8px 20px #167b851c;transform:translateY(-1px)}.account-identity{display:block;min-width:0;flex:1}.account-meta{display:block;margin-top:12px;color:#637b89;font-size:.85rem}.admin-record-modal{width:min(94vw,620px);max-height:88vh;overflow:auto;border:0;border-radius:18px;padding:24px;box-shadow:0 24px 80px #102d4650;color:#17374b;background:#fff}.admin-record-modal::backdrop{background:#0b203a90}.modal-top{display:flex;justify-content:space-between;align-items:start;gap:16px;border-bottom:1px solid #e5edf1;padding-bottom:12px}.modal-top h3{margin:0}.modal-top p{margin:5px 0;color:#647887}.modal-close{border:0;background:#f0f4f6;border-radius:10px;padding:8px 12px;cursor:pointer}.modal-section{padding:16px 0;border-bottom:1px solid #e7edf2}.modal-section h4{margin:0 0 12px}.modal-section .edit{display:grid;gap:10px}.modal-section label{display:grid;gap:5px}.modal-section input,.modal-section select{width:100%;max-width:100%;box-sizing:border-box}.parent-directory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:14px}.parent-directory-card{display:flex;align-items:center;gap:13px;width:100%;text-align:left;padding:16px;border:1px solid #dce7ed;border-radius:14px;background:white;cursor:pointer;color:inherit;font:inherit}.parent-directory-info{display:grid;gap:4px;min-width:0;flex:1}.parent-directory-info small{color:#687e8d;overflow-wrap:anywhere}.linked-child-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #eef2f4}.history-grid-wrap{border:1px solid #e0e8ef;border-radius:14px;overflow:auto}.history-table{width:100%;border-collapse:collapse;min-width:760px}.history-table th{text-align:left;background:#f0f7f8;color:#365669;font-size:.8rem;letter-spacing:.02em;white-space:nowrap;padding:14px}.history-table td{padding:13px 14px;border-bottom:1px solid #e8eef2;vertical-align:middle}.history-table tbody tr:nth-child(even){background:#f8fbfc}.history-table tbody tr:hover{background:#eaf7f6}.history-student{font-weight:700}.history-code{font-family:ui-monospace,monospace;font-size:.82rem;background:#eaf2f7;padding:5px 8px;border-radius:6px;white-space:nowrap}.history-status{display:inline-block;border-radius:99px;padding:5px 10px;font-size:.78rem;font-weight:700}.history-status.is-active{color:#176d49;background:#ddf5e8}.history-status.is-inactive{color:#845b1c;background:#fff1d9}.account-card[hidden],.parent-directory-card[hidden],.history-table tr[hidden]{display:none!important}@media(max-width:640px){.admin-record-modal{padding:16px}.admin-search-bar{display:grid}.admin-search-bar input{width:100%}}

/* V15 administrator management */
.admin-actions{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:18px 0 22px}.admin-actions .admin-search-bar{flex:1;min-width:240px;margin:0}.primary-action,.secondary-action{border:1px solid #159e92;border-radius:10px;padding:11px 16px;font-weight:700;cursor:pointer}.primary-action{background:#0c9489;color:white}.secondary-action{background:#f0faf9;color:#09685f}.admin-editor-modal{border:0;border-radius:18px;padding:26px;width:min(94vw,620px);max-height:86vh;overflow:auto;box-shadow:0 20px 80px #071b3266}.admin-editor-modal::backdrop{background:#071b32a8}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.modal-heading h3{margin:0}.modal-heading button{border:0;background:#eaf0f2;border-radius:9px;padding:8px 12px;cursor:pointer}.admin-editor-modal form.edit,.v15-enrollment form.edit,.inline-path-creator form.edit{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:end}.admin-editor-modal form.edit label,.v15-enrollment form.edit label,.inline-path-creator form.edit label{display:flex;flex-direction:column;gap:7px;min-width:0;font-weight:600}.admin-editor-modal form.edit input,.admin-editor-modal form.edit select,.admin-editor-modal form.edit textarea,.v15-enrollment form.edit input,.v15-enrollment form.edit select,.inline-path-creator form.edit input{box-sizing:border-box;width:100%;min-width:0;min-height:43px;border:1px solid #c9d5dd;border-radius:9px;padding:10px;background:white;color:#172d3c;font:inherit}.admin-editor-modal form.edit textarea{min-height:85px}.admin-editor-modal form.edit button[name=action],.v15-enrollment form.edit button[name=action],.inline-path-creator form.edit button[name=action]{grid-column:1/-1;justify-self:start}.v15-table{overflow-x:auto;border:1px solid #dbe6e9;border-radius:12px}.v15-table table{width:100%;border-collapse:collapse;min-width:660px}.v15-table th,.v15-table td{text-align:left;vertical-align:middle;padding:13px 15px;border-bottom:1px solid #e4ebef;white-space:normal}.v15-table thead{background:#edf6f6}.v15-table tbody tr:nth-child(even){background:#f7fafb}.v15-table tbody tr:hover{background:#eef8f7}.v15-table td:last-child{white-space:nowrap}.v15-table td form{margin:0}.sort-heading{background:none;border:0;padding:0;font:inherit;font-weight:700;cursor:pointer;color:inherit;text-align:left}.payment-status{display:inline-block;padding:5px 9px;border-radius:20px;background:#edf1f5;font-size:12px;font-weight:700}.status-paid{background:#ddf5e9;color:#176d49}.status-pending{background:#fff2d5;color:#855b00}.status-waived{background:#e7ecff;color:#454b9e}.amount-cell{font-variant-numeric:tabular-nums;font-weight:700}.inline-path-creator{margin:24px 0;padding:20px;border:1px solid #dbe6e9;border-radius:14px;background:#f7fbfb}.app-toast{position:fixed;right:22px;bottom:22px;z-index:10000;background:#0c766d;color:white;padding:14px 22px;border-radius:12px;box-shadow:0 8px 25px #0003;font-weight:700;cursor:pointer}@media(max-width:640px){.admin-editor-modal form.edit,.v15-enrollment form.edit,.inline-path-creator form.edit{grid-template-columns:1fr}.admin-editor-modal{padding:18px}}

/* V16 parent classes, compact calendar modal, completion state */
body[data-role="parent"] .parent-class-grid .table-wrap{overflow-x:auto;border:1px solid #dae5ed;border-radius:14px}
body[data-role="parent"] .parent-class-grid table{width:100%;border-collapse:collapse;table-layout:fixed;min-width:520px}
body[data-role="parent"] .parent-class-grid th,body[data-role="parent"] .parent-class-grid td{padding:14px 17px;text-align:left;vertical-align:middle;overflow-wrap:anywhere;border-bottom:1px solid #e5edf3}
body[data-role="parent"] .parent-class-grid tbody tr:nth-child(odd){background:#fff}
body[data-role="parent"] .parent-class-grid tbody tr:nth-child(even){background:#edf6f8}
body[data-role="parent"] .parent-class-grid tbody tr:hover{background:#dff3f0}
.calendar-dialog .calendar-day-modal{display:block}.calendar-modal-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.calendar-modal-top h3{margin:0;line-height:1.4}.calendar-dialog .calendar-close-small{flex:0 0 30px;width:30px;height:30px;min-height:0;padding:0;margin:0;border-radius:8px;border:1px solid #d9e4eb;background:#f2f6f9;color:#405569;font-size:14px;line-height:1;box-shadow:none;text-align:center;display:grid;place-items:center;transform:none}
.calendar-modal-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.calendar-date-actions .calendar-modal-actions button{padding:8px 12px;font-size:13px;box-shadow:none}
.calendar-event-list{display:grid;gap:7px;margin-top:12px}.calendar-date-actions .calendar-event-row{display:flex;align-items:center;justify-content:space-between;gap:15px;width:100%;padding:12px 14px;box-shadow:none;text-align:left;border:1px solid #e5e9ee;background:#fff;color:#20384e;min-width:0;transform:none}.calendar-event-row .calendar-event-title{min-width:0;flex:1;overflow-wrap:anywhere}.calendar-event-row time{flex-shrink:0;font-size:12px;color:#5c7082;font-weight:700;white-space:nowrap}.calendar-date-actions .calendar-event-row.is-done{border-left:5px solid #15956c}.calendar-date-actions .calendar-event-row.is-pending{border-left:5px solid #e8a12b}.calendar-date-actions .calendar-event-row.active{background:#edf8f8;border-color:#81c7c3}
.calendar-event-info{background:#f7fafc;border:1px solid #dfe8ed;border-radius:13px;padding:16px;margin-top:14px}.calendar-event-info h4{margin:0 0 6px}.calendar-event-meta{font-size:13px;color:#65798b}.calendar-event-description{white-space:pre-wrap;line-height:1.6}.calendar-event-status.is-done{color:#087b51;font-weight:800}.calendar-event-status.is-pending{color:#a56706;font-weight:800}.calendar-event-note{font-size:12px;color:#617387}.calendar-check-form button,.calendar-event-info .calendar-edit-item{padding:9px 13px;box-shadow:none;font-size:13px}.event-chip.is-done{background:#d5f3df!important;color:#08663b;border-left:3px solid #14965b}.event-chip.is-pending{background:#fff0d1!important;color:#945c00;border-left:3px solid #e4a032}
@media(max-width:600px){.calendar-dialog{padding:16px}.calendar-date-actions .calendar-event-row{padding:10px}.calendar-modal-top h3{font-size:17px}}

/* V20 student improvements; preserves V16 tabs */
.v20-table{width:100%;border-collapse:collapse;min-width:620px}.v20-table th{text-align:left;background:#e7f3f6;color:#254759;padding:13px}.v20-table td{padding:13px;border-bottom:1px solid #e1eaf0;vertical-align:middle}.v20-table tbody tr:nth-child(even){background:#f2f8fb}.v20-table tbody tr:hover{background:#e8f7f4}.v20-pill{display:inline-block;border-radius:99px;padding:5px 10px;font-size:.82rem;font-weight:700}.v20-done{background:#d9f5e6;color:#126b49}.v20-pending{background:#fff0d1;color:#945900}.v20-detail-btn,.v20-answer-form button{border:0;background:#137d80;color:white;border-radius:9px;padding:10px 14px;cursor:pointer;font-weight:700}.v20-homework-modal{width:min(720px,94vw);max-height:90vh;overflow:auto;border:0;border-radius:18px;padding:25px;box-shadow:0 18px 70px #112b3855}.v20-homework-modal::backdrop{background:#142b3a88}.v20-modal-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}.v20-modal-heading h3{margin:0}.v20-x{width:32px!important;height:32px!important;padding:0!important;border-radius:50%;border:1px solid #ccdce3;background:#f5f8fa;color:#345;cursor:pointer;font-size:20px;flex:none}.v20-due{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#e8f6f4;padding:15px;border-radius:10px;margin:17px 0}.v20-question{border:1px solid #e0eaf0;border-radius:10px;padding:15px;margin-bottom:18px;white-space:normal}.v20-question h4{margin:0 0 8px}.v20-answer-form{display:grid;gap:14px}.v20-answer-form label{display:grid;gap:8px;font-weight:700}.v20-answer-form textarea{width:100%;min-height:150px;padding:12px;border:1px solid #b9cdd7;border-radius:10px}.v20-reward-hero{display:flex;align-items:center;gap:22px;background:linear-gradient(110deg,#0d827c,#1baf9e);border-radius:20px;color:white;padding:25px;margin:12px 0 18px;overflow:hidden}.v20-reward-hero>div{display:grid;gap:4px}.v20-reward-hero small{opacity:.9}.v20-point-counter{font-size:3.1rem;line-height:1.1}.v20-star{font-size:4rem;animation:v20Star 2.5s ease-in-out infinite}.v20-reward-info{background:#f1f9fb;border-radius:10px;padding:13px;margin-bottom:14px}.v20-positive{color:#13815e}.v20-pagination{display:flex;justify-content:center;align-items:center;gap:15px;padding:18px}.v20-pagination button{border:1px solid #d3e3e9;border-radius:8px;background:white;padding:9px 14px;cursor:pointer}.v20-pagination button:disabled{opacity:.4;cursor:default}body[data-role="student"] .calendar-day.today{outline:3px solid #19a76a;outline-offset:-3px;background:#f0fff7}body[data-role="student"] .calendar-day.today>b{color:#0c8150;font-weight:900}body[data-role="student"] .calendar-app{background:white;border-color:#dfe7ee}body[data-role="student"] .calendar-toolbar{background:#f5f9fb;padding:12px;border-radius:12px}@keyframes v20Star{50%{transform:scale(1.13) rotate(10deg)}}@media(prefers-reduced-motion:reduce){.v20-star{animation:none}}

/* V21 Instructor roster and homework grading */
.v21-toolbar{display:flex;flex-wrap:wrap;gap:14px;margin:12px 0 18px}.v21-toolbar label{display:grid;gap:5px;min-width:210px;flex:1}.v21-table{width:100%;border-collapse:collapse}.v21-table th,.v21-table td{padding:12px;text-align:left;vertical-align:middle;border-bottom:1px solid #e4eaf0}.v21-table tbody tr:nth-child(even){background:#f3f8fc}.v21-table tbody tr:hover{background:#e8f5f1}.v21-dialog{max-width:min(780px,95vw);width:100%;max-height:85vh;overflow:auto}.v21-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.v21-dialog-head button{width:32px!important;height:32px!important;min-width:32px;padding:0!important;line-height:1;border-radius:50%}.v21-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;align-items:end}.v21-form label{display:grid;gap:5px}.v21-form textarea{min-height:76px}.v21-response{white-space:normal;background:#f5f8fc;border:1px solid #dbe5ee;border-radius:9px;padding:12px;max-height:180px;overflow:auto}.v21-milestones{max-height:320px;overflow:auto}.v21-milestone{display:grid;grid-template-columns:minmax(200px,1fr) 145px auto;gap:8px;align-items:center;border-bottom:1px solid #e5e9ee;padding:8px 0}@media(max-width:650px){.v21-milestone{grid-template-columns:1fr}.v21-form{grid-template-columns:1fr}}

/* V25 instructor roster inline confirmation */
.v25-toast{position:fixed;right:24px;bottom:24px;z-index:99999;background:#087d63;color:#fff;padding:13px 19px;border-radius:12px;box-shadow:0 10px 28px #0003;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .2s,transform .2s;max-width:min(400px,calc(100vw - 32px));font-weight:650}.v25-toast-visible{opacity:1;transform:translateY(0)}.v25-toast-error{background:#b83d3d}.v25-ajax-form button:disabled{opacity:.6;cursor:wait}

/* V26 instructor refinements */
.v26-inline-confirm{background:#e9f8f1;border:1px solid #b7e5cf;color:#14674b;border-radius:9px;padding:10px 12px;font-weight:600}
.v21-table tbody tr:nth-child(even){background:#f3f8fc}
.v21-table td,.v21-table th{padding:12px 14px;vertical-align:middle;text-align:left}
.v21-dialog .v21-form label{display:grid;gap:6px}
.v21-dialog .v21-form input,.v21-dialog .v21-form select,.v21-dialog .v21-form textarea{width:100%;max-width:100%;box-sizing:border-box}

/* V27: persistent, accessible calendar editor close controls */
.calendar-dialog .v27-editor-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.calendar-dialog .v27-editor-header h3{margin:0;line-height:1.3}
.calendar-dialog .v27-editor-close{flex:none;display:grid;place-items:center;width:34px;height:34px;min-width:34px;min-height:34px;padding:0;margin:0;border:1px solid #cad7df;border-radius:9px;background:#f2f6f9;color:#273b4c;font-size:16px;line-height:1;box-shadow:none;cursor:pointer}
.calendar-dialog .v27-close-action{background:#edf3f6;color:#1e3c51;border:1px solid #b9cdd9}

/* V28 instructor homework grid pagination */
.v28-pager{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 25px;padding:10px 2px;color:#52697b;font-size:.9rem}.v28-pager-controls{display:flex;gap:6px;flex-wrap:wrap}.v28-pager-controls button{border:1px solid #d5e3e8;background:#fff;color:#24556c;border-radius:8px;padding:7px 11px;cursor:pointer}.v28-pager-controls button.v28-current{background:#117c71;color:#fff;border-color:#117c71;font-weight:700}.v28-pager-controls button:disabled{opacity:.45;cursor:not-allowed}.v28-paginated tbody tr[hidden]{display:none!important}

/* V29 goal management */
.v29-goals{display:grid;gap:16px}.v29-goals>label{max-width:450px}.v29-goal-card{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px;border:1px solid #dce6ed;border-radius:12px;background:#fff;margin:9px 0}.v29-goal-card strong{display:block;font-size:1.05rem}.v29-goal-card p{margin:7px 0 0;color:#667788;white-space:pre-wrap}.v29-goal-status{display:inline-block;margin-top:6px;padding:3px 9px;border-radius:20px;background:#e6eaf1;color:#374151;font-size:.8rem}.v29-goal-status.completed{background:#dcfce7;color:#166534}.v29-goal-status.in_progress{background:#fef3c7;color:#92400e}.v29-goal-actions{display:flex;gap:8px}.v29-delete{color:#a32626!important}#v29-goal-dialog{border:0;border-radius:16px;padding:24px;width:min(520px,95vw);max-height:90vh;overflow:auto;box-shadow:0 20px 70px #0005}#v29-goal-dialog::backdrop{background:#0008}#v29-goal-dialog .edit{display:grid;gap:12px}.v29-dialog-actions{display:flex;justify-content:flex-end;gap:10px}@media(max-width:600px){.v29-goal-card{align-items:flex-start;flex-direction:column}}

/* V30: searchable, paginated learning-goal grid and aligned modal fields */
#v29-goal-list{overflow-x:auto}.v30-goals-table{width:100%;border-collapse:collapse;min-width:650px}.v30-goals-table th,.v30-goals-table td{text-align:left;padding:11px 12px;border-bottom:1px solid #e3e9ef;vertical-align:middle}.v30-goals-table th{background:#f2f6fa}.v30-goal-row{cursor:pointer}.v30-goal-row:hover,.v30-goal-row:focus{background:#eef7ff;outline-color:#2679c5}.v30-goal-row td:last-child{white-space:nowrap}.v30-goal-row td:last-child button+button{margin-left:7px}.v30-goal-notes{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v30-pagination{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.v30-pagination span{margin-right:auto}.v30-pagination button{padding:6px 11px}.v30-current-page{background:#135da0!important;color:white!important}#v29-goal-dialog{width:min(640px,96vw)}#v29-goal-dialog .edit>label{display:grid;grid-template-columns:125px minmax(0,1fr);align-items:center;gap:12px;font-weight:600}#v29-goal-dialog .edit>label>input,#v29-goal-dialog .edit>label>textarea,#v29-goal-dialog .edit>label>select{width:100%;min-width:0;box-sizing:border-box;font-weight:400}#v29-goal-dialog .edit>label:has(textarea){align-items:start}@media(max-width:540px){#v29-goal-dialog .edit>label{grid-template-columns:1fr;gap:5px}}

.v31-goal-toolbar{display:flex;justify-content:flex-end;align-items:center;margin:2px 0 4px}.v31-goal-toolbar button{font-weight:700}#v31-goal-student:disabled{background:#eef2f6;color:#526171}

/* V32 student achievement experience */
.v32-goals{display:grid;gap:22px}.v32-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:30px;border-radius:24px;background:linear-gradient(115deg,#123f70,#186c87 65%,#159f93);color:white;overflow:hidden}.v32-hero h3{font-size:clamp(1.35rem,3vw,2rem);margin:9px 0}.v32-hero p{opacity:.92;max-width:560px}.v32-eyebrow{letter-spacing:.15em;font-size:.75rem;font-weight:800}.v32-stats{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.v32-stats span{padding:9px 12px;background:#ffffff25;border:1px solid #ffffff30;border-radius:12px}.v32-ring{flex:none;width:165px;height:165px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#fbd36b calc(var(--goal-pct)*1%),#ffffff35 0);box-shadow:0 0 0 7px #ffffff18;animation:v32-arrive .8s both}.v32-ring>div{display:grid;place-content:center;text-align:center;width:127px;height:127px;border-radius:50%;background:#134b75}.v32-ring strong{font-size:2.25rem}.v32-ring small{font-size:.78rem}.v32-progress-caption{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#23445b}.v32-progress-track{height:15px;border-radius:100px;background:#e4edf3;overflow:hidden}.v32-progress-track>span{display:block;width:var(--goal-width);height:100%;background:linear-gradient(90deg,#1bb5a3,#f3bb42);border-radius:inherit;animation:v32-fill 1.25s ease-out both}.v32-goal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:16px}.v32-goal-card{position:relative;display:flex;gap:14px;align-items:flex-start;border:1px solid #dfe8f0;border-radius:18px;padding:22px;background:white;box-shadow:0 6px 22px #163b6010;animation:v32-arrive .6s both;transition:transform .2s,box-shadow .2s}.v32-goal-card:hover{transform:translateY(-4px);box-shadow:0 13px 30px #163b6022}.v32-goal-card.completed{border-color:#b3e4cf;background:linear-gradient(160deg,#f3fff9,#fff)}.v32-goal-card.in_progress{border-color:#f4dda2}.v32-goal-icon{font-size:2.15rem;line-height:1.3;animation:v32-float 3.4s ease-in-out infinite}.v32-goal-card:nth-child(2n) .v32-goal-icon{animation-delay:.6s}.v32-goal-info{min-width:0;flex:1}.v32-goal-info h4{margin:9px 0;font-size:1.1rem}.v32-goal-info p{color:#566d7d;line-height:1.55;overflow-wrap:anywhere}.v32-goal-badge{font-size:.76rem;font-weight:800;border-radius:100px;background:#eaf0f7;color:#41576a;padding:5px 10px}.completed .v32-goal-badge{background:#d7f8e7;color:#13734c}.in_progress .v32-goal-badge{background:#fff0c6;color:#835b00}.v32-goal-medal{position:absolute;bottom:9px;right:12px;font-size:.7rem;color:#178158;font-weight:800}.v32-celebrate{display:flex;align-items:center;gap:15px;background:#effcf5;border:1px solid #b8ead1;border-radius:17px;padding:17px 20px}.v32-celebrate>span{font-size:2.4rem;animation:v32-float 2.5s infinite}.v32-celebrate p{margin:5px 0 0}.v32-empty{text-align:center;background:#f2f8fc;border:1px dashed #b7d3e1;border-radius:20px;padding:42px 20px}.v32-empty span{font-size:3rem}.v32-empty h4{margin:12px 0}.v32-empty p{color:#587083}@keyframes v32-fill{from{width:0}to{width:var(--goal-width)}}@keyframes v32-arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes v32-float{50%{transform:translateY(-6px) rotate(4deg)}}@media(max-width:650px){.v32-hero{flex-direction:column;align-items:stretch;padding:22px}.v32-ring{align-self:center}}@media(prefers-reduced-motion:reduce){.v32-goals *, .v32-goals *::before,.v32-goals *::after{animation:none!important;transition:none!important}}
