/* [project]/app/globals.css [app-client] (css) */
@layer properties {
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
    *, :before, :after, ::backdrop {
      --tw-rotate-x: initial;
      --tw-rotate-y: initial;
      --tw-rotate-z: initial;
      --tw-skew-x: initial;
      --tw-skew-y: initial;
      --tw-leading: initial;
      --tw-font-weight: initial;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
      --tw-blur: initial;
      --tw-brightness: initial;
      --tw-contrast: initial;
      --tw-grayscale: initial;
      --tw-hue-rotate: initial;
      --tw-invert: initial;
      --tw-opacity: initial;
      --tw-saturate: initial;
      --tw-sepia: initial;
      --tw-drop-shadow: initial;
      --tw-drop-shadow-color: initial;
      --tw-drop-shadow-alpha: 100%;
      --tw-drop-shadow-size: initial;
    }
  }
}

@layer theme {
  :root, :host {
    --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
      "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
      "Courier New", monospace;
    --spacing: .25rem;
    --font-weight-bold: 700;
    --leading-normal: 1.5;
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
  }
}

@layer base {
  *, :after, :before, ::backdrop {
    box-sizing: border-box;
    border: 0 solid;
    margin: 0;
    padding: 0;
  }

  ::file-selector-button {
    box-sizing: border-box;
    border: 0 solid;
    margin: 0;
    padding: 0;
  }

  html, :host {
    -webkit-text-size-adjust: 100%;
    tab-size: 4;
    line-height: 1.5;
    font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
    font-feature-settings: var(--default-font-feature-settings, normal);
    font-variation-settings: var(--default-font-variation-settings, normal);
    -webkit-tap-highlight-color: transparent;
  }

  hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
  }

  abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
  }

  h1, h2, h3, h4, h5, h6 {
    font-size: inherit;
    font-weight: inherit;
  }

  a {
    color: inherit;
    -webkit-text-decoration: inherit;
    -webkit-text-decoration: inherit;
    text-decoration: inherit;
  }

  b, strong {
    font-weight: bolder;
  }

  code, kbd, samp, pre {
    font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
    font-feature-settings: var(--default-mono-font-feature-settings, normal);
    font-variation-settings: var(--default-mono-font-variation-settings, normal);
    font-size: 1em;
  }

  small {
    font-size: 80%;
  }

  sub, sup {
    vertical-align: baseline;
    font-size: 75%;
    line-height: 0;
    position: relative;
  }

  sub {
    bottom: -.25em;
  }

  sup {
    top: -.5em;
  }

  table {
    text-indent: 0;
    border-color: inherit;
    border-collapse: collapse;
  }

  :-moz-focusring {
    outline: auto;
  }

  progress {
    vertical-align: baseline;
  }

  summary {
    display: list-item;
  }

  ol, ul, menu {
    list-style: none;
  }

  img, svg, video, canvas, audio, iframe, embed, object {
    vertical-align: middle;
    display: block;
  }

  img, video {
    max-width: 100%;
    height: auto;
  }

  button, input, select, optgroup, textarea {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    opacity: 1;
    background-color: #0000;
    border-radius: 0;
  }

  ::file-selector-button {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    opacity: 1;
    background-color: #0000;
    border-radius: 0;
  }

  :where(select:is([multiple], [size])) optgroup {
    font-weight: bolder;
  }

  :where(select:is([multiple], [size])) optgroup option {
    padding-inline-start: 20px;
  }

  ::file-selector-button {
    margin-inline-end: 4px;
  }

  ::placeholder {
    opacity: 1;
  }

  @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {
    ::placeholder {
      color: currentColor;
    }

    @supports (color: color-mix(in lab, red, red)) {
      ::placeholder {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
  }

  textarea {
    resize: vertical;
  }

  ::-webkit-search-decoration {
    -webkit-appearance: none;
  }

  ::-webkit-date-and-time-value {
    min-height: 1lh;
    text-align: inherit;
  }

  ::-webkit-datetime-edit {
    display: inline-flex;
  }

  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }

  ::-webkit-datetime-edit {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-year-field {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-month-field {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-day-field {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-hour-field {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-minute-field {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-second-field {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-millisecond-field {
    padding-block: 0;
  }

  ::-webkit-datetime-edit-meridiem-field {
    padding-block: 0;
  }

  ::-webkit-calendar-picker-indicator {
    line-height: 1;
  }

  :-moz-ui-invalid {
    box-shadow: none;
  }

  button, input:where([type="button"], [type="reset"], [type="submit"]) {
    appearance: button;
  }

  ::file-selector-button {
    appearance: button;
  }

  ::-webkit-inner-spin-button {
    height: auto;
  }

  ::-webkit-outer-spin-button {
    height: auto;
  }

  [hidden]:where(:not([hidden="until-found"])) {
    display: none !important;
  }
}

@layer components;

@layer utilities {
  .collapse {
    visibility: collapse;
  }

  .visible {
    visibility: visible;
  }

  .absolute {
    position: absolute;
  }

  .fixed {
    position: fixed;
  }

  .static {
    position: static;
  }

  .start {
    inset-inline-start: var(--spacing);
  }

  .end {
    inset-inline-end: var(--spacing);
  }

  .isolate {
    isolation: isolate;
  }

  .\!container {
    width: 100% !important;
  }

  @media (min-width: 40rem) {
    .\!container {
      max-width: 40rem !important;
    }
  }

  @media (min-width: 48rem) {
    .\!container {
      max-width: 48rem !important;
    }
  }

  @media (min-width: 64rem) {
    .\!container {
      max-width: 64rem !important;
    }
  }

  @media (min-width: 80rem) {
    .\!container {
      max-width: 80rem !important;
    }
  }

  @media (min-width: 96rem) {
    .\!container {
      max-width: 96rem !important;
    }
  }

  .container {
    width: 100%;
  }

  @media (min-width: 40rem) {
    .container {
      max-width: 40rem;
    }
  }

  @media (min-width: 48rem) {
    .container {
      max-width: 48rem;
    }
  }

  @media (min-width: 64rem) {
    .container {
      max-width: 64rem;
    }
  }

  @media (min-width: 80rem) {
    .container {
      max-width: 80rem;
    }
  }

  @media (min-width: 96rem) {
    .container {
      max-width: 96rem;
    }
  }

  .block {
    display: block;
  }

  .contents {
    display: contents;
  }

  .flex {
    display: flex;
  }

  .grid {
    display: grid;
  }

  .hidden {
    display: none;
  }

  .inline {
    display: inline;
  }

  .table {
    display: table;
  }

  .shrink {
    flex-shrink: 1;
  }

  .transform {
    transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
  }

  .resize {
    resize: both;
  }

  .items-center {
    align-items: center;
  }

  .rounded {
    border-radius: .25rem;
  }

  .bg-\[rgba\(0\,0\,0\,\.05\)\] {
    background-color: #0000000d;
  }

  .p-8 {
    padding: calc(var(--spacing) * 8);
  }

  .leading-6 {
    --tw-leading: calc(var(--spacing) * 6);
    line-height: calc(var(--spacing) * 6);
  }

  .leading-normal {
    --tw-leading: var(--leading-normal);
    line-height: var(--leading-normal);
  }

  .font-bold {
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
  }

  .ring {
    --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }

  .blur {
    --tw-blur: blur(8px);
    filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
  }

  .filter {
    filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
  }
}

:root {
  --cream: #f5f1e8;
  --paper: #fffdf8;
  --ink: #18392f;
  --muted: #6f7d76;
  --green: #1f5a46;
  --green-soft: #dfeade;
  --tomato: #d85d3f;
  --mustard: #f0c96b;
  --line: #d9d7cc;
  --shadow: 0 14px 36px #26372f1c;
}

* {
  box-sizing: border-box;
}

html {
  background: var(--cream);
}

body {
  background: var(--cream);
  color: var(--ink);
  margin: 0;
  font-family: DM Sans, Arial, sans-serif;
}

button, input, textarea, select {
  font: inherit;
}

button {
  color: inherit;
}

button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline-offset: 2px;
  outline: 3px solid #d85d3f47;
}

.app-shell {
  min-height: 100vh;
}

.topbar {
  border-bottom: 1px solid var(--line);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  z-index: 31;
  background: #fffdf8eb;
  align-items: center;
  gap: 28px;
  height: 76px;
  padding: 0 4vw;
  display: flex;
  position: sticky;
  top: 0;
}

.brand {
  cursor: pointer;
  background: none;
  border: 0;
  align-items: center;
  gap: 11px;
  padding: 0;
  font-family: Fraunces, Georgia, serif;
  font-size: 23px;
  font-weight: 700;
  display: flex;
}

.brand-mark {
  color: #fffdf8;
  background: var(--green);
  border-radius: 11px 11px 11px 3px;
  place-items: center;
  width: 36px;
  height: 36px;
  font-size: 21px;
  display: grid;
}

.view-switch {
  align-self: stretch;
  align-items: stretch;
  gap: 6px;
  display: flex;
}

.view-switch button {
  color: var(--muted);
  cursor: pointer;
  background: none;
  border: 0;
  border-bottom: 3px solid #0000;
  padding: 0 16px;
  font-weight: 600;
}

.view-switch button span {
  margin-right: 7px;
}

.view-switch button.active {
  color: var(--green);
  border-bottom-color: var(--green);
}

.view-switch b {
  background: var(--tomato);
  color: #fff;
  border-radius: 999px;
  place-items: center;
  min-width: 20px;
  height: 20px;
  margin-left: 5px;
  font-size: 11px;
  display: inline-grid;
}

.nav-home-indicator {
  width: 17px;
  height: 17px;
  color: var(--green);
  background: var(--green-soft);
  vertical-align: middle;
  border-radius: 50%;
  place-items: center;
  margin-left: 5px;
  font-size: 11px;
  font-style: normal;
  line-height: 1;
  display: inline-grid;
}

.header-actions {
  align-items: center;
  gap: 10px;
  margin-left: auto;
  display: flex;
  position: relative;
}

.mobile-menu-button, .mobile-action-menu {
  display: none;
}

.collaboration-button {
  height: 38px;
  color: var(--green);
  cursor: pointer;
  white-space: nowrap;
  background: #f4faf6;
  border: 1px solid #bdd0c5;
  border-radius: 999px;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
  font-size: 12px;
  font-weight: 800;
  display: flex;
}

.live-dot {
  background: #43a66f;
  border-radius: 50%;
  width: 8px;
  height: 8px;
  box-shadow: 0 0 0 4px #43a66f21;
}

.live-dot.syncing {
  animation: 1s ease-in-out infinite alternate syncPulse;
}

@keyframes syncPulse {
  to {
    opacity: .4;
    transform: scale(.82);
  }
}

.primary-button, .secondary-button, .outline-button {
  cursor: pointer;
  border: 1px solid #0000;
  border-radius: 10px;
  padding: 11px 16px;
  font-weight: 700;
  transition: all .2s;
}

.primary-button {
  background: var(--green);
  color: #fff;
  box-shadow: 0 7px 16px #1f5a462e;
}

.primary-button:hover {
  background: #174b3a;
  transform: translateY(-1px);
}

.primary-button:disabled {
  opacity: .45;
  cursor: not-allowed;
  transform: none;
}

.secondary-button {
  background: var(--paper);
  border-color: var(--line);
}

.secondary-button:hover, .outline-button:hover {
  border-color: var(--green);
  background: #f6faf6;
}

.outline-button {
  width: 100%;
  color: var(--green);
  background: none;
  border-color: #bdd0c5;
}

.avatar {
  color: #513a11;
  cursor: pointer;
  background: #efc86e;
  border: 0;
  border-radius: 50%;
  width: 38px;
  height: 38px;
  font-size: 12px;
  font-weight: 800;
}

.settings-button {
  border: 1px solid var(--line);
  width: 38px;
  height: 38px;
  color: var(--green);
  background: var(--paper);
  cursor: pointer;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  font-size: 17px;
  display: grid;
}

.settings-button:hover, .settings-button:focus-visible {
  background: var(--green-soft);
  border-color: #b9cec1;
}

.auth-page {
  background: radial-gradient(circle at 72% 18%, #f0c96b47, transparent 28%), var(--cream);
  grid-template-columns: minmax(0, 1fr);
  place-items: center;
  min-height: 100vh;
  padding: 24px;
  display: grid;
}

.auth-card {
  border: 1px solid var(--line);
  background: var(--paper);
  width: 100%;
  min-width: 0;
  max-width: 540px;
  box-shadow: var(--shadow);
  text-align: center;
  border-radius: 24px;
  padding: 52px;
}

.sign-in-card {
  text-align: left;
}

.sign-in-card .auth-mark, .sign-in-card .eyebrow, .sign-in-card h1, .sign-in-card > p {
  text-align: center;
}

.sign-in-card label {
  color: var(--ink);
  margin-top: 14px;
  font-size: 11px;
  font-weight: 800;
  display: block;
}

.sign-in-card input {
  border: 1px solid var(--line);
  background: #fffefa;
  border-radius: 9px;
  width: 100%;
  margin-top: 6px;
  padding: 11px 12px;
}

.sign-in-card .auth-error {
  color: var(--tomato);
  text-align: left;
  margin: 12px 0;
  font-size: 11px;
  font-weight: 700;
}

.auth-mode-button {
  width: 100%;
  color: var(--green);
  cursor: pointer;
  background: none;
  border: 0;
  margin-top: 13px;
  font-size: 11px;
  font-weight: 800;
}

.sign-in-card .auth-button {
  text-align: center;
  width: 100%;
  margin-top: 18px;
}

.google-auth-button {
  border: 1px solid var(--line);
  cursor: pointer;
  background: #fff;
  border-radius: 10px;
  justify-content: center;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin-top: 24px;
  padding: 11px 16px;
  font-weight: 700;
  display: flex;
}

.google-auth-button:hover {
  background: #fbfcfb;
  border-color: #aeb8b3;
}

.google-auth-button:disabled {
  opacity: .5;
  cursor: not-allowed;
}

.google-auth-button span {
  color: #4285f4;
  border-radius: 50%;
  place-items: center;
  width: 21px;
  height: 21px;
  font-size: 16px;
  font-weight: 800;
  display: grid;
}

.auth-divider {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  align-items: center;
  gap: 12px;
  margin: 20px 0 4px;
  font-size: 10px;
  font-weight: 700;
  display: flex;
}

.auth-divider:before, .auth-divider:after {
  background: var(--line);
  content: "";
  flex: 1;
  height: 1px;
}

.forgot-password-link {
  width: fit-content;
  color: var(--green);
  margin: 9px 0 0 auto;
  font-size: 11px;
  font-weight: 700;
  text-decoration: none;
  display: block;
}

.forgot-password-link:hover, .auth-secondary-link:hover {
  text-decoration: underline;
}

.auth-secondary-link {
  color: var(--green);
  text-align: center;
  margin-top: 16px;
  font-size: 11px;
  font-weight: 700;
  text-decoration: none;
  display: block;
}

.auth-link-button {
  padding: 11px 16px;
}

.auth-mark {
  width: 52px;
  height: 52px;
  margin: 0 auto 24px;
  font-size: 28px;
}

.auth-card h1 {
  margin: 0;
  font-size: clamp(40px, 7vw, 60px);
  line-height: 1;
}

.auth-card > p:not(.eyebrow) {
  color: var(--muted);
  margin: 20px auto 28px;
  line-height: 1.65;
}

.auth-language-select, .settings-language-select {
  color: #52645d;
  text-align: left;
  gap: 7px;
  font-size: 13px;
  font-weight: 700;
  display: grid;
}

.auth-language-select {
  margin-top: 8px;
}

.auth-language-select select, .settings-language-select select {
  color: #18392f;
  width: 100%;
  min-height: 44px;
  font: inherit;
  background: #fffdf8;
  border: 1px solid #d7d8cf;
  border-radius: 10px;
  padding: 0 12px;
}

.auth-language-select select.language-select-control, .settings-language-select select.language-select-control, .language-select-control option {
  font-family: Twemoji Country Flags, DM Sans, Arial, sans-serif;
}

.settings-language-select {
  margin: -2px 0 14px;
}

.auth-button {
  text-decoration: none;
  display: inline-block;
}

.loading-card h1 {
  font-size: 30px;
  line-height: 1.15;
}

.page-wrap {
  width: min(1460px, 92vw);
  margin: 0 auto;
  padding: 54px 0 80px;
}

.hero-row {
  grid-template-columns: minmax(0, 1fr);
  margin-bottom: 42px;
  display: grid;
}

.eyebrow {
  color: var(--tomato);
  letter-spacing: .16em;
  text-transform: uppercase;
  margin: 0 0 8px;
  font-size: 12px;
  font-weight: 800;
}

h1, h2, h3 {
  font-family: Fraunces, Georgia, serif;
}

.hero-row h1, .shopping-main > h1 {
  letter-spacing: -.045em;
  max-width: 780px;
  margin: 0;
  font-size: clamp(42px, 5vw, 72px);
  line-height: .98;
}

.lede {
  color: var(--muted);
  margin: 17px 0 0;
  font-size: 17px;
  line-height: 1.6;
}

.page-title-row {
  align-items: center;
  gap: 7px;
  min-width: 0;
  display: flex;
}

.page-description {
  display: none;
}

.filter-info-icon {
  z-index: 30;
  width: 20px;
  height: 20px;
  color: var(--green);
  background: var(--paper);
  cursor: help;
  border: 1px solid #b8c9be;
  border-radius: 50%;
  flex: none;
  place-items: center;
  font-family: Georgia, serif;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  display: grid;
  position: relative;
}

.filter-info-icon:after {
  content: attr(data-tooltip);
  z-index: 1;
  color: #fff;
  background: var(--ink);
  opacity: 0;
  pointer-events: none;
  border-radius: 8px;
  width: min(230px, 72vw);
  padding: 8px 10px;
  font-family: DM Sans, Arial, sans-serif;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.4;
  transition: opacity .15s;
  position: absolute;
  top: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  box-shadow: 0 8px 22px #12221c33;
}

.filter-info-icon:hover:after, .filter-info-icon:focus:after {
  opacity: 1;
}

.filter-info-icon:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #2b5b4347;
}

.page-info-icon:after {
  left: auto;
  right: 0;
  transform: none;
}

.toolbar {
  z-index: 20;
  box-shadow: none;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  background: #f5f1e8f0;
  border-radius: 16px;
  grid-template-columns: minmax(260px, 1fr) auto;
  align-items: center;
  gap: 12px 18px;
  margin: -12px -12px 16px;
  padding: 12px;
  transition: transform .22s, opacity .18s, box-shadow .18s;
  display: grid;
  position: sticky;
  top: 88px;
}

.toolbar-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateY(calc(-100% - 24px));
}

.toolbar-visible {
  opacity: 1;
  transform: translateY(0);
}

.toolbar-visible.toolbar-floating {
  box-shadow: 0 4px 20px #26372f96;
}

.recipe-toolbar-primary {
  display: contents;
}

.search-box {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 12px;
  align-items: center;
  gap: 8px;
  width: 100%;
  height: 44px;
  padding: 0 13px;
  display: flex;
}

.search-box span {
  color: var(--muted);
  font-size: 22px;
}

.search-box input {
  width: 100%;
  color: var(--ink);
  background: none;
  border: 0;
  outline: 0;
}

.mobile-search-button, .mobile-search-close, .mobile-tag-filter-button, .mobile-shopping-list-filter-button {
  display: none;
}

.recipe-tag-panel {
  border: 1px solid var(--line);
  background: #fffefab8;
  border-radius: 14px;
  grid-column: 1 / -1;
  padding: 13px 14px 14px;
}

.tag-panel-heading {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
  display: flex;
}

.tag-panel-heading strong, .tag-panel-heading small {
  display: block;
}

.tag-panel-heading strong {
  font-size: 12px;
}

.tag-panel-heading small {
  color: var(--muted);
  margin-top: 2px;
  font-size: 9px;
}

.tag-panel-heading > button {
  color: var(--green);
  cursor: pointer;
  background: none;
  border: 0;
  padding: 5px 0;
  font-size: 10px;
  font-weight: 800;
}

.tag-chip-wrap, .mobile-tag-chip-wrap {
  flex-wrap: wrap;
  gap: 8px;
  display: flex;
}

.tag-chip-wrap > button, .mobile-tag-chip-wrap > button, .recipe-filter-tag {
  border: 1px solid var(--line);
  min-height: 34px;
  color: var(--muted);
  background: var(--paper);
  cursor: pointer;
  white-space: nowrap;
  border-radius: 999px;
  align-items: center;
  gap: 7px;
  padding: 7px 8px 7px 12px;
  font-size: 12px;
  font-weight: 700;
  display: inline-flex;
}

.tag-chip-wrap > button > b, .mobile-tag-chip-wrap > button > b, .recipe-filter-tag > b {
  color: #65756d;
  background: #eeeee8;
  border-radius: 999px;
  place-items: center;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  font-size: 9px;
  display: inline-grid;
}

.tag-chip-wrap > button.shopping-list-filter, .mobile-tag-chip-wrap > button.shopping-list-filter {
  color: var(--green);
  background: var(--green-soft);
  border-color: #b9cec1;
}

.tag-chip-wrap > button.active, .mobile-tag-chip-wrap > button.active, .recipe-filter-tag.active {
  color: #fff;
  border-color: var(--green);
  background: var(--green);
}

.tag-chip-wrap > button.active > b, .mobile-tag-chip-wrap > button.active > b, .recipe-filter-tag.active > b {
  color: var(--green);
  background: #fff;
}

.tag-chip-wrap > button.shopping-list-filter.excluded {
  color: #963f2d;
  background: #f9e6e0;
  border-color: #dfb6aa;
}

.tag-chip-wrap > button.shopping-list-filter.excluded > b {
  color: #963f2d;
  background: #fff;
}

.tag-chip-wrap > button.tag-panel-more {
  color: var(--green);
  background: none;
  border-style: dashed;
  padding-right: 12px;
}

.recipe-tag-pin-icon {
  flex: none;
}

.tag-pin-chip {
  border: 1px solid var(--line);
  border-radius: 999px;
  align-items: stretch;
  max-width: 100%;
  display: inline-flex;
}

.tag-pin-chip > .recipe-filter-tag {
  white-space: normal;
  text-align: left;
  border: 0;
  border-radius: 999px 0 0 999px;
  min-width: 0;
}

.tag-pin-toggle {
  border: 0;
  border-left: 1px solid var(--line);
  width: 36px;
  color: var(--muted);
  background: var(--paper);
  cursor: pointer;
  border-radius: 0 999px 999px 0;
  flex: 0 0 36px;
  place-items: center;
  padding: 0;
  display: grid;
}

.tag-pin-toggle.pinned {
  color: var(--green);
  background: var(--green-soft);
}

.tag-pin-toggle:disabled {
  opacity: .45;
  cursor: wait;
}

.tag-panel-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  display: flex;
}

.tag-panel-actions > button {
  color: var(--green);
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0;
  font-size: 10px;
  font-weight: 800;
}

.tag-panel-actions > .tag-pin-edit-button, .tag-pin-edit-button {
  border: 1px solid var(--line);
  min-height: 32px;
  color: var(--green);
  background: var(--paper);
  cursor: pointer;
  white-space: nowrap;
  border-radius: 8px;
  justify-content: center;
  align-items: center;
  gap: 6px;
  padding: 6px 9px;
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
}

.tag-pin-edit-button[aria-pressed="true"] {
  color: #fff;
  border-color: var(--green);
  background: var(--green);
}

.tag-pin-edit-button:disabled {
  opacity: .5;
  cursor: default;
}

.tag-pin-edit-toolbar {
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
  display: flex;
}

.tag-pin-edit-toolbar small {
  color: var(--muted);
  margin-right: auto;
  font-size: 11px;
}

@media (pointer: coarse) {
  .tag-pin-toggle {
    flex-basis: 44px;
    width: 44px;
    min-height: 44px;
  }

  .tag-pin-edit-button, .tag-panel-actions > .tag-pin-edit-button {
    min-height: 44px;
  }
}

.recipe-attribute-filters {
  border-top: 1px solid var(--line);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 13px;
  padding-top: 12px;
  display: grid;
}

.recipe-filter-group, .mobile-filter-group {
  min-width: 0;
}

.recipe-filter-group > strong, .mobile-filter-group > strong {
  color: var(--ink);
  letter-spacing: .06em;
  text-transform: uppercase;
  margin-bottom: 8px;
  font-size: 10px;
  display: block;
}

.recipe-filter-options {
  flex-wrap: wrap;
  gap: 7px;
  display: flex;
}

.recipe-filter-options > button {
  border: 1px solid var(--line);
  min-height: 32px;
  color: var(--muted);
  background: var(--paper);
  cursor: pointer;
  white-space: nowrap;
  border-radius: 999px;
  align-items: center;
  gap: 7px;
  padding: 6px 8px 6px 11px;
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
}

.recipe-filter-options > button > b {
  color: #65756d;
  background: #eeeee8;
  border-radius: 999px;
  place-items: center;
  min-width: 19px;
  height: 19px;
  padding: 0 5px;
  font-size: 8px;
  display: inline-grid;
}

.recipe-filter-options > button.active {
  color: #fff;
  border-color: var(--green);
  background: var(--green);
}

.recipe-filter-options > button.active > b {
  color: var(--green);
  background: #fff;
}

.mobile-tag-filter-backdrop {
  display: none;
}

.recipe-layout-switch {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 10px;
  flex: none;
  padding: 3px;
  display: flex;
}

.recipe-layout-switch button {
  min-height: 32px;
  color: var(--muted);
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 7px;
  align-items: center;
  gap: 5px;
  padding: 0 9px;
  font-size: 10px;
  font-weight: 800;
  display: flex;
}

.recipe-layout-switch button.active {
  color: #fff;
  background: var(--green);
}

.recipe-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: 22px;
  display: grid;
}

.recipe-card {
  background: var(--paper);
  border: 1px solid #dedbd0;
  border-radius: 19px;
  transition: transform .22s, box-shadow .22s;
  position: relative;
  overflow: hidden;
  box-shadow: 0 5px 16px #26372f0a;
}

.recipe-card:hover {
  box-shadow: var(--shadow);
  transform: translateY(-3px);
}

.recipe-card.selected {
  border-color: var(--green);
  box-shadow: 0 0 0 2px var(--green), var(--shadow);
}

.recipe-plan-control {
  z-index: 4;
  min-height: 34px;
  color: var(--green);
  background: #fffffff2;
  border: 2px solid #fff;
  border-radius: 9px;
  align-items: center;
  display: flex;
  position: absolute;
  top: 13px;
  right: 13px;
  overflow: hidden;
  box-shadow: 0 3px 10px #00000024;
}

.recipe-plan-control button {
  min-width: 32px;
  height: 30px;
  color: inherit;
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0 9px;
  font-size: 11px;
  font-weight: 900;
}

.recipe-plan-control span {
  text-align: center;
  min-width: 32px;
  font-size: 10px;
  font-weight: 900;
}

.recipe-card.selected .recipe-plan-control {
  color: #fff;
  background: var(--green);
}

.recipe-plan-control button:disabled {
  opacity: .4;
  cursor: not-allowed;
}

.card-image {
  cursor: pointer;
  background: #d9ddd6;
  border: 0;
  width: 100%;
  height: 230px;
  padding: 0;
  display: block;
  position: relative;
  overflow: hidden;
}

.card-image img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .4s;
}

.recipe-card:hover .card-image img {
  transform: scale(1.025);
}

.no-image {
  text-align: left;
  color: #4c3b17;
  cursor: pointer;
  background: #edcc78;
  border: 0;
  width: 100%;
  height: 125px;
  padding: 23px;
  position: relative;
}

.no-image:after {
  content: "";
  border: 18px solid #ffffff2b;
  border-radius: 50%;
  width: 120px;
  height: 120px;
  position: absolute;
  top: -40px;
  right: -30px;
}

.no-image span {
  text-transform: uppercase;
  letter-spacing: .1em;
  margin-bottom: 8px;
  font-size: 11px;
  font-weight: 800;
  display: block;
}

.no-image b {
  font-family: Fraunces, Georgia, serif;
  font-size: 35px;
}

.no-image small {
  margin-left: 7px;
}

.card-content {
  padding: 22px 22px 18px;
}

.tag-row {
  flex-wrap: wrap;
  gap: 6px;
  display: flex;
}

.tag-row span {
  color: #596e63;
  background: var(--green-soft);
  text-transform: uppercase;
  letter-spacing: .055em;
  border-radius: 999px;
  padding: 5px 8px;
  font-size: 10px;
  font-weight: 800;
}

.card-title {
  text-align: left;
  cursor: pointer;
  background: none;
  border: 0;
  width: 100%;
  padding: 0;
  display: block;
}

.card-title h2 {
  letter-spacing: -.025em;
  margin: 13px 0 10px;
  font-size: 27px;
  line-height: 1.08;
}

.card-rating {
  color: var(--green);
  gap: 2px;
  margin: -3px 0 10px;
  font-size: 18px;
  line-height: 1;
  display: flex;
}

.card-rating span {
  opacity: .3;
}

.card-rating .rated {
  opacity: 1;
}

.recipe-copy {
  color: #586861;
  font-size: 13px;
  line-height: 1.6;
}

.grid-view .recipe-card .recipe-copy {
  display: none;
}

.recipe-copy p {
  white-space: pre-line;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  margin: 0 0 13px;
  display: -webkit-box;
  overflow: hidden;
}

.ingredient-note {
  background: #f1eee4;
  border: 1px dashed #c9c5b7;
  border-radius: 10px;
  margin: 15px 0;
  padding: 13px 14px 10px;
}

.ingredient-note.compact {
  margin-top: 13px;
}

.note-title {
  color: var(--ink);
  text-transform: uppercase;
  letter-spacing: .08em;
  justify-content: space-between;
  margin-bottom: 8px;
  font-size: 10px;
  font-weight: 800;
  display: flex;
}

.note-title span:last-child {
  color: var(--muted);
  letter-spacing: 0;
  text-transform: none;
  font-weight: 600;
}

.note-line {
  border-top: 1px solid #7878691f;
  grid-template-columns: minmax(68px, max-content) minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  padding: 3px 0;
  display: grid;
}

.ingredient-line-copy {
  min-width: 0;
  display: grid;
}

.ingredient-line-copy small {
  color: var(--muted);
  font-size: 10px;
  font-style: italic;
  line-height: 1.35;
}

.note-line strong {
  color: var(--ink);
  text-align: left;
  white-space: nowrap;
  font-weight: 600;
}

.card-footer {
  color: var(--muted);
  border-top: 1px solid #e8e4da;
  align-items: center;
  gap: 13px;
  margin-top: 16px;
  padding-top: 13px;
  font-size: 10px;
  display: flex;
}

.card-footer b {
  color: var(--ink);
}

.card-prep-time {
  white-space: nowrap;
}

.card-prep-time > span {
  color: var(--green);
  font-size: 13px;
}

.card-footer button {
  color: var(--green);
  cursor: pointer;
  background: none;
  border: 0;
  margin-left: auto;
  font-weight: 800;
}

.recipe-grid.list-view {
  grid-template-columns: 1fr;
  gap: 11px;
}

.list-view .recipe-card {
  grid-template-columns: 180px minmax(0, 1fr);
  min-height: 158px;
  display: grid;
}

.list-view .card-image, .list-view .no-image {
  grid-area: 1 / 1;
  width: 180px;
  height: 100%;
  min-height: 158px;
}

.list-view .card-content {
  grid-area: 1 / 2;
  min-width: 0;
  padding: 18px 145px 14px 20px;
}

.list-view .card-title h2 {
  margin: 9px 0 8px;
  font-size: 23px;
}

.list-view .recipe-copy {
  display: none;
}

.list-view .card-footer {
  margin-top: 10px;
  padding-top: 9px;
}

.empty-state, .empty-list {
  text-align: center;
  background: #ffffff61;
  border: 1px dashed #c8c7bd;
  border-radius: 20px;
  padding: 70px 25px;
}

.empty-state span, .empty-list > span {
  color: var(--tomato);
  font-size: 36px;
  display: block;
}

.empty-state h2, .empty-list h2 {
  margin: 12px 0 6px;
  font-size: 27px;
}

.empty-state p, .empty-list p {
  color: var(--muted);
}

.notes-page {
  width: min(1220px, 92vw);
  margin: 0 auto;
  padding: 52px 0 80px;
}

.notes-heading {
  justify-content: space-between;
  align-items: end;
  gap: 28px;
  margin-bottom: 34px;
  display: flex;
}

.notes-heading h1 {
  letter-spacing: -.045em;
  margin: 0;
  font-size: clamp(42px, 5vw, 68px);
  line-height: .98;
}

.notes-heading .lede {
  max-width: 680px;
}

.notes-add-button {
  flex: none;
}

.notes-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: 22px;
  display: grid;
}

.note-card {
  background: var(--paper);
  border: 1px solid #dedbd0;
  border-radius: 19px;
  transition: transform .22s, box-shadow .22s;
  overflow: hidden;
  box-shadow: 0 5px 16px #26372f0a;
}

.note-card:hover {
  box-shadow: var(--shadow);
  transform: translateY(-3px);
}

.note-card-image {
  cursor: pointer;
  background: #d9ddd6;
  border: 0;
  width: 100%;
  height: 190px;
  padding: 0;
  display: block;
  position: relative;
  overflow: hidden;
}

.note-card-image img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .4s;
}

