:root{--bg:#f4f7fb;--surface:#fff;--text:#172033;--muted:#64748b;--line:#dce3ed;--blue:#2f6fed;--blue-soft:#eef4ff;--soft:#f7f9fc;--success:#2f9e44;--danger:#bb3e3e;--radius:18px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}.shell{width:min(1080px,calc(100% - 24px));margin:0 auto;padding-bottom:40px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 4px 12px}.brand{font-size:1.25rem;font-weight:850}.portal-label{margin-left:7px;padding:3px 8px;border-radius:999px;background:var(--blue-soft);color:var(--blue);font-size:.7rem;vertical-align:middle}.date{margin-top:3px;color:var(--muted);font-size:.82rem}.profile{display:flex;align-items:center;gap:8px}.profile-name{font-size:.84rem;font-weight:750}.avatar,.student-avatar,.student-mini-avatar{display:inline-grid;place-items:center;border-radius:50%;font-weight:850}.avatar{width:38px;height:38px;background:var(--blue);color:#fff}.student-avatar{width:48px;height:48px;background:var(--blue-soft);color:var(--blue)}.student-mini-avatar{width:26px;height:26px;background:var(--blue-soft);color:var(--blue);font-size:.72rem}.revision-badge{padding:3px 7px;border:1px solid #cfd9e8;border-radius:999px;color:var(--muted);font-size:.68rem;font-weight:800}.top-navigation{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:5px;margin:0 0 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.top-nav-button{min-height:42px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-weight:800;cursor:pointer}.top-nav-button.active{background:var(--blue);color:#fff}.nav-dot{margin-left:5px;font-size:.55rem}.page-heading{margin:18px 0 16px}.page-heading.compact{margin-top:10px}.page-heading h1,.card h2,.child-card h2{margin:.1rem 0 .35rem}.page-heading p,.child-card p{margin:.15rem 0;color:var(--muted)}.eyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:850;color:var(--blue)}.child-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.child-card,.card,.metric-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.child-card{padding:16px}.child-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.child-identity{display:flex;align-items:center;gap:11px}.mood-badge{display:inline-flex;align-items:center;gap:5px;padding:7px 10px;border-radius:999px;background:var(--soft);font-size:.78rem;font-weight:800}.mood-positive{background:#edf8ef;color:#236b34}.mood-concern{background:#fff1f1;color:#9a3232}.live-status{margin:14px 0 8px;padding:12px 14px;border-radius:13px;background:var(--blue-soft)}.live-status span,.live-status small,.next-line span,.next-line small{display:block;color:var(--muted);font-size:.76rem}.live-status strong,.next-line strong{display:block;margin:2px 0}.live-status.after{background:#f0f3f7}.next-line{padding:10px 2px}.card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.button{border:1px solid var(--line);border-radius:10px;min-height:40px;padding:8px 12px;background:var(--surface);color:var(--text);font-weight:800;cursor:pointer}.button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.button.secondary:hover{background:var(--blue-soft);border-color:#b9cdf6}.student-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:5px 0 14px}.student-tab{display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:800;color:var(--muted);cursor:pointer}.student-tab.active{border-color:#9db9ef;background:var(--blue-soft);color:var(--blue)}.card{padding:16px;margin-bottom:14px}.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.day-tabs{display:flex;gap:5px;flex-wrap:wrap}.day-tab{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:6px 9px;font-weight:800;color:var(--muted);cursor:pointer}.day-tab.active{background:var(--blue);color:#fff;border-color:var(--blue)}.timeline{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}.lesson{display:grid;grid-template-columns:6px 75px 1fr auto;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:12px}.lesson.colour-coded{background:color-mix(in srgb,var(--subject-colour) 14%,white);border-color:color-mix(in srgb,var(--subject-colour) 32%,var(--line))}.subject-colour-bar{align-self:stretch;min-height:38px;border-radius:999px;background:var(--subject-colour,#64748b)}.lesson.break-row{background:#1f2937;color:#fff;border-color:#111827}.lesson.break-row .subject-colour-bar{background:#fbbf24}.lesson.break-row .place,.lesson.break-row .time{color:#e5e7eb}.time{font-size:.76rem;font-weight:800;color:var(--muted)}.place{margin-top:2px;color:var(--muted);font-size:.78rem}.badge{padding:4px 7px;border-radius:999px;background:#fff;color:var(--blue);font-size:.68rem;font-weight:850}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}.metric-card{padding:14px}.metric-card span{display:block;color:var(--muted);font-size:.75rem}.metric-card strong{display:block;margin-top:5px;font-size:1rem}.mood-chart{display:grid;gap:9px;margin-top:12px}.mood-row{display:grid;grid-template-columns:120px 1fr 28px;gap:10px;align-items:center;font-size:.82rem}.mood-track{height:10px;border-radius:999px;background:#e9eef5;overflow:hidden}.mood-track span{display:block;height:100%;background:var(--blue);border-radius:999px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);font-size:.82rem}th{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.messages-layout{display:grid;grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr);gap:14px}.form-stack{display:grid;gap:10px}.form-stack label,.editor-controls label{display:grid;gap:5px;color:var(--muted);font-size:.78rem;font-weight:750}.form-stack input,.form-stack select,.form-stack textarea,.editor-controls select,.editor-row input,.editor-row select{width:100%;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);padding:10px 11px}.mail-tabs{display:flex;gap:6px;margin-bottom:12px}.mail-tab{border:1px solid var(--line);border-radius:9px;padding:7px 11px;background:#fff;font-weight:800;cursor:pointer}.mail-tab.active{background:var(--blue-soft);border-color:#b8cdf7;color:var(--blue)}.mail-list{display:grid;gap:8px}.mail-item{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.mail-item div{display:flex;justify-content:space-between;gap:8px}.mail-item small{color:var(--muted)}.mail-item p{margin:8px 0 0}.manage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.timetable-manager{grid-column:1/-1}.editor-controls{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin:12px 0}.editor-row{display:grid;grid-template-columns:110px 1.1fr 1fr 1.2fr 38px;gap:7px;margin-bottom:7px}.icon-button{border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--danger);font-size:1.2rem;font-weight:850;cursor:pointer}.editor-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.muted{color:var(--muted);font-size:.8rem}.success-note{padding:9px 10px;border-radius:9px;background:#edf8ef;color:#236b34;font-weight:800;font-size:.8rem}
@media(max-width:760px){.shell{width:min(100% - 16px,1080px)}.topbar{align-items:flex-start}.profile-name{display:none}.top-navigation{grid-template-columns:repeat(5,auto);overflow-x:auto}.top-nav-button{padding:0 12px}.child-grid,.manage-grid,.messages-layout,.metric-grid{grid-template-columns:1fr}.timetable-manager{grid-column:auto}.section-head{display:block}.day-tabs{margin-top:10px}.editor-controls{grid-template-columns:1fr}.editor-row{grid-template-columns:90px 1fr 1fr}.editor-row .edit-teacher{grid-column:2/4}.lesson{grid-template-columns:5px 68px 1fr auto}.mood-row{grid-template-columns:95px 1fr 24px}.mail-item div{display:block}.mail-item small{display:block;margin-top:2px}}

.dev-bar{margin:-8px 0 16px;padding:9px 12px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}
.dev-bar.open{background:#f8fafc}
.dev-bar-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.dev-toggle{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.76rem;font-weight:850;cursor:pointer}
.dev-toggle input{accent-color:var(--blue)}
.dev-selected{font-size:.76rem;color:var(--blue)}
.dev-controls{display:grid;grid-template-columns:180px 150px minmax(280px,1fr) auto;gap:10px;align-items:end;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.dev-controls label{display:grid;gap:5px;color:var(--muted);font-size:.72rem;font-weight:800}
.dev-controls input[type=date],.dev-controls select{min-height:38px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:7px 9px;color:var(--text)}
.dev-time-control span{display:flex;justify-content:space-between;gap:10px}.dev-time-control output{color:var(--blue);font-weight:900}.dev-time-control input[type=range]{width:100%;accent-color:var(--blue)}
@media(max-width:760px){.dev-bar-head{align-items:flex-start}.dev-selected{text-align:right}.dev-controls{grid-template-columns:1fr}.dev-time-control{grid-column:auto}}

/* p5 parent refinements */
.mood-updated{
  margin:.3rem 0 0;
  font-size:.76rem;
  color:var(--muted,#667085);
  font-weight:700;
}
.break-row{
  background:#e9e7ff !important;
  color:#312e81 !important;
  border-color:#a5a0e8 !important;
}
.break-row.current{
  background:#dcd8ff !important;
}
.break-row .subject-colour-bar{
  background:#665cc3 !important;
}
.timetable-mode{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.timetable-mode .active{
  box-shadow:inset 0 0 0 2px currentColor;
}
.full-week{
  display:grid;
  gap:16px;
}
.full-week-day{
  border-top:1px solid var(--line,#d8dee8);
  padding-top:12px;
}
.full-week-day:first-child{
  border-top:0;
  padding-top:0;
}
.full-week-day h3{
  margin:0 0 8px;
}
@media(min-width:980px){
  .full-week{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

/* p7: dark-grey break / lunch / home rows; time above period/label */
.lesson.break-row{
  background:#374151 !important;
  color:#ffffff !important;
  border-color:#2f3947 !important;
}
.lesson.break-row.current{
  background:#2f3947 !important;
  border-color:#252d38 !important;
}
.lesson.break-row .subject-colour-bar{
  background:#9ca3af !important;
}
.lesson .time{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:1px;
}
.lesson .time strong{
  font-size:.82rem;
  line-height:1.1;
}
.lesson .time small{
  font-size:.67rem;
  line-height:1.15;
  font-weight:800;
}
.lesson.break-row .time strong,
.lesson.break-row .time small,
.lesson.break-row .place{
  color:#f3f4f6 !important;
}

.holiday-manager-card{grid-column:1/-1}
.holiday-form{display:grid;grid-template-columns:minmax(150px,1fr) minmax(160px,1fr) minmax(220px,2fr) auto;gap:12px;align-items:end}
.holiday-list{margin-top:22px}
.holiday-list-row{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:14px 0;border-top:1px solid #e3e8ef}
.holiday-list-row div{display:grid;gap:3px}
.holiday-list-row small{color:#66758a}
.public-holiday-list{margin-top:20px;padding-top:16px;border-top:1px solid #e3e8ef}
.public-holiday-list summary{cursor:pointer;font-weight:800}
.public-holiday-list div{margin-top:12px}
.public-holiday-list p{margin:7px 0}
.holiday-timetable-row{display:grid;gap:5px;padding:20px;border-radius:16px;background:#eef2f7}
.holiday-timetable-row strong{font-size:1.08rem}
.holiday-timetable-row small{color:#66758a}
.full-week-day.holiday-day{opacity:.96}
.full-week-day h3 small{font-weight:600;color:#718096;margin-left:6px}
.compact-button{padding:8px 12px}
@media(max-width:800px){.holiday-form{grid-template-columns:1fr}}
