html, body { height: 100%; }
#app { min-height: 100vh; }

.safe-top { padding-top: env(safe-area-inset-top); }
.safe-bottom { padding-bottom: env(safe-area-inset-bottom); }
.safe-bottom-fab { margin-bottom: env(safe-area-inset-bottom); }

.input {
  width: 100%;
  padding: 0.65rem 0.9rem;
  border-radius: 0.75rem;
  background: rgb(241 245 249);
  border: 1px solid transparent;
  font-size: 0.95rem;
  outline: none;
}
.input:focus { border-color: #10b981; background: white; }
html.dark .input { background: rgb(30 41 59); color: white; }
html.dark .input:focus { background: rgb(15 23 42); border-color: #10b981; }

.counter-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: rgb(248 250 252);
  border-radius: 0.75rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.85rem;
}
html.dark .counter-row { background: rgb(30 41 59); }
.counter-row em { font-style: normal; color: rgb(148 163 184); font-size: 0.75rem; }

.counter { display: flex; align-items: center; gap: 0.6rem; }
.counter button {
  width: 2rem; height: 2rem;
  border-radius: 9999px;
  background: rgb(226 232 240);
  font-weight: 700;
  font-size: 1.1rem;
  line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.counter button:active { transform: scale(0.9); }
html.dark .counter button { background: rgb(51 65 85); color: white; }
.counter span { min-width: 1.4rem; text-align: center; font-weight: 700; }

.fade-enter-active, .fade-leave-active { transition: opacity 0.25s ease; }
.fade-enter-from, .fade-leave-to { opacity: 0; }

::-webkit-scrollbar { height: 6px; width: 6px; }
::-webkit-scrollbar-thumb { background: rgba(148,163,184,0.5); border-radius: 3px; }

table { border-collapse: collapse; }
