@font-face{font-family:Poppins;src:url(/fonts/poppins-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Poppins;src:url(/fonts/poppins-Bold.woff2) format("woff2");font-weight:700;font-display:swap}:root{--ink: #121316;--ink-soft: #1C1E22;--ink-line: #2A2D33;--text: #16181C;--text-soft: #5B6068;--muted: #868C94;--paper: #FAF9F7;--surface: #FFFFFF;--line: #E9E5DE;--line-soft: #F2EFE9;--gold: #C9A227;--gold-soft: #E8C86A;--gold-deep: #8C6B1F;--paid: #1E8E5A;--paid-bg: #E9F5EE;--due: #C9821F;--due-bg: #FCF3E3;--late: #C4372E;--late-bg: #FBECEA;--info: #2F6FB5;--info-bg: #EAF1FA;--radius: 14px;--radius-sm: 10px;--shadow: 0 1px 2px rgba(18, 19, 22, .04), 0 8px 24px rgba(18, 19, 22, .05);--sidebar: 258px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);--tabbar-h: 68px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-family:Poppins,-apple-system,sans-serif;font-weight:500;letter-spacing:-.015em;margin:0}h1{font-size:26px}h2{font-size:17px}h3{font-size:15px}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{min-height:100%}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--ink);color:#fff;padding:22px 16px calc(18px + var(--safe-bottom));display:flex;flex-direction:column;gap:6px}.sidebar .brand{display:flex;align-items:center;gap:11px;padding:4px 8px 20px}.sidebar .brand img{width:38px;height:38px}.sidebar .brand strong{font-family:Poppins,sans-serif;font-weight:500;font-size:15px;display:block}.sidebar .brand span{color:var(--gold-soft)}.sidebar .brand small{color:#8a8f97;font-size:9.5px;letter-spacing:.14em;display:block;margin-top:2px}.nav-link{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--radius-sm);color:#c9ccd2;text-decoration:none;font-size:14.5px;transition:background .15s,color .15s}.nav-link:hover{background:#ffffff0f;color:#fff}.nav-link.active{background:#ffffff1a;color:#fff}.nav-link .count{margin-left:auto;background:var(--late);color:#fff;font-size:11px;font-weight:700;min-width:19px;height:19px;border-radius:10px;display:grid;place-items:center;padding:0 6px}.sidebar .spacer{flex:1}.sidebar .account{display:flex;align-items:center;gap:10px;padding:12px 10px 0;border-top:1px solid var(--ink-line)}.sidebar .account .avatar{width:34px;height:34px;border-radius:50%;background:var(--gold-deep);color:#fff;display:grid;place-items:center;font-weight:600;font-size:13px}.sidebar .account small{color:#868c94;display:block;font-size:12px}.main{padding:26px 30px 40px;margin-left:var(--sidebar);max-width:1320px}.mobile-header,.tabbar{display:none}@media (max-width: 880px){.sidebar{display:none}.main{margin-left:0;padding:12px 16px calc(var(--tabbar-h) + var(--safe-bottom))}.mobile-header{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20;padding:calc(10px + var(--safe-top)) max(20px,env(safe-area-inset-right,0px)) 10px max(20px,env(safe-area-inset-left,0px));background:#faf9f7eb;-webkit-backdrop-filter:saturate(160%) blur(12px);backdrop-filter:saturate(160%) blur(12px);border-bottom:1px solid var(--line-soft);margin:0 0 12px}.mobile-header img{width:32px;height:32px}.mobile-header strong{font-family:Poppins,sans-serif;font-weight:500;font-size:15px}.mobile-header span{color:var(--gold-deep)}.mobile-header .account{margin-left:auto;flex:none}.mobile-header strong{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}html,body{height:100%;overflow:hidden;overscroll-behavior:none}#root{height:100%;width:100%;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.main,.card,.rows,.row,.row .info{min-width:0;max-width:100%}.row .name,.row .meta,.page-head h1,.page-head .sub,.card h3{overflow-wrap:anywhere}.copy-field span{word-break:break-all}img,video,canvas{max-width:100%}.tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;width:100%;transform:translateZ(0);height:calc(var(--tabbar-h) + var(--safe-bottom));background:#fffffff0;-webkit-backdrop-filter:saturate(160%) blur(14px);backdrop-filter:saturate(160%) blur(14px);border-top:1px solid var(--line);padding:0 4px var(--safe-bottom)}.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:var(--tabbar-h);box-sizing:border-box;padding:6px 2px 8px;font-size:10.5px;line-height:1.1;color:var(--muted);text-decoration:none;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabbar a.active{color:var(--ink)}.tabbar .count{position:absolute;top:2px;left:54%;background:var(--late);color:#fff;font-size:10px;font-weight:700;min-width:17px;height:17px;border-radius:9px;display:grid;place-items:center;padding:0 5px}}.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-head .sub{color:var(--muted);font-size:14px;margin-top:2px}.page-head .actions{margin-left:auto;display:flex;gap:10px;align-items:center}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card>header{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--line-soft)}.card>header h2{font-size:15px}.card>header .link{margin-left:auto;font-size:13px;color:var(--text-soft);text-decoration:none}.card>header .link:hover{color:var(--ink)}.card .body,.card.pad{padding:16px 18px}.card.pad .rows{margin-left:-18px;margin-right:-18px}.grid{display:grid;gap:16px}.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.dash{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}@media (max-width: 1080px){.dash{grid-template-columns:1fr}}@media (max-width: 880px){.cols-4{grid-template-columns:repeat(2,1fr);gap:10px}.cols-2{grid-template-columns:1fr}}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:15px 16px}.stat .value{font-family:Poppins,sans-serif;font-size:21px;font-weight:500;letter-spacing:-.02em}.stat .label{color:var(--text-soft);font-size:12.5px;margin-top:3px}.stat.paid{background:var(--paid-bg);border-color:#cfe6da}.stat.paid .value{color:#14623d}.stat.due{background:var(--due-bg);border-color:#f0ddbb}.stat.due .value{color:#96611a}.stat.late{background:var(--late-bg);border-color:#f2cdc8}.stat.late .value{color:#96281f}.stat.gold{background:#fbf4e1;border-color:#efdca8}.stat.gold .value{color:var(--gold-deep)}@media (max-width: 880px){.stat .value{font-size:18px}}.rows{display:flex;flex-direction:column}.row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 18px;background:none;border:0;border-bottom:1px solid var(--line-soft);cursor:pointer}.row:last-child{border-bottom:0}.row:hover{background:#fbfaf8}.row .mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none}.row .info{min-width:0;flex:1}.row .name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .meta{color:var(--muted);font-size:12.5px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.row .value{font-variant-numeric:tabular-nums;font-weight:500;text-align:right;white-space:nowrap;flex:none}.row .value small{display:block;color:var(--muted);font-weight:400;font-size:11.5px}.row.is-late .value{color:var(--late)}.row.is-paid .name{color:var(--text-soft)}@media (max-width: 560px){.row{flex-wrap:wrap;row-gap:8px}.row .value{flex:1 1 100%;white-space:normal}}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid transparent;white-space:nowrap}.badge.pending,.badge.tag{background:#f3f1ec;color:#55595f;border-color:#e6e2da}.badge.paid{background:var(--paid-bg);color:#14623d;border-color:#cfe6da}.badge.overdue{background:var(--late-bg);color:#96281f;border-color:#f2cdc8}.badge.soon{background:#fef3c7;color:#92400e;border-color:#fcd34d}.badge.awaiting_amount{background:var(--due-bg);color:#96611a;border-color:#f0ddbb}.badge.in_review{background:var(--info-bg);color:#24537f;border-color:#cadef3}.badge.canceled{background:#f1f1f2;color:#6b7280;border-color:#e4e4e6}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);font-size:14.5px;font-weight:500;cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s,transform .08s}.btn:hover{background:#fbfaf8}.btn:active{transform:scale(.985)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.primary:hover{background:#000}.btn.gold{background:var(--gold-deep);border-color:var(--gold-deep);color:#fff}.btn.gold:hover{background:#7b5d1a}.btn.danger{color:var(--late);border-color:#efd2ce}.btn.small{padding:6px 11px;font-size:13px;border-radius:8px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.block{width:100%}.icon-btn{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;border:1px solid var(--line);background:var(--surface);cursor:pointer}.icon-btn:hover{background:#fbfaf8}.month-switch{display:inline-flex;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:3px}.month-switch button{border:0;background:none;width:30px;height:30px;border-radius:7px;cursor:pointer}.month-switch button:hover{background:var(--line-soft)}.month-switch .label{padding:0 8px;font-weight:500;font-size:14px;min-width:132px;text-align:center}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;color:var(--text-soft);margin-bottom:5px}.field input,.field select,.field textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font-size:16px}.field textarea{min-height:76px;resize:vertical}.field .hint{font-size:12px;color:var(--muted);margin-top:4px}.field .error{font-size:12.5px;color:var(--late);margin-top:4px}.field.invalid input,.field.invalid select{border-color:var(--late)}.field-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px}.field-row>*{min-width:0}@media (max-width: 520px){.field-row{grid-template-columns:1fr}}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:13.5px;cursor:pointer}.chip.active{background:var(--ink);border-color:var(--ink);color:#fff}.tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:none;white-space:nowrap}.tabs button{border:0;background:none;padding:9px 0;font-size:14.5px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button.active{color:var(--ink);border-bottom-color:var(--gold);font-weight:500}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1213166b;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;animation:fade .16s ease-out}.sheet{background:var(--surface);border-radius:16px;width:min(560px,100%);max-height:min(86vh,900px);display:flex;flex-direction:column;box-shadow:0 24px 60px #0000003d;animation:rise .18s ease-out}.sheet>header{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line-soft)}.sheet>header h2{flex:1;min-width:0}.sheet .content{padding:18px;overflow:auto}.sheet>footer{padding:14px 18px calc(14px + var(--safe-bottom));border-top:1px solid var(--line-soft);display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}@media (max-width: 620px){.sheet-backdrop{padding:0;align-items:flex-end}.sheet{width:100%;max-height:94vh;border-radius:18px 18px 0 0}.sheet>footer .btn{flex:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{transform:translateY(14px);opacity:.6}to{transform:none;opacity:1}}.empty{text-align:center;padding:34px 20px;color:var(--text-soft)}.empty strong{display:block;font-family:Poppins,sans-serif;font-weight:500;color:var(--text);margin-bottom:5px}.empty p{margin:0 auto;max-width:42ch;font-size:14px}.toast-stack{position:fixed;z-index:90;left:50%;transform:translate(-50%);bottom:calc(var(--tabbar-h) + 24px + var(--safe-bottom));display:flex;flex-direction:column;gap:8px;width:max-content;max-width:92vw}@media (min-width: 881px){.toast-stack{bottom:26px;left:auto;right:26px;transform:none}}.toast{background:var(--ink);color:#fff;padding:11px 16px;border-radius:11px;font-size:14px;box-shadow:0 10px 30px #0003;animation:rise .16s ease-out}.toast.error{background:var(--late)}.toast.success{background:#146045}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.calendar .dow{text-align:center;font-size:11.5px;color:var(--muted);padding:6px 0}.calendar .day{aspect-ratio:1;border:0;background:none;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:13.5px;font-variant-numeric:tabular-nums;position:relative}.calendar .day:hover{background:var(--line-soft)}.calendar .day.today{background:var(--ink);color:#fff;font-weight:600}.calendar .day.selected{outline:2px solid var(--gold)}.calendar .day.blank{pointer-events:none}.calendar .dots{display:flex;gap:3px;height:5px}.calendar .dot{width:5px;height:5px;border-radius:50%}.dot.paid{background:var(--paid)}.dot.pending{background:var(--due)}.dot.overdue{background:var(--late)}.dot.others{background:var(--info)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--text-soft);padding-top:12px}.legend span{display:inline-flex;align-items:center;gap:6px}.bars{display:flex;flex-direction:column;gap:10px}.bar-row{display:grid;grid-template-columns:110px 1fr auto;gap:10px;align-items:center;font-size:13.5px}.bar{height:8px;border-radius:5px;background:var(--line-soft);overflow:hidden}.bar i{display:block;height:100%;border-radius:5px}.copy-field{display:flex;gap:8px;align-items:center;background:var(--line-soft);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;font-variant-numeric:tabular-nums;word-break:break-all}.copy-field span{flex:1;min-width:0}.list-line{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:14px}.list-line:last-child{border-bottom:0}.list-line .k{color:var(--text-soft)}.list-line .v{text-align:right;font-variant-numeric:tabular-nums}.login-wrap{min-height:100%;display:grid;place-items:center;padding:28px;background:radial-gradient(120% 80% at 50% 0%,#1c1e22,#121316 60%)}.login-card{width:min(400px,100%);background:var(--surface);border-radius:18px;padding:30px 26px;box-shadow:0 30px 80px #00000059}.login-card .brand{text-align:center;margin-bottom:22px}.login-card .brand img{width:66px;height:66px}.login-card .brand h1{font-size:20px;margin-top:12px}.login-card .brand h1 span{color:var(--gold-deep)}.login-card .brand small{color:var(--muted);font-size:10px;letter-spacing:.16em}.fab{position:fixed;right:18px;bottom:calc(var(--tabbar-h) + 18px + var(--safe-bottom));z-index:40;width:54px;height:54px;border-radius:50%;border:0;background:var(--gold-deep);color:#fff;box-shadow:0 10px 26px #8c6b1f66;display:none;place-items:center;cursor:pointer}@media (max-width: 880px){.fab{display:grid}}.skeleton{background:linear-gradient(90deg,#f1efea 25%,#f7f5f1,#f1efea 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px;height:14px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.offline-banner{background:var(--due-bg);border:1px solid #F0DDBB;color:#96611a;padding:9px 14px;border-radius:var(--radius-sm);font-size:13.5px;margin-bottom:14px}[data-desktop-only]{display:grid}[data-mobile-only]{display:none}@media (max-width: 880px){[data-desktop-only]{display:none}[data-mobile-only]{display:block}}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;background:var(--line-soft);border:1px solid var(--line);border-radius:14px;padding:4px}.segmented button{border:0;background:none;border-radius:10px;padding:10px 6px;cursor:pointer;font-size:15px;font-weight:600;color:var(--muted);font-family:inherit}.segmented button.active{background:var(--gold);color:#fff;box-shadow:0 2px 6px #0000001f}.sheet,.sheet .content,.sheet .field,.sheet .field>*{min-width:0;max-width:100%}.sheet .content{overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;overflow-wrap:anywhere}.sheet pre,.sheet code{white-space:pre-wrap;word-break:break-word}.field input,.field select,.field textarea{min-width:0;max-width:100%;box-sizing:border-box}.field input[type=date],.field input[type=time],.field input[type=month],.field input[type=datetime-local]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;min-height:44px;width:100%}.field select{text-overflow:ellipsis}.sheet-backdrop{overscroll-behavior:none}body:has(.sheet-backdrop) #root{overflow:hidden}.sheet{max-height:min(86vh,900px)}@supports (height: 100dvh){.sheet{max-height:min(86dvh,900px)}@media (max-width: 620px){.sheet{max-height:94dvh}}}@media (max-width: 880px){html{height:-webkit-fill-available}body{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%}#root{position:absolute;top:0;right:0;bottom:0;left:0;height:auto}.tabbar{bottom:0;padding-bottom:var(--safe-bottom)}}
