/* Local Font Embedding */
@font-face {
  font-family: 'Nirmala UI';
  src: url('../../assets/fonts/Nirmala.ttc') format('truetype');
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: 'Times New Roman';
  src: url('../../assets/fonts/times.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: 'Georgia';
  src: url('../../assets/fonts/georgia.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: 'Arial';
  src: url('../../assets/fonts/arial.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  margin: 0;
  padding: 0;
  background-color: #E5E5E5;
  font-family: var(--font-family-body, 'Nirmala UI', 'Times New Roman', serif);
  color: var(--color-text-dark, #1A1A1A);
  -webkit-font-smoothing: antialiased;
}

/* Master A4 Page Container */
.panchang-page {
  position: relative;
  width: 210mm;
  height: 297mm;
  max-width: 210mm;
  max-height: 297mm;
  margin: 0 auto;
  padding: var(--size-page-padding, 4.5mm);
  background-color: var(--color-page-bg, #FCFBF7);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* Ornamental Outer Border Frame */
.panchang-page::before {
  content: "";
  position: absolute;
  top: 3.5mm;
  left: 3.5mm;
  right: 3.5mm;
  bottom: 3.5mm;
  border: 2px solid var(--color-gold-border, #C59B27);
  outline: 1px solid var(--color-primary, #7A0C16);
  outline-offset: -3.5px;
  pointer-events: none;
  z-index: 10;
}

/* Corner Filigrees */
.corner-ornament {
  position: absolute;
  width: 14mm;
  height: 14mm;
  z-index: 15;
  pointer-events: none;
  background-image: url('../../assets/images/border-ornament.svg');
  background-size: contain;
  background-repeat: no-repeat;
}
.corner-tl { top: 3.5mm; left: 3.5mm; }
.corner-tr { top: 3.5mm; right: 3.5mm; transform: scaleX(-1); }
.corner-bl { bottom: 3.5mm; left: 3.5mm; transform: scaleY(-1); }
.corner-br { bottom: 3.5mm; right: 3.5mm; transform: scale(-1, -1); }

/* Center Watermark */
.watermark {
  position: absolute;
  top: 54%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--watermark-size, 185mm);
  height: var(--watermark-size, 185mm);
  opacity: var(--watermark-opacity, 0.09);
  pointer-events: none;
  z-index: 1;
}
.watermark img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Page Inner Content */
.page-content {
  position: relative;
  z-index: 5;
  display: flex;
  flex-direction: column;
  height: 100%;
  justify-content: space-between;
}

/* ========================================================
   A. HEADER PARTIAL
   ======================================================== */
.header-container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: linear-gradient(135deg, var(--color-primary-dark, #50060E) 0%, var(--color-primary, #7A0C16) 50%, var(--color-primary-dark, #50060E) 100%);
  border: 1.5px solid var(--color-gold-border, #C59B27);
  border-radius: 4px;
  padding: 1.5mm 3mm;
  min-height: var(--size-header-height, 24mm);
  box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}

.header-photo-col {
  flex: 0 0 22mm;
  display: flex;
  align-items: center;
  justify-content: center;
}
.header-photo-col img {
  width: 21mm;
  height: 23mm;
  max-width: 100%;
  object-fit: contain;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,0.4));
}

.header-center-col {
  flex: 1 1 auto;
  text-align: center;
  padding: 0 2mm;
}
.header-business-te {
  font-family: var(--font-family-telugu, 'Nirmala UI', sans-serif);
  font-size: var(--size-font-header-title, 17pt);
  font-weight: 700;
  color: #FFF3C4;
  text-shadow: 1px 1px 2px rgba(0,0,0,0.6);
  letter-spacing: 0.3px;
  line-height: 1.15;
}
.header-business-en {
  font-family: var(--font-family-heading, Georgia, serif);
  font-size: 8.5pt;
  font-weight: 600;
  color: var(--color-secondary, #D4AF37);
  letter-spacing: 1.2px;
  text-transform: uppercase;
  margin-top: 0.5mm;
}
.header-subtitle {
  font-size: var(--size-font-header-sub, 9pt);
  color: #FFFFFF;
  font-weight: 500;
  margin-top: 0.6mm;
  line-height: 1.2;
}
.header-contact-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4mm;
  font-size: var(--size-font-header-contact, 7.8pt);
  color: #FFEAA7;
  margin-top: 0.8mm;
  font-family: var(--font-family-english, Arial, sans-serif);
}
.header-contact-item {
  display: inline-flex;
  align-items: center;
  gap: 1mm;
}

.header-right-col {
  flex: 0 0 25mm;
  display: flex;
  align-items: center;
  justify-content: center;
}
.header-right-col img {
  width: 24mm;
  height: 20mm;
  max-width: 100%;
  object-fit: contain;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,0.4));
}

/* ========================================================
   B. SLOKA BOX
   ======================================================== */
.sloka-box {
  background-color: #FFFDF9;
  border: 1px solid var(--color-gold-border, #C59B27);
  border-radius: 3px;
  padding: 1mm 2mm;
  margin-top: 1mm;
  text-align: center;
  min-height: var(--size-sloka-box-height, 8mm);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.sloka-line {
  font-family: var(--font-family-telugu, 'Nirmala UI', sans-serif);
  font-size: var(--size-font-sloka, 8.2pt);
  font-weight: 600;
  color: var(--color-primary-dark, #50060E);
  line-height: 1.25;
}

/* ========================================================
   C. INFO STRIP (3 Boxes)
   ======================================================== */
.info-strip-container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 1.5mm;
  margin-top: 1mm;
  min-height: var(--size-info-strip-height, 8mm);
}
.info-box {
  background-color: var(--color-strip-box-bg, #FDFBF7);
  border: 1px solid var(--color-strip-border, #C59B27);
  border-radius: 3px;
  padding: 0.8mm 1.5mm;
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.info-box-title {
  font-size: var(--size-font-strip-title, 7pt);
  font-weight: 700;
  color: var(--color-primary, #7A0C16);
  text-transform: uppercase;
  letter-spacing: 0.3px;
  line-height: 1.1;
}
.info-box-val {
  font-size: var(--size-font-strip-val, 8pt);
  font-weight: 600;
  color: var(--color-text-dark, #1A1A1A);
  margin-top: 0.4mm;
  line-height: 1.15;
}

/* ========================================================
   D. MONTH BANNER
   ======================================================== */
.month-banner-container {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 1mm;
  margin-bottom: 0.8mm;
  min-height: var(--size-month-banner-height, 8.5mm);
  position: relative;
}
.banner-ornament-line {
  flex: 1;
  height: 1.5px;
  background: linear-gradient(90deg, transparent, var(--color-secondary, #D4AF37), var(--color-primary, #7A0C16));
}
.banner-ornament-line.right {
  background: linear-gradient(90deg, var(--color-primary, #7A0C16), var(--color-secondary, #D4AF37), transparent);
}
.month-banner-title {
  padding: 0 4mm;
  font-family: var(--font-family-heading, Georgia, serif);
  font-size: var(--size-font-banner, 17pt);
  font-weight: 700;
  letter-spacing: 2px;
  color: var(--color-primary, #7A0C16);
  text-shadow: 0.5px 0.5px 1px rgba(212, 175, 55, 0.4);
  display: flex;
  align-items: center;
  gap: 2mm;
}
.banner-flourish {
  color: var(--color-secondary, #D4AF37);
  font-size: 13pt;
}

/* ========================================================
   E. MAIN GRID (Transposed: 7 Rows = SUN..SAT)
   ======================================================== */
.calendar-grid-container {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  border: 1.5px solid var(--color-grid-border, #BFA575);
  background-color: var(--color-grid-bg, #FFFFFF);
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 1mm;
}

.grid-row {
  flex: 1 1 0;
  display: grid;
  /* Columns dynamically set by template: weekday col + week cols */
  border-bottom: 1px solid var(--color-grid-border, #BFA575);
  min-height: 0; /* for flex shrinking */
}
.grid-row:last-child {
  border-bottom: none;
}

/* Left Weekday Column */
.weekday-col {
  background: linear-gradient(180deg, rgba(249, 246, 240, 0.92) 0%, rgba(239, 233, 221, 0.92) 100%);
  border-right: 1.5px solid var(--color-grid-border, #BFA575);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 1mm 1.5mm;
  text-align: center;
}
.weekday-en {
  font-family: var(--font-family-english, Arial, sans-serif);
  font-size: var(--size-font-weekday-en, 11pt);
  font-weight: 800;
  letter-spacing: 0.8px;
  line-height: 1.1;
  color: var(--color-text-dark, #1A1A1A);
}
.weekday-te {
  font-family: var(--font-family-telugu, 'Nirmala UI', sans-serif);
  font-size: var(--size-font-weekday-te, 8pt);
  font-weight: 600;
  color: var(--color-text-muted, #4A4A4A);
  margin-top: 0.6mm;
  line-height: 1.1;
}
.row-sun .weekday-en {
  color: var(--color-sunday, #C00000);
}
.row-sun .weekday-te {
  color: var(--color-text-red, #B30000);
}

/* Day Cell */
.day-cell {
  position: relative;
  border-right: 1px solid var(--color-cell-border, #D5C4A1);
  padding: 1mm 1.5mm 1mm 1.5mm;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background-color: rgba(255, 255, 255, 0.75);
  overflow: hidden;
}
.day-cell:last-child {
  border-right: none;
}

/* Highlights */
.day-cell.highlight-purnima {
  background-color: rgba(255, 249, 230, 0.88);
}
.day-cell.highlight-amavasya {
  background-color: rgba(242, 243, 245, 0.88);
}
.day-cell.highlight-special {
  background-color: rgba(253, 242, 233, 0.88);
}

/* Cell Date Header (Top Right) */
.cell-top-bar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  line-height: 1;
}
.cell-top-left-sun {
  font-size: calc(var(--size-font-day-data, 6.8pt) * 0.95);
  color: #555555;
  font-weight: 500;
  white-space: nowrap;
}
.cell-date-num {
  font-family: var(--font-family-numbers, 'Times New Roman', Georgia, serif);
  font-size: var(--size-font-date-num, 15pt);
  font-weight: 800;
  color: #111111;
  line-height: 0.9;
  margin-left: auto;
}
.is-sunday .cell-date-num,
.has-holiday .cell-date-num {
  color: var(--color-sunday, #C00000);
}

/* Cell Panchang Astronomical Body Data */
.cell-panchang-data {
  display: flex;
  flex-direction: column;
  gap: 0.25mm;
  font-size: var(--size-font-day-data, 6.8pt);
  line-height: 1.15;
  color: #222222;
  margin-top: 0.3mm;
}
.data-line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.field-tag {
  font-weight: 700;
  color: var(--color-primary-dark, #50060E);
  margin-right: 0.8mm;
  font-size: calc(var(--size-font-day-data, 6.8pt) * 0.96);
}
.field-val {
  font-weight: 500;
  color: #222;
}
.data-line-sun {
  color: #444;
  font-size: calc(var(--size-font-day-data, 6.8pt) * 0.95);
}

/* Cell Bottom: Festivals and Special Notes */
.cell-festivals {
  margin-top: auto;
  padding-top: 0.4mm;
  display: flex;
  align-items: center;
  gap: 1mm;
  flex-wrap: wrap;
}
.festival-badge {
  font-size: var(--size-font-festival, 7.2pt);
  font-weight: 700;
  color: var(--color-text-red, #B30000);
  line-height: 1.1;
  display: inline-flex;
  align-items: center;
  gap: 0.8mm;
}
.festival-icon {
  width: 3.2mm;
  height: 3.2mm;
  display: inline-block;
  vertical-align: middle;
}

/* Empty Cell */
.empty-cell {
  background-color: rgba(250, 248, 245, 0.55);
  border-right: 1px solid var(--color-cell-border, #D5C4A1);
}
.empty-cell:last-child {
  border-right: none;
}

/* Side Note Panel (When row/col is designated for notes) */
.side-note-cell {
  background: linear-gradient(135deg, rgba(255, 253, 248, 0.85) 0%, rgba(250, 245, 235, 0.85) 100%);
  border-right: 1px solid var(--color-cell-border, #D5C4A1);
  padding: 1.2mm 1.5mm;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.side-note-cell:last-child {
  border-right: none;
}
.side-note-title {
  font-size: 7.2pt;
  font-weight: 700;
  color: var(--color-primary, #7A0C16);
  border-bottom: 1px dashed var(--color-gold-border, #C59B27);
  padding-bottom: 0.4mm;
  margin-bottom: 0.8mm;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}
.side-note-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.5mm;
}
.side-note-item {
  font-size: 6.8pt;
  line-height: 1.15;
  color: #333333;
}
.side-note-item-date {
  font-weight: 700;
  color: var(--color-primary-dark, #50060E);
  margin-right: 0.8mm;
}
.side-note-text {
  font-size: 6.8pt;
  line-height: 1.2;
  color: #333333;
}

/* ========================================================
   G. FOOTER LEGEND
   ======================================================== */
.footer-container {
  border: 1px solid var(--color-gold-border, #C59B27);
  background: linear-gradient(180deg, #FFFDF8 0%, #F8F4EC 100%);
  border-radius: 3px;
  padding: 1mm 2.5mm;
  min-height: var(--size-footer-height, 9mm);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.4mm;
}
.footer-legend-line {
  font-size: var(--size-font-footer-legend, 6.5pt);
  font-weight: 700;
  color: var(--color-primary-dark, #50060E);
  text-align: center;
  letter-spacing: 0.3px;
  line-height: 1.2;
}
.footer-note-line {
  font-size: var(--size-font-footer-note, 6.8pt);
  font-style: italic;
  color: #555555;
  text-align: center;
  line-height: 1.15;
}
