/* Lemon sea salt. Content stays still; motion belongs to interactions. */
:root{
  --paper:#f3f8fb;--surface:#fff;--apricot:#e5f2fb;--lemon:#1c76b0;
  --ink:#193d53;--muted:#506d80;--line:#dce8ef;--green:#1b776d;--expense:#b34443;--field-focus:#1c76b0;
  --primary-ink:#fff;--primary-hover:#155f91;--sand:#f7f1e5;--citrus:#f6d566;
  --nav:#e6f1f9;--badge:#f0f4f6;--badge-ink:#476477;--selected:#dfedf8;
  --hover:#f1f7fb;--track:#edf2f5;--track-fill:#9aafbc;
  --chart-expense-start:189,86,80;--chart-expense-end:240,206,202;
  --chart-income-start:40,143,128;--chart-income-end:194,229,218;
  --bar:#c56861;--bar-income:#48988a;--leader:#a6bece;
  --shadow:0 8px 24px #1949621c;--overlay:#183b514f;
  --toast-bg:#edf6fc;--toast-ink:#193d53;--toast-line:#ccdfeb;--toast-success:#1b776d;
  --toast-shadow:0 6px 18px #1949621a;
  --toolbar-text-size:14px;
  --page-toolbar-height:64px;
  --ledger-content-inset:26px;
  --feature-content-inset:30px;
  --ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--ease-drawer:cubic-bezier(.32,.72,0,1);
  background:var(--paper);color:var(--ink);font-size:15px;-webkit-font-smoothing:antialiased;
}
::selection{background:var(--selection-bg);color:var(--ink)}
*{scrollbar-color:var(--scroll-thumb) transparent;scrollbar-width:thin}
body{background:var(--paper)}
h1{font-size:26px;letter-spacing:-.025em;font-weight:650}
h2{font-weight:600;letter-spacing:-.015em}
.num{font-variant-numeric:tabular-nums lining-nums;letter-spacing:-.025em}
.app-header{position:sticky;inset:0 0 auto;width:100%;height:var(--page-titlebar-height);padding:0 max(32px,calc((100vw - 1120px)/2));background:var(--surface);border:0;border-bottom:1px solid var(--line);display:flex;flex-direction:row;align-items:center;gap:56px;z-index:11}
.brand{font-size:var(--page-title-size);font-weight:650;letter-spacing:-.03em;gap:11px;white-space:nowrap}
.brand img{width:40px;height:40px}
.brand small{font-size:10px;letter-spacing:.12em;font-weight:450;margin-top:3px}
.workspace{margin:0}
main{max-width:1184px;padding:38px 32px var(--page-end-space);margin:auto}
.page-heading{margin-bottom:24px;min-height:48px}
.ledger-title{position:sticky;top:84px;z-index:10;background:var(--paper);padding-inline:var(--ledger-content-inset)}
.ledger-title .header-actions{margin-right:-12px}
.ledger-overview{padding-inline:var(--ledger-content-inset)}
:is(.ledger-overview,.ledger-browse-toolbar,.stats-toolbar){min-height:var(--page-toolbar-height);padding-block:10px;margin-block:0}
.ledger-top{display:flow-root;position:sticky;top:84px;z-index:10;background:var(--paper);margin:-38px -32px 0;padding:38px 32px 0}
.ledger-top .ledger-title{position:static}
/* Keep each feature's navigation and primary controls together while the
   content scrolls. The search input remains in normal document flow. */