.note-card:hover .note-card-image img {
  transform: scale(1.025);
}

.note-card-image span {
  color: #fff;
  -webkit-backdrop-filter: blur(7px);
  backdrop-filter: blur(7px);
  background: #18392fd1;
  border-radius: 999px;
  padding: 6px 9px;
  font-size: 10px;
  font-weight: 800;
  position: absolute;
  bottom: 12px;
  right: 12px;
}

.note-card-paper-mark {
  color: #5b4514;
  background: #edcc78;
  height: 82px;
  padding: 18px 20px;
  font-size: 27px;
}

.note-card-1 .note-card-paper-mark {
  color: #1d5542;
  background: #cddfd2;
}

.note-card-2 .note-card-paper-mark {
  color: #813a29;
  background: #edc1b3;
}

.note-card-content {
  padding: 20px 21px 17px;
}

.note-card-meta {
  color: var(--tomato);
  letter-spacing: .12em;
  text-transform: uppercase;
  margin: 0;
  font-size: 9px;
  font-weight: 800;
}

.note-card-title {
  cursor: pointer;
  text-align: left;
  background: none;
  border: 0;
  width: 100%;
  padding: 0;
}

.note-card-title h2 {
  letter-spacing: -.025em;
  margin: 9px 0 10px;
  font-size: 27px;
  line-height: 1.08;
}

.note-card-preview {
  -webkit-line-clamp: 3;
  color: #586861;
  white-space: pre-line;
  -webkit-box-orient: vertical;
  min-height: 62px;
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  display: -webkit-box;
  overflow: hidden;
}

.note-card-footer {
  color: var(--muted);
  border-top: 1px solid #e8e4da;
  align-items: center;
  gap: 12px;
  margin-top: 16px;
  padding-top: 12px;
  font-size: 9px;
  display: flex;
}

.note-card-footer span {
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
  overflow: hidden;
}

.note-card-footer button {
  color: var(--green);
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0;
  font-size: 10px;
  font-weight: 800;
}

.notes-empty-state .primary-button {
  margin-top: 12px;
}

.meal-plan-page {
  width: min(1040px, 92vw);
  margin: 0 auto;
  padding: 46px 0 118px;
}

.meal-plan-heading {
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  margin-bottom: 25px;
  display: flex;
}

.meal-plan-heading h1 {
  letter-spacing: -.045em;
  margin: 0;
  font-size: clamp(42px, 6vw, 68px);
  line-height: .98;
}

.meal-plan-heading .lede {
  max-width: 680px;
}

.meal-plan-toolbar {
  background: #fffefabf;
  border: 1px solid #d7d8cf;
  border-radius: 14px;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  min-height: 66px;
  margin-bottom: 13px;
  padding: 10px 12px 10px 17px;
  display: flex;
}

.meal-plan-toolbar strong, .meal-plan-toolbar small {
  display: block;
}

.meal-plan-toolbar strong {
  font-size: 12px;
}

.meal-plan-toolbar small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 10px;
}

.quantity-mode-switch {
  background: #e7ebe4;
  border-radius: 10px;
  padding: 3px;
  display: flex;
}

.quantity-mode-switch button {
  min-height: 34px;
  color: var(--muted);
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 8px;
  padding: 0 12px;
  font-size: 10px;
  font-weight: 800;
}

.quantity-mode-switch button.active {
  color: #fff;
  background: var(--green);
  box-shadow: 0 2px 7px #2754402e;
}

.meal-calendar {
  background: #fffefad1;
  border: 1px solid #d7d8cf;
  border-radius: 15px;
  margin: 0 0 13px;
  overflow: hidden;
}

.meal-calendar > summary {
  cursor: pointer;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  min-height: 56px;
  padding: 0 16px;
  list-style: none;
  display: flex;
}

.meal-calendar > summary::-webkit-details-marker {
  display: none;
}

.meal-calendar > summary strong, .meal-calendar > summary small {
  display: block;
}

.meal-calendar > summary strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 17px;
}

.meal-calendar > summary small {
  color: var(--muted);
  margin-top: 2px;
  font-size: 9px;
}

.meal-calendar[open] > summary {
  border-bottom: 1px solid #d7d8cf;
}

.meal-calendar[open] .summary-chevron {
  transform: rotate(180deg);
}

.meal-calendar-body {
  max-height: 500vh;
  padding: 13px;
}

.meal-calendar-toolbar {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
  display: flex;
}

.meal-calendar-toolbar > div:first-child {
  align-items: center;
  gap: 10px;
  display: flex;
}

.meal-calendar-toolbar > div:first-child button {
  width: 31px;
  height: 31px;
  color: var(--green);
  cursor: pointer;
  background: #fff;
  border: 1px solid #c8cec6;
  border-radius: 8px;
  font-size: 20px;
}

.meal-calendar-toolbar strong {
  text-align: center;
  min-width: 160px;
  font-family: Fraunces, Georgia, serif;
  font-size: 17px;
}

.calendar-view-switch {
  background: #e7ebe4;
  border-radius: 9px;
  padding: 3px;
  display: flex;
}

.calendar-view-switch button {
  min-height: 29px;
  color: var(--muted);
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 7px;
  padding: 0 10px;
  font-size: 9px;
  font-weight: 800;
}

.calendar-view-switch button.active {
  color: #fff;
  background: var(--green);
}

.meal-calendar-weekdays {
  grid-template-columns: repeat(7, minmax(0, 1fr));
  display: grid;
}

.meal-calendar-weekdays span {
  color: var(--muted);
  text-align: center;
  text-transform: uppercase;
  padding: 5px;
  font-size: 8px;
  font-weight: 800;
}

.meal-calendar-grid {
  border-top: 1px solid #dfddd5;
}

.calendar-week-row {
  border-left: 1px solid #dfddd5;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  display: grid;
}

.calendar-week-row > button {
  min-width: 0;
  min-height: 63px;
  color: inherit;
  cursor: pointer;
  text-align: left;
  background: #fff;
  border: 1px solid #dfddd5;
  border-top: 0;
  border-left: 0;
  padding: 5px;
  overflow: hidden;
}

.calendar-week-row > button:hover {
  background: #f4f8f3;
}

.calendar-week-row > button.selected {
  outline: 2px solid var(--green);
  outline-offset: -2px;
  background: #edf4ec;
}

.calendar-week-row > button.outside {
  color: #a8ada8;
  background: #f7f6f1;
}

.meal-calendar-grid time {
  margin-bottom: 4px;
  font-size: 10px;
  font-weight: 800;
  display: block;
}

.calendar-cell-meals {
  gap: 2px;
  display: grid;
}

.calendar-cell-meals small {
  color: #355744;
  text-overflow: ellipsis;
  white-space: nowrap;
  background: #deebdf;
  border-radius: 4px;
  padding: 2px 3px;
  font-size: 7px;
  overflow: hidden;
}

.meal-calendar-grid.week {
  border-top: 0;
  gap: 7px;
  display: grid;
}

.meal-calendar-grid.week .calendar-week-row {
  border-left: 0;
  grid-template-columns: minmax(0, 1fr);
}

.meal-calendar-grid.week .calendar-week-row > button {
  border: 1px solid #d9ddd5;
  border-radius: 10px;
  grid-template-columns: 120px minmax(0, 1fr) 18px;
  align-items: center;
  gap: 12px;
  min-height: 66px;
  padding: 8px 11px;
  display: grid;
}

.meal-calendar-grid.week .calendar-row-block.expanded .calendar-week-row > button {
  border-radius: 10px 10px 0 0;
}

.meal-calendar-grid.week .calendar-day-editor {
  border-top: 0;
  border-radius: 0 0 10px 10px;
}

.calendar-week-date {
  min-width: 0;
}

.calendar-week-date strong, .calendar-week-date time {
  display: block;
}

.calendar-week-date strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 14px;
}

.meal-calendar-grid .calendar-week-date time {
  color: var(--muted);
  margin: 3px 0 0;
  font-size: 9px;
}

.meal-calendar-grid time.calendar-today {
  color: #fff;
  background: var(--green);
  text-align: center;
  border-radius: 6px;
  width: fit-content;
  min-width: 22px;
  padding: 3px 6px;
}

.calendar-week-meals {
  gap: 4px;
  min-width: 0;
  display: grid;
}

.calendar-week-meal {
  color: #355744;
  background: #e5efe4;
  border-radius: 7px;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding: 5px 7px;
  display: flex;
}

.calendar-week-meal > span {
  align-items: baseline;
  gap: 6px;
  min-width: 0;
  display: flex;
}

.calendar-week-meal strong {
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10px;
  overflow: hidden;
}

.calendar-week-meal small {
  color: var(--muted);
  flex: none;
  font-size: 8px;
}

.calendar-week-meal b {
  color: var(--tomato);
  text-transform: uppercase;
  flex: none;
  font-size: 8px;
}

