:root{color-scheme:light;--bg:#f6f8fc;--surface:#fff;--navy:#17243b;--muted:#8b98aa;--soft:#e8edf4;--blue:#326af0;--blue2:#eaf1ff;--green:#14a784;--green2:#e9f8f2;--red:#df6271;--red2:#fff1f1;--radius:20px;--shadow:0 8px 32px rgba(35,53,91,.045)}
*{box-sizing:border-box}html{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Inter,system-ui,sans-serif;background:var(--bg);-webkit-text-size-adjust:100%}body{margin:0;color:var(--navy);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}input,select,textarea{outline:none}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #adc7ff;outline-offset:2px}a{color:var(--blue)}.visually-hidden{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.app-shell{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;width:252px;height:100vh;background:#fff;border-right:1px solid #edf0f6;flex-shrink:0;display:flex;flex-direction:column;padding:31px 19px 25px;gap:8px}.brand{display:flex;align-items:center;gap:11px;margin:0 0 52px 7px}.brand-icon{width:42px;height:42px;border-radius:15px;background:#315ff1;display:grid;place-items:center;color:white;font-size:23px;font-weight:800;box-shadow:0 7px 16px rgba(50,106,240,.2)}.brand-icon.small{width:32px;height:32px;font-size:18px;border-radius:11px;box-shadow:none}.brand-name{font-weight:750;font-size:19px;letter-spacing:.5px}.brand-subtitle{font-size:9px;letter-spacing:1.6px;color:#a0acb9;margin-top:3px}.sidebar-section{font-size:11px;color:#abb6c3;padding-left:19px;margin-bottom:10px;letter-spacing:2px}#side-nav{display:grid;gap:6px}.nav-link{appearance:none;border:0;background:transparent;width:100%;display:flex;gap:14px;align-items:center;text-align:left;padding:13px 17px;color:#79889c;border-radius:12px;font-size:14px;font-weight:600}.nav-link svg{height:19px;width:19px;stroke-width:1.85}.nav-link.active{background:var(--blue2);color:var(--blue)}.nav-link:hover:not(.active){background:#f7f9fc}.sidebar-bottom{margin-top:auto;background:#f8fafc;padding:17px;border-radius:15px;font-size:11px;color:#94a0ae;line-height:1.7}.status-dot{display:flex;gap:8px;align-items:center;color:#627287;font-weight:600}.status-dot i,.secure-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#17b99c}.sidebar-bottom p{margin:7px 0 0}.main-layout{min-width:0;flex:1}.topbar{height:88px;border-bottom:1px solid #ecf0f5;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(26px,4.5vw,76px);background:rgba(255,255,255,.85)}.eyebrow{display:block;letter-spacing:1.7px;font-size:10px;color:#a7b1c0;font-weight:600;margin-bottom:4px}.topbar-context>span:last-child{font-size:14px;font-weight:650}.mobile-brand{display:none;gap:10px;align-items:center;font-size:16px}.header-right{display:flex;align-items:center;gap:20px}.secure-label{font-size:12px;color:#8e9cb0;display:flex;align-items:center;gap:7px}.round-avatar{height:36px;width:36px;border-radius:50%;border:1px solid #e9edf5;color:#59739c;background:#f5f8fd;font-size:12px;font-weight:bold}main{max-width:1280px;margin:0 auto;padding:40px clamp(24px,4.5vw,74px) 90px}.boot-screen{padding:70px;text-align:center;color:var(--muted)}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:27px}.heading-left h1{font-size:28px;font-weight:800;letter-spacing:-.6px;margin:0 0 7px}.heading-left p{margin:0;color:var(--muted);font-size:13px;line-height:1.6}.btn{display:inline-flex;justify-content:center;align-items:center;gap:8px;border:1px solid #e6ebf3;background:#fff;border-radius:12px;padding:10px 15px;color:#546981;font-size:13px;font-weight:650;min-height:40px;transition:transform .15s,box-shadow .15s}.btn:active{transform:translateY(1px)}.btn svg{height:16px;width:16px}.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 8px 18px rgba(50,106,240,.18)}.btn.soft{background:#eef4ff;border-color:#eef4ff;color:var(--blue)}.btn.danger{color:#b94357;background:#fff2f3;border-color:#ffdde2}.btn.ghost{background:none;border-color:transparent}.btn.wide{width:100%}.action-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.period-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 24px;flex-wrap:wrap}.segments{display:flex;align-items:center;gap:4px;padding:4px;background:#edf1f7;border-radius:12px}.segment{border:0;border-radius:9px;background:transparent;color:#8190a4;padding:8px 15px;font-size:12px;min-height:35px;font-weight:650}.segment.active{background:#fff;color:#244fbc;box-shadow:0 2px 7px rgba(37,60,95,.06)}.month-selector{display:flex;align-items:center;gap:6px;border:1px solid #e9eef6;border-radius:13px;background:#fff;padding:4px}.month-selector strong{font-size:13px;min-width:92px;text-align:center;white-space:nowrap}.icon-btn{border:0;background:transparent;border-radius:9px;width:33px;height:33px;display:grid;place-items:center;color:#8391a5}.icon-btn:hover{background:#f4f7fa}.icon-btn svg{width:17px;height:17px}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.metric-card{background:#fff;border:1px solid #f0f3f8;padding:22px 21px;min-width:0;border-radius:19px;box-shadow:var(--shadow)}.metric-top{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:23px}.metric-label{font-size:12px;color:#8493a8;font-weight:600}.metric-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:12px;background:#eef5ff;color:#4278e8}.metric-icon svg{width:18px;height:18px}.metric-card.green .metric-icon{background:#e9f9f4;color:#11a580}.metric-card.red .metric-icon{background:#fff0f1;color:#e16b7b}.metric-card.purple .metric-icon{background:#f1efff;color:#9277df}.metric-value{font-size:clamp(18px,2vw,27px);font-weight:800;letter-spacing:-.6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric-value small{font-size:.54em;margin-right:3px;color:#7c8da4}.metric-note{font-size:11px;color:#a0acb9;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:17px}.panel{border:1px solid #f0f3f8;background:#fff;border-radius:19px;padding:22px;box-shadow:var(--shadow);min-width:0}.panel-heading{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-bottom:18px}.panel h2{font-size:15px;margin:0;font-weight:750}.panel-sub{font-size:11px;color:#a1adba;margin-top:5px}.link-button{border:0;background:transparent;color:#4478e8;font-weight:700;font-size:12px;padding:1px 0}.chart-area{height:200px;display:flex;align-items:flex-end;gap:4px;padding:20px 0 28px;border-bottom:1px solid #f0f2f6;position:relative}.chart-area::before,.chart-area::after{position:absolute;left:0;right:0;content:"";border-top:1px dashed #eaf0f6;pointer-events:none}.chart-area::before{top:30%}.chart-area::after{top:63%}.day-group{flex:1;min-width:0;display:flex;align-items:flex-end;justify-content:center;gap:2px;height:100%;position:relative}.day-bar{width:clamp(3px,30%,10px);border-radius:4px 4px 0 0;min-height:0;transition:height .2s}.day-bar.income{background:#5b8bf5}.day-bar.expense{background:#cdd8ea}.chart-tick{position:absolute;bottom:-23px;font-size:10px;color:#aebac7;transform:translateX(-50%);left:50%;white-space:nowrap}.chart-legend{display:flex;align-items:center;gap:18px;margin-top:17px;color:#8997a8;font-size:11px}.legend-dot{width:8px;height:8px;border-radius:3px;display:inline-block;margin-right:6px;background:#5b8bf5}.legend-dot.exp{background:#cdd8ea}.breakdown{display:grid;gap:16px}.breakdown-row{display:grid;gap:8px}.breakdown-label{display:flex;justify-content:space-between;gap:10px;font-size:12px}.breakdown-label span:first-child{font-weight:600}.breakdown-label span:last-child{color:#7d8ea5;font-variant-numeric:tabular-nums}.progress-track{height:7px;background:#f0f3f8;border-radius:5px;overflow:hidden}.progress-track i{display:block;background:var(--blue);height:100%;border-radius:5px}.progress-track i.green{background:#24b39a}.progress-track i.orange{background:#f2b56b}.progress-track i.purple{background:#a590e5}.panel.full{margin-top:18px}.entry-list{display:grid;gap:0}.entry-row{display:flex;align-items:center;gap:12px;padding:13px 1px;border-bottom:1px solid #f2f4f8;min-width:0}.entry-row:last-child{border:0}.entry-icon{width:43px;height:43px;border-radius:13px;display:grid;place-items:center;flex-shrink:0;background:#eff5ff;color:#477ce9}.entry-icon.expense{background:#fff1f2;color:#dc7781}.entry-icon.transfer{background:#f3efff;color:#9276ca}.entry-icon svg{width:19px;height:19px}.entry-main{flex:1;min-width:0}.entry-title{font-size:13px;font-weight:750;display:flex;gap:8px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entry-details{font-size:11px;color:#a0adba;margin-top:5px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.entry-amount{font-size:14px;font-weight:780;white-space:nowrap;font-variant-numeric:tabular-nums}.entry-amount.income{color:#0da984}.entry-amount.expense{color:#d96570}.entry-amount.transfer{color:#6d7d98}.entry-cost{font-size:10px;text-align:right;margin-top:4px;color:#a3adba}.entry-actions{display:flex;align-items:center;gap:2px}.entry-actions .icon-btn{height:29px;width:29px}.entry-actions svg{width:15px;height:15px}.empty{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;padding:31px 12px;text-align:center;color:#8493a7}.empty-icon{height:48px;width:48px;background:#eff4fc;color:#7d98c4;border-radius:16px;display:grid;place-items:center;margin-bottom:5px}.empty-icon svg{width:24px;height:24px}.empty strong{color:#4d6180;font-size:13px}.empty p{font-size:12px;line-height:1.7;margin:0;max-width:300px}.section-header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.filter-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px}.field-input,.field-select,.field-textarea{border:1px solid #e4ebf3;border-radius:12px;background:#fff;color:#213550;width:100%;min-height:43px;padding:10px 12px;font-size:13px}.field-input::placeholder{color:#b5c0cd}.field-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%2396a5b8' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;padding-right:31px}.field-textarea{min-height:82px;resize:vertical}.records-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:12px}.muted{color:#93a0af}.hint{font-size:11px;color:#9eacba;line-height:1.75}.pill{display:inline-block;background:#f3f6fa;color:#8697ac;border-radius:9px;padding:4px 8px;font-size:10px;font-weight:600}.note-banner{padding:14px 15px;background:#eff5ff;border-radius:13px;color:#4771b9;font-size:12px;line-height:1.8;margin-top:15px}.stats-secondary{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:16px}.mini-stat{background:#f8fafd;border-radius:13px;padding:15px}.mini-stat .mini-label{font-size:11px;color:#8c9bb0}.mini-stat strong{display:block;font-size:20px;margin-top:9px;overflow:hidden;text-overflow:ellipsis}.panel-heading .pill{white-space:nowrap}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.setting-item{padding:15px 0;border-top:1px solid #f0f3f7}.setting-item:first-of-type{border-top:0}.setting-item h3{font-size:13px;margin:0 0 7px}.setting-item p{font-size:12px;color:#92a2b4;line-height:1.8;margin:0 0 11px}.setting-actions{display:flex;gap:10px;flex-wrap:wrap}.danger-zone{border:1px solid #ffe0e5;background:#fff9fa;padding:15px;border-radius:13px;margin-top:15px}.danger-zone strong{font-size:12px;color:#b34453}.danger-zone p{font-size:11px;color:#9d8188;line-height:1.7}.modal-backdrop{position:fixed;z-index:50;inset:0;background:rgba(18,31,55,.48);display:flex;justify-content:center;align-items:center;padding:18px;backdrop-filter:blur(4px)}.modal-card{width:min(100%,520px);max-height:min(94dvh,900px);overflow:auto;background:#fff;border-radius:23px;padding:25px 27px;box-shadow:0 20px 70px rgba(6,20,47,.25)}.modal-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:23px}.modal-top h2{font-size:20px;margin:0}.modal-close{border:0;background:#f4f6fa;border-radius:11px;height:34px;width:34px;color:#728198;display:grid;place-items:center}.modal-close svg{height:17px;width:17px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-field{min-width:0;display:grid;gap:7px}.form-field.full{grid-column:1/-1}.form-field label,.form-field>span{font-size:12px;font-weight:650;color:#546782}.form-field small{font-size:10px;color:#9faebd}.form-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.form-tab{border:1px solid #e8edf5;background:#f8fafd;color:#70839d;border-radius:11px;padding:10px 7px;font-size:13px;font-weight:700}.form-tab.active{background:#eaf1ff;border-color:#dce9ff;color:#326af0}.date-shortcuts{display:flex;gap:7px}.date-shortcuts button{padding:7px 11px;font-size:11px;border:1px solid #e6ebf5;background:#fff;border-radius:9px;color:#738299;font-weight:650}.date-shortcuts button.active{color:#356ce7;border-color:#c7dafa;background:#eff5ff}.calc-preview{background:#f2f7ff;border-radius:14px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.calc-preview span{font-size:12px;color:#7189a6}.calc-preview strong{font-size:18px;color:#2865d9}.modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:100;background:#273957;color:white;padding:12px 17px;border-radius:12px;font-size:13px;box-shadow:0 10px 40px rgba(15,30,60,.18);transition:opacity .25s,transform .25s;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.error-screen{max-width:520px;margin:60px auto;background:#fff;border:1px solid #ffe0e5;padding:26px;border-radius:17px;line-height:1.8;color:#bb4c5a;font-size:14px}.bottom-nav{display:none}@media(max-width:1170px){.sidebar{width:225px}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid{grid-template-columns:1fr 1fr}.metric-top{margin-bottom:13px}}@media(max-width:930px){.sidebar{width:205px;padding:23px 12px}.brand{margin-bottom:38px}.content-grid,.settings-grid{grid-template-columns:1fr}main{padding:28px 23px 90px}}@media(max-width:700px){.sidebar,.topbar-context,.secure-label{display:none}.mobile-brand{display:flex}.topbar{height:68px;padding:0 21px}.header-right{gap:7px}main{padding:25px 17px 110px}.page-heading{margin-bottom:22px}.heading-left h1{font-size:24px}.heading-left p{font-size:12px}.page-heading .btn.primary{padding:9px 12px;font-size:12px}.period-toolbar{gap:11px;margin-bottom:18px}.segments{width:100%}.segment{flex:1;padding:8px 7px}.month-selector{margin-left:auto}.summary-grid{gap:10px;margin-bottom:14px}.metric-card{padding:15px;border-radius:16px}.metric-label{font-size:11px}.metric-icon{height:31px;width:31px}.metric-value{font-size:clamp(17px,5vw,24px)}.metric-note{font-size:10px;line-height:1.5;white-space:normal;min-height:28px}.content-grid{gap:13px}.panel{padding:18px;border-radius:17px}.panel.full{margin-top:13px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;justify-content:space-around;align-items:center;background:rgba(255,255,255,.96);border-top:1px solid #ebf0f5;padding:9px 8px calc(8px + env(safe-area-inset-bottom));backdrop-filter:blur(15px)}.bottom-nav .mobile-nav-link{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:4px;border:0;background:none;font-size:10px;color:#9aa8ba;flex:1;min-height:42px;font-weight:600}.bottom-nav .mobile-nav-link svg{width:21px;height:21px}.bottom-nav .mobile-nav-link.active{color:var(--blue)}.bottom-nav .mobile-nav-link.add-link{border-radius:14px;width:44px;height:44px;flex:0 0 52px;background:var(--blue);color:#fff;transform:translateY(-13px);box-shadow:0 7px 18px rgba(50,106,240,.24)}.bottom-nav .mobile-nav-link.add-link svg{height:23px;width:23px}.filter-grid{grid-template-columns:1fr 1fr}.filter-grid .search-input{grid-column:1/-1}.stats-secondary{gap:8px}.mini-stat{padding:12px}.mini-stat strong{font-size:16px}.modal-backdrop{align-items:flex-end;padding:0}.modal-card{width:100%;max-height:95dvh;border-radius:24px 24px 0 0;padding:22px 19px calc(20px + env(safe-area-inset-bottom))}.toast{bottom:calc(84px + env(safe-area-inset-bottom))}}@media(max-width:370px){.metric-card{padding:12px}.metric-value{font-size:17px}.entry-icon{width:35px;height:35px}.entry-actions{gap:0}.entry-details{font-size:10px}}
[hidden]{display:none!important}

/* V1.1.2 — iOS Safari: keep the page inside the viewport.
   Scrolling is vertical; pinch zoom remains available for accessibility. */
html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  overscroll-behavior-x: none;
  touch-action: pan-y pinch-zoom;
}
body.entry-open { overflow: hidden; }
.app-shell, .main-layout, #app, #modal-root { min-width: 0; max-width: 100%; }
#modal-root { overflow-x: clip; }
.modal-backdrop {
  width: 100%;
  max-width: 100vw;
  overflow-x: hidden;
  overscroll-behavior: none;
  touch-action: pan-y pinch-zoom;
}
.modal-card {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-x: none;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y pinch-zoom;
}
.form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.form-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.form-field, .form-tabs, .form-tab, .form-field.full { min-width: 0; max-width: 100%; }
.field-input, .field-select, .field-textarea {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
}
.field-textarea { resize: vertical; overflow-x: hidden; }
.date-shortcuts { flex-wrap: wrap; }
.modal-footer { flex-wrap: wrap; }
/* iOS Safari normally enlarges pages when an input uses a font smaller than 16px. */
@media (pointer: coarse), (max-width: 700px) {
  input.field-input, input.search-input, select.field-select, textarea.field-textarea,
  input:not([type="hidden"]):not([type="file"]), select, textarea {
    font-size: 16px !important;
  }
}
@media (max-width: 700px) {
  .modal-backdrop { padding: 0; }
  .modal-card { width: 100%; max-width: 100vw; }
}

