/* =========================================================
   Sổ Chi Tiêu — theme "nhật ký dễ thương", mobile-first
   ========================================================= */
:root{
  --bg:#FFF8F3;
  --card:#FFFFFF;
  --line:#F5E3E9;
  --ink:#3D2B45;
  --ink-soft:#9689A1;

  --pink:#FF8FAB;
  --pink-deep:#F2648A;
  --lavender:#B8A9FF;
  --lavender-bg:#F1EEFF;

  --income:#3FA07C;
  --income-bg:#E4F8EE;
  --expense:#F0685A;
  --expense-bg:#FFEAE7;
  --gold:#E7A93C;
  --gold-bg:#FFF3DA;

  --radius-lg:22px;
  --radius-md:16px;
  --radius-sm:12px;
  --radius-pill:999px;
  --shadow-soft:0 6px 18px rgba(210,120,150,0.14);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:
    radial-gradient(480px 220px at 15% -8%, #FFE1EC 0%, transparent 60%),
    radial-gradient(420px 200px at 100% 0%, #E9E4FF 0%, transparent 55%),
    var(--bg);
  background-attachment:fixed;
  color:var(--ink);
  font-family:'Quicksand',-apple-system,sans-serif;
  -webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom);
}
a{color:inherit;}
button, input, select, textarea{font-family:inherit;}

.wrap{
  max-width:520px;
  margin:0 auto;
  padding:18px 16px 56px;
}

/* ---------------- Header (thẻ sticker) ---------------- */
.cover{
  background:linear-gradient(135deg, var(--pink) 0%, var(--lavender) 100%);
  color:#fff;
  border-radius:var(--radius-lg);
  padding:20px 20px 22px;
  position:relative;
  overflow:hidden;
  margin-bottom:16px;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  box-shadow:var(--shadow-soft);
}
.cover::after{
  content:"✨";
  position:absolute;
  right:14px;
  bottom:8px;
  font-size:38px;
  opacity:0.35;
  transform:rotate(8deg);
}
.cover .eyebrow{
  font-size:11.5px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:rgba(255,255,255,0.85);
  margin:0 0 4px;
  font-weight:700;
}
.cover h1{
  font-family:'Baloo 2',sans-serif;
  font-weight:700;
  font-size:26px;
  margin:0 0 2px;
  line-height:1.15;
}
.cover .owner{
  font-size:13.5px;
  color:rgba(255,255,255,0.92);
  margin:0;
  font-weight:600;
}
.cover .logout-link{
  position:relative;
  z-index:1;
  font-size:12px;
  color:#fff;
  background:rgba(255,255,255,0.22);
  padding:6px 12px;
  border-radius:var(--radius-pill);
  text-decoration:none;
  white-space:nowrap;
  font-weight:700;
  margin-top:2px;
}

.flash-error{
  background:var(--expense-bg);
  color:var(--expense);
  border:1.5px solid #FFD2CB;
  border-radius:var(--radius-md);
  padding:11px 15px;
  font-size:13.5px;
  font-weight:600;
  margin-bottom:14px;
}

/* ---------------- Month nav (dạng viên thuốc) ---------------- */
.month-nav{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  margin-bottom:16px;
}
.month-nav span{
  font-family:'Baloo 2',sans-serif;
  font-weight:600;
  font-size:16.5px;
  min-width:150px;
  text-align:center;
}
.month-nav a{
  background:var(--card);
  border:1.5px solid var(--line);
  border-radius:50%;
  width:36px;
  height:36px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:16px;
  color:var(--pink-deep);
  text-decoration:none;
  font-weight:700;
  transition:transform .12s ease;
}
.month-nav a:active{transform:scale(0.9);}

/* ---------------- Summary chips ---------------- */
.summary{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:8px;
  margin-bottom:18px;
}
.stat{
  background:var(--card);
  border-radius:var(--radius-md);
  padding:13px 8px;
  text-align:center;
  box-shadow:0 3px 10px rgba(150,100,130,0.06);
}
.stat .label{
  font-size:10.5px;
  color:var(--ink-soft);
  font-weight:700;
  margin:0 0 5px;
}
.stat .value{
  font-family:'Baloo 2',sans-serif;
  font-weight:700;
  font-size:14px;
  margin:0;
  word-break:break-word;
  line-height:1.2;
}
.stat.income{background:var(--income-bg);}
.stat.expense{background:var(--expense-bg);}
.stat.balance{background:var(--gold-bg);}
.stat.income .value{color:var(--income);}
.stat.expense .value{color:var(--expense);}
.stat.balance .value{color:var(--gold);}

/* ---------------- Form card ---------------- */
.form-card{
  background:var(--card);
  border-radius:var(--radius-lg);
  padding:18px 16px;
  margin-bottom:22px;
  box-shadow:0 4px 14px rgba(150,100,130,0.08);
}
.type-toggle{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-bottom:16px;
}
.type-toggle label{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:12px 8px;
  border-radius:var(--radius-pill);
  border:2px solid var(--line);
  background:var(--bg);
  font-weight:700;
  font-size:14px;
  cursor:pointer;
  color:var(--ink-soft);
  text-align:center;
  transition:all .15s ease;
}
.type-toggle input{position:absolute;opacity:0;pointer-events:none;width:0;height:0;}
.type-toggle input:checked + label.expense-label{
  border-color:var(--expense);
  background:var(--expense-bg);
  color:var(--expense);
}
.type-toggle input:checked + label.income-label{
  border-color:var(--income);
  background:var(--income-bg);
  color:var(--income);
}

.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;}
label.field-label{
  display:block;
  font-size:12px;
  color:var(--ink-soft);
  margin-bottom:5px;
  font-weight:700;
}
input[type=text], input[type=date], input[type=number], input[type=password], select, textarea{
  width:100%;
  padding:11px 13px;
  border:2px solid var(--line);
  border-radius:var(--radius-sm);
  font-size:16px; /* >=16px để iOS không tự zoom khi focus */
  background:var(--bg);
  color:var(--ink);
  font-weight:600;
  appearance:none;
  -webkit-appearance:none;
}
select{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='9'><path d='M1 1l6 6 6-6' stroke='%239689A1' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat;
  background-position:right 14px center;
  padding-right:34px;
}
input:focus, select:focus, textarea:focus{
  outline:none;
  border-color:var(--pink);
  background:#fff;
}
.amount-field input{
  font-family:'Baloo 2',sans-serif;
  font-weight:700;
}
.submit-btn{
  width:100%;
  margin-top:4px;
  padding:14px;
  border:none;
  border-radius:var(--radius-pill);
  background:linear-gradient(135deg, var(--pink) 0%, var(--pink-deep) 100%);
  color:#fff;
  font-weight:700;
  font-size:15.5px;
  cursor:pointer;
  box-shadow:0 6px 16px rgba(240,100,140,0.35);
  transition:transform .12s ease;
}
.submit-btn:active{transform:scale(0.97);}

