/* Legacy breadcrumb rules removed. Breadcrumb source of truth: /components/breadcrumb/breadcrumb.css?v=20260710-v6118-31-short-hero-all-devices */
html[data-schoolep-cycle="p"] {
  --resource-accent: #22c55e;
  --resource-accent-600: #166534;
  --resource-accent-rgb: 34 197 94;
  --resource-accent-dark: #4ade80;
  --resource-accent-dark-rgb: 74 222 128;
  --resource-video-accent-dark-600: #86efac;
  --resource-quiz-accent-dark-600: #f97316;
  --resource-quiz-surface-2: #fffaf3;
}

html[data-schoolep-cycle="m"] {
  --resource-accent: #ff9800;
  --resource-accent-600: #9a4300;
  --resource-accent-rgb: 255 152 0;
  --resource-accent-dark: #fb923c;
  --resource-accent-dark-rgb: 251 146 60;
  --resource-video-accent-dark-600: #fdba74;
  --resource-quiz-accent-dark-600: #f97316;
  --resource-quiz-surface-2: #fffaf3;
}

html[data-schoolep-cycle="s"] {
  --resource-accent: #9c27b0;
  --resource-accent-600: #6a1b9a;
  --resource-accent-rgb: 156 39 176;
  --resource-accent-dark: #a855f7;
  --resource-accent-dark-rgb: 168 85 247;
  --resource-video-accent-dark-600: #d8b4fe;
  --resource-quiz-accent-dark-600: #9333ea;
  --resource-quiz-surface-2: #faf5ff;
}

:root {
      --viewer-secondary: #6c757d;
      --gray-100: #f8f9fa; --gray-200: #e9ecef; --gray-300: #dee2e6;
      --gray-700: #495057; --gray-900: #212529;
      
      --accent: var(--resource-accent);
      --accent-600: var(--resource-accent-600);
      --txt-900: #0f172a;
      --bg-soft: rgb(var(--resource-accent-rgb) / 0.05);
      --surface: #ffffff;
      --card-bd: rgb(var(--resource-accent-rgb) / 0.16);
      --shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.03);
    }

.dark-mode {
      --viewer-secondary: #8c94a0;
      --gray-100: #1a1d21; --gray-200: #23272d; --gray-300: #2c3038;
      --gray-700: #ced4da; --gray-900: #f8f9fa;

      --accent: var(--resource-accent-dark); 
      --txt-900: #f8fafc;
      --bg-soft: rgb(var(--resource-accent-rgb) / 0.08);
      --surface: #0f172a;
      --card-bd: rgb(var(--resource-accent-rgb) / 0.16);
    }

.content-area .viewer-hero {
      display: grid;
      gap: 6px;
      place-items: center;
      width: 100%;
      margin: 0 0 16px;
      padding: 14px 18px;
      border: 1px solid var(--card-bd);
      border-radius: 18px;
      background:
        linear-gradient(135deg, rgb(var(--resource-accent-rgb) / 0.12) 0%, rgb(var(--resource-accent-rgb) / 0.035) 100%),
        var(--surface);
      box-shadow: var(--shadow-sm);
      text-align: center;
      box-sizing: border-box;
    }

.content-area .viewer-hero[hidden] { display: none !important; }

.content-area .viewer-hero-unit {
      max-width: 100%;
      color: var(--txt-900);
      font-size: clamp(26px, 1.45vw, 20px);
      font-weight: 900;
      line-height: 1.3;
      overflow-wrap: anywhere;
      word-break: break-word;
    }

.content-area .viewer-hero-item {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      max-width: 100%;
      padding: 7px 14px 6px;
      border: 1px solid rgb(var(--resource-accent-rgb) / 0.28);
      border-radius: 999px;
      background: rgb(var(--resource-accent-rgb) / 0.10);
      color: var(--accent-600);
      font-size: clamp(12px, 1.1vw, 15px);
      font-weight: 900;
      line-height: 1.22;
      overflow-wrap: anywhere;
      word-break: break-word;
    }

.content-area .viewer-hero-unit:empty,
    .content-area .viewer-hero-item:empty { display: none; }