/* V1.2: optional cloud sync, keyboard-safe touch inputs */
.cloud-panel { grid-column: 1/-1; }
.cloud-form { display:grid; gap:12px; max-width:560px; }
.cloud-form label { display:grid; gap:7px; color:#526278; font-size:13px; font-weight:600; }
.cloud-form input { width:100%; font-size:16px; }
.cloud-actions { display:flex; flex-wrap:wrap; gap:9px; margin-top:12px; }
.cloud-info { display:flex; flex-direction:column; gap:8px; margin:14px 0; color:#51627a; font-size:13px; }
.cloud-error { color:#c24143; overflow-wrap:anywhere; }
.cloud-text-btn { margin-top:10px; }
@media(max-width:700px){.cloud-panel{grid-column:1}.cloud-form{max-width:100%}}

/* ===== v1.3.0: transaction details + fixed edit controls ===== */
.entry-view{
  display:flex;align-items:center;gap:12px;flex:1;min-width:0;max-width:100%;
  padding:2px 0;border:0;background:transparent;text-align:left;color:inherit;
  -webkit-tap-highlight-color:transparent;
}
.entry-view:focus-visible{outline:2px solid #83a6f7;border-radius:8px;outline-offset:3px}
.entry-view .entry-main{min-width:0;flex:1;display:block}
.entry-view .entry-title,.entry-view .entry-details,.entry-view .entry-cost,.entry-view .entry-amount{display:block}
.entry-view .entry-title{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.entry-view .entry-value{min-width:0;text-align:right;flex-shrink:0}
.entry-row .entry-actions{flex-shrink:0}
.entry-view:active{opacity:.68}

/* Only modal body scrolls; header + footer stay accessible at any scroll position. */
.modal-card{
  display:flex;flex-direction:column;overflow:hidden;
  padding:0;width:min(100%,560px);height:auto;max-height:min(94dvh,900px);
  overscroll-behavior:contain;touch-action:pan-y pinch-zoom;
}
.modal-top{
  display:flex;flex-shrink:0;position:relative;z-index:2;
  padding:19px 23px;margin:0;background:#fff;border-bottom:1px solid #edf1f7;
}
#entry-form{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.modal-body{
  min-height:0;flex:1;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  touch-action:pan-y pinch-zoom;padding:19px 23px 22px;
}
.modal-footer{
  flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;
  gap:9px;margin:0;padding:13px 23px calc(13px + env(safe-area-inset-bottom));
  background:#fff;border-top:1px solid #edf1f7;
  box-shadow:0 -4px 12px rgba(26,54,95,.035);
}
.modal-footer .btn{white-space:nowrap;min-height:43px}
.modal-footer .save-again{font-size:12px}
.detail-card{min-height:350px}
.detail-card .detail-body{padding-top:19px;padding-bottom:20px}
.detail-hero{display:flex;gap:13px;align-items:center;padding:9px 0 17px;border-bottom:1px solid #edf1f7}
.detail-hero strong{font-size:16px}
.detail-hero small{display:block;margin-top:3px;color:#94a1b1;font-size:12px}
.detail-hero-amount{font-size:24px;font-weight:800;margin-top:3px}
.detail-hero-amount.income,.detail-rate{color:#0a9a7a}
.detail-hero-amount.expense{color:#d96570}
.detail-hero-amount.transfer{color:#64748b}
.detail-list{display:grid;margin:8px 0 0}
.detail-row{display:grid;grid-template-columns:125px minmax(0,1fr);gap:10px;align-items:start;border-bottom:1px solid #f0f3f8;padding:12px 1px}
.detail-row:last-child{border-bottom:0}
.detail-row dt{color:#718199;font-size:13px}
.detail-row dd{margin:0;font-weight:650;color:#20324d;font-size:13px;text-align:right;overflow-wrap:anywhere}
.detail-row dd.detail-profit{color:#326af0;font-size:16px}
.detail-row dd.detail-rate{color:#089b77;font-size:16px}
.detail-note{white-space:pre-wrap}

/* Compact cost, gross profit, and margin-rate on the same horizontal row. */
.cost-metrics-row{display:grid;grid-template-columns:minmax(0,1.13fr) minmax(0,.9fr) minmax(0,.77fr);gap:8px;align-items:end}
.cost-input{min-width:0;display:grid;gap:6px}
.cost-input label,.calculated-field>span{font-size:11px;color:#526782;font-weight:700;white-space:nowrap}
.cost-input .field-input{width:100%;min-width:0;font-size:16px}
.calculated-field{min-width:0;display:grid;gap:6px}
.calculated-field strong{display:flex;min-height:43px;align-items:center;justify-content:center;border:1px solid #e5ecf5;background:#f1f7ff;border-radius:12px;font-size:15px;white-space:nowrap;color:#2d68e0;font-variant-numeric:tabular-nums}
.calculated-field:last-child strong{background:#edfaf5;color:#099875;font-size:14px}
.calculated-field strong.negative{background:#fff2f2;color:#be3d54}
#cost-field>small{line-height:1.6;font-size:10px}

/* Quick-add presets keep amounts and costs user-controlled. */
.quick-templates{padding-bottom:13px;margin-bottom:15px;border-bottom:1px solid #eaf0f7}
.quick-heading{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:#213450;font-weight:800;margin-bottom:9px}
.quick-heading small{font-size:10px;font-weight:500;color:#8597ad}
.quick-template-strip,.item-quick-choices{display:flex;flex-wrap:wrap;gap:7px}
.quick-template{padding:7px 10px;min-height:34px;border:1px solid #e4ecf7;border-radius:10px;background:#f7f9fd;color:#516b91;font-size:12px;font-weight:700}
.quick-template.active{background:#eaf1ff;color:#326af0;border-color:#afc7fc}
.item-quick-choices{margin-top:1px}
.item-quick-choices:empty{display:none}
.item-choice{background:#f2f6fd;border:1px solid #e5edf9;border-radius:9px;color:#526b95;padding:5px 8px;font-size:11px;min-height:30px}

@media(max-width:700px){
  .modal-backdrop{align-items:flex-end;padding:0}
  .modal-card{width:100%;max-width:100vw;max-height:calc(100dvh - 10px);padding:0;border-radius:23px 23px 0 0}
  .modal-top{padding:17px 17px 13px}
  .modal-body{padding:16px 17px 17px}
  .modal-footer{padding:10px 16px calc(10px + env(safe-area-inset-bottom));gap:7px;flex-wrap:nowrap}
  .modal-footer .btn{padding:10px 9px;min-height:43px;font-size:12px}
  .modal-footer .save-again{font-size:11px}
  .detail-footer .btn{font-size:12px}
  .cost-input label,.calculated-field>span{font-size:10px}
  .calculated-field strong{font-size:13px}
  .calculated-field:last-child strong{font-size:12px}
  .entry-view{gap:9px}
  .entry-value .entry-cost{white-space:nowrap;font-size:10px}
  .entry-amount{font-size:13px}
  .entry-actions .icon-btn{width:26px;height:31px}
}
@media(max-width:370px){
  .cost-metrics-row{gap:5px;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr) minmax(0,.8fr)}
  .modal-footer{gap:5px;padding-left:10px;padding-right:10px}
  .modal-footer .btn{font-size:11px;padding:8px 7px}
  .detail-row{grid-template-columns:100px minmax(0,1fr)}
  .entry-view .entry-icon{width:32px;height:35px}
  .entry-amount{font-size:12px}
  .entry-cost{font-size:9px!important}
}

/* ===== v1.4.0: daily cash-flow checks and store daily close ===== */
.daily-teaser { margin-bottom:20px; }
.daily-teaser-stats { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px; }
.daily-teaser-stats>span{background:#f5f8ff;border-radius:12px;padding:13px 14px;color:#73849b;font-size:12px;}
.daily-teaser-stats strong{display:block;margin-top:6px;color:#1c3150;font-size:18px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.daily-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.daily-shortcuts,.daily-date-nav{display:flex;align-items:center;gap:7px;}
.daily-date-nav{border:1px solid #e4ebf5;border-radius:13px;padding:3px;background:#fff;max-width:100%;}
.daily-date-nav .field-input{min-width:0;width:166px;border:0;padding:8px 6px;font-size:16px;}
.daily-book-tabs{display:inline-flex;max-width:100%;flex-wrap:wrap;margin:0 0 18px;}
.daily-summary{margin-bottom:18px;}
.daily-insights{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:17px;margin-bottom:18px;}
.daily-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
.daily-facts>div{display:flex;flex-direction:column;gap:6px;background:#f7f9fd;border-radius:12px;padding:11px;font-size:12px;color:#798aa1;}
.daily-facts strong{font-size:15px;color:#203651;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;}
.daily-disclaimer{margin:14px 0 0;color:#8290a6;font-size:11px;line-height:1.7;}
.daily-account-list{display:grid;gap:4px;}
.daily-account-row{padding:11px 0;border-bottom:1px solid #eef1f6;display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:12px;}
.daily-account-row:last-child{border:0;}.daily-account-row strong{font-size:13px;color:#20334d;}
.daily-account-row>div{color:#0b9b79;white-space:nowrap;font-weight:600;}.daily-account-row>div span{color:#df6271;margin-left:12px;}
.daily-audit-list{display:grid;gap:9px;}
.daily-audit-item{display:flex;justify-content:space-between;align-items:center;gap:14px;border:1px solid #f0e5d7;background:#fffbf5;border-radius:12px;padding:12px;}
.daily-audit-text{display:grid;min-width:0;gap:4px}.daily-audit-text strong{font-size:13px;overflow-wrap:anywhere}.daily-audit-text span{color:#a26b30;font-size:11px;line-height:1.5;}
.daily-audit-item .btn{flex-shrink:0;}.daily-review{margin-bottom:18px;}
.report-daily-action{display:flex;align-items:center;gap:12px;margin:-5px 0 18px;flex-wrap:wrap;}
.report-daily-action span{color:#8a98ac;font-size:12px;}
@media(max-width:850px){.daily-insights{grid-template-columns:minmax(0,1fr)}.daily-teaser-stats{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:700px){.daily-toolbar{align-items:stretch}.daily-date-nav{width:100%;justify-content:space-between}.daily-date-nav .field-input{flex:1;width:100%;max-width:220px;text-align:center}.daily-teaser-stats strong{font-size:16px}.daily-facts strong{font-size:14px}}
@media(max-width:360px){.daily-book-tabs .segment{padding:8px 11px}.daily-account-row{flex-wrap:wrap}}


/* ===== V1.4.1: accounts dropdown + accessible native chart panels ===== */
.account-field{display:grid;gap:7px}
.account-controls{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.account-controls .field-select{width:min(260px,100%);flex:1 1 190px}
.account-controls .account-custom{flex:1 1 200px;max-width:100%}
.account-help{font-size:10px;color:#90a0b2;line-height:1.5}
.item-choice.active,.item-choice[aria-pressed="true"]{background:#e4eeff;border-color:#8eaef4;color:#285dcc;box-shadow:inset 0 0 0 1px #a6bef8}
.report-filter{background:#fff;border:1px solid #edf1f7;border-radius:17px;padding:16px;margin-bottom:17px;display:grid;gap:12px}
.report-filter-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.report-books{flex-shrink:0}
.report-range-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.report-range-btn{font-size:12px;min-height:35px;padding:8px 10px}
.report-range-btn.selected{background:#eaf1ff;border-color:#b6cbff;color:#2e62d9}
.report-date-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;color:#8190a3;font-size:12px}
.report-custom-range{display:flex;gap:8px;flex-wrap:wrap}
.report-custom-range label{display:flex;align-items:center;gap:6px;color:#71829a}
.report-custom-range .field-input{width:160px;padding:7px;font-size:16px}
.report-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;margin-bottom:18px}
.report-chart-wide{grid-column:1/-1;min-width:0}
.report-chart-card{min-height:260px}
.report-trend-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;border-bottom:1px solid #eff3f8}
.report-trend{height:210px;display:flex;align-items:stretch;padding:12px 5px 0;gap:3px;min-width:100%}
.report-trend-day{height:100%;min-width:0;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:7px}
.report-trend-day>span{height:24px;min-width:0;font-size:9px;color:#95a5b8;white-space:nowrap}
.report-trend-bars{height:160px;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:2px}
.report-trend-bars i{min-width:3px;max-width:12px;flex:1;border-radius:5px 5px 0 0;display:block}
.trend-income{background:#497aef}.trend-expense{background:#d4dfea}
.report-legend{display:flex;gap:15px;flex-wrap:wrap;margin-top:12px;font-size:11px;color:#718198}
.chart-swatch{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}
.chart-swatch.blue{background:#497aef}.chart-swatch.grey{background:#d4dfea}
.report-donut-layout{display:grid;grid-template-columns:152px minmax(0,1fr);gap:18px;align-items:center}
.report-donut{width:152px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center}
.donut-hole{width:104px;aspect-ratio:1;border-radius:50%;background:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;text-align:center}
.donut-hole span{font-size:10px;color:#8a99aa}.donut-hole strong{font-size:13px;color:#233852;font-variant-numeric:tabular-nums}
.report-categories{display:grid;gap:10px;min-width:0}
.report-categories-item{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:7px;align-items:center;min-width:0;font-size:11px}
.report-categories-item i{height:8px;width:8px;border-radius:50%}
.report-categories-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#52667f}
.report-categories-item strong{font-size:11px;color:#263b56;white-space:nowrap}
.report-categories-item small{grid-column:2/-1;color:#98a4b4;line-height:1;font-size:10px}
.report-horizontal-bars{display:grid;gap:16px;padding:10px 0}
.report-hbar-row{display:grid;gap:7px}
.report-hbar-label{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;color:#52657e}
.report-hbar-label span{min-width:0;overflow-wrap:anywhere}.report-hbar-label strong{color:#263b56;white-space:nowrap;font-variant-numeric:tabular-nums}
.report-hbar-label strong.negative{color:#c84a60}
.report-hbar-track{height:9px;overflow:hidden;border-radius:20px;background:#f0f4f8}
.report-hbar-track i{display:block;height:100%;border-radius:20px;background:#497aef;min-width:1px}
.report-hbar-track i.negative{background:#e06e7e}
.report-chart-note{font-size:10px;line-height:1.6;color:#8999ad;margin-top:12px}
@media(max-width:960px){.report-charts{grid-template-columns:minmax(0,1fr)}.report-chart-wide{grid-column:auto}.report-donut-layout{grid-template-columns:152px minmax(0,1fr)}}
@media(max-width:700px){.report-filter{padding:12px}.report-books{width:100%}.report-range-controls{width:100%}.report-range-btn{flex:1 1 auto}.report-custom-range{width:100%}.report-custom-range label{flex:1 1 140px}.report-custom-range .field-input{width:100%}.report-donut-layout{grid-template-columns:minmax(0,1fr);justify-items:center}.report-categories{width:100%}.report-trend{min-width:100%}.report-chart-card{min-height:220px}}
@media(max-width:350px){.report-range-btn{font-size:11px;padding:7px 6px}.report-filter .segment{padding:7px 5px}.account-controls .field-select{width:100%}}

/* V1.4.2: modal owns all scrolling, never the page behind it (iOS touch-safe). */
html:has(body.entry-open){overscroll-behavior-y:none}
body.entry-open{overflow:hidden!important;overscroll-behavior:none}
body.entry-open #modal-root{position:relative;z-index:50}
.modal-backdrop{overscroll-behavior:contain;overscroll-behavior-y:none}
.modal-card,.modal-body{overscroll-behavior-y:contain}
.modal-top,.modal-footer{touch-action:manipulation}

/* ===== V1.5.0 / 应收管理：轻量、独立、移动端优先 ===== */
.receivable-teaser{margin-bottom:18px;background:linear-gradient(115deg,#fff,#f6f9ff)}
.receivable-teaser-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.receivable-teaser-top h2{font-size:17px;margin:0 0 6px}
.receivable-teaser-top p{margin:0;color:#8494a8;font-size:12px;line-height:1.7}
.receivable-teaser-values{display:flex;gap:15px;flex-wrap:wrap;margin-top:17px;padding-top:14px;border-top:1px solid #edf2f9}
.receivable-teaser-values span{font-size:12px;color:#8796aa}
.receivable-teaser-values strong{font-size:16px;color:#20334c;margin-left:5px}
.receivable-teaser-values strong.overdue,.ar-summary .overdue{color:#c35462}
.receivable-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:-5px 0 18px}
.receivable-tabs{max-width:100%;flex-wrap:wrap}
.ar-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:17px}
.ar-summary>div{padding:18px;border:1px solid #edf1f7;background:#fff;border-radius:16px;display:flex;flex-direction:column;gap:11px;min-width:0}
.ar-summary span{font-size:12px;color:#8c9aaf}
.ar-summary strong{font-size:19px;color:#20334d;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ar-summary strong.green{color:#0a9d7c}
.ar-list{display:grid;gap:12px}
.ar-order{padding:16px;border:1px solid #e6edf7;background:#fff;border-radius:15px;min-width:0}
.ar-order-main{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.ar-order-main>div{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.ar-order-main strong{font-size:14px;overflow-wrap:anywhere}
.ar-order-main p{margin:3px 0 0;color:#8998a9;font-size:12px;width:100%;line-height:1.65}
.ar-order-total{flex-shrink:0;white-space:nowrap;font-size:18px!important;color:#1b2c45}
.ar-state{display:inline-flex;align-items:center;border-radius:18px;padding:4px 7px;font-size:10px;font-weight:750;background:#fff4e7;color:#a66d21}
.ar-state.late{background:#fff0f2;color:#d35062}
.ar-state.paid{background:#e7f8f2;color:#078e70}
.ar-progress{height:7px;border-radius:9px;background:#edf2f8;overflow:hidden;margin:15px 0 10px}
.ar-progress>div{height:100%;border-radius:9px;background:linear-gradient(90deg,#4c86f5,#13b39a)}
.ar-breakdown{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:#8b98ab;font-variant-numeric:tabular-nums}
.ar-breakdown strong{color:#2b5ebd;font-weight:750}
.ar-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:14px}
.ar-actions .btn{min-height:35px;padding:8px 11px;font-size:12px}
.ar-entry-link{display:flex;justify-content:flex-end;margin:-3px 0 15px}
.ar-dialog{height:auto}
.ar-dialog form{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.ar-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 11px;margin-top:10px}
.ar-field{display:flex;flex-direction:column;min-width:0;gap:7px;color:#526682;font-size:12px;font-weight:700}
.ar-field em{color:#cb6070;font-style:normal;font-size:10px}
.ar-field.full{grid-column:1/-1}
.ar-field .field-input,.ar-field .field-select,.ar-field .field-textarea{width:100%;margin:0}
.ar-banner{margin:0 0 14px}
.ar-form-hint{font-size:12px;color:#a66b23;line-height:1.7}
.ar-payment-banner{border:1px solid #daebff;background:#f3f8ff;border-radius:13px;padding:13px;display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap;color:#536d92;font-size:12px}
.ar-payment-banner strong{font-size:17px;color:#2465d4}
.ar-history-title{font-size:14px;margin:20px 0 10px;color:#25334a}
.ar-payment-line{display:flex;align-items:center;gap:8px;border-top:1px solid #edf1f8;padding:12px 0}
.ar-payment-line>div{flex:1;min-width:0}
.ar-payment-line>div strong{display:block;font-size:12px;color:#263951}
.ar-payment-line small{display:block;font-size:11px;color:#9ba7b8;margin-top:5px;overflow-wrap:anywhere}
.ar-payment-line>strong{color:#079b79;font-size:14px;white-space:nowrap}
.ar-payment-line .icon-btn{flex-shrink:0}
@media(max-width:850px){.ar-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.ar-summary{gap:9px}.ar-summary>div{padding:13px}.ar-summary strong{font-size:16px}.receivable-toolbar .segment{padding:8px 10px}.ar-order{padding:12px}.ar-order-total{font-size:15px!important}.ar-form-grid{gap:12px 9px}}


/* ===== v1.5.1: prevent native iOS date input overlapping adjacent amount input =====
   iOS Safari date controls may retain an intrinsic minimum width in a two-column grid.
   Keep tablet/desktop columns; show one readable column in phone-size receivable forms.
   Existing data, transaction logic, and cloud sync are unchanged. */
.ar-form-grid > .ar-field,
.ar-form-grid .field-input,
.ar-form-grid .field-select,
.ar-form-grid .field-textarea {
  min-width: 0;
  max-width: 100%;
}
.ar-form-grid input[type="date"] {
  display: block;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
@media (max-width: 700px) {
  .ar-form-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .ar-field.full {
    grid-column: 1 / -1;
  }
  .ar-form-grid .field-input,
  .ar-form-grid .field-select {
    font-size: 16px; /* iOS Safari: prevent unwanted zoom when focusing a field */
  }
}
