:root{--ink:#14252d;--muted:#6b7b83;--brand:#164e63;--brand2:#0e7490;--line:#dbe5ea;--good:#087e5b;--danger:#b42318;--shadow:0 12px 34px rgba(22,78,99,.08)}
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 28px 18px;
  border: 1px solid var(--line);
  background: #f5f8fa;
  text-align: center;
}
.empty-state .empty-title {
  margin: 0;
  color: var(--ink);
  font-size: .95rem;
  font-weight: 750;
  line-height: 1.5;
}
.empty-state .empty-hint {
  max-width: 32em;
  margin: 0;
  color: var(--muted);
  font-size: .82rem;
  line-height: 1.7;
  overflow-wrap: anywhere;
}
.empty-state .empty-action {
  width: auto;
  max-width: 100%;
  min-height: 38px;
  margin: 4px 0 0;
  padding: 9px 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #e5edf0;
  color: var(--brand);
  font-size: .82rem;
  font-weight: 700;
  line-height: 1.4;
}
.empty-state .empty-action:disabled { opacity: .5; cursor: default; }
    button.backup-close,button.about-close,button.template-close,.calculator-heading button[aria-label="关闭计算器"]{display:flex;align-items:center;justify-content:center;padding:0;line-height:1;flex-shrink:0}
    button.backup-close svg,button.about-close svg,button.template-close svg,.calculator-heading button[aria-label="关闭计算器"] svg{display:block;flex-shrink:0;pointer-events:none}
    .calculator-heading button[aria-label="关闭计算器"] svg{width:20px;height:20px}
    *{box-sizing:border-box}html{font-size:16px}body{margin:0;min-height:100vh;background:linear-gradient(180deg,#edf5f8 0,#fafcfd 42%,#eef3f5 100%);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}button,input,select{font:inherit}button{cursor:pointer}.app{width:min(960px,100%);margin:auto;padding:20px 18px 90px}
    header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px 16px;margin:4px 0 22px;padding:0 2px}.hero-kicker{display:flex;align-items:center;gap:8px;color:var(--brand);font-size:.88rem;font-weight:850;letter-spacing:.02em}.hero-kicker::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--brand2);box-shadow:0 0 0 5px rgba(14,116,144,.10)}.brand-trigger{width:max-content;padding:7px 5px;border:0;border-radius:10px;background:transparent;text-align:left;transition:background .15s,transform .15s}.brand-trigger:active{background:rgba(14,116,144,.08);transform:scale(.98)}.brand-trigger:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(14,116,144,.14)}.hero-title{grid-column:1/-1;max-width:none;margin:8px 0 0;font-size:clamp(2rem,5.4vw,2.9rem);line-height:1.08;letter-spacing:-.05em;font-weight:900}.hero-title span{color:var(--brand2)}.header-action{height:38px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 12px 0 10px;border:1px solid #d6e7ed;border-radius:11px;background:#e8f3f7;color:var(--brand);font-size:.84rem;box-shadow:none;transition:transform .15s,background .15s}.header-action:active{transform:scale(.97);background:#dcecf2}.header-action svg{width:15px;height:15px;stroke-width:2.3}
    .ghost,.primary,.soft,.danger{border:0;border-radius:14px;padding:12px 16px;font-weight:780}.ghost{background:#fff;color:var(--brand);border:1px solid #e3ebef;box-shadow:0 5px 16px rgba(20,54,68,.07)}.primary{background:var(--brand);color:#fff;box-shadow:0 9px 22px rgba(22,78,99,.20)}.soft{background:#e7f1f4;color:var(--brand)}.danger{background:#fff0ee;color:var(--danger)}
    .card{background:rgba(255,255,255,.94);border:1px solid rgba(219,229,234,.95);border-radius:22px;padding:20px;box-shadow:var(--shadow)}.quick{margin-bottom:18px}.eyebrow{font-size:.78rem;font-weight:850;letter-spacing:.06em;color:var(--brand2)}h2{font-size:1.12rem;margin:6px 0 12px}.hint{font-size:.84rem;line-height:1.5;color:var(--muted);margin:0 0 12px}
    .quick-row{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}.quick-field{display:grid;gap:6px;color:var(--muted);font-size:.78rem;font-weight:700}.quick-input{width:100%;height:50px;border:1.5px solid var(--line);border-radius:14px;padding:0 13px;background:#fbfdfe;color:var(--ink);outline:none;font-size:1rem}.quick-input:focus,.field:focus{border-color:var(--brand2);box-shadow:0 0 0 4px rgba(14,116,144,.1)}.amount-input-wrap{position:relative;display:block}.amount-input-wrap .quick-input{padding-right:52px}.amount-plus{position:absolute;top:6px;right:6px;width:38px;height:38px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--brand);font-family:Arial,sans-serif;font-size:1.45rem;font-weight:400;line-height:1;touch-action:manipulation}.amount-plus:active{background:transparent;transform:scale(.92)}.amount-plus:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(14,116,144,.14)}.date-button{display:flex;align-items:center;justify-content:space-between;text-align:left;font-weight:650}.date-button svg{width:21px;height:21px;flex:0 0 auto}.quick-row .primary{grid-column:1/-1;width:100%;height:50px}.message{min-height:22px;margin:9px 2px 0;font-size:.84rem;color:var(--good)}.message.error{color:var(--danger)}
    .view-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;width:180px;margin:0 auto 16px;padding:4px;background:#edf3f5;border-radius:13px}.view-switch button{height:36px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-weight:750}.view-switch button.active{background:#fff;color:var(--brand);box-shadow:0 2px 8px rgba(20,37,45,.09)}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.month-nav>button:not(.month-title){width:42px;height:42px;padding:0;border:0;border-radius:50%;background:#e8f1f4;color:var(--brand);font-size:1.35rem}.month-title{border:0;background:transparent;text-align:center;cursor:pointer;padding:3px 18px;border-radius:12px;color:var(--ink)}.month-title:focus-visible{box-shadow:0 0 0 4px rgba(14,116,144,.1);outline:0}.month-title strong{display:block;font-size:1.45rem}.month-title span{font-size:.76rem;color:var(--muted)}
    .summary-top{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end;padding:2px 0 16px;border-bottom:1px solid var(--line)}.total-label{font-size:.78rem;color:var(--muted)}.total{font-size:2rem;font-weight:850;letter-spacing:-.04em}.summary-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.budget-btn{white-space:nowrap}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:15px 0}.stat{background:#f3f8fa;border-radius:14px;padding:12px}.stat span{display:block;color:var(--muted);font-size:.73rem}.stat strong{display:block;margin-top:4px;font-size:1rem}
    .bars{display:grid;gap:12px;margin-top:18px}.category-summary{width:100%;border:0;background:transparent;color:inherit;text-align:left;padding:7px 8px 4px 4px;border-radius:12px;transition:opacity .18s,background .18s}.category-summary:active,.category-summary.active{background:#f0f7fa}.category-summary.dim{opacity:.28}.barrow{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:9px}.cat{font-weight:760;padding-left:4px}.track{height:8px;border-radius:10px;background:#e8eef1;overflow:hidden}.fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),#22a3bd)}.fill.over{background:linear-gradient(90deg,#c2410c,#fb923c)}.amount{font-size:.84rem;font-variant-numeric:tabular-nums}.remain{text-align:right;color:var(--muted);font-size:.75rem;margin-top:2px}
    .section-head{display:flex;justify-content:space-between;align-items:center;margin:24px 0 8px}.section-head h3{font-size:1rem;margin:0}.count{font-size:.75rem;color:var(--muted)}.ledger{display:grid}.day-group{border-top:1px solid var(--line)}.day-summary{display:grid;grid-template-columns:72px 1fr auto 22px;gap:10px;align-items:center;padding:14px 0;cursor:pointer;list-style:none}.day-summary::-webkit-details-marker{display:none}.day-date{font-weight:780;white-space:nowrap}.day-count{font-size:.78rem;color:var(--muted)}.day-total{font-weight:800;font-variant-numeric:tabular-nums}.chevron{color:var(--muted);transition:transform .18s}.day-group[open] .chevron{transform:rotate(90deg)}.day-items{background:#f5f8fa;border-radius:14px;margin:0 0 12px;padding:2px 12px}.entry{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:11px 0;border-top:1px solid var(--line)}.entry:first-child{border-top:0}.name{font-weight:680;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag{display:block;width:max-content;font-size:.68rem;color:var(--brand2);font-weight:650;margin:3px 0 0;padding:2px 7px;border-radius:10px;background:#e7f1f4}.money{font-weight:760;font-variant-numeric:tabular-nums}.entry-actions{display:flex;align-items:center}.more{border:0;background:transparent;color:var(--brand);padding:8px 5px;font-weight:700}.copy-action{color:var(--muted)}.year-month-row{display:grid;grid-template-columns:58px 1fr auto 22px;gap:10px;align-items:center;width:100%;padding:15px 0;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);text-align:left}.year-month-row .month-name{font-weight:780}.year-month-row .month-count{font-size:.78rem;color:var(--muted)}.year-month-row .month-money{font-weight:800}.empty{text-align:center;color:var(--muted);padding:28px 10px;background:#f5f8fa;border-radius:14px;margin-top:8px}.undo-bar{position:fixed;z-index:1000;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(420px,calc(100% - 28px));display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:14px;background:#153f50;color:#fff;box-shadow:0 12px 32px rgba(12,40,52,.28)}.undo-bar[hidden]{display:none}.undo-bar button{border:0;background:transparent;color:#8ed9ec;font-weight:800;padding:6px}
    dialog{border:0;border-radius:20px;padding:0;box-shadow:0 25px 70px rgba(20,37,45,.28);width:min(460px,calc(100% - 28px))}dialog::backdrop{background:rgba(12,28,36,.46)}.modal{padding:22px}.modal h2{margin:0 0 16px}.form{display:grid;gap:13px}.label{font-size:.8rem;font-weight:700;color:var(--muted);display:grid;gap:6px}.field{width:100%;height:46px;border:1.5px solid var(--line);border-radius:12px;padding:0 12px;background:#fff;outline:none;color:var(--ink)}.modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:9px;margin-top:20px}.budget-grid,.type-grid{display:grid;gap:10px}.budget-row{display:grid;grid-template-columns:minmax(0,1fr) 105px 40px;gap:8px;align-items:end}.budget-row .label{gap:5px}.type-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;transition:opacity .12s}.type-row.dragging{opacity:.55}.type-actions{display:flex;gap:5px}.drag-handle,.type-delete{width:46px;height:46px;border:0;border-radius:12px;font-size:1.05rem;font-weight:800}.drag-handle{background:#e7f1f4;color:var(--brand);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.drag-handle:active{cursor:grabbing;background:#d5e8ed}.type-delete{background:#fff0ee;color:var(--danger)}.budget-remove{height:46px;border:0;border-radius:12px;background:#fff0ee;color:var(--danger);font-size:1.15rem;font-weight:800}.budget-remove[disabled]{visibility:hidden}.budget-add{width:100%;margin-top:12px;border:1.5px dashed #b8cdd6;background:#f6fafb;color:var(--brand);box-shadow:none}.backup-file-action{position:relative;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;justify-content:center;gap:3px}.backup-file-action .file{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;font-size:100px}.privacy{text-align:center;color:var(--muted);font-size:.75rem;margin-top:16px}.backup-modal{padding:24px}.backup-heading{display:flex;align-items:center;gap:12px}.backup-mark{width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center;border-radius:14px;background:#e7f1f4;color:var(--brand)}.backup-mark svg{width:23px;height:23px;stroke-width:2}.backup-heading h2{margin:0;font-size:1.22rem}.backup-hint{margin:16px 0 0;line-height:1.65}.backup-formats{margin-top:10px;color:var(--brand2);font-size:.72rem;font-weight:750;letter-spacing:.04em}.backup-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}.backup-actions button{height:50px;margin:0}.backup-actions #exportBtn{grid-column:1/-1}.backup-actions #closeBackup{grid-column:1/-1;height:40px;background:transparent;border:0;box-shadow:none;color:var(--muted)}.month-modal{padding:18px 20px 20px}.picker-head{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;margin-bottom:14px}.picker-head strong{text-align:center;font-size:1.35rem}.picker-arrow{width:44px;height:44px;border:0;border-radius:50%;background:#e8f1f4;color:var(--brand);font-size:1.5rem}.month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.month-option{height:52px;border:1.5px solid var(--line);border-radius:14px;background:#fbfdfe;color:var(--ink);font-weight:750}.month-option.selected{border-color:var(--brand);background:var(--brand);color:#fff;box-shadow:0 7px 18px rgba(22,78,99,.22)}.picker-actions{display:flex;justify-content:space-between;align-items:center;margin-top:18px}.picker-link{border:0;background:transparent;color:var(--brand2);font-weight:750;padding:10px}.calendar-week,.date-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-week{margin:4px 0 7px}.calendar-week span{text-align:center;color:var(--muted);font-size:.78rem;font-weight:700}.date-grid{gap:3px}.date-option{aspect-ratio:1;border:0;border-radius:50%;background:transparent;color:var(--ink);font-weight:650;font-size:.95rem}.date-option.outside{color:#a2adb2}.date-option.today:not(.selected){color:var(--brand2);box-shadow:inset 0 0 0 1.5px var(--brand2)}.date-option.selected{background:var(--brand);color:#fff;box-shadow:0 5px 13px rgba(22,78,99,.28)}
    html.modal-open,body.modal-open{overflow:hidden;overscroll-behavior:none}.data-health{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:16px}.health-item{padding:10px 8px;border-radius:12px;background:#f3f8fa}.health-item span{display:block;color:var(--muted);font-size:.68rem}.health-item strong{display:block;margin-top:3px;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compare-note{margin:2px 0 14px;padding:10px 12px;border-radius:12px;background:#f3f8fa;color:var(--muted);font-size:.78rem}.compare-note strong{color:var(--ink)}.year-trend{margin:16px 0 20px;padding:14px 10px 9px;border:1px solid var(--line);border-radius:15px}.trend-title{margin:0 4px 10px;color:var(--muted);font-size:.75rem}.trend-chart{height:116px;display:grid;grid-template-columns:repeat(12,1fr);gap:4px;align-items:end}.trend-col{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px}.trend-bar{width:min(18px,80%);min-height:2px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,#28a8c0,var(--brand))}.trend-label{color:var(--muted);font-size:.58rem}.search-box{display:grid;grid-template-columns:1fr auto;gap:8px;margin:14px 0 4px}.search-box input{height:42px;border:1.5px solid var(--line);border-radius:12px;padding:0 12px;background:#fbfdfe;color:var(--ink);outline:0}.search-box input:focus{border-color:var(--brand2);box-shadow:0 0 0 3px rgba(34,163,189,.1)}.search-box button{border:0;border-radius:12px;padding:0 13px;background:#e7f1f4;color:var(--brand);font-weight:750}.search-box button[hidden]{display:none}.import-preview-dialog{width:min(620px,calc(100% - 20px));max-height:min(82vh,760px)}.import-preview{padding:20px;max-height:min(82vh,760px);overflow:auto}.import-preview-head{display:flex;justify-content:space-between;gap:12px;align-items:start}.import-preview-head h2{margin:0}.preview-summary{color:var(--muted);font-size:.8rem;margin:5px 0 0}.preview-list{display:grid;gap:8px;margin-top:16px}.preview-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fbfdfe}.preview-row input{width:18px;height:18px}.preview-name{min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-meta{margin-top:3px;color:var(--muted);font-size:.7rem}.preview-side{text-align:right}.preview-amount{display:block;font-weight:800}.preview-category{height:34px;margin-top:5px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}.preview-actions{position:sticky;bottom:-20px;display:grid;grid-template-columns:1fr 1.5fr;gap:10px;margin:18px -20px -20px;padding:13px 20px calc(13px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);border-top:1px solid var(--line)}.safety-status{display:inline-flex;margin-top:10px;padding:5px 9px;border-radius:999px;background:#e7f1f4;color:var(--brand);font-size:.72rem;font-weight:750}.safety-status.error{background:#fff0ee;color:var(--danger)}.safety-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:10px;margin-top:20px}.safety-actions button{height:48px}.safety-actions .primary{white-space:nowrap}
    @media(max-width:620px){.app{padding:18px 13px 76px}header{margin-bottom:18px;gap:10px 12px}.hero-kicker{font-size:.82rem}.hero-title{margin-top:6px;font-size:1.9rem;letter-spacing:-.045em}.header-action{height:36px;padding:0 11px 0 9px;font-size:.82rem}.card{padding:17px;border-radius:19px}.stats{gap:6px}.stat{padding:10px 8px;background:#f3f8fa}.barrow{grid-template-columns:46px 1fr auto;gap:6px}.amount{font-size:.77rem}.day-summary{grid-template-columns:68px 1fr auto 18px;gap:7px}.entry{grid-template-columns:minmax(0,1fr) auto auto;gap:7px}.total{font-size:1.75rem}.month-dialog{width:100%;max-width:none;margin:auto 0 0;border-radius:24px 24px 0 0}.month-modal{padding:18px 18px calc(18px + env(safe-area-inset-bottom))}.month-option{height:56px;font-size:1rem}}
    .update-bar{position:fixed;z-index:1200;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(520px,calc(100% - 24px));display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:15px;background:#153f50;color:#fff;box-shadow:0 16px 42px rgba(12,40,52,.3)}.update-bar[hidden]{display:none}.update-bar span{font-size:.8rem}.update-bar button{border:0;border-radius:10px;padding:9px 12px;background:#fff;color:var(--brand);font-weight:800;white-space:nowrap}
    .import-preview{overflow-x:hidden}.preview-list{min-width:0}.preview-row{grid-template-columns:28px minmax(0,1fr) 92px;min-width:0;max-width:100%;overflow:hidden}.preview-row>span:nth-child(2){min-width:0;overflow:hidden}.preview-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-side{width:92px;min-width:0;overflow:hidden}.preview-amount{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-category{width:100%;max-width:100%}
    @media(max-width:620px){input:not([type="checkbox"]):not([type="hidden"]),select,textarea{font-size:16px!important}}
    .backup-modal{padding:24px}.backup-heading{display:grid;grid-template-columns:48px minmax(0,1fr) 38px;gap:13px;align-items:center}.backup-mark{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,#eaf5f8,#dcecf1)}.backup-heading-copy{min-width:0}.backup-heading-copy h2{margin:0;font-size:1.22rem;letter-spacing:-.02em}.backup-heading-copy p{margin:4px 0 0;color:var(--muted);font-size:.74rem}.backup-close{width:38px;height:38px;border:0;border-radius:50%;background:#f2f6f8;color:var(--muted);font-size:1.35rem;line-height:1}.data-health{gap:8px;margin-top:20px}.health-item{padding:11px 10px;border:1px solid #e4edf1;background:#f7fafb}.health-item span{font-size:.66rem}.health-item strong{font-size:.8rem}.backup-section-title{margin:20px 2px 8px;color:var(--muted);font-size:.72rem;font-weight:750;letter-spacing:.08em}.backup-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:0}.backup-actions button{margin:0;height:auto;text-align:left;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px}.backup-actions button span{font-size:1rem;font-weight:800}.backup-actions button small{font-size:.68rem;font-weight:600;opacity:.72}.backup-actions #exportBtn{grid-column:1/-1;min-height:66px;padding:12px 17px;box-shadow:0 12px 28px rgba(22,78,99,.2)}.backup-sub-action{min-height:70px;padding:11px 13px}.backup-formats{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);color:var(--muted);font-size:.67rem;letter-spacing:0}.backup-formats strong{color:var(--brand2);font-size:.67rem;text-align:right}.backup-close:active{background:#e5eef2}
    @media(max-width:620px){.backup-modal{padding:21px}.backup-heading{grid-template-columns:44px minmax(0,1fr) 36px;gap:11px}.backup-mark{width:44px;height:44px}.backup-sub-action{min-height:68px;padding:10px}.backup-actions button span{font-size:.94rem}.backup-actions button small{font-size:.62rem}.backup-formats{align-items:flex-start;flex-direction:column;gap:4px}.backup-formats strong{text-align:left}}
    .backup-heading{grid-template-columns:48px minmax(0,1fr) 48px}.backup-close{width:48px;height:48px;padding:0;display:grid;place-items:center;line-height:1;background:#e4eef2;color:#607985}.backup-close:hover{background:#d9e8ed}.backup-close svg{display:block;width:20px;height:20px}.backup-sub-action em{display:block;margin-top:5px;color:var(--brand2);font-size:.58rem;font-style:normal;font-weight:750;line-height:1.35}.backup-actions #statementImportBtn{min-height:82px}
    @media(max-width:620px){.backup-heading{grid-template-columns:44px minmax(0,1fr) 44px}.backup-close{width:44px;height:44px}.backup-close svg{width:19px;height:19px}.backup-sub-action em{font-size:.54rem}}
    .backup-actions{gap:8px}.backup-actions button,.backup-actions .backup-file-action{align-items:center;text-align:center;border-radius:15px;box-shadow:none}.backup-sub-action{min-height:72px;padding:9px 8px;border:1px solid #e0eaee;background:#f5f9fa}.backup-actions #statementImportBtn{min-height:72px}.backup-actions button span,.backup-actions .backup-file-action span{font-size:.9rem;font-weight:800}.backup-actions button small,.backup-actions .backup-file-action small{font-size:.59rem;font-weight:600}.backup-sub-action em{margin-top:2px;text-align:center;font-size:.49rem;font-weight:700;white-space:nowrap}.backup-actions #exportBtn{min-height:58px;padding:9px 14px;flex-direction:column;justify-content:center;gap:2px;border-radius:15px;box-shadow:0 7px 18px rgba(22,78,99,.15)}.backup-actions #exportBtn span{font-size:.94rem}.backup-actions #exportBtn small{font-size:.62rem}.backup-section-title{margin-top:17px;margin-bottom:7px}
    @media(max-width:620px){.backup-sub-action{min-height:70px}.backup-actions #statementImportBtn{min-height:70px}.backup-actions #exportBtn{min-height:52px}.backup-actions #exportBtn small{opacity:.8}}
    .about-dialog{width:min(380px,calc(100% - 28px))}.about-modal{padding:24px}.about-head{display:grid;grid-template-columns:58px minmax(0,1fr) 42px;gap:13px;align-items:center}.about-logo{width:58px;height:58px;display:grid;place-items:center;border-radius:18px;background:linear-gradient(145deg,#1b6178,#123f51);color:#fff;font-size:1.35rem;font-weight:900;box-shadow:0 10px 24px rgba(22,78,99,.2)}.about-copy span{display:block;color:var(--brand2);font-size:.69rem;font-weight:800;letter-spacing:.12em}.about-copy h2{margin:3px 0 0;font-size:1.42rem;letter-spacing:-.03em}.about-close{width:42px;height:42px;padding:0;display:grid;place-items:center;border:0;border-radius:50%;background:#e7f0f3;color:#607985}.about-close:focus,.about-close:focus-visible{outline:0;box-shadow:none}.about-close svg{width:18px;height:18px}.about-lead{margin:18px 2px 16px;color:var(--muted);font-size:.82rem;line-height:1.65}.about-versions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.about-version{padding:12px 13px;border:1px solid #e2ecef;border-radius:14px;background:#f6fafb}.about-version span{display:block;color:var(--muted);font-size:.67rem}.about-version strong{display:block;margin-top:3px;color:var(--brand);font-size:1.03rem}.about-local{margin-top:10px;padding:11px 13px;border-radius:14px;background:#eaf4f7}.about-local strong{display:block;color:var(--brand);font-size:.76rem}.about-local span{display:block;margin-top:3px;color:var(--muted);font-size:.62rem;line-height:1.4;white-space:nowrap}.about-done{width:100%;height:46px;margin-top:16px;box-shadow:none}
    .quick-input:focus,.field:focus{box-shadow:inset 0 0 0 1px rgba(14,116,144,.22)}select.quick-input{-webkit-appearance:none;appearance:none;padding-right:44px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23164e63' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 9 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 18px center;background-size:18px 18px}
    select.quick-input,select.field,select.preview-category{-webkit-appearance:none;appearance:none;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23164e63' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m8 10 4-4 4 4M8 14l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:17px 17px}
    .chevron{width:18px;height:18px;display:grid;place-items:center;justify-self:center;align-self:center;font-size:0;line-height:1;transform:translateY(3.5px)!important}.chevron::before{content:"";width:5.5px;height:5.5px;border-right:1.4px solid currentColor;border-bottom:1.4px solid currentColor;transform:rotate(-45deg);transform-origin:center;transition:transform .18s ease}.day-group[open] .chevron::before{transform:rotate(45deg)}
    .trend-chart{height:132px;padding-top:18px}.trend-col{position:relative;padding:0;border:0;background:transparent;color:var(--muted);cursor:pointer}.trend-col:focus-visible{outline:0}.trend-col:focus-visible .trend-bar{box-shadow:0 0 0 3px rgba(14,116,144,.15)}.trend-col.selected .trend-bar{background:linear-gradient(180deg,#0e7490,#123f51);box-shadow:0 4px 10px rgba(22,78,99,.22)}.trend-value{position:absolute;z-index:2;left:50%;bottom:calc(20px + var(--bar-height));transform:translateX(-50%);padding:4px 7px;border:1px solid #cddce2;border-radius:7px;background:#fff;color:var(--ink);box-shadow:0 5px 14px rgba(20,37,45,.12);font-size:.68rem;font-weight:750;line-height:1;white-space:nowrap}.trend-value::after{content:"";position:absolute;left:50%;bottom:-4px;width:7px;height:7px;transform:translateX(-50%) rotate(45deg);border-right:1px solid #cddce2;border-bottom:1px solid #cddce2;background:#fff}.trend-title strong{color:var(--brand);font-weight:800}
    .picker-title{border:0;background:transparent;color:var(--ink);font:inherit;font-size:1.35rem;font-weight:800;text-align:center;padding:8px;border-radius:12px;cursor:pointer}.picker-title:active{background:#f0f6f8}.date-year-grid{display:grid;grid-template-columns:repeat(3,1fr);align-content:center;gap:12px 10px;padding:8px 0}.date-year-grid .month-option{height:50px;border-color:transparent;background:#f2f7f9;border-radius:13px;box-shadow:none}.date-year-grid .month-option:active{background:#e4eff3}.date-year-grid .month-option.selected{background:var(--brand);color:#fff;box-shadow:0 7px 18px rgba(22,78,99,.18)}.date-year-grid[hidden],.calendar-week[hidden],.date-grid[hidden]{display:none}

body.access-locked{overflow:hidden}
  .access-lock{position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#eaf3f7,#f8fafc);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
  .access-lock[hidden]{display:none}
  .access-card{width:min(360px,100%);padding:30px 24px 24px;border:1px solid #dbe5ea;border-radius:24px;background:#fff;box-shadow:0 24px 70px rgba(22,78,99,.16);text-align:center}
  .access-mark{width:62px;height:62px;margin:0 auto 16px;border-radius:18px;display:grid;place-items:center;background:#164e63;color:#fff;font-size:27px;font-weight:850}
  .access-card h1{margin:0;color:#14252d;font-size:24px}.access-card p{margin:8px 0 20px;color:#6b7b83;font-size:14px}
  .access-pin{width:100%;height:56px;border:1.5px solid #c8d9e0;border-radius:14px;background:#fff;text-align:center;font:700 24px/1 system-ui;letter-spacing:.45em;text-indent:.45em;color:#14252d;outline:0}
  .access-pin:focus{border-color:#164e63;box-shadow:0 0 0 4px rgba(22,78,99,.12)}
  .access-submit{width:100%;height:50px;margin-top:14px;border:0;border-radius:13px;background:#164e63;color:#fff;font:750 16px system-ui}
  .access-error{min-height:21px;margin:11px 0 0;color:#b42318;font-size:13px}
  .daily-trend-info{min-height:20px;margin:-4px 4px 4px;color:var(--muted);font-size:.68rem;line-height:20px}
  .daily-trend-info strong{color:var(--brand);font-weight:750}
  .daily-trend-scroll{overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:4px;scrollbar-width:thin;scrollbar-color:#c3d5dc transparent;cursor:grab;user-select:none;-webkit-user-select:none;-webkit-overflow-scrolling:touch}
  .daily-trend-scroll.dragging,.daily-trend-scroll.dragging .trend-col{cursor:grabbing}
  .daily-trend-scroll::-webkit-scrollbar{height:4px}
  .daily-trend-scroll::-webkit-scrollbar-thumb{background:#c3d5dc;border-radius:8px}
  .daily-trend-chart{grid-template-columns:repeat(var(--day-count),minmax(18px,1fr));min-width:calc(var(--day-count) * 22px);gap:4px;padding-top:8px}
  .daily-trend-chart .trend-bar{width:70%;max-width:14px}
  .daily-trend-chart .trend-col{min-width:0;touch-action:pan-x pan-y;cursor:inherit}
  .month-nav>button:not(.month-title){display:grid;place-items:center;flex-shrink:0;line-height:1}
  .month-nav>button:not(.month-title) svg{display:block}
  #typeDialog,#budgetDialog{height:min(620px,85vh);height:min(620px,85dvh);max-height:85vh;max-height:85dvh;overflow:hidden}
  #typeForm,#budgetForm{height:100%;display:flex;flex-direction:column;min-height:0}
  #typeForm>h2,#budgetForm>h2,#typeForm>.hint{flex-shrink:0}
  #typeForm>.hint{margin:0 0 14px}
  .settings-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding:2px 10px 6px 2px;scrollbar-width:thin;scrollbar-color:#bdcdd4 transparent}
  .settings-scroll::-webkit-scrollbar{width:5px}
  .settings-scroll::-webkit-scrollbar-thumb{background:#bdcdd4;border-radius:8px}
  .settings-scroll::-webkit-scrollbar-track{background:transparent}
  .settings-scroll::-webkit-scrollbar-button{display:none}
  .type-actions .type-delete{padding:0;font-size:.8rem;white-space:nowrap}
  #typeFields .type-row{align-items:center;gap:8px;padding:10px 12px;border-radius:14px;background:#f5f8fa}
  #typeFields .type-row>.field{min-width:0;height:40px;padding:0 6px;border-color:transparent;background:transparent;font-weight:700}
  #typeFields .type-row>.field:focus:not([readonly]){background:#fff;border-color:var(--brand2)}
  #typeFields .type-actions{align-items:center;gap:2px}
  #typeFields .type-actions button{display:inline-flex;align-items:center;justify-content:center;height:40px;border-radius:7px;background:transparent;box-shadow:none}
  #typeFields .type-delete{width:40px;font-size:.8rem;font-weight:500}
  #typeFields .drag-handle{width:34px;padding:0;font-size:1rem;font-weight:400;color:var(--muted)}
  #typeFields .type-actions button:active{background:#e8f1f4}
  #typeFields .type-row.dragging{background:#e4eff3}
  #budgetFields .budget-row{grid-template-columns:minmax(0,1fr) minmax(76px,.65fr) 40px;align-items:center;gap:8px;padding:12px;border-radius:14px;background:#f5f8fa}
  #budgetFields .budget-row>.label{min-width:0;gap:2px;font-size:.72rem}
  #budgetFields .budget-row .field{min-width:0;height:40px;padding-left:6px;border-color:transparent;background-color:transparent;font-weight:700}
  #budgetFields .budget-row select.field{padding-right:24px;background-position:right 3px center;background-size:15px 15px}
  #budgetFields .budget-row input.field{padding-right:4px;font-variant-numeric:tabular-nums}
  #budgetFields .budget-row .field:focus{background-color:#fff;border-color:var(--brand2)}
  #budgetFields .budget-remove{align-self:end;width:40px;height:40px;padding:0;background:transparent;font-size:.8rem;font-weight:500;white-space:nowrap}
  #budgetFields .budget-remove:active{background:#e8f1f4}
  #typeFields .type-row,#budgetFields .budget-row{background:#edf3f6}
  .project-input-wrap{position:relative;display:block;min-width:0}
  .project-input-wrap .quick-input{padding-right:44px}
  .project-input-icon{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:21px;height:21px;color:var(--brand);pointer-events:none}
  #typeDialog:focus,#budgetDialog:focus{outline:none}
  /* 同套细线图标：字段保持 20px，紧凑排序手柄保持 18px。 */
  .date-button svg,.project-input-icon,.amount-plus svg,#typeFields .drag-handle svg{display:block;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
  .date-button svg,.project-input-icon,.amount-plus svg{width:20px;height:20px;color:var(--brand)}
  .amount-plus{display:grid;place-items:center}
  #typeFields .drag-handle svg{width:18px;height:18px}
  #typeForm>.modal-actions,#budgetForm>.modal-actions{flex-shrink:0;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
  .view-switch{width:240px;max-width:100%;grid-template-columns:repeat(3,1fr)}
  .stats[hidden],.summary-actions[hidden],.month-nav>button[hidden]{display:none}
  .month-nav:has(.range-title){justify-content:space-between}
  .range-title strong{font-variant-numeric:tabular-nums}
  .range-ledger .day-summary{grid-template-columns:minmax(100px,auto) 1fr auto 18px;gap:8px}
  .range-ledger .day-date{font-size:.8rem}
  .range-trend-chart{min-width:calc(var(--day-count)*40px)}
  #rangeForm .field{min-width:0}
  /* 操作层级：主要操作深蓝底，修改蓝字，删除红字。 */
  .primary{background:var(--brand);color:#fff}
  #quickIncomeBtn.active,[data-trend-direction="income"].active,[data-flow-direction="income"].active{color:var(--good)}
  .income-stats #incomeTotal,.income-money{color:var(--good)}
  .income-stats .stat{min-width:0}
  .income-stats strong{overflow-wrap:anywhere}
  .ledger-totals{display:flex;flex-direction:column;align-items:flex-end;gap:3px;font-size:.75rem}
  .income-trend .trend-bar,.income-bars .fill{background:linear-gradient(180deg,#32b68e,var(--good))}
  #templatesBtn[hidden],.template-from-entry[hidden]{display:none}
  #flowDirection[hidden]{display:none}
  .balance-slot{position:relative;display:block;width:100%;height:92px}
  .balance-slot::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line)}
  .balance-bar{position:absolute;left:50%;bottom:50%;transform:translateX(-50%);width:min(18px,80%);background:var(--good);border-radius:5px 5px 0 0}
  .balance-bar.negative{bottom:auto;top:50%;background:var(--danger);border-radius:0 0 5px 5px}
  .balance-income{background:linear-gradient(90deg,#32b68e,var(--good))}
  .primary:active{background:#123f51}
  .entry-actions [data-edit]{color:var(--brand2);background:transparent;box-shadow:none;border-radius:7px}
  .entry-actions [data-edit]:active{background:#e8f1f4}
  .danger,#typeFields .type-delete,#budgetFields .budget-remove{color:var(--danger);background:transparent;box-shadow:none}
  .danger:active,#typeFields .type-delete:active,#budgetFields .budget-remove:active{background:#fff0ee}
  #editDialog{height:min(580px,85vh);height:min(580px,85dvh);max-height:85vh;max-height:85dvh;overflow:hidden}
  #editForm{display:flex;flex-direction:column;height:100%;min-height:0}
  #editForm>h2{flex-shrink:0;margin:0 0 16px}
  #editForm .edit-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding:2px 8px 8px 2px;scrollbar-width:thin;scrollbar-color:#bdcdd4 transparent}
  .edit-scroll::-webkit-scrollbar{width:5px}
  .edit-scroll::-webkit-scrollbar-thumb{background:#bdcdd4;border-radius:8px}
  .edit-scroll::-webkit-scrollbar-button{display:none}
  #editForm>.modal-actions{display:grid;grid-template-columns:.8fr 1fr 1fr;gap:10px;flex-shrink:0;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
  #editForm>.modal-actions button{width:100%;height:46px;padding:0 8px;border-radius:12px;font-size:.9rem;font-weight:700;box-shadow:none}
  #editForm #deleteBtn{border:0;background:transparent;color:var(--danger)}
  #editForm #deleteBtn:active{background:#fff0ee}
  #editForm #cancelEdit{border:0;background:#edf3f6;color:var(--brand)}
  #editForm #cancelEdit:active{background:#dfeaf0}
  #editName,#templateName,#editAmount,#templateAmount{padding-right:44px;background-repeat:no-repeat;background-position:right 14px center;background-size:20px 20px}
  #editName,#templateName{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23164e63' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='18' rx='2'/%3E%3Cpath d='M8 8h8M8 12h8M8 16h5'/%3E%3C/svg%3E")}
  #editAmount,#templateAmount{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23164e63' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='m8 7 4 5 4-5M8 12h8M8 15h8M12 12v6'/%3E%3C/svg%3E");appearance:textfield;-moz-appearance:textfield}
  #editAmount::-webkit-inner-spin-button,#editAmount::-webkit-outer-spin-button,#templateAmount::-webkit-inner-spin-button,#templateAmount::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
  #editForm #deleteBtn{border:1px solid #ecc5c1}
  #editAmount,#templateAmount{background-image:none}
  .amount-input-wrap .field{padding-right:48px}
  .amount-input-wrap .field+.amount-plus{top:4px;right:5px}
  #editForm>.modal-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
  #editForm #deleteBtn{border:0;background:#fff0ee}
  #editForm #deleteBtn:active{background:#ffe2de}
  /* 仅隐藏弹窗容器的浏览器焦点轮廓，保留内部控件的焦点提示。 */
  dialog:focus,dialog:focus-visible{outline:none}
  .search-box{position:relative;display:block}
  .search-box input{width:100%;min-width:0;padding-right:44px}
  .search-box input::-webkit-search-cancel-button,.search-box input::-webkit-search-decoration{-webkit-appearance:none}
  .search-box #clearSearch{position:absolute;right:4px;top:4px;width:34px;height:34px;display:grid;place-items:center;padding:0;border-radius:8px;background:transparent;color:var(--brand)}
  .search-box #clearSearch[hidden]{display:none}
  .search-box #clearSearch:active{background:#e7f1f4}
  .search-box #clearSearch svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;pointer-events:none}
  #monthDialog,#rangeDialog{height:min(440px,85vh);height:min(440px,85dvh);overflow:hidden}
  #monthDialog>.month-modal{height:100%;display:flex;flex-direction:column}
  #monthDialog #monthGrid{flex:1;align-content:center}
  .range-calendar-modal{height:100%;display:flex;flex-direction:column;min-height:0}
  .range-calendar-modal .picker-head{flex-shrink:0;margin-bottom:10px}
  .range-endpoints{display:grid;grid-template-columns:1fr 1fr;gap:8px;flex-shrink:0;margin-bottom:6px}
  .range-endpoints button{padding:5px 8px;border:1px solid transparent;border-radius:10px;background:#edf3f6;color:var(--ink);font-size:.82rem;font-weight:700}
  .range-endpoints small{margin-right:6px;color:var(--muted);font-size:.65rem;font-weight:500}
  .range-endpoints button.selected{border-color:var(--brand2);background:#e5f1f5}
  #rangeWeek{flex-shrink:0}
  #rangeCalendarGrid{flex:1;min-height:0;grid-template-rows:repeat(6,minmax(0,1fr))}
  #rangeCalendarGrid .date-option{aspect-ratio:auto;min-height:0;font-size:.85rem;border-radius:9px}
  #rangeCalendarGrid .in-range{background:#e7f1f4;color:var(--brand)}
  #rangeYearGrid{flex:1;min-height:0;grid-template-rows:repeat(4,minmax(0,1fr))}
  #rangeYearGrid .month-option{height:100%;min-height:0;font-size:.85rem}
  #rangeCalendarGrid[hidden],#rangeYearGrid[hidden],#rangeWeek[hidden]{display:none}
  .range-calendar-modal .picker-actions{flex-shrink:0;margin-top:8px}
  #rangeError{color:var(--danger);font-size:.7rem;margin:4px 0}
  .range-footer-right{display:flex;align-items:center;gap:8px}
  .month-title.range-title{flex:1;max-width:100%;min-width:0;padding:3px 4px;background:transparent;border-radius:12px}
  .month-title.range-title strong{font-size:1.45rem;color:var(--ink)}
  #periodHint:empty{display:none}
  .month-nav,.month-nav:has(.range-title){gap:4px}
  .month-nav .month-title{flex:1;min-width:0;padding:3px 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-height:58px}
  .month-nav .month-title strong,.month-nav .month-title.range-title strong{width:100%;font-size:1.25rem;line-height:1.4;white-space:nowrap;font-variant-numeric:tabular-nums}
  .month-nav .month-title span{display:block;min-height:20px;line-height:20px;margin-top:2px}
  .month-nav #periodHint:empty{display:block}
  .month-nav .month-title:not(.range-title){justify-content:center}
  .month-nav .month-title:not(.range-title) #periodHint:empty{display:none}
  @media(max-width:620px){.month-nav .month-title strong,.month-nav .month-title.range-title strong{font-size:clamp(.96rem,4.5vw,1.2rem)}}
  .month-title.range-title span{font-size:.76rem;color:var(--muted)}
  .month-nav .month-title:not(.range-title) strong{font-size:1.4rem}
  .quick-heading-actions{display:flex;align-items:center;gap:8px}
  .direction-cycle{min-width:36px}
  .quick-heading-actions .direction-cycle{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:9px;background:#edf3f6;color:var(--muted)}
  .direction-cycle button{display:grid;place-items:center;min-width:26px;min-height:24px;padding:0 4px;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.76rem;line-height:1.2;border-radius:6px;font-weight:500;touch-action:manipulation}
  .direction-cycle button.active{background:#fff;color:var(--brand);font-weight:800;box-shadow:0 1px 4px rgba(20,37,45,.08)}
  .direction-cycle[data-mode="income"] button.active{color:var(--good)}
  .quick.balance-readonly .quick-row{opacity:.5}
  .quick.balance-readonly .quick-row :disabled,.quick-heading-actions :disabled{cursor:not-allowed}
  @media(max-width:620px){.month-nav .month-title:not(.range-title) strong{font-size:clamp(1.08rem,5vw,1.35rem)}}
  /* 取消操作统一浅蓝底，保留各弹窗原有布局和按钮尺寸。 */
  #cancelEdit,#cancelBudget,#cancelType,#cancelTemplateEditor,#cancelImportPreview,
  #cancelRange,#cancelMonth,#cancelYear,#cancelDate,
  .calculator-actions [data-calc="close"]{background:#e7f1f4;color:var(--brand);border:0;box-shadow:none;border-radius:12px}
  #cancelEdit:active,#cancelBudget:active,#cancelType:active,#cancelTemplateEditor:active,#cancelImportPreview:active,
  #cancelRange:active,#cancelMonth:active,#cancelYear:active,#cancelDate:active,
  .calculator-actions [data-calc="close"]:active{background:#dcebf0}
  .storage-status{position:fixed;z-index:1300;top:calc(12px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(520px,calc(100% - 24px));padding:12px 14px;border:1px solid #e7c9a8;border-radius:13px;background:#fff8ec;color:#754b16;box-shadow:0 8px 24px rgba(20,37,45,.16);font-size:.8rem;line-height:1.5}
  .storage-status[hidden]{display:none}
  .storage-status[data-kind="error"]{background:#fff0ee;border-color:#ecc5c1;color:var(--danger)}
  .storage-status[data-kind="pending"]{background:#edf5f8;border-color:var(--line);color:var(--brand)}
  .storage-status-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
  .storage-status-actions button{padding:6px 10px;border:1px solid currentColor;border-radius:8px;background:#fff;color:inherit;font-size:.78rem;font-weight:700}
  .storage-status-actions button:disabled{opacity:.5;cursor:wait}
