/* Responsive polish for SQE Success study interface.
   Loaded last so it improves layout without changing content or behaviour. */

html,
body {
  max-width: 100%;
  overflow-x: clip;
}

img,
svg,
video,
canvas {
  max-width: 100%;
  height: auto;
}

#chapterPage,
#textbookReader,
.sqe-v53-textbook,
.property-v52-textbook,
.multi-mindmap-deck,
.sqe-v54-mindmaps {
  min-width: 0;
  max-width: 100%;
}

/* Make horizontal study elements intentionally scrollable rather than page-breaking. */
.multi-mindmap-tabs,
.sqe-v54-map-tabs,
.sqe-v53-jumpbar,
.sqe-v53-table-wrap,
.sqe-v62-table-wrap,
.sqe-v62-native-table-wrap,
.property-v52-table-wrap,
.sqe-v53-process,
.sqe-v62-flow {
  max-width: 100%;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
}

.multi-mindmap-tabs,
.sqe-v54-map-tabs,
.sqe-v53-jumpbar {
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
  touch-action: pan-x;
}

.multi-mindmap-tab,
.sqe-v54-map-tab,
.sqe-v53-jumpbar button {
  scroll-snap-align: start;
  flex: 0 0 auto;
  min-height: 42px;
}

/* Tablet */
@media (max-width: 1024px) {
  main,
  .app-layout {
    padding-left: 20px;
    padding-right: 20px;
  }

  .multi-mindmap-deck,
  .property-v52-textbook {
    padding: 20px;
  }

  .multi-mindmap-canvas {
    grid-template-columns: minmax(155px, .62fr) minmax(0, 1.7fr);
    gap: 18px;
    padding: 18px;
  }

  .multi-mindmap-branches {
    gap: 10px;
  }

  .multi-mindmap-branch {
    padding: 13px;
  }

  #textbookReader .ebook-page,
  .sqe-v53-textbook {
    max-width: 100%;
  }
}