.calendar-week-empty {
  color: var(--muted);
  font-size: 9px;
}

.calendar-week-row-chevron {
  color: var(--green);
  text-align: center;
  font-size: 20px;
  transition: transform .18s;
}

.calendar-row-block.expanded .calendar-week-row-chevron {
  transform: rotate(90deg);
}

.calendar-day-editor {
  background: #f3f3eb;
  border-bottom: 1px solid #dfddd5;
  border-left: 1px solid #dfddd5;
  border-right: 1px solid #dfddd5;
  padding: 13px;
  box-shadow: inset 0 5px 12px #2c43350a;
}

.calendar-day-heading strong, .calendar-day-heading small {
  display: block;
}

.calendar-day-heading strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 16px;
}

.calendar-day-heading small {
  color: var(--muted);
  margin-top: 2px;
  font-size: 9px;
}

.calendar-day-meals {
  gap: 5px;
  margin-top: 8px;
  display: grid;
}

.calendar-scheduled-meal {
  background: #fff;
  border: 1px solid #d7d9d0;
  border-radius: 9px;
  justify-content: space-between;
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 5px 7px;
  display: flex;
}

.calendar-scheduled-recipe {
  align-items: center;
  gap: 8px;
  min-width: 0;
  display: flex;
}

.calendar-scheduled-recipe > span:last-child {
  min-width: 0;
}

.calendar-scheduled-recipe strong, .calendar-scheduled-recipe small {
  text-overflow: ellipsis;
  white-space: nowrap;
  display: block;
  overflow: hidden;
}

.calendar-scheduled-recipe strong {
  font-size: 11px;
}

.calendar-scheduled-recipe small {
  color: var(--muted);
  margin-top: 2px;
  font-size: 8px;
}

.calendar-scheduled-image, .calendar-gallery-image {
  background: var(--mustard);
  flex: none;
  place-items: center;
  font-family: Fraunces, Georgia, serif;
  display: grid;
  overflow: hidden;
}

.calendar-scheduled-image {
  border-radius: 7px;
  width: 34px;
  height: 34px;
  font-size: 13px;
}

.calendar-scheduled-image img, .calendar-gallery-image img {
  object-fit: cover;
  width: 100%;
  height: 100%;
}

.calendar-scheduled-controls {
  align-items: center;
  gap: 5px;
  display: flex;
}

.calendar-scheduled-controls select {
  height: 31px;
  color: var(--ink);
  background: #fff;
  border: 1px solid #cbd0c8;
  border-radius: 7px;
  width: 92px;
  padding: 0 7px;
  font-size: 9px;
}

.calendar-serving-quantity {
  flex: none;
}

.calendar-servings-value {
  white-space: nowrap;
  justify-content: center;
  align-items: baseline;
  gap: 4px;
  min-width: 58px;
  display: flex;
}

.calendar-serving-quantity .calendar-servings-value small {
  color: var(--muted);
  grid-column: auto;
  font-size: 8px;
  font-weight: 800;
}

.calendar-serving-quantity .calendar-servings-value strong {
  min-width: 14px;
  color: var(--ink);
  font-size: 11px;
}

.calendar-scheduled-controls .calendar-remove-meal {
  width: 27px;
  height: 27px;
  color: var(--tomato);
  cursor: pointer;
  background: none;
  border: 0;
  flex: none;
  font-size: 18px;
}

.calendar-scheduled-controls button:disabled {
  opacity: .45;
  cursor: wait;
}

.calendar-static-meal-type {
  color: var(--tomato);
  text-transform: uppercase;
  margin-left: auto;
  font-size: 8px;
}

.calendar-gallery-heading {
  color: var(--muted);
  text-transform: uppercase;
  margin: 12px 0 6px;
  font-size: 8px;
  font-weight: 800;
}

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

.calendar-recipe-gallery > button {
  min-width: 0;
  min-height: 68px;
  color: inherit;
  cursor: pointer;
  text-align: left;
  background: #fff;
  border: 1px solid #ced4cb;
  border-radius: 10px;
  align-items: center;
  gap: 8px;
  padding: 6px;
  display: flex;
}

.calendar-recipe-gallery > button:hover:not(:disabled) {
  border-color: var(--green);
  background: #eef5ed;
}

.calendar-recipe-gallery > button.will-expand-plan {
  background: #fff9e9;
  border-color: #d9bd79;
}

.calendar-recipe-gallery > button.will-expand-plan:hover:not(:disabled) {
  background: #fff3d4;
  border-color: #b88926;
}

.calendar-recipe-gallery > button.scheduled {
  background: #e7f1e5;
  border-color: #b8cbb8;
}

.calendar-recipe-gallery > button.scheduled:hover:not(:disabled) {
  background: #f8e9e5;
  border-color: #d8a69c;
}

.calendar-recipe-gallery > button.scheduled:hover:not(:disabled) b {
  background: var(--tomato);
}

.calendar-recipe-gallery > button:disabled {
  color: inherit;
  cursor: default;
  opacity: 1;
}

.calendar-recipe-gallery > button > span:nth-child(2) {
  flex: 1;
  min-width: 0;
}

.calendar-recipe-gallery strong, .calendar-recipe-gallery small {
  text-overflow: ellipsis;
  white-space: nowrap;
  display: block;
  overflow: hidden;
}

.calendar-recipe-gallery strong {
  white-space: normal;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  font-family: Fraunces, Georgia, serif;
  font-size: 12px;
  line-height: 1.18;
  display: -webkit-box;
  overflow: hidden;
}

.calendar-recipe-gallery small {
  color: var(--muted);
  margin-top: 2px;
  font-size: 8px;
}

.calendar-recipe-status {
  text-overflow: ellipsis;
  white-space: normal;
  border-radius: 999px;
  align-items: center;
  gap: 3px;
  width: max-content;
  max-width: 100%;
  margin-top: 3px;
  padding: 2px 5px;
  font-size: 8px;
  font-weight: 900;
  line-height: 1;
  display: inline-flex;
  overflow: clip;
}

.calendar-recipe-status > span {
  flex: none;
  font-size: 8px;
}

.calendar-recipe-status.bought {
  color: #fff;
  background: var(--green);
}

.calendar-recipe-status.in-list {
  color: #315c48;
  background: #dfece2;
}

.calendar-recipe-status.not-created {
  color: #825b17;
  background: #f6e6b9;
}

.calendar-recipe-gallery .calendar-gallery-total {
  color: var(--green);
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-top: 3px;
  font-size: 7px;
  font-weight: 800;
  display: block;
  overflow: hidden;
}

.calendar-recipe-gallery em {
  color: #8a651a;
  margin-top: 3px;
  font-size: 7px;
  font-style: normal;
  font-weight: 800;
  display: block;
}

.calendar-recipe-gallery b {
  color: #fff;
  background: var(--green);
  border-radius: 50%;
  flex: none;
  place-items: center;
  width: 18px;
  height: 18px;
  font-size: 9px;
  display: grid;
}

.calendar-gallery-image {
  border-radius: 8px;
  width: 41px;
  height: 41px;
  font-size: 15px;
}

.meal-plan-list {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 17px;
  overflow: hidden;
  box-shadow: 0 12px 35px #26372f12;
}

.meal-plan-card {
  grid-template-columns: minmax(0, 1fr) minmax(190px, auto) 84px;
  align-items: center;
  gap: 18px;
  min-height: 86px;
  padding: 10px 15px;
  display: grid;
}

.meal-plan-card + .meal-plan-card {
  border-top: 1px solid #e4e0d6;
}

.meal-plan-card.locked {
  background: #f6f7f2;
}

.meal-plan-card.complete {
  background: #eef6ee;
}

.meal-plan-recipe-copy {
  min-width: 0;
  color: inherit;
  cursor: pointer;
  text-align: left;
  background: none;
  border: 0;
  align-items: center;
  gap: 13px;
  padding: 0;
  display: flex;
}

.meal-plan-recipe-copy > span:last-child {
  min-width: 0;
}

.meal-plan-recipe-copy strong, .meal-plan-recipe-copy small {
  display: block;
}

.meal-plan-recipe-copy strong {
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: Fraunces, Georgia, serif;
  font-size: 19px;
  overflow: hidden;
}

.meal-plan-recipe-copy small {
  color: var(--muted);
  margin-top: 4px;
  font-size: 10px;
}

.meal-plan-image {
  background: var(--mustard);
  border-radius: 12px;
  flex: none;
  place-items: center;
  width: 56px;
  height: 56px;
  font-family: Fraunces, Georgia, serif;
  font-size: 22px;
  display: grid;
  overflow: hidden;
}

.meal-plan-image img {
  object-fit: cover;
  width: 100%;
  height: 100%;
}

.meal-plan-quantity {
  text-align: center;
  grid-template-columns: 31px minmax(52px, auto) 31px;
  justify-content: center;
  align-items: center;
  gap: 7px;
  display: grid;
}

.meal-plan-quantity button {
  width: 31px;
  height: 31px;
  color: var(--green);
  cursor: pointer;
  background: #fff;
  border: 1px solid #bac7bd;
  border-radius: 9px;
  font-size: 15px;
}

.meal-plan-quantity button:disabled {
  opacity: .4;
  cursor: not-allowed;
}

.meal-plan-quantity strong {
  min-width: 52px;
  font-size: 13px;
}

.meal-plan-quantity input {
  text-align: center;
  border: 1px solid #bac7bd;
  border-radius: 8px;
  width: 68px;
  height: 31px;
  font-weight: 800;
}

.meal-plan-quantity small {
  color: var(--muted);
  grid-column: 1 / -1;
  font-size: 9px;
}

.locked-quantity {
  color: var(--green);
  background: #e5ece4;
  border-radius: 8px;
  grid-column: 1 / -1;
  padding: 7px 10px;
  font-size: 11px;
  font-weight: 800;
}

.meal-plan-status {
  justify-content: flex-end;
  align-items: center;
  gap: 9px;
  display: flex;
}

.draft-badge {
  color: #895d14;
  text-transform: uppercase;
  letter-spacing: .05em;
  background: #f5e5b8;
  border-radius: 999px;
  padding: 5px 8px;
  font-size: 9px;
  font-weight: 900;
}

.cart-status {
  color: #52635a;
  background: #e3e7e2;
  border-radius: 11px;
  place-items: center;
  width: 38px;
  height: 38px;
  display: grid;
  position: relative;
}

.cart-status b {
  filter: grayscale();
  font-size: 17px;
}

.cart-status > span {
  display: none;
}

.cart-status.bought {
  color: #fff;
  background: var(--green);
}

.cart-status.bought b {
  filter: none;
}

.cart-status.bought:after {
  content: "✓";
  border: 2px solid var(--paper);
  color: #fff;
  background: #3e965c;
  border-radius: 50%;
  place-items: center;
  width: 16px;
  height: 16px;
  font-size: 9px;
  font-weight: 900;
  display: grid;
  position: absolute;
  bottom: -3px;
  right: -3px;
}

.meal-plan-remove {
  color: #8a6d65;
  cursor: pointer;
  background: none;
  border: 0;
  width: 28px;
  height: 32px;
  font-size: 21px;
}

.meal-plan-empty {
  text-align: center;
  padding: 65px 20px;
}

.meal-plan-empty > span {
  color: var(--tomato);
  font-size: 36px;
}

.meal-plan-empty h2 {
  margin: 9px 0 6px;
}

.meal-plan-empty p {
  color: var(--muted);
  margin: 0 0 15px;
}

.meal-plan-checkout {
  z-index: 8;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  background: #fffefaf2;
  border: 1px solid #bfcbbf;
  border-radius: 15px;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  margin: 16px auto 0;
  padding: 12px 13px 12px 17px;
  display: flex;
  position: sticky;
  bottom: 14px;
  box-shadow: 0 16px 38px #1b30262e;
}

.meal-plan-checkout strong, .meal-plan-checkout small {
  display: block;
}

.meal-plan-checkout strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 17px;
}

.meal-plan-checkout small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 9px;
}

.shopping-plan-link {
  width: 100%;
  min-height: 55px;
  color: inherit;
  cursor: pointer;
  text-align: left;
  background: #e8eee4;
  border: 1px solid #cdd7ca;
  border-radius: 13px;
  justify-content: space-between;
  align-items: center;
  gap: 15px;
  margin-bottom: 13px;
  padding: 8px 13px;
  display: flex;
}

.shopping-plan-link b, .shopping-plan-link small {
  display: block;
}

.shopping-plan-link b {
  font-family: Fraunces, Georgia, serif;
  font-size: 16px;
}

.shopping-plan-link small {
  color: var(--muted);
  margin-top: 2px;
  font-size: 9px;
}

.shopping-plan-link > span:last-child {
  color: var(--green);
  font-size: 10px;
  font-weight: 800;
}

.shopping-smart-sort-row {
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
  display: flex;
}

.shopping-smart-sort-row small {
  color: var(--muted);
  flex: 1;
  min-width: 180px;
}

.shopping-smart-sort-row button {
  white-space: nowrap;
}

.shopping-sort-row {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin: 0 0 10px;
  display: flex;
}

.shopping-sort-row > strong {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .06em;
  font-size: 10px;
}

.shopping-sort-switch {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 10px;
  padding: 3px;
  display: flex;
}

.shopping-sort-switch button {
  min-height: 30px;
  color: var(--muted);
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 7px;
  padding: 0 9px;
  font-size: 10px;
  font-weight: 800;
}

.shopping-sort-switch button.active {
  color: #fff;
  background: var(--green);
}

.shopping-page {
  width: min(860px, 98vw);
  margin: 0 auto;
  padding: 34px 0 68px;
}

.shopping-meta-row {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin: 7px 0 18px;
  display: flex;
}

.shopping-meta-row .lede {
  margin: 0;
  font-size: 13px;
}

.clear-checked-button {
  color: #a93e2a;
  cursor: pointer;
  background: #fff8f5;
  border: 1px solid #e0b4aa;
  border-radius: 9px;
  flex: none;
  min-height: 34px;
  padding: 0 10px;
  font-size: 11px;
  font-weight: 800;
}

.clear-checked-button:disabled {
  opacity: .38;
  cursor: not-allowed;
}

.shopping-title-row {
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  display: flex;
}

.shopping-title-row h1 {
  letter-spacing: -.045em;
  margin: 0;
  font-size: clamp(38px, 6vw, 56px);
  line-height: .98;
}

.hero-row .page-title-row h1, .meal-plan-heading .page-title-row h1, .shopping-title-row .page-title-row h1, .notes-heading .page-title-row h1 {
  letter-spacing: -.03em;
  font-size: clamp(26px, 3vw, 32px);
  line-height: 1.15;
}

.meal-plan-title {
  width: 50%;
}

.shopping-title-actions {
  justify-content: flex-end;
  align-items: center;
  gap: 7px;
  display: flex;
}

.shopping-add-button {
  border: 1px solid var(--green);
  color: #fff;
  background: var(--green);
  cursor: pointer;
  white-space: nowrap;
  border-radius: 10px;
  justify-content: center;
  align-items: center;
  gap: 5px;
  min-height: 40px;
  padding: 0 13px;
  font-size: 11px;
  font-weight: 800;
  display: inline-flex;
}

.shopping-add-button:hover, .shopping-add-button:focus-visible {
  background: #244c37;
}

.shopping-actions {
  flex-wrap: nowrap;
  justify-content: flex-end;
  align-items: center;
  gap: 7px;
  display: flex;
}

.history-button {
  border: 1px solid var(--line);
  height: 40px;
  color: var(--green);
  background: var(--paper);
  cursor: pointer;
  border-radius: 10px;
  align-items: center;
  gap: 5px;
  padding: 0 11px;
  font-size: 13px;
  font-weight: 800;
  display: inline-flex;
}

.history-button:disabled {
  opacity: .35;
  cursor: not-allowed;
}

.mobile-shopping-footer {
  display: none;
}

.shopping-list {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 12px 35px #26372f12;
}

.shopping-list-empty {
  grid-template-columns: 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 92px;
  padding: 17px 18px;
  display: grid;
}

.shopping-list-empty > span {
  width: 32px;
  height: 32px;
  color: var(--green);
  background: var(--green-soft);
  border-radius: 10px;
  place-items: center;
  font-weight: 800;
  display: grid;
}

.shopping-list-empty strong, .shopping-list-empty small {
  display: block;
}

.shopping-list-empty strong {
  font-size: 13px;
}

.shopping-list-empty small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 10px;
  line-height: 1.4;
}

.shopping-list-empty button {
  min-height: 34px;
  color: var(--green);
  cursor: pointer;
  background: #f7faf6;
  border: 1px solid #bfd0c3;
  border-radius: 9px;
  padding: 0 10px;
  font-size: 10px;
  font-weight: 800;
}

.aisle-section {
  transition: background .15s;
  position: relative;
}

.aisle-section + .aisle-section {
  border-top: 1px solid #d9d7cc;
}

.aisle-section.drag-target {
  background: #f8fbf7;
}

.aisle-separator {
  width: 100%;
  min-height: 39px;
  color: var(--green);
  cursor: pointer;
  text-align: left;
  background: #f2f1e8;
  border: 0;
  align-items: center;
  gap: 9px;
  padding: 0 11px;
  display: flex;
}

.checked-section .aisle-separator {
  background: #e7efe7;
}

.checked-section .category-icon {
  color: #fff;
  background: var(--green);
}

.aisle-separator h2 {
  letter-spacing: -.01em;
  margin: 0;
  font-size: 14px;
}

.aisle-count {
  color: var(--muted);
  margin-left: auto;
  font-size: 10px;
  font-weight: 800;
}

.aisle-chevron {
  color: var(--green);
  font-size: 14px;
  transition: transform .18s;
}

.aisle-section.collapsed .aisle-chevron {
  transform: rotate(180deg);
}

.category-icon {
  background: var(--green-soft);
  width: 24px;
  height: 24px;
  color: var(--green);
  border-radius: 7px;
  place-items: center;
  font-size: 12px;
  font-weight: 800;
  display: grid;
}

.shopping-item {
  border-top: 1px solid #efebe2;
  grid-template-columns: 32px minmax(35px, max-content) minmax(0, 1fr) 30px;
  align-items: center;
  gap: 7px;
  min-height: 44px;
  padding: 0 9px 0 7px;
  transition: opacity .15s, background .15s, transform .15s;
  display: grid;
  position: relative;
}

.shopping-item.dragging {
  z-index: 1;
  opacity: .45;
  background: #e9f1e9;
  transform: scale(.985);
  box-shadow: 0 4px 12px #2754401f;
}

.shopping-item.drop-before:before {
  content: "";
  z-index: 2;
  background: var(--tomato);
  border-radius: 2px;
  height: 2px;
  position: absolute;
  top: -1px;
  left: 9px;
  right: 9px;
}

.check-control {
  cursor: pointer;
  background: none;
  border: 0;
  place-items: center;
  width: 24px;
  height: 30px;
  padding: 0;
  display: grid;
  position: relative;
}

.check-control:disabled {
  cursor: wait;
}

.custom-check {
  color: #0000;
  border: 1.5px solid #aebbb4;
  border-radius: 6px;
  place-items: center;
  width: 20px;
  height: 20px;
  font-size: 11px;
  display: grid;
}

.check-control[aria-pressed="true"] .custom-check {
  color: #fff;
  border-color: var(--green);
  background: var(--green);
}

.check-spinner {
  border: 1.5px solid #f7faf7;
  border-top-color: var(--tomato);
  background: var(--paper);
  border-radius: 50%;
  width: 9px;
  height: 9px;
  animation: .55s linear infinite checkSpin;
  position: absolute;
  bottom: 3px;
  right: -1px;
  box-shadow: 0 0 0 1px #27544029;
}

@keyframes checkSpin {
  to {
    transform: rotate(360deg);
  }
}

.shopping-item-text {
  font-size: 13px;
  font-weight: unset;
}

.item-copy {
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  display: flex;
}

.item-copy small {
  color: #728078;
  font-size: 9px;
  line-height: 1.4;
}

.item-edit-trigger {
  text-align: left;
  width: 100%;
  color: inherit;
  cursor: pointer;
  background: none;
  border: 0;
  padding: 5px 0;
}

.shopping-item.done .shopping-item-text, .shopping-item.done .item-amount {
  color: #99a29d;
  text-decoration: line-through;
}

.item-amount {
  min-width: 0;
  color: var(--ink);
  text-align: left;
  white-space: nowrap;
  font-size: 12px;
  font-weight: 600;
}

.drag-handle {
  color: #7b8981;
  cursor: grab;
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
  background: none;
  border: 0;
  width: 30px;
  height: 34px;
  padding: 0;
  font-size: 20px;
  line-height: 1;
}

.drag-handle:active {
  cursor: grabbing;
}

.drag-handle:disabled {
  opacity: .28;
  cursor: default;
}

.quick-add-row {
  color: #7b8981;
  border-top: 1px dashed #ddd9cd;
  grid-template-columns: 20px minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  min-height: 42px;
  padding: 0 10px 0 13px;
  display: grid;
  position: relative;
}

.quick-add-row.drop-at-end:before {
  content: "";
  background: var(--tomato);
  border-radius: 2px;
  height: 2px;
  position: absolute;
  top: -1px;
  left: 9px;
  right: 9px;
}

