 /* ========================================
   Back BUtton (on course pages)
   ======================================== */
 .back-button {
     align-self: flex-start;

     color: #64748b;
     font-size: 20px;
     font-weight: 500;
     text-decoration: none;

     margin-bottom: -8px;

     transition: color 0.2s ease;
 }

 .back-button:hover {
     color: #01a2e0;
 }

 /* ========================================
   Video Container
   ======================================== */

 .video-container {
     width: 100%;
     padding: 32px 24px;
     background: #ffffff;
     border: 1px solid #e2e8f0;
     border-left: 4px solid #7b22d4;
     border-radius: 12px;
     box-shadow: 0 1px 3px rgba(0, 0, 0, 0.02);
     text-align: left;
     /* Keeps all text/headings aligned to the left */
 }

 .video-container h2 {
     margin: 0 0 12px 0;
 }

 .video-container iframe {
     display: block;
     /* Required for auto margins to center block elements */
     margin: 0 auto;
     /* Centers the iframe horizontally */
     max-width: 100%;
     border-radius: 8px;
     box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
 }

 /* ========================================
   Instructions
   ======================================== */

 .instructions {
     background: #ffffff;
     border: 1px solid #e2e8f0;
     border-left: 4px solid #3b82f6;
     border-radius: 8px;
     padding: 20px 24px;
     box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
 }

 .instructions h3 {
     margin: 0 0 12px 0;
     font-size: 20px;
     font-weight: 600;
     color: #1e293b;
 }

 .instructions ol {
     margin: 0;
     padding-left: 20px;
     font-size: 16px;
     color: #475569;
 }

 .instructions li {
     margin-bottom: 8px;
 }

 .instructions li:last-child {
     margin-bottom: 0;
 }

 /* -------------------------
   VIEWER SECTION
   ------------------------- */
 main {
     max-width: 1200px;
     margin: 0 auto;
     padding: 32px 24px;
     display: flex;
     flex-direction: column;
     gap: 24px;
 }

 .viewer-section {
     display: grid;
     grid-template-columns: 35% 65%;
     grid-template-rows: 1fr auto;
     background: #ffffff;
     border: 1px solid #e2e8f0;
     border-radius: 12px;
     overflow: hidden;
     box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
     transition: transform 0.2s ease, box-shadow 0.2s ease;
 }

 .viewer-section:hover {
     box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.08);
 }

 /* Active viewer highlight state */
 .viewer-section.active {
     border-color: #3b82f6;
 }

 .description {
     padding: 32px;
     grid-row: 1 / 3;
     border-right: 1px solid #f1f5f9;
     background: #ffffff;
 }

 .description h2 {
     margin: 0 0 12px 0;
     font-size: 22px;
     font-weight: 600;
     color: #0f172a;
 }

 .description ul {
     margin: 0;
     color: #64748b;
     font-size: 18px;
     line-height: 1.6;
 }

 /* -------------------------
   CANVAS
   ------------------------- */

 /* Container holding the canvas and overlay */
 /* This way we can add overlays to the main viewer and make it always stay above the timeline no matter
the screen size */
 .viewport-wrapper {
     position: relative;
     grid-column: 2;
     grid-row: 1;
     width: 100%;
     height: 380px;
 }

.viewer-loading {
    position: absolute;
    inset: 0;

    display: flex;
    align-items: center;
    justify-content: center;

    background: #f1f5f9;
    color: #64748b;

    font-size: 1.05rem;
    font-weight: 500;

    z-index: 10;
}

 canvas {
     width: 100%;
     height: 100%;
     display: block;
     cursor: pointer;
     background-color: #1e293b;
     /* Fallback viewport bg */
 }

 /* The hint to drag to rotate on the homepage, disappears (see orbitalControlsCreation.js) */
 .interaction-hint {
     position: absolute;
     bottom: 15px;
     left: 50%;
     transform: translateX(-50%);

     padding: 6px 12px;
     border-radius: 20px;

     font-size: 1.0rem;
     white-space: nowrap;

     background: rgba(255, 255, 255, 0.75);
     backdrop-filter: blur(4px);

     opacity: 0.80;
     transition: opacity 5s ease;

     pointer-events: none;
 }

 .interaction-hint.hidden {
     opacity: 0;
 }


 /* -------------------------
   ANIMATION CONTROLS
   ------------------------- */
 .animation-controls {
     display: flex;
     align-items: center;
     gap: 8px;
     padding: 10px 16px;
     background: #0f172a;
     /* Sleek dark bar matching 3D viewport */
     color: #f8fafc;
     grid-column: 2;
     grid-row: 2;
     border-top: 1px solid #334155;
 }

 .animation-controls button {
     padding: 6px 12px;
     cursor: pointer;
     background: #1e293b;
     border: 1px solid #334155;
     color: #f1f5f9;
     border-radius: 6px;
     font-size: 12px;
     font-weight: 500;
     transition: all 0.15s ease;
 }

 .animation-controls button:hover {
     background: #3b82f6;
     border-color: #3b82f6;
     color: #ffffff;
 }

 .animation-controls button:active {
     transform: translateY(1px);
 }

 .animation-timeline {
     flex: 1;
     cursor: pointer;
     accent-color: #3b82f6;
     /* Native color accent for modern browsers */
     height: 6px;
     border-radius: 3px;
 }

 .animation-time {
     min-width: 95px;
     font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
     font-size: 12px;
     color: #94a3b8;
     text-align: right;
 }