/* local_portal styles — Quantum LMS teacher/student shell */
:root {
  --portal-ink: #14213d;
  --portal-muted: #5c677a;
  --portal-accent: #0e7c7b;
  --portal-accent-dark: #0b6463;
  --portal-accent-2: #f4a261;
  --portal-surface: #faf8f5;
  --portal-card: #ffffff;
  --portal-line: rgba(20, 33, 61, 0.12);
  --portal-danger: #b33a3a;
  --portal-ok: #2a7a4b;
  --portal-warn: #a67c2d;
  --portal-radius: 10px;
  --portal-space: 4px;
  --portal-text: 0.9375rem;
  --portal-touch: 2.75rem;
  --portal-font: "Source Serif 4", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --portal-sans: "Plus Jakarta Sans", "Segoe UI", "Helvetica Neue", system-ui, sans-serif;
}

body.path-local-portal,
body.theme-kampus.path-local-portal {
  background: var(--portal-surface) !important;
}

.portal-shell {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 1.25rem 3rem;
  font-family: var(--portal-sans);
  color: var(--portal-ink);
}

.portal-topnav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: 1rem 0 1.25rem;
  border-bottom: 1px solid var(--portal-line);
  margin-bottom: 1.25rem;
  flex-wrap: wrap;
}

.portal-nav-left {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1.25rem;
}

.portal-brand {
  font-family: var(--portal-font);
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--portal-ink);
  text-decoration: none;
  letter-spacing: -0.02em;
}

.portal-nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.85rem;
}

.portal-nav-link {
  color: var(--portal-muted);
  text-decoration: none;
  font-size: 0.95rem;
  padding: 0.2rem 0;
  border-bottom: 2px solid transparent;
}

.portal-nav-link:hover,
.portal-nav-link.is-active {
  color: var(--portal-accent);
  border-bottom-color: var(--portal-accent);
}

.portal-nav-right {
  display: flex;
  align-items: center;
  gap: 0.85rem;
}

.portal-preview-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 0.9rem;
  margin: 0 0 0.75rem;
  padding: 0.55rem 0.85rem;
  background: linear-gradient(90deg, rgba(14, 124, 123, 0.12), rgba(244, 162, 97, 0.14));
  border: 1px solid var(--portal-line);
  border-radius: 8px;
  font-size: 0.88rem;
}

.portal-preview-label {
  font-weight: 600;
  color: var(--portal-ink);
  margin-right: 0.35rem;
}

.portal-preview-link {
  color: var(--portal-muted);
  text-decoration: none;
  border-bottom: 1px solid transparent;
}

.portal-preview-link:hover,
.portal-preview-link.is-active {
  color: var(--portal-accent);
  border-bottom-color: var(--portal-accent);
}

.portal-user {
  color: var(--portal-muted);
  font-size: 0.9rem;
}

.portal-user-admin {
  color: var(--portal-ink);
  text-decoration: underline;
  text-underline-offset: 0.15em;
  cursor: pointer;
}

.portal-user-admin:hover {
  color: var(--portal-accent);
}

.portal-plan-badge {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--portal-accent);
  border: 1px solid var(--portal-accent);
  border-radius: 999px;
  padding: 0.15rem 0.65rem;
  text-decoration: none;
  white-space: nowrap;
}

.portal-field-error {
  color: var(--portal-danger);
  font-size: 0.85rem;
}

.portal-logout {
  color: var(--portal-ink);
  font-size: 0.9rem;
}

.portal-page-title {
  font-family: var(--portal-font);
  font-size: 1.85rem;
  font-weight: 700;
  margin: 0 0 0.35rem;
  letter-spacing: -0.02em;
}

.portal-lead {
  color: var(--portal-muted);
  margin: 0 0 1.5rem;
  max-width: 42rem;
}

.portal-live-help {
  margin-top: -0.85rem;
  font-size: 0.95rem;
  line-height: 1.45;
  max-width: 48rem;
}

.portal-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}

.portal-card {
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  padding: 1.1rem 1.2rem;
  box-shadow: 0 1px 0 rgba(20, 33, 61, 0.04);
}

.portal-card-title {
  font-family: var(--portal-font);
  font-size: 1.15rem;
  margin: 0 0 0.75rem;
}

.portal-edit-icon {
  font-size: 0.85rem;
  opacity: 0.6;
  text-decoration: none;
}

.portal-edit-icon:hover {
  opacity: 1;
}

.portal-rename-form {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}

.portal-rename-input {
  flex: 1 1 auto;
  min-width: 10rem;
  padding: 0.35rem 0.5rem;
  border: 1px solid var(--portal-line);
  border-radius: 6px;
}

.portal-form-saved {
  display: inline-block;
  margin-left: 0.75rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--portal-ok, #2a7a4b);
  vertical-align: middle;
  transition: opacity 0.4s ease;
}
.portal-form-saved.is-ok {
  color: var(--portal-ok, #2a7a4b);
}
.portal-form-saved.is-error {
  color: var(--portal-danger, #b33a3a);
}

.portal-btn,
.portal-btn-secondary,
.portal-btn-danger,
.portal-btn-ghost,
button.portal-btn,
button.portal-btn-secondary,
button.portal-btn-danger,
button.portal-btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  min-height: var(--portal-touch);
  min-width: var(--portal-touch);
  padding: 0.5rem 1rem;
  border-radius: var(--portal-radius);
  text-decoration: none;
  font-size: max(0.875rem, var(--portal-text));
  line-height: 1.2;
  border: 1px solid transparent;
  cursor: pointer;
  background: var(--portal-accent);
  color: #fff !important;
  box-sizing: border-box;
}

.portal-btn:hover {
  filter: brightness(1.05);
  color: #fff !important;
}

.portal-btn-secondary {
  background: transparent;
  color: var(--portal-ink) !important;
  border-color: var(--portal-line);
}

.portal-btn-danger {
  background: var(--portal-danger);
}

.portal-btn-ghost {
  background: transparent;
  color: var(--portal-muted) !important;
  border-color: transparent;
}

.portal-btn-ghost:hover {
  color: var(--portal-ink) !important;
  background: rgba(20, 33, 61, 0.05);
}

.portal-btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.75rem;
  align-items: center;
}

.portal-enrol-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-bottom: 0.85rem;
}

.portal-enrol-toolbar .portal-muted {
  color: var(--portal-muted);
  font-size: 0.9rem;
}

.portal-table .portal-enrol-check-cell {
  width: 2rem;
  vertical-align: middle;
}

.portal-table input[type="checkbox"] {
  width: 1.05rem;
  height: 1.05rem;
  cursor: pointer;
}

.portal-empty {
  color: var(--portal-muted);
  padding: 1rem 0;
}

.portal-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}

.portal-table th,
.portal-table td {
  text-align: left;
  padding: 0.55rem 0.4rem;
  border-bottom: 1px solid var(--portal-line);
  vertical-align: top;
}

.portal-table .portal-import-cell-input {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 6rem;
}

.portal-table th {
  color: var(--portal-muted);
  font-weight: 600;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.portal-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.85rem;
  max-width: 36rem;
}

/* Allow grid children to shrink below select/option min-content (narrow viewports). */
.portal-form > *,
.portal-form label {
  min-width: 0;
}

.portal-form label {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.3rem;
  font-size: 0.9rem;
  color: var(--portal-muted);
}

.portal-form input[type="text"],
.portal-form input[type="email"],
.portal-form input[type="number"],
.portal-form input[type="datetime-local"],
.portal-form input[type="password"],
.portal-form select,
.portal-form textarea {
  font: inherit;
  color: var(--portal-ink);
  padding: 0.5rem 0.65rem;
  border: 1px solid var(--portal-line);
  border-radius: 6px;
  background: #fff;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.portal-form textarea {
  min-height: 110px;
  resize: vertical;
}

.portal-form button[type="submit"] {
  justify-self: start;
}

.portal-subnav {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin: 0 0 1.25rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--portal-line);
}

.portal-subnav-meta {
  font-size: 0.85rem;
  color: var(--portal-muted);
}

.portal-subnav-secondary {
  color: var(--portal-muted);
  text-decoration: none;
}

.portal-subnav-secondary:hover,
.portal-subnav-secondary.is-active {
  color: var(--portal-accent);
  text-decoration: underline;
}

.portal-subnav-links,
.portal-course-tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 0.35rem 1rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  padding-bottom: 0.15rem;
}

.portal-subnav-link {
  color: var(--portal-muted);
  text-decoration: none;
  font-size: 0.92rem;
  white-space: nowrap;
  padding: 0.35rem 0;
  border-bottom: 2px solid transparent;
  min-height: var(--portal-touch);
  display: inline-flex;
  align-items: center;
}

.portal-subnav-link.is-active,
.portal-subnav-link:hover {
  color: var(--portal-accent);
  border-bottom-color: var(--portal-accent);
}

.portal-badge,
.portal-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
  padding: 0.2rem 0.5rem;
  border-radius: 999px;
  background: rgba(14, 124, 123, 0.12);
  color: var(--portal-accent);
  line-height: 1.2;
}

.portal-chip-icon {
  font-size: 0.7rem;
}

.portal-badge-warn,
.portal-chip-warn {
  background: rgba(166, 124, 45, 0.18);
  color: var(--portal-warn);
}

.portal-badge-ok,
.portal-chip-ok {
  background: rgba(42, 122, 75, 0.15);
  color: var(--portal-ok);
}

.portal-badge-danger,
.portal-chip-danger {
  background: rgba(179, 58, 58, 0.12);
  color: var(--portal-danger);
}

.portal-badge-muted,
.portal-chip-muted {
  background: rgba(20, 33, 61, 0.08);
  color: var(--portal-muted);
}

.portal-chip-info {
  background: rgba(14, 124, 123, 0.12);
  color: var(--portal-accent);
}

.portal-chip-live {
  background: rgba(14, 124, 123, 0.2);
  color: var(--portal-accent-dark);
}

.portal-live-banner {
  background: linear-gradient(90deg, #0e7c7b, #1a535c);
  color: #fff;
  border-radius: 10px;
  padding: 0.85rem 1.1rem;
  margin-bottom: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.portal-live-banner-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
}

.portal-live-banner[hidden] {
  display: none !important;
}

.portal-live-banner a {
  background: #fff;
  color: #0e7c7b !important;
  padding: 0.4rem 0.85rem;
  border-radius: 6px;
  text-decoration: none;
  font-weight: 600;
}

.portal-live-banner-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  align-items: center;
}

.portal-live-banner-stop {
  background: #fecaca !important;
  color: #7f1d1d !important;
}

.portal-live-stop-row {
  margin: 0.5rem 0 1rem;
}

.portal-week-card {
  margin-bottom: 1rem;
}

/* Odd weeks one wash, even weeks another. */
.portal-week-card.portal-week-tint-odd > .portal-card {
  background: rgba(14, 124, 123, 0.055);
  border-color: rgba(14, 124, 123, 0.14);
}

.portal-week-card.portal-week-tint-even > .portal-card {
  background: rgba(244, 162, 97, 0.08);
  border-color: rgba(244, 162, 97, 0.18);
}

.portal-week-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  margin: 0 0 1rem;
}

.portal-week-edit-hint {
  font-size: 0.9rem;
}

.portal-add-week-form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.75rem;
}

.portal-add-week-form label {
  flex: 1 1 220px;
  margin: 0;
}

.portal-week-card-edit {
  outline: 1px solid rgba(13, 148, 136, 0.25);
  border-radius: 8px;
}

.portal-week-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0.65rem 0;
}

.portal-week-actions .portal-week-tab {
  font: inherit;
  line-height: inherit;
}

.portal-week-panel {
  margin-top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}

.portal-week-panel[hidden] {
  display: none !important;
}

.portal-week-panel > strong {
  display: block;
  margin-bottom: 0.5rem;
}

.portal-week-frame {
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.72);
  padding: 0.9rem 1rem 1rem;
}

/* Ayarlar: one framed section per group, stacked. */
.portal-settings-form .portal-week-frame {
  margin-bottom: 1rem;
}

/* Soft tints — distinct but low-contrast so content stays primary. */
.portal-week-frame-items {
  background: rgba(14, 124, 123, 0.06);
  border-color: rgba(14, 124, 123, 0.16);
}

.portal-week-frame-uploaded {
  background: rgba(42, 122, 75, 0.07);
  border-color: rgba(42, 122, 75, 0.18);
}

.portal-week-frame-upload {
  background: rgba(244, 162, 97, 0.10);
  border-color: rgba(244, 162, 97, 0.22);
}

.portal-week-frame-links {
  background: rgba(55, 95, 145, 0.07);
  border-color: rgba(55, 95, 145, 0.18);
}

.portal-week-frame-title {
  font-family: var(--portal-font);
  font-size: 1rem;
  font-weight: 650;
  margin: 0 0 0.35rem;
  color: var(--portal-ink);
}

.portal-week-frame > .portal-muted:first-of-type {
  margin-top: 0;
}

.portal-week-card-edit > .portal-card > .portal-week-frame {
  margin-top: 0.85rem;
}

.portal-muted {
  color: var(--portal-muted);
  font-size: 0.92rem;
  margin: 0 0 0.5rem;
}

/* Suspended enrolments: kept for grades, shown faded until reactivated. */
.portal-table tr.portal-enrol-suspended {
  opacity: 0.55;
}

.portal-cm-list {
  list-style: none;
  margin: 0.5rem 0 0;
  padding: 0;
}

.portal-cm-list li {
  padding: 0.25rem 0;
  border-bottom: 1px dashed var(--portal-line);
  font-size: 0.92rem;
}

.portal-cm-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem 0.75rem;
}

.portal-cm-list[data-cm-sort] .portal-cm-drag {
  flex: 0 0 auto;
  cursor: grab;
  color: var(--portal-muted, #5c677a);
  font-size: 1.15rem;
  line-height: 1;
  padding: 0.15rem 0.35rem 0.15rem 0;
  user-select: none;
  touch-action: none;
}

.portal-cm-list[data-cm-sort] .portal-cm-drag:active {
  cursor: grabbing;
}

.portal-cm-list[data-cm-sort] .portal-cm-item.portal-dragging {
  opacity: 0.45;
  background: var(--portal-soft, #f3f5f8);
}

.portal-cm-main {
  flex: 1 1 12rem;
  min-width: 0;
}

.portal-cm-actions {
  flex: 0 0 auto;
  display: inline-flex;
  gap: 0.65rem;
  white-space: nowrap;
}

.portal-cm-action {
  font-size: 0.85rem;
  color: var(--portal-accent, #0e7c7b);
  text-decoration: none;
}

.portal-cm-action:hover {
  text-decoration: underline;
}

.portal-cm-delete {
  color: var(--portal-danger, #b33a3a);
}

.portal-live-start-form {
  display: inline;
}

.portal-cm-list a {
  color: var(--portal-ink);
}

.portal-flash,
.portal-notice {
  padding: 0.75rem 1rem;
  border-radius: var(--portal-radius);
  margin-bottom: 1rem;
  background: rgba(14, 124, 123, 0.1);
  border: 1px solid rgba(14, 124, 123, 0.25);
  font-size: var(--portal-text);
}

.portal-flash-error,
.portal-notice-error {
  background: rgba(179, 58, 58, 0.08);
  border-color: rgba(179, 58, 58, 0.3);
  color: var(--portal-danger);
}

.portal-flash-info {
  background: rgba(60, 100, 160, 0.08);
  border-color: rgba(60, 100, 160, 0.28);
  color: var(--portal-ink);
}

.portal-flash-warn {
  background: #fff8e6;
  border-color: #e6c35c;
  color: var(--portal-ink);
}

.portal-notice-info {
  background: rgba(14, 124, 123, 0.08);
  border-color: rgba(14, 124, 123, 0.22);
  color: var(--portal-ink);
}

.portal-notice-warn {
  background: rgba(166, 124, 45, 0.12);
  border-color: rgba(166, 124, 45, 0.35);
  color: var(--portal-warn);
}

.portal-notice-ok {
  background: rgba(42, 122, 75, 0.1);
  border-color: rgba(42, 122, 75, 0.28);
  color: var(--portal-ok);
}

/* Teacher account menu + phone drawer */
.portal-nav-burger {
  display: none;
  align-items: center;
  justify-content: center;
  min-width: var(--portal-touch);
  min-height: var(--portal-touch);
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  background: var(--portal-card);
  color: var(--portal-ink);
  font-size: 1.25rem;
  cursor: pointer;
}

.portal-nav-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.25rem;
  padding: 0 0.35rem;
  margin-left: 0.25rem;
  border-radius: 999px;
  background: var(--portal-accent);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 600;
}

.portal-account {
  position: relative;
}

.portal-account-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  min-height: var(--portal-touch);
  padding: 0.35rem 0.65rem;
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  background: var(--portal-card);
  color: var(--portal-ink);
  font: inherit;
  cursor: pointer;
}

.portal-account-toggle.is-active,
.portal-account-toggle[aria-expanded="true"] {
  border-color: var(--portal-accent);
  color: var(--portal-accent);
}

.portal-account-dropdown {
  position: absolute;
  right: 0;
  top: calc(100% + 0.35rem);
  z-index: 40;
  min-width: 14rem;
  padding: 0.4rem;
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  box-shadow: 0 8px 24px rgba(20, 33, 61, 0.12);
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.portal-account-dropdown .portal-nav-link,
.portal-account-mobile .portal-nav-link {
  padding: 0.55rem 0.65rem;
  border-bottom: 0;
  border-radius: 6px;
  min-height: var(--portal-touch);
  display: flex;
  align-items: center;
}

.portal-account-dropdown .portal-nav-link:hover,
.portal-account-dropdown .portal-nav-link.is-active,
.portal-account-mobile .portal-nav-link:hover,
.portal-account-mobile .portal-nav-link.is-active {
  background: rgba(14, 124, 123, 0.1);
  color: var(--portal-accent);
}

.portal-account-mobile {
  display: none;
}

.portal-teacher-drawer {
  display: none;
}

.portal-drawer-heading {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--portal-muted);
  margin: 0.75rem 0 0.35rem;
  font-weight: 600;
}

.portal-drawer-plan {
  margin-bottom: 0.35rem;
}

/* Overflow ⋯ menu */
.portal-overflow {
  position: relative;
  display: inline-flex;
  vertical-align: middle;
}

.portal-overflow-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--portal-touch);
  min-height: var(--portal-touch);
  padding: 0;
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  background: var(--portal-card);
  color: var(--portal-ink);
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
}