.quick-add-row input {
  width: 100%;
  min-width: 0;
  color: var(--ink);
  background: none;
  border: 0;
  outline: 0;
  padding: 8px 0;
  font-size: 12px;
}

.quick-add-row input::placeholder {
  color: #8e9791;
}

.quick-add-row button {
  color: var(--green);
  background: var(--green-soft);
  cursor: pointer;
  border: 0;
  border-radius: 7px;
  padding: 5px 7px;
  font-size: 10px;
  font-weight: 800;
}

.quick-add-row button:disabled {
  opacity: 0;
  pointer-events: none;
}

.empty-category-accordion {
  background: #fffefabf;
  border: 1px solid #d7d8cf;
  border-radius: 13px;
  margin-top: 12px;
  overflow: hidden;
}

.empty-category-accordion > summary {
  cursor: pointer;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  min-height: 46px;
  padding: 0 13px;
  list-style: none;
  display: flex;
}

.empty-category-accordion > summary::-webkit-details-marker {
  display: none;
}

.empty-category-accordion > summary > span:first-child {
  align-items: baseline;
  gap: 8px;
  display: flex;
}

.empty-category-accordion > summary strong {
  color: var(--green);
  font-size: 11px;
}

.empty-category-accordion > summary small {
  color: var(--muted);
  font-size: 9px;
}

.empty-category-accordion[open] > summary {
  border-bottom: 1px solid #d7d8cf;
}

.empty-category-accordion[open] .summary-chevron {
  transform: rotate(180deg);
}

.empty-category-list {
  background: var(--paper);
}

.empty-aisle-section + .empty-aisle-section {
  border-top: 1px solid #d9d7cc;
}

.empty-aisle-section .aisle-separator > button {
  color: var(--green);
  background: var(--green-soft);
  cursor: pointer;
  border: 0;
  border-radius: 7px;
  margin-left: auto;
  padding: 5px 8px;
  font-size: 9px;
  font-weight: 800;
}

.meal-plan-compact {
  background: #e8eee4;
  border: 1px solid #cdd7ca;
  border-radius: 13px;
  margin: 0 0 13px;
  overflow: hidden;
}

.meal-plan-compact summary {
  cursor: pointer;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 0 14px;
  list-style: none;
  display: flex;
}

.meal-plan-compact summary::-webkit-details-marker {
  display: none;
}

.meal-plan-compact summary > span:first-child {
  align-items: baseline;
  gap: 10px;
  min-width: 0;
  display: flex;
}

.meal-plan-compact summary b {
  font-family: Fraunces, Georgia, serif;
  font-size: 17px;
}

.meal-plan-compact summary small {
  color: var(--muted);
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10px;
  overflow: hidden;
}

.summary-chevron {
  color: var(--green);
  transition: transform .18s;
}

.meal-plan-compact[open] .summary-chevron {
  transform: rotate(180deg);
}

.plan-compact-body {
  border-top: 1px solid #cdd7ca;
  padding: 0 14px 13px;
}

.plan-recipe {
  border-bottom: 1px solid #c9d5c9;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  min-height: 52px;
  padding: 7px 20px 7px 0;
  display: grid;
  position: relative;
}

.plan-recipe-open {
  min-width: 0;
  min-height: 44px;
  color: inherit;
  cursor: pointer;
  text-align: left;
  background: none;
  border: 0;
  border-radius: 9px;
  grid-template-columns: 36px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  margin: -4px;
  padding: 4px;
  display: grid;
}

.plan-recipe-open:hover {
  background: #ffffff7a;
}

.plan-recipe-open:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 1px;
}

.plan-recipe-open:hover strong {
  color: var(--green);
}

.plan-thumb {
  background: var(--mustard);
  border-radius: 9px;
  place-items: center;
  width: 36px;
  height: 36px;
  font-family: Fraunces, Georgia, serif;
  font-size: 17px;
  display: grid;
  overflow: hidden;
}

.plan-thumb img {
  object-fit: cover;
  width: 100%;
  height: 100%;
}

.plan-recipe-copy {
  min-width: 0;
}

.plan-recipe strong {
  font-size: 13px;
  line-height: 1.2;
  display: block;
}

.plan-recipe-copy > span {
  color: var(--muted);
  margin-top: 3px;
  font-size: 10px;
  display: block;
}

.stepper {
  align-items: center;
  gap: 6px;
  display: flex;
}

.stepper button {
  cursor: pointer;
  background: #ffffff8c;
  border: 1px solid #b8c6bc;
  border-radius: 7px;
  width: 24px;
  height: 24px;
}

.stepper b {
  font-size: 12px;
}

.remove-plan {
  color: #77857e;
  cursor: pointer;
  background: none;
  border: 0;
  position: absolute;
  top: 5px;
  right: -4px;
}

.aside-empty {
  text-align: center;
  color: var(--muted);
  padding: 20px 0 10px;
}

.plan-add-recipe {
  background: #ffffff73;
  width: 100%;
  margin-top: 11px;
}

.readonly-plan-header {
  align-items: center;
  min-height: 48px;
  padding: 0 14px;
  display: flex;
}

.readonly-plan-header > span {
  align-items: baseline;
  gap: 10px;
  min-width: 0;
  display: flex;
}

.readonly-plan-header b {
  font-family: Fraunces, Georgia, serif;
  font-size: 17px;
}

.readonly-plan-header small {
  color: var(--muted);
  font-size: 10px;
}

.meal-plan-readonly .plan-recipe {
  padding-right: 24px;
}

.plan-quantity {
  min-width: 34px;
  color: var(--green);
  text-align: right;
  font-size: 12px;
}

.modal-backdrop {
  z-index: 50;
  -webkit-backdrop-filter: blur(7px);
  backdrop-filter: blur(7px);
  background: #12221c94;
  place-items: center;
  padding: 24px;
  animation: .18s fadeIn;
  display: grid;
  position: fixed;
  inset: 0;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
}

.editor-modal, .import-modal, .detail-modal, .note-editor-modal, .note-detail-modal {
  background: var(--paper);
  border-radius: 22px;
  width: min(1050px, 96vw);
  max-height: 92vh;
  overflow: auto;
  box-shadow: 0 30px 80px #0c1e184d;
}

.editor-modal {
  flex-direction: column;
  display: flex;
  overflow: hidden;
}

.editor-modal-body {
  overscroll-behavior: contain;
  min-height: 0;
  overflow: auto;
}

.editor-modal > .modal-header, .editor-modal > .modal-footer {
  z-index: 6;
  flex: none;
  position: relative;
}

.editor-modal > .modal-header {
  background: var(--paper);
  padding-right: 76px;
}

.editor-modal > .modal-header .close-button {
  position: absolute;
  top: 24px;
  right: 27px;
}

.editor-modal > .modal-footer {
  box-shadow: 0 -10px 24px #1e302814;
}

.note-editor-modal {
  width: min(800px, 96vw);
}

.note-editor-body {
  padding: 25px 28px 30px;
}

.note-title-field {
  color: var(--ink);
  margin-bottom: 28px;
  font-size: 12px;
  font-weight: 800;
  display: block;
}

.note-title-field input, .note-image-block input {
  width: 100%;
  color: var(--ink);
  background: #fffefa;
  border: 1px solid #cfcfc5;
  border-radius: 9px;
  margin-top: 7px;
  padding: 11px 12px;
}

.note-title-field input {
  font-family: Fraunces, Georgia, serif;
  font-size: 20px;
}

.note-editor-heading {
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  display: flex;
}

.note-editor-heading strong, .note-editor-heading small {
  display: block;
}

.note-editor-heading strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 20px;
}

.note-editor-heading small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 10px;
}

.note-editor-heading > span {
  color: var(--green);
  background: var(--green-soft);
  border-radius: 999px;
  padding: 5px 8px;
  font-size: 9px;
  font-weight: 800;
}

.note-block-list {
  margin-top: 8px;
}

.note-insert-row {
  grid-template-columns: 1fr auto auto 1fr;
  align-items: center;
  gap: 7px;
  min-height: 42px;
  display: grid;
}

.note-insert-row > span {
  background: #d5d7cd;
  height: 1px;
}

.note-insert-row button, .note-insert-row label {
  color: var(--green);
  cursor: pointer;
  background: #f7faf6;
  border: 1px dashed #a8bdb1;
  border-radius: 8px;
  margin: 0;
  padding: 6px 9px;
  font-size: 9px;
  font-weight: 800;
}

.note-insert-row label.disabled {
  opacity: .45;
  cursor: wait;
}

.note-insert-row input {
  opacity: 0;
  pointer-events: none;
  width: 1px;
  height: 1px;
  position: absolute;
  overflow: hidden;
}

.note-insert-last {
  margin-bottom: -6px;
}

.note-text-block, .note-image-block {
  background: #fffefa;
  border: 1px solid #d8d5ca;
  border-radius: 13px;
  padding: 14px;
  overflow: hidden;
}

.note-block-header {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
  display: flex;
}

.note-block-header > span {
  color: var(--green);
  letter-spacing: .09em;
  text-transform: uppercase;
  font-size: 9px;
  font-weight: 800;
}

.note-block-header > div {
  gap: 5px;
  display: flex;
}

.note-block-header button {
  min-width: 28px;
  min-height: 27px;
  color: var(--green);
  cursor: pointer;
  background: #fff;
  border: 1px solid #ccd2ca;
  border-radius: 7px;
  padding: 0 7px;
  font-size: 10px;
  font-weight: 800;
}

.note-block-header button:disabled {
  opacity: .3;
  cursor: not-allowed;
}

.note-block-header button.remove {
  color: var(--tomato);
  border-color: #e1c7c0;
}

.note-text-block textarea {
  resize: vertical;
  width: 100%;
  min-height: 125px;
  color: var(--ink);
  background: #f7f5ed;
  border: 0;
  border-radius: 9px;
  outline: none;
  padding: 12px;
  font-size: 14px;
  line-height: 1.65;
}

.note-text-block textarea:focus {
  background: #fff;
  box-shadow: inset 0 0 0 1px #a9c0b3;
}

.note-image-block img {
  object-fit: contain;
  background: #edf0eb;
  border-radius: 10px;
  width: 100%;
  max-height: 460px;
  display: block;
}

.note-image-block label {
  color: var(--ink);
  margin-top: 12px;
  font-size: 10px;
  font-weight: 800;
  display: block;
}

.note-image-block label small {
  float: right;
  color: var(--muted);
  font-weight: 500;
}

.note-upload-status {
  color: var(--green);
  margin: 10px 0 0;
  font-size: 11px;
  font-weight: 800;
}

.note-detail-modal {
  flex-direction: column;
  width: min(760px, 96vw);
  display: flex;
  position: relative;
  overflow: hidden;
}

.note-detail-close {
  z-index: 2;
  background: #fffdf8eb;
  position: absolute;
  top: 18px;
  right: 18px;
}

.note-detail-content {
  overscroll-behavior: contain;
  min-height: 0;
  padding: 44px 48px 34px;
  overflow-y: auto;
}

.note-detail-content h1 {
  letter-spacing: -.035em;
  max-width: calc(100% - 48px);
  margin: 0;
  font-size: clamp(36px, 6vw, 54px);
  line-height: 1.03;
}

.note-detail-meta {
  color: var(--muted);
  margin: 12px 0 28px;
  font-size: 10px;
  font-weight: 700;
}

.note-detail-footer {
  z-index: 3;
  flex: none;
  position: relative;
  box-shadow: 0 -10px 24px #1e302814;
}

.note-body {
  color: #344c43;
  font-size: 15px;
  line-height: 1.72;
}

.note-body p {
  white-space: pre-wrap;
  margin: 0 0 20px;
}

.note-body figure {
  margin: 24px 0;
}

.note-body img {
  object-fit: contain;
  background: #edf0eb;
  border-radius: 14px;
  width: 100%;
  max-height: 680px;
  display: block;
}

.note-body figcaption {
  color: var(--muted);
  text-align: center;
  margin-top: 8px;
  font-size: 10px;
}

.modal-header {
  border-bottom: 1px solid var(--line);
  justify-content: space-between;
  align-items: start;
  padding: 24px 27px 18px;
  display: flex;
}

.modal-header h2 {
  margin: 0;
  font-size: 28px;
}

.close-button {
  border: 1px solid var(--line);
  cursor: pointer;
  background: none;
  border-radius: 10px;
  width: 36px;
  height: 36px;
  font-size: 24px;
  line-height: 1;
}

.editor-import-panel {
  background: #f3f8f3;
  border: 1px solid #b9cec1;
  border-radius: 13px;
  align-items: center;
  gap: 12px;
  margin: 18px 27px 0;
  padding: 14px 15px;
  display: flex;
}

.editor-import-icon {
  color: #fff;
  background: var(--green);
  border-radius: 10px;
  flex: none;
  place-items: center;
  width: 34px;
  height: 34px;
  font-size: 18px;
  display: grid;
}

.editor-import-panel > div {
  flex: 1;
  min-width: 0;
}

.editor-import-panel strong, .editor-import-panel small {
  display: block;
}

.editor-import-panel strong {
  color: var(--green);
  font-size: 12px;
}

.editor-import-panel small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 10px;
  line-height: 1.4;
}

.editor-import-panel button {
  white-space: nowrap;
  flex: none;
}

.editor-grid {
  grid-template-columns: minmax(0, 1fr) 275px;
  display: grid;
}

.translation-shared-fields {
  border: 0;
  min-width: 0;
  margin: 0;
  padding: 0;
}

.editor-modal [inert], .editor-modal fieldset:disabled {
  opacity: .6;
}

.editor-main {
  border-right: 1px solid var(--line);
  padding: 25px 28px;
}

.editor-side {
  background: #f4f2e9;
  padding: 25px 23px;
}

.editor-modal label, .import-modal label {
  margin-bottom: 18px;
  font-size: 12px;
  font-weight: 800;
  display: block;
}

.editor-modal label small {
  float: right;
  color: var(--muted);
  font-weight: 500;
}

.editor-modal input, .editor-modal textarea, .editor-modal select, .import-modal input, .import-modal textarea {
  width: 100%;
  color: var(--ink);
  background: #fffefa;
  border: 1px solid #cfcfc5;
  border-radius: 9px;
  outline: none;
  margin-top: 7px;
  padding: 11px 12px;
}

.editor-modal textarea, .import-modal textarea {
  resize: vertical;
  line-height: 1.55;
}

@media (max-width: 780px), (any-pointer: coarse) {
  .editor-modal :is(input:not([type="range"]):not([type="checkbox"]):not([type="radio"]), textarea, select) {
    font-size: max(16px, 1em);
  }
}

.recipe-tag-suggestions {
  z-index: 85;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  border-radius: 12px;
  flex-direction: column;
  padding: 6px;
  display: flex;
  position: fixed;
  overflow: hidden;
  box-shadow: 0 10px 28px #18392f29;
}

.recipe-tag-suggestion-heading {
  color: var(--muted);
  letter-spacing: .04em;
  text-transform: uppercase;
  flex: none;
  padding: 8px 10px;
  font-size: 10px;
  font-weight: 700;
}

.recipe-tag-suggestion-options {
  overscroll-behavior: contain;
  min-height: 0;
  max-height: 280px;
  overflow-y: auto;
}

.recipe-tag-suggestion {
  width: 100%;
  min-height: 44px;
  color: var(--ink);
  background: var(--paper);
  text-align: left;
  cursor: pointer;
  border: 0;
  border-radius: 7px;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 10px;
  font-size: 13px;
  display: flex;
}

.recipe-tag-suggestion > span {
  overflow-wrap: anywhere;
  min-width: 0;
}

.recipe-tag-suggestion:hover, .recipe-tag-suggestion[aria-selected="true"] {
  color: var(--green);
  background: var(--green-soft);
}

.recipe-tag-suggestion mark {
  color: var(--green);
  background: none;
  font-weight: 800;
}

.recipe-tag-suggestion .recipe-tag-pin-icon {
  color: var(--muted);
}

.recipe-tag-create {
  border-top: 1px solid var(--line);
  color: var(--green);
  border-radius: 0 0 7px 7px;
  margin-top: 4px;
}

.recipe-tag-suggestion-empty {
  color: var(--muted);
  padding: 10px;
  font-size: 12px;
}

.recipe-tag-shortcuts {
  border-top: 1px solid var(--line);
  color: var(--muted);
  flex-wrap: wrap;
  flex: none;
  gap: 10px;
  padding: 8px 10px 3px;
  font-size: 10px;
  display: flex;
}

@media (max-width: 780px) {
  .recipe-tag-shortcuts {
    display: none;
  }

  .recipe-tag-suggestion {
    font-size: 14px;
  }
}

.split-fields {
  grid-template-columns: 1fr 130px;
  gap: 14px;
  display: grid;
}

.recipe-meta-fields {
  grid-template-columns: minmax(0, 1fr) 130px;
  gap: 14px;
  display: grid;
}

.prep-time-fields {
  background: #f8f8f3;
  border: 1px solid #d7d9cf;
  border-radius: 11px;
  gap: 14px;
  min-width: 0;
  margin: 0 0 24px;
  padding: 15px 16px 17px;
  display: grid;
}

.prep-time-fields legend {
  color: var(--ink);
  padding: 0 6px;
  font-size: 12px;
  font-weight: 800;
}

.prep-time-control {
  min-width: 0;
}

.editor-modal .prep-time-control label {
  color: var(--muted);
  margin: 0;
  font-size: 10px;
}

.editor-modal .prep-time-control label small {
  float: right;
}

.editor-modal .prep-time-control input[type="number"] {
  margin-top: 5px;
}

.editor-modal .prep-time-slider {
  height: 18px;
  accent-color: var(--green);
  cursor: pointer;
  background: none;
  border: 0;
  margin: 8px 0 0;
  padding: 0;
}

.recipe-rating-editor {
  background: #f5f8f3;
  border: 1px solid #d0d9d2;
  border-radius: 11px;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 8px 16px;
  margin-bottom: 24px;
  padding: 14px 16px;
  display: grid;
}

.recipe-rating-editor > div:first-child strong, .recipe-rating-editor > div:first-child small {
  display: block;
}

.recipe-rating-editor > div:first-child strong {
  font-size: 12px;
}

.recipe-rating-editor > div:first-child small, .recipe-rating-editor > small {
  color: var(--muted);
  font-size: 9px;
}

.recipe-rating-editor > div:first-child small {
  margin-top: 3px;
}

.recipe-rating-editor > small {
  grid-column: 1 / -1;
}

.unit-conversion-editor {
  background: #fbfcf8;
  border: 1px solid #d5ddd4;
  border-radius: 11px;
  margin-bottom: 24px;
  padding: 15px 16px;
}

.unit-conversion-heading {
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  display: flex;
}

.unit-conversion-heading > div:first-child strong, .unit-conversion-heading > div:first-child small {
  display: block;
}

.unit-conversion-heading > div:first-child strong {
  font-size: 12px;
}

.unit-conversion-heading > div:first-child small {
  color: var(--green);
  margin-top: 3px;
  font-size: 9px;
  font-weight: 800;
}

.unit-conversion-actions {
  gap: 6px;
  display: flex;
}

.unit-conversion-actions button {
  min-height: 33px;
  color: var(--green);
  cursor: pointer;
  background: #fffefa;
  border: 1px solid #bfd0c3;
  border-radius: 8px;
  padding: 0 11px;
  font-size: 10px;
  font-weight: 800;
}

.unit-conversion-actions button.active {
  color: #fff;
  border-color: var(--green);
  background: var(--green);
}

.unit-conversion-editor > p {
  color: var(--muted);
  margin: 11px 0 0;
  font-size: 10px;
  line-height: 1.5;
}

.unit-conversion-summary {
  color: var(--muted);
  border-top: 1px solid #e2e7df;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-top: 11px;
  padding-top: 10px;
  font-size: 9px;
  display: flex;
}

.unit-conversion-summary strong {
  color: var(--ink);
  font-size: 11px;
}

.recipe-rating-buttons {
  align-items: center;
  gap: 2px;
  display: flex;
}

.recipe-rating-buttons button {
  width: 35px;
  height: 35px;
  color: var(--green);
  cursor: pointer;
  opacity: .3;
  background: none;
  border: 0;
  padding: 0;
  font-size: 29px;
  line-height: 1;
  transition: opacity .14s, transform .14s;
}

.recipe-rating-buttons button.rated {
  opacity: 1;
}

.recipe-rating-buttons button:hover {
  transform: scale(1.08);
}

.insert-block {
  color: var(--green);
  cursor: pointer;
  background: #f4faf6;
  border: 1px solid #b9cec1;
  border-radius: 8px;
  margin-top: -8px;
  margin-bottom: 24px;
  padding: 9px 12px;
  font-size: 12px;
  font-weight: 800;
}

.recipe-block-editor {
  gap: 12px;
  display: grid;
  position: relative;
}

.recipe-flow-heading {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 2px;
  display: flex;
}

.recipe-flow-heading strong, .recipe-flow-heading small {
  display: block;
}

.recipe-flow-heading strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 22px;
}

