:root{--ground:#eef1f4;--card:#fff;--line:#e6e9ee;--line-soft:#f1f3f5;--text:#14161a;--muted:#5f6672;--navy:#021238;--yellow:#f9d27c;--yellow-edge:#f2c35c;--yellow-text:#3b2600;--blue:#1d4ed8}*{box-sizing:border-box}body,html{margin:0;background:var(--ground);color:var(--text);font-family:DM Sans,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}a{color:var(--blue)}a:hover{color:#1e3a8a}button,input,select,textarea{font-family:inherit}h1{font-size:26px;letter-spacing:-.01em}h1,h2{margin:0;font-weight:600}h2{font-size:16px}.shell{display:flex;min-height:100vh}.rail{flex:0 0 76px;background:#fff;border-right:1px solid var(--line);flex-direction:column;gap:8px;padding:20px 0;position:-webkit-sticky;position:sticky;top:0;height:100vh}.rail,.rail .logo{display:flex;align-items:center}.rail .logo{width:40px;height:40px;border-radius:11px;background:var(--navy);color:#fff;font-weight:700;font-size:15px;margin-bottom:16px}.rail .logo,.rail a.item{justify-content:center;text-decoration:none}.rail a.item{display:flex;align-items:center;width:44px;height:44px;border-radius:12px;color:var(--muted);position:relative}.rail a.item:hover{background:#f3f5f7;color:var(--text)}.rail a.item.on{background:#fde7b0;color:#5a3a00}.rail a.item .tip{position:absolute;left:52px;background:var(--text);color:#fff;font-size:12px;padding:4px 8px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s;z-index:10}.rail a.item:hover .tip{opacity:1}.rail .me{width:36px;height:36px;border-radius:50%;background:#dce4f5;color:var(--navy);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;text-decoration:none}.main{flex:1 1 auto;min-width:0;padding:28px 32px 48px;display:flex;flex-direction:column;gap:18px;max-width:1360px}@media (max-width:720px){.shell{flex-direction:column}.rail{flex-direction:row;height:auto;width:100%;position:-webkit-sticky;position:sticky;padding:8px 12px;overflow-x:auto;z-index:5}.rail .logo{margin:0 8px 0 0}.rail .spacer{display:none}.main{padding:18px 16px 40px}.rail a.item .tip{display:none}}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}.page-head .sub{color:var(--muted);font-size:14px;margin-top:4px}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.card{background:var(--card);border:1px solid var(--line);border-radius:16px}.pad{padding:20px}.muted{color:var(--muted)}.chip,.small{font-size:12px}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-weight:600;white-space:nowrap;border:0}.green{background:#e3f4e6;color:#1e6b32}.red{background:#fde8e8;color:#a61b1b}.blue{background:#e6eefd;color:#1d4ed8}.teal{background:#dff3f1;color:#0f6b63}.amber{background:#fff1d6;color:#8a5200}.purple{background:#efe8fd;color:#5b34b8}.grey{background:#eef0f3;color:#4b5563}.btn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:10px;border:1px solid #e1e5ea;background:#fff;font:500 13px inherit;font-family:inherit;text-decoration:none;cursor:pointer;white-space:nowrap}.btn,.btn:hover{color:var(--text)}.btn:hover{background:#f6f7f9}.btn.primary{background:var(--yellow);border-color:var(--yellow-edge);color:var(--yellow-text)}.btn.primary:hover{background:#f6c764}.btn.sm{height:30px;font-size:12px;padding:0 10px}.btn:disabled{opacity:.5;cursor:default}.btn.danger{color:#a61b1b}.tabs{display:flex;gap:6px;border-bottom:1px solid #e1e5ea;flex-wrap:wrap}.tab{display:inline-flex;align-items:center;height:40px;padding:0 14px;font-size:14px;font-weight:500;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}.tab.on,.tab:hover{color:var(--text)}.tab.on{border-bottom-color:var(--navy);font-weight:600}table{border-collapse:collapse;width:100%}th{font-size:12px;font-weight:500;color:var(--muted);text-align:left;padding:10px 12px;border-bottom:1px solid #eef0f3}td{font-size:13px;padding:12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}tr.greyed td{opacity:.5}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.scroll-x{overflow-x:auto;position:relative}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px}.tile{padding:16px 18px;display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--text)}.tile .label{color:var(--muted);font-size:13px;font-weight:500}.tile .value{font-size:26px;font-weight:600;letter-spacing:-.02em}.input{height:34px;border:1px solid #e1e5ea;border-radius:8px;padding:0 10px;font-size:13px;background:#fff;color:var(--text)}.input:focus{outline:2px solid #c7d6f7;border-color:#9db4ee}.money{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 8px;border:1px solid #e1e5ea;border-radius:8px;background:#fff}.money input{width:78px;border:0;outline:none;text-align:right;font:600 13px inherit;font-family:inherit;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;background:transparent;color:var(--text)}.money input:disabled{color:var(--muted)}.avatar{width:30px;height:30px;border-radius:9px;background:var(--navy);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:0 0 auto}.empty{padding:28px;text-align:center;color:var(--muted)}.flash{padding:10px 14px;border-radius:10px;background:#e3f4e6;color:#1e6b32;font-size:13px}.flash.err{background:#fde8e8;color:#a61b1b}.bar{display:flex;height:10px;border-radius:999px;overflow:hidden;background:#eef0f3}.grid-cell{text-align:center;border:0;border-radius:8px;padding:10px 6px;font-size:13px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.grid-cell.empty{background:#fafbfc;color:#9aa1ab;font-weight:400}.month-grid{border-collapse:separate;border-spacing:4px;min-width:720px}.month-grid td,.month-grid th{border:0}dialog.sheet{border:0;border-radius:16px;padding:0;width:min(440px,92vw);box-shadow:0 24px 48px rgba(2,18,56,.2)}dialog.sheet::-webkit-backdrop{background:rgba(20,22,26,.35)}dialog.sheet::backdrop{background:rgba(20,22,26,.35)}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.lsf-page{min-height:100vh;display:flex;justify-content:center;padding:32px 16px;background:var(--ground)}.lsf-page.embed{background:transparent;padding:2px;min-height:0}.lsf-wrap{width:min(560px,100%);gap:14px}.lsf-card,.lsf-wrap{display:flex;flex-direction:column}.lsf-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:16px;padding:26px;gap:16px;box-shadow:0 8px 24px rgba(2,18,56,.06)}.embed .lsf-card{box-shadow:none}.lsf-two{display:flex;gap:12px;flex-wrap:wrap}.lsf-two>*{flex:1 1 200px}.lsf-field{display:flex;flex-direction:column;gap:6px;min-width:0}.lsf-label{font-size:13px;font-weight:500;color:var(--text);padding:0}.lsf-input{width:100%;height:44px;border:1px solid #d9dee5;border-radius:10px;padding:0 12px;font-size:15px;color:var(--text);background:#fff}textarea.lsf-input{height:auto;min-height:96px;padding:10px 12px;resize:vertical}.lsf-file{padding:9px 12px;height:auto}.lsf-input:focus{outline:2px solid #c7d6f7;border-color:#9db4ee}[aria-invalid=true].lsf-input{border-color:#dc5b5b}.lsf-err{color:#a61b1b;font-size:12px}.lsf-chips{display:flex;gap:8px;flex-wrap:wrap}.lsf-chip{position:relative}.lsf-chip input{position:absolute;opacity:0;inset:0;cursor:pointer}.lsf-chip span{display:inline-flex;align-items:center;height:36px;padding:0 14px;border:1px solid #d9dee5;border-radius:999px;font-size:14px;background:#fff}.lsf-chip input:checked+span{background:var(--navy);border-color:var(--navy);color:#fff}.lsf-chip input:focus-visible+span{outline:2px solid #9db4ee;outline-offset:2px}.seg{display:inline-flex;background:#e3e7ec;border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap}.seg a,.seg button{height:30px;padding:0 12px;border-radius:8px;border:0;background:transparent;font:500 13px inherit;font-family:inherit;color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;cursor:pointer}.seg .on{background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(20,22,26,.08)}.icon-btn{width:30px;height:30px;border-radius:8px;border:1px solid #e1e5ea;background:#fff;color:#4b5563;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;flex:0 0 auto}.icon-btn:hover{background:#f3f5f7;color:var(--text)}