.grid-fixed {
  grid-template-rows: auto 1fr auto;
}

.n-navigation-small {
  position: sticky;
  top: 0;
  z-index: 10;
  background: transparent;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.n-navigation-small>section {
  position: relative;
}

.n-navigation-small {
  summary {
    cursor: pointer;
    list-style: none;

    >svg {
      width: 1.7rem;
      height: 1.7rem;
    }
  }
}

.n-navigation-small {
  summary::-webkit-details-marker {
    display: none;
  }
}

.n-navigation-small {
  details[open] {
    >nav {
      display: flex;
      flex-direction: column;
      position: absolute;
      top: 100%;
      right: 0;
      background: var(--color-neutral-10);
      padding: var(--space-s);
      border: 1px solid var(--color-neutral-7);
      border-radius: 0.5em;
      min-width: 12rem;
      z-index: 20;
      align-items: end;
      width: 17rem;

      >hr {
        width: 100%;
        border-color: var(--color-neutral-8);
      }
    }
  }
}

.danger {
  display: flex;
  justify-content: space-between;
  padding: var(--space-m);
  border: 1px solid var(--color-color-4);
  border-radius: 1rem;
  margin: 1em auto 5rem auto;

  >div {
    >div {
      display: flex;
      gap: var(--space-xs);
    }
  }
}

.actions {
  display: flex;
  justify-content: space-between;
  padding: var(--space-m);
  border: 1px solid var(--color-neutral-7);
  border-radius: 1rem;
}

.buttons {
  display: flex;
  gap: var(--space-xs);
}

/* ── Section header ── */
.section-header {
  padding: var(--space-s) 0 var(--space-3xs);
}

.section-header p {
  color: var(--color-neutral-4);
}

/* ── Sub-nav pills ── */
.sub-nav {
  display: flex;
  gap: var(--space-3xs);
  padding: var(--space-2xs) 0;
  overflow-x: auto;
  scrollbar-width: none;
}

.sub-nav::-webkit-scrollbar {
  display: none;
}

/* ── Hint text ── */
.hint {
  display: block;
  color: var(--color-neutral-5);
  padding: var(--space-2xs) 0 var(--space-3xs);
}

/* ── Recipe card ── */
recipe-card {
  background-color: var(--color-neutral-10);
  border-radius: 2rem;
  border: 1px solid var(--color-neutral-7);
  cursor: pointer;
  width: 100%;
  display: flex;
  flex-direction: column;
  overflow: clip;

  >a {

    >img,
    >.placeholder {
      width: 100%;
      height: 11rem;
      object-fit: cover;
      display: block;
      background-color: var(--color-neutral-8);
    }

    >.placeholder {
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 5rem;
      border-radius: var(--radius-s) var(--radius-s) 0 0;
      padding: 3.5rem 0;

      &::after {
        content: "🍽";
      }
    }
  }

  >div.info {
    padding: var(--space-2xs) var(--space-s);

    .fav-heart {
      margin-left: var(--space-3xs);
      color: var(--color-color-4);
    }

    >.meta {
      display: flex;
      align-items: center;
      gap: var(--space-xs);
      color: var(--color-neutral-5);
      margin-bottom: var(--space-3xs);

      svg {
        width: 1em;
        height: 1em;
        vertical-align: -0.1em;
        margin-right: 0.15em;
      }
    }
  }

  >div.recipe-actions {
    display: flex;
    padding: 0 var(--space-s) var(--space-s) var(--space-s);
    gap: var(--space-2xs);
    justify-content: end;
    margin-top: auto;
    flex: 0 1;
  }
}

/* ── Shop sections ── */
.shop-section {
  margin: var(--space-2xs) 0;
}

.shop-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-2xs) 0;
  cursor: pointer;
}

.count {
  background-color: var(--color-neutral-8);
  padding: 0.1em var(--space-2xs);
  border-radius: 100px;
  color: var(--color-neutral-5);
}

.count-subtle {
  color: var(--color-neutral-5);
}

.shop-add-item {
  padding: var(--space-2xs) 0;
}

