/**
 * RE::DACT A4 Page View Styles
 * ============================
 * Professional WYSIWYG document editor with A4 paper simulation.
 *
 * Features:
 * - Accurate A4 dimensions (210mm x 297mm)
 * - Standard margins (20mm) compatible with Word/Pages
 * - CSS transform-based zoom (preserves text layout)
 * - Print-ready styles
 * - Automatic page break visual indicators
 *
 * Version: 1.0.0
 */

/* ===========================================
   CSS CUSTOM PROPERTIES (A4 Dimensions)
   =========================================== */
:root {
  /* A4 Page Dimensions */
  --a4-width: 210mm;
  --a4-height: 297mm;

  /* Page Margins (Word-compatible) */
  --page-margin-top: 20mm;
  --page-margin-bottom: 20mm;
  --page-margin-left: 20mm;
  --page-margin-right: 20mm;

  /* Calculated Content Area */
  --content-width: calc(var(--a4-width) - var(--page-margin-left) - var(--page-margin-right));
  --content-height: calc(var(--a4-height) - var(--page-margin-top) - var(--page-margin-bottom));

  /* Zoom Level (controlled by JS) */
  --editor-zoom: 1;

  /* Typography */
  --editor-font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
  --editor-font-size: 12pt;
  --editor-line-height: 1.5;

  /* Workspace Theme */
  --workspace-bg: #e8e8e8;
  --page-bg: #ffffff;
  --page-shadow: 0 2px 8px rgba(0, 0, 0, 0.12), 0 4px 20px rgba(0, 0, 0, 0.08);
  --page-border: 1px solid #d0d0d0;
  --page-gap: 24px;

  /* Page Break Indicator */
  --page-break-color: #ccc;
  --page-break-text: 'Podział strony';
}

/* ===========================================
   EDITOR WORKSPACE (Desktop Background)
   =========================================== */
.editor-workspace {
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: var(--workspace-bg);
  background-image:
    radial-gradient(circle at 1px 1px, rgba(var(--color-overlay-dark), 0.03) 1px, transparent 0);
  background-size: 20px 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 40px 20px;
  box-sizing: border-box;
}

/* ===========================================
   ZOOM CONTAINER
   =========================================== */
.zoom-container {
  transform: scale(var(--editor-zoom));
  transform-origin: top center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--page-gap);
  transition: transform 0.15s ease-out;
}

/* Zoom Level Classes */
.zoom-50 { --editor-zoom: 0.5; }
.zoom-75 { --editor-zoom: 0.75; }
.zoom-100 { --editor-zoom: 1; }
.zoom-125 { --editor-zoom: 1.25; }
.zoom-150 { --editor-zoom: 1.5; }
.zoom-200 { --editor-zoom: 2; }

/* ===========================================
   A4 PAGE
   =========================================== */
.a4-page {
  width: var(--a4-width);
  min-height: var(--a4-height);
  height: auto;
  background: var(--page-bg);
  box-shadow: var(--page-shadow);
  border: var(--page-border);
  position: relative;
  box-sizing: border-box;

  /* Page Margins */
  padding: var(--page-margin-top) var(--page-margin-right) var(--page-margin-bottom) var(--page-margin-left);

  /* Page counter for CSS */
  counter-increment: page-counter;
}

/* First page - no top margin adjustment */
.a4-page:first-child {
  margin-top: 0;
}

/* Page Number Badge */
.a4-page::after {
  content: counter(page-counter);
  position: absolute;
  bottom: 8mm;
  right: 50%;
  transform: translateX(50%);
  font-size: 10pt;
  color: #999;
  font-family: var(--editor-font-family);
}

/* ===========================================
   PAGE CONTENT (Editable Area)
   =========================================== */
.page-content {
  width: 100%;
  min-height: var(--content-height);
  font-family: var(--editor-font-family);
  font-size: var(--editor-font-size);
  line-height: var(--editor-line-height);
  color: #1a1a1a;
  outline: none;

  /* Text handling */
  word-wrap: break-word;
  overflow-wrap: break-word;
  hyphens: auto;
  -webkit-hyphens: auto;

  /* Cursor */
  caret-color: var(--color-text-primary);
}

