/* budgAUT 0.0.1.0 mobile ledger refinement. Centralized accessible palette. */
:root{
 --fixed:#f3b77d;--variable:#ecb4f5;--income:#9de1c3;--deduction:#ff9ba8;
 --focus:#c9b4ff;--control:#32354b;--field:#292b3c;--field-edge:#72788f;
 --surface:#25283a;--surface-dark:#202335;--secondary:#d6d7e4;
 --text-small:.78rem;--text-body:.91rem;--text-title:1.13rem;
}
:where(button,input,select,textarea){accent-color:var(--mint)}
:where(button,input,select,textarea):focus-visible,[role=button]:focus-visible{outline:3px solid var(--focus)!important;outline-offset:2px}
:where(button,select,input,textarea):not(:disabled){color:var(--ink)}
:where(input,select,textarea){background:var(--field);border:1px solid var(--field-edge);border-radius:9px;min-height:42px;padding:9px 11px;font-size:1rem;color:var(--ink)!important;caret-color:var(--mint)}
:where(input,textarea)::placeholder{color:#c0bfd0;opacity:.85}
:where(input,select,textarea):disabled{background:#292b36;color:#9e9eac!important;opacity:.78}
:where(.modal label,.modal legend){font-size:.88rem;color:var(--secondary);font-weight:670}
:where(.button,.square-btn,.month-heading){min-height:42px;color:var(--ink);font-weight:720}
:where(.button):hover{filter:brightness(1.09)}
:where(.button):active{transform:translateY(1px)}
:where(.button.mint){color:#172e33!important}
:where(.button.coral){color:#38232d!important}
:where(.button.secondary,.button.subtle){background:#40435a;color:#fff8f2}
:where(.button.primary){background:#97dcca;color:#152c30!important}
:where(.button.danger){background:#6e3748;color:#fff0f4!important}
:where(.square-btn,.month-heading){background:#39384d;color:#f8e4b1!important;border-color:#787089}
:where(.square-btn):hover{background:#504660}
:where(.num-val){font-variant-numeric:tabular-nums;white-space:nowrap}
.type-fixed{color:var(--fixed)!important}.type-variable{color:var(--variable)!important}
.cal-day.is-today{background:#30394b!important;color:var(--ink)!important}
.cal-day.is-today .cal-date,.cal-day.is-today .cal-extra{color:var(--ink)!important}
.cal-day{padding:0;gap:0;cursor:default;background:#2c2d40;border:1px solid #4b4b5f}
.cal-day.is-past:not(.is-today){background:#272838}
.cal-day.other-month{opacity:.6}
.cal-day.in-current-week:not(.in-selected){box-shadow:inset 0 0 0 2px #727487!important;border-color:#727487}
.cal-day.in-selected,.cal-day.is-today.in-selected{box-shadow:none!important;border-color:#4b4b5f!important}
.cal-datebar{display:flex;align-items:center;justify-content:space-between;gap:3px;min-height:34px;padding:5px 6px 4px;border:1.5px solid transparent;border-radius:5px 5px 0 0;background:#333448;cursor:pointer}
.cal-day.in-selected .cal-datebar{border-color:#94ddce;background:#354748}
.cal-day.day-selected .cal-datebar{outline:2px solid var(--focus);outline-offset:-2px;background:#4d465e}
.cal-day.is-past:not(.is-today) .cal-date{color:#adacbd;text-decoration:line-through;text-decoration-thickness:1px}
.cal-day.is-today .cal-datebar{background:#3b5566}
.cal-date{display:inline-flex;gap:4px;align-items:center;font-size:.79rem;white-space:nowrap;flex-shrink:0;margin:0;color:#fdf5f0!important}
.past-mark{font-size:.8rem;color:#938fa8}
.today-dot{display:inline-block;height:11px;width:11px;border-radius:50%;background:#82d1ff;box-shadow:0 0 0 2px #1e3047,0 0 0 3px #c4edff;vertical-align:middle;margin-left:2px}
.cal-day-totals{display:flex;align-items:flex-end;gap:2px;flex-direction:column;min-width:0;overflow:hidden;font-size:.57rem;line-height:1.2}
.cal-day-totals>span{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-weight:700}
.cal-day-totals .num-val{color:inherit!important}
.cal-entries{display:flex;flex-direction:column;gap:3px;min-height:0;padding:5px;overflow:hidden;flex:1}
.cal-ev{background:transparent!important;border-radius:4px;font-size:.7rem;padding:2px 3px;line-height:1.35;color:var(--ink)!important;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-ev.fixed{color:var(--fixed)!important}.cal-ev.variable{color:var(--variable)!important}.cal-ev.income{color:var(--income)!important}
.cal-ev i{font-style:normal;font-weight:650}.cal-ev b{margin-right:3px;font-size:.86rem}
.cal-ev:hover,.cal-extra:hover{background:#555069!important;text-decoration:underline}
.cal-ev.completed{color:#9895a4!important;text-decoration:line-through;opacity:.8}
.cal-ev.completed i{color:inherit!important}
.cal-extra{display:block;width:fit-content;max-width:100%;color:#e5d3fc;font-size:.69rem;padding:3px;cursor:pointer;border-radius:4px}
.cal-day:nth-child(7n + 5){border-left:3px solid #6d6b80} /* Thursday pay-week starts */
.cal-day:nth-child(7n + 4){border-right:3px solid #6d6b80} /* Wednesday pay-week ends */
.calendar-footnote{font-size:.71rem}
.week-panel{gap:0;padding:16px;overflow:hidden}
.week-nav{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:12px}
.week-nav .square-btn{width:33px;height:36px;min-height:36px;padding:0;flex-shrink:0}
.week-date-button{flex:1;min-width:0;background:#36374d;border:1px solid var(--line);border-radius:8px;color:var(--ink);font-size:.87rem;font-weight:760;padding:8px 5px;white-space:nowrap}
.week-ledger-stats{display:flex;flex-direction:column;gap:0}
.week-stat{width:100%;padding:11px 8px;border:0;border-bottom:1px solid #48485d;background:transparent;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:7px;text-align:left}
.week-stat.editable{cursor:pointer}.week-stat.editable:hover{background:#33374a;border-radius:6px}
.week-stat span{color:var(--ink);font-size:.89rem;font-weight:680}.week-stat strong{font-size:1.09rem;text-align:right}
.week-stat.available{border-top:2px solid #877da0;margin-top:8px;padding-top:13px;display:grid;grid-template-columns:1fr auto}
.week-stat.available small{grid-column:1/-1;color:var(--sub);text-align:right;font-size:.7rem;margin-top:-4px}
.week-expense-counts{border-top:1px solid #5b536d;margin:7px 0 0;padding:11px 0 9px;display:flex;flex-direction:column;gap:8px}
.week-expense-counts>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:.77rem}
.week-expense-counts>div span{color:var(--sub)}.week-expense-counts>div strong{text-align:right;color:var(--ink);font-weight:690;font-variant-numeric:tabular-nums}
.ledger-section-head{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0 9px;font-size:.83rem;font-weight:790;gap:7px}
.ledger-section-head small{font-size:.69rem;white-space:nowrap;font-weight:640}
.week-entries{min-height:110px;overflow-y:auto;max-height:min(56vh,650px);padding:4px 2px 12px}
.transaction-row{display:flex;align-items:flex-start;gap:9px;margin:0;padding:11px 4px;border-bottom:1px solid #48465b;font-size:.81rem;min-width:0}
.transaction-row:last-child{border-bottom:0}
.transaction-details{flex:1;min-width:0}
.transaction-main{display:flex;justify-content:space-between;align-items:baseline;gap:5px}
.transaction-main .category{min-width:0;font-size:.85rem;font-weight:740;overflow-wrap:anywhere}
.transaction-row.fixed .category{color:var(--fixed)}
.transaction-row.variable .category{color:var(--variable)}
.transaction-row.income .category{color:var(--income)}
.transaction-row .num-val{font-weight:790;font-size:.85rem}
.transaction-description{font-size:.75rem;color:#dad5e3;font-style:italic;overflow-wrap:anywhere;margin-top:3px}
.transaction-date{font-size:.72rem;color:var(--sub);font-style:italic;margin-top:4px}
.transaction-row.completed .transaction-details{text-decoration:line-through;opacity:.55}
.transaction-row.completed .transaction-details *{color:#a9a5b3!important}
.pay-check{appearance:none;-webkit-appearance:none;border:1.7px solid #c3bacf;border-radius:5px;background:#2c2e40;width:19px;height:19px;min-width:19px;min-height:19px;margin:1px 0 0;cursor:pointer;display:grid;place-items:center}
.pay-check:checked{background:var(--mint);border-color:var(--mint)}
.pay-check:checked:after{content:'✓';font-weight:900;font-size:15px;line-height:1;color:#183837}
.solid-check,.empty-check{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:19px;height:19px;margin-top:1px;border-radius:5px}
.solid-check{background:#b39ac9;color:#242238;font-size:.85rem;font-weight:900}
.empty-check{border:1px solid #5b5c70;opacity:.5}
.mini-action{background:#3b4058;border:1px solid #626981;color:#efedf5;min-width:26px;min-height:28px;padding:2px 5px}
.mini-action:hover{background:#57506b}
.money-field{border:0;padding:0;margin:10px 0 14px;min-width:0}
.money-field legend{font-size:.89rem;font-weight:700;color:var(--secondary);padding:0 0 7px}
.money-control{display:flex;align-items:center;gap:5px;width:fit-content;max-width:100%;border:1px solid #6a748c;border-radius:11px;background:#2e3144;padding:5px 9px}
.money-control:focus-within{outline:2px solid var(--focus)}
.money-control .currency-symbol,.money-control .decimal-dot{font-weight:850;color:var(--mint);font-size:1.15rem}
.money-control input{min-height:38px;max-height:38px;padding:6px;border:0;box-shadow:none!important;text-align:right;background:#202337;color:var(--ink)!important;font-variant-numeric:tabular-nums;border-radius:6px}
.money-dollars{width:86px}.money-cents{width:49px}.money-sign{width:42px!important;min-height:38px!important;padding:4px!important}
.toggle-row{display:flex!important;align-items:center;gap:10px;margin:13px 0;color:var(--ink);cursor:pointer}
.toggle-row input{width:20px;height:20px;min-height:20px}
.date-field input:disabled{cursor:not-allowed}
.autocomplete-wrap{position:relative;margin-bottom:13px}
.autocomplete-wrap>label{display:block;margin-bottom:6px;color:var(--secondary);font-weight:700}
.autocomplete-wrap>input{width:100%}
.suggestions{position:absolute;z-index:65;top:100%;left:0;right:0;max-height:230px;overflow:auto;background:#36384d;border:1px solid #8f8aa0;border-radius:9px;padding:4px;box-shadow:var(--shadow)}
.suggestion{display:block;width:100%;text-align:left;border:0;background:none;color:var(--ink);border-radius:5px;padding:10px;font-size:.87rem}
.suggestion:hover,.suggestion:focus{background:#524c6a;color:#fff}
.income-source-line{margin:0 0 17px}.income-source-line small{font-size:.78rem;color:var(--sub)}.income-source-line .money-field{margin:5px 0}
.hover-ledger{width:min(380px,calc(100vw - 20px));max-height:min(300px,55vh);overflow:hidden;display:flex;flex-direction:column;padding:0;border-color:#7e708e;background:#2f3043}
.hover-ledger.expanded{max-height:min(570px,73vh)}
.ledger-pop-head{background:#34364d;border-bottom:1px solid var(--line);padding:12px;flex-shrink:0}
.ledger-pop-head>strong{font-size:.91rem;display:block;margin-bottom:8px;color:var(--ink)}
.ledger-pop-total{display:flex;flex-direction:column;gap:4px;font-size:.78rem}
.ledger-pop-total>span{display:flex;gap:7px;align-items:center}.ledger-pop-total small{color:var(--sub)}
.ledger-pop-entries{overflow-y:auto;padding:2px 10px 12px;overscroll-behavior:contain}
.ledger-pop-entries .transaction-row{font-size:.75rem;padding:9px 1px}
.ledger-pop-entries .transaction-description{font-size:.72rem}
/* Reusable accessible scrolling */
*{scrollbar-width:thin;scrollbar-color:#8586a4 #282a3d}
::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:#8586a4;border-radius:7px}::-webkit-scrollbar-track{background:#292b3d}
@media(max-width:1150px){.cal-day-totals{font-size:.53rem}.cal-datebar{padding:4px}.cal-ev{font-size:.64rem}.home-layout{grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr)}}
@media(max-width:820px){.home-layout{grid-template-columns:1fr}.week-entries{max-height:none}.week-panel{overflow:visible}}
@media(max-width:480px){
 .cal-datebar{min-height:31px;padding:3px 2px;align-items:flex-start;flex-direction:column;gap:0}
 .cal-date{font-size:.66rem}.today-dot{width:8px;height:8px;box-shadow:0 0 0 1px #d0efff}
 .cal-day-totals{font-size:.5rem;width:100%;align-items:flex-start}.cal-day-totals>span{line-height:1.16}
 .cal-entries{padding:2px;gap:1px}.cal-ev{font-size:.53rem;padding:2px 0}.cal-extra{font-size:.52rem}
 .week-panel{padding:12px}.week-date-button{font-size:.77rem}
 .week-stat{padding:9px 4px}.week-stat strong{font-size:1.05rem}
 .week-expense-counts>div{font-size:.7rem}
 .ledger-section-head{font-size:.77rem}.ledger-section-head small{font-size:.65rem}
}

/* v0.0.1.2: restrained payday separators and consolidated daily list. */
.auth-title{margin:8px 0 18px;font-size:1.14rem;font-weight:750;color:var(--ink)}
.auth-hint{margin:14px 4px 2px;line-height:1.5}
.intro-card .button.ghost{border-color:#6b6a81;color:var(--ink);background:#36394d}
.cal-day,.cal-day.in-selected,.cal-day.in-current-week:not(.in-selected){
 box-shadow:none!important;border:1px solid #4c4d61!important;background:#2c2e42;
}
.cal-day.is-past:not(.is-today){background:#282a3b}
.cal-day.payweek-start{border-left:3px solid #b3a5cb!important}
.cal-day.payweek-end{border-right:3px solid #b3a5cb!important}
.cal-day.in-selected{background:#303f49!important}
.cal-day.in-selected .cal-datebar{background:#3b5055;border:0;border-top:3px solid var(--mint);border-radius:0;padding-top:3px}
.cal-day.in-current-week:not(.in-selected) .cal-datebar{background:#353747;border-top:2px solid #777a91}
.cal-day .cal-datebar{border:0;border-radius:0}
.cal-day.is-today{background:#344f60!important}
.cal-date-action{appearance:none;background:none;border:0;padding:1px 3px;margin:0;
 font:inherit;font-weight:800;text-align:left;color:inherit;cursor:pointer;white-space:nowrap;
 display:inline-flex;align-items:center;gap:3px;min-height:24px;width:auto}
.cal-date-action:hover{text-decoration:underline;text-underline-offset:3px;color:var(--yellow)}
.cal-date-action:focus-visible{outline:2px solid var(--focus);border-radius:4px}
.hover-ledger,.hover-ledger.expanded{max-height:min(290px,53vh);width:min(365px,calc(100vw - 18px));}
.ledger-pop-head.compact-date{padding:9px 12px;background:#38384c}
.ledger-pop-head.compact-date>strong{font-size:.77rem;margin:0;font-weight:750;color:var(--sub)}
.ledger-pop-entries{max-height:235px;overflow:auto}
.ledger-pop-entries .transaction-row.entry-spotlight{
 animation:entry-flash 1.1s ease-in-out 2;background:#5e5065;border-radius:8px;
}
@keyframes entry-flash{0%,100%{background:#5e506522}50%{background:#7a6077}}
.cal-day.day-selected .cal-datebar{outline:none;background:inherit}

.ledger-pop-head.compact-date{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ledger-close{background:transparent;border:0;color:var(--sub);font-size:1.25rem;font-weight:600;
 padding:0 5px;min-height:26px;line-height:1;cursor:pointer;border-radius:5px}
.ledger-close:hover{color:var(--ink);background:#4a4960}

/* v0.0.1.3: Sunday-first calendar with contiguous PAY-WEEK segments.
   A Thursday–Wednesday pay week necessarily wraps at the calendar's
   Sunday row boundary; both portions use the same shared-panel styling. */
.calendar-grid{
 display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(105px,1fr);
 gap:7px;padding:7px;background:#202231;align-content:stretch;min-width:0;
}
.calendar-row{
 display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:0;
 min-height:0;gap:0;
}
.payweek-panel{
 display:grid;grid-template-columns:repeat(var(--span),minmax(0,1fr));
 min-width:0;min-height:0;grid-column:span var(--span);
 margin:0 3px;border:2px solid #66677a;border-radius:10px;overflow:hidden;
 background:#2d3042;box-shadow:0 1px 2px #12132155;
}
.payweek-panel.selected-payweek{
 background:#34434a;border-color:#95dece;
 box-shadow:0 0 0 1px #95dece44;
}
.payweek-panel.current-payweek:not(.selected-payweek){
 border-color:#777f94;background:#303644;
}
/* Cells are children of the week panel; only interior dividers are drawn. */
.calendar-grid .payweek-panel .cal-day,
.calendar-grid .payweek-panel .cal-day.in-current-week:not(.in-selected),
.calendar-grid .payweek-panel .cal-day.in-selected{
 border:0!important;border-radius:0!important;box-shadow:none!important;
 background:transparent!important;min-width:0;min-height:0;
}
.calendar-grid .payweek-panel .cal-day:not(:last-child){border-right:1px solid #51566b!important}
.calendar-grid .payweek-panel .cal-day .cal-datebar,
.calendar-grid .payweek-panel .cal-day.in-current-week .cal-datebar{
 border:0!important;border-radius:0!important;background:#38394e;
 padding:5px 4px;min-height:35px;
}
.calendar-grid .payweek-panel.selected-payweek .cal-datebar{background:#3b5257!important}
.calendar-grid .payweek-panel.current-payweek:not(.selected-payweek) .cal-datebar{background:#3a4153!important}
.calendar-grid .payweek-panel .cal-day.is-past:not(.is-today){
 background:#222433!important;color:#9b9bad!important;
}
.calendar-grid .payweek-panel .cal-day.is-past:not(.is-today) .cal-datebar{
 background:#2a2c3b!important;opacity:.7;
}
.calendar-grid .payweek-panel .cal-day.is-past:not(.is-today) .cal-entries{
 opacity:.48;filter:saturate(.4);
}
.calendar-grid .payweek-panel .cal-day.is-past:not(.is-today) .cal-date{
 color:#a8a9b9!important;text-decoration:line-through;
}
.calendar-grid .payweek-panel .cal-day.is-today{
 background:#355267!important;
}
.calendar-grid .payweek-panel .cal-day.is-today .cal-datebar{background:#42637a!important}
.calendar-grid .payweek-panel .cal-day .cal-date-action:hover{
 text-decoration:underline;text-underline-offset:3px;
}
@media(max-width:1150px){.calendar-grid{gap:5px;padding:5px;grid-auto-rows:minmax(85px,1fr)}.payweek-panel{margin:0 2px;border-width:1.5px}}
@media(max-width:820px){.calendar-grid{grid-auto-rows:minmax(80px,1fr)}}
@media(max-width:480px){
 .calendar-grid{gap:4px;padding:4px;grid-auto-rows:minmax(67px,1fr)}
 .payweek-panel{margin:0 1px;border-radius:7px;border-width:1px}
 .calendar-grid .payweek-panel .cal-day .cal-datebar{min-height:31px;padding:3px 1px}
}
/* Compact daily ledger: date left, fixed and variable totals right. */
.ledger-pop-head.compact-date{
 display:grid;grid-template-columns:minmax(65px,1fr) auto 23px;
 align-items:start;gap:8px;padding:10px 10px;background:#37394e;
}
.ledger-pop-head.compact-date>strong{font-size:.73rem;font-weight:760;
 color:var(--ink);margin:2px 0 0;line-height:1.4;overflow-wrap:normal}
.daily-popup-totals{display:flex;flex-direction:column;align-items:flex-end;gap:6px;min-width:0}
.daily-total-row{display:flex;align-items:baseline;justify-content:flex-end;
 gap:9px;font-size:.69rem;white-space:nowrap;line-height:1.3}
.daily-total-row span{font-weight:740}
.daily-total-row strong{font-variant-numeric:tabular-nums;font-size:.74rem;font-weight:810}
.ledger-pop-head .ledger-close{padding:0;width:22px;min-height:23px}
@media(max-width:480px){.ledger-pop-head.compact-date{gap:5px;padding:9px 8px}
 .daily-total-row{gap:5px;font-size:.66rem}.daily-total-row strong{font-size:.7rem}}