.portal-overflow-toggle[aria-expanded="true"] {
  border-color: var(--portal-accent);
  color: var(--portal-accent);
}

.portal-overflow-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 0.25rem);
  z-index: 45;
  min-width: 12rem;
  padding: 0.35rem;
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  box-shadow: 0 8px 24px rgba(20, 33, 61, 0.12);
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.portal-overflow-item,
.portal-overflow-form button {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--portal-touch);
  padding: 0.45rem 0.65rem;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--portal-ink);
  text-decoration: none;
  font: inherit;
  font-size: var(--portal-text);
  text-align: left;
  cursor: pointer;
}

.portal-overflow-item:hover,
.portal-overflow-form button:hover {
  background: rgba(20, 33, 61, 0.06);
}

.portal-overflow-item.is-danger,
.portal-overflow-form button.is-danger {
  color: var(--portal-danger);
}

.portal-overflow-form {
  margin: 0;
}

@media (max-width: 719px) {
  .portal-topnav-teacher .portal-nav-burger {
    display: inline-flex;
  }

  .portal-topnav-teacher .portal-nav-links-desktop,
  .portal-topnav-teacher .portal-account-desktop {
    display: none;
  }

  .portal-topnav-teacher .portal-teacher-drawer {
    display: none;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    z-index: 50;
    margin-top: 0.35rem;
    padding: 0.75rem 1rem 1rem;
    background: var(--portal-card);
    border: 1px solid var(--portal-line);
    border-radius: var(--portal-radius);
    box-shadow: 0 12px 28px rgba(20, 33, 61, 0.14);
  }

  .portal-topnav-teacher.is-drawer-open .portal-teacher-drawer,
  .portal-topnav-teacher .portal-teacher-drawer:not([hidden]) {
    display: block;
  }

  .portal-topnav-teacher {
    position: relative;
    flex-wrap: wrap;
  }

  .portal-topnav-teacher .portal-account-mobile {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
  }

  .portal-topnav-teacher .portal-teacher-drawer .portal-nav-links {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
  }

  .portal-topnav-teacher .portal-teacher-drawer .portal-nav-link {
    min-height: var(--portal-touch);
    padding: 0.55rem 0.35rem;
    border-bottom: 0;
  }
}

.portal-stat {
  font-family: var(--portal-font);
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--portal-accent);
}

.portal-kiosk-back {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--portal-ink);
  color: #fff;
  padding: 0.55rem 1rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.portal-kiosk-back a {
  color: #fff !important;
  text-decoration: none;
  font-weight: 600;
}

.portal-mod-content {
  line-height: 1.55;
  font-size: 1rem;
}

.portal-mod-content img {
  max-width: 100%;
  height: auto;
}

/* Kiosk: hide moodle chrome when theme applies body class */
body.portal-kiosk-active #page-header .navbar,
body.portal-kiosk-active .navbar,
body.portal-kiosk-active .primary-navigation,
body.portal-kiosk-active .secondary-navigation,
body.portal-kiosk-active .drawer,
body.portal-kiosk-active .drawer-toggler,
body.portal-kiosk-active #nav-drawer,
body.portal-kiosk-active #courseindexdrawer,
body.portal-kiosk-active .navbar .moremenu,
body.portal-kiosk-active .primary-navigation .moremenu,
body.portal-kiosk-active .secondary-navigation .moremenu,
body.portal-kiosk-active #page-footer {
  display: none !important;
}

/* Quiz edit: Add dropdown + chooser/modals must stay usable in kiosk shell. */
body.portal-kiosk-active.path-mod-quiz .last-add-menu,
body.portal-kiosk-active#page-mod-quiz-edit .last-add-menu,
#page-mod-quiz-edit .last-add-menu {
  height: auto !important;
  min-height: 2.75rem;
  overflow: visible !important;
  z-index: 30;
  position: relative;
  margin: 1rem 1.25rem !important;
}
body.portal-kiosk-active.path-mod-quiz .add-menu-outer,
body.portal-kiosk-active#page-mod-quiz-edit .add-menu-outer,
#page-mod-quiz-edit .add-menu-outer {
  overflow: visible !important;
  z-index: 40;
  position: relative !important;
  right: auto !important;
  display: inline-block;
}
body.portal-kiosk-active .add-menu-outer .dropdown-menu,
#page-mod-quiz-edit .add-menu-outer .dropdown-menu {
  z-index: 2000;
}
body.portal-kiosk-active .modal,
body.portal-kiosk-active .moodle-dialogue,
body.portal-kiosk-active .moodle-dialogue-base {
  z-index: 2100 !important;
}
/* Moodle JS computes backdrop z-index above the modal when the modal is pinned
   this high, which makes modal buttons unclickable — pin backdrop just below. */
body.portal-kiosk-active .modal-backdrop,
body.portal-kiosk-active .moodle-dialogue-lightbox {
  z-index: 2099 !important;
}

/* Select-multiple toggles without relying only on body#page-mod-quiz-edit. */
body.path-mod-quiz .btn-group.selectmultiplecommand,
body.path-mod-quiz .selectmultiplecommandbuttons,
body.path-mod-quiz .select-multiple-checkbox {
  display: none;
}
body.path-mod-quiz.select-multiple .btn-group.selectmultiplecommand,
body.path-mod-quiz.select-multiple .selectmultiplecommandbuttons,
body.path-mod-quiz.select-multiple .select-multiple-checkbox {
  display: inline-block;
}

.portal-quiz-add-tools {
  margin: 0.75rem 1rem 0;
}
.portal-quiz-add-tools .btn {
  margin: 0.15rem 0.25rem 0.15rem 0;
}
.portal-quiz-add-tools .portal-quiz-back {
  margin-right: 0.75rem;
  padding-left: 0;
}

@media (max-width: 640px) {
  .portal-page-title {
    font-size: 1.45rem;
  }
  /* One card per row: every cell is labelled with its column (page_helper::table). */
  .portal-table thead {
    display: none;
  }
  .portal-table,
  .portal-table tbody,
  .portal-table tr,
  .portal-table td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  .portal-table tr,
  .portal-table.generaltable tr {
    border: 0;
    border-bottom: 1px solid var(--portal-line);
    padding: 0.35rem 0;
  }
  .portal-table td,
  .portal-table.generaltable td {
    border: 0;
    padding: 0.2rem 0.4rem;
    overflow-wrap: anywhere;
  }
  .portal-table td[data-label]::before {
    content: attr(data-label);
    display: block;
    color: var(--portal-muted);
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }
}

.portal-live-active-card {
  border: 1px solid rgba(14, 124, 123, 0.35);
  box-shadow: 0 0 0 3px rgba(14, 124, 123, 0.08);
}

.portal-live-active-focus {
  border-color: rgba(14, 124, 123, 0.65);
  box-shadow: 0 0 0 4px rgba(14, 124, 123, 0.18);
}

.portal-live-kodlab-filter.portal-flash-warn {
  background: #fff8e6;
  border-color: #e6c35c;
}

.portal-live-active-summary {
  font-weight: 600;
  margin: 0 0 0.5rem;
  color: var(--portal-ink);
}

.portal-live-prompt {
  margin: 0 0 0.75rem;
}

.portal-live-help {
  max-width: 52rem;
}

.portal-live-qr-block {
  margin: 0.75rem 0 1rem;
}

.portal-live-qr-wrap {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 1rem;
  background: #f7faf9;
  border-radius: 10px;
  border: 1px solid rgba(14, 124, 123, 0.18);
  max-width: 22rem;
}

.portal-live-qr {
  width: 180px;
  height: 180px;
  display: block;
  background: #fff;
  border-radius: 6px;
}

.portal-live-qr-hint {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.35;
}

.portal-live-link-line {
  margin: 0;
  font-size: 0.8rem;
  word-break: break-all;
}

/* Rotating 6-digit join code (live quiz, live sessions, Kodlab): big enough to read from the back row. */
strong[data-joincode-url] {
  display: block;
  font-size: 2.6rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  line-height: 1.1;
  word-break: normal;
}

.portal-topic-input,
.portal-topic-ai-input {
  box-sizing: border-box;
  width: 100%;
  min-width: 14rem;
}

.portal-topic-row-actions {
  margin-top: 0;
  justify-content: flex-end;
}

.portal-topic-index-cell {
  white-space: nowrap;
  vertical-align: middle;
}

.portal-topic-drag {
  display: inline-block;
  cursor: grab;
  color: var(--portal-muted, #5c677a);
  font-size: 1.15rem;
  line-height: 1;
  padding: 0.15rem 0.35rem 0.15rem 0;
  user-select: none;
  touch-action: none;
  vertical-align: middle;
}

.portal-topic-drag:active {
  cursor: grabbing;
}

.portal-topic-num {
  display: inline-block;
  min-width: 1.25rem;
  vertical-align: middle;
}

#portal-topic-editor tr.portal-dragging {
  opacity: 0.45;
  background: var(--portal-soft, #f3f5f8);
}

.portal-quizlive-tallies {
  list-style: none;
  margin: 0.35rem 0 0.25rem;
  padding: 0 0 0 1rem;
  font-size: 0.9rem;
  color: var(--portal-muted);
}

.portal-quizlive-tallies li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.1rem 0;
}

.portal-quizlive-tallies progress {
  width: 8rem;
  height: 0.6rem;
}

.portal-quizlive-tally-correct {
  color: var(--portal-ok);
  font-weight: 600;
}

/* Course card drag-to-reorder (js/course_sort.js). */
.portal-grid[data-course-sort] > .portal-card {
  position: relative;
}
.portal-grid[data-course-sort] .portal-card-title {
  padding-right: 1.4rem;
}
.portal-drag-handle {
  position: absolute;
  top: 0.4rem;
  right: 0.55rem;
  cursor: grab;
  color: var(--portal-line);
  font-size: 1.1rem;
  line-height: 1;
  padding: 0.2rem;
  user-select: none;
}
.portal-card:hover .portal-drag-handle {
  color: inherit;
}
.portal-card.portal-dragging {
  opacity: 0.4;
}

/* Printable quiz questions (quizprint.php): paper shows only the questions. */
#page-local-portal-quizprint .que .info .state {
    display: none;
}
@media print {
    #page-local-portal-quizprint header,
    #page-local-portal-quizprint nav,
    #page-local-portal-quizprint footer,
    #page-local-portal-quizprint .portal-noprint {
        display: none !important;
    }
    #page-local-portal-quizprint .que {
        break-inside: avoid;
    }
}

/* Teacher AI keys page */
.portal-aikey-row {
  display: grid;
  gap: 0.35rem;
  padding: 0.85rem 0;
  border-bottom: 1px solid rgba(92, 103, 122, 0.18);
}
.portal-aikey-row .portal-muted {
  color: var(--portal-muted);
  font-size: 0.85rem;
}
.portal-badge-ok {
  background: rgba(46, 160, 67, 0.15);
  color: #1f7a35;
}
.portal-badge-muted {
  background: rgba(92, 103, 122, 0.12);
  color: var(--portal-muted);
}
/* Alan kategorisi (discipline) of a course or studio deck. */
.portal-badge-disc {
  background: rgba(20, 33, 61, 0.08);
  color: var(--portal-ink);
}
.portal-badge-free {
  background: rgba(244, 162, 97, 0.2);
  color: #9a4d0f;
}
.portal-inline-check {
  display: flex !important;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.85rem;
  min-width: 0;
}