/* Placeholder text */
.page-content:empty::before {
  content: attr(data-placeholder);
  color: var(--color-text-muted);
  pointer-events: none;
  position: absolute;
}

.page-content:focus {
  outline: none;
}

/* ===========================================
   TYPOGRAPHY (Document Standards)
   =========================================== */
.page-content p {
  margin: 0 0 1em 0;
  text-align: justify;
  text-justify: inter-word;
}

.page-content h1 {
  font-size: 24pt;
  font-weight: 700;
  margin: 0 0 0.67em 0;
  line-height: 1.2;
  text-align: left;
}

.page-content h2 {
  font-size: 18pt;
  font-weight: 600;
  margin: 0.83em 0;
  line-height: 1.3;
}

.page-content h3 {
  font-size: 14pt;
  font-weight: 600;
  margin: 1em 0 0.5em;
  line-height: 1.35;
}

.page-content h4 {
  font-size: 12pt;
  font-weight: 600;
  margin: 1em 0 0.5em;
}

.page-content ul,
.page-content ol {
  margin: 0 0 1em 0;
  padding-left: 2em;
}

.page-content li {
  margin-bottom: 0.3em;
}

.page-content blockquote {
  margin: 1em 0;
  padding: 0.5em 0 0.5em 1em;
  border-left: 3px solid #ddd;
  color: #555;
  font-style: italic;
}

.page-content a {
  color: #1a73e8;
  text-decoration: underline;
}

.page-content table {
  border-collapse: collapse;
  width: 100%;
  margin: 1em 0;
}

.page-content th,
.page-content td {
  border: 1px solid #ddd;
  padding: 8px 12px;
  text-align: left;
}

.page-content th {
  background: #f5f5f5;
  font-weight: 600;
}

/* ===========================================
   PAGE BREAK CONTROLS (CSS Fragmentation)
   =========================================== */

/* Avoid breaking inside these elements */
.page-content h1,
.page-content h2,
.page-content h3,
.page-content h4,
.page-content blockquote,
.page-content figure,
.page-content table,
.page-content .no-break {
  break-inside: avoid;
  page-break-inside: avoid;
}

/* Keep headings with following content */
.page-content h1,
.page-content h2,
.page-content h3,
.page-content h4 {
  break-after: avoid;
  page-break-after: avoid;
}

/* Avoid breaking table rows */
.page-content table tr {
  break-inside: avoid;
  page-break-inside: avoid;
}

/* Forced page break */
.page-break {
  break-before: page;
  page-break-before: always;
  height: 0;
  display: block;
}

/* ===========================================
   PAGE BREAK INDICATOR (Visual)
   =========================================== */
.page-break-indicator {
  width: 100%;
  height: 0;
  position: relative;
  margin: 20px 0;
  border-top: 2px dashed var(--page-break-color);
}

.page-break-indicator::before {
  content: var(--page-break-text);
  position: absolute;
  top: -10px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--workspace-bg);
  padding: 0 12px;
  font-size: 10px;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  font-family: var(--editor-font-family);
}

/* ===========================================
   PAGE GAP (Visual separator between pages)
   =========================================== */
.page-gap {
  height: var(--page-gap);
  width: var(--a4-width);
  position: relative;
}

.page-gap::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 20%;
  right: 20%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--color-border-medium) 20%, var(--color-border-medium) 80%, transparent);
}

/* ===========================================
   PAGE RULER (Optional)
   =========================================== */
.page-ruler {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: var(--a4-width);
  height: 20px;
  background: var(--color-bg-tertiary);
  border-bottom: 1px solid var(--color-border-medium);
  z-index: 100;
  display: none; /* Enable with .show-ruler */
}

.editor-workspace.show-ruler .page-ruler {
  display: block;
}

.editor-workspace.show-ruler {
  padding-top: 60px;
}

/* ===========================================
   PAGE NUMBER FOOTER
   =========================================== */
.page-footer {
  position: absolute;
  bottom: 8mm;
  left: 0;
  right: 0;
  text-align: center;
  font-size: 10pt;
  color: #999;
  font-family: var(--editor-font-family);
  pointer-events: none;
}

