/* Django integration layer for the approved USER v61 public/student mockup. */
.django-messages{width:min(calc(100% - 36px),1160px);margin:14px auto 0}.django-message{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 10px 28px rgba(30,39,35,.06)}.django-message.success{background:var(--accent-soft)}.django-message.warning{background:#f7ecd9}.django-message.error{background:#f7e4e1;color:#8e463f}.field-error,.auth-error,.errorlist{color:#9d4e47;font-size:12px}.field-help{color:var(--muted);font-size:11px}.is-invalid-field input,.is-invalid-field select,.is-invalid-field textarea{border-color:#b6655e!important}.notice{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface2)}.notice.warning{border-color:#e5d3b9;background:#f7ecd9;color:#805c2f}.muted{color:var(--muted)}
.auth-dialog{max-width:min(94vw,620px);max-height:min(92vh,860px)}.auth-shell{max-height:min(92vh,860px);overflow:auto}.auth-form-register{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.auth-form-register>.auth-field:last-of-type,.auth-form-register>.button,.auth-form-register>.auth-error{grid-column:1/-1}.auth-field{display:grid;gap:7px}.auth-field>span{font-size:12px;font-weight:700}.auth-field input:not([type=checkbox]),.auth-field select,.auth-field textarea{width:100%;min-height:48px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:#fff}.auth-field textarea{min-height:95px;resize:vertical}.auth-field[data-checkbox-field]{display:grid;grid-template-columns:20px 1fr;gap:9px;align-items:start;grid-column:1/-1}.auth-field[data-checkbox-field] input{width:18px;height:18px;margin-top:2px}.auth-field[data-checkbox-field]>span{font-weight:500;line-height:1.45}.auth-secondary-form{margin-top:10px;text-align:center}.auth-secondary-form .auth-inline-link{border:0;background:transparent}.auth-dialog .button{width:100%}.auth-switch a,.auth-inline-link{text-decoration:none}.auth-switch a:hover,.auth-inline-link:hover{text-decoration:underline}
.section-card{margin-bottom:18px;padding:22px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.section-card h2{margin-top:0}.split-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.data-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.data-table{width:100%;min-width:700px;border-collapse:collapse}.data-table th,.data-table td{padding:13px 14px;border-bottom:1px solid var(--line);text-align:left}.data-table th{color:var(--muted);font-size:11px}.data-table td{font-size:13px}.action-row{display:flex;flex-wrap:wrap;gap:10px}.form-shell .primary,.form-shell .secondary{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border:1px solid transparent;border-radius:10px;text-decoration:none}.form-shell .primary{background:var(--accent);color:#fff}.form-shell .secondary{border-color:var(--line);background:var(--surface)}
.file-list{display:grid;gap:9px;margin:14px 0 0;padding:0;list-style:none}.file-list li,.student-submission-file{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface2)}.file-list a{text-decoration:none;font-weight:700}.submission-result-grid{display:grid;grid-template-columns:minmax(180px,.32fr) minmax(0,1fr);gap:14px}.submission-score-card{display:grid;align-content:center;text-align:center}.submission-score-card strong{font-size:42px;color:var(--accent)}.submission-score-card small{display:block;color:var(--muted);font-size:12px}.payment-history-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px}.payment-history-summary{display:flex;gap:9px}.payment-history-summary span{padding:7px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700}
.commerce-body .django-messages{width:min(calc(100% - 36px),920px)}.commerce-field,.commerce-consent{display:grid;gap:7px}.commerce-field>span{font-size:12px;font-weight:700}.commerce-field input:not([type=checkbox]),.commerce-field select,.commerce-field textarea{width:100%;min-height:48px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:#fff}.commerce-consent{grid-template-columns:20px 1fr;align-items:start}.commerce-consent input{width:18px;height:18px;margin-top:2px}.commerce-consent>span{font-size:12px;line-height:1.5}.commerce-form-error{padding:12px 14px;border:1px solid #e2b8b3;border-radius:10px;background:#f7e4e1;color:#8e463f}.lesson-count-field{min-width:110px}.lesson-count-field>span{display:none}.lesson-count-field input{font-size:20px!important;font-weight:750;text-align:center}
@media(max-width:760px){.split-grid,.submission-result-grid{grid-template-columns:1fr}.auth-form-register{grid-template-columns:1fr}.auth-form-register>*{grid-column:auto!important}.payment-history-head{align-items:flex-start;flex-direction:column}.auth-shell{padding-left:22px;padding-right:22px}}

/* Student learning, result and compact checkout integration. */
.video-frame{display:block;width:100%;min-height:clamp(260px,52vw,620px);border:0;background:#111}.additional-lessons-section{margin-top:34px}.homework-submit-form{display:grid;gap:12px;margin-top:16px;padding:16px;border:1px solid var(--line);border-radius:13px;background:var(--surface2)}.homework-submit-form p{display:grid;gap:6px;margin:0}.homework-submit-form label{font-size:12px;font-weight:700}.homework-submit-form input:not([type=checkbox]),.homework-submit-form select,.homework-submit-form textarea{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.homework-submit-form textarea{min-height:120px;resize:vertical}.homework-result-card{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:start;gap:11px;margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--accent-soft)}.homework-result-card strong,.homework-result-card small{display:block}.homework-result-card small{margin-top:4px;color:var(--muted);line-height:1.55}.submission-answer{padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);white-space:pre-wrap;overflow-wrap:anywhere}.stack{display:grid;gap:12px}.panel-pad{padding:20px}.table-wrap{overflow:auto}.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.tab,.tabs button{min-height:38px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface2)}.tab.active,.tab.is-active,.tabs button.active,.tabs button.is-active{background:var(--surface);box-shadow:0 5px 15px rgba(31,40,37,.07)}.badge,.score-badge{display:inline-grid;place-items:center;min-height:28px;padding:4px 9px;border-radius:999px;font-size:10px;font-weight:800}.badge-muted{background:#e9ece8;color:var(--muted)}.score-badge{background:var(--accent-soft);color:var(--accent)}.button-small{min-height:34px;padding:7px 10px;font-size:11px}.pagination{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin-top:18px}.pagination a,.pagination span{min-width:38px;min-height:38px;display:grid;place-items:center;padding:7px;border:1px solid var(--line);border-radius:9px;background:var(--surface);text-decoration:none}.pagination .current{background:var(--accent);color:#fff}.editor-form-block{display:grid;gap:12px;padding:15px;border:1px solid var(--line);border-radius:12px;background:var(--surface2)}.file-stack,.submission-list{display:grid;gap:8px}.file-card,.submission-row{display:flex;align-items:center;justify-content:space-between;gap:11px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.inline-upload-form{display:grid;gap:10px;margin-top:12px}.empty{padding:18px;border:1px dashed var(--line);border-radius:10px;color:var(--muted);text-align:center}
.compact-group-section,.compact-payer-section,.compact-plan-section,.compact-consent-section{position:relative}.compact-group-option{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:16px;border:1px solid var(--line);border-radius:13px;background:var(--surface2)}.compact-group-option>div>span,.compact-group-option>div>strong,.compact-group-option>div>small{display:block}.compact-group-option>div>span{color:var(--muted);font-size:11px}.compact-group-option>div>strong{margin-top:4px;font-size:16px}.compact-group-option>div>small{margin-top:4px;color:var(--muted)}.compact-group-option.is-selected{border-color:var(--accent);background:var(--accent-soft)}.group-option-state{display:inline-flex!important;width:max-content;padding:4px 7px;border-radius:999px;background:var(--accent);color:#fff!important;font-size:9px!important;font-weight:800;text-transform:uppercase}.purchase-student-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.purchase-student-summary>div{padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface2)}.purchase-student-summary span,.purchase-student-summary strong{display:block}.purchase-student-summary span{color:var(--muted);font-size:10px}.purchase-student-summary strong{margin-top:4px;font-size:12px}.compact-price-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.compact-price-summary>div{padding:13px;border:1px solid var(--line);border-radius:11px;background:var(--surface2)}.compact-price-summary span,.compact-price-summary strong{display:block}.compact-price-summary span{color:var(--muted);font-size:10px}.compact-price-summary strong{margin-top:5px;font-size:17px}.compact-price-total{border-color:var(--accent)!important;background:var(--accent-soft)!important}.compact-price-total strong{color:var(--accent);font-size:22px}.compact-legal-note{margin:10px 0 0;color:var(--muted);font-size:11px;line-height:1.55}.compact-legal-note a{font-weight:700}.compact-purchase-actions{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:4px}.compact-purchase-actions>span{max-width:420px;color:var(--muted);font-size:11px;line-height:1.5}.compact-purchase-actions .button{min-width:220px}.compact-consent-section{padding-bottom:4px}
@media(max-width:760px){.compact-group-option,.purchase-student-summary,.compact-price-summary{grid-template-columns:1fr}.compact-purchase-actions{align-items:stretch;flex-direction:column}.compact-purchase-actions .button{width:100%;min-width:0}.video-frame{min-height:230px}}
.hero-copy{max-width:760px}.course-product-program{scroll-margin-top:90px}

/* Registration modal: preserve all Django fields without stretching grid rows. */
.auth-dialog {
  overflow: hidden;
}
.auth-dialog.is-register {
  width: min(780px, calc(100% - 28px));
  max-width: none;
  max-height: calc(100dvh - 28px);
}
.auth-shell {
  box-sizing: border-box;
  max-height: calc(100dvh - 28px);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
.auth-view[hidden] {
  display: none !important;
}
.auth-dialog.is-register .auth-shell {
  padding: 36px 42px 32px;
}
.auth-dialog.is-register .auth-brand {
  margin-bottom: 22px;
}
.auth-dialog.is-register .auth-view h2 {
  margin-bottom: 8px;
  font-size: clamp(30px, 4vw, 40px);
}
.auth-dialog.is-register .auth-description {
  max-width: 610px;
  margin-bottom: 24px;
}
.auth-form-register {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: 18px;
}
.registration-contact-grid,
.registration-password-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: 14px;
}
.registration-name-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: 14px;
}
.auth-form-register .auth-field {
  min-width: 0;
  align-self: start;
  align-content: start;
}
.auth-form-register .auth-field input:not([type="checkbox"]),
.auth-form-register .auth-field select {
  height: 48px;
  min-height: 48px;
  max-height: 48px;
}
.auth-form-register .auth-field select {
  padding-right: 38px;
}
.auth-form-register .field-help,
.auth-form-register .field-error {
  line-height: 1.45;
}
.register-password-help {
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface-2, #eceee8);
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}
.register-password-help > strong {
  display: block;
  margin-bottom: 8px;
  color: var(--text);
  font-size: 12px;
}
.register-password-help ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px 24px;
  margin: 0;
  padding-left: 18px;
}
.register-password-help li {
  margin: 0;
}
.register-consent {
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) !important;
  align-items: start !important;
  gap: 10px !important;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(251, 250, 247, .76);
}
.register-consent input {
  width: 18px !important;
  height: 18px !important;
  margin: 2px 0 0 !important;
}
.register-consent > span {
  color: var(--text) !important;
  font-weight: 500 !important;
  line-height: 1.45;
}
.register-consent .field-error {
  grid-column: 2;
}
.register-form-error,
.register-submit {
  grid-column: 1 / -1;
}
.auth-dialog.is-register .auth-switch {
  margin-top: 20px;
  padding-top: 18px;
}

/* One student profile control shared by the public and learning headers. */
.student-account-menu {
  position: relative;
  z-index: 80;
  justify-self: end;
  min-width: 0;
}
.student-account-trigger {
  min-width: 0;
  display: grid;
  grid-template-columns: 34px minmax(0, auto) 20px;
  align-items: center;
  gap: 9px;
  padding: 7px 9px 7px 7px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: transparent;
  color: var(--text);
  text-align: left;
  transition: border-color .15s ease, background .15s ease;
}
.student-account-trigger:hover,
.student-account-trigger:focus-visible,
.student-account-menu.is-open .student-account-trigger,
.student-account-menu:focus-within .student-account-trigger {
  outline: none;
  border-color: var(--line);
  background: rgba(251, 250, 247, .78);
}
.student-account-avatar,
.student-account-summary-avatar {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-weight: 700;
}
.student-account-avatar {
  width: 34px;
  height: 34px;
  font-size: 12px;
}
.student-account-copy {
  min-width: 0;
}
.student-account-copy strong,
.student-account-copy small {
  display: block;
  overflow: hidden;
  max-width: 190px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.student-account-copy strong {
  font-size: 12px;
  line-height: 1.2;
}
.student-account-copy small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 9px;
  line-height: 1.2;
}
.student-account-chevron {
  width: 20px;
  height: 20px;
  display: grid;
  place-items: center;
  color: var(--muted);
  transition: transform .18s ease;
}
.student-account-chevron svg,
.student-account-icon svg {
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.student-account-chevron svg {
  width: 17px;
  height: 17px;
  stroke-width: 2.1;
}
.student-account-menu.is-open .student-account-chevron,
.student-account-menu:hover .student-account-chevron,
.student-account-menu:focus-within .student-account-chevron {
  transform: rotate(180deg);
}
.student-account-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 90;
  width: 286px;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(251, 250, 247, .98);
  box-shadow: 0 22px 60px rgba(31, 40, 37, .16);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-7px);
  pointer-events: none;
  transition: opacity .17s ease, visibility .17s ease, transform .17s ease;
  backdrop-filter: blur(14px);
}
.student-account-dropdown::before {
  content: "";
  position: absolute;
  top: -12px;
  right: 0;
  left: 0;
  height: 12px;
}
.student-account-menu.is-open .student-account-dropdown,
.student-account-menu:hover .student-account-dropdown,
.student-account-menu:focus-within .student-account-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}
.student-account-summary {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  align-items: center;
  gap: 11px;
  padding: 9px 9px 13px;
  border-bottom: 1px solid var(--line);
}
.student-account-summary-avatar {
  width: 40px;
  height: 40px;
  font-size: 14px;
}
.student-account-summary strong,
.student-account-summary small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.student-account-summary strong {
  font-size: 12px;
}
.student-account-summary small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 10px;
}
.student-account-links {
  display: grid;
  gap: 3px;
  padding-top: 8px;
}
.student-account-links button,
.student-account-links a {
  width: 100%;
  min-height: 43px;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding: 8px 10px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--text);
  font-size: 12px;
  text-align: left;
  text-decoration: none;
}
.student-account-links button:hover,
.student-account-links button:focus-visible,
.student-account-links a:hover,
.student-account-links a:focus-visible {
  outline: none;
  background: var(--surface-2, #eceee8);
}
.student-account-icon {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: rgba(49, 95, 84, .08);
  color: var(--accent);
}
.student-account-icon svg {
  width: 16px;
  height: 16px;
  stroke-width: 1.65;
}
.student-account-context-link {
  margin-top: 4px;
  padding-top: 11px !important;
  border-top: 1px solid var(--line) !important;
  border-radius: 0 0 9px 9px !important;
}
.student-account-logout {
  margin-top: 8px;
  padding: 8px 9px 0;
  border-top: 1px solid var(--line);
}
.student-account-logout button {
  width: 100%;
  padding: 7px 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 11px;
  text-align: left;
}
.student-account-logout button:hover {
  color: var(--text);
}

@media (max-width: 760px) {
  .auth-dialog.is-register {
    width: min(560px, calc(100% - 20px));
    max-height: calc(100dvh - 20px);
  }
  .auth-dialog.is-register .auth-shell {
    max-height: calc(100dvh - 20px);
    padding: 32px 22px 26px;
    scrollbar-gutter: auto;
  }
  .registration-contact-grid,
  .registration-name-grid,
  .registration-password-grid,
  .register-password-help ul {
    grid-template-columns: 1fr;
  }
  .student-account-copy {
    display: none;
  }
  .student-account-trigger {
    grid-template-columns: 34px 18px;
    gap: 5px;
  }
  .student-account-dropdown {
    width: min(286px, calc(100vw - 28px));
  }
}

@media (max-height: 680px) {
  .auth-dialog.is-register .auth-brand {
    display: none;
  }
  .auth-dialog.is-register .auth-shell {
    padding-top: 28px;
  }
}

.commerce-header-actions {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 16px;
}
@media (max-width: 760px) {
  .commerce-header-actions .commerce-back {
    display: none;
  }
}

/* Shared stage-1 components. */
.breadcrumbs{display:flex;flex-wrap:wrap;gap:7px;align-items:center;width:min(calc(100% - 40px),1180px);margin:12px auto;color:var(--muted);font-size:12px}.breadcrumbs a{text-decoration:none}.breadcrumbs a:hover{text-decoration:underline}.django-message--success{background:#edf8e8}.django-message--warning{background:#fff6dc}.django-message--error{background:#fff0ed;color:#8f433d}.field-error{color:#a13f37;font-size:12px}
