*{box-sizing:border-box}
body{margin:0;background:#f1f5f9;color:#102a43;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN",sans-serif}
.wrap{max-width:620px;margin:auto;padding:26px 16px 48px}
.eyebrow{font-size:11px;letter-spacing:.12em;color:#627d98;font-weight:700}
h1{font-size:23px;margin:5px 0 22px}h2{font-size:17px;margin:0 0 16px}
.panel{background:white;border-radius:18px;padding:20px;margin:14px 0;box-shadow:0 5px 20px #102a4310}
.row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.amount{font-size:36px;font-weight:800;margin:7px 0}
.muted,.privacy p{color:#627d98;font-size:13px;line-height:1.6}
.month{font-weight:700;color:#627d98;white-space:nowrap}
.bar{height:10px;background:#e6edf3;border-radius:20px;margin-top:17px;overflow:hidden}
.bar div{height:100%;width:0;background:#16a085;border-radius:20px;transition:width .2s}
.bar div.over{background:#d64545}.small{margin-top:12px}
.budget-message{margin-top:12px;padding:10px 12px;border-radius:10px;background:#edf7f5;color:#176b5b;font-size:13px;font-weight:700}
.budget-message.warn{background:#fff5e8;color:#9a5700}.budget-message.over{background:#fff0f0;color:#b42318}
form{display:grid;gap:13px}
label{display:grid;gap:6px;font-size:13px;font-weight:650}
input,select{width:100%;padding:13px;border:1px solid #d9e2ec;border-radius:10px;font-size:16px;background:#fff;color:#102a43}
button{border:0;border-radius:11px;padding:13px 16px;background:#102a43;color:white;font-size:15px;font-weight:700}
.subtle{background:#eaf0f5;color:#334e68;padding:9px 12px;font-size:12px}
.history{display:grid;gap:9px}.item{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid #edf2f7}.item:last-child{border:0}
.item small{display:block;color:#829ab1;margin-top:3px}
.negative{color:#d64545}.item-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}
.delete-btn{background:#fff0f0;color:#b42318;border:1px solid #f3c5c5;padding:6px 10px;font-size:12px;border-radius:8px}
.summary{display:grid;gap:12px}.cat-row{display:grid;grid-template-columns:76px 1fr auto;gap:9px;align-items:center;font-size:13px}
.cat-track{height:9px;background:#eaf0f5;border-radius:20px;overflow:hidden}.cat-fill{height:100%;background:#5b8def;border-radius:20px}
.cat-name{color:#486581}.cat-value{font-weight:700;font-variant-numeric:tabular-nums}
.empty{color:#829ab1;font-size:13px}
footer{text-align:center;color:#829ab1;font-size:11px;margin-top:25px}
@media(max-width:380px){.amount{font-size:31px}.panel{padding:17px}.cat-row{grid-template-columns:65px 1fr auto;gap:6px}}

.trend{display:grid;gap:11px}.trend-row{display:grid;grid-template-columns:42px 1fr 84px;gap:9px;align-items:center;font-size:12px}.trend-label{color:#486581}.trend-track{height:11px;background:#eaf0f5;border-radius:20px;overflow:hidden}.trend-fill{height:100%;background:#5b8def;border-radius:20px}.trend-value{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}

.daily-main{font-size:34px;font-weight:850;margin:4px 0 13px;font-variant-numeric:tabular-nums}.daily-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.daily-stats>div{background:#f4f7fa;border-radius:10px;padding:10px}.daily-stats span{display:block;color:#627d98;font-size:11px;margin-bottom:5px}.daily-stats strong{font-size:16px;font-variant-numeric:tabular-nums}.daily-message{margin-top:12px;padding:10px 12px;border-radius:10px;background:#edf7f5;color:#176b5b;font-size:12px;font-weight:700;line-height:1.55}.daily-message.warn{background:#fff5e8;color:#9a5700}.daily-message.over{background:#fff0f0;color:#b42318}

.budget-settings{margin-top:16px;padding:14px;background:#f4f7fa;border-radius:14px}
.budget-settings label{display:block;font-size:13px;font-weight:700;color:#486581;margin-bottom:8px}
.budget-edit-row{display:flex;gap:8px;align-items:center}
.budget-edit-row input{min-width:0;flex:1;padding:12px;border:1px solid #d9e2ec;border-radius:10px;background:#fff;font-size:16px;color:#102a43}
.budget-edit-row button{white-space:nowrap;padding:12px 14px}

.quick-entry-note{padding:12px 14px;background:#eef5fb;border-radius:12px;color:#486581;font-size:13px;line-height:1.6;margin:2px 0 4px}
.category-hint{font-size:12px;color:#627d98;margin-top:-8px;margin-bottom:8px}
.category-hint.matched{color:#24745f;font-weight:700}

.favorite-shop-box{margin:8px 0 16px;padding:14px;background:#f7f9fc;border:1px solid #e3eaf2;border-radius:14px}
.favorite-shop-box label{margin-top:0}
.favorite-shop-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.favorite-shop-actions button{font-size:13px;padding:10px 12px}
.danger-subtle{color:#b42318}

.custom-category-wrap{margin-top:8px}
.custom-category-wrap[hidden]{display:none}
.favorite-shop-box .muted{line-height:1.6}

.income-total{font-size:1.7rem;font-weight:800;color:#21856f;white-space:nowrap}
.income-panel{border:1px solid #d8eee8}

.page-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:18px 0 22px;padding:6px;background:#e8eef5;border-radius:18px;position:sticky;top:6px;z-index:20}
.page-tab{border:0;border-radius:13px;padding:14px 10px;font:inherit;font-weight:800;color:#60758e;background:transparent}
.page-tab.active{background:#172b45;color:#fff;box-shadow:0 3px 10px rgba(20,40,65,.12)}
.page-view[hidden]{display:none!important}
.page-view{display:block}
.income-amount{color:#21856f}


.calendar-panel{margin:18px 0 22px}
.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.calendar-head h2{margin:0}
.calendar-controls{display:flex;align-items:center;gap:12px;color:#172b45}
.calendar-controls button{width:38px;height:38px;padding:0;border:0;border-radius:11px;background:#edf2f7;color:#172b45;font-size:28px;line-height:1}
.calendar-legend{display:flex;gap:16px;margin:14px 0 10px;font-size:12px;font-weight:700}
.legend-income{color:#2675c8}.legend-expense{color:#c0392b}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.calendar-weekday{text-align:center;font-size:12px;font-weight:700;color:#627d98;padding:5px 0}
.calendar-day{min-width:0;min-height:68px;padding:5px 2px;border:1px solid #e5ebf2;border-radius:9px;background:#fff;color:#172b45;display:flex;flex-direction:column;align-items:center;gap:3px;font:inherit}
.calendar-day.blank{border:0;background:transparent}
.calendar-day.selected{border:2px solid #172b45;background:#edf3fa}
.calendar-day.today .calendar-date-number{font-weight:900;text-decoration:underline}
.calendar-date-number{font-size:13px;font-weight:700;line-height:1.2}
.calendar-amount{display:block;max-width:100%;font-size:9px;line-height:1.2;font-weight:800;white-space:nowrap;letter-spacing:-.3px}
.calendar-amount.income{color:#2675c8}
.calendar-amount.expense{color:#c0392b}
#calendarHint{margin:12px 0 0;line-height:1.5}
@media(max-width:380px){.calendar-grid{gap:2px}.calendar-day{min-height:62px;padding:4px 1px}.calendar-amount{font-size:8px}}



.page-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
.main-dashboard{display:grid;gap:18px}


/* v18: show compact input tabs only after a calendar date is selected */
.page-tabs{
 position:sticky;
 top:8px;
 z-index:30;
 margin:12px 0 16px;
 box-shadow:0 3px 12px rgba(16,42,67,.10);
 background:#e8eef5;
 border:1px solid #d6e0ea;
}
.page-tabs[hidden]{display:none!important}
body{padding-bottom:24px}
.main-dashboard{gap:10px}
.main-dashboard>.panel{padding:14px}
.main-dashboard .amount{font-size:clamp(25px,7vw,34px)}
.main-dashboard .budget-message,
.main-dashboard .daily-message{font-size:12px;margin:6px 0}
.main-dashboard .budget-settings{margin-top:8px}
.main-dashboard .budget-settings .muted{font-size:11px}
.daily-panel h2{margin:4px 0;font-size:16px}
.daily-main{font-size:clamp(25px,7vw,34px);margin:2px 0}
.daily-stats{gap:6px}
.daily-stats>div{padding:5px 7px}
.daily-stats span{font-size:10px}
.daily-stats strong{font-size:13px}
.main-dashboard .muted.small{font-size:10px;line-height:1.35}
.calendar-panel{padding:12px!important;margin:0}
.calendar-head h2{font-size:16px}
.calendar-legend{margin:6px 0;font-size:11px}
.calendar-day{min-height:49px;padding:3px 1px;gap:2px}
.calendar-amount{font-size:8px}
.calendar-weekday{padding:2px 0}
#calendarHint{font-size:10px;margin-top:6px}
@media(max-width:430px){
 .wrap{padding:10px 10px 0}
 header{margin-bottom:8px}
 header h1{font-size:20px;margin:2px 0}
 .main-dashboard{gap:8px}
 .main-dashboard>.panel{padding:11px}
 .calendar-day{min-height:43px}
 .calendar-amount{font-size:7px}
 .page-tabs{left:auto;right:auto}
}
