*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg: #f8f9fa;
  --surface: #ffffff;
  --border: #e2e8f0;
  --text: #1a202c;
  --text-muted: #64748b;
  --primary: #3b82f6;
  --primary-hover: #2563eb;
  --danger: #ef4444;
  --success: #22c55e;
  --radius: 10px;
  --shadow: 0 1px 3px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.6;
  min-height: 100vh;
}

/* Nav */
.nav {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  padding: 0 1.5rem;
  height: 56px;
  gap: 2rem;
  position: sticky;
  top: 0;
  z-index: 100;
}
.nav-brand a { font-weight: 700; font-size: 1.25rem; color: var(--primary); text-decoration: none; }
.nav-links { display: flex; gap: 1.5rem; flex: 1; }
.nav-links a { color: var(--text-muted); text-decoration: none; font-size: .9rem; }
.nav-links a:hover { color: var(--text); }
.nav-user { display: flex; align-items: center; gap: 1rem; font-size: .9rem; color: var(--text-muted); }

/* Container */
.container { max-width: 1400px; margin: 0 auto; padding: 2rem 1.5rem; }

/* Auth */
.auth-card {
  max-width: 420px;
  margin: 5vh auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 2.5rem;
  box-shadow: var(--shadow);
}
.auth-card h1 { font-size: 1.6rem; margin-bottom: .25rem; }
.subtitle { color: var(--text-muted); margin-bottom: 1.75rem; }
.auth-alt { margin-top: 1.25rem; text-align: center; font-size: .9rem; color: var(--text-muted); }
.auth-alt a { color: var(--primary); text-decoration: none; }

/* Form fields */
.field { margin-bottom: 1.1rem; }
.field label { display: block; font-size: .875rem; font-weight: 500; margin-bottom: .35rem; }
.field input, .field select, .field textarea {
  width: 100%;
  padding: .6rem .8rem;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: .95rem;
  background: var(--bg);
  color: var(--text);
  transition: border-color .15s;
}
.field input:focus, .field select:focus { outline: none; border-color: var(--primary); background: var(--surface); }

/* Buttons */
.btn {
  display: inline-block;
  padding: .65rem 1.25rem;
  border-radius: 6px;
  font-size: .95rem;
  font-weight: 500;
  border: none;
  cursor: pointer;
  text-decoration: none;
  transition: background .15s;
}
.btn-primary { background: var(--primary); color: #fff; width: 100%; text-align: center; }
.btn-primary:hover { background: var(--primary-hover); }
.btn-link { background: none; border: none; color: var(--primary); cursor: pointer; font-size: inherit; padding: 0; }

/* Alerts */
.alert { padding: .75rem 1rem; border-radius: 6px; margin-bottom: 1rem; font-size: .9rem; }
.alert-error { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }
.alert-success { background: #dcfce7; color: #166534; border: 1px solid #86efac; }

/* Page header */
.page-header { margin-bottom: 2rem; }
.page-header h1 { font-size: 1.75rem; }

/* Card grid */
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1.25rem; }
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.75rem 1.5rem;
  text-decoration: none;
  color: var(--text);
  box-shadow: var(--shadow);
  transition: box-shadow .15s, transform .15s;
}
.card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.12); transform: translateY(-2px); }
.card-icon { font-size: 2rem; margin-bottom: .75rem; }
.card h2 { font-size: 1.1rem; margin-bottom: .25rem; }
.card p { font-size: .875rem; color: var(--text-muted); }

/* Vitals */
.vitals-grid { display: flex; flex-direction: column; gap: 2rem; }
.vitals-section { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.75rem; box-shadow: var(--shadow); }
.vitals-section h2 { font-size: 1.1rem; margin-bottom: 1rem; }

.inline-form { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: 1.25rem; }
.inline-form input, .inline-form select { padding: .5rem .7rem; border: 1px solid var(--border); border-radius: 6px; font-size: .875rem; background: var(--bg); color: var(--text); }
.inline-form input:focus, .inline-form select:focus { outline: none; border-color: var(--primary); }
.inline-form .sep { color: var(--text-muted); font-size: 1.1rem; }
.btn-sm { padding: .5rem 1rem !important; width: auto !important; }