.portal-inline-check .portal-muted {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* Ayarlar: checkbox | label text; help under label in column 2 (other pages keep flex). */
.portal-settings-form .portal-inline-check {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 0.5rem;
  row-gap: 0.15rem;
  align-items: start;
}
.portal-settings-form .portal-inline-check input[type=checkbox] {
  width: 1.25rem;
  height: 1.25rem;
  margin: 0.1rem 0 0;
}
.portal-settings-form .portal-inline-check .portal-muted {
  grid-column: 2;
}

/* "Show for N minutes" next to an item's Show/Hide. */
.portal-timed-show {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin: 0;
}

.portal-timed-show .portal-timed-minutes {
  width: 4.2em;
  padding: 0.1rem 0.3rem;
  font-size: 0.85rem;
}

.portal-linkbtn {
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}

/* Live quiz roster: ⚠×N opens the student's exit log. */
.portal-quizlive-focuslost {
    display: inline-block;
    margin-left: 0.35rem;
    color: #b54708;
    vertical-align: top;
}
.portal-quizlive-focuslost > summary {
    cursor: pointer;
}
.portal-quizlive-focuslog {
    margin: 0.25rem 0 0.25rem 1.1rem;
    padding: 0;
    font-size: 0.85rem;
    color: #344054;
}

.portal-resetpw-input {
  font: inherit;
  font-size: 0.85rem;
  padding: 0.3rem 0.5rem;
  border: 1px solid var(--portal-line);
  border-radius: 6px;
  color: var(--portal-ink);
  background: #fff;
}

/* Teacher agenda dashboard (ogretmen/index.php). */
.portal-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 0.85rem;
  margin-bottom: 1rem;
}
.portal-tile {
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  padding: 0.9rem 1rem;
}
.portal-tile.is-live {
  border-color: rgba(244, 162, 97, 0.6);
}
.portal-tile-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--portal-muted);
}
.portal-tile-value {
  font-family: var(--portal-font);
  font-size: 1.9rem;
  font-weight: 700;
  line-height: 1.2;
  margin: 0.2rem 0;
}
.portal-tile-sub,
.portal-muted {
  font-size: 0.82rem;
  color: var(--portal-muted);
}
.portal-dash-main {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  gap: 1rem;
  align-items: start;
}
.portal-dash-col,
.portal-dash-side {
  display: grid;
  gap: 1rem;
  min-width: 0;
}
.portal-dash-live {
  border-color: rgba(244, 162, 97, 0.6);
}
.portal-dash-live-head,
.portal-card-head,
.portal-dash-due-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.portal-dash-live-head {
  justify-content: flex-start;
  margin-bottom: 0.5rem;
}
.portal-card-head .portal-card-title {
  margin: 0;
}
.portal-card-head {
  margin-bottom: 0.5rem;
}
.portal-dash-live-badge {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #9a5b1a;
}
.portal-dash-live-badge::before {
  content: "";
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  margin-right: 0.35rem;
  border-radius: 50%;
  background: var(--portal-accent-2);
  animation: portal-dash-pulse 1.6s ease-in-out infinite;
}
@keyframes portal-dash-pulse {
  50% { opacity: 0.35; }
}
.portal-dash-figs {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.75rem;
  padding: 0.75rem;
  border: 1px solid var(--portal-line);
  border-radius: 8px;
  background: var(--portal-surface);
}
.portal-dash-fig-value {
  font-family: var(--portal-font);
  font-size: 1.3rem;
  font-weight: 700;
  margin: 0.1rem 0 0.35rem;
}
.portal-bar {
  height: 0.35rem;
  border-radius: 999px;
  background: rgba(20, 33, 61, 0.08);
  overflow: hidden;
  margin-top: 0.35rem;
}
.portal-bar-fill {
  height: 100%;
  background: var(--portal-accent);
}
.portal-bar.is-done .portal-bar-fill { background: #2f6fb3; }
.portal-bar.is-warn .portal-bar-fill { background: var(--portal-accent-2); }
.portal-bar.is-muted .portal-bar-fill { background: var(--portal-muted); }
.portal-dash-watch {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-top: 0.75rem;
}
.portal-dash-cells {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
}
.portal-dash-cell {
  width: 0.8rem;
  height: 0.8rem;
  border-radius: 2px;
  background: rgba(20, 33, 61, 0.15);
}
.portal-dash-cell.is-active { background: var(--portal-accent); }
.portal-dash-cell.is-done { background: #2f6fb3; }
.portal-dash-cell.is-warn { background: var(--portal-accent-2); }
.portal-dash-nolive {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.portal-dash-due {
  padding: 0.65rem 0;
  border-bottom: 1px solid var(--portal-line);
}
.portal-dash-due:first-of-type {
  padding-top: 0;
}
.portal-dash-due-name {
  display: block;
  font-weight: 600;
  color: var(--portal-ink);
  text-decoration: none;
  margin: 0.3rem 0 0.1rem;
}
.portal-dash-due-head .portal-dash-due-name {
  margin: 0;
}
.portal-dash-side .portal-btn-secondary {
  margin-top: 0.75rem;
}
@media (max-width: 900px) {
  .portal-dash-main {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 640px) {
  .portal-tiles,
  .portal-dash-figs {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Shared summary pieces (page_helper::course_facts, dersler cards, course subnav). */
.portal-subnav {
  align-items: center;
  justify-content: space-between;
}
.portal-subnav-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.portal-subnav-link {
  padding: 0.3rem 0.7rem;
  border-radius: 999px;
}
.portal-subnav-link.is-active {
  background: rgba(14, 124, 123, 0.12);
  font-weight: 600;
}
.portal-facts {
  font-size: 0.82rem;
  color: var(--portal-muted);
}
.portal-facts-pending {
  color: #9a5b1a;
  font-weight: 600;
}
.portal-course-facts {
  margin: 0.75rem 0 0.25rem;
  padding-top: 0.65rem;
  border-top: 1px solid var(--portal-line);
}
.portal-course-facts-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.85rem;
  font-size: 0.88rem;
  margin-bottom: 0.4rem;
}
.portal-card .portal-tile {
  background: var(--portal-surface);
}

/* Student pages (ogrenci/*) — same language as the teacher side. */
.portal-badge-danger {
  background: rgba(179, 58, 58, 0.12);
  color: var(--portal-danger);
}
.portal-tile.is-danger {
  border-color: rgba(179, 58, 58, 0.35);
}
.portal-tile.is-danger .portal-tile-value {
  color: var(--portal-danger);
}
.portal-row {
  padding: 0.7rem 0;
  border-bottom: 1px solid var(--portal-line);
}
.portal-row:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}
.portal-row-meta,
.portal-row-main,
.portal-row-actions {
  display: flex;
  align-items: center;
  gap: 0.4rem 0.6rem;
  flex-wrap: wrap;
}
.portal-row-main {
  justify-content: space-between;
  margin-top: 0.25rem;
}
.portal-row-title {
  font-weight: 600;
  color: var(--portal-ink) !important;
  text-decoration: none;
}
.portal-row-link {
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--portal-accent);
  text-decoration: none;
}
.portal-row-due {
  font-size: 0.85rem;
  color: var(--portal-muted);
}
.portal-row-due.is-danger {
  color: var(--portal-danger);
}
.portal-pills {
  display: flex;
  gap: 0.4rem;
  overflow-x: auto;
  padding-bottom: 0.25rem;
  margin-bottom: 1rem;
  scrollbar-width: none;
}
.portal-pill {
  flex: 0 0 auto;
  padding: 0.35rem 0.85rem;
  border: 1px solid var(--portal-line);
  border-radius: 999px;
  background: var(--portal-card);
  color: var(--portal-ink);
  font-size: 0.88rem;
  text-decoration: none;
  white-space: nowrap;
}
.portal-pill.is-active {
  background: var(--portal-accent);
  border-color: var(--portal-accent);
  color: #fff;
}
.portal-back-link {
  display: inline-block;
  margin-bottom: 0.5rem;
  font-size: 0.9rem;
  color: var(--portal-accent);
  text-decoration: none;
}
.portal-act {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.65rem 0;
  border-bottom: 1px solid var(--portal-line);
}
.portal-act:last-child {
  border-bottom: 0;
}
.portal-act-icon {
  width: 2rem;
  height: 2rem;
  padding: 0.35rem;
  border-radius: 8px;
  background: rgba(14, 124, 123, 0.1);
  flex: 0 0 auto;
}
.portal-act-text {
  flex: 1 1 auto;
  min-width: 0;
}
.portal-act .portal-muted {
  font-size: 0.75rem;
}
.portal-grade {
  font-family: var(--portal-font);
  font-weight: 700;
}
.portal-grade.is-dropped {
  color: var(--portal-muted);
  text-decoration: line-through;
}
.portal-grade-total {
  text-align: right;
}
.portal-grade-total .portal-tile-value {
  color: var(--portal-accent);
}
.portal-announce.is-new {
  border-left: 4px solid var(--portal-accent);
}
.portal-announce .portal-card-title {
  margin: 0.4rem 0;
}
.portal-announce-body {
  margin-bottom: 0.5rem;
  line-height: 1.5;
}

/* Live banner (every portal page): the agenda's "live now" card. */
.portal-live-banner {
  background: var(--portal-card);
  color: var(--portal-ink);
  border: 1px solid rgba(244, 162, 97, 0.6);
  border-left: 4px solid var(--portal-accent-2);
}
.portal-live-banner strong::before {
  content: "";
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  margin-right: 0.45rem;
  border-radius: 50%;
  background: var(--portal-accent-2);
  vertical-align: middle;
  animation: portal-dash-pulse 1.6s ease-in-out infinite;
}
.portal-live-banner a {
  background: var(--portal-accent);
  color: #fff !important;
}

/* Student phone bottom tab bar (Aşama B). Desktop uses top 4 + Hesap. */
.portal-tabbar {
  display: none;
}

.portal-live-banner-student .portal-live-join {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--portal-touch);
  padding: 0.65rem 1.25rem;
  font-size: 1.05rem;
  font-weight: 700;
  border-radius: var(--portal-radius);
}

.portal-live-join-code {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 1.5rem;
  margin: 0.75rem 0 1rem;
}

.portal-live-join-code-main {
  flex: 1 1 12rem;
}

.portal-live-join-code-value {
  display: block;
  font-size: clamp(3rem, 8vw, 4.5rem);
  font-weight: 700;
  letter-spacing: 0.18em;
  line-height: 1.05;
  color: var(--portal-ink);
  font-variant-numeric: tabular-nums;
}

.portal-live-join-code-note,
.portal-live-join-code-remain {
  margin: 0.35rem 0 0;
  font-size: 0.95rem;
  color: var(--portal-muted);
}

.portal-live-join-code-remain {
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--portal-ink);
}

.portal-today-card .portal-card-title {
  margin-bottom: 0.35rem;
}

.portal-today-meta {
  color: var(--portal-muted);
  margin: 0 0 0.85rem;
}

.portal-today-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.85rem;
}

.portal-today-picker {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.portal-today-picker select {
  min-height: var(--portal-touch);
  font: inherit;
  padding: 0.35rem 0.65rem;
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  background: #fff;
}

.portal-announce-band {
  margin-bottom: 1.25rem;
}

.portal-announce-band-item {
  padding: 0.55rem 0;
  border-bottom: 1px solid var(--portal-line);
}

.portal-announce-band-item:last-child {
  border-bottom: 0;
}

@media (max-width: 719px) {
  .portal-topnav-student .portal-nav-links-desktop,
  .portal-topnav-student .portal-account-desktop {
    display: none;
  }

  .portal-tabbar {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1030;
    gap: 0;
    background: var(--portal-card);
    border-top: 1px solid var(--portal-line);
    padding: 0.2rem 0 calc(0.2rem + env(safe-area-inset-bottom));
    box-shadow: 0 -4px 16px rgba(20, 33, 61, 0.08);
  }

  .portal-tabbar-item {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--portal-touch);
    padding: 0.35rem 0.15rem;
    text-align: center;
    text-decoration: none;
    color: var(--portal-muted);
    font-size: max(12px, 0.75rem);
    line-height: 1.15;
    border: 0;
  }

  .portal-tabbar-item.is-active {
    color: var(--portal-accent);
    font-weight: 600;
  }

  body:has(.portal-tabbar) .portal-shell {
    padding-bottom: calc(5.5rem + env(safe-area-inset-bottom));
  }
}
@media (max-width: 640px) {
  .portal-tiles:has(> :nth-child(3):last-child) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .portal-tiles:has(> :nth-child(3):last-child) .portal-tile {
    padding: 0.7rem 0.6rem;
  }
  .portal-tiles:has(> :nth-child(3):last-child) .portal-tile-label {
    font-size: 0.66rem;
  }
}
.portal-grade-total {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin-left: auto;
}
.portal-grade-total .portal-tile-value {
  font-size: 1.5rem;
  margin: 0;
}
.portal-act {
  flex-wrap: wrap;
}
.portal-act .portal-row-actions {
  margin-left: auto;
}
@media (max-width: 640px) {
  .portal-act .portal-row-actions {
    flex-basis: 100%;
    padding-left: 2.75rem;
  }
}
.portal-live-banner a.portal-live-banner-stop {
  background: transparent !important;
  color: var(--portal-danger) !important;
  border: 1px solid rgba(179, 58, 58, 0.45);
}
.portal-act-text {
  flex: 1 1 0;
}
.portal-quizreview-card {
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
}
.portal-quizreview-item {
  width: 100%;
}
.portal-quizreview-head {
  margin-bottom: 0.35rem;
}
.portal-quizreview-q {
  margin-bottom: 0.5rem;
}
.portal-quizreview-ans,
.portal-quizreview-right,
.portal-quizreview-tip {
  font-size: 0.95rem;
  margin-top: 0.25rem;
}
.portal-quizreview-ok .portal-quizreview-right {
  color: var(--portal-ok, #1a7f37);
}
.portal-quizreview-bad {
  border-left: 3px solid var(--portal-danger, #b33a3a);
  padding-left: 0.75rem;
}
.portal-quizreview-tip {
  background: rgba(0, 0, 0, 0.04);
  padding: 0.6rem 0.75rem;
  border-radius: 6px;
  margin-top: 0.5rem;
}
.portal-quizreview-picker {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin: 0.75rem 0 1rem;
}
.portal-quizreview-picker label {
  margin: 0;
  font-weight: 600;
}

/* Teacher Notlar: grade tabs and week accordions (ogretmen/notlar.php). */
.portal-tabs {
  margin: 1.25rem 0 1rem;
}
.portal-acc-note {
  margin: 1rem 0 0;
  padding: 0.6rem 0.9rem;
  border-radius: 10px;
  background: rgba(244, 162, 97, 0.14);
  font-size: 0.9rem;
}
.portal-acc {
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  margin: 0 0 0.5rem;
}
.portal-acc > summary {
  cursor: pointer;
  padding: 0.65rem 0.9rem;
  font-weight: 600;
}
.portal-acc > summary .portal-muted {
  font-weight: 400;
  font-size: 0.88rem;
}
.portal-acc[open] > summary {
  border-bottom: 1px solid var(--portal-line);
}
.portal-acc-body {
  padding: 0.75rem 0.9rem;
  overflow-x: auto;
}
.portal-acc-off {
  margin: 0 0 0.5rem;
  padding: 0.65rem 0.9rem 0.65rem 2rem;
  border: 1px dashed var(--portal-line);
  border-radius: 10px;
  color: var(--portal-muted);
  opacity: 0.6;
  cursor: not-allowed;
}
.portal-dim {
  opacity: 0.45;
}

/* Student Notlarım: section headings inside a course card. */
.portal-card-subtitle {
    font-size: 1rem;
    font-weight: 600;
    margin: 1.25rem 0 .5rem;
}

/* ==========================================================================
   Kiosk: çekirdek YZ yerleşimi (aiplacement_courseassist) bu sayfalarda görünmez.
   Site genelinde kapatmak sahibin kararıdır; burada yalnız görünüm.
   ========================================================================== */
/* 4.5 (summarise_button/drawer şablonları) ve 5.0.9 (actions + actions_dropdown) seçicileri birlikte. */
body.portal-kiosk-active .ai-action,
body.portal-kiosk-active .ai-action + .dropdown-menu,
body.portal-kiosk-active .dropdown:has(> .ai-action),
body.portal-kiosk-active .ai-course-summarise-controls,
body.portal-kiosk-active [data-action="course-summarise"],
body.portal-kiosk-active #ai-drawer,
body.portal-kiosk-active .ai-drawer,
body.portal-kiosk-active [data-region="ai-drawer"],
body.portal-kiosk-active [data-aiplacement="courseassist"] {
  display: none !important;
}
body.portal-kiosk-active .portal-kiosk-back {
  gap: 0.75rem;
}
body.portal-kiosk-active .portal-kiosk-back > * {
  min-width: 0;
}
body.portal-kiosk-active .portal-kiosk-back > :last-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.portal-kiosk-active .portal-kiosk-back a {
  flex: 0 0 auto;
  white-space: nowrap;
}

/* ==========================================================================
   .portal-mform — Moodle formlarını portal diline taşır (yalnız bu sınıfla).
   ========================================================================== */
.portal-mform-page .portal-form-head {
  max-width: 62rem;
  margin: 0 auto 1rem;
}
.portal-form-head-eyebrow {
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--portal-muted);
  font-weight: 600;
}
.portal-form-head h1 {
  font-family: var(--portal-font);
  font-size: 1.6rem;
  margin: 0.15rem 0 0.25rem;
  color: var(--portal-ink);
}
.portal-form-head p {
  margin: 0;
  color: var(--portal-muted);
}
.portal-form-head-aside {
  margin-top: 0.6rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.75rem;
  align-items: center;
}

.portal-mform-layout {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(15rem, 1fr);
  gap: 1rem;
  align-items: start;
  max-width: 62rem;
  margin: 0 auto;
}
.portal-mform-layout.is-single {
  grid-template-columns: minmax(0, 1fr);
  max-width: 48rem;
}

.portal-mform-summary {
  position: sticky;
  top: 4rem;
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  padding: 0.9rem 1rem;
}
.portal-mform-summary h2 {
  font-family: var(--portal-font);
  font-size: 1rem;
  margin: 0 0 0.5rem;
}
.portal-mform-summary dl {
  margin: 0 0 0.85rem;
  display: grid;
  gap: 0.35rem;
}
.portal-mform-summary dt {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--portal-muted);
  font-weight: 600;
}
.portal-mform-summary dd {
  margin: 0;
  font-size: 0.9rem;
  color: var(--portal-ink);
  overflow-wrap: anywhere;
}
.portal-mform-summary .portal-btn,
.portal-mform-summary .portal-btn-secondary {
  width: 100%;
  margin-top: 0.4rem;
}
/* Düzeltme 2: button.portal-btn-secondary base rule paints green; override only here. */
.portal-mform-summary-actions button.portal-btn-secondary,
.portal-mform-bar-actions button.portal-btn-secondary {
  background: transparent;
  color: var(--portal-ink) !important;
  border-color: var(--portal-line);
}
.portal-mform-summary-actions button.portal-btn-secondary:hover,
.portal-mform-bar-actions button.portal-btn-secondary:hover {
  background: rgba(20, 33, 61, 0.05);
  color: var(--portal-ink) !important;
}
.portal-mform-summary-actions .portal-form-saved {
  display: block;
  margin: 0.35rem 0 0;
  text-align: center;
}
.portal-mform-summary-actions .portal-form-saved:empty,
.portal-mform-bar-actions .portal-form-saved:empty {
  display: none;
}

.portal-mform-bar {
  display: none;
}
.portal-mform-bar-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0.4rem;
  flex: 1 1 auto;
  min-width: 0;
}
.portal-mform-bar-actions .portal-btn,
.portal-mform-bar-actions .portal-btn-secondary {
  white-space: nowrap;
  flex: 1 1 0;
  min-width: 0;
  padding-left: 0.6rem;
  padding-right: 0.6rem;
}
.portal-mform-bar-actions .portal-btn {
  order: 2;
}
.portal-mform-bar-actions .portal-btn-secondary {
  order: 1;
}
.portal-mform-bar-actions .portal-form-saved {
  order: -1; /* above the two buttons on the mobile bar */
  flex: 1 0 100%;
  margin: 0 0 0.15rem;
  font-size: 0.9rem;
  font-weight: 700;
  text-align: center;
}

.portal-mform .mform,
form.portal-mform {
  max-width: none;
}
.portal-mform fieldset,
.portal-mform fieldset.collapsible {
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.72);
  padding: 0.9rem 1rem 1rem;
  margin: 0 0 1rem;
  min-width: 0;
}
.portal-mform fieldset.portal-tone-items { background: rgba(14, 124, 123, 0.04); }
.portal-mform fieldset.portal-tone-upload { background: rgba(244, 162, 97, 0.07); }
.portal-mform fieldset.portal-tone-links { background: rgba(20, 33, 61, 0.03); }
.portal-mform fieldset > legend,
.portal-mform .fcontainer legend,
.portal-mform legend.ftoggler {
  float: none;
  width: auto;
  padding: 0;
  margin: 0 0 0.5rem;
  font-family: var(--portal-font);
  font-size: 1rem;
  font-weight: 650;
  color: var(--portal-ink);
  border: 0;
}
.portal-mform legend.ftoggler a,
.portal-mform legend.ftoggler .fheader {
  color: var(--portal-ink);
  text-decoration: none;
  font-size: 1rem;
}
/* Katlama: yalnız "Gelişmiş" grubu (…advancedheader) katlanır; Bootstrap `.collapse:not(.show)` onu kapalı tutar. */
.portal-mform fieldset:not([id$="advancedheader"]) .fcontainer {
  display: block;
  height: auto;
}

/* Etiket üstte, alan altta; ızgara iptal. */
.portal-mform .fitem,
.portal-mform .form-group.row,
.portal-mform .fitem.row {
  display: block;
  margin: 0 0 0.85rem;
  padding: 0;
}
.portal-mform .fitem > [class*="col-md-"],
.portal-mform .form-group.row > [class*="col-md-"] {
  flex: none;
  max-width: 100%;
  width: 100%;
  padding-left: 0;
  padding-right: 0;
}
.portal-mform .col-form-label,
.portal-mform .fitem > .col-md-3 label,
.portal-mform .fitem label.d-inline {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--portal-ink);
  padding: 0 0 0.25rem;
  margin: 0;
  text-align: left;
}
.portal-mform .fitem > .col-md-3 {
  display: block;
  padding: 0;
}
.portal-mform .req,
.portal-mform .fdescription.required,
.portal-mform .form-label-addon .text-danger,
.portal-mform .btn-link[data-toggle="popover"],
.portal-mform .btn-link[data-bs-toggle="popover"],
.portal-mform a.btn.btn-link.p-0,
.portal-mform .collapsible-actions {
  display: none !important;
}
.portal-mform .form-label-addon {
  display: none;
}