.dark-mode .content-area .viewer-hero {
      background:
        linear-gradient(135deg, rgb(var(--resource-accent-rgb) / 0.14) 0%, rgb(var(--resource-accent-rgb) / 0.04) 100%),
        #1e293b;
      border-color: rgb(var(--resource-accent-rgb) / 0.18);
      box-shadow: 0 8px 25px rgba(0, 0, 0, 0.24);
    }

.dark-mode .content-area .viewer-hero-item {
      background: rgb(var(--resource-accent-rgb) / 0.14);
      border-color: rgb(var(--resource-accent-rgb) / 0.26);
      color: var(--accent);
    }

@media (max-width: 720px) {
.content-area .viewer-hero {
    gap: 6px;
    margin: 0 0 12px;
    padding: 11px 10px;
    border-radius: 15px;
  }
.content-area .viewer-hero-unit {
    font-size: 14px;
    line-height: 1.28;
  }
.content-area .viewer-hero-item {
    padding: 5px 10px 4px;
    font-size: 12px;
    line-height: 1.26;
  }
.viewer-container .panel header {
    justify-content: center;
    padding: 10px 12px;
  }
.viewer-container .panel header h2 {
    font-size: 16px;
    gap: 8px;
    justify-content: center;
    text-align: center;
    width: 100%;
  }
.viewer-container .panel header h2 i {
  font-size: 14px;
}
.viewer-container .panel header h2 .panel-pdf-icon {
  width: 22px;
  height: 22px;
    position: relative;
  top: -2px;
}
.viewer-container .panel header h2 span {
    position: relative;
    top: 2px;
  }
.content-area .toolbar .btn {
  padding: 7px 14px;
  font-size: 12px;
  gap: 6px;
  border-radius: 10px;
}
.content-area .toolbar .btn span {
  position: relative;
  top: 2px;
}
.viewer-container .wb-fab {
  width: 34px;
  height: 34px;
  font-size: 13px;
}
.viewer-container .pdf-ribbon {
  padding: 8px 6px;
  gap: 8px;
  border-radius: 16px;
}
.viewer-container .ribbon-group {
  gap: 4px;
  padding-bottom: 8px;
}
.viewer-container .r-btn {
  width: 26px;
  height: 26px;
  font-size: 11px;
}
.viewer-container .r-color {
  width: 16px;
  height: 16px;
}
.viewer-container .color-grid {
  gap: 4px;
}
}

.viewer-container { display: grid; grid-template-columns: 1fr; gap: 24px; margin-bottom: 24px; transition: opacity 0.08s ease;}

.viewer-container.is-fast-lang-switching { opacity: 0.985; }

.panel { background: var(--surface); border: 1px solid var(--card-bd); border-radius: 16px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; overflow: hidden; }

.panel header { padding: 16px 20px; background: var(--bg-soft); border-bottom: 1px solid var(--card-bd); display: flex; align-items: center; justify-content: center; }

.panel header h2 { margin: 0; font-size: 20px; font-weight: 800; display: flex; gap: 10px; align-items: center; justify-content: center; text-align: center; width: 100%; color: var(--txt-900); }

.panel header h2 i,
.panel header h2 .panel-pdf-icon {
  color: var(--accent);
  flex: 0 0 auto;
}

.panel header h2 i {
  font-size: 20px;
}

.panel header h2 .panel-pdf-icon {
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: center;
  position: relative;
  top: 0;
}

.panel header h2 .panel-pdf-icon svg {
  width: 100%;
  height: 100%;
  display: block;
  fill: currentColor;
}