.shop-item {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
  padding: var(--space-2xs) 0;
  border-bottom: 1px solid var(--color-neutral-8);
  cursor: pointer;
}

.shop-item:last-child {
  border-bottom: none;
}

.shop-item:has(input[type="checkbox"]:checked) {
  text-decoration: line-through;
  color: var(--color-neutral-5);
}

.shop-item .detail {
  margin-left: auto;
  color: var(--color-neutral-5);
}

.shop-item .shop-badge {
  margin-left: auto;
  padding: var(--space-3xs) var(--space-2xs);
  border-radius: var(--border-radius);
  font-size: var(--font-size--1);
  color: var(--color-color-1);
  background-color: color-mix(in oklch, var(--color-color-1) 15%, transparent);
}

.shop-item .shop-badge + .detail {
  margin-left: var(--space-2xs);
}

.shop-pin,
.shop-remove {
  margin-left: auto;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-neutral-5);
}

.shop-aisle {
  padding: var(--space-2xs) 0;
}

.add-item-row {
  padding: var(--space-2xs) 0;
}

.add-item-row input {
  width: 100%;
  border: 1px dashed var(--color-neutral-7);
  border-radius: 0.3em;
  padding: var(--space-2xs) var(--space-xs);
  font-family: var(--font-family-1);
  font-size: var(--font-size--1);
  background: transparent;
  color: var(--color-neutral-2);
  outline: none;
}

.add-item-row input::placeholder {
  color: var(--color-neutral-5);
}

.pantry-list {
  padding: var(--space-2xs) 0;
  color: var(--color-neutral-5);
}

/* ── Action card (transition prompt) ── */
.action-card {
  display: flex;
  padding: var(--space-2xs) 0;
}

.action-card.locked {
  opacity: 0.5;
  pointer-events: none;
}

span.pending {
  color: var(--color-neutral-6);
}

/* ── Shopping card ── */

shopping-summary {
  margin-bottom: var(--space-xs);
}

.shopping-card {
  background-color: var(--color-neutral-10);
  width: 100%;
}

.shopping-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-2xs);
}

.shop-toggle-inline {
  display: flex;
  background-color: var(--color-neutral-8);
  border-radius: 100px;
  padding: 0.15rem;
  border: none;
}

.shop-toggle-inline label {
  padding: var(--space-3xs) var(--space-xs);
  background: transparent;
  border-radius: 100px;
  font-family: var(--font-family-1);
  font-size: var(--font-size--2);
  font-weight: 500;
  color: var(--color-neutral-5);
  cursor: pointer;
}

.shop-toggle-inline input[type="radio"] {
  display: none;
}

.shop-toggle-inline label.active {
  background-color: var(--color-neutral-10);
  color: var(--color-neutral-2);
}

.shopping-actions {
  padding-top: var(--space-s);
  text-align: center;
  display: flex;
  justify-content: end;
}

/* ── Cook step bubble ── */
.cook-step-bubble {
  background-color: var(--color-neutral-10);
  border: 1px solid var(--color-neutral-7);
  border-radius: 0.3em;
  padding: var(--space-s);
  width: 100%;
}

.cook-step-bubble.locked {
  opacity: 0.5;
  pointer-events: none;
}

.step-label {
  display: block;
  font-weight: 600;
  color: var(--color-color-1);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--space-2xs);
  font-size: var(--font-size--1);
}

.step-instruction {
  font-size: var(--font-size-1);
  font-weight: 500;
  line-height: 1.4;
  margin-bottom: var(--space-s);
}

/* ── Dialog ── */
dialog::backdrop {
  backdrop-filter: blur(10px);
}

dialog[open] {
  position: fixed;
  inset: 0;
  margin: auto;
  border: none;
  z-index: 200;
  background-color: var(--color-neutral-10);
  border-radius: 1rem;
  max-height: 95vh;
  overflow-y: auto;
  border: 1px solid var(--color-neutral-7);
  box-shadow: 0px 0px 10px var(--color-neutral-7);
  padding: 0;
  max-width: 100%;
}

dialog#shop-dialog {
  width: 40rem;
}

