/* ============================================================
   Roster — planning.css
   All colours and sizes match the spec exactly.
   No shadows, no gradients, no decorative elements.
   ============================================================ */

:root {
  /* ── Semantic text colours ── */
  --c-text-primary:   #1a1a1a;
  --c-text-secondary: #6b6b6b;

  /* ── Structural colours ── */
  --c-bg-page:        #ffffff;
  --c-bg-secondary:   #f4f4f4;
  --c-border-secondary: #d0d0d0;
  --c-border-tertiary:  #e8e8e8;

  /* ── Vol (flight operated) ── */
  --vol-bg:     #E6F1FB;
  --vol-border: #85B7EB;
  --vol-num:    #0C447C;
  --vol-text:   #185FA5;
  --vol-left:   #378ADD;   /* thick left border for suite/arrival */

  /* ── MEP (positioning) ── */
  --mep-bg:     #EEEDFE;
  --mep-border: #AFA9EC;
  --mep-num:    #3C3489;
  --mep-text:   #534AB7;
  --mep-left:   #7F77DD;

  /* ── Escale (layover) ── */
  --escale-bg:     #dceef9;
  --escale-border: #85B7EB;   /* same as vol */

  /* ── Repos (rest) ── */
  --repos-bg:     #EAF3DE;
  --repos-border: #97C459;
  --repos-text:   #3B6D11;

  /* ── Congé (leave) ── */
  --conge-bg:     #C0DD97;
  --conge-border: #639922;
  --conge-text:   #27500A;

  /* ── Sol (ground activity) ── */
  --sol-bg:     #FAECE7;
  --sol-border: #F0997B;
  --sol-num:    #712B13;
  --sol-text:   #993C1D;
  --sol-left:   #D85A30;   /* thick left border for suite CCO */

  /* ── Tz offset capsule colours ── */
  --tz-pos-bg: #5DCAA5;   /* positive offset (Athens +1h) */
  --tz-neg-bg: #9FBBD4;   /* negative offset (New York −6h) */
  --tz-neg-text: #28465F;
}

/* ============================================================
   RESET & BASE
   ============================================================ */

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

html {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  font-size: 14px;
  background: var(--c-bg-page);
  color: var(--c-text-primary);
  -webkit-font-smoothing: antialiased;
}

.page {
  max-width: 960px;
  margin: 0 auto;
  padding: 1.5rem 1.5rem 3rem;
}

/* ============================================================
   HEADER
   ============================================================ */

.page-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  padding-bottom: 0.9rem;
}

.pilot-name {
  font-size: 22px;
  font-weight: 600;
  color: var(--c-text-primary);
  line-height: 1.15;
}

.pilot-name-link {
  color: inherit;
  text-decoration: none;
}

.pilot-name-link:hover,
.pilot-name-link:focus-visible {
  color: inherit;
  text-decoration: none;
  outline: none;
  background: rgba(26, 26, 26, 0.035);
  border-radius: 2px;
  box-shadow: 0 0 0 2px rgba(26, 26, 26, 0.02);
}

.pilot-subtitle {
  font-size: 12px;
  color: var(--c-text-secondary);
  margin-top: 4px;
}

.month-label {
  font-size: 15px;
  font-weight: 500;
  color: var(--c-text-secondary);
}

.print-only {
  display: none;
}

.header-sep {
  border: none;
  border-top: 1px solid var(--c-border-tertiary);
  margin: 0 0 1rem;
}

/* ============================================================
   MONTH NAVIGATION
   ============================================================ */

.month-nav {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  margin-bottom: 0.8rem;
  gap: 12px;
}

.month-nav a:first-child {
  justify-self: start;
}

.month-nav a:last-child {
  justify-self: end;
}

.month-nav a {
  font-size: 12.5px;
  font-weight: 500;
  color: var(--c-text-secondary);
  text-decoration: none;
  padding: 5px 10px;
  border: 1px solid rgba(208, 208, 208, 0.9);
  border-radius: 999px;
  background: rgba(244, 244, 244, 0.65);
}

.month-nav a:hover {
  background: rgba(244, 244, 244, 0.92);
  color: var(--c-text-primary);
}

.month-nav-label {
  justify-self: center;
  font-size: 17px;
  font-weight: 700;
  color: var(--c-text-primary);
  line-height: 1;
  letter-spacing: 0;
}

.archive-notice {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  flex-wrap: wrap;
  margin: -0.2rem 0 0.9rem;
  padding: 0.5rem 0.65rem;
  border: 1px solid rgba(46, 125, 50, 0.2);
  border-radius: 8px;
  background: rgba(230, 244, 234, 0.75);
  color: #245c2c;
  font-size: 12.5px;
}

.archive-notice strong {
  font-weight: 800;
}

.archive-notice span {
  color: #3d6a43;
}

/* ============================================================
   LEGEND
   ============================================================ */

.legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  margin-bottom: 1rem;
}

.legend-item {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  color: var(--c-text-secondary);
}

.legend-swatch {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 2px;
  flex-shrink: 0;
}