.portal-mform input[type="text"],
.portal-mform input[type="number"],
.portal-mform input[type="email"],
.portal-mform input[type="password"],
.portal-mform input[type="url"],
.portal-mform select,
.portal-mform textarea,
.portal-mform .custom-select,
.portal-mform .form-control {
  font: inherit;
  color: var(--portal-ink);
  min-height: var(--portal-touch);
  padding: 0.5rem 0.65rem;
  border: 1px solid var(--portal-line);
  border-radius: 8px;
  background: #fff;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.portal-mform select { width: auto; min-width: 12rem; max-width: 100%; }
.portal-mform input[type="number"] { width: 6rem; }
.portal-mform textarea { width: 100%; min-height: 6rem; resize: vertical; }
.portal-mform input[type="text"] { width: 100%; max-width: 32rem; }
.portal-mform input:focus-visible,
.portal-mform select:focus-visible,
.portal-mform textarea:focus-visible {
  outline: 2px solid var(--portal-accent);
  outline-offset: 1px;
}

.portal-mform-row {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  gap: 0 0.85rem;
}
.portal-mform-row > .fitem { margin-bottom: 0.5rem; }
.portal-mform-help {
  display: block;
  margin: 0.25rem 0 0;
  font-size: 0.82rem;
  color: var(--portal-muted);
  line-height: 1.35;
}
.portal-mform-dependent {
  margin-left: 1.5rem;
  padding-left: 0.85rem;
  border-left: 3px solid var(--portal-line);
}

/* Hatalar */
.portal-mform .invalid-feedback,
.portal-mform .form-control-feedback,
.portal-mform .felement .error {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.82rem;
  color: var(--portal-danger);
}
.portal-mform .is-invalid,
.portal-mform .has-danger input,
.portal-mform .has-danger select,
.portal-mform .has-danger textarea {
  border-color: var(--portal-danger);
}

/* Onay kutuları: çoklu gruplar çip-toggle. */
.portal-mform .form-check {
  padding-left: 0;
  display: flex;
  align-items: center;
  gap: 0.45rem;
}
.portal-mform input[type="checkbox"] {
  width: 1.1rem;
  height: 1.1rem;
  accent-color: var(--portal-accent);
}
.portal-mform .portal-chipgroup .fitem {
  display: inline-block;
  margin: 0 0.4rem 0.5rem 0;
}
.portal-mform .portal-chipgroup .fitem .col-md-3 { display: none; }
.portal-mform .portal-chipgroup .fitem .form-check {
  border: 1px solid var(--portal-line);
  border-radius: 999px;
  padding: 0.35rem 0.8rem;
  background: #fff;
  min-height: 2.25rem;
}
.portal-mform .portal-chipgroup .fitem .form-check:has(input:checked) {
  background: rgba(14, 124, 123, 0.12);
  border-color: var(--portal-accent);
}
.portal-mform .portal-chipgroup .fitem .form-check:has(input:focus-visible) {
  outline: 2px solid var(--portal-accent);
  outline-offset: 2px;
}

/* Düğmeler */
.portal-mform input[type="submit"],
.portal-mform button[type="submit"] {
  min-height: var(--portal-touch);
  padding: 0.5rem 1.25rem;
  border-radius: var(--portal-radius);
  border: 1px solid var(--portal-accent);
  background: var(--portal-accent);
  color: #fff;
  font-weight: 600;
  cursor: pointer;
}
.portal-mform input[type="submit"]:hover { background: var(--portal-accent-dark); }
.portal-mform input[name="cancel"],
.portal-mform input.btn-cancel,
.portal-mform input[type="submit"].btn-secondary {
  background: transparent;
  color: var(--portal-muted);
  border-color: var(--portal-line);
}
.portal-mform .btn-primary { background: var(--portal-accent); border-color: var(--portal-accent); }
.portal-mform .btn-secondary { background: transparent; color: var(--portal-ink); border-color: var(--portal-line); }

.portal-mform-status {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.75rem 0.9rem;
  border-radius: var(--portal-radius);
  background: rgba(14, 124, 123, 0.08);
  color: var(--portal-ink);
}
.portal-mform-status::before {
  content: "";
  flex: 0 0 auto;
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 50%;
  background: var(--portal-accent);
  animation: portal-dash-pulse 1.6s ease-in-out infinite;
}
.portal-mform-status.is-error {
  background: rgba(179, 58, 58, 0.1);
  color: var(--portal-danger);
}
.portal-mform-status.is-error::before { background: var(--portal-danger); animation: none; }

/* İlerleme şeridi (progress_steps) */
.portal-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  list-style: none;
  margin: 0 0 1rem;
  padding: 0;
}
.portal-steps > li { margin: 0; }
.portal-step-num { font-weight: 700; }
.portal-steps .portal-chip.is-active .portal-chip-icon { animation: portal-dash-pulse 1.6s ease-in-out infinite; }

@media (max-width: 900px) {
  .portal-mform-layout { grid-template-columns: minmax(0, 1fr); }
  .portal-mform-summary { display: none; }
  .portal-mform-bar {
    display: flex;
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 90;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    /* Target ≤ 76px with one button row (status empty). */
    padding: 0.45rem 0.75rem calc(0.45rem + env(safe-area-inset-bottom));
    background: var(--portal-card);
    border-top: 1px solid var(--portal-line);
  }
  /* Summary line yields space to the two action buttons on phones. */
  .portal-mform-bar:has(.portal-mform-bar-actions) .portal-mform-bar-text {
    display: none;
  }
  .portal-mform-bar-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.85rem;
    color: var(--portal-muted);
  }
  .portal-mform-bar-actions {
    max-width: none;
    width: 100%;
  }
  .portal-mform-page #page-content { padding-bottom: 5rem; }
}

@media (max-width: 640px) {
  .portal-mform fieldset { padding: 0.75rem; }
  .portal-mform input[type="text"],
  .portal-mform input[type="number"],
  .portal-mform select,
  .portal-mform textarea { width: 100%; max-width: 100%; }
  .portal-mform-row { grid-template-columns: minmax(0, 1fr); }
  .portal-mform-dependent { margin-left: 0.5rem; }
}

/* ---- Düzeltme 1 (madde 5–9) ---- */

/* 5. Etiket, alan ve yardım metni aynı sol hizada (≥900px'te kalan .col-md-3 / .felement girintisi sıfırlanır). */
.portal-mform .fitem,
.portal-mform .fitem > *,
.portal-mform .fitem .felement,
.portal-mform .fitem .fitemtitle,
.portal-mform .fitem label,
.portal-mform .fcontainer,
.portal-mform .fcontainer > * {
  padding-left: 0 !important;
  margin-left: 0 !important;
}
.portal-mform .fitem [class*="col-md-"] {
  flex: 0 0 100%;
  max-width: 100%;
  width: 100%;
}
.portal-mform .portal-mform-dependent {
  margin-left: 1.5rem !important;
  padding-left: 0.85rem !important;
}

/* 6. Onay kutuları: kutu + metin arası 0.5rem, dikey ortalı, tıklama alanı ≥ 2.75rem. */
.portal-mform .form-check {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  padding-left: 0 !important;
  margin: 0;
}
.portal-mform .form-check .form-check-input,
.portal-mform .form-check input[type="checkbox"] {
  position: static;
  float: none;
  flex: 0 0 auto;
  margin: 0 !important;
}
.portal-mform .form-check label,
.portal-mform .form-check .form-check-label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  margin: 0;
  padding: 0;
  font-weight: 500;
  cursor: pointer;
}
.portal-mform .portal-chipgroup .fitem .form-check { min-height: 2.75rem; padding: 0.35rem 0.8rem !important; }

/* 7. Katlama durumu: "Gelişmiş" dışındaki gruplar hep açık, oku gizli; "Gelişmiş" kapalı başlar, oku çalışır. */
.portal-mform fieldset:not([id$="advancedheader"]) .icons-collapse-expand,
.portal-mform fieldset:not([id$="advancedheader"]) .collapsible-actions {
  display: none !important;
}
.portal-mform fieldset:not([id$="advancedheader"]) .fcontainer.collapse:not(.show) {
  display: block;
}

/* 8. Tek birincil düğme: formun kendi gönder/iptal satırı gizli (özet paneli ya da alt çubuk aynı formu `form=` ile gönderir).
   Yalnız özet paneli olan sayfalarda (kod lab adım C kendi düğmelerini korur). */
.portal-mform-layout:not(.is-single) form.portal-mform [id^="fgroup_id_buttonar"],
.portal-mform-layout:not(.is-single) form.portal-mform .fitem:has(#id_submitbutton) {
  display: none !important;
}

/* 9. Seçim kutuları: tek başına en az 14rem; yan yana satırlarda eşit sütun. */
.portal-mform select,
.portal-mform .custom-select,
.portal-mform .form-select {
  width: auto;
  min-width: min(14rem, 100%);
  max-width: 100%;
}
.portal-mform .portal-mform-row select,
.portal-mform .portal-mform-row .custom-select,
.portal-mform .portal-mform-row input[type="number"],
.portal-mform .portal-mform-row input[type="text"],
#page-local-soruhazirla-index #id_batchesheader select {
  width: 100%;
  min-width: 0;
}
.portal-mform-row { grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); }

/* Soru Hazırlayıcı: "Kategori + tip + adet" satırları yan yana (üç alan = bir satır). */
#page-local-soruhazirla-index #id_basicsheader { background: rgba(14, 124, 123, 0.04); }
#page-local-soruhazirla-index #id_batchesheader { background: rgba(244, 162, 97, 0.07); }
#page-local-soruhazirla-index #id_batchesheader .fcontainer {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 2fr) minmax(6rem, 1fr);
  gap: 0 0.85rem;
}
@media (min-width: 900px) {
  /* Kategori kendi satırında; Tip + Adet alt satırda. Bir soru satırının üç alanı bir arada, satırlar arası boşluk belirgin. */
  #page-local-soruhazirla-index #id_batchesheader .fcontainer { grid-template-columns: minmax(0, 2fr) minmax(6rem, 1fr); }
  #page-local-soruhazirla-index #id_batchesheader .fcontainer > [id^="fitem_id_batchcategory"] { grid-column: 1 / -1; margin-top: 0.9rem; }
  #page-local-soruhazirla-index #id_batchesheader .fcontainer > [id^="fitem_id_batchcategory"],
  #page-local-soruhazirla-index #id_batchesheader .fcontainer > [id^="fitem_id_batchqtype"],
  #page-local-soruhazirla-index #id_batchesheader .fcontainer > [id^="fitem_id_batchcount"] { margin-bottom: 0.25rem; }
}
#page-local-soruhazirla-index #id_batchesheader .fcontainer > .fitem { margin-bottom: 0.6rem; min-width: 0; }
#page-local-soruhazirla-index #id_batchesheader .fcontainer > #fitem_id_batcheshelp,
#page-local-soruhazirla-index #id_batchesheader .fcontainer > #fitem_id_batch_add,
#page-local-soruhazirla-index #id_batchesheader .fcontainer > .fitem:not([id^="fitem_id_batch"]) {
  grid-column: 1 / -1;
}
#page-local-soruhazirla-index #id_batchesheader select { width: 100%; min-width: 0; }
@media (max-width: 640px) {
  #page-local-soruhazirla-index #id_batchesheader .fcontainer { grid-template-columns: minmax(0, 1fr); }
}
.portal-mform-preview { white-space: pre-wrap; max-height: 180px; overflow: auto; background: var(--portal-surface); padding: 0.75rem; border-radius: 8px; }
.portal-mform-results { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.4rem; }

/* ==========================================================================
   Sınav genel bakış (/mod/quiz/view.php) — body.portal-quiz-view
   ========================================================================== */
.portal-quiz-view-wrap { max-width: 760px; margin: 0 auto 1rem; }
.portal-quiz-head { margin-bottom: 0.75rem; }
.portal-quiz-title {
  font-family: var(--portal-font);
  font-size: 1.6rem;
  margin: 0.15rem 0 0.6rem;
  color: var(--portal-ink);
}
.portal-quiz-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.9rem; }
/* Yalnız durum chip'i ikonlu; süre / deneme / soru / puan düz metin ("· 20 dk" olmaz). */
.portal-quiz-chips .portal-chip-muted .portal-chip-icon { display: none; }
.portal-quiz-notes { margin-top: 0.4rem; }
.portal-quiz-notes p { margin: 0.15rem 0 0; }
.portal-quiz-notes:empty { display: none; }
.portal-quiz-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--portal-line);
}
.portal-quiz-core-form { display: contents; }
.portal-quiz-core-form .quizstartbuttondiv,
.portal-quiz-core-form .quizstartbuttondiv form { display: inline-block; margin: 0; }
.portal-quiz-core-form .quizstartbuttondiv button,
.portal-quiz-core-form .quizstartbuttondiv input[type="submit"] {
  min-height: var(--portal-touch);
  padding: 0.5rem 1.25rem;
  border-radius: var(--portal-radius);
  font-weight: 600;
  cursor: pointer;
}
.portal-quiz-core-form .quizstartbuttondiv button.portal-btn,
.portal-quiz-core-form .quizstartbuttondiv input.portal-btn {
  border: 1px solid var(--portal-accent);
  background: var(--portal-accent);
  color: #fff;
}
.portal-quiz-core-form .quizstartbuttondiv button.portal-btn-secondary,
.portal-quiz-core-form .quizstartbuttondiv input.portal-btn-secondary {
  /* `button.portal-btn-secondary` (genel kural) !important beyaz yazı verir; "Sonuçlar" ile aynı görünüm için ezilir. */
  border: 1px solid var(--portal-line);
  background: transparent;
  color: var(--portal-ink) !important;
}
.portal-quiz-core-form .quizstartbuttondiv button.portal-btn-secondary:hover,
.portal-quiz-core-form .quizstartbuttondiv input.portal-btn-secondary:hover {
  background: rgba(20, 33, 61, 0.05);
  color: var(--portal-ink) !important;
  filter: none;
}
.portal-quiz-view-wrap .portal-tiles { margin-bottom: 0.75rem; }

/* Stok Moodle parçalarını gizle (kendi karşılıkları başlık kartında). */
body.portal-quiz-view .tertiary-navigation,
body.portal-quiz-view .activity-header,
body.portal-quiz-view #page-header,
body.portal-quiz-view .quizinfo,
body.portal-quiz-view .quizattemptcounts,
body.portal-quiz-view .continuebutton,
body.portal-quiz-view .quizattempt .continuebutton,
body.portal-quiz-view .overriddennotice,
body.portal-quiz-view .quizattempt > p,
body.portal-quiz-view .quizattempt > .text-start,
body.portal-quiz-view [data-portal-quiz-hidden],
body.portal-quiz-view [role="main"] > h2:first-child,
body.portal-quiz-view [role="main"] > h3:not(.portal-card-title) {
  display: none !important;
}
body.portal-quiz-view #page-content { max-width: 800px; margin: 0 auto; }
body.portal-quiz-view .portal-quiz-view-wrap { max-width: none; }

/* Deneme listesi: .portal-table görünümü; geri bildirim yeşil çerçeve. */
body.portal-quiz-view .portal-quiz-attempts { margin-bottom: 0.75rem; }
body.portal-quiz-view table.quizattemptsummary { width: 100%; border: 0; }
body.portal-quiz-view table.quizattemptsummary th,
body.portal-quiz-view table.quizattemptsummary td {
  border: 0;
  border-bottom: 1px solid var(--portal-line);
  padding: 0.55rem 0.5rem;
  background: transparent;
}
body.portal-quiz-view table.quizattemptsummary th {
  color: var(--portal-muted);
  font-weight: 600;
  font-size: 0.8rem;
}
body.portal-quiz-view .quizgradefeedback,
body.portal-quiz-view .quizteacherfeedback,
body.portal-quiz-view .overriddennotice {
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  background: rgba(42, 122, 75, 0.07);
  padding: 0.75rem 1rem;
  margin: 0 0 0.75rem;
}
body.portal-quiz-view .quizaccessmessages {
  color: var(--portal-muted);
  font-size: 0.9rem;
}
@media (max-width: 640px) {
  .portal-quiz-actions { flex-direction: column; align-items: stretch; }
  .portal-quiz-actions .portal-btn,
  .portal-quiz-actions .portal-btn-secondary,
  .portal-quiz-core-form .quizstartbuttondiv,
  .portal-quiz-core-form .quizstartbuttondiv form,
  .portal-quiz-core-form .quizstartbuttondiv button { display: block; width: 100%; text-align: center; box-sizing: border-box; }
  body.portal-quiz-view table.quizattemptsummary thead { display: none; }
  body.portal-quiz-view table.quizattemptsummary tr { display: block; padding: 0.4rem 0; border-bottom: 1px solid var(--portal-line); }
  body.portal-quiz-view table.quizattemptsummary td,
  body.portal-quiz-view table.quizattemptsummary th { display: flex; justify-content: space-between; gap: 1rem; border: 0; padding: 0.2rem 0.25rem; }
  body.portal-quiz-view table.quizattemptsummary td::before,
  body.portal-quiz-view table.quizattemptsummary th::before { content: attr(data-label); color: var(--portal-muted); font-size: 0.8rem; }
}