.feature-page-top{position:sticky;top:84px;z-index:10;background:var(--paper);margin:-38px -32px 0;padding:38px 32px 0;isolation:isolate}
.stats-page-sticky{padding-bottom:0}
.stats-page-sticky .stats-toolbar{margin-bottom:0}
.settings-page-sticky{padding-bottom:24px}
.settings-page-sticky .feature-page-header{margin-bottom:0}
.ledger-heading.search-page-top{display:contents}
.search-page-sticky{padding-bottom:0}
.search-page-header{margin-bottom:24px}
.search-page-sticky .ledger-browse-toolbar{margin-bottom:0}
.search-page-top>.ledger-toolbar{margin-bottom:16px}
html[data-page=ledger]{scroll-padding-top:148px}
.ledger-search{background:var(--surface);width:300px;border-radius:14px;padding:1px 4px;border-color:var(--line)}
.ledger-search .search-icon{color:var(--muted);width:42px}
.ledger-search input{font-size:var(--toolbar-text-size)}.ledger-search input::placeholder{color:var(--muted);opacity:1}
.ledger-toolbar{position:relative;display:grid;grid-template-columns:minmax(0,1fr);align-items:center;width:460px;max-width:100%;min-width:0;padding:3px 8px 3px 0;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.ledger-toolbar:has(input:focus)::after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:1px;background:var(--field-focus);pointer-events:none}
.ledger-toolbar .ledger-search{width:100%;min-width:0;border:0;border-radius:0;background:transparent;padding:0}
.ledger-period{display:flex;align-items:center;min-height:44px;width:128px}
.ledger-period .month-control{width:100%}
.ledger-period .month-picker-trigger{width:100%;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 18px;gap:7px;text-align:left;padding:0}
.primary{background:var(--lemon);color:var(--primary-ink);border-radius:14px;min-height:48px;font-weight:600}
@media(hover:hover) and (pointer:fine){:root:not([data-pointer-type=touch]) .primary:hover{background:var(--primary-hover)}}
.secondary{background:var(--surface);border-color:var(--line);border-radius:12px}

.month-picker-trigger svg{color:var(--field-focus)}



.stats-summary{container-type:inline-size}