dialog#reject-dialog {
  width: 30rem;
}

/* ── Cook mode page ── */
cook-mode-page {
  >img {
    width: 100%;
    height: 25rem;
    object-fit: cover;
    display: block;
    border-radius: 1rem;
  }

  >div>header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-xs);
  }

  >div>nav {
    display: flex;
    gap: var(--space-2xs);
    margin-bottom: var(--space-s);
  }

  >div>div {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    margin: var(--space-xs) 0 var(--space-s);
  }

  >div>h6 {
    font-weight: 600;
    color: var(--color-neutral-5);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin: var(--space-s) 0 var(--space-2xs);
  }

  >div>ul {
    list-style: none;

    >li {
      padding: var(--space-3xs) 0;
      border-bottom: 1px solid var(--color-neutral-8);
      display: flex;
      justify-content: space-between;

      >span:last-child {
        color: var(--color-neutral-5);
      }
    }
  }

  >div>ol {
    list-style: none;
    counter-reset: steps;

    >li {
      counter-increment: steps;
      padding: var(--space-2xs) 0;
      border-bottom: 1px solid var(--color-neutral-8);

      &::before {
        content: counter(steps) ". ";
        font-weight: 600;
        color: var(--color-color-1);
      }
    }
  }

  >div>footer {
    display: flex;
    gap: var(--space-2xs);
    margin-top: var(--space-s);
  }

  >div>fieldset {
    border: none;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-3xs);
    margin-top: var(--space-xs);

    >input[type="text"] {
      width: 100%;
      border: 1px dashed var(--color-neutral-7);
      border-radius: 0.3em;
      padding: var(--space-xs) var(--space-s);
      font-family: var(--font-family-1);
      font-size: var(--font-size--1);
      background: transparent;
      color: var(--color-neutral-2);
      outline: none;
      margin-top: var(--space-xs);

      &:focus {
        border-color: var(--color-color-1);
        border-style: solid;
      }
    }

    >footer {
      display: flex;
      gap: var(--space-2xs);
      margin-top: var(--space-s);
    }
  }
}

dialog[open]>.dialog-meta {
  color: var(--color-neutral-5);
  display: block;
  margin-bottom: var(--space-xs);
}

dialog[open]>p {
  color: var(--color-neutral-4);
  margin-bottom: var(--space-s);
}

dialog[open]>.portion-row {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  margin: var(--space-xs) 0 var(--space-s);
}

dialog[open]>.dialog-section-title {
  font-weight: 600;
  color: var(--color-neutral-5);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin: var(--space-s) 0 var(--space-2xs);
}

.ing-list {
  list-style: none;
}

.ing-list li {
  padding: var(--space-3xs) 0;
  border-bottom: 1px solid var(--color-neutral-8);
  display: flex;
  justify-content: space-between;
}

.ing-list li span:last-child {
  color: var(--color-neutral-5);
}

.steps-preview {
  list-style: none;
  counter-reset: steps;
}

.steps-preview li {
  counter-increment: steps;
  padding: var(--space-2xs) 0;
  border-bottom: 1px solid var(--color-neutral-8);
}

.steps-preview li::before {
  content: counter(steps) ". ";
  font-weight: 600;
  color: var(--color-color-1);
}

.dialog-actions {
  display: flex;
  gap: var(--space-2xs);
  margin-top: var(--space-s);
}

/* ── Reject options ── */
.reject-options {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xs);
  margin-top: var(--space-xs);
}

/* ── Helpers ── */
.center {
  text-align: center;
  padding: var(--space-s) 0;
}

.ghost-dashed {
  background: none;
  border: 1px dashed var(--color-neutral-7);
  border-radius: 0.3em;
  padding: var(--space-xs) var(--space-m);
  font-family: var(--font-family-1);
  font-size: var(--font-size--1);
  color: var(--color-neutral-5);
  cursor: pointer;
  width: 100%;
}

.avatar {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background-color: var(--color-color-2);
  color: var(--color-light-neutral-9);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  flex-shrink: 0;
}

.avatar::before {
  content: "N";
}

