/* ============================================================
   TIMELINE — FANUCAiLeadCV
   Vertical timeline, 5 career nodes.
   Each node is an accessible accordion (Alpine x-data, ARIA).
   ============================================================ */

/* ----------------------------------------------------------
   TIMELINE CONTAINER
---------------------------------------------------------- */

.timeline {
  position:    relative;
  padding-left: var(--space-8);
  max-width:   820px;
  margin-inline: auto;
}

/* Vertical track line */
.timeline::before {
  content:          '';
  position:         absolute;
  top:              var(--space-8);
  left:             11px;       /* aligns with dot centre */
  bottom:           var(--space-8);
  width:            2px;
  background:       linear-gradient(
                      to bottom,
                      var(--color-border),
                      var(--color-border-accent),
                      var(--color-border)
                    );
  border-radius:    var(--radius-full);
}

/* ----------------------------------------------------------
   NARRATIVE ARC LABEL
   Appears at top-right; indicates career direction.
---------------------------------------------------------- */

.timeline__arc-label {
  position:       absolute;
  top:            0;
  right:          0;
  font-size:      var(--text-xs);
  font-weight:    var(--font-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color:          var(--color-accent);
  opacity:        0.7;
}

@media (max-width: 560px) {
  .timeline__arc-label { display: none; }
}

/* ----------------------------------------------------------
   TIMELINE NODE
---------------------------------------------------------- */

.timeline__node {
  position:       relative;
  margin-block-end: var(--space-2);
}

.timeline__node:last-child {
  margin-block-end: 0;
}

/* ----------------------------------------------------------
   NODE TRIGGER (button)
   Full-width; shows role + company + period + chevron.
---------------------------------------------------------- */

.timeline__trigger {
  width:          100%;
  display:        grid;
  grid-template-columns: 24px 1fr 24px;
  align-items:    center;
  gap:            var(--space-4);
  padding:        var(--space-5) var(--space-5) var(--space-5) 0;
  background:     transparent;
  border:         none;
  border-bottom:  1px solid var(--color-border);
  cursor:         pointer;
  text-align:     left;
  color:          inherit;
  transition:     border-color var(--duration-fast) var(--ease-out),
                  background-color var(--duration-fast) var(--ease-out);
  border-radius:  var(--radius-sm);
}

.timeline__trigger:hover {
  background-color: var(--color-bg-subtle);
  border-bottom-color: var(--color-border-accent);
}

.timeline__node--active .timeline__trigger {
  border-bottom-color: var(--color-accent);
}

/* Timeline dot — sits on the vertical line */
.timeline__dot {
  width:         12px;
  height:        12px;
  border-radius: var(--radius-full);
  border:        2px solid var(--color-border-accent);
  background:    var(--color-bg-base);
  flex-shrink:   0;
  position:      relative;
  margin-left:   calc(-1 * var(--space-8) + 5px);   /* centres dot on the line */
  transition:
    background-color var(--duration-fast) var(--ease-out),
    border-color     var(--duration-fast) var(--ease-out),
    box-shadow       var(--duration-fast) var(--ease-out);
}

.timeline__node--active .timeline__dot,
.timeline__trigger:hover .timeline__dot {
  background:  var(--color-accent);
  border-color: var(--color-accent);
  box-shadow:  var(--shadow-accent);
}

/* Current role dot — always filled */
.timeline__node--current .timeline__dot {
  background:  var(--color-accent);
  border-color: var(--color-accent);
}

/* ----------------------------------------------------------
   NODE SUMMARY CONTENT
---------------------------------------------------------- */

.timeline__summary {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-1);
  min-width:      0;
}

.timeline__role {
  font-size:   var(--text-base);
  font-weight: var(--font-semibold);
  color:       var(--color-text-primary);
  line-height: var(--leading-tight);
}

.timeline__company-row {
  display:     flex;
  align-items: center;
  flex-wrap:   wrap;
  gap:         var(--space-1);
}

.timeline__company {
  font-size:   var(--text-sm);
  font-weight: var(--font-medium);
  color:       var(--color-text-accent);
}

.timeline__separator,
.timeline__location {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}

.timeline__period {
  font-size:      var(--text-xs);
  color:          var(--color-text-muted);
  font-family:    var(--font-mono);
  letter-spacing: var(--tracking-wide);
}

.timeline__current-badge {
  display:        inline-block;
  padding:        1px var(--space-2);
  background:     var(--color-accent-dim);
  border:         1px solid var(--color-border-accent);
  border-radius:  var(--radius-full);
  font-size:      10px;
  font-weight:    var(--font-bold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color:          var(--color-accent);
}

/* ----------------------------------------------------------
   EXPAND / COLLAPSE CHEVRON
---------------------------------------------------------- */

.timeline__chevron {
  display:          flex;
  align-items:      center;
  justify-content:  center;
  color:            var(--color-text-muted);
  transition:       transform var(--duration-base) var(--ease-out),
                    color     var(--duration-fast) var(--ease-out);
}

.timeline__node--active .timeline__chevron,
.timeline__trigger:hover .timeline__chevron {
  color: var(--color-accent);
}

.timeline__node--active .timeline__chevron {
  transform: rotate(180deg);
}

/* ----------------------------------------------------------
   EXPANDABLE DETAIL PANEL
   Alpine x-show handles display; CSS handles transition feel.
---------------------------------------------------------- */

.timeline__detail {
  padding:         var(--space-5) var(--space-5) var(--space-6);
  background:      var(--color-bg-subtle);
  border-radius:   0 0 var(--radius-lg) var(--radius-lg);
  border:          1px solid var(--color-border);
  border-top:      none;
  margin-left:     calc(-1 * var(--space-8) + 5px + 6px);  /* align with dot edge */
}

/* Alpine handles detail panel show/hide via x-transition.opacity.
   The border-radius on the panel bottom gives the accordion appearance. */

/* ----------------------------------------------------------
   BULLET POINTS IN DETAIL
---------------------------------------------------------- */

.timeline__bullets {
  list-style:     none;
  display:        flex;
  flex-direction: column;
  gap:            var(--space-3);
}

.timeline__bullet {
  position:    relative;
  padding-left: var(--space-5);
  font-size:   var(--text-sm);
  line-height: var(--leading-relaxed);
  color:       var(--color-text-secondary);
}

.timeline__bullet::before {
  content:          '→';
  position:         absolute;
  left:             0;
  top:              0;
  color:            var(--color-accent);
  font-size:        var(--text-xs);
  font-weight:      var(--font-bold);
  line-height:      var(--leading-relaxed);
}

/* ----------------------------------------------------------
   MOBILE ADJUSTMENTS
---------------------------------------------------------- */

@media (max-width: 560px) {
  .timeline {
    padding-left: var(--space-6);
  }
  .timeline__trigger {
    grid-template-columns: 20px 1fr 20px;
    gap: var(--space-3);
  }
  .timeline__detail {
    padding: var(--space-4);
  }
}