/* Çekirdek zaman sınırı onay penceresi (mod_quiz/preflightcheck, YUI M.core.dialogue) — yalnız CSS, şablon/JS çekirdekte kalır. */
body.portal-quiz-view .mod_quiz_preflight_popup,
body.portal-quiz-view .mod_quiz_preflight_popup .moodle-dialogue-wrap {
  border-radius: 10px;
}
body.portal-quiz-view .mod_quiz_preflight_popup .moodle-dialogue-wrap { overflow: hidden; }
body.portal-quiz-view .mod_quiz_preflight_popup .moodle-dialogue-hd {
  font-family: var(--portal-font);
  font-weight: 650;
}
body.portal-quiz-view .mod_quiz_preflight_popup .col-md-3 { display: none; }
body.portal-quiz-view .mod_quiz_preflight_popup .col-md-9 { flex: 0 0 100%; max-width: 100%; }
body.portal-quiz-view .mod_quiz_preflight_popup #id_submitbutton,
body.portal-quiz-view .mod_quiz_preflight_popup #id_cancel {
  min-height: 2.75rem;
  padding: 0.5rem 1rem;
  border-radius: var(--portal-radius, 10px);
  font-size: max(0.875rem, var(--portal-text, 1rem));
}
body.portal-quiz-view .mod_quiz_preflight_popup #id_submitbutton {
  border: 1px solid var(--portal-accent);
  background: var(--portal-accent);
  color: #fff;
}
body.portal-quiz-view .mod_quiz_preflight_popup #id_submitbutton:hover { filter: brightness(1.05); }
body.portal-quiz-view .mod_quiz_preflight_popup #id_cancel {
  border: 1px solid var(--portal-line);
  background: transparent;
  color: var(--portal-ink);
}

/* Kiosk üst şeridi dar ekranda (≤ 767 px): ders adı 2 satıra sarar, "geri" bağlantısı tek satır kalır. */
@media (max-width: 767px) {
  body.portal-kiosk-active .portal-kiosk-back { padding: 0.45rem 0.75rem; align-items: flex-start; }
  body.portal-kiosk-active .portal-kiosk-back > :last-child {
    white-space: normal;
    text-align: right;
    min-width: 0;
  }
  body.portal-kiosk-active .portal-kiosk-back h1 {
    margin: 0;
    font-size: 1.1rem;
    line-height: 1.2;
    text-align: right;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
    overflow-wrap: anywhere;
  }
  body.portal-kiosk-active .portal-kiosk-back a { white-space: nowrap; font-size: 0.85rem; }
}

/* Satisfaction prompt (plain form, no JS). */
.portal-feedback-card .portal-feedback-scores {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin: 0.75rem 0;
}
.portal-feedback-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.75rem;
}

/* ==========================================================================
   Portal kaplaması — çekirdek Moodle sayfaları (body.portal-skin)
   Moodle 4.5 (Bootstrap 4) ve 5.0 (Bootstrap 5) için çift seçici. Yalnız görünüm; düzen/davranış değişmez.
   /admin/ ağacı ve /local/portal/ sayfaları kaplanmaz (hook_callbacks::apply_skin).
   ========================================================================== */
body.portal-skin {
  background: var(--portal-surface);
  color: var(--portal-ink);
  font-family: var(--portal-sans);
}
body.portal-skin h1, body.portal-skin h2, body.portal-skin h3, body.portal-skin h4,
body.portal-skin .h1, body.portal-skin .h2, body.portal-skin .h3, body.portal-skin .h4,
body.portal-skin legend, body.portal-skin .modal-title, body.portal-skin .card-title {
  font-family: var(--portal-font);
  color: var(--portal-ink);
  letter-spacing: -0.01em;
}
body.portal-skin a:not(.btn):not(.portal-btn):not(.nav-link):not(.dropdown-item):not(.page-link):not(.list-group-item) {
  color: var(--portal-accent);
}
body.portal-skin a:not(.btn):not(.nav-link):hover { color: var(--portal-accent-dark); }
body.portal-skin :focus-visible { outline: 2px solid var(--portal-accent); outline-offset: 2px; }
body.portal-skin .text-muted, body.portal-skin .text-body-secondary { color: var(--portal-muted) !important; /* BS !important */ }

/* Düğmeler */
body.portal-skin .btn {
  min-height: var(--portal-touch);
  border-radius: var(--portal-radius);
  font-size: max(0.875rem, var(--portal-text));
  padding: 0.5rem 1rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  box-shadow: none;
}
body.portal-skin .btn-sm, body.portal-skin .btn-group-sm > .btn { min-height: 2.25rem; padding: 0.3rem 0.75rem; }
body.portal-skin .btn-primary {
  background: var(--portal-accent);
  border-color: var(--portal-accent);
  color: #fff;
}
body.portal-skin .btn-primary:hover, body.portal-skin .btn-primary:focus,
body.portal-skin .btn-primary:active, body.portal-skin .btn-primary.active {
  background: var(--portal-accent-dark);
  border-color: var(--portal-accent-dark);
  color: #fff;
}
body.portal-skin .btn-secondary, body.portal-skin [class*="btn-outline-"] {
  background: transparent;
  color: var(--portal-ink);
  border-color: var(--portal-line);
}
body.portal-skin .btn-secondary:hover, body.portal-skin [class*="btn-outline-"]:hover,
body.portal-skin .btn-secondary:focus, body.portal-skin [class*="btn-outline-"]:focus,
body.portal-skin .btn-secondary:active, body.portal-skin [class*="btn-outline-"]:active {
  background: rgba(20, 33, 61, 0.06);
  color: var(--portal-ink);
  border-color: var(--portal-line);
}
body.portal-skin .btn-danger, body.portal-skin .btn-outline-danger:hover {
  background: var(--portal-danger);
  border-color: var(--portal-danger);
  color: #fff;
}
body.portal-skin .btn-outline-danger { color: var(--portal-danger); }
body.portal-skin .btn-link { color: var(--portal-accent); text-decoration: none; }
body.portal-skin .btn:focus-visible, body.portal-skin .btn.focus {
  outline: 2px solid var(--portal-accent);
  outline-offset: 2px;
  box-shadow: none;
}

/* Genel mform (portal-mform olmayan formlar) */
body.portal-skin form.mform:not(.portal-mform) { max-width: 62rem; }
body.portal-skin form.mform:not(.portal-mform) fieldset {
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  background: var(--portal-card);
  padding: 0.9rem 1rem 1rem;
  margin: 0 0 1rem;
  min-width: 0;
}
body.portal-skin form.mform:not(.portal-mform) legend {
  float: none;
  width: auto;
  padding: 0;
  margin: 0 0 0.5rem;
  font-size: 1rem;
  font-weight: 650;
  border: 0;
}
body.portal-skin form.mform:not(.portal-mform) legend a { color: var(--portal-ink); text-decoration: none; }
/* Etiket alanın üstünde; sütun ızgarası iptal. */
body.portal-skin form.mform:not(.portal-mform) .fitem.row,
body.portal-skin form.mform:not(.portal-mform) .form-group.row,
body.portal-skin form.mform:not(.portal-mform) .fitem {
  display: block;
  margin: 0 0 0.85rem;
}
body.portal-skin form.mform:not(.portal-mform) .fitem > [class*="col-"] {
  flex: none;
  width: 100%;
  max-width: 100%;
  padding-left: 0;
  padding-right: 0;
}
body.portal-skin form.mform:not(.portal-mform) .col-form-label,
body.portal-skin form.mform:not(.portal-mform) .fitem > [class*="col-md-3"] label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  padding: 0 0 0.25rem;
  text-align: left;
}
/* Sade zorunlu işareti: kırmızı "!" küçük ve soluk; "?" yardım simgesi küçük ve soluk. */
body.portal-skin form.mform .form-label-addon .text-danger,
body.portal-skin form.mform .form-label-addon .icon,
body.portal-skin form.mform .fdescription.required,
body.portal-skin form.mform .req {
  color: var(--portal-danger);
  font-size: 0.7rem;
  opacity: 0.65;
}
body.portal-skin form.mform .btn-link[data-toggle="popover"],
body.portal-skin form.mform .btn-link[data-bs-toggle="popover"],
body.portal-skin form.mform a.btn.btn-link.p-0 {
  min-height: 0;
  padding: 0 0.25rem !important; /* BS .p-0 !important */
  opacity: 0.55;
}
body.portal-skin form.mform .btn-link[data-toggle="popover"] .icon,
body.portal-skin form.mform .btn-link[data-bs-toggle="popover"] .icon {
  width: 0.85rem;
  height: 0.85rem;
  font-size: 0.85rem;
  margin: 0;
}
/* "Tümünü genişlet/daralt": sade bağlantı. */
body.portal-skin .collapsible-actions .collapseexpand,
body.portal-skin .collapsible-actions a {
  font-size: 0.82rem;
  background: none;
  border: 0;
  color: var(--portal-accent);
  text-decoration: underline;
  min-height: 0;
  padding: 0;
}
/* Girdi alanları */
body.portal-skin .form-control, body.portal-skin .custom-select, body.portal-skin .form-select,
body.portal-skin input[type="text"], body.portal-skin input[type="password"], body.portal-skin input[type="email"],
body.portal-skin input[type="number"], body.portal-skin input[type="url"], body.portal-skin textarea,
body.portal-skin select {
  font: inherit;
  color: var(--portal-ink);
  min-height: var(--portal-touch);
  border: 1px solid var(--portal-line);
  border-radius: 8px;
  background-color: #fff;
}
body.portal-skin textarea.form-control, body.portal-skin textarea { min-height: 6rem; }
body.portal-skin .form-control:focus, body.portal-skin .custom-select:focus, body.portal-skin .form-select:focus {
  border-color: var(--portal-accent);
  box-shadow: 0 0 0 2px rgba(14, 124, 123, 0.2);
}
body.portal-skin input[type="checkbox"], body.portal-skin input[type="radio"] { accent-color: var(--portal-accent); }
body.portal-skin .form-check-input:checked, body.portal-skin .custom-control-input:checked ~ .custom-control-label::before {
  background-color: var(--portal-accent);
  border-color: var(--portal-accent);
}
/* Hata metni */
body.portal-skin form.mform .invalid-feedback, body.portal-skin form.mform .form-control-feedback,
body.portal-skin form.mform .felement .error, body.portal-skin form.mform .form-inline .error {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.82rem;
  color: var(--portal-danger);
}
body.portal-skin form.mform .is-invalid, body.portal-skin form.mform .has-danger .form-control {
  border-color: var(--portal-danger);
}
/* Eylem düğmeleri: kaydet birincil, iptal ikincil */
body.portal-skin #id_submitbutton, body.portal-skin #id_submitbutton2 { background: var(--portal-accent); border-color: var(--portal-accent); color: #fff; }
body.portal-skin #id_cancel, body.portal-skin #id_cancel2 {
  background: transparent;
  color: var(--portal-ink);
  border-color: var(--portal-line);
}
/* Düzenleyici ve dosya seçici kutuları */
body.portal-skin .editor_atto, body.portal-skin .tox-tinymce, body.portal-skin .filemanager,
body.portal-skin .fp-content, body.portal-skin .filepicker-filelist {
  border-radius: 10px;
}
body.portal-skin .tox-tinymce, body.portal-skin .editor_atto { border-color: var(--portal-line); overflow: hidden; }

/* Tablolar: .portal-table görünümü, zebra yok */
body.portal-skin table.generaltable, body.portal-skin table.flexible, body.portal-skin table.table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
  background: transparent;
}
body.portal-skin table.generaltable th, body.portal-skin table.generaltable td,
body.portal-skin table.flexible th, body.portal-skin table.flexible td,
body.portal-skin table.table th, body.portal-skin table.table td {
  padding: 0.55rem 0.5rem;
  border-top: 0;
  border-bottom: 1px solid var(--portal-line);
  vertical-align: top;
  background-color: transparent;
}
body.portal-skin table.generaltable th, body.portal-skin table.flexible th, body.portal-skin table.table thead th {
  color: var(--portal-muted);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.04em;
  border-bottom: 1px solid var(--portal-line);
}
body.portal-skin table.generaltable tbody tr:nth-of-type(odd),
body.portal-skin table.flexible tbody tr:nth-of-type(odd),
body.portal-skin table.table-striped tbody tr:nth-of-type(odd) { background-color: transparent; --bs-table-accent-bg: transparent; /* BS5 zebra değişkeni */ }
body.portal-skin table.generaltable tbody tr:hover, body.portal-skin table.flexible tbody tr:hover { background: rgba(14, 124, 123, 0.04); }

/* Uyarılar: .portal-notice tonları */
body.portal-skin .alert, body.portal-skin .notifyproblem, body.portal-skin .notifysuccess,
body.portal-skin .notifymessage, body.portal-skin .notifynotice, body.portal-skin .errorbox,
body.portal-skin .box.errorbox {
  padding: 0.75rem 1rem;
  border-radius: var(--portal-radius);
  border: 1px solid rgba(14, 124, 123, 0.22);
  background: rgba(14, 124, 123, 0.08);
  color: var(--portal-ink);
  font-size: var(--portal-text);
}
body.portal-skin .alert-danger, body.portal-skin .notifyproblem, body.portal-skin .errorbox {
  background: rgba(179, 58, 58, 0.08);
  border-color: rgba(179, 58, 58, 0.3);
  color: var(--portal-danger);
}
body.portal-skin .alert-warning {
  background: rgba(166, 124, 45, 0.12);
  border-color: rgba(166, 124, 45, 0.35);
  color: var(--portal-ink);
}
body.portal-skin .alert-success, body.portal-skin .notifysuccess {
  background: rgba(42, 122, 75, 0.1);
  border-color: rgba(42, 122, 75, 0.28);
  color: var(--portal-ok);
}
body.portal-skin .alert-info, body.portal-skin .notifymessage { color: var(--portal-ink); }
body.portal-skin .alert a { text-decoration: underline; }

/* Sekmeler (karar 3): alt çizgili, vurgu rengi; telefonda yatay kaydırmalı tek satır */
body.portal-skin .nav-tabs, body.portal-skin .nav-pills {
  display: flex;
  flex-wrap: nowrap;
  gap: 0.25rem 1rem;
  border: 0;
  border-bottom: 1px solid var(--portal-line);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  margin-bottom: 1rem;
}
body.portal-skin .nav-tabs .nav-link, body.portal-skin .nav-pills .nav-link,
body.portal-skin .secondary-navigation .nav-link {
  flex: 0 0 auto;
  white-space: nowrap;
  min-height: var(--portal-touch);
  display: inline-flex;
  align-items: center;
  padding: 0.4rem 0.15rem;
  color: var(--portal-muted);
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  margin-bottom: -1px;
}
body.portal-skin .nav-tabs .nav-link:hover, body.portal-skin .nav-pills .nav-link:hover,
body.portal-skin .secondary-navigation .nav-link:hover { color: var(--portal-accent); border-bottom-color: var(--portal-line); }
body.portal-skin .nav-tabs .nav-link.active, body.portal-skin .nav-pills .nav-link.active,
body.portal-skin .nav-tabs .nav-item.show .nav-link, body.portal-skin .nav-pills .show > .nav-link,
body.portal-skin .secondary-navigation .nav-link.active,
body.portal-skin .nav-tabs .nav-link[aria-current], body.portal-skin .nav-pills .nav-link[aria-current] {
  color: var(--portal-accent);
  background: transparent;
  border-bottom-color: var(--portal-accent);
  font-weight: 600;
}