.bubble-content {
  background-color: var(--color-neutral-9);
  padding: var(--space-2xs) var(--space-s);
  border-radius: 1em;
  border-top-left-radius: 0.25rem;
  height: fit-content;
}

.typing {
  display: inline-flex;
  gap: 0.25em;
  padding: var(--space-s) 0;
}

.typing span {
  width: 0.45em;
  height: 0.45em;
  border-radius: 50%;
  background-color: var(--color-neutral-5);
  animation: bounce 1.2s infinite;
}

.typing span:nth-child(2) {
  animation-delay: 0.15s;
}

.typing span:nth-child(3) {
  animation-delay: 0.3s;
}

@keyframes shake {

  0%,
  100% {
    transform: translate(0, 0);
  }

  15% {
    transform: translate(-4px, -3px);
  }

  30% {
    transform: translate(4px, -2px);
  }

  45% {
    transform: translate(-3px, 2px);
  }

  60% {
    transform: translate(3px, -1px);
  }

  75% {
    transform: translate(-2px, 1px);
  }
}

.shake {
  animation: shake 0.4s ease;
}

@keyframes bounce {

  0%,
  60%,
  100% {
    transform: translateY(0);
  }

  30% {
    transform: translateY(-0.35em);
  }
}

.add-item-input {
  width: 100%;
  border: 1px dashed var(--color-neutral-7);
  border-radius: 0.3em;
  padding: var(--space-xs) var(--space-s);
  font-family: var(--font-family-1);
  font-size: var(--font-size--1);
  background: transparent;
  color: var(--color-neutral-2);
  outline: none;
}

.add-item-input:focus {
  border-color: var(--color-color-1);
  border-style: solid;
}

.add-item-input::placeholder {
  color: var(--color-neutral-5);
}

.n-feature-scroll {
  padding: 0 0 var(--space-xs) 0;
}

.n-feature-scroll>.feature-container>.wrapper>li {
  background-color: transparent;
}

details>summary {
  cursor: pointer;
}

details>div {
  background-color: var(--color-neutral-9);
  padding: 0 var(--space-2xs);
  border-radius: 1rem;
  margin-top: var(--space-xs);
}

/* ── Recipe detail inline card ── */
.recipe-detail-card {
  background-color: var(--color-neutral-10);
  border: 1px solid var(--color-neutral-7);
  border-radius: 0.3em;
  overflow: hidden;
  width: 100%;
}

.recipe-detail-body {
  padding: var(--space-s);
}

.recipe-detail-body p {
  color: var(--color-neutral-4);
  margin: var(--space-2xs) 0 var(--space-s);
}

.recipe-detail-actions {
  display: flex;
  gap: var(--space-2xs);
  margin-top: var(--space-s);
}

/* ── Recipe detail page ── */
recipe-detail {

  >.recipe-detail-hero {
    >img {
      width: 100%;
      height: 30rem;
      object-fit: cover;
      border-radius: var(--border-radius);
      border-radius: 2rem;
    }

    >header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: var(--space-s);

      .heart {
        color: transparent;
        -webkit-text-stroke: 1px var(--color-color-4);
        font-size: var(--font-size-6);
        text-decoration: none;
        padding: 0;
      }

      .heart.filled {
        color: var(--color-color-4);
        -webkit-text-stroke: 0;
      }

      >.hero-meta {
        display: flex;
        gap: var(--space-s);
        color: var(--color-neutral-5);
      }
    }
  }

  .recipe-actions-row {
    display: flex;
    gap: var(--space-2xs);
  }

  .tag-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3xs);

    >.tag {
      padding: 0.1em var(--space-2xs);
      border-radius: 100px;
      background-color: var(--color-neutral-8);
      color: var(--color-neutral-2);
    }
  }

  .customize-entry {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-3xs);
    width: 100%;
    text-align: left;
    padding: var(--space-s);
    border: 1px solid var(--color-neutral-7);
    border-radius: 2rem;
    background: transparent;
    cursor: pointer;
    color: inherit;

    >strong {
      color: var(--color-color-1);
    }

    >span {
      color: var(--color-neutral-5);
    }
  }

  .customize-panel {
    border: 1px solid var(--color-neutral-7);
    border-radius: 2rem;
    padding: var(--space-s);

    >.servings-row {
      display: flex;
      align-items: center;
      gap: var(--space-2xs);
    }

    >.customize-ingredients {
      list-style: none;
      margin: var(--space-2xs) 0 0;
      padding: 0;

      >li {
        border-top: 1px solid var(--color-neutral-8);

        >.ingredient-toggle {
          display: flex;
          justify-content: space-between;
          width: 100%;
          gap: var(--space-s);
          padding: var(--space-2xs) 0;
          background: none;
          border: none;
          cursor: pointer;
          color: inherit;
          text-align: left;
        }

        >.substitutes {
          display: flex;
          flex-wrap: wrap;
          gap: var(--space-2xs);
          padding-bottom: var(--space-2xs);
        }
      }
    }
  }

  .ingredients {
    padding: 0 0 0 var(--space-s);
  }

  .steps {
    padding: 0 0 0 var(--space-s);
  }

  .nutrition-row {
    list-style: none;
    padding: 0;
    display: flex;
    justify-content: space-between;

    >li {
      display: flex;
      flex-direction: column;
      align-items: center;

      >span {
        color: var(--color-neutral-5);
      }
    }
  }
}

