/* ==========================================================================
   Nerv UI — Component styles
   BEM naming: .c-<block>__<element>--<modifier>
   Paired with colors_and_type.css (tokens + base type).
   ========================================================================== */

/* ---------- Base --------------------------------------------------------- */

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

/* ---------- Card --------------------------------------------------------- */

.c-card {
  position: relative;
  background: var(--color-surface);
  border: var(--border-1);
  border-radius: var(--radius-md);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
  transition: border-color var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out);
}
.c-card--light    { background: var(--color-surface); }
.c-card--cream    { background: var(--c-primary-fill-light); }
.c-card--dark     {
  background: var(--color-surface-dark);
  border-color: var(--color-border-on-dark);
}
.c-card--selected {
  border-color: var(--color-accent);
  border-width: 1.5px;
  padding: calc(var(--space-6) - 0.5px);
  box-shadow: var(--elev-coral);
}
.c-card--highlight {
  /* Outer coral wrap with an inset cream card; see .c-card__wrap */
  padding: var(--space-3);
  background: var(--color-accent-hover);
  border-radius: var(--radius-lg);
  border-color: transparent;
}
.c-card--highlight .c-card__inner {
  background: var(--color-accent-fill);
  border-radius: var(--radius-md);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.c-card__timestamp {
  font-family: var(--font-ui);
  font-size: var(--fs-10);
  color: var(--color-fg);
  letter-spacing: 0;
}
.c-card--dark .c-card__timestamp { color: var(--color-fg-on-dark); }

.c-card__title {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--fs-15);
  line-height: var(--lh-tight);
  color: var(--color-fg-strong);
}
.c-card--dark .c-card__title { color: var(--color-fg-on-dark-strong); }

.c-card__preview {
  font-family: var(--font-display);
  font-size: var(--fs-13);
  line-height: var(--lh-snug);
  color: var(--color-fg);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.c-card--dark .c-card__preview { color: var(--color-fg-on-dark); }

.c-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  flex: 1;
}

.c-card__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
}

.c-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: auto;
}

.c-card__media {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-sm);
  border: var(--border-1);
  background-color: var(--color-surface);
  background-size: cover;
  background-position: center;
}

.c-card__folder {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--fs-13);
  color: var(--color-fg);
}
.c-card--dark .c-card__folder { color: var(--color-fg-on-dark); }

/* Dots-3 button inside a card */
.c-card__menu-btn {
  flex: 0 0 auto;
  width: 25px;
  height: 25px;
  border-radius: var(--radius-xs);
  background: var(--c-primary-fill-light);
  border: 0;
  display: grid;
  place-items: center;
  cursor: pointer;
  color: var(--color-fg-strong);
  padding: 0;
}
.c-card--dark .c-card__menu-btn {
  background: var(--color-fg-strong);
  color: var(--color-fg-on-dark);
}
.c-card__menu-btn:hover { opacity: 0.8; }
.c-card__lock-icon {
  width: 22px;
  height: 22px;
  color: var(--color-border-strong);
}

/* ---------- Tag pill ----------------------------------------------------- */

.c-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 5px 10px;
  border-radius: var(--radius-xs);
  border: 1px solid var(--color-border-strong);
  background: transparent;
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--fs-10);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-pill-lg);
  text-transform: uppercase;
  color: var(--color-fg-strong);
  cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out),
              color var(--dur-fast) var(--ease-out);
  user-select: none;
}
.c-tag:hover { background: var(--c-primary-fill-light); }
.c-tag--on-dark {
  border-color: var(--color-border-on-dark);
  color: var(--color-fg-on-dark);
}
.c-tag--on-dark:hover { background: var(--color-fg-strong); }
.c-tag--active {
  background: var(--color-accent-fill);
  border-color: var(--color-accent);
  color: var(--color-accent);
}
.c-tag--active:hover { background: var(--color-accent-fill); }

/* ---------- Search field ------------------------------------------------- */

.c-search {
  position: relative;
  height: 45px;
  border-radius: var(--radius-pill);
  background: var(--color-surface-cream);
  border: 1px solid var(--color-border-strong);
  backdrop-filter: blur(4px);
  box-shadow: var(--elev-soft);
  padding: 0 14px 0 17px;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  transition: border-color var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out);
}
.c-search:focus-within,
.c-search--active {
  border-color: var(--color-accent);
  box-shadow: var(--elev-coral);
}
.c-search__input {
  flex: 1;
  border: 0;
  outline: 0;
  background: transparent;
  font-family: var(--font-ui);
  font-weight: var(--fw-medium);
  font-size: var(--fs-15);
  color: var(--color-fg-strong);
}
.c-search__input::placeholder {
  color: var(--color-fg);
  opacity: 0.8;
}
.c-search__icon {
  flex: 0 0 auto;
  color: var(--color-border-strong);
}

/* ---------- Icon button / menu toggle ------------------------------------ */

.c-icon-btn {
  width: 45px;
  height: 45px;
  border-radius: var(--radius-sm);
  background: var(--c-white);
  border: 1px solid var(--color-border-strong);
  box-shadow: var(--elev-soft);
  display: grid;
  place-items: center;
  cursor: pointer;
  color: var(--color-accent);
  padding: 0;
  transition: background var(--dur-fast) var(--ease-out);
}
.c-icon-btn:hover { background: var(--c-primary-fill-light); }

/* ---------- Capture bar -------------------------------------------------- */