.page-number {
  display: inline-block;
}

/* ===========================================
   ZOOM INDICATOR
   =========================================== */
.zoom-indicator {
  position: fixed;
  bottom: 20px;
  right: 20px;
  background: rgba(0, 0, 0, 0.7);
  color: white;
  padding: 8px 16px;
  border-radius: 20px;
  font-size: 12px;
  font-family: var(--editor-font-family);
  opacity: 0;
  transition: opacity 0.2s;
  pointer-events: none;
  z-index: 1000;
}

.zoom-indicator.visible {
  opacity: 1;
}

/* ===========================================
   PRINT STYLES
   =========================================== */
@page {
  size: A4;
  margin: 20mm;
}

@media print {
  /* Hide UI elements */
  .editor-workspace {
    background: none !important;
    padding: 0 !important;
    overflow: visible !important;
  }

  .zoom-container {
    transform: none !important;
    gap: 0 !important;
  }

  .a4-page {
    box-shadow: none !important;
    border: none !important;
    margin: 0 !important;
    page-break-after: always;
    break-after: page;
    width: 100% !important;
    height: auto !important;
    min-height: auto !important;
  }

  .a4-page:last-child {
    page-break-after: auto;
    break-after: auto;
  }

  /* Hide page gap */
  .page-gap {
    display: none !important;
  }

  /* Hide page number badge (print handles this) */
  .a4-page::after {
    display: none;
  }

  .page-footer {
    display: none;
  }

  /* Hide zoom indicator */
  .zoom-indicator {
    display: none !important;
  }

  /* Hide ruler */
  .page-ruler {
    display: none !important;
  }

  /* Ensure content fits */
  .page-content {
    min-height: auto !important;
  }
}

/* ===========================================
   RESPONSIVE ADJUSTMENTS
   =========================================== */
@media (max-width: 900px) {
  :root {
    --editor-zoom: 0.6;
  }

  .editor-workspace {
    padding: 20px 10px;
  }
}

/* ===========================================
   MOBILE: DISABLE A4 MODE COMPLETELY
   =========================================== */
@media (max-width: 768px) {
  /* Force disable A4 mode on mobile */
  .column-editor.a4-mode {
    background: var(--color-bg-paper-main) !important;
  }

  .column-editor.a4-mode .editor {
    padding: 24px 20px !important;
    padding-bottom: 80px !important;
    background: var(--color-bg-paper-main) !important;
    display: block !important;
    overflow-y: auto !important;
  }

  .column-editor.a4-mode .editor-workspace,
  .column-editor.a4-mode .zoom-container,
  .column-editor.a4-mode .a4-page {
    display: contents !important;
    width: auto !important;
    min-height: auto !important;
    height: auto !important;
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0 !important;
    transform: none !important;
  }

  .column-editor.a4-mode .page-content {
    min-height: auto !important;
    padding: 0 !important;
  }

  .column-editor.a4-mode .page-footer,
  .column-editor.a4-mode .page-gap,
  .column-editor.a4-mode .zoom-indicator {
    display: none !important;
  }

  /* Hide A4 page number badge on mobile */
  .a4-page::after {
    display: none !important;
  }
}

/* ===========================================
   EDITOR INTEGRATION (Override existing .editor)
   =========================================== */

/* When A4 mode is enabled */
.column-editor.a4-mode {
  display: flex;
  flex-direction: column;
  background: var(--workspace-bg);
  overflow: hidden;
}

.column-editor.a4-mode .editor {
  flex: 1;
  overflow: auto;
  padding: 0;
  background: var(--workspace-bg);
  display: flex;
  flex-direction: column;
  align-items: center;
}

.column-editor.a4-mode .editor-workspace {
  min-height: 100%;
}

/* Stats bar adjustment for A4 mode */
.column-editor.a4-mode .editor-stats {
  background: var(--workspace-bg);
  border-top: 1px solid #ddd;
}

/* ===========================================
   ANIMATION: Page appear
   =========================================== */
@keyframes page-appear {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.a4-page {
  animation: page-appear 0.3s ease-out;
}

/* New page being added */
.a4-page.new-page {
  animation: page-appear 0.4s ease-out;
}