/* ── Preferences card ── */
.preferences-card {
  background-color: var(--color-neutral-10);
  border: 1px solid var(--color-neutral-7);
  border-radius: 1rem;
  padding: var(--space-s) var(--space-s) var(--space-2xs) var(--space-s);
  width: 100%;
}

.pref-row {
  display: flex;
  justify-content: space-between;
  padding: var(--space-3xs) 0;
  border-bottom: 1px solid var(--color-neutral-8);
}

.pref-row:last-of-type {
  border-bottom: none;
}

.pref-row span:first-child {
  color: var(--color-neutral-5);
}

/* ── Pantry card ── */
.pantry-card {
  background-color: var(--color-neutral-10);
  border: 1px solid var(--color-neutral-7);
  border-radius: 1rem;
  padding: var(--space-s);
  width: 100%;
}

/* ── Cook progress bar ── */
.cook-progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  padding: var(--space-2xs) var(--space-s);
  background-color: var(--color-neutral-10);
  border-bottom: 1px solid var(--color-neutral-8);
}

.cook-progress-info {
  display: flex;
  flex-direction: column;
  min-width: 0;
  flex-shrink: 0;
}

.cook-progress-recipe {
  font-weight: 600;
  font-size: var(--font-size--1);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.cook-progress-step {
  font-size: var(--font-size--2);
  color: var(--color-neutral-5);
}

.cook-progress-track {
  flex: 1;
  height: 0.3rem;
  background-color: var(--color-neutral-8);
  border-radius: 100px;
  overflow: hidden;
}

.cook-progress-fill {
  height: 100%;
  background-color: var(--color-color-1);
  border-radius: 100px;
  transition: width 0.3s ease;
}

.cook-timer-display {
  font-weight: 600;
  font-size: var(--font-size--1);
  color: var(--color-color-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* ── Favorites card ── */
.favorites-card {
  background-color: var(--color-neutral-10);
  border: 1px solid var(--color-neutral-7);
  border-radius: 0.3em;
  padding: var(--space-2xs) 0;
  width: 100%;
}

.favorites-option {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  padding: var(--space-xs) var(--space-s);
  border: none;
  background: none;
  width: 100%;
  font-family: var(--font-family-1);
  font-size: var(--font-size--1);
  color: var(--color-neutral-2);
  cursor: pointer;
  text-align: left;
}

.favorites-option:hover {
  background-color: var(--color-neutral-9);
}

.favorites-option svg {
  width: 1.2rem;
  height: 1.2rem;
  color: var(--color-neutral-5);
  flex-shrink: 0;
}

/* ── Planned grid ── */
.planned-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
  gap: var(--space-s);
}

/* ── Empty state ── */
.empty-state {
  text-align: center;
  padding: var(--space-xl) 0;
  color: var(--color-neutral-5);
}

/* ── Insight card ── */
.insight-card {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2xs);
  padding: var(--space-s);
  border-radius: var(--border-radius);
  background-color: color-mix(in oklch, var(--color-color-1) 15%, transparent);
  border-radius: 2rem;

  >p {
    margin: 0;

    >em {
      color: var(--color-color-1);
    }
  }
}

/* ── Ratings list ── */
.ratings-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3xs);

  >.ratings-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-xs);
    padding: var(--space-2xs) var(--space-s);
    border-radius: var(--border-radius);
    background-color: color-mix(in oklch, var(--color-color-1) 15%, transparent);
    flex-wrap: wrap;

    >.row-prompt {
      background: none;
      border: none;
      padding: 0;
      text-align: left;
      cursor: pointer;
      color: inherit;
    }

    >.stars {
      display: flex;
      gap: var(--space-3xs);

      >.star {
        background: none;
        border: none;
        padding: 0;
        cursor: pointer;
        color: var(--color-color-1);
      }
    }
  }
}