/* Kartlar, liste grupları, rozetler */
body.portal-skin .card {
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  background: var(--portal-card);
  box-shadow: 0 1px 0 rgba(20, 33, 61, 0.04);
}
body.portal-skin .card-header { background: transparent; border-bottom: 1px solid var(--portal-line); }
body.portal-skin .list-group-item { border-color: var(--portal-line); background: transparent; }
body.portal-skin .list-group-item.active { background: rgba(14, 124, 123, 0.1); border-color: var(--portal-line); color: var(--portal-ink); }
body.portal-skin .badge {
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.2rem 0.55rem;
  background: rgba(20, 33, 61, 0.08);
  color: var(--portal-ink);
}
body.portal-skin .badge-primary, body.portal-skin .badge-success, body.portal-skin .badge-info,
body.portal-skin .text-bg-primary, body.portal-skin .text-bg-success, body.portal-skin .text-bg-info,
body.portal-skin .badge.bg-primary, body.portal-skin .badge.bg-success, body.portal-skin .badge.bg-info {
  background: rgba(14, 124, 123, 0.12) !important; /* BS5 .text-bg-*, .bg-* !important */
  color: var(--portal-accent) !important;
}
body.portal-skin .badge-danger, body.portal-skin .text-bg-danger, body.portal-skin .badge.bg-danger {
  background: rgba(179, 58, 58, 0.1) !important; /* BS5 !important */
  color: var(--portal-danger) !important;
}
body.portal-skin .badge-warning, body.portal-skin .text-bg-warning, body.portal-skin .badge.bg-warning {
  background: rgba(166, 124, 45, 0.14) !important; /* BS5 !important */
  color: var(--portal-warn) !important;
}
/* Açılır menüler, sayfalama, ilerleme çubuğu */
body.portal-skin .dropdown-menu {
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(20, 33, 61, 0.12);
}
body.portal-skin .dropdown-item { min-height: 2.25rem; display: flex; align-items: center; }
body.portal-skin .dropdown-item:hover, body.portal-skin .dropdown-item:focus { background: rgba(14, 124, 123, 0.08); color: var(--portal-ink); }
body.portal-skin .dropdown-item.active, body.portal-skin .dropdown-item:active { background: rgba(14, 124, 123, 0.14); color: var(--portal-ink); }
body.portal-skin .page-link { color: var(--portal-accent); border-color: var(--portal-line); min-width: 2.25rem; text-align: center; }
body.portal-skin .page-item.active .page-link { background: var(--portal-accent); border-color: var(--portal-accent); color: #fff; }
body.portal-skin .progress { height: 0.6rem; border-radius: 999px; background: rgba(20, 33, 61, 0.08); }
body.portal-skin .progress-bar { background: var(--portal-accent); }

/* Pencereler: Bootstrap .modal + YUI .moodle-dialogue */
body.portal-skin .modal-content, body.portal-skin .moodle-dialogue-base .moodle-dialogue-wrap {
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  box-shadow: 0 16px 48px rgba(20, 33, 61, 0.2);
}
body.portal-skin .modal-header, body.portal-skin .moodle-dialogue-base .moodle-dialogue-hd {
  border-bottom: 1px solid var(--portal-line);
  background: transparent;
  font-family: var(--portal-font);
  color: var(--portal-ink);
  border-radius: 10px 10px 0 0;
}
body.portal-skin .modal-footer, body.portal-skin .moodle-dialogue-base .moodle-dialogue-ft { border-top: 1px solid var(--portal-line); background: transparent; }
body.portal-skin .moodle-dialogue-base .moodle-dialogue-ft input[type="submit"],
body.portal-skin .moodle-dialogue-base .moodle-dialogue-ft button {
  min-height: var(--portal-touch);
  border-radius: var(--portal-radius);
  border: 1px solid var(--portal-line);
  background: transparent;
  color: var(--portal-ink);
  padding: 0.5rem 1rem;
}
body.portal-skin .moodle-dialogue-base .moodle-dialogue-ft .btn-primary,
body.portal-skin .moodle-dialogue-base .moodle-dialogue-ft input[type="submit"].btn-primary {
  background: var(--portal-accent);
  border-color: var(--portal-accent);
  color: #fff;
}
body.portal-skin .close, body.portal-skin .btn-close { opacity: 0.6; }
/* Araç ipucu ve popover */
body.portal-skin .tooltip-inner { background: var(--portal-ink); border-radius: 8px; font-size: 0.8rem; }
body.portal-skin .popover { border: 1px solid var(--portal-line); border-radius: 10px; box-shadow: 0 8px 24px rgba(20, 33, 61, 0.14); }
body.portal-skin .popover-header { background: transparent; font-family: var(--portal-font); border-bottom: 1px solid var(--portal-line); }
/* Ekmek kırıntısı */
body.portal-skin .breadcrumb { background: transparent; padding: 0; font-size: 0.8rem; color: var(--portal-muted); }
body.portal-skin .breadcrumb a { color: var(--portal-muted); }

/* --------------------------------------------------------------------------
   Tam Boost kabuğu (body.portal-skin-chrome): quiz düzenle/rapor, soru bankası, yedekleme,
   tercihler, profil. Düzen değişmez; Boost gezinmesi gizlenir, portal şeridi (hook) görünür.
   -------------------------------------------------------------------------- */
body.portal-skin-chrome { --portal-chrome-h: 3rem; }
/* Üst çubuk: portal lacivert şerit; yalnız kullanıcı menüsü ve bildirimler sağda kalır. */
body.portal-skin-chrome nav.navbar.fixed-top {
  background: var(--portal-ink);
  border-bottom: 0;
  height: var(--portal-chrome-h);
  min-height: var(--portal-chrome-h);
  padding-top: 0;
  padding-bottom: 0;
  box-shadow: none;
}
body.portal-skin-chrome nav.navbar .navbar-brand,
body.portal-skin-chrome nav.navbar .primary-navigation,
body.portal-skin-chrome nav.navbar .navbar-toggler,
/* Ana sayfa / Kontrol paneli / Kurslarım, çekmece düğmeleri, ders dizini ve blok çekmecesi,
   "Düzenleme modu" anahtarı ve alt bilgi "?" balonu: portal şeridi bunların yerini alır. */
body.portal-skin-chrome .drawer,
body.portal-skin-chrome .drawer-toggles,
body.portal-skin-chrome .drawer-toggler,
body.portal-skin-chrome [data-region="drawer-toggler"],
body.portal-skin-chrome .editmode-switch-form,
body.portal-skin-chrome .btn-footer-popover,
body.portal-skin-chrome [data-region="footer-container-popover"] {
  display: none !important; /* Boost bunları .d-flex/.d-block (!important) ile gösterir */
}
body.portal-skin-chrome nav.navbar .divider { display: none; }
body.portal-skin-chrome nav.navbar .navbar-nav { margin-left: auto; margin-right: 0; }
body.portal-skin-chrome nav.navbar .nav-link,
body.portal-skin-chrome nav.navbar .popover-region-toggle,
body.portal-skin-chrome nav.navbar .usermenu .login,
body.portal-skin-chrome nav.navbar .icon { color: rgba(255, 255, 255, 0.88); }
body.portal-skin-chrome nav.navbar .nav-link:hover { color: #fff; }
body.portal-skin-chrome nav.navbar .dropdown-menu .icon,
body.portal-skin-chrome nav.navbar .dropdown-menu .dropdown-item { color: var(--portal-ink); }
/* Geri şeridi (hook): navbar'ın sol yanında, kullanıcı menüsüne yer bırakır. */
body.portal-skin-chrome .portal-chrome-back {
  position: fixed;
  top: 0;
  left: 0;
  right: 12rem;
  height: var(--portal-chrome-h);
  z-index: 1031; /* Boost .fixed-top 1030 */
  padding: 0 1rem;
  box-sizing: border-box;
}
/* İçerik tam genişlik, ortalı; çekmece açık durumundan kalan kenar boşlukları sıfır. */
body.portal-skin-chrome #page.drawers,
body.portal-skin-chrome #page {
  margin-top: var(--portal-chrome-h);
  margin-left: 0 !important; /* .show-drawer-left/.drawer-open-left kalıntısı */
  margin-right: 0 !important;
  padding-left: 0;
  padding-right: 0;
}
body.portal-skin-chrome #topofscroll,
body.portal-skin-chrome #page.drawers > .main-inner,
body.portal-skin-chrome .main-inner {
  max-width: 72rem;
  margin: 0 auto;
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
/* İkincil gezinme (Sınav / Ayarlar / Sorular / Sonuçlar / Soru bankası): sekme şeridi.
   Sığmayanı Boost moremenu.js toplar (sarılmaya bakarak); flex-wrap:nowrap koyma (Düzeltme 7 / A2). */
body.portal-skin-chrome .secondary-navigation { border-bottom: 1px solid var(--portal-line); margin-bottom: 1rem; background: transparent; }
body.portal-skin-chrome .secondary-navigation .navigation { border: 0; }
body.portal-skin-chrome .secondary-navigation .moremenu .nav { border: 0; margin: 0; }
body.portal-skin-chrome #page-footer { border-top: 1px solid var(--portal-line); background: transparent; color: var(--portal-muted); font-size: 0.8rem; }
body.portal-skin-chrome #page-header .page-context-header { margin-bottom: 0.5rem; }
@media (max-width: 575.98px) {
  body.portal-skin-chrome .portal-chrome-back { right: 8.5rem; padding: 0 0.6rem; }
  body.portal-skin-chrome #topofscroll, body.portal-skin-chrome .main-inner { padding-left: 0.75rem; padding-right: 0.75rem; }
}

/* --------------------------------------------------------------------------
   Sayfa ince işleri (A4) — yalnız CSS. Seçiciler 4.5 şablonlarından doğrulandı; 5.0.9 için aynı sınıf
   adları varsayıldı (question/engine, mod/quiz, mod/assign, backup: 5.0'da sınıf adları değişmedi).
   -------------------------------------------------------------------------- */

/* Giriş ailesi: kart, tam genişlik alan ve birincil düğme; hiçbir bölüm gizlenmez. */
body.portal-skin.pagelayout-login { background: var(--portal-surface); }
body.portal-skin.pagelayout-login .login-container,
body.portal-skin.pagelayout-login #region-main > .card,
body.portal-skin.pagelayout-login .box.generalbox {
  max-width: 28rem;
  margin: 1.5rem auto;
}
body.portal-skin.pagelayout-login .card,
body.portal-skin.pagelayout-login .box.errorbox,
body.portal-skin.pagelayout-login .box.generalbox,
body.portal-skin.pagelayout-login .login-container {
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  padding: 1.25rem;
  box-shadow: 0 1px 0 rgba(20, 33, 61, 0.04);
}
body.portal-skin.pagelayout-login .login-container .card { border: 0; padding: 0; box-shadow: none; background: transparent; }
body.portal-skin.pagelayout-login .login-heading, body.portal-skin.pagelayout-login .card-title,
body.portal-skin.pagelayout-login h1, body.portal-skin.pagelayout-login h2 {
  font-family: var(--portal-font);
  font-size: 1.5rem;
  font-weight: 700;
  text-align: center;
}
body.portal-skin.pagelayout-login .form-control,
body.portal-skin.pagelayout-login input[type="text"],
body.portal-skin.pagelayout-login input[type="password"],
body.portal-skin.pagelayout-login input[type="email"] { width: 100%; max-width: none; }
body.portal-skin.pagelayout-login #loginbtn,
body.portal-skin.pagelayout-login .btn-primary,
body.portal-skin.pagelayout-login input[type="submit"] { width: 100%; }
body.portal-skin.pagelayout-login .forgetpass { margin-top: 0.75rem; text-align: center; }
body.portal-skin.pagelayout-login .login-divider, body.portal-skin.pagelayout-login hr {
  border-top: 1px solid var(--portal-line);
  margin: 1rem 0;
}
body.portal-skin #page-login-forgot_password form.mform .fitem,
body.portal-skin #page-login-forgot_password form.mform .fitem.row { display: block; }
body.portal-skin #page-login-forgot_password form.mform input[type="text"],
body.portal-skin #page-login-forgot_password form.mform input[type="email"] { width: 100%; max-width: none; }

/* Sınav denemesi: soru kartı (hiçbir öğe gizlenmez, JS yok) */
body.portal-skin .que {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem;
  margin: 0 0 1.25rem;
  padding: 1rem 1.1rem;
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  box-shadow: 0 1px 0 rgba(20, 33, 61, 0.04);
}
body.portal-skin .que .info {
  flex: 0 0 9rem;
  max-width: 100%;
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
  font-size: 0.8rem;
  color: var(--portal-muted);
}
body.portal-skin .que .info .no { font-family: var(--portal-font); font-size: 1rem; color: var(--portal-ink); }
body.portal-skin .que .content { flex: 1 1 18rem; min-width: 0; }
body.portal-skin .que .qtext { font-size: 1.1rem; line-height: 1.5; margin-bottom: 0.75rem; }
body.portal-skin .que .answer > div, body.portal-skin .que .answer .form-check, body.portal-skin .que .answer .custom-control {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: var(--portal-touch);
  padding: 0.35rem 0.65rem;
  margin: 0 0 0.35rem;
  border: 1px solid var(--portal-line);
  border-radius: 8px;
  background: #fff;
}
body.portal-skin .que .answer > div > label, body.portal-skin .que .answer .form-check > label { margin: 0; flex: 1 1 auto; cursor: pointer; }
body.portal-skin .que .answer > div:has(input:checked) {
  background: rgba(14, 124, 123, 0.1);
  border-color: var(--portal-accent);
}
body.portal-skin .que .answer input[type="radio"], body.portal-skin .que .answer input[type="checkbox"] { flex: 0 0 auto; margin: 0; }
body.portal-skin .que .answer .r0.correct, body.portal-skin .que .answer .r1.correct { background: rgba(42, 122, 75, 0.1); border-color: rgba(42, 122, 75, 0.4); }
body.portal-skin .que .answer .r0.incorrect, body.portal-skin .que .answer .r1.incorrect { background: rgba(179, 58, 58, 0.08); border-color: rgba(179, 58, 58, 0.35); }
body.portal-skin .que .answer .r0.partiallycorrect, body.portal-skin .que .answer .r1.partiallycorrect { background: rgba(166, 124, 45, 0.12); border-color: rgba(166, 124, 45, 0.4); }
body.portal-skin .que .outcome, body.portal-skin .que .comment {
  background: rgba(20, 33, 61, 0.04);
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius);
  padding: 0.6rem 0.8rem;
  margin-top: 0.75rem;
  font-size: 0.92rem;
}
body.portal-skin .que.correct .outcome, body.portal-skin .que .specificfeedback.correct { background: rgba(42, 122, 75, 0.08); border-color: rgba(42, 122, 75, 0.3); }
body.portal-skin .que.incorrect .outcome { background: rgba(179, 58, 58, 0.06); border-color: rgba(179, 58, 58, 0.3); }
body.portal-skin .que.partiallycorrect .outcome { background: rgba(166, 124, 45, 0.1); border-color: rgba(166, 124, 45, 0.35); }
body.portal-skin .que .state, body.portal-skin .que .grade { font-weight: 600; }
body.portal-skin .que .correct, body.portal-skin .que .fa-check { color: var(--portal-ok); }
body.portal-skin .que .incorrect, body.portal-skin .que .fa-remove, body.portal-skin .que .fa-xmark { color: var(--portal-danger); }
/* Önceki / Sonraki / Denemeyi bitir */
body.portal-skin .submitbtns, body.portal-skin .mod_quiz-next-nav-wrapper { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
body.portal-skin .mod_quiz-prev-nav, body.portal-skin .mod_quiz-next-nav, body.portal-skin a.endtestlink,
body.portal-skin .submitbtns input[type="submit"], body.portal-skin .submitbtns button {
  min-height: var(--portal-touch);
  border-radius: var(--portal-radius);
  padding: 0.5rem 1rem;
  font: inherit;
  border: 1px solid var(--portal-line);
  background: transparent;
  color: var(--portal-ink);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
}
body.portal-skin .mod_quiz-next-nav, body.portal-skin .submitbtns .btn-primary {
  background: var(--portal-accent);
  border-color: var(--portal-accent);
  color: #fff;
}
/* Süre sayacı: sabit chip */
body.portal-skin #quiz-timer-wrapper { position: sticky; top: 0.5rem; z-index: 50; text-align: right; }
body.portal-skin #quiz-timer {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  background: rgba(14, 124, 123, 0.12);
  color: var(--portal-accent);
  font-weight: 650;
  font-size: 0.9rem;
}
/* Gezinme bloğu: soru düğmeleri */
body.portal-skin .qnbutton {
  min-width: 2.25rem;
  min-height: 2.25rem;
  border-radius: 8px;
  border: 1px solid var(--portal-line);
  background: #fff;
  color: var(--portal-ink);
}
body.portal-skin .qnbutton.answersaved, body.portal-skin .qnbutton.complete {
  background: rgba(14, 124, 123, 0.14);
  border-color: rgba(14, 124, 123, 0.4);
}
body.portal-skin .qnbutton.notyetanswered, body.portal-skin .qnbutton.notanswered { background: #fff; }
body.portal-skin .qnbutton.flagged { box-shadow: inset 0 0 0 2px var(--portal-accent-2); }
body.portal-skin .qnbutton.thispage { border-color: var(--portal-ink); box-shadow: 0 0 0 2px var(--portal-ink); font-weight: 700; }
body.portal-skin .qnbutton.correct { background: rgba(42, 122, 75, 0.14); }
body.portal-skin .qnbutton.incorrect { background: rgba(179, 58, 58, 0.1); }
body.portal-skin .qnbutton.partiallycorrect { background: rgba(166, 124, 45, 0.16); }
/* Özet ve inceleme tabloları */
body.portal-skin table.quizsummaryofattempt, body.portal-skin table.quizreviewsummary {
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
}
body.portal-skin table.quizreviewsummary th { text-align: left; font-weight: 600; width: 12rem; }
body.portal-skin table.quizsummaryofattempt tr:last-child td, body.portal-skin table.quizreviewsummary tr:last-child td,
body.portal-skin table.quizreviewsummary tr:last-child th { border-bottom: 0; }

/* Ödev */
body.portal-skin .submissionstatustable, body.portal-skin .gradingsummary, body.portal-skin .feedback,
body.portal-skin .path-mod-assign .box.boxaligncenter {
  background: var(--portal-card);
  border-radius: 10px;
}
body.portal-skin table.generaltable.mod_assign_submission_status td,
body.portal-skin td.submissionstatus, body.portal-skin td[class*="submissionstatus"],
body.portal-skin td.submissiongraded, body.portal-skin td.submissionnotgraded,
body.portal-skin td.submissionlocked, body.portal-skin td.latesubmission, body.portal-skin td.earlysubmission,
body.portal-skin td.overdue, body.portal-skin td.submissionreopened {
  background: transparent;
  color: var(--portal-ink);
}
body.portal-skin td.submissionstatussubmitted, body.portal-skin td.submissiongraded, body.portal-skin td.earlysubmission {
  background: rgba(42, 122, 75, 0.1);
  color: var(--portal-ok);
}
body.portal-skin td.submissionnotgraded, body.portal-skin td.submissionreopened, body.portal-skin td.latesubmission {
  background: rgba(166, 124, 45, 0.12);
  color: var(--portal-warn);
}
body.portal-skin td.overdue, body.portal-skin td.submissionlocked { background: rgba(179, 58, 58, 0.08); color: var(--portal-danger); }
body.portal-skin .gradingtable { overflow-x: auto; }

/* Etkinlik ayarları, profil düzenle, yedekleme: altta yapışkan eylem çubuğu (≤ 900 px) */
@media (max-width: 900px) {
  body.portal-skin #page-course-modedit #fgroup_id_buttonar,
  body.portal-skin #page-user-edit #fgroup_id_buttonar,
  body.portal-skin #page-backup-backup .singlebutton,
  body.portal-skin form.mform > .fitem:last-child:has(#id_submitbutton) {
    position: sticky;
    bottom: 0;
    z-index: 30;
    background: var(--portal-surface);
    border-top: 1px solid var(--portal-line);
    padding: 0.6rem 0;
    margin: 0;
  }
}
/* Yedekleme adımları: progress_steps görünümü */
body.portal-skin .backup_stage {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin: 0 0.35rem 0.5rem 0;
  padding: 0.2rem 0.6rem;
  border-radius: 999px;
  background: rgba(20, 33, 61, 0.06);
  color: var(--portal-muted);
  font-size: 0.8rem;
  list-style: none;
}
body.portal-skin .backup_stage_complete { background: rgba(42, 122, 75, 0.12); color: var(--portal-ok); }
body.portal-skin .backup_stage_current { background: rgba(14, 124, 123, 0.14); color: var(--portal-accent); font-weight: 650; }
body.portal-skin .backup_stage a { color: inherit; }

/* Not raporu, soru bankası, sınav düzenleme/raporu */
body.portal-skin .gradereport-grader-table, body.portal-skin table.user-grade, body.portal-skin table.quizattemptsummary { background: transparent; }
body.portal-skin .path-mod-quiz .slot, body.portal-skin ul.slots li.section .slot, body.portal-skin ul.slots li.activity {
  border-radius: 8px;
}
body.portal-skin ul.slots li.section { background: var(--portal-card); border: 1px solid var(--portal-line); border-radius: 10px; padding: 0.4rem 0.6rem; margin-bottom: 0.5rem; }
body.portal-skin .questionbankwindow, body.portal-skin .qbank-filter, body.portal-skin [data-region="filter"],
body.portal-skin .filter-row { border-radius: 10px; }
body.portal-skin .questionbank .generaltable tr.r0, body.portal-skin .questionbank .generaltable tr.r1 { background: transparent; }

/* Mesajlar */
body.portal-skin .message-app {
  background: var(--portal-card) !important; /* Boost .bg-light !important */
  border: 1px solid var(--portal-line) !important; /* Boost .border !important */
  border-radius: 10px;
  overflow: hidden;
}
body.portal-skin .message-app .message { border-radius: 14px; font-size: 0.92rem; }
body.portal-skin .message-app .message.send { background: rgba(14, 124, 123, 0.14); color: var(--portal-ink); }
body.portal-skin .message-app .message.received { background: rgba(20, 33, 61, 0.06); color: var(--portal-ink); }
body.portal-skin .message-app .btn-primary { background: var(--portal-accent); border-color: var(--portal-accent); }

/* Tercihler ve profil */
body.portal-skin #page-user-preferences .preferences-group,
body.portal-skin #page-user-preferences .card,
body.portal-skin #page-user-profile .card,
body.portal-skin #page-user-profile .profile_tree section {
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  padding: 1rem 1.1rem;
  margin-bottom: 1rem;
}
body.portal-skin #page-user-preferences h2, body.portal-skin #page-user-preferences h3,
body.portal-skin #page-user-profile h2, body.portal-skin #page-user-profile h3 { font-family: var(--portal-font); }

/* ==========================================================================
   Düzeltme 1 (Parça A) — yerel QA bulguları
   ========================================================================== */

/* A1. Kiosk / Boost şeridi: kaplamanın başlık ve bağlantı renkleri şeride girmez.
   Şerit zemini lacivert (--portal-ink); h1 ve bağlantı beyaz kalır. Özgüllük, kaplamanın
   `body.portal-skin h1` ve `body.portal-skin a:not(...)` kurallarını (0,1,2 / 0,6,2) geçer. */
body.portal-skin .portal-kiosk-back,
body.portal-skin .portal-kiosk-back h1,
body.portal-skin .portal-kiosk-back h2,
body.portal-skin .portal-kiosk-back span,
body.portal-skin .portal-kiosk-back a:not(.btn):not(.portal-btn):not(.nav-link):not(.dropdown-item):not(.page-link):not(.list-group-item),
body.portal-skin .portal-kiosk-back a:not(.btn):not(.nav-link):hover {
  color: #fff;
}
/* Düzeltme 2 / A1: şerit başlığı kaplamadan önceki görünümüne döner (sans, kalın; boyut Boost h1 / ≤ 767 px kuralı). */
body.portal-skin .portal-kiosk-back h1 { font-family: var(--portal-sans); font-weight: 700; letter-spacing: normal; }

/* A2a. Tam Boost şeridi: Bootstrap `.bg-white` / `.navbar-light` !important ile beyaz zemin bırakıyordu
   (kullanıcı menüsünün altı). Çubuk ve içindeki tüm kapsayıcılar tek lacivert şerit olur. */
body.portal-skin-chrome nav.navbar,
body.portal-skin-chrome nav.navbar.bg-white,
body.portal-skin-chrome nav.navbar.navbar-light,
body.portal-skin-chrome nav.navbar.bg-body {
  background-color: var(--portal-ink) !important; /* Bootstrap .bg-white !important */
  border-bottom: 0;
}
body.portal-skin-chrome nav.navbar .navbar-nav,
body.portal-skin-chrome nav.navbar .nav-item,
body.portal-skin-chrome nav.navbar #usernavigation,
body.portal-skin-chrome nav.navbar .usermenu,
body.portal-skin-chrome nav.navbar .popover-region,
body.portal-skin-chrome nav.navbar .navbar-collapse { background: transparent; }

/* A2b. Şerit sabit (fixed): içerik şeridin altından başlasın. Hook çıktısı (`.portal-quiz-add-tools`)
   #page'in ÖNÜNDE aktığı için boşluk #page'e değil gövdeye verilir. */
body.portal-skin-chrome { padding-top: var(--portal-chrome-h); }
body.portal-skin-chrome #page.drawers,
body.portal-skin-chrome #page { margin-top: 0; }
body.portal-skin-chrome .portal-quiz-add-tools {
  max-width: 72rem;
  margin: 0.75rem auto 0;
  padding: 0.6rem 1rem;
  box-sizing: border-box;
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-left: 3px solid var(--portal-accent);
  border-radius: 10px;
  color: var(--portal-ink);
}
body.portal-skin-chrome .portal-quiz-add-tools.alert-warning { border-left-color: var(--portal-warn); }
body.portal-skin-chrome .portal-quiz-add-tools.alert-success { border-left-color: var(--portal-ok); }
/* Yinelenen "Haftalık plana dön": şerit zaten geri bağlantısını taşıyor. */
body.portal-skin-chrome .portal-quiz-add-tools .portal-quiz-back { display: none; }
@media (max-width: 575.98px) {
  body.portal-skin-chrome .portal-quiz-add-tools { margin-left: 0.75rem; margin-right: 0.75rem; }
}

/* A3. Ödev notlandırma tablosu: Boost başlık satırını `position: sticky; top: navbar-height` yapar;
   kiosk'ta (üstte şerit/navbar yok) ilk veri satırına biniyordu. Normal akışta kalır. */
body.portal-skin .gradingtable thead tr,
body.portal-skin .gradingtable thead th {
  position: static;
  background: var(--portal-card);
}

/* A4. Mesajlar */
/* Bölüm başlıkları (Yıldızlı / Grup / Özel): `.btn { justify-content: center }` ortalıyordu. */
body.portal-skin .message-app .overview-section-toggle,
body.portal-skin .message-app [data-region="toggle"] .btn {
  justify-content: flex-start;
  text-align: left;
  text-align: start;
}
body.portal-skin .message-app .simplesearchform { flex-wrap: nowrap; }
body.portal-skin .message-app .simplesearchform .form-control { min-width: 0; flex: 1 1 auto; }
body.portal-skin .message-app .simplesearchform .btn,
body.portal-skin .message-app .simplesearchform .input-group-append,
body.portal-skin .message-app .simplesearchform .input-group-text { flex: 0 0 auto; }
@media (max-width: 767.98px) {
  /* Konuşma listesi tam genişlik; ayrıntı paneli altında akar. */
  body.portal-skin .message-app .row > .conversationcontainer,
  body.portal-skin .message-app .row > [class*="col-"] {
    flex: 0 0 100%;
    max-width: 100%;
    width: 100%;
  }
  body.portal-skin .message-app .row { flex-wrap: wrap; }
  body.portal-skin .message-app .conversationcontainer > .border-end { border-right: 0 !important; /* BS .border-end !important */ }
}

/* A5. Sınav denemesi.
   Neden: `.submitbtns input[type=submit]` (0,3,2) `.mod_quiz-next-nav` (0,2,0) kuralını eziyor,
   birincil düğme şeffaf kalıyordu. Özgüllük yükseltildi. */
body.portal-skin input.mod_quiz-next-nav,
body.portal-skin .submitbtns input.mod_quiz-next-nav,
body.portal-skin .submitbtns input.btn-primary,
body.portal-skin .submitbtns button.btn-primary,
body.portal-skin a.endtestlink:not(.btn):not(.portal-btn):not(.nav-link):not(.dropdown-item):not(.page-link):not(.list-group-item) {
  background: var(--portal-accent);
  border-color: var(--portal-accent);
  color: #fff;
  font-weight: 600;
}
body.portal-skin input.mod_quiz-next-nav:hover, body.portal-skin input.mod_quiz-next-nav:focus,
body.portal-skin .submitbtns input.btn-primary:hover, body.portal-skin .submitbtns button.btn-primary:hover,
body.portal-skin a.endtestlink:not(.btn):not(.nav-link):hover {
  background: var(--portal-accent-dark);
  border-color: var(--portal-accent-dark);
  color: #fff;
}
/* "Önceki sayfa": ikincil. */
body.portal-skin input.mod_quiz-prev-nav, body.portal-skin .submitbtns input.mod_quiz-prev-nav {
  background: transparent;
  border-color: var(--portal-line);
  color: var(--portal-ink);
}
/* Seçili seçenek: vurgu kenarlığı + açık zemin (`input:checked` bulunan satır). */
body.portal-skin .que .answer > div:has(input:checked),
body.portal-skin .que .answer .form-check:has(input:checked),
body.portal-skin .que .answer .custom-control:has(input:checked) {
  background: rgba(14, 124, 123, 0.14);
  border-color: var(--portal-accent);
  box-shadow: inset 0 0 0 1px var(--portal-accent);
  font-weight: 600;
}
/* Süre sayacı: normalde nötr chip; kırmızı çerçeve/zemin yalnız çekirdek `.timeleftN` uyarı sınıfında.
   Çekirdek `#quiz-timer-wrapper #quiz-timer` (iki kimlik) kenarlığı verir; aynı özgüllükte ezilir. */
body.portal-skin #quiz-timer-wrapper #quiz-timer:not([class*="timeleft"]) {
  border: 1px solid var(--portal-line);
  background-color: rgba(20, 33, 61, 0.06);
  color: var(--portal-ink);
}