/* iPad portrait and smaller */
@media (max-width: 900px) {
  .app-layout {
    grid-template-columns: 1fr !important;
  }

  .sidebar {
    position: static !important;
    max-height: none !important;
    width: 100%;
  }

  .study-panel,
  .reader {
    width: 100%;
    min-width: 0;
  }

  .multi-mindmap-canvas {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .multi-mindmap-center {
    width: min(280px, 76%);
    min-height: 104px;
    margin: 0 auto 4px;
    border-radius: 28px;
  }

  .multi-mindmap-center strong {
    max-width: 230px;
  }

  .multi-mindmap-branch::before {
    display: none;
  }

  .property-v52-reading-grid,
  .property-v52-visual-grid,
  .sqe-v53-visual-grid,
  .sqe-v53-exam-grid,
  .sqe-v53-example-grid {
    grid-template-columns: 1fr !important;
  }

  .sqe-v53-table-card,
  .sqe-v53-process-card {
    grid-column: span 1 !important;
  }
}

/* Phones */
@media (max-width: 700px) {
  main,
  .app-layout {
    padding-left: 14px;
    padding-right: 14px;
  }

  .nav {
    padding-left: 14px;
    padding-right: 14px;
  }

  /* Mind maps */
  .multi-mindmap-deck,
  .sqe-v54-mindmaps,
  .property-v52-textbook {
    margin-left: 0;
    margin-right: 0;
    padding: 14px;
    border-radius: 16px;
  }

  .property-v52-section-head,
  .multi-mindmap-head {
    margin-bottom: 14px;
  }

  .property-v52-section-head h3,
  .multi-mindmap-head h3 {
    font-size: clamp(22px, 7vw, 30px);
    overflow-wrap: anywhere;
  }

  .property-v52-section-head p,
  .multi-mindmap-head p {
    font-size: 14px;
    line-height: 1.5;
  }

  .multi-mindmap-tabs,
  .sqe-v54-map-tabs {
    gap: 7px;
    margin-left: -2px;
    margin-right: -2px;
    padding: 3px 2px 12px;
  }

  .multi-mindmap-tab,
  .sqe-v54-map-tab {
    min-height: 44px;
    padding: 9px 14px;
    font-size: 13px;
  }

  .multi-mindmap-panel {
    padding-top: 4px;
  }

  .multi-mindmap-canvas,
  .sqe-v54-map-canvas {
    min-height: 0;
    padding: 13px;
    gap: 13px;
    border-radius: 16px;
    background: var(--surface-soft, #f8faf9);
  }

  .multi-mindmap-center,
  .sqe-v54-map-center {
    width: 100%;
    max-width: none;
    min-height: 82px;
    padding: 15px 18px;
    border-radius: 18px;
  }

  .multi-mindmap-center strong,
  .sqe-v54-map-center strong {
    max-width: none;
    font-size: 17px;
  }

  .multi-mindmap-branches,
  .sqe-v54-map-branches {
    grid-template-columns: 1fr !important;
    gap: 10px;
  }

  .multi-mindmap-branch,
  .sqe-v54-branch {
    padding: 13px;
    border-radius: 13px;
  }

  .multi-mindmap-branch > strong,
  .sqe-v54-branch > strong {
    font-size: 14px;
    line-height: 1.35;
  }

  .multi-mindmap-branch > div,
  .sqe-v54-branch-items {
    display: grid;
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .multi-mindmap-branch span,
  .sqe-v54-branch-items span {
    display: block;
    width: 100%;
    padding: 8px 9px;
    font-size: 13px;
    line-height: 1.45;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }

  /* Digital Textbook */
  .sqe-v53-hero {
    padding: 18px;
    border-radius: 16px;
  }

  .sqe-v53-hero h3 {
    font-size: 23px;
  }

  .sqe-v53-jumpbar {
    top: 0;
    gap: 6px;
    padding: 9px 0 11px;
  }

  .sqe-v53-jumpbar button {
    min-height: 42px;
    padding: 8px 12px;
    font-size: 12px;
  }

  .sqe-v53-section {
    margin: 24px 0;
  }

  .sqe-v53-section-title {
    gap: 10px;
  }

  .sqe-v53-section-title h3 {
    font-size: 19px;
  }

  .sqe-v53-lecture-item {
    grid-template-columns: 34px minmax(0, 1fr);
    border-radius: 14px;
  }

  .sqe-v53-lecture-copy {
    padding: 14px;
  }

  .sqe-v53-lecture-copy h4 {
    font-size: 16px;
  }

  .sqe-v53-lecture-copy p,
  #textbookReader .sqe-v63-point-text,
  #textbookReader .ebook-page.sqe-v63-page > p:not(.sqe-v62-source-replaced) {
    font-size: 15px;
    line-height: 1.62;
  }

  #textbookReader .sqe-v63-study-block,
  #textbookReader .sqe-v62-visual,
  .sqe-v53-card,
  .sqe-v53-example {
    border-radius: 12px;
  }

  #textbookReader .sqe-v63-point {
    grid-template-columns: 25px minmax(0, 1fr);
    gap: 8px;
    padding: 10px;
  }

  #textbookReader .sqe-v62-visual-head {
    padding: 12px 13px;
  }

  #textbookReader .sqe-v62-visual-head strong {
    font-size: 15px;
  }

  /* Tables stay complete and become touch-scrollable. */
  #textbookReader .sqe-v62-table,
  #textbookReader .sqe-v62-native-table,
  .sqe-v53-table-card table,
  .property-v52-table {
    min-width: 560px;
    font-size: 13px;
  }

  #textbookReader .sqe-v62-table th,
  #textbookReader .sqe-v62-table td,
  #textbookReader .sqe-v62-native-table th,
  #textbookReader .sqe-v62-native-table td,
  .sqe-v53-table-card th,
  .sqe-v53-table-card td,
  .property-v52-table th,
  .property-v52-table td {
    padding: 10px 11px;
  }

  #textbookReader .sqe-v62-table-wrap,
  #textbookReader .sqe-v62-native-table-wrap,
  .sqe-v53-table-wrap,
  .property-v52-table-wrap {
    border-radius: 10px;
    touch-action: pan-x;
  }

  /* Flows stack vertically instead of forcing sideways reading. */
  #textbookReader .sqe-v62-flow,
  .sqe-v53-process,
  .property-v52-diagram {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    overflow: visible !important;
    padding-left: 13px;
    padding-right: 13px;
  }

  #textbookReader .sqe-v62-flow-step,
  .sqe-v53-step,
  .property-v52-node {
    width: 100%;
    min-width: 0 !important;
    flex-basis: auto !important;
  }

  #textbookReader .sqe-v62-flow-arrow {
    display: none;
  }

  .sqe-v53-process.flow .sqe-v53-step:not(:last-child)::after,
  .sqe-v53-process.timeline .sqe-v53-step:not(:last-child)::after,
  .property-v52-node:not(:last-child)::after {
    content: '↓';
    right: auto;
    left: 50%;
    top: auto;
    bottom: -13px;
    transform: translateX(-50%);
  }

  /* Highlight/annotation tools become a thumb-friendly bottom sheet. */
  .inline-annotator,
  .mindmap-inline-annotator,
  #mindmapAnnotatorV60,
  #mindmapAnnotatorV61 {
    position: fixed !important;
    left: 10px !important;
    right: 10px !important;
    top: auto !important;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
    width: auto !important;
    max-width: none !important;
    max-height: min(58vh, 460px);
    overflow: auto;
    z-index: 10030 !important;
    border-radius: 16px !important;
  }

  .inline-annotator .annotator-toolbar,
  .mindmap-inline-annotator .annotator-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
  }

  .inline-annotator .annotator-label,
  .mindmap-inline-annotator .annotator-label {
    flex: 1 1 100%;
  }

  .inline-annotator .annotator-colours,
  .mindmap-inline-annotator .annotator-colours {
    flex: 0 0 auto;
  }

  .inline-annotator .annotator-action,
  .mindmap-inline-annotator .annotator-action,
  .inline-annotator button,
  .mindmap-inline-annotator button {
    min-height: 42px;
    touch-action: manipulation;
  }

  .inline-annotator textarea,
  .mindmap-inline-annotator textarea {
    width: 100%;
    min-height: 110px;
    font-size: 16px;
  }

  .annotator-editor-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }
}