.recipe-flow-heading small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 10px;
}

.recipe-flow-heading > span {
  color: var(--green);
  background: var(--green-soft);
  text-transform: uppercase;
  letter-spacing: .05em;
  border-radius: 999px;
  padding: 5px 8px;
  font-size: 9px;
  font-weight: 800;
}

.method-editor-block {
  background: #fffefa;
  border: 1px solid #d8d5ca;
  border-radius: 13px;
  padding: 13px 14px 11px;
  position: relative;
}

.recipe-flow-block {
  transition: opacity .14s, transform .14s, box-shadow .14s;
  position: relative;
}

.method-editor-block.recipe-flow-block {
  padding-left: 14px;
}

.ingredient-editor.recipe-flow-block {
  padding-left: 16px;
}

.method-editor-block.recipe-flow-block > .method-block-heading, .ingredient-editor.recipe-flow-block > .ingredient-section-header {
  padding-left: 32px;
}

.recipe-flow-block.dragging {
  z-index: 4;
  opacity: .58;
  transform: scale(.995);
  box-shadow: 0 10px 24px #23423324;
}

.recipe-block-drag-handle {
  z-index: 2;
  color: #718178;
  cursor: grab;
  touch-action: none;
  background: #ffffff80;
  border: 0;
  border-radius: 7px;
  width: 28px;
  height: 34px;
  font-size: 18px;
  line-height: 1;
  position: absolute;
  top: 10px;
  left: 9px;
}

.recipe-block-drag-handle:hover, .recipe-block-drag-handle:focus-visible {
  color: var(--green);
  background: #e3ece5;
}

.recipe-block-drag-handle:active {
  cursor: grabbing;
}

.method-block-heading {
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  display: flex;
}

.method-block-heading span {
  color: var(--green);
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: 10px;
  font-weight: 800;
}

.method-block-heading small {
  color: var(--muted);
  font-size: 9px;
}

.method-block-actions {
  align-items: center;
  gap: 8px;
  display: flex;
}

.method-block-actions button {
  color: var(--tomato);
  cursor: pointer;
  background: #ffffffa6;
  border: 1px solid #d8c5bd;
  border-radius: 7px;
  padding: 6px 7px;
  font-size: 9px;
  font-weight: 800;
}

.method-editor-block textarea {
  resize: none;
  background: none;
  border-color: #0000;
  min-height: 76px;
  margin-top: 7px;
  padding: 8px 9px;
  overflow-y: hidden;
}

.method-editor-block textarea:focus {
  background: #fff;
  border-color: #b9cabe;
}

.recipe-block-add-panel {
  background: #f3f8f3;
  border: 1px dashed #aabeb2;
  border-radius: 13px;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  padding: 13px 14px;
  display: flex;
}

.recipe-block-add-panel strong, .recipe-block-add-panel small {
  display: block;
}

.recipe-block-add-panel strong {
  color: var(--green);
  font-size: 12px;
}

.recipe-block-add-panel small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 9px;
}

.recipe-block-add-actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
  display: grid;
}

.recipe-block-add-actions button {
  min-height: 36px;
  color: var(--green);
  cursor: pointer;
  white-space: nowrap;
  background: #fffefa;
  border: 1px solid #aabeb2;
  border-radius: 8px;
  padding: 7px 10px;
  font-size: 10px;
  font-weight: 800;
}

.ingredient-editor-inline {
  box-shadow: inset 3px 0 0 var(--green);
  background: #eef4eb;
  border-color: #a9c3b4;
}

.ingredient-sections-editor {
  gap: 14px;
  display: grid;
}

.ingredient-sections-heading {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  display: flex;
}

.ingredient-sections-heading strong, .ingredient-sections-heading small {
  display: block;
}

.ingredient-sections-heading strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 20px;
}

.ingredient-sections-heading small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 10px;
}

.ingredient-sections-heading > span {
  color: #fff;
  background: var(--green);
  border-radius: 50%;
  place-items: center;
  min-width: 28px;
  height: 28px;
  font-size: 11px;
  font-weight: 800;
  display: grid;
}

.ingredient-editor {
  background: #f4f1e8;
  border: 1px solid #c9c8bb;
  border-radius: 13px;
  padding: 16px;
}

.ingredient-section-header {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 11px;
  display: flex;
}

.editor-modal .ingredient-section-title {
  flex: 1;
  min-width: 0;
  margin: 0;
}

.ingredient-section-title span {
  color: var(--green);
  letter-spacing: .07em;
  text-transform: uppercase;
  font-size: 9px;
  font-weight: 800;
  display: block;
}

.editor-modal .ingredient-section-title input {
  background: #ffffffb8;
  border-color: #b9cabe;
  margin-top: 4px;
  padding: 7px 9px;
  font-size: 14px;
  font-weight: 800;
}

.ingredient-section-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 5px;
  display: flex;
}

.ingredient-section-actions span {
  color: #7a7366;
  text-transform: uppercase;
  letter-spacing: .05em;
  background: #e8e4d8;
  border-radius: 999px;
  padding: 4px 6px;
  font-size: 8px;
  font-weight: 800;
}

.ingredient-section-actions span.placed {
  color: var(--green);
  background: var(--green-soft);
}

.ingredient-section-actions button {
  color: var(--green);
  cursor: pointer;
  background: #ffffff8c;
  border: 1px solid #c7cbbf;
  border-radius: 7px;
  padding: 6px 7px;
  font-size: 9px;
  font-weight: 800;
}

.ingredient-section-actions button:disabled {
  opacity: .3;
  cursor: not-allowed;
}

.ingredient-section-actions .remove-section {
  color: var(--tomato);
}

.section-label {
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  display: flex;
}

.section-label span {
  font-size: 13px;
  font-weight: 800;
  display: block;
}

.section-label small {
  color: var(--muted);
}

.section-label button {
  color: var(--green);
  cursor: pointer;
  background: none;
  border: 0;
  font-size: 12px;
  font-weight: 800;
}

.ingredient-entry-hint {
  color: var(--muted);
  margin: -2px 0 8px;
  font-size: 10px;
}

.natural-ingredient-list {
  background: #ffffffa6;
  border: 1px solid #ccd5ca;
  border-radius: 10px;
  overflow: hidden;
}

.natural-ingredient-item {
  border-top: 1px solid #e0e4dc;
  transition: opacity 60ms, border-color 60ms, background 60ms, box-shadow 60ms, transform 60ms;
  position: relative;
}

.natural-ingredient-item:first-child {
  border-top: 0;
}

.natural-ingredient-item:focus-within {
  background: #fff;
}

.natural-ingredient-item.dragging {
  z-index: 2;
  opacity: .72;
  background: #f5faf5;
  border-color: #739681;
  transform: scale(.985);
  box-shadow: 0 10px 24px #1b362a29;
}

.natural-ingredient-row {
  grid-template-columns: 28px minmax(0, 1fr) auto 28px;
  align-items: start;
  gap: 5px;
  min-height: 48px;
  padding: 6px 7px;
  display: grid;
}

.ingredient-drag-handle, .ingredient-remove-button, .ingredient-details-toggle {
  cursor: pointer;
  -webkit-user-select: none;
  user-select: none;
  background: none;
  border: 0;
}

.ingredient-drag-handle {
  color: #7c8b82;
  cursor: grab;
  touch-action: none;
  border-radius: 8px;
  height: 34px;
  font-size: 17px;
  line-height: 1;
  transition: color .15s, background .15s;
}

.ingredient-drag-handle:hover, .ingredient-drag-handle:focus-visible {
  color: var(--green);
  background: var(--green-soft);
}

.ingredient-drag-handle:active {
  cursor: grabbing;
}

.ingredient-drag-handle:disabled, .ingredient-remove-button:disabled {
  opacity: .2;
  cursor: default;
}

.natural-ingredient-main {
  min-width: 0;
}

.natural-ingredient-main > input {
  background: none;
  border: 1px solid #0000;
  border-radius: 7px;
  width: 100%;
  margin: 0;
  padding: 8px 9px;
  font-size: 13px;
}

.natural-ingredient-main > input:hover {
  border-color: #d7ddd4;
}

.natural-ingredient-main > input:focus {
  background: #fffefa;
  border-color: #8eaa99;
  box-shadow: 0 0 0 2px #2b5b4314;
}

.natural-ingredient-main > input.parse-attention {
  background: #fffaf0;
  border-color: #d6a65f;
}

.ingredient-parse-summary {
  flex-wrap: wrap;
  gap: 4px;
  min-height: 17px;
  padding: 3px 2px 0;
  display: flex;
}

.ingredient-parse-summary span {
  color: #53645a;
  background: #e8eee8;
  border-radius: 999px;
  padding: 2px 6px;
  font-size: 8px;
  font-weight: 800;
  line-height: 1.35;
}

.ingredient-parse-summary .ingredient-note-summary {
  color: #765b21;
  background: #f4ead3;
  font-weight: 700;
}

.ingredient-parse-summary .parse-warning {
  color: #8a5a16;
  background: #f7e5c8;
}

.ingredient-details-toggle {
  height: 34px;
  color: var(--green);
  padding: 0 6px;
  font-size: 9px;
  font-weight: 800;
}

.ingredient-details-toggle.active {
  text-underline-offset: 3px;
  text-decoration: underline;
}

.ingredient-remove-button {
  height: 34px;
  color: var(--muted);
  font-size: 19px;
  line-height: 1;
}

.ingredient-remove-button:hover {
  color: var(--tomato);
}

.ingredient-details-grid {
  background: #f8faf6;
  border-top: 1px dashed #d6dcd3;
  grid-template-columns: 68px 72px 92px minmax(125px, 1fr) 130px;
  gap: 7px;
  padding: 9px 10px 11px 40px;
  display: grid;
}

.ingredient-details-grid label {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  margin: 0;
  font-size: 8px;
  font-weight: 800;
}

.ingredient-details-grid input, .ingredient-details-grid select {
  text-transform: none;
  letter-spacing: normal;
  width: 100%;
  margin-top: 4px;
  padding: 7px;
  font-size: 11px;
}

.ingredient-details-grid .ingredient-note-detail {
  grid-column: 1 / -1;
}

.empty-ingredients-note {
  color: var(--muted);
  text-align: center;
  padding: 8px 0 2px;
  display: block;
}

.recipe-photo-editor {
  margin-bottom: 18px;
}

.recipe-photo-preview, .recipe-photo-placeholder {
  aspect-ratio: 4 / 3;
  background: var(--paper);
  border: 1px solid #d2d0c6;
  border-radius: 12px;
  width: 100%;
}

.recipe-photo-preview {
  object-fit: cover;
  display: block;
}

.recipe-photo-placeholder {
  color: var(--muted);
  text-align: center;
  align-content: center;
  place-items: center;
  gap: 7px;
  padding: 18px;
  display: grid;
}

.recipe-photo-placeholder span {
  color: var(--green);
  font-size: 29px;
}

.recipe-photo-placeholder p {
  max-width: 170px;
  margin: 0;
  font-size: 11px;
  line-height: 1.45;
}

.recipe-photo-actions {
  align-items: center;
  gap: 7px;
  margin-top: 9px;
  display: flex;
}

.editor-modal .photo-upload-button {
  min-height: 36px;
  color: var(--green);
  cursor: pointer;
  text-align: center;
  background: #f8fbf7;
  border: 1px solid #b8c9be;
  border-radius: 9px;
  flex: 1;
  justify-content: center;
  align-items: center;
  margin: 0;
  padding: 0 10px;
  font-size: 10px;
  font-weight: 800;
  display: inline-flex;
  position: relative;
  overflow: hidden;
}

.editor-modal .photo-upload-button input {
  opacity: 0;
  pointer-events: none;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  position: absolute;
}

.recipe-photo-actions button {
  min-height: 36px;
  color: var(--tomato);
  cursor: pointer;
  background: #fff8f5;
  border: 1px solid #dfb8ae;
  border-radius: 9px;
  padding: 0 9px;
  font-size: 10px;
  font-weight: 800;
}

.recipe-photo-actions button:disabled {
  opacity: .48;
  cursor: wait;
}

.photo-upload-button:has(input:disabled) {
  opacity: .48;
  cursor: wait;
}

.recipe-photo-help {
  color: var(--muted);
  margin-top: 8px;
  font-size: 9px;
  line-height: 1.45;
  display: block;
}

.recipe-photo-error {
  color: var(--tomato);
  margin: 7px 0 0;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.4;
}

.macro-box {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 13px;
  padding: 15px;
}

.macro-box .section-label select {
  width: auto;
  margin: 0;
  padding: 6px;
  font-size: 10px;
}

.macro-box label {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
  font-size: 10px;
  display: flex;
}

.macro-box label div {
  align-items: center;
  gap: 5px;
  display: flex;
}

.macro-box label input {
  text-align: right;
  width: 65px;
  margin: 0;
  padding: 7px;
}

.macro-box label span {
  text-transform: none;
}

.editor-tip {
  color: #365748;
  background: var(--green-soft);
  border-radius: 12px;
  gap: 10px;
  margin-top: 18px;
  padding: 14px;
  font-size: 11px;
  display: flex;
}

.editor-tip span {
  color: var(--tomato);
}

.editor-tip p {
  margin: 0;
  line-height: 1.45;
}

.editor-tip strong {
  display: block;
}

.modal-footer {
  border-top: 1px solid var(--line);
  background: #f6f4ed;
  justify-content: flex-end;
  gap: 9px;
  padding: 17px 27px;
  display: flex;
}

.modal-footer-spacer {
  flex: 1;
}

.danger-button {
  color: #a93e2a;
  cursor: pointer;
  background: #fff6f3;
  border: 1px solid #e0b4aa;
  border-radius: 10px;
  padding: 10px 13px;
  font-weight: 800;
}

.danger-button:disabled {
  opacity: .45;
  cursor: wait;
}

.shopping-editor-modal {
  background: var(--paper);
  border-radius: 22px;
  width: min(580px, 100%);
  min-width: 0;
  overflow: hidden;
  box-shadow: 0 30px 80px #0c1e184d;
}

.shopping-editor-body {
  padding: 26px 27px;
}

.shopping-editor-body label {
  font-size: 12px;
  font-weight: 800;
  display: block;
}

.shopping-editor-body input, .shopping-editor-body select {
  width: 100%;
  color: var(--ink);
  background: #fffefa;
  border: 1px solid #cfcfc5;
  border-radius: 9px;
  outline: none;
  margin-top: 7px;
  padding: 11px 12px;
}

.shopping-editor-fields {
  grid-template-columns: .7fr 1fr 1.35fr;
  gap: 12px;
  margin-top: 18px;
  display: grid;
}

.shopping-item-sources {
  background: #f8faf6;
  border: 1px solid #d5ddd4;
  border-radius: 12px;
  margin-top: 20px;
  overflow: hidden;
}

.shopping-item-sources-heading {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  min-height: 42px;
  padding: 0 13px;
  display: flex;
}

.shopping-item-sources-heading h3 {
  margin: 0;
  font-family: Fraunces, Georgia, serif;
  font-size: 17px;
}

.shopping-item-sources-heading > span {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  font-size: 9px;
  font-weight: 800;
}

.shopping-item-source-list {
  background: var(--paper);
  border-top: 1px solid #e0e5de;
}

.shopping-item-source-row {
  text-align: left;
  cursor: pointer;
  background: none;
  border: 0;
  border-top: 1px solid #ecebe4;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  width: 100%;
  min-height: 52px;
  padding: 9px 13px;
  display: grid;
}

.shopping-item-source-row:hover, .shopping-item-source-row:focus-visible {
  background: var(--green-soft);
}

.shopping-item-source-row:focus-visible {
  outline-offset: -3px;
}

.shopping-item-source-row:first-child {
  border-top: 0;
}

.shopping-item-source-row strong, .shopping-item-source-row small {
  display: block;
}

.shopping-item-source-row > span:first-child strong {
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  overflow: hidden;
}

.shopping-item-source-row small {
  color: var(--muted);
  margin-top: 3px;
  font-size: 9px;
}

.shopping-item-source-amount {
  color: var(--green);
  text-align: right;
  align-items: baseline;
  gap: 4px;
  display: flex;
}

.shopping-item-source-amount strong {
  font-size: 15px;
}

.shopping-item-source-amount span {
  color: var(--muted);
  font-size: 10px;
}

.shopping-item-source-empty {
  color: var(--muted);
  background: var(--paper);
  border-top: 1px solid #e0e5de;
  margin: 0;
  padding: 12px 13px;
  font-size: 11px;
}

.shopping-editor-note {
  color: #446052;
  background: var(--green-soft);
  border-radius: 10px;
  margin: 20px 0 0;
  padding: 12px 14px;
  font-size: 11px;
  line-height: 1.5;
}

.import-modal {
  width: min(650px, 96vw);
}

.import-modal > p {
  color: var(--muted);
  margin: 22px 27px 0;
  line-height: 1.55;
}

.import-modal > textarea {
  width: calc(100% - 54px);
  margin: 0 27px 18px;
}

.import-url-panel {
  margin: 18px 27px 0;
}

.import-url-panel label {
  margin: 0;
}

.import-url-row {
  align-items: flex-end;
  gap: 9px;
  display: flex;
}

.import-url-row input {
  min-width: 0;
}

.import-url-row button {
  white-space: nowrap;
  flex: none;
}

.import-url-row button:disabled {
  opacity: .55;
  cursor: wait;
}

.import-error, .import-warning, .import-success {
  margin: 9px 0 0;
  font-size: 11px;
  line-height: 1.45;
}

.import-error {
  color: #a93e2a;
}

.import-warning {
  color: #7a5b16;
}

.import-success {
  color: var(--green);
}

.photo-import-panel {
  background: #f5faf5;
  border: 1px solid #b9cec0;
  border-radius: 13px;
  margin: 18px 27px 0;
  padding: 16px;
}

.photo-import-heading strong {
  font-size: 14px;
}

.photo-import-heading span {
  color: #694c10;
  text-transform: uppercase;
  background: #fff0c6;
  border-radius: 5px;
  margin-left: 8px;
  padding: 3px 6px;
  font-size: 9px;
  font-weight: 800;
}

.photo-import-heading p {
  color: var(--muted);
  margin: 5px 0 12px;
  font-size: 11px;
  line-height: 1.5;
}

.photo-import-privacy {
  color: var(--muted);
  margin: 9px 0 0;
  font-size: 10px;
  line-height: 1.4;
}

.photo-import-locked {
  color: #694c10;
  background: #fff0c6;
  border-radius: 8px;
  margin: 10px 0 0;
  padding: 10px 12px;
  font-size: 11px;
  font-weight: 700;
}

.photo-import-actions {
  flex-wrap: wrap;
  gap: 8px;
  display: flex;
}

.photo-import-actions label {
  cursor: pointer;
  width: auto;
  margin: 0;
  position: relative;
}

.photo-import-actions input {
  opacity: 0;
  border: 0;
  width: 1px;
  height: 1px;
  padding: 0;
  position: absolute;
}

.photo-import-actions label:focus-within {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}

.photo-import-actions label:has(input:disabled) {
  opacity: .5;
  cursor: not-allowed;
}

