:root{--tide: #0c3f3a;--tide-2: #1a6b5c;--mist: #e7eef0;--paper: #f7faf9;--ink: #14201e;--muted: #5c6f6b;--line: #d5e0dd;--income: #1f7a4d;--expense: #b42318;--unrecv: #c45c26;--balance: #1d4f91;--settle: #6b4c9a;--shadow: 0 10px 30px rgba(12, 63, 58, .08);--radius: 14px;--font-display: "Noto Serif SC", "Songti SC", serif;--font-body: "Noto Sans SC", "PingFang SC", sans-serif;--sidebar: 228px;--topbar-h: 56px;--bottom-h: 64px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-body);color:var(--ink);background:radial-gradient(1200px 500px at 10% -10%,rgba(26,107,92,.12),transparent 60%),linear-gradient(180deg,#eef5f4 0%,var(--paper) 40%,#f3f6f5 100%)}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.num{font-variant-numeric:tabular-nums}.center-screen{min-height:100vh;display:grid;place-items:center;color:var(--muted)}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);flex-shrink:0;background:radial-gradient(420px 220px at 10% -10%,rgba(240,180,41,.12),transparent 55%),linear-gradient(180deg,#0a322e,#0d4039 48%,#0b3531);color:#e8f3f1;display:flex;flex-direction:column;padding:20px 14px 16px;position:fixed;left:0;top:0;bottom:0;height:100vh;height:100dvh;z-index:30;gap:14px}.brand{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;padding:4px 6px 2px}.brand-icon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:#ffffff1a;border:1px solid rgba(255,255,255,.08);color:#f3d27a}.brand-copy{min-width:0}.brand-title{font-family:var(--font-display);font-weight:700;font-size:1.28rem;letter-spacing:.06em;line-height:1.15;color:#fff}.brand-sub{margin-top:4px;color:#e8f3f19e;font-size:.78rem;letter-spacing:.18em;text-indent:.08em}.sidebar-close{display:none;color:#fff}.side-cta{display:flex;align-items:center;justify-content:center;gap:8px;margin:2px 4px 4px;padding:12px 14px;border-radius:12px;background:linear-gradient(180deg,#f6c84a,#e8b02a);color:#1a1a1a;font-weight:700;box-shadow:0 8px 18px #0000002e}.side-cta:hover{filter:brightness(1.03)}.nav{display:flex;flex-direction:column;gap:16px;flex:1;min-height:0;overflow:auto;padding:2px 0}.nav-group{display:grid;gap:4px}.nav-label{padding:0 12px 6px;font-size:.72rem;letter-spacing:.14em;color:#e8f3f16b;text-transform:uppercase}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:11px;color:#e8f3f1c7;font-size:.94rem}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:#ffffff24;color:#fff;font-weight:600;box-shadow:inset 3px 0 #f0b429}.nav-ico{display:grid;place-items:center;width:22px;opacity:.9}.nav-text{min-width:0}.sidebar-foot{padding-top:12px;border-top:1px solid rgba(255,255,255,.1);display:grid;gap:8px}.user-chip{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:0 4px}.user-name{font-size:.86rem;font-weight:600;color:#ffffffe6}.user-date{font-size:.72rem;color:#e8f3f173;white-space:nowrap}.side-logout{display:inline-flex;align-items:center;gap:8px;width:100%;border:0;background:transparent;color:#e8f3f1b3;padding:8px 10px;border-radius:10px;cursor:pointer;font:inherit}.side-logout:hover{background:#ffffff0f;color:#fff}.main{flex:1;min-width:0;margin-left:var(--sidebar);width:calc(100% - var(--sidebar));padding:20px 18px 36px;overflow-x:visible}html,body{overflow-x:hidden}.topbar,.bottom-nav,.more-sheet,.more-backdrop,.nav-backdrop{display:none}.page{width:100%;max-width:none;margin:0;animation:rise .35s ease both}.entry-page,.login-related{max-width:720px;margin:0 auto}@keyframes rise{0%{opacity:0}to{opacity:1}}.page-hero{margin-bottom:18px}.page-hero-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-end}.eyebrow{margin:0 0 6px;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--tide-2);font-weight:600}.page-hero h1,.entry-page h1,.login-card h1{margin:0;font-family:var(--font-display);font-size:clamp(1.6rem,2.4vw,2.1rem);letter-spacing:.02em}.lede{margin:8px 0 0;color:var(--muted);max-width:42rem;line-height:1.55}.muted{color:var(--muted)}.error{background:#fef3f2;color:var(--expense);border:1px solid #f9d4cf;border-radius:10px;padding:10px 12px;margin:10px 0}.notice{color:var(--tide-2)}.panel{background:#ffffffd1;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}.panel-head{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-start;padding:18px 20px 12px;border-bottom:1px solid var(--line)}.panel-head h2{margin:0;font-size:1.1rem;font-family:var(--font-display)}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px;padding:10px 14px;border-radius:12px;border:1px solid color-mix(in srgb,var(--tide) 28%,var(--line));background:color-mix(in srgb,var(--tide) 8%,#fff);color:var(--ink);font-size:.92rem}.filter-bar .btn{flex-shrink:0}.search,select,input,textarea{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fff;color:var(--ink)}.search{min-width:180px}.seg{display:inline-flex;background:var(--mist);border-radius:999px;padding:3px}.seg button{border:0;background:transparent;padding:7px 12px;border-radius:999px;cursor:pointer;color:var(--muted)}.seg button.active{background:#fff;color:var(--tide);font-weight:600;box-shadow:0 1px 4px #0000000f}.btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 14px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--ink)}.btn:hover{border-color:#b9cbc6}.btn.primary{background:var(--tide);border-color:var(--tide);color:#fff;font-weight:600}.btn.primary:hover{background:#0f4f48}.btn.ghost{border-color:transparent;background:transparent}.btn.small{padding:6px 10px;font-size:.86rem}.btn.danger{color:var(--expense);border-color:#f0c7c2}.btn.block{width:100%;justify-content:center}.btn:disabled{opacity:.55;cursor:not-allowed}.entry-cta{white-space:nowrap}.stat-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.stat-strip.stats-5{grid-template-columns:repeat(5,minmax(0,1fr))}.stat-strip.stats-6{grid-template-columns:repeat(6,minmax(0,1fr))}.cards.stats-month{grid-template-columns:repeat(4,minmax(0,1fr))}.cards.stats-month.stats-month-6{grid-template-columns:repeat(6,minmax(0,1fr))}.stat-tile{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:grid;gap:6px;position:relative;overflow:hidden}.stat-tile span{color:var(--muted);font-size:.84rem}.stat-tile strong{font-size:1.25rem;font-weight:700}.stat-tile em{font-style:normal;font-size:.75rem;color:var(--muted)}.stat-tile.tone-in strong{color:var(--income)}.stat-tile.tone-recv strong{color:var(--tide-2)}.stat-tile.tone-out strong{color:var(--expense)}.stat-tile.tone-bal strong{color:var(--balance)}.stat-tile.tone-due strong{color:var(--unrecv)}.stat-tile.tone-prev strong{color:#4a5f75}.stat-tile.hot{border-color:#f0c9a8;background:linear-gradient(180deg,#fff7f0,#fff)}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.stat,.finance-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px}.stat-n{font-size:1.4rem;font-weight:700}.stat-l{color:var(--muted);font-size:.84rem;margin-top:4px}.ledger{padding:8px 10px 14px}.ledger-row{border:1px solid var(--line);border-radius:14px;margin:8px 0;background:#fff;overflow:hidden;border-left:5px solid var(--tide-2);transition:transform .15s ease,box-shadow .15s ease}.ledger-row.kind-catch{border-left-color:var(--income)}.ledger-row.kind-expense{border-left-color:var(--expense)}.ledger-row.kind-settle{border-left-color:var(--settle)}.ledger-row.open{box-shadow:var(--shadow)}.ledger-main{width:100%;border:0;background:transparent;display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:12px 14px;text-align:left;cursor:pointer}.ledger-day{width:56px;height:56px;border-radius:14px;background:var(--mist);display:grid;place-content:center;text-align:center}.ledger-day .d{font-size:1.25rem;font-weight:700;line-height:1;color:var(--tide)}.ledger-day .m{font-size:.72rem;color:var(--muted)}.ledger-title{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ledger-title strong{font-size:1rem}.ledger-sub{margin-top:4px;font-size:.84rem}.ledger-money{text-align:right}.ledger-bal{margin-top:4px;font-size:.8rem}.tag{font-size:.72rem;padding:2px 7px;border-radius:999px;font-weight:600}.tag.catch{background:#e5f6ec;color:var(--income)}.tag.expense{background:#fdecea;color:var(--expense)}.tag.settle{background:#f1eaf8;color:var(--settle)}.ledger-detail{border-top:1px dashed var(--line);padding:12px 14px 14px;background:#fbfdfc;animation:rise .2s ease both}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 14px;font-size:.88rem}.detail-grid span{display:block;color:var(--muted);font-size:.75rem;margin-bottom:2px}.detail-grid .full{grid-column:1 / -1}.ledger-ops{display:flex;gap:8px;margin-top:12px}.amt-income{color:var(--income);font-weight:600}.amt-expense{color:var(--expense);font-weight:600}.amt-unreceived{color:var(--unrecv);font-weight:600}.amt-balance{color:var(--balance);font-weight:600}.entry-page .entry-panel{padding:18px 20px 22px}.entry-form{display:flex;flex-direction:column;min-height:0}.entry-form-body{display:flex;flex-direction:column;gap:14px;min-width:0}.mode-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mode-tabs button{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 6px;cursor:pointer;font-weight:600;color:var(--muted);font-size:.9rem;white-space:nowrap}.mode-tabs button.active{background:var(--tide);color:#fff;border-color:var(--tide)}.mode-tab-short{display:none}.mode-tab-long{display:inline}.entry-section{border:1px solid var(--line);border-radius:12px;padding:12px 14px 14px;background:#fbfdfe;min-width:0}.entry-section-title{margin:0 0 10px;font-size:.78rem;font-weight:700;letter-spacing:.06em;color:var(--tide-2);text-transform:none}.entry-grid,.entry-date,.entry-money,.form-grid{display:grid;gap:12px;min-width:0}.entry-grid,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.entry-date,.entry-money{grid-template-columns:repeat(3,minmax(0,1fr))}.entry-grid label,.entry-date label,.entry-money label,.form-grid label,.login-card label,.entry-grid .field,.form-grid .field{display:grid;gap:6px;font-size:.86rem;color:var(--muted);font-weight:500;min-width:0}.entry-grid .field-label,.form-grid .field-label{color:var(--muted)}.entry-grid label.full,.form-grid label.full,.entry-grid .field.full,.form-grid .field.full{grid-column:1 / -1}.entry-grid input,.entry-grid select,.entry-grid textarea,.entry-date input,.entry-money input,.form-grid input,.form-grid select,.form-grid textarea{width:100%;min-width:0;max-width:100%}.entry-hint{margin:0;color:var(--muted);font-size:.84rem;grid-column:1 / -1}.entry-hint.full{grid-column:1 / -1}.suggest{position:relative;width:100%;min-width:0}.suggest-field{display:grid;grid-template-columns:1fr auto;gap:0;align-items:stretch}.suggest-field input{width:100%;min-width:0;border-radius:10px 0 0 10px;border-right:0}.suggest-toggle{border:1px solid var(--line);border-radius:0 10px 10px 0;background:#fff;min-width:44px;padding:0 10px;cursor:pointer;color:var(--ink);font-size:.85rem}.suggest.is-open .suggest-toggle{border-color:var(--tide);color:var(--tide)}.suggest-list{list-style:none;margin:8px 0 0;padding:6px;max-height:min(280px,45vh);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px #0a1e1c1f}.suggest-list-portal{position:fixed;z-index:220;margin:0;box-shadow:0 16px 40px #0a1e1c38}.suggest-list li{margin:0}.suggest-list button{display:block;width:100%;text-align:left;border:0;background:transparent;padding:14px 12px;border-radius:8px;font:inherit;color:var(--ink);cursor:pointer;touch-action:pan-y;user-select:none;-webkit-user-select:none}.suggest-list button:active,.suggest-list button:hover{background:var(--mist)}.suggest-list button.is-active{background:#0c3f3a14;color:var(--tide);font-weight:700}.suggest-empty,.suggest-more,.suggest-tip{padding:12px;color:var(--muted);font-size:.86rem}.suggest-tip{text-align:center;font-size:.78rem;padding-top:4px;padding-bottom:8px}.entry-actions,.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;flex-shrink:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a1e1c7a;display:grid;place-items:center;z-index:50;padding:24px;overflow:auto}.modal,.modal-sheet{width:min(720px,100%);max-height:min(88vh,820px);display:flex;flex-direction:column;overflow:hidden;background:#fff;border-radius:16px;padding:0;box-shadow:0 24px 60px #0a1e1c47;animation:rise .22s ease both}.modal.wide{width:min(920px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);flex-shrink:0;background:#fff}.modal-head h2{margin:0;font-family:var(--font-display);font-size:1.2rem}.modal .entry-form{flex:1;min-height:0;display:flex;flex-direction:column}.modal .entry-form-body{flex:1;min-height:0;overflow:auto;padding:14px 18px 8px;-webkit-overflow-scrolling:touch}.modal .entry-actions,.modal .modal-actions{margin:0;padding:12px 18px 16px;border-top:1px solid var(--line);background:#fff}.modal-body{flex:1;min-height:0;overflow:auto;padding:14px 18px 8px;-webkit-overflow-scrolling:touch}.modal-body h3{margin:12px 0 8px;font-size:.95rem;color:var(--tide)}.modal-body h3:first-child{margin-top:0}.fab{position:fixed;right:22px;bottom:22px;width:58px;height:58px;border-radius:50%;border:0;background:var(--tide);color:#fff;box-shadow:0 12px 28px #0c3f3a59;display:grid;place-items:center;cursor:pointer;z-index:45;font-size:1.7rem;line-height:1}.fab:hover{filter:brightness(1.05)}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(160deg,#0c3f3aeb,#1a6b5cbf),radial-gradient(800px 400px at 80% 20%,rgba(240,180,41,.25),transparent)}.login-card{width:min(400px,100%);background:#fff;border-radius:20px;padding:28px 24px;box-shadow:var(--shadow);display:grid;gap:12px}.login-mark{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:var(--mist);color:var(--tide)}.login-card h1{font-family:var(--font-display);font-size:1.55rem}.backup-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px}.backup-card{border:1px solid var(--line);border-radius:16px;padding:18px;background:#fff;display:grid;gap:8px;cursor:pointer;text-align:left}.backup-card h2{margin:0;font-size:1.05rem;font-family:var(--font-display)}.backup-card p{margin:0;color:var(--muted);font-size:.9rem}.backup-page .backup-stats{margin-bottom:14px}.backup-actions{padding:14px 18px 18px;display:grid;gap:12px}.backup-actions .btn.block,.backup-actions label.btn.block{width:100%;justify-content:center;min-height:48px}.backup-actions label.btn.block{cursor:pointer}.backup-actions label.btn.is-disabled{opacity:.55;pointer-events:none}.backup-hint,.backup-notes{margin:0;color:var(--muted);font-size:.88rem;line-height:1.5}.backup-notes{padding:0 18px 18px;display:grid;gap:8px}.backup-preview{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fbfdfe;display:grid;gap:10px}.backup-preview h3{margin:0;font-size:1rem}.backup-preview ul{margin:0;padding-left:18px;color:var(--ink);font-size:.9rem;line-height:1.5}.backup-check{display:flex;gap:10px;align-items:flex-start;font-size:.9rem;color:var(--ink)}.backup-check input{margin-top:3px;width:18px;height:18px;flex-shrink:0}.backup-preview-ops{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.backup-flash{margin:12px 0 0;padding:12px 14px;border-radius:12px}.backup-flash.ok{background:#e8f6ef;color:#0c3f3a}.btn.danger{background:#fff;color:var(--expense);border-color:#f0c7c2}.btn.danger:disabled{opacity:.5}.table-wrap{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 280px);-webkit-overflow-scrolling:touch;background:linear-gradient(90deg,#fff 70%,#fff0) 0 0 / 28px 100% local,linear-gradient(270deg,#fff 70%,#fff0) 100% 0 / 28px 100% local,linear-gradient(90deg,rgba(12,63,58,.08),transparent 40%) 0 0 / 14px 100% scroll,linear-gradient(270deg,rgba(12,63,58,.08),transparent 40%) 100% 0 / 14px 100% scroll,#fff;background-repeat:no-repeat;border-top:1px solid var(--line)}.data-table,.finance-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--ink)}.data-table th,.data-table td,.finance-table th,.finance-table td{padding:10px 12px;border-bottom:1px solid #e4eeeb;text-align:left;vertical-align:middle;box-sizing:border-box}.data-table thead th,.finance-table thead th{position:sticky;top:0;z-index:3;height:42px;padding:0 12px;color:#35564f;font-weight:600;font-size:12px;letter-spacing:.04em;white-space:nowrap;background:linear-gradient(180deg,#f5faf8,#e8f2ef);border-bottom:2px solid rgba(26,107,92,.28);box-shadow:0 1px #ffffffb3 inset}.data-table tbody tr:nth-child(2n) td,.finance-table tbody tr:nth-child(2n) td{background:#f7fbfa}.data-table tbody tr:hover td,.finance-table tbody tr:hover td{background:#eef6f3}.data-table th.num,.data-table td.num,.finance-table th.num,.finance-table td.num{text-align:right}.data-table .col-muted,.finance-table .col-muted{color:#7a8f89;font-weight:400}.data-table td.note,.finance-table td.note{max-width:220px;color:#6d817b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.data-table td.ops,.finance-table td.ops{white-space:nowrap;overflow:visible}.data-table td.ops .btn,.finance-table td.ops .btn{padding:5px 10px;font-size:12px;border-radius:8px;background:#f4f8f7}.data-table td.ops .btn+.btn,.finance-table td.ops .btn+.btn{margin-left:6px}.data-table td.ops .btn.danger,.finance-table td.ops .btn.danger{background:#fff5f4;border-color:#f0c7c2}.cell-unrecv{background:#fff6ef!important}.amt.is-zero,.amt.is-empty{color:#9aaba6!important;font-weight:450!important}.badge{display:inline-flex;align-items:center;margin-left:8px;padding:2px 8px;border-radius:999px;background:#e7f2ef;color:var(--tide-2);font-size:.75rem;font-weight:600;vertical-align:middle}.finance-table{--pin-y: 52px;--pin-m: 40px;--pin-d: 40px;--pin-c: 148px;--pin-left-end: calc(var(--pin-y) + var(--pin-m) + var(--pin-d) + var(--pin-c));width:max-content;min-width:100%;table-layout:fixed}.finance-table.finance-table--ymd{--pin-y: 0px;--pin-left-end: calc(var(--pin-m) + var(--pin-d) + var(--pin-c))}.finance-table th,.finance-table td{height:42px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.finance-table col.col-year{width:var(--pin-y)}.finance-table col.col-month{width:var(--pin-m)}.finance-table col.col-day{width:var(--pin-d)}.finance-table col.col-customer{width:var(--pin-c)}.finance-table col.col-address{width:80px}.finance-table col.col-project{width:104px}.finance-table col.col-price{width:72px}.finance-table col.col-weight{width:76px}.finance-table col.col-note{width:128px}.finance-table col.col-fuel,.finance-table col.col-meal{width:68px}.finance-table col.col-money{width:92px}.finance-table col.col-ops{width:120px}.finance-table .pin-l,.finance-table .pin-r{position:sticky;background:#fff}.finance-table thead .pin-l,.finance-table thead .pin-r{z-index:6;background:linear-gradient(180deg,#f5faf8,#e8f2ef)}.finance-table tbody .pin-l,.finance-table tbody .pin-r{z-index:2}.finance-table tbody tr:nth-child(2n) .pin-l,.finance-table tbody tr:nth-child(2n) .pin-r{background:#f7fbfa}.finance-table tbody tr:hover .pin-l,.finance-table tbody tr:hover .pin-r{background:#eef6f3}.finance-table .pin-year{left:0;width:var(--pin-y);min-width:var(--pin-y);max-width:var(--pin-y)}.finance-table .pin-month{left:var(--pin-y);width:var(--pin-m);min-width:var(--pin-m);max-width:var(--pin-m)}.finance-table .pin-day{left:calc(var(--pin-y) + var(--pin-m));width:var(--pin-d);min-width:var(--pin-d);max-width:var(--pin-d)}.finance-table .pin-customer{left:calc(var(--pin-y) + var(--pin-m) + var(--pin-d));width:var(--pin-c);min-width:var(--pin-c);max-width:var(--pin-c);font-weight:600;color:#17332e;box-shadow:8px 0 12px -8px #0c3f3a2e}.finance-table .pin-r{right:0;box-shadow:-8px 0 12px -8px #0c3f3a2e}.customers-table{table-layout:fixed;width:100%;min-width:960px}.customers-table th,.customers-table td{white-space:normal;height:auto;padding:14px;vertical-align:top;overflow:visible}.customers-table th:nth-child(1),.customers-table td:nth-child(1){position:sticky;left:0;z-index:2;width:48px;min-width:48px;color:var(--muted);font-variant-numeric:tabular-nums;background:#fff}.customers-table th:nth-child(2),.customers-table td:nth-child(2){position:sticky;left:48px;z-index:2;width:220px;min-width:220px;max-width:260px;background:#fff;box-shadow:8px 0 12px -8px #0c3f3a2e}.customers-table thead th:nth-child(1),.customers-table thead th:nth-child(2){z-index:6;background:linear-gradient(180deg,#f5faf8,#e8f2ef)}.customers-table tbody tr:nth-child(2n) td:nth-child(1),.customers-table tbody tr:nth-child(2n) td:nth-child(2){background:#f7fbfa}.customers-table tbody tr:hover td:nth-child(1),.customers-table tbody tr:hover td:nth-child(2){background:#eef6f3}.customers-table td.ops{vertical-align:middle}.cust-name{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:4px}.cust-name strong{font-size:.98rem;color:#17332e}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.pill{display:inline-flex;padding:2px 8px;border-radius:6px;background:#eef4f2;color:#3d5550;font-size:12px;font-weight:500}.logs-table td.note{max-width:420px;white-space:normal}.desktop-table{display:block}.flow-list.mobile-cards{display:none}.flow-list{gap:10px;padding:12px 14px 18px}.flow-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 14px 12px;box-shadow:var(--shadow)}.flow-card.has-unrecv{border-color:#f0c9a8;background:linear-gradient(180deg,#fff7f0,#fff)}.flow-card-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.flow-card-name{font-size:1.05rem;color:#17332e}.flow-card-date{color:var(--muted);font-size:.86rem;font-variant-numeric:tabular-nums;white-space:nowrap}.flow-card-mid{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}.flow-card-meta{color:var(--muted);font-size:.84rem}.flow-card-amounts{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-top:10px;font-size:.95rem}.unrecv-pill{display:inline-flex;align-items:center;gap:4px;background:#fff1e6;color:var(--unrecv);border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:600}.flow-card-note{margin:8px 0 0;color:#5c6f6b;font-size:.84rem;line-height:1.4}.flow-card-balance{margin-top:6px;font-size:.8rem}.flow-card-ops{display:flex;gap:8px;margin-top:12px;justify-content:flex-end}.customer-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:var(--shadow)}.customer-card.has-unrecv{border-color:#f0c9a8;background:linear-gradient(180deg,#fff7f0,#fff)}.customer-card-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.customer-card-name{font-size:1.05rem;color:#17332e}.customer-card-phone{color:var(--muted);font-size:.86rem;margin-top:4px}.customer-card-addr{color:var(--muted);font-size:.82rem;margin-top:2px}.customer-card-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.customer-card-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.customer-card-stats div{background:#f4f8f7;border-radius:10px;padding:8px}.customer-card-stats .k{color:var(--muted);font-size:.72rem}.customer-card-stats .v{font-weight:700;margin-top:2px;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.customer-card-ops{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;justify-content:flex-end}.project-tag{display:inline-block;max-width:100%;padding:3px 9px;border-radius:6px;background:#e8f2ef;color:#1f5a4f;font-size:12px;font-weight:550;line-height:1.25;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.project-tag.purple{background:#f1eaf8;color:var(--settle)}@media(max-width:960px){.shell{flex-direction:column;padding-bottom:calc(var(--bottom-h) + 20px + env(safe-area-inset-bottom,0px))}.sidebar{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);transform:translate(-105%);transition:transform .22s ease;z-index:40;height:100%}.shell.nav-open .sidebar{transform:none}.sidebar-close{display:inline-flex}.nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:35}.nav-backdrop[hidden]{display:none!important}.topbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20;height:var(--topbar-h);padding:0 12px;background:#f7faf9f0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar-menu{width:40px;height:40px;border:0;background:transparent;display:grid;gap:5px;place-content:center}.topbar-menu span{display:block;width:18px;height:2px;background:var(--ink);border-radius:2px}.topbar-brand{display:flex;align-items:center;gap:6px;font-family:var(--font-display);font-weight:700;flex:1}.topbar-entry{display:none}.main{margin-left:0;width:100%;padding:14px 14px 28px;overflow-x:visible}.page-hero{margin-bottom:10px}.page-hero h1{font-size:1.4rem}.page-hero .lede{display:none}.page-hero .eyebrow{margin-bottom:2px}.finance-page .entry-cta{display:none}.page-hero-row>.toolbar.hero-actions,.page-hero-row>.toolbar{display:none}.page-hero-row{flex-direction:column;align-items:stretch;gap:8px}.panel-head{padding:14px 14px 10px;gap:10px}.panel-head .toolbar,.toolbar.wrap{width:100%;display:grid;grid-template-columns:1fr;gap:8px}.finance-page .panel-head .toolbar{grid-template-columns:auto minmax(0,1fr) auto;align-items:center}.finance-page .panel-head .toolbar .month-select-wrap{grid-column:auto;width:100%}.finance-page .panel-head .toolbar .search-row{grid-column:1 / -1;width:100%}.finance-page .panel-head .toolbar .search{min-width:0;width:100%}.finance-page .panel-head .toolbar .seg{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,1fr);width:100%;border-radius:12px}.finance-page .panel-head .toolbar .seg button{width:100%;text-align:center}.monthly-page .panel-head{display:grid;gap:10px}.monthly-page .panel-head .toolbar{grid-template-columns:1fr}.monthly-page .panel-head .toolbar .seg{display:grid;grid-template-columns:repeat(4,1fr);width:100%;border-radius:12px}.monthly-page .panel-head .toolbar .seg button{width:100%;text-align:center;padding:8px 4px;white-space:nowrap}.monthly-page .panel-head .toolbar>.btn{width:100%;justify-content:center}.search{min-width:0;width:100%}.toolbar select{width:100%}body:has(.modal-backdrop),body.modal-open{overflow:hidden}body:has(.modal-backdrop) .bottom-nav,body:has(.modal-backdrop) .more-sheet,body:has(.modal-backdrop) .more-backdrop,body:has(.modal-backdrop) .fab,body.modal-open .bottom-nav,body.modal-open .more-sheet,body.modal-open .more-backdrop,body.modal-open .fab{display:none!important}.stat-strip,.stat-strip.stats-5,.stat-strip.stats-6,.cards,.cards.stats-month{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -14px 14px;padding:2px 14px 8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.stat-strip::-webkit-scrollbar,.cards::-webkit-scrollbar{display:none}.stat-tile,.cards .finance-card,.cards .stat{flex:0 0 44%;min-width:148px;max-width:190px;scroll-snap-align:start}.stat-tile strong,.card-value,.stat-n{font-size:1.05rem;white-space:nowrap}.stat-tile span,.stat-tile em{font-size:.75rem}.fab{display:grid;right:16px;bottom:calc(var(--bottom-h) + 18px + env(safe-area-inset-bottom,0px))}.finance-page .fab{display:none}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--bottom-h) + env(safe-area-inset-bottom,0px));padding:6px 0 env(safe-area-inset-bottom,0px);background:#fffffff7;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.bn-item{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;color:var(--muted);font-size:.68rem;padding:0;text-decoration:none}.bn-item.active{color:var(--tide);font-weight:700}.bn-ico{display:grid;place-items:center;width:28px;height:28px;color:inherit}.bn-label{line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bn-item.bn-primary{color:var(--tide);font-weight:700}.bn-item.bn-primary .bn-ico{width:40px;height:40px;border-radius:50%;background:var(--tide);color:#fff;box-shadow:0 6px 14px #0c3f3a47}.bn-item.bn-primary .bn-label{color:var(--tide)}.bn-item.bn-primary.active .bn-ico{background:#0f4f48}.more-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0a1e1c47;z-index:31}.more-sheet{display:grid;gap:4px;position:fixed;left:12px;right:12px;bottom:calc(var(--bottom-h) + 12px + env(safe-area-inset-bottom,0px));background:#fff;border:1px solid var(--line);border-radius:16px;padding:8px;z-index:32;box-shadow:var(--shadow)}.more-link{display:flex;align-items:center;gap:10px;padding:14px 12px;border-radius:12px;border:0;background:transparent;text-align:left;width:100%;font-size:.95rem;color:var(--ink)}.more-link:active{background:var(--mist)}.desktop-table{display:none!important}.flow-list.mobile-cards{display:grid}.backup-grid{grid-template-columns:1fr;gap:12px;padding:14px}.backup-card{min-height:0}.detail-grid{grid-template-columns:repeat(2,1fr)}.entry-grid,.form-grid{grid-template-columns:1fr}.entry-date{grid-template-columns:repeat(3,minmax(0,1fr))}.entry-money{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.entry-money label{font-size:.8rem}.entry-section{padding:10px 12px 12px}.mode-tabs button{padding:10px 4px;font-size:.88rem}.mode-tab-short{display:inline}.mode-tab-long{display:none}.flow-list.mobile-cards{padding-bottom:8px}.panel .flow-list.mobile-cards{margin-bottom:4px}.entry-page .entry-actions{position:static;background:transparent;padding:14px 0 6px;margin:8px 0 0;border-top:1px solid var(--line);z-index:auto}.entry-page .panel.entry-panel{padding:14px 14px 18px}.entry-page{padding-bottom:12px}.month-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;gap:8px}.month-stats{grid-template-columns:1fr 1fr;gap:6px 14px}.monthly-range-stats{padding:0 14px 14px}.customer-card-ops{display:grid;grid-template-columns:1fr 1fr;gap:8px}.customer-card-ops .btn:first-child{grid-column:1 / -1}.flow-card-ops{display:grid;grid-template-columns:1fr 1fr;gap:8px}.customer-card-ops .btn,.flow-card-ops .btn{justify-content:center;min-height:42px;width:100%}.modal-head{gap:8px;align-items:flex-start}.modal-head h2{flex:1;min-width:0;font-size:1.05rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-head .toolbar{flex-shrink:0;gap:6px}.modal-head .toolbar .btn.primary{padding:8px 10px;font-size:.82rem}.pager{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;padding:12px 14px 16px;font-size:.86rem}.pager span{text-align:center;width:100%;order:-1}.fab{width:52px;height:52px;font-size:1.6rem;line-height:1}.log-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}.log-card-top{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.log-action{font-size:1rem}.log-time{font-size:.75rem;color:var(--muted);white-space:nowrap}.log-card-meta{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}.log-card-detail{margin:8px 0 0;font-size:.9rem;color:var(--ink);word-break:break-word;line-height:1.4}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;padding:0;overflow:hidden;z-index:100}.modal,.modal-sheet{width:100%;max-height:min(92dvh,calc(100vh - 8px));border-radius:16px 16px 0 0;margin:0;flex-shrink:0}.modal .entry-actions,.modal .modal-actions{padding-bottom:calc(14px + env(safe-area-inset-bottom,0px));background:#fff;position:relative;z-index:2}}@media(max-width:520px){.month-grid{grid-template-columns:1fr}}.cards.three{grid-template-columns:repeat(3,1fr)}.month-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:14px 16px 18px}.month-card{border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px;text-align:left;cursor:pointer;min-width:0}.month-card.active{border-color:var(--tide);box-shadow:0 0 0 2px #0c3f3a1f}.month-top{display:flex;justify-content:space-between;margin-bottom:8px}.month-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;font-size:.8rem;color:var(--muted)}.month-stats .ms{display:flex;justify-content:space-between;gap:8px;align-items:baseline;min-width:0}.month-stats .ms:last-child:nth-child(odd){grid-column:1 / -1}.month-stats .ms em{font-style:normal;color:var(--muted);flex-shrink:0}.month-stats .ms b{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.month-select-wrap{position:relative;min-width:0;flex:1}.month-select-face{display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;padding:9px 30px 9px 11px;font-weight:600;color:var(--ink);background:#fff;pointer-events:none;min-height:44px;box-sizing:border-box}.month-select-wrap select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:16px;border:0;background:transparent;-moz-appearance:none;appearance:none;-webkit-appearance:none}.month-select-face:after{content:"";position:absolute;right:12px;top:50%;width:10px;height:10px;margin-top:-2px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:translateY(-50%) rotate(45deg);opacity:.55;pointer-events:none}.month-select-wrap .month-select-face{position:relative}.search-row{display:flex;gap:8px;align-items:center;min-width:0;flex:1}.search-row .search{flex:1;min-width:0}.card-label{margin:0;color:var(--muted);font-size:.84rem}.card-value{margin:6px 0 0;font-size:1.25rem;font-weight:700}@media(max-width:960px){.cards.three{grid-template-columns:1fr}.mode-tab-short{display:inline}.mode-tab-long{display:none}}.finance-page.fees-hidden .fee-col{display:none}.month-section{border-top:1px solid var(--line)}.month-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px 8px;background:#f7fbfa}.month-bar strong{font-family:var(--font-display);color:var(--tide)}