/* A6. Giriş: kart içindeki ikincil bölüm başlıkları küçük, sola hizalı, soluk etiket;
   kart başlığı (h1) serif kalır. */
body.portal-skin.pagelayout-login h2.login-heading,
body.portal-skin.pagelayout-login .login-identityproviders h2,
body.portal-skin.pagelayout-login .login-instructions h2 {
  font-family: var(--portal-sans);
  font-size: 0.8rem;
  font-weight: 650;
  letter-spacing: 0.04em;
  text-transform: none;
  text-align: left;
  text-align: start;
  color: var(--portal-muted);
  margin: 0 0 0.5rem;
}

/* ==========================================================================
   Düzeltme 2 (Parça A)
   ========================================================================== */

/* A1 (Düzeltme 3; Düzeltme 8: yalnız moremenu dışı). Dikey çizginin kaynağı sekme kabı: overflow-x:auto
   overflow-y'yi de auto yapar; 1px taşma dikey kaydırma açar. .moremenu .nav/.more-nav burada yok —
   açılır menü overflow-y:hidden ile kırpılıyordu. (BS4 + BS5) */
body.portal-skin .nav-tabs,
body.portal-skin .nav-pills,
body.portal-skin-chrome .nav-tabs,
body.portal-skin-chrome .nav-pills {
  overflow-y: hidden;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
body.portal-skin .nav-tabs::-webkit-scrollbar,
body.portal-skin .nav-pills::-webkit-scrollbar,
body.portal-skin-chrome .nav-tabs::-webkit-scrollbar,
body.portal-skin-chrome .nav-pills::-webkit-scrollbar {
  display: none;
}

/* Profil: "Sayfayı varsayılan ayarlara sıfırla" öğretmenin işi değil. */
body.portal-skin-chrome#page-user-profile .breadcrumb-button,
body.portal-skin-chrome#page-user-profile #page-header .singlebutton,
body.portal-skin-chrome#page-user-profile #page-header form[action*="reset"],
body.portal-skin-chrome#page-user-profile #region-main form[action*="reset"] {
  display: none !important; /* Boost .d-flex !important */
}

/* A3. Sınav düzenleme, dar ekran (≤ 480 px). Düzen aynı kalır; yalnız sarma ve boşluk. */
@media (max-width: 480px) {
  /* Soru satırı: soru adı tam satır, kontroller (bağımlılık, önizleme, puan) altta. */
  body.portal-skin-chrome #page-mod-quiz-edit li.activity.slot,
  body.portal-skin-chrome #page-mod-quiz-edit li.activity.slot .mod-indent-outer,
  body.portal-skin-chrome #page-mod-quiz-edit li.activity.slot .activityinstance,
  body.portal-skin-chrome #page-mod-quiz-edit li.activity.slot .activitycontainer {
    flex-wrap: wrap;
  }
  body.portal-skin-chrome #page-mod-quiz-edit .slot .activityinstance { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.5rem; }
  body.portal-skin-chrome #page-mod-quiz-edit .slot .activityinstance > a,
  body.portal-skin-chrome #page-mod-quiz-edit .slot .activityinstance > .questionname,
  body.portal-skin-chrome #page-mod-quiz-edit .slot .activityinstance > .instancename {
    flex: 1 1 100%;
    min-width: 0;
    overflow-wrap: anywhere;
  }
  body.portal-skin-chrome #page-mod-quiz-edit .slot .activityinstance > .instancemaxmarkcontainer,
  body.portal-skin-chrome #page-mod-quiz-edit .slot .activityinstance > .actions,
  body.portal-skin-chrome #page-mod-quiz-edit .slot .activityinstance > .editing_question_preview { flex: 0 0 auto; }
  /* "Sayfa N" ile "Ekle" arasında boşluk. */
  body.portal-skin-chrome #page-mod-quiz-edit li.pagenumber { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; }
  body.portal-skin-chrome #page-mod-quiz-edit li.pagenumber .add-menu-outer { margin-left: auto; padding-left: 0.75rem; }
  /* Solda tek başına görünen büyük "×": çekmece kapatma düğmesi (dekoratif, çekmece zaten gizli). */
  body.portal-skin-chrome .drawerheader,
  body.portal-skin-chrome .drawer-close,
  body.portal-skin-chrome .drawertoggle,
  body.portal-skin-chrome [data-action="closedrawer"],
  body.portal-skin-chrome [data-toggler="drawers"][data-action="closedrawer"],
  body.portal-skin-chrome #page > .drawer-toggles + .btn-close {
    display: none !important; /* Boost .btn/.d-flex !important */
  }
  /* Şerit tek satır; ders kısa adı gizlenir, kullanıcı menüsü kesilmesin. */
  body.portal-skin-chrome .portal-chrome-back { flex-wrap: nowrap; overflow: hidden; }
  body.portal-skin-chrome .portal-chrome-back > :last-child { display: none; }
  body.portal-skin-chrome .portal-chrome-back a { white-space: nowrap; }
  body.portal-skin-chrome nav.navbar { flex-wrap: nowrap; }
  body.portal-skin-chrome nav.navbar .navbar-nav { flex-wrap: nowrap; flex: 0 0 auto; }
}

/* A4. Ödev notlandırma sayfası (`/mod/assign/view.php?action=grading`, gövde #page-mod-assign-grading).
   Sayfaya iç boşluk; yatay kaydırma yalnız tablo sarmalayıcısında. */