.log-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.log-table th { text-align: left; padding: .5rem .75rem; color: var(--text-muted); font-weight: 500; border-bottom: 1px solid var(--border); }
.log-table td { padding: .6rem .75rem; border-bottom: 1px solid var(--border); }
.log-table tr:last-child td { border-bottom: none; }
.log-table tr:hover td { background: var(--bg); }
.muted { color: var(--text-muted); }

.btn-delete { background: none; border: none; color: #cbd5e1; cursor: pointer; font-size: .875rem; padding: .25rem .5rem; border-radius: 4px; }
.btn-delete:hover { color: var(--danger); background: #fee2e2; }

.empty { color: var(--text-muted); font-size: .9rem; font-style: italic; }

/* ── Vitals redesign ──────────────────────────────────────────────────── */
.vitals-page { max-width: 100%; }
.vitals-header { margin-bottom: 1.5rem; }
.vitals-header h1 { font-size: 1.75rem; }

/* Tabs */
.tab-bar { display: flex; gap: .5rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
.tab-btn { background: var(--surface); border: 1px solid var(--border); border-radius: 8px;
  padding: .6rem 1.2rem; font-size: .95rem; cursor: pointer; color: var(--text-muted);
  transition: all .15s; }
.tab-btn:hover { border-color: var(--primary); color: var(--primary); }
.tab-btn.active { background: var(--primary); border-color: var(--primary); color: #fff; }

/* Tab panels */
.tab-panel { display: none; }
.tab-panel.active { display: block; }

/* Panel top row */
.panel-top { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.25rem; flex-wrap: wrap; }
.quick-add { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; flex: 1; }
.quick-add input, .quick-add select {
  padding: .55rem .75rem; border: 1px solid var(--border); border-radius: 6px;
  font-size: .9rem; background: var(--bg); color: var(--text); }
.quick-add input:focus, .quick-add select:focus { outline: none; border-color: var(--primary); }
.btn-outline { background: var(--surface); border: 1px solid var(--border); color: var(--text);
  border-radius: 6px; padding: .55rem 1rem; font-size: .9rem; cursor: pointer;
  white-space: nowrap; transition: all .15s; }
.btn-outline:hover { border-color: var(--primary); color: var(--primary); }

/* Chart area */
.chart-container { background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1.5rem; box-shadow: var(--shadow); }
.range-btns { display: flex; gap: .4rem; margin-bottom: 1rem; }
.range-btn { background: var(--bg); border: 1px solid var(--border); border-radius: 6px;
  padding: .3rem .75rem; font-size: .8rem; cursor: pointer; color: var(--text-muted);
  transition: all .15s; }
.range-btn:hover { border-color: var(--primary); color: var(--primary); }
.range-btn.active { background: var(--primary); border-color: var(--primary); color: #fff; }
.chart-empty { color: var(--text-muted); font-style: italic; text-align: center;
  padding: 3rem; font-size: .95rem; }
canvas { max-height: 380px; }

/* Drawer */
.overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 200; }
.overlay.open { display: block; }
.drawer { position: fixed; top: 0; right: -520px; width: 500px; max-width: 95vw; height: 100vh;
  background: var(--surface); box-shadow: -4px 0 20px rgba(0,0,0,.15); z-index: 201;
  transition: right .25s ease; display: flex; flex-direction: column; }
.drawer.open { right: 0; }
.drawer-header { display: flex; align-items: center; justify-content: space-between;
  padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--border); }
.drawer-header h3 { font-size: 1.1rem; }
.drawer-close { background: none; border: none; font-size: 1.25rem; cursor: pointer;
  color: var(--text-muted); padding: .25rem .5rem; border-radius: 4px; }
.drawer-close:hover { background: var(--bg); color: var(--text); }
.drawer-body { flex: 1; overflow-y: auto; padding: 1.25rem 1.5rem; }

/* Exercise breakdown charts */
.chart-breakdown { margin-top: 1.5rem; display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.25rem; }
.breakdown-chart-wrap { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; }
.breakdown-title { font-size: .85rem; font-weight: 600; color: var(--text); margin-bottom: .75rem; padding-left: .6rem; }

/* Family */
.empty-state { text-align:center; padding:4rem 2rem; }
.empty-icon { font-size:3.5rem; margin-bottom:1rem; }
.empty-state h2 { font-size:1.4rem; margin-bottom:.5rem; }
.empty-state p { color:var(--text-muted); margin-bottom:1.5rem; }
.create-family-form { display:flex; gap:.75rem; justify-content:center; flex-wrap:wrap; }
.create-family-form input { padding:.65rem .9rem; border:1px solid var(--border); border-radius:6px; font-size:.95rem; min-width:280px; }

.family-layout { display:grid; grid-template-columns:1fr 1fr; gap:1.5rem; }
@media(max-width:700px){ .family-layout { grid-template-columns:1fr; } }

.card-section { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:1.75rem; box-shadow:var(--shadow); }
.section-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:1.25rem; }
.card-section h2 { font-size:1.05rem; margin-bottom:1rem; }
.card-section h3 { font-size:.95rem; }

.member-list { display:flex; flex-direction:column; gap:.75rem; }
.member-row { display:flex; align-items:center; gap:.9rem; padding:.6rem 0; border-bottom:1px solid var(--border); }
.member-row:last-child { border-bottom:none; }
.member-avatar { width:38px; height:38px; border-radius:50%; background:var(--primary); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:1rem; flex-shrink:0; }
.member-name { font-weight:500; font-size:.95rem; display:flex; align-items:center; gap:.4rem; }
.member-email { font-size:.8rem; }
.badge { background:#e0e7ff; color:#3730a3; font-size:.7rem; padding:.15rem .45rem; border-radius:4px; font-weight:600; }
.badge-you { background:#dcfce7; color:#166534; }

.invite-link-box { background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:1rem; margin-top:1rem; }
.invite-link-row { display:flex; gap:.5rem; margin-top:.5rem; }
.invite-link-row input { flex:1; font-size:.8rem; padding:.5rem .7rem; border:1px solid var(--border); border-radius:6px; background:var(--surface); color:var(--text-muted); }

.pending-invite-row { display:flex; justify-content:space-between; align-items:center; padding:.5rem 0; border-bottom:1px solid var(--border); font-size:.875rem; }
.pending-invite-row:last-child { border-bottom:none; }

/* ── Competitions ─────────────────────────────── */
.page-header { display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem }
.page-header h1 { margin:0 }

.comp-list { display:flex;flex-direction:column;gap:1rem }
.comp-card { display:block;background:#fff;border-radius:12px;padding:1.25rem 1.5rem;
  text-decoration:none;color:inherit;box-shadow:0 1px 4px rgba(0,0,0,.08);
  transition:box-shadow .15s }
.comp-card:hover { box-shadow:0 4px 12px rgba(0,0,0,.12) }
.comp-card h2 { margin:.25rem 0 .5rem;font-size:1.15rem }
.comp-card-header { display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem }
.comp-theme-badge { font-size:.8rem;font-weight:600;color:#64748b }
.comp-dates { font-size:.8rem;color:#94a3b8 }
.comp-meta { font-size:.85rem;color:#64748b;display:flex;gap:.5rem;align-items:center }
.badge-ended { background:#f1f5f9;color:#64748b;padding:.15rem .5rem;border-radius:999px;font-size:.75rem }

/* Detail page */
.comp-detail-header { display:flex;align-items:flex-start;justify-content:space-between;
  padding-bottom:1rem;margin-bottom:1.25rem }
.comp-detail-header h1 { margin:.25rem 0 .25rem }
.comp-columns { display:grid;grid-template-columns:320px 1fr;gap:2rem;margin-top:1rem }
@media(max-width:768px){ .comp-columns { grid-template-columns:1fr } }

/* Leaderboard */
.comp-leaderboard h2 { margin-top:0 }
.lb-row { display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;
  background:#fff;border-radius:10px;margin-bottom:.5rem;
  box-shadow:0 1px 3px rgba(0,0,0,.07) }
.lb-row-you { border:2px solid #3b82f6 }
.lb-rank { font-size:1.1rem;font-weight:700;color:#94a3b8;min-width:1.5rem }
.lb-info { flex:1 }
.lb-name { display:block;font-weight:600 }
.lb-title { display:block;font-size:.8rem;font-weight:600 }
.lb-delta { font-weight:700;font-size:.95rem }
.delta-pos { color:#16a34a }
.delta-neg { color:#dc2626 }
.delta-zero { color:#94a3b8 }
.badge-missed { background:#fef2f2;color:#dc2626;padding:.15rem .5rem;border-radius:999px;font-size:.78rem }

/* Feed */
.comp-feed h2 { margin-top:0 }
.feed-compose { display:flex;gap:.5rem;margin-bottom:1rem }
.feed-posts { display:flex;flex-direction:column;gap:.75rem }
.feed-post { background:#fff;border-radius:10px;padding:.875rem 1rem;box-shadow:0 1px 3px rgba(0,0,0,.07) }
.feed-post-checkin { border-left:3px solid #3b82f6 }
.feed-post-shared_exercise { border-left:3px solid #10b981 }
.feed-post-shared_steps { border-left:3px solid #f59e0b }
.feed-post-message { border-left:3px solid #e2e8f0 }
.feed-post-header { display:flex;justify-content:space-between;margin-bottom:.35rem }
.feed-poster { font-weight:600;font-size:.9rem }
.feed-time { font-size:.78rem;color:#94a3b8 }
.feed-body { font-size:.95rem;margin-bottom:.5rem }
.feed-reactions { display:flex;flex-wrap:wrap;gap:.35rem }
.reaction-btn { background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;
  padding:.2rem .55rem;cursor:pointer;font-size:.85rem;transition:background .1s }
.reaction-btn:hover { background:#e2e8f0 }
.reaction-btn.reacted { background:#dbeafe;border-color:#93c5fd }

/* Create form */
.theme-grid { display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.5rem }
.theme-option { cursor:pointer }
.theme-option input { display:none }
.theme-card { display:flex;flex-direction:column;gap:.6rem;padding:.875rem;border-radius:10px;
  border:2px solid #e2e8f0;cursor:pointer;transition:border-color .15s,box-shadow .15s;background:#fff }
.theme-option input:checked + .theme-card { border-color:var(--theme-color);box-shadow:0 0 0 3px rgba(0,0,0,.06) }
.theme-card-top { display:flex;align-items:center;gap:.5rem }
.theme-emoji { font-size:1.5rem;line-height:1 }
.theme-label { font-weight:600;font-size:.9rem }
.theme-titles { display:flex;flex-direction:column;gap:.25rem }
.theme-title-badge { font-size:.75rem;padding:.15rem .45rem;border-radius:999px;background:#f1f5f9;color:#64748b;display:inline-block }
.theme-title-badge.last { background:#fef2f2;color:#dc2626 }
.field-row { display:grid;grid-template-columns:1fr 1fr;gap:1rem }
.radio-group { display:flex;flex-direction:column;gap:.5rem;margin-top:.35rem }
.radio-option { display:flex;align-items:flex-start;gap:.5rem;cursor:pointer }
.checkbox-field label { display:flex;align-items:center;gap:.5rem;cursor:pointer }

/* Invite panel */
.invite-panel { background:#f8fafc;border-radius:10px;padding:1rem 1.25rem;margin:1rem 0 }
.invite-panel h3 { margin:0 0 .75rem }
.invite-panel.hidden { display:none }
.pending-invite-row { display:flex;align-items:center;justify-content:space-between;
  padding:.4rem 0;font-size:.9rem;border-bottom:1px solid #e2e8f0 }
.btn-link-danger { background:none;border:none;color:#dc2626;cursor:pointer;font-size:.85rem;padding:0 }

/* Alert */
.alert-warning { background:#fffbeb;border:1px solid #fcd34d;color:#92400e;
  padding:.75rem 1rem;border-radius:8px }
.btn-sm { padding:.35rem .85rem;font-size:.875rem }

/* checkbox fix */
.checkbox-label { display:flex;align-items:center;gap:.6rem;cursor:pointer;font-size:.95rem }
.checkbox-label input[type=checkbox] { width:1rem;height:1rem;flex-shrink:0;cursor:pointer }

/* awards box */
.awards-box { background:#fafaf7;border:1px solid #e9e5d0;border-radius:10px;padding:1rem 1.25rem;margin-top:1.25rem }
.awards-title { font-weight:700;font-size:.9rem;margin-bottom:.75rem;color:#92400e }
.awards-list { display:flex;flex-direction:column;gap:.45rem }
.award-item { display:flex;align-items:flex-start;gap:.5rem;font-size:.875rem;color:#374151 }
.award-item span { line-height:1.4 }

/* theme info button */
.btn-info-trigger { background:none;border:1px solid #e2e8f0;border-radius:6px;
  padding:.25rem .6rem;font-size:.8rem;cursor:pointer;color:#64748b }
.btn-info-trigger:hover { background:#f8fafc }

/* modal */
.modal-backdrop { position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;
  display:flex;align-items:center;justify-content:center;padding:1rem }
.modal-backdrop.hidden { display:none }
.modal-box { background:#fff;border-radius:14px;padding:1.5rem;max-width:480px;width:100%;
  max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.2) }
.modal-header { display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem }
.modal-header h2 { margin:0;font-size:1.15rem }
.modal-close { background:none;border:none;font-size:1.1rem;cursor:pointer;color:#94a3b8;padding:.25rem }
.theme-explain { border-bottom:1px solid #f1f5f9;padding:.875rem 0 }
.theme-explain:last-child { border-bottom:none }
.theme-explain-header { display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem }
.theme-explain p { margin:.25rem 0 .5rem;font-size:.875rem;color:#4b5563;line-height:1.5 }

/* ── Competition Detail Redesign ─────────── */
.comp-hero { padding:1.5rem 1.5rem .75rem;margin:-1.5rem -1.5rem 0;border-radius:0 }
.comp-hero-inner { display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.75rem }
.comp-hero-title { font-size:1.75rem;margin:.2rem 0 .35rem;font-weight:800 }
.comp-hero-meta { font-size:.875rem;color:#64748b }
.comp-hero-actions { display:flex;gap:.5rem;flex-shrink:0;margin-top:.25rem }
.comp-progress-bar-wrap { height:6px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin:.5rem 0 .35rem }
.comp-progress-bar { height:100%;border-radius:999px;transition:width .3s }
.comp-progress-label { font-size:.78rem;color:#94a3b8;margin-bottom:.5rem }

.comp-stats-row { display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
  gap:1rem;margin:1.25rem 0;padding:1.25rem;background:#fff;border-radius:12px;
  box-shadow:0 1px 4px rgba(0,0,0,.07) }
.comp-stat { text-align:center }
.comp-stat-value { font-size:1.6rem;font-weight:800;line-height:1.1 }
.comp-stat-label { font-size:.78rem;color:#64748b;margin-top:.2rem }
.comp-stat-award .comp-stat-label { font-weight:600;color:#92400e }

.comp-nudge { display:flex;gap:.6rem;align-items:flex-start;background:#eff6ff;
  border:1px solid #bfdbfe;border-radius:8px;padding:.75rem 1rem;
  font-size:.875rem;color:#1e40af;margin-bottom:1rem }
.comp-nudge a { color:#1d4ed8;font-weight:600 }

/* Leaderboard medals */
.lb-rank-medal { font-size:1.3rem;min-width:2rem;text-align:center }
.lb-rank-num { font-size:.9rem;font-weight:700;color:#94a3b8 }
.lb-you-tag { font-size:.7rem;background:#dbeafe;color:#1d4ed8;padding:.1rem .4rem;
  border-radius:999px;font-weight:600;vertical-align:middle }

/* Feed empty */
.feed-empty { text-align:center;color:#94a3b8;padding:2rem;font-size:.9rem }
.rxn-count { font-size:.75rem }

/* ── Pantry ──────────────────────────────────────────── */
.pantry-header { display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem }
.pantry-header h1 { margin:0;font-size:1.6rem }
.pantry-switcher { border:1px solid #e2e8f0;border-radius:6px;padding:.3rem .6rem;font-size:.9rem;cursor:pointer }

.pantry-stats { display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;
  background:#fff;border-radius:12px;padding:1rem 1.5rem;margin-bottom:1.25rem;
  box-shadow:0 1px 4px rgba(0,0,0,.07) }
.pantry-stat { text-align:center }
.pstat-val { display:block;font-size:1.5rem;font-weight:800;line-height:1 }
.pstat-label { display:block;font-size:.75rem;color:#64748b;margin-top:.2rem }

.pantry-tabs { display:flex;gap:.25rem;border-bottom:2px solid #e2e8f0;margin-bottom:1.25rem }
.ptab { background:none;border:none;padding:.6rem 1rem;cursor:pointer;font-size:.9rem;
  color:#64748b;border-bottom:2px solid transparent;margin-bottom:-2px;font-weight:500 }
.ptab.active { color:#3b82f6;border-bottom-color:#3b82f6 }
.ptab-content.hidden { display:none }
.pantry-empty { text-align:center;padding:3rem;color:#94a3b8;font-size:.9rem }
.pantry-empty a { color:#3b82f6 }

.review-badge { background:#dc2626;color:#fff;border-radius:999px;font-size:.72rem;
  padding:.1rem .4rem;margin-left:.35rem }

/* Inventory grid */
.inv-section { margin-bottom:1.5rem }
.inv-section-title { font-size:.95rem;font-weight:700;color:#374151;margin-bottom:.75rem;
  padding-bottom:.4rem;border-bottom:1px solid #f1f5f9 }
.inv-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem }
.inv-card { position:relative;background:#fff;border-radius:10px;overflow:hidden;
  box-shadow:0 1px 3px rgba(0,0,0,.08);transition:box-shadow .15s }
.inv-card:hover { box-shadow:0 4px 12px rgba(0,0,0,.12) }
.inv-thumb { width:100%;height:110px;object-fit:cover }
.inv-thumb-placeholder { width:100%;height:110px;display:flex;align-items:center;
  justify-content:center;font-size:2rem;background:#f8fafc }
.inv-card-body { padding:.6rem .7rem }
.inv-product { font-weight:600;font-size:.85rem;line-height:1.3;margin-bottom:.2rem }
.inv-brand { font-size:.75rem;color:#64748b }
.inv-size { font-size:.72rem;color:#94a3b8 }
.inv-category-badge { font-size:.68rem;background:#f1f5f9;color:#64748b;
  padding:.1rem .4rem;border-radius:999px;margin-top:.35rem;display:inline-block }
.inv-delete-btn { background:rgba(0,0,0,.45);color:#fff;border:none;border-radius:999px;
  width:1.4rem;height:1.4rem;cursor:pointer;font-size:.7rem;line-height:1;
  display:flex;align-items:center;justify-content:center }

/* Staples */
.staples-header { margin-bottom:1rem }
.staple-add-form { display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap }
.staple-add-form input { flex:1;min-width:160px }
.staple-group { margin-bottom:1.25rem }
.staple-group-title { font-size:.85rem;font-weight:700;color:#64748b;text-transform:uppercase;
  letter-spacing:.05em;margin-bottom:.5rem }
.staple-row { display:flex;align-items:center;gap:.75rem;padding:.5rem 0;
  border-bottom:1px solid #f1f5f9 }
.staple-name { flex:1;font-size:.9rem }
.staple-controls { display:flex;gap:.3rem;align-items:center;flex-wrap:wrap }
.btn-staple { background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;
  padding:.25rem .6rem;font-size:.78rem;cursor:pointer }
.btn-staple.active.btn-staple-have { background:#dcfce7;border-color:#86efac;color:#166534 }
.btn-staple.active.btn-staple-low { background:#fef9c3;border-color:#fde047;color:#854d0e }
.btn-staple.active.btn-staple-out { background:#fee2e2;border-color:#fca5a5;color:#991b1b }
.btn-staple-del { background:none;border:none;color:#dc2626;cursor:pointer;font-size:.8rem;padding:.2rem }

/* Shopping list */
.shopping-header { display:flex;gap:.5rem;margin-bottom:.75rem }
.shopping-add-form { display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap }
.shopping-group { margin-bottom:1rem }
.shopping-group-title { font-size:.85rem;font-weight:700;color:#64748b;
  text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem }
.shopping-row { display:flex;align-items:center;gap:.6rem;padding:.5rem 0;
  border-bottom:1px solid #f1f5f9 }
.shopping-row.checked .shopping-name { text-decoration:line-through;color:#94a3b8 }
.shopping-check { background:none;border:none;font-size:1.1rem;cursor:pointer;padding:0 }
.shopping-name { flex:1;font-size:.9rem }
.shopping-qty { color:#94a3b8;font-size:.82rem }
.shopping-source { font-size:.72rem;background:#dbeafe;color:#1d4ed8;
  padding:.1rem .4rem;border-radius:999px }

/* Locations */
.location-add-form { display:flex;gap:.5rem;margin-bottom:1rem }
.location-list { display:flex;flex-direction:column;gap:.5rem }
.location-row { display:flex;align-items:center;gap:.75rem;padding:.6rem .75rem;
  background:#fff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06) }
.location-emoji { font-size:1.25rem }
.location-name { font-weight:500 }

/* Upload zone */
.upload-zone { border:2px dashed #cbd5e1;border-radius:12px;padding:2.5rem;
  text-align:center;cursor:pointer;transition:border-color .15s,background .15s;margin:1rem 0 }
.upload-zone:hover,.upload-zone.dragover { border-color:#3b82f6;background:#eff6ff }
.upload-icon { font-size:2.5rem;margin-bottom:.5rem }
.upload-label { font-weight:600;color:#374151 }
.upload-sub { font-size:.82rem;color:#94a3b8;margin-top:.25rem }
.upload-preview-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem;margin-top:.75rem }
.upload-thumb { border-radius:8px;overflow:hidden;background:#f1f5f9 }
.upload-thumb img { width:100%;height:80px;object-fit:cover }
.upload-thumb span { display:block;font-size:.68rem;color:#64748b;padding:.2rem .35rem;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis }

/* Review cards */
.review-card { background:#fff;border-radius:12px;padding:1.25rem;margin-bottom:1rem;
  box-shadow:0 1px 4px rgba(0,0,0,.08);display:flex;flex-direction:column;gap:.75rem }
.review-thumb { width:120px;height:90px;object-fit:cover;border-radius:8px;flex-shrink:0 }
.review-form { flex:1 }
.upload-thumb-icon { width:100%;height:80px;display:flex;align-items:center;
  justify-content:center;font-size:2rem;background:#f1f5f9 }

/* Add-method tabs (upload page) */
.add-method-tabs { display:flex;gap:.5rem;margin-bottom:1.25rem }
.add-method-tab { flex:1;padding:.6rem;border:1px solid #e2e8f0;border-radius:8px;
  background:#fff;cursor:pointer;font-size:.9rem;font-weight:500;color:#64748b;transition:all .15s }
.add-method-tab.active { background:#3b82f6;color:#fff;border-color:#3b82f6 }

/* Inventory card link */
.inv-card-link { text-decoration:none;color:inherit;display:block }
.inv-card-link:hover .inv-product { color:#3b82f6 }
.inv-card { cursor:pointer }
.inv-card:hover { box-shadow:0 4px 12px rgba(0,0,0,.12);transform:translateY(-1px);transition:all .15s }

/* Edit item form */
.edit-item-form .form-group { margin-bottom:1rem }
.edit-item-form .form-row { display:grid;grid-template-columns:1fr 1fr;gap:.75rem }
.edit-item-form label { display:block;font-size:.85rem;font-weight:500;color:#374151;margin-bottom:.3rem }
.form-input { width:100%;padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:6px;
  font-size:.9rem;background:#fff;box-sizing:border-box }
.form-input:focus { outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,.15) }

/* Edit item two-column layout */
.edit-layout { display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start }
.edit-photo-col img { box-shadow:0 2px 12px rgba(0,0,0,.12) }
@media(max-width:640px) { .edit-layout { grid-template-columns:1fr } }

/* Upload spinner */
.upload-spinner {
  width:52px;height:52px;border-radius:50%;
  border:4px solid rgba(255,255,255,.2);
  border-top-color:#fff;
  animation:spin .8s linear infinite
}
@keyframes spin { to { transform:rotate(360deg) } }

/* Weight summary cards */
.wt-summary-row { display:flex; gap:.75rem; flex-wrap:wrap; margin:.75rem 0 .25rem; }
.wt-stat-card { flex:1; min-width:120px; background:#f8fafc; border:1.5px solid #e2e8f0; border-radius:12px; padding:.75rem 1rem; text-align:center; }
.wt-stat-label { font-size:.72rem; color:#64748b; text-transform:uppercase; letter-spacing:.04em; margin-bottom:.2rem; }
.wt-stat-value { font-size:1.35rem; font-weight:700; color:#1e293b; line-height:1.2; }
.wt-unit { font-size:.75rem; font-weight:500; color:#64748b; }
.wt-stat-sub { font-size:.72rem; color:#94a3b8; margin-top:.15rem; }
.wt-stat-card.wt-loss { background:#f0fdf4; border-color:#bbf7d0; }
.wt-stat-card.wt-loss .wt-stat-value { color:#15803d; }
.wt-stat-card.wt-gain { background:#fff7ed; border-color:#fed7aa; }
.wt-stat-card.wt-gain .wt-stat-value { color:#c2410c; }

/* Staple shop button */
.btn-staple-shop { background:#eff6ff; color:#1d4ed8; border-color:#bfdbfe; }
.btn-staple-shop:hover { background:#dbeafe; }
