/* Portal and Admin keep their 1936 × 1188 desktop content geometry while the
   enclosing page composition supplies the only viewport-dependent scale. */
.portal-shell .page-composition .workspace-heading p,
.admin-shell .page-composition .workspace-heading p {
  font-size:21.6px;
  margin-top:18px;
}
.admin-shell[data-admin-screen="login"] .page-composition .workspace-heading p {
  margin-top:18px;
}

.page-composition .portal-workspace { min-height:650px; }
.page-composition .portal-workspace:has(.portal-login) { min-height:0; }
.page-composition .portal-login h2 { font-size:67.2px; }
.page-composition .portal-dashboard-heading h2 { font-size:52.272px; }
.page-composition .portal-dashboard-grid { gap:58.08px; }
.page-composition .portal-lesson {
  grid-template-columns:62px minmax(0,1fr) auto;
  gap:20px;
}
.page-composition .portal-lesson-actions { grid-column:auto; }
.page-composition .portal-account-summary { grid-template-columns:1.2fr 1fr; }
.page-composition .portal-lessons-list { height:380.16px; }
.page-composition .portal-yki h3 { font-size:38.72px; }

/* The portal always shows the full desktop week, including in narrow windows.
   Its calendar does not use the separate mobile selected-day classes. */
.page-composition .portal-calendar .calendar-heading {
  flex-direction:row;
  align-items:center;
  gap:30px;
}
.page-composition .portal-calendar .calendar-heading h2 { font-size:43.56px; }
.page-composition .week-navigation { justify-content:flex-start; }
.page-composition .portal-calendar .calendar-grid {
  grid-template-columns:45px repeat(7,minmax(0,1fr));
  grid-template-rows:50px repeat(14,minmax(22px,1fr));
  grid-auto-rows:auto;
  min-height:420px;
  column-gap:16px;
  row-gap:3px;
}
.page-composition .portal-calendar .calendar-date {
  justify-content:normal;
  padding:0 0 10px;
  border-radius:0;
  border-bottom:1px solid var(--line);
  cursor:default;
}
.page-composition .portal-calendar .calendar-corner,
.page-composition .portal-calendar .calendar-hour,
.page-composition .portal-calendar .calendar-slot {
  display:block;
  grid-column:auto;
}
.page-composition .portal-calendar .slot-clock { display:none; }
.page-composition .portal-calendar .slot-mark { margin-left:0; }
.page-composition .portal-calendar .calendar-actions {
  flex-direction:row;
  align-items:center;
  gap:24px;
}

.page-composition .admin-login { padding-bottom:35.64px; }
.page-composition .admin-login h2 { font-size:60px; margin-bottom:34px; }
.page-composition .admin-login .admin-form { gap:22px; }
.page-composition .admin-login input { padding:10px 0 12px; }
.page-composition .admin-login .booking-primary { min-height:52px; padding-block:16px; }
.admin-shell[data-admin-screen="login"] .page-composition .admin-workspace,
.admin-shell[data-admin-screen="checking"] .page-composition .admin-workspace {
  display:flex;
  flex-direction:column;
  min-height:0;
}
.admin-shell[data-admin-screen="login"] .page-composition .admin-view,
.admin-shell[data-admin-screen="checking"] .page-composition .admin-view {
  flex:1;
  height:auto;
  display:grid;
  place-items:center;
}
.page-composition .admin-student-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.page-composition .admin-lesson-row { grid-template-columns:66px minmax(180px,1fr) auto; }
.page-composition .admin-lesson-row > .admin-actions { grid-column:auto; justify-content:normal; }
.page-composition .admin-outcomes { grid-column:auto; justify-content:flex-end; }
.page-composition .admin-week-grid { gap:5px 8px; }
.page-composition .admin-cell button { padding:9px 10px; font-size:.8125rem; }

/* Match the index pill shape for both sign-in flows. */
body.student-portal-page .portal-login-button,
body.admin-page .admin-login-button { border-radius: 100px; }

/* Carry the same pill shape through the signed-in Student Portal. */
body.student-portal-page :is(.booking-primary, .portal-join) { border-radius: 100px; }

/* Keep the login form fixed while its status line appears or clears. */
.admin-shell:is([data-admin-screen="login"], [data-admin-screen="checking"]) #admin-status {
  min-height: 24px; margin: 12px 0 0; flex-shrink: 0;
}

/* The Admin dashboard and dialog actions share the index pill shape. */
body.admin-page :is(.booking-primary, .admin-join, .admin-outcomes button) { border-radius: 100px; }