/* ---------------- Ledger ---------------- */
.ledger-title{
  font-family:'Baloo 2',sans-serif;
  font-size:14px;
  font-weight:700;
  color:var(--ink-soft);
  margin:0 0 10px 4px;
}
.ledger{
  background:var(--card);
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:0 4px 14px rgba(150,100,130,0.08);
}
.day-group-label{
  padding:11px 16px 6px;
  font-size:11.5px;
  color:var(--ink-soft);
  background:#FFFBF8;
  font-weight:700;
  letter-spacing:0.02em;
}
.entry{
  display:grid;
  grid-template-columns:38px 1fr auto;
  align-items:center;
  gap:10px;
  padding:12px 16px;
  border-top:1px solid var(--line);
}
.entry .cat-avatar{
  width:38px;
  height:38px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  flex-shrink:0;
}
.entry .cat-avatar.avatar-income{background:var(--income-bg);}
.entry .cat-avatar.avatar-expense{background:var(--expense-bg);}
.entry .meta{min-width:0;}
.entry .cat{
  font-weight:700;
  font-size:14px;
  color:var(--ink);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.entry .note{
  font-size:12px;
  color:var(--ink-soft);
  margin-top:1px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font-weight:600;
}
.entry .amt{
  font-family:'Baloo 2',sans-serif;
  font-weight:700;
  font-size:14.5px;
  text-align:right;
  white-space:nowrap;
}
.entry .amt.income{color:var(--income);}
.entry .amt.expense{color:var(--expense);}
.entry .running{
  font-size:10.5px;
  color:var(--gold);
  text-align:right;
  white-space:nowrap;
  font-weight:700;
  margin-top:1px;
}
.entry form.del-form{
  grid-column:1 / -1;
  justify-self:end;
  margin:0;
}
.entry .del-btn{
  background:none;
  border:none;
  color:var(--ink-soft);
  font-size:11px;
  cursor:pointer;
  padding:2px 0;
  margin-top:2px;
  text-decoration:underline;
  font-weight:600;
}
.empty-state{
  padding:44px 24px;
  text-align:center;
  color:var(--ink-soft);
  font-size:14px;
  line-height:1.7;
  font-weight:600;
}
.empty-state .icon{font-size:34px;display:block;margin-bottom:10px;}

/* ---------------- Login page ---------------- */
body.login-body{
  display:flex;
  align-items:center;
  min-height:100vh;
}
.login-wrap{
  max-width:360px;
  width:100%;
  margin:0 auto;
  padding:0 20px;
}
.login-card{
  background:var(--card);
  border-radius:var(--radius-lg);
  padding:30px 24px;
  box-shadow:0 10px 30px rgba(210,120,150,0.18);
  text-align:center;
}
.login-card .login-icon{
  font-size:44px;
  margin-bottom:6px;
  display:block;
}
.login-card h1{
  font-family:'Baloo 2',sans-serif;
  font-size:24px;
  margin:0 0 4px;
  color:var(--pink-deep);
  font-weight:700;
}
.login-card p.sub{
  font-size:13px;
  color:var(--ink-soft);
  margin:0 0 22px;
  font-weight:600;
}
.login-card form{text-align:left;}
.login-card label.field-label{margin-top:12px;}

/* ---------------- Responsive fine-tuning ---------------- */
@media (max-width:380px){
  .wrap{padding:14px 12px 48px;}
  .field-row{grid-template-columns:1fr;}
  .summary{gap:6px;}
  .stat{padding:11px 6px;}
  .stat .value{font-size:12.5px;}
  .cover h1{font-size:22px;}
  .cover{padding:17px 16px 18px;}
  .entry{grid-template-columns:34px 1fr auto;padding:11px 12px;}
  .entry .cat-avatar{width:34px;height:34px;font-size:16px;}
}

@media (min-width:600px){
  .wrap{padding-top:32px;}
  .cover{padding:26px 28px 26px;}
  .cover h1{font-size:30px;}
}
.del-form {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
}

.edit-btn,
.del-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 32px;
    padding: 0 10px;
    border-radius: 6px;
    font-size: 13px;
    text-decoration: none;
    border: 0;
    cursor: pointer;
}

.edit-btn {
    background: #f0f6ff;
    color: #2878d7;
}

.edit-btn:hover {
    background: #dcecff;
    color: #1764b5;
    text-decoration: none;
}

.del-btn {
    background: #fff0f0;
    color: #e74c3c;
}

.del-btn:hover {
    background: #ffe0e0;
}