.c-capture {
  position: relative;
  width: 100%;
  background: var(--color-surface-cream);
  border: 1px solid var(--color-border);
  border-radius: 20px 20px 30px 20px;
  backdrop-filter: blur(4px);
  box-shadow: var(--elev-soft);
  padding: 14px 14px 12px 14px;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.c-capture__input {
  border: 0;
  outline: 0;
  background: transparent;
  font-family: var(--font-ui);
  font-weight: var(--fw-medium);
  font-size: var(--fs-15);
  color: var(--color-fg-strong);
  padding: 4px 0 0 4px;
}
.c-capture__input::placeholder {
  color: var(--color-fg);
}
.c-capture__tools {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-5);
}
.c-capture__icons {
  display: flex;
  align-items: center;
  gap: 17px;
}
.c-capture__icon {
  width: 25px;
  height: 25px;
  color: var(--color-accent-soft);
  flex: 0 0 auto;
  cursor: pointer;
  transition: color var(--dur-fast) var(--ease-out);
}
.c-capture__icon:hover { color: var(--color-accent); }
.c-capture__send {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-pill);
  background: var(--color-accent);
  border: 1px solid var(--color-accent);
  color: var(--c-white);
  display: grid;
  place-items: center;
  cursor: pointer;
  padding: 0;
  transition: background var(--dur-fast) var(--ease-out),
              transform var(--dur-fast) var(--ease-out);
}
.c-capture__send:hover  { background: var(--color-accent-hover); }
.c-capture__send:active { transform: scale(0.96); }

/* ---------- Timeline ----------------------------------------------------- */

.c-timeline {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}
.c-timeline__group {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}
.c-timeline__date {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--fs-13);
  color: var(--color-fg-muted);
}
.c-timeline__list {
  position: relative;
  display: flex;
  flex-direction: column;
  padding-left: 24px;
}
.c-timeline__rule {
  position: absolute;
  left: 9px;
  top: 12px;
  bottom: 12px;
  width: 2px;
  background-image: linear-gradient(
    to bottom,
    var(--color-border) 0,
    var(--color-border) 4px,
    transparent 4px,
    transparent 8px
  );
  background-size: 2px 8px;
  background-repeat: repeat-y;
}
.c-timeline__item {
  display: flex;
  gap: var(--space-4);
  align-items: baseline;
  padding: 6px 0;
  position: relative;
}
.c-timeline__dot {
  position: absolute;
  left: -14px;
  top: 11px;
  transform: translateX(-50%);
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--c-neutral-300);
  box-shadow: 0 0 0 3px var(--color-bg);
  z-index: 1;
}
.c-timeline__item--pinned .c-timeline__dot { background: var(--color-accent); }
.c-timeline__content {
  display: flex;
  row-gap: 2px;
  column-gap: var(--space-3);
  flex-wrap: wrap;
  align-items: baseline;
}
.c-timeline__title {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--fs-13);
  color: var(--color-fg-strong);
}
.c-timeline__item--pinned .c-timeline__title { color: var(--color-accent); }
.c-timeline__preview {
  font-family: var(--font-display);
  font-size: var(--fs-13);
  color: var(--color-fg);
}

/* ---------- Menu / popover ---------------------------------------------- */

.c-menu {
  background: var(--c-white);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  box-shadow: var(--elev-soft);
  padding: 5px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  width: 164px;
}
.c-menu__item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: 4px 10px 4px 5px;
  border-radius: var(--radius-xs);
  font-family: var(--font-display);
  font-weight: var(--fw-medium);
  font-size: var(--fs-13);
  color: var(--color-fg);
  cursor: pointer;
  min-height: 27px;
  transition: background var(--dur-fast) var(--ease-out);
}
.c-menu__item:hover { background: var(--c-primary-fill-light); }
.c-menu__item svg { width: 16px; height: 16px; flex: 0 0 auto; color: var(--color-fg); }
.c-menu__separator {
  height: 1px;
  background: var(--c-primary-fill-light);
  margin: 5px 0;
  border: 0;
}
.c-menu__item--destructive {
  background: var(--color-danger-fill);
  color: var(--color-danger);
  padding: 4px 10px;
  justify-content: flex-start;
}
.c-menu__item--destructive:hover { background: var(--color-danger-fill); opacity: 0.9; }

/* ---------- Button ------------------------------------------------------- */

.c-btn {
  font-family: var(--font-ui);
  font-weight: var(--fw-medium);
  font-size: var(--fs-14);
  line-height: 1;
  padding: 10px 16px;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out),
              transform var(--dur-fast) var(--ease-out);
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.c-btn:active { transform: scale(0.98); }

.c-btn--primary {
  background: var(--color-accent);
  color: var(--c-white);
  border-color: var(--color-accent);
}
.c-btn--primary:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); }

.c-btn--secondary {
  background: var(--c-white);
  color: var(--color-fg-strong);
  border-color: var(--color-border-strong);
}
.c-btn--secondary:hover { background: var(--c-primary-fill-light); }

.c-btn--ghost {
  background: transparent;
  color: var(--color-fg);
  border-color: transparent;
}
.c-btn--ghost:hover { background: var(--c-primary-fill-light); color: var(--color-fg-strong); }

.c-btn--destructive {
  background: var(--color-danger-fill);
  color: var(--color-danger);
  border-color: transparent;
}
.c-btn--destructive:hover { background: var(--color-danger-fill); opacity: 0.9; }