:is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups)>.day-group{background:var(--surface);border:0;border-radius:20px;padding:21px var(--ledger-content-inset) 0;margin-bottom:20px;overflow:hidden}
:is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups) .day-heading{margin-inline:calc(-1 * var(--ledger-content-inset));padding-inline:var(--ledger-content-inset);padding-top:0}
:is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups) .day-group>.entries{margin-inline:calc(-1 * var(--ledger-content-inset))}
.day-heading{border-color:var(--line);gap:8px 16px;padding-bottom:15px}
.day-heading h2{font-size:15px;font-weight:600}.day-heading small{font-size:14px;gap:8px 18px;color:var(--muted)}
.entry-row{gap:16px;padding:17px 4px;min-height:82px;border-radius:14px}
.entry-row::after{left:12px;right:12px;border-top-color:var(--line)}
:is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups) .entry-row{padding-inline:var(--ledger-content-inset);border-radius:0}
:is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups) .entry-row::after{left:0;right:0}
:is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups) .entries>li:last-child .entry-row::after{content:none}
:is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups) .entry-row:focus-visible{outline-offset:-3px}
@media(hover:hover) and (pointer:fine){:root:not([data-pointer-type=touch]) .entry-row:hover,:root:not([data-pointer-type=touch]) .setting-row:hover{background:var(--hover)}}
.category-badge{width:44px;height:44px;border-radius:15px;background:var(--badge);color:var(--badge-ink)}
.entry-copy strong{font-size:16px;font-weight:500}.entry-copy small{font-size:13px;margin-top:5px;color:var(--muted)}
.entry-amount{font-size:21px;font-weight:450}.entry-row .row-chevron{color:var(--muted);margin-left:16px}.income{color:var(--green)}.expense{color:var(--expense)}
.segments{background:var(--segments-bg);border:0;border-radius:13px;gap:4px;padding:4px}
.segments button{font-weight:450;border-radius:10px;min-height:36px;color:var(--muted)}
.segments button[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--pill-shadow)}
.stats-toolbar{margin-bottom:20px;grid-template-columns:108px minmax(0,1fr);padding-inline:var(--feature-content-inset)}
.stats-toolbar>.segments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-column:2;grid-row:1;justify-self:end}
.stats-toolbar>.segments button{font-size:var(--toolbar-text-size)}
.stats-period-control{width:108px;height:44px;justify-self:start;grid-column:1;grid-row:1;justify-content:flex-start}
.stats-period-control .month-control{width:100%;justify-content:flex-start}
.stats-period-control .month-picker-trigger{width:max-content;min-width:0;display:inline-flex;align-items:center;gap:7px;text-align:left;padding:0;white-space:nowrap}
.stats-card-switch{width:132px;flex:none;max-width:54%}
.stats-card-switch button{min-height:36px;padding:6px 10px;font-size:14px}
.stats-panel>.section-heading{gap:12px;flex-wrap:nowrap;align-items:center}
.stats-panel>.section-heading h2{min-width:0;white-space:nowrap}
.stats-summary{background:var(--apricot);border:0;border-radius:20px;padding:26px var(--feature-content-inset);margin-bottom:24px;gap:18px 20px}
.stats-summary>div{text-align:left;min-width:0;padding:0;border:0}
.stats-summary>[data-summary=income]{position:relative;border-left:0}
.stats-summary>[data-summary=income]::before{content:"";position:absolute;top:0;bottom:0;left:-10px;border-left:1px solid var(--summary-line)}
.stats-summary>[data-summary=balance]{grid-column:1/-1;border-left:0;border-top:1px solid var(--summary-line);padding-top:16px}
.stats-summary span{font-size:13px}.stats-summary strong{display:block;font-size:min(var(--stats-number-size,23px),calc((100cqi - 20px)/2 / var(--summary-fit,8)));color:var(--ink);font-weight:550;line-height:38px;min-height:38px;white-space:nowrap}
.stats-summary>[data-summary=expense] strong{color:var(--expense)}
.stats-summary>[data-summary=income] strong{color:var(--green)}
.stats-panel{border:0;background:var(--surface);border-radius:20px;padding:28px var(--feature-content-inset);margin-bottom:24px}
.section-heading{margin-bottom:24px}.section-heading h2{font-size:18px}
.distribution{gap:28px;align-items:center}.donut-center>span{color:var(--muted)}.donut-center strong{font-weight:550}
.rankings{gap:0 26px}.ranking{border-radius:12px;padding:14px 5px;gap:10px}
.stats-panel .ranking{padding-inline:0}
.ranking .category-badge{border-radius:11px;width:34px;height:34px}.ranking-name{font-size:14px}.rank-amount{font-size:14px}
.track{height:3px;background:var(--track)}.track span{background:var(--track-fill)}
.category-breakdown .track>span{background:var(--expense)}
.category-breakdown:has([data-panel=composition][data-type=income][aria-pressed=true]) .track>span{background:var(--green)}
.entry-ranking-panel .section-heading{margin-bottom:8px}.entry-rankings .entry-row{min-height:82px}.entry-date{font-size:12px;margin-top:2px}
.entry-ranking-panel{--ranking-inset:var(--feature-content-inset);overflow:hidden}
.entry-ranking-panel .stats-card-body>.entry-rankings{margin-inline:calc(-1 * var(--ranking-inset))}
.entry-rankings .entry-row{padding-inline:var(--ranking-inset);border-radius:0}
.entry-rankings .entry-row::after{left:0;right:0}
.entry-rankings .entry-row:focus-visible{outline-offset:-3px}
.ranking-more{font-size:14px;color:var(--field-focus);padding:14px 0;margin-top:8px}@media(hover:hover) and (pointer:fine){:root:not([data-pointer-type=touch]) .ranking-more:hover{background:var(--hover)}}
.trend-bar span{background:var(--bar);border-radius:5px 5px 0 0}
.trend-chart[data-type=income] .trend-bar span{background:var(--bar-income)}
.trend-bar[aria-pressed=true]>span{background:var(--expense)}
.trend-chart[data-type=income] .trend-bar[aria-pressed=true]>span{background:var(--green)}
.trend-panel>.section-heading{margin-bottom:8px}.trend-panel .trend-range{display:block;margin:0 0 12px;line-height:1.6;overflow-wrap:anywhere}
.trend-grid>span{border-top-style:solid;opacity:.7}.trend-plot{border-left:0}.trend-range,.trend-y-axis{font-size:12px}.trend-x-axis{font-size:11px}
.wheel-selection{background:var(--selected)}.month-wheel [role=option]{color:var(--muted)}
.settings-account{background:var(--apricot);border-radius:20px;padding:26px var(--feature-content-inset)}.settings-account img{width:48px;height:48px}
.setting-section h2{font-size:14px;color:var(--muted);margin:0 var(--feature-content-inset) 12px}.setting-list{background:var(--surface);border:0;border-radius:18px}
.setting-row{padding:18px var(--feature-content-inset);gap:14px}.setting-row>svg{color:var(--badge-ink);width:20px;height:20px}.setting-row>svg:last-child{color:var(--muted)}.setting-row small{font-size:12px}
.empty{border:0;background:var(--surface);color:var(--muted);padding:42px 20px}.empty svg{color:var(--field-focus)}
dialog{background:var(--surface);border:0;border-radius:24px;box-shadow:var(--dialog-shadow);width:min(480px,calc(100vw - 40px))}
dialog::backdrop{background:var(--overlay);backdrop-filter:none}
.dialog-head{padding:23px 26px 8px}.dialog-head h2{font-size:22px}.dialog-body{padding:14px 26px 24px}
.dialog-footer{background:var(--surface);padding:16px 26px 22px;border-color:var(--line)}
.entry-switch{margin-bottom:24px}.entry-switch .segments{width:220px}.entry-switch button[aria-pressed=true]{background:var(--lemon);color:var(--surface);box-shadow:none}
.editor-content .entry-switch .segments{width:100%}
.amount-field>span{font-size:13px}.amount-input input{font-size:44px;font-weight:550;height:65px;color:var(--ink);font-variant-numeric:tabular-nums}
.category-fieldset legend{font-size:13px}
.amount-input input::placeholder{color:var(--amount-placeholder);opacity:1}.amount-input b{font-size:25px;color:var(--muted)}
.category-fieldset{margin-block:22px}.category-choice{background:var(--badge);border:1px solid transparent;border-radius:14px;min-height:67px}
.category-choice[aria-pressed=true]{background:var(--selected);border-color:var(--field-focus)}.category-choice span{font-size:12px}.selected-check{right:5px;top:5px}
.inline-field{font-size:14px;gap:11px;padding:12px 0}.inline-field input::placeholder{color:var(--muted);opacity:1}
.entry-detail-amount{padding-block:24px 32px}.entry-details>div{font-size:15px}.error,.danger{color:var(--danger)}
.primary.danger{background:var(--danger-bg);color:var(--danger-ink)}
@media(hover:hover) and (pointer:fine){:root:not([data-pointer-type=touch]) .primary.danger:hover{background:var(--danger-hover)}}
.auth-page{max-width:1000px;min-height:100dvh;padding:60px 32px;display:grid;grid-template-columns:1fr 1fr;align-content:center;align-items:stretch;justify-items:stretch;gap:0}
.auth-identity{background:var(--apricot);border-radius:28px 0 0 28px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:48px}
.auth-identity>img{width:112px;height:112px}.auth-identity>div{font-size:30px;font-weight:600;letter-spacing:-.03em;text-align:center}
.auth-identity small{display:block;font-size:12px;letter-spacing:.12em;font-weight:400;margin-top:12px}
.auth-card{background:var(--surface);border:0;border-radius:0 28px 28px 0;padding:48px 38px;max-width:none}
.auth-card>.brand{display:none}.auth-card h1{font-size:25px;margin-bottom:28px}.auth-card .form-stack{gap:20px}.auth-card .form-stack>label{font-size:14px}
.auth-card .primary{margin-top:4px}
.connection-state img{width:56px;height:56px}
#toast{background:var(--toast-bg);color:var(--toast-ink);border:1px solid var(--toast-line);border-radius:14px;padding:13px 20px;font-size:14px;box-shadow:var(--toast-shadow)}.skip{color:var(--surface)}
@media(min-width:1100px){.distribution{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:32px}.distribution .rankings{grid-template-columns:1fr}}
@media(min-width:761px) and (max-width:1050px){
  .app-header{padding:0 28px;width:100%;height:var(--page-titlebar-height);gap:28px}main{padding:32px 28px var(--page-end-space)}
  .ledger-title{top:76px}
  .ledger-top{top:76px;margin:-32px -28px 0;padding:32px 28px 0}
  .feature-page-top{top:76px;margin:-32px -28px 0;padding:32px 28px 0}
  .stats-page-sticky{padding-bottom:20px}.settings-page-sticky{padding-bottom:24px}.search-page-sticky{padding-bottom:8px}
  
}
@media(max-width:760px){
  .ledger-title{display:none}
  :root{--page-titlebar-height:80px;--page-title-size:20px;--page-title-line:28px;--toolbar-text-size:16px;--ledger-content-inset:16px;--feature-content-inset:20px;--entry-dock-bottom:max(4px,calc(env(safe-area-inset-bottom) - 8px))}
  .feature-page-top{top:0;margin:calc(-16px - env(safe-area-inset-top)) -16px 0;padding:0 16px 0}
  .stats-page-sticky{padding-bottom:0}.settings-page-sticky{padding-bottom:20px}.search-page-sticky{padding-bottom:0}
  .app-header{display:none}
  .mobile-header{position:sticky;top:0;z-index:11;background:var(--paper);display:grid;grid-template-columns:minmax(0,1fr) auto;padding:calc(20px + env(safe-area-inset-top)) calc(16px + var(--ledger-content-inset) - 11.5px) 16px calc(16px + var(--ledger-content-inset));max-width:600px;margin:auto;gap:0 8px;align-items:center}
  .ledger-top{top:calc(var(--page-titlebar-height) + env(safe-area-inset-top));margin:0 -16px;padding:0 16px}
  html[data-page=ledger] #main{padding-top:0}
  html[data-page=ledger]{scroll-padding-top:calc(148px + env(safe-area-inset-top))}
  .mobile-header .brand{grid-column:1;grid-row:1;font-size:var(--page-title-size);letter-spacing:-.03em;gap:9px;min-height:44px;min-width:0}.mobile-header .brand img{width:36px;height:36px;flex-shrink:0}
  .mobile-header .brand>span{min-width:0;overflow:hidden;text-overflow:ellipsis}
  .mobile-header .ledger-functions{grid-column:2;grid-row:1;justify-self:end;gap:0}
  main{padding:6px 16px var(--page-end-space);max-width:600px}.ledger-heading{height:auto;min-height:0;margin:0 0 8px}
  .ledger-heading .header-actions{position:static;display:block;width:100%}
  .ledger-toolbar{width:100%;min-height:52px;border:1px solid transparent;gap:0}
  .ledger-toolbar .ledger-search .search-icon{width:40px}
  
  
  
  
  
  :is(#ledger-entries,#search-entries,.page-entry-groups,.ledger-day-groups)>.day-group{padding:18px var(--ledger-content-inset) 0;margin-bottom:16px;border-radius:20px}
  .ledger-overview .summary-values{font-size:12px;column-gap:10px}
  .day-heading{padding:0 0 14px;gap:8px}.day-heading h2{font-size:14px}.day-heading small{font-size:13px;gap:8px 12px}
  .entry-row{padding:16px 0;gap:12px;min-height:80px}.entry-row::after{left:6px;right:6px}.category-badge{width:40px;height:40px;border-radius:14px}
  .entry-copy strong{font-size:15px}.entry-copy small{font-size:12px}.entry-amount{font-size:20px}
  .stats-toolbar{display:grid;grid-template-columns:108px minmax(0,1fr);gap:12px;margin:0 0 18px;align-items:center}.stats-toolbar>.segments{width:100%;display:grid}
  .stats-toolbar>.segments button{padding:6px 16px;min-height:36px}.stats-period-control{height:44px;justify-content:flex-start}
  .stats-period-control .month-label{min-width:0;padding:0;gap:7px}
  .stats-summary{padding:22px var(--feature-content-inset);border-radius:20px;margin-bottom:20px;gap:18px 16px}
  .stats-summary span{font-size:12px;margin-bottom:7px}.stats-summary strong{white-space:nowrap;letter-spacing:-.025em;line-height:30px;min-height:30px}
  .stats-summary>[data-summary=income]::before{left:-8px}
  .stats-panel{padding:23px var(--feature-content-inset);border-radius:20px;margin-bottom:18px}.section-heading{margin-bottom:20px}.section-heading h2{font-size:17px}
  .section-heading .segments button{font-size:12px;padding:6px 12px;min-height:32px}.distribution{gap:24px}.rankings{grid-template-columns:1fr}
  .ranking{padding:12px 2px;gap:10px}.ranking-name{font-size:14px}.entry-rankings .entry-row{min-height:80px;gap:10px}
  .entry-rankings .ranking-position{width:16px;margin-right:-2px}.ranking-position{font-size:11px}
  .entry-rankings .category-badge{width:36px;height:36px;border-radius:12px}.entry-rankings .entry-amount{font-size:19px}.entry-date{font-size:11px}
  .trend-range,.trend-y-axis{font-size:11px}.trend-x-axis{font-size:10px}
  .settings-account{padding:22px var(--feature-content-inset);border-radius:20px;margin:12px 0 28px}.setting-section h2{font-size:13px}.setting-row{padding:17px var(--feature-content-inset)}.setting-row small{font-size:11px}
  dialog{width:100%;max-width:100%;border-radius:26px 26px 0 0}.drag-handle{background:var(--line);width:34px;height:4px;margin-top:10px}
  .dialog-head{padding:10px 22px 4px}.dialog-head h2{font-size:22px}.dialog-body{padding:10px 22px 18px}
  .dialog-footer{padding:14px 22px calc(16px + env(safe-area-inset-bottom))}.dialog-footer .primary{min-height:48px}
  .entry-switch{margin-bottom:20px}.amount-input input{font-size:40px;height:60px}.category-fieldset{margin:20px 0}
  .category-grid{gap:8px}.category-choice{min-height:64px;border-radius:13px;gap:6px}.category-choice span{font-size:11px}.inline-field{padding:9px 0;font-size:14px}.inline-field input{font-size:16px}
  .auth-page{display:block;min-height:100dvh;padding:calc(54px + env(safe-area-inset-top)) 24px 60px;max-width:460px}.auth-identity{display:none}
  .auth-card{padding:26px 12px;background:transparent;border:0;border-radius:0}.auth-card>.brand{display:flex;margin-bottom:52px}.auth-card h1{font-size:26px;margin-bottom:32px}.auth-card .form-stack{gap:22px}
  #toast{font-size:13px}
}
@media(max-width:380px){
  .mobile-header .brand{font-size:var(--page-title-size);gap:8px}.mobile-header .brand img{width:32px;height:32px}
  .ledger-overview{gap:8px}.ledger-overview .summary-values{font-size:11px;column-gap:6px}
}
@media(max-width:360px){
  .mobile-header{column-gap:6px}
  .mobile-header .brand{font-size:var(--page-title-size);gap:8px}.mobile-header .brand img{width:32px;height:32px}
  
  .day-heading small{margin-left:0;justify-content:flex-start;width:100%;font-size:13px}.stats-toolbar{gap:6px}.stats-toolbar>.segments button{padding:6px 11px}
  :is(#ledger-entries,.ledger-day-groups) .day-heading small{justify-content:space-between}
  .stats-summary{padding-inline:var(--feature-content-inset)}.stats-summary{--stats-number-size:21px}.stats-summary>div{padding-left:0}.stats-panel{padding-inline:var(--feature-content-inset)}
  .dialog-body{padding-inline:18px}.category-grid{gap:6px}
}
@media(max-width:340px){
  .mobile-header{column-gap:6px}
  .mobile-header .brand{font-size:var(--page-title-size);gap:6px}.mobile-header .brand img{width:28px;height:28px}
  .ledger-overview{gap:6px}.ledger-overview .summary-values{font-size:10px;column-gap:4px}
  .ledger-overview .summary-values>div{gap:3px}.ledger-overview .summary-values .currency{margin-right:0}
}
@media(max-width:330px){
  .mobile-header{column-gap:4px}
  .mobile-header .brand{font-size:var(--page-title-size);gap:4px}.mobile-header .brand img{width:24px;height:24px}
}

/* Entry pages share a compact rhythm; normal screens fit all default
   categories, while short viewports and the keyboard retain real scrolling. */
@media(max-width:760px){
  .detail-page:has(.detail-page-form) .detail-page-header{padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:16px}
  .detail-page-form .editor-content{padding-top:8px;padding-bottom:12px}
  .detail-page-form .entry-switch{margin-bottom:12px}
  .detail-page-form .amount-field{padding-bottom:12px}
  .detail-page-form .amount-field>.amount-input{margin-top:4px}
  .detail-page-form .amount-input input{font-size:36px;height:52px}
  .detail-page-form .amount-input b{font-size:22px}
  .detail-page-form .category-fieldset{margin:12px 0}
  .detail-page-form .category-fieldset legend{margin-bottom:8px}
  .detail-page-form .category-grid{gap:6px}
  .detail-page-form .category-choice{min-height:clamp(48px,calc((100svh - 540px)/4),60px);padding:5px 2px;gap:4px;border-radius:12px}
  .detail-page-form .category-choice>svg{width:20px;height:20px}
  .detail-page-form .category-choice>span{line-height:1.2}
  .detail-page-form .inline-field{padding:4px 0}
  .detail-page-form .detail-page-footer{padding-top:10px;padding-bottom:calc(10px + env(safe-area-inset-bottom))}
}

/* Reserve the button plus equal space above and below it on every list page.
   The shared value already includes the button's safe-area-aware bottom gap. */
#main>.stats-panel:last-child,.page-scroll>.stats-panel:last-child{margin-bottom:0}
@media(max-width:1050px) and (min-width:761px){:root{--page-titlebar-height:76px}}

/* One title rhythm for the brand and every page title. */
:is(.app-header,.mobile-header) .brand,:is(.search-page-header,.feature-page-header,.detail-page-header,.ledger-title) h1{font-size:var(--page-title-size);font-weight:var(--page-title-weight);line-height:var(--page-title-line);letter-spacing:-.03em}
.app-header .brand small{line-height:14px}
:is(.search-page-header,.feature-page-header,.detail-page-header) h1{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(min-width:761px){.ledger-top .ledger-title{min-height:44px}}
@media(max-width:760px){
  .mobile-header,:is(.search-page-header,.feature-page-header,.detail-page-header){height:calc(var(--page-titlebar-height) + env(safe-area-inset-top));min-height:calc(var(--page-titlebar-height) + env(safe-area-inset-top));padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:16px}
  :is(.search-page-header,.feature-page-header){margin-bottom:0;padding-inline:0}
  .settings-page-sticky{padding-bottom:0}
}
/* Native reading surface. Chrome is a sibling of the scrollport, so inertia
   and edge bounce can stay native without pulling navigation out of place. */
html:has(#ledger-shell:not([hidden])){overflow:hidden;scrollbar-gutter:auto}
#ledger-shell:not([hidden]){display:flex;flex-direction:column;height:var(--view-height,100dvh);overflow:hidden}
#ledger-shell .workspace{display:flex;flex-direction:column;flex:1;min-height:0}
#ledger-shell .app-header{position:relative;inset:auto;flex:none}
#ledger-shell .mobile-header{position:relative;top:auto;flex:none;width:100%;margin-block:0}
#main,.page-preview-main{--page-inline:32px;display:flex;flex-direction:column;flex:1;min-height:0;width:100%;margin-block:0;padding-block:0!important;overflow:hidden}
:is(#main,.page-preview-main) :is(.ledger-top,.feature-page-top){position:relative;top:auto;flex:none;margin-top:0}
/* Keep vertical inertia and pinch zoom native; horizontal drags belong to the
   page-return recognizer, even when a finger starts on an inner scrollport. */
#main,#detail-page-root,.page-scroll,.detail-page-content{touch-action:pan-y pinch-zoom}
.page-scroll{flex:1;min-height:0;margin-inline:calc(0px - var(--page-inline));padding:0 var(--page-inline) var(--page-end-space);overflow-x:hidden;overflow-y:scroll;overscroll-behavior-y:contain;scroll-padding-block:12px;-webkit-overflow-scrolling:touch}
.page-scroll>.ledger-toolbar{margin-bottom:16px}
.detail-page-content{overscroll-behavior-y:contain}
@media(min-width:761px) and (max-width:1050px){#main,.page-preview-main{--page-inline:28px}}
@media(max-width:760px){#main,.page-preview-main{--page-inline:16px}}
.page-scroll:focus-visible{outline:2px solid var(--field-focus);outline-offset:-2px}
.page-scroll,.detail-page-content{scrollbar-gutter:stable}
:is(#main,.page-preview-main) :is(.ledger-top,.feature-page-top){padding-right:calc(var(--page-inline) + var(--reading-scrollbar,0px))}
#ledger-shell .app-header{padding-right:calc(max(32px,calc((100vw - 1120px)/2)) + var(--reading-scrollbar,0px))}
@media(min-width:761px) and (max-width:1050px){#ledger-shell .app-header{padding-right:calc(28px + var(--reading-scrollbar,0px))}}
@media(max-width:760px){#ledger-shell .mobile-header{padding-right:calc(16px + var(--ledger-content-inset) - 11.5px + var(--reading-scrollbar,0px))}}
@media(max-width:340px){#ledger-shell .mobile-header{padding-right:calc(16px + var(--ledger-content-inset) - 9.5px + var(--reading-scrollbar,0px))}}