/* Small phones */
@media (max-width: 480px) {
  main,
  .app-layout {
    padding-left: 10px;
    padding-right: 10px;
  }

  .panel,
  .reader,
  .multi-mindmap-deck,
  .property-v52-textbook {
    border-radius: 14px;
  }

  .multi-mindmap-deck,
  .property-v52-textbook {
    padding: 11px;
  }

  .multi-mindmap-tab,
  .sqe-v54-map-tab {
    min-height: 42px;
    padding: 8px 12px;
    font-size: 12px;
  }

  .multi-mindmap-canvas,
  .sqe-v54-map-canvas {
    padding: 10px;
  }

  .multi-mindmap-branch,
  .sqe-v54-branch {
    padding: 11px;
  }

  .multi-mindmap-branch span,
  .sqe-v54-branch-items span {
    font-size: 12.5px;
  }

  .sqe-v53-hero,
  .sqe-v53-card,
  .sqe-v53-example,
  .sqe-v53-recall {
    padding: 14px;
  }

  #textbookReader .sqe-v62-table,
  #textbookReader .sqe-v62-native-table,
  .sqe-v53-table-card table,
  .property-v52-table {
    min-width: 520px;
  }

  #textbookReader .sqe-v63-heading {
    font-size: 1.02em;
  }
}

/* Respect users who prefer less animation. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}