body.portal-skin#page-mod-assign-grading #page,
body.portal-skin#page-mod-assign-grading #page-content,
body.portal-skin#page-mod-assign-grading #region-main-box,
body.portal-skin#page-mod-assign-grading #region-main {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
body.portal-skin#page-mod-assign-grading #region-main {
  max-width: 80rem;
  margin: 0 auto;
  padding: 1rem 1.25rem;
}
body.portal-skin#page-mod-assign-grading #region-main > .card,
body.portal-skin#page-mod-assign-grading #region-main > .card > .card-body { border: 0; background: transparent; padding: 0; }
body.portal-skin#page-mod-assign-grading #region-main h2,
body.portal-skin#page-mod-assign-grading #region-main h3 { margin-top: 0.5rem; }
body.portal-skin#page-mod-assign-grading .gradingtable,
body.portal-skin#page-mod-assign-grading .table-responsive,
body.portal-skin#page-mod-assign-grading .tablewrapper {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
body.portal-skin#page-mod-assign-grading .gradingtable table { margin-bottom: 0; }
/* Arama / filtre denetimleri: portal alanı ve düğmesi. */
body.portal-skin#page-mod-assign-grading #region-main .form-control,
body.portal-skin#page-mod-assign-grading #region-main .custom-select,
body.portal-skin#page-mod-assign-grading #region-main .form-select,
body.portal-skin#page-mod-assign-grading #region-main select {
  border: 1px solid var(--portal-line);
  border-radius: 8px;
  min-height: 2.5rem;
  background-color: var(--portal-card);
  color: var(--portal-ink);
}
body.portal-skin#page-mod-assign-grading #region-main .btn-primary,
body.portal-skin#page-mod-assign-grading #region-main .btn-secondary,
body.portal-skin#page-mod-assign-grading #region-main .btn-outline-secondary {
  border-radius: 8px;
  min-height: 2.5rem;
  font-weight: 600;
}
body.portal-skin#page-mod-assign-grading #region-main .btn-primary { background: var(--portal-accent); border-color: var(--portal-accent); color: #fff; }
body.portal-skin#page-mod-assign-grading #region-main .btn-secondary,
body.portal-skin#page-mod-assign-grading #region-main .btn-outline-secondary { background: transparent; border-color: var(--portal-line); color: var(--portal-ink); }
/* Hücre metni kelime ortasından bölünmez; durum sütununa en az genişlik. */
body.portal-skin#page-mod-assign-grading table.generaltable th,
body.portal-skin#page-mod-assign-grading table.generaltable td {
  overflow-wrap: normal;
  word-break: normal;
  hyphens: manual;
}
body.portal-skin#page-mod-assign-grading table.generaltable td.c4,
body.portal-skin#page-mod-assign-grading table.generaltable th.c4,
body.portal-skin#page-mod-assign-grading table.generaltable td.cell[class*="status"],
body.portal-skin#page-mod-assign-grading table.generaltable th[class*="status"],
body.portal-skin#page-mod-assign-grading table.generaltable td[class*="status"] { min-width: 9rem; }
/* Durum hücreleri chip tonunda: hücre zemini nötr, içindeki durum etiketi chip. */
body.portal-skin#page-mod-assign-grading td.submissionstatus,
body.portal-skin#page-mod-assign-grading td[class*="submissionstatus"],
body.portal-skin#page-mod-assign-grading td.submissiongraded,
body.portal-skin#page-mod-assign-grading td.submissionnotgraded,
body.portal-skin#page-mod-assign-grading td.submissionlocked,
body.portal-skin#page-mod-assign-grading td.latesubmission,
body.portal-skin#page-mod-assign-grading td.earlysubmission,
body.portal-skin#page-mod-assign-grading td.overdue { background: transparent; }
body.portal-skin#page-mod-assign-grading td .submissionstatus,
body.portal-skin#page-mod-assign-grading td .submissionstatussubmitted,
body.portal-skin#page-mod-assign-grading td .submissiongraded,
body.portal-skin#page-mod-assign-grading td .submissionnotgraded,
body.portal-skin#page-mod-assign-grading td .badge,
body.portal-skin#page-mod-assign-grading td div[class*="submissionstatus"],
body.portal-skin#page-mod-assign-grading td div.submissiongraded,
body.portal-skin#page-mod-assign-grading td div.submissionnotgraded,
body.portal-skin#page-mod-assign-grading td div.latesubmission,
body.portal-skin#page-mod-assign-grading td div.overdue {
  display: inline-block;
  padding: 0.15rem 0.6rem;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 600;
  white-space: nowrap;
  margin: 0.1rem 0;
}
body.portal-skin#page-mod-assign-grading td div.submissionstatussubmitted,
body.portal-skin#page-mod-assign-grading td div.submissiongraded { background: rgba(42, 122, 75, 0.12); color: var(--portal-ok); }
body.portal-skin#page-mod-assign-grading td div.submissionnotgraded,
body.portal-skin#page-mod-assign-grading td div.latesubmission { background: rgba(166, 124, 45, 0.14); color: var(--portal-warn); }
body.portal-skin#page-mod-assign-grading td div.overdue { background: rgba(179, 58, 58, 0.1); color: var(--portal-danger); }

/* A5. Not raporu (`/grade/report/grader/`, gövde #page-grade-report-grader-index). */
body.portal-skin#page-grade-report-grader-index #region-main {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  padding: 1rem 1.25rem;
}
body.portal-skin#page-grade-report-grader-index #region-main .form-control,
body.portal-skin#page-grade-report-grader-index #region-main select,
body.portal-skin#page-grade-report-grader-index #region-main .custom-select,
body.portal-skin#page-grade-report-grader-index #region-main .form-select,
body.portal-skin#page-grade-report-grader-index .gradereport-grader-search .searchinput {
  border: 1px solid var(--portal-line);
  border-radius: 8px;
  min-height: 2.5rem;
  background-color: var(--portal-card);
  color: var(--portal-ink);
}
body.portal-skin#page-grade-report-grader-index #region-main .btn-primary { background: var(--portal-accent); border-color: var(--portal-accent); color: #fff; border-radius: 8px; }
body.portal-skin#page-grade-report-grader-index #region-main .btn-secondary,
body.portal-skin#page-grade-report-grader-index #region-main .btn-outline-secondary { background: transparent; border-color: var(--portal-line); color: var(--portal-ink); border-radius: 8px; }
body.portal-skin#page-grade-report-grader-index table.gradereport-grader-table th,
body.portal-skin#page-grade-report-grader-index table.gradereport-grader-table th a,
body.portal-skin#page-grade-report-grader-index table.gradereport-grader-table th .icon,
body.portal-skin#page-grade-report-grader-index table.gradereport-grader-table th .dropdown-toggle {
  color: var(--portal-muted);
  font-size: 0.8rem;
  font-weight: 600;
}
body.portal-skin#page-grade-report-grader-index table.gradereport-grader-table th .icon { opacity: 0.7; }
body.portal-skin#page-grade-report-grader-index table.gradereport-grader-table th,
body.portal-skin#page-grade-report-grader-index table.gradereport-grader-table td {
  border-color: rgba(20, 33, 61, 0.08);
  border-width: 0 0 1px;
}

/* A6. Tercihler ve profil: bütün kutular kart, başlıklar serif, bağlantı listeleri ferah. */
body.portal-skin#page-user-preferences #region-main .card,
body.portal-skin#page-user-preferences #region-main .preferences-group,
body.portal-skin#page-user-preferences #region-main > div > .row > [class*="col-"] > div,
body.portal-skin#page-user-profile #region-main .card,
body.portal-skin#page-user-profile #region-main .profile_tree > section,
body.portal-skin#page-user-profile #region-main .profile_tree section.node_category,
body.portal-skin#page-user-profile #region-main .userprofile .description {
  background: var(--portal-card);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  box-shadow: none;
}
body.portal-skin#page-user-preferences #region-main .card-body,
body.portal-skin#page-user-profile #region-main .card-body { padding: 1rem 1.1rem; }
body.portal-skin#page-user-preferences #region-main h2,
body.portal-skin#page-user-preferences #region-main h3,
body.portal-skin#page-user-preferences #region-main h4,
body.portal-skin#page-user-preferences #region-main .card-title,
body.portal-skin#page-user-profile #region-main h2,
body.portal-skin#page-user-profile #region-main h3,
body.portal-skin#page-user-profile #region-main h4,
body.portal-skin#page-user-profile #region-main .card-title { font-family: var(--portal-font); color: var(--portal-ink); }
body.portal-skin#page-user-preferences #region-main ul,
body.portal-skin#page-user-profile #region-main .profile_tree ul { list-style: none; padding-left: 0; margin: 0; }
body.portal-skin#page-user-preferences #region-main li,
body.portal-skin#page-user-profile #region-main .profile_tree li { padding: 0.35rem 0; line-height: 1.5; }
body.portal-skin#page-user-profile #region-main .profile_tree dt { color: var(--portal-muted); font-weight: 600; }

/* Düzeltme 5 / A1. Sınav düzenleme: "Sayfa N" ile "Ekle" bitişik (her genişlik, Moodle 4.5 pr-2 ve 5.0 pe-2). */
body.portal-skin li.pagenumber.page {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem;
}
body.portal-skin li.pagenumber.page > .add-menu-outer { margin-left: 0.75rem; }
body.portal-skin li.pagenumber.page > h4 { margin-bottom: 0; }

/* Düzeltme 5 / A2. Ödev notlandırma ve not raporu: Boost `full-width-bottom-border` negatif kenar boşluğu
   kabı sayfa kenarına taşıyordu; kenar boşluğu sıfırlanır, yatay kaydırma yalnız tablo kabında kalır. */
body.portal-skin.path-mod-assign .tertiary-navigation.full-width-bottom-border,
body.portal-skin.path-grade-report .tertiary-navigation.full-width-bottom-border {
  margin-left: 0;
  margin-right: 0;
  width: auto;
  max-width: 100%;
  padding-left: 1.25rem;
  padding-right: 1.25rem;
  box-sizing: border-box;
}
body.portal-skin.path-mod-assign .gradingtable,
body.portal-skin.path-grade-report .gradingtable {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* Düzeltme 6 / A1. Telefonda ödev notlandırma araç çubuğu sarılır; sayfa yatay taşmaz (yalnız ≤ 767 px). */
@media (max-width: 767px) {
  body.portal-skin.path-mod-assign .tertiary-navigation > .d-flex {
    flex-wrap: wrap;
    row-gap: 0.5rem;
  }
  body.portal-skin.path-mod-assign .tertiary-navigation .navitem {
    min-width: 0;
    max-width: 100%;
  }
  body.portal-skin.path-mod-assign .tertiary-navigation .navitem-divider { display: none; }
  body.portal-skin.path-mod-assign .tertiary-navigation form,
  body.portal-skin.path-mod-assign .tertiary-navigation input[type="search"],
  body.portal-skin.path-mod-assign .tertiary-navigation input[type="text"] {
    width: 100%;
    max-width: 100%;
  }
}

/* Düzeltme 6 / A2. Telefonda not raporu kendi içinde kayar (çekirdek tabloyu table-responsive içine almıyor);
   üst şerit de A1 gibi sarılır. ≥ 768 px çekirdek davranışı korunur. */
@media (max-width: 767px) {
  body.portal-skin.path-grade-report-grader .gradeparent {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
  }
  body.portal-skin.path-grade-report-grader .tertiary-navigation > .d-flex {
    flex-wrap: wrap;
    row-gap: 0.5rem;
  }
  body.portal-skin.path-grade-report-grader .tertiary-navigation .navitem {
    min-width: 0;
    max-width: 100%;
  }
  body.portal-skin.path-grade-report-grader .tertiary-navigation .navitem-divider { display: none; }
}

/* Düzeltme 6 / A3. Alt bilgideki "Bu sayfada kullanıcı turunu sıfırla" bağlantısı sol kenara yapışmasın (her genişlik). */
body.portal-skin .tool_usertours-resettourcontainer {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}

/* Düzeltme 7 / A1 → Düzeltme 8 / 2. Şablon <div class="usertour"><a id="resetpagetour"> basar
   (resettour.mustache); body > #resetpagetour eşleşmez. (her genişlik) */
body.portal-skin > .usertour {
  padding: 0.25rem 1.25rem 1rem;
}

/* Düzeltme 7 / A2 + Düzeltme 8 / 1. moremenu.js toplama için wrap; açılır menü için iki eksende
   overflow: visible (overflow-x:visible + overflow-y:hidden → computed overflow-x:auto, menü kırpılıyordu). */
body.portal-skin .moremenu .nav,
body.portal-skin .moremenu .nav-tabs,
body.portal-skin .moremenu .nav-pills,
body.portal-skin .moremenu .more-nav,
body.portal-skin .secondary-navigation .moremenu .nav,
body.portal-skin-chrome .moremenu .nav,
body.portal-skin-chrome .moremenu .nav-tabs,
body.portal-skin-chrome .moremenu .nav-pills,
body.portal-skin-chrome .secondary-navigation .moremenu .nav {
  flex-wrap: wrap;
  overflow: visible;
}
@media (max-width: 767.98px) {
  /* moremenu dışı .nav-tabs/.nav-pills: alt satıra sar; yatay kaydırma yok (Düzeltme 3 dikey çizgi gerilemesin). */
  body.portal-skin .nav-tabs,
  body.portal-skin .nav-pills,
  body.portal-skin-chrome .nav-tabs,
  body.portal-skin-chrome .nav-pills {
    flex-wrap: wrap;
    row-gap: 0.25rem;
    overflow-x: hidden;
  }
  /* moremenu: çekirdek toplama + açılır menü görünür kalsın; row-gap ekleme. */
  body.portal-skin .moremenu .nav,
  body.portal-skin .moremenu .nav-tabs,
  body.portal-skin .moremenu .nav-pills,
  body.portal-skin .moremenu .more-nav,
  body.portal-skin .secondary-navigation .moremenu .nav,
  body.portal-skin-chrome .moremenu .nav,
  body.portal-skin-chrome .moremenu .nav-tabs,
  body.portal-skin-chrome .moremenu .nav-pills,
  body.portal-skin-chrome .secondary-navigation .moremenu .nav {
    flex-wrap: wrap;
    row-gap: 0;
    overflow: visible;
  }
}

/* Düzeltme 7 / A3 + Düzeltme 10. Yapışkan alt çubuk (sticky-footer.scss sabit yükseklik).
   Portal mform etiketi üste alıyordu. Düzeltme 10: scrollSpy <768'de hasstickyfooter silince
   :not([data-disable]) çubuk görünümü kalsın; data-disable (toplu düzenleme) yalnız .hasstickyfooter ile. */
body.portal-skin.hasstickyfooter .stickyfooter,
body.portal-skin .stickyfooter:not([data-disable]) {
  height: auto;
  min-height: 3.5rem;
  background: #fff;
  border-top: 1px solid var(--portal-line);
  box-shadow: 0 0 1rem rgba(20, 33, 61, 0.12);
  padding: 0.5rem 1.25rem;
}
@media (max-width: 767.98px) {
  /* Boost .stickyfooter { bottom: -height }; yalnız .hasstickyfooter ile bottom:0.
     JS sınıfı silince de açık çubuk ekranda kalsın. */
  body.portal-skin .stickyfooter:not([data-disable]) {
    bottom: 0;
  }
}
body.portal-skin .stickyfooter .sticky-footer-content {
  align-items: center;
  column-gap: 0.75rem;
  row-gap: 0.35rem;
}
body.portal-skin .stickyfooter label,
body.portal-skin .stickyfooter .col-form-label {
  display: inline-flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 0.5rem;
  margin: 0;
  white-space: nowrap;
}
body.portal-skin .stickyfooter select,
body.portal-skin .stickyfooter .custom-select,
body.portal-skin .stickyfooter .form-select {
  display: inline-block;
  width: auto;
  max-width: 100%;
  margin-top: 0 !important; /* singleview perpage .mt-1 (BS4/BS5) */
  vertical-align: middle;
}
/* Sticky içindeki mform / fitem: genel portal kuralı (etiket üstte, display:block) tek satırı bozmasın. */
body.portal-skin .stickyfooter .fitem,
body.portal-skin .stickyfooter .fitem.row,
body.portal-skin .stickyfooter .form-group.row,
body.portal-skin .stickyfooter form.mform .fitem,
body.portal-skin .stickyfooter form.mform .fitem.row {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  margin: 0;
  gap: 0.5rem;
}
body.portal-skin .stickyfooter .fitem > [class*="col-"],
body.portal-skin .stickyfooter form.mform .fitem > [class*="col-"] {
  flex: 0 0 auto;
  width: auto;
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}
body.portal-skin .stickyfooter form.mform .col-form-label,
body.portal-skin .stickyfooter form.mform .fitem label {
  display: inline-flex;
  align-items: center;
  padding: 0;
  margin: 0;
}
/* Düzeltme 8 / 2 + Düzeltme 10. .usertour #page'den sonra; gövde sonu boşluğu.
   ≥768: hasstickyfooter (scrollSpy dokunmaz). ≤767: sınıf silinse de :has ile boşluk kalsın. */
body.portal-skin.hasstickyfooter::after {
  content: "";
  display: block;
  height: 5.5rem;
}
@media (max-width: 767.98px) {
  body.portal-skin:has(.stickyfooter:not([data-disable]))::after {
    content: "";
    display: block;
    height: 5.5rem;
  }
}

/* Düzeltme 9 / 1. Soru bankası (ve katılımcı listesi) datafilter eylem satırı 390 px'te sağdan taşmasın.
   lib/templates/datafilter/filter.mustache: .filter-group [data-filterregion="actions"] (BS4 ml-auto/mr-2, BS5 ms-auto/me-2). */
@media (max-width: 767.98px) {
  body.portal-skin .filter-group [data-filterregion="actions"] {
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  body.portal-skin .filter-group [data-filterregion="actions"] .btn {
    margin-left: 0;
    margin-right: 0;
    white-space: nowrap;
  }
}