.legend-swatch.vol     { background: #B5D4F4; border: 0.5px solid #85B7EB; }
.legend-swatch.mep     { background: #AFA9EC; border: 0.5px solid #7F77DD; }
.legend-swatch.escale  { background: #dceef9; border: 0.5px solid #85B7EB; }
.legend-swatch.repos   { background: #EAF3DE; border: 0.5px solid #97C459; }
.legend-swatch.conge   { background: #C0DD97; border: 0.5px solid #639922; }
.legend-swatch.sol     { background: #F5C4B3; border: 0.5px solid #F0997B; }

/* ============================================================
   METRICS
   ============================================================ */

.metrics {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 1.25rem;
}

.metric-card {
  background: var(--c-bg-secondary);
  border-radius: 8px;
  padding: 10px 12px;
}

.metric-value {
  font-size: 22px;
  font-weight: 500;
  color: var(--c-text-primary);
  line-height: 1;
}

.metric-label {
  font-size: 10px;
  color: var(--c-text-secondary);
  margin-top: 4px;
}

/* ============================================================
   SECTION TITLE
   ============================================================ */

.section-title {
  font-size: 11px;
  font-weight: 500;
  color: var(--c-text-secondary);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 10px;
}

.section-title-detail {
  font-size: 10px;
  letter-spacing: 0.03em;
  color: rgba(107, 107, 107, 0.82);
}

/* ============================================================
   CALENDAR GRID
   ============================================================ */

.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 3px;
}

.cal-weekday {
  font-size: 10.5px;
  font-weight: 500;
  color: var(--c-text-secondary);
  text-align: center;
  padding-bottom: 5px;
}

/* ── Base cell ── */
.cal-cell {
  border-radius: 5px;
  padding: 6px 8px 5px;
  min-height: 82px;
  overflow: visible;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 3px;
  --rotation-left-link: transparent;
  --rotation-right-link: transparent;
  /* Soft internal background bands for day-to-day continuity. */
  --rotation-link-width: 7px;
  --rotation-link-inset: 0px;
  --rotation-link-opacity: 0.18;
}

.cal-cell::before,
.cal-cell::after {
  content: "";
  position: absolute;
  top: 3px;
  bottom: 3px;
  width: var(--rotation-link-width);
  border-radius: 4px;
  pointer-events: none;
  opacity: var(--rotation-link-opacity);
}

.cal-cell::before {
  left: var(--rotation-link-inset);
  background: var(--rotation-left-link);
}

.cal-cell::after {
  right: var(--rotation-link-inset);
  background: var(--rotation-right-link);
}

.cal-cell.month-edge-left-open,
.cal-cell.month-edge-right-open {
  --rotation-link-width: 7px;
  --rotation-link-inset: 0px;
  --rotation-link-opacity: 0.18;
}

.cal-cell.vol.month-edge-left-open,
.cal-cell.vol_mep.month-edge-left-open,
.cal-cell.suite_vol.month-edge-left-open,
.cal-cell.arrivee_j1.month-edge-left-open,
.cal-cell.escale.month-edge-left-open {
  --rotation-left-link: rgba(55, 138, 221, 0.52);
}

.cal-cell.vol.month-edge-right-open,
.cal-cell.vol_mep.month-edge-right-open,
.cal-cell.suite_vol.month-edge-right-open,
.cal-cell.arrivee_j1.month-edge-right-open,
.cal-cell.escale.month-edge-right-open {
  --rotation-right-link: rgba(55, 138, 221, 0.52);
}

.cal-cell.mep_pure.month-edge-left-open {
  --rotation-left-link: rgba(127, 119, 221, 0.5);
}

.cal-cell.mep_pure.month-edge-right-open {
  --rotation-right-link: rgba(127, 119, 221, 0.5);
}

.cal-cell.sol.month-edge-left-open,
.cal-cell.suite_sol.month-edge-left-open {
  --rotation-left-link: rgba(216, 90, 48, 0.5);
}

.cal-cell.sol.month-edge-right-open,
.cal-cell.suite_sol.month-edge-right-open {
  --rotation-right-link: rgba(216, 90, 48, 0.5);
}

.cal-cell-placeholder {
  min-height: 82px;
}

/* ── Day number ── */
.cal-day-num {
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  display: block;
}

/* ── Standalone tag badge (matches mockup MicroTag component) ── */
.cal-tag {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  border-radius: 2px;
  padding: 1px 4px;
  font-size: 7.5px;
  font-weight: 600;
  color: #fff;
  line-height: 1.4;
}

/* CSS-class tag colors (pill-cell tags where bg comes from tag_style key) */
.cal-tag.tag-mep          { background: var(--mep-left); }
.cal-tag.tag-suite_bleu   { background: var(--vol-left); }
.cal-tag.tag-suite_orange { background: rgba(153, 60, 29, 0.68); }  /* softer than sol-left; rgba for lighter badge */
.cal-tag.tag-escale       { background: #185FA5; }
.cal-tag.tag-arrivee      { background: var(--vol-left); }

/* ── Repos / Congé text line ── */
.cal-text-main {
  font-size: 9px;
  line-height: 1.15;
  margin-top: 1px;
}

/* ── Sol label + hours ── */
.cal-sol-label {
  font-size: 9.5px;
  font-weight: 600;
  line-height: 1.12;
}

.cal-cell.sol .cal-sol-label,
.cal-cell.suite_sol .cal-sol-label {
  margin-top: 3px;
}

.cal-sol-label-placeholder {
  visibility: hidden;
}

.cal-sol-hours {
  font-size: 11px;
  font-style: normal;
  font-weight: 660;
  line-height: 1.05;
  opacity: 1;
}

/* ── Arrivée J+1 secondary text ── */
.cal-arr-text {
  font-size: 9px;
  line-height: 1.1;
  margin-top: 1px;
  opacity: 0.8;
}

/* ── Below-timeline text (vol+MEP detail, etc.) ── */
.cal-below-text {
  font-size: 8px;
  line-height: 1.1;
  opacity: 0.78;
}

/* ── Escale inline row ── */
.cal-escale-row {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 5px;
}

.cal-escale-icon {
  font-size: 11px;
  line-height: 1;
}

.cal-escale-icon:not(.cal-escale-icon-pdf) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 11px;
  color: var(--vol-text);
  flex: 0 0 auto;
}

.cal-escale-city {
  font-size: 9px;
  font-weight: 600;
  color: var(--vol-num);
  line-height: 1.2;
}

/* ── Timeline block ── */
.cal-tl {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.cal-tl-times {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Time labels: start on left, end on right */
.tl-time {
  font-size: 13px;
  font-weight: 710;
  line-height: 1;
  white-space: nowrap;
  flex-shrink: 0;
}

/* +1 next-day badge */
.tl-plus1 {
  font-size: 8px;
  font-weight: 600;
  padding: 0 2px;
  border-radius: 2px;
  background: var(--vol-left);
  color: #fff;
  vertical-align: middle;
  margin-left: 2px;
  line-height: 1.4;
}

/* ── Track container ── */
.cal-tl-track {
  position: relative;
  height: 8px;
  overflow: visible;
  --tl-dot-size: 4px;
}

/* Main dashed line (default; overridden per type below) */
.tl-dashes {
  position: absolute;
  left: 0; right: 0;
  top: 50%;
  height: 0;
  border-top: 1px dashed rgba(0, 0, 0, 0.20);
}

/* openLeft / openRight continuity extensions — always vol-blue */
.tl-ext {
  position: absolute;
  top: 50%;
  height: 0;
  border-top: 1.5px dashed var(--vol-left);
}
.tl-ext-left  { left: -8px;  width: 8px; }
.tl-ext-right { right: -8px; width: 8px; }

/* Stronger boundary cue when continuity extends beyond the visible month. */
.cal-tl-track.month-edge-left .tl-ext-left  { left: -12px; width: 12px; }
.cal-tl-track.month-edge-right .tl-ext-right { right: -12px; width: 12px; }

/* Endpoint dots */
.tl-dot {
  position: absolute;
  width: var(--tl-dot-size); height: var(--tl-dot-size);
  border-radius: 50%;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.22);
}
.tl-dot-left  { left: 0; }
.tl-dot-right { right: 0; }

.cal-cell.layover-end-left {
  --rotation-left-link: transparent;
}

.cal-cell.layover-end-right {
  --rotation-right-link: transparent;
}

.cal-cell.vol.layover-end-left.month-edge-left-open,
.cal-cell.vol_mep.layover-end-left.month-edge-left-open,
.cal-cell.suite_vol.layover-end-left.month-edge-left-open,
.cal-cell.arrivee_j1.layover-end-left.month-edge-left-open {
  --rotation-left-link: rgba(55, 138, 221, 0.52);
}

.cal-cell.vol.layover-end-right.month-edge-right-open,
.cal-cell.vol_mep.layover-end-right.month-edge-right-open,
.cal-cell.suite_vol.layover-end-right.month-edge-right-open,
.cal-cell.arrivee_j1.layover-end-right.month-edge-right-open {
  --rotation-right-link: rgba(55, 138, 221, 0.52);
}

.cal-cell.mep_pure.layover-end-left.month-edge-left-open {
  --rotation-left-link: rgba(127, 119, 221, 0.5);
}

.cal-cell.mep_pure.layover-end-right.month-edge-right-open {
  --rotation-right-link: rgba(127, 119, 221, 0.5);
}

.cal-cell.layover-end-left .tl-dashes {
  left: 7px;
}

.cal-cell.layover-end-right .tl-dashes {
  right: 7px;
}

.cal-cell.layover-end-left .tl-dot-left {
  left: 4px;
}

.cal-cell.layover-end-right .tl-dot-right {
  right: 4px;
}

.cal-cell.layover-end-left .tl-dot-left,
.cal-cell.layover-end-right .tl-dot-right {
  opacity: 0.9;
}

.cal-cell.layover-end-left .cal-tl-stops .tl-stop-primary:first-child,
.cal-cell.layover-end-right .cal-tl-stops .tl-stop-primary:last-child {
  font-weight: 650;
}

/* Intermediate stop dots */
.tl-stop-dot {
  position: absolute;
  width: var(--tl-dot-size); height: var(--tl-dot-size);
  border-radius: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background: rgba(0, 0, 0, 0.22);
}

/* Decoucher marker: fixed to the calendar-cell corner. */
.cell-decoucher {
  position: absolute;
  top: 4px;
  right: 5px;
  color: var(--vol-text);
  line-height: 1;
  z-index: 3;
  pointer-events: none;
}

.cell-decoucher:not(.cell-decoucher-pdf) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 11px;
}

.cell-decoucher-pdf {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 16px;
  height: 10px;
  font-size: 6px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--vol-text);
}

.decoucher-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 11px;
  flex: 0 0 auto;
  overflow: hidden;
  padding: 0.5px 1px 1.5px;
  border: 1px solid rgba(24, 95, 165, 0.38);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 0.5px 1px rgba(12, 68, 124, 0.18);
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
  font-size: 7px;
  font-style: normal;
  font-weight: 400;
  line-height: 1;
  text-align: center;
  vertical-align: middle;
}

/* Stop labels row */
.cal-tl-stops {
  display: flex;
  justify-content: space-between;
}

.tl-stop {
  font-size: 7.5px;
  font-weight: 500;
  color: #919191;
}

.tl-stop.tl-stop-primary {
  font-weight: 600;
}

/* ── Cell types ── */

/* vol */
.cal-cell.vol {
  background: #deedf9;
  border: 1px solid #79addf;
}
.cal-cell.vol .cal-day-num              { color: var(--vol-num); }
.cal-cell.vol .tl-time                  { color: #073258; }
.cal-cell.vol .tl-dashes                { border-top-color: rgba(55, 138, 221, 0.58); }
.cal-cell.vol .tl-dot,
.cal-cell.vol .tl-stop-dot              { background: rgba(55, 138, 221, 0.62); }
.cal-cell.vol .tl-stop.tl-stop-primary  { color: #2568aa; }

/* vol_mep */
.cal-cell.vol_mep {
  background: #deedf9;
  border: 1px solid #79addf;
}
.cal-cell.vol_mep .cal-day-num             { color: var(--vol-num); }
.cal-cell.vol_mep .tl-time                 { color: #073258; }
.cal-cell.vol_mep .tl-dashes               { border-top-color: rgba(55, 138, 221, 0.58); }
.cal-cell.vol_mep .tl-dot,
.cal-cell.vol_mep .tl-stop-dot             { background: rgba(55, 138, 221, 0.62); }
.cal-cell.vol_mep .tl-stop.tl-stop-primary { color: #2568aa; }
.cal-cell.vol_mep .cal-below-text          { color: rgba(83, 74, 183, 0.88); }

/* mep_pure */
.cal-cell.mep_pure {
  background: #ecebfd;
  border: 1px solid #9d95e7;
}
.cal-cell.mep_pure .cal-day-num              { color: var(--mep-num); }
.cal-cell.mep_pure .tl-time                  { color: #282261; }
.cal-cell.mep_pure .tl-dashes                { border-top-color: rgba(127, 119, 221, 0.56); }
.cal-cell.mep_pure .tl-dot,
.cal-cell.mep_pure .tl-stop-dot              { background: rgba(127, 119, 221, 0.62); }
.cal-cell.mep_pure .tl-stop.tl-stop-primary  { color: #4b44ab; }

/* repos */
.cal-cell.repos {
  background: var(--repos-bg);
  border: 0.5px solid var(--repos-border);
}
.cal-cell.repos .cal-day-num   { color: var(--repos-text); font-weight: 500; opacity: 0.74; }
.cal-cell.repos .cal-text-main { color: var(--repos-text); opacity: 0.72; }

/* conge */
.cal-cell.conge {
  background: var(--conge-bg);
  border: 0.5px solid var(--conge-border);
}
.cal-cell.conge .cal-day-num   { color: var(--conge-text); font-weight: 500; opacity: 0.76; }
.cal-cell.conge .cal-text-main { color: var(--conge-text); opacity: 0.74; }

/* sol */
.cal-cell.sol {
  background: #f9e9e4;
  border: 1px solid #eb9f84;
}
.cal-cell.sol .cal-day-num    { color: var(--sol-num); }
.cal-cell.sol .cal-sol-label  { color: var(--sol-num); }
.cal-cell.sol .cal-sol-hours  { color: #67220f; }

/* escale */
.cal-cell.escale {
  background: var(--escale-bg);
  border: 0.5px solid var(--escale-border);
}
.cal-cell.escale .cal-day-num     { color: var(--vol-num); opacity: 0.65; }
.cal-cell.escale .cal-escale-city { color: var(--vol-num); }

/* suite_vol — vol background (same as regular flight day), thick left border */
.cal-cell.suite_vol {
  background: #deedf9;
  border: 1px solid #79addf;
  --rotation-left-link: rgba(55, 138, 221, 0.52);
}
.cal-cell.suite_vol .cal-day-num              { color: var(--vol-num); opacity: 0.7; }
.cal-cell.suite_vol .tl-time                  { color: #194f7f; }
.cal-cell.suite_vol .tl-dashes                { border-top-color: rgba(55, 138, 221, 0.5); }
.cal-cell.suite_vol .tl-dot,
.cal-cell.suite_vol .tl-stop-dot              { background: rgba(55, 138, 221, 0.54); }
.cal-cell.suite_vol .tl-stop.tl-stop-primary  { color: #2568aa; }

/* suite_sol — same visual treatment as sol; continuity stays handled by the link band */
.cal-cell.suite_sol {
  background: #f9e9e4;
  border: 1px solid #eb9f84;
  --rotation-left-link: rgba(216, 90, 48, 0.5);
}
.cal-cell.suite_sol .cal-day-num   { color: var(--sol-num); }
.cal-cell.suite_sol .cal-sol-hours { color: #67220f; }

/* arrivee_j1 — vol background (same as regular flight day), thick left border */
.cal-cell.arrivee_j1 {
  background: #deedf9;
  border: 1px solid #79addf;
  --rotation-left-link: rgba(55, 138, 221, 0.52);
}
.cal-cell.arrivee_j1 .cal-day-num  { color: var(--vol-num); opacity: 0.7; }
.cal-cell.arrivee_j1 .cal-arr-text { color: #2568aa; }

/* empty */
.cal-cell.empty {
  background: transparent;
  border: 0.5px solid var(--c-border-tertiary);
}
.cal-cell.empty .cal-day-num { color: var(--c-text-secondary); }

/* ── Rotation continuity links ──
   rotation-start  → internal right-side link (this day leads to next)
   rotation-middle → internal left + right links
   rotation-end    → internal left-side link:
     · suite_vol, suite_sol, arrivee_j1 already carry it from their type rule
     · plain vol / vol_mep / mep_pure at rotation-end need an explicit rule
── */
.cal-cell.rotation-start {
  --rotation-right-link: rgba(55, 138, 221, 0.52);
}
.cal-cell.sol.rotation-start {
  --rotation-right-link: rgba(216, 90, 48, 0.5);
}
.cal-cell.mep_pure.rotation-start {
  --rotation-right-link: rgba(127, 119, 221, 0.5);
}
.cal-cell.rotation-middle {
  --rotation-left-link: rgba(55, 138, 221, 0.52);
  --rotation-right-link: rgba(55, 138, 221, 0.52);
}
.cal-cell.vol.rotation-end,
.cal-cell.vol_mep.rotation-end,
.cal-cell.mep_pure.rotation-end {
  --rotation-left-link: rgba(55, 138, 221, 0.52);
}

/* ============================================================
   SECTION SEPARATOR
   ============================================================ */

.section-sep {
  border: none;
  border-top: 1px solid var(--c-border-tertiary);
  margin: 1.7rem 0 1.15rem;
}

/* ============================================================
   DETAIL TABLE
   ============================================================ */

.detail-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  --detail-row-content-height: 30px;
  --detail-cell-padding-y: 4px;
}

.detail-table col.col-date     { width: 68px; }
.detail-table col.col-activity { width: auto; }

/* ── Header row ── */
.detail-table thead th {
  font-size: 10px;
  font-weight: 500;
  color: var(--c-text-secondary);
  text-align: left;
  padding: 5px 8px;
  border-bottom: 1px solid var(--c-border-secondary);
}

/* ── Body rows ── */
.detail-table tbody tr {
  border-bottom: 0.5px solid var(--c-border-tertiary);
}
.detail-table tbody tr:last-child { border-bottom: none; }
.detail-table tbody tr:hover { background: var(--c-bg-secondary); }

.detail-table tbody tr + tr:not(.continuation-sol):not(.continuation-vol) td {
  box-shadow: inset 0 1px 0 rgba(26, 26, 26, 0.025);
}

.detail-table tbody tr.row-type-repos + tr:not(.row-type-repos):not(.row-type-conge):not(.continuation-sol):not(.continuation-vol) td,
.detail-table tbody tr.row-type-conge + tr:not(.row-type-repos):not(.row-type-conge):not(.continuation-sol):not(.continuation-vol) td,
.detail-table tbody tr.row-type-sol + tr:not(.row-type-sol):not(.continuation-sol) td,
.detail-table tbody tr.row-type-vol + tr:not(.row-type-vol):not(.row-type-mep):not(.row-type-escale):not(.continuation-vol) td,
.detail-table tbody tr.row-type-mep + tr:not(.row-type-vol):not(.row-type-mep):not(.row-type-escale):not(.continuation-vol) td,
.detail-table tbody tr.row-type-escale + tr:not(.row-type-vol):not(.row-type-mep):not(.row-type-escale):not(.continuation-vol) td {
  box-shadow: inset 0 1px 0 rgba(26, 26, 26, 0.04);
}

/* Weekend row: very light grey tint for easy weekly scanning */
.detail-table tbody tr.weekend-row {
  background: rgba(0, 0, 0, 0.024);
}
.detail-table tbody tr.weekend-row:hover { background: var(--c-bg-secondary); }

/* Type tinting on the full row, kept intentionally light. */
.detail-table tbody tr.row-type-vol,
.detail-table tbody tr.row-type-escale { background: rgba(230, 241, 251, 0.28); }
.detail-table tbody tr.row-type-mep { background: rgba(236, 233, 252, 0.34); }
.detail-table tbody tr.row-type-repos { background: rgba(236, 243, 225, 0.34); }
.detail-table tbody tr.row-type-conge { background: rgba(226, 238, 205, 0.36); }
.detail-table tbody tr.row-type-sol { background: rgba(250, 236, 231, 0.28); }

/* Continuation rows inherit the standard type tint only. */
.detail-table tbody tr.continuation-vol { background: inherit; }
.detail-table tbody tr.continuation-sol { background: rgba(250, 236, 231, 0.07); }
.detail-table tbody tr.continuation-vol:hover,
.detail-table tbody tr.continuation-sol:hover { background: var(--c-bg-secondary); }

.detail-table tbody tr.continuation-vol,
.detail-table tbody tr.continuation-sol {
  --detail-row-content-height: 22px;
}

.detail-table tbody tr.continuation-sol {
  --detail-row-content-height: 18px;
}

/* Continuation rows are secondary information: keep them visibly lighter/shorter. */
.detail-table tbody tr.continuation-vol td.td-date,
.detail-table tbody tr.continuation-sol td.td-date {
  padding-top: 3px;
  padding-bottom: 3px;
}

.detail-table tbody tr.continuation-vol td.td-activity,
.detail-table tbody tr.continuation-sol td.td-activity {
  padding-top: 2px;
  padding-bottom: 2px;
}

.detail-table tbody tr.continuation-sol td.td-date {
  padding-top: 1px;
  padding-bottom: 1px;
  border-left-color: rgba(216, 90, 48, 0.2);
  vertical-align: middle;
}

.detail-table tbody tr.continuation-sol td.td-activity {
  padding-top: 1px;
  padding-bottom: 1px;
  vertical-align: middle;
}

.detail-table tbody tr.continuation-sol .date-cell-content {
  gap: 1px;
  padding-top: 0;
  padding-bottom: 0;
  justify-content: center;
}

/* ── Date cell ── */
td.td-date {
  padding: var(--detail-cell-padding-y) 6px var(--detail-cell-padding-y) 8px;
  vertical-align: middle;
  white-space: nowrap;
  border-left: 3px solid transparent;
  text-align: center;
}

.date-cell-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-height: var(--detail-row-content-height);
}

/* Type-coded left border on date column (replaces the removed type badge) */
td.td-date.type-vol     { border-left-color: var(--vol-left); }
td.td-date.type-mep     { border-left-color: var(--mep-left); }
td.td-date.type-repos   { border-left-color: var(--repos-border); }
td.td-date.type-conge   { border-left-color: var(--conge-border); }
td.td-date.type-sol     { border-left-color: var(--sol-left); }
td.td-date.type-escale  { border-left-color: var(--vol-left); }
td.td-date.type-empty   { border-left-color: transparent; }

.date-num {
  font-size: 13px;
  font-weight: 600;
  color: var(--c-text-primary);
  display: block;
  line-height: 1.2;
}
.date-num.continuation { font-size: 13px; color: var(--c-text-primary); font-weight: 600; }

.date-wd {
  font-size: 10px;
  color: var(--c-text-secondary);
  display: block;
  text-align: center;
}

tr.weekend-row .date-wd {
  color: #7a7a7a;
}

.detail-table tbody tr.continuation-sol .date-num.continuation {
  font-size: 8px;
  font-weight: 500;
  line-height: 0.95;
  color: rgba(26, 26, 26, 0.42);
}

.detail-table tbody tr.continuation-sol .date-wd {
  font-size: 6.5px;
  line-height: 0.95;
  color: rgba(107, 107, 107, 0.46);
}

/* ── Activity cell ── */
td.td-activity {
  padding: var(--detail-cell-padding-y) 8px var(--detail-cell-padding-y) 0;
  vertical-align: middle;
}

.activity-cell-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  min-height: var(--detail-row-content-height);
  max-width: 100%;
}

.activity-blocks {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 1px 0 2px;
  align-items: center;
}

/* ── Detail activity block system ── */
.activity-block {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  min-height: 24px;
  width: fit-content;
  max-width: 100%;
  box-sizing: border-box;
  border-radius: 4px;
  padding: 4px 8px 4px 6px;
  line-height: 1.25;
}

.activity-main-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  min-height: 16px;
  max-width: 100%;
  line-height: 1.25;
}

.activity-code,
.activity-route,
.activity-times,
.activity-badges,
.time-block,
.time-local,
.time-value,
.time-arrow,
.time-text {
  display: flex;
  align-items: center;
  min-height: 16px;
  line-height: 1.25;
}

.activity-code,
.activity-route,
.time-text {
  white-space: nowrap;
}

.activity-route,
.activity-times {
  min-width: 0;
}

.activity-badges {
  gap: 3px;
  flex: 0 0 auto;
}

.activity-block.no-route .activity-route,
.activity-block.no-route .activity-sep-times {
  display: none;
}

.activity-block.no-times .activity-times,
.activity-block.no-times .activity-sep-times {
  display: none;
}

.activity-block.no-badges .activity-badges {
  display: none;
}

/* ── Flight block (vol) ── */
.flight-block {
  background: var(--vol-bg);
  border-left: 2px solid var(--vol-left);
}

.flight-block.mep-block {
  background: var(--mep-bg);
  border-left-color: var(--mep-left);
}

.flight-num {
  font-size: 10px;
  font-weight: 700;
  color: var(--vol-num);
}
.mep-block .flight-num { color: var(--mep-num); }

.activity-sep {
  display: flex;
  align-items: center;
  width: 1px;
  height: 12px;
  background: var(--vol-border);
  margin: 0 6px;
  flex-shrink: 0;
}
.mep-block .flight-sep { background: var(--mep-border); }
.sol-block .activity-sep { background: var(--sol-border); }

.flight-route {
  font-size: 10px;
  color: var(--vol-text);
}
.mep-block .flight-route { color: var(--mep-text); }

/* ── Time block inside flight block ── */
.time-block {
  min-height: 16px;
}

.time-local {
  font-size: 10px;
  font-weight: 400;
  color: var(--c-text-secondary);
  white-space: nowrap;
  gap: 3px;
}

/* +1 next-day tag inside time block */
.tag-nextday {
  display: flex;
  align-items: center;
  font-size: 9px;
  font-weight: 500;
  background: var(--vol-left);
  color: #fff;
  border-radius: 2px;
  padding: 0 3px;
  line-height: 1.4;
}

/* passager tag for MEP */
.tag-passenger {
  display: flex;
  align-items: center;
  font-size: 8px;
  font-weight: 500;
  background: var(--mep-left);
  color: #fff;
  border-radius: 2px;
  padding: 0 3px;
  line-height: 1.4;
}

/* tz offset capsule */
.tz-capsule {
  display: flex;
  align-items: center;
  font-size: 8px;
  font-weight: 500;
  color: #fff;
  border-radius: 10px;
  padding: 1px 6px;
  line-height: 1.25;
}
.tz-capsule.pos { background: var(--tz-pos-bg); }
.tz-capsule.neg {
  background: var(--tz-neg-bg);
  color: var(--tz-neg-text);
}

.time-value {
  gap: 4px;
  min-height: 16px;
}

.time-arrow {
  min-height: 16px;
  white-space: nowrap;
}

/* ── Escale block ── */
.escale-block {
  background: var(--escale-bg);
  border-left: 2px solid #185FA5;
}
.escale-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--vol-num);
}
.escale-city {
  font-size: 10px;
  font-weight: 500;
  color: var(--vol-num);
}
.escale-hotel {
  font-size: 10px;
  color: var(--vol-num);
  opacity: 0.7;
}

/* ── Sol (ground activity) block ── */
.sol-block {
  background: rgba(250, 236, 231, 0.56);
  border-left: 2px solid var(--sol-left);
}
.sol-label {
  font-size: 10px;
  font-weight: 600;
  color: var(--sol-num);
}
.sol-route {
  gap: 6px;
}
.sol-detail {
  font-size: 9px;
  color: var(--sol-num);
  opacity: 0.4;
}
.sol-location {
  font-size: 9px;
  color: var(--sol-num);
  opacity: 0.31;
}
.tag-overnight {
  font-size: 9px;
  font-weight: 500;
  background: rgba(216, 90, 48, 0.10);
  color: var(--sol-text);
  border: 1px solid rgba(216, 90, 48, 0.34);
  border-radius: 999px;
  padding: 1px 6px;
  line-height: 1.25;
}

/* ── Repos / congé text ── */
.rest-text {
  font-size: 10px;
  color: var(--c-text-secondary);
  padding: 6px 0;
}

.rest-group-start .rest-text {
  color: rgba(107, 107, 107, 0.82);
}

/* ── Arrival J+1 block ── */
.arrival-block {
  background: var(--vol-bg);
  border-left: 2px solid var(--vol-left);
}
.arrival-label {
  font-size: 10px;
  font-weight: 700;
  color: var(--vol-num);
}
.arrival-city {
  font-size: 10px;
  color: var(--vol-text);
}
.arrival-time {
  font-size: 10.5px;
  font-weight: 500;
  color: var(--vol-num);
}
.arrival-flight {
  display: flex;
  align-items: center;
  min-height: 16px;
  font-size: 9px;
  font-style: italic;
  color: var(--vol-text);
  line-height: 1.25;
  white-space: nowrap;
}

/* ── Continuation text (italic, below main block) ── */
.continuation-text {
  font-size: 9.5px;
  font-style: italic;
  color: var(--vol-text);
  padding: 3px 0 2px;
  display: block;
}
.continuation-text.sol { color: var(--sol-text); }

.continuation-note {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-left: 16px;
  padding: 1px 0 0 10px;
  border-left: 1px dashed rgba(55, 138, 221, 0.35);
}

.continuation-note.sol {
  display: flex;
  align-items: baseline;
  gap: 2px;
  margin-left: 0;
  padding: 1px 0 0;
  border-left: none;
  background: transparent;
  line-height: 1;
}

.continuation-marker.sol {
  color: var(--sol-num);
  font-size: 7px;
  opacity: 0.14;
}

.sol-continuation-text {
  color: var(--sol-num);
  font-size: 6.5px;
  font-weight: 500;
  line-height: 0.95;
  letter-spacing: 0;
  opacity: 0.24;
  padding: 0;
}

.continuation-marker {
  font-size: 11px;
  line-height: 1.1;
  color: inherit;
  opacity: 0.7;
}

/* ============================================================
   RESPONSIVE — mobile (≤ 480px, iPhone portrait)
   True mobile mode: compact header, synthetic calendar cells,
   ellipsis route logic, reduced content density.
   Desktop/tablet (> 480px) is unaffected.
   ============================================================ */

@media screen and (max-width: 480px) {

  /* ── Page frame ── */
  .page { padding: 0.65rem 0.7rem 1.35rem; }

  /* ── Header ── */
  .page-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    padding-bottom: 0.3rem;
  }
  .pilot-name     { font-size: 16px; }
  .pilot-subtitle { font-size: 10.5px; }
  .month-label    { font-size: 11.5px; }
  .header-sep     { margin: 0 0 0.4rem; }

  /* ── Month nav: compact ── */
  .month-nav       { margin-bottom: 0.25rem; gap: 8px; }
  .month-nav a     { font-size: 11px; padding: 2px 6px; }
  .month-nav-label { font-size: 13px; }

  /* ── Legend: tighter wrap ── */
  .legend      { gap: 5px 10px; margin-bottom: 0.5rem; }
  .legend-item { font-size: 10px; }
  .legend-swatch { width: 9px; height: 9px; }

  /* ── Metrics: 2 columns, compact cards ── */
  .metrics {
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
    margin-bottom: 0.6rem;
  }
  .metric-card  { padding: 7px 10px; border-radius: 6px; }
  .metric-value { font-size: 18px; }
  .metric-label { font-size: 9px; margin-top: 2px; }

  /* ── Section title ── */
  .section-title { font-size: 10px; margin-bottom: 5px; }

  /* ── Calendar grid: tighter gap ── */
  .calendar-grid {
    gap: 2px;
    grid-template-columns: repeat(7, minmax(0, 1fr));
  }
  .cal-weekday   { font-size: 9px; padding-bottom: 3px; }

  /* ── Base cell: keep compact, but recover some breathing room ── */
  .cal-cell             { padding: 4px 4px 5px; min-height: 54px; gap: 3px; }
  .cal-cell-placeholder { min-height: 54px; }
  .cal-day-num          { font-size: 9px; line-height: 1; }
  .cal-cell,
  .cal-cell-placeholder {
    min-width: 0;
  }
  .cal-cell.vol,
  .cal-cell.vol_mep,
  .cal-cell.mep_pure,
  .cal-cell.suite_vol {
    padding: 4px 3px 6px;
  }

  /* ── Timeline: times stay primary, ornamentation softens ── */
  .cal-tl       { gap: 4px; margin-top: 2px; }
  .cal-tl-times {
    width: 100%;
    flex-direction: column;
    justify-content: flex-start;
    align-items: stretch;
    gap: 3px;
  }
  .tl-time {
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    justify-content: flex-start;
    width: 100%;
    font-size: 8px;
    font-weight: 710;
    letter-spacing: 0;
    min-width: 0;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
  }
  .tl-time:last-child {
    justify-content: flex-end;
    gap: 1px;
    text-align: right;
  }
  .cal-tl-track { height: 4px; margin-top: 0; --tl-dot-size: 2px; }
  .tl-dashes    { opacity: 0.38; border-top-width: 0.75px; }
  .tl-ext       { opacity: 0.5; border-top-width: 0.75px; }
  .cal-tl,
  .cal-tl-times,
  .cal-tl-stops {
    min-width: 0;
  }

  /* Continuity extensions: shorter on mobile */
  .tl-ext-left  { left: -4px;  width: 4px; }
  .tl-ext-right { right: -4px; width: 4px; }

  .cal-cell.layover-end-left .tl-dashes {
    left: 5px;
  }

  .cal-cell.layover-end-right .tl-dashes {
    right: 5px;
  }

  .cal-cell.layover-end-left .tl-dot-left {
    left: 3px;
  }

  .cal-cell.layover-end-right .tl-dot-right {
    right: 3px;
  }

  /* Endpoint and intermediate stop dots: compact but uniform */
  .tl-dot,
  .tl-stop-dot {
    opacity: 0.42;
  }

  .cal-cell.layover-end-left .tl-dot-left,
  .cal-cell.layover-end-right .tl-dot-right {
    opacity: 0.8;
  }

  /* Decoucher marker: fixed to the cell corner on compact cells too */
  .cell-decoucher {
    top: 3px;
    right: 3px;
  }
  .cell-decoucher:not(.cell-decoucher-pdf),
  .cell-decoucher:not(.cell-decoucher-pdf) .decoucher-icon { width: 10px; height: 9.5px; }
  .cell-decoucher:not(.cell-decoucher-pdf) .decoucher-icon {
    padding: 0.5px 1px 1.5px;
    font-size: 6px;
    line-height: 1;
    transform: translateY(-0.5px);
  }

  /* Stop labels stay visibly secondary to times */
  .cal-tl-stops {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    gap: 3px;
    margin-top: 3px;
    white-space: nowrap;
    overflow: hidden;
  }
  .tl-stop {
    font-size: 5px;
    line-height: 1.05;
    opacity: 0.5;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    letter-spacing: 0.01em;
  }
  .tl-stop.tl-stop-primary { opacity: 0.72; }
  .cal-tl-stops .tl-stop:not(.tl-stop-primary) { display: none; }
  .cal-tl-stops .tl-stop-primary:first-child::after {
    content: "\00a0\2026";
    color: rgba(145, 145, 145, 0.78);
  }

  .cal-tl-stops .tl-stop-primary:first-child {
    flex: 0 1 auto;
  }
  .cal-tl-stops .tl-stop-primary:last-child {
    flex: 0 1 auto;
    text-align: right;
  }

  /* ── Cal tag badge: compact ── */
  .cal-tag  { font-size: 6px; padding: 1px 3px; }
  .tl-plus1 {
    flex: 0 0 auto;
    font-size: 5px;
    padding: 0 1px;
    margin-left: 0;
    line-height: 1.15;
  }

  /* ── Below-timeline text: hidden on mobile (cell too compact) ── */
  .cal-below-text { display: none; }

  /* ── Escale cell: simplified ── */
  .cal-escale-row  { margin-top: 3px; gap: 3px; }
  .cal-escale-icon { font-size: 10px; }
  .cal-escale-icon:not(.cal-escale-icon-pdf),
  .cal-escale-icon:not(.cal-escale-icon-pdf) .decoucher-icon { width: 10px; height: 9.5px; }
  .cal-escale-icon:not(.cal-escale-icon-pdf) .decoucher-icon {
    padding: 0.5px 1px 1.5px;
    font-size: 6px;
    line-height: 1;
    transform: translateY(-0.5px);
  }
  .cal-escale-city { font-size: 7.5px; }

  /* ── Repos / congé ── */
  .cal-text-main { font-size: 7.5px; margin-top: 1px; }

  /* ── Sol ── */
  .cal-sol-label { font-size: 7px; line-height: 1.12; }
  .cal-cell.sol .cal-sol-label,
  .cal-cell.suite_sol .cal-sol-label { margin-top: 1px; }
  .cal-sol-hours { font-size: 6.5px; line-height: 1.12; opacity: 0.82; }

  /* ── Arrivée J+1 ── */
  .cal-arr-text { font-size: 7px; margin-top: 1px; }

  /* ── Section separator ── */
  .section-sep { margin: 1rem 0; }

  /* ── Detail table: hide type column on mobile to give activity column more room.
     Switch to auto layout so the column widths adapt after the type col is removed.
  ── */
  .detail-table                     { table-layout: auto; }
  .detail-table {
    --detail-row-content-height: 32px;
    --detail-cell-padding-y: 3px;
  }
  .detail-table col.col-date        { width: 56px; }
  .detail-table thead th            { font-size: 9px; padding: 4px 6px; }
  .detail-table thead th:nth-child(2),
  .detail-table td.td-type          { display: none; }

  .detail-table tbody tr + tr:not(.continuation-sol):not(.continuation-vol) td {
    box-shadow: inset 0 1px 0 rgba(26, 26, 26, 0.025);
  }
  .detail-table tbody tr.row-type-repos + tr:not(.row-type-repos):not(.row-type-conge):not(.continuation-sol):not(.continuation-vol) td,
  .detail-table tbody tr.row-type-conge + tr:not(.row-type-repos):not(.row-type-conge):not(.continuation-sol):not(.continuation-vol) td,
  .detail-table tbody tr.row-type-sol + tr:not(.row-type-sol):not(.continuation-sol) td,
  .detail-table tbody tr.row-type-vol + tr:not(.row-type-vol):not(.row-type-mep):not(.row-type-escale):not(.continuation-vol) td,
  .detail-table tbody tr.row-type-mep + tr:not(.row-type-vol):not(.row-type-mep):not(.row-type-escale):not(.continuation-vol) td,
  .detail-table tbody tr.row-type-escale + tr:not(.row-type-vol):not(.row-type-mep):not(.row-type-escale):not(.continuation-vol) td {
    box-shadow: inset 0 1px 0 rgba(26, 26, 26, 0.04);
  }

  td.td-date     { padding: var(--detail-cell-padding-y) 5px var(--detail-cell-padding-y) 8px; vertical-align: middle; }
  td.td-activity { padding: var(--detail-cell-padding-y) 6px var(--detail-cell-padding-y) 0; vertical-align: middle; }

  .date-cell-content {
    justify-content: center;
    gap: 1px;
  }

  .date-num { font-size: 11px; line-height: 1.05; }
  .date-wd  { font-size: 8px; line-height: 1.05; }

  .detail-table tbody tr.continuation-sol td.td-date {
    padding-top: 0;
    padding-bottom: 0;
  }
  .detail-table tbody tr.continuation-sol td.td-activity {
    padding-top: 0;
    padding-bottom: 1px;
  }
  .detail-table tbody tr.continuation-sol .date-num.continuation {
    font-size: 7px;
    line-height: 0.95;
    color: rgba(26, 26, 26, 0.38);
  }
  .detail-table tbody tr.continuation-sol .date-wd {
    font-size: 6px;
    line-height: 0.95;
    color: rgba(107, 107, 107, 0.42);
  }

  .detail-table tbody tr.continuation-sol {
    --detail-row-content-height: 17px;
  }

  .activity-blocks { gap: 6px; padding: 2px 0 3px; }
  .activity-block {
    padding: 5px 8px 5px 6px;
  }
  .activity-main-row {
    gap: 3px 5px;
  }

  /* ── Flight blocks: wrap gracefully ── */
  .flight-sep   { display: none; }
  .flight-num   { font-size: 9px; }
  .flight-route { font-size: 8.5px; line-height: 1.2; }
  .time-block   { line-height: 1.25; }
  .time-local   { font-size: 9.5px; line-height: 1.25; gap: 2px; flex-wrap: wrap; }
  .time-value   { gap: 3px; }
  .tz-capsule   { font-size: 7px; padding: 1px 5px; }
  .tag-nextday,
  .tag-passenger { font-size: 8px; }

  /* ── Sol block ── */
  .sol-label    { font-size: 9.5px; line-height: 1.25; }
  .sol-detail   { font-size: 8.5px; line-height: 1.25; }
  .sol-location { font-size: 8.5px; line-height: 1.25; }

  /* ── Arrival block ── */
  .arrival-city  { font-size: 9px; }
  .arrival-time  { font-size: 9.5px; line-height: 1.25; }

  /* ── Continuation text ── */
  .continuation-text { font-size: 8.5px; line-height: 1.2; }
  .continuation-note.sol {
    gap: 3px;
    padding-top: 0;
  }
  .continuation-marker.sol {
    font-size: 6px;
    opacity: 0.1;
  }
  .sol-continuation-text {
    font-size: 6px;
    line-height: 1.02;
    opacity: 0.26;
  }
}

@media print {
  @page {
    size: A4 portrait;
    margin: 8mm;
  }

  button,
  .no-print {
    display: none !important;
  }

  .print-only {
    display: block;
  }

  html {
    font-size: 12px;
  }

  body {
    margin: 0;
  }

  .page {
    width: 194mm;
    max-width: 194mm;
    padding: 0;
    margin: 0 auto;
  }

  .page-header {
    padding-bottom: 0.4rem;
  }

  .header-sep {
    margin-bottom: 0.45rem;
  }

  .section-title {
    margin-bottom: 6px;
  }

  .calendar-grid {
    gap: 2px;
  }

  .cal-cell,
  .cal-cell-placeholder {
    min-height: 68px;
  }

  .cal-cell {
    padding: 5px 6px 4px;
  }

  .cell-decoucher {
    top: 2px;
    right: 3px;
  }

}