/* ── My planned links ── */
.my-planned-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xs);
}

.my-planned-link {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  padding: var(--space-xs) var(--space-s);
  background-color: var(--color-neutral-10);
  border: 1px solid var(--color-neutral-7);
  border-radius: 0.75rem;
  color: var(--color-neutral-2);
  text-decoration: none;
  cursor: pointer;
  font-family: var(--font-family-1);
  font-size: var(--font-size--1);
  font-weight: 500;
}

.my-planned-link:hover {
  background-color: var(--color-neutral-9);
}

.my-planned-link svg {
  width: 1.2rem;
  height: 1.2rem;
  color: var(--color-neutral-5);
}

.my-planned-link .chevron {
  margin-left: auto;
  color: var(--color-neutral-6);
}

admin-recipe-new,
admin-recipe-detail {
  >form {
    >label {
      display: flex;
      flex-direction: row;
      justify-content: space-between;
      flex-wrap: wrap;

      >select {
        width: 20rem;
      }

      >textarea {
        width: 100%;
      }

      >p.prompt {
        background-color: var(--color-neutral-8);
        padding: var(--space-s);
        border-radius: 1rem;
      }
    }

    >div {
      display: flex;
      flex-direction: row;
      column-gap: var(--space-2xs);

      &.tips-and-swaps,
      &.general,
      &.times,
      &.nutrition {
        flex-direction: column;

        >label {
          justify-content: space-between;
        }

        >.tip-row {
          display: flex;
          flex-direction: column;
        }
      }

      &.ingredients {
        flex-direction: column;
      }

      &.steps {
        flex-direction: column;
      }

      >div.image {
        background-color: var(--color-neutral-9);
        width: 15rem;
        height: 15rem;
        border-radius: 1rem;
        aspect-ratio: 1/1;
        cursor: pointer;
        align-content: center;
        text-align: center;

        >img {
          border-radius: 1rem;
        }
      }

      >div.text {
        display: flex;
        flex-direction: column;
        flex: 1;

        >textarea {
          height: 10rem;
        }

        >input.title {
          font-size: var(--font-size-2);
        }
      }
    }
  }
}

.ingredient-row {
  display: flex;
  column-gap: var(--space-2xs);

  >input[type=number] {
    width: 6rem;
  }

  >input.unit {
    width: 6rem;
  }

  >input.ingredient-name {
    width: 15rem;
  }

  >input.ingredient-how {
    width: 25rem;
  }
}

.step-row {
  display: flex;
  column-gap: var(--space-2xs);
  flex-wrap: wrap;

  >label {
    display: flex;
    width: 100%;
    flex-wrap: wrap;

    >textarea {
      width: 100%;
    }

    >input.minutes {
      width: 7rem;
    }
  }

  >button.delete {
    font-size: var(--font-size-0);
  }
}

ul.recipe-list {
  display: flex;
  flex-direction: column;
  row-gap: var(--space-s);
  list-style: none;

  >li {
    display: flex;
    column-gap: var(--space-2xs);

    >img {
      width: 10rem;
      height: 10rem;
      border-radius: 1rem;
      background-color: var(--color-neutral-9);
      aspect-ratio: 1 / 1;
    }
  }
}