.photo-import-list {
  gap: 7px;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.photo-import-list li {
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 9px;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 62px;
  padding: 6px 8px;
  display: grid;
}

.photo-import-list img {
  object-fit: cover;
  border-radius: 5px;
  width: 48px;
  height: 48px;
}

.photo-import-list span {
  font-size: 11px;
  font-weight: 700;
}

.photo-import-list li > div {
  gap: 4px;
  display: flex;
}

.photo-import-list button {
  border: 1px solid var(--line);
  background: var(--paper);
  width: 27px;
  height: 27px;
  color: var(--ink);
  cursor: pointer;
  border-radius: 6px;
}

.photo-import-list button:disabled {
  opacity: .35;
  cursor: default;
}

.photo-import-submit {
  margin-top: 13px;
}

.photo-import-panel .photo-import-add {
  margin-top: 16px;
  display: block;
}

.photo-import-review {
  background: #fff5da;
  border: 1px solid #d6bb72;
  border-radius: 10px;
  margin-bottom: 18px;
  padding: 13px 15px;
  font-size: 11px;
  line-height: 1.5;
}

.photo-import-review p {
  margin: 4px 0 0;
}

.photo-import-review ul {
  margin: 7px 0 0;
  padding-left: 18px;
}

.photo-import-originals {
  margin-top: 10px;
}

.photo-import-originals summary {
  color: var(--green);
  cursor: pointer;
  font-weight: 800;
}

.photo-import-originals figure {
  margin: 12px 0 0;
}

.photo-import-originals figcaption {
  margin-bottom: 5px;
  font-weight: 800;
}

.photo-import-originals img {
  object-fit: contain;
  border-radius: 8px;
  max-width: 100%;
  max-height: 70vh;
  display: block;
}

.import-divider {
  color: var(--muted);
  letter-spacing: .05em;
  text-transform: uppercase;
  align-items: center;
  gap: 12px;
  margin: 18px 27px;
  font-size: 10px;
  font-weight: 800;
  display: flex;
}

.import-divider:before, .import-divider:after {
  background: var(--line);
  content: "";
  flex: 1;
  height: 1px;
}

.import-unit-choice {
  border: 0;
  margin: 18px 27px;
  padding: 0;
}

.import-unit-choice legend {
  margin-bottom: 8px;
  font-size: 12px;
  font-weight: 800;
}

.import-unit-choice > div {
  grid-template-columns: 1.35fr 1fr 1fr;
  gap: 7px;
  display: grid;
}

.import-unit-choice label {
  cursor: pointer;
  margin: 0;
  position: relative;
}

.import-unit-choice input {
  opacity: 0;
  pointer-events: none;
  width: 1px;
  height: 1px;
  margin: 0;
  position: absolute;
}

.import-unit-choice label span {
  min-height: 38px;
  color: var(--muted);
  text-align: center;
  background: #fffefa;
  border: 1px solid #cfd6ce;
  border-radius: 9px;
  place-items: center;
  padding: 0 10px;
  font-size: 10px;
  font-weight: 800;
  display: grid;
}

.import-unit-choice label.active span {
  color: #fff;
  border-color: var(--green);
  background: var(--green);
}

.import-unit-choice label:focus-within span {
  outline-offset: 2px;
  outline: 2px solid #2f5b4338;
}

.import-unit-choice > small {
  color: var(--muted);
  margin-top: 8px;
  font-size: 9px;
  line-height: 1.45;
  display: block;
}

.import-note {
  color: #5f684a;
  background: #f8edc9;
  border-radius: 10px;
  gap: 10px;
  margin: 0 27px 20px;
  padding: 12px;
  font-size: 11px;
  line-height: 1.45;
  display: flex;
}

.import-note > span {
  border: 1px solid #c9a94f;
  border-radius: 50%;
  flex: none;
  place-items: center;
  width: 21px;
  height: 21px;
  font-weight: 800;
  display: grid;
}

.import-note p {
  margin: 0;
}

.share-modal {
  background: var(--paper);
  border-radius: 22px;
  width: min(780px, 96vw);
  max-height: 92vh;
  overflow: auto;
  box-shadow: 0 30px 80px #0c1e184d;
}

.settings-modal {
  background: var(--paper);
  border-radius: 22px;
  width: min(560px, 96vw);
  max-height: 92vh;
  overflow: auto;
  box-shadow: 0 30px 80px #0c1e184d;
}

.settings-content {
  padding: 24px 27px 28px;
}

.settings-section-heading strong, .settings-section-heading small {
  display: block;
}

.settings-section-heading strong {
  font-family: Fraunces, Georgia, serif;
  font-size: 19px;
}

.settings-section-heading small {
  color: var(--muted);
  margin-top: 4px;
  font-size: 10px;
}

.navigation-settings-heading {
  border-top: 1px solid var(--line);
  margin-top: 26px;
  padding-top: 23px;
}

.settings-navigation-list {
  background: #f0f3ed;
  border: 1px solid #d7ded7;
  border-radius: 16px;
  gap: 7px;
  margin-top: 14px;
  padding: 8px;
  display: grid;
  box-shadow: inset 0 1px #fffc;
}

.settings-navigation-list + .settings-section-heading {
  border-top: 1px solid var(--line);
  margin-top: 28px;
  padding-top: 23px;
}

.settings-navigation-row {
  background: var(--paper);
  border: 1px solid #d7ddd5;
  border-radius: 12px;
  grid-template-columns: 34px 40px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 62px;
  padding: 8px 11px 8px 7px;
  transition: opacity 60ms, border-color 60ms, background 60ms, box-shadow 60ms, transform 60ms;
  display: grid;
  position: relative;
  box-shadow: 0 2px 7px #1b362a0f;
}

.settings-navigation-row:hover {
  border-color: #b7c8bc;
  box-shadow: 0 4px 12px #1b362a17;
}

.settings-navigation-row.dragging {
  z-index: 2;
  opacity: .72;
  background: #f5faf5;
  border-color: #739681;
  transform: scale(.985);
  box-shadow: 0 10px 24px #1b362a29;
}

.settings-navigation-drag-handle {
  color: #7c8b82;
  border-radius: 8px;
  justify-self: center;
  width: 32px;
  height: 42px;
  transition: color .15s, background .15s;
}

.settings-navigation-drag-handle:hover, .settings-navigation-drag-handle:focus-visible {
  color: var(--green);
  background: var(--green-soft);
}

.settings-navigation-page-icon {
  color: #fff;
  background: var(--green);
  border-radius: 11px;
  place-items: center;
  width: 40px;
  height: 40px;
  font-size: 17px;
  font-weight: 800;
  display: grid;
  box-shadow: 0 4px 10px #1f5a4629;
}

.settings-navigation-page-copy {
  min-width: 0;
  display: block;
}

.settings-navigation-page-copy strong {
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  display: block;
  overflow: hidden;
}

.settings-navigation-home {
  min-height: 28px;
  color: var(--green);
  white-space: nowrap;
  background: #e6f0e7;
  border: 1px solid #b5ccbd;
  border-radius: 999px;
  align-items: center;
  gap: 5px;
  padding: 0 10px 0 7px;
  font-size: 9px;
  font-weight: 800;
  display: inline-flex;
}

.settings-navigation-home > span {
  color: #fff;
  background: var(--green);
  border-radius: 50%;
  place-items: center;
  width: 18px;
  height: 18px;
  font-size: 12px;
  line-height: 1;
  display: grid;
}

.settings-navigation-position {
  width: 28px;
  height: 28px;
  color: var(--muted);
  background: #f4f5f0;
  border: 1px solid #d5ddd4;
  border-radius: 50%;
  place-items: center;
  font-size: 10px;
  font-weight: 800;
  display: grid;
}

.settings-option {
  background: #f8faf6;
  border: 1px solid #d5ddd4;
  border-radius: 12px;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 20px;
  margin-top: 17px;
  padding: 16px;
  display: grid;
}

.settings-option strong {
  font-size: 12px;
}

.settings-option p {
  color: var(--muted);
  margin: 5px 0 0;
  font-size: 10px;
  line-height: 1.5;
}

.settings-toggle {
  cursor: pointer;
  background: #c7cec8;
  border: 0;
  border-radius: 999px;
  flex: none;
  width: 46px;
  height: 26px;
  padding: 0;
  transition: background .16s;
  position: relative;
}

.settings-toggle span {
  background: #fff;
  border-radius: 50%;
  width: 20px;
  height: 20px;
  transition: transform .16s;
  position: absolute;
  top: 3px;
  left: 3px;
  box-shadow: 0 1px 4px #1c30273d;
}

.settings-toggle.active {
  background: var(--green);
}

.settings-toggle.active span {
  transform: translateX(20px);
}

.settings-toggle:focus-visible {
  outline-offset: 2px;
  outline: 3px solid #2f5b4333;
}

.settings-note {
  color: var(--muted);
  margin: 13px 2px 0;
  font-size: 9px;
  line-height: 1.5;
}

.import-settings-heading, .export-settings-heading, .account-settings-heading {
  border-top: 1px solid var(--line);
  margin-top: 28px;
  padding-top: 23px;
}

.recipe-import-card {
  background: #f5faf5;
  border: 1px solid #b9cec0;
  border-radius: 13px;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  margin-top: 14px;
  padding: 12px 13px;
  display: grid;
}

.recipe-import-card > span:nth-child(2) {
  min-width: 0;
}

.recipe-import-card strong, .recipe-import-card small {
  display: block;
}

.recipe-import-card strong {
  font-size: 12px;
}

.recipe-import-card small {
  color: var(--muted);
  margin-top: 4px;
  font-size: 9px;
  line-height: 1.35;
}

.recipe-import-card .recipe-export-icon {
  color: var(--green);
  background: var(--green-soft);
}

.recipe-import-card button {
  color: #fff;
  background: var(--green);
  cursor: pointer;
  border: 0;
  border-radius: 999px;
  min-height: 32px;
  padding: 0 11px;
  font-size: 9px;
  font-weight: 800;
}

.recipe-import-card button:disabled {
  opacity: .55;
  cursor: wait;
}

.recipe-import-card button:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #2f5b4340;
}

.recipe-import-input {
  display: none;
}

.recipe-import-error {
  color: var(--tomato);
  margin: 10px 2px 0;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.45;
}

.recipe-export-options {
  gap: 9px;
  margin-top: 14px;
  display: grid;
}

.recipe-export-options > button {
  width: 100%;
  min-height: 68px;
  color: var(--ink);
  cursor: pointer;
  text-align: left;
  background: #fffefa;
  border: 1px solid #d5ddd4;
  border-radius: 13px;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 12px 13px;
  transition: border-color .15s, box-shadow .15s, background .15s, transform .15s;
  display: grid;
  box-shadow: 0 4px 12px #1b362a0d;
}

.recipe-export-options > button:hover {
  background: #f8fbf7;
  border-color: #9fb5a6;
  transform: translateY(-1px);
  box-shadow: 0 7px 17px #1b362a1a;
}

.recipe-export-options > button:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #2f5b4340;
}

.recipe-export-options > button:disabled {
  opacity: .55;
  cursor: wait;
  transform: none;
}

.recipe-export-options > button > span:nth-child(2) {
  min-width: 0;
}

.recipe-export-options strong, .recipe-export-options small {
  display: block;
}

.recipe-export-options strong {
  font-size: 12px;
}

.recipe-export-options small {
  color: var(--muted);
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-top: 4px;
  font-size: 9px;
  line-height: 1.35;
  overflow: hidden;
}

.recipe-export-options b {
  color: #fff;
  background: var(--green);
  border-radius: 999px;
  padding: 7px 10px;
  font-size: 9px;
  font-weight: 800;
}

.recipe-export-icon {
  border-radius: 11px;
  place-items: center;
  width: 42px;
  height: 42px;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 10px;
  font-weight: 900;
  display: grid;
}

.recipe-export-json .recipe-export-icon {
  color: var(--green);
  background: var(--green-soft);
}

.recipe-export-txt .recipe-export-icon {
  color: #795813;
  background: #f8e9b8;
}

.recipe-export-md .recipe-export-icon {
  color: #9a4838;
  background: #f8ded7;
}

.account-danger-card {
  background: #fff8f5;
  border: 1px solid #e0b4aa;
  border-radius: 12px;
  gap: 13px;
  margin-top: 14px;
  padding: 16px;
  display: grid;
}

.account-danger-card strong {
  font-size: 12px;
}

.account-danger-card p {
  color: var(--muted);
  margin: 5px 0 0;
  font-size: 10px;
  line-height: 1.5;
}

.account-danger-card label {
  color: var(--ink);
  font-size: 10px;
  font-weight: 800;
}

.account-danger-card label small {
  color: var(--muted);
  font-weight: 500;
}

.account-danger-card input {
  background: #fff;
  border: 1px solid #d9c7c1;
  border-radius: 9px;
  width: 100%;
  margin-top: 6px;
  padding: 10px 11px;
}

.account-danger-card .danger-button {
  justify-self: start;
}

.account-action-error {
  font-weight: 700;
  color: var(--tomato) !important;
}

.share-content {
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  padding: 26px;
  display: grid;
}

.invite-panel, .member-panel, .join-panel, .create-pantry-panel, .pantry-danger-panel {
  border: 1px solid var(--line);
  background: #f8f6ef;
  border-radius: 16px;
  padding: 21px;
}

.invite-panel h3, .join-panel h3, .create-pantry-panel h3, .pantry-danger-panel h3 {
  margin: 0 0 8px;
  font-family: Fraunces, Georgia, serif;
  font-size: 23px;
}

.invite-panel > p:not(.eyebrow), .join-panel p:not(.eyebrow), .create-pantry-panel p:not(.eyebrow), .pantry-danger-panel p:not(.eyebrow) {
  color: var(--muted);
  margin: 0 0 17px;
  font-size: 12px;
  line-height: 1.55;
}

.invite-code {
  width: 100%;
  color: var(--green);
  background: var(--paper);
  cursor: pointer;
  border: 1px dashed #8aa596;
  border-radius: 11px;
  justify-content: space-between;
  align-items: center;
  padding: 14px 16px;
  display: flex;
}

.invite-code span {
  letter-spacing: .12em;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 22px;
  font-weight: 800;
}

.invite-code small {
  font-weight: 800;
}

.member-list {
  gap: 9px;
  display: grid;
}

.member-row {
  border-bottom: 1px solid #e4e0d6;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 9px 0;
  display: grid;
}

.member-row:last-child {
  border-bottom: 0;
}

.member-avatar {
  color: #513a11;
  background: #efc86e;
  border-radius: 50%;
  place-items: center;
  width: 36px;
  height: 36px;
  font-size: 11px;
  font-weight: 800;
  display: grid;
}

.member-row strong, .member-row small {
  display: block;
}

.member-row strong {
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 190px;
  font-size: 12px;
  overflow: hidden;
}

.member-row small {
  color: var(--muted);
  margin-top: 2px;
  font-size: 10px;
}

.member-status, .member-remove-button {
  border-radius: 999px;
  justify-content: center;
  align-items: center;
  min-height: 24px;
  padding: 4px 9px;
  font-size: 9px;
  font-weight: 800;
  line-height: 1;
  display: inline-flex;
}

.member-status {
  color: var(--green);
  background: var(--green-soft);
}

.member-remove-button {
  color: #a93e2a;
  cursor: pointer;
  background: #f7ded8;
  border: 0;
  transition: background .15s, transform .15s;
  box-shadow: inset 0 0 0 1px #edc2b8;
}

.member-remove-button:hover {
  background: #f2ccc3;
  transform: translateY(-1px);
}

.member-remove-button:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #a93e2a47;
}

.member-remove-button:disabled {
  opacity: .5;
  cursor: wait;
}

.member-remove-button:disabled:hover {
  background: #f7ded8;
  transform: none;
}

.join-panel, .create-pantry-panel, .pantry-danger-panel {
  grid-column: 1 / -1;
  grid-template-columns: 1fr minmax(270px, .8fr);
  align-items: center;
  gap: 22px;
  display: grid;
}

.join-controls {
  gap: 8px;
  display: flex;
}

.join-controls input {
  background: var(--paper);
  text-transform: uppercase;
  letter-spacing: .08em;
  border: 1px solid #cfcfc5;
  border-radius: 10px;
  width: 100%;
  min-width: 0;
  padding: 11px 12px;
}

.create-pantry-panel .join-controls input {
  text-transform: none;
  letter-spacing: normal;
}

.join-error {
  color: var(--tomato);
  grid-column: 2;
  font-weight: 700;
}

.pantry-danger-panel {
  background: #fff8f5;
  border-color: #e0b4aa;
}

.pantry-danger-actions {
  justify-content: flex-end;
  gap: 8px;
  display: flex;
}

.share-footer {
  color: var(--muted);
  justify-content: space-between;
  align-items: center;
  font-size: 11px;
}

.share-footer a {
  color: var(--green);
  font-weight: 800;
}

.detail-modal {
  flex-direction: column;
  width: min(760px, 96vw);
  display: flex;
  position: relative;
  overflow: hidden;
}

.detail-modal-scroll {
  overscroll-behavior: contain;
  min-height: 0;
  max-height: 92vh;
  overflow: auto;
}

.detail-image {
  object-fit: cover;
  width: 100%;
  height: 320px;
  display: block;
}

.detail-toolbar {
  border-bottom: 1px solid var(--line);
  background: var(--paper);
  flex-shrink: 0;
  justify-content: space-between;
  align-items: center;
  gap: 9px;
  padding: 12px 15px;
  display: flex;
}

.detail-toolbar .secondary-button {
  justify-content: center;
  align-items: center;
  height: 36px;
  padding: 0 16px;
  display: inline-flex;
}

.detail-content {
  padding: 30px;
}

.detail-content h1 {
  margin: 14px 0 10px;
  font-size: 42px;
  line-height: 1;
}

.detail-rating {
  color: var(--green);
  gap: 3px;
  margin: -2px 0 12px;
  font-size: 22px;
  line-height: 1;
  display: flex;
}

.detail-rating span {
  opacity: .3;
}

.detail-rating .rated {
  opacity: 1;
}

.detail-meta {
  color: var(--muted);
  align-items: center;
  gap: 14px;
  margin-bottom: 22px;
  font-size: 11px;
  display: flex;
}

.detail-meta b {
  color: var(--ink);
}

.recipe-source-link {
  width: min(100%, 340px);
  min-height: 44px;
  color: var(--green);
  cursor: pointer;
  text-align: left;
  background: #f8faf6;
  border: 1px solid #d5ddd4;
  border-radius: 13px;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin: -8px 0 22px;
  padding: 8px 12px;
  font-size: 14px;
  font-weight: 800;
  display: flex;
}

.recipe-source-link:hover {
  background: #f1f6ef;
}

.recipe-source-link span {
  flex: none;
  font-size: 18px;
  line-height: 1;
}

.detail-macros {
  background: #f8faf6;
  border: 1px solid #d5ddd4;
  border-radius: 13px;
  width: min(100%, 340px);
  margin-bottom: 22px;
  overflow: hidden;
}

.detail-macros-heading {
  cursor: pointer;
  align-items: baseline;
  gap: 8px;
  padding: 8px 12px;
  list-style: none;
  display: flex;
}

.detail-macros-heading::-webkit-details-marker {
  display: none;
}

.detail-macros-heading:hover {
  background: #f1f6ef;
}

.detail-macros-heading:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: -2px;
}

.detail-macros-heading h3 {
  margin: 0;
  padding: 0;
  font-size: 20px;
}

.detail-macros-heading span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
}

.detail-macros-heading .detail-macros-chevron {
  color: var(--green);
  margin-left: auto;
  font-size: 18px;
  line-height: .7;
  transition: transform .18s;
  transform: rotate(0);
}

.detail-macros[open] .detail-macros-chevron {
  transform: rotate(180deg);
}

.detail-macros table {
  border-collapse: collapse;
  background: var(--paper);
  width: 100%;
  font-size: 12px;
}

.detail-macros th, .detail-macros td {
  border-top: 1px solid #e3e6df;
  padding: 8px 16px;
}

.detail-macros th {
  color: var(--muted);
  text-align: left;
  padding-right: 12px;
  font-weight: 700;
}

.detail-macros td {
  color: var(--ink);
  text-align: right;
  white-space: nowrap;
}

.detail-macros td strong {
  font-size: 14px;
}

.detail-macros td span {
  min-width: 27px;
  color: var(--muted);
  text-align: left;
  margin-left: 5px;
  font-size: 9px;
  display: inline-block;
}

.detail-serving-scaler {
  background: #f8faf6;
  border: 1px solid #d5ddd4;
  border-radius: 12px;
  width: min(100%, 440px);
  margin-bottom: 18px;
  padding: 12px 14px;
}

.detail-serving-heading {
  cursor: pointer;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  margin: -12px -14px;
  padding: 12px 14px;
  list-style: none;
  display: grid;
}

.detail-serving-heading::-webkit-details-marker {
  display: none;
}

.detail-serving-heading:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: -2px;
  border-radius: 11px;
}

.detail-serving-scaler[open] > .detail-serving-heading {
  margin-bottom: 10px;
}

.detail-serving-scaler[open] > .detail-serving-heading .summary-chevron {
  transform: rotate(180deg);
}

.detail-serving-heading h3 {
  margin: 0;
  padding: 0;
  font-size: 17px;
}

.detail-scale-toolbar {
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  display: flex;
}

.detail-scale-toolbar .detail-scale-mode {
  flex: 180px;
  width: auto;
  margin: 0;
}

.detail-scale-mode button {
  flex: 1;
  min-width: 0;
  min-height: 36px;
  padding: 0 9px;
  font-size: 11px;
}

.detail-serving-controls {
  flex: none;
  justify-content: center;
  align-items: center;
  margin-inline: auto;
  display: flex;
}

.detail-serving-quantity {
  flex: none;
  grid-template-columns: 36px 64px 36px;
  gap: 4px;
}

.detail-serving-quantity button {
  width: 36px;
  height: 36px;
  font-size: 17px;
}

.detail-scale-value {
  flex-direction: column;
  align-items: center;
  gap: 4px;
  min-width: 0;
  display: flex;
}

.detail-serving-quantity input {
  width: 64px;
  height: 36px;
  color: var(--ink);
  appearance: textfield;
  background: none;
  border: 0;
  border-radius: 0;
  margin: 0;
  padding: 0 2px;
  font-size: 18px;
}

.detail-serving-quantity input::-webkit-inner-spin-button {
  appearance: none;
  margin: 0;
}

.detail-serving-quantity input::-webkit-outer-spin-button {
  appearance: none;
  margin: 0;
}

.detail-scale-equivalent {
  min-width: 0;
  color: var(--muted);
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-size: 12px;
}

.detail-scale-hint {
  color: var(--muted);
  margin-top: 10px;
  font-size: 11px;
  line-height: 1.45;
  display: block;
}

@media (pointer: coarse) {
  .detail-scale-mode button {
    min-height: 44px;
  }

  .detail-serving-quantity {
    grid-template-columns: 44px 64px 44px;
  }

  .detail-serving-quantity button {
    width: 44px;
    height: 44px;
  }

  .detail-serving-quantity input {
    height: 44px;
  }
}