.dark-mode .panel header h2 { color: #f8fafc; }

.panel .body { padding: 20px; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative;}

.toolbar { display: flex; gap: 12px; padding: 16px 20px; border-top: 1px dashed var(--card-bd); background: var(--bg-soft); justify-content: center; flex-wrap: wrap; z-index: 5;}

.gallery { display: flex; position: relative; gap: 14px; padding: 16px; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-behavior: auto; overflow-anchor: none; background: rgba(0,0,0,0.02); border-bottom-left-radius: 16px; border-bottom-right-radius: 16px; min-height: 212px; align-items: flex-start; justify-content: flex-start; }

/* V229.96: final thumbnail side is known before bytes decode. */
html[lang="ar"] .gallery { direction: rtl; }
html:not([lang="ar"]) .gallery { direction: ltr; }

.dark-mode .gallery { background: rgba(0,0,0,0.2); }

/* Stable page slots: no center -> edge relayout while loading. */
.gallery .thumb{contain:layout paint;flex-shrink:0}
.gallery.is-loading .thumb{transition:none}
html[lang="ar"] .gallery .thumb{scroll-snap-align:end}
html:not([lang="ar"]) .gallery .thumb{scroll-snap-align:start}

.thumb { flex: 0 0 auto; width: 130px; height: 180px; border: 1px solid var(--card-bd); border-radius: 12px; overflow: hidden; position: relative; cursor: pointer; scroll-snap-align: start; transition: transform 0.2s, box-shadow 0.2s; background: var(--surface); }

.thumb:hover { transform: translateY(-4px); box-shadow: 0 8px 20px rgba(0,0,0,0.1); border-color: var(--accent); }

.thumb img { width: 100%; height: 100%; object-fit: contain; display:block; }

.page-badge { position: absolute; top: 6px; right: 6px; background: rgba(0,0,0,0.7); color: #fff; font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 20px; backdrop-filter: blur(4px); pointer-events: none;}

.thumb.active { outline: 3px solid var(--accent); outline-offset: -1px; }

.gallery.is-loading { align-items: flex-start; justify-content: flex-start; }

.viewer-note { width: 100%; padding: 18px 16px; text-align: center; font-size: 14px; font-weight: 700; color: var(--viewer-secondary); }

.viewer-note i { color: var(--accent); margin-inline-end: 8px; }

.viewer-note.is-error { color: #dc2626; }

.dark-mode .viewer-note { color: #cbd5e1; }

.pdf-viewer { 
      width: 100%; 
      position: relative; 
      border-radius: 12px; 
      overflow: hidden;
      height: 92dvh;
      min-height: 760px;
      background: var(--surface);
      box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    }

.pdf-frame {
      position: absolute;
      top: 0; left: 0;
      width: 100%; height: 100%;
      border: none;
      opacity: 1;
      transition: none;
      z-index: 1;
    }

.pdf-frame.is-ready { opacity: 1; }

.whiteboard-canvas {
      position: absolute;
      top: 0; left: 0;
      width: 100%; height: 100%;
      z-index: 10;
      pointer-events: none; 
      touch-action: none;
    }

.whiteboard-canvas.active {
      pointer-events: auto; 
      cursor: crosshair;
      box-shadow: inset 0 0 0 3px var(--accent);
    }

.wb-overlay-controls {
      position: absolute;
      top: 12px;
      left: 12px; 
      z-index: 30;
      display: flex;
      flex-direction: column; 
      align-items: flex-start; 
      gap: 8px;
      direction: ltr; 
    }

.wb-fab {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      background: var(--surface);
      border: 1px solid var(--card-bd);
      color: var(--txt-700);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 16px;
      cursor: pointer;
      box-shadow: 0 4px 12px rgba(0,0,0,0.15);
      transition: all 0.2s ease;
      flex-shrink: 0;
      outline: none;
    }

.wb-fab:hover { color: var(--accent); transform: scale(1.05); }

.wb-fab.active { background: var(--accent); color: #fff; border-color: var(--accent); }

.dark-mode .wb-fab { background: #1e293b; color: #cbd5e1; border-color: rgb(var(--resource-accent-rgb) / 0.25); }

.dark-mode .wb-fab:hover { color: var(--accent); }

.dark-mode .wb-fab.active { background: var(--accent); color: #0f172a; }

.pdf-ribbon {
      background: var(--surface);
      border: 1px solid var(--card-bd);
      border-radius: 20px;
      padding: 10px 8px;
      display: flex;
      flex-direction: column; 
      gap: 12px;
      box-shadow: 0 4px 12px rgba(0,0,0,0.15);
      align-items: center;
      transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
      transform-origin: top left;
      
      max-height: calc(90dvh - 80px);
      overflow-y: auto;
      scrollbar-width: none;
    }

.pdf-ribbon::-webkit-scrollbar { display: none; }

.pdf-ribbon.hidden {
      opacity: 0;
      pointer-events: none;
      transform: translateY(-10px) scale(0.95); 
    }

.ribbon-group {
      display: flex;
      flex-direction: column; 
      gap: 6px;
      align-items: center;
      border-bottom: 1px solid var(--card-bd);
      border-right: none;
      padding-bottom: 10px;
      padding-right: 0;
      width: 100%;
    }

html[dir="rtl"] .ribbon-group {
      border-left: none;
      padding-left: 0;
    }

.ribbon-group:last-child { border: none !important; padding: 0 !important; }

.color-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 6px;
    }

.r-btn {
      width: 32px; height: 32px; 
      border-radius: 50%; border: none; background: transparent;
      color: var(--txt-700); display: flex; align-items: center; justify-content: center;
      font-size: 14px; cursor: pointer; transition: all 0.2s ease; outline: none;
    }

.r-btn:hover { background: var(--bg-soft); color: var(--accent); }

.r-btn.active { background: rgb(var(--resource-accent-rgb) / 0.15); color: var(--accent-600); }

.dark-mode .r-btn.active { color: var(--accent); }

.r-color {
      width: 20px; height: 20px; 
      border-radius: 50%; border: 2px solid transparent;
      cursor: pointer; transition: transform 0.2s; padding: 0; flex-shrink: 0;
    }

.r-color:hover { transform: scale(1.15); }

.r-color.active { border-color: var(--txt-900); transform: scale(1.15); box-shadow: 0 0 0 2px var(--surface), 0 0 0 3px var(--accent); }

.r-color[data-color="accent"] { background: var(--accent); }

.r-color[data-color="theme"] { background: #0f172a; }

.dark-mode .r-color[data-color="theme"] { background: #f8fafc; }

.r-color[data-color="#3b82f6"] { background: #3b82f6; }

.r-color[data-color="#ef4444"] { background: #ef4444; }

.r-size { position: relative; }

.r-size::after { content: ""; display: block; border-radius: 50%; background: currentColor; }

.r-size[data-size="2"]::after { width: 4px; height: 4px; }

.r-size[data-size="4"]::after { width: 8px; height: 8px; }

.r-size[data-size="8"]::after { width: 12px; height: 12px; }

.r-clear { color: #dc2626 !important; }

.r-clear:hover { background: #dcfce7 !important; }

.dark-mode .r-clear { color: #ef4444 !important; }

.dark-mode .r-clear:hover { background: rgb(var(--resource-accent-rgb) / 0.12) !important; }

@media (max-width: 991px) {
.pdf-viewer {
    width: 100%;
    height: clamp(420px, 68svh, 980px);
    min-height: 420px;
    max-height: 980px;
    border-radius: 10px;
    box-sizing: border-box;
    overflow: hidden;
  }
.pdf-frame,
  .whiteboard-canvas {
    top: 0;
    left: 0;
    inset: auto;
    width: 100%;
    height: 100%;
  }
.panel .body {
    padding: 8px;
  }
.toolbar {
    padding: 12px;
  }
.wb-overlay-controls {
    top: 8px;
    left: 8px;
  }
}

@media (min-width: 992px) {
.pdf-viewer {
    width: 100%;
    height: clamp(760px, 62vh, 1180px);
    min-height: 760px;
    max-height: 1180px;
    border-radius: 12px;
    box-sizing: border-box;
    overflow: hidden;
  }
.pdf-frame,
  .whiteboard-canvas {
    top: 0;
    left: 0;
    inset: auto;
    width: 100%;
    height: 100%;
  }
.panel .body {
    padding: 20px;
  }
.toolbar {
    padding: 16px 20px;
  }
.wb-overlay-controls {
    top: 12px;
    left: 12px;
  }
}

.btn { background: var(--surface); border: 2px solid var(--card-bd); padding: 10px 24px; border-radius: 12px; text-decoration: none; color: var(--txt-900); display: inline-flex; gap: 10px; align-items: center; font-weight: 800; cursor: pointer; transition: all 0.2s ease; font-size: 15px; }

.btn:hover { background: var(--bg-soft); border-color: var(--accent); transform: translateY(-2px); }

.btn.is-unavailable,
.btn.is-unavailable:hover { opacity: .62; cursor: not-allowed; transform: none; border-style: dashed; background: var(--bg-soft); }

.btn.btn-primary { background: var(--accent); border-color: var(--accent); color: #fff; box-shadow: 0 4px 15px rgb(var(--resource-accent-rgb) / 0.20); }

.btn.btn-primary:hover { background: var(--accent-600); border-color: var(--accent-600); color: #fff; transform: translateY(-3px); box-shadow: 0 6px 20px rgb(var(--resource-accent-rgb) / 0.30); }

.btn.btn-draw { border-color: var(--viewer-secondary); color: var(--viewer-secondary); }

.btn.btn-draw:hover { border-color: var(--accent); color: var(--accent); }

.btn.btn-draw.active { background: var(--accent); border-color: var(--accent); color: #fff; box-shadow: 0 4px 15px rgb(var(--resource-accent-rgb) / 0.30); }

.dark-mode .btn { color: #f8fafc; }

.dark-mode .btn.btn-primary { color: #fff; }

.dark-mode .btn.btn-draw { border-color: #94a3b8; color: #94a3b8; }

.dark-mode .btn.btn-draw:hover { border-color: var(--accent); color: var(--accent); }

.dark-mode .btn.btn-draw.active { color: #fff; }

.file-type-pdf { color: #e74c3c !important; }

.file-type-word { color: #2b579a !important; }

.file-type-powerpoint { color: #d24726 !important; }

.pswp__button--download { background: none !important; color: white; display: flex !important; align-items: center; justify-content: center; font-size: 16px; float: right; }

.pswp__button--download i { margin-top: -2px; }

.pswp__counter { direction: ltr; font-family: sans-serif; font-weight: 600; }

.pswp__bg { background: rgba(15, 23, 42, 0.95); backdrop-filter: blur(10px); }

/* V229.88 neutral first-load state; failure copy is rendered only after resolution. */
.viewer-note.is-pending{color:var(--viewer-secondary);opacity:.62}

/* SchoolEP V229.95 — Level-4 stable media shell.
   Spinner is an absolute overlay: it never changes gallery/PDF geometry and
   never delays the underlying image/iframe request. */
.viewer-media-loader{
  position:absolute;
  inset:0;
  z-index:4;
  display:grid;
  place-items:start center;
  padding-top:12px;
  box-sizing:border-box;
  pointer-events:none;
  background:transparent;
  opacity:1;
  transition:opacity .12s linear;
}
.viewer-media-loader--pdf{padding-top:16px}
.viewer-media-loader[hidden]{display:none}
.viewer-spinner{
  width:38px;
  height:38px;
  box-sizing:border-box;
  border-radius:50%;
  border:4px solid rgb(var(--resource-accent-rgb) / .16);
  border-top-color:var(--accent);
  animation:schoolepViewerSpin .72s linear infinite;
  will-change:transform;
}
.viewer-media-loader--pdf .viewer-spinner{width:44px;height:44px;border-width:4px}
@keyframes schoolepViewerSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.viewer-spinner{animation-duration:1.8s}}
.gallery[aria-busy="true"]{cursor:progress}
.gallery[aria-busy="false"],.pdf-viewer{cursor:default}
/* The media slots own their size before bytes arrive, preventing CLS. */
#thumbStrip{contain:layout paint;min-height:212px}
#pdfViewerWrapper{contain:layout paint}
@media (max-width:720px){
  .viewer-spinner{width:32px;height:32px;border-width:3px}
  .viewer-media-loader--pdf .viewer-spinner{width:38px;height:38px;border-width:3px}
}