.ingredients-table,
.admin-accounts-table,
.subscribers {
  padding: 0 var(--space-m);

  >.buttons {
    display: flex;
    align-items: center;
    justify-items: start;
  }

  >table {
    width: 100%;
    background-color: var(--color-neutral-7);
    border-radius: 1rem;
    overflow: clip;
    font-size: var(--font-size-0);

    thead {
      border-top-left-radius: 1rem;
      border-top-right-radius: 1rem;
      overflow: clip;

      >tr {
        >th {
          padding: var(--space-xs);
          background-color: var(--color-neutral-8);
        }
      }
    }

    tbody {
      border-bottom-left-radius: 1rem;
      border-bottom-right-radius: 1rem;
      overflow: clip;

      >tr {
        >td {
          padding: var(--space-xs);
          background-color: var(--color-neutral-9);
        }
      }
    }
  }
}

.admin-accounts-table {
  padding: 0;
}

dialog#image-dialog {
  width: 55rem;
  /* max-width: 90vw; */

  >.spaced {
    padding: var(--space-m);

    >img {
      width: 100%;
      border-radius: 0.5rem;
    }

    >.dialog-actions {
      justify-content: space-between;
    }
  }
}


nomi-logo svg {
  height: var(--font-size-2);
  display: block;
}

/* app-chat */
.app-chat {
  display: flex;
  flex-direction: column;
  gap: var(--space-m);

  > .log {
    display: flex;
    flex-direction: column;
    gap: var(--space-s);
    margin: 0;
    padding: 0;
    list-style: none;

    > li {
      display: flex;
      flex-direction: column;
      gap: var(--space-s);
      max-width: 80%;

      &.user {
        align-self: flex-end;
        align-items: flex-end;
      }

      > p {
        margin: 0;
        padding: var(--space-xs) var(--space-s);
        border-radius: 2rem;
        background: var(--color-neutral-9);
      }

      &.user > p {
        background: var(--color-color-2);
        color: var(--color-light-neutral-10);
      }

      > .options {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2xs);
      }

      > chat-recipe-card {
        width: 100%;
      }
    }
  }

  > .composer {
    position: sticky;
    bottom: 0;
    display: flex;
    align-items: end;
    gap: var(--space-2xs);
    background-color: var(--color-neutral-9);
    padding: var(--space-xs);
    border-radius: 2rem;
    margin: 0 0 var(--space-m) 0;

    &:hover {
      outline: 1px solid var(--color-neutral-8);
      cursor: text;
    }

    > textarea {
      flex: 1;
      background: transparent;
      border: none;
      resize: none;
      max-height: 10rem;
      overflow-y: auto;

      &:focus {
        outline: none;
      }
    }

    &:has(textarea:focus) {
      outline: 1px solid var(--color-neutral-7);
    }
  }
}

/* chat-recipe-card */
chat-recipe-card {
  background-color: var(--color-neutral-10);
  border: 1px solid var(--color-neutral-7);
  border-radius: 2rem;
  display: flex;
  flex-direction: column;
  overflow: clip;

  > a {
    > img,
    > .placeholder {
      width: 100%;
      height: 11rem;
      object-fit: cover;
      display: block;
      background-color: var(--color-neutral-8);
    }

    > .placeholder {
      animation: chat-card-pulse 1.2s ease-in-out infinite;
    }
  }

  > .info {
    padding: var(--space-2xs) var(--space-s);

    > .meta {
      display: flex;
      align-items: center;
      gap: var(--space-xs);
      color: var(--color-neutral-5);

      svg {
        width: 1em;
        height: 1em;
        vertical-align: -0.1em;
        margin-right: 0.15em;
      }
    }
  }

  > .recipe-actions {
    display: flex;
    gap: var(--space-2xs);
    justify-content: start;
    padding: 0 var(--space-s) var(--space-s) var(--space-s);
  }
}

@keyframes chat-card-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}