.detail-content .recipe-copy {
  font-size: 15px;
}

.detail-content .recipe-copy p {
  white-space: pre-line;
  display: block;
  overflow: visible;
}

.detail-content .ingredient-note {
  padding: 17px;
}

.detail-content .recipe-copy-editable p, .detail-content .recipe-copy-editable .note-line {
  cursor: pointer;
  touch-action: manipulation;
  border-radius: 7px;
  margin-left: -7px;
  margin-right: -7px;
  padding-left: 7px;
  padding-right: 7px;
  transition: background .14s, box-shadow .14s;
}

.detail-content .recipe-copy-editable p:hover, .detail-content .recipe-copy-editable .note-line:hover {
  box-shadow: inset 2px 0 0 var(--green);
  background: #2b5b4312;
}

.detail-content .recipe-copy-editable .ingredient-detail-jump {
  text-underline-offset: 3px;
  -webkit-text-decoration: underline dotted #2b5b4373;
  text-decoration: underline dotted #2b5b4373;
}

.detail-actions {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding-top: 22px;
  display: grid;
}

.detail-actions > .danger-button {
  justify-self: start;
}

.detail-plan-control {
  align-items: center;
  gap: 8px;
  display: flex;
}

.detail-plan-control > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.toast {
  z-index: 80;
  color: #fff;
  background: var(--ink);
  box-shadow: var(--shadow);
  border-radius: 999px;
  align-items: center;
  gap: 9px;
  padding: 11px 17px;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  position: fixed;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
}

.toast span {
  width: 21px;
  height: 21px;
  color: var(--green);
  background: #d9eddf;
  border-radius: 50%;
  place-items: center;
  display: grid;
}

@media (max-width: 1050px) {
  .topbar {
    padding: 0 3vw;
  }

  .header-actions .secondary-button {
    display: none;
  }

  .recipe-grid, .notes-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .hero-row {
    grid-template-columns: 1fr;
    gap: 25px;
  }

  .collaboration-button > span:last-child {
    display: none;
  }

  .collaboration-button {
    justify-content: center;
    width: 38px;
    padding: 0;
  }
}

@media (max-width: 760px) {
  .topbar {
    gap: 10px;
    height: 66px;
    padding: 0 15px;
  }

  .brand > span:last-child {
    display: none;
  }

  .view-switch {
    margin: 0 auto;
  }

  .view-switch button {
    padding: 0 9px;
    font-size: 12px;
  }

  .view-switch button span, .header-actions > .avatar, .header-actions > .collaboration-button, .header-actions > .secondary-button, .header-actions > .primary-button, .header-actions > .settings-button {
    display: none;
  }

  .mobile-menu-button {
    width: 40px;
    height: 40px;
    color: var(--green);
    background: var(--paper);
    cursor: pointer;
    border: 1px solid #b8c9be;
    border-radius: 10px;
    place-content: center;
    gap: 4px;
    padding: 0;
    display: grid;
  }

  .mobile-menu-button > span {
    background: currentColor;
    border-radius: 2px;
    width: 18px;
    height: 2px;
    transition: transform .16s, opacity .16s;
    display: block;
  }

  .mobile-menu-button.open > span:first-child {
    transform: translateY(6px)rotate(45deg);
  }

  .mobile-menu-button.open > span:nth-child(2) {
    opacity: 0;
  }

  .mobile-menu-button.open > span:last-child {
    transform: translateY(-6px)rotate(-45deg);
  }

  .mobile-action-menu {
    z-index: 40;
    border: 1px solid var(--line);
    background: var(--paper);
    border-radius: 15px;
    gap: 3px;
    width: min(280px, 100vw - 30px);
    padding: 7px;
    display: grid;
    position: absolute;
    top: calc(100% + 11px);
    right: 0;
    box-shadow: 0 18px 45px #162d2433;
  }

  .mobile-action-menu button {
    width: 100%;
    color: var(--ink);
    cursor: pointer;
    text-align: left;
    background: none;
    border: 0;
    border-radius: 10px;
    grid-template-columns: 36px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    padding: 11px 10px;
    display: grid;
  }

  .mobile-action-menu button:hover, .mobile-action-menu button:focus-visible {
    background: #f1f6f1;
  }

  .mobile-action-menu strong, .mobile-action-menu small {
    display: block;
  }

  .mobile-action-menu strong {
    font-size: 12px;
  }

  .mobile-action-menu small {
    color: var(--muted);
    margin-top: 2px;
    font-size: 9px;
    line-height: 1.35;
  }

  .mobile-action-icon {
    color: #fff;
    background: var(--green);
    border-radius: 9px;
    place-items: center;
    width: 34px;
    height: 34px;
    font-size: 18px;
    font-weight: 800;
    display: grid;
  }

  .mobile-action-icon.partner {
    color: var(--green);
    background: var(--green-soft);
    font-size: 11px;
  }

  .mobile-action-icon.note {
    color: #594417;
    background: #edcc78;
    font-size: 15px;
  }

  .detail-actions {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2.4fr);
    align-items: stretch;
    gap: 6px;
    margin-bottom: 20px;
    font-size: 12px;
  }

  .detail-actions > .danger-button {
    justify-self: stretch;
    min-width: 0;
    padding: 8px;
  }

  .detail-actions .detail-plan-control {
    gap: 6px;
    min-width: 0;
  }

  .detail-actions .detail-plan-control > button {
    align-self: stretch;
    min-height: 40px;
  }

  .detail-actions .detail-plan-control > .secondary-button {
    flex: 0 0 32px;
  }

  .detail-actions .detail-plan-control > .primary-button {
    flex: 1;
    min-width: 0;
    padding: 0;
  }

  .detail-actions .detail-plan-control > span {
    text-align: center;
    flex-shrink: 0;
    max-width: 54px;
    font-size: 10px;
  }

  .page-wrap {
    width: 92vw;
    padding-top: 37px;
  }

  .hero-row h1 {
    font-size: 36px;
  }

  .toolbar {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: 10px;
    top: 76px;
  }

  .recipe-toolbar-primary {
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 8px;
    min-width: 0;
    display: flex;
  }

  .recipe-toolbar-primary .search-box {
    flex: 1;
    min-width: 0;
    display: none;
  }

  .mobile-search-button, .mobile-search-close {
    width: 42px;
    height: 42px;
    color: var(--green);
    background: var(--paper);
    cursor: pointer;
    border: 1px solid #b8c9be;
    border-radius: 10px;
    flex: none;
    place-items: center;
    font-size: 22px;
  }

  .mobile-search-button {
    display: grid;
  }

  .recipe-toolbar-primary.mobile-search-open .mobile-search-button {
    display: none;
  }

  .recipe-toolbar-primary.mobile-search-open .search-box, .recipe-toolbar-primary.mobile-search-open .mobile-search-close {
    display: flex;
  }

  .recipe-toolbar-primary.mobile-search-open .mobile-search-close {
    color: var(--muted);
    justify-content: center;
    align-items: center;
    font-size: 21px;
  }

  .recipe-tag-panel {
    display: none;
  }

  .mobile-tag-filter-button, .mobile-shopping-list-filter-button {
    min-width: 0;
    height: 42px;
    color: var(--green);
    background: var(--paper);
    cursor: pointer;
    text-align: left;
    border: 1px solid #b8c9be;
    border-radius: 10px;
    flex: 1 1 0;
    align-items: center;
    gap: 7px;
    padding: 0 10px;
    display: flex;
  }

  .mobile-tag-filter-button > span, .mobile-shopping-list-filter-button > span {
    flex: none;
    font-size: 18px;
  }

  .mobile-tag-filter-button > strong, .mobile-shopping-list-filter-button > strong {
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
    font-size: 11px;
    overflow: hidden;
  }

  .mobile-tag-filter-button > b, .mobile-shopping-list-filter-button > b {
    color: #fff;
    background: var(--green);
    border-radius: 999px;
    place-items: center;
    min-width: 21px;
    height: 21px;
    padding: 0 5px;
    font-size: 9px;
    display: grid;
  }

  .mobile-tag-filter-button.active, .mobile-shopping-list-filter-button.included {
    background: var(--green-soft);
  }

  .mobile-shopping-list-filter-button.excluded {
    color: #963f2d;
    background: #f9e6e0;
    border-color: #dfb6aa;
  }

  .mobile-shopping-list-filter-button.excluded > b {
    background: #963f2d;
  }

  .recipe-toolbar-primary.mobile-search-open .mobile-tag-filter-button, .recipe-toolbar-primary.mobile-search-open .mobile-shopping-list-filter-button {
    display: none;
  }

  .recipe-layout-switch {
    align-self: stretch;
  }

  .recipe-layout-switch button {
    justify-content: center;
    width: 34px;
    padding: 0;
  }

  .recipe-layout-switch .recipe-layout-label {
    display: none;
  }

  .mobile-tag-filter-backdrop {
    z-index: 55;
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
    background: #12221c85;
    align-items: flex-end;
    display: flex;
    position: fixed;
    inset: 0;
  }

  .mobile-tag-filter-sheet {
    width: 100%;
    max-height: min(78vh, 680px);
    padding: 20px 18px calc(16px + env(safe-area-inset-bottom));
    background: var(--paper);
    border-radius: 22px 22px 0 0;
    flex-direction: column;
    display: flex;
    box-shadow: 0 -20px 55px #0c1e1842;
  }

  .mobile-tag-filter-heading {
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    display: flex;
  }

  .mobile-tag-filter-heading .eyebrow {
    margin-bottom: 4px;
    font-size: 9px;
  }

  .mobile-filter-title-row {
    align-items: center;
    gap: 8px;
    display: flex;
  }

  .mobile-tag-filter-heading h2 {
    margin: 0;
    font-size: 23px;
    line-height: 1.05;
  }

  .mobile-tag-filter-heading > button {
    border: 1px solid var(--line);
    cursor: pointer;
    background: none;
    border-radius: 10px;
    flex: none;
    width: 36px;
    height: 36px;
    font-size: 22px;
  }

  .mobile-tag-chip-wrap {
    align-content: flex-start;
    margin: 18px -2px;
    padding: 2px;
    overflow-y: auto;
  }

  .mobile-tag-chip-wrap > button, .mobile-tag-chip-wrap .recipe-filter-tag {
    min-height: 40px;
    font-size: 13px;
  }

  .mobile-filter-group {
    border-top: 1px solid var(--line);
    width: 100%;
    margin-top: 5px;
    padding-top: 13px;
  }

  .mobile-filter-group > strong {
    margin-bottom: 8px;
    font-size: 9px;
  }

  .mobile-filter-group .recipe-filter-options > button {
    min-height: 38px;
    font-size: 12px;
  }

  .mobile-tag-filter-actions {
    border-top: 1px solid var(--line);
    grid-template-columns: auto minmax(0, 1fr);
    gap: 9px;
    padding-top: 12px;
    display: grid;
  }

  .mobile-tag-filter-actions > button:first-child {
    border: 1px solid var(--line);
    min-width: 72px;
    color: var(--green);
    cursor: pointer;
    background: none;
    border-radius: 10px;
    font-weight: 800;
  }

  .mobile-tag-filter-actions > button:first-child:disabled {
    opacity: .35;
    cursor: not-allowed;
  }

  .recipe-grid {
    grid-template-columns: 1fr;
  }

  .notes-page {
    width: 92vw;
    padding: 37px 0 70px;
  }

  .notes-heading {
    flex-direction: column;
    align-items: stretch;
    gap: 16px;
    margin-bottom: 25px;
  }

  .notes-heading h1 {
    font-size: 36px;
  }

  .notes-heading .lede {
    font-size: 14px;
  }

  .notes-heading .notes-add-button {
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 100%;
    min-height: 42px;
    display: inline-flex;
  }

  .notes-grid {
    grid-template-columns: 1fr;
  }

  .note-card-image {
    height: 180px;
  }

  .recipe-grid.list-view .recipe-card {
    grid-template-columns: 96px minmax(0, 1fr);
    min-height: 124px;
  }

  .list-view .card-image, .list-view .no-image {
    width: 96px;
    min-height: 124px;
  }

  .list-view .card-content {
    padding: 48px 10px 10px 12px;
  }

  .list-view .tag-row, .list-view .recipe-copy {
    display: none;
  }

  .list-view .card-title h2 {
    margin: 0 0 7px;
    font-size: 19px;
  }

  .list-view .card-footer {
    gap: 7px;
    margin-top: 7px;
    padding-top: 7px;
  }

  .list-view .card-calories {
    display: none;
  }

  .list-view .recipe-plan-control {
    top: 8px;
    right: 8px;
  }

  .meal-plan-page {
    width: 94vw;
    padding: 34px 0 calc(110px + env(safe-area-inset-bottom));
  }

  .meal-plan-heading {
    flex-direction: column;
    align-items: stretch;
    gap: 14px;
  }

  .meal-plan-heading h1 {
    font-size: 36px;
  }

  .meal-plan-heading > button {
    width: 100%;
    min-height: 40px;
  }

  .meal-plan-toolbar {
    flex-direction: column;
    align-items: stretch;
  }

  .quantity-mode-switch {
    width: 100%;
  }

  .quantity-mode-switch button {
    flex: 1;
  }

  .meal-calendar-body {
    max-height: 500vh;
    padding: 6px;
  }

  .meal-calendar-toolbar {
    flex-direction: column;
    align-items: stretch;
  }

  .meal-calendar-toolbar > div:first-child {
    justify-content: space-between;
  }

  .calendar-view-switch button {
    flex: 1;
  }

  .calendar-week-row > button {
    min-height: 48px;
    padding: 3px;
  }

  .meal-calendar-grid.week .calendar-week-row > button {
    grid-template-columns: 82px minmax(0, 1fr) 14px;
    gap: 7px;
    min-height: 64px;
    padding: 7px 8px;
  }

  .calendar-week-date strong {
    font-size: 12px;
  }

  .calendar-week-meal {
    padding: 4px 6px;
  }

  .calendar-week-meal > span {
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
  }

  .calendar-cell-meals small {
    max-width: 100%;
    font-size: 0;
  }

  .calendar-cell-meals small:before {
    content: "•";
    font-size: 9px;
  }

  .calendar-day-editor {
    padding: 9px;
  }

  .calendar-scheduled-meal {
    flex-direction: column;
    align-items: flex-start;
  }

  .calendar-scheduled-controls {
    width: 100%;
  }

  .calendar-serving-quantity {
    flex: none;
  }

  .calendar-scheduled-controls select {
    flex: 1;
    min-width: 0;
  }

  .calendar-scheduled-controls .calendar-remove-meal {
    margin-left: auto;
  }

  .calendar-recipe-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .meal-plan-card {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    padding: 12px;
  }

  .meal-plan-recipe-copy {
    grid-column: 1 / -1;
  }

  .meal-plan-quantity {
    justify-content: start;
  }

  .meal-plan-status {
    align-self: center;
  }

  .meal-plan-checkout {
    padding: 10px;
    bottom: 8px;
    left: 3vw;
    right: 3vw;
  }

  .meal-plan-checkout small {
    display: none;
  }

  .meal-plan-checkout .primary-button {
    padding: 9px 11px;
    font-size: 10px;
  }

  .shopping-page {
    width: 98vw;
    padding: 27px 0 calc(104px + env(safe-area-inset-bottom));
  }

  .shopping-title-row h1 {
    font-size: 34px;
  }

  .shopping-title-row {
    align-items: flex-end;
    gap: 10px;
  }

  .shopping-title-actions {
    flex: none;
  }

  .shopping-add-button {
    width: 40px;
    min-height: 37px;
    padding: 0;
    font-size: 16px;
  }

  .shopping-add-label, .desktop-shopping-actions, .desktop-clear-checked {
    display: none;
  }

  .shopping-meta-row {
    flex-direction: column;
    align-items: flex-start;
  }

  .mobile-shopping-footer {
    z-index: 35;
    padding: 5px max(12px, env(safe-area-inset-right)) calc(9px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
    background: #fffefaf0;
    border-top: 1px solid #b5c2b9e6;
    grid-template-columns: 68px 68px minmax(0, 1fr);
    gap: 8px;
    display: grid;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    box-shadow: 0 -9px 28px #1c302721;
  }

  .mobile-shopping-footer .history-button {
    justify-content: center;
    width: 100%;
    height: 35px;
    padding: 0 7px;
    font-size: 17px;
  }

  .mobile-shopping-footer .history-button span {
    font-size: 11px;
    display: inline;
  }

  .mobile-shopping-footer .clear-checked-button {
    text-overflow: ellipsis;
    white-space: nowrap;
    align-self: stretch;
    min-width: 0;
    min-height: 35px;
    font-size: 11px;
    overflow: hidden;
  }

  .shopping-item {
    grid-template-columns: 32px minmax(35px, max-content) minmax(0, 1fr) 30px;
    gap: 5px;
    min-height: 56px;
  }

  .shopping-item-text {
    font-size: 14px;
    line-height: 1.25;
  }

  .shopping-list-empty {
    grid-template-columns: 30px minmax(0, 1fr);
  }

  .shopping-list-empty > button {
    grid-column: 1 / -1;
    min-height: 40px;
  }

  .item-copy small {
    font-size: 10px;
  }

  .item-edit-trigger {
    padding: 4px 0;
  }

  .item-amount {
    text-overflow: ellipsis;
    max-width: 90px;
    font-size: 14px;
    line-height: 1.25;
    overflow: hidden;
  }

  .meal-plan-compact summary > span:first-child {
    gap: 0;
    display: grid;
  }

  .meal-plan-compact summary b {
    font-size: 15px;
  }

  .meal-plan-compact summary small {
    max-width: 72vw;
  }

  .editor-modal {
    max-height: 96vh;
  }

  .editor-modal > .modal-header {
    align-items: center;
    min-height: 62px;
    padding: 12px 62px 11px 18px;
  }

  .editor-modal > .modal-header .eyebrow {
    display: none;
  }

  .editor-modal > .modal-header h2 {
    font-size: 21px;
    line-height: 1.1;
  }

  .editor-modal > .modal-header .close-button {
    border-radius: 9px;
    width: 34px;
    height: 34px;
    font-size: 21px;
    top: 13px;
    right: 16px;
  }

  .detail-modal-scroll {
    max-height: 96vh;
  }

  .modal-footer button {
    font-size: 12px;
  }

  .note-editor-modal, .note-detail-modal {
    max-height: 96vh;
    font-size: 12px;
  }

  .note-editor-body {
    padding: 21px 18px 26px;
  }

  .note-insert-row {
    grid-template-columns: 1fr auto auto 1fr;
    gap: 5px;
  }

  .note-insert-row button, .note-insert-row label {
    padding: 7px;
  }

  .note-block-header button {
    min-height: 30px;
  }

  .note-image-block, .note-text-block {
    padding: 11px;
  }

  .note-detail-content {
    padding: 38px 23px 25px;
  }

  .note-detail-content h1 {
    font-size: 35px;
  }

  .note-detail-footer {
    padding: 12px 15px calc(12px + env(safe-area-inset-bottom));
    grid-template-columns: 1fr 1fr;
    display: grid;
  }

  .note-detail-footer .modal-footer-spacer {
    display: none;
  }

  .note-detail-footer button {
    width: 100%;
  }

  .editor-import-panel {
    flex-wrap: wrap;
    align-items: stretch;
    margin: 14px 18px 0;
  }

  .editor-import-panel > div {
    align-self: center;
  }

  .editor-import-panel button {
    width: 100%;
  }

  .editor-grid {
    grid-template-columns: 1fr;
  }

  .editor-main {
    border-right: 0;
    padding: 21px 18px;
  }

  .unit-conversion-heading {
    flex-direction: column;
    align-items: stretch;
  }

  .unit-conversion-actions {
    grid-template-columns: 1fr 1fr;
    display: grid;
  }

  .unit-conversion-actions button {
    min-height: 40px;
  }

  .editor-side {
    border-top: 1px solid var(--line);
  }

  .recipe-meta-fields {
    grid-template-columns: 1fr 1fr;
  }

  .recipe-meta-fields label:first-child {
    grid-column: 1 / -1;
  }

  .ingredient-section-header {
    flex-direction: row;
    align-items: center;
  }

  .ingredient-section-actions {
    justify-content: flex-end;
  }

  .method-editor-block.recipe-flow-block {
    padding-left: 14px;
  }

  .ingredient-editor.recipe-flow-block {
    padding-left: 16px;
  }

  .recipe-block-drag-handle {
    left: 7px;
  }

  .method-block-actions small {
    display: none;
  }

  .recipe-block-add-panel {
    flex-direction: column;
    align-items: stretch;
  }

  .recipe-block-add-actions button {
    white-space: normal;
  }

  .natural-ingredient-row {
    grid-template-columns: 27px minmax(0, 1fr) 46px 27px;
    gap: 3px;
    padding: 5px;
  }

  .ingredient-details-toggle {
    padding: 0 2px;
  }

  .ingredient-details-grid {
    grid-template-columns: 1fr 1fr;
    padding: 9px 10px 11px 36px;
  }

  .ingredient-details-grid .ingredient-name-detail, .ingredient-details-grid .ingredient-note-detail {
    grid-column: 1 / -1;
  }

  .modal-backdrop {
    padding: 10px;
  }

  .detail-image {
    height: 220px;
  }

  .detail-content {
    padding: 23px;
  }

  .detail-content h1 {
    font-size: 35px;
  }

  .auth-card {
    padding: 36px 24px;
  }

  .share-content {
    grid-template-columns: 1fr;
    padding: 18px;
  }

  .join-panel, .create-pantry-panel, .pantry-danger-panel {
    grid-column: auto;
    grid-template-columns: 1fr;
  }

  .join-error {
    grid-column: auto;
  }

  .join-controls {
    flex-direction: column;
  }

  .pantry-danger-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .shopping-editor-fields {
    grid-template-columns: 1fr 1fr;
  }

  .shopping-editor-fields label:last-child {
    grid-column: 1 / -1;
  }

  .shopping-editor-modal .modal-footer {
    padding: 13px 15px;
  }

  .shopping-editor-modal .modal-footer .secondary-button {
    display: none;
  }

  .settings-content {
    padding: 21px 18px 24px;
  }

  .settings-option {
    align-items: start;
    gap: 14px;
  }

  .danger-button {
    padding: 9px 10px;
  }
}

