* { box-sizing: border-box; }
body { font-family: -apple-system, system-ui, sans-serif; margin: 0; background: #f6f5f2; color: #1a1a18; }
.wrap { max-width: 480px; margin: 0 auto; padding: 16px; }
.wrap.wide { max-width: 860px; }
.wrap.narrow { max-width: 360px; padding-top: 15vh; }
h1 { font-size: 22px; margin: 12px 0; }
h2 { font-size: 17px; margin: 22px 0 8px; }
.sub { color: #6b6a64; font-size: 13px; }
.small { font-size: 12px; }
.error { color: #a32d2d; font-size: 14px; }
.status { background: #e1f5ee; color: #085041; padding: 10px 14px; border-radius: 8px; font-size: 14px; margin: 10px 0; }
.row { display: flex; align-items: center; }
.row.between { justify-content: space-between; }
.row.gap { gap: 10px; }
.wrap-row { flex-wrap: wrap; }
.grow { flex: 1; }
.right { text-align: right; }
.top-gap { margin-top: 10px; }
.stack { display: flex; flex-direction: column; gap: 14px; margin-top: 12px; }
label { font-size: 14px; display: flex; flex-direction: column; gap: 4px; }
input, select { font-size: 16px; padding: 12px; border: 1px solid #d4d2ca; border-radius: 8px; background: #fff; width: 100%; }
.btn { font-size: 15px; padding: 10px 16px; border: 1px solid #c9c7bf; border-radius: 8px; background: #fff; cursor: pointer; text-decoration: none; color: inherit; display: inline-block; text-align: center; }
.btn.primary { background: #1a1a18; color: #fff; border-color: #1a1a18; }
.btn.danger { background: #fcebeb; color: #791f1f; border-color: #f0c1c1; }
.btn.ghost { border: none; background: none; color: #6b6a64; }
.btn.big { font-size: 18px; padding: 20px; width: 100%; border-radius: 12px; }
.btn.camera { margin: 24px 0; }
.btn:disabled { opacity: .6; }
.list { list-style: none; padding: 0; margin: 0; }
.list li { padding: 12px 0; border-bottom: 1px solid #e5e3db; font-size: 14px; }
.badge { display: inline-block; font-size: 12px; padding: 2px 8px; border-radius: 10px; background: #ecebe5; }
.badge.posted { background: #e1f5ee; color: #085041; }
.badge.needs_review { background: #faeeda; color: #633806; }
.badge.rejected, .badge.failed { background: #fcebeb; color: #791f1f; }
.card { background: #fff; border: 1px solid #e5e3db; border-radius: 12px; padding: 14px; margin: 12px 0; }
.receipt-thumb { max-width: 100%; max-height: 220px; border-radius: 8px; border: 1px solid #e5e3db; margin: 8px 0; }
.receipt-mini { width: 84px; height: 84px; object-fit: cover; border-radius: 8px; border: 1px solid #e5e3db; }
a { color: #185fa5; }
