.form-chip-qty-input{
  /* Slightly wider so 00.00 is not clipped */
  width: 64px;
  max-width: 72px;
  min-width: 56px;
  display: inline-block;
  margin: 0 6px;
  padding: 2px 6px;
  font-size: 0.85em;
  text-align: right;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 4px;
}

/* Dirty visual for per-person amount inputs */
.form-chip-qty-input.dirty:not(.is-invalid),
.form-chip-qty-input.is-dirty:not(.is-invalid) {
  border-color: var(--dirty-accent, #d97706);
  box-shadow: inset 4px 0 0 0 var(--dirty-accent, #d97706);
  background:#fff;
  color:#111827;
}
.form-chip-unit{
  margin-right: 6px;
  color: var(--color-text-secondary, #666);
  font-size: 0.85em;
}
/* Menu Plan Component Styles */

/* Main container styles - Mobile First */
.menuplan-container{
  display: flex;
  width: 100%;
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.menuplan-wrapper{
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  border-radius: 0.5rem;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
  padding: 1rem;
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.menuplan-wrapper:is(.dark *){
  --tw-bg-opacity: 1;
  background-color: rgb(55 65 81 / var(--tw-bg-opacity));
}

.menuplan-wrapper {
  /* Mobile first: smaller padding, full width */
}

/* Larger screens */
@media (min-width: 640px) {
  .menuplan-container{
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    padding-top: 1rem;
    padding-bottom: 1rem;
  }
  
  .menuplan-wrapper{
    max-width: 48rem;
    padding: 1.5rem;
  }
}

@media (min-width: 768px) {
  .menuplan-wrapper{
    max-width: 56rem;
    padding: 2rem;
  }
}

/* Login section styles - Mobile First */
.menuplan-login{
  margin-bottom: 1.5rem;
  display: flex;
  width: 100%;
  flex-direction: column;
}

.menuplan-login-text{
  margin-top: 0.25rem;
  margin-bottom: 1rem;
  display: block;
  width: 100%;
  font-size: 0.875rem;
  line-height: 1.25rem;
  font-weight: 400;
  --tw-text-opacity: 1;
  color: rgb(107 114 128 / var(--tw-text-opacity));
}

.menuplan-login-text:hover{
  --tw-text-opacity: 1;
  color: rgb(75 85 99 / var(--tw-text-opacity));
}

.menuplan-login-text:is(.dark *){
  --tw-text-opacity: 1;
  color: rgb(156 163 175 / var(--tw-text-opacity));
}

.menuplan-login-text {
  line-height: 1.5;
}

.menuplan-access-input{
  margin-bottom: 1rem;
  width: 100%;
  border-radius: 0.5rem;
  border-width: 1px;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  padding-left: 1rem;
  padding-right: 1rem;
  font-size: 1rem;
  line-height: 1.5rem;
  --tw-text-opacity: 1;
  color: rgb(31 41 55 / var(--tw-text-opacity));
  min-height: 44px; /* iOS recommended touch target */
  border-color: #d1d5db;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.menuplan-access-input:focus{
  --tw-border-opacity: 1;
  border-color: rgb(59 130 246 / var(--tw-border-opacity));
  outline: 2px solid transparent;
  outline-offset: 2px;
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
}

.menuplan-submit-button{
  margin-left: auto;
  margin-right: auto;
  display: block;
  width: 100%;
  border-radius: 0.5rem;
  --tw-bg-opacity: 1;
  background-color: rgb(22 163 74 / var(--tw-bg-opacity));
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  font-size: 1rem;
  line-height: 1.5rem;
  font-weight: 600;
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity));
}

.menuplan-submit-button:hover{
  --tw-bg-opacity: 1;
  background-color: rgb(37 99 235 / var(--tw-bg-opacity));
}

.menuplan-submit-button {
  min-height: 44px;
  transition: background-color 0.2s ease;
}

/* Larger screens */
@media (min-width: 640px) {
  .menuplan-login-text{
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
  
  .menuplan-access-input{
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
    padding-left: 0.75rem;
    padding-right: 0.75rem;
    font-size: 0.875rem;
    line-height: 1.25rem;
    min-height: auto;
  }
  
  .menuplan-submit-button{
    width: auto;
    padding-top: 1rem;
    padding-bottom: 1rem;
    padding-left: 2rem;
    padding-right: 2rem;
    font-size: 1.125rem;
    line-height: 1.75rem;
  }
}

/* Alert styles - Mobile First */
.menuplan-alert{
  margin-top: 0.75rem;
  display: none;
  border-radius: 0.5rem;
  padding: 1rem;
  font-size: 0.875rem;
  line-height: 1.25rem;
  border-width: 1px;
  line-height: 1.5;
}

.menuplan-alert.show{
  display: block;
}

.menuplan-alert.error{
  --tw-border-opacity: 1;
  border-color: rgb(252 165 165 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(254 226 226 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(153 27 27 / var(--tw-text-opacity));
}

.menuplan-alert.error:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(220 38 38 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(127 29 29 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(252 165 165 / var(--tw-text-opacity));
}

.menuplan-alert.success{
  --tw-border-opacity: 1;
  border-color: rgb(134 239 172 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(220 252 231 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(22 101 52 / var(--tw-text-opacity));
}

.menuplan-alert.success:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(22 163 74 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(20 83 45 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(134 239 172 / var(--tw-text-opacity));
}

.menuplan-alert.warning{
  --tw-border-opacity: 1;
  border-color: rgb(253 224 71 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(254 249 195 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(133 77 14 / var(--tw-text-opacity));
}

.menuplan-alert.warning:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(202 138 4 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(113 63 18 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(253 224 71 / var(--tw-text-opacity));
}

.menuplan-alert.info{
  --tw-border-opacity: 1;
  border-color: rgb(147 197 253 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(219 234 254 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(30 64 175 / var(--tw-text-opacity));
}

.menuplan-alert.info:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(37 99 235 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(30 58 138 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(147 197 253 / var(--tw-text-opacity));
}

/* Default alert styling */
.menuplan-alert:not(.error):not(.success):not(.warning):not(.info){
  --tw-border-opacity: 1;
  border-color: rgb(147 197 253 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(219 234 254 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(30 64 175 / var(--tw-text-opacity));
}
.menuplan-alert:not(.error):not(.success):not(.warning):not(.info):is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(37 99 235 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(30 58 138 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(147 197 253 / var(--tw-text-opacity));
}

/* Larger screens */
@media (min-width: 640px) {
  .menuplan-alert{
    margin-top: 0.5rem;
    padding: 0.75rem;
    font-size: 0.75rem;
    line-height: 1rem;
  }
}

/* Inline alert inside a meal card */
.meal-card-alert{
  margin-top: 0.5rem;
  border-radius: 0.25rem;
  padding: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.25rem;
  border-left-width: 4px;
}

.meal-card-alert.warning{
  --tw-border-opacity: 1;
  border-color: rgb(250 204 21 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(254 249 195 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(133 77 14 / var(--tw-text-opacity));
}

.meal-card-alert.warning:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(202 138 4 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(113 63 18 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(254 240 138 / var(--tw-text-opacity));
}

.meal-card-alert.error{
  --tw-border-opacity: 1;
  border-color: rgb(248 113 113 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(254 226 226 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(153 27 27 / var(--tw-text-opacity));
}

.meal-card-alert.error:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(220 38 38 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(127 29 29 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(254 202 202 / var(--tw-text-opacity));
}

.meal-card-alert.success{
  --tw-border-opacity: 1;
  border-color: rgb(74 222 128 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(220 252 231 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(22 101 52 / var(--tw-text-opacity));
}

.meal-card-alert.success:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(22 163 74 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(20 83 45 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(187 247 208 / var(--tw-text-opacity));
}

.meal-card-alert.info{
  --tw-border-opacity: 1;
  border-color: rgb(96 165 250 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(219 234 254 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(30 64 175 / var(--tw-text-opacity));
}

.meal-card-alert.info:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(37 99 235 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(30 58 138 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(191 219 254 / var(--tw-text-opacity));
}

/* Loading states and spinners */
.menuplan-loading{
  margin-top: 0.5rem;
  display: none;
  border-radius: 0.25rem;
  border-width: 1px;
  --tw-border-opacity: 1;
  border-color: rgb(147 197 253 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(239 246 255 / var(--tw-bg-opacity));
  padding: 0.75rem;
  --tw-text-opacity: 1;
  color: rgb(30 64 175 / var(--tw-text-opacity));
}
.menuplan-loading:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(37 99 235 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(30 58 138 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(147 197 253 / var(--tw-text-opacity));
}

.menuplan-loading.show{
  display: flex;
  align-items: center;
}

.menuplan-spinner{
  margin-right: 0.5rem;
  display: inline-block;
  height: 1rem;
  width: 1rem;
}

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

.menuplan-spinner{
  animation: spin 1s linear infinite;
  border-radius: 9999px;
  border-width: 2px;
  --tw-border-opacity: 1;
  border-color: rgb(37 99 235 / var(--tw-border-opacity));
  border-top-color: transparent;
}

.menuplan-spinner:is(.dark *){
  --tw-border-opacity: 1;
  border-color: rgb(147 197 253 / var(--tw-border-opacity));
}

/* Button loading states */
.menuplan-submit-button:disabled{
  cursor: not-allowed;
  opacity: 0.6;
}

.menuplan-submit-button.loading{
  position: relative;
  overflow: hidden;
}

.menuplan-submit-button.loading::after {
  content: '';
  position: absolute;
  inset: 0px;
}

@keyframes pulse{
  50%{
    opacity: .5;
  }
}

.menuplan-submit-button.loading::after{
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
  background-color: rgb(37 99 235 / var(--tw-bg-opacity));
  --tw-bg-opacity: 0.2;
}

/* Main menuplan section styles - Mobile First */
.menuplan-main{
  display: none;
}

.menuplan-main.show{
  display: block;
}

/* Dark mode specific adjustments - switched to class-based .dark for manual toggle */
.dark .menuplan-access-input{
  --tw-border-opacity: 1;
  border-color: rgb(75 85 99 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(31 41 55 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.dark .menuplan-access-input:focus{
  --tw-border-opacity: 1;
  border-color: rgb(96 165 250 / var(--tw-border-opacity));
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(96 165 250 / var(--tw-ring-opacity));
}

/* Touch-friendly enhancements for mobile */
@media (hover: none) and (pointer: coarse) {
  .menuplan-submit-button {
    min-height: 48px; /* Larger touch target on mobile */
  }
  
  .menuplan-access-input {
    min-height: 48px;
  }
}

/* High contrast mode support */
@media (prefers-contrast: high) {
  .menuplan-access-input {
    border-width: 2px;
  }
  
  .menuplan-submit-button {
    border: 2px solid currentColor;
  }
}