@media (max-width: 390px) {
  .topbar {
    gap: 6px;
    padding-left: 9px;
    padding-right: 9px;
  }

  .brand {
    display: none;
  }

  .view-switch {
    margin-left: 0;
  }

  .view-switch button {
    padding: 0 7px;
    font-size: 11px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, :before, :after {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important;
  }
}

.shopping-sync-status {
  color: var(--ink);
  margin: 14px 0 20px;
}

.shopping-sync-status:empty {
  display: none;
}

.shopping-sync-status > p {
  margin: 5px 0;
  font-size: 12px;
}

.shopping-sync-status > p:last-of-type {
  font-weight: 600;
}

.shopping-conflict-help {
  max-width: 70ch;
  color: var(--muted);
  margin: 6px 0 12px;
  font-size: 12px;
  line-height: 1.6;
}

.shopping-conflict-list {
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.shopping-conflict-card {
  background: var(--paper);
  border: 1px solid #deddd2;
  border-radius: 12px;
  min-width: 0;
  overflow: hidden;
}

.shopping-conflict-comparison {
  border-top: 1px solid #efebe2;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  display: grid;
}

.shopping-conflict-comparison:first-child {
  border-top: 0;
}

.shopping-conflict-version {
  min-width: 0;
  padding: 12px 8px 10px;
}

.shopping-conflict-version + .shopping-conflict-version {
  background: #f5f8f2;
  border-left: 1px solid #efebe2;
}

.shopping-conflict-label {
  color: var(--muted);
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: 0 9px 6px;
  font-size: 10px;
  font-weight: 700;
  display: block;
}

.shopping-item.shopping-conflict-row {
  border: 0;
  grid-template-columns: 24px minmax(20px, max-content) minmax(0, 1fr);
  min-height: 46px;
}

.shopping-conflict-row .item-amount {
  white-space: normal;
  overflow-wrap: anywhere;
  max-width: 100px;
}

.shopping-conflict-row .shopping-item-text {
  overflow-wrap: anywhere;
}

.shopping-conflict-row .item-copy small {
  font-size: 10px;
  line-height: 1.5;
}

.shopping-conflict-row .custom-check.is-checked {
  color: #fff;
  border-color: var(--green);
  background: var(--green);
}

.shopping-conflict-row.removed .shopping-item-text {
  color: var(--muted);
  text-decoration: line-through;
}

.shopping-conflict-editor {
  color: var(--muted);
  overflow-wrap: anywhere;
  margin: 5px 9px 0 40px;
  font-size: 10px;
  line-height: 1.5;
}

.shopping-conflict-actions {
  border-top: 1px solid #efebe2;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
  padding: 10px 16px;
  display: flex;
}

.shopping-conflict-actions button {
  min-height: 36px;
  padding: 8px 12px;
  font-size: 11px;
}

@media (max-width: 540px) {
  .shopping-conflict-comparison {
    grid-template-columns: minmax(0, 1fr);
  }

  .shopping-conflict-version + .shopping-conflict-version {
    border-top: 1px solid #efebe2;
    border-left: 0;
  }

  .shopping-conflict-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 10px;
    display: grid;
  }
}

.recipe-translation {
  background: linear-gradient(125deg, #f2f6ef, var(--paper) 75%);
  border: 1px solid #d5dfd3;
  border-radius: 16px;
  min-width: 0;
  margin: 0 0 18px;
  padding: 20px;
}

.recipe-translation .translation-heading {
  align-items: center;
  gap: 12px;
  margin: 0 0 20px;
  display: flex;
}

.translation-collapsible > summary.translation-heading {
  cursor: pointer;
  list-style: none;
}

.translation-collapsible > summary::-webkit-details-marker {
  display: none;
}

.translation-collapsible:not([open]) > .translation-heading {
  margin-bottom: 0;
}

.translation-collapsible > summary .summary-chevron {
  margin-left: auto;
}

.translation-collapsible[open] > summary .summary-chevron {
  transform: rotate(180deg);
}

.translation-collapsible > summary:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 5px;
  border-radius: 6px;
}

.translation-heading > div {
  min-width: 0;
}

.recipe-translation .translation-icon {
  width: 42px;
  height: 42px;
  color: var(--green);
  background: #e5eee0;
  border: 1px solid #d2dfce;
  border-radius: 12px;
  flex: 0 0 42px;
  place-items: center;
  display: grid;
}

.recipe-translation .translation-heading h3 {
  color: var(--ink);
  letter-spacing: -.02em;
  margin: 0;
  font-family: DM Sans, Arial, sans-serif;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
}

.recipe-translation .translation-heading p {
  color: var(--muted);
  margin: 4px 0 0;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.5;
}

.translation-controls {
  flex-wrap: wrap;
  align-items: end;
  gap: 10px;
  display: flex;
}

.recipe-translation .translation-controls label {
  color: #52655a;
  flex: 160px;
  gap: 8px;
  min-width: 0;
  margin: 0;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.4;
  display: grid;
}

.recipe-translation .translation-controls select {
  background: var(--paper);
  width: 100%;
  height: 44px;
  min-height: 44px;
  color: var(--ink);
  cursor: pointer;
  border: 1px solid #d3dbce;
  border-radius: 9px;
  margin: 0;
  padding: 10px 30px 10px 12px;
  font-size: 12px;
  font-weight: 500;
}

.translation-controls.translation-setup {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) auto;
  align-items: end;
  gap: 12px;
  display: grid;
}

.translation-setup.with-language-view {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.recipe-translation .translation-generate {
  min-height: 44px;
  box-shadow: none;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 11px 18px;
  display: inline-flex;
}

.recipe-translation .primary-button, .recipe-translation .secondary-button, .recipe-translation .danger-button {
  border-radius: 9px;
  min-height: 42px;
  padding: 10px 13px;
  font-size: 12px;
  line-height: 1.4;
}

.recipe-translation button:disabled {
  opacity: .45;
  cursor: not-allowed;
}

.translation-hint {
  color: var(--muted);
  margin: 12px 0 0;
  font-size: 11px;
  line-height: 1.6;
}

.recipe-translation .translation-privacy {
  color: #778276;
  border-top: 1px solid #e1e6dc;
  align-items: start;
  gap: 8px;
  margin: 16px 0 0;
  padding-top: 13px;
  font-size: 11px;
  line-height: 1.6;
  display: flex;
}

.translation-privacy > svg {
  flex: 0 0 15px;
  margin-top: 2px;
}

.translation-hint + .translation-controls {
  border-top: 1px solid var(--line);
  margin-top: 14px;
  padding-top: 14px;
}

.translation-status, .translation-error {
  background: var(--green-soft);
  color: var(--green);
  border-radius: 9px;
  margin: 14px 0 0;
  padding: 11px 13px;
  font-size: 12px;
  line-height: 1.6;
}

.translation-error {
  color: #9a412d;
  background: #fbebe5;
}

.translation-text-button {
  color: inherit;
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0;
  font-weight: 700;
  text-decoration: underline;
}

.translation-preview {
  border-top: 1px solid var(--line);
  margin-top: 18px;
  padding-top: 16px;
}

.translation-preview h2 {
  margin: 0 0 8px;
  font-family: DM Sans, Arial, sans-serif;
  font-size: 15px;
  font-weight: 700;
}

.translation-preview > p {
  color: var(--muted);
  margin: 8px 0;
  font-size: 12px;
  line-height: 1.5;
}

.translation-comparison {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 10px;
  max-height: 50vh;
  margin: 16px 0;
  overflow: auto;
}

.translation-field {
  border-bottom: 1px solid var(--line);
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  display: grid;
}

.translation-field:last-child {
  border-bottom: 0;
}

.translation-field > div {
  min-width: 0;
  padding: 12px;
}

.translation-source {
  border-right: 1px solid var(--line);
  background: #f9f6ef;
}

.translation-field strong {
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
}

.translation-field p {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  margin: 7px 0 0;
  font-size: 13px;
  line-height: 1.6;
}

.translation-field textarea {
  width: 100%;
  min-height: 96px;
  color: var(--ink);
  background: var(--paper);
  font: inherit;
  resize: vertical;
  border: 1px solid var(--line);
  border-radius: 8px;
  margin-top: 7px;
  padding: 9px;
  font-size: 13px;
  line-height: 1.6;
}

.translation-mobile-toggle {
  display: none;
}

.translation-library {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 12px;
  margin-bottom: 20px;
}

.translation-library > summary {
  cursor: pointer;
  color: var(--green);
  padding: 13px 16px;
  font-size: 12px;
  font-weight: 700;
}

.translation-library > .recipe-translation {
  margin: 0 12px 12px;
}

.translation-saved-preview {
  padding: 0 20px 20px;
  font-size: 13px;
}

.translation-saved-preview h3 {
  margin: 8px 0 14px;
  font-family: Fraunces, Georgia, serif;
  font-size: 24px;
}

fieldset.recipe-translation legend {
  color: var(--green);
  padding: 0 5px;
  font-size: 12px;
  font-weight: 700;
}

@media (max-width: 600px) {
  .recipe-translation {
    padding: 14px;
  }

  .translation-controls label {
    flex-basis: calc(50% - 5px);
  }

  .translation-controls > button {
    flex: auto;
  }

  .translation-field {
    grid-template-columns: 1fr;
  }

  .translation-source {
    border-right: 0;
  }

  .translation-mobile-toggle {
    display: inline-block;
  }

  .translation-comparison.show-original .translation-target, .translation-comparison.show-translated .translation-source {
    display: none;
  }
}

@media (max-width: 460px) {
  .translation-controls.translation-setup {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }

  .translation-setup .translation-generate {
    grid-column: 1 / -1;
    width: 100%;
  }

  .translation-setup.with-language-view > label:first-child {
    grid-column: 1 / -1;
  }
}

.recipe-reading-language {
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: 0 0 20px;
  display: flex;
}

.recipe-shopping-language {
  border: 1px solid var(--line);
  border-radius: 12px;
  margin: 0 0 22px;
  padding: 12px 14px;
}

.recipe-shopping-language label {
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 600;
  display: flex;
}

.recipe-shopping-language select {
  border: 1px solid var(--line);
  background: var(--paper);
  max-width: 100%;
  color: inherit;
  font: inherit;
  border-radius: 8px;
  padding: 7px 10px;
}

.recipe-shopping-language p {
  color: var(--muted);
  margin: 7px 0 0;
  font-size: 12px;
  line-height: 1.5;
}

.recipe-language-options {
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  display: flex;
}

.recipe-language-options button {
  cursor: pointer;
  background: none;
  border: 1px solid #0000;
  border-radius: 11px;
  justify-content: center;
  align-items: center;
  min-height: 42px;
  transition: background .15s, border-color .15s;
  display: inline-flex;
  position: relative;
}

.recipe-language-options button:hover:not(:disabled) {
  background: #f0f3eb;
  border-color: #d6dfd1;
}

.recipe-language-options button[aria-pressed="true"] {
  background: var(--green-soft);
  border-color: #a9c3ad;
  box-shadow: 0 1px 3px #18392f0f;
}

.recipe-language-options .recipe-language-original {
  color: var(--green);
  gap: 6px;
  padding: 9px 11px;
  font-size: 11px;
  font-weight: 700;
}

.recipe-language-divider {
  background: var(--line);
  width: 1px;
  height: 22px;
  margin: 0 3px;
}

.recipe-language-flag {
  width: 46px;
  padding: 6px;
}

.recipe-language-flag > span:first-child {
  font-family: Twemoji Country Flags, Apple Color Emoji, Segoe UI Emoji, sans-serif;
  font-size: 25px;
  line-height: 1;
}

.recipe-language-options .recipe-language-check {
  border: 2px solid var(--paper);
  background: var(--green);
  color: #fff;
  border-radius: 50%;
  place-items: center;
  width: 15px;
  height: 15px;
  font-size: 9px;
  font-weight: 700;
  display: grid;
  position: absolute;
  bottom: -3px;
  right: -3px;
}

.recipe-language-options button:disabled {
  opacity: .35;
  cursor: not-allowed;
}

.recipe-language-name {
  color: var(--green);
  margin-left: 4px;
  font-size: 12px;
  font-weight: 600;
}

.recipe-reading-language > button {
  font-size: 12px;
}

.recipe-update-languages {
  align-items: center;
  gap: 7px;
  min-height: 42px;
  margin-left: auto;
  display: inline-flex;
}

.recipe-update-languages:disabled {
  opacity: .6;
  cursor: wait;
}

.editor-modal label.primary-translation-option {
  border: 1px solid var(--line);
  background: var(--green-soft);
  border-radius: 12px;
  align-items: flex-start;
  gap: 10px;
  padding: 14px;
  display: flex;
}

.editor-modal .primary-translation-option input[type="checkbox"] {
  width: 17px;
  height: 17px;
  accent-color: var(--green);
  flex-shrink: 0;
  margin: 2px 0 0;
}

.primary-translation-option > span > span {
  margin-top: 5px;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.5;
  display: block;
}

.onboarding-premium-launcher > div {
  display: none;
}

.app-shell[data-onboarding="active"] {
  padding-bottom: 240px;
}

.app-shell[data-onboarding="active"] .modal-backdrop {
  padding: 12px;
  bottom: 230px;
}

.app-shell[data-onboarding="active"] .editor-modal, .app-shell[data-onboarding="active"] .detail-modal, .app-shell[data-onboarding="active"] .import-modal, .app-shell[data-onboarding="active"] .share-modal {
  max-height: calc(100dvh - 260px);
}

.app-shell[data-onboarding="active"] .detail-modal-scroll {
  max-height: calc(100dvh - 310px);
}

@media (max-width: 600px) {
  .app-shell[data-onboarding="active"] .modal-backdrop {
    bottom: 280px;
  }

  .app-shell[data-onboarding="active"] .editor-modal, .app-shell[data-onboarding="active"] .detail-modal, .app-shell[data-onboarding="active"] .import-modal, .app-shell[data-onboarding="active"] .share-modal {
    max-height: calc(100dvh - 300px);
  }

  .app-shell[data-onboarding="active"] .detail-modal-scroll {
    max-height: calc(100dvh - 350px);
  }
}

.shopping-editor-modal {
  flex-direction: column;
  max-height: 92dvh;
  display: flex;
}

.shopping-editor-modal > .modal-header, .shopping-editor-modal > .modal-footer {
  flex: none;
}

.shopping-editor-modal > .shopping-editor-body {
  min-height: 0;
  overflow-y: auto;
}

.normalization-review {
  width: min(760px, 100vw - 32px);
  max-width: none;
  max-height: 90dvh;
  color: var(--ink);
  border: 0;
  margin: auto;
  padding: 0;
}

.normalization-review:not([open]) {
  display: none;
}

.normalization-review .modal-footer .secondary-button {
  display: inline-flex;
}

.normalization-review::backdrop {
  -webkit-backdrop-filter: blur(7px);
  backdrop-filter: blur(7px);
  background: #12221c94;
}

.shopping-conflict-row .item-copy small {
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.shopping-conflict-changed {
  border-left: 3px solid var(--green);
  background: #fff4df;
  padding: 3px 5px;
}

.normalization-review-body {
  min-height: 0;
  overflow-y: auto;
}

.normalization-review fieldset {
  gap: 12px;
  margin-bottom: 20px;
  display: grid;
}

.normalization-review fieldset label {
  align-items: center;
  gap: 10px;
  display: flex;
}

.normalization-review input[type="radio"] {
  width: auto;
}

.normalization-changes {
  padding-left: 24px;
}

.normalization-changes li {
  border-bottom: 1px solid var(--border, #ddd);
  padding: 10px 0;
}

.normalization-changes strong, .normalization-changes del, .normalization-changes ins {
  overflow-wrap: anywhere;
  display: block;
}

.normalization-changes del {
  opacity: .65;
}

.normalization-changes ins {
  color: var(--green, #255d48);
  text-decoration: none;
}

.shopping-ingredient-note {
  text-overflow: ellipsis;
  white-space: nowrap;
  opacity: .8;
  min-width: 0;
  max-width: 100%;
  font-size: .8em;
  display: block;
  overflow: hidden;
}

.shopping-editor-body input::placeholder {
  color: #67756c;
  opacity: 1;
  font-weight: 400;
}

.shopping-editor-body input:focus-visible {
  border-color: #799e8a;
  box-shadow: 0 0 0 3px #1f5a461f;
}

.shopping-entry-hint {
  color: #67756c;
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.5;
}

.shopping-parse-review {
  background: #fff8eb;
  border: 1px solid #e8d5ae;
  border-radius: 12px;
  margin-top: 14px;
  padding: 14px;
}

.shopping-parse-message {
  align-items: flex-start;
  gap: 10px;
  display: flex;
}

.shopping-parse-icon {
  color: #986013;
  background: #f9ebca;
  border-radius: 8px;
  flex: 0 0 30px;
  place-items: center;
  height: 30px;
  display: grid;
}

.shopping-parse-icon svg {
  width: 18px;
  height: 18px;
}

.shopping-parse-copy {
  min-width: 0;
}

.shopping-parse-copy strong {
  color: #754b13;
  font-size: 13px;
  line-height: 1.5;
  display: block;
}

.shopping-parse-copy p {
  color: #786343;
  overflow-wrap: anywhere;
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1.6;
}

.shopping-parse-actions {
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0 0 40px;
  display: flex;
}

.shopping-parse-actions button {
  text-align: left;
  cursor: pointer;
  border: 1px solid #d7be8e;
  border-radius: 8px;
  max-width: 100%;
  min-height: 36px;
  padding: 8px 12px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.4;
  transition: background .15s, border-color .15s;
}

.shopping-parse-keep {
  color: #754b13;
  background: #fffdf8;
}

.shopping-parse-keep:hover {
  background: #f9edda;
  border-color: #b88b43;
}

.shopping-parse-actions .shopping-parse-accept {
  border-color: var(--green);
  color: #fff;
  background: var(--green);
}

.shopping-parse-accept:hover {
  background: #174b3a;
}

.shopping-parse-actions button:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 3px;
}

@media (max-width: 600px) {
  .shopping-parse-actions {
    margin-left: 0;
  }

  .shopping-parse-actions button {
    min-height: 40px;
  }
}

@property --tw-rotate-x {
  syntax: "*";
  inherits: false
}

@property --tw-rotate-y {
  syntax: "*";
  inherits: false
}

@property --tw-rotate-z {
  syntax: "*";
  inherits: false
}

@property --tw-skew-x {
  syntax: "*";
  inherits: false
}

@property --tw-skew-y {
  syntax: "*";
  inherits: false
}

@property --tw-leading {
  syntax: "*";
  inherits: false
}

@property --tw-font-weight {
  syntax: "*";
  inherits: false
}

@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}

@property --tw-shadow-color {
  syntax: "*";
  inherits: false
}

@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}

@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}

@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false
}

@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}

@property --tw-ring-color {
  syntax: "*";
  inherits: false
}

@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}

@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false
}

@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}

@property --tw-ring-inset {
  syntax: "*";
  inherits: false
}

@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0;
}

@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}

@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}

@property --tw-blur {
  syntax: "*";
  inherits: false
}

@property --tw-brightness {
  syntax: "*";
  inherits: false
}

@property --tw-contrast {
  syntax: "*";
  inherits: false
}

@property --tw-grayscale {
  syntax: "*";
  inherits: false
}

@property --tw-hue-rotate {
  syntax: "*";
  inherits: false
}

@property --tw-invert {
  syntax: "*";
  inherits: false
}

@property --tw-opacity {
  syntax: "*";
  inherits: false
}

@property --tw-saturate {
  syntax: "*";
  inherits: false
}

@property --tw-sepia {
  syntax: "*";
  inherits: false
}

@property --tw-drop-shadow {
  syntax: "*";
  inherits: false
}

@property --tw-drop-shadow-color {
  syntax: "*";
  inherits: false
}

@property --tw-drop-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}

@property --tw-drop-shadow-size {
  syntax: "*";
  inherits: false
}

/*# sourceMappingURL=app_globals_0jn8.0u.css.map*/